From a5824c2495f5a547499ab200cd5b270b38f571d6 Mon Sep 17 00:00:00 2001 Message-Id: From: Sarah Morgensen Date: Thu, 9 Sep 2021 18:23:10 -0700 Subject: [PATCH core-updates] gnu: go-1.4: Fix running with qemu-aarch64. Backport the fix for running go with qemu-aarch64. * gnu/packages/patches/go-1.4-fix-running-with-qemu.patch: New file. * gnu/local.mk (dist_patch_DATA): Register it. * gnu/packages/golang.scm (go-1.4)[origin]: Apply patch. --- This might fix #49921, but I can't test it as there are a number of issues preventing go-1.4 from compiling on qemu-aarch64. It builds fine on x86_64, so it didn't break anything there. -- Sarah gnu/local.mk | 1 + gnu/packages/golang.scm | 4 +- .../go-1.4-fix-running-with-qemu.patch | 38 +++++++++++++++++++ 3 files changed, 42 insertions(+), 1 deletion(-) create mode 100644 gnu/packages/patches/go-1.4-fix-running-with-qemu.patch diff --git a/gnu/local.mk b/gnu/local.mk index 20f0b8f081..39e17bb3bc 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -1144,6 +1144,7 @@ dist_patch_DATA = \ %D%/packages/patches/gobject-introspection-absolute-shlib-path.patch \ %D%/packages/patches/gobject-introspection-cc.patch \ %D%/packages/patches/gobject-introspection-girepository.patch \ + %D%/packages/patches/go-1.4-fix-running-with-qemu.patch \ %D%/packages/patches/go-fix-script-tests.patch \ %D%/packages/patches/go-skip-gc-test.patch \ %D%/packages/patches/gpm-glibc-2.26.patch \ diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm index d3ef39a2e6..33f3120a09 100644 --- a/gnu/packages/golang.scm +++ b/gnu/packages/golang.scm @@ -1035,7 +1035,9 @@ your Go binary to be later served from an http.FileSystem.") name version ".tar.gz")) (sha256 (base32 - "0liybk5z00hizsb5ypkbhqcawnwwa6mkwgvjjg4y3jm3ndg5pzzl")))) + "0liybk5z00hizsb5ypkbhqcawnwwa6mkwgvjjg4y3jm3ndg5pzzl")) + (patches + (search-patches "go-1.4-fix-running-with-qemu.patch")))) (build-system gnu-build-system) (outputs '("out" "doc" diff --git a/gnu/packages/patches/go-1.4-fix-running-with-qemu.patch b/gnu/packages/patches/go-1.4-fix-running-with-qemu.patch new file mode 100644 index 0000000000..52914c71a5 --- /dev/null +++ b/gnu/packages/patches/go-1.4-fix-running-with-qemu.patch @@ -0,0 +1,38 @@ +Backport from upstream: https://github/golang/go/commit/2673f9ed + +Original header: + +From 2673f9ed23348c634f6331ee589d489e4d9c7a9b Mon Sep 17 00:00:00 2001 +From: Austin Clements +Date: Wed, 12 Jul 2017 10:12:50 -0600 +Subject: [PATCH] runtime: pass CLONE_SYSVSEM to clone + +SysV semaphore undo lists should be shared by threads, just like +several other resources listed in cloneFlags. Currently we don't do +this, but it probably doesn't affect anything because 1) probably +nobody uses SysV semaphores from Go and 2) Go-created threads never +exit until the process does. Beyond being the right thing to do, +user-level QEMU requires this flag because it depends on glibc to +create new threads and glibc uses this flag. + +Fixes #20763. + +--- + src/runtime/os_linux.c | 1 + + 1 file changed, 1 insertion(+) + +diff --git a/src/runtime/os_linux.c b/src/runtime/os_linux.c +index 0d8ffc9..573be7c 100644 +--- a/src/runtime/os_linux.c ++++ b/src/runtime/os_linux.c +@@ -150,6 +150,7 @@ runtime·newosproc(M *mp, void *stk) + | CLONE_FS /* share cwd, etc */ + | CLONE_FILES /* share fd table */ + | CLONE_SIGHAND /* share sig handler table */ ++ | CLONE_SYSVSEM /* share SysV semaphore undo lists (see issue #20763) */ + | CLONE_THREAD /* revisit - okay for now */ + ; + +-- +2.31.1 + base-commit: 22f7d4bce1e694b7ac38e62410d76a6d46d96c5d -- 2.33.0