Marius Bakke writes: > Gábor Boskovits writes: > >> It seems, that we have a breakage in current core-updates. m4, gettext, and >> at least a few other packages fail to build. > > Hello! > > The problem is that the glibc version string is used a couple of places > to determine where locales are found. > > The attached patch fixes it, though I'm not sure if it's the best > approach. Thoughts? Actually, the patch below is not a complete fix. It worked for m4, but some other packages now fail like this: --8<---------------cut here---------------start------------->8--- @ build-started /gnu/store/q0fadqzsg969jz8v11r9j2a07x3h2sl4-perl-5.26.1.tar.xz.drv - x86_64-linux /var/log/guix/drvs/q0//fadqzsg969jz8v11r9j2a07x3h2sl4-perl-5.26.1.tar.xz.drv.bz2 Backtrace: 2 (primitive-load "/gnu/store/xjb3g9spv30arffi1296qwdaam4?") In ice-9/eval.scm: 619:8 1 (_ #f) In unknown file: 0 (setlocale 6 "en_US.utf8") ERROR: In procedure setlocale: ERROR: In procedure setlocale: Invalid argument builder for `/gnu/store/q0fadqzsg969jz8v11r9j2a07x3h2sl4-perl-5.26.1.tar.xz.drv' failed with exit code 1 --8<---------------cut here---------------end--------------->8--- Not sure where it's from yet. > > From 41677631be815d58c36052de7b54d297ad496ec1 Mon Sep 17 00:00:00 2001 > From: Marius Bakke > Date: Sun, 3 Dec 2017 02:32:16 +0100 > Subject: [PATCH] gnu: glibc: Don't use full version string in locale path. > > This is a follow-up to commit ee3ebf1a357bd4eb36a2fa1790a7b549cffb305a. > Fixes . > > * gnu/packages/base.scm (glibc/linux)[version]: Change to 2.26.91-gaaa2eb83b8. > [source](uri): Adjust accordingly. > [arguments]: Use VERSION-MAJOR+MINOR for locales path. > (glibc-locales, glibc-utf8-locales): Likewise. > * guix/profiles.scm (ca-certificate-bundle, profile-derivation): Likewise. > --- > gnu/packages/base.scm | 15 ++++++++++----- > guix/profiles.scm | 6 ++++-- > 2 files changed, 14 insertions(+), 7 deletions(-) > > diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm > index c8fd8624a..8190a38ed 100644 > --- a/gnu/packages/base.scm > +++ b/gnu/packages/base.scm > @@ -523,11 +523,15 @@ store.") > ;; archive can be generated by checking out the commit ID and running: > ;; git archive --prefix=$(git describe)/ HEAD | xz -9 > $(git describe).tar.xz > ;; See for details. > - (version "2.26-91-gaaa2eb83b8") > + ;; > + ;; Note: Always use a dot after the minor version since various places rely > + ;; on "version-major+minor" to determine where locales are found. > + (version "2.26.91-gaaa2eb83b8") > (source (origin > (method url-fetch) > (uri (string-append "https://alpha.gnu.org/gnu/guix/mirror/" > - "glibc-" version ".tar.xz")) > + "glibc-" (version-major+minor version) "-" > + (caddr (string-split version #\.)) ".tar.xz")) > (sha256 > (base32 > "1zwz6d0x3ndd0hgqp17fx71miyjvn4dgkl1nzhaz3mbcqxzrprhk")) > @@ -585,7 +589,7 @@ store.") > ;; `--localedir' is not honored, so work around it. > ;; See . > (string-append "libc_cv_complocaledir=/run/current-system/locale/" > - ,version) > + ,(version-major+minor version)) > > (string-append "--with-headers=" > (assoc-ref ,(if (%current-target-system) > @@ -955,7 +959,8 @@ the 'share/locale' sub-directory of this package.") > (list (string-append "libc_cv_complocaledir=" > (assoc-ref %outputs "out") > "/lib/locale/" > - ,(package-version glibc)))))))))) > + ,(version-major+minor > + (package-version glibc))))))))))) > > (define-public glibc-utf8-locales > (package > @@ -973,7 +978,7 @@ the 'share/locale' sub-directory of this package.") > (gzip (assoc-ref %build-inputs "gzip")) > (out (assoc-ref %outputs "out")) > (localedir (string-append out "/lib/locale/" > - ,version))) > + ,(version-major+minor version)))) > ;; 'localedef' needs 'gzip'. > (setenv "PATH" (string-append libc "/bin:" gzip "/bin")) > > diff --git a/guix/profiles.scm b/guix/profiles.scm > index 0eb99f40d..51c330b32 100644 > --- a/guix/profiles.scm > +++ b/guix/profiles.scm > @@ -812,7 +812,8 @@ MANIFEST. Single-file bundles are required by programs such as Git and Lynx." > ;; install a UTF-8 locale. > (setenv "LOCPATH" > (string-append #+glibc-utf8-locales "/lib/locale/" > - #+(package-version glibc-utf8-locales))) > + #+(version-major+minor > + (package-version glibc-utf8-locales)))) > (setlocale LC_ALL "en_US.utf8") > > (match (append-map ca-files '#$(manifest-inputs manifest)) > @@ -1256,7 +1257,8 @@ are cross-built for TARGET." > #~(begin > (setenv "LOCPATH" > #$(file-append glibc-utf8-locales "/lib/locale/" > - (package-version glibc-utf8-locales))) > + (version-major+minor > + (package-version glibc-utf8-locales)))) > (setlocale LC_ALL "en_US.utf8"))) > > (define builder > -- > 2.15.1