* Ludovic Courtès <l...@gnu.org> [2016-01-14 07:08]: > Efraim Flashner <efr...@flashner.co.il> skribis: > >> It seems there's a lot of interest around getting Go packaged in Guix, so I >> figured I should post my work so far to the mailinglist. Currently go-1.4 >> does not have cgo enabled, the go binary keeps on trying to link against >> libgcc_s.so.1 (from gcc:lib) and can't find it in the RUNPATH. > > In GCC, we have a hack that automatically adds gcc:lib to the RUNPATH > (look for “libgcc_s” in gcc.scm.) I guess we need to do something > similar here.
Aha - ok, I've had the same problem! I've tried injecting it many ways and it doesn't work due to the intersection of libgcc_s and glibc. Efraim - can you successfully run programs that link against glibc? As in anything that uses os/user, net, etc? Running the tests as part of your build is a big way to pick up on this, I've added the following to my go-1.4.3 attempts in my build steps: ;; these all have specific file locations they look for ;; or in the case of exec_test resets the environment ;; before executing binaries they expect. (for-each delete-file '("src/net/multicast_test.go" "src/net/parse_test.go" "src/net/port_test.go" "src/os/exec/exec_test.go")) (substitute* "src/os/os_test.go" (("/bin/pwd") (which "pwd")) (("/usr/bin") (dirname (which "pwd"))) (("TestHostname") "areturn")) ;; Disable the unix socket test (substitute* "src/net/net_test.go" (("TestShutdownUnix") "areturn")) (substitute* "src/net/lookup_unix.go" (("/etc/protocols") (string-append iana "protocols"))) ;; ParseInLocation fails the test (substitute* "src/time/format_test.go" (("TestParseInSydney") "areturn")) (substitute* "src/time/zoneinfo_unix.go" (("/usr/share/zoneinfo/") tz)) ;; exec.Command on os.Args[0] from go run for whatever ;; reason doesn't work right now. libgcc_s.so link ;; missing crap occurs here as well, this may require ;; that 6l-wrapper for go run to work. (substitute* "src/syscall/syscall_unix_test.go" (("TestPassFD") "areturn")) (substitute* "src/cmd/6l/asm.c" (("char linuxdynld.*$") (string-append "char linuxdynld[] = \"" ld-linux "\";\n"))) I'll be trying this later with your packages. I'd really hesitate on packaging this without runnning the tests, as there are lots of ugly corner cases in go's build system. // codemac