From c6f5d788eba44689b9d12b64e83f4e6f92c661d6 Mon Sep 17 00:00:00 2001 From: Mohan Boddu Date: Thu, 15 Nov 2018 14:02:30 -0500 Subject: [PATCH] Revert "golang is now in RHEL7 optional and Centos7 extras" Unretirement for https://pagure.io/releng/issue/7919 This reverts commit 65328ffa21f7ae55e562bab1c68a5c5068b4cf37. --- .gitignore | 13 + dead.package | 1 - go1.3-tar-fix_writing_of_pax_headers.patch | 110 ++ go1.3-tar_reuse_buffer_readHeader.patch | 64 ++ go1.3-tar_reuse_buffer_writeHeader.patch | 56 + golang-1.2-BSD-SVID-SOURCE.patch | 19 + golang-1.2-archive_tar-xattr.patch | 197 ++++ golang-1.2-remove-ECC-p224.patch | 172 +++ golang-1.2-skipCpuProfileTest.patch | 12 + golang-1.2-verbose-build.patch | 19 + golang-f21-hostname.patch | 11 + golang-gdbinit | 1 + golang-prelink.conf | 3 + golang.spec | 1100 ++++++++++++++++++++ macros.golang | 8 + sources | 2 + 16 files changed, 1787 insertions(+), 1 deletion(-) create mode 100644 .gitignore delete mode 100644 dead.package create mode 100644 go1.3-tar-fix_writing_of_pax_headers.patch create mode 100644 go1.3-tar_reuse_buffer_readHeader.patch create mode 100644 go1.3-tar_reuse_buffer_writeHeader.patch create mode 100644 golang-1.2-BSD-SVID-SOURCE.patch create mode 100644 golang-1.2-archive_tar-xattr.patch create mode 100644 golang-1.2-remove-ECC-p224.patch create mode 100644 golang-1.2-skipCpuProfileTest.patch create mode 100644 golang-1.2-verbose-build.patch create mode 100644 golang-f21-hostname.patch create mode 100644 golang-gdbinit create mode 100644 golang-prelink.conf create mode 100644 golang.spec create mode 100644 macros.golang create mode 100644 sources diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..281e185 --- /dev/null +++ b/.gitignore @@ -0,0 +1,13 @@ +/go1.1.1.src.tar.gz +/go1.1.2.src.tar.gz +/go1.2.1.src.tar.gz +/go1.2.2.src.tar.gz +/go1.2.src.tar.gz +/go1.3.1.src.tar.gz +/go1.3.2.src.tar.gz +/go1.3.3.src.tar.gz +/go1.3beta2.src.tar.gz +/go1.3rc1.src.tar.gz +/go1.3rc2.src.tar.gz +/go1.3.src.tar.gz +/golang-19087:a15f344a9efa-xattrs.tar diff --git a/dead.package b/dead.package deleted file mode 100644 index a562c97..0000000 --- a/dead.package +++ /dev/null @@ -1 +0,0 @@ -golang is now in RHEL7 optional and Centos7 extras diff --git a/go1.3-tar-fix_writing_of_pax_headers.patch b/go1.3-tar-fix_writing_of_pax_headers.patch new file mode 100644 index 0000000..1c847e7 --- /dev/null +++ b/go1.3-tar-fix_writing_of_pax_headers.patch @@ -0,0 +1,110 @@ +# HG changeset patch +# User Cristian Staretu +# Date 1405555229 -36000 +# Thu Jul 17 10:00:29 2014 +1000 +# Node ID 1b17b3426e3c281a973d2d7bbf235b936d6a0942 +# Parent 278365dff593f027db6c6b2c0a89262490d6b676 +archive/tar: fix writing of pax headers + +"archive/tar: reuse temporary buffer in writeHeader" introduced a +change which was supposed to help lower the number of allocations from +512 bytes for every call to writeHeader. This change broke the writing +of PAX headers. + +writeHeader calls writePAXHeader and writePAXHeader calls writeHeader +again. writeHeader will end up writing the PAX header twice. + +example broken header: +PaxHeaders.4007/NetLock_Arany_=Class_Gold=_Ftanstvny.crt0000000000000000000000000000007112301216634021512 xustar0000000000000000 +PaxHeaders.4007/NetLock_Arany_=Class_Gold=_Ftanstvny.crt0000000000000000000000000000007112301216634021512 xustar0000000000000000 + +example correct header: +PaxHeaders.4290/NetLock_Arany_=Class_Gold=_Ftanstvny.crt0000000000000000000000000000007112301216634021516 xustar0000000000000000 +0100644000000000000000000000270412301216634007250 0ustar0000000000000000 + +This commit adds a dedicated buffer for pax headers to the Writer +struct. This change increases the size of the struct by 512 bytes, but +allows tar/writer to avoid allocating 512 bytes for all written +headers and it avoids allocating 512 more bytes for pax headers. + +LGTM=dsymonds +R=dsymonds, dave, iant +CC=golang-codereviews +https://codereview.appspot.com/110480043 + +Committer: David Symonds + +diff -r 278365dff593 -r 1b17b3426e3c src/pkg/archive/tar/writer.go +--- a/src/pkg/archive/tar/writer.go Wed Jul 16 16:29:51 2014 -0700 ++++ b/src/pkg/archive/tar/writer.go Thu Jul 17 10:00:29 2014 +1000 +@@ -39,7 +39,8 @@ + closed bool + usedBinary bool // whether the binary numeric field extension was used + preferPax bool // use pax header instead of binary numeric header +- hdrBuff [blockSize]byte // buffer to use in writeHeader ++ hdrBuff [blockSize]byte // buffer to use in writeHeader when writing a regular header ++ paxHdrBuff [blockSize]byte // buffer to use in writeHeader when writing a pax header + } + + // NewWriter creates a new Writer writing to w. +@@ -161,7 +162,17 @@ + // subsecond time resolution, but for now let's just capture + // too long fields or non ascii characters + +- header := tw.hdrBuff[:] ++ var header []byte ++ ++ // We need to select which scratch buffer to use carefully, ++ // since this method is called recursively to write PAX headers. ++ // If allowPax is true, this is the non-recursive call, and we will use hdrBuff. ++ // If allowPax is false, we are being called by writePAXHeader, and hdrBuff is ++ // already being used by the non-recursive call, so we must use paxHdrBuff. ++ header = tw.hdrBuff[:] ++ if !allowPax { ++ header = tw.paxHdrBuff[:] ++ } + copy(header, zeroBlock) + s := slicer(header) + +diff -r 278365dff593 -r 1b17b3426e3c src/pkg/archive/tar/writer_test.go +--- a/src/pkg/archive/tar/writer_test.go Wed Jul 16 16:29:51 2014 -0700 ++++ b/src/pkg/archive/tar/writer_test.go Thu Jul 17 10:00:29 2014 +1000 +@@ -454,3 +454,38 @@ + t.Fatal("Couldn't recover long name") + } + } ++ ++func TestValidTypeflagWithPAXHeader(t *testing.T) { ++ var buffer bytes.Buffer ++ tw := NewWriter(&buffer) ++ ++ fileName := strings.Repeat("ab", 100) ++ ++ hdr := &Header{ ++ Name: fileName, ++ Size: 4, ++ Typeflag: 0, ++ } ++ if err := tw.WriteHeader(hdr); err != nil { ++ t.Fatalf("Failed to write header: %s", err) ++ } ++ if _, err := tw.Write([]byte("fooo")); err != nil { ++ t.Fatalf("Failed to write the file's data: %s", err) ++ } ++ tw.Close() ++ ++ tr := NewReader(&buffer) ++ ++ for { ++ header, err := tr.Next() ++ if err == io.EOF { ++ break ++ } ++ if err != nil { ++ t.Fatalf("Failed to read header: %s", err) ++ } ++ if header.Typeflag != 0 { ++ t.Fatalf("Typeflag should've been 0, found %d", header.Typeflag) ++ } ++ } ++} diff --git a/go1.3-tar_reuse_buffer_readHeader.patch b/go1.3-tar_reuse_buffer_readHeader.patch new file mode 100644 index 0000000..1c6693c --- /dev/null +++ b/go1.3-tar_reuse_buffer_readHeader.patch @@ -0,0 +1,64 @@ +# HG changeset patch +# User Cristian Staretu +# Date 1404344479 -36000 +# Thu Jul 03 09:41:19 2014 +1000 +# Node ID 17404efd6b02d4b3acd17070e3f89de97a145877 +# Parent 837348e418f33fc7a242f56dbe2feff829532526 +archive/tar: reuse temporary buffer in readHeader + +A temporary 512 bytes buffer is allocated for every call to +readHeader. This buffer isn't returned to the caller and it could +be reused to lower the number of memory allocations. + +This CL improves it by using a pool and zeroing out the buffer before +putting it back into the pool. + +benchmark old ns/op new ns/op delta +BenchmarkListFiles100k 545249903 538832687 -1.18% + +benchmark old allocs new allocs delta +BenchmarkListFiles100k 2105167 2005692 -4.73% + +benchmark old bytes new bytes delta +BenchmarkListFiles100k 105903472 54831527 -48.22% + +This improvement is very important if your code has to deal with a lot +of tarballs which contain a lot of files. + +LGTM=dsymonds +R=golang-codereviews, dave, dsymonds, bradfitz +CC=golang-codereviews +https://codereview.appspot.com/108240044 + +Committer: David Symonds + +diff -r 837348e418f3 -r 17404efd6b02 src/pkg/archive/tar/reader.go +--- a/src/pkg/archive/tar/reader.go Thu Jul 03 09:40:53 2014 +1000 ++++ b/src/pkg/archive/tar/reader.go Thu Jul 03 09:41:19 2014 +1000 +@@ -29,10 +29,11 @@ + // The Next method advances to the next file in the archive (including the first), + // and then it can be treated as an io.Reader to access the file's data. + type Reader struct { +- r io.Reader +- err error +- pad int64 // amount of padding (ignored) after current file entry +- curr numBytesReader // reader for current file entry ++ r io.Reader ++ err error ++ pad int64 // amount of padding (ignored) after current file entry ++ curr numBytesReader // reader for current file entry ++ hdrBuff [blockSize]byte // buffer to use in readHeader + } + + // A numBytesReader is an io.Reader with a numBytes method, returning the number +@@ -426,7 +427,9 @@ + } + + func (tr *Reader) readHeader() *Header { +- header := make([]byte, blockSize) ++ header := tr.hdrBuff[:] ++ copy(header, zeroBlock) ++ + if _, tr.err = io.ReadFull(tr.r, header); tr.err != nil { + return nil + } diff --git a/go1.3-tar_reuse_buffer_writeHeader.patch b/go1.3-tar_reuse_buffer_writeHeader.patch new file mode 100644 index 0000000..6cd8969 --- /dev/null +++ b/go1.3-tar_reuse_buffer_writeHeader.patch @@ -0,0 +1,56 @@ +# HG changeset patch +# User Cristian Staretu +# Date 1404344453 -36000 +# Thu Jul 03 09:40:53 2014 +1000 +# Node ID 837348e418f33fc7a242f56dbe2feff829532526 +# Parent c5f72a685e256457a0872f6587e2bb9500eac7c4 +archive/tar: reuse temporary buffer in writeHeader + +A temporary 512 bytes buffer is allocated for every call to +writeHeader. This buffer could be reused the lower the number +of memory allocations. + +benchmark old ns/op new ns/op delta +BenchmarkWriteFiles100k 634622051 583810847 -8.01% + +benchmark old allocs new allocs delta +BenchmarkWriteFiles100k 2701920 2602621 -3.68% + +benchmark old bytes new bytes delta +BenchmarkWriteFiles100k 115383884 64349922 -44.23% + +This change is very important if your code has to write a lot of +tarballs with a lot of files. + +LGTM=dsymonds +R=golang-codereviews, dave, dsymonds +CC=golang-codereviews +https://codereview.appspot.com/107440043 + +Committer: David Symonds + +diff -r c5f72a685e25 -r 837348e418f3 src/pkg/archive/tar/writer.go +--- a/src/pkg/archive/tar/writer.go Wed Jul 02 15:28:57 2014 -0700 ++++ b/src/pkg/archive/tar/writer.go Thu Jul 03 09:40:53 2014 +1000 +@@ -37,8 +37,9 @@ + nb int64 // number of unwritten bytes for current file entry + pad int64 // amount of padding to write after current file entry + closed bool +- usedBinary bool // whether the binary numeric field extension was used +- preferPax bool // use pax header instead of binary numeric header ++ usedBinary bool // whether the binary numeric field extension was used ++ preferPax bool // use pax header instead of binary numeric header ++ hdrBuff [blockSize]byte // buffer to use in writeHeader + } + + // NewWriter creates a new Writer writing to w. +@@ -160,7 +161,8 @@ + // subsecond time resolution, but for now let's just capture + // too long fields or non ascii characters + +- header := make([]byte, blockSize) ++ header := tw.hdrBuff[:] ++ copy(header, zeroBlock) + s := slicer(header) + + // keep a reference to the filename to allow to overwrite it later if we detect that we can use ustar longnames instead of pax diff --git a/golang-1.2-BSD-SVID-SOURCE.patch b/golang-1.2-BSD-SVID-SOURCE.patch new file mode 100644 index 0000000..f4927b6 --- /dev/null +++ b/golang-1.2-BSD-SVID-SOURCE.patch @@ -0,0 +1,19 @@ +Index: go/include/u.h +=================================================================== +--- go.orig/include/u.h ++++ go/include/u.h +@@ -38,10 +38,13 @@ extern "C" { + # define __MAKECONTEXT_V2_SOURCE 1 + # endif + #endif ++#if defined __linux__ || defined __GNU__ || defined __GLIBC__ ++#define _DEFAULT_SOURCE 1 ++#else + #define _BSD_SOURCE 1 + #define _NETBSD_SOURCE 1 /* NetBSD */ +-#define _DEFAULT_SOURCE 1 /* glibc > 2.19 */ + #define _SVID_SOURCE 1 ++#endif + #if !defined(__APPLE__) && !defined(__OpenBSD__) + # define _XOPEN_SOURCE 1000 + # define _XOPEN_SOURCE_EXTENDED 1 diff --git a/golang-1.2-archive_tar-xattr.patch b/golang-1.2-archive_tar-xattr.patch new file mode 100644 index 0000000..10c8f3d --- /dev/null +++ b/golang-1.2-archive_tar-xattr.patch @@ -0,0 +1,197 @@ +# HG changeset patch +# User Alexander Larsson +# Date 1392282510 -39600 +# Node ID a15f344a9efa35ef168c8feaa92a15a1cdc93db5 +# Parent 1a32fe60e0798d82bbff6c945001c7f0ba8de5ea +archive/tar: support extended attributes + +This adds support for archives with the SCHILY.xattr field in the +pax header. This is what gnu tar and star generate. +Fixes issue 7154. + +LGTM=dsymonds +R=golang-codereviews, gobot, dsymonds +CC=golang-codereviews +https://codereview.appspot.com/54570043 + +Committer: David Symonds + +diff -r 1a32fe60e079 -r a15f344a9efa src/pkg/archive/tar/common.go +--- a/src/pkg/archive/tar/common.go Thu Feb 13 03:09:03 2014 -0500 ++++ b/src/pkg/archive/tar/common.go Thu Feb 13 20:08:30 2014 +1100 +@@ -57,6 +57,7 @@ + Devminor int64 // minor number of character or block device + AccessTime time.Time // access time + ChangeTime time.Time // status change time ++ Xattrs map[string]string + } + + // File name constants from the tar spec. +@@ -189,6 +190,7 @@ + paxSize = "size" + paxUid = "uid" + paxUname = "uname" ++ paxXattr = "SCHILY.xattr." + paxNone = "" + ) + +diff -r 1a32fe60e079 -r a15f344a9efa src/pkg/archive/tar/reader.go +--- a/src/pkg/archive/tar/reader.go Thu Feb 13 03:09:03 2014 -0500 ++++ b/src/pkg/archive/tar/reader.go Thu Feb 13 20:08:30 2014 +1100 +@@ -139,8 +139,14 @@ + return err + } + hdr.Size = int64(size) ++ default: ++ if strings.HasPrefix(k, paxXattr) { ++ if hdr.Xattrs == nil { ++ hdr.Xattrs = make(map[string]string) ++ } ++ hdr.Xattrs[k[len(paxXattr):]] = v ++ } + } +- + } + return nil + } +diff -r 1a32fe60e079 -r a15f344a9efa src/pkg/archive/tar/reader_test.go +--- a/src/pkg/archive/tar/reader_test.go Thu Feb 13 03:09:03 2014 -0500 ++++ b/src/pkg/archive/tar/reader_test.go Thu Feb 13 20:08:30 2014 +1100 +@@ -161,6 +161,46 @@ + }, + }, + }, ++ { ++ file: "testdata/xattrs.tar", ++ headers: []*Header{ ++ { ++ Name: "small.txt", ++ Mode: 0644, ++ Uid: 1000, ++ Gid: 10, ++ Size: 5, ++ ModTime: time.Unix(1386065770, 448252320), ++ Typeflag: '0', ++ Uname: "alex", ++ Gname: "wheel", ++ AccessTime: time.Unix(1389782991, 419875220), ++ ChangeTime: time.Unix(1389782956, 794414986), ++ Xattrs: map[string]string{ ++ "user.key": "value", ++ "user.key2": "value2", ++ // Interestingly, selinux encodes the terminating null inside the xattr ++ "security.selinux": "unconfined_u:object_r:default_t:s0\x00", ++ }, ++ }, ++ { ++ Name: "small2.txt", ++ Mode: 0644, ++ Uid: 1000, ++ Gid: 10, ++ Size: 11, ++ ModTime: time.Unix(1386065770, 449252304), ++ Typeflag: '0', ++ Uname: "alex", ++ Gname: "wheel", ++ AccessTime: time.Unix(1389782991, 419875220), ++ ChangeTime: time.Unix(1386065770, 449252304), ++ Xattrs: map[string]string{ ++ "security.selinux": "unconfined_u:object_r:default_t:s0\x00", ++ }, ++ }, ++ }, ++ }, + } + + func TestReader(t *testing.T) { +@@ -180,7 +220,7 @@ + f.Close() + continue testLoop + } +- if *hdr != *header { ++ if !reflect.DeepEqual(*hdr, *header) { + t.Errorf("test %d, entry %d: Incorrect header:\nhave %+v\nwant %+v", + i, j, *hdr, *header) + } +@@ -253,7 +293,7 @@ + } + + // check the header +- if *hdr != *headers[nread] { ++ if !reflect.DeepEqual(*hdr, *headers[nread]) { + t.Errorf("Incorrect header:\nhave %+v\nwant %+v", + *hdr, headers[nread]) + } +diff -r 1a32fe60e079 -r a15f344a9efa src/pkg/archive/tar/writer.go +--- a/src/pkg/archive/tar/writer.go Thu Feb 13 03:09:03 2014 -0500 ++++ b/src/pkg/archive/tar/writer.go Thu Feb 13 20:08:30 2014 +1100 +@@ -236,6 +236,12 @@ + return tw.err + } + ++ if allowPax { ++ for k, v := range hdr.Xattrs { ++ paxHeaders[paxXattr+k] = v ++ } ++ } ++ + if len(paxHeaders) > 0 { + if !allowPax { + return errInvalidHeader +diff -r 1a32fe60e079 -r a15f344a9efa src/pkg/archive/tar/writer_test.go +--- a/src/pkg/archive/tar/writer_test.go Thu Feb 13 03:09:03 2014 -0500 ++++ b/src/pkg/archive/tar/writer_test.go Thu Feb 13 20:08:30 2014 +1100 +@@ -10,6 +10,7 @@ + "io" + "io/ioutil" + "os" ++ "reflect" + "strings" + "testing" + "testing/iotest" +@@ -338,6 +339,45 @@ + } + } + ++func TestPaxXattrs(t *testing.T) { ++ xattrs := map[string]string{ ++ "user.key": "value", ++ } ++ ++ // Create an archive with an xattr ++ fileinfo, err := os.Stat("testdata/small.txt") ++ if err != nil { ++ t.Fatal(err) ++ } ++ hdr, err := FileInfoHeader(fileinfo, "") ++ if err != nil { ++ t.Fatalf("os.Stat: %v", err) ++ } ++ contents := "Kilts" ++ hdr.Xattrs = xattrs ++ var buf bytes.Buffer ++ writer := NewWriter(&buf) ++ if err := writer.WriteHeader(hdr); err != nil { ++ t.Fatal(err) ++ } ++ if _, err = writer.Write([]byte(contents)); err != nil { ++ t.Fatal(err) ++ } ++ if err := writer.Close(); err != nil { ++ t.Fatal(err) ++ } ++ // Test that we can get the xattrs back out of the archive. ++ reader := NewReader(&buf) ++ hdr, err = reader.Next() ++ if err != nil { ++ t.Fatal(err) ++ } ++ if !reflect.DeepEqual(hdr.Xattrs, xattrs) { ++ t.Fatalf("xattrs did not survive round trip: got %+v, want %+v", ++ hdr.Xattrs, xattrs) ++ } ++} ++ + func TestPAXHeader(t *testing.T) { + medName := strings.Repeat("CD", 50) + longName := strings.Repeat("AB", 100) diff --git a/golang-1.2-remove-ECC-p224.patch b/golang-1.2-remove-ECC-p224.patch new file mode 100644 index 0000000..1b9e021 --- /dev/null +++ b/golang-1.2-remove-ECC-p224.patch @@ -0,0 +1,172 @@ +Index: go/api/go1.txt +=================================================================== +--- go.orig/api/go1.txt ++++ go/api/go1.txt +@@ -412,7 +412,6 @@ pkg crypto/ecdsa, type PublicKey struct, + pkg crypto/ecdsa, type PublicKey struct, embedded elliptic.Curve + pkg crypto/elliptic, func GenerateKey(Curve, io.Reader) ([]uint8, *big.Int, *big.Int, error) + pkg crypto/elliptic, func Marshal(Curve, *big.Int, *big.Int) []uint8 +-pkg crypto/elliptic, func P224() Curve + pkg crypto/elliptic, func P256() Curve + pkg crypto/elliptic, func P384() Curve + pkg crypto/elliptic, func P521() Curve +Index: go/src/pkg/crypto/ecdsa/ecdsa_test.go +=================================================================== +--- go.orig/src/pkg/crypto/ecdsa/ecdsa_test.go ++++ go/src/pkg/crypto/ecdsa/ecdsa_test.go +@@ -33,7 +33,6 @@ func testKeyGeneration(t *testing.T, c e + } + + func TestKeyGeneration(t *testing.T) { +- testKeyGeneration(t, elliptic.P224(), "p224") + if testing.Short() { + return + } +@@ -63,7 +62,6 @@ func testSignAndVerify(t *testing.T, c e + } + + func TestSignAndVerify(t *testing.T) { +- testSignAndVerify(t, elliptic.P224(), "p224") + if testing.Short() { + return + } +@@ -129,8 +127,6 @@ func TestVectors(t *testing.T) { + parts := strings.SplitN(line, ",", 2) + + switch parts[0] { +- case "P-224": +- pub.Curve = elliptic.P224() + case "P-256": + pub.Curve = elliptic.P256() + case "P-384": +Index: go/src/pkg/crypto/elliptic/bottombits.go +=================================================================== +--- /dev/null ++++ go/src/pkg/crypto/elliptic/bottombits.go +@@ -0,0 +1,14 @@ ++ ++// Copyright 2012 The Go Authors. All rights reserved. ++// Use of this source code is governed by a BSD-style ++// license that can be found in the LICENSE file. ++ ++package elliptic ++ ++const bottom12Bits = 0xfff ++const bottom28Bits = 0xfffffff ++ ++const two31p3 = 1<<31 + 1<<3 ++const two31m3 = 1<<31 - 1<<3 ++const two31m15m3 = 1<<31 - 1<<15 - 1<<3 ++ +Index: go/src/pkg/crypto/elliptic/elliptic.go +=================================================================== +--- go.orig/src/pkg/crypto/elliptic/elliptic.go ++++ go/src/pkg/crypto/elliptic/elliptic.go +@@ -326,7 +326,6 @@ var p384 *CurveParams + var p521 *CurveParams + + func initAll() { +- initP224() + initP256() + initP384() + initP521() +Index: go/src/pkg/crypto/elliptic/elliptic_test.go +=================================================================== +--- go.orig/src/pkg/crypto/elliptic/elliptic_test.go ++++ go/src/pkg/crypto/elliptic/elliptic_test.go +@@ -1,3 +1,5 @@ ++// +build ignore ++ + // Copyright 2010 The Go Authors. All rights reserved. + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. +Index: go/src/pkg/crypto/elliptic/p224.go +=================================================================== +--- go.orig/src/pkg/crypto/elliptic/p224.go ++++ go/src/pkg/crypto/elliptic/p224.go +@@ -1,3 +1,5 @@ ++// +build ignore ++ + // Copyright 2012 The Go Authors. All rights reserved. + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. +@@ -183,10 +185,6 @@ func p224Add(out, a, b *p224FieldElement + } + } + +-const two31p3 = 1<<31 + 1<<3 +-const two31m3 = 1<<31 - 1<<3 +-const two31m15m3 = 1<<31 - 1<<15 - 1<<3 +- + // p224ZeroModP31 is 0 mod p where bit 31 is set in all limbs so that we can + // subtract smaller amounts without underflow. See the section "Subtraction" in + // [1] for reasoning. +@@ -215,9 +213,6 @@ const two63m35m19 = 1<<63 - 1<<35 - 1<<1 + // "Subtraction" in [1] for why. + var p224ZeroModP63 = [8]uint64{two63p35, two63m35, two63m35, two63m35, two63m35m19, two63m35, two63m35, two63m35} + +-const bottom12Bits = 0xfff +-const bottom28Bits = 0xfffffff +- + // p224Mul computes *out = a*b + // + // a[i] < 2**29, b[i] < 2**30 (or vice versa) +Index: go/src/pkg/crypto/elliptic/p224_test.go +=================================================================== +--- go.orig/src/pkg/crypto/elliptic/p224_test.go ++++ go/src/pkg/crypto/elliptic/p224_test.go +@@ -1,3 +1,5 @@ ++// +build ignore ++ + // Copyright 2012 The Go Authors. All rights reserved. + // Use of this source code is governed by a BSD-style + // license that can be found in the LICENSE file. +Index: go/src/pkg/crypto/x509/x509.go +=================================================================== +--- go.orig/src/pkg/crypto/x509/x509.go ++++ go/src/pkg/crypto/x509/x509.go +@@ -306,9 +306,6 @@ func getPublicKeyAlgorithmFromOID(oid as + + // RFC 5480, 2.1.1.1. Named Curve + // +-// secp224r1 OBJECT IDENTIFIER ::= { +-// iso(1) identified-organization(3) certicom(132) curve(0) 33 } +-// + // secp256r1 OBJECT IDENTIFIER ::= { + // iso(1) member-body(2) us(840) ansi-X9-62(10045) curves(3) + // prime(1) 7 } +@@ -321,7 +318,6 @@ func getPublicKeyAlgorithmFromOID(oid as + // + // NB: secp256r1 is equivalent to prime256v1 + var ( +- oidNamedCurveP224 = asn1.ObjectIdentifier{1, 3, 132, 0, 33} + oidNamedCurveP256 = asn1.ObjectIdentifier{1, 2, 840, 10045, 3, 1, 7} + oidNamedCurveP384 = asn1.ObjectIdentifier{1, 3, 132, 0, 34} + oidNamedCurveP521 = asn1.ObjectIdentifier{1, 3, 132, 0, 35} +@@ -329,8 +325,6 @@ var ( + + func namedCurveFromOID(oid asn1.ObjectIdentifier) elliptic.Curve { + switch { +- case oid.Equal(oidNamedCurveP224): +- return elliptic.P224() + case oid.Equal(oidNamedCurveP256): + return elliptic.P256() + case oid.Equal(oidNamedCurveP384): +@@ -343,8 +337,6 @@ func namedCurveFromOID(oid asn1.ObjectId + + func oidFromNamedCurve(curve elliptic.Curve) (asn1.ObjectIdentifier, bool) { + switch curve { +- case elliptic.P224(): +- return oidNamedCurveP224, true + case elliptic.P256(): + return oidNamedCurveP256, true + case elliptic.P384(): +@@ -1371,7 +1363,7 @@ func signingParamsForPrivateKey(priv int + pubType = ECDSA + + switch priv.Curve { +- case elliptic.P224(), elliptic.P256(): ++ case elliptic.P256(): + hashFunc = crypto.SHA256 + sigAlgo.Algorithm = oidSignatureECDSAWithSHA256 + case elliptic.P384(): diff --git a/golang-1.2-skipCpuProfileTest.patch b/golang-1.2-skipCpuProfileTest.patch new file mode 100644 index 0000000..3dee29f --- /dev/null +++ b/golang-1.2-skipCpuProfileTest.patch @@ -0,0 +1,12 @@ +diff -r 87dea3f5ebe7 src/pkg/runtime/pprof/pprof_test.go +--- a/src/pkg/runtime/pprof/pprof_test.go Fri Nov 29 08:32:31 2013 +1100 ++++ b/src/pkg/runtime/pprof/pprof_test.go Fri Jan 24 13:47:42 2014 -0500 +@@ -32,7 +32,7 @@ + }) + } + +-func TestCPUProfileMultithreaded(t *testing.T) { ++func testCPUProfileMultithreaded(t *testing.T) { + buf := make([]byte, 100000) + defer runtime.GOMAXPROCS(runtime.GOMAXPROCS(2)) + testCPUProfile(t, []string{"crc32.ChecksumIEEE", "crc32.Update"}, func() { diff --git a/golang-1.2-verbose-build.patch b/golang-1.2-verbose-build.patch new file mode 100644 index 0000000..1698d82 --- /dev/null +++ b/golang-1.2-verbose-build.patch @@ -0,0 +1,19 @@ +Index: go/src/make.bash +=================================================================== +--- go.orig/src/make.bash ++++ go/src/make.bash +@@ -161,12 +161,12 @@ if [ "$GOHOSTARCH" != "$GOARCH" -o "$GOH + # CC_FOR_TARGET is recorded as the default compiler for the go tool. When building for the host, however, + # use the host compiler, CC, from `cmd/dist/dist env` instead. + CC=$CC GOOS=$GOHOSTOS GOARCH=$GOHOSTARCH \ +- "$GOTOOLDIR"/go_bootstrap install -ccflags "$GO_CCFLAGS" -gcflags "$GO_GCFLAGS" -ldflags "$GO_LDFLAGS" -v std ++ "$GOTOOLDIR"/go_bootstrap install -ccflags "$GO_CCFLAGS" -gcflags "$GO_GCFLAGS" -ldflags "$GO_LDFLAGS" -v -x std + echo + fi + + echo "# Building packages and commands for $GOOS/$GOARCH." +-CC=$CC_FOR_TARGET "$GOTOOLDIR"/go_bootstrap install $GO_FLAGS -ccflags "$GO_CCFLAGS" -gcflags "$GO_GCFLAGS" -ldflags "$GO_LDFLAGS" -v std ++CC=$CC_FOR_TARGET "$GOTOOLDIR"/go_bootstrap install $GO_FLAGS -ccflags "$GO_CCFLAGS" -gcflags "$GO_GCFLAGS" -ldflags "$GO_LDFLAGS" -v -x std + echo + + rm -f "$GOTOOLDIR"/go_bootstrap diff --git a/golang-f21-hostname.patch b/golang-f21-hostname.patch new file mode 100644 index 0000000..6025ecb --- /dev/null +++ b/golang-f21-hostname.patch @@ -0,0 +1,11 @@ +--- src/pkg/os/os_test.go.orig 2014-02-20 13:14:45.543644182 -0600 ++++ src/pkg/os/os_test.go 2014-02-20 13:14:55.934813622 -0600 +@@ -854,7 +854,7 @@ + t.Fatal(err) + } + defer r.Close() +- p, err := StartProcess("/bin/hostname", []string{"hostname"}, &ProcAttr{Files: []*File{nil, w, Stderr}}) ++ p, err := StartProcess("/usr/bin/hostname", []string{"hostname"}, &ProcAttr{Files: []*File{nil, w, Stderr}}) + if err != nil { + t.Fatal(err) + } diff --git a/golang-gdbinit b/golang-gdbinit new file mode 100644 index 0000000..4ef690b --- /dev/null +++ b/golang-gdbinit @@ -0,0 +1 @@ +add-auto-load-safe-path /usr/lib/golang/src/pkg/runtime/runtime-gdb.py diff --git a/golang-prelink.conf b/golang-prelink.conf new file mode 100644 index 0000000..471e8e6 --- /dev/null +++ b/golang-prelink.conf @@ -0,0 +1,3 @@ +# there are ELF files in src which are testdata and shouldn't be modified +-b /usr/lib/golang/src +-b /usr/lib64/golang/src diff --git a/golang.spec b/golang.spec new file mode 100644 index 0000000..e4be874 --- /dev/null +++ b/golang.spec @@ -0,0 +1,1100 @@ +# build ids are not currently generated: +# https://code.google.com/p/go/issues/detail?id=5238 +# +# also, debuginfo extraction currently fails with +# "Failed to write file: invalid section alignment" +%global debug_package %{nil} + +# we are shipping the full contents of src in the data subpackage, which +# contains binary-like things (ELF data for tests, etc) +%global _binaries_in_noarch_packages_terminate_build 0 + +# Do not check any files in doc or src for requires +%global __requires_exclude_from ^(%{_datadir}|/usr/lib)/%{name}/(doc|src)/.*$ + +# Don't alter timestamps of especially the .a files (or else go will rebuild later) +# Actually, don't strip at all since we are not even building debug packages and this corrupts the dwarf testdata +%global __strip /bin/true + +# rpmbuild magic to keep from having meta dependency on libc.so.6 +%define _use_internal_dependency_generator 0 +%define __find_requires %{nil} +%global debug_package %{nil} +%global __spec_install_post /usr/lib/rpm/check-rpaths /usr/lib/rpm/check-buildroot \ + /usr/lib/rpm/brp-compress + +# let this match the macros in macros.golang +%global goroot /usr/lib/%{name} +%global gopath %{_datadir}/gocode +%global go_arches %{ix86} x86_64 %{arm} +%ifarch x86_64 +%global gohostarch amd64 +%endif +%ifarch %{ix86} +%global gohostarch 386 +%endif +%ifarch %{arm} +%global gohostarch arm +%endif + +Name: golang +Version: 1.3.3 +Release: 1%{?dist} +Summary: The Go Programming Language + +License: BSD +URL: http://golang.org/ +Source0: https://storage.googleapis.com/golang/go%{version}.src.tar.gz + +# this command moved places +%if 0%{?fedora} >= 21 +BuildRequires: /usr/bin/hostname +Patch210: golang-f21-hostname.patch + +# Patch211 - F21+ has glibc 2.19.90 (2.20 devel)+ which deprecates +# _BSD_SOURCE and _SVID_SOURCE +Patch211: golang-1.2-BSD-SVID-SOURCE.patch +%else +BuildRequires: /bin/hostname +%endif + +Provides: go = %{version}-%{release} +Requires: golang-bin +Requires: golang-src + +BuildRequires: emacs + +Patch0: golang-1.2-verbose-build.patch + +# https://bugzilla.redhat.com/show_bug.cgi?id=1038683 +Patch1: golang-1.2-remove-ECC-p224.patch + +# disable flaky test for now +# http://code.google.com/p/go/issues/detail?id=6522 +Patch2: ./golang-1.2-skipCpuProfileTest.patch + +# these patches can be dropped for go1.4 +# discovered working here https://github.com/dotcloud/docker/pull/6829 +Patch3: ./go1.3-tar_reuse_buffer_readHeader.patch +Patch4: ./go1.3-tar_reuse_buffer_writeHeader.patch +# https://code.google.com/p/go/source/detail?r=1b17b3426e3c +Patch5: ./go1.3-tar-fix_writing_of_pax_headers.patch + +# Having documentation separate was broken +Obsoletes: %{name}-docs < 1.1-4 + +# RPM can't handle symlink -> dir with subpackages, so merge back +Obsoletes: %{name}-data < 1.1.1-4 + +# These are the only RHEL/Fedora architectures that we compile this package for +ExclusiveArch: %{go_arches} + +Source100: golang-gdbinit +Source101: golang-prelink.conf +Source102: macros.golang + +%description +%{summary}. + + +# Restore this package if RPM gets fixed (bug #975909) +#%package data +#Summary: Required architecture-independent files for Go +#Requires: %{name} = %{version}-%{release} +#BuildArch: noarch +#Obsoletes: %{name}-docs < 1.1-4 +# +#%description data +#%{summary}. + + +%package vim +Summary: Vim plugins for Go +# fedora only +%if 0%{?fedora} +Requires: vim-filesystem +%endif +BuildArch: noarch + +%description vim +%{summary}. + + +%package -n emacs-%{name} +Summary: Emacs add-on package for Go +Requires: emacs(bin) >= %{_emacs_version} +BuildArch: noarch + +%description -n emacs-%{name} +%{summary}. + + +## +# the source tree +%package src +Summary: Golang compiler source tree +Requires: go = %{version}-%{release} +BuildArch: noarch +%description src +%{summary} + +## +# This is the only architecture specific binary +%ifarch %{ix86} +%package pkg-bin-linux-386 +Summary: Golang compiler tool for linux 386 +Requires: go = %{version}-%{release} +Requires: golang-pkg-linux-386 = %{version}-%{release} +Requires(post): golang-pkg-linux-386 = %{version}-%{release} +Provides: golang-bin = 386 +# We strip the meta dependency, but go does require glibc. +# This is an odd issue, still looking for a better fix. +Requires: glibc +Requires: gcc +Requires(post): %{_sbindir}/update-alternatives +Requires(postun): %{_sbindir}/update-alternatives +%description pkg-bin-linux-386 +%{summary} +%endif + +%ifarch x86_64 +%package pkg-bin-linux-amd64 +Summary: Golang compiler tool for linux amd64 +Requires: go = %{version}-%{release} +Requires: golang-pkg-linux-amd64 = %{version}-%{release} +Requires(post): golang-pkg-linux-amd64 = %{version}-%{release} +Provides: golang-bin = amd64 +# We strip the meta dependency, but go does require glibc. +# This is an odd issue, still looking for a better fix. +Requires: glibc +Requires: gcc +Requires(post): %{_sbindir}/update-alternatives +Requires(postun): %{_sbindir}/update-alternatives +%description pkg-bin-linux-amd64 +%{summary} +%endif + +%ifarch %{arm} +%package pkg-bin-linux-arm +Summary: Golang compiler tool for linux arm +Requires: go = %{version}-%{release} +Requires: golang-pkg-linux-arm = %{version}-%{release} +Requires(post): golang-pkg-linux-arm = %{version}-%{release} +Provides: golang-bin = arm +# We strip the meta dependency, but go does require glibc. +# This is an odd issue, still looking for a better fix. +Requires: glibc +Requires: gcc +Requires(post): %{_sbindir}/update-alternatives +Requires(postun): %{_sbindir}/update-alternatives +%description pkg-bin-linux-arm +%{summary} +%endif + +## +# architecture independent go tooling, that allows for cross +# compiling on golang supported architectures +# http://golang.org/doc/install/source#environment +%package pkg-linux-386 +Summary: Golang compiler toolchain to compile for linux 386 +Requires: go = %{version}-%{release} +BuildArch: noarch +%description pkg-linux-386 +%{summary} + +%package pkg-linux-amd64 +Summary: Golang compiler toolchain to compile for linux amd64 +Requires: go = %{version}-%{release} +BuildArch: noarch +%description pkg-linux-amd64 +%{summary} + +%package pkg-linux-arm +Summary: Golang compiler toolchain to compile for linux arm +Requires: go = %{version}-%{release} +BuildArch: noarch +%description pkg-linux-arm +%{summary} + +%package pkg-darwin-386 +Summary: Golang compiler toolchain to compile for darwin 386 +Requires: go = %{version}-%{release} +BuildArch: noarch +%description pkg-darwin-386 +%{summary} + +%package pkg-darwin-amd64 +Summary: Golang compiler toolchain to compile for darwin amd64 +Requires: go = %{version}-%{release} +BuildArch: noarch +%description pkg-darwin-amd64 +%{summary} + +%package pkg-windows-386 +Summary: Golang compiler toolchain to compile for windows 386 +Requires: go = %{version}-%{release} +BuildArch: noarch +%description pkg-windows-386 +%{summary} + +%package pkg-windows-amd64 +Summary: Golang compiler toolchain to compile for windows amd64 +Requires: go = %{version}-%{release} +BuildArch: noarch +%description pkg-windows-amd64 +%{summary} + +%package pkg-plan9-386 +Summary: Golang compiler toolchain to compile for plan9 386 +Requires: go = %{version}-%{release} +BuildArch: noarch +%description pkg-plan9-386 +%{summary} + +%package pkg-plan9-amd64 +Summary: Golang compiler toolchain to compile for plan9 amd64 +Requires: go = %{version}-%{release} +BuildArch: noarch +%description pkg-plan9-amd64 +%{summary} + +%package pkg-freebsd-386 +Summary: Golang compiler toolchain to compile for freebsd 386 +Requires: go = %{version}-%{release} +BuildArch: noarch +%description pkg-freebsd-386 +%{summary} + +%package pkg-freebsd-amd64 +Summary: Golang compiler toolchain to compile for freebsd amd64 +Requires: go = %{version}-%{release} +BuildArch: noarch +%description pkg-freebsd-amd64 +%{summary} + +%package pkg-freebsd-arm +Summary: Golang compiler toolchain to compile for freebsd arm +Requires: go = %{version}-%{release} +BuildArch: noarch +%description pkg-freebsd-arm +%{summary} + +%package pkg-netbsd-386 +Summary: Golang compiler toolchain to compile for netbsd 386 +Requires: go = %{version}-%{release} +BuildArch: noarch +%description pkg-netbsd-386 +%{summary} + +%package pkg-netbsd-amd64 +Summary: Golang compiler toolchain to compile for netbsd amd64 +Requires: go = %{version}-%{release} +BuildArch: noarch +%description pkg-netbsd-amd64 +%{summary} + +%package pkg-netbsd-arm +Summary: Golang compiler toolchain to compile for netbsd arm +Requires: go = %{version}-%{release} +BuildArch: noarch +%description pkg-netbsd-arm +%{summary} + +%package pkg-openbsd-386 +Summary: Golang compiler toolchain to compile for openbsd 386 +Requires: go = %{version}-%{release} +BuildArch: noarch +%description pkg-openbsd-386 +%{summary} + +%package pkg-openbsd-amd64 +Summary: Golang compiler toolchain to compile for openbsd amd64 +Requires: go = %{version}-%{release} +BuildArch: noarch +%description pkg-openbsd-amd64 +%{summary} + +## missing ./go/src/pkg/runtime/defs_openbsd_arm.h +## we'll skip this bundle for now +#%package pkg-openbsd-arm +#Summary: Golang compiler toolchain to compile for openbsd arm +#Requires: go = %{version}-%{release} +#BuildArch: noarch +#%description pkg-openbsd-arm +#%{summary} + +# Workaround old RPM bug of symlink-replaced-with-dir failure +%pretrans -p +for _,d in pairs({"api", "doc", "include", "lib", "src"}) do + path = "%{goroot}/" .. d + if posix.stat(path, "type") == "link" then + os.remove(path) + posix.mkdir(path) + end +end + + +%prep +%setup -q -n go + +%if 0%{?fedora} >= 21 +%patch210 -p0 +%patch211 -p1 +%endif + +# increase verbosity of build +%patch0 -p1 + +# remove the P224 curve +%patch1 -p1 + +# skip flaky test +%patch2 -p1 + +# performance for archive/tar +%patch3 -p1 +%patch4 -p1 +# buffer the PAX header +%patch5 -p1 + +# create a [dirty] gcc wrapper to allow us to build with our own flags +# (dirty because it is spoofing 'gcc' since CC value is stored in the go tool) +# TODO: remove this and just set CFLAGS/LDFLAGS once upstream supports it +# https://code.google.com/p/go/issues/detail?id=6882 +# UPDATE: this is fixed in trunk, and will be in go1.3 +mkdir -p zz +echo -e "#!/bin/sh\n/usr/bin/gcc $RPM_OPT_FLAGS $RPM_LD_FLAGS \"\$@\"" > ./zz/gcc +chmod +x ./zz/gcc + +%build +# set up final install location +export GOROOT_FINAL=%{goroot} + +# TODO use the system linker to get the system link flags and build-id +# when https://code.google.com/p/go/issues/detail?id=5221 is solved +#export GO_LDFLAGS="-linkmode external -extldflags $RPM_LD_FLAGS" + +export GOHOSTOS=linux +export GOHOSTARCH=%{gohostarch} + +# build for all (see http://golang.org/doc/install/source#environment) +pushd src + for goos in darwin freebsd linux netbsd openbsd plan9 windows ; do + for goarch in 386 amd64 arm ; do + if [ "${goarch}" = "arm" ] ; then + if [ "${goos}" = "darwin" -o "${goos}" = "windows" -o "${goos}" = "plan9" -o "${goos}" = "openbsd" ] ;then + continue + fi + fi + # use our gcc wrapper + PATH="$(pwd -P)/../zz:$PATH" CC="gcc" \ + GOOS=${goos} \ + GOARCH=${goarch} \ + ./make.bash --no-clean + done + done +popd + +# compile for emacs +cd misc +mv emacs/go-mode-load.el emacs/%{name}-init.el +%{_emacs_bytecompile} emacs/go-mode.el +cd .. + + +%install +rm -rf $RPM_BUILD_ROOT + +# create the top level directories +mkdir -p $RPM_BUILD_ROOT%{_bindir} +mkdir -p $RPM_BUILD_ROOT%{goroot} + +# install everything into libdir (until symlink problems are fixed) +# https://code.google.com/p/go/issues/detail?id=5830 +cp -apv api bin doc favicon.ico include lib pkg robots.txt src misc VERSION \ + $RPM_BUILD_ROOT%{goroot} + +# bz1099206 +find $RPM_BUILD_ROOT%{goroot}/src -exec touch -r $RPM_BUILD_ROOT%{goroot}/VERSION "{}" \; +# and level out all the built archives +touch $RPM_BUILD_ROOT%{goroot}/pkg +find $RPM_BUILD_ROOT%{goroot}/pkg -exec touch -r $RPM_BUILD_ROOT%{goroot}/pkg "{}" \; +# generate the spec file ownership of this source tree and packages +cwd=$(pwd) +src_list=$cwd/go-src.list +rm -f $src_list +touch $src_list +pushd $RPM_BUILD_ROOT%{goroot} + find src/ -type d -printf '%%%dir %{goroot}/%p\n' >> $src_list + find src/ ! -type d -printf '%{goroot}/%p\n' >> $src_list + + + for goos in darwin freebsd linux netbsd openbsd plan9 windows ; do + for goarch in 386 amd64 arm ; do + if [ "${goarch}" = "arm" ] ; then + if [ "${goos}" = "darwin" -o "${goos}" = "windows" -o "${goos}" = "plan9" -o "${goos}" = "openbsd" ] ;then + continue + fi + fi + file_list=${cwd}/pkg-${goos}-${goarch}.list + rm -f $file_list + touch $file_list + find pkg/${goos}_${goarch}/ -type d -printf '%%%dir %{goroot}/%p\n' >> $file_list + find pkg/${goos}_${goarch}/ ! -type d -printf '%{goroot}/%p\n' >> $file_list + done + done +popd + +# remove the unnecessary zoneinfo file (Go will always use the system one first) +rm -rfv $RPM_BUILD_ROOT%{goroot}/lib/time + +# remove the doc Makefile +rm -rfv $RPM_BUILD_ROOT%{goroot}/doc/Makefile + +# put binaries to bindir, linked to the arch we're building, +# leave the arch independent pieces in %{goroot} +mkdir -p $RPM_BUILD_ROOT%{goroot}/bin/linux_%{gohostarch} +mv $RPM_BUILD_ROOT%{goroot}/bin/go $RPM_BUILD_ROOT%{goroot}/bin/linux_%{gohostarch}/go +mv $RPM_BUILD_ROOT%{goroot}/bin/gofmt $RPM_BUILD_ROOT%{goroot}/bin/linux_%{gohostarch}/gofmt + +# ensure these exist and are owned +mkdir -p $RPM_BUILD_ROOT%{gopath}/src/github.com/ +mkdir -p $RPM_BUILD_ROOT%{gopath}/src/bitbucket.org/ +mkdir -p $RPM_BUILD_ROOT%{gopath}/src/code.google.com/ +mkdir -p $RPM_BUILD_ROOT%{gopath}/src/code.google.com/p/ + +# remove the go and gofmt for other platforms (not used in the compile) +pushd $RPM_BUILD_ROOT%{goroot}/bin/ + rm -rf darwin_* windows_* freebsd_* netbsd_* openbsd_* plan9_* + case "%{gohostarch}" in + amd64) + rm -rf linux_386 linux_arm ;; + 386) + rm -rf linux_arm linux_amd64 ;; + arm) + rm -rf linux_386 linux_amd64 ;; + esac +popd + +# make sure these files exist and point to alternatives +rm -f $RPM_BUILD_ROOT%{_bindir}/go +ln -sf /etc/alternatives/go $RPM_BUILD_ROOT%{_bindir}/go +rm -f $RPM_BUILD_ROOT%{_bindir}/gofmt +ln -sf /etc/alternatives/gofmt $RPM_BUILD_ROOT%{_bindir}/gofmt + +# misc/bash +mkdir -p $RPM_BUILD_ROOT%{_datadir}/bash-completion/completions +cp -av misc/bash/go $RPM_BUILD_ROOT%{_datadir}/bash-completion/completions +for z in 8l 6l 5l 8g 6g 5g gofmt gccgo + do ln -s go $RPM_BUILD_ROOT%{_datadir}/bash-completion/completions/$z +done + +# misc/emacs +mkdir -p $RPM_BUILD_ROOT%{_emacs_sitelispdir}/%{name} +mkdir -p $RPM_BUILD_ROOT%{_emacs_sitestartdir} +cp -av misc/emacs/go-mode.* $RPM_BUILD_ROOT%{_emacs_sitelispdir}/%{name} +cp -av misc/emacs/%{name}-init.el $RPM_BUILD_ROOT%{_emacs_sitestartdir} + +# misc/vim +mkdir -p $RPM_BUILD_ROOT%{_datadir}/vim/vimfiles +cp -av misc/vim/* $RPM_BUILD_ROOT%{_datadir}/vim/vimfiles +rm $RPM_BUILD_ROOT%{_datadir}/vim/vimfiles/readme.txt + +# misc/zsh +mkdir -p $RPM_BUILD_ROOT%{_datadir}/zsh/site-functions +cp -av misc/zsh/go $RPM_BUILD_ROOT%{_datadir}/zsh/site-functions + +# gdbinit +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/gdbinit.d +cp -av %{SOURCE100} $RPM_BUILD_ROOT%{_sysconfdir}/gdbinit.d/golang.gdb + +# prelink blacklist +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/prelink.conf.d +cp -av %{SOURCE101} $RPM_BUILD_ROOT%{_sysconfdir}/prelink.conf.d/golang.conf + +# rpm macros +mkdir -p %{buildroot} +%if 0%{?rhel} > 6 || 0%{?fedora} > 0 +mkdir -p $RPM_BUILD_ROOT%{_rpmconfigdir}/macros.d +cp -av %{SOURCE102} $RPM_BUILD_ROOT%{_rpmconfigdir}/macros.d/macros.golang +%else +mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/rpm +cp -av %{SOURCE102} $RPM_BUILD_ROOT%{_sysconfdir}/rpm/macros.golang +%endif + + +%check +export GOROOT=$(pwd -P) +export PATH="$PATH":"$GOROOT"/bin +cd src +# skip using CGO for test. causes a SIGABRT on fc21 (bz1086900) +# until this test/issue is fixed +# https://bugzilla.redhat.com/show_bug.cgi?id=1086900 +# CGO for test, which fails in i686 on fc21 inside mock/chroot (bz1087621) +# https://bugzilla.redhat.com/show_bug.cgi?id=1087621 + +# not using our 'gcc' since the CFLAGS fails crash_cgo_test.go due to unused variables +# https://code.google.com/p/go/issues/detail?id=6883 +CGO_ENABLED=0 ./run.bash --no-rebuild +cd .. + +if [ $(go list -json std | grep Stale | wc -l) -gt 2 ] ; then + # cmd/go and cmd/gofmt show like they are stale. we can ignore + exit 1 +fi + + +%ifarch %{ix86} +%post pkg-bin-linux-386 +# since the cgo.a packaged in this rpm will be older than the other archives likely built on the ARM builder, +touch -r %{goroot}/pkg/linux_386/runtime.a %{goroot}/pkg/linux_386/runtime/cgo.a + +%{_sbindir}/update-alternatives --install %{_bindir}/go \ + go %{goroot}/bin/linux_386/go 90 \ + --slave %{_bindir}/gofmt gofmt %{goroot}/bin/linux_386/gofmt + +%preun pkg-bin-linux-386 +if [ $1 = 0 ]; then + %{_sbindir}/update-alternatives --remove go %{goroot}/bin/linux_386/go +fi +%endif + +%ifarch x86_64 +%post pkg-bin-linux-amd64 +# since the cgo.a packaged in this rpm will be older than the other archives likely built on the ARM builder, +touch -r %{goroot}/pkg/linux_amd64/runtime.a %{goroot}/pkg/linux_amd64/runtime/cgo.a + +%{_sbindir}/update-alternatives --install %{_bindir}/go \ + go %{goroot}/bin/linux_amd64/go 90 \ + --slave %{_bindir}/gofmt gofmt %{goroot}/bin/linux_amd64/gofmt + +%preun pkg-bin-linux-amd64 +if [ $1 = 0 ]; then + %{_sbindir}/update-alternatives --remove go %{goroot}/bin/linux_amd64/go +fi +%endif + +%ifarch %{arm} +%post pkg-bin-linux-arm +# since the cgo.a packaged in this rpm will be older than the other archives likely built on the ARM builder, +touch -r %{goroot}/pkg/linux_arm/runtime.a %{goroot}/pkg/linux_arm/runtime/cgo.a + +%{_sbindir}/update-alternatives --install %{_bindir}/go \ + go %{goroot}/bin/linux_arm/go 90 \ + --slave %{_bindir}/gofmt gofmt %{goroot}/bin/linux_arm/gofmt + +%preun pkg-bin-linux-arm +if [ $1 = 0 ]; then + %{_sbindir}/update-alternatives --remove go %{goroot}/bin/linux_arm/go +fi +%endif + + +#%post pkg-openbsd-arm +#GOROOT=%{goroot} GOOS=openbsd GOARCH=arm go install std + +%files +%doc AUTHORS CONTRIBUTORS LICENSE PATENTS +# VERSION has to be present in the GOROOT, for `go install std` to work +%doc %{goroot}/VERSION + +# go files +%dir %{goroot} +%{goroot}/* +%exclude %{goroot}/bin/ +%exclude %{goroot}/pkg/ +%exclude %{goroot}/src/ + +# ensure directory ownership, so they are cleaned up if empty +%dir %{gopath} +%dir %{gopath}/src +%dir %{gopath}/src/github.com/ +%dir %{gopath}/src/bitbucket.org/ +%dir %{gopath}/src/code.google.com/ +%dir %{gopath}/src/code.google.com/p/ + + +# autocomplete +%{_datadir}/bash-completion +%{_datadir}/zsh + +# gdbinit (for gdb debugging) +%{_sysconfdir}/gdbinit.d + +# prelink blacklist +%{_sysconfdir}/prelink.conf.d + +%if 0%{?rhel} > 6 || 0%{?fedora} > 0 +%{_rpmconfigdir}/macros.d/macros.golang +%else +%{_sysconfdir}/rpm/macros.golang +%endif + + +%files vim +%doc AUTHORS CONTRIBUTORS LICENSE PATENTS +%{_datadir}/vim/vimfiles/* + + +%files -n emacs-%{name} +%doc AUTHORS CONTRIBUTORS LICENSE PATENTS +%{_emacs_sitelispdir}/%{name} +%{_emacs_sitestartdir}/*.el + + +%files -f go-src.list src +%{goroot}/src/ + +%ifarch %{ix86} +%files pkg-bin-linux-386 +%{goroot}/bin/linux_386/ +# binary executables +%{_bindir}/go +%{_bindir}/gofmt +%dir %{goroot}/pkg/obj/linux_386 +%{goroot}/pkg/obj/linux_386/* +%{goroot}/pkg/linux_386/runtime/cgo.a +%dir %{goroot}/pkg/tool/linux_386 +%{goroot}/pkg/tool/linux_386/5a +%{goroot}/pkg/tool/linux_386/5c +%{goroot}/pkg/tool/linux_386/5g +%{goroot}/pkg/tool/linux_386/5l +%{goroot}/pkg/tool/linux_386/6a +%{goroot}/pkg/tool/linux_386/6c +%{goroot}/pkg/tool/linux_386/6g +%{goroot}/pkg/tool/linux_386/6l +%{goroot}/pkg/tool/linux_386/8a +%{goroot}/pkg/tool/linux_386/8c +%{goroot}/pkg/tool/linux_386/8g +%{goroot}/pkg/tool/linux_386/8l +%{goroot}/pkg/tool/linux_386/addr2line +%{goroot}/pkg/tool/linux_386/dist +%{goroot}/pkg/tool/linux_386/nm +%{goroot}/pkg/tool/linux_386/objdump +%{goroot}/pkg/tool/linux_386/pack +%{goroot}/pkg/tool/linux_386/pprof + +# arch dependent generated files, used by cgo +%{goroot}/src/pkg/runtime/zasm_linux_386.h +%{goroot}/src/pkg/runtime/zgoarch_386.go +%{goroot}/src/pkg/runtime/zmalloc_linux_386.c +%{goroot}/src/pkg/runtime/zmprof_linux_386.c +%{goroot}/src/pkg/runtime/znetpoll_linux_386.c +%{goroot}/src/pkg/runtime/zruntime1_linux_386.c +%{goroot}/src/pkg/runtime/zruntime_defs_linux_386.go +%{goroot}/src/pkg/runtime/zsema_linux_386.c +%{goroot}/src/pkg/runtime/zsigqueue_linux_386.c +%{goroot}/src/pkg/runtime/zstring_linux_386.c +%{goroot}/src/pkg/runtime/zsys_linux_386.s +%{goroot}/src/pkg/runtime/ztime_linux_386.c +%{goroot}/src/pkg/runtime/zalg_linux_386.c +%{goroot}/src/pkg/runtime/zchan_linux_386.c +%{goroot}/src/pkg/runtime/zcomplex_linux_386.c +%{goroot}/src/pkg/runtime/zcpuprof_linux_386.c +%{goroot}/src/pkg/runtime/zhashmap_linux_386.c +%{goroot}/src/pkg/runtime/ziface_linux_386.c +%{goroot}/src/pkg/runtime/zlfstack_linux_386.c +%{goroot}/src/pkg/runtime/zrdebug_linux_386.c +%{goroot}/src/pkg/runtime/zslice_linux_386.c +%{goroot}/src/pkg/runtime/zsymtab_linux_386.c +%endif + +%ifarch x86_64 +%files pkg-bin-linux-amd64 +%{goroot}/bin/linux_amd64/ +# binary executables +%{_bindir}/go +%{_bindir}/gofmt +%dir %{goroot}/pkg/obj/linux_amd64 +%{goroot}/pkg/obj/linux_amd64/* +%{goroot}/pkg/linux_amd64/runtime/cgo.a +%dir %{goroot}/pkg/tool/linux_amd64 +%{goroot}/pkg/tool/linux_amd64/5a +%{goroot}/pkg/tool/linux_amd64/5c +%{goroot}/pkg/tool/linux_amd64/5g +%{goroot}/pkg/tool/linux_amd64/5l +%{goroot}/pkg/tool/linux_amd64/6a +%{goroot}/pkg/tool/linux_amd64/6c +%{goroot}/pkg/tool/linux_amd64/6g +%{goroot}/pkg/tool/linux_amd64/6l +%{goroot}/pkg/tool/linux_amd64/8a +%{goroot}/pkg/tool/linux_amd64/8c +%{goroot}/pkg/tool/linux_amd64/8g +%{goroot}/pkg/tool/linux_amd64/8l +%{goroot}/pkg/tool/linux_amd64/addr2line +%{goroot}/pkg/tool/linux_amd64/dist +%{goroot}/pkg/tool/linux_amd64/nm +%{goroot}/pkg/tool/linux_amd64/objdump +%{goroot}/pkg/tool/linux_amd64/pack +%{goroot}/pkg/tool/linux_amd64/pprof + +# arch dependent generated files, used by cgo +%{goroot}/src/pkg/runtime/zasm_linux_amd64.h +%{goroot}/src/pkg/runtime/zgoarch_amd64.go +%{goroot}/src/pkg/runtime/zmalloc_linux_amd64.c +%{goroot}/src/pkg/runtime/zmprof_linux_amd64.c +%{goroot}/src/pkg/runtime/znetpoll_linux_amd64.c +%{goroot}/src/pkg/runtime/zruntime1_linux_amd64.c +%{goroot}/src/pkg/runtime/zruntime_defs_linux_amd64.go +%{goroot}/src/pkg/runtime/zsema_linux_amd64.c +%{goroot}/src/pkg/runtime/zsigqueue_linux_amd64.c +%{goroot}/src/pkg/runtime/zstring_linux_amd64.c +%{goroot}/src/pkg/runtime/zsys_linux_amd64.s +%{goroot}/src/pkg/runtime/ztime_linux_amd64.c +%{goroot}/src/pkg/runtime/zalg_linux_amd64.c +%{goroot}/src/pkg/runtime/zchan_linux_amd64.c +%{goroot}/src/pkg/runtime/zcomplex_linux_amd64.c +%{goroot}/src/pkg/runtime/zcpuprof_linux_amd64.c +%{goroot}/src/pkg/runtime/zhashmap_linux_amd64.c +%{goroot}/src/pkg/runtime/ziface_linux_amd64.c +%{goroot}/src/pkg/runtime/zlfstack_linux_amd64.c +%{goroot}/src/pkg/runtime/zrdebug_linux_amd64.c +%{goroot}/src/pkg/runtime/zslice_linux_amd64.c +%{goroot}/src/pkg/runtime/zsymtab_linux_amd64.c +%endif + +%ifarch %{arm} +%files pkg-bin-linux-arm +%{goroot}/bin/linux_arm/ +# binary executables +%{_bindir}/go +%{_bindir}/gofmt +%dir %{goroot}/pkg/obj/linux_arm +%{goroot}/pkg/obj/linux_arm/* +%{goroot}/pkg/linux_arm/runtime/cgo.a +%dir %{goroot}/pkg/tool/linux_arm +%{goroot}/pkg/tool/linux_arm/5a +%{goroot}/pkg/tool/linux_arm/5c +%{goroot}/pkg/tool/linux_arm/5g +%{goroot}/pkg/tool/linux_arm/5l +%{goroot}/pkg/tool/linux_arm/6a +%{goroot}/pkg/tool/linux_arm/6c +%{goroot}/pkg/tool/linux_arm/6g +%{goroot}/pkg/tool/linux_arm/6l +%{goroot}/pkg/tool/linux_arm/8a +%{goroot}/pkg/tool/linux_arm/8c +%{goroot}/pkg/tool/linux_arm/8g +%{goroot}/pkg/tool/linux_arm/8l +%{goroot}/pkg/tool/linux_arm/addr2line +%{goroot}/pkg/tool/linux_arm/dist +%{goroot}/pkg/tool/linux_arm/nm +%{goroot}/pkg/tool/linux_arm/objdump +%{goroot}/pkg/tool/linux_arm/pack +%{goroot}/pkg/tool/linux_arm/pprof + +# arch dependent generated files, used by cgo +%{goroot}/src/pkg/runtime/zasm_linux_arm.h +%{goroot}/src/pkg/runtime/zgoarch_arm.go +%{goroot}/src/pkg/runtime/zmalloc_linux_arm.c +%{goroot}/src/pkg/runtime/zmprof_linux_arm.c +%{goroot}/src/pkg/runtime/znetpoll_linux_arm.c +%{goroot}/src/pkg/runtime/znoasm_arm_linux_arm.c +%{goroot}/src/pkg/runtime/zruntime1_linux_arm.c +%{goroot}/src/pkg/runtime/zruntime_defs_linux_arm.go +%{goroot}/src/pkg/runtime/zsema_linux_arm.c +%{goroot}/src/pkg/runtime/zsigqueue_linux_arm.c +%{goroot}/src/pkg/runtime/zstring_linux_arm.c +%{goroot}/src/pkg/runtime/zsys_linux_arm.s +%{goroot}/src/pkg/runtime/ztime_linux_arm.c +%{goroot}/src/pkg/runtime/zalg_linux_arm.c +%{goroot}/src/pkg/runtime/zchan_linux_arm.c +%{goroot}/src/pkg/runtime/zcomplex_linux_arm.c +%{goroot}/src/pkg/runtime/zcpuprof_linux_arm.c +%{goroot}/src/pkg/runtime/zhashmap_linux_arm.c +%{goroot}/src/pkg/runtime/ziface_linux_arm.c +%{goroot}/src/pkg/runtime/zlfstack_linux_arm.c +%{goroot}/src/pkg/runtime/zrdebug_linux_arm.c +%{goroot}/src/pkg/runtime/zslice_linux_arm.c +%{goroot}/src/pkg/runtime/zsymtab_linux_arm.c +%endif + +%files pkg-linux-386 -f pkg-linux-386.list +%{goroot}/pkg/linux_386/ +%ifarch %{ix86} +%exclude %{goroot}/pkg/linux_386/runtime/cgo.a +%endif +%{goroot}/pkg/tool/linux_386/cgo +%{goroot}/pkg/tool/linux_386/fix +%{goroot}/pkg/tool/linux_386/yacc + +%files pkg-linux-amd64 -f pkg-linux-amd64.list +%{goroot}/pkg/linux_amd64/ +%ifarch x86_64 +%exclude %{goroot}/pkg/linux_amd64/runtime/cgo.a +%endif +%{goroot}/pkg/tool/linux_amd64/cgo +%{goroot}/pkg/tool/linux_amd64/fix +%{goroot}/pkg/tool/linux_amd64/yacc + +%files pkg-linux-arm -f pkg-linux-arm.list +%{goroot}/pkg/linux_arm/ +%ifarch %{arm} +%exclude %{goroot}/pkg/linux_arm/runtime/cgo.a +%endif +%{goroot}/pkg/tool/linux_arm/cgo +%{goroot}/pkg/tool/linux_arm/fix +%{goroot}/pkg/tool/linux_arm/yacc + +%files pkg-darwin-386 -f pkg-darwin-386.list +%{goroot}/pkg/darwin_386/ +%{goroot}/pkg/tool/darwin_386/ + +%files pkg-darwin-amd64 -f pkg-darwin-amd64.list +%{goroot}/pkg/darwin_amd64/ +%{goroot}/pkg/tool/darwin_amd64/ + +%files pkg-windows-386 -f pkg-windows-386.list +%{goroot}/pkg/windows_386/ +%{goroot}/pkg/tool/windows_386/ + +%files pkg-windows-amd64 -f pkg-windows-amd64.list +%{goroot}/pkg/windows_amd64/ +%{goroot}/pkg/tool/windows_amd64/ + +%files pkg-plan9-386 -f pkg-plan9-386.list +%{goroot}/pkg/plan9_386/ +%{goroot}/pkg/tool/plan9_386/ + +%files pkg-plan9-amd64 -f pkg-plan9-amd64.list +%{goroot}/pkg/plan9_amd64/ +%{goroot}/pkg/tool/plan9_amd64/ + +%files pkg-freebsd-386 -f pkg-freebsd-386.list +%{goroot}/pkg/freebsd_386/ +%{goroot}/pkg/tool/freebsd_386/ + +%files pkg-freebsd-amd64 -f pkg-freebsd-amd64.list +%{goroot}/pkg/freebsd_amd64/ +%{goroot}/pkg/tool/freebsd_amd64/ + +%files pkg-freebsd-arm -f pkg-freebsd-arm.list +%{goroot}/pkg/freebsd_arm/ +%{goroot}/pkg/tool/freebsd_arm/ + +%files pkg-netbsd-386 -f pkg-netbsd-386.list +%{goroot}/pkg/netbsd_386/ +%{goroot}/pkg/tool/netbsd_386/ + +%files pkg-netbsd-amd64 -f pkg-netbsd-amd64.list +%{goroot}/pkg/netbsd_amd64/ +%{goroot}/pkg/tool/netbsd_amd64/ + +%files pkg-netbsd-arm -f pkg-netbsd-arm.list +%{goroot}/pkg/netbsd_arm/ +%{goroot}/pkg/tool/netbsd_arm/ + +%files pkg-openbsd-386 -f pkg-openbsd-386.list +%{goroot}/pkg/openbsd_386/ +%{goroot}/pkg/tool/openbsd_386/ + +%files pkg-openbsd-amd64 -f pkg-openbsd-amd64.list +%{goroot}/pkg/openbsd_amd64/ +%{goroot}/pkg/tool/openbsd_amd64/ + +## skipping for now +#%files pkg-openbsd-arm +#%{goroot}/pkg/openbsd_arm/ +#%{goroot}/pkg/tool/openbsd_arm/ + + +%changelog +* Wed Oct 01 2014 Vincent Batts - 1.3.3-1 +- update to go1.3.3 (bz1146882) + +* Mon Sep 29 2014 Vincent Batts - 1.3.2-1 +- update to go1.3.2 (bz1147324) + +* Thu Sep 11 2014 Vincent Batts - 1.3.1-3 +- patching the tzinfo failure + +* Sat Aug 16 2014 Fedora Release Engineering - 1.3.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild + +* Wed Aug 13 2014 Vincent Batts - 1.3.1-1 +- update to go1.3.1 + +* Wed Aug 13 2014 Vincent Batts - 1.3-11 +- merged a line wrong + +* Wed Aug 13 2014 Vincent Batts - 1.3-10 +- more work to get cgo.a timestamps to line up, due to build-env +- explicitly list all the files and directories for the source and packages trees +- touch all the built archives to be the same + +* Mon Aug 11 2014 Vincent Batts - 1.3-9 +- make golang-src 'noarch' again, since that was not a fix, and takes up more space + +* Mon Aug 11 2014 Vincent Batts - 1.3-8 +- update timestamps of source files during %%install bz1099206 + +* Fri Aug 08 2014 Vincent Batts - 1.3-7 +- update timestamps of source during %%install bz1099206 + +* Wed Aug 06 2014 Vincent Batts - 1.3-6 +- make the source subpackage arch'ed, instead of noarch + +* Mon Jul 21 2014 Vincent Batts - 1.3-5 +- fix the writing of pax headers + +* Tue Jul 15 2014 Vincent Batts - 1.3-4 +- fix the loading of gdb safe-path. bz981356 + +* Tue Jul 08 2014 Vincent Batts - 1.3-3 +- `go install std` requires gcc, to build cgo. bz1105901, bz1101508 + +* Mon Jul 07 2014 Vincent Batts - 1.3-2 +- archive/tar memory allocation improvements + +* Thu Jun 19 2014 Vincent Batts - 1.3-1 +- update to go1.3 + +* Fri Jun 13 2014 Vincent Batts - 1.3rc2-1 +- update to go1.3rc2 + +* Sat Jun 07 2014 Fedora Release Engineering - 1.3rc1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild + +* Tue Jun 03 2014 Vincent Batts 1.3rc1-1 +- update to go1.3rc1 +- new arch file shuffling + +* Wed May 21 2014 Vincent Batts 1.3beta2-1 +- update to go1.3beta2 +- no longer provides go-mode for xemacs (emacs only) + +* Wed May 21 2014 Vincent Batts 1.2.2-7 +- bz1099206 ghost files are not what is needed + +* Tue May 20 2014 Vincent Batts 1.2.2-6 +- bz1099206 more fixing. The packages %%post need golang-bin present first + +* Tue May 20 2014 Vincent Batts 1.2.2-5 +- bz1099206 more fixing. Let go fix its own timestamps and freshness + +* Tue May 20 2014 Vincent Batts 1.2.2-4 +- fix the existence and alternatives of `go` and `gofmt` + +* Mon May 19 2014 Vincent Batts 1.2.2-3 +- bz1099206 fix timestamp issue caused by koji builders + +* Fri May 09 2014 Vincent Batts 1.2.2-2 +- more arch file shuffling + +* Fri May 09 2014 Vincent Batts 1.2.2-1 +- update to go1.2.2 + +* Thu May 08 2014 Vincent Batts 1.2.1-8 +- RHEL6 rpm macros can't %%exlude missing files + +* Wed May 07 2014 Vincent Batts 1.2.1-7 +- missed two arch-dependent src files + +* Wed May 07 2014 Vincent Batts 1.2.1-6 +- put generated arch-dependent src in their respective RPMs + +* Fri Apr 11 2014 Vincent Batts 1.2.1-5 +- skip test that is causing a SIGABRT on fc21 bz1086900 + +* Thu Apr 10 2014 Vincent Batts 1.2.1-4 +- fixing file and directory ownership bz1010713 + +* Wed Apr 09 2014 Vincent Batts 1.2.1-3 +- including more to macros (%%go_arches) +- set a standard goroot as /usr/lib/golang, regardless of arch +- include sub-packages for compiler toolchains, for all golang supported architectures + +* Wed Mar 26 2014 Vincent Batts 1.2.1-2 +- provide a system rpm macros. Starting with %gopath + +* Tue Mar 04 2014 Adam Miller 1.2.1-1 +- Update to latest upstream + +* Thu Feb 20 2014 Adam Miller 1.2-7 +- Remove _BSD_SOURCE and _SVID_SOURCE, they are deprecated in recent + versions of glibc and aren't needed + +* Wed Feb 19 2014 Adam Miller 1.2-6 +- pull in upstream archive/tar implementation that supports xattr for + docker 0.8.1 + +* Tue Feb 18 2014 Vincent Batts 1.2-5 +- provide 'go', so users can yum install 'go' + +* Fri Jan 24 2014 Vincent Batts 1.2-4 +- skip a flaky test that is sporadically failing on the build server + +* Thu Jan 16 2014 Vincent Batts 1.2-3 +- remove golang-godoc dependency. cyclic dependency on compiling godoc + +* Wed Dec 18 2013 Vincent Batts - 1.2-2 +- removing P224 ECC curve + +* Mon Dec 2 2013 Vincent Batts - 1.2-1 +- Update to upstream 1.2 release +- remove the pax tar patches + +* Tue Nov 26 2013 Vincent Batts - 1.1.2-8 +- fix the rpmspec conditional for rhel and fedora + +* Thu Nov 21 2013 Vincent Batts - 1.1.2-7 +- patch tests for testing on rawhide +- let the same spec work for rhel and fedora + +* Wed Nov 20 2013 Vincent Batts - 1.1.2-6 +- don't symlink /usr/bin out to ../lib..., move the file +- seperate out godoc, to accomodate the go.tools godoc + +* Fri Sep 20 2013 Adam Miller - 1.1.2-5 +- Pull upstream patches for BZ#1010271 +- Add glibc requirement that got dropped because of meta dep fix + +* Fri Aug 30 2013 Adam Miller - 1.1.2-4 +- fix the libc meta dependency (thanks to vbatts [at] redhat.com for the fix) + +* Tue Aug 27 2013 Adam Miller - 1.1.2-3 +- Revert incorrect merged changelog + +* Tue Aug 27 2013 Adam Miller - 1.1.2-2 +- Update spec to fix changelog entries from bad merge + +* Tue Aug 20 2013 Adam Miller - 1.1.2-1 +- Update to latest upstream + +* Wed Jul 10 2013 Adam Goode - 1.1.1-5 +- Blacklist testdata files from prelink +- Again try to fix #973842 + +* Fri Jul 5 2013 Adam Goode - 1.1.1-4 +- Move src to libdir for now (#973842) (upstream issue https://code.google.com/p/go/issues/detail?id=5830) +- Eliminate noarch data package to work around RPM bug (#975909) +- Try to add runtime-gdb.py to the gdb safe-path (#981356) + +* Wed Jun 19 2013 Adam Goode - 1.1.1-3 +- Use lua for pretrans (http://fedoraproject.org/wiki/Packaging:Guidelines#The_.25pretrans_scriptlet) + +* Mon Jun 17 2013 Adam Goode - 1.1.1-2 +- Hopefully really fix #973842 +- Fix update from pre-1.1.1 (#974840) + +* Thu Jun 13 2013 Adam Goode - 1.1.1-1 +- Update to 1.1.1 +- Fix basically useless package (#973842) + +* Sat May 25 2013 Dan HorĂ¡k - 1.1-3 +- set ExclusiveArch + +* Fri May 24 2013 Adam Goode - 1.1-2 +- Fix noarch package discrepancies + +* Fri May 24 2013 Adam Goode - 1.1-1 +- Initial Fedora release. +- Update to 1.1 + +* Thu May 9 2013 Adam Goode - 1.1-0.3.rc3 +- Update to rc3 + +* Thu Apr 11 2013 Adam Goode - 1.1-0.2.beta2 +- Update to beta2 + +* Tue Apr 9 2013 Adam Goode - 1.1-0.1.beta1 +- Initial packaging. diff --git a/macros.golang b/macros.golang new file mode 100644 index 0000000..bc6b803 --- /dev/null +++ b/macros.golang @@ -0,0 +1,8 @@ +# Where to set GOPATH for builds. Like: +# export GOPATH=$(pwd)/_build:%{gopath} +%gopath %{_datadir}/gocode + +# for use like: +# ExclusiveArch: %{go_arches} +%go_arches %{ix86} x86_64 %{arm} + diff --git a/sources b/sources new file mode 100644 index 0000000..66155c8 --- /dev/null +++ b/sources @@ -0,0 +1,2 @@ +d76dc07e475b2905b5fec1cf319b6356 golang-19087:a15f344a9efa-xattrs.tar +2cdbad6baefcf1007f3cf54a5bc878b7 go1.3.3.src.tar.gz