Hello, Thanks for the report.
Malte Frank Gerdes <malte.f.ger...@gmail.com> writes: > Hi, > > The precompiled version of Hugo-extended was not able to find some > runtime dependencies: > libstdc++.so.6 => not found > libgcc_s.so.1 => not found In case you haven't discovered this in the past two years (oops), this is because Guix does not typically work with pre-compiled software that relies on system libraries being in /lib, since there is no system-wide /lib. > This seems like a version mismatch to me, so i built Hugo with the > following command: > go build --tags extended > > Now the error is (<HASH> = ypiv8dj4lkvsnm82s639h18l87frrh5g): > /gnu/store/<HASH>-gcc-6.5.0-lib/lib/libstdc++.so.6: version > `GLIBCXX_3.4.26' not found If I build hugo with gcc-toolchain@7 in my user profile, it works fine. However.... I can still repro this issue with gcc-toolchain@8+: $ go build --tags extended $ ./hugo --help ./hugo: /gnu/store/01b4w3m6mp55y531kyi1g8shh722kwqm-gcc-7.5.0-lib/lib/libstdc++.so.6: version `GLIBCXX_3.4.26' not found (required by ./hugo) ./hugo: /gnu/store/01b4w3m6mp55y531kyi1g8shh722kwqm-gcc-7.5.0-lib/lib/libstdc++.so.6: version `GLIBCXX_3.4.29' not found (required by ./hugo) This is because gcc 7's libraries are shadowing the newer gcc's libraries: $ readelf -d hugo | grep RUNPATH 0x000000000000001d (RUNPATH) Library runpath: [/gnu/store/01b4w3m6mp55y531kyi1g8shh722kwqm-gcc-7.5.0-lib/lib:/gnu/store/fa6wj5bxkj5ll1d7292a70knmyl7a0cr-glibc-2.31/lib:/gnu/store/3h7xd0d47a286b6r9qhz4ybi5iaxkfwi-gcc-11.1.0-lib/lib:/home/sarah/.guix-profile/lib:/gnu/store/3h7xd0d47a286b6r9qhz4ybi5iaxkfwi-gcc-11.1.0-lib/lib/gcc/x86_64-unknown-linux-gnu/11.1.0/../../..] If I use patchelf to remove the gcc 7 library dir from RUNPATH, hugo works fine. This is because Go is patched to unconditionally add a runpath to gcc 7's libraries but erroneously does not explicitly set CXX. (See also <https://issues.guix.gnu.org/39400>.) The following patch should explicitly set CXX for Go, so that it always uses the "system" version:
diff --git a/gnu/packages/golang.scm b/gnu/packages/golang.scm index 0318918a37..a27f57aa30 100644 --- a/gnu/packages/golang.scm +++ b/gnu/packages/golang.scm @@ -395,6 +395,7 @@ in the style of communicating sequential processes (@dfn{CSP}).") ;; FIXME: Some of the .a files are not bit-reproducible. (let* ((output (assoc-ref outputs "out"))) (setenv "CC" (which "gcc")) + (setenv "CXX" (which "g++")) (setenv "GOOS" "linux") (setenv "GOROOT" (dirname (getcwd))) (setenv "GOROOT_FINAL" output) @@ -577,6 +578,7 @@ in the style of communicating sequential processes (@dfn{CSP}).") (loader (string-append (assoc-ref inputs "libc") ,(glibc-dynamic-linker)))) (setenv "CC" (which "gcc")) + (setenv "CXX" (which "g++")) (setenv "GO_LDSO" loader) (setenv "GOOS" "linux") (setenv "GOROOT" (dirname (getcwd)))
Hope that helps, Sarah