Merge branch 'master' into staging

This commit is contained in:
Marius Bakke 2019-06-09 00:57:36 +02:00
commit 69ecd666d7
No known key found for this signature in database
GPG Key ID: A2A06DF2A33A54FA
64 changed files with 9921 additions and 9195 deletions

View File

@ -34,6 +34,8 @@
(eval . (put 'modify-services 'scheme-indent-function 1)) (eval . (put 'modify-services 'scheme-indent-function 1))
(eval . (put 'with-directory-excursion 'scheme-indent-function 1)) (eval . (put 'with-directory-excursion 'scheme-indent-function 1))
(eval . (put 'with-file-lock 'scheme-indent-function 1))
(eval . (put 'package 'scheme-indent-function 0)) (eval . (put 'package 'scheme-indent-function 0))
(eval . (put 'origin 'scheme-indent-function 0)) (eval . (put 'origin 'scheme-indent-function 0))
(eval . (put 'build-system 'scheme-indent-function 0)) (eval . (put 'build-system 'scheme-indent-function 0))

View File

@ -4866,6 +4866,29 @@ advantage to work without requiring special kernel support, but it incurs
run-time overhead every time a system call is made. run-time overhead every time a system call is made.
@end quotation @end quotation
@cindex entry point, for Docker images
@item --entry-point=@var{command}
Use @var{command} as the @dfn{entry point} of the resulting pack, if the pack
format supports it---currently @code{docker} and @code{squashfs} (Singularity)
support it. @var{command} must be relative to the profile contained in the
pack.
The entry point specifies the command that tools like @code{docker run} or
@code{singularity run} automatically start by default. For example, you can
do:
@example
guix pack -f docker --entry-point=bin/guile guile
@end example
The resulting pack can easily be loaded and @code{docker run} with no extra
arguments will spawn @code{bin/guile}:
@example
docker load -i pack.tar.gz
docker run @var{image-id}
@end example
@item --expression=@var{expr} @item --expression=@var{expr}
@itemx -e @var{expr} @itemx -e @var{expr}
Consider the package @var{expr} evaluates to. Consider the package @var{expr} evaluates to.
@ -24090,7 +24113,7 @@ The following is an example @code{dicod-service} configuration.
@cindex Docker @cindex Docker
@subsubheading Docker Service @subsubheading Docker Service
The @code{(gnu services docker)} module provides the following service. The @code{(gnu services docker)} module provides the following services.
@defvr {Scheme Variable} docker-service-type @defvr {Scheme Variable} docker-service-type
@ -24114,6 +24137,66 @@ The Containerd package to use.
@end table @end table
@end deftp @end deftp
@cindex Audit
@subsubheading Auditd Service
The @code{(gnu services auditd)} module provides the following service.
@defvr {Scheme Variable} auditd-service-type
This is the type of the service that runs
@url{https://people.redhat.com/sgrubb/audit/,auditd},
a daemon that tracks security-relevant information on your system.
Examples of things that can be tracked:
@enumerate
@item
File accesses
@item
System calls
@item
Invoked commands
@item
Failed login attempts
@item
Firewall filtering
@item
Network access
@end enumerate
@command{auditctl} from the @code{audit} package can be used in order
to add or remove events to be tracked (until the next reboot).
In order to permanently track events, put the command line arguments
of auditctl into @file{/etc/audit/audit.rules}.
@command{aureport} from the @code{audit} package can be used in order
to view a report of all recorded events.
The audit daemon usually logs into the directory @file{/var/log/audit}.
@end defvr
@deftp {Data Type} auditd-configuration
This is the data type representing the configuration of auditd.
@table @asis
@item @code{audit} (default: @code{audit})
The audit package to use.
@end table
@end deftp
@defvr {Scheme Variable} singularity-service-type
This is the type of the service that allows you to run
@url{https://www.sylabs.io/singularity/, Singularity}, a Docker-style tool to
create and run application bundles (aka. ``containers''). The value for this
service is the Singularity package to use.
The service does not install a daemon; instead, it installs helper programs as
setuid-root (@pxref{Setuid Programs}) such that unprivileged users can invoke
@command{singularity run} and similar commands.
@end defvr
@node Setuid Programs @node Setuid Programs
@section Setuid Programs @section Setuid Programs

View File

@ -19,6 +19,7 @@
(define-module (gnu build accounts) (define-module (gnu build accounts)
#:use-module (guix records) #:use-module (guix records)
#:use-module (guix combinators) #:use-module (guix combinators)
#:use-module ((guix build syscalls) #:select (fdatasync))
#:use-module (gnu system accounts) #:use-module (gnu system accounts)
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
#:use-module (srfi srfi-11) #:use-module (srfi srfi-11)
@ -51,6 +52,7 @@
group-entry-gid group-entry-gid
group-entry-members group-entry-members
%password-lock-file
write-group write-group
write-passwd write-passwd
write-shadow write-shadow
@ -224,6 +226,19 @@ each field."
(serialization list->comma-separated comma-separated->list) (serialization list->comma-separated comma-separated->list)
(default '()))) (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) (define (database-writer file mode entry->string)
(lambda* (entries #:optional (file-or-port file)) (lambda* (entries #:optional (file-or-port file))
"Write ENTRIES to FILE-OR-PORT. When FILE-OR-PORT is a file name, write "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 () (lambda ()
(chmod port mode) (chmod port mode)
(write-entries port) (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)) (rename-file template file-or-port))
(lambda () (lambda ()
(close-port port) (unless (port-closed? port)
(close-port port))
(when (file-exists? template) (when (file-exists? template)
(delete-file template)))))))) (delete-file template))))))))

View File

@ -22,6 +22,7 @@
#:use-module (gnu build accounts) #:use-module (gnu build accounts)
#:use-module (gnu build linux-boot) #:use-module (gnu build linux-boot)
#:use-module (guix build utils) #:use-module (guix build utils)
#:use-module ((guix build syscalls) #:select (with-file-lock))
#:use-module (ice-9 ftw) #:use-module (ice-9 ftw)
#:use-module (ice-9 match) #:use-module (ice-9 match)
#:use-module (ice-9 vlist) #:use-module (ice-9 vlist)
@ -129,11 +130,15 @@ group records) are all available."
;; Allow home directories to be created under /var/lib. ;; Allow home directories to be created under /var/lib.
(mkdir-p "/var/lib") (mkdir-p "/var/lib")
;; 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) (let-values (((groups passwd shadow)
(user+group-databases users groups))) (user+group-databases users groups)))
(write-group groups) (write-group groups)
(write-passwd passwd) (write-passwd passwd)
(write-shadow shadow) (write-shadow shadow)))
;; Home directories of non-system accounts are created by ;; Home directories of non-system accounts are created by
;; 'activate-user-home'. ;; 'activate-user-home'.
@ -144,7 +149,7 @@ group records) are all available."
(for-each (lambda (directory) (for-each (lambda (directory)
(chown directory 0 0) (chown directory 0 0)
(chmod directory #o555)) (chmod directory #o555))
(duplicates (map user-account-home-directory system-accounts))))) (duplicates (map user-account-home-directory system-accounts))))
(define (activate-user-home users) (define (activate-user-home users)
"Create and populate the home directory of USERS, a list of tuples, unless "Create and populate the home directory of USERS, a list of tuples, unless

95
gnu/build/locale.scm Normal file
View File

@ -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))))))

View File

@ -19,6 +19,7 @@
(define-module (gnu installer locale) (define-module (gnu installer locale)
#:use-module (gnu installer utils) #:use-module (gnu installer utils)
#:use-module ((gnu build locale) #:select (normalize-codeset))
#:use-module (guix records) #:use-module (guix records)
#:use-module (json) #:use-module (json)
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
@ -71,24 +72,6 @@ optionally, CODESET."
(codeset . ,(or codeset (match:substring matches 5))) (codeset . ,(or codeset (match:substring matches 5)))
(modifier . ,(match:substring matches 7))))) (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) (define (locale->locale-string locale)
"Reverse operation of locale-string->locale." "Reverse operation of locale-string->locale."
(let ((language (locale-language locale)) (let ((language (locale-language locale))

View File

@ -62,7 +62,7 @@ Internet and return the selected technology. For now, only technologies with
(G_ "Continue") (G_ "Continue")
(G_ "Exit") (G_ "Exit")
(G_ "The install process requires Internet access but no \ (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 ((1) (raise
(condition (condition
(&installer-step-break)))) (&installer-step-break))))

View File

@ -75,10 +75,13 @@
(packages '((specification->package "awesome")))) (packages '((specification->package "awesome"))))
(desktop-environment (desktop-environment
(name "i3") (name "i3")
(packages '((specification->package "i3-wm")))) (packages (map (lambda (package)
`(specification->package ,package))
'("i3-wm" "i3status" "dmenu" "st"))))
(desktop-environment (desktop-environment
(name "ratpoison") (name "ratpoison")
(packages '((specification->package "ratpoison")))) (packages '((specification->package "ratpoison")
(specification->package "xterm"))))
;; Networking. ;; Networking.
(system-service (system-service

View File

@ -501,6 +501,7 @@ GNU_SYSTEM_MODULES = \
%D%/services.scm \ %D%/services.scm \
%D%/services/admin.scm \ %D%/services/admin.scm \
%D%/services/audio.scm \ %D%/services/audio.scm \
%D%/services/auditd.scm \
%D%/services/avahi.scm \ %D%/services/avahi.scm \
%D%/services/base.scm \ %D%/services/base.scm \
%D%/services/certbot.scm \ %D%/services/certbot.scm \
@ -586,6 +587,7 @@ GNU_SYSTEM_MODULES = \
%D%/tests/networking.scm \ %D%/tests/networking.scm \
%D%/tests/rsync.scm \ %D%/tests/rsync.scm \
%D%/tests/security-token.scm \ %D%/tests/security-token.scm \
%D%/tests/singularity.scm \
%D%/tests/ssh.scm \ %D%/tests/ssh.scm \
%D%/tests/version-control.scm \ %D%/tests/version-control.scm \
%D%/tests/virtualization.scm \ %D%/tests/virtualization.scm \
@ -637,6 +639,7 @@ dist_installer_DATA = \
# Modules that do not need to be compiled. # Modules that do not need to be compiled.
MODULES_NOT_COMPILED += \ MODULES_NOT_COMPILED += \
%D%/build/locale.scm \
%D%/build/shepherd.scm \ %D%/build/shepherd.scm \
%D%/build/svg.scm %D%/build/svg.scm
@ -659,7 +662,6 @@ dist_patch_DATA = \
%D%/packages/patches/aegisub-icu59-include-unistr.patch \ %D%/packages/patches/aegisub-icu59-include-unistr.patch \
%D%/packages/patches/aegisub-boost68.patch \ %D%/packages/patches/aegisub-boost68.patch \
%D%/packages/patches/agg-am_c_prototype.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/amule-crypto-6.patch \
%D%/packages/patches/antiword-CVE-2014-8123.patch \ %D%/packages/patches/antiword-CVE-2014-8123.patch \
%D%/packages/patches/antlr3-3_1-fix-java8-compilation.patch \ %D%/packages/patches/antlr3-3_1-fix-java8-compilation.patch \

View File

@ -115,14 +115,14 @@
(define-public aide (define-public aide
(package (package
(name "aide") (name "aide")
(version "0.16.1") (version "0.16.2")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://github.com/aide/aide/releases/download/v" (uri (string-append "https://github.com/aide/aide/releases/download/v"
version "/aide-" version ".tar.gz")) version "/aide-" version ".tar.gz"))
(sha256 (sha256
(base32 "1dqhc0c24wa4zid06pfy61k357yvzh28ij86bk9jf6hcqzn7qaqg")))) (base32 "15xp47sz7kk1ciffw3f5xw2jg2mb2lqrbr3q6p4bkbz5dap9iy8p"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("bison" ,bison) `(("bison" ,bison)
@ -1734,13 +1734,13 @@ of supported upstream metrics systems simultaneously.")
(define-public ansible (define-public ansible
(package (package
(name "ansible") (name "ansible")
(version "2.7.10") (version "2.8.0")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri "ansible" version)) (uri (pypi-uri "ansible" version))
(sha256 (sha256
(base32 "15721d0bxymghxnlnknq43lszlxg3ybbcp2p5v424hhw6wg2v944")))) (base32 "1bpk5r5x6vdgn839n74yv2chd2ja10yfrhav0fzwa38mi5yxsd3j"))))
(build-system python-build-system) (build-system python-build-system)
(native-inputs (native-inputs
`(("python-bcrypt" ,python-bcrypt) `(("python-bcrypt" ,python-bcrypt)
@ -2124,16 +2124,16 @@ results (ndiff), and a packet generation and response analysis tool (nping).")
(define-public dstat (define-public dstat
(package (package
(name "dstat") (name "dstat")
(version "0.7.3") (version "0.7.4")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
(url "https://github.com/dagwieers/dstat.git") (url "https://github.com/dagwieers/dstat.git")
(commit version))) (commit (string-append "v" version))))
(file-name (git-file-name "dstat" version)) (file-name (git-file-name "dstat" version))
(sha256 (sha256
(base32 "0sbpna531034gr40w4g9cwz35s2fpf9h654paznsxw9fih91rfa5")))) (base32 "1qnmkhqmjd1m3if05jj29dvr5hn6kayq9bkkkh881w472c0zhp8v"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:tests? #f ; no make check `(#:tests? #f ; no make check
@ -2160,7 +2160,7 @@ throughput (in the same interval).")
(define-public thefuck (define-public thefuck
(package (package
(name "thefuck") (name "thefuck")
(version "3.28") (version "3.29")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -2169,7 +2169,7 @@ throughput (in the same interval).")
(commit version))) (commit version)))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 "070b2sx8r0b4hry6xg97psxlikxghmz91zicg2cm6kc1yhgz4agc")) (base32 "1qhxwjjgrzpqrqjv7l2847ywpln76lyd6j8bl9gz2r6kl0fx2fqs"))
(patches (search-patches "thefuck-test-environ.patch")))) (patches (search-patches "thefuck-test-environ.patch"))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
@ -2849,7 +2849,7 @@ Python loading in HPC environments.")
(let ((real-name "inxi")) (let ((real-name "inxi"))
(package (package
(name "inxi-minimal") (name "inxi-minimal")
(version "3.0.33-1") (version "3.0.34-1")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -2858,7 +2858,7 @@ Python loading in HPC environments.")
(commit version))) (commit version)))
(file-name (git-file-name real-name version)) (file-name (git-file-name real-name version))
(sha256 (sha256
(base32 "19bfdid4zp39irsdq3m6yyqf2336c30da35qgslrzcr2vh815g8c")))) (base32 "0x2s40lwsan2pk292nspjgyw00f9f5fdfmwfvl50924pxhyxn2fh"))))
(build-system trivial-build-system) (build-system trivial-build-system)
(inputs (inputs
`(("bash" ,bash-minimal) `(("bash" ,bash-minimal)

View File

@ -264,7 +264,7 @@ waveform until they line up with the proper sounds.")
(define-public pencil2d (define-public pencil2d
(package (package
(name "pencil2d") (name "pencil2d")
(version "0.6.3") (version "0.6.4")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -273,7 +273,7 @@ waveform until they line up with the proper sounds.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"097xwvhw7vl9pgknhb40zs6adf7mb1xxfc73h4kiqgp6z59prjl3")))) "0zi8x0w8n817zds2lyw9l8j33c03kiybkrcyy3s5fg66mchmrwnr"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
`(("qtbase" ,qtbase) `(("qtbase" ,qtbase)

View File

@ -32,7 +32,8 @@
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module (gnu packages base) #:use-module (gnu packages base)
#:use-module (gnu packages compression) #:use-module (gnu packages compression)
#:use-module (gnu packages perl)) #:use-module (gnu packages perl)
#:use-module (ice-9 match))
(define-public aspell (define-public aspell
(package (package
@ -102,7 +103,14 @@ dictionaries, including personal ones.")
(define* (aspell-dictionary dict-name full-name (define* (aspell-dictionary dict-name full-name
#:key version sha256 (prefix "aspell6-")) #:key version sha256 (prefix "aspell6-"))
(package (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) (version version)
(source (origin (source (origin
(method url-fetch) (method url-fetch)
@ -281,7 +289,7 @@ dictionaries, including personal ones.")
"0w2k5l5rbqpliripgqwiqixz5ghnjf7i9ggbrc4ly4vy1ia10rmc"))) "0w2k5l5rbqpliripgqwiqixz5ghnjf7i9ggbrc4ly4vy1ia10rmc")))
(define-public aspell-dict-pt-br (define-public aspell-dict-pt-br
(aspell-dictionary "pt-br" "Brazilian Portuguese" (aspell-dictionary "pt_BR" "Brazilian Portuguese"
#:version "20090702-0" #:version "20090702-0"
#:prefix "aspell6-" #:prefix "aspell6-"
#:sha256 #:sha256
@ -289,7 +297,7 @@ dictionaries, including personal ones.")
"1y09lx9zf2rnp55r16b2vgj953l3538z1vaqgflg9mdvm555bz3p"))) "1y09lx9zf2rnp55r16b2vgj953l3538z1vaqgflg9mdvm555bz3p")))
(define-public aspell-dict-pt-pt (define-public aspell-dict-pt-pt
(aspell-dictionary "pt-pt" "Portuguese" (aspell-dictionary "pt_PT" "Portuguese"
#:version "20070510-0" #:version "20070510-0"
#:prefix "aspell6-" #:prefix "aspell6-"
#:sha256 #:sha256

View File

@ -2120,14 +2120,14 @@ different audio devices such as ALSA or PulseAudio.")
(define-public qjackctl (define-public qjackctl
(package (package
(name "qjackctl") (name "qjackctl")
(version "0.5.7") (version "0.5.8")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://sourceforge/qjackctl/qjackctl/" (uri (string-append "mirror://sourceforge/qjackctl/qjackctl/"
version "/qjackctl-" version ".tar.gz")) version "/qjackctl-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1g6a5j74p45yisl28bw4fcc9nr6b710ikk459p4mp6djh9gs8v95")))) "1r5hf3hcr20n93jrrm7xk2zf6yx264pcr4d10cpybhrancxh602n"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:tests? #f)) ; no check target '(#:tests? #f)) ; no check target

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; 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 © 2014, 2019 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org> ;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2014, 2015, 2016, 2018 Mark H Weaver <mhw@netris.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 (let ((args `(#:tests? #f #:strip-binaries? #f
,@(package-arguments glibc)))) ,@(package-arguments glibc))))
(substitute-keyword-arguments args (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) ((#:phases phases)
`(modify-phases ,phases `(modify-phases ,phases
(replace 'build (replace 'build
(lambda _ (lambda _
(invoke "make" "localedata/install-locales" (invoke "make" "localedata/install-locales"
"-j" (number->string (parallel-job-count))))) "-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 'install)
(delete 'move-static-libs))) (delete 'move-static-libs)))
((#:configure-flags flags) ((#:configure-flags flags)

View File

@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2016, 2017 Marius Bakke <mbakke@fastmail.com>
;;; Copyright © 2017 Dave Love <fx@gnu.org> ;;; 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 © 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2019 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2019 Eric Bavier <bavier@member.fsf.org>
;;; ;;;
@ -38,14 +38,14 @@
(define-public fio (define-public fio
(package (package
(name "fio") (name "fio")
(version "3.13") (version "3.14")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "http://brick.kernel.dk/snaps/" (uri (string-append "http://brick.kernel.dk/snaps/"
"fio-" version ".tar.bz2")) "fio-" version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"0ddj7zm04jqlna3w61qyp4qvwnv0r2lc1hzpwrgbvv4fq581w7d2")))) "047y53nyhnmnxcrsfbsf0gcpxw7bli3n19ycscpxy9974j0fck0v"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:test-target "test" '(#:test-target "test"

View File

@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017, 2018 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017 Corentin Bocquillon <corentin@nybble.fr> ;;; 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 Fis Trivial <ybbs.daans@hotmail.com>
;;; Copyright © 2018 Tomáš Čech <sleep_walker@gnu.org> ;;; Copyright © 2018 Tomáš Čech <sleep_walker@gnu.org>
;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2018 Marius Bakke <mbakke@fastmail.com>
@ -242,7 +242,7 @@ other lower-level build files.")
(define-public osc (define-public osc
(package (package
(name "osc") (name "osc")
(version "0.165.0") (version "0.165.1")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -251,8 +251,7 @@ other lower-level build files.")
(commit version))) (commit version)))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32 "16p4z34ziy4z2w7mfpclk13x1w2p69wivkdwp0224x18r2fwj67v"))))
"0l6iw8a040l60ixxdms9rxajm38vqfdwgij2bm7ahgv1akza64jk"))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
`(#:phases `(#:phases

View File

@ -108,7 +108,7 @@ any small or embedded system.")
(define-public toybox (define-public toybox
(package (package
(name "toybox") (name "toybox")
(version "0.8.0") (version "0.8.1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -116,7 +116,7 @@ any small or embedded system.")
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"0mirj977zxsxnfaiqndwgsn9calgg312d817fi1hkfbd8kcyrk73")))) "1czxzvyggm157z8wgxbk8k0n675p1gig9xvrcijsplh9p1i1xi0s"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:phases '(#:phases

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; 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 © 2013 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
@ -128,7 +128,16 @@ in compression.")
`(#:phases `(#:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(add-after 'unpack 'enter-source (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 (native-inputs
`(("autoconf" ,autoconf) `(("autoconf" ,autoconf)
("automake" ,automake) ("automake" ,automake)

View File

@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018 Julien Lepiller <julien@lepiller.eu> ;;; 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> ;;; Copyright © 2019 Dan Frumin <dfrumin@cs.ru.nl>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
@ -43,7 +43,7 @@
(define-public coq (define-public coq
(package (package
(name "coq") (name "coq")
(version "8.9.0") (version "8.9.1")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -52,7 +52,7 @@
(commit (string-append "V" version)))) (commit (string-append "V" version))))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 "01ad7az6f95w16xya7979lk32agy22lf4bqgqf5qpnarpkpxhbw8")))) (base32 "1p4z967s18wkblayv12ygqsrqlyk5ax1pz40yf4kag8pva6gblhk"))))
(native-search-paths (native-search-paths
(list (search-path-specification (list (search-path-specification
(variable "COQPATH") (variable "COQPATH")

View File

@ -108,17 +108,19 @@ operating system functions.")
(package (package
(name "dashel") (name "dashel")
(version "1.3.3") (version "1.3.3")
(home-page "https://github.com/aseba-community/dashel") (source
(source (origin (origin
(method url-fetch) (method git-fetch)
(uri (string-append home-page "/archive/" version ".tar.gz")) (uri (git-reference
(url "https://github.com/aseba-community/dashel.git")
(commit version)))
(sha256 (sha256
(base32 (base32 "0anks2l2i2qp0wlzqck1qgpq15a3l6dg8lw2h8s4nsj7f61lffwy"))
"1ckzac1rsw3cxmpdpwcqv46jyp7risk5ybq6jjiizbqn7labf6dw")) (file-name (git-file-name name version))))
(file-name (string-append name "-" version ".tar.gz"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments '(#:tests? #f)) ; no tests (arguments '(#:tests? #f)) ; no tests
(native-inputs `(("pkg-config" ,pkg-config))) (native-inputs `(("pkg-config" ,pkg-config)))
(home-page "https://github.com/aseba-community/dashel")
(synopsis "Data stream helper encapsulation library") (synopsis "Data stream helper encapsulation library")
(description (description
"Dashel is a data stream helper encapsulation C++ library. It provides a "Dashel is a data stream helper encapsulation C++ library. It provides a
@ -130,22 +132,23 @@ combination of these streams.")
(define-public xsimd (define-public xsimd
(package (package
(name "xsimd") (name "xsimd")
(version "4.1.2") (version "7.2.3")
(source (origin (source
(method url-fetch) (origin
(uri (string-append (method git-fetch)
"https://github.com/QuantStack/xsimd/archive/" (uri (git-reference
version ".tar.gz")) (url "https://github.com/QuantStack/xsimd.git")
(commit version)))
(sha256 (sha256
(base32 (base32 "1ny2qin1j4h35mljivh8z52kwdyjxf4yxlzb8j52ji91v2ccc88j"))
"0x05l4xpqr9b66sm6lkf48n6x7999ks921x6k2hzkkg6mh3gqd46")) (file-name (git-file-name name version))))
(file-name (string-append name "-" version ".tar.gz"))))
(home-page "https://github.com/QuantStack/xsimd")
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments (arguments
`(#:test-target "xtest")) `(#:configure-flags (list "-DBUILD_TESTS=ON")
#:test-target "xtest"))
(native-inputs (native-inputs
`(("googletest" ,googletest))) `(("googletest" ,googletest)))
(home-page "https://github.com/QuantStack/xsimd")
(synopsis "C++ wrappers for SIMD intrinsics and math implementations") (synopsis "C++ wrappers for SIMD intrinsics and math implementations")
(description "xsimd provides a unified means for using SIMD features for (description "xsimd provides a unified means for using SIMD features for
library authors. Namely, it enables manipulation of batches of numbers with library authors. Namely, it enables manipulation of batches of numbers with

View File

@ -124,14 +124,14 @@ in between these sequences may be different in both content and length.")
(define-public liburcu (define-public liburcu
(package (package
(name "liburcu") (name "liburcu")
(version "0.11.0") (version "0.11.1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://www.lttng.org/files/urcu/" (uri (string-append "https://www.lttng.org/files/urcu/"
"userspace-rcu-" version ".tar.bz2")) "userspace-rcu-" version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"1rxk5vbkbmqlsnjnvkjz0pkx2076mqnq6jzblpmz8rk29x66kx8s")))) "0l1kxgzch4m8fxiz2hc8fwg56hrvzzspp7n0svnl7i7iycdrgfcj"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("perl" ,perl))) ; for tests `(("perl" ,perl))) ; for tests

View File

@ -11931,7 +11931,7 @@ Emacs minor mode to escape sequences in code.")
(define-public emacs-dashboard (define-public emacs-dashboard
(package (package
(name "emacs-dashboard") (name "emacs-dashboard")
(version "1.2.4") (version "1.5.0")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -11940,11 +11940,22 @@ Emacs minor mode to escape sequences in code.")
(commit version))) (commit version)))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 "1hhh1kfsz87qfmh45wjf2r93rz79rq0vbyxlfrsl02092zjbl1zr")))) (base32 "0ihpcagwgc9qy70lf2y3dvx2bm5h9lnqh4sx6643cr8pp06ysbvq"))))
(build-system emacs-build-system) (build-system emacs-build-system)
(propagated-inputs (propagated-inputs
`(("emacs-page-break-lines" ,emacs-page-break-lines))) `(("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") (home-page "https://github.com/rakanalh/emacs-dashboard")
(synopsis "Startup screen extracted from Spacemacs") (synopsis "Startup screen extracted from Spacemacs")
(description "This package provides an extensible Emacs dashboard, with (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 provided. Those alternative commands are and bound by default to their
corresponding Evil keys.") corresponding Evil keys.")
(license license:expat)))) (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))))

View File

@ -1191,7 +1191,7 @@ play them on systems for which they were never designed!")
(define-public mame (define-public mame
(package (package
(name "mame") (name "mame")
(version "0.209") (version "0.210")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -1201,7 +1201,7 @@ play them on systems for which they were never designed!")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"08qvwmx8wbfkqxiccmcff86dsrlq6wjxf6blnhhrsbzic1ji99bh")) "08c62mc8aajzh44q36qvmrcq404hdzh3i8wwdfnvn0c4w8dbf486"))
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet (snippet
;; Remove bundled libraries. ;; Remove bundled libraries.
@ -1350,6 +1350,7 @@ play them on systems for which they were never designed!")
("fontconfig" ,fontconfig) ("fontconfig" ,fontconfig)
("glm" ,glm) ("glm" ,glm)
("libjpeg" ,libjpeg-8) ;jpeg_read_header argument error in libjpeg-9 ("libjpeg" ,libjpeg-8) ;jpeg_read_header argument error in libjpeg-9
("libxi" ,libxi)
("libxinerama" ,libxinerama) ("libxinerama" ,libxinerama)
("lua" ,lua) ("lua" ,lua)
("portaudio" ,portaudio) ("portaudio" ,portaudio)

View File

@ -3,7 +3,7 @@
;;; Copyright © 2015 Daniel Pimentel <d4n1@member.fsf.org> ;;; Copyright © 2015 Daniel Pimentel <d4n1@member.fsf.org>
;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2015, 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017 ng0 <ng0@n0.is> ;;; 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> ;;; Copyright © 2018 Timo Eisenmann <eisenmann@fn.de>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
@ -184,7 +184,7 @@ removable devices or support for multimedia.")
(define-public terminology (define-public terminology
(package (package
(name "terminology") (name "terminology")
(version "1.4.0") (version "1.4.1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (uri
@ -192,7 +192,7 @@ removable devices or support for multimedia.")
"terminology/terminology-" version ".tar.xz")) "terminology/terminology-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"0q1y7fadj42n23aspx9y8hm4w4xlc316wc3415wnf75ibsx08ngd")) "0mm9v5a94369is3kaarnr3a28wy42wslzi1mcisaidlcldgv7f6p"))
(modules '((guix build utils))) (modules '((guix build utils)))
;; Remove the bundled fonts. ;; Remove the bundled fonts.
(snippet (snippet

View File

@ -345,7 +345,7 @@ do so.")
(define-public electrum (define-public electrum
(package (package
(name "electrum") (name "electrum")
(version "3.3.5") (version "3.3.6")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -353,7 +353,7 @@ do so.")
version "/Electrum-" version "/Electrum-"
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 "1csj0n96zlajnrs39wsazfj5lmy7v7n77cdz56lr8nkmchh6k9z1")) (base32 "0am5ki3z0yvhrz16vp2jjy5fkxxqph0mj9qqpbw3kpql65shykwz"))
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet (snippet
'(begin '(begin
@ -742,14 +742,14 @@ Ledger Blue/Nano S.")
(define-public python-trezor (define-public python-trezor
(package (package
(name "python-trezor") (name "python-trezor")
(version "0.11.2") (version "0.11.3")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri "trezor" version)) (uri (pypi-uri "trezor" version))
(sha256 (sha256
(base32 (base32
"1f0zfki12mnhidkfxpx2lpq1xim8f35i2d64bx9lf4m26xxv9x56")))) "0211m027vlvyqy83kwbjjjxalb04xgf1klv0h0y0f0yhj07516n7"))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
`(#:phases `(#:phases
@ -770,12 +770,13 @@ Ledger Blue/Nano S.")
("python-requests" ,python-requests) ("python-requests" ,python-requests)
("python-typing-extensions" ,python-typing-extensions))) ("python-typing-extensions" ,python-typing-extensions)))
(native-inputs (native-inputs
`(("protobuf" ,protobuf) ; Tests ;; For tests.
("python-black" ,python-black) ; Tests `(("protobuf" ,protobuf)
("python-protobuf" ,python-protobuf) ; Tests ("python-black" ,python-black)
("python-isort" ,python-isort) ; Tests ("python-protobuf" ,python-protobuf)
("python-pyqt" ,python-pyqt) ; Tests ("python-isort" ,python-isort)
("python-pytest" ,python-pytest))) ; Tests ("python-pyqt" ,python-pyqt)
("python-pytest" ,python-pytest)))
(home-page "https://github.com/trezor/python-trezor") (home-page "https://github.com/trezor/python-trezor")
(synopsis "Python library for communicating with TREZOR Hardware Wallet") (synopsis "Python library for communicating with TREZOR Hardware Wallet")
(description "@code{trezor} is a Python library for communicating with (description "@code{trezor} is a Python library for communicating with

View File

@ -616,15 +616,17 @@ languages, plus Greek and Cyrillic.")
(define-public font-gnu-unifont (define-public font-gnu-unifont
(package (package
(name "font-gnu-unifont") (name "font-gnu-unifont")
(version "12.0.01") (version "12.1.02")
(source (origin (source
(origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (list
"mirror://gnu/unifont/unifont-" version "/unifont-" (string-append "http://unifoundry.com/pub/unifont/unifont-"
version ".tar.gz")) version "/unifont-" version ".tar.gz")
(string-append "mirror://gnu/unifont/unifont-"
version "/unifont-" version ".tar.gz")))
(sha256 (sha256
(base32 (base32 "12wdxnlyz5gl5d7h6pazcz8d7h81fwkng1xrayxsgrzh6bqdq4p8"))))
"059j82z6z4wqyy3261ns0zg2b2vh2wvxxfbsa9hra9xasism49vb"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(outputs '("out" ; TrueType version (outputs '("out" ; TrueType version
"pcf" ; PCF (bitmap) version "pcf" ; PCF (bitmap) version

View File

@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org> ;;; Copyright © 2016 Danny Milosavljevic <dannym@scratchpost.org>
;;; Copyright © 2016, 2017 Theodoros Foradis <theodoros@foradis.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> ;;; Copyright © 2019 Amin Bandali <bandali@gnu.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
@ -301,14 +301,14 @@ Includes the actual FTDI connector.")
(define-public gtkwave (define-public gtkwave
(package (package
(name "gtkwave") (name "gtkwave")
(version "3.3.100") (version "3.3.101")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "http://gtkwave.sourceforge.net/" (uri (string-append "http://gtkwave.sourceforge.net/"
"gtkwave-" version ".tar.gz")) "gtkwave-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1z60i5nh8dz8j9ii63fwaw7k0p3x0scp91478cxmdv4xhp4njlxa")))) "1j6capxwgi8aj3sgqg1r7161icni9y8y93g1rl3bzd3s40jcyhsz"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("gperf" ,gperf) `(("gperf" ,gperf)

View File

@ -435,7 +435,7 @@ support.")
(define-public tiled (define-public tiled
(package (package
(name "tiled") (name "tiled")
(version "1.2.3") (version "1.2.4")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -444,7 +444,7 @@ support.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"1nfyigfkl10n9r82p1qxhpr09jn2kwalh9n5r209bcaj8dxspph8")))) "04v738h298pvcwb70mwd1r2yj7578f6gkfzs0165j9fqy7avwm18"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
`(("qtbase" ,qtbase) `(("qtbase" ,qtbase)
@ -465,7 +465,7 @@ support.")
(let ((out (assoc-ref outputs "out"))) (let ((out (assoc-ref outputs "out")))
(invoke "qmake" (invoke "qmake"
(string-append "PREFIX=" out)))))))) (string-append "PREFIX=" out))))))))
(home-page "http://www.mapeditor.org/") (home-page "https://www.mapeditor.org/")
(synopsis "Tile map editor") (synopsis "Tile map editor")
(description (description
"Tiled is a general purpose tile map editor. It is meant to be used for "Tiled is a general purpose tile map editor. It is meant to be used for
@ -684,17 +684,15 @@ etc.")
(define-public allegro (define-public allegro
(package (package
(name "allegro") (name "allegro")
(version "5.2.4.0") (version "5.2.5.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://github.com/liballeg/allegro5/releases" (uri (string-append "https://github.com/liballeg/allegro5/releases"
"/download/" version "/allegro-" "/download/" version "/allegro-"
version ".tar.gz")) version ".tar.gz"))
(patches (search-patches
"allegro-mesa-18.2.5-and-later.patch"))
(sha256 (sha256
(base32 (base32
"1w9a5yqi5q03b2qvmx5ff90paz0xbr9cy7i7f0xiqa65ava66q9l")))) "06dpkfnac8w3pq36834nn2iij3ajz6prladqd0w92lq39aiqv5jr"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments `(#:tests? #f)) ; there are no tests (arguments `(#:tests? #f)) ; there are no tests
(inputs (inputs

View File

@ -40,6 +40,7 @@
;;; Copyright © 2019 Oleg Pykhalov <go.wigust@gmail.com> ;;; Copyright © 2019 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com> ;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2019 Jesse Gibbons <jgibbons2357+guix@gmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; 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.") the World and demonstrating that he is even more evil than his brother Vlad.")
;; Drascula uses a BSD-like license. ;; Drascula uses a BSD-like license.
(license (license:non-copyleft "file:///readme.txt")))) (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+)))

View File

@ -176,14 +176,14 @@ color, font attributes (weight, posture), or underlining.")
(define-public po4a (define-public po4a
(package (package
(name "po4a") (name "po4a")
(version "0.55") (version "0.56")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://github.com/mquinson/po4a/releases/download/v" (uri (string-append "https://github.com/mquinson/po4a/releases/download/v"
version "/po4a-" version ".tar.gz")) version "/po4a-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1qss4q5df3nsydsbggb7gg50bn0kdxq5wn8riqm9zwkiq6a4bifg")))) "0kyhww0yw4q0m4vj8vil2wsf6sn4hidh8mqz2gjrq7gpdf83cmnr"))))
(build-system perl-build-system) (build-system perl-build-system)
(arguments (arguments
`(#:phases `(#:phases

View File

@ -49,7 +49,7 @@
(define-public babl (define-public babl
(package (package
(name "babl") (name "babl")
(version "0.1.62") (version "0.1.64")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (list (string-append "https://download.gimp.org/pub/babl/" (uri (list (string-append "https://download.gimp.org/pub/babl/"
@ -63,7 +63,7 @@
"/babl-" version ".tar.bz2"))) "/babl-" version ".tar.bz2")))
(sha256 (sha256
(base32 (base32
"047msfzj8v4sfl61a2xhd69r9rh2pjq4lzpk3j10ijyv9qbry9yw")))) "1gsqs5spgla86y9g11riryvw7015asik7y22maainl83nhq4sxxv"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(home-page "http://gegl.org/babl/") (home-page "http://gegl.org/babl/")
(synopsis "Image pixel format conversion library") (synopsis "Image pixel format conversion library")

View File

@ -3941,26 +3941,15 @@ which can read a large number of file formats.")
(define-public rhythmbox (define-public rhythmbox
(package (package
(name "rhythmbox") (name "rhythmbox")
(version "3.4.2") (version "3.4.3")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/" (uri (string-append "mirror://gnome/sources/" name "/"
(version-major+minor version) "/" (version-major+minor version) "/"
name "-" version ".tar.xz")) 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 (sha256
(base32 (base32
"06n87xgf927djmv1vshal84nqx7g8nwgljza3g2vydhy7g2n1csq"))))) "1yx3n7p9vmv23jsv98fxwq95n78awdxqm8idhyhxx2d6vk4w1hgx"))))
(sha256
(base32
"0hzcns8gf5yb0rm4ss8jd8qzarcaplp5cylk6plwilsqfvxj4xn2"))))
(build-system glib-or-gtk-build-system) (build-system glib-or-gtk-build-system)
(arguments (arguments
`(#:configure-flags `(#:configure-flags

View File

@ -5,6 +5,7 @@
;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2016 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 rsiddharth <s@ricketyspace.net> ;;; Copyright © 2017 rsiddharth <s@ricketyspace.net>
;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2019 Robert Vollmert <rob@vllmrt.net>
;;; ;;;
;;; This file is part of GNU Guix. ;;; 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 (define-public ghc-http-types
(package (package
(name "ghc-http-types") (name "ghc-http-types")
(version "0.12.1") (version "0.12.3")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -126,7 +127,7 @@ requests, and the library is intended for implementing Ajax APIs.")
"http-types-" version ".tar.gz")) "http-types-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1wv9k6nlvkdsxwlr7gaynphvzmvi5211gvwq96mbcxgk51a739rz")))) "05j00b9nqmwh9zaq9y9x50k81v2pd3j7a71kd91zlnbl8xk4m2jf"))))
(build-system haskell-build-system) (build-system haskell-build-system)
(native-inputs (native-inputs
`(("ghc-doctest" ,ghc-doctest) `(("ghc-doctest" ,ghc-doctest)
@ -136,7 +137,6 @@ requests, and the library is intended for implementing Ajax APIs.")
("hspec-discover" ,hspec-discover))) ("hspec-discover" ,hspec-discover)))
(inputs (inputs
`(("ghc-case-insensitive" ,ghc-case-insensitive) `(("ghc-case-insensitive" ,ghc-case-insensitive)
("ghc-blaze-builder" ,ghc-blaze-builder)
("ghc-text" ,ghc-text))) ("ghc-text" ,ghc-text)))
(home-page "https://github.com/aristidb/http-types") (home-page "https://github.com/aristidb/http-types")
(synopsis "Generic HTTP types for Haskell") (synopsis "Generic HTTP types for Haskell")
@ -550,7 +550,7 @@ transfers.")
(define-public ghc-warp (define-public ghc-warp
(package (package
(name "ghc-warp") (name "ghc-warp")
(version "3.2.23") (version "3.2.27")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -558,8 +558,7 @@ transfers.")
"warp-" version "/" "warp-" version "warp-" version "/" "warp-" version
".tar.gz")) ".tar.gz"))
(sha256 (sha256
(base32 (base32 "0p2w88q0zd55ms20qylipbi0qzbf324i9r8b9qqxyds5yc1anq76"))))
"12v9qhi4hyp0sb90yddsax16jj7x47nmqwn53sv7b5nszcxgzam0"))))
(build-system haskell-build-system) (build-system haskell-build-system)
(inputs (inputs
`(("ghc-async" ,ghc-async) `(("ghc-async" ,ghc-async)

View File

@ -1805,7 +1805,7 @@ version 1.3).")
(define-public ghc-streaming-commons (define-public ghc-streaming-commons
(package (package
(name "ghc-streaming-commons") (name "ghc-streaming-commons")
(version "0.2.1.0") (version "0.2.1.1")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -1814,7 +1814,7 @@ version 1.3).")
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"13fn6qmpiggwpn8lczyydgp77cyzfypwds7wxskrwir4i5cgxlfq")))) "1lmyx3wkjsayhy5yilzvy0kf8qwmycwlk26r1d8f3cxbfhkr7s52"))))
(build-system haskell-build-system) (build-system haskell-build-system)
(inputs (inputs
`(("ghc-async" ,ghc-async) `(("ghc-async" ,ghc-async)

View File

@ -9,6 +9,7 @@
;;; Copyright © 2017 nee <nee-git@hidamari.blue> ;;; Copyright © 2017 nee <nee-git@hidamari.blue>
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; ;;;
;;; This file is part of GNU Guix. ;;; 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 a comic and manga reader. It supports a variety of container formats
including CBZ, CB7, CBT, LHA.") including CBZ, CB7, CBT, LHA.")
(license license:gpl2+))) (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+)))

View File

@ -2559,7 +2559,7 @@ compliance.")
(define-public wireless-regdb (define-public wireless-regdb
(package (package
(name "wireless-regdb") (name "wireless-regdb")
(version "2017.03.07") (version "2019.06.03")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -2567,7 +2567,7 @@ compliance.")
"wireless-regdb-" version ".tar.xz")) "wireless-regdb-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"1f9mcp78sdd4sci6v32vxfcl1rfjpv205jisz1p93kkfnaisy7ip")) "1gslvh0aqdkv48jyr2ddq153mw28i7qz2ybrjj9qvkk3dgc7x4fd"))
;; We're building 'regulatory.bin' by ourselves. ;; We're building 'regulatory.bin' by ourselves.
(snippet '(begin (snippet '(begin
@ -2575,13 +2575,25 @@ compliance.")
#t)))) #t))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:phases (modify-phases %standard-phases '(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'gzip-determinism (add-after 'unpack 'gzip-determinism
(lambda _ (lambda _
(substitute* "Makefile" (substitute* "Makefile"
(("gzip") "gzip --no-name")) (("gzip") "gzip --no-name"))
#t)) #t))
(delete 'configure)) (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 ;; The 'all' target of the makefile depends on $(REGDB_CHANGED), which
;; is computed and can be equal to 'maintainer-clean'; when that ;; is computed and can be equal to 'maintainer-clean'; when that
@ -2590,18 +2602,21 @@ compliance.")
#:parallel-build? #f #:parallel-build? #f
#:tests? #f ; no tests #:tests? #f ; no tests
#:make-flags (let ((out (assoc-ref %outputs "out"))) #:make-flags
(let ((out (assoc-ref %outputs "out")))
(list (string-append "PREFIX=" out) (list (string-append "PREFIX=" out)
(string-append "LSB_ID=Guix") (string-append "FIRMWARE_PATH=$(PREFIX)/lib/firmware")
(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 ;; Leave this empty so that db2bin.py doesn't try to sign
;; to sign 'regulatory.bin'. This allows us to ;; regulatory.bin. This allows us to avoid managing a key
;; avoid managing a key pair for the whole distro. ;; pair for the whole distribution.
(string-append "REGDB_PRIVKEY="))))) (string-append "REGDB_PRIVKEY=")
(native-inputs `(("python" ,python-2))) ;; 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 (home-page
"https://wireless.wiki.kernel.org/en/developers/regulatory/wireless-regdb") "https://wireless.wiki.kernel.org/en/developers/regulatory/wireless-regdb")
(synopsis "Wireless regulatory database") (synopsis "Wireless regulatory database")
@ -2884,12 +2899,16 @@ thanks to the use of namespaces.")
(substitute* "bin/singularity.in" (substitute* "bin/singularity.in"
(("^PATH=.*" all) (("^PATH=.*" all)
(string-append "#" all "\n"))) (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)))) #t))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:configure-flags `(#:configure-flags '("--localstatedir=/var")
(list "--disable-suid"
"--localstatedir=/var")
#:phases #:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(add-after 'unpack 'patch-reference-to-squashfs-tools (add-after 'unpack 'patch-reference-to-squashfs-tools

View File

@ -847,14 +847,14 @@ invoking @command{notifymuch} from the post-new hook.")
(define-public notmuch (define-public notmuch
(package (package
(name "notmuch") (name "notmuch")
(version "0.28.4") (version "0.29")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://notmuchmail.org/releases/notmuch-" (uri (string-append "https://notmuchmail.org/releases/notmuch-"
version ".tar.gz")) version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"1jjnhs4xs4gksvg0a9qn68rxrj41im5bh58snka2pkj20nxwmcds")))) "0rg4jp0wlsham76rx9fmlpmcbv3n9vsd81vrzqvh6jrwlnmjds88"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:modules ((guix build gnu-build-system) `(#:modules ((guix build gnu-build-system)

View File

@ -1315,16 +1315,16 @@ Editor. It is compatible with Power Tab Editor 1.7 and Guitar Pro.")
(define-public jalv-select (define-public jalv-select
(package (package
(name "jalv-select") (name "jalv-select")
(version "0.8") (version "1.3")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
(url "https://github.com/brummer10/jalv_select.git") (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)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"0gqh768sbvn9ffyx1vqg9i57py9x9v4l65bk6wjsvgga4d7m83k1")))) "15yanq1wra0hyh6x72ji7pk562iddg476g3vksj495x91zhnl6vm"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:make-flags `(#:make-flags
@ -1337,8 +1337,6 @@ Editor. It is compatible with Power Tab Editor 1.7 and Guitar Pro.")
(substitute* "jalv.select.cpp" (substitute* "jalv.select.cpp"
(("echo \\$PATH.*tr ':'.*xargs ls") (("echo \\$PATH.*tr ':'.*xargs ls")
(string-append "ls -1 " (assoc-ref inputs "jalv") "/bin"))) (string-append "ls -1 " (assoc-ref inputs "jalv") "/bin")))
(substitute* "jalv.select.h"
(("gtkmm.h") "gtkmm-2.4/gtkmm.h"))
#t)) #t))
(add-before 'reset-gzip-timestamps 'make-manpages-writable (add-before 'reset-gzip-timestamps 'make-manpages-writable
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)

View File

@ -697,7 +697,8 @@ written in Objective Caml.")
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(format #t "~a~%" (find-files "." ".*.so")) (format #t "~a~%" (find-files "." ".*.so"))
(let ((stubdir (string-append (assoc-ref outputs "out") (let ((stubdir (string-append (assoc-ref outputs "out")
"/lib/ocaml/site-lib"))) "/lib/ocaml/site-lib/stublibs")))
(delete-file stubdir)
(mkdir-p stubdir) (mkdir-p stubdir)
(install-file "src/dllnums.so" stubdir)) (install-file "src/dllnums.so" stubdir))
#t))))) #t)))))
@ -1626,7 +1627,13 @@ spans without being subject to operating system calendar time adjustments.")
"/lib/ocaml/site-lib/cmdliner")) "/lib/ocaml/site-lib/cmdliner"))
#:phases #:phases
(modify-phases %standard-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") (home-page "http://erratique.ch/software/cmdliner")
(synopsis "Declarative definition of command line interfaces for OCaml") (synopsis "Declarative definition of command line interfaces for OCaml")
(description "Cmdliner is a module for the declarative definition of command (description "Cmdliner is a module for the declarative definition of command
@ -2290,6 +2297,12 @@ many additional enhancements, including:
`(#:phases `(#:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(delete 'check) ; tests are run by the build phase (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 (replace 'build
(lambda* (#:key inputs outputs #:allow-other-keys) (lambda* (#:key inputs outputs #:allow-other-keys)
(let ((files (let ((files

View File

@ -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

View File

@ -802,7 +802,18 @@ is commonly written.")
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (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) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("pkg-config" ,pkg-config))) `(("pkg-config" ,pkg-config)))

View File

@ -2,7 +2,7 @@
;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2015 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2015 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Eric Bavier <bavier@member.fsf.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. ;;; This file is part of GNU Guix.
;;; ;;;
@ -87,14 +87,14 @@ slsh, which is part of the S-Lang distribution.")
(define-public newt (define-public newt
(package (package
(name "newt") (name "newt")
(version "0.52.20") (version "0.52.21")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://pagure.io/releases/" (uri (string-append "https://pagure.io/releases/newt/"
name "/" name "-" version ".tar.gz")) "newt-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1g3dpfnvaw7vljbr7nzq1rl88d6r8cmrvvng9inphgzwxxmvlrld")))) "0cdvbancr7y4nrj8257y5n45hmhizr8isynagy4fpsnpammv8pi6"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(outputs '("out" "python")) (outputs '("out" "python"))
(inputs (inputs

View File

@ -55,14 +55,14 @@
(define-public ceph (define-public ceph
(package (package
(name "ceph") (name "ceph")
(version "13.2.5") (version "13.2.6")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://download.ceph.com/tarballs/ceph-" (uri (string-append "https://download.ceph.com/tarballs/ceph-"
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"0jbs6l763clbqnq2s5jksn44yf71rhcnk85cw64fqvmv0r4ch71n")) "13f5qs7jpxprplk4irwlx90mc9gvm48fvd3q471xcqc3n6z1qywz"))
(patches (patches
(search-patches "ceph-skip-unittest_blockdev.patch" (search-patches "ceph-skip-unittest_blockdev.patch"
"ceph-skip-collect-sys-info-test.patch" "ceph-skip-collect-sys-info-test.patch"

View File

@ -140,7 +140,7 @@ windows.")
(define-public tmux-xpanes (define-public tmux-xpanes
(package (package
(name "tmux-xpanes") (name "tmux-xpanes")
(version "4.1.0") (version "4.1.1")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -149,7 +149,7 @@ windows.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"11yz6rh2ckd1z8q80n8giv2gcz2i22fgf3pnfxq96qrzflb0d96a")))) "13q02vdk229chgbn547wwv29cj4njvz02lmw840g8qmwh73qb2pi"))))
(build-system trivial-build-system) (build-system trivial-build-system)
(inputs (inputs
`(("bash" ,bash))) `(("bash" ,bash)))

View File

@ -146,14 +146,14 @@ as well as the classic centralized workflow.")
(name "git") (name "git")
;; XXX When updating Git, check if the special 'git-source' input to cgit ;; XXX When updating Git, check if the special 'git-source' input to cgit
;; needs to be updated as well. ;; needs to be updated as well.
(version "2.21.0") (version "2.22.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://kernel.org/software/scm/git/git-" (uri (string-append "mirror://kernel.org/software/scm/git/git-"
version ".tar.xz")) version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"0a0d0b07rmvs985zpndxxy0vzr0vq53kq5kyd68iv6gf8gkirjwc")))) "17zj6jwx3s6bybd290f1mj5iym1r64560rmnf0p63x4akxclp7hm"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("native-perl" ,perl) `(("native-perl" ,perl)
@ -166,7 +166,7 @@ as well as the classic centralized workflow.")
version ".tar.xz")) version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"0lgcynqbjmfsvhfk14jvqyvb1xiyqgkgznb707vha38wjcjdqs1g")))) "0fpfqw0h4g4v478fscic8z714i0ls5w7946vzhmq31lf7nizsb2f"))))
;; For subtree documentation. ;; For subtree documentation.
("asciidoc" ,asciidoc) ("asciidoc" ,asciidoc)
("docbook-xsl" ,docbook-xsl) ("docbook-xsl" ,docbook-xsl)

View File

@ -671,14 +671,14 @@ SMPTE 314M.")
(define-public libmatroska (define-public libmatroska
(package (package
(name "libmatroska") (name "libmatroska")
(version "1.5.0") (version "1.5.2")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://dl.matroska.org/downloads/" (uri (string-append "https://dl.matroska.org/downloads/"
"libmatroska/libmatroska-" version ".tar.xz")) "libmatroska/libmatroska-" version ".tar.xz"))
(sha256 (sha256
(base32 "07md2gvy3x92ym2k449740mdji6mhknlajkndnhi507s4wcdrvzh")))) (base32 "0qn9lfs0877wbv581yxw2gywxywxpvwslc5q07q4f7bqpyzxxiha"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(inputs (inputs
`(("libebml" ,libebml))) `(("libebml" ,libebml)))
@ -1013,7 +1013,7 @@ videoformats depend on the configuration flags of ffmpeg.")
(define-public vlc (define-public vlc
(package (package
(name "vlc") (name "vlc")
(version "3.0.6") (version "3.0.7")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -1022,7 +1022,7 @@ videoformats depend on the configuration flags of ffmpeg.")
"/vlc-" version ".tar.xz")) "/vlc-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"1lvyyahv6g9zv7m5g5qinyrwmw47zdsd5ysimb862j7kw15nvh8q")))) "05irswyg9acflxzy4vfyvgi643r72vsvagv118zawjqg1wagxdaw"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
`(("flex" ,flex) `(("flex" ,flex)
@ -2192,14 +2192,14 @@ tools, XML authoring components, and an extensible plug-in based API.")
(define-public v4l-utils (define-public v4l-utils
(package (package
(name "v4l-utils") (name "v4l-utils")
(version "1.12.5") (version "1.16.6")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://linuxtv.org/downloads/v4l-utils" (uri (string-append "https://linuxtv.org/downloads/v4l-utils"
"/v4l-utils-" version ".tar.bz2")) "/v4l-utils-" version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"03g2b4rivrilimcp57mwrlsa3qvrxmk4sza08mygwmqbvcnic606")))) "1bkqlrizx0j2rd6ybam2x17bjrpwzl4v4szmnzm3cmixis3w3npr"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:configure-flags '(#:configure-flags
@ -2858,7 +2858,7 @@ many codecs and formats supported by libmediainfo.")
(define-public livemedia-utils (define-public livemedia-utils
(package (package
(name "livemedia-utils") (name "livemedia-utils")
(version "2019.03.06") (version "2019.05.29")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -2866,7 +2866,7 @@ many codecs and formats supported by libmediainfo.")
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1gasdl95yjabv811knkmy5laj21a54z1jdfq36jdj984k1nw5l0b")))) "08i63jr8ihn1xiq5z5n3yls3yz6li5sg0s454l56p5bcvbrw81my"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
'(#:tests? #f ; no tests '(#:tests? #f ; no tests

View File

@ -271,7 +271,7 @@ API.")
(define-public shaderc (define-public shaderc
(package (package
(name "shaderc") (name "shaderc")
(version "2018.0") (version "2019.0")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -281,7 +281,7 @@ API.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"0qigmj0riw43pgjn5f6kpvk72fajssz1lc2aiqib5qvmj9rqq3hl")))) "1l5mmyxhzsbp0a6y2d86i8jmf46c6bjgjkdgkr5l8hmhflmm7gi2"))))
(build-system meson-build-system) (build-system meson-build-system)
(arguments (arguments
`(#:tests? #f ; FIXME: Tests fail. `(#:tests? #f ; FIXME: Tests fail.

View File

@ -1140,7 +1140,7 @@ functionality to display information about the most commonly used services.")
(define-public wlroots (define-public wlroots
(package (package
(name "wlroots") (name "wlroots")
(version "0.5.0") (version "0.6.0")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -1149,7 +1149,7 @@ functionality to display information about the most commonly used services.")
(commit version))) (commit version)))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 "1phiidyddzgaxy4gbqwmykxn0y8za6y5mp66l9dpd9i6fml153yq")))) (base32 "1rdcmll5b8w242n6yfjpsaprq280ck2jmbz46dxndhignxgda7k4"))))
(build-system meson-build-system) (build-system meson-build-system)
(arguments (arguments
`(#:configure-flags '("-Dlogind-provider=elogind") `(#:configure-flags '("-Dlogind-provider=elogind")
@ -1185,7 +1185,7 @@ modules for building a Wayland compositor.")
(define-public sway (define-public sway
(package (package
(name "sway") (name "sway")
(version "1.0") (version "1.1.1")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -1194,7 +1194,7 @@ modules for building a Wayland compositor.")
(commit version))) (commit version)))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 "09cndc2nl39d3l7g5634xp0pxcz60pvc5277mfw89r22mh0j78rx")))) (base32 "0yhn9zdg9mzfhn97c440lk3pw6122nrhx0is5sqmvgr6p814f776"))))
(build-system meson-build-system) (build-system meson-build-system)
(arguments (arguments
`(#:phases `(#:phases
@ -1231,7 +1231,7 @@ modules for building a Wayland compositor.")
(define-public swayidle (define-public swayidle
(package (package
(name "swayidle") (name "swayidle")
(version "1.2") (version "1.3")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -1240,7 +1240,7 @@ modules for building a Wayland compositor.")
(commit version))) (commit version)))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 "0b65flajwn2i6k2kdxxgw25w7ikzzmm595f4j5x1wac1rb0yah9w")))) (base32 "04agcbhc473jkk7npb40i94ny8naykxzpjcw2lvl05kxv65y5d9v"))))
(build-system meson-build-system) (build-system meson-build-system)
(inputs `(("wayland" ,wayland))) (inputs `(("wayland" ,wayland)))
(native-inputs `(("pkg-config" ,pkg-config) (native-inputs `(("pkg-config" ,pkg-config)
@ -1254,7 +1254,7 @@ modules for building a Wayland compositor.")
(define-public swaylock (define-public swaylock
(package (package
(name "swaylock") (name "swaylock")
(version "1.3") (version "1.4")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -1263,7 +1263,7 @@ modules for building a Wayland compositor.")
(commit version))) (commit version)))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 "093nv1y9wyg48rfxhd36qdljjry57v1vkzrlc38mkf6zvsq8j7wb")))) (base32 "1ii9ql1mxkk2z69dv6bg1x22nl3a46iww764wqjiv78x08xpk982"))))
(build-system meson-build-system) (build-system meson-build-system)
(inputs `(("cairo" ,cairo) (inputs `(("cairo" ,cairo)
("gdk-pixbuf" ,gdk-pixbuf) ("gdk-pixbuf" ,gdk-pixbuf)
@ -1279,3 +1279,29 @@ modules for building a Wayland compositor.")
(synopsis "Screen locking utility for Wayland compositors") (synopsis "Screen locking utility for Wayland compositors")
(description "Swaylock is a screen locking utility for Wayland compositors.") (description "Swaylock is a screen locking utility for Wayland compositors.")
(license license:expat))) ; MIT license (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

View File

@ -85,14 +85,14 @@ things the parser might find in the XML document (like start tags).")
(define-public libebml (define-public libebml
(package (package
(name "libebml") (name "libebml")
(version "1.3.7") (version "1.3.9")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://dl.matroska.org/downloads/libebml/" (uri (string-append "https://dl.matroska.org/downloads/libebml/"
"libebml-" version ".tar.xz")) "libebml-" version ".tar.xz"))
(sha256 (sha256
(base32 "1x79b35dj5d2x7xf7ql83w2cr0v5n2vsd08q6y6grmw4yn3lq973")))) (base32 "0j65r6i7s2k67c8f9wa653mqpxmfhdl67kjxrc1n5910ig6wddn6"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments (arguments
`(#:configure-flags `(#:configure-flags
@ -1080,7 +1080,7 @@ C++ programming language.")
(define-public tinyxml2 (define-public tinyxml2
(package (package
(name "tinyxml2") (name "tinyxml2")
(version "4.0.1") (version "7.0.1")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -1089,10 +1089,8 @@ C++ programming language.")
(commit version))) (commit version)))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 "1a0skfi8rzk53qcxbv88qlvhlqzvsvg4hm20dnx4zw7vrn6anr9y")))) (base32 "1sf6sch1kawrna2f9dc8f4xl836acqcddkghzdib0s7dl48m9r7m"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments
`(#:tests? #f)) ; no tests
(synopsis "Small XML parser for C++") (synopsis "Small XML parser for C++")
(description "TinyXML2 is a small and simple XML parsing library for the (description "TinyXML2 is a small and simple XML parsing library for the
C++ programming language.") C++ programming language.")

54
gnu/services/auditd.scm Normal file
View File

@ -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))))

View File

@ -24,12 +24,14 @@
#:use-module (gnu services shepherd) #:use-module (gnu services shepherd)
#:use-module (gnu system shadow) #:use-module (gnu system shadow)
#:use-module (gnu packages docker) #:use-module (gnu packages docker)
#:use-module (gnu packages linux) ;singularity
#:use-module (guix records) #:use-module (guix records)
#:use-module (guix gexp) #:use-module (guix gexp)
#:use-module (guix packages) #:use-module (guix packages)
#:export (docker-configuration #:export (docker-configuration
docker-service-type)) docker-service-type
singularity-service-type))
;;; We're not using serialize-configuration, but we must define this because ;;; We're not using serialize-configuration, but we must define this because
;;; the define-configuration macro validates it exists. ;;; the define-configuration macro validates it exists.
@ -120,3 +122,60 @@ bundles in Docker containers.")
(service-extension account-service-type (service-extension account-service-type
(const %docker-accounts)))) (const %docker-accounts))))
(default-value (docker-configuration)))) (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)))

View File

@ -85,20 +85,6 @@ or #f on failure."
(_ (_
#f))) #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 (define* (single-locale-directory locales
#:key (libc (canonical-package glibc))) #:key (libc (canonical-package glibc)))
"Return a directory containing all of LOCALES for LIBC compiled. "Return a directory containing all of LOCALES for LIBC compiled.
@ -110,17 +96,29 @@ of LIBC."
(version-major+minor (package-version libc))) (version-major+minor (package-version libc)))
(define build (define build
(with-imported-modules (source-module-closure
'((gnu build locale)))
#~(begin #~(begin
(mkdir #$output) (use-modules (gnu build locale))
(mkdir #$output)
(mkdir (string-append #$output "/" #$version)) (mkdir (string-append #$output "/" #$version))
;; 'localedef' executes 'gzip' to access compressed locale sources. ;; 'localedef' executes 'gzip' to access compressed locale sources.
(setenv "PATH" (string-append #$gzip "/bin")) (setenv "PATH"
(string-append #$gzip "/bin:" #$libc "/bin"))
(exit (setvbuf (current-output-port) 'line)
(and #$@(map (cut localedef-command <> #:libc libc) (setvbuf (current-error-port) 'line)
locales))))) (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)) (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." locale supported by GLIBC."
(define build (define build
(with-imported-modules (source-module-closure (with-imported-modules (source-module-closure
'((guix build gnu-build-system))) '((guix build gnu-build-system)
(gnu build locale)))
#~(begin #~(begin
(use-modules (guix build gnu-build-system) (use-modules (guix build gnu-build-system)
(srfi srfi-1) (gnu build locale)
(ice-9 rdelim)
(ice-9 match)
(ice-9 regex)
(ice-9 pretty-print)) (ice-9 pretty-print))
(define unpack (define unpack
(assq-ref %standard-phases '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" (setenv "PATH"
(string-append #+(file-append tar "/bin") ":" (string-append #+(file-append tar "/bin") ":"

View File

@ -101,7 +101,7 @@ inside %DOCKER-OS."
marionette)) marionette))
(test-equal "Load docker image and run it" (test-equal "Load docker image and run it"
"hello world" '("hello world" "hi!")
(marionette-eval (marionette-eval
`(begin `(begin
(define slurp (define slurp
@ -117,12 +117,16 @@ inside %DOCKER-OS."
(repository&tag (string-drop raw-line (repository&tag (string-drop raw-line
(string-length (string-length
"Loaded image: "))) "Loaded image: ")))
(response (slurp (response1 (slurp
,(string-append #$docker-cli "/bin/docker") ,(string-append #$docker-cli "/bin/docker")
"run" "--entrypoint" "bin/Guile" "run" "--entrypoint" "bin/Guile"
repository&tag repository&tag
"/aa.scm"))) "/aa.scm"))
response)) (response2 (slurp ;default entry point
,(string-append #$docker-cli "/bin/docker")
"run" repository&tag
"-c" "(display \"hi!\")")))
(list response1 response2)))
marionette)) marionette))
(test-end) (test-end)
@ -161,6 +165,7 @@ standard output device and then enters a new line.")
(tarball (docker-image "docker-pack" profile (tarball (docker-image "docker-pack" profile
#:symlinks '(("/bin/Guile" -> "bin/guile") #:symlinks '(("/bin/Guile" -> "bin/guile")
("aa.scm" -> "a.scm")) ("aa.scm" -> "a.scm"))
#:entry-point "bin/guile"
#:localstatedir? #t))) #:localstatedir? #t)))
(run-docker-test tarball))) (run-docker-test tarball)))

137
gnu/tests/singularity.scm Normal file
View File

@ -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))))

View File

@ -81,7 +81,11 @@
fdatasync fdatasync
pivot-root pivot-root
scandir* scandir*
fcntl-flock fcntl-flock
lock-file
unlock-file
with-file-lock
set-thread-name set-thread-name
thread-name thread-name
@ -1067,6 +1071,42 @@ exception if it's already taken."
;; Presumably we got EAGAIN or so. ;; Presumably we got EAGAIN or so.
(throw 'flock-error err)))))) (throw 'flock-error err))))))
(define (lock-file file)
"Wait and acquire an exclusive lock on FILE. Return an open port."
(let ((port (open-file file "w0")))
(fcntl-flock port 'write-lock)
port))
(define (unlock-file port)
"Unlock PORT, a port returned by 'lock-file'."
(fcntl-flock port 'unlock)
(close-port port)
#t)
(define (call-with-file-lock file thunk)
(let ((port (catch 'system-error
(lambda ()
(lock-file file))
(lambda args
;; When using the statically-linked Guile in the initrd,
;; 'fcntl-flock' returns ENOSYS unconditionally. Ignore
;; that error since we're typically the only process running
;; at this point.
(if (= ENOSYS (system-error-errno args))
#f
(apply throw args))))))
(dynamic-wind
(lambda ()
#t)
thunk
(lambda ()
(when port
(unlock-file port))))))
(define-syntax-rule (with-file-lock file exp ...)
"Wait to acquire a lock on FILE and evaluate EXP in that context."
(call-with-file-lock file (lambda () exp ...)))
;;; ;;;
;;; Miscellaneous, aka. 'prctl'. ;;; Miscellaneous, aka. 'prctl'.

View File

@ -185,9 +185,7 @@ are relative to DIRECTORY, which is not necessarily the root of the checkout."
(directory (string-append (canonicalize-path directory) "/")) (directory (string-append (canonicalize-path directory) "/"))
(dot-git (repository-discover directory)) (dot-git (repository-discover directory))
(repository (repository-open dot-git)) (repository (repository-open dot-git))
;; XXX: This procedure is mistakenly private in Guile-Git 0.1.0. (workdir (repository-working-directory repository))
(workdir ((@@ (git repository) repository-working-directory)
repository))
(head (repository-head repository)) (head (repository-head repository))
(oid (reference-target head)) (oid (reference-target head))
(commit (commit-lookup repository oid)) (commit (commit-lookup repository oid))

View File

@ -94,12 +94,13 @@ when evaluated."
(map (match-lambda (map (match-lambda
((label pkg . out) ((label pkg . out)
(let ((mod (package-module-name pkg))) (let ((mod (package-module-name pkg)))
(list label (cons* label
;; FIXME: using '@ certainly isn't pretty, but it ;; FIXME: using '@ certainly isn't pretty, but it
;; avoids having to import the individual package ;; avoids having to import the individual package
;; modules. ;; modules.
(list 'unquote (list 'unquote
(list '@ mod (variable-name pkg mod))))))) (list '@ mod (variable-name pkg mod)))
out))))
lsts))) lsts)))
(let ((name (package-name package)) (let ((name (package-name package))

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2018 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2012, 2013, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Jelle Licht <jlicht@fsfe.org> ;;; Copyright © 2016 Jelle Licht <jlicht@fsfe.org>
;;; Copyright © 2016 David Craven <david@craven.ch> ;;; Copyright © 2016 David Craven <david@craven.ch>
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
@ -287,7 +287,7 @@ package value."
(map (lambda (spec) (map (lambda (spec)
(let-values (((pkg out) (specification->package+output spec))) (let-values (((pkg out) (specification->package+output spec)))
(match out (match out
(("out") (list (package-name pkg) pkg)) ("out" (list (package-name pkg) pkg))
(_ (list (package-name pkg) pkg out))))) (_ (list (package-name pkg) pkg out)))))
specs)) specs))

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2018 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
@ -76,16 +76,6 @@
;; most of the daemon is in Scheme :-)). But note that we do use a couple of ;; most of the daemon is in Scheme :-)). But note that we do use a couple of
;; RPCs for functionality not available otherwise, like 'valid-path?'. ;; RPCs for functionality not available otherwise, like 'valid-path?'.
(define (lock-store-file file)
"Acquire exclusive access to FILE, a store file."
(call-with-output-file (string-append file ".lock")
(cut fcntl-flock <> 'write-lock)))
(define (unlock-store-file file)
"Release access to FILE."
(call-with-input-file (string-append file ".lock")
(cut fcntl-flock <> 'unlock)))
(define* (finalize-store-file source target (define* (finalize-store-file source target
#:key (references '()) deriver (lock? #t)) #:key (references '()) deriver (lock? #t))
"Rename SOURCE to TARGET and register TARGET as a valid store item, with "Rename SOURCE to TARGET and register TARGET as a valid store item, with
@ -94,8 +84,8 @@ before attempting to register it; otherwise, assume TARGET's locks are already
held." held."
(with-database %default-database-file db (with-database %default-database-file db
(unless (path-id db target) (unless (path-id db target)
(when lock? (let ((lock (and lock?
(lock-store-file target)) (lock-file (string-append target ".lock")))))
(unless (path-id db target) (unless (path-id db target)
;; If FILE already exists, delete it (it's invalid anyway.) ;; If FILE already exists, delete it (it's invalid anyway.)
@ -112,7 +102,7 @@ held."
#:deriver deriver)) #:deriver deriver))
(when lock? (when lock?
(unlock-store-file target))))) (unlock-file lock))))))
(define (temporary-store-file) (define (temporary-store-file)
"Return the file name of a temporary file created in the store." "Return the file name of a temporary file created in the store."

View File

@ -236,30 +236,6 @@ instead of '~a' of type '~a'~%")
;;; Synchronization. ;;; Synchronization.
;;; ;;;
(define (lock-file file)
"Wait and acquire an exclusive lock on FILE. Return an open port."
(mkdir-p (dirname file))
(let ((port (open-file file "w0")))
(fcntl-flock port 'write-lock)
port))
(define (unlock-file lock)
"Unlock LOCK."
(fcntl-flock lock 'unlock)
(close-port lock)
#t)
(define-syntax-rule (with-file-lock file exp ...)
"Wait to acquire a lock on FILE and evaluate EXP in that context."
(let ((port (lock-file file)))
(dynamic-wind
(lambda ()
#t)
(lambda ()
exp ...)
(lambda ()
(unlock-file port)))))
(define (machine-slot-file machine slot) (define (machine-slot-file machine slot)
"Return the file name of MACHINE's file for SLOT." "Return the file name of MACHINE's file for SLOT."
;; For each machine we have a bunch of files representing each build slot. ;; For each machine we have a bunch of files representing each build slot.
@ -829,7 +805,6 @@ This tool is meant to be used internally by 'guix-daemon'.\n"))
(leave (G_ "invalid arguments: ~{~s ~}~%") x)))) (leave (G_ "invalid arguments: ~{~s ~}~%") x))))
;;; Local Variables: ;;; Local Variables:
;;; eval: (put 'with-file-lock 'scheme-indent-function 1)
;;; eval: (put 'with-error-to-port 'scheme-indent-function 1) ;;; eval: (put 'with-error-to-port 'scheme-indent-function 1)
;;; eval: (put 'with-timeout 'scheme-indent-function 2) ;;; eval: (put 'with-timeout 'scheme-indent-function 2)
;;; End: ;;; End:

View File

@ -152,6 +152,7 @@ dependencies are registered."
#:key target #:key target
(profile-name "guix-profile") (profile-name "guix-profile")
deduplicate? deduplicate?
entry-point
(compressor (first %compressors)) (compressor (first %compressors))
localstatedir? localstatedir?
(symlinks '()) (symlinks '())
@ -275,6 +276,10 @@ added to the pack."
(_ #f)) (_ #f))
directives))))))))) directives)))))))))
(when entry-point
(warning (G_ "entry point not supported in the '~a' format~%")
'tarball))
(gexp->derivation (string-append name ".tar" (gexp->derivation (string-append name ".tar"
(compressor-extension compressor)) (compressor-extension compressor))
build build
@ -284,6 +289,7 @@ added to the pack."
#:key target #:key target
(profile-name "guix-profile") (profile-name "guix-profile")
(compressor (first %compressors)) (compressor (first %compressors))
entry-point
localstatedir? localstatedir?
(symlinks '()) (symlinks '())
(archiver squashfs-tools-next)) (archiver squashfs-tools-next))
@ -315,6 +321,7 @@ added to the pack."
(ice-9 match)) (ice-9 match))
(define database #+database) (define database #+database)
(define entry-point #$entry-point)
(setenv "PATH" (string-append #$archiver "/bin")) (setenv "PATH" (string-append #$archiver "/bin"))
@ -371,6 +378,28 @@ added to the pack."
target))))))) target)))))))
'#$symlinks) '#$symlinks)
;; Create /.singularity.d/actions, and optionally the 'run'
;; script, used by 'singularity run'.
"-p" "/.singularity.d d 555 0 0"
"-p" "/.singularity.d/actions d 555 0 0"
,@(if entry-point
`(;; This one if for Singularity 2.x.
"-p"
,(string-append
"/.singularity.d/actions/run s 777 0 0 "
(relative-file-name "/.singularity.d/actions"
(string-append #$profile "/"
entry-point)))
;; This one is for Singularity 3.x.
"-p"
,(string-append
"/.singularity.d/runscript s 777 0 0 "
(relative-file-name "/.singularity.d"
(string-append #$profile "/"
entry-point))))
'())
;; Create empty mount points. ;; Create empty mount points.
"-p" "/proc d 555 0 0" "-p" "/proc d 555 0 0"
"-p" "/sys d 555 0 0" "-p" "/sys d 555 0 0"
@ -392,6 +421,7 @@ added to the pack."
#:key target #:key target
(profile-name "guix-profile") (profile-name "guix-profile")
(compressor (first %compressors)) (compressor (first %compressors))
entry-point
localstatedir? localstatedir?
(symlinks '()) (symlinks '())
(archiver tar)) (archiver tar))
@ -425,6 +455,8 @@ the image."
#$profile #$profile
#:database #+database #:database #+database
#:system (or #$target (utsname:machine (uname))) #:system (or #$target (utsname:machine (uname)))
#:entry-point (string-append #$profile "/"
#$entry-point)
#:symlinks '#$symlinks #:symlinks '#$symlinks
#:compressor '#$(compressor-command compressor) #:compressor '#$(compressor-command compressor)
#:creation-time (make-time time-utc 0 1)))))) #:creation-time (make-time time-utc 0 1))))))
@ -689,6 +721,9 @@ please email '~a'~%")
(lambda (opt name arg result) (lambda (opt name arg result)
(alist-cons 'system arg (alist-cons 'system arg
(alist-delete 'system result eq?)))) (alist-delete 'system result eq?))))
(option '("entry-point") #t #f
(lambda (opt name arg result)
(alist-cons 'entry-point arg result)))
(option '("target") #t #f (option '("target") #t #f
(lambda (opt name arg result) (lambda (opt name arg result)
(alist-cons 'target arg (alist-cons 'target arg
@ -765,6 +800,9 @@ Create a bundle of PACKAGE.\n"))
-S, --symlink=SPEC create symlinks to the profile according to SPEC")) -S, --symlink=SPEC create symlinks to the profile according to SPEC"))
(display (G_ " (display (G_ "
-m, --manifest=FILE create a pack with the manifest from FILE")) -m, --manifest=FILE create a pack with the manifest from FILE"))
(display (G_ "
--entry-point=PROGRAM
use PROGRAM as the entry point of the pack"))
(display (G_ " (display (G_ "
--save-provenance save provenance information")) --save-provenance save provenance information"))
(display (G_ " (display (G_ "
@ -889,6 +927,7 @@ Create a bundle of PACKAGE.\n"))
(leave (G_ "~a: unknown pack format~%") (leave (G_ "~a: unknown pack format~%")
pack-format)))) pack-format))))
(localstatedir? (assoc-ref opts 'localstatedir?)) (localstatedir? (assoc-ref opts 'localstatedir?))
(entry-point (assoc-ref opts 'entry-point))
(profile-name (assoc-ref opts 'profile-name)) (profile-name (assoc-ref opts 'profile-name))
(gc-root (assoc-ref opts 'gc-root))) (gc-root (assoc-ref opts 'gc-root)))
(when (null? (manifest-entries manifest)) (when (null? (manifest-entries manifest))
@ -919,6 +958,8 @@ Create a bundle of PACKAGE.\n"))
symlinks symlinks
#:localstatedir? #:localstatedir?
localstatedir? localstatedir?
#:entry-point
entry-point
#:profile-name #:profile-name
profile-name profile-name
#:archiver #:archiver

View File

@ -57,7 +57,6 @@
#:export (build-and-use-profile #:export (build-and-use-profile
delete-generations delete-generations
delete-matching-generations delete-matching-generations
display-search-paths
guix-package guix-package
(%options . %package-options) (%options . %package-options)
@ -169,8 +168,7 @@ hooks\" run when building the profile."
"~a packages in profile~%" "~a packages in profile~%"
count) count)
count) count)
(display-search-paths entries (list profile) (display-search-path-hint entries profile)))
#:kind 'prefix)))
(warn-about-disk-space profile)))))) (warn-about-disk-space profile))))))
@ -289,17 +287,23 @@ symlinks like 'canonicalize-path' would do."
file file
(string-append (getcwd) "/" file))) (string-append (getcwd) "/" file)))
(define* (display-search-paths entries profiles (define (display-search-path-hint entries profile)
#:key (kind 'exact)) "Display a hint on how to set environment variables to use ENTRIES, a list
"Display the search path environment variables that may need to be set for of manifest entries, in the context of PROFILE."
ENTRIES, a list of manifest entries, in the context of PROFILE." (let* ((profile (user-friendly-profile (absolutize profile)))
(let* ((profiles (map (compose user-friendly-profile absolutize) (settings (search-path-environment-variables entries (list profile)
profiles)) #:kind 'prefix)))
(settings (search-path-environment-variables entries profiles
#:kind kind)))
(unless (null? settings) (unless (null? settings)
(format #t (G_ "The following environment variable definitions may be needed:~%")) (display-hint (format #f (G_ "Consider setting the necessary environment
(format #t "~{ ~a~%~}" settings)))) variables by running:
@example
GUIX_PROFILE=\"~a\"
. \"$GUIX_PROFILE/etc/profile\"
@end example
Alternately, see @command{guix package --search-paths -p ~s}.")
profile profile)))))
;;; ;;;

File diff suppressed because it is too large Load Diff

View File

@ -24,9 +24,14 @@
#:use-module (guix licenses) #:use-module (guix licenses)
#:use-module (srfi srfi-64)) #:use-module (srfi srfi-64))
(define-syntax-rule (define-with-source object source expr)
(begin
(define object expr)
(define source 'expr)))
(test-begin "print") (test-begin "print")
(define pkg (define-with-source pkg pkg-source
(package (package
(name "test") (name "test")
(version "1.2.3") (version "1.2.3")
@ -43,9 +48,8 @@
(description "This is a dummy package.") (description "This is a dummy package.")
(license gpl3+))) (license gpl3+)))
(test-equal "simple package" (define-with-source pkg-with-inputs pkg-with-inputs-source
(package->code pkg) (package
'(package
(name "test") (name "test")
(version "1.2.3") (version "1.2.3")
(source (origin (source (origin
@ -56,9 +60,19 @@
(base32 (base32
"070pwb7brdcn1mfvplkd56vjc7lbz4iznzkqvfsakvgbv68k71ah")))) "070pwb7brdcn1mfvplkd56vjc7lbz4iznzkqvfsakvgbv68k71ah"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs `(("coreutils" ,(@ (gnu packages base) coreutils))
("glibc" ,(@ (gnu packages base) glibc) "debug")))
(home-page "http://gnu.org") (home-page "http://gnu.org")
(synopsis "Dummy") (synopsis "Dummy")
(description "This is a dummy package.") (description "This is a dummy package.")
(license gpl3+))) (license gpl3+)))
(test-equal "simple package"
pkg-source
(package->code pkg))
(test-equal "package with inputs"
pkg-with-inputs-source
(package->code pkg-with-inputs))
(test-end "print") (test-end "print")