* [PR PATCH] go: update to 1.19, add tests @ 2022-08-07 5:03 subnut 2022-08-07 20:49 ` paper42 ` (6 more replies) 0 siblings, 7 replies; 8+ messages in thread From: subnut @ 2022-08-07 5:03 UTC (permalink / raw) To: ml [-- Attachment #1: Type: text/plain, Size: 1291 bytes --] There is a new pull request by subnut against master on the void-packages repository https://github.com/subnut/void-packages go1.19 https://github.com/void-linux/void-packages/pull/38510 go: update to 1.19, add tests Supersedes #38474 Supersedes #38385 <!-- Uncomment relevant sections and delete options which are not applicable --> #### Testing the changes - I tested the changes in this PR: **YES** <!-- #### New package - This new package conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements): **YES**|**NO** --> <!-- Note: If the build is likely to take more than 2 hours, please add ci skip tag as described in https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration and test at least one native build and, if supported, at least one cross build. Ignore this section if this PR is not skipping CI. --> #### Local build testing - I built this PR locally for my native architecture, (x86_64-glibc) - I built this PR locally for these architectures (if supported. mark crossbuilds): - i686-glibc <!-- - aarch64-musl - armv7l - armv6l-musl --> A patch file from https://github.com/void-linux/void-packages/pull/38510.patch is attached [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: github-pr-go1.19-38510.patch --] [-- Type: text/x-diff, Size: 11157 bytes --] From d2e28e6fe5bbc12beac82122ac58f0833e05cd3c Mon Sep 17 00:00:00 2001 From: Subhaditya Nath <sn03.general@gmail.com> Date: Sat, 6 Aug 2022 15:12:02 +0530 Subject: [PATCH] go: update to 1.19, add tests A few tests need to be skipped, but otherwise tests run perfectly fine. --- srcpkgs/go/files/fix-i686-tests.patch | 13 +++ srcpkgs/go/files/fix-musl-tests.patch | 29 +++++ srcpkgs/go/patches/fix-tests.patch | 150 ++++++++++++++++++++++++++ srcpkgs/go/template | 42 +++++++- 4 files changed, 231 insertions(+), 3 deletions(-) create mode 100644 srcpkgs/go/files/fix-i686-tests.patch create mode 100644 srcpkgs/go/files/fix-musl-tests.patch create mode 100644 srcpkgs/go/patches/fix-tests.patch diff --git a/srcpkgs/go/files/fix-i686-tests.patch b/srcpkgs/go/files/fix-i686-tests.patch new file mode 100644 index 000000000000..f5d8083b19f0 --- /dev/null +++ b/srcpkgs/go/files/fix-i686-tests.patch @@ -0,0 +1,13 @@ +Fixes go1.19 error on i686 - + runtime/cgo(.text): unknown symbol __stack_chk_fail_local in pcrel + +--- a/go/src/cmd/go/script_test.go ++++ b/go/src/cmd/go/script_test.go +@@ -148,6 +148,7 @@ var extraEnvKeys = []string{ + "GO_TESTING_GOTOOLS", // for gccgo testing + "GCCGO", // for gccgo testing + "GCCGOTOOLDIR", // for gccgo testing ++ "CGO_CFLAGS", // for working around go1.19 "unknown symbol __stack_chk_fail_local" error on x86 + } + + // setup sets up the test execution temporary directory and environment. diff --git a/srcpkgs/go/files/fix-musl-tests.patch b/srcpkgs/go/files/fix-musl-tests.patch new file mode 100644 index 000000000000..f70cb456857b --- /dev/null +++ b/srcpkgs/go/files/fix-musl-tests.patch @@ -0,0 +1,29 @@ +These tests fail on musl because /proc/../status doesn't contain the "Groups" +field, because musl lacks the getgroups() syscall. + +--- a/go/src/syscall/syscall_linux_test.go ++++ b/go/src/syscall/syscall_linux_test.go +@@ -530,10 +530,6 @@ func TestSetuidEtc(t *testing.T) { + {call: "Setgid(1)", fn: func() error { return syscall.Setgid(1) }, filter: "Gid:", expect: "\t1\t1\t1\t1"}, + {call: "Setgid(0)", fn: func() error { return syscall.Setgid(0) }, filter: "Gid:", expect: "\t0\t0\t0\t0"}, + +- {call: "Setgroups([]int{0,1,2,3})", fn: func() error { return syscall.Setgroups([]int{0, 1, 2, 3}) }, filter: "Groups:", expect: "\t0 1 2 3"}, +- {call: "Setgroups(nil)", fn: func() error { return syscall.Setgroups(nil) }, filter: "Groups:", expect: ""}, +- {call: "Setgroups([]int{0})", fn: func() error { return syscall.Setgroups([]int{0}) }, filter: "Groups:", expect: "\t0"}, +- + {call: "Setregid(101,0)", fn: func() error { return syscall.Setregid(101, 0) }, filter: "Gid:", expect: "\t101\t0\t0\t0"}, + {call: "Setregid(0,102)", fn: func() error { return syscall.Setregid(0, 102) }, filter: "Gid:", expect: "\t0\t102\t102\t102"}, + {call: "Setregid(0,0)", fn: func() error { return syscall.Setregid(0, 0) }, filter: "Gid:", expect: "\t0\t0\t0\t0"}, +--- a/go/misc/cgo/test/issue1435.go ++++ b/go/misc/cgo/test/issue1435.go +@@ -165,10 +165,6 @@ func test1435(t *testing.T) { + {call: "Setgid(1)", fn: func() error { return syscall.Setgid(1) }, filter: "Gid:", expect: "\t1\t1\t1\t1"}, + {call: "Setgid(0)", fn: func() error { return syscall.Setgid(0) }, filter: "Gid:", expect: "\t0\t0\t0\t0"}, + +- {call: "Setgroups([]int{0,1,2,3})", fn: func() error { return syscall.Setgroups([]int{0, 1, 2, 3}) }, filter: "Groups:", expect: "\t0 1 2 3"}, +- {call: "Setgroups(nil)", fn: func() error { return syscall.Setgroups(nil) }, filter: "Groups:", expect: ""}, +- {call: "Setgroups([]int{0})", fn: func() error { return syscall.Setgroups([]int{0}) }, filter: "Groups:", expect: "\t0"}, +- + {call: "Setregid(101,0)", fn: func() error { return syscall.Setregid(101, 0) }, filter: "Gid:", expect: "\t101\t0\t0\t0"}, + {call: "Setregid(0,102)", fn: func() error { return syscall.Setregid(0, 102) }, filter: "Gid:", expect: "\t0\t102\t102\t102"}, + {call: "Setregid(0,0)", fn: func() error { return syscall.Setregid(0, 0) }, filter: "Gid:", expect: "\t0\t0\t0\t0"}, diff --git a/srcpkgs/go/patches/fix-tests.patch b/srcpkgs/go/patches/fix-tests.patch new file mode 100644 index 000000000000..c93415611413 --- /dev/null +++ b/srcpkgs/go/patches/fix-tests.patch @@ -0,0 +1,150 @@ +Inside user namespaces, if GID == OVERFLOWGID (65534), then chown won't work. +https://github.com/golang/go/issues/42525 + +--- a/go/src/os/os_unix_test.go ++++ b/go/src/os/os_unix_test.go +@@ -39,144 +39,6 @@ func checkUidGid(t *testing.T, path string, uid, gid int) { + } + } + +-func TestChown(t *testing.T) { +- // Use TempDir() to make sure we're on a local file system, +- // so that the group ids returned by Getgroups will be allowed +- // on the file. On NFS, the Getgroups groups are +- // basically useless. +- f := newFile("TestChown", t) +- defer Remove(f.Name()) +- defer f.Close() +- dir, err := f.Stat() +- if err != nil { +- t.Fatalf("stat %s: %s", f.Name(), err) +- } +- +- // Can't change uid unless root, but can try +- // changing the group id. First try our current group. +- gid := Getgid() +- t.Log("gid:", gid) +- if err = Chown(f.Name(), -1, gid); err != nil { +- t.Fatalf("chown %s -1 %d: %s", f.Name(), gid, err) +- } +- sys := dir.Sys().(*syscall.Stat_t) +- checkUidGid(t, f.Name(), int(sys.Uid), gid) +- +- // Then try all the auxiliary groups. +- groups, err := Getgroups() +- if err != nil { +- t.Fatalf("getgroups: %s", err) +- } +- t.Log("groups: ", groups) +- for _, g := range groups { +- if err = Chown(f.Name(), -1, g); err != nil { +- t.Fatalf("chown %s -1 %d: %s", f.Name(), g, err) +- } +- checkUidGid(t, f.Name(), int(sys.Uid), g) +- +- // change back to gid to test fd.Chown +- if err = f.Chown(-1, gid); err != nil { +- t.Fatalf("fchown %s -1 %d: %s", f.Name(), gid, err) +- } +- checkUidGid(t, f.Name(), int(sys.Uid), gid) +- } +-} +- +-func TestFileChown(t *testing.T) { +- // Use TempDir() to make sure we're on a local file system, +- // so that the group ids returned by Getgroups will be allowed +- // on the file. On NFS, the Getgroups groups are +- // basically useless. +- f := newFile("TestFileChown", t) +- defer Remove(f.Name()) +- defer f.Close() +- dir, err := f.Stat() +- if err != nil { +- t.Fatalf("stat %s: %s", f.Name(), err) +- } +- +- // Can't change uid unless root, but can try +- // changing the group id. First try our current group. +- gid := Getgid() +- t.Log("gid:", gid) +- if err = f.Chown(-1, gid); err != nil { +- t.Fatalf("fchown %s -1 %d: %s", f.Name(), gid, err) +- } +- sys := dir.Sys().(*syscall.Stat_t) +- checkUidGid(t, f.Name(), int(sys.Uid), gid) +- +- // Then try all the auxiliary groups. +- groups, err := Getgroups() +- if err != nil { +- t.Fatalf("getgroups: %s", err) +- } +- t.Log("groups: ", groups) +- for _, g := range groups { +- if err = f.Chown(-1, g); err != nil { +- t.Fatalf("fchown %s -1 %d: %s", f.Name(), g, err) +- } +- checkUidGid(t, f.Name(), int(sys.Uid), g) +- +- // change back to gid to test fd.Chown +- if err = f.Chown(-1, gid); err != nil { +- t.Fatalf("fchown %s -1 %d: %s", f.Name(), gid, err) +- } +- checkUidGid(t, f.Name(), int(sys.Uid), gid) +- } +-} +- +-func TestLchown(t *testing.T) { +- // Use TempDir() to make sure we're on a local file system, +- // so that the group ids returned by Getgroups will be allowed +- // on the file. On NFS, the Getgroups groups are +- // basically useless. +- f := newFile("TestLchown", t) +- defer Remove(f.Name()) +- defer f.Close() +- dir, err := f.Stat() +- if err != nil { +- t.Fatalf("stat %s: %s", f.Name(), err) +- } +- +- linkname := f.Name() + "2" +- if err := Symlink(f.Name(), linkname); err != nil { +- if runtime.GOOS == "android" && IsPermission(err) { +- t.Skip("skipping test on Android; permission error creating symlink") +- } +- t.Fatalf("link %s -> %s: %v", f.Name(), linkname, err) +- } +- defer Remove(linkname) +- +- // Can't change uid unless root, but can try +- // changing the group id. First try our current group. +- gid := Getgid() +- t.Log("gid:", gid) +- if err = Lchown(linkname, -1, gid); err != nil { +- if err, ok := err.(*PathError); ok && err.Err == syscall.ENOSYS { +- t.Skip("lchown is unavailable") +- } +- t.Fatalf("lchown %s -1 %d: %s", linkname, gid, err) +- } +- sys := dir.Sys().(*syscall.Stat_t) +- checkUidGid(t, linkname, int(sys.Uid), gid) +- +- // Then try all the auxiliary groups. +- groups, err := Getgroups() +- if err != nil { +- t.Fatalf("getgroups: %s", err) +- } +- t.Log("groups: ", groups) +- for _, g := range groups { +- if err = Lchown(linkname, -1, g); err != nil { +- t.Fatalf("lchown %s -1 %d: %s", linkname, g, err) +- } +- checkUidGid(t, linkname, int(sys.Uid), g) +- +- // Check that link target's gid is unchanged. +- checkUidGid(t, f.Name(), int(sys.Uid), int(sys.Gid)) +- } +-} +- + // Issue 16919: Readdir must return a non-empty slice or an error. + func TestReaddirRemoveRace(t *testing.T) { + oldStat := *LstatP diff --git a/srcpkgs/go/template b/srcpkgs/go/template index 2db64b795ed8..427f7cecab13 100644 --- a/srcpkgs/go/template +++ b/srcpkgs/go/template @@ -1,17 +1,18 @@ # Template file for 'go' pkgname=go -version=1.18.3 +version=1.19 revision=1 create_wrksrc=yes build_wrksrc=go hostmakedepends="go1.12-bootstrap" +checkdepends="iana-etc clang gcc-fortran" short_desc="Go Programming Language" maintainer="Michael Aldridge <maldridge@voidlinux.org>" license="BSD-3-Clause" homepage="https://go.dev/" changelog="https://go.dev/doc/devel/release.html" distfiles="https://go.dev/dl/go${version}.src.tar.gz" -checksum=0012386ddcbb5f3350e407c679923811dbd283fcdc421724931614a842ecbc2d +checksum=9419cc70dc5a2523f29a77053cafff658ed21ef3561d9b6b020280ebceab28b9 nostrip=yes noverifyrdeps=yes @@ -31,11 +32,37 @@ if [ "$CROSS_BUILD" ]; then fi fi +# Workaround for go-1.19 compilation error on i686 +# runtime/cgo(.text): unknown symbol __stack_chk_fail_local in pcrel +if [ "$XBPS_MACHINE" = i686 ]; then + export CGO_CFLAGS="-fno-stack-protector" +fi + +post_extract() { + local patch patches + if [ "$XBPS_MACHINE" = i686 ]; then + patches+=" fix-i686-tests.patch" + fi + if [ "$XBPS_LIBC" = musl ]; then + patches+=" fix-musl-tests.patch" + fi + for patch in $patches; do + cp "$FILESDIR/$patch" "$wrksrc/$patch" + done + for patch in $patches; do + patch -Np1 <"$patch" + done + if [ "$(df . --output=fstype | tail -1)" = zfs ]; then + # https://github.com/golang/go/issues/39905 + rm -v go/src/cmd/link/internal/ld/fallocate_test.go + fi +} + do_build() { unset GCC CC CXX LD CFLAGS # FIXME: work around leaking go build-style vars when built as a # dependency - unset CGO_CXXFLAGS CGO_CFLAGS CGO_ENABLED + unset CGO_CXXFLAGS CGO_ENABLED # CGO_CFLAGS export GOROOT_BOOTSTRAP="/usr/lib/go1.12" export GOROOT=$PWD @@ -47,6 +74,15 @@ do_build() { bash make.bash -v } +do_check() { + if [ "$XBPS_LIBC" = musl ]; then + # https://github.com/golang/go/issues/39857 + ./bin/go tool dist test -v -run "!^cgo_test$" + else + ./bin/go tool dist test -v + fi +} + do_install() { local bindir ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: go: update to 1.19, add tests 2022-08-07 5:03 [PR PATCH] go: update to 1.19, add tests subnut @ 2022-08-07 20:49 ` paper42 2022-08-07 20:53 ` [PR REVIEW] " paper42 ` (5 subsequent siblings) 6 siblings, 0 replies; 8+ messages in thread From: paper42 @ 2022-08-07 20:49 UTC (permalink / raw) To: ml [-- Attachment #1: Type: text/plain, Size: 198 bytes --] New comment by paper42 on void-packages repository https://github.com/void-linux/void-packages/pull/38510#issuecomment-1207483087 Comment: this PR seems to be in the best shape, cc @the-maldridge ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PR REVIEW] go: update to 1.19, add tests 2022-08-07 5:03 [PR PATCH] go: update to 1.19, add tests subnut 2022-08-07 20:49 ` paper42 @ 2022-08-07 20:53 ` paper42 2022-08-08 1:14 ` the-maldridge ` (4 subsequent siblings) 6 siblings, 0 replies; 8+ messages in thread From: paper42 @ 2022-08-07 20:53 UTC (permalink / raw) To: ml [-- Attachment #1: Type: text/plain, Size: 284 bytes --] New review comment by paper42 on void-packages repository https://github.com/void-linux/void-packages/pull/38510#discussion_r939720784 Comment: this is ugly and the tests that fail on i686 probably also fail on other 32bit archs, I would just patch all of them out unconditionally. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: go: update to 1.19, add tests 2022-08-07 5:03 [PR PATCH] go: update to 1.19, add tests subnut 2022-08-07 20:49 ` paper42 2022-08-07 20:53 ` [PR REVIEW] " paper42 @ 2022-08-08 1:14 ` the-maldridge 2022-08-08 2:35 ` [PR PATCH] [Updated] " subnut ` (3 subsequent siblings) 6 siblings, 0 replies; 8+ messages in thread From: the-maldridge @ 2022-08-08 1:14 UTC (permalink / raw) To: ml [-- Attachment #1: Type: text/plain, Size: 262 bytes --] New comment by the-maldridge on void-packages repository https://github.com/void-linux/void-packages/pull/38510#issuecomment-1207541726 Comment: @subnut this looks fine with the exception of the tests. Please apply the requested changes, then good for merge. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PR PATCH] [Updated] go: update to 1.19, add tests 2022-08-07 5:03 [PR PATCH] go: update to 1.19, add tests subnut ` (2 preceding siblings ...) 2022-08-08 1:14 ` the-maldridge @ 2022-08-08 2:35 ` subnut 2022-08-08 2:35 ` [PR REVIEW] " subnut ` (2 subsequent siblings) 6 siblings, 0 replies; 8+ messages in thread From: subnut @ 2022-08-08 2:35 UTC (permalink / raw) To: ml [-- Attachment #1: Type: text/plain, Size: 1296 bytes --] There is an updated pull request by subnut against master on the void-packages repository https://github.com/subnut/void-packages go1.19 https://github.com/void-linux/void-packages/pull/38510 go: update to 1.19, add tests Supersedes #38474 Supersedes #38385 <!-- Uncomment relevant sections and delete options which are not applicable --> #### Testing the changes - I tested the changes in this PR: **YES** <!-- #### New package - This new package conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements): **YES**|**NO** --> <!-- Note: If the build is likely to take more than 2 hours, please add ci skip tag as described in https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration and test at least one native build and, if supported, at least one cross build. Ignore this section if this PR is not skipping CI. --> #### Local build testing - I built this PR locally for my native architecture, (x86_64-glibc) - I built this PR locally for these architectures (if supported. mark crossbuilds): - i686-glibc <!-- - aarch64-musl - armv7l - armv6l-musl --> A patch file from https://github.com/void-linux/void-packages/pull/38510.patch is attached [-- Warning: decoded text below may be mangled, UTF-8 assumed --] [-- Attachment #2: github-pr-go1.19-38510.patch --] [-- Type: text/x-diff, Size: 10797 bytes --] From a36ac36fe37056b70f2c016598a6501a06f65729 Mon Sep 17 00:00:00 2001 From: Subhaditya Nath <sn03.general@gmail.com> Date: Sat, 6 Aug 2022 15:12:02 +0530 Subject: [PATCH] go: update to 1.19, add tests --- srcpkgs/go/patches/fix-32bit-tests.patch | 13 ++ srcpkgs/go/patches/fix-musl-tests.patch | 29 +++++ srcpkgs/go/patches/fix-tests.patch | 150 +++++++++++++++++++++++ srcpkgs/go/template | 29 ++++- 4 files changed, 218 insertions(+), 3 deletions(-) create mode 100644 srcpkgs/go/patches/fix-32bit-tests.patch create mode 100644 srcpkgs/go/patches/fix-musl-tests.patch create mode 100644 srcpkgs/go/patches/fix-tests.patch diff --git a/srcpkgs/go/patches/fix-32bit-tests.patch b/srcpkgs/go/patches/fix-32bit-tests.patch new file mode 100644 index 000000000000..f5d8083b19f0 --- /dev/null +++ b/srcpkgs/go/patches/fix-32bit-tests.patch @@ -0,0 +1,13 @@ +Fixes go1.19 error on i686 - + runtime/cgo(.text): unknown symbol __stack_chk_fail_local in pcrel + +--- a/go/src/cmd/go/script_test.go ++++ b/go/src/cmd/go/script_test.go +@@ -148,6 +148,7 @@ var extraEnvKeys = []string{ + "GO_TESTING_GOTOOLS", // for gccgo testing + "GCCGO", // for gccgo testing + "GCCGOTOOLDIR", // for gccgo testing ++ "CGO_CFLAGS", // for working around go1.19 "unknown symbol __stack_chk_fail_local" error on x86 + } + + // setup sets up the test execution temporary directory and environment. diff --git a/srcpkgs/go/patches/fix-musl-tests.patch b/srcpkgs/go/patches/fix-musl-tests.patch new file mode 100644 index 000000000000..f70cb456857b --- /dev/null +++ b/srcpkgs/go/patches/fix-musl-tests.patch @@ -0,0 +1,29 @@ +These tests fail on musl because /proc/../status doesn't contain the "Groups" +field, because musl lacks the getgroups() syscall. + +--- a/go/src/syscall/syscall_linux_test.go ++++ b/go/src/syscall/syscall_linux_test.go +@@ -530,10 +530,6 @@ func TestSetuidEtc(t *testing.T) { + {call: "Setgid(1)", fn: func() error { return syscall.Setgid(1) }, filter: "Gid:", expect: "\t1\t1\t1\t1"}, + {call: "Setgid(0)", fn: func() error { return syscall.Setgid(0) }, filter: "Gid:", expect: "\t0\t0\t0\t0"}, + +- {call: "Setgroups([]int{0,1,2,3})", fn: func() error { return syscall.Setgroups([]int{0, 1, 2, 3}) }, filter: "Groups:", expect: "\t0 1 2 3"}, +- {call: "Setgroups(nil)", fn: func() error { return syscall.Setgroups(nil) }, filter: "Groups:", expect: ""}, +- {call: "Setgroups([]int{0})", fn: func() error { return syscall.Setgroups([]int{0}) }, filter: "Groups:", expect: "\t0"}, +- + {call: "Setregid(101,0)", fn: func() error { return syscall.Setregid(101, 0) }, filter: "Gid:", expect: "\t101\t0\t0\t0"}, + {call: "Setregid(0,102)", fn: func() error { return syscall.Setregid(0, 102) }, filter: "Gid:", expect: "\t0\t102\t102\t102"}, + {call: "Setregid(0,0)", fn: func() error { return syscall.Setregid(0, 0) }, filter: "Gid:", expect: "\t0\t0\t0\t0"}, +--- a/go/misc/cgo/test/issue1435.go ++++ b/go/misc/cgo/test/issue1435.go +@@ -165,10 +165,6 @@ func test1435(t *testing.T) { + {call: "Setgid(1)", fn: func() error { return syscall.Setgid(1) }, filter: "Gid:", expect: "\t1\t1\t1\t1"}, + {call: "Setgid(0)", fn: func() error { return syscall.Setgid(0) }, filter: "Gid:", expect: "\t0\t0\t0\t0"}, + +- {call: "Setgroups([]int{0,1,2,3})", fn: func() error { return syscall.Setgroups([]int{0, 1, 2, 3}) }, filter: "Groups:", expect: "\t0 1 2 3"}, +- {call: "Setgroups(nil)", fn: func() error { return syscall.Setgroups(nil) }, filter: "Groups:", expect: ""}, +- {call: "Setgroups([]int{0})", fn: func() error { return syscall.Setgroups([]int{0}) }, filter: "Groups:", expect: "\t0"}, +- + {call: "Setregid(101,0)", fn: func() error { return syscall.Setregid(101, 0) }, filter: "Gid:", expect: "\t101\t0\t0\t0"}, + {call: "Setregid(0,102)", fn: func() error { return syscall.Setregid(0, 102) }, filter: "Gid:", expect: "\t0\t102\t102\t102"}, + {call: "Setregid(0,0)", fn: func() error { return syscall.Setregid(0, 0) }, filter: "Gid:", expect: "\t0\t0\t0\t0"}, diff --git a/srcpkgs/go/patches/fix-tests.patch b/srcpkgs/go/patches/fix-tests.patch new file mode 100644 index 000000000000..c93415611413 --- /dev/null +++ b/srcpkgs/go/patches/fix-tests.patch @@ -0,0 +1,150 @@ +Inside user namespaces, if GID == OVERFLOWGID (65534), then chown won't work. +https://github.com/golang/go/issues/42525 + +--- a/go/src/os/os_unix_test.go ++++ b/go/src/os/os_unix_test.go +@@ -39,144 +39,6 @@ func checkUidGid(t *testing.T, path string, uid, gid int) { + } + } + +-func TestChown(t *testing.T) { +- // Use TempDir() to make sure we're on a local file system, +- // so that the group ids returned by Getgroups will be allowed +- // on the file. On NFS, the Getgroups groups are +- // basically useless. +- f := newFile("TestChown", t) +- defer Remove(f.Name()) +- defer f.Close() +- dir, err := f.Stat() +- if err != nil { +- t.Fatalf("stat %s: %s", f.Name(), err) +- } +- +- // Can't change uid unless root, but can try +- // changing the group id. First try our current group. +- gid := Getgid() +- t.Log("gid:", gid) +- if err = Chown(f.Name(), -1, gid); err != nil { +- t.Fatalf("chown %s -1 %d: %s", f.Name(), gid, err) +- } +- sys := dir.Sys().(*syscall.Stat_t) +- checkUidGid(t, f.Name(), int(sys.Uid), gid) +- +- // Then try all the auxiliary groups. +- groups, err := Getgroups() +- if err != nil { +- t.Fatalf("getgroups: %s", err) +- } +- t.Log("groups: ", groups) +- for _, g := range groups { +- if err = Chown(f.Name(), -1, g); err != nil { +- t.Fatalf("chown %s -1 %d: %s", f.Name(), g, err) +- } +- checkUidGid(t, f.Name(), int(sys.Uid), g) +- +- // change back to gid to test fd.Chown +- if err = f.Chown(-1, gid); err != nil { +- t.Fatalf("fchown %s -1 %d: %s", f.Name(), gid, err) +- } +- checkUidGid(t, f.Name(), int(sys.Uid), gid) +- } +-} +- +-func TestFileChown(t *testing.T) { +- // Use TempDir() to make sure we're on a local file system, +- // so that the group ids returned by Getgroups will be allowed +- // on the file. On NFS, the Getgroups groups are +- // basically useless. +- f := newFile("TestFileChown", t) +- defer Remove(f.Name()) +- defer f.Close() +- dir, err := f.Stat() +- if err != nil { +- t.Fatalf("stat %s: %s", f.Name(), err) +- } +- +- // Can't change uid unless root, but can try +- // changing the group id. First try our current group. +- gid := Getgid() +- t.Log("gid:", gid) +- if err = f.Chown(-1, gid); err != nil { +- t.Fatalf("fchown %s -1 %d: %s", f.Name(), gid, err) +- } +- sys := dir.Sys().(*syscall.Stat_t) +- checkUidGid(t, f.Name(), int(sys.Uid), gid) +- +- // Then try all the auxiliary groups. +- groups, err := Getgroups() +- if err != nil { +- t.Fatalf("getgroups: %s", err) +- } +- t.Log("groups: ", groups) +- for _, g := range groups { +- if err = f.Chown(-1, g); err != nil { +- t.Fatalf("fchown %s -1 %d: %s", f.Name(), g, err) +- } +- checkUidGid(t, f.Name(), int(sys.Uid), g) +- +- // change back to gid to test fd.Chown +- if err = f.Chown(-1, gid); err != nil { +- t.Fatalf("fchown %s -1 %d: %s", f.Name(), gid, err) +- } +- checkUidGid(t, f.Name(), int(sys.Uid), gid) +- } +-} +- +-func TestLchown(t *testing.T) { +- // Use TempDir() to make sure we're on a local file system, +- // so that the group ids returned by Getgroups will be allowed +- // on the file. On NFS, the Getgroups groups are +- // basically useless. +- f := newFile("TestLchown", t) +- defer Remove(f.Name()) +- defer f.Close() +- dir, err := f.Stat() +- if err != nil { +- t.Fatalf("stat %s: %s", f.Name(), err) +- } +- +- linkname := f.Name() + "2" +- if err := Symlink(f.Name(), linkname); err != nil { +- if runtime.GOOS == "android" && IsPermission(err) { +- t.Skip("skipping test on Android; permission error creating symlink") +- } +- t.Fatalf("link %s -> %s: %v", f.Name(), linkname, err) +- } +- defer Remove(linkname) +- +- // Can't change uid unless root, but can try +- // changing the group id. First try our current group. +- gid := Getgid() +- t.Log("gid:", gid) +- if err = Lchown(linkname, -1, gid); err != nil { +- if err, ok := err.(*PathError); ok && err.Err == syscall.ENOSYS { +- t.Skip("lchown is unavailable") +- } +- t.Fatalf("lchown %s -1 %d: %s", linkname, gid, err) +- } +- sys := dir.Sys().(*syscall.Stat_t) +- checkUidGid(t, linkname, int(sys.Uid), gid) +- +- // Then try all the auxiliary groups. +- groups, err := Getgroups() +- if err != nil { +- t.Fatalf("getgroups: %s", err) +- } +- t.Log("groups: ", groups) +- for _, g := range groups { +- if err = Lchown(linkname, -1, g); err != nil { +- t.Fatalf("lchown %s -1 %d: %s", linkname, g, err) +- } +- checkUidGid(t, linkname, int(sys.Uid), g) +- +- // Check that link target's gid is unchanged. +- checkUidGid(t, f.Name(), int(sys.Uid), int(sys.Gid)) +- } +-} +- + // Issue 16919: Readdir must return a non-empty slice or an error. + func TestReaddirRemoveRace(t *testing.T) { + oldStat := *LstatP diff --git a/srcpkgs/go/template b/srcpkgs/go/template index 2db64b795ed8..a5fce0f153b6 100644 --- a/srcpkgs/go/template +++ b/srcpkgs/go/template @@ -1,17 +1,18 @@ # Template file for 'go' pkgname=go -version=1.18.3 +version=1.19 revision=1 create_wrksrc=yes build_wrksrc=go hostmakedepends="go1.12-bootstrap" +checkdepends="iana-etc clang gcc-fortran" short_desc="Go Programming Language" maintainer="Michael Aldridge <maldridge@voidlinux.org>" license="BSD-3-Clause" homepage="https://go.dev/" changelog="https://go.dev/doc/devel/release.html" distfiles="https://go.dev/dl/go${version}.src.tar.gz" -checksum=0012386ddcbb5f3350e407c679923811dbd283fcdc421724931614a842ecbc2d +checksum=9419cc70dc5a2523f29a77053cafff658ed21ef3561d9b6b020280ebceab28b9 nostrip=yes noverifyrdeps=yes @@ -31,11 +32,24 @@ if [ "$CROSS_BUILD" ]; then fi fi +# Workaround for go-1.19 compilation error on i686 +# runtime/cgo(.text): unknown symbol __stack_chk_fail_local in pcrel +if [ "$XBPS_MACHINE" = i686 ]; then + export CGO_CFLAGS="-fno-stack-protector" +fi + +post_extract() { + if [ "$(df . --output=fstype | tail -1)" = zfs ]; then + # https://github.com/golang/go/issues/39905 + rm -v go/src/cmd/link/internal/ld/fallocate_test.go + fi +} + do_build() { unset GCC CC CXX LD CFLAGS # FIXME: work around leaking go build-style vars when built as a # dependency - unset CGO_CXXFLAGS CGO_CFLAGS CGO_ENABLED + unset CGO_CXXFLAGS CGO_ENABLED # CGO_CFLAGS export GOROOT_BOOTSTRAP="/usr/lib/go1.12" export GOROOT=$PWD @@ -47,6 +61,15 @@ do_build() { bash make.bash -v } +do_check() { + if [ "$XBPS_LIBC" = musl ]; then + # https://github.com/golang/go/issues/39857 + ./bin/go tool dist test -v -run "!^cgo_test$" + else + ./bin/go tool dist test -v + fi +} + do_install() { local bindir ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PR REVIEW] go: update to 1.19, add tests 2022-08-07 5:03 [PR PATCH] go: update to 1.19, add tests subnut ` (3 preceding siblings ...) 2022-08-08 2:35 ` [PR PATCH] [Updated] " subnut @ 2022-08-08 2:35 ` subnut 2022-08-08 2:36 ` subnut 2022-08-08 3:03 ` [PR PATCH] [Merged]: " the-maldridge 6 siblings, 0 replies; 8+ messages in thread From: subnut @ 2022-08-08 2:35 UTC (permalink / raw) To: ml [-- Attachment #1: Type: text/plain, Size: 150 bytes --] New review comment by subnut on void-packages repository https://github.com/void-linux/void-packages/pull/38510#discussion_r939777883 Comment: Done ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: go: update to 1.19, add tests 2022-08-07 5:03 [PR PATCH] go: update to 1.19, add tests subnut ` (4 preceding siblings ...) 2022-08-08 2:35 ` [PR REVIEW] " subnut @ 2022-08-08 2:36 ` subnut 2022-08-08 3:03 ` [PR PATCH] [Merged]: " the-maldridge 6 siblings, 0 replies; 8+ messages in thread From: subnut @ 2022-08-08 2:36 UTC (permalink / raw) To: ml [-- Attachment #1: Type: text/plain, Size: 161 bytes --] New comment by subnut on void-packages repository https://github.com/void-linux/void-packages/pull/38510#issuecomment-1207588263 Comment: @the-maldridge Done. ^ permalink raw reply [flat|nested] 8+ messages in thread
* Re: [PR PATCH] [Merged]: go: update to 1.19, add tests 2022-08-07 5:03 [PR PATCH] go: update to 1.19, add tests subnut ` (5 preceding siblings ...) 2022-08-08 2:36 ` subnut @ 2022-08-08 3:03 ` the-maldridge 6 siblings, 0 replies; 8+ messages in thread From: the-maldridge @ 2022-08-08 3:03 UTC (permalink / raw) To: ml [-- Attachment #1: Type: text/plain, Size: 1143 bytes --] There's a merged pull request on the void-packages repository go: update to 1.19, add tests https://github.com/void-linux/void-packages/pull/38510 Description: Supersedes #38474 Supersedes #38385 <!-- Uncomment relevant sections and delete options which are not applicable --> #### Testing the changes - I tested the changes in this PR: **YES** <!-- #### New package - This new package conforms to the [quality requirements](https://github.com/void-linux/void-packages/blob/master/Manual.md#quality-requirements): **YES**|**NO** --> <!-- Note: If the build is likely to take more than 2 hours, please add ci skip tag as described in https://github.com/void-linux/void-packages/blob/master/CONTRIBUTING.md#continuous-integration and test at least one native build and, if supported, at least one cross build. Ignore this section if this PR is not skipping CI. --> #### Local build testing - I built this PR locally for my native architecture, (x86_64-glibc) - I built this PR locally for these architectures (if supported. mark crossbuilds): - i686-glibc <!-- - aarch64-musl - armv7l - armv6l-musl --> ^ permalink raw reply [flat|nested] 8+ messages in thread
end of thread, other threads:[~2022-08-08 3:03 UTC | newest] Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2022-08-07 5:03 [PR PATCH] go: update to 1.19, add tests subnut 2022-08-07 20:49 ` paper42 2022-08-07 20:53 ` [PR REVIEW] " paper42 2022-08-08 1:14 ` the-maldridge 2022-08-08 2:35 ` [PR PATCH] [Updated] " subnut 2022-08-08 2:35 ` [PR REVIEW] " subnut 2022-08-08 2:36 ` subnut 2022-08-08 3:03 ` [PR PATCH] [Merged]: " the-maldridge
This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for NNTP newsgroup(s).