[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
01/02: Merge branch 'master' into core-updates
From: |
guix-commits |
Subject: |
01/02: Merge branch 'master' into core-updates |
Date: |
Sun, 18 Jul 2021 13:58:48 -0400 (EDT) |
civodul pushed a commit to branch core-updates
in repository guix.
commit 0e47fcced442d8e7c1b05184fdc1c14f10ed04ec
Merge: e4b70bc 8b1bde7
Author: Ludovic Courtès <ludo@gnu.org>
AuthorDate: Sun Jul 18 16:05:21 2021 +0200
Merge branch 'master' into core-updates
.dir-locals.el | 1 +
.guix-authorizations | 2 -
.mailmap | 5 +-
Makefile.am | 61 +-
NEWS | 8 +-
build-aux/compile-all.scm | 46 +-
doc/build.scm | 11 +-
doc/contributing.texi | 66 +-
doc/guix-cookbook.texi | 51 +-
doc/guix.texi | 132 +-
etc/guix-daemon.conf.in | 2 +-
etc/guix-daemon.service.in | 3 +-
etc/guix-install.sh | 26 +-
etc/init.d/guix-daemon.in | 2 +-
etc/news.scm | 28 +
etc/openrc/guix-daemon.in | 2 +-
etc/snippets/scheme-mode/guix-origin | 4 +-
gnu/installer/newt/partition.scm | 6 +-
gnu/installer/newt/services.scm | 25 +-
gnu/installer/services.scm | 9 +-
gnu/installer/steps.scm | 2 +-
gnu/installer/tests.scm | 11 +-
gnu/local.mk | 16 +-
gnu/packages/abiword.scm | 6 +-
gnu/packages/ada.scm | 40 -
gnu/packages/admin.scm | 37 +-
gnu/packages/algebra.scm | 94 +-
gnu/packages/animation.scm | 6 +-
gnu/packages/antivirus.scm | 4 +-
gnu/packages/astronomy.scm | 8 +-
gnu/packages/audio.scm | 62 +-
gnu/packages/aux-files/linux-libre/4.14-arm.conf | 4 +-
gnu/packages/aux-files/linux-libre/4.14-i686.conf | 4 +-
.../aux-files/linux-libre/4.14-x86_64.conf | 6 +-
gnu/packages/aux-files/linux-libre/4.19-arm.conf | 4 +-
gnu/packages/aux-files/linux-libre/4.19-arm64.conf | 4 +-
gnu/packages/aux-files/linux-libre/4.19-i686.conf | 4 +-
.../aux-files/linux-libre/4.19-x86_64.conf | 6 +-
gnu/packages/aux-files/linux-libre/4.9-i686.conf | 4 +-
gnu/packages/aux-files/linux-libre/4.9-x86_64.conf | 6 +-
gnu/packages/aux-files/linux-libre/5.10-i686.conf | 4 +-
.../aux-files/linux-libre/5.10-x86_64.conf | 6 +-
gnu/packages/aux-files/linux-libre/5.12-i686.conf | 4 +-
.../aux-files/linux-libre/5.12-x86_64.conf | 6 +-
.../linux-libre/{5.4-arm.conf => 5.13-arm.conf} | 1731 +++++++++++-----
.../{5.4-arm64.conf => 5.13-arm64.conf} | 2135 +++++++++++++++-----
.../linux-libre/{5.12-i686.conf => 5.13-i686.conf} | 174 +-
.../{5.12-x86_64.conf => 5.13-x86_64.conf} | 210 +-
gnu/packages/aux-files/linux-libre/5.4-arm.conf | 4 +-
gnu/packages/aux-files/linux-libre/5.4-arm64.conf | 4 +-
gnu/packages/aux-files/linux-libre/5.4-i686.conf | 4 +-
gnu/packages/aux-files/linux-libre/5.4-x86_64.conf | 6 +-
gnu/packages/backup.scm | 78 +-
gnu/packages/benchmark.scm | 4 +-
gnu/packages/bioconductor.scm | 162 +-
gnu/packages/bioinformatics.scm | 112 +-
gnu/packages/bittorrent.scm | 38 +-
gnu/packages/bootloaders.scm | 6 +-
gnu/packages/c.scm | 20 +
gnu/packages/calendar.scm | 4 +-
gnu/packages/certs.scm | 52 +
gnu/packages/check.scm | 70 +-
gnu/packages/chromium.scm | 4 +-
gnu/packages/compression.scm | 112 +-
gnu/packages/connman.scm | 7 +-
gnu/packages/cpp.scm | 4 +-
gnu/packages/cran.scm | 847 +++++---
gnu/packages/crates-graphics.scm | 38 +-
gnu/packages/crates-io.scm | 1222 ++++++++++-
gnu/packages/crypto.scm | 14 +-
gnu/packages/cups.scm | 10 +-
gnu/packages/databases.scm | 33 +-
gnu/packages/dbm.scm | 2 +-
gnu/packages/distributed.scm | 11 +-
gnu/packages/education.scm | 61 +-
gnu/packages/elixir.scm | 5 +-
gnu/packages/emacs-xyz.scm | 708 ++++---
gnu/packages/embedded.scm | 3 +-
gnu/packages/emulators.scm | 230 ++-
gnu/packages/engineering.scm | 46 +-
gnu/packages/erlang.scm | 29 +-
gnu/packages/file-systems.scm | 180 +-
gnu/packages/finance.scm | 8 +-
gnu/packages/fontutils.scm | 4 +-
gnu/packages/fpga.scm | 8 +-
gnu/packages/ftp.scm | 139 +-
gnu/packages/game-development.scm | 123 +-
gnu/packages/games.scm | 152 +-
gnu/packages/gcc.scm | 77 +
gnu/packages/geo.scm | 87 +-
gnu/packages/gettext.scm | 4 +-
gnu/packages/glib.scm | 28 +-
gnu/packages/gnome.scm | 120 +-
gnu/packages/gnupg.scm | 31 +
gnu/packages/gnuzilla.scm | 17 +-
gnu/packages/golang.scm | 1164 +++++++++++
gnu/packages/gpodder.scm | 4 +-
gnu/packages/graph.scm | 3 -
gnu/packages/graphics.scm | 29 +-
gnu/packages/gtk.scm | 69 +-
gnu/packages/guile-xyz.scm | 51 +-
gnu/packages/hardware.scm | 80 +
gnu/packages/haskell-apps.scm | 29 +-
gnu/packages/haskell-check.scm | 52 +-
gnu/packages/haskell-xyz.scm | 162 +-
gnu/packages/hunspell.scm | 4 +-
gnu/packages/image-processing.scm | 179 +-
gnu/packages/image-viewers.scm | 171 ++
gnu/packages/image.scm | 26 +-
gnu/packages/irc.scm | 4 +-
gnu/packages/jami.scm | 3 +-
gnu/packages/java-compression.scm | 14 +-
gnu/packages/julia-jll.scm | 6 +-
gnu/packages/julia-xyz.scm | 31 +
gnu/packages/julia.scm | 8 +-
gnu/packages/jupyter.scm | 74 +-
gnu/packages/kde-utils.scm | 86 +-
gnu/packages/kde.scm | 7 +-
gnu/packages/language.scm | 6 +-
gnu/packages/less.scm | 4 +-
gnu/packages/libreoffice.scm | 2 +
gnu/packages/license.scm | 6 +-
gnu/packages/linux.scm | 410 ++--
gnu/packages/lisp-check.scm | 63 +
gnu/packages/lisp-xyz.scm | 970 ++++++++-
gnu/packages/lisp.scm | 12 +-
gnu/packages/machine-learning.scm | 25 +
gnu/packages/mail.scm | 113 +-
gnu/packages/make-bootstrap.scm | 32 +-
gnu/packages/man.scm | 6 +-
gnu/packages/maths.scm | 137 +-
gnu/packages/mes.scm | 9 +-
gnu/packages/messaging.scm | 19 +-
gnu/packages/mpd.scm | 4 +-
gnu/packages/mtools.scm | 25 +-
gnu/packages/music.scm | 67 +-
gnu/packages/networking.scm | 127 +-
gnu/packages/ocaml.scm | 147 +-
gnu/packages/package-management.scm | 91 +-
gnu/packages/parallel.scm | 4 +-
gnu/packages/pascal.scm | 4 +-
gnu/packages/password-utils.scm | 27 +-
gnu/packages/patches/ark-skip-xar-test.patch | 44 +
gnu/packages/patches/connman-CVE-2021-33833.patch | 74 -
.../emacs-telega-patch-server-functions.patch | 31 -
.../patches/emacs-telega-path-placeholder.patch | 44 +
gnu/packages/patches/go-fix-script-tests.patch | 18 +
gnu/packages/patches/libgrss-CVE-2016-2001.patch | 101 +
.../patches/oneko-remove-nonfree-characters.patch | 307 +++
gnu/packages/patches/proot-test-fhs.patch | 98 -
gnu/packages/patches/python-seaborn-kde-test.patch | 36 +
.../patches/tor-fix-build-with-gcc-7.patch | 30 -
.../transmission-remote-gtk-fix-appstream.patch | 61 +
gnu/packages/patches/upower-builddir.patch | 24 +-
.../vtk-8-fix-freetypetools-build-failure.patch | 36 +
gnu/packages/patches/ytfzf-programs.patch | 643 ++++++
gnu/packages/patches/ytfzf-updates.patch | 44 +
gnu/packages/pdf.scm | 14 +-
gnu/packages/perl-check.scm | 25 +
gnu/packages/perl.scm | 178 ++
gnu/packages/photo.scm | 8 +-
gnu/packages/php.scm | 3 +
gnu/packages/protobuf.scm | 27 +-
gnu/packages/python-check.scm | 13 +-
gnu/packages/python-crypto.scm | 95 +-
gnu/packages/python-science.scm | 102 +
gnu/packages/python-web.scm | 132 +-
gnu/packages/python-xyz.scm | 402 ++--
gnu/packages/qt.scm | 176 +-
gnu/packages/radio.scm | 91 +-
gnu/packages/readline.scm | 4 +-
gnu/packages/rpc.scm | 14 +-
gnu/packages/ruby.scm | 58 +-
gnu/packages/rust-apps.scm | 66 +-
gnu/packages/rust.scm | 2 +-
gnu/packages/security-token.scm | 50 +
gnu/packages/shellutils.scm | 9 +-
gnu/packages/simulation.scm | 109 +-
gnu/packages/sphinx.scm | 95 +-
gnu/packages/statistics.scm | 87 +-
gnu/packages/syncthing.scm | 41 +-
gnu/packages/syndication.scm | 12 +-
gnu/packages/task-management.scm | 29 +-
gnu/packages/tex.scm | 119 ++
gnu/packages/text-editors.scm | 70 +-
gnu/packages/textutils.scm | 4 +-
gnu/packages/time.scm | 17 +-
gnu/packages/tls.scm | 40 +-
gnu/packages/tmux.scm | 4 +-
gnu/packages/tor.scm | 51 +-
gnu/packages/toys.scm | 69 +-
gnu/packages/video.scm | 276 ++-
gnu/packages/vim.scm | 13 +-
gnu/packages/virtualization.scm | 27 +-
gnu/packages/vnc.scm | 7 +-
gnu/packages/vpn.scm | 214 +-
gnu/packages/web-browsers.scm | 24 +-
gnu/packages/web.scm | 20 +-
gnu/packages/wm.scm | 34 +
gnu/packages/wxwidgets.scm | 13 +-
gnu/packages/xdisorg.scm | 5 +-
gnu/packages/xorg.scm | 33 +-
gnu/packages/zile.scm | 21 +-
gnu/services/base.scm | 45 +-
gnu/services/certbot.scm | 9 +-
gnu/services/configuration.scm | 38 +-
gnu/services/networking.scm | 4 +-
gnu/services/security-token.scm | 6 +-
gnu/services/virtualization.scm | 14 +-
gnu/services/vpn.scm | 157 ++
gnu/system.scm | 4 +-
gnu/system/file-systems.scm | 46 +-
gnu/system/linux-initrd.scm | 4 +-
gnu/system/vm.scm | 2 +-
gnu/tests/install.scm | 2 +-
guix.scm | 1 -
guix/build-system/qt.scm | 6 +
guix/build/download.scm | 36 +-
guix/build/node-build-system.scm | 9 +-
guix/build/pack.scm | 54 +
guix/build/qt-build-system.scm | 107 +-
guix/build/qt-utils.scm | 151 +-
guix/build/syscalls.scm | 4 +-
guix/ci.scm | 129 +-
guix/cpio.scm | 16 +-
guix/docker.scm | 48 +-
guix/gexp.scm | 20 +
guix/import/cabal.scm | 27 +-
guix/import/go.scm | 329 +--
guix/import/opam.scm | 2 +-
guix/licenses.scm | 6 +
guix/lint.scm | 274 ++-
guix/profiles.scm | 2 +-
guix/scripts/deploy.scm | 15 +-
guix/scripts/pack.scm | 558 +++--
guix/scripts/package.scm | 37 +-
guix/scripts/pull.scm | 20 +-
guix/scripts/substitute.scm | 4 +-
guix/scripts/system/reconfigure.scm | 9 +-
guix/scripts/weather.scm | 17 +-
guix/self.scm | 5 +-
guix/status.scm | 3 +-
guix/substitutes.scm | 13 +-
guix/ui.scm | 91 +-
guix/utils.scm | 33 +-
tests/gexp.scm | 31 +
tests/go.scm | 132 +-
tests/hackage.scm | 42 +
tests/lint.scm | 172 +-
tests/pack.scm | 94 +-
tests/services/configuration.scm | 12 +
251 files changed, 17094 insertions(+), 4822 deletions(-)
diff --cc etc/news.scm
index 9713514,88d23d7..b4a0806
--- a/etc/news.scm
+++ b/etc/news.scm
@@@ -23,31 -23,34 +23,59 @@@
(channel-news
(version 0)
+ (entry (commit "f23803af2018a148fb088f2516d79c20d6bf95f0")
+ (title
+ (en "Input labels can now be omitted in package definitions"))
+ (body
+ (en "If you have written package definitions before, you may know
+that package inputs required a bit of boilerplate: each input needs to have an
+associated label (a string), which you can refer to in ``build-side code''.
+
+Input labels are now unnecessary, meaning that you can write code like:
+
+@lisp
+(package
+ ;; @dots{}
+ (inputs (list libunistring libffi libgc)))
+@end lisp
+
+Notice that the @code{inputs} field is simplified compared to the ``old
+style''. When needed, you can now use g-expressions (gexps) to refer to
+another package in build-side code. Additionally, the new
+@code{modify-inputs} macro facilitates common operations on inputs---deleting,
+replacing, adding inputs.
+
+To ease transition to the ``new style'', a new @command{guix style} command is
+provided. Run @command{info \"(guix) Invoking guix style\"} for more
info.")))
+
+ (entry (commit "82daab42811a2e3c7684ebdf12af75ff0fa67b99")
+ (title
+ (en "New @samp{deb} format for the @command{guix pack} command")
+ (de "Neues Format @samp{deb} für den Befehl @command{guix pack}"))
+ (body
+ (en "Debian archives (with the .deb file extension) can now be
+ produced via the @command{guix pack --format=deb} command, providing an
+ alternative distribution path for software built with Guix. Here is a simple
+ example that generates a Debian archive for the @code{hello} package:
+
+ @example
+ guix pack --format=deb --symlink=/usr/bin/hello=bin/hello hello
+ @end example
+
+ See @command{info \"(guix) Invoking guix pack\"} for more information.")
+ (de "Debian-Archive (mit der Dateinamenserweiterung .deb) können
+ jetzt auch mit dem Befehl @command{guix pack --format=deb} erzeugt werden, um
+ mit Guix erstellte Software auf andere Art anzubieten. Hier sehen Sie ein
+ einfaches Beispiel, wie ein Debian-Archiv für das Paket @code{hello} angelegt
+ wird:
+
+ @example
+ guix pack --format=deb --symlink=/usr/bin/hello=bin/hello hello
+ @end example
+
+ Siehe @command{info \"(guix.de) Aufruf von guix pack\"} für mehr
+ Informationen.")))
+
(entry (commit "bdc298ecee15283451d3aa20a849dd7bb22c8538")
(title
(en "New @command{guix import egg} command")
diff --cc gnu/local.mk
index bc9a34f,62a5e41..54e5c67
--- a/gnu/local.mk
+++ b/gnu/local.mk
@@@ -40,9 -40,9 +40,10 @@@
# Copyright © 2020 Malte Frank Gerdes <mate.f.gerdes@gmail.com>
# Copyright © 2020 Vinicius Monego <monego@posteo.net>
# Copyright © 2021 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
+# Copyright © 2021 Greg Hogan <code@greghogan.com>
# Copyright © 2021 Philip McGrath <philip@philipmcgrath.com>
# Copyright © 2021 Arun Isaac <arunisaac@systemreboot.net>
+ # Copyright © 2021 Sharlatan Hellseher <sharlatanus@gmail.com>
#
# This file is part of GNU Guix.
#
@@@ -927,8 -925,6 +930,7 @@@ dist_patch_DATA =
%D%/packages/patches/collectd-5.11.0-noinstallvar.patch \
%D%/packages/patches/combinatorial-blas-awpm.patch \
%D%/packages/patches/combinatorial-blas-io-fix.patch \
- %D%/packages/patches/connman-CVE-2021-33833.patch \
+ %D%/packages/patches/coreutils-gnulib-tests.patch \
%D%/packages/patches/coreutils-ls.patch \
%D%/packages/patches/cpufrequtils-fix-aclocal.patch \
%D%/packages/patches/crawl-upgrade-saves.patch \
@@@ -1821,8 -1861,12 +1827,10 @@@
%D%/packages/patches/xsane-support-ipv6.patch \
%D%/packages/patches/xsane-tighten-default-umask.patch \
%D%/packages/patches/yggdrasil-extra-config.patch \
+ %D%/packages/patches/ytfzf-programs.patch \
+ %D%/packages/patches/ytfzf-updates.patch \
%D%/packages/patches/ytnef-CVE-2021-3403.patch \
- %D%/packages/patches/ytnef-CVE-2021-3404.patch \
- %D%/packages/patches/zstd-CVE-2021-24031_CVE-2021-24032.patch \
- %D%/packages/patches/zziplib-CVE-2018-16548.patch
+ %D%/packages/patches/ytnef-CVE-2021-3404.patch
MISC_DISTRO_FILES = \
%D%/packages/ld-wrapper.in
diff --cc gnu/packages/algebra.scm
index 7c64f44,533b1f0..6e7ecda
--- a/gnu/packages/algebra.scm
+++ b/gnu/packages/algebra.scm
@@@ -4,10 -4,10 +4,10 @@@
;;; Copyright © 2016, 2017, 2018, 2019, 2020, 2021 Nicolas Goaziou
<mail@nicolasgoaziou.fr>
;;; Copyright © 2014, 2018 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2016, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
-;;; Copyright © 2017, 2020 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2017, 2020, 2021 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2017–2021 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
- ;;; Copyright © 2017, 2019 Eric Bavier <bavier@member.fsf.org>
+ ;;; Copyright © 2017, 2019, 2021 Eric Bavier <bavier@posteo.net>
;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
diff --cc gnu/packages/certs.scm
index 82e5b8c,e15a966..37e3fa6
--- a/gnu/packages/certs.scm
+++ b/gnu/packages/certs.scm
@@@ -4,8 -4,7 +4,9 @@@
;;; Copyright © 2016, 2017 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
;;; Copyright © 2017, 2018 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2021 Efraim Flashner <efraim@flashner.co.il>
+ ;;; Copyright © 2021 Raghav Gururajan <rg@raghavgururajan.name>
;;;
;;; This file is part of GNU Guix.
;;;
@@@ -25,48 -24,105 +26,99 @@@
(define-module (gnu packages certs)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (guix packages)
+ #:use-module (guix utils)
#:use-module (guix download)
+ #:use-module (guix git-download)
+ #:use-module (guix build-system copy)
#:use-module (guix build-system gnu)
#:use-module (guix build-system trivial)
#:use-module (gnu packages)
+ #:use-module (gnu packages nss)
+ #:use-module (gnu packages curl)
+ #:use-module (gnu packages python)
#:use-module (gnu packages perl)
#:use-module (gnu packages tls))
+ (define-public desec-certbot-hook
+ (let ((commit "68da7abc0793602fd336962a7e2348b57c5d6fd6")
+ (revision "0"))
+ (package
+ (name "desec-certbot-hook")
+ (version
+ (git-version "0" revision commit))
+ (source
+ (origin
+ (method git-fetch)
+ (uri
+ (git-reference
+ (url "https://github.com/desec-io/desec-certbot-hook")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "0qjqk6i85b1y7fgzcx74r4gn2i4dkjza34hkzp6kyn9hrb8f2gv2"))))
+ (build-system copy-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-script
+ (lambda* (#:key inputs #:allow-other-keys)
+ (substitute* "hook.sh"
+ ;; The hook-script look for '.dedynauth' file in $PWD.
+ ;; But users cannot create or edit files in store.
+ ;; So we patch the hook-script to look for '.dedynauth' file,
+ ;; in /etc/desec.
+ (("\\$\\(pwd\\)")
+ "/etc/desec")
+ ;; Make absolute reference to curl program.
+ (("curl")
+ (string-append (assoc-ref inputs "curl")
+ "/bin/curl"))))))
+ #:install-plan
+ '(("." "etc/desec" #:include ("hook.sh")))))
+ (inputs
+ `(("curl" ,curl)))
+ (synopsis "Certbot DNS challenge automatization for deSEC")
+ (description "The deSEC can be used to obtain certificates with certbot
+ DNS ownership verification. With the help of this hook script, you can obtain
+ your Let's Encrypt certificate using certbot with authorization provided by
the
+ DNS challenge mechanism, that is, you will not need a running web server or
any
+ port forwarding to your local machine.")
+ (home-page "https://desec.io")
+ (license license:expat))))
+
(define certdata2pem
- (package
- (name "certdata2pem")
- (version "2013")
- (source
- (origin
- (method url-fetch)
- (uri
-
"http://pkgs.fedoraproject.org/cgit/ca-certificates.git/plain/certdata2pem.py?id=053dde8a2f5901e97028a58bf54e7d0ef8095a54")
- (file-name "certdata2pem.py")
- (sha256
- (base32
- "0zscrm41gnsf14zvlkxhy00h3dmgidyz645ldpda3y3vabnwv8dx"))))
- (build-system trivial-build-system)
- (inputs
- `(("python" ,python-2)))
- (arguments
- `(#:modules ((guix build utils))
- #:builder
- (begin
- (use-modules (guix build utils))
- (let ((bin (string-append %output "/bin")))
- (copy-file (assoc-ref %build-inputs "source") "certdata2pem.py")
- (chmod "certdata2pem.py" #o555)
- (substitute* "certdata2pem.py"
- (("/usr/bin/python")
- (string-append (assoc-ref %build-inputs "python")
- "/bin/python"))
- ;; Use the file extension .pem instead of .crt.
- (("crt") "pem"))
- (mkdir-p bin)
- (copy-file "certdata2pem.py"
- (string-append bin "/certdata2pem.py"))
- #t))))
- (synopsis "Python script to extract .pem data from certificate collection")
- (description
- "certdata2pem.py is a Python script to transform X.509 certificate
-\"source code\" as contained, for example, in the Mozilla sources, into
-.pem formatted certificates.")
- (license license:gpl2+)
- (home-page "http://pkgs.fedoraproject.org/cgit/ca-certificates.git/")))
+ (let ((revision "1")
+ (commit "4c576f350f44186d439179f63d5be19f710a73f5"))
+ (package
+ (name "certdata2pem")
+ (version "0.0.0") ;no version
+ (source (origin
+ (method url-fetch)
+ (uri (string-append
+
"https://raw.githubusercontent.com/sabotage-linux/sabotage/"
+ commit "/KEEP/certdata2pem.c"))
+ (sha256
+ (base32
+ "1rywp29q4l1cs2baplkbcravxqs4kw2cys4yifhfznbc210pskq6"))))
+ (build-system gnu-build-system)
+ (arguments
+ `(#:phases (modify-phases %standard-phases
+ (delete 'configure)
+ (replace 'build
+ (lambda _
+ (invoke ,(cc-for-target) "certdata2pem.c"
+ "-o" "certdata2pem")))
+ (delete 'check) ;no test suite
+ (replace 'install
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let ((out (assoc-ref outputs "out")))
+ (install-file "certdata2pem"
+ (string-append out "/bin"))))))))
+ (home-page "https://github.com/sabotage-linux/")
+ (synopsis "Utility to split TLS certificates data into multiple PEM
files")
+ (description "This is a C version of the certdata2pem Python utility
+that was originally contributed to Debian.")
+ (license license:isc))))
(define-public nss-certs
(package
diff --cc gnu/packages/check.scm
index 73874c2,6374493..fbdc46c
--- a/gnu/packages/check.scm
+++ b/gnu/packages/check.scm
@@@ -35,7 -35,8 +35,8 @@@
;;; Copyright © 2020 Josh Marshall <joshua.r.marshall.1991@gmail.com>
;;; Copyright © 2020 Vinicius Monego <monego@posteo.net>
;;; Copyright © 2020 Tanguy Le Carrour <tanguy@bioneland.org>
-;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+ ;;; Copyright © 2021 Hugo Lecomte <hugo.lecomte@inria.fr>
;;;
;;; This file is part of GNU Guix.
;;;
diff --cc gnu/packages/fontutils.scm
index 8ea893e,9c7393b..b7ac19f
--- a/gnu/packages/fontutils.scm
+++ b/gnu/packages/fontutils.scm
@@@ -852,8 -808,10 +852,8 @@@ maintain the Noto Fonts project."
(file-name (git-file-name name version))
(sha256
(base32
- "0314r038jl17hrhc9nrbx30jk0pz8ckbdnizws4r46b1rf4h0b1f"))))
+ "00rwh5qfayihrq0wjx8pxqw5ah6g5ym6raxvdbqb6g6rk7m2j423"))))
(build-system meson-build-system)
- (arguments
- `(#:meson ,meson-0.55))
(native-inputs
`(("check" ,check)
("gcc" ,gcc-10) ;TODO: Remove when the default compiler is > GCC 7.
diff --cc gnu/packages/game-development.scm
index 6009400,e1593c0..e24b7bb
--- a/gnu/packages/game-development.scm
+++ b/gnu/packages/game-development.scm
@@@ -1244,12 -1251,14 +1251,13 @@@ developed mainly for Ren'py."
`(("python2-future" ,python2-future)
("python2-pygame" ,python2-pygame-sdl2)))
(native-inputs
- `(("python2-cython" ,python2-cython)
- ("xdg-utils" ,xdg-utils)))
- `(("gcc" ,gcc-8) ; for const variables as initializer elements
- ("python2-cython" ,python2-cython)))
++ `(("python2-cython" ,python2-cython)))
(home-page "https://www.renpy.org/")
(synopsis "Ren'py python module")
- (description "This package contains the shared libraries and Python
- modules of Ren'py.")
+ (description "This package contains the shared libraries and Python
modules
+ of Ren'py. While functional, they are not meaningful on their own without
+ the launcher and common Ren'py code provided by the @code{renpy} package and
+ are only used to bootstrap it.")
(license license:expat)))
(define-public renpy
@@@ -1422,15 -1445,32 +1444,32 @@@ if __name__ == \"__main__\"
#t))
(replace 'wrap
(lambda* (#:key inputs outputs #:allow-other-keys)
- (wrap-program (string-append (assoc-ref outputs "out")
- "/bin/renpy")
- `("GUIX_PYTHONPATH" = (,(getenv "GUIX_PYTHONPATH"))))
- #t)))))
+ (let ((out (assoc-ref outputs "out"))
+ (site (string-append "/lib/python"
+ (python-version
+ (assoc-ref inputs "python"))
+ "/site-packages")))
+ (wrap-program (string-append out "/bin/renpy")
- `("PYTHONPATH" =
++ `("GUIX_PYTHONPATH" =
+ (,@(delete-duplicates
+ (map
+ (lambda (store-path)
+ (string-append store-path site))
+ (cons (assoc-ref outputs "out")
+ (map cdr
+ (filter
+ (lambda (input)
+ (string-prefix? "python2" (car input)))
+ inputs))))))))
+ #t))))))
(inputs
- `(("python2-tkinter" ,python-2 "tk")
- ("python2-pygame" ,python2-pygame-sdl2)
- ("python2-renpy" ,python2-renpy)
- ("xorg-server" ,xorg-server)))
+ `(("python2-renpy" ,python2-renpy)
+ ("python2-tkinter" ,python-2 "tk")
+ ("python2" ,python-2) ; for ‘fix-commands’ and ‘wrap’
+ ("xdg-utils" ,xdg-utils)))
+ (propagated-inputs '())
+ (native-inputs
+ `(("xorg-server" ,xorg-server-for-tests)))
(outputs
(list "out" "tutorial" "the-question"))
(home-page "https://www.renpy.org/")
diff --cc gnu/packages/gcc.scm
index 35f7d9a,2fe30b1..79994cc
--- a/gnu/packages/gcc.scm
+++ b/gnu/packages/gcc.scm
@@@ -732,11 -741,47 +733,47 @@@ as the 'native-search-paths' field.
`(modify-phases ,phases
(add-after 'install 'remove-broken-or-conflicting-files
(lambda* (#:key outputs #:allow-other-keys)
- (for-each delete-file
- (find-files (string-append (assoc-ref outputs "out")
"/bin")
-
".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc|gcc-.*)"))
- #t))))))))
+ (for-each
+ delete-file
+ (find-files (string-append (assoc-ref outputs "out") "/bin")
+
".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc|lto)(-.*)?$"))))))))))
+ (define* (custom-gcc-gccgo gcc name languages
+ #:optional
+ (search-paths (package-native-search-paths gcc))
+ #:key (separate-lib-output? #t))
+ ;; TODO: remove CUSTOM-GCC-GCCGO when regex changes for CUSTOM-GCC are
+ ;; merged into master <https://issues.guix.gnu.org/49010>
+ "Return a custom version of GCC that supports LANGUAGES. Use SEARCH-PATHS
+ as the 'native-search-paths' field."
+ (package (inherit gcc)
+ (name name)
+ (outputs (if separate-lib-output?
+ (package-outputs gcc)
+ (delete "lib" (package-outputs gcc))))
+ (native-search-paths search-paths)
+ (properties (alist-delete 'hidden? (package-properties gcc)))
+ (arguments
+ (substitute-keyword-arguments (package-arguments gcc)
+ ((#:modules modules %gnu-build-system-modules)
+ `(,@modules
+ (srfi srfi-1)
+ (srfi srfi-26)
+ (ice-9 regex)))
+ ((#:configure-flags flags)
+ `(cons (string-append "--enable-languages="
+ ,(string-join languages ","))
+ (remove (cut string-match "--enable-languages.*" <>)
+ ,flags)))
+ ((#:phases phases)
+ `(modify-phases ,phases
+ (add-after 'install 'remove-broken-or-conflicting-files
+ (lambda* (#:key outputs #:allow-other-keys)
+ (for-each
+ delete-file
+ (find-files (string-append (assoc-ref outputs "out") "/bin")
+
".*(c\\+\\+|cpp|g\\+\\+|gcov|gcc|lto)(-.*)?$"))))))))))
+
(define %generic-search-paths
;; This is the language-neutral search path for GCC. Entries in $CPATH are
;; not considered "system headers", which means GCC can raise warnings for
diff --cc gnu/packages/gnupg.scm
index bb6fa46,0eb6aff..629e837
--- a/gnu/packages/gnupg.scm
+++ b/gnu/packages/gnupg.scm
@@@ -18,7 -18,7 +18,8 @@@
;;; Copyright © 2018 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2020 Fredrik Salomonsson <plattfot@posteo.net>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
+ ;;; Copyright © 2021 Nikita Domnitskii <nikita@domnitskii.me>
;;;
;;; This file is part of GNU Guix.
;;;
@@@ -78,7 -80,7 +81,8 @@@
#:use-module (guix build-system gnu)
#:use-module (guix build-system perl)
#:use-module (guix build-system python)
+ #:use-module (ice-9 match)
+ #:use-module (guix build-system meson)
#:use-module (srfi srfi-1))
(define-public libgpg-error
diff --cc gnu/packages/gtk.scm
index a90db08,d92b9aa..5e9c9fe
--- a/gnu/packages/gtk.scm
+++ b/gnu/packages/gtk.scm
@@@ -77,16 -74,13 +77,17 @@@
#:use-module (gnu packages gl)
#:use-module (gnu packages glib)
#:use-module (gnu packages gnome)
+ #:use-module (gnu packages graphviz)
#:use-module (gnu packages icu4c)
#:use-module (gnu packages image)
+ #:use-module (gnu packages iso-codes)
#:use-module (gnu packages libffi)
#:use-module (gnu packages linux)
+ #:use-module (gnu packages m4)
+ #:use-module (gnu packages man)
#:use-module (gnu packages pdf)
#:use-module (gnu packages perl)
+ #:use-module (gnu packages perl-check)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages pretty-print)
#:use-module (gnu packages python)
diff --cc gnu/packages/make-bootstrap.scm
index 5c306c1,cdcb1dc..60b6f1b
--- a/gnu/packages/make-bootstrap.scm
+++ b/gnu/packages/make-bootstrap.scm
@@@ -1,6 -1,6 +1,6 @@@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic
Courtès <ludo@gnu.org>
+;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021
Ludovic Courtès <ludo@gnu.org>
- ;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
+ ;;; Copyright © 2017, 2021 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018, 2019 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2018, 2019, 2021 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
diff --cc gnu/packages/mes.scm
index ab41fc7,c66751b..75f8b1e
--- a/gnu/packages/mes.scm
+++ b/gnu/packages/mes.scm
@@@ -113,7 -116,15 +113,14 @@@ extensive examples, including parsers f
"GUILE_GLOBAL_SITE=\
$prefix/share/guile/site/$GUILE_EFFECTIVE_VERSION\n"))
#t))))
- (inputs (list guile-3.0))))
- (inputs
- `(("guile" ,guile-3.0)))
++ (inputs (list guile-3.0))
+ (description
+ "@acronym{NYACC, Not Yet Another Compiler Compiler} is set of Guile
modules
+ for generating parsers and lexical analyzers. It provides sample parsers,
+ pretty-printers using SXML trees as an intermediate representation, a decent C
+ parser and an `FFI Helper' tool to help create Guile Scheme bindings for
C-based
+ libraries. It also provides (partially implemented) compilers based on these
+ parsers to allow execution with Guile as extension languages.")))
(define-public nyacc-1.00.2
(package
diff --cc gnu/packages/ocaml.scm
index 1262c0e,727c7a0..fd09459
--- a/gnu/packages/ocaml.scm
+++ b/gnu/packages/ocaml.scm
@@@ -7110,3 -7176,33 +7176,34 @@@ libraries."
It makes it possible to run pure OCaml programs in JavaScript environment like
browsers and Node.js.")
(license license:lgpl2.1+)))
+
+ (define-public ocaml-bibtex2html
+ (package
+ (name "ocaml-bibtex2html")
+ (version "1.99")
+ (source
+ (origin
+ (method url-fetch)
+ (uri
"https://www.lri.fr/~filliatr/ftp/bibtex2html/bibtex2html-1.99.tar.gz")
+ (sha256 (base32
"07gzrs4lfrkvbn48cgn2gn6c7cx3jsanakkrb2irj0gmjzfxl96j"))))
+ (build-system ocaml-build-system)
+ (arguments
+ `(#:phases
+ (modify-phases %standard-phases
+ (add-after 'unpack 'patch-/bin/sh
+ (lambda _
+ (substitute* "configure" (("/bin/sh") (which "bash")))
+ (setenv "HOME" (getcwd)) ;; mktexfmt needs writable home
directory
+ #t)))))
+ (native-inputs
+ `(("which" ,which)
- ("texlive" ,(texlive-union (list texlive-fonts-ec texlive-preprint
- texlive-latex-hyperref
texlive-bibtex)))))
++ ("texlive" ,(texlive-updmap.cfg
++ (list texlive-fonts-ec texlive-preprint
++ texlive-latex-hyperref texlive-bibtex)))))
+ (propagated-inputs
+ `(("hevea" ,hevea)))
+ (home-page "https://www.lri.fr/~filliatr/bibtex2html/")
+ (synopsis "BibTeX to HTML translator")
+ (description "This package allows you to produce, from a set of
+ bibliography files in BibTeX format, a bibliography in HTML format.")
+ (license license:gpl2)))
diff --cc gnu/packages/python-xyz.scm
index 7504e9f,d8c3fbe..60c741e
--- a/gnu/packages/python-xyz.scm
+++ b/gnu/packages/python-xyz.scm
@@@ -17050,79 -17170,36 +17032,35 @@@ matters when code is run in production
happens using the @code{logging} library.")
(license license:gpl3+)))
- (define-public python2-larch
- (package
- (name "python2-larch")
- (version "1.20151025")
- (source
- (origin
- (method url-fetch)
- (uri (string-append
- "http://git.liw.fi/cgi-bin/cgit/cgit.cgi/larch/snapshot/larch-"
- version ".tar.gz"))
- (patches (search-patches
- "python2-larch-coverage-4.0a6-compatibility.patch"))
- (sha256
- (base32
- "1p4knkkavlqymgciz2wbcnfrdgdbafhg14maplnk4vbw0q8xs663"))))
- (build-system python-build-system)
- (arguments
- `(#:python ,python-2
- #:phases
- (modify-phases %standard-phases
- ;; check phase needs to be run before the build phase. If not,
- ;; coverage-test-runner looks for tests for the built source files,
- ;; and fails.
- (delete 'check)
- (add-before 'build 'check
- (lambda _ (invoke "make" "check"))))))
- (native-inputs
- `(("cmdtest" ,cmdtest)
- ("python2-coverage-test-runner" ,python2-coverage-test-runner)))
- (propagated-inputs
- `(("python2-tracing" ,python2-tracing)))
- (home-page "https://liw.fi/larch/")
- (synopsis "Python copy-on-write B-tree library")
- (description "@code{python2-larch} is an implementation of
- particular kind of B-tree, based on research by Ohad Rodeh. See
- @url{http://liw.fi/larch/ohad-btrees-shadowing-clones.pdf} for details
- on the data structure.
-
- The distinctive feature of this B-tree is that a node is never
- (conceptually) modified. Instead, all updates are done by
- copy-on-write. This makes it easy to clone a tree, and modify only the
- clone, while other processes access the original tree.")
- (license license:gpl3+)))
-
(define-public python-astroid
- (package
- (name "python-astroid")
- (version "2.4.2")
- (source
- (origin
- (method url-fetch)
- (uri (pypi-uri "astroid" version))
- (sha256
- (base32 "00xp5gqxidxvgg1bwd91myqzdf2fpb9cjwbdl3p7gwqvlk17hh1g"))
- (modules '((guix build utils)))
- (snippet
- '(begin
- ;; Check to see if the version pinning has been removed.
- (substitute* "astroid/__pkginfo__.py"
- (("==1\\.4\\.\\*") ">=1.4.0"))
- #t))))
- (build-system python-build-system)
- (propagated-inputs
- `(("python-lazy-object-proxy" ,python-lazy-object-proxy)
- ("python-six" ,python-six)
- ("python-wrapt" ,python-wrapt)))
- (native-inputs
- `(("python-dateutil" ,python-dateutil)
- ("python-pytest" ,python-pytest)
- ("python-pytest-runner" ,python-pytest-runner)))
- (home-page "https://github.com/PyCQA/astroid")
- (synopsis "Common base representation of python source code for pylint and
+ (let ((revision "1")
+ (commit "5f67396894c79c4661e357ec8bb03aa134a51109"))
+ (package
+ (name "python-astroid")
+ (version (git-version "2.4.2" revision commit))
+ (source
+ (origin
+ ;; The current 2.4.2 release doesn't support Python 3.9.
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://github.com/PyCQA/astroid")
+ (commit commit)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32 "1ir5716wqgz39jva7x9chhjy41yi3n7fkymb8snh5giwig8kyipk"))))
+ (build-system python-build-system)
+ (propagated-inputs
+ `(("python-lazy-object-proxy" ,python-lazy-object-proxy)
+ ("python-six" ,python-six)
+ ("python-wrapt" ,python-wrapt)))
+ (native-inputs
+ `(("python-dateutil" ,python-dateutil)
+ ("python-pytest" ,python-pytest)
+ ("python-pytest-runner" ,python-pytest-runner)))
+ (home-page "https://github.com/PyCQA/astroid")
+ (synopsis "Common base representation of python source code for pylint
and
other projects")
- (description "@code{python-astroid} provides a common base representation
+ (description "@code{python-astroid} provides a common base
representation
of python source code for projects such as pychecker, pyreverse, pylint, etc.
It provides a compatible representation which comes from the _ast module. It
diff --cc gnu/packages/rust.scm
index 2d29c2a,73f94a3..64b3e51
--- a/gnu/packages/rust.scm
+++ b/gnu/packages/rust.scm
@@@ -10,8 -10,7 +10,8 @@@
;;; Copyright © 2019 Ivan Petkov <ivanppetkov@gmail.com>
;;; Copyright © 2020, 2021 Jakub Kądziołka <kuba@kadziolka.net>
;;; Copyright © 2020 Pierre Langlois <pierre.langlois@gmx.com>
- ;;; Copyright © 2020 Matthew Kraai <kraai@ftbfs.org>
+ ;;; Copyright © 2020 Matthew James Kraai <kraai@ftbfs.org>
+;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
diff --cc gnu/packages/security-token.scm
index 2339d20,f8c9661..4bd1fe5
--- a/gnu/packages/security-token.scm
+++ b/gnu/packages/security-token.scm
@@@ -10,7 -10,7 +10,8 @@@
;;; Copyright © 2018 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2020 Raphaël Mélotte <raphael.melotte@mind.be>
;;; Copyright © 2021 Antero Mejr <antero@kodmin.com>
+;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
+ ;;; Copyright © 2021 Sergey Trofimov <sarg@sarg.org.ru>
;;;
;;; This file is part of GNU Guix.
;;;
diff --cc gnu/packages/simulation.scm
index ed9a4b8,14e91c8..26e26b3
--- a/gnu/packages/simulation.scm
+++ b/gnu/packages/simulation.scm
@@@ -1,6 -1,5 +1,6 @@@
;;; GNU Guix --- Functional package management for GNU
- ;;; Copyright © 2017, 2018, 2019, 2020 Paul Garlick
<pgarlick@tourbillion-technology.com>
+ ;;; Copyright © 2017, 2018, 2019, 2020, 2021 Paul Garlick
<pgarlick@tourbillion-technology.com>
+;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
diff --cc gnu/packages/statistics.scm
index 3f07066,e096ec2..5b203d9
--- a/gnu/packages/statistics.scm
+++ b/gnu/packages/statistics.scm
@@@ -12,7 -12,7 +12,8 @@@
;;; Copyright © 2017 Alex Kost <alezost@gmail.com>
;;; Copyright © 2018 Alex Branham <alex.branham@gmail.com>
;;; Copyright © 2020 Tim Howes <timhowes@lavabit.com>
+;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
+ ;;; Copyright © 2021 Bonface Munyoki Kilyungi <me@bonfacemunyoki.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@@ -5739,27 -5730,15 +5731,10 @@@ to any arbitrary string. In this case
(uri (pypi-uri "rpy2" version))
(sha256
(base32
- "1bs36rds5fq8821l5q85q2b25161rs9ppw5c26x0hjwj487gpcfj"))
- ;; These patches should be removed with the next release.
- (patches
- (list
- (origin
- (method url-fetch)
- (uri
"https://github.com/rpy2/rpy2/commit/04c57598f00145d868ea8da31ac1b1e7c49f7570.patch")
- (file-name "python-rpy2-fix-test-failure.patch")
- (sha256
- (base32
- "1lqd3yxjfx1rxrybcmnapy0r6ambg9myrb98q4nlfhpxanwfdbbh")))
- (origin
- (method url-fetch)
- (uri
"https://github.com/rpy2/rpy2/commit/685f67d0a6b47ea80e718116a10755019446aef7.patch")
- (file-name "python-rpy2-r-console-test-fix.patch")
- (sha256
- (base32
- "18wpvfaa4c13d44cb4sw88c3c7403xdy5m8h82wfq8fjmcq3cmzn")))))))
+ "1cysswxr5glrdblyl2zsmywcj7xhxn3wmyihxinrz9gm8gmaacax"))))
(build-system python-build-system)
(arguments
- '(#:modules ((ice-9 ftw)
- (srfi srfi-1)
- (srfi srfi-26)
- (guix build utils)
- (guix build python-build-system))
- #:phases
+ '(#:phases
(modify-phases %standard-phases
(replace 'check
(lambda* (#:key outputs inputs #:allow-other-keys)
diff --cc gnu/packages/tex.scm
index f8ef791,b404ca8..0bb102e
--- a/gnu/packages/tex.scm
+++ b/gnu/packages/tex.scm
@@@ -528,9 -457,42 +531,42 @@@ that are free software, including suppo
world.
This package contains the binaries.")
- (license (license:fsf-free "https://www.tug.org/texlive/copying.html"))
- (home-page "https://www.tug.org/texlive/")))
+ (license (license:fsf-free "https://www.tug.org/texlive/copying.html"))
+ (home-page "https://www.tug.org/texlive/")))
+ (define-public texlive-libkpathsea
+ (package/inherit texlive-bin
+ (name "texlive-libkpathsea")
+ (source
+ (origin
+ (inherit (package-source texlive-bin))
+ (snippet
+ `(begin
+ ,(origin-snippet (package-source texlive-bin))
+ (with-directory-excursion "texk"
+ (let ((preserved-directories '("." ".." "kpathsea")))
+ (for-each
+ delete-file-recursively
+ (scandir "."
+ (lambda (file)
+ (and (not (member file preserved-directories))
+ (eq? 'directory (stat:type (stat
file)))))))))))))
+ (arguments
+ (substitute-keyword-arguments (package-arguments texlive-bin)
+ ((#:configure-flags flags)
+ `(cons* "--disable-all-pkgs" "--enable-kpathsea"
+ "--enable-shared" ,flags))
+ ((#:phases phases)
+ `(modify-phases %standard-phases
+ (add-after 'install 'post-install
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (with-directory-excursion "texk/kpathsea"
+ (invoke "make" "install"))))))))
+ (inputs '())
+ (synopsis "Path searching library")
+ (description "kpathsea is a library, whose purpose is to return a filename
+ from a list of user-specified directories similar to how shells look up
+ executables. It is maintained as a part of TeX Live.")))
(define texlive-docstrip
(package
diff --cc gnu/packages/tls.scm
index 49f5dd1,c1e8b46..58876a4
--- a/gnu/packages/tls.scm
+++ b/gnu/packages/tls.scm
@@@ -15,10 -15,9 +15,11 @@@
;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
+;;; Copyright © 2020, 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2021 Solene Rapenne <solene@perso.pw>
;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
+ ;;; Copyright © 2021 Matthew James Kraai <kraai@ftbfs.org>
;;;
;;; This file is part of GNU Guix.
;;;
diff --cc gnu/packages/virtualization.scm
index a969f1e,1bbcb46..136b0c4
--- a/gnu/packages/virtualization.scm
+++ b/gnu/packages/virtualization.scm
@@@ -1060,8 -1101,15 +1064,14 @@@ It started as a side project of LXC bu
(string-append "-Dinstall_prefix=" (assoc-ref %outputs "out"))
"--sysconfdir=/etc"
"--localstatedir=/var")
- #:meson ,meson-0.55
#:phases
(modify-phases %standard-phases
+ (add-after 'unpack 'skip-directory-confusion
+ (lambda _
+ ;; Don't try to install an (unused) /var outside of the store.
+ (substitute* "scripts/meson-install-dirs.py"
+ (("destdir = .*")
+ "destdir = '/tmp'"))))
(add-before 'configure 'disable-broken-tests
(lambda _
(let ((tests (list "commandtest" ; hangs idly
diff --cc gnu/packages/web.scm
index 47f2063,2cc8619..60417e1
--- a/gnu/packages/web.scm
+++ b/gnu/packages/web.scm
@@@ -47,9 -47,9 +47,10 @@@
;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
;;; Copyright © 2020, 2021 Ryan Prior <rprior@protonmail.com>
;;; Copyright © 2020 Alexandru-Sergiu Marton <brown121407@posteo.ro>
+;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at>
;;; Copyright © 2021 la snesne <lasnesne@lagunposprasihopre.org>
+ ;;; Copyright © 2021 Matthew James Kraai <kraai@ftbfs.org>
;;;
;;; This file is part of GNU Guix.
;;;
diff --cc gnu/packages/wm.scm
index f7a9dda,920a7cb..51034ca
--- a/gnu/packages/wm.scm
+++ b/gnu/packages/wm.scm
@@@ -908,6 -909,41 +909,39 @@@ experience."
(home-page "http://fluxbox.org/")
(license license:expat)))
+ (define-public fnott
+ (package
+ (name "fnott")
+ (version "1.1.0")
+ (source (origin
+ (method git-fetch)
+ (uri (git-reference
+ (url "https://codeberg.org/dnkl/fnott")
+ (commit version)))
+ (file-name (git-file-name name version))
+ (sha256
+ (base32
+ "1xaz13iry3fdjhqk9xzg29kbv7hqj8dzzqxr5mhrj8f2m013jdc3"))))
+ (build-system meson-build-system)
- (arguments
- `( #:meson ,meson-0.55
- #:build-type "release"))
++ (arguments `(#:build-type "release"))
+ (native-inputs
+ `(("pkg-config" ,pkg-config)
+ ("wayland-protocols" ,wayland-protocols)
+ ("tllist" ,tllist)
+ ("gcc" ,gcc-10) ;TODO: Remove when the default compiler is > GCC 7.
+ ("scdoc" ,scdoc)))
+ (inputs
+ `(("wlroots" ,wlroots)
+ ("wayland" ,wayland)
+ ("fcft" ,fcft)
+ ("dbus" ,dbus)
+ ("libpng" ,libpng)))
+ (home-page "https://codeberg.org/dnkl/fnott")
+ (synopsis "Keyboard driven and lightweight Wayland notification daemon")
+ (description "Fnott is a keyboard driven and lightweight notification
daemon
+ for wlroots-based Wayland compositors.")
+ (license license:expat)))
+
(define-public awesome
(package
(name "awesome")
diff --cc gnu/packages/xorg.scm
index b54523f,6a7849f..9978480
--- a/gnu/packages/xorg.scm
+++ b/gnu/packages/xorg.scm
@@@ -29,7 -29,7 +29,8 @@@
;;; Copyright © 2021 Nicolò Balzarotti <nicolo@nixo.xyz>
;;; Copyright © 2021 Matthew James Kraai <kraai@ftbfs.org>
;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
+;;; Copyright © 2021 Matthew James Kraai <kraai@ftbfs.org>
+ ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;;
;;; This file is part of GNU Guix.
;;;
diff --cc guix/build-system/qt.scm
index ccee89d,e1368db..003a065
--- a/guix/build-system/qt.scm
+++ b/guix/build-system/qt.scm
@@@ -22,8 -23,9 +23,10 @@@
(define-module (guix build-system qt)
#:use-module (guix store)
#:use-module (guix utils)
+ #:use-module (guix gexp)
+ #:use-module (guix monads)
+ #:use-module ((guix build qt-utils)
+ #:select (%qt-wrap-excluded-inputs))
- #:use-module (guix derivations)
#:use-module (guix search-paths)
#:use-module (guix build-system)
#:use-module (guix build-system cmake)
@@@ -123,8 -125,10 +127,9 @@@
(strip-flags ''("--strip-debug"))
(strip-directories ''("lib" "lib64" "libexec"
"bin" "sbin"))
- (phases '(@ (guix build qt-build-system)
- %standard-phases))
+ (phases '%standard-phases)
(qt-wrap-excluded-outputs ''())
+ (qt-wrap-excluded-inputs %qt-wrap-excluded-inputs)
(system (%current-system))
(imported-modules %qt-build-system-modules)
(modules '((guix build qt-build-system)
@@@ -132,39 -136,52 +137,40 @@@
"Build SOURCE using CMAKE, and with INPUTS. This assumes that SOURCE
provides a 'CMakeLists.txt' file as its build system."
(define builder
- `(begin
- (use-modules ,@modules)
- (qt-build #:source ,(match (assoc-ref inputs "source")
- (((? derivation? source))
- (derivation->output-path source))
- ((source)
- source)
- (source
- source))
- #:system ,system
- #:outputs %outputs
- #:inputs %build-inputs
- #:search-paths ',(map search-path-specification->sexp
- search-paths)
- #:phases ,phases
- #:qt-wrap-excluded-outputs ,qt-wrap-excluded-outputs
- #:qt-wrap-excluded-inputs ,qt-wrap-excluded-inputs
- #:configure-flags ,configure-flags
- #:make-flags ,make-flags
- #:out-of-source? ,out-of-source?
- #:build-type ,build-type
- #:tests? ,tests?
- #:test-target ,test-target
- #:parallel-build? ,parallel-build?
- #:parallel-tests? ,parallel-tests?
- #:validate-runpath? ,validate-runpath?
- #:patch-shebangs? ,patch-shebangs?
- #:strip-binaries? ,strip-binaries?
- #:strip-flags ,strip-flags
- #:strip-directories ,strip-directories)))
+ (with-imported-modules imported-modules
+ #~(begin
+ (use-modules #$@(sexp->gexp modules))
+ (qt-build #:source #+source
+ #:system #$system
+ #:outputs #$(outputs->gexp outputs)
+ #:inputs #$(input-tuples->gexp inputs)
+ #:search-paths '#$(sexp->gexp
+ (map search-path-specification->sexp
+ search-paths))
+ #:phases #$(if (pair? phases)
+ (sexp->gexp phases)
+ phases)
+ #:qt-wrap-excluded-outputs #$qt-wrap-excluded-outputs
++ #:qt-wrap-excluded-inputs #$qt-wrap-excluded-inputs
+ #:configure-flags #$configure-flags
+ #:make-flags #$make-flags
+ #:out-of-source? #$out-of-source?
+ #:build-type #$build-type
+ #:tests? #$tests?
+ #:test-target #$test-target
+ #:parallel-build? #$parallel-build?
+ #:parallel-tests? #$parallel-tests?
+ #:validate-runpath? #$validate-runpath?
+ #:patch-shebangs? #$patch-shebangs?
+ #:strip-binaries? #$strip-binaries?
+ #:strip-flags #$strip-flags
+ #:strip-directories #$strip-directories))))
- (define guile-for-build
- (match guile
- ((? package?)
- (package-derivation store guile system #:graft? #f))
- (#f ; the default
- (let* ((distro (resolve-interface '(gnu packages commencement)))
- (guile (module-ref distro 'guile-final)))
- (package-derivation store guile system #:graft? #f)))))
-
- (build-expression->derivation store name builder
- #:system system
- #:inputs inputs
- #:modules imported-modules
- #:outputs outputs
- #:guile-for-build guile-for-build))
+ (mlet %store-monad ((guile (package->derivation (or guile (default-guile))
+ system #:graft? #f)))
+ (gexp->derivation name builder
+ #:system system
+ #:guile-for-build guile)))
;;;
diff --cc guix/build/qt-build-system.scm
index ec7ceb3,a6955ce..c63bd5e
--- a/guix/build/qt-build-system.scm
+++ b/guix/build/qt-build-system.scm
@@@ -1,9 -1,8 +1,9 @@@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014 Federico Beffa <beffa@fbengineering.ch>
- ;;; Copyright © 2014, 2015, 2021 Ludovic Courtès <ludo@gnu.org>
+ ;;; Copyright © 2014, 2015 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2018 Mark H Weaver <mhw@netris.org>
- ;;; Copyright © 2019, 2020 Hartmut Goebel <h.goebel@crazy-compilers.com>
+ ;;; Copyright © 2019, 2020, 2021 Hartmut Goebel <h.goebel@crazy-compilers.com>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;;
;;; This file is part of GNU Guix.
;;;
diff --cc guix/lint.scm
index 198e091,ffd3f70..d76a2f5
--- a/guix/lint.scm
+++ b/guix/lint.scm
@@@ -79,7 -82,7 +82,8 @@@
#:export (check-description-style
check-inputs-should-be-native
check-inputs-should-not-be-an-input-at-all
+ check-input-labels
+ check-wrapper-inputs
check-patch-file-names
check-patch-headers
check-synopsis-style
@@@ -417,37 -503,49 +504,80 @@@ of a package, and INPUT-NAMES, a list o
(package-input-intersection (package-direct-inputs package)
input-names))))
+(define (check-input-labels package)
+ "Emit a warning for labels that differ from the corresponding package name."
+ (define (check input-kind package-inputs)
+ (define (warning label name)
+ (make-warning package
+ (G_ "label '~a' does not match package name '~a'")
+ (list label name)
+ #:field input-kind))
+
+ (append-map (match-lambda
+ (((? string? label) (? package? dependency))
+ (if (string=? label (package-name dependency))
+ '()
+ (list (warning label (package-name dependency)))))
+ (((? string? label) (? package? dependency) output)
+ (let ((expected (string-append (package-name dependency)
+ ":" output)))
+ (if (string=? label expected)
+ '()
+ (list (warning label expected)))))
+ (_
+ '()))
+ (package-inputs package)))
+
+ (append-map (match-lambda
+ ((kind proc)
+ (check kind proc)))
+ `((native-inputs ,package-native-inputs)
+ (inputs ,package-inputs)
+ (propagated-inputs ,package-propagated-inputs))))
+
+ (define (report-wrap-program-error package wrapper-name)
+ "Warn that \"bash-minimal\" is missing from 'inputs', while WRAPPER-NAME
+ requires it."
+ (make-warning package
+ (G_ "\"bash-minimal\" should be in 'inputs' when '~a' is
used")
+ (list wrapper-name)))
+
+ (define (check-wrapper-inputs package)
+ "Emit a warning if PACKAGE uses 'wrap-program' or similar, but \"bash\"
+ or \"bash-minimal\" is not in its inputs. 'wrap-script' is not supported."
+ (define input-names '("bash" "bash-minimal"))
+ (define has-bash-input?
+ (pair? (package-input-intersection (package-inputs package)
+ input-names)))
+ (define (check-procedure-body body)
+ (match body
+ ;; Explicitely setting an interpreter is acceptable,
+ ;; #:sh support is added on 'core-updates'.
+ ;; TODO(core-updates): remove mention of core-updates.
+ (('wrap-program _ '#:sh . _) '())
+ (('wrap-program _ . _)
+ (list (report-wrap-program-error package 'wrap-program)))
+ ;; Wrapper of 'wrap-program' for Qt programs.
+ ;; TODO #:sh is not yet supported but probably will be.
+ (('wrap-qt-program _ '#:sh . _) '())
+ (('wrap-qt-program _ . _)
+ (list (report-wrap-program-error package 'wrap-qt-program)))
+ ((x . y)
+ (append (check-procedure-body x) (check-procedure-body y)))
+ (_ '())))
+ (define (check-phase-procedure expression)
+ (find-procedure-body expression check-procedure-body))
+ (define (check-delta expression)
+ (find-phase-procedure package expression check-phase-procedure))
+ (define (check-deltas deltas)
+ (append-map check-delta deltas))
+ (if has-bash-input?
+ ;; "bash" (or "bash-minimal") is in 'inputs', so everything seems ok.
+ '()
+ ;; "bash" is not in 'inputs'. Verify 'wrap-program' and friends
+ ;; are unused
+ (find-phase-deltas package check-deltas)))
+
(define (package-name-regexp package)
"Return a regexp that matches PACKAGE's name as a word at the beginning of a
line."
@@@ -1616,10 -1752,10 +1784,14 @@@ them for PACKAGE.
(description "Identify inputs that shouldn't be inputs at all")
(check check-inputs-should-not-be-an-input-at-all))
(lint-checker
+ (name 'input-labels)
+ (description "Identify input labels that do not match package names")
+ (check check-input-labels))
+ (lint-checker
+ (name 'wrapper-inputs)
+ (description "Make sure 'wrap-program' can finds its interpreter.")
+ (check check-wrapper-inputs))
+ (lint-checker
(name 'license)
;; TRANSLATORS: <license> is the name of a data type and must not be
;; translated.
diff --cc guix/scripts/pack.scm
index 4c7039c,9e1f270..38bc021
--- a/guix/scripts/pack.scm
+++ b/guix/scripts/pack.scm
@@@ -5,8 -5,8 +5,9 @@@
;;; Copyright © 2018 Chris Marusich <cmmarusich@gmail.com>
;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
+;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2020 Eric Bavier <bavier@posteo.net>
+ ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@@ -216,116 -229,94 +236,94 @@@ its source property.
(and (not-config? module)
(not (equal? '(guix store deduplication) module))))
- (define build
- (with-imported-modules (source-module-closure
- `((guix build utils)
- (guix build union)
- (gnu build install))
- #:select? import-module?)
- #~(begin
- (use-modules (guix build utils)
- ((guix build union) #:select (relative-file-name))
- (gnu build install)
- (srfi srfi-1)
- (srfi srfi-26)
- (ice-9 match))
+ (with-imported-modules (source-module-closure
+ `((guix build pack)
+ (guix build store-copy)
+ (guix build utils)
+ (guix build union)
+ (gnu build install))
+ #:select? import-module?)
+ #~(begin
+ (use-modules (guix build pack)
+ (guix build store-copy)
+ (guix build utils)
+ ((guix build union) #:select (relative-file-name))
+ (gnu build install)
+ (srfi srfi-1)
+ (srfi srfi-26)
+ (ice-9 match))
+
+ (define %root "root")
+
+ (define symlink->directives
+ ;; Return "populate directives" to make the given symlink and its
+ ;; parent directories.
+ (match-lambda
+ ((source '-> target)
+ (let ((target (string-append #$profile "/" target))
+ (parent (dirname source)))
+ ;; Never add a 'directory' directive for "/" so as to
+ ;; preserve its ownership when extracting the archive (see
+ ;; below), and also because this would lead to adding the
+ ;; same entries twice in the tarball.
+ `(,@(if (string=? parent "/")
+ '()
+ `((directory ,parent)))
+ (,source
+ -> ,(relative-file-name parent target)))))))
+
+ (define directives
+ ;; Fully-qualified symlinks.
+ (append-map symlink->directives '#$symlinks))
+
+ ;; Make sure non-ASCII file names are properly handled.
+ #+set-utf8-locale
+
+ (define tar #+(file-append archiver "/bin/tar"))
+
+ ;; Note: there is not much to gain here with deduplication and there
+ ;; is the overhead of the '.links' directory, so turn it off.
+ ;; Furthermore GNU tar < 1.30 sometimes fails to extract tarballs
+ ;; with hard links:
+ ;; <http://lists.gnu.org/archive/html/bug-tar/2017-11/msg00009.html>.
+ (populate-store (list "profile") %root #:deduplicate? #f)
+
+ (when #+localstatedir?
+ (install-database-and-gc-roots %root #+database #$profile
+ #:profile-name #$profile-name))
+
+ ;; Create SYMLINKS.
+ (for-each (cut evaluate-populate-directive <> %root)
+ directives)
+
+ ;; Create the tarball.
+ (with-directory-excursion %root
+ ;; GNU Tar recurses directories by default. Simply add the whole
+ ;; current directory, which contains all the generated files so far.
+ ;; This avoids creating duplicate files in the archives that would
+ ;; be stored as hard links by GNU Tar.
+ (apply invoke tar "-cvf" #$output "."
+ (tar-base-options
+ #:tar tar
- #:compressor '#+(and=> compressor compressor-command)))))))
++ #:compressor #+(and=> compressor compressor-command)))))))
- (define %root "root")
-
- (define symlink->directives
- ;; Return "populate directives" to make the given symlink and its
- ;; parent directories.
- (match-lambda
- ((source '-> target)
- (let ((target (string-append #$profile "/" target))
- (parent (dirname source)))
- ;; Never add a 'directory' directive for "/" so as to
- ;; preserve its ownnership when extracting the archive (see
- ;; below), and also because this would lead to adding the
- ;; same entries twice in the tarball.
- `(,@(if (string=? parent "/")
- '()
- `((directory ,parent)))
- (,source
- -> ,(relative-file-name parent target)))))))
-
- (define directives
- ;; Fully-qualified symlinks.
- (append-map symlink->directives '#$symlinks))
-
- ;; The --sort option was added to GNU tar in version 1.28, released
- ;; 2014-07-28. For testing, we use the bootstrap tar, which is
- ;; older and doesn't support it.
- (define tar-supports-sort?
- (zero? (system* (string-append #+archiver "/bin/tar")
- "cf" "/dev/null" "--files-from=/dev/null"
- "--sort=name")))
-
- ;; Make sure non-ASCII file names are properly handled.
- #+set-utf8-locale
-
- ;; Add 'tar' to the search path.
- (setenv "PATH" #+(file-append archiver "/bin"))
-
- ;; Note: there is not much to gain here with deduplication and there
- ;; is the overhead of the '.links' directory, so turn it off.
- ;; Furthermore GNU tar < 1.30 sometimes fails to extract tarballs
- ;; with hard links:
- ;;
<http://lists.gnu.org/archive/html/bug-tar/2017-11/msg00009.html>.
- (populate-single-profile-directory %root
- #:profile #$profile
- #:profile-name #$profile-name
- #:closure "profile"
- #:database #+database)
-
- ;; Create SYMLINKS.
- (for-each (cut evaluate-populate-directive <> %root)
- directives)
-
- ;; Create the tarball. Use GNU format so there's no file name
- ;; length limitation.
- (with-directory-excursion %root
- (exit
- (zero? (apply system* "tar"
- #+@(if (compressor-command compressor)
- #~("-I"
- (string-join
- #+(compressor-command compressor)))
- #~())
- "--format=gnu"
-
- ;; Avoid non-determinism in the archive. Use
- ;; mtime = 1, not zero, because that is what the
- ;; daemon does for files in the store (see the
- ;; 'mtimeStore' constant in local-store.cc.)
- (if tar-supports-sort? "--sort=name" "--mtime=@1")
- "--mtime=@1" ;for files in /var/guix
- "--owner=root:0"
- "--group=root:0"
-
- "--check-links"
- "-cvf" #$output
- ;; Avoid adding / and /var to the tarball, so
- ;; that the ownership and permissions of those
- ;; directories will not be overwritten when
- ;; extracting the archive. Do not include /root
- ;; because the root account might have a
- ;; different home directory.
- #$@(if localstatedir?
- '("./var/guix")
- '())
-
- (string-append "." (%store-directory))
-
- (delete-duplicates
- (filter-map (match-lambda
- (('directory directory)
- (string-append "." directory))
- ((source '-> _)
- (string-append "." source))
- (_ #f))
- directives)))))))))
+ (define* (self-contained-tarball name profile
+ #:key target
+ (profile-name "guix-profile")
+ deduplicate?
+ entry-point
+ (compressor (first %compressors))
+ localstatedir?
+ (symlinks '())
+ (archiver tar)
+ (extra-options '()))
+ "Return a self-contained tarball containing a store initialized with the
+ closure of PROFILE, a derivation. The tarball contains /gnu/store; if
+ LOCALSTATEDIR? is true, it also contains /var/guix, including /var/guix/db
+ with a properly initialized store database.
+ SYMLINKS must be a list of (SOURCE -> TARGET) tuples denoting symlinks to be
+ added to the pack."
(when entry-point
(warning (G_ "entry point not supported in the '~a' format~%")
'tarball))
@@@ -637,6 -636,192 +645,192 @@@ the image.
;;;
+ ;;; Debian archive format.
+ ;;;
+ ;;; TODO: When relocatable option is selected, install to a unique prefix.
+ ;;; This would enable installation of multiple deb packs with conflicting
+ ;;; files at the same time.
+ (define* (debian-archive name profile
+ #:key target
+ (profile-name "guix-profile")
+ deduplicate?
+ entry-point
+ (compressor (first %compressors))
+ localstatedir?
+ (symlinks '())
+ (archiver tar)
+ (extra-options '()))
+ "Return a Debian archive (.deb) containing a store initialized with the
+ closure of PROFILE, a derivation. The archive contains /gnu/store; if
+ LOCALSTATEDIR? is true, it also contains /var/guix, including /var/guix/db
+ with a properly initialized store database. The supported compressors are
+ \"none\", \"gz\" or \"xz\".
+
+ SYMLINKS must be a list of (SOURCE -> TARGET) tuples denoting symlinks to be
+ added to the pack. EXTRA-OPTIONS may contain the CONFIG-FILE, POSTINST-FILE
+ or TRIGGERS-FILE keyword arguments."
+ ;; For simplicity, limit the supported compressors to the superset of
+ ;; compressors able to compress both the control file (gz or xz) and the
+ ;; data tarball (gz, bz2 or xz).
+ (define %valid-compressors '("gzip" "xz" "none"))
+
+ (let ((compressor-name (compressor-name compressor)))
+ (unless (member compressor-name %valid-compressors)
+ (leave (G_ "~a is not a valid Debian archive compressor. \
+ Valid compressors are: ~a~%") compressor-name %valid-compressors)))
+
+ (when entry-point
+ (warning (G_ "entry point not supported in the '~a' format~%")
+ 'deb))
+
+ (define data-tarball
+ (computed-file (string-append "data.tar"
+ (compressor-extension compressor))
+ (self-contained-tarball/builder
+ profile
+ #:profile-name profile-name
+ #:compressor compressor
+ #:localstatedir? localstatedir?
+ #:symlinks symlinks
+ #:archiver archiver)
+ #:local-build? #f ;allow offloading
+ #:options (list #:references-graphs `(("profile" ,profile))
+ #:target target)))
+
+ (define build
+ (with-extensions (list guile-gcrypt)
+ (with-imported-modules `(((guix config) => ,(make-config.scm))
+ ,@(source-module-closure
+ `((guix build pack)
+ (guix build utils)
+ (guix profiles))
+ #:select? not-config?))
+ #~(begin
+ (use-modules (guix build pack)
+ (guix build utils)
+ (guix profiles)
+ (ice-9 match)
+ ((oop goops) #:select (get-keyword))
+ (srfi srfi-1))
+
+ (define machine-type
+ ;; Extract the machine type from the specified target, else
from the
+ ;; current system.
+ (and=> (or #$target %host-type)
+ (lambda (triplet)
+ (first (string-split triplet #\-)))))
+
+ (define (gnu-machine-type->debian-machine-type type)
+ "Translate machine TYPE from the GNU to Debian terminology."
+ ;; Debian has its own jargon, different from the one used in
GNU, for
+ ;; machine types (see data/cputable in the sources of dpkg).
+ (match type
+ ("i486" "i386")
+ ("i586" "i386")
+ ("i686" "i386")
+ ("x86_64" "amd64")
+ ("aarch64" "arm64")
+ ("mipsisa32r6" "mipsr6")
+ ("mipsisa32r6el" "mipsr6el")
+ ("mipsisa64r6" "mips64r6")
+ ("mipsisa64r6el" "mips64r6el")
+ ("powerpcle" "powerpcel")
+ ("powerpc64" "ppc64")
+ ("powerpc64le" "ppc64el")
+ (machine machine)))
+
+ (define architecture
+ (gnu-machine-type->debian-machine-type machine-type))
+
+ #$(procedure-source manifest->friendly-name)
+
+ (define manifest (profile-manifest #$profile))
+
+ (define single-entry ;manifest entry
+ (match (manifest-entries manifest)
+ ((entry)
+ entry)
+ (() #f)))
+
+ (define package-name (or (and=> single-entry manifest-entry-name)
+ (manifest->friendly-name manifest)))
+
+ (define package-version
+ (or (and=> single-entry manifest-entry-version)
+ "0.0.0"))
+
+ (define debian-format-version "2.0")
+
+ ;; Generate the debian-binary file.
+ (call-with-output-file "debian-binary"
+ (lambda (port)
+ (format port "~a~%" debian-format-version)))
+
+ (define data-tarball-file-name (strip-store-file-name
+ #+data-tarball))
+
+ (copy-file #+data-tarball data-tarball-file-name)
+
+ ;; Generate the control archive.
+ (define control-file
+ (get-keyword #:control-file '#$extra-options))
+
+ (define postinst-file
+ (get-keyword #:postinst-file '#$extra-options))
+
+ (define triggers-file
+ (get-keyword #:triggers-file '#$extra-options))
+
+ (define control-tarball-file-name
+ (string-append "control.tar"
+ #$(compressor-extension compressor)))
+
+ ;; Write the compressed control tarball. Only the control file is
+ ;; mandatory (see: 'man deb' and 'man deb-control').
+ (if control-file
+ (copy-file control-file "control")
+ (call-with-output-file "control"
+ (lambda (port)
+ (format port "\
+ Package: ~a
+ Version: ~a
+ Description: Debian archive generated by GNU Guix.
+ Maintainer: GNU Guix
+ Architecture: ~a
+ Priority: optional
+ Section: misc
+ ~%" package-name package-version architecture))))
+
+ (when postinst-file
+ (copy-file postinst-file "postinst")
+ (chmod "postinst" #o755))
+
+ (when triggers-file
+ (copy-file triggers-file "triggers"))
+
+ (define tar (string-append #+archiver "/bin/tar"))
+
+ (apply invoke tar
+ `(,@(tar-base-options
+ #:tar tar
- #:compressor '#+(and=> compressor compressor-command))
++ #:compressor #+(and=> compressor compressor-command))
+ "-cvf" ,control-tarball-file-name
+ "control"
+ ,@(if postinst-file '("postinst") '())
+ ,@(if triggers-file '("triggers") '())))
+
+ ;; Create the .deb archive using GNU ar.
+ (invoke (string-append #+binutils "/bin/ar") "-rv" #$output
+ "debian-binary"
+ control-tarball-file-name data-tarball-file-name)))))
+
+ (gexp->derivation (string-append name ".deb")
+ build
+ #:target target
+ #:references-graphs `(("profile" ,profile))))
+
+
+ ;;;
;;; Compiling C programs.
;;;
diff --cc guix/utils.scm
index b75710e,2c56c8b..c5a3a52
--- a/guix/utils.scm
+++ b/guix/utils.scm
@@@ -8,10 -8,10 +8,12 @@@
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2018, 2020 Marius Bakke <marius@gnu.org>
;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
+;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2021 Simon Tournier <zimon.toutoune@gmail.com>
;;; Copyright © 2021 Chris Marusich <cmmarusich@gmail.com>
+;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
+ ;;; Copyright © 2018 Steve Sprang <scs@stevesprang.com>
+ ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
diff --cc tests/lint.scm
index 0a8f1c6,0f51b9e..dfb45ef
--- a/tests/lint.scm
+++ b/tests/lint.scm
@@@ -356,20 -366,92 +366,106 @@@
`(("python-setuptools" ,python-setuptools))))))
(check-inputs-should-not-be-an-input-at-all pkg))))
+(test-assert "input labels: no warnings"
+ (let ((pkg (dummy-package "x"
+ (inputs `(("glib" ,glib)
+ ("pkg-config" ,pkg-config))))))
+ (null? (check-input-labels pkg))))
+
+(test-equal "input labels: one warning"
+ "label 'pkgkonfig' does not match package name 'pkg-config'"
+ (single-lint-warning-message
+ (let ((pkg (dummy-package "x"
+ (inputs `(("glib" ,glib)
+ ("pkgkonfig" ,pkg-config))))))
+ (check-input-labels pkg))))
+
+ (test-equal "explicit #:sh argument to 'wrap-program' is acceptable"
+ '()
+ (let* ((phases
+ ;; Loosely based on the "catfish" package
+ `(modify-phases %standard-phases
+ (add-after 'install 'wrap
+ (lambda* (#:key inputs outputs #:allow-other-keys)
+ (define catfish (string-append (assoc-ref outputs "out")
+ "/bin/catfish"))
+ (define hsab (string-append (assoc-ref inputs "hsab")
+ "/bin/hsab"))
+ (wrap-program catfish #:sh hsab
+ `("PYTHONPATH" = (,"blabla")))))))
+ (pkg (dummy-package "x" (arguments `(#:phases ,phases)))))
+ (check-wrapper-inputs pkg)))
+
+ (test-equal
+ "'check-wrapper-inputs' detects 'wrap-program' without \"bash\" in inputs"
+ "\"bash-minimal\" should be in 'inputs' when 'wrap-program' is used"
+ (let* ((phases
+ `(modify-phases %standard-phases
+ (add-after 'install 'wrap
+ (lambda _
+ (wrap-program the-binary bla-bla)))))
+ (pkg (dummy-package "x" (arguments `(#:phases ,phases)))))
+ (single-lint-warning-message (check-wrapper-inputs pkg))))
+
+ (test-equal
+ "'check-wrapper-inputs' detects 'wrap-qt-program' without \"bash\" in
inputs"
+ "\"bash-minimal\" should be in 'inputs' when 'wrap-qt-program' is used"
+ (let* ((phases
+ `(modify-phases %standard-phases
+ (add-after 'install 'qtwrap
+ (lambda _
+ (wrap-qt-program the-binary bla-bla)))))
+ (pkg (dummy-package "x" (arguments `(#:phases ,phases)))))
+ (single-lint-warning-message (check-wrapper-inputs pkg))))
+
+ (test-equal "\"bash\" in 'inputs' satisfies 'check-wrapper-inputs'"
+ '()
+ (let* ((phases
+ `(modify-phases %standard-phases
+ (add-after 'install 'wrap
+ (lambda _
+ (wrap-program the-binary bla-bla)))))
+ (pkg (dummy-package "x" (arguments `(#:phases ,phases))
+ (inputs `(("bash" ,bash))))))
+ (check-wrapper-inputs pkg)))
+
+ (test-equal "\"bash-minimal\" in 'inputs' satisfies 'check-wrapper-inputs'"
+ '()
+ (let* ((phases
+ `(modify-phases %standard-phases
+ (add-after 'install 'wrap
+ (lambda _
+ (wrap-program THE-BINARY bla-bla)))))
+ (pkg (dummy-package "x" (arguments `(#:phases ,phases))
+ (inputs `(("bash-minimal" ,bash-minimal))))))
+ (check-wrapper-inputs pkg)))
+
+ (test-equal "'cut' doesn't hide bad usages of 'wrap-program'"
+ "\"bash-minimal\" should be in 'inputs' when 'wrap-program' is used"
+ (let* ((phases
+ ;; Taken from the "straw-viewer" package
+ `(modify-phases %standard-phases
+ (add-after 'install 'wrap-program
+ (lambda* (#:key outputs #:allow-other-keys)
+ (let* ((out (assoc-ref outputs "out"))
+ (bin-dir (string-append out "/bin/"))
+ (site-dir (string-append out "/lib/perl5/site_perl/"))
+ (lib-path (getenv "PERL5LIB")))
+ (for-each (cut wrap-program <>
+ `("PERL5LIB" ":" prefix
+ (,lib-path ,site-dir)))
+ (find-files bin-dir)))))))
+ (pkg (dummy-package "x" (arguments `(#:phases ,phases)))))
+ (single-lint-warning-message (check-wrapper-inputs pkg))))
+
+ (test-equal "bogus phase specifications don't crash the linter"
+ "invalid phase clause"
+ (let* ((phases
+ `(modify-phases %standard-phases
+ (add-invalid)))
+ (pkg (dummy-package "x" (arguments `(#:phases ,phases)))))
+ (single-lint-warning-message (check-wrapper-inputs pkg))))
+
(test-equal "file patches: different file name -> warning"
"file names of patches should start with the package name"
(single-lint-warning-message
diff --cc tests/pack.scm
index 8564939,e9b4c36..98bfedf
--- a/tests/pack.scm
+++ b/tests/pack.scm
@@@ -1,6 -1,7 +1,7 @@@
;;; GNU Guix --- Functional package management for GNU
-;;; Copyright © 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
+;;; Copyright © 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
+ ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;;
;;; This file is part of GNU Guix.
;;;
@@@ -51,8 -53,8 +53,8 @@@
(define %gzip-compressor
;; Compressor that uses the bootstrap 'gzip'.
((@ (guix scripts pack) compressor) "gzip"
- "gz"
+ ".gz"
- #~(#+(file-append %bootstrap-coreutils&co "/bin/gzip") "-6n")))
+ #~(list #+(file-append %bootstrap-coreutils&co "/bin/gzip") "-6n")))
(define %tar-bootstrap %bootstrap-coreutils&co)