From 19d1adeab44ae2434ee16767bb8199fd6caaf9de Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jakub=20=C4=8Cajka?= Date: Wed, 4 Jul 2018 14:05:44 +0200 Subject: [PATCH] Rebase to go1.11beta1 --- .gitignore | 1 + ....Parse-to-properly-initialize-test-e.patch | 51 +++++ ...work-improve-pkgconfig-support-to-wo.patch | 177 ------------------ golang.spec | 31 +-- sources | 2 +- 5 files changed, 73 insertions(+), 189 deletions(-) create mode 100644 0001-cmd-go-call-flag.Parse-to-properly-initialize-test-e.patch delete mode 100644 0003-cmd-go-internal-work-improve-pkgconfig-support-to-wo.patch diff --git a/.gitignore b/.gitignore index 5eb6010..bdbb9b1 100644 --- a/.gitignore +++ b/.gitignore @@ -53,3 +53,4 @@ /go1.10.1.src.tar.gz /go1.10.2.src.tar.gz /go1.10.3.src.tar.gz +/go1.11beta1.src.tar.gz diff --git a/0001-cmd-go-call-flag.Parse-to-properly-initialize-test-e.patch b/0001-cmd-go-call-flag.Parse-to-properly-initialize-test-e.patch new file mode 100644 index 0000000..f0add07 --- /dev/null +++ b/0001-cmd-go-call-flag.Parse-to-properly-initialize-test-e.patch @@ -0,0 +1,51 @@ +From b55fe6a3702922f35b8d440f32fd5a54ee92f5f8 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Jakub=20=C4=8Cajka?= +Date: Mon, 25 Jun 2018 12:31:53 +0200 +Subject: [PATCH] cmd/go: call flag.Parse to properly initialize test + environment variables + +Executing tests in cmd/go/internal/modfetch/gitrepo/fetch_test.go in enviroment +witout outside connectivity in to the internet results in tests failure: + +2018/06/25 12:48:26 git clone --mirror https://vcs-test.golang.org/git/gitrepo1 /tmp/gitrepo-test-221822392/gitrepo2 in : exit status 128: + Cloning into bare repository '/tmp/gitrepo-test-221822392/gitrepo2'... + fatal: unable to access 'https://vcs-test.golang.org/git/gitrepo1/': Could not resolve host: vcs-test.golang.org +FAIL cmd/go/internal/modfetch/gitrepo 0.144s + +Call flag.Parse in TestMain to properly initialize test environment variables + +Fixes #26007 + +Change-Id: I059e27db69c0ca0e01db724035a25d6fefb094b5 +Reviewed-on: https://go-review.googlesource.com/120735 +Run-TryBot: Ian Lance Taylor +Reviewed-by: Brad Fitzpatrick +--- + src/cmd/go/internal/modfetch/gitrepo/fetch_test.go | 4 ++++ + 1 file changed, 4 insertions(+) + +diff --git a/src/cmd/go/internal/modfetch/gitrepo/fetch_test.go b/src/cmd/go/internal/modfetch/gitrepo/fetch_test.go +index ca932808e8..622249e67d 100644 +--- a/src/cmd/go/internal/modfetch/gitrepo/fetch_test.go ++++ b/src/cmd/go/internal/modfetch/gitrepo/fetch_test.go +@@ -7,6 +7,7 @@ package gitrepo + import ( + "archive/zip" + "bytes" ++ "flag" + "fmt" + "internal/testenv" + "io/ioutil" +@@ -23,6 +24,9 @@ import ( + ) + + func TestMain(m *testing.M) { ++ // needed for initializing the test environment variables as testing.Short ++ // and HasExternalNetwork ++ flag.Parse() + os.Exit(testMain(m)) + } + +-- +2.14.4 + diff --git a/0003-cmd-go-internal-work-improve-pkgconfig-support-to-wo.patch b/0003-cmd-go-internal-work-improve-pkgconfig-support-to-wo.patch deleted file mode 100644 index 933244b..0000000 --- a/0003-cmd-go-internal-work-improve-pkgconfig-support-to-wo.patch +++ /dev/null @@ -1,177 +0,0 @@ -From 18385565374c36eda8306c57715332d5ae6eb9a6 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Jakub=20=C4=8Cajka?= -Date: Fri, 5 Jan 2018 13:38:55 +0100 -Subject: [PATCH 3/3] cmd/go/internal/work : improve pkgconfig support to work - with latest(1.4+) pkgconf - -Fixes #23373 - -Fix interfacing with latest(1.4+) pkgconf versions, as they have change the output format, by extending parsing function splitPkgConfigOutput to accommodate more possible fragment escaping formats. Function is based on pkgconfigs own implementation at https://github.com/pkgconf/pkgconf/blob/master/libpkgconf/argvsplit.c. Along with this change test case TestSplitPkgConfigOutput have been expanded. Thanks to ignatenko for help on test cases and insights in to the pkgconfig. - -Change-Id: I55301bb564b07128d5564ec1454dd247f84a95c3 ---- - src/cmd/go/internal/work/build_test.go | 44 +++++++++++++++++--- - src/cmd/go/internal/work/exec.go | 75 +++++++++++++++++++++++----------- - 2 files changed, 90 insertions(+), 29 deletions(-) - -diff --git a/src/cmd/go/internal/work/build_test.go b/src/cmd/go/internal/work/build_test.go -index 3f5ba37c64..c3c63a97a4 100644 ---- a/src/cmd/go/internal/work/build_test.go -+++ b/src/cmd/go/internal/work/build_test.go -@@ -39,14 +39,46 @@ func TestSplitPkgConfigOutput(t *testing.T) { - for _, test := range []struct { - in []byte - want []string -+ pass bool - }{ -- {[]byte(`-r:foo -L/usr/white\ space/lib -lfoo\ bar -lbar\ baz`), []string{"-r:foo", "-L/usr/white space/lib", "-lfoo bar", "-lbar baz"}}, -- {[]byte(`-lextra\ fun\ arg\\`), []string{`-lextra fun arg\`}}, -- {[]byte(`broken flag\`), []string{"broken", "flag"}}, -- {[]byte("\textra whitespace\r\n"), []string{"extra", "whitespace"}}, -- {[]byte(" \r\n "), nil}, -+ {[]byte(`-r:foo -L/usr/white\ space/lib -lfoo\ bar -lbar\ baz`), []string{"-r:foo", "-L/usr/white space/lib", "-lfoo bar", "-lbar baz"}, true}, -+ {[]byte(`-lextra\ fun\ arg\\`), []string{`-lextra fun arg\`}, true}, -+ {[]byte(`broken flag\`), []string{"broken", "flag"}, true}, -+ {[]byte(`extra broken flag \`), []string{"extra", "broken", "flag"}, true}, -+ {[]byte(`\`), nil, true}, -+ {[]byte("\textra whitespace\r\n"), []string{"extra", "whitespace"}, true}, -+ {[]byte(" \r\n "), nil, true}, -+ {[]byte(`"-r:foo" "-L/usr/white space/lib" "-lfoo bar" "-lbar baz"`), []string{"-r:foo", "-L/usr/white space/lib", "-lfoo bar", "-lbar baz"}, true}, -+ {[]byte(`"-lextra fun arg\\"`), []string{`-lextra fun arg\`}, true}, -+ {[]byte(`" \r\n\ "`), []string{` \r\n\ `}, true}, -+ {[]byte(`""`), nil, true}, -+ {[]byte(``), nil, true}, -+ {[]byte(`"\\"`), []string{`\`}, true}, -+ {[]byte(`"\x"`), []string{`\x`}, true}, -+ {[]byte(`"\\x"`), []string{`\x`}, true}, -+ {[]byte(`'\\'`), []string{`\`}, true}, -+ {[]byte(`'\x'`), []string{`\x`}, true}, -+ {[]byte(`"\\x"`), []string{`\x`}, true}, -+ {[]byte(`-fPIC -I/test/include/foo -DQUOTED='"/test/share/doc"'`), []string{"-fPIC", "-I/test/include/foo", `-DQUOTED="/test/share/doc"`}, true}, -+ {[]byte(`-fPIC -I/test/include/foo -DQUOTED="/test/share/doc"`), []string{"-fPIC", "-I/test/include/foo", "-DQUOTED=/test/share/doc"}, true}, -+ {[]byte(`-fPIC -I/test/include/foo -DQUOTED=\"/test/share/doc\"`), []string{"-fPIC", "-I/test/include/foo", `-DQUOTED="/test/share/doc"`}, true}, -+ {[]byte(`-fPIC -I/test/include/foo -DQUOTED='/test/share/doc'`), []string{"-fPIC", "-I/test/include/foo", "-DQUOTED=/test/share/doc"}, true}, -+ {[]byte(`-DQUOTED='/te\st/share/d\oc'`), []string{`-DQUOTED=/te\st/share/d\oc`}, true}, -+ {[]byte(`-Dhello=10 -Dworld=+32 -DDEFINED_FROM_PKG_CONFIG=hello\ world`), []string{"-Dhello=10", "-Dworld=+32", "-DDEFINED_FROM_PKG_CONFIG=hello world"}, true}, -+ {[]byte(`" \r\n `), nil, false}, -+ {[]byte(`"-r:foo" "-L/usr/white space/lib "-lfoo bar" "-lbar baz"`), nil, false}, -+ {[]byte(`"-lextra fun arg\\`), nil, false}, - } { -- got := splitPkgConfigOutput(test.in) -+ got, err := splitPkgConfigOutput(test.in) -+ if err != nil { -+ if test.pass { -+ t.Errorf("splitPkgConfigOutput(%v) = %v; function returned error %v", test.in, got, err) -+ } -+ if got != nil { -+ t.Errorf("splitPkgConfigOutput failed with error %v and output has been non nil %v", err, got) -+ } -+ continue -+ } - if !reflect.DeepEqual(got, test.want) { - t.Errorf("splitPkgConfigOutput(%v) = %v; want %v", test.in, got, test.want) - } -diff --git a/src/cmd/go/internal/work/exec.go b/src/cmd/go/internal/work/exec.go -index a50c996041..5596638e48 100644 ---- a/src/cmd/go/internal/work/exec.go -+++ b/src/cmd/go/internal/work/exec.go -@@ -900,36 +900,62 @@ func (b *Builder) PkgconfigCmd() string { - } - - // splitPkgConfigOutput parses the pkg-config output into a slice of --// flags. pkg-config always uses \ to escape special characters. --func splitPkgConfigOutput(out []byte) []string { -+// flags. This implements the algorithm from pkgconf/libpkgconf/argvsplit.c -+func splitPkgConfigOutput(out []byte) ([]string, error) { - if len(out) == 0 { -- return nil -+ return nil, nil - } - var flags []string -- flag := make([]byte, len(out)) -- r, w := 0, 0 -- for r < len(out) { -- switch out[r] { -- case ' ', '\t', '\r', '\n': -- if w > 0 { -- flags = append(flags, string(flag[:w])) -+ flag := make([]byte, 0, len(out)) -+ escaped := false -+ quote := byte(0) -+ -+ for _, c := range out { -+ if escaped { -+ if quote == '"' || quote == '\'' { -+ switch c { -+ case '$', '`', '"', '\\': -+ default: -+ flag = append(flag, '\\') -+ } -+ flag = append(flag, c) -+ } else { -+ flag = append(flag, c) - } -- w = 0 -- case '\\': -- r++ -- fallthrough -- default: -- if r < len(out) { -- flag[w] = out[r] -- w++ -+ escaped = false -+ } else if quote != 0 { -+ if c == quote { -+ quote = 0 -+ } else { -+ switch c { -+ case '\\': -+ escaped = true -+ default: -+ flag = append(flag, c) -+ } - } -+ } else if strings.IndexByte(" \t\n\v\f\r", c) < 0 { -+ switch c { -+ case '\\': -+ escaped = true -+ case '\'', '"': -+ quote = c -+ default: -+ flag = append(flag, c) -+ } -+ } else if len(flag) != 0 { -+ flags = append(flags, string(flag)) -+ flag = flag[:0] - } -- r++ - } -- if w > 0 { -- flags = append(flags, string(flag[:w])) -+ -+ if quote != 0 { -+ return nil, errors.New("unterminated quoted string in pkgconf output ") -+ } else if len(flag) != 0 { -+ flags = append(flags, string(flag)) - } -- return flags -+ -+ return flags, nil - } - - // Calls pkg-config if needed and returns the cflags/ldflags needed to build the package. -@@ -961,7 +987,10 @@ func (b *Builder) getPkgConfigFlags(p *load.Package) (cflags, ldflags []string, - return nil, nil, errPrintedOutput - } - if len(out) > 0 { -- cflags = splitPkgConfigOutput(out) -+ cflags, err = splitPkgConfigOutput(out) -+ if err != nil { -+ return nil, nil, err -+ } - if err := checkCompilerFlags("CFLAGS", "pkg-config --cflags", cflags); err != nil { - return nil, nil, err - } --- -2.14.3 - diff --git a/golang.spec b/golang.spec index a697b93..811e77f 100644 --- a/golang.spec +++ b/golang.spec @@ -1,6 +1,6 @@ %bcond_with bootstrap # temporalily ignore test failures -%ifarch %{ix86} aarch64 +%ifarch %{ix86} aarch64 x86_64 %{arm} %bcond_without ignore_tests %else %bcond_with ignore_tests @@ -101,12 +101,12 @@ %global gohostarch s390x %endif -%global go_api 1.10 -%global go_version 1.10.3 +%global go_api 1.11 +%global go_version 1.11beta1 Name: golang -Version: 1.10.3 -Release: 1%{?dist} +Version: 1.11 +Release: 0.beta1.1%{?dist} Summary: The Go Programming Language # source tree includes several copies of Mark.Twain-Tom.Sawyer.txt under Public Domain License: BSD and Public Domain @@ -134,24 +134,24 @@ Provides: go = %{version}-%{release} # Bundled/Vendored provides generated by # go list -f {{.ImportPath}} ./src/vendor/... | sed "s:_$PWD/src/vendor/::g;s:_:.:;s:.*:Provides\: bundled(golang(&)):" && go list -f {{.ImportPath}} ./src/cmd/vendor/... | sed "s:_$PWD/src/cmd/vendor/::g;s:_:.:;s:.*:Provides\: bundled(golang(&)):" Provides: bundled(golang(golang.org/x/crypto/chacha20poly1305)) -Provides: bundled(golang(golang.org/x/crypto/chacha20poly1305/internal/chacha20)) Provides: bundled(golang(golang.org/x/crypto/cryptobyte)) Provides: bundled(golang(golang.org/x/crypto/cryptobyte/asn1)) Provides: bundled(golang(golang.org/x/crypto/curve25519)) +Provides: bundled(golang(golang.org/x/crypto/internal/chacha20)) Provides: bundled(golang(golang.org/x/crypto/poly1305)) +Provides: bundled(golang(golang.org/x/net/dns/dnsmessage)) +Provides: bundled(golang(golang.org/x/net/http/httpguts)) +Provides: bundled(golang(golang.org/x/net/http/httpproxy)) Provides: bundled(golang(golang.org/x/net/http2/hpack)) Provides: bundled(golang(golang.org/x/net/idna)) Provides: bundled(golang(golang.org/x/net/internal/nettest)) -Provides: bundled(golang(golang.org/x/net/lex/httplex)) Provides: bundled(golang(golang.org/x/net/nettest)) -Provides: bundled(golang(golang.org/x/net/proxy)) Provides: bundled(golang(golang.org/x/text/secure)) Provides: bundled(golang(golang.org/x/text/secure/bidirule)) Provides: bundled(golang(golang.org/x/text/transform)) Provides: bundled(golang(golang.org/x/text/unicode)) Provides: bundled(golang(golang.org/x/text/unicode/bidi)) Provides: bundled(golang(golang.org/x/text/unicode/norm)) -Provides: bundled(golang(github.com/google/pprof)) Provides: bundled(golang(github.com/google/pprof/driver)) Provides: bundled(golang(github.com/google/pprof/internal/binutils)) Provides: bundled(golang(github.com/google/pprof/internal/driver)) @@ -164,12 +164,18 @@ Provides: bundled(golang(github.com/google/pprof/internal/report)) Provides: bundled(golang(github.com/google/pprof/internal/symbolizer)) Provides: bundled(golang(github.com/google/pprof/internal/symbolz)) Provides: bundled(golang(github.com/google/pprof/profile)) -Provides: bundled(golang(github.com/google/pprof/third.party/svg)) +Provides: bundled(golang(github.com/google/pprof/third.party/d3)) +Provides: bundled(golang(github.com/google/pprof/third.party/d3flamegraph)) +Provides: bundled(golang(github.com/google/pprof/third.party/svgpan)) Provides: bundled(golang(github.com/ianlancetaylor/demangle)) Provides: bundled(golang(golang.org/x/arch/arm/armasm)) Provides: bundled(golang(golang.org/x/arch/arm64/arm64asm)) Provides: bundled(golang(golang.org/x/arch/ppc64/ppc64asm)) Provides: bundled(golang(golang.org/x/arch/x86/x86asm)) +Provides: bundled(golang(golang.org/x/crypto/ssh/terminal)) +Provides: bundled(golang(golang.org/x/sys/unix)) +Provides: bundled(golang(golang.org/x/sys/windows)) +Provides: bundled(golang(golang.org/x/sys/windows/registry)) Requires: %{name}-bin = %{version}-%{release} Requires: %{name}-src = %{version}-%{release} @@ -177,7 +183,7 @@ Requires: go-srpm-macros Patch1: 0001-Don-t-use-the-bundled-tzdata-at-runtime-except-for-t.patch Patch2: 0002-syscall-expose-IfInfomsg.X__ifi_pad-on-s390x.patch -Patch3: 0003-cmd-go-internal-work-improve-pkgconfig-support-to-wo.patch +Patch3: 0001-cmd-go-call-flag.Parse-to-properly-initialize-test-e.patch # Having documentation separate was broken Obsoletes: %{name}-docs < 1.1-4 @@ -540,6 +546,9 @@ fi %endif %changelog +* Wed Jul 04 2018 Jakub Čajka - 1.11-0.beta1.1 +* Rebase to 1.11beta1 + * Fri Jun 08 2018 Jakub Čajka - 1.10.3-1 - Rebase to 1.10.3 diff --git a/sources b/sources index d66a8a7..8bb3599 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (go1.10.3.src.tar.gz) = fd2bd5fcb5c6d0a5336c4b1d2cacb368edbb01359297a83bdedc53f6018642598232f00633fc60fde879050f5f26a810c828d46b5d6626cbcc0702d93ad33fbb +SHA512 (go1.11beta1.src.tar.gz) = a7369cbb05429f0c2ac0aca27ec67a4fe931f4a496ecd77cb901cbb14f8db5f925736b2d7b1af24e0ad0860aa50334911444c4bef5b92c23d73918a3128a71f3