aboutsummaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
Diffstat (limited to 'gnu')
-rw-r--r--gnu/build/accounts.scm24
-rw-r--r--gnu/build/activation.scm37
-rw-r--r--gnu/build/locale.scm95
-rw-r--r--gnu/installer/locale.scm19
-rw-r--r--gnu/installer/newt/network.scm2
-rw-r--r--gnu/installer/services.scm7
-rw-r--r--gnu/local.mk4
-rw-r--r--gnu/packages/admin.scm22
-rw-r--r--gnu/packages/animation.scm4
-rw-r--r--gnu/packages/aspell.scm16
-rw-r--r--gnu/packages/audio.scm4
-rw-r--r--gnu/packages/base.scm37
-rw-r--r--gnu/packages/benchmark.scm6
-rw-r--r--gnu/packages/build-tools.scm9
-rw-r--r--gnu/packages/busybox.scm4
-rw-r--r--gnu/packages/compression.scm13
-rw-r--r--gnu/packages/coq.scm6
-rw-r--r--gnu/packages/cpp.scm45
-rw-r--r--gnu/packages/datastructures.scm4
-rw-r--r--gnu/packages/emacs-xyz.scm40
-rw-r--r--gnu/packages/emulators.scm5
-rw-r--r--gnu/packages/enlightenment.scm6
-rw-r--r--gnu/packages/finance.scm21
-rw-r--r--gnu/packages/fonts.scm20
-rw-r--r--gnu/packages/fpga.scm6
-rw-r--r--gnu/packages/game-development.scm14
-rw-r--r--gnu/packages/games.scm49
-rw-r--r--gnu/packages/gettext.scm4
-rw-r--r--gnu/packages/gimp.scm4
-rw-r--r--gnu/packages/gnome.scm15
-rw-r--r--gnu/packages/haskell-web.scm11
-rw-r--r--gnu/packages/haskell.scm4
-rw-r--r--gnu/packages/image-viewers.scm48
-rw-r--r--gnu/packages/linux.scm69
-rw-r--r--gnu/packages/mail.scm6
-rw-r--r--gnu/packages/music.scm8
-rw-r--r--gnu/packages/ocaml.scm17
-rw-r--r--gnu/packages/patches/allegro-mesa-18.2.5-and-later.patch41
-rw-r--r--gnu/packages/shells.scm13
-rw-r--r--gnu/packages/slang.scm10
-rw-r--r--gnu/packages/storage.scm4
-rw-r--r--gnu/packages/tmux.scm4
-rw-r--r--gnu/packages/version-control.scm6
-rw-r--r--gnu/packages/video.scm18
-rw-r--r--gnu/packages/vulkan.scm4
-rw-r--r--gnu/packages/wm.scm42
-rw-r--r--gnu/packages/xml.scm10
-rw-r--r--gnu/services/auditd.scm54
-rw-r--r--gnu/services/docker.scm61
-rw-r--r--gnu/system/locale.scm83
-rw-r--r--gnu/tests/docker.scm19
-rw-r--r--gnu/tests/singularity.scm137
52 files changed, 872 insertions, 339 deletions
diff --git a/gnu/build/accounts.scm b/gnu/build/accounts.scm
index c43ce85b60..b90149565f 100644
--- a/gnu/build/accounts.scm
+++ b/gnu/build/accounts.scm
@@ -19,6 +19,7 @@
(define-module (gnu build accounts)
#:use-module (guix records)
#:use-module (guix combinators)
+ #:use-module ((guix build syscalls) #:select (fdatasync))
#:use-module (gnu system accounts)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-11)
@@ -51,6 +52,7 @@
group-entry-gid
group-entry-members
+ %password-lock-file
write-group
write-passwd
write-shadow
@@ -224,6 +226,19 @@ each field."
(serialization list->comma-separated comma-separated->list)
(default '())))
+(define %password-lock-file
+ ;; The password database lock file used by libc's 'lckpwdf'. Users should
+ ;; grab this lock with 'with-file-lock' when they access the databases.
+ "/etc/.pwd.lock")
+
+(define-syntax-rule (catch-ENOSYS exp)
+ (catch 'system-error
+ (lambda () exp)
+ (lambda args
+ (if (= ENOSYS (system-error-errno args))
+ #f
+ (apply throw args)))))
+
(define (database-writer file mode entry->string)
(lambda* (entries #:optional (file-or-port file))
"Write ENTRIES to FILE-OR-PORT. When FILE-OR-PORT is a file name, write
@@ -243,9 +258,16 @@ to it atomically and set the appropriate permissions."
(lambda ()
(chmod port mode)
(write-entries port)
+
+ ;; XXX: When booting with the statically-linked Guile,
+ ;; 'fdatasync' is unavailable.
+ (catch-ENOSYS (fdatasync port))
+
+ (close-port port)
(rename-file template file-or-port))
(lambda ()
- (close-port port)
+ (unless (port-closed? port)
+ (close-port port))
(when (file-exists? template)
(delete-file template))))))))
diff --git a/gnu/build/activation.scm b/gnu/build/activation.scm
index cfdf17df0f..c6c7e7fd3b 100644
--- a/gnu/build/activation.scm
+++ b/gnu/build/activation.scm
@@ -22,6 +22,7 @@
#:use-module (gnu build accounts)
#:use-module (gnu build linux-boot)
#:use-module (guix build utils)
+ #:use-module ((guix build syscalls) #:select (with-file-lock))
#:use-module (ice-9 ftw)
#:use-module (ice-9 match)
#:use-module (ice-9 vlist)
@@ -129,22 +130,26 @@ group records) are all available."
;; Allow home directories to be created under /var/lib.
(mkdir-p "/var/lib")
- (let-values (((groups passwd shadow)
- (user+group-databases users groups)))
- (write-group groups)
- (write-passwd passwd)
- (write-shadow shadow)
-
- ;; Home directories of non-system accounts are created by
- ;; 'activate-user-home'.
- (for-each make-home-directory system-accounts)
-
- ;; Turn shared home directories, such as /var/empty, into root-owned,
- ;; read-only places.
- (for-each (lambda (directory)
- (chown directory 0 0)
- (chmod directory #o555))
- (duplicates (map user-account-home-directory system-accounts)))))
+ ;; Take same lock as libc's 'lckpwdf' (but without a timeout) while we read
+ ;; and write the databases. This ensures there's no race condition with
+ ;; other tools that might be accessing it at the same time.
+ (with-file-lock %password-lock-file
+ (let-values (((groups passwd shadow)
+ (user+group-databases users groups)))
+ (write-group groups)
+ (write-passwd passwd)
+ (write-shadow shadow)))
+
+ ;; Home directories of non-system accounts are created by
+ ;; 'activate-user-home'.
+ (for-each make-home-directory system-accounts)
+
+ ;; Turn shared home directories, such as /var/empty, into root-owned,
+ ;; read-only places.
+ (for-each (lambda (directory)
+ (chown directory 0 0)
+ (chmod directory #o555))
+ (duplicates (map user-account-home-directory system-accounts))))
(define (activate-user-home users)
"Create and populate the home directory of USERS, a list of tuples, unless
diff --git a/gnu/build/locale.scm b/gnu/build/locale.scm
new file mode 100644
index 0000000000..412759a320
--- /dev/null
+++ b/gnu/build/locale.scm
@@ -0,0 +1,95 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu build locale)
+ #:use-module (guix build utils)
+ #:use-module (srfi srfi-1)
+ #:use-module (ice-9 rdelim)
+ #:use-module (ice-9 match)
+ #:use-module (ice-9 regex)
+ #:export (build-locale
+ normalize-codeset
+ locale->name+codeset
+ read-supported-locales))
+
+(define locale-rx
+ ;; Regexp matching a locale line in 'localedata/SUPPORTED'.
+ (make-regexp
+ "^[[:space:]]*([[:graph:]]+)/([[:graph:]]+)[[:space:]]*\\\\$"))
+
+(define (read-supported-locales port)
+ "Read the 'localedata/SUPPORTED' file from PORT. That file is actually a
+makefile snippet, with one locale per line, and a header that can be
+discarded."
+ (let loop ((locales '()))
+ (define line
+ (read-line port))
+
+ (cond ((eof-object? line)
+ (reverse locales))
+ ((string-prefix? "#" (string-trim line)) ;comment
+ (loop locales))
+ ((string-contains line "=") ;makefile variable assignment
+ (loop locales))
+ (else
+ (match (regexp-exec locale-rx line)
+ (#f
+ (loop locales))
+ (m
+ (loop (alist-cons (match:substring m 1)
+ (match:substring m 2)
+ locales))))))))
+
+(define (normalize-codeset codeset)
+ "Compute the \"normalized\" variant of CODESET."
+ ;; info "(libc) Using gettextized software", for the algorithm used to
+ ;; compute the normalized codeset.
+ (letrec-syntax ((-> (syntax-rules ()
+ ((_ proc value)
+ (proc value))
+ ((_ proc rest ...)
+ (proc (-> rest ...))))))
+ (-> (lambda (str)
+ (if (string-every char-set:digit str)
+ (string-append "iso" str)
+ str))
+ string-downcase
+ (lambda (str)
+ (string-filter char-set:letter+digit str))
+ codeset)))
+
+(define* (build-locale locale
+ #:key
+ (localedef "localedef")
+ (directory ".")
+ (codeset "UTF-8")
+ (name (string-append locale "." codeset)))
+ "Compute locale data for LOCALE and CODESET--e.g., \"en_US\" and
+\"UTF-8\"--with LOCALEDEF, and store it in DIRECTORY under NAME."
+ (format #t "building locale '~a'...~%" name)
+ (invoke localedef "--no-archive" "--prefix" directory
+ "-i" locale "-f" codeset
+ (string-append directory "/" name)))
+
+(define (locale->name+codeset locale)
+ "Split a locale name such as \"aa_ER@saaho.UTF-8\" into two values: the
+language/territory/modifier part, and the codeset."
+ (match (string-rindex locale #\.)
+ (#f (values locale #f))
+ (dot (values (string-take locale dot)
+ (string-drop locale (+ dot 1))))))
diff --git a/gnu/installer/locale.scm b/gnu/installer/locale.scm
index 2ee5eecd96..13f3a1e881 100644
--- a/gnu/installer/locale.scm
+++ b/gnu/installer/locale.scm
@@ -19,6 +19,7 @@
(define-module (gnu installer locale)
#:use-module (gnu installer utils)
+ #:use-module ((gnu build locale) #:select (normalize-codeset))
#:use-module (guix records)
#:use-module (json)
#:use-module (srfi srfi-1)
@@ -71,24 +72,6 @@ optionally, CODESET."
(codeset . ,(or codeset (match:substring matches 5)))
(modifier . ,(match:substring matches 7)))))
-(define (normalize-codeset codeset)
- "Compute the \"normalized\" variant of CODESET."
- ;; info "(libc) Using gettextized software", for the algorithm used to
- ;; compute the normalized codeset.
- (letrec-syntax ((-> (syntax-rules ()
- ((_ proc value)
- (proc value))
- ((_ proc rest ...)
- (proc (-> rest ...))))))
- (-> (lambda (str)
- (if (string-every char-set:digit str)
- (string-append "iso" str)
- str))
- string-downcase
- (lambda (str)
- (string-filter char-set:letter+digit str))
- codeset)))
-
(define (locale->locale-string locale)
"Reverse operation of locale-string->locale."
(let ((language (locale-language locale))
diff --git a/gnu/installer/newt/network.scm b/gnu/installer/newt/network.scm
index 0a938db103..40d85817b6 100644
--- a/gnu/installer/newt/network.scm
+++ b/gnu/installer/newt/network.scm
@@ -62,7 +62,7 @@ Internet and return the selected technology. For now, only technologies with
(G_ "Continue")
(G_ "Exit")
(G_ "The install process requires Internet access but no \
-network device were found. Do you want to continue anyway?"))
+network devices were found. Do you want to continue anyway?"))
((1) (raise
(condition
(&installer-step-break))))
diff --git a/gnu/installer/services.scm b/gnu/installer/services.scm
index d1dc516568..dbac79196d 100644
--- a/gnu/installer/services.scm
+++ b/gnu/installer/services.scm
@@ -75,10 +75,13 @@
(packages '((specification->package "awesome"))))
(desktop-environment
(name "i3")
- (packages '((specification->package "i3-wm"))))
+ (packages (map (lambda (package)
+ `(specification->package ,package))
+ '("i3-wm" "i3status" "dmenu" "st"))))
(desktop-environment
(name "ratpoison")
- (packages '((specification->package "ratpoison"))))
+ (packages '((specification->package "ratpoison")
+ (specification->package "xterm"))))
;; Networking.
(system-service
diff --git a/gnu/local.mk b/gnu/local.mk
index 0fb6a22953..474f5163f9 100644
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@ -501,6 +501,7 @@ GNU_SYSTEM_MODULES = \
%D%/services.scm \
%D%/services/admin.scm \
%D%/services/audio.scm \
+ %D%/services/auditd.scm \
%D%/services/avahi.scm \
%D%/services/base.scm \
%D%/services/certbot.scm \
@@ -586,6 +587,7 @@ GNU_SYSTEM_MODULES = \
%D%/tests/networking.scm \
%D%/tests/rsync.scm \
%D%/tests/security-token.scm \
+ %D%/tests/singularity.scm \
%D%/tests/ssh.scm \
%D%/tests/version-control.scm \
%D%/tests/virtualization.scm \
@@ -637,6 +639,7 @@ dist_installer_DATA = \
# Modules that do not need to be compiled.
MODULES_NOT_COMPILED += \
+ %D%/build/locale.scm \
%D%/build/shepherd.scm \
%D%/build/svg.scm
@@ -659,7 +662,6 @@ dist_patch_DATA = \
%D%/packages/patches/aegisub-icu59-include-unistr.patch \
%D%/packages/patches/aegisub-boost68.patch \
%D%/packages/patches/agg-am_c_prototype.patch \
- %D%/packages/patches/allegro-mesa-18.2.5-and-later.patch \
%D%/packages/patches/amule-crypto-6.patch \
%D%/packages/patches/antiword-CVE-2014-8123.patch \
%D%/packages/patches/antlr3-3_1-fix-java8-compilation.patch \
diff --git a/gnu/packages/admin.scm b/gnu/packages/admin.scm
index 75380be594..d85bd6e324 100644
--- a/gnu/packages/admin.scm
+++ b/gnu/packages/admin.scm
@@ -115,14 +115,14 @@
(define-public aide
(package
(name "aide")
- (version "0.16.1")
+ (version "0.16.2")
(source
(origin
(method url-fetch)
(uri (string-append "https://github.com/aide/aide/releases/download/v"
version "/aide-" version ".tar.gz"))
(sha256
- (base32 "1dqhc0c24wa4zid06pfy61k357yvzh28ij86bk9jf6hcqzn7qaqg"))))
+ (base32 "15xp47sz7kk1ciffw3f5xw2jg2mb2lqrbr3q6p4bkbz5dap9iy8p"))))
(build-system gnu-build-system)
(native-inputs
`(("bison" ,bison)
@@ -1734,13 +1734,13 @@ of supported upstream metrics systems simultaneously.")
(define-public ansible
(package
(name "ansible")
- (version "2.7.10")
+ (version "2.8.0")
(source
(origin
(method url-fetch)
(uri (pypi-uri "ansible" version))
(sha256
- (base32 "15721d0bxymghxnlnknq43lszlxg3ybbcp2p5v424hhw6wg2v944"))))
+ (base32 "1bpk5r5x6vdgn839n74yv2chd2ja10yfrhav0fzwa38mi5yxsd3j"))))
(build-system python-build-system)
(native-inputs
`(("python-bcrypt" ,python-bcrypt)
@@ -2124,16 +2124,16 @@ results (ndiff), and a packet generation and response analysis tool (nping).")
(define-public dstat
(package
(name "dstat")
- (version "0.7.3")
+ (version "0.7.4")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/dagwieers/dstat.git")
- (commit version)))
+ (commit (string-append "v" version))))
(file-name (git-file-name "dstat" version))
(sha256
- (base32 "0sbpna531034gr40w4g9cwz35s2fpf9h654paznsxw9fih91rfa5"))))
+ (base32 "1qnmkhqmjd1m3if05jj29dvr5hn6kayq9bkkkh881w472c0zhp8v"))))
(build-system gnu-build-system)
(arguments
`(#:tests? #f ; no make check
@@ -2160,7 +2160,7 @@ throughput (in the same interval).")
(define-public thefuck
(package
(name "thefuck")
- (version "3.28")
+ (version "3.29")
(source
(origin
(method git-fetch)
@@ -2169,7 +2169,7 @@ throughput (in the same interval).")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "070b2sx8r0b4hry6xg97psxlikxghmz91zicg2cm6kc1yhgz4agc"))
+ (base32 "1qhxwjjgrzpqrqjv7l2847ywpln76lyd6j8bl9gz2r6kl0fx2fqs"))
(patches (search-patches "thefuck-test-environ.patch"))))
(build-system python-build-system)
(arguments
@@ -2849,7 +2849,7 @@ Python loading in HPC environments.")
(let ((real-name "inxi"))
(package
(name "inxi-minimal")
- (version "3.0.33-1")
+ (version "3.0.34-1")
(source
(origin
(method git-fetch)
@@ -2858,7 +2858,7 @@ Python loading in HPC environments.")
(commit version)))
(file-name (git-file-name real-name version))
(sha256
- (base32 "19bfdid4zp39irsdq3m6yyqf2336c30da35qgslrzcr2vh815g8c"))))
+ (base32 "0x2s40lwsan2pk292nspjgyw00f9f5fdfmwfvl50924pxhyxn2fh"))))
(build-system trivial-build-system)
(inputs
`(("bash" ,bash-minimal)
diff --git a/gnu/packages/animation.scm b/gnu/packages/animation.scm
index b46382c035..08bf4eb1de 100644
--- a/gnu/packages/animation.scm
+++ b/gnu/packages/animation.scm
@@ -264,7 +264,7 @@ waveform until they line up with the proper sounds.")
(define-public pencil2d
(package
(name "pencil2d")
- (version "0.6.3")
+ (version "0.6.4")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -273,7 +273,7 @@ waveform until they line up with the proper sounds.")
(file-name (git-file-name name version))
(sha256
(base32
- "097xwvhw7vl9pgknhb40zs6adf7mb1xxfc73h4kiqgp6z59prjl3"))))
+ "0zi8x0w8n817zds2lyw9l8j33c03kiybkrcyy3s5fg66mchmrwnr"))))
(build-system gnu-build-system)
(inputs
`(("qtbase" ,qtbase)
diff --git a/gnu/packages/aspell.scm b/gnu/packages/aspell.scm
index 1bbe57a4ef..cbc9baeeb3 100644
--- a/gnu/packages/aspell.scm
+++ b/gnu/packages/aspell.scm
@@ -32,7 +32,8 @@
#:use-module (gnu packages)
#:use-module (gnu packages base)
#:use-module (gnu packages compression)
- #:use-module (gnu packages perl))
+ #:use-module (gnu packages perl)
+ #:use-module (ice-9 match))
(define-public aspell
(package
@@ -102,7 +103,14 @@ dictionaries, including personal ones.")
(define* (aspell-dictionary dict-name full-name
#:key version sha256 (prefix "aspell6-"))
(package
- (name (string-append "aspell-dict-" dict-name))
+ (name (string-append
+ "aspell-dict-"
+ ;; Downcase and replace underscore in package names
+ ;; to follow Guix naming conventions.
+ (string-map (match-lambda
+ (#\_ #\-)
+ (chr chr))
+ (string-downcase dict-name))))
(version version)
(source (origin
(method url-fetch)
@@ -281,7 +289,7 @@ dictionaries, including personal ones.")
"0w2k5l5rbqpliripgqwiqixz5ghnjf7i9ggbrc4ly4vy1ia10rmc")))
(define-public aspell-dict-pt-br
- (aspell-dictionary "pt-br" "Brazilian Portuguese"
+ (aspell-dictionary "pt_BR" "Brazilian Portuguese"
#:version "20090702-0"
#:prefix "aspell6-"
#:sha256
@@ -289,7 +297,7 @@ dictionaries, including personal ones.")
"1y09lx9zf2rnp55r16b2vgj953l3538z1vaqgflg9mdvm555bz3p")))
(define-public aspell-dict-pt-pt
- (aspell-dictionary "pt-pt" "Portuguese"
+ (aspell-dictionary "pt_PT" "Portuguese"
#:version "20070510-0"
#:prefix "aspell6-"
#:sha256
diff --git a/gnu/packages/audio.scm b/gnu/packages/audio.scm
index 4a8548c25b..f3f592c58a 100644
--- a/gnu/packages/audio.scm
+++ b/gnu/packages/audio.scm
@@ -2120,14 +2120,14 @@ different audio devices such as ALSA or PulseAudio.")
(define-public qjackctl
(package
(name "qjackctl")
- (version "0.5.7")
+ (version "0.5.8")
(source (origin
(method url-fetch)
(uri (string-append "mirror://sourceforge/qjackctl/qjackctl/"
version "/qjackctl-" version ".tar.gz"))
(sha256
(base32
- "1g6a5j74p45yisl28bw4fcc9nr6b710ikk459p4mp6djh9gs8v95"))))
+ "1r5hf3hcr20n93jrrm7xk2zf6yx264pcr4d10cpybhrancxh602n"))))
(build-system gnu-build-system)
(arguments
'(#:tests? #f)) ; no check target
diff --git a/gnu/packages/base.scm b/gnu/packages/base.scm
index a941a8f8eb..15f35009a9 100644
--- a/gnu/packages/base.scm
+++ b/gnu/packages/base.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014, 2019 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2014, 2015, 2016, 2018 Mark H Weaver <mhw@netris.org>
@@ -1050,12 +1050,47 @@ to the @code{share/locale} sub-directory of this package.")
(let ((args `(#:tests? #f #:strip-binaries? #f
,@(package-arguments glibc))))
(substitute-keyword-arguments args
+ ((#:modules modules '((guix build utils)
+ (guix build gnu-build-system)))
+ `((srfi srfi-11)
+ (gnu build locale)
+ ,@modules))
+ ((#:imported-modules modules '())
+ `((gnu build locale)
+ ,@%gnu-build-system-modules))
((#:phases phases)
`(modify-phases ,phases
(replace 'build
(lambda _
(invoke "make" "localedata/install-locales"
"-j" (number->string (parallel-job-count)))))
+ (add-after 'build 'symlink-normalized-codesets
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; The above phase does not install locales with names using
+ ;; the "normalized codeset." Thus, create symlinks like:
+ ;; en_US.utf8 -> en_US.UTF-8
+ (define (locale-directory? file stat)
+ (and (file-is-directory? file)
+ (string-index (basename file) #\_)
+ (string-rindex (basename file) #\.)))
+
+ (let* ((out (assoc-ref outputs "out"))
+ (locales (find-files out locale-directory?
+ #:directories? #t)))
+ (for-each (lambda (directory)
+ (let*-values (((base)
+ (basename directory))
+ ((name codeset)
+ (locale->name+codeset base))
+ ((normalized)
+ (normalize-codeset codeset)))
+ (unless (string=? codeset normalized)
+ (symlink base
+ (string-append (dirname directory)
+ "/" name "."
+ normalized)))))
+ locales)
+ #t)))
(delete 'install)
(delete 'move-static-libs)))
((#:configure-flags flags)
diff --git a/gnu/packages/benchmark.scm b/gnu/packages/benchmark.scm
index 805cf3256c..970df735aa 100644
--- a/gnu/packages/benchmark.scm
+++ b/gnu/packages/benchmark.scm
@@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2017 Dave Love <fx@gnu.org>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2019 Eric Bavier <bavier@member.fsf.org>
;;;
@@ -38,14 +38,14 @@
(define-public fio
(package
(name "fio")
- (version "3.13")
+ (version "3.14")
(source (origin
(method url-fetch)
(uri (string-append "http://brick.kernel.dk/snaps/"
"fio-" version ".tar.bz2"))
(sha256
(base32
- "0ddj7zm04jqlna3w61qyp4qvwnv0r2lc1hzpwrgbvv4fq581w7d2"))))
+ "047y53nyhnmnxcrsfbsf0gcpxw7bli3n19ycscpxy9974j0fck0v"))))
(build-system gnu-build-system)
(arguments
'(#:test-target "test"
diff --git a/gnu/packages/build-tools.scm b/gnu/packages/build-tools.scm
index 697322639d..f4644d33bd 100644
--- a/gnu/packages/build-tools.scm
+++ b/gnu/packages/build-tools.scm
@@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017 Corentin Bocquillon <corentin@nybble.fr>
-;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Fis Trivial <ybbs.daans@hotmail.com>
;;; Copyright © 2018 Tomáš Čech <sleep_walker@gnu.org>
;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
@@ -242,7 +242,7 @@ other lower-level build files.")
(define-public osc
(package
(name "osc")
- (version "0.165.0")
+ (version "0.165.1")
(source
(origin
(method git-fetch)
@@ -251,8 +251,7 @@ other lower-level build files.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32
- "0l6iw8a040l60ixxdms9rxajm38vqfdwgij2bm7ahgv1akza64jk"))))
+ (base32 "16p4z34ziy4z2w7mfpclk13x1w2p69wivkdwp0224x18r2fwj67v"))))
(build-system python-build-system)
(arguments
`(#:phases
@@ -269,7 +268,7 @@ other lower-level build files.")
(inputs
`(("python-m2crypto" ,python-m2crypto)
("python-pycurl" ,python-pycurl)
- ("rpm" ,rpm))) ; for python-rpm
+ ("rpm" ,rpm))) ; for python-rpm
(home-page "https://github.com/openSUSE/osc")
(synopsis "Open Build Service command line tool")
(description "@command{osc} is a command line interface to the Open Build
diff --git a/gnu/packages/busybox.scm b/gnu/packages/busybox.scm
index 20a2e5aabf..cc6257ba35 100644
--- a/gnu/packages/busybox.scm
+++ b/gnu/packages/busybox.scm
@@ -108,7 +108,7 @@ any small or embedded system.")
(define-public toybox
(package
(name "toybox")
- (version "0.8.0")
+ (version "0.8.1")
(source (origin
(method url-fetch)
(uri (string-append
@@ -116,7 +116,7 @@ any small or embedded system.")
version ".tar.gz"))
(sha256
(base32
- "0mirj977zxsxnfaiqndwgsn9calgg312d817fi1hkfbd8kcyrk73"))))
+ "1czxzvyggm157z8wgxbk8k0n675p1gig9xvrcijsplh9p1i1xi0s"))))
(build-system gnu-build-system)
(arguments
'(#:phases
diff --git a/gnu/packages/compression.scm b/gnu/packages/compression.scm
index ec80dc92ec..024025fe52 100644
--- a/gnu/packages/compression.scm
+++ b/gnu/packages/compression.scm
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2017 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
@@ -128,7 +128,16 @@ in compression.")
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'enter-source
- (lambda _ (chdir "contrib/minizip") #t)))))
+ (lambda _ (chdir "contrib/minizip") #t))
+ (add-after 'install 'remove-crypt-h
+ (lambda* (#:key outputs #:allow-other-keys)
+ ;; Remove <minizip/crypt.h> because it interferes with libc's
+ ;; <crypt.h> given that 'minizip.pc' says "-I…/include/minizip".
+ ;; Fedora does the same:
+ ;; <https://src.fedoraproject.org/rpms/zlib/c/4d2785ec3116947872f6f32dc4104e6d36d8a7a4?branch=master>.
+ (let ((out (assoc-ref outputs "out")))
+ (delete-file (string-append out "/include/minizip/crypt.h"))
+ #t))))))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)
diff --git a/gnu/packages/coq.scm b/gnu/packages/coq.scm
index 2b24b75808..fd69c44c22 100644
--- a/gnu/packages/coq.scm
+++ b/gnu/packages/coq.scm
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2019 Dan Frumin <dfrumin@cs.ru.nl>
;;;
;;; This file is part of GNU Guix.
@@ -43,7 +43,7 @@
(define-public coq
(package
(name "coq")
- (version "8.9.0")
+ (version "8.9.1")
(source
(origin
(method git-fetch)
@@ -52,7 +52,7 @@
(commit (string-append "V" version))))
(file-name (git-file-name name version))
(sha256
- (base32 "01ad7az6f95w16xya7979lk32agy22lf4bqgqf5qpnarpkpxhbw8"))))
+ (base32 "1p4z967s18wkblayv12ygqsrqlyk5ax1pz40yf4kag8pva6gblhk"))))
(native-search-paths
(list (search-path-specification
(variable "COQPATH")
diff --git a/gnu/packages/cpp.scm b/gnu/packages/cpp.scm
index 9c060c70da..9e95bacd65 100644
--- a/gnu/packages/cpp.scm
+++ b/gnu/packages/cpp.scm
@@ -108,17 +108,19 @@ operating system functions.")
(package
(name "dashel")
(version "1.3.3")
- (home-page "https://github.com/aseba-community/dashel")
- (source (origin
- (method url-fetch)
- (uri (string-append home-page "/archive/" version ".tar.gz"))
- (sha256
- (base32
- "1ckzac1rsw3cxmpdpwcqv46jyp7risk5ybq6jjiizbqn7labf6dw"))
- (file-name (string-append name "-" version ".tar.gz"))))
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/aseba-community/dashel.git")
+ (commit version)))
+ (sha256
+ (base32 "0anks2l2i2qp0wlzqck1qgpq15a3l6dg8lw2h8s4nsj7f61lffwy"))
+ (file-name (git-file-name name version))))
(build-system cmake-build-system)
- (arguments '(#:tests? #f)) ;no tests
+ (arguments '(#:tests? #f)) ; no tests
(native-inputs `(("pkg-config" ,pkg-config)))
+ (home-page "https://github.com/aseba-community/dashel")
(synopsis "Data stream helper encapsulation library")
(description
"Dashel is a data stream helper encapsulation C++ library. It provides a
@@ -130,22 +132,23 @@ combination of these streams.")
(define-public xsimd
(package
(name "xsimd")
- (version "4.1.2")
- (source (origin
- (method url-fetch)
- (uri (string-append
- "https://github.com/QuantStack/xsimd/archive/"
- version ".tar.gz"))
- (sha256
- (base32
- "0x05l4xpqr9b66sm6lkf48n6x7999ks921x6k2hzkkg6mh3gqd46"))
- (file-name (string-append name "-" version ".tar.gz"))))
- (home-page "https://github.com/QuantStack/xsimd")
+ (version "7.2.3")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/QuantStack/xsimd.git")
+ (commit version)))
+ (sha256
+ (base32 "1ny2qin1j4h35mljivh8z52kwdyjxf4yxlzb8j52ji91v2ccc88j"))
+ (file-name (git-file-name name version))))
(build-system cmake-build-system)
(arguments
- `(#:test-target "xtest"))
+ `(#:configure-flags (list "-DBUILD_TESTS=ON")
+ #:test-target "xtest"))
(native-inputs
`(("googletest" ,googletest)))
+ (home-page "https://github.com/QuantStack/xsimd")
(synopsis "C++ wrappers for SIMD intrinsics and math implementations")
(description "xsimd provides a unified means for using SIMD features for
library authors. Namely, it enables manipulation of batches of numbers with
diff --git a/gnu/packages/datastructures.scm b/gnu/packages/datastructures.scm
index 4fd1ac2e2f..dabb1f421e 100644
--- a/gnu/packages/datastructures.scm
+++ b/gnu/packages/datastructures.scm
@@ -124,14 +124,14 @@ in between these sequences may be different in both content and length.")
(define-public liburcu
(package
(name "liburcu")
- (version "0.11.0")
+ (version "0.11.1")
(source (origin
(method url-fetch)
(uri (string-append "https://www.lttng.org/files/urcu/"
"userspace-rcu-" version ".tar.bz2"))
(sha256
(base32
- "1rxk5vbkbmqlsnjnvkjz0pkx2076mqnq6jzblpmz8rk29x66kx8s"))))
+ "0l1kxgzch4m8fxiz2hc8fwg56hrvzzspp7n0svnl7i7iycdrgfcj"))))
(build-system gnu-build-system)
(native-inputs
`(("perl" ,perl))) ; for tests
diff --git a/gnu/packages/emacs-xyz.scm b/gnu/packages/emacs-xyz.scm
index e5b11e5422..7db46e81c5 100644
--- a/gnu/packages/emacs-xyz.scm
+++ b/gnu/packages/emacs-xyz.scm
@@ -11931,7 +11931,7 @@ Emacs minor mode to escape sequences in code.")
(define-public emacs-dashboard
(package
(name "emacs-dashboard")
- (version "1.2.4")
+ (version "1.5.0")
(source
(origin
(method git-fetch)
@@ -11940,11 +11940,22 @@ Emacs minor mode to escape sequences in code.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "1hhh1kfsz87qfmh45wjf2r93rz79rq0vbyxlfrsl02092zjbl1zr"))))
+ (base32 "0ihpcagwgc9qy70lf2y3dvx2bm5h9lnqh4sx6643cr8pp06ysbvq"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-page-break-lines" ,emacs-page-break-lines)))
- (arguments '(#:include '("\\.el$" "\\.txt$" "\\.png$")))
+ (arguments
+ '(#:include '("\\.el$" "\\.txt$" "\\.png$")
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-dashboard-widgets
+ ;; This phase fixes compilation error.
+ (lambda _
+ (chmod "dashboard-widgets.el" #o666)
+ (emacs-substitute-variables "dashboard-widgets.el"
+ ("dashboard-init-info"
+ '(format "Loaded in %s" (emacs-init-time))))
+ #t)))))
(home-page "https://github.com/rakanalh/emacs-dashboard")
(synopsis "Startup screen extracted from Spacemacs")
(description "This package provides an extensible Emacs dashboard, with
@@ -15796,3 +15807,26 @@ verb commands which would are normally destructive (such as deletion) are
provided. Those alternative commands are and bound by default to their
corresponding Evil keys.")
(license license:expat))))
+
+(define-public emacs-xterm-color
+ (let ((commit "a452ab38a7cfae97078062ff8885b5d74fd1e5a6")
+ (version "1.8")
+ (revision "1"))
+ (package
+ (name "emacs-xterm-color")
+ (version (git-version version revision commit))
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/atomontage/xterm-color.git")
+ (commit commit)))
+ (sha256
+ (base32
+ "02kpajb993yshhjhsizpfcbrcndyzkf4dqfipifhxxng50dhp95i"))
+ (file-name (git-file-name name version))))
+ (build-system emacs-build-system)
+ (home-page "https://github.com/atomontage/xterm-color")
+ (synopsis "ANSI & xterm-256 color text property translator for Emacs")
+ (description "@code{xterm-color.el} is an ANSI control sequence to
+text-property translator.")
+ (license license:bsd-2))))
diff --git a/gnu/packages/emulators.scm b/gnu/packages/emulators.scm
index 98e7b44cc7..83a9a8bab6 100644
--- a/gnu/packages/emulators.scm
+++ b/gnu/packages/emulators.scm
@@ -1191,7 +1191,7 @@ play them on systems for which they were never designed!")
(define-public mame
(package
(name "mame")
- (version "0.209")
+ (version "0.210")
(source
(origin
(method git-fetch)
@@ -1201,7 +1201,7 @@ play them on systems for which they were never designed!")
(file-name (git-file-name name version))
(sha256
(base32
- "08qvwmx8wbfkqxiccmcff86dsrlq6wjxf6blnhhrsbzic1ji99bh"))
+ "08c62mc8aajzh44q36qvmrcq404hdzh3i8wwdfnvn0c4w8dbf486"))
(modules '((guix build utils)))
(snippet
;; Remove bundled libraries.
@@ -1350,6 +1350,7 @@ play them on systems for which they were never designed!")
("fontconfig" ,fontconfig)
("glm" ,glm)
("libjpeg" ,libjpeg-8) ;jpeg_read_header argument error in libjpeg-9
+ ("libxi" ,libxi)
("libxinerama" ,libxinerama)
("lua" ,lua)
("portaudio" ,portaudio)
diff --git a/gnu/packages/enlightenment.scm b/gnu/packages/enlightenment.scm
index 11fcf0b7b0..8bec452265 100644
--- a/gnu/packages/enlightenment.scm
+++ b/gnu/packages/enlightenment.scm
@@ -3,7 +3,7 @@
;;; Copyright © 2015 Daniel Pimentel <d4n1@member.fsf.org>
;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017 ng0 <ng0@n0.is>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018 Timo Eisenmann <eisenmann@fn.de>
;;;
;;; This file is part of GNU Guix.
@@ -184,7 +184,7 @@ removable devices or support for multimedia.")
(define-public terminology
(package
(name "terminology")
- (version "1.4.0")
+ (version "1.4.1")
(source (origin
(method url-fetch)
(uri
@@ -192,7 +192,7 @@ removable devices or support for multimedia.")
"terminology/terminology-" version ".tar.xz"))
(sha256
(base32
- "0q1y7fadj42n23aspx9y8hm4w4xlc316wc3415wnf75ibsx08ngd"))
+ "0mm9v5a94369is3kaarnr3a28wy42wslzi1mcisaidlcldgv7f6p"))
(modules '((guix build utils)))
;; Remove the bundled fonts.
(snippet
diff --git a/gnu/packages/finance.scm b/gnu/packages/finance.scm
index e1a1e8ab6f..5b95bcb704 100644
--- a/gnu/packages/finance.scm
+++ b/gnu/packages/finance.scm
@@ -345,7 +345,7 @@ do so.")
(define-public electrum
(package
(name "electrum")
- (version "3.3.5")
+ (version "3.3.6")
(source
(origin
(method url-fetch)
@@ -353,7 +353,7 @@ do so.")
version "/Electrum-"
version ".tar.gz"))
(sha256
- (base32 "1csj0n96zlajnrs39wsazfj5lmy7v7n77cdz56lr8nkmchh6k9z1"))
+ (base32 "0am5ki3z0yvhrz16vp2jjy5fkxxqph0mj9qqpbw3kpql65shykwz"))
(modules '((guix build utils)))
(snippet
'(begin
@@ -742,14 +742,14 @@ Ledger Blue/Nano S.")
(define-public python-trezor
(package
(name "python-trezor")
- (version "0.11.2")
+ (version "0.11.3")
(source
(origin
(method url-fetch)
(uri (pypi-uri "trezor" version))
(sha256
(base32
- "1f0zfki12mnhidkfxpx2lpq1xim8f35i2d64bx9lf4m26xxv9x56"))))
+ "0211m027vlvyqy83kwbjjjxalb04xgf1klv0h0y0f0yhj07516n7"))))
(build-system python-build-system)
(arguments
`(#:phases
@@ -770,12 +770,13 @@ Ledger Blue/Nano S.")
("python-requests" ,python-requests)
("python-typing-extensions" ,python-typing-extensions)))
(native-inputs
- `(("protobuf" ,protobuf) ; Tests
- ("python-black" ,python-black) ; Tests
- ("python-protobuf" ,python-protobuf) ; Tests
- ("python-isort" ,python-isort) ; Tests
- ("python-pyqt" ,python-pyqt) ; Tests
- ("python-pytest" ,python-pytest))) ; Tests
+ ;; For tests.
+ `(("protobuf" ,protobuf)
+ ("python-black" ,python-black)
+ ("python-protobuf" ,python-protobuf)
+ ("python-isort" ,python-isort)
+ ("python-pyqt" ,python-pyqt)
+ ("python-pytest" ,python-pytest)))
(home-page "https://github.com/trezor/python-trezor")
(synopsis "Python library for communicating with TREZOR Hardware Wallet")
(description "@code{trezor} is a Python library for communicating with
diff --git a/gnu/packages/fonts.scm b/gnu/packages/fonts.scm
index 3a801e5c94..0ac0b7b207 100644
--- a/gnu/packages/fonts.scm
+++ b/gnu/packages/fonts.scm
@@ -616,15 +616,17 @@ languages, plus Greek and Cyrillic.")
(define-public font-gnu-unifont
(package
(name "font-gnu-unifont")
- (version "12.0.01")
- (source (origin
- (method url-fetch)
- (uri (string-append
- "mirror://gnu/unifont/unifont-" version "/unifont-"
- version ".tar.gz"))
- (sha256
- (base32
- "059j82z6z4wqyy3261ns0zg2b2vh2wvxxfbsa9hra9xasism49vb"))))
+ (version "12.1.02")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (list
+ (string-append "http://unifoundry.com/pub/unifont/unifont-"
+ version "/unifont-" version ".tar.gz")
+ (string-append "mirror://gnu/unifont/unifont-"
+ version "/unifont-" version ".tar.gz")))
+ (sha256
+ (base32 "12wdxnlyz5gl5d7h6pazcz8d7h81fwkng1xrayxsgrzh6bqdq4p8"))))
(build-system gnu-build-system)
(outputs '("out" ; TrueType version
"pcf" ; PCF (bitmap) version
diff --git a/gnu/packages/fpga.scm b/gnu/packages/fpga.scm
index 83854ef9c6..7b661d39ac 100644
--- a/gnu/packages/fpga.scm
+++ b/gnu/packages/fpga.scm
@@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
;;; Copyright © 2016, 2017 Theodoros Foradis <theodoros@foradis.org>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2019 Amin Bandali <bandali@gnu.org>
;;;
;;; This file is part of GNU Guix.
@@ -301,14 +301,14 @@ Includes the actual FTDI connector.")
(define-public gtkwave
(package
(name "gtkwave")
- (version "3.3.100")
+ (version "3.3.101")
(source (origin
(method url-fetch)
(uri (string-append "http://gtkwave.sourceforge.net/"
"gtkwave-" version ".tar.gz"))
(sha256
(base32
- "1z60i5nh8dz8j9ii63fwaw7k0p3x0scp91478cxmdv4xhp4njlxa"))))
+ "1j6capxwgi8aj3sgqg1r7161icni9y8y93g1rl3bzd3s40jcyhsz"))))
(build-system gnu-build-system)
(native-inputs
`(("gperf" ,gperf)
diff --git a/gnu/packages/game-development.scm b/gnu/packages/game-development.scm
index e6b713465c..63ccd20470 100644
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@ -435,7 +435,7 @@ support.")
(define-public tiled
(package
(name "tiled")
- (version "1.2.3")
+ (version "1.2.4")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -444,7 +444,7 @@ support.")
(file-name (git-file-name name version))
(sha256
(base32
- "1nfyigfkl10n9r82p1qxhpr09jn2kwalh9n5r209bcaj8dxspph8"))))
+ "04v738h298pvcwb70mwd1r2yj7578f6gkfzs0165j9fqy7avwm18"))))
(build-system gnu-build-system)
(inputs
`(("qtbase" ,qtbase)
@@ -465,7 +465,7 @@ support.")
(let ((out (assoc-ref outputs "out")))
(invoke "qmake"
(string-append "PREFIX=" out))))))))
- (home-page "http://www.mapeditor.org/")
+ (home-page "https://www.mapeditor.org/")
(synopsis "Tile map editor")
(description
"Tiled is a general purpose tile map editor. It is meant to be used for
@@ -684,19 +684,17 @@ etc.")
(define-public allegro
(package
(name "allegro")
- (version "5.2.4.0")
+ (version "5.2.5.0")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/liballeg/allegro5/releases"
"/download/" version "/allegro-"
version ".tar.gz"))
- (patches (search-patches
- "allegro-mesa-18.2.5-and-later.patch"))
(sha256
(base32
- "1w9a5yqi5q03b2qvmx5ff90paz0xbr9cy7i7f0xiqa65ava66q9l"))))
+ "06dpkfnac8w3pq36834nn2iij3ajz6prladqd0w92lq39aiqv5jr"))))
(build-system cmake-build-system)
- (arguments `(#:tests? #f)) ; there are no tests
+ (arguments `(#:tests? #f)) ; there are no tests
(inputs
;; FIXME: Add the following optional inputs: xinput2, opensl, dumb
`(("flac" ,flac)
diff --git a/gnu/packages/games.scm b/gnu/packages/games.scm
index 4fdc9b01e6..7a433a0bfd 100644
--- a/gnu/packages/games.scm
+++ b/gnu/packages/games.scm
@@ -40,6 +40,7 @@
;;; Copyright © 2019 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
+;;; Copyright © 2019 Jesse Gibbons <jgibbons2357+guix@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -7336,3 +7337,51 @@ Unfortunately, Hacker is not aware of Drascula's real ambitions: DOMINATING
the World and demonstrating that he is even more evil than his brother Vlad.")
;; Drascula uses a BSD-like license.
(license (license:non-copyleft "file:///readme.txt"))))
+
+(define-public gnurobots
+ (package
+ (name "gnurobots")
+ (version "1.2.0")
+ (source
+ (origin
+ (method url-fetch)
+ (uri (string-append "mirror://gnu/gnurobots/gnurobots-"
+ version ".tar.gz"))
+ (sha256
+ (base32
+ "07gi3lsmbzzsjambgixj6xy79lh22km84z7bnzgwzxdy806lyvwb"))))
+ (build-system gnu-build-system)
+ (inputs
+ `(("glib" ,glib)
+ ("gtk+" ,gtk+-2)
+ ("vte" ,vte/gtk+-2)
+ ("readline" ,readline)
+ ("guile" ,guile-1.8)))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)))
+ (arguments
+ `(#:make-flags
+ (list
+ ;; Do not abort build on "deprecated-declarations" warnings.
+ "CFLAGS=-Wno-error=deprecated-declarations"
+ ;; Find readline headers in sub-directory.
+ (string-append "READLINE_CFLAGS=-I"
+ (assoc-ref %build-inputs "readline")
+ "/include/readline/"))
+ #:phases
+ (modify-phases %standard-phases
+ (add-after 'install 'install-doc
+ (lambda* (#:key outputs #:allow-other-keys)
+ (install-file "doc/Robots-HOWTO"
+ (string-append (assoc-ref outputs "out")
+ "/share/doc/gnurobots-"
+ ,version))
+ #t)))))
+ (home-page "https://www.gnu.org/software/gnurobots/")
+ (synopsis "Program a little robot and watch it explore a world")
+ (description
+ "GNU Robots is a game in which you program a robot to explore a world
+full of enemies that can hurt it, obstacles and food to be eaten. The goal of
+the game is to stay alive and collect prizes. The robot program conveniently
+may be written in a plain text file in the Scheme programming language.")
+ (license license:gpl3+)))
diff --git a/gnu/packages/gettext.scm b/gnu/packages/gettext.scm
index 7d6d62acda..ef80af42ea 100644
--- a/gnu/packages/gettext.scm
+++ b/gnu/packages/gettext.scm
@@ -176,14 +176,14 @@ color, font attributes (weight, posture), or underlining.")
(define-public po4a
(package
(name "po4a")
- (version "0.55")
+ (version "0.56")
(source (origin
(method url-fetch)
(uri (string-append "https://github.com/mquinson/po4a/releases/download/v"
version "/po4a-" version ".tar.gz"))
(sha256
(base32
- "1qss4q5df3nsydsbggb7gg50bn0kdxq5wn8riqm9zwkiq6a4bifg"))))
+ "0kyhww0yw4q0m4vj8vil2wsf6sn4hidh8mqz2gjrq7gpdf83cmnr"))))
(build-system perl-build-system)
(arguments
`(#:phases
diff --git a/gnu/packages/gimp.scm b/gnu/packages/gimp.scm
index 700d0bbf09..c190049212 100644
--- a/gnu/packages/gimp.scm
+++ b/gnu/packages/gimp.scm
@@ -49,7 +49,7 @@
(define-public babl
(package
(name "babl")
- (version "0.1.62")
+ (version "0.1.64")
(source (origin
(method url-fetch)
(uri (list (string-append "https://download.gimp.org/pub/babl/"
@@ -63,7 +63,7 @@
"/babl-" version ".tar.bz2")))
(sha256
(base32
- "047msfzj8v4sfl61a2xhd69r9rh2pjq4lzpk3j10ijyv9qbry9yw"))))
+ "1gsqs5spgla86y9g11riryvw7015asik7y22maainl83nhq4sxxv"))))
(build-system gnu-build-system)
(home-page "http://gegl.org/babl/")
(synopsis "Image pixel format conversion library")
diff --git a/gnu/packages/gnome.scm b/gnu/packages/gnome.scm
index 43b8934fb2..c77baad1f2 100644
--- a/gnu/packages/gnome.scm
+++ b/gnu/packages/gnome.scm
@@ -3941,26 +3941,15 @@ which can read a large number of file formats.")
(define-public rhythmbox
(package
(name "rhythmbox")
- (version "3.4.2")
+ (version "3.4.3")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
(version-major+minor version) "/"
name "-" version ".tar.xz"))
- (patches
- (list
- ;; fmradio: Fix build with GStreamer master
- (origin
- (method url-fetch)
- (uri (string-append
- "https://gitlab.gnome.org/GNOME/rhythmbox/commit/"
- "b182c6b9e1d09e601bac0b703cc5f8b159ebbc3a.patch"))
- (sha256
- (base32
- "06n87xgf927djmv1vshal84nqx7g8nwgljza3g2vydhy7g2n1csq")))))
(sha256
(base32
- "0hzcns8gf5yb0rm4ss8jd8qzarcaplp5cylk6plwilsqfvxj4xn2"))))
+ "1yx3n7p9vmv23jsv98fxwq95n78awdxqm8idhyhxx2d6vk4w1hgx"))))
(build-system glib-or-gtk-build-system)
(arguments
`(#:configure-flags
diff --git a/gnu/packages/haskell-web.scm b/gnu/packages/haskell-web.scm
index 4ce5d6fdb1..6b7103562f 100644
--- a/gnu/packages/haskell-web.scm
+++ b/gnu/packages/haskell-web.scm
@@ -5,6 +5,7 @@
;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 rsiddharth <s@ricketyspace.net>
;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2019 Robert Vollmert <rob@vllmrt.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -118,7 +119,7 @@ requests, and the library is intended for implementing Ajax APIs.")
(define-public ghc-http-types
(package
(name "ghc-http-types")
- (version "0.12.1")
+ (version "0.12.3")
(source
(origin
(method url-fetch)
@@ -126,7 +127,7 @@ requests, and the library is intended for implementing Ajax APIs.")
"http-types-" version ".tar.gz"))
(sha256
(base32
- "1wv9k6nlvkdsxwlr7gaynphvzmvi5211gvwq96mbcxgk51a739rz"))))
+ "05j00b9nqmwh9zaq9y9x50k81v2pd3j7a71kd91zlnbl8xk4m2jf"))))
(build-system haskell-build-system)
(native-inputs
`(("ghc-doctest" ,ghc-doctest)
@@ -136,7 +137,6 @@ requests, and the library is intended for implementing Ajax APIs.")
("hspec-discover" ,hspec-discover)))
(inputs
`(("ghc-case-insensitive" ,ghc-case-insensitive)
- ("ghc-blaze-builder" ,ghc-blaze-builder)
("ghc-text" ,ghc-text)))
(home-page "https://github.com/aristidb/http-types")
(synopsis "Generic HTTP types for Haskell")
@@ -550,7 +550,7 @@ transfers.")
(define-public ghc-warp
(package
(name "ghc-warp")
- (version "3.2.23")
+ (version "3.2.27")
(source
(origin
(method url-fetch)
@@ -558,8 +558,7 @@ transfers.")
"warp-" version "/" "warp-" version
".tar.gz"))
(sha256
- (base32
- "12v9qhi4hyp0sb90yddsax16jj7x47nmqwn53sv7b5nszcxgzam0"))))
+ (base32 "0p2w88q0zd55ms20qylipbi0qzbf324i9r8b9qqxyds5yc1anq76"))))
(build-system haskell-build-system)
(inputs
`(("ghc-async" ,ghc-async)
diff --git a/gnu/packages/haskell.scm b/gnu/packages/haskell.scm
index 06e255fdcf..97b4fd9a55 100644
--- a/gnu/packages/haskell.scm
+++ b/gnu/packages/haskell.scm
@@ -1805,7 +1805,7 @@ version 1.3).")
(define-public ghc-streaming-commons
(package
(name "ghc-streaming-commons")
- (version "0.2.1.0")
+ (version "0.2.1.1")
(source
(origin
(method url-fetch)
@@ -1814,7 +1814,7 @@ version 1.3).")
version ".tar.gz"))
(sha256
(base32
- "13fn6qmpiggwpn8lczyydgp77cyzfypwds7wxskrwir4i5cgxlfq"))))
+ "1lmyx3wkjsayhy5yilzvy0kf8qwmycwlk26r1d8f3cxbfhkr7s52"))))
(build-system haskell-build-system)
(inputs
`(("ghc-async" ,ghc-async)
diff --git a/gnu/packages/image-viewers.scm b/gnu/packages/image-viewers.scm
index 82b44a4900..a5bfb28a88 100644
--- a/gnu/packages/image-viewers.scm
+++ b/gnu/packages/image-viewers.scm
@@ -9,6 +9,7 @@
;;; Copyright © 2017 nee <nee-git@hidamari.blue>
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
+;;; Copyright © 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -429,3 +430,50 @@ imaging. It supports several HDR and LDR image formats, and it can:
a comic and manga reader. It supports a variety of container formats
including CBZ, CB7, CBT, LHA.")
(license license:gpl2+)))
+
+(define-public qview
+ (package
+ (name "qview")
+ (version "2.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/jurplel/qView.git")
+ (commit version)))
+ (sha256
+ (base32
+ "1s29hz44rb5dwzq8d4i4bfg77dr0v3ywpvidpa6xzg7hnnv3mhi5"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (replace 'configure
+ (lambda _
+ (invoke "qmake")))
+ ;; Installation process hard-codes "/usr/bin", possibly
+ ;; prefixed.
+ (add-after 'configure 'fix-install-directory
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (substitute* "Makefile"
+ (("\\$\\(INSTALL_ROOT\\)/usr") out))
+ #t)))
+ ;; Don't phone home or show "Checking for updates..." in the
+ ;; About menu.
+ (add-before 'build 'disable-auto-update
+ (lambda _
+ (substitute* "src/qvaboutdialog.cpp"
+ (("ui->updateLabel->setText\\(updateText\\);") "")
+ (("requestUpdates\\(\\);") ""))
+ #t)))))
+ (inputs
+ `(("qtbase" ,qtbase)
+ ("qtsvg" ,qtsvg)
+ ("qtimageformats" ,qtimageformats)))
+ (home-page "https://interversehq.com/qview/")
+ (synopsis "Convenient and minimal image viewer")
+ (description "qView is a Qt image viewer designed with visually
+minimalism and usability in mind. Its features include animated GIF
+controls, file history, rotation/mirroring, and multithreaded
+preloading.")
+ (license license:gpl3+)))
diff --git a/gnu/packages/linux.scm b/gnu/packages/linux.scm
index 6368359969..5401b1ad97 100644
--- a/gnu/packages/linux.scm
+++ b/gnu/packages/linux.scm
@@ -2559,7 +2559,7 @@ compliance.")
(define-public wireless-regdb
(package
(name "wireless-regdb")
- (version "2017.03.07")
+ (version "2019.06.03")
(source (origin
(method url-fetch)
(uri (string-append
@@ -2567,7 +2567,7 @@ compliance.")
"wireless-regdb-" version ".tar.xz"))
(sha256
(base32
- "1f9mcp78sdd4sci6v32vxfcl1rfjpv205jisz1p93kkfnaisy7ip"))
+ "1gslvh0aqdkv48jyr2ddq153mw28i7qz2ybrjj9qvkk3dgc7x4fd"))
;; We're building 'regulatory.bin' by ourselves.
(snippet '(begin
@@ -2575,13 +2575,25 @@ compliance.")
#t))))
(build-system gnu-build-system)
(arguments
- '(#:phases (modify-phases %standard-phases
- (add-after 'unpack 'gzip-determinism
- (lambda _
- (substitute* "Makefile"
- (("gzip") "gzip --no-name"))
- #t))
- (delete 'configure))
+ '(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'gzip-determinism
+ (lambda _
+ (substitute* "Makefile"
+ (("gzip") "gzip --no-name"))
+ #t))
+ (add-after 'unpack 'omit-signature
+ (lambda _
+ (substitute* "Makefile"
+ ;; Signing requires a REGDB_PUBCERT and REGDB_PRIVKEY which we
+ ;; don't provide (see below). Disable it.
+ ((" regulatory\\.db\\.p7s") "")
+ ;; regulatory.db is built as a dependency of regulatory.db.p7s,
+ ;; but ‘make install’ depends only on the latter while installing
+ ;; both (and failing). Depend on it explicitly.
+ (("^install: " all) (string-append all "regulatory.db ")))
+ #t))
+ (delete 'configure)) ; no configure script
;; The 'all' target of the makefile depends on $(REGDB_CHANGED), which
;; is computed and can be equal to 'maintainer-clean'; when that
@@ -2589,19 +2601,22 @@ compliance.")
;; just built. Thus, build things sequentially.
#:parallel-build? #f
- #:tests? #f ;no tests
- #:make-flags (let ((out (assoc-ref %outputs "out")))
- (list (string-append "PREFIX=" out)
- (string-append "LSB_ID=Guix")
- (string-append "DISTRO_PUBKEY=/dev/null")
- (string-append "DISTRO_PRIVKEY=/dev/null")
- (string-append "REGDB_PUBKEY=/dev/null")
-
- ;; Leave that empty so that db2bin.py doesn't try
- ;; to sign 'regulatory.bin'. This allows us to
- ;; avoid managing a key pair for the whole distro.
- (string-append "REGDB_PRIVKEY=")))))
- (native-inputs `(("python" ,python-2)))
+ #:tests? #f ; no tests
+ #:make-flags
+ (let ((out (assoc-ref %outputs "out")))
+ (list (string-append "PREFIX=" out)
+ (string-append "FIRMWARE_PATH=$(PREFIX)/lib/firmware")
+
+ ;; Leave this empty so that db2bin.py doesn't try to sign
+ ;; ‘regulatory.bin’. This allows us to avoid managing a key
+ ;; pair for the whole distribution.
+ (string-append "REGDB_PRIVKEY=")
+ ;; Don't generate a public key for the same reason. These are
+ ;; used as Makefile targets and can't be the empty string.
+ (string-append "REGDB_PUBCERT=/dev/null")
+ (string-append "REGDB_PUBKEY=/dev/null")))))
+ (native-inputs
+ `(("python" ,python-wrapper)))
(home-page
"https://wireless.wiki.kernel.org/en/developers/regulatory/wireless-regdb")
(synopsis "Wireless regulatory database")
@@ -2884,12 +2899,16 @@ thanks to the use of namespaces.")
(substitute* "bin/singularity.in"
(("^PATH=.*" all)
(string-append "#" all "\n")))
+
+ (substitute* (find-files "libexec/cli" "\\.exec$")
+ (("\\$SINGULARITY_libexecdir/singularity/bin/([a-z]+)-suid"
+ _ program)
+ (string-append "/run/setuid-programs/singularity-"
+ program "-helper")))
#t))))
(build-system gnu-build-system)
(arguments
- `(#:configure-flags
- (list "--disable-suid"
- "--localstatedir=/var")
+ `(#:configure-flags '("--localstatedir=/var")
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch-reference-to-squashfs-tools
diff --git a/gnu/packages/mail.scm b/gnu/packages/mail.scm
index 4edc62ed1d..35a2c3048d 100644
--- a/gnu/packages/mail.scm
+++ b/gnu/packages/mail.scm
@@ -847,14 +847,14 @@ invoking @command{notifymuch} from the post-new hook.")
(define-public notmuch
(package
(name "notmuch")
- (version "0.28.4")
+ (version "0.29")
(source (origin
(method url-fetch)
(uri (string-append "https://notmuchmail.org/releases/notmuch-"
- version ".tar.gz"))
+ version ".tar.xz"))
(sha256
(base32
- "1jjnhs4xs4gksvg0a9qn68rxrj41im5bh58snka2pkj20nxwmcds"))))
+ "0rg4jp0wlsham76rx9fmlpmcbv3n9vsd81vrzqvh6jrwlnmjds88"))))
(build-system gnu-build-system)
(arguments
`(#:modules ((guix build gnu-build-system)
diff --git a/gnu/packages/music.scm b/gnu/packages/music.scm
index 8ca297b71e..1c0a4f3982 100644
--- a/gnu/packages/music.scm
+++ b/gnu/packages/music.scm
@@ -1315,16 +1315,16 @@ Editor. It is compatible with Power Tab Editor 1.7 and Guitar Pro.")
(define-public jalv-select
(package
(name "jalv-select")
- (version "0.8")
+ (version "1.3")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/brummer10/jalv_select.git")
- (commit (string-append "V" version))))
+ (commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
- "0gqh768sbvn9ffyx1vqg9i57py9x9v4l65bk6wjsvgga4d7m83k1"))))
+ "15yanq1wra0hyh6x72ji7pk562iddg476g3vksj495x91zhnl6vm"))))
(build-system gnu-build-system)
(arguments
`(#:make-flags
@@ -1337,8 +1337,6 @@ Editor. It is compatible with Power Tab Editor 1.7 and Guitar Pro.")
(substitute* "jalv.select.cpp"
(("echo \\$PATH.*tr ':'.*xargs ls")
(string-append "ls -1 " (assoc-ref inputs "jalv") "/bin")))
- (substitute* "jalv.select.h"
- (("gtkmm.h") "gtkmm-2.4/gtkmm.h"))
#t))
(add-before 'reset-gzip-timestamps 'make-manpages-writable
(lambda* (#:key outputs #:allow-other-keys)
diff --git a/gnu/packages/ocaml.scm b/gnu/packages/ocaml.scm
index 338f98030a..bd66ab04aa 100644
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@ -697,7 +697,8 @@ written in Objective Caml.")
(lambda* (#:key outputs #:allow-other-keys)
(format #t "~a~%" (find-files "." ".*.so"))
(let ((stubdir (string-append (assoc-ref outputs "out")
- "/lib/ocaml/site-lib")))
+ "/lib/ocaml/site-lib/stublibs")))
+ (delete-file stubdir)
(mkdir-p stubdir)
(install-file "src/dllnums.so" stubdir))
#t)))))
@@ -1626,7 +1627,13 @@ spans without being subject to operating system calendar time adjustments.")
"/lib/ocaml/site-lib/cmdliner"))
#:phases
(modify-phases %standard-phases
- (delete 'configure))))
+ (delete 'configure)
+ (add-before 'build 'fix-source-file-order
+ (lambda _
+ (substitute* "build.ml"
+ (("Sys.readdir dir")
+ "let a = Sys.readdir dir in Array.sort String.compare a; a"))
+ #t)))))
(home-page "http://erratique.ch/software/cmdliner")
(synopsis "Declarative definition of command line interfaces for OCaml")
(description "Cmdliner is a module for the declarative definition of command
@@ -2290,6 +2297,12 @@ many additional enhancements, including:
`(#:phases
(modify-phases %standard-phases
(delete 'check) ; tests are run by the build phase
+ (add-before 'build 'fix-nondeterminism
+ (lambda _
+ (substitute* "setup.ml"
+ (("Sys.readdir dirname")
+ "let a = Sys.readdir dirname in Array.sort String.compare a; a"))
+ #t))
(replace 'build
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((files
diff --git a/gnu/packages/patches/allegro-mesa-18.2.5-and-later.patch b/gnu/packages/patches/allegro-mesa-18.2.5-and-later.patch
deleted file mode 100644
index fa273a5dfa..0000000000
--- a/gnu/packages/patches/allegro-mesa-18.2.5-and-later.patch
+++ /dev/null
@@ -1,41 +0,0 @@
-Fixes compilation with Mesa >= 18.2.5.
-
-Taken from upstream:
-
-https://github.com/liballeg/allegro5/commit/a40d30e21802ecf5c9382cf34af9b01bd3781e47
-
-diff --git a/include/allegro5/allegro_opengl.h b/include/allegro5/allegro_opengl.h
-index 0f86a6768..652dd024e 100644
---- a/include/allegro5/allegro_opengl.h
-+++ b/include/allegro5/allegro_opengl.h
-@@ -103,10 +103,14 @@
-
- /* HACK: Prevent both Mesa and SGI's broken headers from screwing us */
- #define __glext_h_
-+#define __gl_glext_h_
- #define __glxext_h_
-+#define __glx_glxext_h_
- #include <GL/gl.h>
- #undef __glext_h_
-+#undef __gl_glext_h_
- #undef __glxext_h_
-+#undef __glx_glxext_h_
-
- #endif /* ALLEGRO_MACOSX */
-
-diff --git a/include/allegro5/opengl/GLext/glx_ext_defs.h b/include/allegro5/opengl/GLext/glx_ext_defs.h
-index 49c502091..fba8aea5d 100644
---- a/include/allegro5/opengl/GLext/glx_ext_defs.h
-+++ b/include/allegro5/opengl/GLext/glx_ext_defs.h
-@@ -1,7 +1,9 @@
- /* HACK: Prevent both Mesa and SGI's broken headers from screwing us */
- #define __glxext_h_
-+#define __glx_glxext_h_
- #include <GL/glx.h>
- #undef __glxext_h_
-+#undef __glx_glxext_h_
-
- #ifndef GLX_VERSION_1_3
- #define _ALLEGRO_GLX_VERSION_1_3
---
-2.20.0
diff --git a/gnu/packages/shells.scm b/gnu/packages/shells.scm
index 3512c5ac46..49152dc3fd 100644
--- a/gnu/packages/shells.scm
+++ b/gnu/packages/shells.scm
@@ -802,7 +802,18 @@ is commonly written.")
version ".tar.gz"))
(sha256
(base32
- "00m3lif64zyxd41cnk208kc81nl6qz659676qgiaqgwrw0brzrid"))))
+ "00m3lif64zyxd41cnk208kc81nl6qz659676qgiaqgwrw0brzrid"))
+ (modules '((guix build utils)))
+ (snippet
+ '(begin
+ (substitute* "Makefile.in"
+ (("^moddir = (.*)/guile/(.*)" _ before after)
+ (string-append "moddir = " before "/guile/site/"
+ after))
+ (("^ccachedir = (.*)/ccache/(.*)" _ before after)
+ (string-append "ccachedir = " before
+ "/site-ccache/" after)))
+ #t))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))
diff --git a/gnu/packages/slang.scm b/gnu/packages/slang.scm
index 185d441919..5a37480f67 100644
--- a/gnu/packages/slang.scm
+++ b/gnu/packages/slang.scm
@@ -2,7 +2,7 @@
;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.org>
-;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -87,14 +87,14 @@ slsh, which is part of the S-Lang distribution.")
(define-public newt
(package
(name "newt")
- (version "0.52.20")
+ (version "0.52.21")
(source (origin
(method url-fetch)
- (uri (string-append "https://pagure.io/releases/"
- name "/" name "-" version ".tar.gz"))
+ (uri (string-append "https://pagure.io/releases/newt/"
+ "newt-" version ".tar.gz"))
(sha256
(base32
- "1g3dpfnvaw7vljbr7nzq1rl88d6r8cmrvvng9inphgzwxxmvlrld"))))
+ "0cdvbancr7y4nrj8257y5n45hmhizr8isynagy4fpsnpammv8pi6"))))
(build-system gnu-build-system)
(outputs '("out" "python"))
(inputs
diff --git a/gnu/packages/storage.scm b/gnu/packages/storage.scm
index 503433be10..aa7d34acc1 100644
--- a/gnu/packages/storage.scm
+++ b/gnu/packages/storage.scm
@@ -55,14 +55,14 @@
(define-public ceph
(package
(name "ceph")
- (version "13.2.5")
+ (version "13.2.6")
(source (origin
(method url-fetch)
(uri (string-append "https://download.ceph.com/tarballs/ceph-"
version ".tar.gz"))
(sha256
(base32
- "0jbs6l763clbqnq2s5jksn44yf71rhcnk85cw64fqvmv0r4ch71n"))
+ "13f5qs7jpxprplk4irwlx90mc9gvm48fvd3q471xcqc3n6z1qywz"))
(patches
(search-patches "ceph-skip-unittest_blockdev.patch"
"ceph-skip-collect-sys-info-test.patch"
diff --git a/gnu/packages/tmux.scm b/gnu/packages/tmux.scm
index c1e136915b..730cb421de 100644
--- a/gnu/packages/tmux.scm
+++ b/gnu/packages/tmux.scm
@@ -140,7 +140,7 @@ windows.")
(define-public tmux-xpanes
(package
(name "tmux-xpanes")
- (version "4.1.0")
+ (version "4.1.1")
(source (origin
(method git-fetch)
(uri (git-reference
@@ -149,7 +149,7 @@ windows.")
(file-name (git-file-name name version))
(sha256
(base32
- "11yz6rh2ckd1z8q80n8giv2gcz2i22fgf3pnfxq96qrzflb0d96a"))))
+ "13q02vdk229chgbn547wwv29cj4njvz02lmw840g8qmwh73qb2pi"))))
(build-system trivial-build-system)
(inputs
`(("bash" ,bash)))
diff --git a/gnu/packages/version-control.scm b/gnu/packages/version-control.scm
index d42b34a23c..c8773adc7b 100644
--- a/gnu/packages/version-control.scm
+++ b/gnu/packages/version-control.scm
@@ -146,14 +146,14 @@ as well as the classic centralized workflow.")
(name "git")
;; XXX When updating Git, check if the special 'git-source' input to cgit
;; needs to be updated as well.
- (version "2.21.0")
+ (version "2.22.0")
(source (origin
(method url-fetch)
(uri (string-append "mirror://kernel.org/software/scm/git/git-"
version ".tar.xz"))
(sha256
(base32
- "0a0d0b07rmvs985zpndxxy0vzr0vq53kq5kyd68iv6gf8gkirjwc"))))
+ "17zj6jwx3s6bybd290f1mj5iym1r64560rmnf0p63x4akxclp7hm"))))
(build-system gnu-build-system)
(native-inputs
`(("native-perl" ,perl)
@@ -166,7 +166,7 @@ as well as the classic centralized workflow.")
version ".tar.xz"))
(sha256
(base32
- "0lgcynqbjmfsvhfk14jvqyvb1xiyqgkgznb707vha38wjcjdqs1g"))))
+ "0fpfqw0h4g4v478fscic8z714i0ls5w7946vzhmq31lf7nizsb2f"))))
;; For subtree documentation.
("asciidoc" ,asciidoc)
("docbook-xsl" ,docbook-xsl)
diff --git a/gnu/packages/video.scm b/gnu/packages/video.scm
index 512ac2e117..d1fdd12177 100644
--- a/gnu/packages/video.scm
+++ b/gnu/packages/video.scm
@@ -671,14 +671,14 @@ SMPTE 314M.")
(define-public libmatroska
(package
(name "libmatroska")
- (version "1.5.0")
+ (version "1.5.2")
(source
(origin
(method url-fetch)
(uri (string-append "https://dl.matroska.org/downloads/"
"libmatroska/libmatroska-" version ".tar.xz"))
(sha256
- (base32 "07md2gvy3x92ym2k449740mdji6mhknlajkndnhi507s4wcdrvzh"))))
+ (base32 "0qn9lfs0877wbv581yxw2gywxywxpvwslc5q07q4f7bqpyzxxiha"))))
(build-system cmake-build-system)
(inputs
`(("libebml" ,libebml)))
@@ -1013,7 +1013,7 @@ videoformats depend on the configuration flags of ffmpeg.")
(define-public vlc
(package
(name "vlc")
- (version "3.0.6")
+ (version "3.0.7")
(source (origin
(method url-fetch)
(uri (string-append
@@ -1022,7 +1022,7 @@ videoformats depend on the configuration flags of ffmpeg.")
"/vlc-" version ".tar.xz"))
(sha256
(base32
- "1lvyyahv6g9zv7m5g5qinyrwmw47zdsd5ysimb862j7kw15nvh8q"))))
+ "05irswyg9acflxzy4vfyvgi643r72vsvagv118zawjqg1wagxdaw"))))
(build-system gnu-build-system)
(native-inputs
`(("flex" ,flex)
@@ -2192,14 +2192,14 @@ tools, XML authoring components, and an extensible plug-in based API.")
(define-public v4l-utils
(package
(name "v4l-utils")
- (version "1.12.5")
+ (version "1.16.6")
(source (origin
(method url-fetch)
(uri (string-append "https://linuxtv.org/downloads/v4l-utils"
"/v4l-utils-" version ".tar.bz2"))
(sha256
(base32
- "03g2b4rivrilimcp57mwrlsa3qvrxmk4sza08mygwmqbvcnic606"))))
+ "1bkqlrizx0j2rd6ybam2x17bjrpwzl4v4szmnzm3cmixis3w3npr"))))
(build-system gnu-build-system)
(arguments
'(#:configure-flags
@@ -2858,7 +2858,7 @@ many codecs and formats supported by libmediainfo.")
(define-public livemedia-utils
(package
(name "livemedia-utils")
- (version "2019.03.06")
+ (version "2019.05.29")
(source (origin
(method url-fetch)
(uri (string-append
@@ -2866,10 +2866,10 @@ many codecs and formats supported by libmediainfo.")
version ".tar.gz"))
(sha256
(base32
- "1gasdl95yjabv811knkmy5laj21a54z1jdfq36jdj984k1nw5l0b"))))
+ "08i63jr8ihn1xiq5z5n3yls3yz6li5sg0s454l56p5bcvbrw81my"))))
(build-system gnu-build-system)
(arguments
- '(#:tests? #f ; no tests
+ '(#:tests? #f ; no tests
#:make-flags (list "CC=gcc"
(string-append "LDFLAGS=-Wl,-rpath="
(assoc-ref %outputs "out") "/lib")
diff --git a/gnu/packages/vulkan.scm b/gnu/packages/vulkan.scm
index 2e5605657e..6b151f0a31 100644
--- a/gnu/packages/vulkan.scm
+++ b/gnu/packages/vulkan.scm
@@ -271,7 +271,7 @@ API.")
(define-public shaderc
(package
(name "shaderc")
- (version "2018.0")
+ (version "2019.0")
(source
(origin
(method git-fetch)
@@ -281,7 +281,7 @@ API.")
(file-name (git-file-name name version))
(sha256
(base32
- "0qigmj0riw43pgjn5f6kpvk72fajssz1lc2aiqib5qvmj9rqq3hl"))))
+ "1l5mmyxhzsbp0a6y2d86i8jmf46c6bjgjkdgkr5l8hmhflmm7gi2"))))
(build-system meson-build-system)
(arguments
`(#:tests? #f ; FIXME: Tests fail.
diff --git a/gnu/packages/wm.scm b/gnu/packages/wm.scm
index 01c30c8198..f0589e98f1 100644
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@ -1140,7 +1140,7 @@ functionality to display information about the most commonly used services.")
(define-public wlroots
(package
(name "wlroots")
- (version "0.5.0")
+ (version "0.6.0")
(source
(origin
(method git-fetch)
@@ -1149,7 +1149,7 @@ functionality to display information about the most commonly used services.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "1phiidyddzgaxy4gbqwmykxn0y8za6y5mp66l9dpd9i6fml153yq"))))
+ (base32 "1rdcmll5b8w242n6yfjpsaprq280ck2jmbz46dxndhignxgda7k4"))))
(build-system meson-build-system)
(arguments
`(#:configure-flags '("-Dlogind-provider=elogind")
@@ -1185,7 +1185,7 @@ modules for building a Wayland compositor.")
(define-public sway
(package
(name "sway")
- (version "1.0")
+ (version "1.1.1")
(source
(origin
(method git-fetch)
@@ -1194,7 +1194,7 @@ modules for building a Wayland compositor.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "09cndc2nl39d3l7g5634xp0pxcz60pvc5277mfw89r22mh0j78rx"))))
+ (base32 "0yhn9zdg9mzfhn97c440lk3pw6122nrhx0is5sqmvgr6p814f776"))))
(build-system meson-build-system)
(arguments
`(#:phases
@@ -1231,7 +1231,7 @@ modules for building a Wayland compositor.")
(define-public swayidle
(package
(name "swayidle")
- (version "1.2")
+ (version "1.3")
(source
(origin
(method git-fetch)
@@ -1240,7 +1240,7 @@ modules for building a Wayland compositor.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "0b65flajwn2i6k2kdxxgw25w7ikzzmm595f4j5x1wac1rb0yah9w"))))
+ (base32 "04agcbhc473jkk7npb40i94ny8naykxzpjcw2lvl05kxv65y5d9v"))))
(build-system meson-build-system)
(inputs `(("wayland" ,wayland)))
(native-inputs `(("pkg-config" ,pkg-config)
@@ -1254,7 +1254,7 @@ modules for building a Wayland compositor.")
(define-public swaylock
(package
(name "swaylock")
- (version "1.3")
+ (version "1.4")
(source
(origin
(method git-fetch)
@@ -1263,7 +1263,7 @@ modules for building a Wayland compositor.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "093nv1y9wyg48rfxhd36qdljjry57v1vkzrlc38mkf6zvsq8j7wb"))))
+ (base32 "1ii9ql1mxkk2z69dv6bg1x22nl3a46iww764wqjiv78x08xpk982"))))
(build-system meson-build-system)
(inputs `(("cairo" ,cairo)
("gdk-pixbuf" ,gdk-pixbuf)
@@ -1279,3 +1279,29 @@ modules for building a Wayland compositor.")
(synopsis "Screen locking utility for Wayland compositors")
(description "Swaylock is a screen locking utility for Wayland compositors.")
(license license:expat))) ; MIT license
+
+(define-public swaybg
+ (package
+ (name "swaybg")
+ (version "1.0")
+ (source
+ (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/swaywm/swaybg.git")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1lmqz5bmig90gq2m7lwf02d2g7z4hzf8fhqz78c8vk92c6p4xwbc"))))
+ (build-system meson-build-system)
+ (inputs `(("cairo" ,cairo)
+ ("gdk-pixbuf" ,gdk-pixbuf)
+ ("wayland" ,wayland)))
+ (native-inputs `(("git" ,git)
+ ("pkg-config" ,pkg-config)
+ ("scdoc" ,scdoc)
+ ("wayland-protocols" ,wayland-protocols)))
+ (home-page "https://github.com/swaywm/sway")
+ (synopsis "Screen wallpaper utility for Wayland compositors")
+ (description "Swaybg is a wallpaper utility for Wayland compositors.")
+ (license license:expat))) ; MIT license
diff --git a/gnu/packages/xml.scm b/gnu/packages/xml.scm
index cbf2f65da4..400dca9290 100644
--- a/gnu/packages/xml.scm
+++ b/gnu/packages/xml.scm
@@ -85,14 +85,14 @@ things the parser might find in the XML document (like start tags).")
(define-public libebml
(package
(name "libebml")
- (version "1.3.7")
+ (version "1.3.9")
(source
(origin
(method url-fetch)
(uri (string-append "https://dl.matroska.org/downloads/libebml/"
"libebml-" version ".tar.xz"))
(sha256
- (base32 "1x79b35dj5d2x7xf7ql83w2cr0v5n2vsd08q6y6grmw4yn3lq973"))))
+ (base32 "0j65r6i7s2k67c8f9wa653mqpxmfhdl67kjxrc1n5910ig6wddn6"))))
(build-system cmake-build-system)
(arguments
`(#:configure-flags
@@ -1080,7 +1080,7 @@ C++ programming language.")
(define-public tinyxml2
(package
(name "tinyxml2")
- (version "4.0.1")
+ (version "7.0.1")
(source
(origin
(method git-fetch)
@@ -1089,10 +1089,8 @@ C++ programming language.")
(commit version)))
(file-name (git-file-name name version))
(sha256
- (base32 "1a0skfi8rzk53qcxbv88qlvhlqzvsvg4hm20dnx4zw7vrn6anr9y"))))
+ (base32 "1sf6sch1kawrna2f9dc8f4xl836acqcddkghzdib0s7dl48m9r7m"))))
(build-system cmake-build-system)
- (arguments
- `(#:tests? #f)) ; no tests
(synopsis "Small XML parser for C++")
(description "TinyXML2 is a small and simple XML parsing library for the
C++ programming language.")
diff --git a/gnu/services/auditd.scm b/gnu/services/auditd.scm
new file mode 100644
index 0000000000..8a9292015f
--- /dev/null
+++ b/gnu/services/auditd.scm
@@ -0,0 +1,54 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Danny Milosavljevic <dannym@scratchpost.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu services auditd)
+ #:use-module (gnu services)
+ #:use-module (gnu services configuration)
+ #:use-module (gnu services base)
+ #:use-module (gnu services shepherd)
+ #:use-module (gnu packages admin)
+ #:use-module (guix records)
+ #:use-module (guix gexp)
+ #:use-module (guix packages)
+ #:export (auditd-configuration
+ auditd-service-type))
+
+; /etc/audit/audit.rules
+
+(define-configuration auditd-configuration
+ (audit
+ (package audit)
+ "Audit package."))
+
+(define (auditd-shepherd-service config)
+ (let* ((audit (auditd-configuration-audit config)))
+ (list (shepherd-service
+ (documentation "Auditd allows you to audit file system accesses.")
+ (provision '(auditd))
+ (start #~(make-forkexec-constructor
+ (list (string-append #$audit "/sbin/auditd"))))
+ (stop #~(make-kill-destructor))))))
+
+(define auditd-service-type
+ (service-type (name 'auditd)
+ (description "Allows auditing file system accesses.")
+ (extensions
+ (list
+ (service-extension shepherd-root-service-type
+ auditd-shepherd-service)))
+ (default-value (auditd-configuration))))
diff --git a/gnu/services/docker.scm b/gnu/services/docker.scm
index 94a04c8996..04f9127346 100644
--- a/gnu/services/docker.scm
+++ b/gnu/services/docker.scm
@@ -24,12 +24,14 @@
#:use-module (gnu services shepherd)
#:use-module (gnu system shadow)
#:use-module (gnu packages docker)
+ #:use-module (gnu packages linux) ;singularity
#:use-module (guix records)
#:use-module (guix gexp)
#:use-module (guix packages)
#:export (docker-configuration
- docker-service-type))
+ docker-service-type
+ singularity-service-type))
;;; We're not using serialize-configuration, but we must define this because
;;; the define-configuration macro validates it exists.
@@ -120,3 +122,60 @@ bundles in Docker containers.")
(service-extension account-service-type
(const %docker-accounts))))
(default-value (docker-configuration))))
+
+
+;;;
+;;; Singularity.
+;;;
+
+(define %singularity-activation
+ (with-imported-modules '((guix build utils))
+ #~(begin
+ (use-modules (guix build utils))
+
+ (define %mount-directory
+ "/var/singularity/mnt/")
+
+ ;; Create the directories that Singularity 2.6 expects to find. Make
+ ;; them #o755 like the 'install-data-hook' rule in 'Makefile.am' of
+ ;; Singularity 2.6.1.
+ (for-each (lambda (directory)
+ (let ((directory (string-append %mount-directory
+ directory)))
+ (mkdir-p directory)
+ (chmod directory #o755)))
+ '("container" "final" "overlay" "session"))
+ (chmod %mount-directory #o755))))
+
+(define (singularity-setuid-programs singularity)
+ "Return the setuid-root programs that SINGULARITY needs."
+ (define helpers
+ ;; The helpers, under a meaningful name.
+ (computed-file "singularity-setuid-helpers"
+ #~(begin
+ (mkdir #$output)
+ (for-each (lambda (program)
+ (symlink (string-append #$singularity
+ "/libexec/singularity"
+ "/bin/"
+ program "-suid")
+ (string-append #$output
+ "/singularity-"
+ program
+ "-helper")))
+ '("action" "mount" "start")))))
+
+ (list (file-append helpers "/singularity-action-helper")
+ (file-append helpers "/singularity-mount-helper")
+ (file-append helpers "/singularity-start-helper")))
+
+(define singularity-service-type
+ (service-type (name 'singularity)
+ (description
+ "Install the Singularity application bundle tool.")
+ (extensions
+ (list (service-extension setuid-program-service-type
+ singularity-setuid-programs)
+ (service-extension activation-service-type
+ (const %singularity-activation))))
+ (default-value singularity)))
diff --git a/gnu/system/locale.scm b/gnu/system/locale.scm
index 533a45e149..8466d5b07d 100644
--- a/gnu/system/locale.scm
+++ b/gnu/system/locale.scm
@@ -85,20 +85,6 @@ or #f on failure."
(_
#f)))
-(define* (localedef-command locale
- #:key (libc (canonical-package glibc)))
- "Return a gexp that runs 'localedef' from LIBC to build LOCALE."
- #~(begin
- (format #t "building locale '~a'...~%"
- #$(locale-definition-name locale))
- (zero? (system* (string-append #+libc "/bin/localedef")
- "--no-archive" "--prefix" #$output
- "-i" #$(locale-definition-source locale)
- "-f" #$(locale-definition-charset locale)
- (string-append #$output "/" #$(version-major+minor
- (package-version libc))
- "/" #$(locale-definition-name locale))))))
-
(define* (single-locale-directory locales
#:key (libc (canonical-package glibc)))
"Return a directory containing all of LOCALES for LIBC compiled.
@@ -110,17 +96,29 @@ of LIBC."
(version-major+minor (package-version libc)))
(define build
- #~(begin
- (mkdir #$output)
-
- (mkdir (string-append #$output "/" #$version))
-
- ;; 'localedef' executes 'gzip' to access compressed locale sources.
- (setenv "PATH" (string-append #$gzip "/bin"))
-
- (exit
- (and #$@(map (cut localedef-command <> #:libc libc)
- locales)))))
+ (with-imported-modules (source-module-closure
+ '((gnu build locale)))
+ #~(begin
+ (use-modules (gnu build locale))
+
+ (mkdir #$output)
+ (mkdir (string-append #$output "/" #$version))
+
+ ;; 'localedef' executes 'gzip' to access compressed locale sources.
+ (setenv "PATH"
+ (string-append #$gzip "/bin:" #$libc "/bin"))
+
+ (setvbuf (current-output-port) 'line)
+ (setvbuf (current-error-port) 'line)
+ (for-each (lambda (locale codeset name)
+ (build-locale locale
+ #:codeset codeset
+ #:name name
+ #:directory
+ (string-append #$output "/" #$version)))
+ '#$(map locale-definition-source locales)
+ '#$(map locale-definition-charset locales)
+ '#$(map locale-definition-name locales)))))
(computed-file (string-append "locale-" version) build))
@@ -216,45 +214,16 @@ pairs such as (\"oc_FR.UTF-8\" . \"UTF-8\"). Each pair corresponds to a
locale supported by GLIBC."
(define build
(with-imported-modules (source-module-closure
- '((guix build gnu-build-system)))
+ '((guix build gnu-build-system)
+ (gnu build locale)))
#~(begin
(use-modules (guix build gnu-build-system)
- (srfi srfi-1)
- (ice-9 rdelim)
- (ice-9 match)
- (ice-9 regex)
+ (gnu build locale)
(ice-9 pretty-print))
(define unpack
(assq-ref %standard-phases 'unpack))
- (define locale-rx
- ;; Regexp matching a locale line in 'localedata/SUPPORTED'.
- (make-regexp
- "^[[:space:]]*([[:graph:]]+)/([[:graph:]]+)[[:space:]]*\\\\$"))
-
- (define (read-supported-locales port)
- ;; Read the 'localedata/SUPPORTED' file from PORT. That file is
- ;; actually a makefile snippet, with one locale per line, and a
- ;; header that can be discarded.
- (let loop ((locales '()))
- (define line
- (read-line port))
-
- (cond ((eof-object? line)
- (reverse locales))
- ((string-prefix? "#" (string-trim line)) ;comment
- (loop locales))
- ((string-contains line "=") ;makefile variable assignment
- (loop locales))
- (else
- (match (regexp-exec locale-rx line)
- (#f
- (loop locales))
- (m
- (loop (alist-cons (match:substring m 1)
- (match:substring m 2)
- locales))))))))
(setenv "PATH"
(string-append #+(file-append tar "/bin") ":"
diff --git a/gnu/tests/docker.scm b/gnu/tests/docker.scm
index 3cd3a27884..f2674cdbe8 100644
--- a/gnu/tests/docker.scm
+++ b/gnu/tests/docker.scm
@@ -101,7 +101,7 @@ inside %DOCKER-OS."
marionette))
(test-equal "Load docker image and run it"
- "hello world"
+ '("hello world" "hi!")
(marionette-eval
`(begin
(define slurp
@@ -117,12 +117,16 @@ inside %DOCKER-OS."
(repository&tag (string-drop raw-line
(string-length
"Loaded image: ")))
- (response (slurp
- ,(string-append #$docker-cli "/bin/docker")
- "run" "--entrypoint" "bin/Guile"
- repository&tag
- "/aa.scm")))
- response))
+ (response1 (slurp
+ ,(string-append #$docker-cli "/bin/docker")
+ "run" "--entrypoint" "bin/Guile"
+ repository&tag
+ "/aa.scm"))
+ (response2 (slurp ;default entry point
+ ,(string-append #$docker-cli "/bin/docker")
+ "run" repository&tag
+ "-c" "(display \"hi!\")")))
+ (list response1 response2)))
marionette))
(test-end)
@@ -161,6 +165,7 @@ standard output device and then enters a new line.")
(tarball (docker-image "docker-pack" profile
#:symlinks '(("/bin/Guile" -> "bin/guile")
("aa.scm" -> "a.scm"))
+ #:entry-point "bin/guile"
#:localstatedir? #t)))
(run-docker-test tarball)))
diff --git a/gnu/tests/singularity.scm b/gnu/tests/singularity.scm
new file mode 100644
index 0000000000..668043a0bc
--- /dev/null
+++ b/gnu/tests/singularity.scm
@@ -0,0 +1,137 @@
+;;; GNU Guix --- Functional package management for GNU
+;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
+;;;
+;;; This file is part of GNU Guix.
+;;;
+;;; GNU Guix is free software; you can redistribute it and/or modify it
+;;; under the terms of the GNU General Public License as published by
+;;; the Free Software Foundation; either version 3 of the License, or (at
+;;; your option) any later version.
+;;;
+;;; GNU Guix is distributed in the hope that it will be useful, but
+;;; WITHOUT ANY WARRANTY; without even the implied warranty of
+;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+;;; GNU General Public License for more details.
+;;;
+;;; You should have received a copy of the GNU General Public License
+;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
+
+(define-module (gnu tests singularity)
+ #:use-module (gnu tests)
+ #:use-module (gnu system)
+ #:use-module (gnu system vm)
+ #:use-module (gnu system shadow)
+ #:use-module (gnu services)
+ #:use-module (gnu services docker)
+ #:use-module (gnu packages bash)
+ #:use-module (gnu packages guile)
+ #:use-module (gnu packages linux) ;singularity
+ #:use-module (guix gexp)
+ #:use-module (guix store)
+ #:use-module (guix grafts)
+ #:use-module (guix monads)
+ #:use-module (guix packages)
+ #:use-module (guix profiles)
+ #:use-module (guix scripts pack)
+ #:export (%test-singularity))
+
+(define %singularity-os
+ (simple-operating-system
+ (service singularity-service-type)
+ (simple-service 'guest-account
+ account-service-type
+ (list (user-account (name "guest") (uid 1000) (group "guest"))
+ (user-group (name "guest") (id 1000))))))
+
+(define (run-singularity-test image)
+ "Load IMAGE, a Squashfs image, as a Singularity image and run it inside
+%SINGULARITY-OS."
+ (define os
+ (marionette-operating-system %singularity-os))
+
+ (define singularity-exec
+ #~(begin
+ (use-modules (ice-9 popen) (rnrs io ports))
+
+ (let* ((pipe (open-pipe* OPEN_READ
+ #$(file-append singularity
+ "/bin/singularity")
+ "exec" #$image "/bin/guile"
+ "-c" "(display \"hello, world\")"))
+ (str (get-string-all pipe))
+ (status (close-pipe pipe)))
+ (and (zero? status)
+ (string=? str "hello, world")))))
+
+ (define test
+ (with-imported-modules '((gnu build marionette))
+ #~(begin
+ (use-modules (srfi srfi-11) (srfi srfi-64)
+ (gnu build marionette))
+
+ (define marionette
+ (make-marionette (list #$(virtual-machine os))))
+
+ (mkdir #$output)
+ (chdir #$output)
+
+ (test-begin "singularity")
+
+ (test-assert "singularity exec /bin/guile (as root)"
+ (marionette-eval '#$singularity-exec
+ marionette))
+
+ (test-equal "singularity exec /bin/guile (unprivileged)"
+ 0
+ (marionette-eval
+ `(begin
+ (use-modules (ice-9 match))
+
+ (match (primitive-fork)
+ (0
+ (dynamic-wind
+ (const #f)
+ (lambda ()
+ (setgid 1000)
+ (setuid 1000)
+ (execl #$(program-file "singularity-exec-test"
+ #~(exit #$singularity-exec))
+ "test"))
+ (lambda ()
+ (primitive-exit 127))))
+ (pid
+ (cdr (waitpid pid)))))
+ marionette))
+
+ (test-equal "singularity run" ;test the entry point
+ 42
+ (marionette-eval
+ `(status:exit-val
+ (system* #$(file-append singularity "/bin/singularity")
+ "run" #$image "-c" "(exit 42)"))
+ marionette))
+
+ (test-end)
+ (exit (= (test-runner-fail-count (test-runner-current)) 0)))))
+
+ (gexp->derivation "singularity-test" test))
+
+(define (build-tarball&run-singularity-test)
+ (mlet* %store-monad
+ ((_ (set-grafting #f))
+ (guile (set-guile-for-build (default-guile)))
+ ;; 'singularity exec' insists on having /bin/sh in the image.
+ (profile (profile-derivation (packages->manifest
+ (list bash-minimal guile-2.2))
+ #:hooks '()
+ #:locales? #f))
+ (tarball (squashfs-image "singularity-pack" profile
+ #:entry-point "bin/guile"
+ #:symlinks '(("/bin" -> "bin")))))
+ (run-singularity-test tarball)))
+
+(define %test-singularity
+ (system-test
+ (name "singularity")
+ (description "Test Singularity container of Guix.")
+ (value (build-tarball&run-singularity-test))))