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 '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 'origin '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.
@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}
@itemx -e @var{expr}
Consider the package @var{expr} evaluates to.
@ -24090,7 +24113,7 @@ The following is an example @code{dicod-service} configuration.
@cindex Docker
@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
@ -24114,6 +24137,66 @@ The Containerd package to use.
@end table
@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
@section Setuid Programs

View File

@ -19,6 +19,7 @@
(define-module (gnu build accounts)
#:use-module (guix records)
#:use-module (guix combinators)
#:use-module ((guix build syscalls) #:select (fdatasync))
#:use-module (gnu system accounts)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-11)
@ -51,6 +52,7 @@
group-entry-gid
group-entry-members
%password-lock-file
write-group
write-passwd
write-shadow
@ -224,6 +226,19 @@ each field."
(serialization list->comma-separated comma-separated->list)
(default '())))
(define %password-lock-file
;; The password database lock file used by libc's 'lckpwdf'. Users should
;; grab this lock with 'with-file-lock' when they access the databases.
"/etc/.pwd.lock")
(define-syntax-rule (catch-ENOSYS exp)
(catch 'system-error
(lambda () exp)
(lambda args
(if (= ENOSYS (system-error-errno args))
#f
(apply throw args)))))
(define (database-writer file mode entry->string)
(lambda* (entries #:optional (file-or-port file))
"Write ENTRIES to FILE-OR-PORT. When FILE-OR-PORT is a file name, write
@ -243,9 +258,16 @@ to it atomically and set the appropriate permissions."
(lambda ()
(chmod port mode)
(write-entries port)
;; XXX: When booting with the statically-linked Guile,
;; 'fdatasync' is unavailable.
(catch-ENOSYS (fdatasync port))
(close-port port)
(rename-file template file-or-port))
(lambda ()
(close-port port)
(unless (port-closed? port)
(close-port port))
(when (file-exists? template)
(delete-file template))))))))

View File

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

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)
#:use-module (gnu installer utils)
#:use-module ((gnu build locale) #:select (normalize-codeset))
#:use-module (guix records)
#:use-module (json)
#:use-module (srfi srfi-1)
@ -71,24 +72,6 @@ optionally, CODESET."
(codeset . ,(or codeset (match:substring matches 5)))
(modifier . ,(match:substring matches 7)))))
(define (normalize-codeset codeset)
"Compute the \"normalized\" variant of CODESET."
;; info "(libc) Using gettextized software", for the algorithm used to
;; compute the normalized codeset.
(letrec-syntax ((-> (syntax-rules ()
((_ proc value)
(proc value))
((_ proc rest ...)
(proc (-> rest ...))))))
(-> (lambda (str)
(if (string-every char-set:digit str)
(string-append "iso" str)
str))
string-downcase
(lambda (str)
(string-filter char-set:letter+digit str))
codeset)))
(define (locale->locale-string locale)
"Reverse operation of locale-string->locale."
(let ((language (locale-language locale))

View File

@ -62,7 +62,7 @@ Internet and return the selected technology. For now, only technologies with
(G_ "Continue")
(G_ "Exit")
(G_ "The install process requires Internet access but no \
network device were found. Do you want to continue anyway?"))
network devices were found. Do you want to continue anyway?"))
((1) (raise
(condition
(&installer-step-break))))

View File

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

View File

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

View File

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

View File

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

View File

@ -32,7 +32,8 @@
#:use-module (gnu packages)
#:use-module (gnu packages base)
#:use-module (gnu packages compression)
#:use-module (gnu packages perl))
#:use-module (gnu packages perl)
#:use-module (ice-9 match))
(define-public aspell
(package
@ -102,7 +103,14 @@ dictionaries, including personal ones.")
(define* (aspell-dictionary dict-name full-name
#:key version sha256 (prefix "aspell6-"))
(package
(name (string-append "aspell-dict-" dict-name))
(name (string-append
"aspell-dict-"
;; Downcase and replace underscore in package names
;; to follow Guix naming conventions.
(string-map (match-lambda
(#\_ #\-)
(chr chr))
(string-downcase dict-name))))
(version version)
(source (origin
(method url-fetch)
@ -281,7 +289,7 @@ dictionaries, including personal ones.")
"0w2k5l5rbqpliripgqwiqixz5ghnjf7i9ggbrc4ly4vy1ia10rmc")))
(define-public aspell-dict-pt-br
(aspell-dictionary "pt-br" "Brazilian Portuguese"
(aspell-dictionary "pt_BR" "Brazilian Portuguese"
#:version "20090702-0"
#:prefix "aspell6-"
#:sha256
@ -289,7 +297,7 @@ dictionaries, including personal ones.")
"1y09lx9zf2rnp55r16b2vgj953l3538z1vaqgflg9mdvm555bz3p")))
(define-public aspell-dict-pt-pt
(aspell-dictionary "pt-pt" "Portuguese"
(aspell-dictionary "pt_PT" "Portuguese"
#:version "20070510-0"
#:prefix "aspell6-"
#:sha256

View File

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

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014, 2019 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
;;; Copyright © 2014, 2015, 2016, 2018 Mark H Weaver <mhw@netris.org>
@ -1050,12 +1050,47 @@ to the @code{share/locale} sub-directory of this package.")
(let ((args `(#:tests? #f #:strip-binaries? #f
,@(package-arguments glibc))))
(substitute-keyword-arguments args
((#:modules modules '((guix build utils)
(guix build gnu-build-system)))
`((srfi srfi-11)
(gnu build locale)
,@modules))
((#:imported-modules modules '())
`((gnu build locale)
,@%gnu-build-system-modules))
((#:phases phases)
`(modify-phases ,phases
(replace 'build
(lambda _
(invoke "make" "localedata/install-locales"
"-j" (number->string (parallel-job-count)))))
(add-after 'build 'symlink-normalized-codesets
(lambda* (#:key outputs #:allow-other-keys)
;; The above phase does not install locales with names using
;; the "normalized codeset." Thus, create symlinks like:
;; en_US.utf8 -> en_US.UTF-8
(define (locale-directory? file stat)
(and (file-is-directory? file)
(string-index (basename file) #\_)
(string-rindex (basename file) #\.)))
(let* ((out (assoc-ref outputs "out"))
(locales (find-files out locale-directory?
#:directories? #t)))
(for-each (lambda (directory)
(let*-values (((base)
(basename directory))
((name codeset)
(locale->name+codeset base))
((normalized)
(normalize-codeset codeset)))
(unless (string=? codeset normalized)
(symlink base
(string-append (dirname directory)
"/" name "."
normalized)))))
locales)
#t)))
(delete 'install)
(delete 'move-static-libs)))
((#:configure-flags flags)

View File

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

View File

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

View File

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

View File

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2012, 2013, 2014, 2015, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
@ -128,7 +128,16 @@ in compression.")
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'enter-source
(lambda _ (chdir "contrib/minizip") #t)))))
(lambda _ (chdir "contrib/minizip") #t))
(add-after 'install 'remove-crypt-h
(lambda* (#:key outputs #:allow-other-keys)
;; Remove <minizip/crypt.h> because it interferes with libc's
;; <crypt.h> given that 'minizip.pc' says "-I…/include/minizip".
;; Fedora does the same:
;; <https://src.fedoraproject.org/rpms/zlib/c/4d2785ec3116947872f6f32dc4104e6d36d8a7a4?branch=master>.
(let ((out (assoc-ref outputs "out")))
(delete-file (string-append out "/include/minizip/crypt.h"))
#t))))))
(native-inputs
`(("autoconf" ,autoconf)
("automake" ,automake)

View File

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

View File

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

View File

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

View File

@ -11931,7 +11931,7 @@ Emacs minor mode to escape sequences in code.")
(define-public emacs-dashboard
(package
(name "emacs-dashboard")
(version "1.2.4")
(version "1.5.0")
(source
(origin
(method git-fetch)
@ -11940,11 +11940,22 @@ Emacs minor mode to escape sequences in code.")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "1hhh1kfsz87qfmh45wjf2r93rz79rq0vbyxlfrsl02092zjbl1zr"))))
(base32 "0ihpcagwgc9qy70lf2y3dvx2bm5h9lnqh4sx6643cr8pp06ysbvq"))))
(build-system emacs-build-system)
(propagated-inputs
`(("emacs-page-break-lines" ,emacs-page-break-lines)))
(arguments '(#:include '("\\.el$" "\\.txt$" "\\.png$")))
(arguments
'(#:include '("\\.el$" "\\.txt$" "\\.png$")
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch-dashboard-widgets
;; This phase fixes compilation error.
(lambda _
(chmod "dashboard-widgets.el" #o666)
(emacs-substitute-variables "dashboard-widgets.el"
("dashboard-init-info"
'(format "Loaded in %s" (emacs-init-time))))
#t)))))
(home-page "https://github.com/rakanalh/emacs-dashboard")
(synopsis "Startup screen extracted from Spacemacs")
(description "This package provides an extensible Emacs dashboard, with
@ -15796,3 +15807,26 @@ verb commands which would are normally destructive (such as deletion) are
provided. Those alternative commands are and bound by default to their
corresponding Evil keys.")
(license license:expat))))
(define-public emacs-xterm-color
(let ((commit "a452ab38a7cfae97078062ff8885b5d74fd1e5a6")
(version "1.8")
(revision "1"))
(package
(name "emacs-xterm-color")
(version (git-version version revision commit))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/atomontage/xterm-color.git")
(commit commit)))
(sha256
(base32
"02kpajb993yshhjhsizpfcbrcndyzkf4dqfipifhxxng50dhp95i"))
(file-name (git-file-name name version))))
(build-system emacs-build-system)
(home-page "https://github.com/atomontage/xterm-color")
(synopsis "ANSI & xterm-256 color text property translator for Emacs")
(description "@code{xterm-color.el} is an ANSI control sequence to
text-property translator.")
(license license:bsd-2))))

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -40,6 +40,7 @@
;;; Copyright © 2019 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2019 Pierre Langlois <pierre.langlois@gmx.com>
;;; Copyright © 2019 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2019 Jesse Gibbons <jgibbons2357+guix@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@ -7336,3 +7337,51 @@ Unfortunately, Hacker is not aware of Drascula's real ambitions: DOMINATING
the World and demonstrating that he is even more evil than his brother Vlad.")
;; Drascula uses a BSD-like license.
(license (license:non-copyleft "file:///readme.txt"))))
(define-public gnurobots
(package
(name "gnurobots")
(version "1.2.0")
(source
(origin
(method url-fetch)
(uri (string-append "mirror://gnu/gnurobots/gnurobots-"
version ".tar.gz"))
(sha256
(base32
"07gi3lsmbzzsjambgixj6xy79lh22km84z7bnzgwzxdy806lyvwb"))))
(build-system gnu-build-system)
(inputs
`(("glib" ,glib)
("gtk+" ,gtk+-2)
("vte" ,vte/gtk+-2)
("readline" ,readline)
("guile" ,guile-1.8)))
(native-inputs
`(("pkg-config" ,pkg-config)))
(arguments
`(#:make-flags
(list
;; Do not abort build on "deprecated-declarations" warnings.
"CFLAGS=-Wno-error=deprecated-declarations"
;; Find readline headers in sub-directory.
(string-append "READLINE_CFLAGS=-I"
(assoc-ref %build-inputs "readline")
"/include/readline/"))
#:phases
(modify-phases %standard-phases
(add-after 'install 'install-doc
(lambda* (#:key outputs #:allow-other-keys)
(install-file "doc/Robots-HOWTO"
(string-append (assoc-ref outputs "out")
"/share/doc/gnurobots-"
,version))
#t)))))
(home-page "https://www.gnu.org/software/gnurobots/")
(synopsis "Program a little robot and watch it explore a world")
(description
"GNU Robots is a game in which you program a robot to explore a world
full of enemies that can hurt it, obstacles and food to be eaten. The goal of
the game is to stay alive and collect prizes. The robot program conveniently
may be written in a plain text file in the Scheme programming language.")
(license license:gpl3+)))

View File

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

View File

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

View File

@ -3941,26 +3941,15 @@ which can read a large number of file formats.")
(define-public rhythmbox
(package
(name "rhythmbox")
(version "3.4.2")
(version "3.4.3")
(source (origin
(method url-fetch)
(uri (string-append "mirror://gnome/sources/" name "/"
(version-major+minor version) "/"
name "-" version ".tar.xz"))
(patches
(list
;; fmradio: Fix build with GStreamer master
(origin
(method url-fetch)
(uri (string-append
"https://gitlab.gnome.org/GNOME/rhythmbox/commit/"
"b182c6b9e1d09e601bac0b703cc5f8b159ebbc3a.patch"))
(sha256
(base32
"06n87xgf927djmv1vshal84nqx7g8nwgljza3g2vydhy7g2n1csq")))))
(sha256
(base32
"0hzcns8gf5yb0rm4ss8jd8qzarcaplp5cylk6plwilsqfvxj4xn2"))))
"1yx3n7p9vmv23jsv98fxwq95n78awdxqm8idhyhxx2d6vk4w1hgx"))))
(build-system glib-or-gtk-build-system)
(arguments
`(#:configure-flags

View File

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

View File

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

View File

@ -9,6 +9,7 @@
;;; Copyright © 2017 nee <nee-git@hidamari.blue>
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;;
;;; This file is part of GNU Guix.
;;;
@ -429,3 +430,50 @@ imaging. It supports several HDR and LDR image formats, and it can:
a comic and manga reader. It supports a variety of container formats
including CBZ, CB7, CBT, LHA.")
(license license:gpl2+)))
(define-public qview
(package
(name "qview")
(version "2.0")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/jurplel/qView.git")
(commit version)))
(sha256
(base32
"1s29hz44rb5dwzq8d4i4bfg77dr0v3ywpvidpa6xzg7hnnv3mhi5"))))
(build-system gnu-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(replace 'configure
(lambda _
(invoke "qmake")))
;; Installation process hard-codes "/usr/bin", possibly
;; prefixed.
(add-after 'configure 'fix-install-directory
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(substitute* "Makefile"
(("\\$\\(INSTALL_ROOT\\)/usr") out))
#t)))
;; Don't phone home or show "Checking for updates..." in the
;; About menu.
(add-before 'build 'disable-auto-update
(lambda _
(substitute* "src/qvaboutdialog.cpp"
(("ui->updateLabel->setText\\(updateText\\);") "")
(("requestUpdates\\(\\);") ""))
#t)))))
(inputs
`(("qtbase" ,qtbase)
("qtsvg" ,qtsvg)
("qtimageformats" ,qtimageformats)))
(home-page "https://interversehq.com/qview/")
(synopsis "Convenient and minimal image viewer")
(description "qView is a Qt image viewer designed with visually
minimalism and usability in mind. Its features include animated GIF
controls, file history, rotation/mirroring, and multithreaded
preloading.")
(license license:gpl3+)))

View File

@ -2559,7 +2559,7 @@ compliance.")
(define-public wireless-regdb
(package
(name "wireless-regdb")
(version "2017.03.07")
(version "2019.06.03")
(source (origin
(method url-fetch)
(uri (string-append
@ -2567,7 +2567,7 @@ compliance.")
"wireless-regdb-" version ".tar.xz"))
(sha256
(base32
"1f9mcp78sdd4sci6v32vxfcl1rfjpv205jisz1p93kkfnaisy7ip"))
"1gslvh0aqdkv48jyr2ddq153mw28i7qz2ybrjj9qvkk3dgc7x4fd"))
;; We're building 'regulatory.bin' by ourselves.
(snippet '(begin
@ -2575,13 +2575,25 @@ compliance.")
#t))))
(build-system gnu-build-system)
(arguments
'(#:phases (modify-phases %standard-phases
'(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'gzip-determinism
(lambda _
(substitute* "Makefile"
(("gzip") "gzip --no-name"))
#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
;; is computed and can be equal to 'maintainer-clean'; when that
@ -2589,19 +2601,22 @@ compliance.")
;; just built. Thus, build things sequentially.
#:parallel-build? #f
#:tests? #f ;no tests
#:make-flags (let ((out (assoc-ref %outputs "out")))
#:tests? #f ; no tests
#:make-flags
(let ((out (assoc-ref %outputs "out")))
(list (string-append "PREFIX=" out)
(string-append "LSB_ID=Guix")
(string-append "DISTRO_PUBKEY=/dev/null")
(string-append "DISTRO_PRIVKEY=/dev/null")
(string-append "REGDB_PUBKEY=/dev/null")
(string-append "FIRMWARE_PATH=$(PREFIX)/lib/firmware")
;; Leave that empty so that db2bin.py doesn't try
;; to sign 'regulatory.bin'. This allows us to
;; avoid managing a key pair for the whole distro.
(string-append "REGDB_PRIVKEY=")))))
(native-inputs `(("python" ,python-2)))
;; Leave this empty so that db2bin.py doesn't try to sign
;; regulatory.bin. This allows us to avoid managing a key
;; pair for the whole distribution.
(string-append "REGDB_PRIVKEY=")
;; Don't generate a public key for the same reason. These are
;; used as Makefile targets and can't be the empty string.
(string-append "REGDB_PUBCERT=/dev/null")
(string-append "REGDB_PUBKEY=/dev/null")))))
(native-inputs
`(("python" ,python-wrapper)))
(home-page
"https://wireless.wiki.kernel.org/en/developers/regulatory/wireless-regdb")
(synopsis "Wireless regulatory database")
@ -2884,12 +2899,16 @@ thanks to the use of namespaces.")
(substitute* "bin/singularity.in"
(("^PATH=.*" all)
(string-append "#" all "\n")))
(substitute* (find-files "libexec/cli" "\\.exec$")
(("\\$SINGULARITY_libexecdir/singularity/bin/([a-z]+)-suid"
_ program)
(string-append "/run/setuid-programs/singularity-"
program "-helper")))
#t))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
(list "--disable-suid"
"--localstatedir=/var")
`(#:configure-flags '("--localstatedir=/var")
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch-reference-to-squashfs-tools

View File

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

View File

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

View File

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

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"))
(sha256
(base32
"00m3lif64zyxd41cnk208kc81nl6qz659676qgiaqgwrw0brzrid"))))
"00m3lif64zyxd41cnk208kc81nl6qz659676qgiaqgwrw0brzrid"))
(modules '((guix build utils)))
(snippet
'(begin
(substitute* "Makefile.in"
(("^moddir = (.*)/guile/(.*)" _ before after)
(string-append "moddir = " before "/guile/site/"
after))
(("^ccachedir = (.*)/ccache/(.*)" _ before after)
(string-append "ccachedir = " before
"/site-ccache/" after)))
#t))))
(build-system gnu-build-system)
(native-inputs
`(("pkg-config" ,pkg-config)))

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

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 system shadow)
#:use-module (gnu packages docker)
#:use-module (gnu packages linux) ;singularity
#:use-module (guix records)
#:use-module (guix gexp)
#:use-module (guix packages)
#:export (docker-configuration
docker-service-type))
docker-service-type
singularity-service-type))
;;; We're not using serialize-configuration, but we must define this because
;;; the define-configuration macro validates it exists.
@ -120,3 +122,60 @@ bundles in Docker containers.")
(service-extension account-service-type
(const %docker-accounts))))
(default-value (docker-configuration))))
;;;
;;; Singularity.
;;;
(define %singularity-activation
(with-imported-modules '((guix build utils))
#~(begin
(use-modules (guix build utils))
(define %mount-directory
"/var/singularity/mnt/")
;; Create the directories that Singularity 2.6 expects to find. Make
;; them #o755 like the 'install-data-hook' rule in 'Makefile.am' of
;; Singularity 2.6.1.
(for-each (lambda (directory)
(let ((directory (string-append %mount-directory
directory)))
(mkdir-p directory)
(chmod directory #o755)))
'("container" "final" "overlay" "session"))
(chmod %mount-directory #o755))))
(define (singularity-setuid-programs singularity)
"Return the setuid-root programs that SINGULARITY needs."
(define helpers
;; The helpers, under a meaningful name.
(computed-file "singularity-setuid-helpers"
#~(begin
(mkdir #$output)
(for-each (lambda (program)
(symlink (string-append #$singularity
"/libexec/singularity"
"/bin/"
program "-suid")
(string-append #$output
"/singularity-"
program
"-helper")))
'("action" "mount" "start")))))
(list (file-append helpers "/singularity-action-helper")
(file-append helpers "/singularity-mount-helper")
(file-append helpers "/singularity-start-helper")))
(define singularity-service-type
(service-type (name 'singularity)
(description
"Install the Singularity application bundle tool.")
(extensions
(list (service-extension setuid-program-service-type
singularity-setuid-programs)
(service-extension activation-service-type
(const %singularity-activation))))
(default-value singularity)))

View File

@ -85,20 +85,6 @@ or #f on failure."
(_
#f)))
(define* (localedef-command locale
#:key (libc (canonical-package glibc)))
"Return a gexp that runs 'localedef' from LIBC to build LOCALE."
#~(begin
(format #t "building locale '~a'...~%"
#$(locale-definition-name locale))
(zero? (system* (string-append #+libc "/bin/localedef")
"--no-archive" "--prefix" #$output
"-i" #$(locale-definition-source locale)
"-f" #$(locale-definition-charset locale)
(string-append #$output "/" #$(version-major+minor
(package-version libc))
"/" #$(locale-definition-name locale))))))
(define* (single-locale-directory locales
#:key (libc (canonical-package glibc)))
"Return a directory containing all of LOCALES for LIBC compiled.
@ -110,17 +96,29 @@ of LIBC."
(version-major+minor (package-version libc)))
(define build
(with-imported-modules (source-module-closure
'((gnu build locale)))
#~(begin
(mkdir #$output)
(use-modules (gnu build locale))
(mkdir #$output)
(mkdir (string-append #$output "/" #$version))
;; 'localedef' executes 'gzip' to access compressed locale sources.
(setenv "PATH" (string-append #$gzip "/bin"))
(setenv "PATH"
(string-append #$gzip "/bin:" #$libc "/bin"))
(exit
(and #$@(map (cut localedef-command <> #:libc libc)
locales)))))
(setvbuf (current-output-port) 'line)
(setvbuf (current-error-port) 'line)
(for-each (lambda (locale codeset name)
(build-locale locale
#:codeset codeset
#:name name
#:directory
(string-append #$output "/" #$version)))
'#$(map locale-definition-source locales)
'#$(map locale-definition-charset locales)
'#$(map locale-definition-name locales)))))
(computed-file (string-append "locale-" version) build))
@ -216,45 +214,16 @@ pairs such as (\"oc_FR.UTF-8\" . \"UTF-8\"). Each pair corresponds to a
locale supported by GLIBC."
(define build
(with-imported-modules (source-module-closure
'((guix build gnu-build-system)))
'((guix build gnu-build-system)
(gnu build locale)))
#~(begin
(use-modules (guix build gnu-build-system)
(srfi srfi-1)
(ice-9 rdelim)
(ice-9 match)
(ice-9 regex)
(gnu build locale)
(ice-9 pretty-print))
(define unpack
(assq-ref %standard-phases 'unpack))
(define locale-rx
;; Regexp matching a locale line in 'localedata/SUPPORTED'.
(make-regexp
"^[[:space:]]*([[:graph:]]+)/([[:graph:]]+)[[:space:]]*\\\\$"))
(define (read-supported-locales port)
;; Read the 'localedata/SUPPORTED' file from PORT. That file is
;; actually a makefile snippet, with one locale per line, and a
;; header that can be discarded.
(let loop ((locales '()))
(define line
(read-line port))
(cond ((eof-object? line)
(reverse locales))
((string-prefix? "#" (string-trim line)) ;comment
(loop locales))
((string-contains line "=") ;makefile variable assignment
(loop locales))
(else
(match (regexp-exec locale-rx line)
(#f
(loop locales))
(m
(loop (alist-cons (match:substring m 1)
(match:substring m 2)
locales))))))))
(setenv "PATH"
(string-append #+(file-append tar "/bin") ":"

View File

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

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
pivot-root
scandir*
fcntl-flock
lock-file
unlock-file
with-file-lock
set-thread-name
thread-name
@ -1067,6 +1071,42 @@ exception if it's already taken."
;; Presumably we got EAGAIN or so.
(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'.

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) "/"))
(dot-git (repository-discover directory))
(repository (repository-open dot-git))
;; XXX: This procedure is mistakenly private in Guile-Git 0.1.0.
(workdir ((@@ (git repository) repository-working-directory)
repository))
(workdir (repository-working-directory repository))
(head (repository-head repository))
(oid (reference-target head))
(commit (commit-lookup repository oid))

View File

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

View File

@ -1,5 +1,5 @@
;;; 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 David Craven <david@craven.ch>
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
@ -287,7 +287,7 @@ package value."
(map (lambda (spec)
(let-values (((pkg out) (specification->package+output spec)))
(match out
(("out") (list (package-name pkg) pkg))
("out" (list (package-name pkg) pkg))
(_ (list (package-name pkg) pkg out)))))
specs))

View File

@ -1,5 +1,5 @@
;;; 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>
;;;
;;; 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
;; 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
#:key (references '()) deriver (lock? #t))
"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."
(with-database %default-database-file db
(unless (path-id db target)
(when lock?
(lock-store-file target))
(let ((lock (and lock?
(lock-file (string-append target ".lock")))))
(unless (path-id db target)
;; If FILE already exists, delete it (it's invalid anyway.)
@ -112,7 +102,7 @@ held."
#:deriver deriver))
(when lock?
(unlock-store-file target)))))
(unlock-file lock))))))
(define (temporary-store-file)
"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.
;;;
(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)
"Return the file name of MACHINE's file for 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))))
;;; Local Variables:
;;; eval: (put 'with-file-lock 'scheme-indent-function 1)
;;; eval: (put 'with-error-to-port 'scheme-indent-function 1)
;;; eval: (put 'with-timeout 'scheme-indent-function 2)
;;; End:

View File

@ -152,6 +152,7 @@ dependencies are registered."
#:key target
(profile-name "guix-profile")
deduplicate?
entry-point
(compressor (first %compressors))
localstatedir?
(symlinks '())
@ -275,6 +276,10 @@ added to the pack."
(_ #f))
directives)))))))))
(when entry-point
(warning (G_ "entry point not supported in the '~a' format~%")
'tarball))
(gexp->derivation (string-append name ".tar"
(compressor-extension compressor))
build
@ -284,6 +289,7 @@ added to the pack."
#:key target
(profile-name "guix-profile")
(compressor (first %compressors))
entry-point
localstatedir?
(symlinks '())
(archiver squashfs-tools-next))
@ -315,6 +321,7 @@ added to the pack."
(ice-9 match))
(define database #+database)
(define entry-point #$entry-point)
(setenv "PATH" (string-append #$archiver "/bin"))
@ -371,6 +378,28 @@ added to the pack."
target)))))))
'#$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.
"-p" "/proc d 555 0 0"
"-p" "/sys d 555 0 0"
@ -392,6 +421,7 @@ added to the pack."
#:key target
(profile-name "guix-profile")
(compressor (first %compressors))
entry-point
localstatedir?
(symlinks '())
(archiver tar))
@ -425,6 +455,8 @@ the image."
#$profile
#:database #+database
#:system (or #$target (utsname:machine (uname)))
#:entry-point (string-append #$profile "/"
#$entry-point)
#:symlinks '#$symlinks
#:compressor '#$(compressor-command compressor)
#:creation-time (make-time time-utc 0 1))))))
@ -689,6 +721,9 @@ please email '~a'~%")
(lambda (opt name arg result)
(alist-cons 'system arg
(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
(lambda (opt name arg result)
(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"))
(display (G_ "
-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_ "
--save-provenance save provenance information"))
(display (G_ "
@ -889,6 +927,7 @@ Create a bundle of PACKAGE.\n"))
(leave (G_ "~a: unknown pack format~%")
pack-format))))
(localstatedir? (assoc-ref opts 'localstatedir?))
(entry-point (assoc-ref opts 'entry-point))
(profile-name (assoc-ref opts 'profile-name))
(gc-root (assoc-ref opts 'gc-root)))
(when (null? (manifest-entries manifest))
@ -919,6 +958,8 @@ Create a bundle of PACKAGE.\n"))
symlinks
#:localstatedir?
localstatedir?
#:entry-point
entry-point
#:profile-name
profile-name
#:archiver

View File

@ -57,7 +57,6 @@
#:export (build-and-use-profile
delete-generations
delete-matching-generations
display-search-paths
guix-package
(%options . %package-options)
@ -169,8 +168,7 @@ hooks\" run when building the profile."
"~a packages in profile~%"
count)
count)
(display-search-paths entries (list profile)
#:kind 'prefix)))
(display-search-path-hint entries profile)))
(warn-about-disk-space profile))))))
@ -289,17 +287,23 @@ symlinks like 'canonicalize-path' would do."
file
(string-append (getcwd) "/" file)))
(define* (display-search-paths entries profiles
#:key (kind 'exact))
"Display the search path environment variables that may need to be set for
ENTRIES, a list of manifest entries, in the context of PROFILE."
(let* ((profiles (map (compose user-friendly-profile absolutize)
profiles))
(settings (search-path-environment-variables entries profiles
#:kind kind)))
(define (display-search-path-hint entries profile)
"Display a hint on how to set environment variables to use ENTRIES, a list
of manifest entries, in the context of PROFILE."
(let* ((profile (user-friendly-profile (absolutize profile)))
(settings (search-path-environment-variables entries (list profile)
#:kind 'prefix)))
(unless (null? settings)
(format #t (G_ "The following environment variable definitions may be needed:~%"))
(format #t "~{ ~a~%~}" settings))))
(display-hint (format #f (G_ "Consider setting the necessary environment
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 (srfi srfi-64))
(define-syntax-rule (define-with-source object source expr)
(begin
(define object expr)
(define source 'expr)))
(test-begin "print")
(define pkg
(define-with-source pkg pkg-source
(package
(name "test")
(version "1.2.3")
@ -43,9 +48,8 @@
(description "This is a dummy package.")
(license gpl3+)))
(test-equal "simple package"
(package->code pkg)
'(package
(define-with-source pkg-with-inputs pkg-with-inputs-source
(package
(name "test")
(version "1.2.3")
(source (origin
@ -56,9 +60,19 @@
(base32
"070pwb7brdcn1mfvplkd56vjc7lbz4iznzkqvfsakvgbv68k71ah"))))
(build-system gnu-build-system)
(inputs `(("coreutils" ,(@ (gnu packages base) coreutils))
("glibc" ,(@ (gnu packages base) glibc) "debug")))
(home-page "http://gnu.org")
(synopsis "Dummy")
(description "This is a dummy package.")
(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")