diff options
Diffstat (limited to 'gnu/packages/linux.scm')
-rw-r--r-- | gnu/packages/linux.scm | 233 |
1 files changed, 156 insertions, 77 deletions
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 4f8400ba53..3fd70306eb 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -22,7 +22,7 @@ ;;; Copyright © 2017, 2018 Leo Famulari <leo@famulari.name> ;;; Copyright © 2017 José Miguel Sánchez García <jmi2k@openmailbox.com> ;;; Copyright © 2017 Gábor Boskovits <boskovits@gmail.com> -;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> +;;; Copyright © 2017, 2019 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2017 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2017, 2018, 2019 Rutger Helling <rhelling@mykolab.com> ;;; Copyright © 2017 nee <nee-git@hidamari.blue> @@ -1118,19 +1118,33 @@ providing the system administrator with some help in common tasks.") (("build_kill=yes") "build_kill=no")) #t)))) (build-system gnu-build-system) - (outputs '("out" - "static")) ;>2 MiB of static .a libraries + (outputs '("out" ;6.4 MiB executables and documentation + "lib" ;8.8 MiB shared libraries, headers and locales + "static")) ;2.9 MiB static .a libraries (arguments `(#:configure-flags (list "--disable-use-tty-group" "--enable-fs-paths-default=/run/current-system/profile/sbin" ;; Don't try to chown root:root mount and umount "--disable-makeinstall-chown" + "--localstatedir=/var" + (string-append "--localedir=" + (assoc-ref %outputs "lib") + "/share/locale") ;; Install completions where our ;; bash-completion package expects them. (string-append "--with-bashcompletiondir=" (assoc-ref %outputs "out") "/etc/bash_completion.d")) #:phases (modify-phases %standard-phases + (add-before 'configure 'patch-build-scripts + (lambda* (#:key outputs #:allow-other-keys) + (substitute* "configure" + ;; The build system assumes that we want to install + ;; libraries below $exec_prefix when $libdir does not + ;; match any of the "usual" locations. Fix that. + (("usrlib_execdir='\\$\\{exec_prefix\\}'\\$libdir") + "usrlib_execdir=$libdir")) + #t)) (add-before 'build 'set-umount-file-name (lambda* (#:key outputs #:allow-other-keys) ;; Tell 'eject' the right file name of 'umount'. @@ -1150,10 +1164,12 @@ providing the system administrator with some help in common tasks.") #t))) (add-after 'install 'move-static-libraries (lambda* (#:key outputs #:allow-other-keys) - (let ((out (assoc-ref outputs "out")) + (let ((lib (assoc-ref outputs "lib")) (static (assoc-ref outputs "static"))) + + ;; Move static libraries to the "static" output. (mkdir-p (string-append static "/lib")) - (with-directory-excursion out + (with-directory-excursion lib (for-each (lambda (file) (rename-file file (string-append static "/" @@ -1166,7 +1182,16 @@ providing the system administrator with some help in common tasks.") (substitute* (find-files "lib" "\\.la$") (("old_library=.*") "old_library=''\n"))) - #t)))))) + #t))) + (add-after 'install 'adjust-pkg-config-files + (lambda* (#:key outputs #:allow-other-keys) + (let ((lib (assoc-ref outputs "lib"))) + ;; Drop the unused "prefix=" and "exec_prefix=" variables from + ;; the pkg-config files to avoid a cyclic reference on "out". + (substitute* (find-files (string-append lib "/lib/pkgconfig") + "\\.pc$") + (("^(exec_)?prefix=.*") ""))) + #t))))) (inputs `(("zlib" ,zlib) ("ncurses" ,ncurses) @@ -1234,10 +1259,16 @@ by Robert Shea and Robert Anton Wilson.") "1br0g93ysqhlv13i1k4lfbimsgxnpy5rgs4lxfc9rkzdbpbaqplj")))) (build-system gnu-build-system) (arguments - '(#:modules ((guix build utils) + `(#:modules ((guix build utils) (guix build gnu-build-system) (srfi srfi-1) (srfi srfi-26)) + ,@(if (%current-target-system) + '(#:configure-flags + (list + "ac_cv_func_malloc_0_nonnull=yes" + "ac_cv_func_realloc_0_nonnull=yes")) + '()) #:phases (modify-phases %standard-phases (add-after @@ -1327,7 +1358,7 @@ slabtop, and skill.") (base32 "1pmf8inp736l587rqq7qsd8bv0mmg5cwrivxg5p5awqgv70crypr")))) (build-system gnu-build-system) - (inputs `(("util-linux" ,util-linux))) + (inputs `(("util-linux" ,util-linux "lib"))) (native-inputs `(("pkg-config" ,pkg-config) ("texinfo" ,texinfo) ;for the libext2fs Info manual @@ -1611,12 +1642,13 @@ MIDI functionality to the Linux-based operating system.") (("\\$\\(MKDIR_P\\) .*ASOUND_STATE_DIR.*") "true\n")) #t))))) + (native-inputs + `(("gettext" ,gettext-minimal))) (inputs `(("libsamplerate" ,libsamplerate) ("ncurses" ,ncurses) ("alsa-lib" ,alsa-lib) - ("xmlto" ,xmlto) - ("gettext" ,gettext-minimal))) + ("xmlto" ,xmlto))) (home-page "http://www.alsa-project.org/") (synopsis "Utilities for the Advanced Linux Sound Architecture (ALSA)") (description @@ -2034,35 +2066,18 @@ transparently through a bridge.") "/libnl-doc-" version ".tar.gz")) (sha256 (base32 "19p5y8q3cm5wqvamqc4s5syxnnkvzxy3gw8ivxk6fv9ybn8jm35h")))))) - (inputs - `(("python-2" ,python-2) - ("python-3" ,python-3))) - (outputs '("out" "doc" "python2" "python3")) + (outputs `("out" "doc")) (arguments - `(#:modules ((guix build gnu-build-system) - (guix build utils) - (srfi srfi-1)) - #:phases + `(#:phases (modify-phases %standard-phases - (add-after 'install 'install-python - (lambda* (#:key outputs #:allow-other-keys) - (define (python-inst python) - (invoke python "setup.py" "build") - (invoke python "setup.py" "install" - (string-append "--prefix=" - (assoc-ref %outputs python))) - (invoke python "setup.py" "clean")) - (setenv "LDFLAGS" (format #f "-Wl,-rpath=~a/lib" - (assoc-ref %outputs "out"))) - (with-directory-excursion "./python" - (for-each python-inst '("python2" "python3"))) - #t)) (add-after 'install 'install-doc - (lambda* (#:key inputs outputs #:allow-other-keys) + (lambda* (#:key inputs native-inputs outputs #:allow-other-keys) (let ((dest (string-append (assoc-ref outputs "doc") "/share/doc/libnl"))) (mkdir-p dest) - (invoke "tar" "xf" (assoc-ref inputs "libnl3-doc") + (invoke "tar" "xf" (assoc-ref + (or native-inputs inputs) + "libnl3-doc") "--strip-components=1" "-C" dest))))))) (home-page "https://www.infradead.org/~tgr/libnl/") (synopsis "NetLink protocol library suite") @@ -2077,6 +2092,43 @@ configuration and monitoring interfaces.") ;; 'nl-addr-add.c'), so the result is GPLv2-only. (license license:gpl2))) +;; libnl python extensions used to be outputs of libnl. However, as +;; cross-compiling python extensions is currently broken, create separate +;; packages for libnl python extensions. +(define (libnl-python-package python) + (let ((name (string-append "libnl-" python))) + (package + (inherit libnl) + (name name) + (inputs `(,@(cond + ((string=? python "python2") + `(("python-2" ,python-2))) + ((string=? python "python3") + `(("python-3" ,python-3)))))) + (propagated-inputs `(("libnl" ,libnl))) + (outputs '("out")) + (arguments + `(#:modules ((guix build gnu-build-system) + (guix build utils) + (srfi srfi-1)) + #:phases + (modify-phases %standard-phases + (replace 'install + (lambda* (#:key inputs outputs #:allow-other-keys) + (define (python-inst python) + (invoke python "setup.py" "build") + (invoke python "setup.py" "install" + (string-append "--prefix=" + (assoc-ref %outputs "out"))) + (invoke python "setup.py" "clean")) + (setenv "LDFLAGS" (format #f "-Wl,-rpath=~a/lib" + (assoc-ref inputs "libnl"))) + (with-directory-excursion "./python" (python-inst ,python)) + #t)))))))) + +(define-public libnl-python2 (libnl-python-package "python2")) +(define-public libnl-python3 (libnl-python-package "python3")) + (define-public iw (package (name "iw") @@ -2672,7 +2724,7 @@ from the module-init-tools project.") (patches (search-patches "eudev-rules-directory.patch")))) (build-system gnu-build-system) (arguments - '(#:phases + `(#:phases (modify-phases %standard-phases (add-after 'unpack 'make-source-writable (lambda _ @@ -2681,19 +2733,25 @@ from the module-init-tools project.") (for-each make-file-writable (find-files ".")) #t)) (add-before 'bootstrap 'patch-file-names - (lambda* (#:key inputs #:allow-other-keys) + (lambda* (#:key inputs native-inputs #:allow-other-keys) (substitute* "man/make.sh" (("/usr/bin/xsltproc") - (string-append (assoc-ref inputs "xsltproc") + (string-append (assoc-ref + (or native-inputs inputs) "xsltproc") "/bin/xsltproc"))) #t)) (add-after 'install 'build-hwdb (lambda* (#:key outputs #:allow-other-keys) ;; Build OUT/etc/udev/hwdb.bin. This allows 'lsusb' and ;; similar tools to display product names. + ;; + ;; XXX: This can't be done when cross-compiling. Find another way + ;; to generate hwdb.bin for cross-built systems. (let ((out (assoc-ref outputs "out"))) - (invoke (string-append out "/bin/udevadm") - "hwdb" "--update"))))) + ,@(if (%current-target-system) + '(#t) + '((invoke (string-append out "/bin/udevadm") + "hwdb" "--update"))))))) #:configure-flags (list "--enable-manpages"))) (native-inputs `(("autoconf" ,autoconf) @@ -2713,7 +2771,7 @@ from the module-init-tools project.") ;; When linked against libblkid, eudev can populate /dev/disk/by-label ;; and similar; it also installs the '60-persistent-storage.rules' file, ;; which contains the rules to do that. - `(("util-linux" ,util-linux) ;for blkid + `(("util-linux" ,util-linux "lib") ;for blkid ("kmod" ,kmod))) (home-page "https://wiki.gentoo.org/wiki/Project:Eudev") (synopsis "Userspace device management") @@ -2756,7 +2814,7 @@ time.") (inputs `(("udev" ,eudev))) (arguments - '(#:phases + `(#:phases (modify-phases %standard-phases (add-after 'configure 'set-makefile-shell (lambda _ @@ -2791,7 +2849,12 @@ time.") (assoc-ref %outputs "out") "/lib,-rpath=" (assoc-ref %outputs "out") - "/lib/device-mapper")) + "/lib/device-mapper") + ;; This is needed when cross-compiling. + ,@(if (%current-target-system) + '("ac_cv_func_malloc_0_nonnull=yes" + "ac_cv_func_realloc_0_nonnull=yes") + '())) ;; The tests use 'mknod', which requires root access. #:tests? #f)) @@ -2887,13 +2950,23 @@ interface.") (patches (search-patches "crda-optional-gcrypt.patch")))) (build-system gnu-build-system) (arguments - '(#:phases (modify-phases %standard-phases + `(#:phases (modify-phases %standard-phases (delete 'configure) (add-after 'unpack 'gzip-determinism (lambda _ (substitute* "Makefile" (("gzip") "gzip --no-name")) #t)) + ,@(if (%current-target-system) + '((add-after + 'unpack 'fix-pkg-config + (lambda* (#:key target #:allow-other-keys) + (substitute* + "Makefile" + (("pkg-config") + (string-append target "-pkg-config"))) + #t))) + '()) (add-before 'build 'no-werror-no-ldconfig (lambda _ @@ -2903,37 +2976,44 @@ interface.") #t)) (add-before 'build 'set-regulator-db-file-name - (lambda* (#:key inputs #:allow-other-keys) + (lambda* (#:key native-inputs inputs #:allow-other-keys) ;; Tell CRDA where to find our database. - (let ((regdb (assoc-ref inputs "wireless-regdb"))) + (let ((regdb (assoc-ref (or native-inputs inputs) + "wireless-regdb"))) (substitute* "crda.c" (("\"/lib/crda/regulatory.bin\"") (string-append "\"" regdb "/lib/crda/regulatory.bin\""))) #t)))) #:test-target "verify" - #:make-flags (let ((out (assoc-ref %outputs "out")) - (regdb (assoc-ref %build-inputs "wireless-regdb"))) - (list "CC=gcc" "V=1" - - ;; Disable signature-checking on 'regulatory.bin'. - ;; The reason is that this simplifies maintenance - ;; on our side (no need to manage a distro key - ;; pair), and we can guarantee integrity of - ;; 'regulatory.bin' by other means anyway, such as - ;; 'guix gc --verify'. See - ;; <https://wireless.wiki.kernel.org/en/developers/regulatory/wireless-regdb> - ;; for a discssion. - "USE_OPENSSL=0" - - (string-append "PREFIX=" out) - (string-append "SBINDIR=" out "/sbin/") - (string-append "UDEV_RULE_DIR=" - out "/lib/udev/rules.d") - (string-append "LDFLAGS=-Wl,-rpath=" - out "/lib -L.") - (string-append "REG_BIN=" regdb - "/lib/crda/regulatory.bin"))))) + #:make-flags (let ((out (assoc-ref %outputs "out")) + (regdb (assoc-ref %build-inputs "wireless-regdb")) + (target ,(%current-target-system))) + (list + (string-append + "CC=" (if target + (string-append target "-gcc") "gcc")) + "V=1" + + ;; Disable signature-checking on 'regulatory.bin'. + ;; The reason is that this simplifies maintenance + ;; on our side (no need to manage a distro key + ;; pair), and we can guarantee integrity of + ;; 'regulatory.bin' by other means anyway, such as + ;; 'guix gc --verify'. See + ;; <https://wireless.wiki.kernel.org/en/developers/regulatory/wireless-regdb> + ;; for a discssion. + "USE_OPENSSL=0" + + (string-append "PREFIX=" out) + (string-append "SBINDIR=" out "/sbin/") + (string-append "UDEV_RULE_DIR=" + out "/lib/udev/rules.d") + (string-append "LDFLAGS=-Wl,-rpath=" + out "/lib -L.") + (string-append "REG_BIN=" regdb + "/lib/crda/regulatory.bin") + "all_noverify")))) (native-inputs `(("pkg-config" ,pkg-config) ("wireless-regdb" ,wireless-regdb))) (inputs `(("libnl" ,libnl))) @@ -3606,8 +3686,9 @@ MPEG-2 and audio over Linux IEEE 1394.") #:phases (modify-phases %standard-phases (add-before 'build 'patch-program-paths - (lambda* (#:key inputs #:allow-other-keys) - (let ((coreutils (assoc-ref inputs "coreutils"))) + (lambda* (#:key native-inputs inputs #:allow-other-keys) + (let ((coreutils (assoc-ref (or native-inputs inputs) + "coreutils"))) (substitute* "udev-md-raid-arrays.rules" (("/usr/bin/(readlink|basename)" all program) (string-append coreutils "/bin/" program)))) @@ -3992,11 +4073,9 @@ and copy/paste text in the console and in xterm.") #:test-target "test" #:parallel-tests? #f)) ; tests fail when run in parallel (inputs `(("e2fsprogs" ,e2fsprogs) - ("libblkid" ,util-linux) - ("libblkid:static" ,util-linux "static") - ("libuuid" ,util-linux) - ("libuuid:static" ,util-linux "static") ("lzo" ,lzo) + ("util-linux:lib" ,util-linux "lib") ;for libblkid and libuuid + ("util-linux:static" ,util-linux "static") ;ditto ("zlib" ,zlib) ("zlib:static" ,zlib "static") ("zstd" ,zstd "lib") @@ -4126,7 +4205,7 @@ obviously it can be shared with files outside our set).") ("libtool" ,libtool) ("pkg-config" ,pkg-config))) (inputs - `(("libuuid" ,util-linux) + `(("libuuid" ,util-linux "lib") ("libselinux" ,libselinux))) (home-page "https://f2fs.wiki.kernel.org/") (synopsis "Userland tools for f2fs") @@ -4152,7 +4231,7 @@ disks and SD cards. This package provides the userland utilities.") (base32 "0z9c0y3qq75iyqknl5k0v7v46l8c3pcifpqb0yqalrs24blkm7dk")))) (inputs - `(("libuuid" ,util-linux))))) + `(("libuuid" ,util-linux "lib"))))) (define-public freefall (package @@ -4821,7 +4900,7 @@ are exceeded.") ("pkg-config" ,pkg-config))) (inputs `(("acl" ,acl) ; extended attributes (xattr) - ("libuuid" ,util-linux) + ("libuuid" ,util-linux "lib") ("lzo" ,lzo) ("openssl" ,openssl) ; optional crypto support ("zlib" ,zlib) @@ -5599,7 +5678,7 @@ libraries, which are often integrated directly into libfabric.") "psm-disable-memory-stats.patch")))) (build-system gnu-build-system) (outputs '("out" "debug")) - (inputs `(("libuuid" ,util-linux))) + (inputs `(("libuuid" ,util-linux "lib"))) (arguments '(#:make-flags `("PSM_USE_SYS_UUID=1" "CC=gcc" "WERROR=" ,(string-append "INSTALL_PREFIX=" %output) @@ -5976,7 +6055,7 @@ IP addresses and routes, and configure IPsec.") (native-inputs `(("gettext" ,gettext-minimal))) (inputs - `(("libuuid" ,util-linux) + `(("libuuid" ,util-linux "lib") ("python" ,python-wrapper))) (home-page "https://xfs.wiki.kernel.org/") (synopsis "XFS file system tools") |