Merge branch 'core-updates'
commit
adc90e0eac
|
@ -1,5 +1,5 @@
|
||||||
;;; GNU Guix --- Functional package management for GNU
|
;;; GNU Guix --- Functional package management for GNU
|
||||||
;;; Copyright © 2014 Ludovic Courtès <ludo@gnu.org>
|
;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -29,7 +29,7 @@
|
||||||
(operating-system
|
(operating-system
|
||||||
(host-name "gnu")
|
(host-name "gnu")
|
||||||
(timezone "Europe/Paris")
|
(timezone "Europe/Paris")
|
||||||
(locale "en_US.UTF-8")
|
(locale "en_US.utf8")
|
||||||
|
|
||||||
(bootloader (grub-configuration
|
(bootloader (grub-configuration
|
||||||
(device "/dev/sda")))
|
(device "/dev/sda")))
|
||||||
|
|
|
@ -940,24 +940,24 @@ daemons on the same machine.
|
||||||
@node Application Setup
|
@node Application Setup
|
||||||
@section Application Setup
|
@section Application Setup
|
||||||
|
|
||||||
When using Guix on top of GNU/Linux distribution other than GuixSD, a
|
When using Guix on top of GNU/Linux distribution other than GuixSD---a
|
||||||
few additional steps are needed to get everything in place. Here are
|
so-called @dfn{foreign distro}---a few additional steps are needed to
|
||||||
some of them.
|
get everything in place. Here are some of them.
|
||||||
|
|
||||||
@subsection Locales
|
@subsection Locales
|
||||||
|
|
||||||
@anchor{locales-and-locpath}
|
@anchor{locales-and-locpath}
|
||||||
@cindex locales, when not on GuixSD
|
@cindex locales, when not on GuixSD
|
||||||
@vindex LOCPATH
|
@vindex LOCPATH
|
||||||
|
@vindex GUIX_LOCPATH
|
||||||
Packages installed @i{via} Guix will not use the host system's locale
|
Packages installed @i{via} Guix will not use the host system's locale
|
||||||
data. Instead, you must first install one of the locale packages
|
data. Instead, you must first install one of the locale packages
|
||||||
available with Guix and then define the @code{LOCPATH} environment
|
available with Guix and then define the @code{GUIX_LOCPATH} environment
|
||||||
variable (@pxref{Locale Names, @code{LOCPATH},, libc, The GNU C Library
|
variable:
|
||||||
Reference Manual}):
|
|
||||||
|
|
||||||
@example
|
@example
|
||||||
$ guix package -i glibc-locales
|
$ guix package -i glibc-locales
|
||||||
$ export LOCPATH=$HOME/.guix-profile/lib/locale
|
$ export GUIX_LOCPATH=$HOME/.guix-profile/lib/locale
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
Note that the @code{glibc-locales} package contains data for all the
|
Note that the @code{glibc-locales} package contains data for all the
|
||||||
|
@ -965,6 +965,28 @@ locales supported by the GNU@tie{}libc and weighs in at around
|
||||||
110@tie{}MiB. Alternately, the @code{glibc-utf8-locales} is smaller but
|
110@tie{}MiB. Alternately, the @code{glibc-utf8-locales} is smaller but
|
||||||
limited to a few UTF-8 locales.
|
limited to a few UTF-8 locales.
|
||||||
|
|
||||||
|
The @code{GUIX_LOCPATH} variable plays a role similar to @code{LOCPATH}
|
||||||
|
(@pxref{Locale Names, @code{LOCPATH},, libc, The GNU C Library Reference
|
||||||
|
Manual}). There are two important differences though:
|
||||||
|
|
||||||
|
@enumerate
|
||||||
|
@item
|
||||||
|
@code{GUIX_LOCPATH} is honored only by Guix's libc, and not by the libc
|
||||||
|
provided by foreign distros. Thus, using @code{GUIX_LOCPATH} allows you
|
||||||
|
to make sure the the foreign distro's programs will not end up loading
|
||||||
|
incompatible locale data.
|
||||||
|
|
||||||
|
@item
|
||||||
|
libc suffixes each entry of @code{GUIX_LOCPATH} with @code{/X.Y}, where
|
||||||
|
@code{X.Y} is the libc version---e.g., @code{2.22}. This means that,
|
||||||
|
should your Guix profile contain a mixture of programs linked against
|
||||||
|
different libc version, each libc version will only try to load locale
|
||||||
|
data in the right format.
|
||||||
|
@end enumerate
|
||||||
|
|
||||||
|
This is important because the locale data format used by different libc
|
||||||
|
versions may be incompatible.
|
||||||
|
|
||||||
@subsection X11 Fonts
|
@subsection X11 Fonts
|
||||||
|
|
||||||
The majority of graphical applications use Fontconfig to locate and
|
The majority of graphical applications use Fontconfig to locate and
|
||||||
|
@ -5641,9 +5663,10 @@ list only the locales that are actually used, as in:
|
||||||
|
|
||||||
@vindex LOCPATH
|
@vindex LOCPATH
|
||||||
The compiled locale definitions are available at
|
The compiled locale definitions are available at
|
||||||
@file{/run/current-system/locale}, which is the default location where
|
@file{/run/current-system/locale/X.Y}, where @code{X.Y} is the libc
|
||||||
the GNU@tie{}libc looks for locale data. This can be overridden using
|
version, which is the default location where the GNU@tie{}libc provided
|
||||||
the @code{LOCPATH} environment variable (@pxref{locales-and-locpath,
|
by Guix looks for locale data. This can be overridden using the
|
||||||
|
@code{LOCPATH} environment variable (@pxref{locales-and-locpath,
|
||||||
@code{LOCPATH} and locale packages}).
|
@code{LOCPATH} and locale packages}).
|
||||||
|
|
||||||
The @code{locale-definition} form is provided by the @code{(gnu system
|
The @code{locale-definition} form is provided by the @code{(gnu system
|
||||||
|
|
|
@ -419,7 +419,6 @@ dist_patch_DATA = \
|
||||||
gnu/packages/patches/clang-libc-search-path.patch \
|
gnu/packages/patches/clang-libc-search-path.patch \
|
||||||
gnu/packages/patches/clucene-pkgconfig.patch \
|
gnu/packages/patches/clucene-pkgconfig.patch \
|
||||||
gnu/packages/patches/cmake-fix-tests.patch \
|
gnu/packages/patches/cmake-fix-tests.patch \
|
||||||
gnu/packages/patches/coreutils-racy-tail-test.patch \
|
|
||||||
gnu/packages/patches/cpio-gets-undeclared.patch \
|
gnu/packages/patches/cpio-gets-undeclared.patch \
|
||||||
gnu/packages/patches/cpufrequtils-fix-aclocal.patch \
|
gnu/packages/patches/cpufrequtils-fix-aclocal.patch \
|
||||||
gnu/packages/patches/crda-optional-gcrypt.patch \
|
gnu/packages/patches/crda-optional-gcrypt.patch \
|
||||||
|
@ -473,8 +472,11 @@ dist_patch_DATA = \
|
||||||
gnu/packages/patches/glibc-bootstrap-system.patch \
|
gnu/packages/patches/glibc-bootstrap-system.patch \
|
||||||
gnu/packages/patches/glibc-ldd-x86_64.patch \
|
gnu/packages/patches/glibc-ldd-x86_64.patch \
|
||||||
gnu/packages/patches/glibc-locales.patch \
|
gnu/packages/patches/glibc-locales.patch \
|
||||||
|
gnu/packages/patches/glibc-locale-incompatibility.patch \
|
||||||
gnu/packages/patches/glibc-o-largefile.patch \
|
gnu/packages/patches/glibc-o-largefile.patch \
|
||||||
|
gnu/packages/patches/glibc-versioned-locpath.patch \
|
||||||
gnu/packages/patches/gmp-arm-asm-nothumb.patch \
|
gnu/packages/patches/gmp-arm-asm-nothumb.patch \
|
||||||
|
gnu/packages/patches/gmp-faulty-test.patch \
|
||||||
gnu/packages/patches/gnucash-price-quotes-perl.patch \
|
gnu/packages/patches/gnucash-price-quotes-perl.patch \
|
||||||
gnu/packages/patches/gnutls-doc-fix.patch \
|
gnu/packages/patches/gnutls-doc-fix.patch \
|
||||||
gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch \
|
gnu/packages/patches/gobject-introspection-absolute-shlib-path.patch \
|
||||||
|
@ -605,7 +607,6 @@ dist_patch_DATA = \
|
||||||
gnu/packages/patches/perl-tk-x11-discover.patch \
|
gnu/packages/patches/perl-tk-x11-discover.patch \
|
||||||
gnu/packages/patches/pidgin-add-search-path.patch \
|
gnu/packages/patches/pidgin-add-search-path.patch \
|
||||||
gnu/packages/patches/pingus-sdl-libs-config.patch \
|
gnu/packages/patches/pingus-sdl-libs-config.patch \
|
||||||
gnu/packages/patches/pixman-pointer-arithmetic.patch \
|
|
||||||
gnu/packages/patches/plotutils-libpng-jmpbuf.patch \
|
gnu/packages/patches/plotutils-libpng-jmpbuf.patch \
|
||||||
gnu/packages/patches/polkit-drop-test.patch \
|
gnu/packages/patches/polkit-drop-test.patch \
|
||||||
gnu/packages/patches/portaudio-audacity-compat.patch \
|
gnu/packages/patches/portaudio-audacity-compat.patch \
|
||||||
|
@ -619,6 +620,8 @@ dist_patch_DATA = \
|
||||||
gnu/packages/patches/pybugz-encode-error.patch \
|
gnu/packages/patches/pybugz-encode-error.patch \
|
||||||
gnu/packages/patches/pybugz-stty.patch \
|
gnu/packages/patches/pybugz-stty.patch \
|
||||||
gnu/packages/patches/pyqt-configure.patch \
|
gnu/packages/patches/pyqt-configure.patch \
|
||||||
|
gnu/packages/patches/python-2.7-search-paths.patch \
|
||||||
|
gnu/packages/patches/python-3-search-paths.patch \
|
||||||
gnu/packages/patches/python-disable-ssl-test.patch \
|
gnu/packages/patches/python-disable-ssl-test.patch \
|
||||||
gnu/packages/patches/python-fix-tests.patch \
|
gnu/packages/patches/python-fix-tests.patch \
|
||||||
gnu/packages/patches/python2-rdflib-drop-sparqlwrapper.patch \
|
gnu/packages/patches/python2-rdflib-drop-sparqlwrapper.patch \
|
||||||
|
|
|
@ -251,7 +251,14 @@ used to apply commands with arbitrarily long arguments.")
|
||||||
(base32
|
(base32
|
||||||
"0w11jw3fb5sslf0f72kxy7llxgk1ia3a6bcw0c9kmvxrlj355mx2"))
|
"0w11jw3fb5sslf0f72kxy7llxgk1ia3a6bcw0c9kmvxrlj355mx2"))
|
||||||
(patches
|
(patches
|
||||||
(list (search-patch "coreutils-racy-tail-test.patch")))))
|
(list (origin
|
||||||
|
(method url-fetch)
|
||||||
|
(uri "http://git.savannah.gnu.org/cgit/coreutils.git/\
|
||||||
|
patch/?id=3ba68f9e64fa2eb8af22d510437a0c6441feb5e0")
|
||||||
|
(sha256
|
||||||
|
(base32
|
||||||
|
"1dnlszhc8lihhg801i9sz896mlrgfsjfcz62636prb27k5hmixqz"))
|
||||||
|
(file-name "coreutils-tail-inotify-race.patch"))))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(inputs `(("acl" ,acl) ; TODO: add SELinux
|
(inputs `(("acl" ,acl) ; TODO: add SELinux
|
||||||
("gmp" ,gmp) ;bignums in 'expr', yay!
|
("gmp" ,gmp) ;bignums in 'expr', yay!
|
||||||
|
@ -476,6 +483,8 @@ store.")
|
||||||
(modules '((guix build utils)))
|
(modules '((guix build utils)))
|
||||||
(patches (map search-patch
|
(patches (map search-patch
|
||||||
'("glibc-ldd-x86_64.patch"
|
'("glibc-ldd-x86_64.patch"
|
||||||
|
"glibc-locale-incompatibility.patch"
|
||||||
|
"glibc-versioned-locpath.patch"
|
||||||
"glibc-o-largefile.patch")))))
|
"glibc-o-largefile.patch")))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
|
|
||||||
|
@ -509,12 +518,16 @@ store.")
|
||||||
;; Set the default locale path. In practice, $LOCPATH may be
|
;; Set the default locale path. In practice, $LOCPATH may be
|
||||||
;; defined to point whatever locales users want. However, setuid
|
;; defined to point whatever locales users want. However, setuid
|
||||||
;; binaries don't honor $LOCPATH, so they'll instead look into
|
;; binaries don't honor $LOCPATH, so they'll instead look into
|
||||||
;; $libc_cv_localedir; we choose /run/current-system/locale, with
|
;; $libc_cv_localedir; we choose /run/current-system/locale/X.Y,
|
||||||
;; the idea that it is going to be populated by the sysadmin.
|
;; with the idea that it is going to be populated by the sysadmin.
|
||||||
|
;; The "X.Y" sub-directory is because locale data formats are
|
||||||
|
;; incompatible across libc versions; see
|
||||||
|
;; <https://lists.gnu.org/archive/html/guix-devel/2015-08/msg00737.html>.
|
||||||
;;
|
;;
|
||||||
;; `--localedir' is not honored, so work around it.
|
;; `--localedir' is not honored, so work around it.
|
||||||
;; See <http://sourceware.org/ml/libc-alpha/2013-03/msg00093.html>.
|
;; See <http://sourceware.org/ml/libc-alpha/2013-03/msg00093.html>.
|
||||||
(string-append "libc_cv_localedir=/run/current-system/locale")
|
(string-append "libc_cv_localedir=/run/current-system/locale/"
|
||||||
|
,version)
|
||||||
|
|
||||||
(string-append "--with-headers="
|
(string-append "--with-headers="
|
||||||
(assoc-ref %build-inputs "linux-headers")
|
(assoc-ref %build-inputs "linux-headers")
|
||||||
|
@ -602,9 +615,11 @@ store.")
|
||||||
|
|
||||||
(native-search-paths
|
(native-search-paths
|
||||||
;; Search path for packages that provide locale data. This is useful
|
;; Search path for packages that provide locale data. This is useful
|
||||||
;; primarily in build environments.
|
;; primarily in build environments. Use 'GUIX_LOCPATH' rather than
|
||||||
|
;; 'LOCPATH' to avoid interference with the host system's libc on foreign
|
||||||
|
;; distros.
|
||||||
(list (search-path-specification
|
(list (search-path-specification
|
||||||
(variable "LOCPATH")
|
(variable "GUIX_LOCPATH")
|
||||||
(files '("lib/locale")))))
|
(files '("lib/locale")))))
|
||||||
|
|
||||||
(synopsis "The GNU C Library")
|
(synopsis "The GNU C Library")
|
||||||
|
@ -645,10 +660,11 @@ the 'share/locale' sub-directory of this package.")
|
||||||
(alist-delete 'install ,phases)))
|
(alist-delete 'install ,phases)))
|
||||||
((#:configure-flags flags)
|
((#:configure-flags flags)
|
||||||
`(append ,flags
|
`(append ,flags
|
||||||
;; Use $(libdir)/locale as is the case by default.
|
;; Use $(libdir)/locale/X.Y as is the case by default.
|
||||||
(list (string-append "libc_cv_localedir="
|
(list (string-append "libc_cv_localedir="
|
||||||
(assoc-ref %outputs "out")
|
(assoc-ref %outputs "out")
|
||||||
"/lib/locale")))))))))
|
"/lib/locale/"
|
||||||
|
,(package-version glibc))))))))))
|
||||||
|
|
||||||
(define-public glibc-utf8-locales
|
(define-public glibc-utf8-locales
|
||||||
(package
|
(package
|
||||||
|
@ -657,7 +673,7 @@ the 'share/locale' sub-directory of this package.")
|
||||||
(source #f)
|
(source #f)
|
||||||
(build-system trivial-build-system)
|
(build-system trivial-build-system)
|
||||||
(arguments
|
(arguments
|
||||||
'(#:modules ((guix build utils))
|
`(#:modules ((guix build utils))
|
||||||
#:builder (begin
|
#:builder (begin
|
||||||
(use-modules (srfi srfi-1)
|
(use-modules (srfi srfi-1)
|
||||||
(guix build utils))
|
(guix build utils))
|
||||||
|
@ -665,18 +681,29 @@ the 'share/locale' sub-directory of this package.")
|
||||||
(let* ((libc (assoc-ref %build-inputs "glibc"))
|
(let* ((libc (assoc-ref %build-inputs "glibc"))
|
||||||
(gzip (assoc-ref %build-inputs "gzip"))
|
(gzip (assoc-ref %build-inputs "gzip"))
|
||||||
(out (assoc-ref %outputs "out"))
|
(out (assoc-ref %outputs "out"))
|
||||||
(localedir (string-append out "/lib/locale")))
|
(localedir (string-append out "/lib/locale/"
|
||||||
|
,version)))
|
||||||
;; 'localedef' needs 'gzip'.
|
;; 'localedef' needs 'gzip'.
|
||||||
(setenv "PATH" (string-append libc "/bin:" gzip "/bin"))
|
(setenv "PATH" (string-append libc "/bin:" gzip "/bin"))
|
||||||
|
|
||||||
(mkdir-p localedir)
|
(mkdir-p localedir)
|
||||||
(every (lambda (locale)
|
(every (lambda (locale)
|
||||||
(zero? (system* "localedef" "--no-archive"
|
(define file
|
||||||
"--prefix" localedir "-i" locale
|
;; Use the "normalized codeset" by
|
||||||
"-f" "UTF-8"
|
;; default--e.g., "en_US.utf8".
|
||||||
|
(string-append localedir "/" locale ".utf8"))
|
||||||
|
|
||||||
|
(and (zero? (system* "localedef" "--no-archive"
|
||||||
|
"--prefix" localedir
|
||||||
|
"-i" locale
|
||||||
|
"-f" "UTF-8" file))
|
||||||
|
(begin
|
||||||
|
;; For backward compatibility with Guix
|
||||||
|
;; <= 0.8.3, add "xx_YY.UTF-8".
|
||||||
|
(symlink (string-append locale ".utf8")
|
||||||
(string-append localedir "/"
|
(string-append localedir "/"
|
||||||
locale
|
locale ".UTF-8"))
|
||||||
".UTF-8"))))
|
#t)))
|
||||||
|
|
||||||
;; These are the locales commonly used for
|
;; These are the locales commonly used for
|
||||||
;; tests---e.g., in Guile's i18n tests.
|
;; tests---e.g., in Guile's i18n tests.
|
||||||
|
|
|
@ -660,46 +660,6 @@ exec ~a/bin/~a-~a -B~a/lib -Wl,-dynamic-linker -Wl,~a/~a \"$@\"~%"
|
||||||
(current-source-location)
|
(current-source-location)
|
||||||
#:guile %bootstrap-guile))))))
|
#:guile %bootstrap-guile))))))
|
||||||
|
|
||||||
(define (locale-proof-package p)
|
|
||||||
"Return a new package based on P that ignores 'LOCPATH'. The result is a
|
|
||||||
\"locale-proof\" package in the sense that it cannot end up loading locale
|
|
||||||
data that is not in the format its libc expects. This is useful because the
|
|
||||||
locale binary format may change incompatibly between libc versions."
|
|
||||||
(package
|
|
||||||
(inherit p)
|
|
||||||
(name (string-append (package-name p) "-lp"))
|
|
||||||
(build-system trivial-build-system)
|
|
||||||
(inputs `(("original" ,p)
|
|
||||||
("bash" ,bash-final)))
|
|
||||||
(outputs '("out"))
|
|
||||||
(arguments
|
|
||||||
'(#:modules ((guix build utils))
|
|
||||||
#:builder
|
|
||||||
(begin
|
|
||||||
(use-modules (guix build utils))
|
|
||||||
|
|
||||||
(let* ((out (assoc-ref %outputs "out"))
|
|
||||||
(bin (string-append out "/bin"))
|
|
||||||
(bash (assoc-ref %build-inputs "bash"))
|
|
||||||
(binaries (assoc-ref %build-inputs "original"))
|
|
||||||
(programs (find-files (string-append binaries "/bin"))))
|
|
||||||
(define (wrap-program program)
|
|
||||||
(let ((base (basename program)))
|
|
||||||
(call-with-output-file base
|
|
||||||
(lambda (port)
|
|
||||||
(format port "#!~a/bin/sh
|
|
||||||
# Unset 'LOCPATH' so that the program does not end up loading incompatible
|
|
||||||
# locale data.
|
|
||||||
unset LOCPATH
|
|
||||||
exec \"~a\" \"$@\"\n"
|
|
||||||
bash program)))
|
|
||||||
(chmod base #o755)))
|
|
||||||
|
|
||||||
(mkdir-p bin)
|
|
||||||
(with-directory-excursion bin
|
|
||||||
(for-each wrap-program programs)
|
|
||||||
#t)))))))
|
|
||||||
|
|
||||||
(define-public ld-wrapper
|
(define-public ld-wrapper
|
||||||
;; The final 'ld' wrapper, which uses the final Guile and Binutils.
|
;; The final 'ld' wrapper, which uses the final Guile and Binutils.
|
||||||
(package (inherit ld-wrapper-boot3)
|
(package (inherit ld-wrapper-boot3)
|
||||||
|
@ -710,40 +670,11 @@ exec \"~a\" \"$@\"\n"
|
||||||
'("guile" "bash"))))))
|
'("guile" "bash"))))))
|
||||||
|
|
||||||
(define %boot5-inputs
|
(define %boot5-inputs
|
||||||
;; Now with UTF-8 locales. Since the locale binary format differs between
|
;; Now with UTF-8 locales. Remember that the bootstrap binaries were built
|
||||||
;; libc versions, we have to rebuild some of the packages so that they use
|
;; with an older libc, which cannot load the new locale format. See
|
||||||
;; the new libc, which allows them to load locale data from
|
|
||||||
;; GLIBC-UTF8-LOCALES-FINAL (remember that the bootstrap binaries were built
|
|
||||||
;; with an older libc, which cannot load the new locale format.) See
|
|
||||||
;; <https://lists.gnu.org/archive/html/guix-devel/2015-08/msg00737.html>.
|
;; <https://lists.gnu.org/archive/html/guix-devel/2015-08/msg00737.html>.
|
||||||
(let ((new-libc-package (compose package-with-bootstrap-guile
|
`(("locales" ,glibc-utf8-locales-final)
|
||||||
(cut package-with-explicit-inputs <>
|
,@%boot4-inputs))
|
||||||
%boot4-inputs
|
|
||||||
(current-source-location)
|
|
||||||
#:guile %bootstrap-guile))))
|
|
||||||
`(("locales" ,glibc-utf8-locales-final)
|
|
||||||
("ld-wrapper" ,ld-wrapper)
|
|
||||||
("binutils" ,binutils-final)
|
|
||||||
("bash" ,bash-final)
|
|
||||||
("make" ,(new-libc-package gnu-make))
|
|
||||||
|
|
||||||
;; Some test suites (grep, Gnulib) use 'diff' to compare files in locale
|
|
||||||
;; encoding, so we need support this.
|
|
||||||
("diffutils" ,(new-libc-package diffutils))
|
|
||||||
("findutils" ,(new-libc-package findutils))
|
|
||||||
|
|
||||||
;; Grep's test suite uses 'timeout' from Coreutils to execute command,
|
|
||||||
;; and yet these commands need to see the valid 'LOCPATH'.
|
|
||||||
("coreutils" ,(new-libc-package coreutils-minimal))
|
|
||||||
|
|
||||||
;; We just wrap the remaining binaries (tar, gzip, xz, etc.) so that
|
|
||||||
;; they ignore 'LOCPATH' (if they did not, they would be hit by an
|
|
||||||
;; assertion failure in loadlocale.c.)
|
|
||||||
("coreutils&co" ,(locale-proof-package %bootstrap-coreutils&co))
|
|
||||||
|
|
||||||
,@(fold alist-delete %boot4-inputs
|
|
||||||
'("coreutils&co" "findutils" "diffutils" "make"
|
|
||||||
"bash" "binutils-cross" "ld-wrapper")))))
|
|
||||||
|
|
||||||
(define gnu-make-final
|
(define gnu-make-final
|
||||||
;; The final GNU Make, which uses the final Guile.
|
;; The final GNU Make, which uses the final Guile.
|
||||||
|
|
|
@ -57,17 +57,7 @@
|
||||||
(string-append "### " match))))
|
(string-append "### " match))))
|
||||||
'())))
|
'())))
|
||||||
|
|
||||||
(alist-cons-before
|
%standard-phases)))
|
||||||
'check 'install-locales
|
|
||||||
(lambda _
|
|
||||||
;; A bunch of tests require the availability of a UTF-8
|
|
||||||
;; locale and otherwise fail. Since UTF-8 locales are not
|
|
||||||
;; available during bootstrap, create one here.
|
|
||||||
(setenv "LOCPATH" (getcwd))
|
|
||||||
(zero? (system* "localedef" "--no-archive"
|
|
||||||
"--prefix" (getcwd) "-i" "en_US"
|
|
||||||
"-f" "UTF-8" "./en_US.UTF-8")))
|
|
||||||
%standard-phases))))
|
|
||||||
(inputs `(("libsigsegv" ,libsigsegv)
|
(inputs `(("libsigsegv" ,libsigsegv)
|
||||||
|
|
||||||
,@(if (%current-target-system)
|
,@(if (%current-target-system)
|
||||||
|
|
|
@ -40,14 +40,14 @@
|
||||||
(define-public gnu-gettext
|
(define-public gnu-gettext
|
||||||
(package
|
(package
|
||||||
(name "gettext")
|
(name "gettext")
|
||||||
(version "0.19.5")
|
(version "0.19.6")
|
||||||
(source (origin
|
(source (origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (string-append "mirror://gnu/gettext/gettext-"
|
(uri (string-append "mirror://gnu/gettext/gettext-"
|
||||||
version ".tar.gz"))
|
version ".tar.gz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"0fppvj4l9maa9q1swvhnv96hsqxx90vcjbdyjhqpir3ll55q2n0j"))))
|
"0pb9vp4ifymvdmc31ks3xxcnfqgzj8shll39czmk8c1splclqjzd"))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(inputs
|
(inputs
|
||||||
`(("expat" ,expat)))
|
`(("expat" ,expat)))
|
||||||
|
|
|
@ -332,7 +332,7 @@ printing and other features typical of a source code editor.")
|
||||||
(define-public gdk-pixbuf
|
(define-public gdk-pixbuf
|
||||||
(package
|
(package
|
||||||
(name "gdk-pixbuf")
|
(name "gdk-pixbuf")
|
||||||
(version "2.31.6")
|
(version "2.32.1")
|
||||||
(source (origin
|
(source (origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (string-append "mirror://gnome/sources/" name "/"
|
(uri (string-append "mirror://gnome/sources/" name "/"
|
||||||
|
@ -340,7 +340,7 @@ printing and other features typical of a source code editor.")
|
||||||
name "-" version ".tar.xz"))
|
name "-" version ".tar.xz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"062x2gqd7p6yxhxlib1ha4l3gk9ihcj080hrwwv9vmlmybb064hi"))))
|
"1g7kjxv67jcdasi14n7jan4icrnnppd1m99wrdmpv32k4m7vfcj4"))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(arguments
|
(arguments
|
||||||
'(#:configure-flags '("--with-x11")
|
'(#:configure-flags '("--with-x11")
|
||||||
|
|
|
@ -296,25 +296,17 @@ many readers as needed).")
|
||||||
(string-append "--with-guilesitedir="
|
(string-append "--with-guilesitedir="
|
||||||
(assoc-ref %outputs "out")
|
(assoc-ref %outputs "out")
|
||||||
"/share/guile/site/2.0"))
|
"/share/guile/site/2.0"))
|
||||||
#:phases (alist-cons-before
|
#:phases (alist-cons-after
|
||||||
'check 'change-locale
|
'install 'post-install
|
||||||
(lambda _
|
(lambda* (#:key outputs #:allow-other-keys)
|
||||||
;; Use the locale that's actually available in the build
|
(let* ((out (assoc-ref outputs "out"))
|
||||||
;; environment.
|
(dir (string-append out "/share/guile/site/"))
|
||||||
(substitute* "test/f009_form_wide.test"
|
(files (find-files dir ".scm")))
|
||||||
(("en_US\\.utf8")
|
(substitute* files
|
||||||
"en_US.UTF-8")))
|
(("\"libguile-ncurses\"")
|
||||||
(alist-cons-after
|
(format #f "\"~a/lib/libguile-ncurses\""
|
||||||
'install 'post-install
|
out)))))
|
||||||
(lambda* (#:key outputs #:allow-other-keys)
|
%standard-phases)))
|
||||||
(let* ((out (assoc-ref outputs "out"))
|
|
||||||
(dir (string-append out "/share/guile/site/"))
|
|
||||||
(files (find-files dir ".scm")))
|
|
||||||
(substitute* files
|
|
||||||
(("\"libguile-ncurses\"")
|
|
||||||
(format #f "\"~a/lib/libguile-ncurses\""
|
|
||||||
out)))))
|
|
||||||
%standard-phases))))
|
|
||||||
(home-page "http://www.gnu.org/software/guile-ncurses/")
|
(home-page "http://www.gnu.org/software/guile-ncurses/")
|
||||||
(synopsis "Guile bindings to ncurses")
|
(synopsis "Guile bindings to ncurses")
|
||||||
(description
|
(description
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
;;; GNU Guix --- Functional package management for GNU
|
;;; GNU Guix --- Functional package management for GNU
|
||||||
;;; Copyright © 2012, 2013 Ludovic Courtès <ludo@gnu.org>
|
;;; Copyright © 2012, 2013, 2015 Ludovic Courtès <ludo@gnu.org>
|
||||||
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
|
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
|
||||||
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
|
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
|
||||||
;;;
|
;;;
|
||||||
|
@ -39,7 +39,9 @@
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"0r5pp27cy7ch3dg5v0rsny8bib1zfvrza6027g2mp5f6v8pd6mli"))
|
"0r5pp27cy7ch3dg5v0rsny8bib1zfvrza6027g2mp5f6v8pd6mli"))
|
||||||
(patches (list (search-patch "gmp-arm-asm-nothumb.patch")))))
|
(patches (map search-patch
|
||||||
|
'("gmp-arm-asm-nothumb.patch"
|
||||||
|
"gmp-faulty-test.patch")))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(native-inputs `(("m4" ,m4)))
|
(native-inputs `(("m4" ,m4)))
|
||||||
(outputs '("out" "debug"))
|
(outputs '("out" "debug"))
|
||||||
|
|
|
@ -1,13 +0,0 @@
|
||||||
Skip this test, which uncovers a race condition in how 'tail' handles
|
|
||||||
file deletion. See <http://bugs.gnu.org/21460>.
|
|
||||||
|
|
||||||
--- a/tests/tail-2/assert.sh
|
|
||||||
+++ b/tests/tail-2/assert.sh
|
|
||||||
@@ -16,6 +16,7 @@
|
|
||||||
# You should have received a copy of the GNU General Public License
|
|
||||||
# along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
|
|
||||||
+exit 77 # see <http://bugs.gnu.org/21460>
|
|
||||||
|
|
||||||
# This test fails with tail from textutils-2.0.
|
|
||||||
# It would get something like this:
|
|
|
@ -0,0 +1,23 @@
|
||||||
|
This patch avoids an assertion failure when incompatible locale data
|
||||||
|
is encountered:
|
||||||
|
|
||||||
|
https://sourceware.org/ml/libc-alpha/2015-09/msg00575.html
|
||||||
|
|
||||||
|
--- glibc-2.22/locale/loadlocale.c 2015-09-22 17:16:02.321981548 +0200
|
||||||
|
+++ glibc-2.22/locale/loadlocale.c 2015-09-22 17:17:34.814659064 +0200
|
||||||
|
@@ -120,10 +120,11 @@
|
||||||
|
_nl_value_type_LC_XYZ array. There are all pointers. */
|
||||||
|
switch (category)
|
||||||
|
{
|
||||||
|
-#define CATTEST(cat) \
|
||||||
|
- case LC_##cat: \
|
||||||
|
- assert (cnt < (sizeof (_nl_value_type_LC_##cat) \
|
||||||
|
- / sizeof (_nl_value_type_LC_##cat[0]))); \
|
||||||
|
+#define CATTEST(cat) \
|
||||||
|
+ case LC_##cat: \
|
||||||
|
+ if (cnt >= (sizeof (_nl_value_type_LC_##cat) \
|
||||||
|
+ / sizeof (_nl_value_type_LC_##cat[0]))) \
|
||||||
|
+ goto puntdata; \
|
||||||
|
break
|
||||||
|
CATTEST (NUMERIC);
|
||||||
|
CATTEST (TIME);
|
|
@ -0,0 +1,240 @@
|
||||||
|
The format of locale data can be incompatible between libc versions, and
|
||||||
|
loading incompatible data can lead to 'setlocale' returning EINVAL at best
|
||||||
|
or triggering an assertion failure at worst. See
|
||||||
|
https://lists.gnu.org/archive/html/guix-devel/2015-09/msg00717.html
|
||||||
|
for background information.
|
||||||
|
|
||||||
|
To address that, this patch changes libc to honor a new 'GUIX_LOCPATH'
|
||||||
|
variable, and to look for locale data in version-specific sub-directories of
|
||||||
|
that variable. So, if GUIX_LOCPATH=/foo:/bar, locale data is searched for in
|
||||||
|
/foo/X.Y and /bar/X.Y, where X.Y is the libc version number.
|
||||||
|
|
||||||
|
That way, a single 'GUIX_LOCPATH' setting can work even if different libc
|
||||||
|
versions coexist on the system.
|
||||||
|
|
||||||
|
--- a/locale/newlocale.c
|
||||||
|
+++ b/locale/newlocale.c
|
||||||
|
@@ -30,6 +30,7 @@
|
||||||
|
/* Lock for protecting global data. */
|
||||||
|
__libc_rwlock_define (extern , __libc_setlocale_lock attribute_hidden)
|
||||||
|
|
||||||
|
+extern error_t compute_locale_search_path (char **, size_t *);
|
||||||
|
|
||||||
|
/* Use this when we come along an error. */
|
||||||
|
#define ERROR_RETURN \
|
||||||
|
@@ -48,7 +49,6 @@ __newlocale (int category_mask, const char *locale, __locale_t base)
|
||||||
|
__locale_t result_ptr;
|
||||||
|
char *locale_path;
|
||||||
|
size_t locale_path_len;
|
||||||
|
- const char *locpath_var;
|
||||||
|
int cnt;
|
||||||
|
size_t names_len;
|
||||||
|
|
||||||
|
@@ -102,17 +102,8 @@ __newlocale (int category_mask, const char *locale, __locale_t base)
|
||||||
|
locale_path = NULL;
|
||||||
|
locale_path_len = 0;
|
||||||
|
|
||||||
|
- locpath_var = getenv ("LOCPATH");
|
||||||
|
- if (locpath_var != NULL && locpath_var[0] != '\0')
|
||||||
|
- {
|
||||||
|
- if (__argz_create_sep (locpath_var, ':',
|
||||||
|
- &locale_path, &locale_path_len) != 0)
|
||||||
|
- return NULL;
|
||||||
|
-
|
||||||
|
- if (__argz_add_sep (&locale_path, &locale_path_len,
|
||||||
|
- _nl_default_locale_path, ':') != 0)
|
||||||
|
- return NULL;
|
||||||
|
- }
|
||||||
|
+ if (compute_locale_search_path (&locale_path, &locale_path_len) != 0)
|
||||||
|
+ return NULL;
|
||||||
|
|
||||||
|
/* Get the names for the locales we are interested in. We either
|
||||||
|
allow a composite name or a single name. */
|
||||||
|
diff --git a/locale/setlocale.c b/locale/setlocale.c
|
||||||
|
index ead030d..0c0e314 100644
|
||||||
|
--- a/locale/setlocale.c
|
||||||
|
+++ b/locale/setlocale.c
|
||||||
|
@@ -215,12 +215,65 @@ setdata (int category, struct __locale_data *data)
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
+/* Return in *LOCALE_PATH and *LOCALE_PATH_LEN the locale data search path as
|
||||||
|
+ a colon-separated list. Return ENOMEN on error, zero otherwise. */
|
||||||
|
+error_t
|
||||||
|
+compute_locale_search_path (char **locale_path, size_t *locale_path_len)
|
||||||
|
+{
|
||||||
|
+ char* guix_locpath_var = getenv ("GUIX_LOCPATH");
|
||||||
|
+ char *locpath_var = getenv ("LOCPATH");
|
||||||
|
+
|
||||||
|
+ if (guix_locpath_var != NULL && guix_locpath_var[0] != '\0')
|
||||||
|
+ {
|
||||||
|
+ /* Entries in 'GUIX_LOCPATH' take precedence over 'LOCPATH'. These
|
||||||
|
+ entries are systematically prefixed with "/X.Y" where "X.Y" is the
|
||||||
|
+ libc version. */
|
||||||
|
+ if (__argz_create_sep (guix_locpath_var, ':',
|
||||||
|
+ locale_path, locale_path_len) != 0
|
||||||
|
+ || __argz_suffix_entries (locale_path, locale_path_len,
|
||||||
|
+ "/" VERSION) != 0)
|
||||||
|
+ goto bail_out;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (locpath_var != NULL && locpath_var[0] != '\0')
|
||||||
|
+ {
|
||||||
|
+ char *reg_locale_path = NULL;
|
||||||
|
+ size_t reg_locale_path_len = 0;
|
||||||
|
+
|
||||||
|
+ if (__argz_create_sep (locpath_var, ':',
|
||||||
|
+ ®_locale_path, ®_locale_path_len) != 0)
|
||||||
|
+ goto bail_out;
|
||||||
|
+
|
||||||
|
+ if (__argz_append (locale_path, locale_path_len,
|
||||||
|
+ reg_locale_path, reg_locale_path_len) != 0)
|
||||||
|
+ goto bail_out;
|
||||||
|
+
|
||||||
|
+ free (reg_locale_path);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if (*locale_path != NULL)
|
||||||
|
+ {
|
||||||
|
+ /* Append the system default locale directory. */
|
||||||
|
+ if (__argz_add_sep (locale_path, locale_path_len,
|
||||||
|
+ _nl_default_locale_path, ':') != 0)
|
||||||
|
+ goto bail_out;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ bail_out:
|
||||||
|
+ free (*locale_path);
|
||||||
|
+ *locale_path = NULL;
|
||||||
|
+ *locale_path_len = 0;
|
||||||
|
+
|
||||||
|
+ return ENOMEM;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
char *
|
||||||
|
setlocale (int category, const char *locale)
|
||||||
|
{
|
||||||
|
char *locale_path;
|
||||||
|
size_t locale_path_len;
|
||||||
|
- const char *locpath_var;
|
||||||
|
char *composite;
|
||||||
|
|
||||||
|
/* Sanity check for CATEGORY argument. */
|
||||||
|
@@ -251,17 +304,10 @@ setlocale (int category, const char *locale)
|
||||||
|
locale_path = NULL;
|
||||||
|
locale_path_len = 0;
|
||||||
|
|
||||||
|
- locpath_var = getenv ("LOCPATH");
|
||||||
|
- if (locpath_var != NULL && locpath_var[0] != '\0')
|
||||||
|
+ if (compute_locale_search_path (&locale_path, &locale_path_len) != 0)
|
||||||
|
{
|
||||||
|
- if (__argz_create_sep (locpath_var, ':',
|
||||||
|
- &locale_path, &locale_path_len) != 0
|
||||||
|
- || __argz_add_sep (&locale_path, &locale_path_len,
|
||||||
|
- _nl_default_locale_path, ':') != 0)
|
||||||
|
- {
|
||||||
|
- __libc_rwlock_unlock (__libc_setlocale_lock);
|
||||||
|
- return NULL;
|
||||||
|
- }
|
||||||
|
+ __libc_rwlock_unlock (__libc_setlocale_lock);
|
||||||
|
+ return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (category == LC_ALL)
|
||||||
|
diff --git a/string/Makefile b/string/Makefile
|
||||||
|
index 8424a61..f925503 100644
|
||||||
|
--- a/string/Makefile
|
||||||
|
+++ b/string/Makefile
|
||||||
|
@@ -38,7 +38,7 @@ routines := strcat strchr strcmp strcoll strcpy strcspn \
|
||||||
|
swab strfry memfrob memmem rawmemchr strchrnul \
|
||||||
|
$(addprefix argz-,append count create ctsep next \
|
||||||
|
delete extract insert stringify \
|
||||||
|
- addsep replace) \
|
||||||
|
+ addsep replace suffix) \
|
||||||
|
envz basename \
|
||||||
|
strcoll_l strxfrm_l string-inlines memrchr \
|
||||||
|
xpg-strerror strerror_l
|
||||||
|
diff --git a/string/argz-suffix.c b/string/argz-suffix.c
|
||||||
|
new file mode 100644
|
||||||
|
index 0000000..505b0f2
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/string/argz-suffix.c
|
||||||
|
@@ -0,0 +1,56 @@
|
||||||
|
+/* Copyright (C) 2015 Free Software Foundation, Inc.
|
||||||
|
+ This file is part of the GNU C Library.
|
||||||
|
+ Contributed by Ludovic Courtès <ludo@gnu.org>.
|
||||||
|
+
|
||||||
|
+ The GNU C Library is free software; you can redistribute it and/or
|
||||||
|
+ modify it under the terms of the GNU Lesser General Public
|
||||||
|
+ License as published by the Free Software Foundation; either
|
||||||
|
+ version 2.1 of the License, or (at your option) any later version.
|
||||||
|
+
|
||||||
|
+ The GNU C Library is distributed in the hope that it will be useful,
|
||||||
|
+ but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||||
|
+ MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||||||
|
+ Lesser General Public License for more details.
|
||||||
|
+
|
||||||
|
+ You should have received a copy of the GNU Lesser General Public
|
||||||
|
+ License along with the GNU C Library; if not, see
|
||||||
|
+ <http://www.gnu.org/licenses/>. */
|
||||||
|
+
|
||||||
|
+#include <argz.h>
|
||||||
|
+#include <errno.h>
|
||||||
|
+#include <stdlib.h>
|
||||||
|
+#include <string.h>
|
||||||
|
+
|
||||||
|
+
|
||||||
|
+error_t
|
||||||
|
+__argz_suffix_entries (char **argz, size_t *argz_len, const char *suffix)
|
||||||
|
+
|
||||||
|
+{
|
||||||
|
+ size_t suffix_len = strlen (suffix);
|
||||||
|
+ size_t count = __argz_count (*argz, *argz_len);
|
||||||
|
+ size_t new_argz_len = *argz_len + count * suffix_len;
|
||||||
|
+ char *new_argz = malloc (new_argz_len);
|
||||||
|
+
|
||||||
|
+ if (new_argz)
|
||||||
|
+ {
|
||||||
|
+ char *p = new_argz, *entry;
|
||||||
|
+
|
||||||
|
+ for (entry = *argz;
|
||||||
|
+ entry != NULL;
|
||||||
|
+ entry = argz_next (*argz, *argz_len, entry))
|
||||||
|
+ {
|
||||||
|
+ p = stpcpy (p, entry);
|
||||||
|
+ p = stpcpy (p, suffix);
|
||||||
|
+ p++;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ free (*argz);
|
||||||
|
+ *argz = new_argz;
|
||||||
|
+ *argz_len = new_argz_len;
|
||||||
|
+
|
||||||
|
+ return 0;
|
||||||
|
+ }
|
||||||
|
+ else
|
||||||
|
+ return ENOMEM;
|
||||||
|
+}
|
||||||
|
+weak_alias (__argz_suffix_entries, argz_suffix_entries)
|
||||||
|
diff --git a/string/argz.h b/string/argz.h
|
||||||
|
index bb62a31..d276a35 100644
|
||||||
|
--- a/string/argz.h
|
||||||
|
+++ b/string/argz.h
|
||||||
|
@@ -134,6 +134,16 @@ extern error_t argz_replace (char **__restrict __argz,
|
||||||
|
const char *__restrict __str,
|
||||||
|
const char *__restrict __with,
|
||||||
|
unsigned int *__restrict __replace_count);
|
||||||
|
+
|
||||||
|
+/* Suffix each entry of ARGZ & ARGZ_LEN with SUFFIX. Return 0 on success,
|
||||||
|
+ and ENOMEN if memory cannot be allocated. */
|
||||||
|
+extern error_t __argz_suffix_entries (char **__restrict __argz,
|
||||||
|
+ size_t *__restrict __argz_len,
|
||||||
|
+ const char *__restrict __suffix);
|
||||||
|
+extern error_t argz_suffix_entries (char **__restrict __argz,
|
||||||
|
+ size_t *__restrict __argz_len,
|
||||||
|
+ const char *__restrict __suffix);
|
||||||
|
+
|
||||||
|
|
||||||
|
/* Returns the next entry in ARGZ & ARGZ_LEN after ENTRY, or NULL if there
|
||||||
|
are no more. If entry is NULL, then the first entry is returned. This
|
|
@ -0,0 +1,11 @@
|
||||||
|
Skip a test that randomly fails on ARMv7: <http://bugs.gnu.org/21620>.
|
||||||
|
|
||||||
|
--- a/tests/mpz/reuse.c
|
||||||
|
+++ b/tests/mpz/reuse.c
|
||||||
|
@@ -213,6 +213,7 @@ main (int argc, char **argv)
|
||||||
|
mpz_t bs;
|
||||||
|
unsigned long bsi, size_range;
|
||||||
|
|
||||||
|
+ exit (77); /* skip */
|
||||||
|
tests_start ();
|
||||||
|
TESTS_REPS (reps, argv, argc);
|
|
@ -1,15 +0,0 @@
|
||||||
Fix <https://bugs.freedesktop.org/show_bug.cgi?id=92027> whereby
|
|
||||||
an arithemitic overflow could occur while doing pointer arithmetic,
|
|
||||||
leading pixman to use an invalid address as the destination buffer.
|
|
||||||
|
|
||||||
--- pixman-0.32.6/pixman/pixman-general.c 2015-09-21 15:14:34.695981325 +0200
|
|
||||||
+++ pixman-0.32.6/pixman/pixman-general.c 2015-09-21 15:19:48.898355548 +0200
|
|
||||||
@@ -144,8 +144,7 @@ general_composite_rect (pixman_implemen
|
|
||||||
mask_buffer = ALIGN (src_buffer + width * Bpp);
|
|
||||||
dest_buffer = ALIGN (mask_buffer + width * Bpp);
|
|
||||||
|
|
||||||
- if (ALIGN (dest_buffer + width * Bpp) >
|
|
||||||
- scanline_buffer + sizeof (stack_scanline_buffer))
|
|
||||||
+ if ((width + 1) * Bpp * 3 > sizeof (stack_scanline_buffer))
|
|
||||||
{
|
|
||||||
scanline_buffer = pixman_malloc_ab_plus_c (width, Bpp * 3, 32 * 3);
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
Make sure the build system honors CPATH and LIBRARY_PATH when looking for
|
||||||
|
headers and libraries.
|
||||||
|
|
||||||
|
--- Python-2.7.10/setup.py 2015-10-07 18:33:18.125153186 +0200
|
||||||
|
+++ Python-2.7.10/setup.py 2015-10-07 18:33:47.497347552 +0200
|
||||||
|
@@ -526,6 +526,10 @@ class PyBuildExt(build_ext):
|
||||||
|
inc_dirs += ['/system/include', '/atheos/autolnk/include']
|
||||||
|
inc_dirs += os.getenv('C_INCLUDE_PATH', '').split(os.pathsep)
|
||||||
|
|
||||||
|
+ # Always honor these variables.
|
||||||
|
+ lib_dirs += os.getenv('LIBRARY_PATH', '').split(os.pathsep)
|
||||||
|
+ inc_dirs += os.getenv('CPATH', '').split(os.pathsep)
|
||||||
|
+
|
||||||
|
# OSF/1 and Unixware have some stuff in /usr/ccs/lib (like -ldb)
|
||||||
|
if host_platform in ['osf1', 'unixware7', 'openunix8']:
|
||||||
|
lib_dirs += ['/usr/ccs/lib']
|
|
@ -0,0 +1,19 @@
|
||||||
|
Make sure the build system honors CPATH and LIBRARY_PATH when looking for
|
||||||
|
headers and libraries.
|
||||||
|
|
||||||
|
--- setup.py 2015-10-07 23:32:58.891329173 +0200
|
||||||
|
+++ setup.py 2015-10-07 23:46:29.653349924 +0200
|
||||||
|
@@ -507,11 +507,8 @@ class PyBuildExt(build_ext):
|
||||||
|
# if a file is found in one of those directories, it can
|
||||||
|
# be assumed that no additional -I,-L directives are needed.
|
||||||
|
if not cross_compiling:
|
||||||
|
- lib_dirs = self.compiler.library_dirs + [
|
||||||
|
- '/lib64', '/usr/lib64',
|
||||||
|
- '/lib', '/usr/lib',
|
||||||
|
- ]
|
||||||
|
- inc_dirs = self.compiler.include_dirs + ['/usr/include']
|
||||||
|
+ lib_dirs = os.getenv('LIBRARY_PATH', '').split(os.pathsep)
|
||||||
|
+ inc_dirs = os.getenv('CPATH', '').split(os.pathsep)
|
||||||
|
else:
|
||||||
|
lib_dirs = self.compiler.library_dirs[:]
|
||||||
|
inc_dirs = self.compiler.include_dirs[:]
|
|
@ -66,6 +66,7 @@
|
||||||
#:use-module (gnu packages xml)
|
#:use-module (gnu packages xml)
|
||||||
#:use-module (gnu packages xorg)
|
#:use-module (gnu packages xorg)
|
||||||
#:use-module (gnu packages zip)
|
#:use-module (gnu packages zip)
|
||||||
|
#:use-module (gnu packages tcl)
|
||||||
#:use-module (guix packages)
|
#:use-module (guix packages)
|
||||||
#:use-module (guix download)
|
#:use-module (guix download)
|
||||||
#:use-module (guix git-download)
|
#:use-module (guix git-download)
|
||||||
|
@ -86,7 +87,8 @@
|
||||||
version "/Python-" version ".tar.xz"))
|
version "/Python-" version ".tar.xz"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"1h7zbrf9pkj29hlm18b10548ch9757f75m64l47sy75rh43p7lqw"))))
|
"1h7zbrf9pkj29hlm18b10548ch9757f75m64l47sy75rh43p7lqw"))
|
||||||
|
(patches (list (search-patch "python-2.7-search-paths.patch")))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(arguments
|
(arguments
|
||||||
`(#:tests? #f
|
`(#:tests? #f
|
||||||
|
@ -132,32 +134,10 @@
|
||||||
;; such file or directory
|
;; such file or directory
|
||||||
#:test-target "test"
|
#:test-target "test"
|
||||||
#:configure-flags
|
#:configure-flags
|
||||||
(let ((bz2 (assoc-ref %build-inputs "bzip2"))
|
(list "--enable-shared" ;allow embedding
|
||||||
(gdbm (assoc-ref %build-inputs "gdbm"))
|
"--with-system-ffi" ;build ctypes
|
||||||
(libffi (assoc-ref %build-inputs "libffi"))
|
(string-append "LDFLAGS=-Wl,-rpath="
|
||||||
(sqlite (assoc-ref %build-inputs "sqlite"))
|
(assoc-ref %outputs "out") "/lib"))
|
||||||
(openssl (assoc-ref %build-inputs "openssl"))
|
|
||||||
(readline (assoc-ref %build-inputs "readline"))
|
|
||||||
(zlib (assoc-ref %build-inputs "zlib"))
|
|
||||||
(out (assoc-ref %outputs "out")))
|
|
||||||
(list "--enable-shared" ; allow embedding
|
|
||||||
"--with-system-ffi" ; build ctypes
|
|
||||||
(string-append "CPPFLAGS="
|
|
||||||
"-I" bz2 "/include "
|
|
||||||
"-I" gdbm "/include "
|
|
||||||
"-I" sqlite "/include "
|
|
||||||
"-I" openssl "/include "
|
|
||||||
"-I" readline "/include "
|
|
||||||
"-I" zlib "/include")
|
|
||||||
(string-append "LDFLAGS="
|
|
||||||
"-L" bz2 "/lib "
|
|
||||||
"-L" gdbm "/lib "
|
|
||||||
"-L" libffi "/lib "
|
|
||||||
"-L" sqlite "/lib "
|
|
||||||
"-L" openssl "/lib "
|
|
||||||
"-L" readline "/lib "
|
|
||||||
"-L" zlib "/lib "
|
|
||||||
"-Wl,-rpath=" out "/lib")))
|
|
||||||
|
|
||||||
#:modules ((ice-9 ftw)
|
#:modules ((ice-9 ftw)
|
||||||
,@%gnu-build-system-modules)
|
,@%gnu-build-system-modules)
|
||||||
|
@ -200,7 +180,9 @@
|
||||||
("sqlite" ,sqlite) ; for sqlite extension
|
("sqlite" ,sqlite) ; for sqlite extension
|
||||||
("openssl" ,openssl)
|
("openssl" ,openssl)
|
||||||
("readline" ,readline)
|
("readline" ,readline)
|
||||||
("zlib" ,zlib)))
|
("zlib" ,zlib)
|
||||||
|
("tcl" ,tcl)
|
||||||
|
("tk" ,tk))) ; for tkinter
|
||||||
(native-inputs
|
(native-inputs
|
||||||
`(("pkg-config" ,pkg-config)))
|
`(("pkg-config" ,pkg-config)))
|
||||||
(native-search-paths
|
(native-search-paths
|
||||||
|
@ -208,8 +190,7 @@
|
||||||
(variable "PYTHONPATH")
|
(variable "PYTHONPATH")
|
||||||
(files '("lib/python2.7/site-packages")))))
|
(files '("lib/python2.7/site-packages")))))
|
||||||
(home-page "http://python.org")
|
(home-page "http://python.org")
|
||||||
(synopsis
|
(synopsis "High-level, dynamically-typed programming language")
|
||||||
"High-level, dynamically-typed programming language")
|
|
||||||
(description
|
(description
|
||||||
"Python is a remarkably powerful dynamic programming language that
|
"Python is a remarkably powerful dynamic programming language that
|
||||||
is used in a wide variety of application domains. Some of its key
|
is used in a wide variety of application domains. Some of its key
|
||||||
|
@ -227,9 +208,11 @@ data types.")
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (string-append "https://www.python.org/ftp/python/"
|
(uri (string-append "https://www.python.org/ftp/python/"
|
||||||
version "/Python-" version ".tar.xz"))
|
version "/Python-" version ".tar.xz"))
|
||||||
(patches (list (search-patch "python-fix-tests.patch")
|
(patches (map search-patch
|
||||||
;; XXX Try removing this patch for python > 3.4.3
|
'("python-fix-tests.patch"
|
||||||
(search-patch "python-disable-ssl-test.patch")))
|
;; XXX Try removing this patch for python > 3.4.3
|
||||||
|
"python-disable-ssl-test.patch"
|
||||||
|
"python-3-search-paths.patch")))
|
||||||
(patch-flags '("-p0"))
|
(patch-flags '("-p0"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
|
@ -243,9 +226,38 @@ data types.")
|
||||||
(version-major+minor version)
|
(version-major+minor version)
|
||||||
"/site-packages"))))))))
|
"/site-packages"))))))))
|
||||||
|
|
||||||
(define-public python-wrapper
|
;; Minimal variants of Python, mostly used to break the cycle between Tk and
|
||||||
|
;; Python (Tk -> libxcb -> Python.)
|
||||||
|
|
||||||
|
(define-public python2-minimal
|
||||||
|
(package (inherit python-2)
|
||||||
|
(name "python-minimal")
|
||||||
|
(arguments
|
||||||
|
(substitute-keyword-arguments (package-arguments python-2)
|
||||||
|
((#:configure-flags _)
|
||||||
|
`(list "--enable-shared"
|
||||||
|
(string-append "LDFLAGS=-Wl,-rpath="
|
||||||
|
(assoc-ref %outputs "out") "/lib")))))
|
||||||
|
(inputs '()))) ;none of the optional dependencies
|
||||||
|
|
||||||
|
(define-public python-minimal
|
||||||
(package (inherit python)
|
(package (inherit python)
|
||||||
(name "python-wrapper")
|
(name "python-minimal")
|
||||||
|
(arguments
|
||||||
|
(substitute-keyword-arguments (package-arguments python)
|
||||||
|
((#:configure-flags _)
|
||||||
|
`(list "--enable-shared"
|
||||||
|
(string-append "LDFLAGS=-Wl,-rpath="
|
||||||
|
(assoc-ref %outputs "out") "/lib")))))
|
||||||
|
|
||||||
|
;; OpenSSL is a mandatory dependency of Python 3.x, for urllib;
|
||||||
|
;; zlib is required by 'zipimport', used by pip.
|
||||||
|
(inputs `(("openssl" ,openssl)
|
||||||
|
("zlib" ,zlib)))))
|
||||||
|
|
||||||
|
(define* (wrap-python3 python #:optional (name "python-wrapper"))
|
||||||
|
(package (inherit python)
|
||||||
|
(name name)
|
||||||
(source #f)
|
(source #f)
|
||||||
(build-system trivial-build-system)
|
(build-system trivial-build-system)
|
||||||
(propagated-inputs `(("python" ,python)))
|
(propagated-inputs `(("python" ,python)))
|
||||||
|
@ -263,9 +275,14 @@ data types.")
|
||||||
(string-append bin "/" new)))
|
(string-append bin "/" new)))
|
||||||
`("python3", "pydoc3", "idle3")
|
`("python3", "pydoc3", "idle3")
|
||||||
`("python", "pydoc", "idle"))))))
|
`("python", "pydoc", "idle"))))))
|
||||||
(description (string-append (package-description python)
|
(synopsis "Wrapper for the Python 3 commands")
|
||||||
"\n\nThis wrapper package provides symbolic links to the python binaries
|
(description
|
||||||
without version suffix."))))
|
"This package provides wrappers for the commands of Python@tie{}3.x such
|
||||||
|
that they can be invoked under their usual name---e.g., @command{python}
|
||||||
|
instead of @command{python3}.")))
|
||||||
|
|
||||||
|
(define-public python-wrapper (wrap-python3 python))
|
||||||
|
(define-public python-minimal-wrapper (wrap-python3 python-minimal))
|
||||||
|
|
||||||
(define-public python-psutil
|
(define-public python-psutil
|
||||||
(package
|
(package
|
||||||
|
@ -4015,7 +4032,7 @@ without using the configuration machinery.")
|
||||||
(man1 (string-append data "/man/man1"))
|
(man1 (string-append data "/man/man1"))
|
||||||
(info (string-append data "/info"))
|
(info (string-append data "/info"))
|
||||||
(examples (string-append doc "/examples")))
|
(examples (string-append doc "/examples")))
|
||||||
(setenv "LANG" "en_US.UTF-8")
|
(setenv "LANG" "en_US.utf8")
|
||||||
(with-directory-excursion "docs"
|
(with-directory-excursion "docs"
|
||||||
;; FIXME: html and pdf fail to build
|
;; FIXME: html and pdf fail to build
|
||||||
;; (system* "make" "html")
|
;; (system* "make" "html")
|
||||||
|
|
|
@ -45,6 +45,13 @@
|
||||||
(inputs `(("ncurses" ,ncurses)
|
(inputs `(("ncurses" ,ncurses)
|
||||||
("xz" ,xz)
|
("xz" ,xz)
|
||||||
("perl" ,perl)))
|
("perl" ,perl)))
|
||||||
|
|
||||||
|
(native-search-paths
|
||||||
|
;; This is the variable used by the standalone Info reader.
|
||||||
|
(list (search-path-specification
|
||||||
|
(variable "INFOPATH")
|
||||||
|
(files '("share/info")))))
|
||||||
|
|
||||||
(home-page "http://www.gnu.org/software/texinfo/")
|
(home-page "http://www.gnu.org/software/texinfo/")
|
||||||
(synopsis "The GNU documentation format")
|
(synopsis "The GNU documentation format")
|
||||||
(description
|
(description
|
||||||
|
|
|
@ -171,24 +171,21 @@ following the mouse.")
|
||||||
(define-public pixman
|
(define-public pixman
|
||||||
(package
|
(package
|
||||||
(name "pixman")
|
(name "pixman")
|
||||||
(version "0.32.6")
|
(version "0.32.8")
|
||||||
(source
|
(source (origin
|
||||||
(origin
|
(method url-fetch)
|
||||||
(method url-fetch)
|
(uri (string-append
|
||||||
(uri (string-append
|
"http://cairographics.org/releases/pixman-"
|
||||||
"http://cairographics.org/releases/pixman-"
|
version ".tar.gz"))
|
||||||
version
|
(sha256
|
||||||
".tar.gz"))
|
(base32
|
||||||
(sha256
|
"0pfn0247sjsi95kwjih0wwqpp28wadihqk1bn28x6iqbqhbxwnjp"))))
|
||||||
(base32
|
|
||||||
"0129g4zdrw5hif5783li7rzcr4vpbc2cfia91azxmsk0h0xx3zix"))
|
|
||||||
(patches (list (search-patch "pixman-pointer-arithmetic.patch")))))
|
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(inputs
|
(inputs
|
||||||
`(("libpng" ,libpng)
|
`(("libpng" ,libpng)
|
||||||
("zlib" ,zlib)))
|
("zlib" ,zlib)))
|
||||||
(native-inputs
|
(native-inputs
|
||||||
`(("pkg-config" ,pkg-config)))
|
`(("pkg-config" ,pkg-config)))
|
||||||
(home-page "http://www.pixman.org/")
|
(home-page "http://www.pixman.org/")
|
||||||
(synopsis "Low-level pixel manipulation library")
|
(synopsis "Low-level pixel manipulation library")
|
||||||
(description "Pixman is a low-level software library for pixel
|
(description "Pixman is a low-level software library for pixel
|
||||||
|
|
|
@ -135,7 +135,7 @@ project (but it is usable outside of the Gnome platform).")
|
||||||
(synopsis "C library for applying XSLT stylesheets to XML documents")
|
(synopsis "C library for applying XSLT stylesheets to XML documents")
|
||||||
(inputs `(("libgcrypt" ,libgcrypt)
|
(inputs `(("libgcrypt" ,libgcrypt)
|
||||||
("libxml2" ,libxml2)
|
("libxml2" ,libxml2)
|
||||||
("python" ,python-wrapper)
|
("python" ,python-minimal-wrapper)
|
||||||
("zlib" ,zlib)))
|
("zlib" ,zlib)))
|
||||||
(description
|
(description
|
||||||
"Libxslt is an XSLT C library developed for the GNOME project. It is
|
"Libxslt is an XSLT C library developed for the GNOME project. It is
|
||||||
|
|
|
@ -2050,7 +2050,7 @@ legacy X clients.")
|
||||||
"0bp3f53l9fy5x3mn1rkj1g81aiyzl90wacwvqdgy831aa3kfxb5l"))))
|
"0bp3f53l9fy5x3mn1rkj1g81aiyzl90wacwvqdgy831aa3kfxb5l"))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(native-inputs
|
(native-inputs
|
||||||
`(("pkg-config" ,pkg-config) ("python" ,python-wrapper)))
|
`(("pkg-config" ,pkg-config) ("python" ,python-minimal-wrapper)))
|
||||||
(home-page "http://www.x.org/wiki/")
|
(home-page "http://www.x.org/wiki/")
|
||||||
(synopsis "XML-XCB protocol descriptions")
|
(synopsis "XML-XCB protocol descriptions")
|
||||||
(description
|
(description
|
||||||
|
@ -4804,7 +4804,7 @@ protocol.")
|
||||||
("libxslt" ,libxslt)))
|
("libxslt" ,libxslt)))
|
||||||
(native-inputs
|
(native-inputs
|
||||||
`(("pkg-config" ,pkg-config)
|
`(("pkg-config" ,pkg-config)
|
||||||
("python" ,python-wrapper)))
|
("python" ,python-minimal-wrapper)))
|
||||||
(arguments
|
(arguments
|
||||||
`(#:configure-flags '("--enable-xkb")))
|
`(#:configure-flags '("--enable-xkb")))
|
||||||
(home-page "http://www.x.org/wiki/")
|
(home-page "http://www.x.org/wiki/")
|
||||||
|
@ -4889,7 +4889,7 @@ over Xlib, including:
|
||||||
("xtrans" ,xtrans)
|
("xtrans" ,xtrans)
|
||||||
("zlib" ,zlib)))
|
("zlib" ,zlib)))
|
||||||
(native-inputs
|
(native-inputs
|
||||||
`(("python" ,python-wrapper)
|
`(("python" ,python-minimal-wrapper)
|
||||||
("pkg-config" ,pkg-config)))
|
("pkg-config" ,pkg-config)))
|
||||||
(arguments
|
(arguments
|
||||||
`(#:parallel-tests? #f
|
`(#:parallel-tests? #f
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
(define-module (gnu system locale)
|
(define-module (gnu system locale)
|
||||||
#:use-module (guix gexp)
|
#:use-module (guix gexp)
|
||||||
#:use-module (guix records)
|
#:use-module (guix records)
|
||||||
|
#:use-module (guix packages)
|
||||||
#:use-module (gnu packages base)
|
#:use-module (gnu packages base)
|
||||||
#:use-module (gnu packages compression)
|
#:use-module (gnu packages compression)
|
||||||
#:use-module (srfi srfi-26)
|
#:use-module (srfi srfi-26)
|
||||||
|
@ -57,14 +58,20 @@
|
||||||
"-i" #$(locale-definition-source locale)
|
"-i" #$(locale-definition-source locale)
|
||||||
"-f" #$(locale-definition-charset locale)
|
"-f" #$(locale-definition-charset locale)
|
||||||
(string-append #$output "/"
|
(string-append #$output "/"
|
||||||
|
#$(package-version libc) "/"
|
||||||
#$(locale-definition-name locale))))))
|
#$(locale-definition-name locale))))))
|
||||||
|
|
||||||
(define* (locale-directory locales
|
(define* (locale-directory locales
|
||||||
#:key (libc (canonical-package glibc)))
|
#:key (libc (canonical-package glibc)))
|
||||||
"Return a directory containing all of LOCALES compiled."
|
"Return a directory containing all of LOCALES for LIBC compiled.
|
||||||
|
|
||||||
|
Because locale data formats are incompatible when switching from one libc to
|
||||||
|
another, locale data is put in a sub-directory named after the 'version' field
|
||||||
|
of LIBC."
|
||||||
(define build
|
(define build
|
||||||
#~(begin
|
#~(begin
|
||||||
(mkdir #$output)
|
(mkdir #$output)
|
||||||
|
(mkdir (string-append #$output "/" #$(package-version libc)))
|
||||||
|
|
||||||
;; 'localedef' executes 'gzip' to access compressed locale sources.
|
;; 'localedef' executes 'gzip' to access compressed locale sources.
|
||||||
(setenv "PATH" (string-append #$gzip "/bin"))
|
(setenv "PATH" (string-append #$gzip "/bin"))
|
||||||
|
|
|
@ -287,7 +287,7 @@ standard packages used as implicit inputs of the GNU build system."
|
||||||
"bin" "sbin"))
|
"bin" "sbin"))
|
||||||
(validate-runpath? #t)
|
(validate-runpath? #t)
|
||||||
(phases '%standard-phases)
|
(phases '%standard-phases)
|
||||||
(locale "en_US.UTF-8")
|
(locale "en_US.utf8")
|
||||||
(system (%current-system))
|
(system (%current-system))
|
||||||
(build (nix-system->gnu-triplet system))
|
(build (nix-system->gnu-triplet system))
|
||||||
(imported-modules %gnu-build-system-modules)
|
(imported-modules %gnu-build-system-modules)
|
||||||
|
@ -422,7 +422,7 @@ is one of `host' or `target'."
|
||||||
"bin" "sbin"))
|
"bin" "sbin"))
|
||||||
(validate-runpath? #t)
|
(validate-runpath? #t)
|
||||||
(phases '%standard-phases)
|
(phases '%standard-phases)
|
||||||
(locale "en_US.UTF-8")
|
(locale "en_US.utf8")
|
||||||
(system (%current-system))
|
(system (%current-system))
|
||||||
(build (nix-system->gnu-triplet system))
|
(build (nix-system->gnu-triplet system))
|
||||||
(imported-modules %gnu-build-system-modules)
|
(imported-modules %gnu-build-system-modules)
|
||||||
|
|
|
@ -99,7 +99,7 @@
|
||||||
#t)
|
#t)
|
||||||
|
|
||||||
(define* (install-locale #:key
|
(define* (install-locale #:key
|
||||||
(locale "en_US.UTF-8")
|
(locale "en_US.utf8")
|
||||||
(locale-category LC_ALL)
|
(locale-category LC_ALL)
|
||||||
#:allow-other-keys)
|
#:allow-other-keys)
|
||||||
"Try to install LOCALE; emit a warning if that fails. The main goal is to
|
"Try to install LOCALE; emit a warning if that fails. The main goal is to
|
||||||
|
@ -409,18 +409,6 @@ makefiles."
|
||||||
strip-directories)))
|
strip-directories)))
|
||||||
outputs))))
|
outputs))))
|
||||||
|
|
||||||
(define (every* pred lst)
|
|
||||||
"This is like 'every', but process all the elements of LST instead of
|
|
||||||
stopping as soon as PRED returns false. This is useful when PRED has side
|
|
||||||
effects, such as displaying warnings or error messages."
|
|
||||||
(let loop ((lst lst)
|
|
||||||
(result #t))
|
|
||||||
(match lst
|
|
||||||
(()
|
|
||||||
result)
|
|
||||||
((head . tail)
|
|
||||||
(loop tail (and (pred head) result))))))
|
|
||||||
|
|
||||||
(define* (validate-runpath #:key
|
(define* (validate-runpath #:key
|
||||||
(validate-runpath? #t)
|
(validate-runpath? #t)
|
||||||
(elf-directories '("lib" "lib64" "libexec"
|
(elf-directories '("lib" "lib64" "libexec"
|
||||||
|
|
|
@ -59,10 +59,12 @@
|
||||||
list->search-path-as-string
|
list->search-path-as-string
|
||||||
which
|
which
|
||||||
|
|
||||||
|
every*
|
||||||
alist-cons-before
|
alist-cons-before
|
||||||
alist-cons-after
|
alist-cons-after
|
||||||
alist-replace
|
alist-replace
|
||||||
modify-phases
|
modify-phases
|
||||||
|
|
||||||
with-atomic-file-replacement
|
with-atomic-file-replacement
|
||||||
substitute
|
substitute
|
||||||
substitute*
|
substitute*
|
||||||
|
@ -454,6 +456,18 @@ PROGRAM could not be found."
|
||||||
;;; phases.
|
;;; phases.
|
||||||
;;;
|
;;;
|
||||||
|
|
||||||
|
(define (every* pred lst)
|
||||||
|
"This is like 'every', but process all the elements of LST instead of
|
||||||
|
stopping as soon as PRED returns false. This is useful when PRED has side
|
||||||
|
effects, such as displaying warnings or error messages."
|
||||||
|
(let loop ((lst lst)
|
||||||
|
(result #t))
|
||||||
|
(match lst
|
||||||
|
(()
|
||||||
|
result)
|
||||||
|
((head . tail)
|
||||||
|
(loop tail (and (pred head) result))))))
|
||||||
|
|
||||||
(define* (alist-cons-before reference key value alist
|
(define* (alist-cons-before reference key value alist
|
||||||
#:optional (key=? equal?))
|
#:optional (key=? equal?))
|
||||||
"Insert the KEY/VALUE pair before the first occurrence of a pair whose key
|
"Insert the KEY/VALUE pair before the first occurrence of a pair whose key
|
||||||
|
|
|
@ -477,8 +477,11 @@ IMPORTED-MODULES specify modules to use/import for use by SNIPPET."
|
||||||
(when #+locales
|
(when #+locales
|
||||||
;; First of all, install a UTF-8 locale so that UTF-8 file names
|
;; First of all, install a UTF-8 locale so that UTF-8 file names
|
||||||
;; are correctly interpreted. During bootstrap, LOCALES is #f.
|
;; are correctly interpreted. During bootstrap, LOCALES is #f.
|
||||||
(setenv "LOCPATH" (string-append #+locales "/lib/locale"))
|
(setenv "LOCPATH"
|
||||||
(setlocale LC_ALL "en_US.UTF-8"))
|
(string-append #+locales "/lib/locale/"
|
||||||
|
#+(and locales
|
||||||
|
(package-version locales))))
|
||||||
|
(setlocale LC_ALL "en_US.utf8"))
|
||||||
|
|
||||||
(setenv "PATH" (string-append #+xz "/bin" ":"
|
(setenv "PATH" (string-append #+xz "/bin" ":"
|
||||||
#+decomp "/bin"))
|
#+decomp "/bin"))
|
||||||
|
|
|
@ -573,8 +573,10 @@ MANIFEST. Single-file bundles are required by programs such as Git and Lynx."
|
||||||
|
|
||||||
;; Some file names in the NSS certificates are UTF-8 encoded so
|
;; Some file names in the NSS certificates are UTF-8 encoded so
|
||||||
;; install a UTF-8 locale.
|
;; install a UTF-8 locale.
|
||||||
(setenv "LOCPATH" (string-append #+glibc-utf8-locales "/lib/locale"))
|
(setenv "LOCPATH"
|
||||||
(setlocale LC_ALL "en_US.UTF-8")
|
(string-append #+glibc-utf8-locales "/lib/locale/"
|
||||||
|
#+(package-version glibc-utf8-locales)))
|
||||||
|
(setlocale LC_ALL "en_US.utf8")
|
||||||
|
|
||||||
(match (append-map ca-files '#$(manifest-inputs manifest))
|
(match (append-map ca-files '#$(manifest-inputs manifest))
|
||||||
(()
|
(()
|
||||||
|
|
Loading…
Reference in New Issue