diff options
author | Mark H Weaver <mhw@netris.org> | 2018-05-28 20:45:37 -0400 |
---|---|---|
committer | Mark H Weaver <mhw@netris.org> | 2018-05-28 20:45:37 -0400 |
commit | 82b695b834f88c5561de40e68f3fe7aa24d3b796 (patch) | |
tree | 41743fff1013584ee4a50852a94cff01c3cc3d1c | |
parent | fe365a3d0e4df7445bf16d3bb422a0bc6bb68ceb (diff) | |
parent | ee3c8fbee21299ce105bafca7dc63bfb096cd7c5 (diff) |
Merge branch 'master' into core-updates
41 files changed, 1426 insertions, 395 deletions
diff --git a/doc/guix.texi b/doc/guix.texi index 5129b998bd..09749b15e1 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -2843,6 +2843,7 @@ they can be placed anywhere in the file system hierarchy: in the example above, users can unpack your tarball in their home directory and directly run @file{./opt/gnu/bin/guile}. +@cindex Docker, build an image with guix pack Alternatively, you can produce a pack in the Docker image format using the following command: @@ -2856,6 +2857,22 @@ command. See the @uref{https://docs.docker.com/engine/reference/commandline/load/, Docker documentation} for more information. +@cindex Singularity, build an image with guix pack +@cindex SquashFS, build an image with guix pack +Yet another option is to produce a SquashFS image with the following +command: + +@example +guix pack -f squashfs guile emacs geiser +@end example + +@noindent +The result is a SquashFS file system image that can either be mounted or +directly be used as a file system container image with the +@uref{http://singularity.lbl.gov, Singularity container execution +environment}, using commands like @command{singularity shell} or +@command{singularity exec}. + Several command-line options allow you to customize your pack: @table @code @@ -2874,6 +2891,11 @@ specified binaries and symlinks. This produces a tarball that follows the @uref{https://github.com/docker/docker/blob/master/image/spec/v1.2.md, Docker Image Specification}. + +@item squashfs +This produces a SquashFS image containing all the specified binaries and +symlinks, as well as empty mount points for virtual file systems like +procfs. @end table @item --relocatable @@ -9210,20 +9232,31 @@ This is a string specifying the type of the file system---e.g., This designates the place where the file system is to be mounted. @item @code{device} -This names the ``source'' of the file system. By default it is the name -of a node under @file{/dev}, but its meaning depends on the @code{title} -field described below. +This names the ``source'' of the file system. It can be one of three +things: a file system label, a file system UUID, or the name of a +@file{/dev} node. Labels and UUIDs offer a way to refer to file +systems without having to hard-code their actual device +name@footnote{Note that, while it is tempting to use +@file{/dev/disk/by-uuid} and similar device names to achieve the same +result, this is not recommended: These special device nodes are created +by the udev daemon and may be unavailable at the time the device is +mounted.}. -@item @code{title} (default: @code{'device}) -This is a symbol that specifies how the @code{device} field is to be -interpreted. +@findex file-system-label +File system labels are created using the @code{file-system-label} +procedure, UUIDs are created using @code{uuid}, and @file{/dev} node are +plain strings. Here's an example of a file system referred to by its +label, as shown by the @command{e2label} command: -When it is the symbol @code{device}, then the @code{device} field is -interpreted as a file name; when it is @code{label}, then @code{device} -is interpreted as a file system label name; when it is @code{uuid}, -@code{device} is interpreted as a file system unique identifier (UUID). +@example +(file-system + (mount-point "/home") + (type "ext4") + (device (file-system-label "my-home"))) +@end example -UUIDs may be converted from their string representation (as shown by the +@findex uuid +UUIDs are converted from their string representation (as shown by the @command{tune2fs -l} command) using the @code{uuid} form@footnote{The @code{uuid} form expects 16-byte UUIDs as defined in @uref{https://tools.ietf.org/html/rfc4122, RFC@tie{}4122}. This is the @@ -9235,22 +9268,13 @@ like this: (file-system (mount-point "/home") (type "ext4") - (title 'uuid) (device (uuid "4dab5feb-d176-45de-b287-9b0a6e4c01cb"))) @end example -The @code{label} and @code{uuid} options offer a way to refer to file -systems without having to hard-code their actual device -name@footnote{Note that, while it is tempting to use -@file{/dev/disk/by-uuid} and similar device names to achieve the same -result, this is not recommended: These special device nodes are created -by the udev daemon and may be unavailable at the time the device is -mounted.}. - -However, when the source of a file system is a mapped device (@pxref{Mapped +When the source of a file system is a mapped device (@pxref{Mapped Devices}), its @code{device} field @emph{must} refer to the mapped -device name---e.g., @file{/dev/mapper/root-partition}---and consequently -@code{title} must be set to @code{'device}. This is required so that +device name---e.g., @file{"/dev/mapper/root-partition"}. +This is required so that the system knows that mounting the file system depends on having the corresponding device mapping established. diff --git a/gnu/bootloader/grub.scm b/gnu/bootloader/grub.scm index 3b01125c78..eca6d97b19 100644 --- a/gnu/bootloader/grub.scm +++ b/gnu/bootloader/grub.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2013, 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com> ;;; Copyright © 2017 Leo Famulari <leo@famulari.name> ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> @@ -31,6 +31,7 @@ #:use-module (gnu system) #:use-module (gnu bootloader) #:use-module (gnu system uuid) + #:use-module (gnu system file-systems) #:autoload (gnu packages bootloaders) (grub) #:autoload (gnu packages compression) (gzip) #:autoload (gnu packages gtk) (guile-cairo guile-rsvg) @@ -303,9 +304,10 @@ code." ((? uuid? uuid) (format #f "search --fs-uuid --set ~a" (uuid->string device))) - ((? string? label) - (format #f "search --label --set ~a" label)) - (#f + ((? file-system-label? label) + (format #f "search --label --set ~a" + (file-system-label->string label))) + ((or #f (? string?)) #~(format #f "search --file --set ~a" #$file))))) (define* (grub-configuration-file config entries diff --git a/gnu/build/file-systems.scm b/gnu/build/file-systems.scm index 145b3b14e7..3dd7358fd3 100644 --- a/gnu/build/file-systems.scm +++ b/gnu/build/file-systems.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2014, 2015, 2016, 2017 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016, 2017 David Craven <david@craven.ch> ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; @@ -473,17 +473,9 @@ were found." (find-partition luks-partition-uuid-predicate)) -(define* (canonicalize-device-spec spec #:optional (title 'any)) - "Return the device name corresponding to SPEC. TITLE is a symbol, one of -the following: - - • 'device', in which case SPEC is known to designate a device node--e.g., - \"/dev/sda1\"; - • 'label', in which case SPEC is known to designate a partition label--e.g., - \"my-root-part\"; - • 'uuid', in which case SPEC must be a UUID designating a partition; - • 'any', in which case SPEC can be anything. -" +(define (canonicalize-device-spec spec) + "Return the device name corresponding to SPEC, which can be a <uuid>, a +<file-system-label>, or a string (typically a /dev file name)." (define max-trials ;; Number of times we retry partition label resolution, 1 second per ;; trial. Note: somebody reported a delay of 16 seconds (!) before their @@ -491,19 +483,6 @@ the following: ;; this long. 20) - (define canonical-title - ;; The realm of canonicalization. - (if (eq? title 'any) - (if (string? spec) - ;; The "--root=SPEC" kernel command-line option always provides a - ;; string, but the string can represent a device, a UUID, or a - ;; label. So check for all three. - (cond ((string-prefix? "/" spec) 'device) - ((string->uuid spec) 'uuid) - (else 'label)) - 'uuid) - title)) - (define (resolve find-partition spec fmt) (let loop ((count 0)) (let ((device (find-partition spec))) @@ -518,23 +497,19 @@ the following: (sleep 1) (loop (+ 1 count)))))))) - (case canonical-title - ((device) + (match spec + ((? string?) ;; Nothing to do. spec) - ((label) + ((? file-system-label?) ;; Resolve the label. - (resolve find-partition-by-label spec identity)) - ((uuid) + (resolve find-partition-by-label + (file-system-label->string spec) + identity)) + ((? uuid?) (resolve find-partition-by-uuid - (cond ((string? spec) - (string->uuid spec)) - ((uuid? spec) - (uuid-bytevector spec)) - (else spec)) - uuid->string)) - (else - (error "unknown device title" title)))) + (uuid-bytevector spec) + uuid->string)))) (define (check-file-system device type) "Run a file system check of TYPE on DEVICE." @@ -615,8 +590,7 @@ run a file system check." ""))))) (let ((type (file-system-type fs)) (options (file-system-options fs)) - (source (canonicalize-device-spec (file-system-device fs) - (file-system-title fs))) + (source (canonicalize-device-spec (file-system-device fs))) (mount-point (string-append root "/" (file-system-mount-point fs))) (flags (mount-flags->bit-mask (file-system-flags fs)))) diff --git a/gnu/build/linux-boot.scm b/gnu/build/linux-boot.scm index 18d87260a9..44b3506284 100644 --- a/gnu/build/linux-boot.scm +++ b/gnu/build/linux-boot.scm @@ -507,9 +507,15 @@ upon error." (error "pre-mount actions failed"))) (if root - (mount-root-file-system (canonicalize-device-spec root) - root-fs-type - #:volatile-root? volatile-root?) + ;; The "--root=SPEC" kernel command-line option always provides a + ;; string, but the string can represent a device, a UUID, or a + ;; label. So check for all three. + (let ((root (cond ((string-prefix? "/" root) root) + ((uuid root) => identity) + (else (file-system-label root))))) + (mount-root-file-system (canonicalize-device-spec root) + root-fs-type + #:volatile-root? volatile-root?)) (mount "none" "/root" "tmpfs")) ;; Mount the specified file systems. diff --git a/gnu/build/shepherd.scm b/gnu/build/shepherd.scm index c955e3c83f..f383259924 100644 --- a/gnu/build/shepherd.scm +++ b/gnu/build/shepherd.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2017 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2017, 2018 Ludovic Courtès <ludo@gnu.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -55,7 +55,6 @@ (define (tmpfs directory) (file-system (device "none") - (title 'device) (mount-point directory) (type "tmpfs") (check? #f))) diff --git a/gnu/local.mk b/gnu/local.mk index 6566226190..2e266af44d 100644 --- a/gnu/local.mk +++ b/gnu/local.mk @@ -664,6 +664,8 @@ dist_patch_DATA = \ %D%/packages/patches/fasthenry-spFactor.patch \ %D%/packages/patches/fcgi-2.4.0-gcc44-fixes.patch \ %D%/packages/patches/fcgi-2.4.0-poll.patch \ + %D%/packages/patches/fifo-map-fix-flags-for-gcc.patch \ + %D%/packages/patches/fifo-map-remove-catch.hpp.patch \ %D%/packages/patches/file-CVE-2017-1000249.patch \ %D%/packages/patches/findutils-localstatedir.patch \ %D%/packages/patches/findutils-test-xargs.patch \ @@ -865,6 +867,8 @@ dist_patch_DATA = \ %D%/packages/patches/libmad-armv7-thumb-pt2.patch \ %D%/packages/patches/libmad-frame-length.patch \ %D%/packages/patches/libmad-mips-newgcc.patch \ + %D%/packages/patches/libmygpo-qt-fix-qt-5.11.patch \ + %D%/packages/patches/libmygpo-qt-missing-qt5-modules.patch \ %D%/packages/patches/libsndfile-armhf-type-checks.patch \ %D%/packages/patches/libsndfile-CVE-2017-8361-8363-8365.patch \ %D%/packages/patches/libsndfile-CVE-2017-8362.patch \ diff --git a/gnu/packages/algebra.scm b/gnu/packages/algebra.scm index 61981f6c7b..806dc45a24 100644 --- a/gnu/packages/algebra.scm +++ b/gnu/packages/algebra.scm @@ -27,7 +27,9 @@ (define-module (gnu packages algebra) #:use-module (gnu packages) #:use-module (gnu packages autotools) + #:use-module (gnu packages check) #:use-module (gnu packages compression) + #:use-module (gnu packages cpp) #:use-module (gnu packages documentation) #:use-module (gnu packages ed) #:use-module (gnu packages flex) @@ -755,3 +757,37 @@ features, and more.") ;; Most of the code is MPLv2, with a few files under LGPLv2.1+ or BSD-3. ;; See 'COPYING.README' for details. (license license:mpl2.0))) + +(define-public xtensor + (package + (name "xtensor") + (version "0.15.9") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/QuantStack/xtensor/archive/" + version ".tar.gz")) + (sha256 + (base32 + "0mlsw4p1w5mh7pscddfdamz27zq3wml5qla3vbzgvif34vsqc8ra")) + (file-name (string-append name "-" version ".tar.gz")))) + (build-system cmake-build-system) + (native-inputs + `(("googletest" ,googletest) + ("xtl" ,xtl))) + (arguments + `(#:configure-flags + '("-DBUILD_TESTS=ON") + #:test-target "xtest")) + (home-page "http://quantstack.net/xtensor") + (synopsis "C++ tensors with broadcasting and lazy computing") + (description "xtensor is a C++ library meant for numerical analysis with +multi-dimensional array expressions. + +xtensor provides: +@itemize +@item an extensible expression system enabling lazy broadcasting. +@item an API following the idioms of the C++ standard library. +@item tools to manipulate array expressions and build upon xtensor. +@end itemize") + (license license:bsd-3))) diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm index db66aef8ea..ef79eae8e2 100644 --- a/gnu/packages/audio.scm +++ b/gnu/packages/audio.scm @@ -12,6 +12,7 @@ ;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com> ;;; Copyright © 2018 okapi <okapi@firemail.cc> ;;; Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com> +;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -2069,6 +2070,7 @@ background file post-processing.") (build-system cmake-build-system) (arguments `(#:configure-flags '("-DSYSTEM_BOOST=on" "-DSYSTEM_YAMLCPP=on" + "-DSC_QT=off" "-DSC_EL=off") ;scel is packaged individually as ;emacs-scel. #:modules ((guix build utils) @@ -2129,8 +2131,7 @@ set(YAMLCPP_INCLUDE_DIR ${CMAKE_SOURCE_DIR}/\ external_libraries/yaml-cpp/include)")) #t))))) (native-inputs - `(("pkg-config" ,pkg-config) - ("qttools" ,qttools))) + `(("pkg-config" ,pkg-config))) (inputs `(("jack" ,jack-1) ("libsndfile" ,libsndfile) @@ -2143,12 +2144,7 @@ external_libraries/yaml-cpp/include)")) ("icu4c" ,icu4c) ("boost" ,boost) ("boost-sync" ,boost-sync) - ("yaml-cpp" ,yaml-cpp) - ("qtbase" ,qtbase) ;IDE support - ("qtwebkit" ,qtwebkit) - ("qtsensors" ,qtsensors) - ("qtdeclarative" ,qtdeclarative) - ("qtlocation" ,qtlocation))) + ("yaml-cpp" ,yaml-cpp))) (home-page "https://github.com/supercollider/supercollider") (synopsis "Synthesis engine and programming language") (description "SuperCollider is a synthesis engine (@code{scsynth} or diff --git a/gnu/packages/bootloaders.scm b/gnu/packages/bootloaders.scm index 333f30e723..2dd530125f 100644 --- a/gnu/packages/bootloaders.scm +++ b/gnu/packages/bootloaders.scm @@ -33,6 +33,7 @@ #:use-module (gnu packages disk) #:use-module (gnu packages bison) #:use-module (gnu packages cdrom) + #:use-module (gnu packages check) #:use-module (gnu packages cross-base) #:use-module (gnu packages disk) #:use-module (gnu packages firmware) @@ -49,6 +50,7 @@ #:use-module (gnu packages python) #:use-module (gnu packages texinfo) #:use-module (gnu packages tls) + #:use-module (gnu packages sdl) #:use-module (gnu packages swig) #:use-module (gnu packages virtualization) #:use-module (gnu packages web) @@ -350,7 +352,11 @@ tree binary files. These are board description files used by Linux and BSD.") (native-inputs `(("bc" ,bc) ("dtc" ,dtc) + ("openssl" ,openssl) ("python-2" ,python-2) + ("python2-coverage" ,python2-coverage) + ("python2-pytest" ,python2-pytest) + ("sdl" ,sdl) ("swig" ,swig))) (build-system gnu-build-system) (home-page "http://www.denx.de/wiki/U-Boot/") @@ -364,10 +370,34 @@ also initializes the boards (RAM etc).") (inherit u-boot) (name "u-boot-tools") (arguments - `(#:make-flags '("HOSTCC=gcc" "NO_SDL=1") - #:test-target "test" + `(#:make-flags '("HOSTCC=gcc") + #:test-target "tests" #:phases (modify-phases %standard-phases + (add-after 'unpack 'patch + (lambda* (#:key inputs #:allow-other-keys) + (substitute* "Makefile" + (("/bin/pwd") (which "pwd")) + (("/bin/false") (which "false"))) + (substitute* "tools/dtoc/fdt_util.py" + (("'cc'") "'gcc'")) + (substitute* "test/run" + ;; Make it easier to find test failures. + (("#!/bin/bash") "#!/bin/bash -x") + ;; pytest doesn't find it otherwise. + (("test/py/tests/test_ofplatdata.py") + "tests/test_ofplatdata.py") + ;; This test would require git. + (("\\./tools/patman/patman") (which "true")) + ;; This test would require internet access. + (("\\./tools/buildman/buildman") (which "true"))) + (substitute* "test/py/tests/test_sandbox_exit.py" + (("def test_ctrl_c") + "@pytest.mark.skip(reason='Guix has problems with SIGINT') +def test_ctrl_c")) + (substitute* "tools/binman/binman.py" + (("100%") "99%")) ; TODO: Find out why that is needed. + #t)) (replace 'configure (lambda* (#:key make-flags #:allow-other-keys) (call-with-output-file "configs/tools_defconfig" @@ -395,7 +425,16 @@ also initializes the boards (RAM etc).") "tools/proftool" "tools/fdtgrep" "tools/env/fw_printenv")) - #t)))))) + #t))) + (delete 'check) + (add-after 'install 'check + (lambda* (#:key make-flags test-target #:allow-other-keys) + (apply invoke "make" "mrproper" make-flags) + (setenv "SDL_VIDEODRIVER" "dummy") + (setenv "PAGER" "cat") + (apply invoke "make" test-target make-flags) + (symlink "build-sandbox_spl" "sandbox") + (invoke "test/image/test-imagetools.sh")))))) (description "U-Boot is a bootloader used mostly for ARM boards. It also initializes the boards (RAM etc). This package provides its board-independent tools."))) @@ -443,7 +482,7 @@ board-independent tools."))) "- ~A\n" (string-drop-right file-name suffix-len)))) - (sort entries string<))) + (sort entries string-ci<))) #f))))) (replace 'install (lambda* (#:key outputs #:allow-other-keys) diff --git a/gnu/packages/check.scm b/gnu/packages/check.scm index 6f88885545..3e959bde92 100644 --- a/gnu/packages/check.scm +++ b/gnu/packages/check.scm @@ -163,6 +163,8 @@ supervised tests.") (base32 "1027cyfx5gsjkdkaf6c2wnjh68882grw8n672018cj3vs9lrhmix")))))) +;; When dependent packages upgraded to use newer version of catch, this one should +;; be removed. (define-public catch-framework (package (name "catch") @@ -201,6 +203,24 @@ supervised tests.") multi-paradigm automated test framework for C++ and Objective-C.") (license license:boost1.0))) +(define-public catch-framework2 + (package + (name "catch2") + (version "1.12.2") + (home-page "https://github.com/catchorg/Catch2") + (source (origin + (method url-fetch) + (uri (string-append home-page "/archive/v" version ".tar.gz")) + (sha256 + (base32 + "0g2ysxc6adqca5wh7nsicnxb9wkxg75cd5izjsl39rcj0v903gr7")) + (file-name (string-append name "-" version ".tar.gz")))) + (build-system cmake-build-system) + (synopsis "Automated test framework for C++ and Objective-C") + (description "Catch2 stands for C++ Automated Test Cases in Headers and is +a multi-paradigm automated test framework for C++ and Objective-C.") + (license license:boost1.0))) + (define-public cmdtest (package (name "cmdtest") diff --git a/gnu/packages/code.scm b/gnu/packages/code.scm index edf0f98aca..a8c85fdb5e 100644 --- a/gnu/packages/code.scm +++ b/gnu/packages/code.scm @@ -30,12 +30,16 @@ (define-module (gnu packages code) #:use-module (guix packages) #:use-module (guix download) + #:use-module (guix git-download) #:use-module ((guix licenses) #:prefix license:) #:use-module (guix build-system gnu) #:use-module (guix build-system cmake) #:use-module (guix build-system trivial) #:use-module (gnu packages) + #:use-module (gnu packages autogen) + #:use-module (gnu packages autotools) #:use-module (gnu packages base) + #:use-module (gnu packages bash) #:use-module (gnu packages compression) #:use-module (gnu packages cpp) #:use-module (gnu packages databases) @@ -43,15 +47,13 @@ #:use-module (gnu packages gcc) #:use-module (gnu packages graphviz) #:use-module (gnu packages pcre) - #:use-module (gnu packages pkg-config) #:use-module (gnu packages perl) + #:use-module (gnu packages pkg-config) + #:use-module (gnu packages python) #:use-module (gnu packages texinfo) - #:use-module (gnu packages autogen) #:use-module (gnu packages ncurses) - #:use-module (gnu packages autotools) #:use-module (gnu packages llvm) - #:use-module (gnu packages lua) - #:use-module (gnu packages bash)) + #:use-module (gnu packages lua)) ;;; Tools to deal with source code: metrics, cross-references, etc. @@ -648,3 +650,49 @@ deal with incomplete or malformed syntax. GNU indent offers several extensions over the standard utility.") (license license:gpl3+) (home-page "https://www.gnu.org/software/indent/"))) + +(define-public amalgamate + (let* ((commit "c91f07eea1133aa184f652b8f1398eaf03586208") + (revision "0") + (version (git-version "1.1.1" revision commit))) + (package + (name "amalgamate") + (version version) + (home-page "https://github.com/edlund/amalgamate") + (source + (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit commit))) + (sha256 + (base32 + "0cllaraw8mxs8q2nr28nhgzkb417gj2wcklqg59w84f4lc78k3yb")) + (file-name (git-file-name name version)) + (modules '((guix build utils))) + (snippet + '(substitute* "test.sh" + (("test_command \"cc -Wall -Wextra -o source.out source.c\"" all) + "test_command \"gcc -Wall -Wextra -o source.out source.c\""))))) + (build-system gnu-build-system) + (inputs + `(("python" ,python-wrapper))) + (arguments + `(#:phases + (modify-phases %standard-phases + (delete 'configure) + (delete 'build) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (bin (string-append out "/bin"))) + (install-file "amalgamate.py" bin)))) + (replace 'check + (lambda _ + (invoke "./test.sh")))))) + (synopsis "Tool for amalgamating C source and header files") + ;; The package is indeed a script file, and the term "amalgamate.py" is + ;; used by upstream. + (description "amalgamate.py aims to make it easy to use SQLite-style C +source and header amalgamation in projects.") + (license license:bsd-3)))) diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm index e145d53cef..9921cd575c 100644 --- a/gnu/packages/compression.scm +++ b/gnu/packages/compression.scm @@ -4,7 +4,7 @@ ;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> ;;; Copyright © 2015, 2016 Eric Bavier <bavier@member.fsf.org> -;;; Copyright © 2015, 2016, 2017 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2015, 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015, 2017, 2018 Leo Famulari <leo@famulari.name> ;;; Copyright © 2015 Jeff Mickey <j@codemac.net> ;;; Copyright © 2015, 2016, 2017 Efraim Flashner <efraim@flashner.co.il> @@ -856,6 +856,23 @@ systems where low overhead is needed. This package allows you to create and extract such file systems.") (license license:gpl2+))) +;; We need this for building squashfs images with symlinks. +(define-public squashfs-tools-next + (let ((commit "fb33dfc32b131a1162dcf0e35bd88254ae10e265") + (revision "1")) + (package (inherit squashfs-tools) + (name "squashfs-tools-next") + (version (string-append "4.3-" revision (string-take commit 7))) + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/plougher/squashfs-tools.git") + (commit commit))) + (file-name (git-file-name name version)) + (sha256 + (base32 + "1x2skf8hxzfch978nzx5mh46d4hhi6gl22270hiarjszsjk3bnsx"))))))) + (define-public pigz (package (name "pigz") diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm index 80ffc1ea2c..cc5375095b 100644 --- a/gnu/packages/cpp.scm +++ b/gnu/packages/cpp.scm @@ -29,7 +29,9 @@ #:use-module (gnu packages) #:use-module (gnu packages autotools) #:use-module (gnu packages check) + #:use-module (gnu packages code) #:use-module (gnu packages compression) + #:use-module (gnu packages llvm) #:use-module (gnu packages pkg-config) #:use-module (gnu packages tls)) @@ -151,3 +153,121 @@ the same arithmetic operators as for single values. It also provides accelerated implementation of common mathematical functions operating on batches.") (license license:bsd-3))) + +(define-public fifo-map + (let* ((commit "0dfbf5dacbb15a32c43f912a7e66a54aae39d0f9") + (revision "0") + (version (git-version "1.1.1" revision commit))) + (package + (name "fifo-map") + (version version) + (home-page "https://github.com/nlohmann/fifo_map") + (source (origin + (method git-fetch) + (uri (git-reference + (url home-page) + (commit commit))) + (sha256 + (base32 + "0pi77b75kp0l7z454ihcd14nzpi3nc5m4nyjbsgy5f9bw3676196")) + (patches (search-patches "fifo-map-remove-catch.hpp.patch" + "fifo-map-fix-flags-for-gcc.patch")) + (file-name (git-file-name name version)) + (modules '((guix build utils))) + (snippet '(delete-file-recursively "./test/thirdparty")))) + (native-inputs + `(("catch2" ,catch-framework2))) + (build-system cmake-build-system) + (arguments + `(#:phases + (modify-phases %standard-phases + (replace 'check + (lambda _ + (invoke "./unit"))) + (replace 'install + (lambda* (#:key outputs #:allow-other-keys) + (let* ((out (assoc-ref outputs "out")) + (inc (string-append out "/include/fifo_map"))) + (with-directory-excursion + (string-append "../" ,name "-" ,version "-checkout") + (install-file "src/fifo_map.hpp" inc) + #t))))))) + (synopsis "FIFO-ordered associative container for C++") + (description "Fifo_map is a C++ header only library for associative +container which uses the order in which keys were inserted to the container +as ordering relation.") + (license license:expat)))) + +(define-public json-modern-cxx + (package + (name "json-modern-cxx") + (version "3.1.2") + (source + (origin + (method url-fetch) + (uri (string-append + "https://github.com/nlohmann/json/archive/v" version ".tar.gz")) + (sha256 + (base32 + "0m5fhdpx2qll933db2nsi30nns3cifavzvijzz6mxhdkpmngmzz8")) + (file-name (string-append name "-" version ".tar.gz")) + (modules '((guix build utils))) + (snippet + '(begin + (delete-file-recursively "./third_party") + (delete-file-recursively "./test/thirdparty") + (delete-file-recursively "./benchmarks/thirdparty") + ;; Splits catch and fifo_map + (with-directory-excursion "test/src" + (let ((files (find-files "." ".*\\.cpp"))) + (substitute* files + (("#include ?\"(catch.hpp)\"" all catch-hpp) + (string-append "#include <catch/" catch-hpp ">"))) + (substitute* files + (("#include ?\"(fifo_map.hpp)\"" all fifo-map-hpp) + (string-append + "#include <fifo_map/" fifo-map-hpp ">"))))))))) + (native-inputs + `(("amalgamate" ,amalgamate))) + (inputs + `(("catch2" ,catch-framework2) + ("fifo-map" ,fifo-map))) + (home-page "https://github.com/nlohmann/json") + (build-system cmake-build-system) + (synopsis "JSON parser and printer library for C++") + (description "JSON for Modern C++ is a C++ JSON library that provides +intutive syntax and trivial integration.") + (license license:expat))) + +(define-public xtl + (package + (name "xtl") + (version "0.4.8") + (source (origin + (method url-fetch) + (uri (string-append + "https://github.com/QuantStack/xtl/archive/" + version ".tar.gz")) + (sha256 + (base32 + "05bcz9y590b77bxcip0k31rgsapmkwqi1smvsvc84zz7m87d4jvy")) + (file-name (string-append name "-" version ".tar.gz")))) + (native-inputs + `(("googletest" ,googletest) + ("json-modern-cxx" ,json-modern-cxx))) + (arguments + `(#:configure-flags + '("-DBUILD_TESTS=ON") + #:phases + (modify-phases %standard-phases + (replace 'check + (lambda* _ + (with-directory-excursion "test" + (invoke "./test_xtl") + #t)))))) + (home-page "https://github.com/QuantStack/xtl") + (build-system cmake-build-system) + (synopsis "C++ template library providing some basic tools") + (description "xtl is a C++ header-only template library providing basic +tools (containers, algorithms) used by other QuantStack packages.") + (license license:bsd-3))) diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm index d435142f82..26a77e2404 100644 --- a/gnu/packages/games.scm +++ b/gnu/packages/games.scm @@ -4968,7 +4968,7 @@ quotation from a collection of quotes.") (description "Xonotic-data provides the data files required by the game Xonotic.") (license (list license:gpl2+ - license:x11)))) ; server/rcon.pl + (license:x11-style "file://server/rcon.pl"))))) (define-public xonotic (package @@ -5167,4 +5167,4 @@ development between them, and it aims to become the best possible open-source FPS of its kind.") (license (list license:gpl2+ license:bsd-3 ; /source/d0_blind_id folder and others - license:x11-style)))) + (license:x11-style "" "See file rcon.pl."))))) diff --git a/gnu/packages/gnuzilla.scm b/gnu/packages/gnuzilla.scm index 8f2afd1b03..cca0edbbf3 100644 --- a/gnu/packages/gnuzilla.scm +++ b/gnu/packages/gnuzilla.scm @@ -481,7 +481,15 @@ security standards.") (mozilla-patch "icecat-bug-1452619.patch" "2b75d55ccf0e" "1g87aybw6ggv6hyk385bplv0lx63n020gwyq0d6d4pqld48hsm1i") (mozilla-patch "icecat-bug-1453127.patch" "89857f35df29" "0gzi47svrw5ajdlm3i12193psm702zx70x5h1rwp4gb7gxh4m4d9") (mozilla-patch "icecat-CVE-2018-5150-pt10.patch" "3f2ec03c0405" "0w02952dlxd2gmwghck2nm4rjjmc5ylg62bw6m1rvi35kcr134lr") - (mozilla-patch "icecat-CVE-2018-5183.patch" "f729bf78fb3a" "0xkj6jwxwdqkvb5c7wi16b8cm8qrnlrd3s9jnd46jg03iykrx56f"))) + (mozilla-patch "icecat-CVE-2018-5183.patch" "f729bf78fb3a" "0xkj6jwxwdqkvb5c7wi16b8cm8qrnlrd3s9jnd46jg03iykrx56f") + (mozilla-patch "icecat-bug-1437842.patch" "eb896089db47" "10lppk4x2d3pim71a36ky1dmg08rs5ckfiljwvfnr1cw6934qxl4") + (mozilla-patch "icecat-bug-1458270.patch" "2374dca97bde" "0y1g55wvj44nzb1qfkl271jcf8s1ik8lcl1785z0zim4qzn7qkpa") + (mozilla-patch "icecat-bug-1452576.patch" "70b6298e0c9e" "0n5jfy6c421dkybk8m18vd61y95zz0r64g1p1zlya3fps5knfaqi") + (mozilla-patch "icecat-bug-1459206-pt1.patch" "4ef79fe9b3b7" "1c32z1ki1i6xj1nbb0xlxwqnmz48ikmy8dmp37rkjz8ssn04wgfg") + (mozilla-patch "icecat-bug-1459206-pt2.patch" "9ad16112044a" "0ayya67sx7avcb8bplfdxb92l9g4mjrb1s3hby283llhqv0ikg9b") + (mozilla-patch "icecat-bug-1459162.patch" "11d8a87fb6d6" "1rkmdk18llw0x1jakix75hlhy0hpsmlminnflagbzrzjli81gwm1") + (mozilla-patch "icecat-bug-1451297.patch" "407b10ad1273" "16qzsfirw045xag96f1qvpdlibm8lwdj9l1mlli4n1vz0db91v9q") + (mozilla-patch "icecat-bug-1462682.patch" "e76e2e481b17" "0hnx13msjy28n3bpa2c24kpzalam4bdk5gnp0f9k671l48rs9yb3"))) (modules '((guix build utils))) (snippet '(begin diff --git a/gnu/packages/java.scm b/gnu/packages/java.scm index 7000e5a475..5511c04a08 100644 --- a/gnu/packages/java.scm +++ b/gnu/packages/java.scm @@ -3,7 +3,7 @@ ;;; Copyright © 2016 Leo Famulari <leo@famulari.name> ;;; Copyright © 2016, 2017 Roel Janssen <roel@gnu.org> ;;; Copyright © 2017 Carlo Zancanaro <carlo@zancanaro.id.au> -;;; Copyright © 2017 Julien Lepiller <julien@lepiller.eu> +;;; Copyright © 2017, 2018 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be> ;;; Copyright © 2016, 2017, 2018 Alex Vong <alexvong1995@gmail.com> ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr> @@ -53,6 +53,7 @@ #:use-module (gnu packages gnuzilla) ;nss #:use-module (gnu packages ghostscript) ;lcms #:use-module (gnu packages gnome) + #:use-module (gnu packages groovy) #:use-module (gnu packages gtk) #:use-module (gnu packages guile) #:use-module (gnu packages icu4c) @@ -4268,6 +4269,64 @@ from within Java, as well as an object registry that exposes Java objects to these scripting language engines.") (license license:asl2.0))) +(define-public java-commons-jxpath + (package + (name "java-commons-jxpath") + (version "1.3") + (source (origin + (method url-fetch) + (uri (string-append "mirror://apache/commons/jxpath/source/" + "commons-jxpath-" version "-src.tar.gz")) + (sha256 + (base32 + "1rpgg31ayn9fwr4bfi2i1ij0npcg79ad2fv0w9hacvawsyc42cfs")))) + (build-system ant-build-system) + (arguments + `(#:jar-name "commons-jxpath.jar" + ;; tests require more dependencies, including mockrunner which depends on old software + #:tests? #f + #:source-dir "src/java")) + (inputs + `(("java-tomcat" ,java-tomcat) + ("java-jdom" ,java-jdom) + ("java-commons-beanutils" ,java-commons-beanutils))) + (native-inputs + `(("java-junit" ,java-junit))) + (home-page "http://commons.apache.org/jxpath/") + (synopsis "Simple interpreter of an expression language called XPath.") + (description "The org.apache.commons.jxpath package defines a simple +interpreter of an expression language called XPath. JXPath applies XPath +expressions to graphs of objects of all kinds: JavaBeans, Maps, Servlet +contexts, DOM etc, including mixtures thereof.") + (license license:asl2.0))) + +(define-public java-jsr250 + (package + (name "java-jsr250") + (version "1.3") + (source (origin + (method url-fetch) + (uri (string-append "https://repo1.maven.org/maven2/" + "javax/annotation/javax.annotation-api/" + version "/javax.annotation-api-" + version "-sources.jar")) + (sha256 + (base32 + "08clh8n4n9wfglf75qsqfjs6yf79f7x6hqx38cn856pksszv50kz")))) + (build-system ant-build-system) + (arguments + `(#:tests? #f ; no tests included + #:jdk ,icedtea-8 + #:jar-name "jsr250.jar")) + (home-page "https://jcp.org/en/jsr/detail?id=250") + (synopsis "Security-related annotations") + (description "This package provides annotations for security. It provides +packages in the @code{javax.annotation} and @code{javax.annotation.security} +namespaces.") + ;; either cddl or gpl2 only, with classpath exception + (license (list license:cddl1.0 + license:gpl2)))) + (define-public java-jsr305 (package (name "java-jsr305") @@ -9811,3 +9870,278 @@ and reporting) project dependencies. It is characterized by the following: reporting and publication. @end itemize") (license license:asl2.0))) + +(define-public java-eclipse-sisu-inject + (package + (name "java-eclipse-sisu-inject") + (version "0.3.3") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/eclipse/sisu.inject/" + "archive/releases/" version ".tar.gz")) + (sha256 + (base32 + "11rg6yw5nl13i65xsp4jxxgr341qcnnaan48p767h28kb07s0ajn")))) + (build-system ant-build-system) + (arguments + `(#:jar-name "eclipse-sisu-inject.jar" + #:source-dir "org.eclipse.sisu.inject/src" + #:jdk ,icedtea-8 + #:tests? #f)); no tests + (inputs + `(("java-guice" ,java-guice) + ("java-guice-servlet" ,java-guice-servlet) + ("java-javax-inject" ,java-javax-inject) + ("java-tomcat" ,java-tomcat) + ("java-junit" ,java-junit) + ("java-slf4j-api" ,java-slf4j-api) + ("java-jsr305" ,java-jsr305) + ("java-jsr250" ,java-jsr250) + ("java-cdi-api" ,java-cdi-api) + ("java-osgi-framework" ,java-osgi-framework) + ("java-osgi-util-tracker" ,java-osgi-util-tracker) + ("java-testng" ,java-testng))) + (home-page "https://www.eclipse.org/sisu/") + (synopsis "Classpath scanning, auto-binding, and dynamic auto-wiring") + (description "Sisu is a modular JSR330-based container that supports +classpath scanning, auto-binding, and dynamic auto-wiring. Sisu uses +Google-Guice to perform dependency injection and provide the core JSR330 +support, but removes the need to write explicit bindings in Guice modules. +Integration with other containers via the Eclipse Extension Registry and the +OSGi Service Registry is a goal of this project.") + (license license:epl1.0))) + +(define-public java-eclipse-sisu-plexus + (package + (name "java-eclipse-sisu-plexus") + (version "0.3.3") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/eclipse/sisu.plexus/" + "archive/releases/" version ".tar.gz")) + (sha256 + (base32 + "0lbj7nxy5j0z71k407zbb82icfqh7midrfk0fb3fa3jzdjz0d9d9")) + (modules '((guix build utils))) + (snippet + '(begin + (for-each delete-file (find-files "." ".*.jar")) + (rename-file "org.eclipse.sisu.plexus.tests/src" + "org.eclipse.sisu.plexus.tests/java") + #t)))) + (build-system ant-build-system) + (arguments + `(#:jar-name "eclipse-sisu-plexus.jar" + #:source-dir "org.eclipse.sisu.plexus/src" + #:test-dir "org.eclipse.sisu.plexus.tests" + #:test-exclude + (list + ;; This test fails probably because we can't generate the necessary + ;; meta-inf files. + "**/PlexusLoggingTest.*" + ;; FIXME: This test fails because of some injection error + "**/PlexusRequirementTest.*") + #:jdk ,icedtea-8 + #:phases + (modify-phases %standard-phases + (add-before 'build 'copy-resources + (lambda _ + (install-file "org.eclipse.sisu.plexus/META-INF/plexus/components.xml" + "build/classes/META-INF/plexus") + #t)) + (add-before 'check 'build-test-jar + (lambda _ + (with-directory-excursion "org.eclipse.sisu.plexus.tests/resources/component-jar/src/main/" + (mkdir "build") + (with-directory-excursion "java" + (apply invoke "javac" "-cp" + (string-append (getenv "CLASSPATH") + ":../../../../../build/classes") + (find-files "." ".*.java")) + (for-each (lambda (file) (install-file file (string-append "../build/" file))) + (find-files "." ".*.jar"))) + (mkdir-p "build/META-INF/plexus") + (copy-file "resources/META-INF/plexus/components.xml" + "build/META-INF/plexus/components.xml") + (with-directory-excursion "build" + (invoke "jar" "cf" "../../../component-jar-0.1.jar" "."))) + (with-directory-excursion "org.eclipse.sisu.plexus.tests/" + (copy-recursively "META-INF" "../build/test-classes/META-INF") + (substitute* "java/org/eclipse/sisu/plexus/DefaultPlexusContainerTest.java" + (("resources/component-jar") + "org.eclipse.sisu.plexus.tests/resources/component-jar"))) + #t))))) + (inputs + `(("java-plexus-classworlds" ,java-plexus-classworlds) + ("java-plexus-util" ,java-plexus-utils) + ("java-plexus-component-annotations" ,java-plexus-component-annotations) + ("java-osgi-framework" ,java-osgi-framework) + ("java-eclipse-sisu-inject" ,java-eclipse-sisu-inject) + ("java-guice" ,java-guice) + ("java-javax-inject" ,java-javax-inject) + ("java-slf4j-api" ,java-slf4j-api) + ("java-junit" ,java-junit))) + (native-inputs + `(("java-guava" ,java-guava) + ("java-aopalliance" ,java-aopalliance) + ("java-cglib" ,java-cglib) + ("java-asm" ,java-asm))) + (home-page "https://www.eclipse.org/sisu/") + (synopsis "Plexus support for the sisu container") + (description "Sisu is a modular JSR330-based container that supports +classpath scanning, auto-binding, and dynamic auto-wiring. This package +adds Plexus support to the Sisu-Inject container.") + (license license:epl1.0))) + +(define-public java-commons-compiler + (package + (name "java-commons-compiler") + (version "3.0.8") + (source (origin + (method git-fetch) + (uri (git-reference + (url "https://github.com/janino-compiler/janino") + (commit "91aa95686d1e4ca3b16a984a03a38686572331b2"))) + (file-name (string-append name "-" version)) + (sha256 + (base32 + "04hfdl59sgh20qkxzgnibvs8f9hy6n7znxwpk611y5d89977y62r")) + (modules '((guix build utils))) + (snippet + '(begin + (for-each delete-file + (find-files "." "\\.jar$")) + #t)))) + (build-system ant-build-system) + (arguments + `(#:jar-name "commons-compiler.jar" + #:source-dir "commons-compiler/src/main" + #:tests? #f)); no tests + (home-page "https://github.com/janino-compiler/janino") + (synopsis "Java compiler") + (description "Commons-compiler contains an API for janino, including the +@code{IExpressionEvaluator}, @code{IScriptEvaluator}, @code{IClassBodyEvaluator} +and @code{ISimpleCompiler} interfaces.") + (license license:bsd-3))) + +(define-public java-janino + (package + (inherit java-commons-compiler) + (name "java-janino") + (arguments + `(#:jar-name "janino.jar" + #:source-dir "src/main/java" + #:phases + (modify-phases %standard-phases + (add-before 'configure 'chdir + (lambda _ + (chdir "janino")))))) + (inputs + `(("java-commons-compiler" ,java-commons-compiler))) + (native-inputs + `(("java-junit" ,java-junit) + ("java-hamcrest-core" ,java-hamcrest-core))) + (description "Janino is a Java compiler. Janino can compile a set of +source files to a set of class files like @code{javac}, but also compile a +Java expression, block, class body or source file in memory, load the bytecode +and execute it directly in the same JVM. @code{janino} can also be used for +static code analysis or code manipulation."))) + +(define-public java-logback-core + (package + (name "java-logback-core") + (version "1.2.3") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/qos-ch/logback/archive/v_" + version ".tar.gz")) + (sha256 + (base32 + "1x6ga74yfgm94cfx98gybakbrlilx8i2gn6dx13l40kasmys06mi")) + (modules '((guix build utils))) + (snippet + '(delete-file-recursively "logback-access/lib")))) + (build-system ant-build-system) + (arguments + `(#:jar-name "logback.jar" + #:source-dir "src/main/java" + #:test-dir "src/test" + #:test-exclude + ;; These tests fail with Unable to set MockitoNamingPolicy on cglib generator + ;; which creates FastClasses + (list "**/AllCoreTest.*" + "**/AutoFlushingObjectWriterTest.*" + "**/PackageTest.*" + "**/ResilientOutputStreamTest.*" + ;; And we still don't want to run abstract classes + "**/Abstract*.*") + #:phases + (modify-phases %standard-phases + (add-before 'configure 'chdir + (lambda _ + (chdir "logback-core") + #t))))) + (inputs + `(("java-javax-mail" ,java-javax-mail) + ("java-tomcat" ,java-tomcat) + ("java-commons-compiler" ,java-commons-compiler) + ("java-janino" ,java-janino))) + (native-inputs + `(("java-junit" ,java-junit) + ("java-hamcrest-core" ,java-hamcrest-core) + ("java-mockito-1" ,java-mockito-1) + ("java-cglib" ,java-cglib) + ("java-asm" ,java-asm) + ("java-objenesis" ,java-objenesis) + ("java-joda-time" ,java-joda-time))) + (home-page "https://logback.qos.ch") + (synopsis "Logging for java") + (description "Logback is intended as a successor to the popular log4j project. +This module lays the groundwork for the other two modules.") + ;; Either epl1.0 or lgpl2.1 + (license (list license:epl1.0 + license:lgpl2.1)))) + +(define-public java-logback-classic + (package + (inherit java-logback-core) + (name "java-logback-classic") + (arguments + `(#:jar-name "logback-classic.jar" + #:source-dir "src/main/java" + #:test-dir "src/test" + #:tests? #f; tests require more packages: h2, greenmail, hsql, subethamail, slf4j, log4j, felix + #:jdk ,icedtea-8 + #:phases + (modify-phases %standard-phases + (add-before 'configure 'chdir + (lambda _ + (chdir "logback-classic") + #t)) + (replace 'build + (lambda* (#:key inputs #:allow-other-keys) + (mkdir-p "build/classes") + (setenv "CLASSPATH" + (string-join + (apply append (map (lambda (input) + (find-files (assoc-ref inputs input) + ".*.jar")) + '("java-logback-core" "java-slf4j-api" + "java-commons-compiler" "java-tomcat" + "groovy"))) + ":")) + (apply invoke "groovyc" "-d" "build/classes" "-j" + (find-files "src/main/" ".*\\.(groovy|java)$")) + (invoke "ant" "jar") + #t))))) + (inputs + `(("java-logback-core" ,java-logback-core) + ("java-slf4j-api" ,java-slf4j-api) + ,@(package-inputs java-logback-core))) + (native-inputs + `(("groovy" ,groovy))) + (description "Logback is intended as a successor to the popular log4j project. +This module can be assimilated to a significantly improved version of log4j. +Moreover, @code{logback-classic} natively implements the slf4j API so that you +can readily switch back and forth between logback and other logging frameworks +such as log4j or @code{java.util.logging} (JUL)."))) diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm index 466daeb2cf..839a14e6c3 100644 --- a/gnu/packages/linux.scm +++ b/gnu/packages/linux.scm @@ -12,7 +12,7 @@ ;;; Copyright © 2016 Raymond Nicholson <rain1@openmailbox.org> ;;; Copyright © 2016 Mathieu Lirzin <mthl@gnu.org> ;;; Copyright © 2016, 2018 Nicolas Goaziou <mail@nicolasgoaziou.fr> -;;; Copyright © 2016 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2016, 2018 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016 David Craven <david@craven.ch> ;;; Copyright © 2016 John Darrington <jmd@gnu.org> ;;; Copyright © 2016, 2017, 2018 Marius Bakke <mbakke@fastmail.com> @@ -80,6 +80,7 @@ #:use-module (gnu packages multiprecision) #:use-module (gnu packages ncurses) #:use-module (gnu packages netpbm) + #:use-module (gnu packages nettle) #:use-module (gnu packages networking) #:use-module (gnu packages ninja) #:use-module (gnu packages perl) @@ -2573,6 +2574,52 @@ similar in functionality to chroot, although pflask provides better isolation thanks to the use of namespaces.") (license license:bsd-2))) +(define-public singularity + (package + (name "singularity") + (version "2.5.1") + (source (origin + (method url-fetch) + (uri (string-append "https://github.com/singularityware/singularity/" + "releases/download/" version + "/singularity-" version ".tar.gz")) + (sha256 + (base32 + "0f28dgf2qcy8ljjfix7p9q36q12j7rxyicfzzi4n0fl8zr8ab88g")))) + (build-system gnu-build-system) + (arguments + `(#:configure-flags + (list "--disable-suid" + "--localstatedir=/var") + #:phases + (modify-phases %standard-phases + ;; Do not create directories in /var. + (add-after 'unpack 'disable-install-hook + (lambda _ + (substitute* "Makefile.in" + (("\\$\\(MAKE\\) .*install-data-hook") "")) + #t)) + (add-after 'unpack 'patch-reference-to-squashfs-tools + (lambda _ + (substitute* "libexec/cli/build.exec" + (("if ! singularity_which mksquashfs") "if 0") + (("if ! mksquashfs") + (string-append "if ! " (which "mksquashfs")))) + #t))))) + (inputs + `(("libarchive" ,libarchive) + ("python" ,python-wrapper) + ("nettle" ,nettle) + ("zlib" ,zlib) + ("squashfs-tools" ,squashfs-tools))) + (home-page "https://singularity.lbl.gov/") + (synopsis "Container platform") + (description "Singularity is a container platform supporting a number of +container image formats. It can build SquashFS container images or import +existing Docker images. Singularity requires kernel support for container +isolation or root privileges.") + (license license:bsd-3))) + (define-public hdparm (package (name "hdparm") diff --git a/gnu/packages/messaging.scm b/gnu/packages/messaging.scm index f0a8c18e91..407d7ee317 100644 --- a/gnu/packages/messaging.scm +++ b/gnu/packages/messaging.scm @@ -548,14 +548,14 @@ simultaneously and therefore appear under the same nickname on IRC.") (define-public python-nbxmpp (package (name "python-nbxmpp") - (version "0.6.5") + (version "0.6.6") (source (origin (method url-fetch) (uri (pypi-uri "nbxmpp" version)) (sha256 (base32 - "162dk6q4g61riam1p78bxwddwy4y2x1si34g5j9jv3rlc9xmhdcv")))) + "0bp60syqc3qp2i28phvadxlpwizjbr6bxw4m363p9yn5fl687qnh")))) (build-system python-build-system) (arguments `(#:tests? #f)) ; no tests @@ -573,7 +573,7 @@ was initially a fork of xmpppy, but uses non-blocking sockets.") (define-public gajim (package (name "gajim") - (version "1.0.2") + (version "1.0.3") (source (origin (method url-fetch) (uri (string-append "https://gajim.org/downloads/" @@ -581,7 +581,7 @@ was initially a fork of xmpppy, but uses non-blocking sockets.") "/gajim-" version ".tar.bz2")) (sha256 (base32 - "0wyyy3wrk7ka5xrsbafnajzf7iacg8vg3hi16pl4c5p104hdhjdw")))) + "0ds4rqwfrpj89a489w6yih8gx5zi7qa4ffgld950fk7s0qxvcfnb")))) (build-system python-build-system) (arguments `(#:phases diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm index 6f17fa799e..ff347284a5 100644 --- a/gnu/packages/music.scm +++ b/gnu/packages/music.scm @@ -187,20 +187,20 @@ score, keyboard, guitar, drum and controller views.") ;; We don't use the latest release because it depends on Qt4. Instead we ;; download the sources from the tip of the "qt5" branch. (define-public clementine - (let ((commit "0a59257dc334b8df60a4d7d90b04f1766747efcf") - (revision "1")) + (let ((commit "4619a4c1ab3b17b13d4b2327ad477912917eaf36") + (revision "2")) (package (name "clementine") - (version (string-append "1.3.1-" revision "." (string-take commit 7))) + (version (git-version "1.3.1" revision commit)) (source (origin (method git-fetch) (uri (git-reference (url "https://github.com/clementine-player/Clementine.git") (commit commit))) - (file-name (string-append name "-" version "-checkout")) + (file-name (git-file-name name version)) (sha256 (base32 - "0cdcj7di7j9jgzc1ihjna1a5df64f9hnmx7b9kh8rlg76hc0l0hi")) + "1hximk3q0p8nw8is5w7215xgkb7k4flnfyr0pdz9svfwvcm05w1i")) (modules '((guix build utils))) (snippet '(begin @@ -264,7 +264,6 @@ score, keyboard, guitar, drum and controller views.") ("gst-plugins-base" ,gst-plugins-base) ("libcdio" ,libcdio) ("libmygpo-qt" ,libmygpo-qt) - ("libechonest" ,libechonest) ;; TODO: Package libgpod. ("libmtp" ,libmtp) ("libxml2" ,libxml2) @@ -3814,33 +3813,6 @@ OSC connections.") the electronic or dubstep genre.") (license license:gpl3+))) -(define-public libechonest - (package - (name "libechonest") - (version "2.3.1") - (source (origin - (method git-fetch) - (uri (git-reference - (url "git://anongit.kde.org/libechonest.git") - (commit version))) - (file-name (string-append name "-" version "-checkout")) - (sha256 - (base32 - "0xbavf9f355dl1d3qv59x4ryypqrdanh9xdvw2d0q66l008crdkq")))) - (build-system cmake-build-system) - (arguments - '(#:tests? #f ; Tests require Internet access - #:configure-flags '("-DBUILD_WITH_QT4=OFF"))) - (inputs - `(("qtbase" ,qtbase) - ("qjson" ,qjson))) - (home-page "https://projects.kde.org/projects/playground/libs/libechonest") - (synopsis "C++/Qt classes to interface with The Echo Nest API") - (description "@code{libechonest} is a collection of C++/Qt classes -designed to make a developer's life easy when trying to use the APIs provided -by The Echo Nest.") - (license license:gpl2+))) - (define-public libmygpo-qt (package (name "libmygpo-qt") @@ -3851,12 +3823,19 @@ by The Echo Nest.") "libmygpo-qt/libmygpo-qt." version ".tar.gz")) (sha256 (base32 - "1kg18qrq2rsswgzhl65r3mlyx7kpqg4wwnbp4yiv6svvmadmlxl2")))) + "1kg18qrq2rsswgzhl65r3mlyx7kpqg4wwnbp4yiv6svvmadmlxl2")) + (patches (search-patches "libmygpo-qt-fix-qt-5.11.patch" + "libmygpo-qt-missing-qt5-modules.patch")))) (build-system cmake-build-system) (native-inputs `(("pkg-config" ,pkg-config))) (inputs `(("qt" ,qtbase))) + (arguments + `(#:configure-flags '("-DMYGPO_BUILD_TESTS=ON") + ;; TODO: Enable tests when https://github.com/gpodder/gpodder/issues/446 + ;; is fixed. + #:tests? #f)) (home-page "http://wiki.gpodder.org/wiki/Libmygpo-qt") (synopsis "Qt/C++ library wrapping the gpodder web service") (description "@code{libmygpo-qt} is a Qt/C++ library wrapping the diff --git a/gnu/packages/networking.scm b/gnu/packages/networking.scm index 251816d13f..bddd4bc857 100644 --- a/gnu/packages/networking.scm +++ b/gnu/packages/networking.scm @@ -21,6 +21,7 @@ ;;; Copyright © 2018 Adam Van Ymeren <adam@vany.ca> ;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com> ;;; Copyright © 2018 Tonton <tonton@riseup.net> +;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org> ;;; ;;; This file is part of GNU Guix. ;;; @@ -590,7 +591,21 @@ of the same name.") (assoc-ref %build-inputs "portaudio")) (string-append "--with-sbc=" (assoc-ref %build-inputs "sbc")) (string-append "--with-snappy=" (assoc-ref %build-inputs "snappy")) - (string-append "--with-zlib=" (assoc-ref %build-inputs "zlib"))))) + (string-append "--with-zlib=" (assoc-ref %build-inputs "zlib"))) + #:phases + (modify-phases %standard-phases + (add-after 'unpack 'patch-source + (lambda _ + ;; Fix build against Qt 5.11. + (substitute* "ui/qt/packet_format_group_box.cpp" + (("#include <QStyle>") "#include <QStyle> +#include <QStyleOption>")) + (substitute* "ui/qt/time_shift_dialog.cpp" + (("#include <ui/time_shift.h>") "#include <ui/time_shift.h> +#include <QStyleOption>")) + (substitute* "ui/qt/wireless_frame.cpp" + (("#include <QProcess>") "#include <QProcess> +#include <QAbstractItemView>"))))))) (synopsis "Network traffic analyzer") (description "Wireshark is a network protocol analyzer, or @dfn{packet sniffer}, that lets you capture and interactively browse the contents of diff --git a/gnu/packages/patches/fifo-map-fix-flags-for-gcc.patch b/gnu/packages/patches/fifo-map-fix-flags-for-gcc.patch new file mode 100644 index 0000000000..59b7105220 --- /dev/null +++ b/gnu/packages/patches/fifo-map-fix-flags-for-gcc.patch @@ -0,0 +1,39 @@ +From 0871db30bd73d112a434f54572d34cca28de61c5 Mon Sep 17 00:00:00 2001 +From: fis <ybbs.daans@hotmail.com> +Date: Sat, 26 May 2018 22:58:37 +0800 +Subject: [PATCH 2/2] * CMakeLists.txt: Fix flags for gcc. + +--- + CMakeLists.txt | 18 ++---------------- + 1 file changed, 2 insertions(+), 16 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index eba147b..d60dcef 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -6,20 +6,6 @@ add_executable(unit src/fifo_map.hpp test/unit.cpp) + + target_include_directories(unit PRIVATE "test" "src") + +-if(MSVC) +- set(CMAKE_CXX_FLAGS +- "/EHsc" +- ) ++set(CMAKE_CXX_FLAGS "-std=c++11 -fpermissive") + +- STRING(REPLACE "/O2" "/Od" CMAKE_CXX_FLAGS_RELEASE ${CMAKE_CXX_FLAGS_RELEASE}) +- +- add_definitions(-D_SCL_SECURE_NO_WARNINGS) +-else(MSVC) +- set(CMAKE_CXX_FLAGS +- "-std=c++11 -stdlib=libc++" +- ) +-endif(MSVC) +- +-include_directories( +- src test +-) ++include_directories(src test) +-- +2.14.3 + diff --git a/gnu/packages/patches/fifo-map-remove-catch.hpp.patch b/gnu/packages/patches/fifo-map-remove-catch.hpp.patch new file mode 100644 index 0000000000..be4efd3e9a --- /dev/null +++ b/gnu/packages/patches/fifo-map-remove-catch.hpp.patch @@ -0,0 +1,30 @@ +From 20dcf90fd02511f8d78ea7cc8ac82c121fd2f6cf Mon Sep 17 00:00:00 2001 +From: fis <ybbs.daans@hotmail.com> +Date: Sat, 26 May 2018 22:56:29 +0800 +Subject: [PATCH 1/2] * CMakeLists.txt: Remove catch.hpp. + +--- + CMakeLists.txt | 6 ++---- + 1 file changed, 2 insertions(+), 4 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 6603c7f..eba147b 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -2,11 +2,9 @@ cmake_minimum_required(VERSION 2.8) + + project(fifo_map LANGUAGES CXX) + +-add_executable(unit +- src/fifo_map.hpp test/thirdparty/catch/catch.hpp test/unit.cpp +-) ++add_executable(unit src/fifo_map.hpp test/unit.cpp) + +-target_include_directories(unit PRIVATE "test" "src" "test/thirdparty") ++target_include_directories(unit PRIVATE "test" "src") + + if(MSVC) + set(CMAKE_CXX_FLAGS +-- +2.14.3 + diff --git a/gnu/packages/patches/libmygpo-qt-fix-qt-5.11.patch b/gnu/packages/patches/libmygpo-qt-fix-qt-5.11.patch new file mode 100644 index 0000000000..69673c90ee --- /dev/null +++ b/gnu/packages/patches/libmygpo-qt-fix-qt-5.11.patch @@ -0,0 +1,78 @@ +From 1b53767b988b339aac8b353327a1542b2a0c0610 Mon Sep 17 00:00:00 2001 +From: Andreas Sturmlechner <andreas.sturmlechner@gmail.com> +Date: Sun, 15 Apr 2018 22:29:33 +0200 +Subject: [PATCH] Fix build with Qt 5.11_beta3 (dropping qt5_use_modules) + +--- + CMakeLists.txt | 3 --- + src/CMakeLists.txt | 8 ++++++-- + tests/CMakeLists.txt | 12 +++++++++--- + 3 files changed, 15 insertions(+), 8 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index eb006d9..fa4b0cb 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -34,9 +34,6 @@ else() + set( QT_DONT_USE_QTGUI TRUE ) + include( ${QT_USE_FILE} ) + +- macro(qt5_use_modules) +- endmacro() +- + macro(qt_wrap_cpp) + qt4_wrap_cpp(${ARGN}) + endmacro() +diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt +index 802125b..253e81e 100644 +--- a/src/CMakeLists.txt ++++ b/src/CMakeLists.txt +@@ -79,9 +79,13 @@ QT_WRAP_CPP(LIBMYGPO_QT_MOC_SRC ${LIBMYGPO_QT_MOC_H} ) + + add_library( ${MYGPO_QT_TARGET_NAME} SHARED ${LIBMYGPO_QT_SRC} ${LIBMYGPO_QT_MOC_SRC} ) + +-target_link_libraries( ${MYGPO_QT_TARGET_NAME} ${QJSON_LIBRARIES} ${QT_QTCORE_LIBRARY} ${QT_QTNETWORK_LIBRARY} ) + set_target_properties( ${MYGPO_QT_TARGET_NAME} PROPERTIES VERSION ${MYGPO_QT_VERSION} SOVERSION ${MYGPO_QT_SONAME} DEFINE_SYMBOL MYGPO_MAKEDLL) +-qt5_use_modules( ${MYGPO_QT_TARGET_NAME} Core Network ) ++ ++if( NOT BUILD_WITH_QT4 ) ++ target_link_libraries( ${MYGPO_QT_TARGET_NAME} Qt5::Core Qt5::Network) ++else() ++ target_link_libraries( ${MYGPO_QT_TARGET_NAME} ${QT_QTCORE_LIBRARY} ${QT_QTNETWORK_LIBRARY} ${QJSON_LIBRARIES}) ++endif() + + install( TARGETS ${MYGPO_QT_TARGET_NAME} EXPORT ${MYGPO_QT_TARGET_NAME}Export DESTINATION ${LIB_INSTALL_DIR} ) + +diff --git a/tests/CMakeLists.txt b/tests/CMakeLists.txt +index a3e3223..4f77158 100644 +--- a/tests/CMakeLists.txt ++++ b/tests/CMakeLists.txt +@@ -11,11 +11,15 @@ include_directories( ${QJSON_INCLUDE_DIR} ${CMAKE_CURRENT_BINARY_DIR} ${CMAKE_CU + + # UrlBuilder library + add_library( UrlBuilder ${TESTOBJECTS_SRCDIR}/UrlBuilder.cpp ${TESTOBJECTS_SRCDIR}/Config.cpp ) +-qt5_use_modules( UrlBuilder Core ) ++if( NOT BUILD_WITH_QT4 ) ++ target_link_libraries( UrlBuilder Qt5::Core ) ++endif() + # JSONCreator library + QT_WRAP_CPP(LIBMYGPO_QT_MOC_SRC ${TESTOBJECTS_SRCDIR}/EpisodeAction.h ${TESTOBJECTS_SRCDIR}/EpisodeAction_p.h ) + add_library( JsonCreator ${TESTOBJECTS_SRCDIR}/JsonCreator.cpp ${TESTOBJECTS_SRCDIR}/EpisodeAction.cpp ${TESTOBJECTS_SRCDIR}/qjsonwrapper/Json.cpp ${LIBMYGPO_QT_MOC_SRC}) +-qt5_use_modules( JsonCreator Core Network ) ++if( NOT BUILD_WITH_QT4 ) ++ target_link_libraries( JsonCreator Qt5::Core Qt5::Network ) ++endif() + + set( EXECUTABLE_OUTPUT_PATH ${CMAKE_CURRENT_BINARY_DIR} ) + +@@ -25,7 +29,9 @@ macro(add_libmygpo_test _source) + add_executable(${_name} ${_source} ${${_name}_MOC_SRC}) + target_link_libraries(${_name} ${QT_QTCORE_LIBRARY} ${QT_QTTEST_LIBRARY} ${QT_QTNETWORK_LIBRARY}) + add_test(${_name}-test ${EXECUTABLE_OUTPUT_PATH}/${_name}) +- qt5_use_modules(${_name} Network Test) ++ if( NOT BUILD_WITH_QT4 ) ++ target_link_libraries(${_name} Qt5::Network Qt5::Test) ++ endif() + endmacro(add_libmygpo_test) + + add_libmygpo_test( UrlBuilderTest.cpp ) diff --git a/gnu/packages/patches/libmygpo-qt-missing-qt5-modules.patch b/gnu/packages/patches/libmygpo-qt-missing-qt5-modules.patch new file mode 100644 index 0000000000..aa9ed2c0f7 --- /dev/null +++ b/gnu/packages/patches/libmygpo-qt-missing-qt5-modules.patch @@ -0,0 +1,51 @@ +From 0d76d960727018bddf04c6cc89552af69aaa7e55 Mon Sep 17 00:00:00 2001 +From: Andreas Sturmlechner <andreas.sturmlechner@gmail.com> +Date: Sun, 15 Apr 2018 22:20:34 +0200 +Subject: [PATCH] Add missing Qt5Network, Qt5Test, make BUILD_WITH_QT4 more + strict + +--- + CMakeLists.txt | 22 +++++++++++----------- + 1 file changed, 11 insertions(+), 11 deletions(-) + +diff --git a/CMakeLists.txt b/CMakeLists.txt +index 2a1f652..eb006d9 100644 +--- a/CMakeLists.txt ++++ b/CMakeLists.txt +@@ -5,25 +5,25 @@ project( libmygpo-qt ) + set( CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_CURRENT_SOURCE_DIR}/cmake/modules) + set( CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -DQT_NO_CAST_FROM_ASCII -DQT_NO_CAST_TO_ASCII" ) + +-option(BUILD_WITH_QT4 "Build libmygpo-qt with Qt4 no matter if Qt5 was found" OFF) ++option(BUILD_WITH_QT4 "Build libmygpo-qt with Qt4" OFF) + + if( NOT BUILD_WITH_QT4 ) +- find_package(Qt5Core QUIET) +- if( Qt5Core_DIR ) +- set(MYGPO_QT_VERSION_SUFFIX 5) +- +- macro(qt_wrap_cpp) +- qt5_wrap_cpp(${ARGN}) +- endmacro() ++ if( MYGPO_BUILD_TESTS ) ++ find_package(Qt5 REQUIRED COMPONENTS Core Network Test CONFIG) ++ else() ++ find_package(Qt5 REQUIRED COMPONENTS Core Network CONFIG) + endif() ++ set(MYGPO_QT_VERSION_SUFFIX 5) ++ ++ macro(qt_wrap_cpp) ++ qt5_wrap_cpp(${ARGN}) ++ endmacro() + + # pkg-config names of QtCore and QtNetwork are Qt5Core and Qt5Network for + # Qt5 + set(MYGPO_QT_MAJOR_VERSION "5") + set(MYGPO_QT4_QJSON_DEP "") +-endif() +- +-if( NOT Qt5Core_DIR ) ++else() + message(STATUS "Could not find Qt5, searching for Qt4 instead...") + message(STATUS "Qt4 Support is deprecated, building with Qt4 is no longer officially supported") + if( MYGPO_BUILD_TESTS ) diff --git a/gnu/packages/qt.scm b/gnu/packages/qt.scm index d8896e3e0b..309fcc46ca 100644 --- a/gnu/packages/qt.scm +++ b/gnu/packages/qt.scm @@ -372,16 +372,16 @@ developers using C++ or QML, a CSS & JavaScript like language.") (define-public qtbase (package (name "qtbase") - (version "5.9.4") + (version "5.11.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" (version-major+minor version) "/" version - "/submodules/" name "-opensource-src-" + "/submodules/" name "-everywhere-src-" version ".tar.xz")) (sha256 (base32 - "1kq422vb2zaic099pgzwk7c0qzgc3xap6qahw5vklrq0mgivvrk9")) + "0rny87ypnkkvyp9p76nim77v6np0cdf1dbjfmcilklzphkdlcvpd")) ;; Use TZDIR to avoid depending on package "tzdata". (patches (search-patches "qtbase-use-TZDIR.patch")) (modules '((guix build utils))) @@ -392,7 +392,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") (lambda (dir) (delete-file-recursively (string-append "src/3rdparty/" dir))) (list "double-conversion" "freetype" "harfbuzz-ng" - "libpng" "libjpeg" "pcre2" "sqlite" "xcb" + "libpng" "libjpeg" "pcre2" "xcb" "xkbcommon" "zlib")) #t)))) (build-system gnu-build-system) @@ -434,7 +434,7 @@ developers using C++ or QML, a CSS & JavaScript like language.") ("pcre2" ,pcre2) ("postgresql" ,postgresql) ("pulseaudio" ,pulseaudio) - ("sqlite" ,sqlite) + ;("sqlite" ,sqlite) ("unixodbc" ,unixodbc) ("xcb-util" ,xcb-util) ("xcb-util-image" ,xcb-util-image) @@ -477,42 +477,45 @@ developers using C++ or QML, a CSS & JavaScript like language.") (("NO_DEFAULT_PATH") "")) ;; do not pass "--enable-fast-install", which makes the ;; configure process fail - (zero? (system* - "./configure" - "-verbose" - "-prefix" out - "-docdir" (string-append out "/share/doc/qt5") - "-headerdir" (string-append out "/include/qt5") - "-archdatadir" (string-append out "/lib/qt5") - "-datadir" (string-append out "/share/qt5") - "-examplesdir" (string-append - out "/share/doc/qt5/examples") - "-opensource" - "-confirm-license" - ;; Do not build examples; if desired, these could go - ;; into a separate output, but for the time being, we - ;; prefer to save the space and build time. - "-no-compile-examples" - ;; Most "-system-..." are automatic, but some use - ;; the bundled copy by default. - "-system-sqlite" - "-system-harfbuzz" - "-system-pcre" - ;; explicitly link with openssl instead of dlopening it - "-openssl-linked" - ;; explicitly link with dbus instead of dlopening it - "-dbus-linked" - ;; don't use the precompiled headers - "-no-pch" - ;; drop special machine instructions that do not have - ;; runtime detection - ,@(if (string-prefix? "x86_64" - (or (%current-target-system) - (%current-system))) - '() - '("-no-sse2")) - "-no-mips_dsp" - "-no-mips_dspr2"))))) + (invoke + "./configure" + "-verbose" + "-prefix" out + "-docdir" (string-append out "/share/doc/qt5") + "-headerdir" (string-append out "/include/qt5") + "-archdatadir" (string-append out "/lib/qt5") + "-datadir" (string-append out "/share/qt5") + "-examplesdir" (string-append + out "/share/doc/qt5/examples") + "-opensource" + "-confirm-license" + ;; Do not build examples; if desired, these could go + ;; into a separate output, but for the time being, we + ;; prefer to save the space and build time. + "-no-compile-examples" + ;; Most "-system-..." are automatic, but some use + ;; the bundled copy by default. + ;; System sqlite fails on 5.10+ + ;;.obj/qsql_sqlite.o: In function `QSQLiteResultPrivate::initColumns(bool)': + ;;qsql_sqlite.cpp:(.text+0x190c): undefined reference to `sqlite3_column_table_name16' + ;"-system-sqlite" + "-system-harfbuzz" + "-system-pcre" + ;; explicitly link with openssl instead of dlopening it + "-openssl-linked" + ;; explicitly link with dbus instead of dlopening it + "-dbus-linked" + ;; don't use the precompiled headers + "-no-pch" + ;; drop special machine instructions that do not have + ;; runtime detection + ,@(if (string-prefix? "x86_64" + (or (%current-target-system) + (%current-system))) + '() + '("-no-sse2")) + "-no-mips_dsp" + "-no-mips_dspr2")))) (add-after 'install 'patch-mkspecs (lambda* (#:key outputs #:allow-other-keys) (let* ((out (assoc-ref outputs "out")) @@ -602,16 +605,16 @@ developers using C++ or QML, a CSS & JavaScript like language.") (define-public qtsvg (package (inherit qtbase) (name "qtsvg") - (version "5.9.4") + (version "5.11.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" (version-major+minor version) "/" version - "/submodules/" name "-opensource-src-" + "/submodules/" name "-everywhere-src-" version ".tar.xz")) (sha256 (base32 - "0yh3an9rc7fh013cw3bm318ap6428icsmnj38hhg1w6lpwr2gwm2")))) + "0m0zglp0m5gv75ivma6l3hm8brb0cf44dhbc6lqwfdwacxhgx3jb")))) (propagated-inputs `()) (native-inputs `(("perl" ,perl))) (inputs @@ -664,7 +667,7 @@ HostData=lib/qt5 (lambda* (#:key inputs outputs #:allow-other-keys) ;; Valid QT_BUILD_PARTS variables are: ;; libs tools tests examples demos docs translations - (zero? (system* "qmake" "QT_BUILD_PARTS = libs tools tests")))) + (invoke "qmake" "QT_BUILD_PARTS = libs tools tests"))) (add-before 'check 'set-display (lambda _ ;; make Qt render "offscreen", required for tests @@ -677,19 +680,21 @@ HostData=lib/qt5 (define-public qtimageformats (package (inherit qtsvg) (name "qtimageformats") - (version "5.9.4") + (version "5.11.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" (version-major+minor version) "/" version - "/submodules/" name "-opensource-src-" + "/submodules/" name "-everywhere-src-" version ".tar.xz")) (sha256 (base32 - "1nfxvf96wh1smdmcsk4m9f7zg69fgp844f8772qpv6v4m20p1qb9")) + "0w0yy7zzln3v7dm7ksjxkzhq8r0a9nwk823wv4f1x7vsa3pnyh2q")) (modules '((guix build utils))) - (snippet '(begin (delete-file-recursively "src/3rdparty") - #t)))) + (snippet + '(begin + (delete-file-recursively "src/3rdparty") + #t)))) (native-inputs `()) (inputs `(("jasper" ,jasper) @@ -706,16 +711,16 @@ support for MNG, TGA, TIFF and WBMP image formats."))) (define-public qtx11extras (package (inherit qtsvg) (name "qtx11extras") - (version "5.9.4") + (version "5.11.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" (version-major+minor version) "/" version - "/submodules/" name "-opensource-src-" + "/submodules/" name "-everywhere-src-" version ".tar.xz")) (sha256 (base32 - "1a125fi7lbxfps207i12jammm4cjbiawmp4sqa3bxqah8p21i6w7")))) + "13vbx61wcd8pnpgk3j5r665pm03s7jp2s98apvc6fhp1njlr0rhi")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:tests? _ #f) #f))) ; TODO: Enable the tests @@ -730,16 +735,16 @@ from within Qt 5."))) (define-public qtxmlpatterns (package (inherit qtsvg) (name "qtxmlpatterns") - (version "5.9.4") + (version "5.11.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" (version-major+minor version) "/" version - "/submodules/" name "-opensource-src-" + "/submodules/" name "-everywhere-src-" version ".tar.xz")) (sha256 (base32 - "0ybz0i3wblvrm958s9ykp3a79bakjbb7k74q71mqaaswkv9imxgs")))) + "13nj2pa706sy874bqbv7y94ypicr4k09x6n2jyxkw93flb5pi8qr")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:phases phases) @@ -759,16 +764,16 @@ xmlpatternsvalidator."))) (define-public qtdeclarative (package (inherit qtsvg) (name "qtdeclarative") - (version "5.9.4") + (version "5.11.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" (version-major+minor version) "/" version - "/submodules/" name "-opensource-src-" + "/submodules/" name "-everywhere-src-" version ".tar.xz")) (sha256 (base32 - "0r9dhfc6qmxlzn2v9r6z6n2mcq6pv1nmyh91g9hcdlkx40xqlqyw")))) + "1h2pbyr7dnak4q96373xpa6gk6rl528rnqima8xnvhdi2y5kgagf")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:tests? _ #f) #f))) ; TODO: Enable the tests @@ -791,27 +796,16 @@ with JavaScript and C++."))) (define-public qtconnectivity (package (inherit qtsvg) (name "qtconnectivity") - (version "5.9.4") + (version "5.11.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" (version-major+minor version) "/" version - "/submodules/" name "-opensource-src-" + "/submodules/" name "-everywhere-src-" version ".tar.xz")) (sha256 (base32 - "12qckqz6ldvn1czkkigadmgl07yk4gs74hy4ifh4hmpm7cv519yv")))) - (arguments - (substitute-keyword-arguments (package-arguments qtsvg) - ((#:phases phases) - `(modify-phases ,phases - (add-after 'unpack 'disable-failing-tests - ;; this test fails on armhf and aarch64 - (lambda _ - (substitute* "tests/auto/qndefnfcsmartposterrecord/tst_qndefnfcsmartposterrecord.cpp" - (("QCOMPARE\\(record.action\\(\\), QNdefNfcSmartPosterRecord::UnspecifiedAction") - "//QCOMPARE(record.action(), QNdefNfcSmartPosterRecord::UnspecifiedAction")) - #t)))))) + "0wqq5q5saf007aphvpn5pvj6l0qp0z7wxvfba6v9iq5ylyqm6bnd")))) (native-inputs `(("perl" ,perl) ("pkg-config" ,pkg-config) @@ -826,16 +820,16 @@ with Bluetooth and NFC."))) (define-public qtwebsockets (package (inherit qtsvg) (name "qtwebsockets") - (version "5.9.4") + (version "5.11.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" (version-major+minor version) "/" version - "/submodules/" name "-opensource-src-" + "/submodules/" name "-everywhere-src-" version ".tar.xz")) (sha256 (base32 - "00786d9m8skj68n5x9d8151zmmskx7ckhgcdd08hs9nly04h55vj")))) + "1drr6nxxbkwpmz39bhyfmmsqjhy11bj3w1nc3q9dwhpcbf04an3x")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:tests? _ #f) #f))) ; TODO: Enable the tests @@ -853,16 +847,16 @@ consume data received from the server, or both."))) (define-public qtsensors (package (inherit qtsvg) (name "qtsensors") - (version "5.9.4") + (version "5.11.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" (version-major+minor version) "/" version - "/submodules/" name "-opensource-src-" + "/submodules/" name "-everywhere-src-" version ".tar.xz")) (sha256 (base32 - "0n6lkkn7c9x8vcplmfvkx7jq6najh2mrwnfb3blrmkmpash3lgvr")))) + "1az22rdkpc1m44qb3dyh7cpiprplkvynzjr629ai05i8ngbfdi0g")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:parallel-tests? _ #f) #f) ; can lead to race condition @@ -886,16 +880,16 @@ recognition API for devices."))) (define-public qtmultimedia (package (inherit qtsvg) (name "qtmultimedia") - (version "5.9.4") + (version "5.11.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" (version-major+minor version) "/" version - "/submodules/" name "-opensource-src-" + "/submodules/" name "-everywhere-src-" version ".tar.xz")) (sha256 (base32 - "0x2f3vpax7rq0lxnncbp5b248bxdicrwn8hv4hsas2g2283s0lj9")) + "0g4x1w251imq58zp1px6yschwj6icsxzwl3fy7pjfbgd27qjhlzg")) (modules '((guix build utils))) (snippet '(begin @@ -912,9 +906,9 @@ recognition API for devices."))) (replace 'configure (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) - (zero? (system* "qmake" "QT_BUILD_PARTS = libs tools tests" - (string-append "QMAKE_LFLAGS_RPATH=-Wl,-rpath," out "/lib -Wl,-rpath,") - (string-append "PREFIX=" out)))))))) + (invoke "qmake" "QT_BUILD_PARTS = libs tools tests" + (string-append "QMAKE_LFLAGS_RPATH=-Wl,-rpath," out "/lib -Wl,-rpath,") + (string-append "PREFIX=" out))))))) ((#:tests? _ #f) #f))) ; TODO: Enable the tests (native-inputs `(("perl" ,perl) @@ -937,21 +931,22 @@ set of plugins for interacting with pulseaudio and GStreamer."))) (define-public qtwayland (package (inherit qtsvg) (name "qtwayland") - (version "5.9.4") + (version "5.11.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" (version-major+minor version) "/" version - "/submodules/" name "-opensource-src-" + "/submodules/" name "-everywhere-src-" version ".tar.xz")) (sha256 (base32 - "0x4q17k23akf14i3pyllr96s8lvprk1x006wp0mi5rhk4199cx1z")) + "09s1ckqj0cgjmmi7jylsf039vgzlq7i9rr4swb590fkz427lx0b8")) (modules '((guix build utils))) (snippet ;; The examples try to build and cause the build to fail - '(begin (delete-file-recursively "examples") - #t)))) + '(begin + (delete-file-recursively "examples") + #t)))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:phases phases) @@ -988,16 +983,16 @@ compositor libraries."))) (define-public qtserialport (package (inherit qtsvg) (name "qtserialport") - (version "5.9.4") + (version "5.11.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" (version-major+minor version) "/" version - "/submodules/" name "-opensource-src-" + "/submodules/" name "-everywhere-src-" version ".tar.xz")) (sha256 (base32 - "172i5cpqnk0c3m0hg08hgj15qvsyd1xvw9yf2dqicg3l10lqwg8c")))) + "1cbf1jsginp5p3y17cyb6dfhsafxal0bn9pya6aybz0q799zgvl5")))) (native-inputs `(("perl" ,perl))) (inputs `(("qtbase" ,qtbase) @@ -1022,16 +1017,16 @@ interacting with serial ports from within Qt."))) (define-public qtserialbus (package (inherit qtsvg) (name "qtserialbus") - (version "5.9.5") + (version "5.11.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" (version-major+minor version) "/" version - "/submodules/" name "-opensource-src-" + "/submodules/" name "-everywhere-src-" version ".tar.xz")) (sha256 (base32 - "0gz5xsskv02yy078yffxyn8rdlklf4rsgnqrziyz5ywxwdh96gn5")))) + "0r3crk7gw0xs6wk1gvw2k8r9s9vam3sfwrji1njhswavii9fbp85")))) (inputs `(("qtbase" ,qtbase) ("qtserialport" ,qtserialport))) @@ -1043,16 +1038,16 @@ and others."))) (define-public qtwebchannel (package (inherit qtsvg) (name "qtwebchannel") - (version "5.9.4") + (version "5.11.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" (version-major+minor version) "/" version - "/submodules/" name "-opensource-src-" + "/submodules/" name "-everywhere-src-" version ".tar.xz")) (sha256 (base32 - "1acs0fa5rxm3cir0lydc9a8685qagf1786vkssv51wk3v9r3lc4h")))) + "05fa5pwvk24cjp8m6pbw3ma95vnls762crpjdgvygfk0h8xilxmh")))) (native-inputs `(("perl" ,perl) ("qtdeclarative" ,qtdeclarative) @@ -1067,16 +1062,16 @@ popular web engines, Qt WebKit 2 and Qt WebEngine."))) (define-public qtlocation (package (inherit qtsvg) (name "qtlocation") - (version "5.9.4") + (version "5.11.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" (version-major+minor version) "/" version - "/submodules/" name "-opensource-src-" + "/submodules/" name "-everywhere-src-" version ".tar.xz")) (sha256 (base32 - "186jzv19v674n8jmm13v5xwv211lygih5657rlvbhc1s4jq6iv9p")))) + "074cjqhr14mqlsqj9rzagzdcqnayyichp31lq02k05q07wg93xi8")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:tests? _ #f) #f))) ; TODO: Enable the tests @@ -1097,16 +1092,16 @@ positioning and geolocation plugins."))) (define-public qttools (package (inherit qtsvg) (name "qttools") - (version "5.9.4") + (version "5.11.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" (version-major+minor version) "/" version - "/submodules/" name "-opensource-src-" + "/submodules/" name "-everywhere-src-" version ".tar.xz")) (sha256 (base32 - "11vfk6c8snsqwqj1xk53c0h2mkqr4gfa9kinp8py56x7sn15galm")))) + "1nb77bfs63nyy0wkhsci9qbqmahncy3sdcrwj4qr1prc4y2cm4wx")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:tests? _ #f) #f))) ; TODO: Enable the tests @@ -1124,16 +1119,16 @@ that helps in Qt development."))) (define-public qtscript (package (inherit qtsvg) (name "qtscript") - (version "5.9.4") + (version "5.11.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" (version-major+minor version) "/" version - "/submodules/" name "-opensource-src-" + "/submodules/" name "-everywhere-src-" version ".tar.xz")) (sha256 (base32 - "0lz0iv1baah7cxrpyiqzqp4fxxf75i21qd06ha7r5d80hq3xlia0")) + "1ib8a5gsxarbm2j94j5d097ly3ap4snqkx2imz3sl6xk6gknm4i5")) (patches (search-patches "qtscript-disable-tests.patch")))) (native-inputs `(("perl" ,perl) @@ -1148,16 +1143,16 @@ ECMAScript and Qt."))) (define-public qtquickcontrols (package (inherit qtsvg) (name "qtquickcontrols") - (version "5.9.4") + (version "5.11.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" (version-major+minor version) "/" version - "/submodules/" name "-opensource-src-" + "/submodules/" name "-everywhere-src-" version ".tar.xz")) (sha256 (base32 - "12yrmv6afjbd1fw3r8zjdrbq5l7cy7k5bxcyiv1m97gykfh0b8hn")))) + "01ziibf4afdhb5b3gfci8maprmviqwhdvma2z1jlq2ck45cpsqi6")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:tests? _ #f) #f))) ; TODO: Enable the tests @@ -1172,16 +1167,16 @@ can be used to build complete interfaces in Qt Quick."))) (define-public qtquickcontrols2 (package (inherit qtsvg) (name "qtquickcontrols2") - (version "5.9.4") + (version "5.11.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" (version-major+minor version) "/" version - "/submodules/" name "-opensource-src-" + "/submodules/" name "-everywhere-src-" version ".tar.xz")) (sha256 (base32 - "0334ayansm743kf113rs3k9hi9qb6giscfx9xig3y1z7asisfa0m")))) + "1hsa8n4dlqpyz9xq2kq1hsxrxsjc7ywzzfhqijylgzzclvlqgb7y")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:tests? _ #f) #f))) ; TODO: Enable the tests @@ -1197,16 +1192,16 @@ not available."))) (define-public qtgraphicaleffects (package (inherit qtsvg) (name "qtgraphicaleffects") - (version "5.9.4") + (version "5.11.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" (version-major+minor version) "/" version - "/submodules/" name "-opensource-src-" + "/submodules/" name "-everywhere-src-" version ".tar.xz")) (sha256 (base32 - "1vxq4j7cb5cya1g234rxhfb361n45gp8c70gj8pc03njswkm7xwp")))) + "0xzr4421w7idlgndxnd68wwc2asabycjiskkyl1f8nwqv34lcy3j")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:tests? _ #f) #f))) ; TODO: Enable the tests @@ -1230,15 +1225,16 @@ coloring, and many more."))) (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" (version-major+minor version) "/" version - "/submodules/" name "-opensource-src-" + "/submodules/" name "-everywhere-src-" version ".tar.xz")) (sha256 (base32 "0zwch9vn17f3bpy300jcfxx6cx9qymk5j7khx0x9k1xqid4166c3")) (modules '((guix build utils))) (snippet - '(begin (delete-file-recursively "tools/opengldummy/3rdparty") - #t)))) + '(begin + (delete-file-recursively "tools/opengldummy/3rdparty") + #t)))) (native-inputs `()) (inputs `(("qtbase" ,qtbase) @@ -1251,16 +1247,16 @@ backend for QtQuick scene graph.") (define-public qtgamepad (package (inherit qtsvg) (name "qtgamepad") - (version "5.9.4") + (version "5.11.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" (version-major+minor version) "/" version - "/submodules/" name "-opensource-src-" + "/submodules/" name "-everywhere-src-" version ".tar.xz")) (sha256 (base32 - "1ci6aapq0i8qbzkn9xxvxn1n81z3y28yrlyzw0anqzj9qp97cl6f")))) + "0g52c03gdgz57h7szdxvc5hdy45l7q7m29yfzhwqc57hwdfl98bi")))) (native-inputs `(("perl" ,perl) ("pkg-config" ,pkg-config))) @@ -1281,16 +1277,16 @@ and mobile applications targeting TV-like form factors."))) (define-public qtscxml (package (inherit qtsvg) (name "qtscxml") - (version "5.9.5") + (version "5.11.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" (version-major+minor version) "/" version - "/submodules/" name "-opensource-src-" + "/submodules/" name "-everywhere-src-" version ".tar.xz")) (sha256 (base32 - "0knp328cinawz6xbhf9wd6h6gbwp74rb5cpmlr8gv3g5a7fjlsh1")) + "00wb89ris8fyivhz9qpqn72mzpkh6mqdjss82j3q10g3c142072k")) (modules '((guix build utils))) (snippet '(begin @@ -1312,16 +1308,16 @@ also contains functionality to support data models and executable content."))) (define-public qtpurchasing (package (inherit qtsvg) (name "qtpurchasing") - (version "5.9.4") + (version "5.11.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" (version-major+minor version) "/" version - "/submodules/" name "-opensource-src-" + "/submodules/" name "-everywhere-src-" version ".tar.xz")) (sha256 (base32 - "08sk8vw16pa1qv36rfr9dsbzlwlv6kznfpsq8wfabhkgbfl6awqs")))) + "1c92yv2yi38sic06nyr9r6zpq3y4sxnasmj14d3jmg50gc1ncqfs")))) (inputs `(("qtbase" ,qtbase) ("qtdeclarative" ,qtdeclarative))) @@ -1332,20 +1328,21 @@ purchasing goods and services."))) (define-public qtcanvas3d (package (inherit qtsvg) (name "qtcanvas3d") - (version "5.9.4") + (version "5.11.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" (version-major+minor version) "/" version - "/submodules/" name "-opensource-src-" + "/submodules/" name "-everywhere-src-" version ".tar.xz")) (sha256 (base32 - "0agdxgk7knf6zkjdi6316y2k9zq72wcg5zn3cbhw4hzjw81qadgg")) + "1kqcaks6lkz8cp9s3pwrvgrr8381rjzf5fbf2bzshdw7psphxiiz")) (modules '((guix build utils))) (snippet - '(begin (delete-file-recursively "examples/canvas3d/3rdparty") - #t)))) + '(begin + (delete-file-recursively "examples/canvas3d/3rdparty") + #t)))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ;; Building the tests depends on the bundled 3rd party javascript files, @@ -1356,8 +1353,8 @@ purchasing goods and services."))) (replace 'configure (lambda* (#:key outputs #:allow-other-keys) (let ((out (assoc-ref outputs "out"))) - (zero? (system* "qmake" "QT_BUILD_PARTS = libs tools" - (string-append "PREFIX=" out)))))))) + (invoke "qmake" "QT_BUILD_PARTS = libs tools" + (string-append "PREFIX=" out))))))) ((#:tests? _ #f) #f))) ; TODO: Enable the tests (native-inputs `()) (inputs @@ -1370,16 +1367,16 @@ drawing calls from Qt Quick JavaScript."))) (define-public qtcharts (package (inherit qtsvg) (name "qtcharts") - (version "5.9.4") + (version "5.11.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" (version-major+minor version) "/" version - "/submodules/" name "-opensource-src-" + "/submodules/" name "-everywhere-src-" version ".tar.xz")) (sha256 (base32 - "1rykb72gr95rxd0rvbl846ys8xvyyhrms1jz7l4hlwp6zn1jkxvm")))) + "0lg39vd6i0l76spjz6bhb1kkpbk2mgc0hxccj7733xxbxaz14vn4")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:tests? _ #f) #f))) ; TODO: Enable the tests @@ -1397,16 +1394,16 @@ selecting one of the charts themes.") (define-public qtdatavis3d (package (inherit qtsvg) (name "qtdatavis3d") - (version "5.9.5") + (version "5.11.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" (version-major+minor version) "/" version - "/submodules/" name "-opensource-src-" + "/submodules/" name "-everywhere-src-" version ".tar.xz")) (sha256 (base32 - "0i1zd7lcakhicfpqj7dlw8hzk8x5i4ddk1427jhxcpja48l4jxy5")))) + "1s7gmgh6g3aia74yiqahffrc6n8f4491vb7g3i4i10ilandipg34")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:tests? _ #f) #f))) ; TODO: Enable the tests @@ -1424,16 +1421,16 @@ customized by using themes or by adding custom items and labels to them.") (define-public qtnetworkauth (package (inherit qtsvg) (name "qtnetworkauth") - (version "5.9.4") + (version "5.11.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" (version-major+minor version) "/" version - "/submodules/" name "-opensource-src-" + "/submodules/" name "-everywhere-src-" version ".tar.xz")) (sha256 (base32 - "0mqcqkp9h5bgzb3wfy239wh1c9s9zxd7mww11c0jyp56wk5balcx")))) + "1kr8hwjsb8a5cypvqj48vrnkcvm2rcni102dh6i909i70a7hcsym")))) (arguments (substitute-keyword-arguments (package-arguments qtsvg) ((#:phases phases) @@ -1453,16 +1450,26 @@ implementation of OAuth and OAuth2 authenticathon methods for Qt."))) (define-public qtremoteobjects (package (inherit qtsvg) (name "qtremoteobjects") - (version "5.9.4") + (version "5.11.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" (version-major+minor version) "/" version - "/submodules/" name "-opensource-src-" + "/submodules/" name "-everywhere-src-" version ".tar.xz")) (sha256 (base32 - "1wb50dapv0l45c0rfmpiaddvwv9na50lmd5zmm052q9d1xb15f6b")))) + "1chn1xxhapfwvhrlv4chwfgf2dw8x8kn1lssdmpmg5s420z3pbq9")))) + (arguments + (substitute-keyword-arguments (package-arguments qtsvg) + ((#:phases phases) + `(modify-phases ,phases + (add-after 'unpack 'remove-failing-test + (lambda _ + ;; This test can't find its imports. + (substitute* "tests/auto/qml/qml.pro" + (("integration") "# integration")) + #t)))))) (inputs `(("qtbase" ,qtbase) ("qtdeclarative" ,qtdeclarative))) @@ -1475,16 +1482,16 @@ processes or computers."))) (define-public qtspeech (package (inherit qtsvg) (name "qtspeech") - (version "5.9.4") + (version "5.11.0") (source (origin (method url-fetch) (uri (string-append "https://download.qt.io/official_releases/qt/" (version-major+minor version) "/" version - "/submodules/" name "-opensource-src-" + "/submodules/" name "-everywhere-src-" version ".tar.xz")) (sha256 (base32 - "17h8hrixxcsn7pd5iipbj2hxpp5m2dhfq3w04wkamambb49qs80x")))) + "1bgfg0akqf1nfzm28n8dhvhj0p1niwxrfs763gj7m0g6vpwjbhd1")))) (inputs `(("qtbase" ,qtbase))) (native-inputs diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm index 32b3257dc9..dc71780514 100644 --- a/gnu/packages/video.scm +++ b/gnu/packages/video.scm @@ -885,6 +885,13 @@ audio/video codec library.") ;; XXX Likely not needed for >2.2.6. (substitute* "modules/gui/qt4/components/interface_widgets.cpp" (("<qx11info_x11.h>") "<QtX11Extras/qx11info_x11.h>")) + ;; Fix build against Qt 5.11. + (substitute* "modules/gui/qt4/actions_manager.cpp" + (("#include <vlc_keys.h>") "#include <vlc_keys.h> +#include <QAction>")) + (substitute* "modules/gui/qt4/components/simple_preferences.cpp" + (("#include <QFont>") "#include <QFont> +#include <QButtonGroup>")) #t))) (add-after 'install 'regenerate-plugin-cache (lambda* (#:key outputs #:allow-other-keys) diff --git a/gnu/services/base.scm b/gnu/services/base.scm index eb82b2ddcf..09a1ce95e3 100644 --- a/gnu/services/base.scm +++ b/gnu/services/base.scm @@ -303,15 +303,14 @@ seconds after @code{SIGTERM} has been sent are terminated with (define (file-system->fstab-entry file-system) "Return a @file{/etc/fstab} entry for @var{file-system}." - (string-append (case (file-system-title file-system) - ((label) - (string-append "LABEL=" (file-system-device file-system))) - ((uuid) - (string-append - "UUID=" - (uuid->string (file-system-device file-system)))) - (else - (file-system-device file-system))) + (string-append (match (file-system-device file-system) + ((? file-system-label? label) + (string-append "LABEL=" + (file-system-label->string file-system))) + ((? uuid? uuid) + (string-append "UUID=" (uuid->string uuid))) + ((? string? device) + device)) "\t" (file-system-mount-point file-system) "\t" (file-system-type file-system) "\t" diff --git a/gnu/system.scm b/gnu/system.scm index 816e66415c..c53bccf82c 100644 --- a/gnu/system.scm +++ b/gnu/system.scm @@ -131,13 +131,16 @@ "Prepend extra arguments to KERNEL-ARGUMENTS that allow SYSTEM.DRV to be booted from ROOT-DEVICE" (cons* (string-append "--root=" - (if (uuid? root-device) - - ;; Note: Always use the DCE format because that's - ;; what (gnu build linux-boot) expects for the - ;; '--root' kernel command-line option. - (uuid->string (uuid-bytevector root-device) 'dce) - root-device)) + (cond ((uuid? root-device) + + ;; Note: Always use the DCE format because that's + ;; what (gnu build linux-boot) expects for the + ;; '--root' kernel command-line option. + (uuid->string (uuid-bytevector root-device) + 'dce)) + ((file-system-label? root-device) + (file-system-label->string root-device)) + (else root-device))) #~(string-append "--system=" #$system.drv) #~(string-append "--load=" #$system.drv "/boot") kernel-arguments)) @@ -251,10 +254,16 @@ file system labels." (match-lambda (('uuid (? symbol? type) (? bytevector? bv)) (bytevector->uuid bv type)) + (('file-system-label (? string? label)) + (file-system-label label)) ((? bytevector? bv) ;old format (bytevector->uuid bv 'dce)) ((? string? device) - device))) + ;; It used to be that we would not distinguish between labels and + ;; device names. Try to infer the right thing here. + (if (string-prefix? "/dev/" device) + device + (file-system-label device))))) (match (read port) (('boot-parameters ('version 0) @@ -377,7 +386,7 @@ marked as 'needed-for-boot'." (let ((target (string-append "/dev/mapper/" (mapped-device-target device)))) (find (lambda (fs) (or (member device (file-system-dependencies fs)) - (and (eq? 'device (file-system-title fs)) + (and (string? (file-system-device fs)) (string=? (file-system-device fs) target)))) file-systems))) @@ -933,13 +942,6 @@ listed in OS. The C library expects to find it under (bootloader-configuration-bootloader bootloader-conf)) bootloader-conf (list entry) #:old-entries old-entries))) -(define (fs->boot-device fs) - "Given FS, a <file-system> object, return a value suitable for use as the -device in a <menu-entry>." - (case (file-system-title fs) - ((uuid label device) (file-system-device fs)) - (else #f))) - (define (operating-system-boot-parameters os system.drv root-device) "Return a monadic <boot-parameters> record that describes the boot parameters of OS. SYSTEM.DRV is either a derivation or #f. If it's a derivation, adds @@ -961,7 +963,7 @@ kernel arguments for that derivation to <boot-parameters>." (operating-system-user-kernel-arguments os))) (initrd initrd) (bootloader-name bootloader-name) - (store-device (ensure-not-/dev (fs->boot-device store))) + (store-device (ensure-not-/dev (file-system-device store))) (store-mount-point (file-system-mount-point store)))))) (define (device->sexp device) @@ -969,6 +971,8 @@ kernel arguments for that derivation to <boot-parameters>." (match device ((? uuid? uuid) `(uuid ,(uuid-type uuid) ,(uuid-bytevector uuid))) + ((? file-system-label? label) + `(file-system-label ,(file-system-label->string label))) (_ device))) diff --git a/gnu/system/examples/bare-bones.tmpl b/gnu/system/examples/bare-bones.tmpl index 7e0c8fbee0..cb6d2623db 100644 --- a/gnu/system/examples/bare-bones.tmpl +++ b/gnu/system/examples/bare-bones.tmpl @@ -16,8 +16,7 @@ (bootloader grub-bootloader) (target "/dev/sdX"))) (file-systems (cons (file-system - (device "my-root") - (title 'label) + (device (file-system-label "my-root")) (mount-point "/") (type "ext4")) %base-file-systems)) diff --git a/gnu/system/examples/beaglebone-black.tmpl b/gnu/system/examples/beaglebone-black.tmpl index 97201330c7..d1130c76b6 100644 --- a/gnu/system/examples/beaglebone-black.tmpl +++ b/gnu/system/examples/beaglebone-black.tmpl @@ -20,8 +20,7 @@ (initrd-modules (cons "omap_hsmmc" %base-initrd-modules)) (file-systems (cons (file-system - (device "my-root") - (title 'label) + (device (file-system-label "my-root")) (mount-point "/") (type "ext4")) %base-file-systems)) diff --git a/gnu/system/examples/lightweight-desktop.tmpl b/gnu/system/examples/lightweight-desktop.tmpl index 65a8ee1809..360ee62ffe 100644 --- a/gnu/system/examples/lightweight-desktop.tmpl +++ b/gnu/system/examples/lightweight-desktop.tmpl @@ -20,13 +20,11 @@ ;; Assume the target root file system is labelled "my-root", ;; and the EFI System Partition has UUID 1234-ABCD. (file-systems (cons* (file-system - (device "my-root") - (title 'label) + (device (file-system-label "my-root")) (mount-point "/") (type "ext4")) (file-system (device (uuid "1234-ABCD" 'fat)) - (title 'uuid) (mount-point "/boot/efi") (type "vfat")) %base-file-systems)) diff --git a/gnu/system/examples/vm-image.tmpl b/gnu/system/examples/vm-image.tmpl index ce3653c8b4..36e272722d 100644 --- a/gnu/system/examples/vm-image.tmpl +++ b/gnu/system/examples/vm-image.tmpl @@ -31,8 +31,7 @@ partprobe, and then 2) resizing the filesystem with resize2fs.\n")) (target "/dev/sda") (terminal-outputs '(console)))) (file-systems (cons (file-system - (device "my-root") - (title 'label) + (device (file-system-label "my-root")) (mount-point "/") (type "ext4")) %base-file-systems)) diff --git a/gnu/system/file-systems.scm b/gnu/system/file-systems.scm index 93289dbd5d..2b5948256a 100644 --- a/gnu/system/file-systems.scm +++ b/gnu/system/file-systems.scm @@ -20,6 +20,8 @@ #:use-module (ice-9 match) #:use-module (rnrs bytevectors) #:use-module (srfi srfi-1) + #:use-module (srfi srfi-9) + #:use-module (srfi srfi-9 gnu) #:use-module (guix records) #:use-module (gnu system uuid) #:re-export (uuid ;backward compatibility @@ -28,7 +30,7 @@ #:export (file-system file-system? file-system-device - file-system-title + file-system-title ;deprecated file-system-mount-point file-system-type file-system-needed-for-boot? @@ -42,6 +44,10 @@ file-system-type-predicate + file-system-label + file-system-label? + file-system-label->string + file-system->spec spec->file-system specification->file-system-mapping @@ -82,12 +88,10 @@ ;;; Code: ;; File system declaration. -(define-record-type* <file-system> file-system +(define-record-type* <file-system> %file-system make-file-system file-system? - (device file-system-device) ; string - (title file-system-title ; 'device | 'label | 'uuid - (default 'device)) + (device file-system-device) ; string | <uuid> | <file-system-label> (mount-point file-system-mount-point) ; string (type file-system-type) ; string (flags file-system-flags ; list of symbols @@ -108,6 +112,83 @@ (default (current-source-location)) (innate))) +;; A file system label for use in the 'device' field. +(define-record-type <file-system-label> + (file-system-label label) + file-system-label? + (label file-system-label->string)) + +(set-record-type-printer! <file-system-label> + (lambda (obj port) + (format port "#<file-system-label ~s>" + (file-system-label->string obj)))) + +(define-syntax report-deprecation + (lambda (s) + "Report the use of the now-deprecated 'title' field." + (syntax-case s () + ((_ field) + (let* ((source (syntax-source #'field)) + (file (and source (assq-ref source 'filename))) + (line (and source + (and=> (assq-ref source 'line) 1+))) + (column (and source (assq-ref source 'column)))) + (format (current-error-port) + "~a:~a:~a: warning: 'title' field is deprecated~%" + file line column) + #t))))) + +;; Helper for 'process-file-system-declaration'. +(define-syntax device-expression + (syntax-rules (quote label uuid device) + ((_ (quote label) dev) + (file-system-label dev)) + ((_ (quote uuid) dev) + (if (uuid? dev) dev (uuid dev))) + ((_ (quote device) dev) + dev) + ((_ title dev) + (case title + ((label) (file-system-label dev)) + ((uuid) (uuid dev)) + (else dev))))) + +;; Helper to interpret the now-deprecated 'title' field. Detect forms like +;; (title 'label), remove them, and adjust the 'device' field accordingly. +;; TODO: Remove this once 'title' has been deprecated long enough. +(define-syntax process-file-system-declaration + (syntax-rules (device title) + ((_ () (rest ...) #f #f) ;no 'title' and no 'device' field + (%file-system rest ...)) + ((_ () (rest ...) dev #f) ;no 'title' field + (%file-system rest ... (device dev))) + ((_ () (rest ...) dev titl) ;got a 'title' field + (%file-system rest ... + (device (device-expression titl dev)))) + ((_ ((title titl) rest ...) (previous ...) dev _) + (begin + (report-deprecation (title titl)) + (process-file-system-declaration (rest ...) + (previous ...) + dev titl))) + ((_ ((device dev) rest ...) (previous ...) _ titl) + (process-file-system-declaration (rest ...) + (previous ...) + dev titl)) + ((_ (field rest ...) (previous ...) dev titl) + (process-file-system-declaration (rest ...) + (previous ... field) + dev titl)))) + +(define-syntax-rule (file-system fields ...) + (process-file-system-declaration (fields ...) () #f #f)) + +(define (file-system-title fs) ;deprecated + (match (file-system-device fs) + ((? file-system-label?) 'label) + ((? uuid?) 'uuid) + ((? string?) 'device))) + ;; Note: This module is used both on the build side and on the host side. ;; Arrange not to pull (guix store) and (guix config) because the latter ;; differs from user to user. @@ -160,23 +241,26 @@ store--e.g., if FS is the root file system." "Return a list corresponding to file-system FS that can be passed to the initrd code." (match fs - (($ <file-system> device title mount-point type flags options _ _ check?) - (list (if (uuid? device) - `(uuid ,(uuid-type device) ,(uuid-bytevector device)) - device) - title mount-point type flags options check?)))) + (($ <file-system> device mount-point type flags options _ _ check?) + (list (cond ((uuid? device) + `(uuid ,(uuid-type device) ,(uuid-bytevector device))) + ((file-system-label? device) + `(file-system-label ,(file-system-label->string device))) + (else device)) + mount-point type flags options check?)))) (define (spec->file-system sexp) "Deserialize SEXP, a list, to the corresponding <file-system> object." (match sexp - ((device title mount-point type flags options check?) + ((device mount-point type flags options check?) (file-system (device (match device (('uuid (? symbol? type) (? bytevector? bv)) (bytevector->uuid bv type)) + (('file-system-label (? string? label)) + (file-system-label label)) (_ device))) - (title title) (mount-point mount-point) (type type) (flags flags) (options options) (check? check?))))) diff --git a/gnu/system/install.scm b/gnu/system/install.scm index 3efff915a8..acc9f15e0d 100644 --- a/gnu/system/install.scm +++ b/gnu/system/install.scm @@ -328,8 +328,7 @@ You have been warned. Thanks for being so brave.\x1b[0m ;; the appropriate one. (cons* (file-system (mount-point "/") - (device "GuixSD_image") - (title 'label) + (device (file-system-label "GuixSD_image")) (type "ext4")) ;; Make /tmp a tmpfs instead of keeping the overlayfs. This @@ -341,7 +340,6 @@ You have been warned. Thanks for being so brave.\x1b[0m (file-system (mount-point "/tmp") (device "none") - (title 'device) (type "tmpfs") (check? #f)) diff --git a/gnu/system/vm.scm b/gnu/system/vm.scm index eb73b5ca7a..4cffc71d7f 100644 --- a/gnu/system/vm.scm +++ b/gnu/system/vm.scm @@ -571,7 +571,6 @@ to USB sticks meant to be read-only." (file-systems (cons (file-system (mount-point "/") (device root-uuid) - (title 'uuid) (type file-system-type)) file-systems-to-keep))))) @@ -636,7 +635,6 @@ of the GNU system as described by OS." (file-systems (cons (file-system (mount-point "/") (device root-uuid) - (title 'uuid) (type file-system-type)) file-systems-to-keep))))) (mlet* %store-monad @@ -693,13 +691,12 @@ environment with the store shared with the host. MAPPINGS is a list of (source (file-system-device fs))) (or (string=? target (%store-prefix)) (string=? target "/") - (and (eq? 'device (file-system-title fs)) + (and (string? source) (string-prefix? "/dev/" source)) ;; Labels and UUIDs are necessarily invalid in the VM. (and (file-system-mount? fs) - (or (eq? 'label (file-system-title fs)) - (eq? 'uuid (file-system-title fs)) + (or (file-system-label? source) (uuid? source)))))) (operating-system-file-systems os))) diff --git a/gnu/tests.scm b/gnu/tests.scm index 2aef370af5..5d4a4f8062 100644 --- a/gnu/tests.scm +++ b/gnu/tests.scm @@ -208,8 +208,7 @@ the system under test." (bootloader grub-bootloader) (target "/dev/sdX"))) (file-systems (cons (file-system - (device "my-root") - (title 'label) + (device (file-system-label "my-root")) (mount-point "/") (type "ext4")) %base-file-systems)) diff --git a/gnu/tests/install.scm b/gnu/tests/install.scm index e3bb1b46af..4764ffffde 100644 --- a/gnu/tests/install.scm +++ b/gnu/tests/install.scm @@ -66,8 +66,7 @@ (target "/dev/vdb"))) (kernel-arguments '("console=ttyS0")) (file-systems (cons (file-system - (device "my-root") - (title 'label) + (device (file-system-label "my-root")) (mount-point "/") (type "ext4")) %base-file-systems)) @@ -105,8 +104,7 @@ (target "/dev/vdb"))) (kernel-arguments '("console=ttyS0")) (file-systems (cons (file-system - (device "my-root") - (title 'label) + (device (file-system-label "my-root")) (mount-point "/") (type "ext4")) %base-file-systems)) @@ -351,8 +349,7 @@ per %test-installed-os, this test is expensive in terms of CPU and storage.") (target "/dev/vda"))) (kernel-arguments '("console=ttyS0")) (file-systems (cons (file-system - (device "my-root") - (title 'label) + (device (file-system-label "my-root")) (mount-point "/") (type "ext4")) %base-file-systems)) @@ -428,13 +425,11 @@ reboot\n") (target "/dev/vdb"))) (kernel-arguments '("console=ttyS0")) (file-systems (cons* (file-system - (device "my-root") - (title 'label) + (device (file-system-label "my-root")) (mount-point "/") (type "ext4")) (file-system (device "none") - (title 'device) (type "tmpfs") (mount-point "/home") (type "tmpfs")) @@ -488,13 +483,11 @@ partition. In particular, home directories must be correctly created (see (target "/dev/vdb"))) (kernel-arguments '("console=ttyS0")) (file-systems (cons* (file-system - (device "root-fs") - (title 'label) + (device (file-system-label "root-fs")) (mount-point "/") (type "ext4")) (file-system - (device "store-fs") - (title 'label) + (device (file-system-label "store-fs")) (mount-point "/gnu") (type "ext4")) %base-file-systems)) @@ -574,8 +567,7 @@ where /gnu lives on a separate partition.") (target "/dev/md0") (type raid-device-mapping)))) (file-systems (cons (file-system - (device "root-fs") - (title 'label) + (device (file-system-label "root-fs")) (mount-point "/") (type "ext4") (dependencies mapped-devices)) @@ -658,7 +650,6 @@ by 'mdadm'.") (type luks-device-mapping)))) (file-systems (cons (file-system (device "/dev/mapper/the-root-device") - (title 'device) (mount-point "/") (type "ext4")) %base-file-systems)) @@ -779,8 +770,7 @@ build (current-guix) and then store a couple of full system images.") (target "/dev/vdb"))) (kernel-arguments '("console=ttyS0")) (file-systems (cons (file-system - (device "my-root") - (title 'label) + (device (file-system-label "my-root")) (mount-point "/") (type "btrfs")) %base-file-systems)) diff --git a/guix/scripts/pack.scm b/guix/scripts/pack.scm index 1e84459e78..35b8a7e729 100644 --- a/guix/scripts/pack.scm +++ b/guix/scripts/pack.scm @@ -1,7 +1,7 @@ ;;; GNU Guix --- Functional package management for GNU ;;; Copyright © 2015, 2017, 2018 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il> -;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> +;;; Copyright © 2017, 2018 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2018 Konrad Hinsen <konrad.hinsen@fastmail.net> ;;; Copyright © 2018 Chris Marusich <cmmarusich@gmail.com> ;;; @@ -93,7 +93,7 @@ found." (compressor (first %compressors)) localstatedir? (symlinks '()) - (tar tar)) + (archiver tar)) "Return a self-contained tarball containing a store initialized with the closure of PROFILE, a derivation. The tarball contains /gnu/store; if LOCALSTATEDIR? is true, it also contains /var/guix, including /var/guix/db @@ -142,7 +142,7 @@ added to the pack." ;; 2014-07-28. For testing, we use the bootstrap tar, which is ;; older and doesn't support it. (define tar-supports-sort? - (zero? (system* (string-append #+tar "/bin/tar") + (zero? (system* (string-append #+archiver "/bin/tar") "cf" "/dev/null" "--files-from=/dev/null" "--sort=name"))) @@ -151,7 +151,7 @@ added to the pack." (string-append #$(if localstatedir? (file-append guix "/sbin:") "") - #$tar "/bin")) + #$archiver "/bin")) ;; Note: there is not much to gain here with deduplication and there ;; is the overhead of the '.links' directory, so turn it off. @@ -214,13 +214,97 @@ added to the pack." build #:references-graphs `(("profile" ,profile)))) +(define* (squashfs-image name profile + #:key target + deduplicate? + (compressor (first %compressors)) + localstatedir? + (symlinks '()) + (archiver squashfs-tools-next)) + "Return a squashfs image containing a store initialized with the closure of +PROFILE, a derivation. The image contains a subset of /gnu/store, empty mount +points for virtual file systems (like procfs), and optional symlinks. + +SYMLINKS must be a list of (SOURCE -> TARGET) tuples denoting symlinks to be +added to the pack." + (define build + (with-imported-modules '((guix build utils) + (guix build store-copy) + (gnu build install)) + #~(begin + (use-modules (guix build utils) + (gnu build install) + (guix build store-copy) + (srfi srfi-1) + (srfi srfi-26) + (ice-9 match)) + + (setenv "PATH" (string-append #$archiver "/bin")) + + ;; We need an empty file in order to have a valid file argument when + ;; we reparent the root file system. Read on for why that's + ;; necessary. + (with-output-to-file ".empty" (lambda () (display ""))) + + ;; Create the squashfs image in several steps. + ;; Add all store items. Unfortunately mksquashfs throws away all + ;; ancestor directories and only keeps the basename. We fix this + ;; in the following invocations of mksquashfs. + (apply invoke "mksquashfs" + `(,@(call-with-input-file "profile" + read-reference-graph) + ,#$output + + ;; Do not perform duplicate checking because we + ;; don't have any dupes. + "-no-duplicates" + "-comp" + ,#+(compressor-name compressor))) + + ;; Here we reparent the store items. For each sub-directory of + ;; the store prefix we need one invocation of "mksquashfs". + (for-each (lambda (dir) + (apply invoke "mksquashfs" + `(".empty" + ,#$output + "-root-becomes" ,dir))) + (reverse (string-tokenize (%store-directory) + (char-set-complement (char-set #\/))))) + + ;; Add symlinks and mount points. + (apply invoke "mksquashfs" + `(".empty" + ,#$output + ;; Create SYMLINKS via pseudo file definitions. + ,@(append-map + (match-lambda + ((source '-> target) + (list "-p" + (string-join + ;; name s mode uid gid symlink + (list source + "s" "777" "0" "0" + (string-append #$profile "/" target)))))) + '#$symlinks) + + ;; Create empty mount points. + "-p" "/proc d 555 0 0" + "-p" "/sys d 555 0 0" + "-p" "/dev d 555 0 0"))))) + + (gexp->derivation (string-append name + (compressor-extension compressor) + ".squashfs") + build + #:references-graphs `(("profile" ,profile)))) + (define* (docker-image name profile #:key target deduplicate? (compressor (first %compressors)) localstatedir? (symlinks '()) - (tar tar)) + (archiver tar)) "Return a derivation to construct a Docker image of PROFILE. The image is a tarball conforming to the Docker Image Specification, compressed with COMPRESSOR. It can be passed to 'docker load'. If TARGET is true, it @@ -268,7 +352,7 @@ the image." (use-modules (guix docker) (srfi srfi-19) (guix build store-copy)) - (setenv "PATH" (string-append #$tar "/bin")) + (setenv "PATH" (string-append #$archiver "/bin")) (build-docker-image #$output (call-with-input-file "profile" @@ -462,6 +546,7 @@ please email '~a'~%") (define %formats ;; Supported pack formats. `((tarball . ,self-contained-tarball) + (squashfs . ,squashfs-image) (docker . ,docker-image))) (define %options @@ -626,9 +711,11 @@ Create a bundle of PACKAGE.\n")) (compressor (if bootstrap? bootstrap-xz (assoc-ref opts 'compressor))) - (tar (if bootstrap? - %bootstrap-coreutils&co - tar)) + (archiver (if (equal? pack-format 'squashfs) + squashfs-tools-next + (if bootstrap? + %bootstrap-coreutils&co + tar))) (symlinks (assoc-ref opts 'symlinks)) (build-image (match (assq-ref %formats pack-format) ((? procedure? proc) proc) @@ -654,8 +741,8 @@ Create a bundle of PACKAGE.\n")) symlinks #:localstatedir? localstatedir? - #:tar - tar))) + #:archiver + archiver))) (mbegin %store-monad (show-what-to-build* (list drv) #:use-substitutes? diff --git a/guix/scripts/system.scm b/guix/scripts/system.scm index af501eb8f7..5d0df14924 100644 --- a/guix/scripts/system.scm +++ b/guix/scripts/system.scm @@ -590,17 +590,17 @@ any, are available. Raise an error if they're not." (define labeled (filter (lambda (fs) - (eq? (file-system-title fs) 'label)) + (file-system-label? (file-system-device fs))) relevant)) (define literal (filter (lambda (fs) - (eq? (file-system-title fs) 'device)) + (string? (file-system-device fs))) relevant)) (define uuid (filter (lambda (fs) - (eq? (file-system-title fs) 'uuid)) + (uuid? (file-system-device fs))) relevant)) (define fail? #f) @@ -628,15 +628,15 @@ any, are available. Raise an error if they're not." (strerror errno)) (unless (string-prefix? "/" device) (display-hint (format #f (G_ "If '~a' is a file system -label, you need to add @code{(title 'label)} to your @code{file-system} -definition.") - device))))))) +label, write @code{(file-system-label ~s)} in your @code{device} field.") + device device))))))) literal) (for-each (lambda (fs) - (unless (find-partition-by-label (file-system-device fs)) - (error (G_ "~a: error: file system with label '~a' not found~%") - (file-system-location* fs) - (file-system-device fs)))) + (let ((label (file-system-label->string + (file-system-device fs)))) + (unless (find-partition-by-label label) + (error (G_ "~a: error: file system with label '~a' not found~%") + (file-system-location* fs) label)))) labeled) (for-each (lambda (fs) (unless (find-partition-by-uuid (file-system-device fs)) @@ -677,10 +677,13 @@ available in the initrd. Note that mapped devices are responsible for checking this by themselves in their 'check' procedure." (define (file-system-/dev fs) (let ((device (file-system-device fs))) - (match (file-system-title fs) - ('device device) - ('uuid (find-partition-by-uuid device)) - ('label (find-partition-by-label device))))) + (match device + ((? string?) + device) + ((? uuid?) + (find-partition-by-uuid device)) + ((? file-system-label?) + (find-partition-by-label (file-system-label->string device)))))) (define file-systems (filter file-system-needed-for-boot? diff --git a/tests/guix-system.sh b/tests/guix-system.sh index 2b94bc0516..36ba5fbd5f 100644 --- a/tests/guix-system.sh +++ b/tests/guix-system.sh @@ -111,8 +111,7 @@ cat > "$tmpfile" <<EOF (bootloader (GRUB-config (device "/dev/sdX"))) ; 9 (file-systems (cons (file-system - (device "root") - (title 'label) + (device (file-system-label "root")) (mount-point "/") (type "ext4")) %base-file-systems))) @@ -140,8 +139,7 @@ OS_BASE=' (bootloader grub-bootloader) (device "/dev/sdX"))) (file-systems (cons (file-system - (device "root") - (title (string->symbol "label")) + (device (file-system-label "root")) (mount-point "/") (type "ext4")) %base-file-systems)) @@ -213,8 +211,7 @@ make_user_config () (bootloader grub-bootloader) (device "/dev/sdX"))) (file-systems (cons (file-system - (device "root") - (title 'label) + (device (file-system-label "root")) (mount-point "/") (type "ext4")) %base-file-systems)) diff --git a/tests/system.scm b/tests/system.scm index 6a7f45c59c..7d55da7174 100644 --- a/tests/system.scm +++ b/tests/system.scm @@ -1,5 +1,5 @@ ;;; GNU Guix --- Functional package management for GNU -;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org> +;;; Copyright © 2016, 2018 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr> ;;; ;;; This file is part of GNU Guix. @@ -27,8 +27,7 @@ (define %root-fs (file-system - (device "my-root") - (title 'label) + (device (file-system-label "my-root")) (mount-point "/") (type "ext4"))) @@ -114,7 +113,6 @@ (inherit %os-with-mapped-device) (file-systems (cons (file-system (device "/dev/mapper/my-luks-device") - (title 'device) (mount-point "/") (type "ext4")) %base-file-systems))))) |