aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMark H Weaver <mhw@netris.org>2018-05-28 20:45:37 -0400
committerMark H Weaver <mhw@netris.org>2018-05-28 20:45:37 -0400
commit82b695b834f88c5561de40e68f3fe7aa24d3b796 (patch)
tree41743fff1013584ee4a50852a94cff01c3cc3d1c
parentfe365a3d0e4df7445bf16d3bb422a0bc6bb68ceb (diff)
parentee3c8fbee21299ce105bafca7dc63bfb096cd7c5 (diff)
downloadguix-82b695b834f88c5561de40e68f3fe7aa24d3b796.tar
guix-82b695b834f88c5561de40e68f3fe7aa24d3b796.tar.gz
Merge branch 'master' into core-updates
-rw-r--r--doc/guix.texi70
-rw-r--r--gnu/bootloader/grub.scm10
-rw-r--r--gnu/build/file-systems.scm54
-rw-r--r--gnu/build/linux-boot.scm12
-rw-r--r--gnu/build/shepherd.scm3
-rw-r--r--gnu/local.mk4
-rw-r--r--gnu/packages/algebra.scm36
-rw-r--r--gnu/packages/audio.scm12
-rw-r--r--gnu/packages/bootloaders.scm47
-rw-r--r--gnu/packages/check.scm20
-rw-r--r--gnu/packages/code.scm58
-rw-r--r--gnu/packages/compression.scm19
-rw-r--r--gnu/packages/cpp.scm120
-rw-r--r--gnu/packages/games.scm4
-rw-r--r--gnu/packages/gnuzilla.scm10
-rw-r--r--gnu/packages/java.scm336
-rw-r--r--gnu/packages/linux.scm49
-rw-r--r--gnu/packages/messaging.scm8
-rw-r--r--gnu/packages/music.scm47
-rw-r--r--gnu/packages/networking.scm17
-rw-r--r--gnu/packages/patches/fifo-map-fix-flags-for-gcc.patch39
-rw-r--r--gnu/packages/patches/fifo-map-remove-catch.hpp.patch30
-rw-r--r--gnu/packages/patches/libmygpo-qt-fix-qt-5.11.patch78
-rw-r--r--gnu/packages/patches/libmygpo-qt-missing-qt5-modules.patch51
-rw-r--r--gnu/packages/qt.scm309
-rw-r--r--gnu/packages/video.scm7
-rw-r--r--gnu/services/base.scm17
-rw-r--r--gnu/system.scm38
-rw-r--r--gnu/system/examples/bare-bones.tmpl3
-rw-r--r--gnu/system/examples/beaglebone-black.tmpl3
-rw-r--r--gnu/system/examples/lightweight-desktop.tmpl4
-rw-r--r--gnu/system/examples/vm-image.tmpl3
-rw-r--r--gnu/system/file-systems.scm108
-rw-r--r--gnu/system/install.scm4
-rw-r--r--gnu/system/vm.scm7
-rw-r--r--gnu/tests.scm3
-rw-r--r--gnu/tests/install.scm26
-rw-r--r--guix/scripts/pack.scm109
-rw-r--r--guix/scripts/system.scm31
-rw-r--r--tests/guix-system.sh9
-rw-r--r--tests/system.scm6
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)))))