mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 05:18:07 -05:00
Merge branch 'core-updates'
This commit is contained in:
commit
adc90e0eac
28 changed files with 528 additions and 244 deletions
|
@ -1,5 +1,5 @@
|
|||
;;; 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.
|
||||
;;;
|
||||
|
@ -29,7 +29,7 @@
|
|||
(operating-system
|
||||
(host-name "gnu")
|
||||
(timezone "Europe/Paris")
|
||||
(locale "en_US.UTF-8")
|
||||
(locale "en_US.utf8")
|
||||
|
||||
(bootloader (grub-configuration
|
||||
(device "/dev/sda")))
|
||||
|
|
|
@ -940,24 +940,24 @@ daemons on the same machine.
|
|||
@node Application Setup
|
||||
@section Application Setup
|
||||
|
||||
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
|
||||
some of them.
|
||||
When using Guix on top of GNU/Linux distribution other than GuixSD---a
|
||||
so-called @dfn{foreign distro}---a few additional steps are needed to
|
||||
get everything in place. Here are some of them.
|
||||
|
||||
@subsection Locales
|
||||
|
||||
@anchor{locales-and-locpath}
|
||||
@cindex locales, when not on GuixSD
|
||||
@vindex LOCPATH
|
||||
@vindex GUIX_LOCPATH
|
||||
Packages installed @i{via} Guix will not use the host system's locale
|
||||
data. Instead, you must first install one of the locale packages
|
||||
available with Guix and then define the @code{LOCPATH} environment
|
||||
variable (@pxref{Locale Names, @code{LOCPATH},, libc, The GNU C Library
|
||||
Reference Manual}):
|
||||
available with Guix and then define the @code{GUIX_LOCPATH} environment
|
||||
variable:
|
||||
|
||||
@example
|
||||
$ guix package -i glibc-locales
|
||||
$ export LOCPATH=$HOME/.guix-profile/lib/locale
|
||||
$ export GUIX_LOCPATH=$HOME/.guix-profile/lib/locale
|
||||
@end example
|
||||
|
||||
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
|
||||
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
|
||||
|
||||
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
|
||||
The compiled locale definitions are available at
|
||||
@file{/run/current-system/locale}, which is the default location where
|
||||
the GNU@tie{}libc looks for locale data. This can be overridden using
|
||||
the @code{LOCPATH} environment variable (@pxref{locales-and-locpath,
|
||||
@file{/run/current-system/locale/X.Y}, where @code{X.Y} is the libc
|
||||
version, which is the default location where the GNU@tie{}libc provided
|
||||
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}).
|
||||
|
||||
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/clucene-pkgconfig.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/cpufrequtils-fix-aclocal.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-ldd-x86_64.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-versioned-locpath.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/gnutls-doc-fix.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/pidgin-add-search-path.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/polkit-drop-test.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-stty.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-fix-tests.patch \
|
||||
gnu/packages/patches/python2-rdflib-drop-sparqlwrapper.patch \
|
||||
|
|
|
@ -251,7 +251,14 @@ (define-public coreutils
|
|||
(base32
|
||||
"0w11jw3fb5sslf0f72kxy7llxgk1ia3a6bcw0c9kmvxrlj355mx2"))
|
||||
(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)
|
||||
(inputs `(("acl" ,acl) ; TODO: add SELinux
|
||||
("gmp" ,gmp) ;bignums in 'expr', yay!
|
||||
|
@ -476,6 +483,8 @@ (define-public glibc
|
|||
(modules '((guix build utils)))
|
||||
(patches (map search-patch
|
||||
'("glibc-ldd-x86_64.patch"
|
||||
"glibc-locale-incompatibility.patch"
|
||||
"glibc-versioned-locpath.patch"
|
||||
"glibc-o-largefile.patch")))))
|
||||
(build-system gnu-build-system)
|
||||
|
||||
|
@ -509,12 +518,16 @@ (define-public glibc
|
|||
;; Set the default locale path. In practice, $LOCPATH may be
|
||||
;; defined to point whatever locales users want. However, setuid
|
||||
;; binaries don't honor $LOCPATH, so they'll instead look into
|
||||
;; $libc_cv_localedir; we choose /run/current-system/locale, with
|
||||
;; the idea that it is going to be populated by the sysadmin.
|
||||
;; $libc_cv_localedir; we choose /run/current-system/locale/X.Y,
|
||||
;; 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.
|
||||
;; 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="
|
||||
(assoc-ref %build-inputs "linux-headers")
|
||||
|
@ -602,9 +615,11 @@ (define-public glibc
|
|||
|
||||
(native-search-paths
|
||||
;; 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
|
||||
(variable "LOCPATH")
|
||||
(variable "GUIX_LOCPATH")
|
||||
(files '("lib/locale")))))
|
||||
|
||||
(synopsis "The GNU C Library")
|
||||
|
@ -645,10 +660,11 @@ (define-public glibc-locales
|
|||
(alist-delete 'install ,phases)))
|
||||
((#:configure-flags 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="
|
||||
(assoc-ref %outputs "out")
|
||||
"/lib/locale")))))))))
|
||||
"/lib/locale/"
|
||||
,(package-version glibc))))))))))
|
||||
|
||||
(define-public glibc-utf8-locales
|
||||
(package
|
||||
|
@ -657,7 +673,7 @@ (define-public glibc-utf8-locales
|
|||
(source #f)
|
||||
(build-system trivial-build-system)
|
||||
(arguments
|
||||
'(#:modules ((guix build utils))
|
||||
`(#:modules ((guix build utils))
|
||||
#:builder (begin
|
||||
(use-modules (srfi srfi-1)
|
||||
(guix build utils))
|
||||
|
@ -665,18 +681,29 @@ (define-public glibc-utf8-locales
|
|||
(let* ((libc (assoc-ref %build-inputs "glibc"))
|
||||
(gzip (assoc-ref %build-inputs "gzip"))
|
||||
(out (assoc-ref %outputs "out"))
|
||||
(localedir (string-append out "/lib/locale")))
|
||||
(localedir (string-append out "/lib/locale/"
|
||||
,version)))
|
||||
;; 'localedef' needs 'gzip'.
|
||||
(setenv "PATH" (string-append libc "/bin:" gzip "/bin"))
|
||||
|
||||
(mkdir-p localedir)
|
||||
(every (lambda (locale)
|
||||
(zero? (system* "localedef" "--no-archive"
|
||||
"--prefix" localedir "-i" locale
|
||||
"-f" "UTF-8"
|
||||
(define file
|
||||
;; Use the "normalized codeset" by
|
||||
;; 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 "/"
|
||||
locale
|
||||
".UTF-8"))))
|
||||
locale ".UTF-8"))
|
||||
#t)))
|
||||
|
||||
;; These are the locales commonly used for
|
||||
;; tests---e.g., in Guile's i18n tests.
|
||||
|
|
|
@ -660,46 +660,6 @@ (define glibc-utf8-locales-final
|
|||
(current-source-location)
|
||||
#: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
|
||||
;; The final 'ld' wrapper, which uses the final Guile and Binutils.
|
||||
(package (inherit ld-wrapper-boot3)
|
||||
|
@ -710,40 +670,11 @@ (define-public ld-wrapper
|
|||
'("guile" "bash"))))))
|
||||
|
||||
(define %boot5-inputs
|
||||
;; Now with UTF-8 locales. Since the locale binary format differs between
|
||||
;; libc versions, we have to rebuild some of the packages so that they use
|
||||
;; 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
|
||||
;; Now with UTF-8 locales. 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>.
|
||||
(let ((new-libc-package (compose package-with-bootstrap-guile
|
||||
(cut package-with-explicit-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")))))
|
||||
`(("locales" ,glibc-utf8-locales-final)
|
||||
,@%boot4-inputs))
|
||||
|
||||
(define gnu-make-final
|
||||
;; The final GNU Make, which uses the final Guile.
|
||||
|
|
|
@ -57,17 +57,7 @@ (define-public gawk
|
|||
(string-append "### " match))))
|
||||
'())))
|
||||
|
||||
(alist-cons-before
|
||||
'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))))
|
||||
%standard-phases)))
|
||||
(inputs `(("libsigsegv" ,libsigsegv)
|
||||
|
||||
,@(if (%current-target-system)
|
||||
|
|
|
@ -40,14 +40,14 @@ (define-module (gnu packages gettext)
|
|||
(define-public gnu-gettext
|
||||
(package
|
||||
(name "gettext")
|
||||
(version "0.19.5")
|
||||
(version "0.19.6")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/gettext/gettext-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0fppvj4l9maa9q1swvhnv96hsqxx90vcjbdyjhqpir3ll55q2n0j"))))
|
||||
"0pb9vp4ifymvdmc31ks3xxcnfqgzj8shll39czmk8c1splclqjzd"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("expat" ,expat)))
|
||||
|
|
|
@ -332,7 +332,7 @@ (define-public gtksourceview
|
|||
(define-public gdk-pixbuf
|
||||
(package
|
||||
(name "gdk-pixbuf")
|
||||
(version "2.31.6")
|
||||
(version "2.32.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnome/sources/" name "/"
|
||||
|
@ -340,7 +340,7 @@ (define-public gdk-pixbuf
|
|||
name "-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"062x2gqd7p6yxhxlib1ha4l3gk9ihcj080hrwwv9vmlmybb064hi"))))
|
||||
"1g7kjxv67jcdasi14n7jan4icrnnppd1m99wrdmpv32k4m7vfcj4"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:configure-flags '("--with-x11")
|
||||
|
|
|
@ -296,25 +296,17 @@ (define-public guile-ncurses
|
|||
(string-append "--with-guilesitedir="
|
||||
(assoc-ref %outputs "out")
|
||||
"/share/guile/site/2.0"))
|
||||
#:phases (alist-cons-before
|
||||
'check 'change-locale
|
||||
(lambda _
|
||||
;; Use the locale that's actually available in the build
|
||||
;; environment.
|
||||
(substitute* "test/f009_form_wide.test"
|
||||
(("en_US\\.utf8")
|
||||
"en_US.UTF-8")))
|
||||
(alist-cons-after
|
||||
'install 'post-install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(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))))
|
||||
#:phases (alist-cons-after
|
||||
'install 'post-install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(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/")
|
||||
(synopsis "Guile bindings to ncurses")
|
||||
(description
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
;;; 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 © 2015 Andreas Enge <andreas@enge.fr>
|
||||
;;;
|
||||
|
@ -39,7 +39,9 @@ (define-public gmp
|
|||
(sha256
|
||||
(base32
|
||||
"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)
|
||||
(native-inputs `(("m4" ,m4)))
|
||||
(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:
|
23
gnu/packages/patches/glibc-locale-incompatibility.patch
Normal file
23
gnu/packages/patches/glibc-locale-incompatibility.patch
Normal file
|
@ -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);
|
240
gnu/packages/patches/glibc-versioned-locpath.patch
Normal file
240
gnu/packages/patches/glibc-versioned-locpath.patch
Normal file
|
@ -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
|
11
gnu/packages/patches/gmp-faulty-test.patch
Normal file
11
gnu/packages/patches/gmp-faulty-test.patch
Normal file
|
@ -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);
|
16
gnu/packages/patches/python-2.7-search-paths.patch
Normal file
16
gnu/packages/patches/python-2.7-search-paths.patch
Normal file
|
@ -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']
|
19
gnu/packages/patches/python-3-search-paths.patch
Normal file
19
gnu/packages/patches/python-3-search-paths.patch
Normal file
|
@ -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 @@ (define-module (gnu packages python)
|
|||
#:use-module (gnu packages xml)
|
||||
#:use-module (gnu packages xorg)
|
||||
#:use-module (gnu packages zip)
|
||||
#:use-module (gnu packages tcl)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix git-download)
|
||||
|
@ -86,7 +87,8 @@ (define-public python-2
|
|||
version "/Python-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1h7zbrf9pkj29hlm18b10548ch9757f75m64l47sy75rh43p7lqw"))))
|
||||
"1h7zbrf9pkj29hlm18b10548ch9757f75m64l47sy75rh43p7lqw"))
|
||||
(patches (list (search-patch "python-2.7-search-paths.patch")))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f
|
||||
|
@ -132,32 +134,10 @@ (define-public python-2
|
|||
;; such file or directory
|
||||
#:test-target "test"
|
||||
#:configure-flags
|
||||
(let ((bz2 (assoc-ref %build-inputs "bzip2"))
|
||||
(gdbm (assoc-ref %build-inputs "gdbm"))
|
||||
(libffi (assoc-ref %build-inputs "libffi"))
|
||||
(sqlite (assoc-ref %build-inputs "sqlite"))
|
||||
(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")))
|
||||
(list "--enable-shared" ;allow embedding
|
||||
"--with-system-ffi" ;build ctypes
|
||||
(string-append "LDFLAGS=-Wl,-rpath="
|
||||
(assoc-ref %outputs "out") "/lib"))
|
||||
|
||||
#:modules ((ice-9 ftw)
|
||||
,@%gnu-build-system-modules)
|
||||
|
@ -200,7 +180,9 @@ (define-public python-2
|
|||
("sqlite" ,sqlite) ; for sqlite extension
|
||||
("openssl" ,openssl)
|
||||
("readline" ,readline)
|
||||
("zlib" ,zlib)))
|
||||
("zlib" ,zlib)
|
||||
("tcl" ,tcl)
|
||||
("tk" ,tk))) ; for tkinter
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
(native-search-paths
|
||||
|
@ -208,8 +190,7 @@ (define-public python-2
|
|||
(variable "PYTHONPATH")
|
||||
(files '("lib/python2.7/site-packages")))))
|
||||
(home-page "http://python.org")
|
||||
(synopsis
|
||||
"High-level, dynamically-typed programming language")
|
||||
(synopsis "High-level, dynamically-typed programming language")
|
||||
(description
|
||||
"Python is a remarkably powerful dynamic programming language that
|
||||
is used in a wide variety of application domains. Some of its key
|
||||
|
@ -227,9 +208,11 @@ (define-public python
|
|||
(method url-fetch)
|
||||
(uri (string-append "https://www.python.org/ftp/python/"
|
||||
version "/Python-" version ".tar.xz"))
|
||||
(patches (list (search-patch "python-fix-tests.patch")
|
||||
;; XXX Try removing this patch for python > 3.4.3
|
||||
(search-patch "python-disable-ssl-test.patch")))
|
||||
(patches (map search-patch
|
||||
'("python-fix-tests.patch"
|
||||
;; XXX Try removing this patch for python > 3.4.3
|
||||
"python-disable-ssl-test.patch"
|
||||
"python-3-search-paths.patch")))
|
||||
(patch-flags '("-p0"))
|
||||
(sha256
|
||||
(base32
|
||||
|
@ -243,9 +226,38 @@ (define-public python
|
|||
(version-major+minor version)
|
||||
"/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)
|
||||
(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)
|
||||
(build-system trivial-build-system)
|
||||
(propagated-inputs `(("python" ,python)))
|
||||
|
@ -263,9 +275,14 @@ (define-public python-wrapper
|
|||
(string-append bin "/" new)))
|
||||
`("python3", "pydoc3", "idle3")
|
||||
`("python", "pydoc", "idle"))))))
|
||||
(description (string-append (package-description python)
|
||||
"\n\nThis wrapper package provides symbolic links to the python binaries
|
||||
without version suffix."))))
|
||||
(synopsis "Wrapper for the Python 3 commands")
|
||||
(description
|
||||
"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
|
||||
(package
|
||||
|
@ -4015,7 +4032,7 @@ (define-public python-ipython
|
|||
(man1 (string-append data "/man/man1"))
|
||||
(info (string-append data "/info"))
|
||||
(examples (string-append doc "/examples")))
|
||||
(setenv "LANG" "en_US.UTF-8")
|
||||
(setenv "LANG" "en_US.utf8")
|
||||
(with-directory-excursion "docs"
|
||||
;; FIXME: html and pdf fail to build
|
||||
;; (system* "make" "html")
|
||||
|
|
|
@ -45,6 +45,13 @@ (define-public texinfo
|
|||
(inputs `(("ncurses" ,ncurses)
|
||||
("xz" ,xz)
|
||||
("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/")
|
||||
(synopsis "The GNU documentation format")
|
||||
(description
|
||||
|
|
|
@ -171,24 +171,21 @@ (define-public xeyes
|
|||
(define-public pixman
|
||||
(package
|
||||
(name "pixman")
|
||||
(version "0.32.6")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"http://cairographics.org/releases/pixman-"
|
||||
version
|
||||
".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0129g4zdrw5hif5783li7rzcr4vpbc2cfia91azxmsk0h0xx3zix"))
|
||||
(patches (list (search-patch "pixman-pointer-arithmetic.patch")))))
|
||||
(version "0.32.8")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"http://cairographics.org/releases/pixman-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0pfn0247sjsi95kwjih0wwqpp28wadihqk1bn28x6iqbqhbxwnjp"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("libpng" ,libpng)
|
||||
("zlib" ,zlib)))
|
||||
`(("libpng" ,libpng)
|
||||
("zlib" ,zlib)))
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
(home-page "http://www.pixman.org/")
|
||||
(synopsis "Low-level pixel manipulation library")
|
||||
(description "Pixman is a low-level software library for pixel
|
||||
|
|
|
@ -135,7 +135,7 @@ (define-public libxslt
|
|||
(synopsis "C library for applying XSLT stylesheets to XML documents")
|
||||
(inputs `(("libgcrypt" ,libgcrypt)
|
||||
("libxml2" ,libxml2)
|
||||
("python" ,python-wrapper)
|
||||
("python" ,python-minimal-wrapper)
|
||||
("zlib" ,zlib)))
|
||||
(description
|
||||
"Libxslt is an XSLT C library developed for the GNOME project. It is
|
||||
|
|
|
@ -2050,7 +2050,7 @@ (define-public xcb-proto
|
|||
"0bp3f53l9fy5x3mn1rkj1g81aiyzl90wacwvqdgy831aa3kfxb5l"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config) ("python" ,python-wrapper)))
|
||||
`(("pkg-config" ,pkg-config) ("python" ,python-minimal-wrapper)))
|
||||
(home-page "http://www.x.org/wiki/")
|
||||
(synopsis "XML-XCB protocol descriptions")
|
||||
(description
|
||||
|
@ -4804,7 +4804,7 @@ (define-public libxcb
|
|||
("libxslt" ,libxslt)))
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)
|
||||
("python" ,python-wrapper)))
|
||||
("python" ,python-minimal-wrapper)))
|
||||
(arguments
|
||||
`(#:configure-flags '("--enable-xkb")))
|
||||
(home-page "http://www.x.org/wiki/")
|
||||
|
@ -4889,7 +4889,7 @@ (define-public xorg-server
|
|||
("xtrans" ,xtrans)
|
||||
("zlib" ,zlib)))
|
||||
(native-inputs
|
||||
`(("python" ,python-wrapper)
|
||||
`(("python" ,python-minimal-wrapper)
|
||||
("pkg-config" ,pkg-config)))
|
||||
(arguments
|
||||
`(#:parallel-tests? #f
|
||||
|
|
|
@ -19,6 +19,7 @@
|
|||
(define-module (gnu system locale)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (guix records)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (gnu packages base)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (srfi srfi-26)
|
||||
|
@ -57,14 +58,20 @@ (define* (localedef-command locale
|
|||
"-i" #$(locale-definition-source locale)
|
||||
"-f" #$(locale-definition-charset locale)
|
||||
(string-append #$output "/"
|
||||
#$(package-version libc) "/"
|
||||
#$(locale-definition-name locale))))))
|
||||
|
||||
(define* (locale-directory locales
|
||||
#: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
|
||||
#~(begin
|
||||
(mkdir #$output)
|
||||
(mkdir (string-append #$output "/" #$(package-version libc)))
|
||||
|
||||
;; 'localedef' executes 'gzip' to access compressed locale sources.
|
||||
(setenv "PATH" (string-append #$gzip "/bin"))
|
||||
|
|
|
@ -287,7 +287,7 @@ (define* (gnu-build store name input-drvs
|
|||
"bin" "sbin"))
|
||||
(validate-runpath? #t)
|
||||
(phases '%standard-phases)
|
||||
(locale "en_US.UTF-8")
|
||||
(locale "en_US.utf8")
|
||||
(system (%current-system))
|
||||
(build (nix-system->gnu-triplet system))
|
||||
(imported-modules %gnu-build-system-modules)
|
||||
|
@ -422,7 +422,7 @@ (define* (gnu-cross-build store name
|
|||
"bin" "sbin"))
|
||||
(validate-runpath? #t)
|
||||
(phases '%standard-phases)
|
||||
(locale "en_US.UTF-8")
|
||||
(locale "en_US.utf8")
|
||||
(system (%current-system))
|
||||
(build (nix-system->gnu-triplet system))
|
||||
(imported-modules %gnu-build-system-modules)
|
||||
|
|
|
@ -99,7 +99,7 @@ (define native-input-directories
|
|||
#t)
|
||||
|
||||
(define* (install-locale #:key
|
||||
(locale "en_US.UTF-8")
|
||||
(locale "en_US.utf8")
|
||||
(locale-category LC_ALL)
|
||||
#:allow-other-keys)
|
||||
"Try to install LOCALE; emit a warning if that fails. The main goal is to
|
||||
|
@ -409,18 +409,6 @@ (define (strip-dir dir)
|
|||
strip-directories)))
|
||||
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
|
||||
(validate-runpath? #t)
|
||||
(elf-directories '("lib" "lib64" "libexec"
|
||||
|
|
|
@ -59,10 +59,12 @@ (define-module (guix build utils)
|
|||
list->search-path-as-string
|
||||
which
|
||||
|
||||
every*
|
||||
alist-cons-before
|
||||
alist-cons-after
|
||||
alist-replace
|
||||
modify-phases
|
||||
|
||||
with-atomic-file-replacement
|
||||
substitute
|
||||
substitute*
|
||||
|
@ -454,6 +456,18 @@ (define (which program)
|
|||
;;; 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
|
||||
#:optional (key=? equal?))
|
||||
"Insert the KEY/VALUE pair before the first occurrence of a pair whose key
|
||||
|
|
|
@ -477,8 +477,11 @@ (define (first-file directory)
|
|||
(when #+locales
|
||||
;; First of all, install a UTF-8 locale so that UTF-8 file names
|
||||
;; are correctly interpreted. During bootstrap, LOCALES is #f.
|
||||
(setenv "LOCPATH" (string-append #+locales "/lib/locale"))
|
||||
(setlocale LC_ALL "en_US.UTF-8"))
|
||||
(setenv "LOCPATH"
|
||||
(string-append #+locales "/lib/locale/"
|
||||
#+(and locales
|
||||
(package-version locales))))
|
||||
(setlocale LC_ALL "en_US.utf8"))
|
||||
|
||||
(setenv "PATH" (string-append #+xz "/bin" ":"
|
||||
#+decomp "/bin"))
|
||||
|
|
|
@ -573,8 +573,10 @@ (define (dump file port)
|
|||
|
||||
;; Some file names in the NSS certificates are UTF-8 encoded so
|
||||
;; install a UTF-8 locale.
|
||||
(setenv "LOCPATH" (string-append #+glibc-utf8-locales "/lib/locale"))
|
||||
(setlocale LC_ALL "en_US.UTF-8")
|
||||
(setenv "LOCPATH"
|
||||
(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))
|
||||
(()
|
||||
|
|
Loading…
Reference in a new issue