Archived
1
0
Fork 0

Merge remote-tracking branch 'origin/master' into core-updates

Conflicts:
	doc/guix.texi
	gnu/local.mk
	gnu/packages/admin.scm
	gnu/packages/base.scm
	gnu/packages/chromium.scm
	gnu/packages/compression.scm
	gnu/packages/databases.scm
	gnu/packages/diffoscope.scm
	gnu/packages/freedesktop.scm
	gnu/packages/gnome.scm
	gnu/packages/gnupg.scm
	gnu/packages/guile.scm
	gnu/packages/inkscape.scm
	gnu/packages/llvm.scm
	gnu/packages/openldap.scm
	gnu/packages/pciutils.scm
	gnu/packages/ruby.scm
	gnu/packages/samba.scm
	gnu/packages/sqlite.scm
	gnu/packages/statistics.scm
	gnu/packages/syndication.scm
	gnu/packages/tex.scm
	gnu/packages/tls.scm
	gnu/packages/version-control.scm
	gnu/packages/xml.scm
	guix/build-system/copy.scm
	guix/scripts/home.scm
This commit is contained in:
Efraim Flashner 2023-01-30 11:33:18 +02:00
commit 4cf1acc7f3
No known key found for this signature in database
GPG key ID: 41AAE7DCCA3D8351
740 changed files with 619028 additions and 314277 deletions

16
.editorconfig Normal file
View file

@ -0,0 +1,16 @@
root = true
[*.{c,h,cpp,hpp,el,scm,ac,am,m4,po}{,.in}]
end_of_line = lf
insert_final_newline = true
charset = utf-8
trim_trailing_whitespace = true
[*.{c,h,cpp,hpp,ac,am,m4,el,scm}{,.in}]
max_line_length = 85
[*.{c,h,cpp,hpp,ac,m4,el,scm}{,.in}]
indent_style = space
[*.{c,h,cpp,hpp}{,.in}]
indent_size = 4

View file

@ -35,10 +35,8 @@
(;; primary: "295A F991 6F46 F8A1 34B0 29DA 8086 3842 F0FE D83B" (;; primary: "295A F991 6F46 F8A1 34B0 29DA 8086 3842 F0FE D83B"
"76CE C6B1 7274 B465 C02D B3D9 E71A 3554 2C30 BAA5" "76CE C6B1 7274 B465 C02D B3D9 E71A 3554 2C30 BAA5"
(name "dannym")) (name "dannym"))
("B3C0 DB4D AD73 BA5D 285E 19AE 5143 0234 CEFD 87C3" ("8CCB A7F5 52B9 CBEA E1FB 2915 8328 C747 0FF1 D807"
(name "davexunit")) (name "dthompson"))
("8CCB A7F5 52B9 CBEA E1FB 2915 8328 C747 0FF1 D807" ;FIXME: to be confirmed!
(name "davexunit (2nd)"))
("A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351" ("A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351"
(name "efraim")) (name "efraim"))
(;; primary: "2453 02B1 BAB1 F867 FDCA 96BC 8F3F 861F 82EB 7A9A" (;; primary: "2453 02B1 BAB1 F867 FDCA 96BC 8F3F 861F 82EB 7A9A"
@ -92,6 +90,9 @@
(;; primary: "B68B DF22 73F9 DA0E 63C1 8A32 515B F416 9242 D600" (;; primary: "B68B DF22 73F9 DA0E 63C1 8A32 515B F416 9242 D600"
"C699 ED09 E51B CE89 FD1D A078 AAC7 E891 896B 568A" "C699 ED09 E51B CE89 FD1D A078 AAC7 E891 896B 568A"
(name "pgarlick")) (name "pgarlick"))
(;; primary: "7E9F 5BF6 1680 4367 127B 7A87 F9E6 9FB8 5A75 54F1"
"A420 7B56 C255 109F 2CB3 157E 4990 97AE 5EA8 15D9"
(name "podiki"))
("CD2D 5EAA A98C CB37 DA91 D6B0 5F58 1664 7F8B E551" ("CD2D 5EAA A98C CB37 DA91 D6B0 5F58 1664 7F8B E551"
(name "raghavgururajan")) (name "raghavgururajan"))
("BCA6 89B6 3655 3801 C3C6 2150 197A 5888 235F ACAC" ("BCA6 89B6 3655 3801 C3C6 2150 197A 5888 235F ACAC"

10
.patman Normal file
View file

@ -0,0 +1,10 @@
# This config file allows for Patchwork integration with
# https://patches.guix-patches.cbaines.net/.
[settings]
project: guix-patches
patchwork_url: https://patches.guix-patches.cbaines.net
add_signoff: False
get_maintainer_script: etc/teams.scm get-maintainer
# TODO: enable check_patch
check_patch: False

View file

@ -1,5 +1,5 @@
# GNU Guix --- Functional package management for GNU # GNU Guix --- Functional package management for GNU
# Copyright © 2012-2022 Ludovic Courtès <ludo@gnu.org> # Copyright © 2012-2023 Ludovic Courtès <ludo@gnu.org>
# Copyright © 2013 Andreas Enge <andreas@enge.fr> # Copyright © 2013 Andreas Enge <andreas@enge.fr>
# Copyright © 2015, 2017 Alex Kost <alezost@gmail.com> # Copyright © 2015, 2017 Alex Kost <alezost@gmail.com>
# Copyright © 2016, 2018 Mathieu Lirzin <mthl@gnu.org> # Copyright © 2016, 2018 Mathieu Lirzin <mthl@gnu.org>
@ -167,6 +167,7 @@ MODULES = \
guix/build-system/maven.scm \ guix/build-system/maven.scm \
guix/build-system/node.scm \ guix/build-system/node.scm \
guix/build-system/perl.scm \ guix/build-system/perl.scm \
guix/build-system/pyproject.scm \
guix/build-system/python.scm \ guix/build-system/python.scm \
guix/build-system/renpy.scm \ guix/build-system/renpy.scm \
guix/build-system/ocaml.scm \ guix/build-system/ocaml.scm \
@ -223,6 +224,7 @@ MODULES = \
guix/build/minetest-build-system.scm \ guix/build/minetest-build-system.scm \
guix/build/node-build-system.scm \ guix/build/node-build-system.scm \
guix/build/perl-build-system.scm \ guix/build/perl-build-system.scm \
guix/build/pyproject-build-system.scm \
guix/build/python-build-system.scm \ guix/build/python-build-system.scm \
guix/build/ocaml-build-system.scm \ guix/build/ocaml-build-system.scm \
guix/build/qt-build-system.scm \ guix/build/qt-build-system.scm \
@ -236,6 +238,7 @@ MODULES = \
guix/build/waf-build-system.scm \ guix/build/waf-build-system.scm \
guix/build/haskell-build-system.scm \ guix/build/haskell-build-system.scm \
guix/build/julia-build-system.scm \ guix/build/julia-build-system.scm \
guix/build/kconfig.scm \
guix/build/linux-module-build-system.scm \ guix/build/linux-module-build-system.scm \
guix/build/store-copy.scm \ guix/build/store-copy.scm \
guix/build/json.scm \ guix/build/json.scm \
@ -287,6 +290,7 @@ MODULES = \
guix/import/print.scm \ guix/import/print.scm \
guix/import/pypi.scm \ guix/import/pypi.scm \
guix/import/stackage.scm \ guix/import/stackage.scm \
guix/import/test.scm \
guix/import/texlive.scm \ guix/import/texlive.scm \
guix/import/utils.scm \ guix/import/utils.scm \
guix/scripts.scm \ guix/scripts.scm \
@ -398,10 +402,10 @@ AUX_FILES = \
gnu/packages/aux-files/chromium/master-preferences.json \ gnu/packages/aux-files/chromium/master-preferences.json \
gnu/packages/aux-files/emacs/guix-emacs.el \ gnu/packages/aux-files/emacs/guix-emacs.el \
gnu/packages/aux-files/guix.vim \ gnu/packages/aux-files/guix.vim \
gnu/packages/aux-files/linux-libre/5.19-arm.conf \ gnu/packages/aux-files/linux-libre/6.1-arm.conf \
gnu/packages/aux-files/linux-libre/5.19-arm64.conf \ gnu/packages/aux-files/linux-libre/6.1-arm64.conf \
gnu/packages/aux-files/linux-libre/5.19-i686.conf \ gnu/packages/aux-files/linux-libre/6.1-i686.conf \
gnu/packages/aux-files/linux-libre/5.19-x86_64.conf \ gnu/packages/aux-files/linux-libre/6.1-x86_64.conf \
gnu/packages/aux-files/linux-libre/5.15-arm.conf \ gnu/packages/aux-files/linux-libre/5.15-arm.conf \
gnu/packages/aux-files/linux-libre/5.15-arm64.conf \ gnu/packages/aux-files/linux-libre/5.15-arm64.conf \
gnu/packages/aux-files/linux-libre/5.15-i686.conf \ gnu/packages/aux-files/linux-libre/5.15-i686.conf \
@ -421,10 +425,9 @@ AUX_FILES = \
gnu/packages/aux-files/linux-libre/4.14-arm.conf \ gnu/packages/aux-files/linux-libre/4.14-arm.conf \
gnu/packages/aux-files/linux-libre/4.14-i686.conf \ gnu/packages/aux-files/linux-libre/4.14-i686.conf \
gnu/packages/aux-files/linux-libre/4.14-x86_64.conf \ gnu/packages/aux-files/linux-libre/4.14-x86_64.conf \
gnu/packages/aux-files/linux-libre/4.9-i686.conf \
gnu/packages/aux-files/linux-libre/4.9-x86_64.conf \
gnu/packages/aux-files/pack-audit.c \ gnu/packages/aux-files/pack-audit.c \
gnu/packages/aux-files/python/sanity-check.py \ gnu/packages/aux-files/python/sanity-check.py \
gnu/packages/aux-files/python/sanity-check-next.py \
gnu/packages/aux-files/python/sitecustomize.py \ gnu/packages/aux-files/python/sitecustomize.py \
gnu/packages/aux-files/renpy/renpy.in \ gnu/packages/aux-files/renpy/renpy.in \
gnu/packages/aux-files/run-in-namespace.c gnu/packages/aux-files/run-in-namespace.c
@ -438,6 +441,8 @@ EXAMPLES = \
gnu/system/examples/desktop.tmpl \ gnu/system/examples/desktop.tmpl \
gnu/system/examples/lightweight-desktop.tmpl \ gnu/system/examples/lightweight-desktop.tmpl \
gnu/system/examples/docker-image.tmpl \ gnu/system/examples/docker-image.tmpl \
gnu/system/examples/raspberry-pi-64.tmpl \
gnu/system/examples/raspberry-pi-64-nfs-root.tmpl \
gnu/system/examples/vm-image.tmpl gnu/system/examples/vm-image.tmpl
GOBJECTS = $(MODULES:%.scm=%.go) guix/config.go $(dist_noinst_DATA:%.scm=%.go) GOBJECTS = $(MODULES:%.scm=%.go) guix/config.go $(dist_noinst_DATA:%.scm=%.go)
@ -590,6 +595,7 @@ SH_TESTS = \
tests/guix-authenticate.sh \ tests/guix-authenticate.sh \
tests/guix-environment.sh \ tests/guix-environment.sh \
tests/guix-environment-container.sh \ tests/guix-environment-container.sh \
tests/guix-refresh.sh \
tests/guix-shell.sh \ tests/guix-shell.sh \
tests/guix-shell-export-manifest.sh \ tests/guix-shell-export-manifest.sh \
tests/guix-graph.sh \ tests/guix-graph.sh \
@ -659,49 +665,50 @@ dist_fishcompletion_DATA = etc/completion/fish/guix.fish
nodist_selinux_policy_DATA = etc/guix-daemon.cil nodist_selinux_policy_DATA = etc/guix-daemon.cil
EXTRA_DIST += \ EXTRA_DIST += \
HACKING \
ROADMAP \
TODO \
CODE-OF-CONDUCT \
.dir-locals.el \ .dir-locals.el \
.guix-authorizations \ .guix-authorizations \
.guix-channel \ .guix-channel \
scripts/guix.in \ CODE-OF-CONDUCT \
HACKING \
ROADMAP \
TODO \
bootstrap \
build-aux/build-self.scm \
build-aux/check-channel-news.scm \
build-aux/check-final-inputs-self-contained.scm \
build-aux/compile-all.scm \
build-aux/compile-as-derivation.scm \
build-aux/config.rpath \
build-aux/convert-xref.scm \
build-aux/cuirass/hurd-manifest.scm \
build-aux/generate-authors.scm \
build-aux/test-driver.scm \
build-aux/update-NEWS.scm \
build-aux/update-guix-package.scm \
doc/build.scm \
etc/disarchive-manifest.scm \ etc/disarchive-manifest.scm \
etc/guix-install.sh \ etc/guix-install.sh \
etc/historical-authorizations \
etc/news.scm \ etc/news.scm \
etc/kernels-manifest.scm \
etc/release-manifest.scm \ etc/release-manifest.scm \
etc/source-manifest.scm \ etc/source-manifest.scm \
etc/system-tests.scm \ etc/system-tests.scm \
etc/time-travel-manifest.scm \ etc/time-travel-manifest.scm \
etc/historical-authorizations \ scripts/guix.in \
build-aux/build-self.scm \
build-aux/compile-all.scm \
build-aux/cuirass/hurd-manifest.scm \
build-aux/check-final-inputs-self-contained.scm \
build-aux/check-channel-news.scm \
build-aux/compile-as-derivation.scm \
build-aux/convert-xref.scm \
build-aux/generate-authors.scm \
build-aux/test-driver.scm \
build-aux/update-guix-package.scm \
build-aux/update-NEWS.scm \
tests/test.drv \
tests/cve-sample.json \ tests/cve-sample.json \
tests/keys/signing-key.pub \
tests/keys/signing-key.sec \
tests/keys/civodul.pub \ tests/keys/civodul.pub \
tests/keys/rsa.pub \
tests/keys/dsa.pub \ tests/keys/dsa.pub \
tests/keys/ed25519.pub \
tests/keys/ed25519.sec \
tests/keys/ed25519-2.pub \ tests/keys/ed25519-2.pub \
tests/keys/ed25519-2.sec \ tests/keys/ed25519-2.sec \
tests/keys/ed25519-3.pub \ tests/keys/ed25519-3.pub \
tests/keys/ed25519-3.sec \ tests/keys/ed25519-3.sec \
build-aux/config.rpath \ tests/keys/ed25519.pub \
bootstrap \ tests/keys/ed25519.sec \
doc/build.scm \ tests/keys/rsa.pub \
tests/keys/signing-key.pub \
tests/keys/signing-key.sec \
tests/test.drv \
$(TESTS) $(TESTS)
if !BUILD_DAEMON_OFFLOAD if !BUILD_DAEMON_OFFLOAD
@ -750,20 +757,35 @@ endef
# in <https://issues.guix.gnu.org/48963>. Each 'eval' call below creates a # in <https://issues.guix.gnu.org/48963>. Each 'eval' call below creates a
# 'make-*-go' phony target that builds the corresponding subset. # 'make-*-go' phony target that builds the corresponding subset.
MODULES_CORE = guix.scm $(filter-out guix/scripts/%,$(filter guix/%,$(MODULES))) first_half := \
MODULES_PACKAGES = $(filter gnu/packages/%,$(MODULES)) gnu/packages/a% gnu/packages/b% gnu/packages/c% gnu/packages/d% \
MODULES_SYSTEM = gnu.scm $(filter-out gnu/packages/%,$(filter gnu/%,$(MODULES))) gnu/packages/e% gnu/packages/f% gnu/packages/g% gnu/packages/h% \
MODULES_CLI = $(filter guix/scripts/%,$(MODULES)) gnu/packages/i% gnu/packages/j% gnu/packages/k% gnu/packages/l%
MODULES_PO = guix/build/po.scm
MODULES_CORE := guix.scm $(filter-out guix/scripts/%,$(filter guix/%,$(MODULES)))
MODULES_PACKAGES1 := $(filter $(first_half),$(MODULES))
MODULES_PACKAGES2 := $(filter-out $(first_half),$(filter gnu/packages/%,$(MODULES)))
MODULES_PACKAGES := $(MODULES_PACKAGES1) $(MODULES_PACKAGES2)
MODULES_SYSTEM := gnu.scm $(filter-out gnu/packages/%,$(filter gnu/%,$(MODULES)))
MODULES_CLI := $(filter guix/scripts/%,$(MODULES))
MODULES_PO := guix/build/po.scm
$(eval $(call guile-compilation-rule,make-core-go, \ $(eval $(call guile-compilation-rule,make-core-go, \
$(MODULES_CORE) guix/config.scm $(dist_noinst_DATA), \ $(MODULES_CORE) guix/config.scm $(dist_noinst_DATA), \
0)) 0))
.PHONY: make-core-go .PHONY: make-core-go
$(eval $(call guile-compilation-rule,make-packages-go, \ $(eval $(call guile-compilation-rule,make-packages1-go, \
$(MODULES_PACKAGES) make-core-go, \ $(MODULES_PACKAGES1) make-core-go, \
$(words $(MODULES_CORE)))) $(words $(MODULES_CORE))))
.PHONY: make-packages1-go
$(eval $(call guile-compilation-rule,make-packages2-go, \
$(MODULES_PACKAGES2) make-core-go make-packages1-go, \
$(words $(MODULES_CORE) $(MODULES_PACKAGES1))))
.PHONY: make-packages2-go
make-packages-go: make-packages1-go make-packages2-go
.PHONY: make-packages-go .PHONY: make-packages-go
$(eval $(call guile-compilation-rule,make-system-go, \ $(eval $(call guile-compilation-rule,make-system-go, \
@ -986,7 +1008,7 @@ release: dist-with-updated-version all
-v1 --no-grafts --fallback -v1 --no-grafts --fallback
# Generate the ISO installation images. # Generate the ISO installation images.
for system in $(GUIX_SYSTEM_SUPPORTED_SYSTEMS) ; do \ for system in $(GUIX_SYSTEM_SUPPORTED_SYSTEMS) ; do \
GUIX_DISPLAYED_VERSION="`git describe --match=v* | sed -'es/^v//v'`" ; \ GUIX_DISPLAYED_VERSION="`git describe --match=v* | sed -'es/^v//'`" ; \
image=`$(top_builddir)/pre-inst-env \ image=`$(top_builddir)/pre-inst-env \
guix system image -t iso9660 \ guix system image -t iso9660 \
--label="GUIX_$${system}_$(VERSION)" \ --label="GUIX_$${system}_$(VERSION)" \
@ -1002,7 +1024,7 @@ release: dist-with-updated-version all
done done
# Generate the VM images. # Generate the VM images.
for system in $(GUIX_SYSTEM_VM_SYSTEMS) ; do \ for system in $(GUIX_SYSTEM_VM_SYSTEMS) ; do \
GUIX_DISPLAYED_VERSION="`git describe --match=v* | sed -'es/^v//v'`" ; \ GUIX_DISPLAYED_VERSION="`git describe --match=v* | sed -'es/^v//'`" ; \
image=`$(top_builddir)/pre-inst-env \ image=`$(top_builddir)/pre-inst-env \
guix system image -t qcow2 $(GUIX_SYSTEM_VM_IMAGE_FLAGS) \ guix system image -t qcow2 $(GUIX_SYSTEM_VM_IMAGE_FLAGS) \
--save-provenance \ --save-provenance \

52
NEWS
View file

@ -31,7 +31,10 @@ Please send Guix bug reports to bug-guix@gnu.org.
*** New updater (see guix refresh): generic-git *** New updater (see guix refresh): generic-git
*** guix graph has a new --max-depth option *** guix graph has a new --max-depth option
*** guix deploy has a new --execute option *** guix deploy has a new --execute option
*** guix shell has a new --emulate-fhs option
*** guix shell has a new --symlink option
*** --with-commit option now accepts strings returned by git describe *** --with-commit option now accepts strings returned by git describe
*** --with-source option now applied recursively
*** Align tabular data output by commands like guix package --list-available *** Align tabular data output by commands like guix package --list-available
*** Improved guix import go importer via a new PEG parser *** Improved guix import go importer via a new PEG parser
*** Improved Software Heritage downloader *** Improved Software Heritage downloader
@ -43,12 +46,14 @@ Please send Guix bug reports to bug-guix@gnu.org.
** Distribution ** Distribution
*** The installation script can now enable local substitute servers discovery *** The installation script can now enable local substitute servers discovery
*** The installation script can now customize the Bash prompt for Guix
*** More control over boot-time file system checks and repairs *** More control over boot-time file system checks and repairs
*** XFS file systems can be created by the installer and mounted by label/UUID *** XFS file systems can be created by the installer and mounted by label/UUID
*** New interface for declaring swap space *** New interface for declaring swap space
*** GNOME is now at version 42 *** GNOME is now at version 42
*** TeX Live is now at version 2021 *** TeX Live is now at version 2021
*** Multiple TeX Live trees can now be used via GUIX_TEXMF *** Multiple TeX Live trees can now be used via GUIX_TEXMF
*** Python modules are searched in GUIX_PYTHONPATH instead of PYTHONPATH
*** Python is now faster thanks to being built with optimizations *** Python is now faster thanks to being built with optimizations
*** The Rust bootstrap now starts from 1.54 instead of 1.19 *** The Rust bootstrap now starts from 1.54 instead of 1.19
*** Most Python 2 packages have been removed *** Most Python 2 packages have been removed
@ -71,11 +76,32 @@ Please send Guix bug reports to bug-guix@gnu.org.
*** The installer now has a crash dump upload mechanism *** The installer now has a crash dump upload mechanism
*** Emacs now supports native compilation *** Emacs now supports native compilation
*** GRUB bootloader now supports chain-loading *** GRUB bootloader now supports chain-loading
*** The GNU Shepherd was upgraded to 0.9.2 *** The GNU Shepherd was upgraded to 0.9.3
*** The init RAM disk honors more arguments—e.g. root and rootflags *** The init RAM disk honors more arguments—e.g. root and rootflags
*** guix system image can now generate WSL images *** guix system image can now generate WSL images
*** The mcron task scheduler logs now contain the jobs exit statuses
*** Chromium extensions are now built in a deterministic fashion
*** The rsync service lets you specify individual “modules”
*** New services
anonip, bitmask, fail2ban, gitile, greetd, jami, lightdm, log-cleanup,
nar-herder, opendht, rasdaemon, samba, seatd, strongswan, wsdd
*** 5311 new packages
*** 6573 package updates
Noteworthy updates:
bash 5.1.8, binutils 2.37, clojure 1.11.1, cups 2.3.3op2, emacs 28.2,
enlightenment 0.25.4, gcc-toolchain 12.2.0, gdb 12.1, ghc 8.10.7,
gimp 2.10.32, glibc 2.33, gnome 42.4, gnupg 2.2.32, go 1.19.1, guile 3.0.8,
icecat 102.5.0-guix0-preview1, icedtea 3.19.0, inkscape 1.2.1, julia 1.6.7,
libreoffice 7.4.3.2, linux-libre 6.0.10, ocaml 4.14.0, octave 7.2.0,
openjdk 18, perl 5.34.0, python2 2.7.18, python 3.9.9, racket 8.7,
rust 1.60.0, r 4.2.2, sbcl 2.2.10, shepherd 0.9.3, xorg-server 21.1.4
** Programming interfaces ** Programming interfaces
*** Package input fields can now plain package lists *** Package input fields can now be plain package lists
*** G-expressions can now be used in build phases *** G-expressions can now be used in build phases
*** New modify-inputs macro to ease customizing a list of package inputs *** New modify-inputs macro to ease customizing a list of package inputs
*** New this-package-input and this-package-native-input macros *** New this-package-input and this-package-native-input macros
@ -85,7 +111,7 @@ Please send Guix bug reports to bug-guix@gnu.org.
*** texlive-union is now deprecated in favor of texlive-updmap.cfg *** texlive-union is now deprecated in favor of texlive-updmap.cfg
*** New (guix cpu) module *** New (guix cpu) module
*** New (guix least-authority) module *** New (guix least-authority) module
*** New (guix plaform) module *** New (guix platform) module
*** New (guix read-print) module *** New (guix read-print) module
It provides a comment-preserving reader and a comment-preserving It provides a comment-preserving reader and a comment-preserving
@ -96,11 +122,14 @@ pretty-printer smarter than (ice-9 pretty-print).
This build system lets you build Guix instances from channel specifications, This build system lets you build Guix instances from channel specifications,
similar to how 'guix time-machine' would do it, as regular packages. similar to how 'guix time-machine' would do it, as regular packages.
*** New pyproject-build-system
This is an extension of python-build-system with support for PEP-517 and
pyproject.toml files. It may eventually get merged back into
python-build-system.
*** New elm-build-system *** New elm-build-system
*** New rebar-build-system *** New rebar-build-system
*** New services
anonip, bitmask, fail2ban, gitile, greetd, jami, lightdm, log-cleanup,
nar-herder, opendht, rasdaemon, seatd, strongswan
** Noteworthy bug fixes ** Noteworthy bug fixes
*** Fall back to Software Heritage when cloning a channel *** Fall back to Software Heritage when cloning a channel
@ -115,7 +144,6 @@ nar-herder, opendht, rasdaemon, seatd, strongswan
(<https://issues.guix.gnu.org/51425>) (<https://issues.guix.gnu.org/51425>)
*** Fonts can now be discovered in any profile via XDG_DATA_DIRS *** Fonts can now be discovered in any profile via XDG_DATA_DIRS
(<https://issues.guix.gnu.org/31403>) (<https://issues.guix.gnu.org/31403>)
*** Python modules are searched in GUIX_PYTHONPATH instead of PYTHONPATH
*** Various Python reproducibility fixes *** Various Python reproducibility fixes
*** The installer now supports MSDOS disk labels on UEFI systems *** The installer now supports MSDOS disk labels on UEFI systems
(<https://issues.guix.gnu.org/47889>) (<https://issues.guix.gnu.org/47889>)
@ -123,10 +151,10 @@ nar-herder, opendht, rasdaemon, seatd, strongswan
(<https://issues.guix.gnu.org/48419>) (<https://issues.guix.gnu.org/48419>)
*** The installer no longer crashes when deleting a free space partition *** The installer no longer crashes when deleting a free space partition
*** Emacs handles major upgrades better without a re-login *** Emacs handles major upgrades better without a re-login
(<https://bugs.gnu.org/47458>) (<https://issues.guix.gnu.org/47458>)
*** The bootloader configuration now accepts multiple targets *** The bootloader configuration now accepts multiple targets
(<https://issues.guix.gnu.org/40997>.) (<https://issues.guix.gnu.org/40997>)
*** A file system mount point is always created when create? is true *** File system mount point is always created when create? is true
(<https://issues.guix.gnu.org/40158>) (<https://issues.guix.gnu.org/40158>)
*** Build the man database only if man-db is in the profile *** Build the man database only if man-db is in the profile
*** gdk-pixbuf now discovers pixbuf loaders via a search path *** gdk-pixbuf now discovers pixbuf loaders via a search path
@ -137,10 +165,12 @@ nar-herder, opendht, rasdaemon, seatd, strongswan
(https://issues.guix.gnu.org/38838) (https://issues.guix.gnu.org/38838)
*** chfn can now change the user's full name *** chfn can now change the user's full name
(https://issues.guix.gnu.org/52539) (https://issues.guix.gnu.org/52539)
*** Gnome settings Bluetooth panel is now working *** GNOME Settings Bluetooth panel is now working
(https://issues.guix.gnu.org/32166) (https://issues.guix.gnu.org/32166)
*** Inferiors are now caching store connections *** Inferiors are now caching store connections
(https://issues.guix.gnu.org/48007) (https://issues.guix.gnu.org/48007)
*** Retry downloads when a substitute has become unavailable
(https://issues.guix.gnu.org/57978)
*** The installer doesn't segfault when removing an extended partition *** The installer doesn't segfault when removing an extended partition
*** The installer doesn't ship an older Guix revision *** The installer doesn't ship an older Guix revision
(https://issues.guix.gnu.org/53210) (https://issues.guix.gnu.org/53210)

View file

@ -66,7 +66,7 @@
(define %manual-languages (define %manual-languages
;; Available translations for the 'guix-manual' text domain. ;; Available translations for the 'guix-manual' text domain.
'("de" "en" "es" "fr" "ru" "zh_CN")) '("de" "en" "es" "fr" "pt_BR" "ru" "zh_CN"))
(define %cookbook-languages (define %cookbook-languages
;; Available translations for the 'guix-cookbook' text domain. ;; Available translations for the 'guix-cookbook' text domain.

View file

@ -786,12 +786,29 @@ for instance, the module python-dateutil is packaged under the names
starts with @code{py} (e.g.@: @code{pytz}), we keep it and prefix it as starts with @code{py} (e.g.@: @code{pytz}), we keep it and prefix it as
described above. described above.
@quotation Note
Currently there are two different build systems for Python packages in Guix:
@var{python-build-system} and @var{pyproject-build-system}. For the
longest time, Python packages were built from an informally specified
@file{setup.py} file. That worked amazingly well, considering Python's
success, but was difficult to build tooling around. As a result, a host
of alternative build systems emerged and the community eventually settled on a
@url{https://peps.python.org/pep-0517/, formal standard} for specifying build
requirements. @var{pyproject-build-system} is Guix's implementation of this
standard. It is considered ``experimental'' in that it does not yet support
all the various PEP-517 @emph{build backends}, but you are encouraged to try
it for new Python packages and report any problems. It will eventually be
deprecated and merged into @var{python-build-system}.
@end quotation
@subsubsection Specifying Dependencies @subsubsection Specifying Dependencies
@cindex inputs, for Python packages @cindex inputs, for Python packages
Dependency information for Python packages is usually available in the Dependency information for Python packages is usually available in the
package source tree, with varying degrees of accuracy: in the package source tree, with varying degrees of accuracy: in the
@file{setup.py} file, in @file{requirements.txt}, or in @file{tox.ini}. @file{pyproject.toml} file, the @file{setup.py} file, in
@file{requirements.txt}, or in @file{tox.ini} (the latter mostly for
test dependencies).
Your mission, when writing a recipe for a Python package, is to map Your mission, when writing a recipe for a Python package, is to map
these dependencies to the appropriate type of ``input'' (@pxref{package these dependencies to the appropriate type of ``input'' (@pxref{package
@ -802,10 +819,12 @@ following check list to determine which dependency goes where.
@itemize @itemize
@item @item
We currently package Python 2 with @code{setuptools} and @code{pip} We currently package Python with @code{setuptools} and @code{pip}
installed like Python 3.4 has per default. Thus you don't need to installed per default. This is about to change, and users are encouraged
specify either of these as an input. @command{guix lint} will warn you to use @code{python-toolchain} if they want a build environment for Python.
if you do.
@command{guix lint} will warn if @code{setuptools} or @code{pip} are
added as native-inputs because they are generally not necessary.
@item @item
Python dependencies required at run time go into Python dependencies required at run time go into
@ -814,9 +833,10 @@ Python dependencies required at run time go into
@file{requirements.txt} file. @file{requirements.txt} file.
@item @item
Python packages required only at build time---e.g., those listed with Python packages required only at build time---e.g., those listed under
the @code{setup_requires} keyword in @file{setup.py}---or only for @code{build-system.requires} in @file{pyproject.toml} or with the
testing---e.g., those in @code{tests_require}---go into @code{setup_requires} keyword in @file{setup.py}---or dependencies only
for testing---e.g., those in @code{tests_require} or @file{tox.ini}---go into
@code{native-inputs}. The rationale is that (1) they do not need to be @code{native-inputs}. The rationale is that (1) they do not need to be
propagated because they are not needed at run time, and (2) in a propagated because they are not needed at run time, and (2) in a
cross-compilation context, it's the ``native'' input that we'd want. cross-compilation context, it's the ``native'' input that we'd want.
@ -1069,11 +1089,16 @@ and then to browse them ``by hand'' using @code{car}, @code{cdr},
notably the fact that it is hard to read, error-prone, and a hindrance notably the fact that it is hard to read, error-prone, and a hindrance
to proper type error reports. to proper type error reports.
@findex define-record-type*
@findex match-record
@cindex pattern matching
Guix code should define appropriate data types (for instance, using Guix code should define appropriate data types (for instance, using
@code{define-record-type*}) rather than abuse lists. In addition, it @code{define-record-type*}) rather than abuse lists. In addition, it
should use pattern matching, via Guiles @code{(ice-9 match)} module, should use pattern matching, via Guiles @code{(ice-9 match)} module,
especially when matching lists (@pxref{Pattern Matching,,, guile, GNU especially when matching lists (@pxref{Pattern Matching,,, guile, GNU
Guile Reference Manual}). Guile Reference Manual}); pattern matching for records is better done
using @code{match-record} from @code{(guix records)}, which, unlike
@code{match}, verifies field names at macro-expansion time.
@node Formatting Code @node Formatting Code
@subsection Formatting Code @subsection Formatting Code
@ -1138,8 +1163,8 @@ This mailing list is backed by a Debbugs instance, which allows us to
keep track of submissions (@pxref{Tracking Bugs and Patches}). Each keep track of submissions (@pxref{Tracking Bugs and Patches}). Each
message sent to that mailing list gets a new tracking number assigned; message sent to that mailing list gets a new tracking number assigned;
people can then follow up on the submission by sending email to people can then follow up on the submission by sending email to
@code{@var{NNN}@@debbugs.gnu.org}, where @var{NNN} is the tracking @code{@var{ISSUE_NUMBER}@@debbugs.gnu.org}, where @var{ISSUE_NUMBER} is
number (@pxref{Sending a Patch Series}). the tracking number (@pxref{Sending a Patch Series}).
Please write commit logs in the ChangeLog format (@pxref{Change Logs,,, Please write commit logs in the ChangeLog format (@pxref{Change Logs,,,
standards, GNU Coding Standards}); you can check the commit history for standards, GNU Coding Standards}); you can check the commit history for
@ -1149,15 +1174,6 @@ Before submitting a patch that adds or modifies a package definition,
please run through this check list: please run through this check list:
@enumerate @enumerate
@cindex @code{git format-patch}
@cindex @code{git-format-patch}
@item
When generating your patches with @code{git format-patch} or @code{git
send-email}, we recommend using the option @code{--base=}, perhaps with
the value @code{auto}. This option adds a note to the patch stating
which commit the patch is based on. This helps reviewers understand how
to apply and review your patches.
@item @item
If the authors of the packaged software provide a cryptographic If the authors of the packaged software provide a cryptographic
signature for the release tarball, make an effort to verify the signature for the release tarball, make an effort to verify the
@ -1341,12 +1357,13 @@ guix pull --url=/path/to/your/checkout --profile=/tmp/guix.master
When posting a patch to the mailing list, use @samp{[PATCH] @dots{}} as When posting a patch to the mailing list, use @samp{[PATCH] @dots{}} as
a subject, if your patch is to be applied on a branch other than a subject, if your patch is to be applied on a branch other than
@code{master}, say @code{core-updates}, specify it in the subject like @code{master}, say @code{core-updates}, specify it in the subject like
@samp{[PATCH core-updates] @dots{}}. You may use your email client or @samp{[PATCH core-updates] @dots{}}.
the @command{git send-email} command (@pxref{Sending a Patch Series}).
We prefer to get patches in plain text messages, either inline or as You may use your email client or the @command{git send-email} command
MIME attachments. You are advised to pay attention if your email client (@pxref{Sending a Patch Series}). We prefer to get patches in plain
changes anything like line breaks or indentation which could potentially text messages, either inline or as MIME attachments. You are advised to
break the patches. pay attention if your email client changes anything like line breaks or
indentation which could potentially break the patches.
Expect some delay when you submit your very first patch to Expect some delay when you submit your very first patch to
@email{guix-patches@@gnu.org}. You have to wait until you get an @email{guix-patches@@gnu.org}. You have to wait until you get an
@ -1354,7 +1371,7 @@ acknowledgement with the assigned tracking number. Future acknowledgements
should not be delayed. should not be delayed.
When a bug is resolved, please close the thread by sending an email to When a bug is resolved, please close the thread by sending an email to
@email{@var{NNN}-done@@debbugs.gnu.org}. @email{@var{ISSUE_NUMBER}-done@@debbugs.gnu.org}.
@node Configuring Git @node Configuring Git
@subsection Configuring Git @subsection Configuring Git
@ -1392,26 +1409,152 @@ git config --local format.thread shallow
git config --local sendemail.thread no git config --local sendemail.thread no
@end example @end example
@unnumberedsubsec Sending a Patch Series @node Sending a Patch Series
@anchor{Sending a Patch Series} @subsection Sending a Patch Series
@cindex patch series @cindex patch series
@cindex @code{git send-email} @cindex @code{git send-email}
@cindex @code{git format-patch}
When sending a patch series (e.g., using @code{git send-email}), please @unnumberedsubsubsec Single Patches
first send one message to @email{guix-patches@@gnu.org}, and then send @anchor{Single Patches}
subsequent patches to @email{@var{NNN}@@debbugs.gnu.org} to make sure The @command{git send-email} command is the best way to send both single
they are kept together. See patches and patch series (@pxref{Multiple Patches}) to the Guix mailing
@uref{https://debbugs.gnu.org/Advanced.html, the Debbugs documentation} list. Sending patches as email attachments may make them difficult to
for more information. You can install @command{git send-email} with review in some mail clients, and @command{git diff} does not store commit
@command{guix install git:send-email}. metadata.
@c Debbugs bug: https://debbugs.gnu.org/db/15/15361.html
To maximize the chances that you patch series is reviewed, the preferred @quotation Note
submission way is to use the @code{etc/teams.scm} script to notify the The @command{git send-email} command is provided by the @code{send-email}
appropriate team members (@pxref{Teams}). output of the @code{git} package, i.e. @code{git:send-email}.
@end quotation
@unnumberedsubsec Teams The following command will create a patch email from the latest commit,
@anchor{Teams} open it in your @var{EDITOR} or @var{VISUAL} for editing, and send it to
the Guix mailing list to be reviewed and merged:
@example
$ git send-email -1 -a --base=auto --to=guix-patches@@gnu.org
@end example
@quotation Tip
To add a prefix to the subject of your patch, you may use the
@option{--subject-prefix} option. The Guix project uses this to
specify that the patch is intended for a branch or repository
other than the @code{master} branch of
@url{https://git.savannah.gnu.org/cgit/guix.git}.
@example
git send-email -1 -a --base=auto \
--subject-prefix='PATCH core-updates' \
--to=guix-patches@@gnu.org
@end example
@end quotation
The patch email contains a three-dash separator line after the commit
message. You may ``annotate'' the patch with explanatory text by adding
it under this line. If you do not wish to annotate the email, you may
drop the @option{-a} flag (which is short for @option{--annotate}).
The @option{--base=auto} flag automatically adds a note at the bottom
of the patch of the commit it was based on, making it easier for
maintainers to rebase and merge your patch.
If you need to send a revised patch, don't resend it like this or send
a ``fix'' patch to be applied on top of the last one; instead, use
@command{git commit -a} or @url{https://git-rebase.io, @command{git rebase}}
to modify the commit, and use the @email{@var{ISSUE_NUMBER}@@debbugs.gnu.org}
address and the @option{-v} flag with @command{git send-email}.
@example
$ git commit -a
$ git send-email -1 -a --base=auto -v@var{REVISION} \
--to=@var{ISSUE_NUMBER}@@debbugs.gnu.org
@end example
@quotation Note
Due to an apparent bug in @command{git send-email},
@option{-v @var{REVISION}} (with the space) will not work; you
@emph{must} use @option{-v@var{REVISION}}.
@end quotation
You can find out @var{ISSUE_NUMBER} either by searching on the mumi
interface at @url{issues.guix.gnu.org} for the name of your patch or
reading the acknowledgement email sent automatically by Debbugs in
reply to incoming bugs and patches, which contains the bug number.
@unnumberedsubsubsec Notifying Teams
@anchor{Notifying Teams}
@cindex teams
The @file{etc/teams.scm} script may be used to notify all those who
may be interested in your patch of its existence (@pxref{Teams}).
Use @command{etc/teams.scm list-teams} to display all the teams,
decide which team(s) your patch relates to, and use
@command{etc/teams.scm cc} to output various @command{git send-email}
flags which will notify the appropriate team members, or use
@command{etc/teams.scm cc-members} to detect the appropriate teams
automatically.
@unnumberedsubsubsec Multiple Patches
@anchor{Multiple Patches}
@cindex cover letter
While @command{git send-email} alone will suffice for a single
patch, an unfortunate flaw in Debbugs means you need to be more
careful when sending multiple patches: if you send them all to the
@email{guix-patches@@gnu.org} address, a new issue will be created
for each patch!
When sending a series of patches, it's best to send a Git ``cover
letter'' first, to give reviewers an overview of the patch series.
We can create a directory called @file{outgoing} containing both
our patch series and a cover letter called @file{0000-cover-letter.patch}
with @command{git format-patch}.
@example
$ git format-patch -@var{NUMBER_COMMITS} -o outgoing \
--cover-letter --base=auto
@end example
We can now send @emph{just} the cover letter to the
@email{guix-patches@@gnu.org} address, which will create an issue
that we can send the rest of the patches to.
@example
$ git send-email outgoing/0000-cover-letter.patch -a \
--to=guix-patches@@gnu.org \
$(etc/teams.scm cc-members ...)
$ rm outgoing/0000-cover-letter.patch # we don't want to resend it!
@end example
Ensure you edit the email to add an appropriate subject line and
blurb before sending it. Note the automatically generated shortlog
and diffstat below the blurb.
Once the Debbugs mailer has replied to your cover letter email, you
can send the actual patches to the newly-created issue address.
@example
$ git send-email outgoing/*.patch \
--to=@var{ISSUE_NUMBER}@@debbugs.gnu.org \
$(etc/teams.scm cc-members ...)
$ rm -rf outgoing # we don't need these anymore
@end example
Thankfully, this @command{git format-patch} dance is not necessary
to send an amended patch series, since an issue already exists for
the patchset.
@example
$ git send-email -@var{NUMBER_COMMITS} \
-v@var{REVISION} --base=auto \
--to @var{ISSUE_NUMBER}@@debbugs.gnu.org
@end example
If need be, you may use @option{--cover-letter -a} to send another cover
letter, e.g. for explaining what's changed since the last revision, and
these changes are necessary.
@node Teams
@subsection Teams
@cindex teams @cindex teams
There are several teams mentoring different parts of the Guix source There are several teams mentoring different parts of the Guix source
@ -1435,7 +1578,7 @@ You can run the following command to have the @code{Mentors} team put in
CC of a patch series: CC of a patch series:
@example @example
$ git send-email --to XXX@@debbugs.gnu.org $(./etc/teams.scm cc mentors) *.patch $ git send-email --to @var{ISSUE_NUMBER}@@debbugs.gnu.org $(./etc/teams.scm cc mentors) *.patch
@end example @end example
The appropriate team or teams can also be inferred from the modified The appropriate team or teams can also be inferred from the modified
@ -1444,7 +1587,7 @@ current Git repository to review, you can run:
@example @example
$ guix shell -D guix $ guix shell -D guix
[env]$ git send-email --to XXX@@debbugs.gnu.org $(./etc/teams.scm cc-members HEAD~2 HEAD) *.patch [env]$ git send-email --to @var{ISSUE_NUMBER}@@debbugs.gnu.org $(./etc/teams.scm cc-members HEAD~2 HEAD) *.patch
@end example @end example
@node Tracking Bugs and Patches @node Tracking Bugs and Patches
@ -1687,23 +1830,27 @@ It additionally calls @code{make check-channel-news} to be sure
@subsection Commit Policy @subsection Commit Policy
If you get commit access, please make sure to follow If you get commit access, please make sure to follow the policy below
the policy below (discussions of the policy can take place on (discussions of the policy can take place on
@email{guix-devel@@gnu.org}). @email{guix-devel@@gnu.org}).
Non-trivial patches should always be posted to Changes should be posted to @email{guix-patches@@gnu.org}. This mailing
@email{guix-patches@@gnu.org} (trivial patches include fixing typos, list fills the patch-tracking database (@pxref{Tracking Bugs and
etc.). This mailing list fills the patch-tracking database Patches}). It also allows patches to be picked up and tested by the
(@pxref{Tracking Bugs and Patches}). quality assurance tooling; the result of that testing eventually shows
up on the dashboard at
@indicateurl{https://qa.guix.gnu.org/issue/@var{ISSUE_NUMBER}}, where
@var{ISSUE_NUMBER} is the number assigned by the issue tracker. Leave
time for a review, without committing anything (@pxref{Submitting
Patches}). If you didnt receive any reply after one week (two weeks
for more significant changes), and if you're confident, it's OK to
commit.
For patches that just add a new package, and a simple one, it's OK to As an exception, some changes considered ``trivial'' or ``obvious'' may
commit, if you're confident (which means you successfully built it in a be pushed directly. This includes changes to fix typos and reverting
chroot setup, and have done a reasonable copyright and license commits that caused immediate problems. This is subject to being
auditing). Likewise for package upgrades, except upgrades that trigger adjusted, allowing individuals to commit directly on non-controversial
a lot of rebuilds (for example, upgrading GnuTLS or GLib). We have a changes on parts theyre familiar with.
mailing list for commit notifications (@email{guix-commits@@gnu.org}),
so people can notice. Before pushing your changes, make sure to run
@code{git pull --rebase}.
When pushing a commit on behalf of somebody else, please add a When pushing a commit on behalf of somebody else, please add a
@code{Signed-off-by} line at the end of the commit log message---e.g., @code{Signed-off-by} line at the end of the commit log message---e.g.,
@ -1718,14 +1865,6 @@ right before pushing:
make check-channel-news make check-channel-news
@end example @end example
For anything else, please post to @email{guix-patches@@gnu.org} and
leave time for a review, without committing anything (@pxref{Submitting
Patches}). If you didnt receive any reply after two weeks, and if
you're confident, it's OK to commit.
That last part is subject to being adjusted, allowing individuals to commit
directly on non-controversial changes on parts theyre familiar with.
@subsection Addressing Issues @subsection Addressing Issues
Peer review (@pxref{Submitting Patches}) and tools such as Peer review (@pxref{Submitting Patches}) and tools such as

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -1,7 +1,7 @@
# htmlxref.cnf - reference file for free Texinfo manuals on the web. # htmlxref.cnf - reference file for free Texinfo manuals on the web.
# Modified by Ludovic Courtès <ludo@gnu.org> for the GNU Guix manual. # Modified by Ludovic Courtès <ludo@gnu.org> for the GNU Guix manual.
htmlxrefversion=2022-08-04.13; # UTC htmlxrefversion=2022-12-18.15; # UTC
# Copyright 2010-2020, 2022 Free Software Foundation, Inc. # Copyright 2010-2020, 2022 Free Software Foundation, Inc.
# #
@ -409,6 +409,8 @@ GUILE_GNOME = ${GS}/guile-gnome/docs
guile-gtk node ${GS}/guile-gtk/docs/guile-gtk/ guile-gtk node ${GS}/guile-gtk/docs/guile-gtk/
guile-netlink mono https://git.lepiller.eu/guile-netlink/manual/manual.html
guile-rpc mono ${GS}/guile-rpc/manual/guile-rpc.html guile-rpc mono ${GS}/guile-rpc/manual/guile-rpc.html
guile-rpc node ${GS}/guile-rpc/manual/html_node/ guile-rpc node ${GS}/guile-rpc/manual/html_node/
@ -420,6 +422,8 @@ GUIX = ${GUIX_ROOT}/manual
guix.es node ${GUIX}/es/html_node/ guix.es node ${GUIX}/es/html_node/
guix.fr mono ${GUIX}/fr/guix.fr.html guix.fr mono ${GUIX}/fr/guix.fr.html
guix.fr node ${GUIX}/fr/html_node/ guix.fr node ${GUIX}/fr/html_node/
guix.pt_BR mono ${GUIX}/pt-br/guix.pt_BR.html
guix.pt_BR node ${GUIX}/pt-br/html_node/
guix.ru mono ${GUIX}/ru/guix.ru.html guix.ru mono ${GUIX}/ru/guix.ru.html
guix.ru node ${GUIX}/ru/html_node/ guix.ru node ${GUIX}/ru/html_node/
guix.zh_CN mono ${GUIX}/zh-cn/guix.zh_CN.html guix.zh_CN mono ${GUIX}/zh-cn/guix.zh_CN.html
@ -428,10 +432,12 @@ GUIX = ${GUIX_ROOT}/manual
guix node ${GUIX}/en/html_node/ guix node ${GUIX}/en/html_node/
GUIX_COOKBOOK = ${GUIX_ROOT}/cookbook GUIX_COOKBOOK = ${GUIX_ROOT}/cookbook
guix-cookbook.de mono ${GUIX_COOKBOOK}/de/guix-cookbook.html guix-cookbook.de mono ${GUIX_COOKBOOK}/de/guix-cookbook.de.html
guix-cookbook.de node ${GUIX_COOKBOOK}/de/html_node/ guix-cookbook.de node ${GUIX_COOKBOOK}/de/html_node/
guix-cookbook.fr mono ${GUIX_COOKBOOK}/fr/guix-cookbook.html guix-cookbook.fr mono ${GUIX_COOKBOOK}/fr/guix-cookbook.fr.html
guix-cookbook.fr node ${GUIX_COOKBOOK}/fr/html_node/ guix-cookbook.fr node ${GUIX_COOKBOOK}/fr/html_node/
guix-cookbook.sk mono ${GUIX_COOKBOOK}/sk/guix-cookbook.sk.html
guix-cookbook.sk node ${GUIX_COOKBOOK}/sk/html_node/
guix-cookbook mono ${GUIX_COOKBOOK}/en/guix-cookbook.html guix-cookbook mono ${GUIX_COOKBOOK}/en/guix-cookbook.html
guix-cookbook node ${GUIX_COOKBOOK}/en/html_node/ guix-cookbook node ${GUIX_COOKBOOK}/en/html_node/

View file

@ -179,19 +179,31 @@ sub_commands_mans = \
$(srcdir)/%D%/guix-archive.1 \ $(srcdir)/%D%/guix-archive.1 \
$(srcdir)/%D%/guix-build.1 \ $(srcdir)/%D%/guix-build.1 \
$(srcdir)/%D%/guix-challenge.1 \ $(srcdir)/%D%/guix-challenge.1 \
$(srcdir)/%D%/guix-container.1 \
$(srcdir)/%D%/guix-copy.1 \
$(srcdir)/%D%/guix-deploy.1 \ $(srcdir)/%D%/guix-deploy.1 \
$(srcdir)/%D%/guix-describe.1 \
$(srcdir)/%D%/guix-download.1 \ $(srcdir)/%D%/guix-download.1 \
$(srcdir)/%D%/guix-edit.1 \ $(srcdir)/%D%/guix-edit.1 \
$(srcdir)/%D%/guix-environment.1 \ $(srcdir)/%D%/guix-environment.1 \
$(srcdir)/%D%/guix-gc.1 \ $(srcdir)/%D%/guix-gc.1 \
$(srcdir)/%D%/guix-git.1 \
$(srcdir)/%D%/guix-graph.1 \
$(srcdir)/%D%/guix-hash.1 \ $(srcdir)/%D%/guix-hash.1 \
$(srcdir)/%D%/guix-home.1 \
$(srcdir)/%D%/guix-import.1 \ $(srcdir)/%D%/guix-import.1 \
$(srcdir)/%D%/guix-lint.1 \ $(srcdir)/%D%/guix-lint.1 \
$(srcdir)/%D%/guix-offload.1 \
$(srcdir)/%D%/guix-pack.1 \
$(srcdir)/%D%/guix-package.1 \ $(srcdir)/%D%/guix-package.1 \
$(srcdir)/%D%/guix-processes.1 \
$(srcdir)/%D%/guix-publish.1 \ $(srcdir)/%D%/guix-publish.1 \
$(srcdir)/%D%/guix-pull.1 \ $(srcdir)/%D%/guix-pull.1 \
$(srcdir)/%D%/guix-refresh.1 \ $(srcdir)/%D%/guix-refresh.1 \
$(srcdir)/%D%/guix-repl.1 \
$(srcdir)/%D%/guix-shell.1 \
$(srcdir)/%D%/guix-size.1 \ $(srcdir)/%D%/guix-size.1 \
$(srcdir)/%D%/guix-style.1 \
$(srcdir)/%D%/guix-system.1 \ $(srcdir)/%D%/guix-system.1 \
$(srcdir)/%D%/guix-time-machine.1 \ $(srcdir)/%D%/guix-time-machine.1 \
$(srcdir)/%D%/guix-weather.1 $(srcdir)/%D%/guix-weather.1

View file

@ -1,6 +1,6 @@
; -*- lisp -*- ; -*- lisp -*-
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2018, 2022 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2020 Daniel Brooks <db48x@db48x.net> ;;; Copyright © 2020 Daniel Brooks <db48x@db48x.net>
;;; Copyright © 2020 Marius Bakke <marius@gnu.org> ;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
;;; ;;;
@ -37,11 +37,13 @@
(block guix_daemon (block guix_daemon
;; Require existing types ;; Require existing types
(typeattributeset cil_gen_require init_t)
(typeattributeset cil_gen_require tmp_t)
(typeattributeset cil_gen_require nscd_var_run_t)
(typeattributeset cil_gen_require var_log_t)
(typeattributeset cil_gen_require domain) (typeattributeset cil_gen_require domain)
(typeattributeset cil_gen_require init_t)
(typeattributeset cil_gen_require init_var_run_t)
(typeattributeset cil_gen_require nscd_var_run_t)
(typeattributeset cil_gen_require system_dbusd_var_run_t)
(typeattributeset cil_gen_require tmp_t)
(typeattributeset cil_gen_require var_log_t)
;; Declare own types ;; Declare own types
(type guix_daemon_t) (type guix_daemon_t)
@ -92,6 +94,9 @@
(allow init_t (allow init_t
guix_store_content_t guix_store_content_t
(file (open read execute))) (file (open read execute)))
(allow init_t
guix_profiles_t
(dir (setattr)))
;; guix-daemon needs to know the names of users ;; guix-daemon needs to know the names of users
(allow guix_daemon_t (allow guix_daemon_t
@ -284,6 +289,14 @@
guix_store_content_t guix_store_content_t
(sock_file (create getattr setattr unlink write))) (sock_file (create getattr setattr unlink write)))
;; Access to run state directories
(allow guix_daemon_t
system_dbusd_var_run_t
(dir (search)))
(allow guix_daemon_t
init_var_run_t
(dir (search)))
;; Access to configuration files and directories ;; Access to configuration files and directories
(allow guix_daemon_t (allow guix_daemon_t
guix_daemon_conf_t guix_daemon_conf_t
@ -447,6 +460,8 @@
any (unconfined_u object_r guix_store_content_t (low low))) any (unconfined_u object_r guix_store_content_t (low low)))
(filecon "@prefix@/bin/guix-daemon" (filecon "@prefix@/bin/guix-daemon"
file (system_u object_r guix_daemon_exec_t (low low))) file (system_u object_r guix_daemon_exec_t (low low)))
(filecon "@guix_localstatedir@/guix/profiles/per-user/[^/]+/current-guix/bin/guix-daemon"
file (system_u object_r guix_daemon_exec_t (low low)))
(filecon "@storedir@/.+-(guix-.+|profile)/bin/guix-daemon" (filecon "@storedir@/.+-(guix-.+|profile)/bin/guix-daemon"
file (system_u object_r guix_daemon_exec_t (low low))) file (system_u object_r guix_daemon_exec_t (low low)))
(filecon "@storedir@/[a-z0-9]+-guix-daemon" (filecon "@storedir@/[a-z0-9]+-guix-daemon"

View file

@ -9,10 +9,16 @@ Description=Build daemon for GNU Guix
ExecStart=@localstatedir@/guix/profiles/per-user/root/current-guix/bin/guix-daemon \ ExecStart=@localstatedir@/guix/profiles/per-user/root/current-guix/bin/guix-daemon \
--build-users-group=guixbuild --discover=no --build-users-group=guixbuild --discover=no
Environment='GUIX_LOCPATH=@localstatedir@/guix/profiles/per-user/root/guix-profile/lib/locale' LC_ALL=en_US.utf8 Environment='GUIX_LOCPATH=@localstatedir@/guix/profiles/per-user/root/guix-profile/lib/locale' LC_ALL=en_US.utf8
RemainAfterExit=yes
StandardOutput=syslog StandardOutput=syslog
StandardError=syslog StandardError=syslog
# Work around a nasty systemd feature that kills the entire process tree
# (including the daemon!) if any child, such as cc1plus, runs out of memory.
OOMPolicy=continue
# Despite the name, this is rate-limited: a broken daemon will eventually fail.
Restart=always
# See <https://lists.gnu.org/archive/html/guix-devel/2016-04/msg00608.html>. # See <https://lists.gnu.org/archive/html/guix-devel/2016-04/msg00608.html>.
# Some package builds (for example, go@1.8.1) may require even more than # Some package builds (for example, go@1.8.1) may require even more than
# 1024 tasks. # 1024 tasks.

View file

@ -3,13 +3,14 @@
# Copyright © 2017 sharlatan <sharlatanus@gmail.com> # Copyright © 2017 sharlatan <sharlatanus@gmail.com>
# Copyright © 2018 Ricardo Wurmus <rekado@elephly.net> # Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
# Copyright © 2018 Efraim Flashner <efraim@flashner.co.il> # Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
# Copyright © 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr> # Copyright © 20192020, 2022 Tobias Geerinckx-Rice <me@tobias.gr>
# Copyright © 2020 Morgan Smith <Morgan.J.Smith@outlook.com> # Copyright © 2020 Morgan Smith <Morgan.J.Smith@outlook.com>
# Copyright © 2020 Simon Tournier <zimon.toutoune@gmail.com> # Copyright © 2020 Simon Tournier <zimon.toutoune@gmail.com>
# Copyright © 2020 Daniel Brooks <db48x@db48x.net> # Copyright © 2020 Daniel Brooks <db48x@db48x.net>
# Copyright © 2021 Jakub Kądziołka <kuba@kadziolka.net> # Copyright © 2021 Jakub Kądziołka <kuba@kadziolka.net>
# Copyright © 2021 Chris Marusich <cmmarusich@gmail.com> # Copyright © 2021 Chris Marusich <cmmarusich@gmail.com>
# Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> # Copyright © 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
# Copyright © 2022 Prafulla Giri <prafulla.giri@protonmail.com>
# #
# This file is part of GNU Guix. # This file is part of GNU Guix.
# #
@ -33,7 +34,7 @@ then
exec bash "$0" "$@" exec bash "$0" "$@"
fi fi
set -e set -eo pipefail
[ "$UID" -eq 0 ] || { echo "This script must be run as root."; exit 1; } [ "$UID" -eq 0 ] || { echo "This script must be run as root."; exit 1; }
@ -52,6 +53,7 @@ REQUIRE=(
"chmod" "chmod"
"uname" "uname"
"groupadd" "groupadd"
"useradd"
"tail" "tail"
"tr" "tr"
"xz" "xz"
@ -92,17 +94,20 @@ _debug()
fi fi
} }
# Return true if user answered yes, false otherwise. die()
{
_err "${ERR}$*"
exit 1
}
# Return true if user answered yes, false otherwise. The prompt is
# yes-biased, that is, when the user simply enter newline, it is equivalent to
# answering "yes".
# $1: The prompt question. # $1: The prompt question.
prompt_yes_no() { prompt_yes_no() {
while true; do local -l yn
read -rp "$1 " yn read -rp "$1 [Y/n]" yn
case $yn in [[ ! $yn || $yn = y || $yn = yes ]] || return 1
[Yy]*) return 0;;
[Nn]*) return 1;;
*) _msg "Please answer yes or no."
esac
done
} }
chk_require() chk_require()
@ -116,10 +121,8 @@ chk_require()
command -v "$c" &>/dev/null || warn+=("$c") command -v "$c" &>/dev/null || warn+=("$c")
done done
[ "${#warn}" -ne 0 ] && [ "${#warn}" -ne 0 ] && die "Missing commands: ${warn[*]}."
{ _err "${ERR}Missing commands: ${warn[*]}.";
return 1; }
_msg "${PAS}verification of required commands completed" _msg "${PAS}verification of required commands completed"
} }
@ -134,21 +137,27 @@ chk_gpg_keyring()
gpg_key_id=${GPG_SIGNING_KEYS[$user_id]} gpg_key_id=${GPG_SIGNING_KEYS[$user_id]}
# Without --dry-run this command will create a ~/.gnupg owned by root on # Without --dry-run this command will create a ~/.gnupg owned by root on
# systems where gpg has never been used, causing errors and confusion. # systems where gpg has never been used, causing errors and confusion.
if ! gpg --dry-run --list-keys "$gpg_key_id" >/dev/null 2>&1; then if gpg --dry-run --list-keys "$gpg_key_id" >/dev/null 2>&1; then
if prompt_yes_no "${INF}The following OpenPGP public key is \ continue
fi
if prompt_yes_no "${INF}The following OpenPGP public key is \
required to verify the Guix binary signature: $gpg_key_id. required to verify the Guix binary signature: $gpg_key_id.
Would you like me to fetch it for you? (yes/no)"; then Would you like me to fetch it for you?"; then
wget "https://sv.gnu.org/people/viewgpg.php?user_id=$user_id" \ # Use a reasonable time-out here so users don't report silent
--no-verbose -O- | gpg --import - # freezes when Savannah goes out to lunch, as has happened.
else if wget "https://sv.gnu.org/people/viewgpg.php?user_id=$user_id" \
_err "${ERR}Missing OpenPGP public key ($gpg_key_id). --timeout=30 --no-verbose -O- | gpg --import -; then
continue
fi
fi
# If we reach this point, the key is (still) missing. Report further
# missing keys, if any, but then abort the installation.
_err "${ERR}Missing OpenPGP public key ($gpg_key_id).
Fetch it with this command: Fetch it with this command:
wget \"https://sv.gnu.org/people/viewgpg.php?user_id=$user_id\" -O - | \ wget \"https://sv.gnu.org/people/viewgpg.php?user_id=$user_id\" -O - | \
sudo -i gpg --import -" sudo -i gpg --import -"
exit_flag=yes exit_flag=yes
fi
fi
done done
if [ "$exit_flag" = yes ]; then if [ "$exit_flag" = yes ]; then
exit 1 exit 1
@ -220,8 +229,7 @@ chk_sys_arch()
local arch=powerpc64le local arch=powerpc64le
;; ;;
*) *)
_err "${ERR}Unsupported CPU type: ${arch}" die "Unsupported CPU type: ${arch}"
exit 1
esac esac
case "$os" in case "$os" in
@ -229,8 +237,7 @@ chk_sys_arch()
local os=linux local os=linux
;; ;;
*) *)
_err "${ERR}Your operation system (${os}) is not supported." die "Your operation system (${os}) is not supported."
exit 1
esac esac
ARCH_OS="${arch}-${os}" ARCH_OS="${arch}-${os}"
@ -254,7 +261,7 @@ chk_sys_nscd()
configure_substitute_discovery() { configure_substitute_discovery() {
if grep -q -- '--discover=no' "$1" && \ if grep -q -- '--discover=no' "$1" && \
prompt_yes_no "Would you like the Guix daemon to automatically \ prompt_yes_no "Would you like the Guix daemon to automatically \
discover substitute servers on the local network? (yes/no)"; then discover substitute servers on the local network?"; then
sed -i 's/--discover=no/--discover=yes/' "$1" sed -i 's/--discover=no/--discover=yes/' "$1"
fi fi
} }
@ -285,8 +292,7 @@ guix_get_bin_list()
if [[ "${#bin_ver_ls}" -ne "0" ]]; then if [[ "${#bin_ver_ls}" -ne "0" ]]; then
_msg "${PAS}Release for your system: ${default_ver}" _msg "${PAS}Release for your system: ${default_ver}"
else else
_err "${ERR}Could not obtain list of Guix releases." die "Could not obtain list of Guix releases."
exit 1
fi fi
# Use default to download according to the list and local ARCH_OS. # Use default to download according to the list and local ARCH_OS.
@ -311,8 +317,7 @@ guix_get_bin()
"${url}/${bin_ver}.tar.xz" "${url}/${bin_ver}.tar.xz.sig"; then "${url}/${bin_ver}.tar.xz" "${url}/${bin_ver}.tar.xz.sig"; then
_msg "${PAS}download completed." _msg "${PAS}download completed."
else else
_err "${ERR}could not download ${url}/${bin_ver}.tar.xz." die "could not download ${url}/${bin_ver}.tar.xz."
exit 1
fi fi
pushd "${dl_path}" >/dev/null pushd "${dl_path}" >/dev/null
@ -320,8 +325,7 @@ guix_get_bin()
_msg "${PAS}Signature is valid." _msg "${PAS}Signature is valid."
popd >/dev/null popd >/dev/null
else else
_err "${ERR}could not verify the signature." die "could not verify the signature."
exit 1
fi fi
} }
@ -333,8 +337,7 @@ sys_create_store()
_debug "--- [ ${FUNCNAME[0]} ] ---" _debug "--- [ ${FUNCNAME[0]} ] ---"
if [[ -e "/var/guix" || -e "/gnu" ]]; then if [[ -e "/var/guix" || -e "/gnu" ]]; then
_err "${ERR}A previous Guix installation was found. Refusing to overwrite." die "A previous Guix installation was found. Refusing to overwrite."
exit 1
fi fi
cd "$tmp_path" cd "$tmp_path"
@ -488,14 +491,22 @@ sys_enable_guix_daemon()
} }
sys_authorize_build_farms() sys_authorize_build_farms()
{ # authorize the public key of the build farm { # authorize the public key(s) of the build farm(s)
local hosts=(
ci.guix.gnu.org
bordeaux.guix.gnu.org
)
if prompt_yes_no "Permit downloading pre-built package binaries from the \ if prompt_yes_no "Permit downloading pre-built package binaries from the \
project's build farm? (yes/no)"; then project's build farms?"; then
guix archive --authorize \ for host in "${hosts[@]}"; do
< ~root/.config/guix/current/share/guix/ci.guix.gnu.org.pub \ local key=~root/.config/guix/current/share/guix/$host.pub
&& _msg "${PAS}Authorized public key for ci.guix.gnu.org" [ -f "$key" ] \
else && guix archive --authorize < "$key" \
_msg "${INF}Skipped authorizing build farm public keys" && _msg "${PAS}Authorized public key for $host"
done
else
_msg "${INF}Skipped authorizing build farm public keys"
fi fi
} }
@ -503,7 +514,7 @@ sys_create_init_profile()
{ # Define for better desktop integration { # Define for better desktop integration
# This will not take effect until the next shell or desktop session! # This will not take effect until the next shell or desktop session!
[ -d "/etc/profile.d" ] || mkdir /etc/profile.d # Just in case [ -d "/etc/profile.d" ] || mkdir /etc/profile.d # Just in case
cat <<"EOF" > /etc/profile.d/guix.sh cat <<"EOF" > /etc/profile.d/zzz-guix.sh
# Explicitly initialize XDG base directory variables to ease compatibility # Explicitly initialize XDG base directory variables to ease compatibility
# with Guix System: see <https://issues.guix.gnu.org/56050#3>. # with Guix System: see <https://issues.guix.gnu.org/56050#3>.
export XDG_DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}" export XDG_DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}"
@ -532,9 +543,6 @@ GUIX_LOCPATH="$GUIX_PROFILE/lib/locale"
export GUIX_LOCPATH export GUIX_LOCPATH
[ -f "$GUIX_PROFILE/etc/profile" ] && . "$GUIX_PROFILE/etc/profile" [ -f "$GUIX_PROFILE/etc/profile" ] && . "$GUIX_PROFILE/etc/profile"
# set XDG_DATA_DIRS to include Guix installations
export XDG_DATA_DIRS="$GUIX_PROFILE/share:$XDG_DATA_DIRS"
EOF EOF
} }
@ -557,9 +565,28 @@ sys_create_shell_completion()
_msg "${PAS}installed shell completion" _msg "${PAS}installed shell completion"
} }
sys_customize_bashrc()
{
prompt_yes_no "Customize users Bash shell prompt for Guix?" || return
for bashrc in /home/*/.bashrc /root/.bashrc; do
test -f "$bashrc" || continue
grep -Fq '$GUIX_ENVIRONMENT' "$bashrc" && continue
cp "${bashrc}" "${bashrc}.bak"
echo '
# Automatically added by the Guix install script.
if [ -n "$GUIX_ENVIRONMENT" ]; then
if [[ $PS1 =~ (.*)"\\$" ]]; then
PS1="${BASH_REMATCH[1]} [env]\\\$ "
fi
fi
' >> "$bashrc"
done
_msg "${PAS}Bash shell prompt successfully customized for Guix"
}
welcome() welcome()
{ {
local char
cat<<"EOF" cat<<"EOF"
░░░ ░░░ ░░░ ░░░
░░▒▒░░░░░░░░░ ░░░░░░░░░▒▒░░ ░░▒▒░░░░░░░░░ ░░░░░░░░░▒▒░░
@ -585,8 +612,18 @@ This script installs GNU Guix on your system
https://www.gnu.org/software/guix/ https://www.gnu.org/software/guix/
EOF EOF
echo -n "Press return to continue..." # Don't use read -p here! It won't display when run non-interactively.
read -r echo -n "Press return to continue..."$'\r'
if ! read -r char; then
echo
die "Can't read standard input. Hint: don't pipe scripts into a shell."
fi
if [ "$char" ]; then
echo
echo "...that ($char) was not a return!"
_msg "${WAR}Use newlines to automate installation, e.g.: yes '' | ${0##*/}"
_msg "${WAR}Any other method is unsupported and likely to break in future."
fi
} }
main() main()
@ -606,7 +643,7 @@ main()
_msg "${INF}system is ${ARCH_OS}" _msg "${INF}system is ${ARCH_OS}"
umask 0022 umask 0022
tmp_path="$(mktemp -t -d guix.XXX)" tmp_path="$(mktemp -t -d guix.XXXXXX)"
if [ -z "${GUIX_BINARY_FILE_NAME}" ]; then if [ -z "${GUIX_BINARY_FILE_NAME}" ]; then
guix_get_bin_list "${GNU_URL}" guix_get_bin_list "${GNU_URL}"
@ -626,6 +663,7 @@ main()
sys_authorize_build_farms sys_authorize_build_farms
sys_create_init_profile sys_create_init_profile
sys_create_shell_completion sys_create_shell_completion
sys_customize_bashrc
_msg "${INF}cleaning up ${tmp_path}" _msg "${INF}cleaning up ${tmp_path}"
rm -r "${tmp_path}" rm -r "${tmp_path}"

View file

@ -11,10 +11,12 @@ After=guix-daemon.service
[Service] [Service]
ExecStart=@localstatedir@/guix/profiles/per-user/root/current-guix/bin/guix publish --user=nobody --port=8181 ExecStart=@localstatedir@/guix/profiles/per-user/root/current-guix/bin/guix publish --user=nobody --port=8181
Environment='GUIX_LOCPATH=@localstatedir@/guix/profiles/per-user/root/guix-profile/lib/locale' LC_ALL=en_US.utf8 Environment='GUIX_LOCPATH=@localstatedir@/guix/profiles/per-user/root/guix-profile/lib/locale' LC_ALL=en_US.utf8
RemainAfterExit=yes
StandardOutput=syslog StandardOutput=syslog
StandardError=syslog StandardError=syslog
# Despite the name, this is rate-limited: a broken daemon will eventually fail.
Restart=always
# See <https://lists.gnu.org/archive/html/guix-devel/2016-04/msg00608.html>. # See <https://lists.gnu.org/archive/html/guix-devel/2016-04/msg00608.html>.
TasksMax=1024 TasksMax=1024

35
etc/kernels-manifest.scm Normal file
View file

@ -0,0 +1,35 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2022 Leo Famulari <leo@famulari.name>
;;;
;;; 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/>.
;;; This file returns a manifest of packages related to linux-libre.
;;; Simplistically, it selects packages whose names begin with "linux-libre".
;;; It is used to assist continuous integration of the kernel packages.
(use-modules (guix packages)
(guix profiles)
(gnu packages))
(manifest
(map package->manifest-entry
(fold-packages
(lambda (package lst)
(if (string-prefix? "linux-libre"
(package-name package))
(cons package lst)
lst))
'())))

View file

@ -1,12 +1,12 @@
;; GNU Guix news, for use by 'guix pull'. ;; GNU Guix news, for use by 'guix pull'.
;; ;;
;; Copyright © 2019-2022 Ludovic Courtès <ludo@gnu.org> ;; Copyright © 2019-2023 Ludovic Courtès <ludo@gnu.org>
;; Copyright © 20192021 Tobias Geerinckx-Rice <me@tobias.gr> ;; Copyright © 20192021 Tobias Geerinckx-Rice <me@tobias.gr>
;; Copyright © 2019, 2020 Miguel Ángel Arruga Vivas <rosen644835@gmail.com> ;; Copyright © 2019, 2020 Miguel Ángel Arruga Vivas <rosen644835@gmail.com>
;; Copyright © 2019, 2020 Konrad Hinsen <konrad.hinsen@fastmail.net> ;; Copyright © 2019, 2020 Konrad Hinsen <konrad.hinsen@fastmail.net>
;; Copyright © 2019, 2020, 2021 Julien Lepiller <julien@lepiller.eu> ;; Copyright © 2019, 2020, 2021 Julien Lepiller <julien@lepiller.eu>
;; Copyright © 20192022 Florian Pelz <pelzflorian@pelzflorian.de> ;; Copyright © 20192023 Florian Pelz <pelzflorian@pelzflorian.de>
;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com> ;; Copyright © 2020, 2022 Marius Bakke <marius@gnu.org>
;; Copyright © 2020, 2021 Mathieu Othacehe <m.othacehe@gmail.com> ;; Copyright © 2020, 2021 Mathieu Othacehe <m.othacehe@gmail.com>
;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;; Copyright © 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;; Copyright © 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
@ -25,11 +25,344 @@
(channel-news (channel-news
(version 0) (version 0)
(entry (commit "137b91f03bbb7f1df71cf10c4f79ae57fbcea400")
(title
(en "New @option{--with-version} package transformation option")
(de "Neue Paketumwandlungsoption @option{--with-version}")
(fr "Nouvelle option de transformation @option{--with-version}"))
(body
(en "The new @option{--with-version} package transformation option
generalizes @option{--with-latest}: it gets the specified upstream release of
a package and uses it instead of the currently-packaged version.
For example, the command below would spawn GNOME Clocks built against GTK
4.7.0, skipping its test suite:
@example
guix shell gnome-clocks --with-version=gtk=4.7.0 \\
--without-tests=gtk -- gnome-clocks
@end example
Run @command{info \"(guix) Package Transformation Options\"} for more info.")
(de "Die neue Paketumwandlungsoption @option{--with-version}
verallgemeinert @option{--with-latest}: Mit ihr kann man angeben, welche
vom Anbieter veröffentlichte Version man anstelle der derzeit im Paket
vorgegebenen haben möchte.
Zum Beispiel kann mit folgendem Befehl ein für die GTK-Version 4.7.0
erstelltes GNOME Clocks aufgerufen werden, wobei der Testkatalog dafür
übersprungen wird.
@example
guix shell gnome-clocks --with-version=gtk=4.7.0 \\
--without-tests=gtk -- gnome-clocks
@end example
Führen Sie für mehr Informationen @command{info \"(guix.de)
Paketumwandlungsoptionen\"} aus.")
(fr "La nouvelle option de transformation de paquets
@option{--with-version} généralise @option{--with-latest} : elle permet de
spécifier quelle version amont d'un logiciel utiliser à la place de celle
actuellement fournie.
Par exemple, la commande ci-dessous démarre GNOME Clocks construit avec GTK
4.7.0, sans lancer sa suite de tests :
@example
guix shell gnome-clocks --with-version=gtk=4.7.0 \\
--without-tests=gtk -- gnome-clocks
@end example
Voir @command{info \"(guix.fr) Options de transformation de paquets\"} pour
plus de détails.")))
(entry (commit "9ea37eb9f5329c213757bbfe5d9241cde8433858")
(title
(en "Linux-libre 6.0 removed due to end of upstream support")
(de "Linux-libre 6.0 wurde entfernt"))
(body
(en "The linux-libre 6.0 kernel series has reached the end of
its life, and no longer supported upstream. For this
reason, it has been removed from GNU Guix.")
(de "Vom Kernel @code{linux-libre} wird die 6.0-Versionsreihe keine
Unterstützung von dessen Anbieter mehr erfahren (end of life). Daher ist es
aus GNU Guix entfernt worden.")))
(entry (commit "ce8a34bc9ab89f31f107383ba791954864aed372")
(title
(en "Linux-libre kernel updated to 6.1")
(de "Linux-libre-Kernel wird auf 6.1 aktualisiert")
(fr "Le noyau linux-libre est mis à jour vers la 6.1")
(pt "Kernel linux-libre atualizado para 6.1"))
(body
(en "The default version of the linux-libre kernel has been updated to
the 6.1 release series.")
(de "Der standardmäßig verwendete @code{linux-libre}-Kernel basiert
jetzt auf der 6.1-Versionsreihe.")
(fr "La version par défaut du noyau linux-libre est mise à jour
vers la série des 6.1.")
(pt "A versão padrão do kernel linux-libre foi atualizada para a
série do kernel 6.1.")))
(entry (commit "064c5b7e450f9f6d55cfcd0ec2bc9e96ee0b2958")
(title
(en "Linux-libre 4.9 removed due to end of upstream support")
(de "Linux-libre 4.9 wurde entfernt"))
(body
(en "The linux-libre 4.9 kernel series has reach the end of its life,
and is no longer supported upstream. For this reason, it has been removed from
GNU Guix.")
(de "Vom Kernel @code{linux-libre} wird die 4.9-Versionsreihe keine
Unterstützung von dessen Anbieter mehr erfahren (end of life). Daher ist es
aus GNU Guix entfernt worden.")))
(entry (commit "dfc6957a5af7d179d4618eb19d4f555c519bc6f2")
(title
(en "New @code{customize-linux} procedure")
(de "Neue Prozedur @code{customize-linux}")
(fr "Nouvelle procédure @code{customize-linux}"))
(body
(en "The @code{(gnu packages linux)} module includes a new
@code{customize-linux} procedure, which should now be used instead of
replacing the @samp{\"kconfig\"} native input of a @code{linux-libre}-derived
package, as the kernel config file is no longer provided as a native
input.")
(de "Das Modul @code{(gnu packages linux)} enthält eine neue Prozedur
@code{customize-linux}, die von nun an für angepasste Linux-Pakete benutzt
werden sollte. Die native Eingabe @samp{\"kconfig\"} eines von
@code{linux-libre} abgeleiteten Pakets zu ersetzen, funktioniert nicht mehr,
weil die Kernel-Konfigurationsdatei nicht mehr als native Eingabe vorliegt.")
(fr "Le module @code{(gnu packages linux)} inclut une nouvelle
procédure @code{customize-linux}, qui devrait maintenant être utilisée au lieu
de remplacer l'entrée native @samp{\"kconfig\"} d'un paquet dérivé de
@code{linux-libre}, car le fichier de configuration du noyau n'est plus fourni
en tant qu'entrée native.")))
(entry (commit "788602b37ff42f730d4b7b569b0fb51465f147da")
(title
(en "New @option{--symlink} option for @command{guix shell}")
(de "Neue Option @option{--symlink} für @command{guix shell}")
(fr "Nouvelle option @option{--symlink} pour @command{guix shell}"))
(body
(en "The @command{guix shell} command has a new
@option{--symlink} (or @option{-S}) option, to be used in conjunction with the
@option{--container} (or @option{-C}) option to create a symbolic link inside
the container. Run @command{info \"(guix) Invoking guix shell\"} for more
information.")
(de "Der Befehl @command{guix shell} verfügt jetzt über eine neue
Befehlszeilenoption @option{--symlink} (oder @option{-S}), die zusammen mit der
Option @option{--container} (oder @option{-C}) benutzt werden kann, um eine
symbolische Verknüpfung im Container anzulegen. Führen Sie
@command{info \"(guix.de) Aufruf von guix shell\"} aus, um mehr zu erfahren.")
(fr "La commande @command{guix shell} dispose d'une nouvelle option,
@option{--symlink} (ou @option{-S}), qui doit être utilisée en conjonction
avec l'option @option{--container} (ou @option{-C}) pour créer un lien
symbolique dans le conteneur. Lancer @command{info \"(guix.fr) Invoquer guix
shell\"} pour plus d'informations.")))
(entry (commit "82a0a395d7051eab7b9f15ec4740d58c86413604")
(title
(en "Linux-libre kernel updated to 6.0")
(de "Linux-libre-Kernel wird auf 6.0 aktualisiert")
(fr "Le noyau linux-libre est mis à jour vers la 6.0")
(pt "Kernel linux-libre atualizado para 6.0"))
(body
(en "The default version of the linux-libre kernel has been
updated to the 6.0 release series.")
(de "Der standardmäßig verwendete @code{linux-libre}-Kernel basiert
jetzt auf der 6.0-Versionsreihe.")
(fr "La version par défaut du noyau linux-libre est mise à jour
vers la série des 6.0.")
(pt "A versão padrão do kernel linux-libre foi atualizada para a
série do kernel 6.0.")))
(entry (commit "400a7a4c80efbde1905ae98a298bbb5882d46a0d")
(title
(en "New build system for Python packages")
(de "Neues Erstellungssystem für Python-Pakete")
(fr "Nouveau système de construction pour les paquets Python")
(pt "Novo sistema de compilação para pacotes Python"))
(body
(en "A new @var{pyproject-build-system} has been added. This
is a redesign of @var{python-build-system} with support for @dfn{PEP 517}
and @file{pyproject.toml} files. It also has built-in support for various
test frameworks such as @command{pytest} and @code{nosetests}.
There is a complementary @code{python-toolchain} package that comes with
updated versions of @command{pip}, @command{setuptools} and others.
The build system will eventually be merged into @var{python-build-system}
but you are encouraged to use it for packages in the @code{guix} channel.
Third party channels may want to wait until the API is stable (see the
Guix manual for caveats).
Despite the name, @var{pyproject-build-system} also works with the
``legacy'' @file{setup.py} format.")
(de "Ein neues Erstellungssystem @var{pyproject-build-system} ist
verfügbar. Es ist eine Neuauflage des @var{python-build-system}, die
@dfn{PEP 517} und @file{pyproject.toml}-Dateien unterstützt. Auch wurde
Unterstützung für Testrahmen wie @command{pytest} und @code{nosetests}
eingebaut.
Ergänzend gibt es ein Paket @code{python-toolchain} mit aktualisierten Versionen
von @command{pip}, @command{setuptools} und mehr.
Das Erstellungssystem wird in Zukunft Teil von @var{python-build-system} werden,
aber wir würden es begrüßen, wenn Sie es für Pakete auf dem @code{guix}-Kanal
verwenden würden. Drittanbieterkanäle warten vielleicht lieber auf eine
stabile Programmierschnittstelle (siehe die im Guix-Handbuch genannten
Einschränkungen).
Trotz dem Namen funktioniert @var{pyproject-build-system} auch mit dem alten
@file{setup.py}-Format.")
(fr "Un nouveau système de construction, @var{pyproject-build-system},
a été ajouté. Il s'agit d'une refonte du @var{python-build-system} qui rajoute
la prise en charge de @dfn{PEP 517} et des fichiers @file{pyproject.toml}.
Il intègre aussi la prise en charge de divers cadriciels de test comme
@command{pytest} ou @code{nosetests}.
Un paquet supplémentaire @code{python-toolchain} fournit des versions à jour
de @command{pip}, @command{setuptools} et autres.
Le système de construction finira par être intégré au @var{python-build-system}
mais nous vous encourageons à l'utiliser pour les paquets du canal @code{guix}.
Les canaux tiers devraient attendre que l'API se stabilise (voir le manuel de
Guix pour les mises en garde).
Contrairement à ce qu'indique son nom, @var{pyproject-build-system} fonctionne
aussi avec « l'ancien » format @file{setup.py}.")
(pt "Um novo sistema de compilação chamado @var{pyproject-build-system}
foi adicionado. É um redesign do @var{python-build-system} com suporte à
@dfn{PEP 517} e a arquivos @file{pyproject.toml}. Ele também inclui suporte a
vários frameworks de teste tais como @command{pytest} e @code{nosetests}.
um pacote complementar @code{python-toolchain} que contém versões
atualizadas do @command{pip}, @command{setuptools} e outros.
O sistema de compilação será eventualmente incorporado ao
@var{python-build-system}, mas encorajamos você a usá-lo para pacotes no canal
@code{guix}. Canais de terceiros podem querer esperar até a API se
estabilizar (veja o manual do Guix para ressalvas).
Apesar do nome, o @var{pyproject-build-system} também funciona com o formato
legado do @file{setup.py}.")))
(entry (commit "c7ba5f38b80433b040d3946b8fc0b1e8621ba30a")
(title
(en "New @option{--emulate-fhs} option for @command{guix shell}")
(de "Neue Option @option{--emulate-fhs} für @command{guix shell}")
(fr "Nouvelle option @option{--emulate-fhs} pour @command{guix shell}")
(pt "Nova opção @option{--emulate-fhs} para o @command{guix shell}"))
(body
(en "The @command{guix shell} command has a new
@option{--emulate-fhs} (or @option{-F}) option. Combined with
@option{--container} (or @option{-C}), it emulates the file and directory
layout specified by the Filesystem Hierarchy Standard (FHS), providing
@file{/bin}, @file{/lib}, etc. within the container.
For example, the following command runs @file{/bin/ls} within such a
container:
@example
guix shell -CF coreutils -- /bin/ls
@end example
Run @command{info \"(guix) Invoking guix shell\"} for more information.")
(de "Der Befehl @command{guix shell} verfügt jetzt über eine neue
Befehlszeilenoption @option{--emulate-fhs} (oder @option{-F}). Zusammen mit
@option{--container} (oder @option{-C}) kann so die Datei- und
Verzeichnisstruktur, die im @i{Filesystem Hierarchy Standard} (FHS) vorgegeben
wird, nachgebildet werden. Das heißt, in der Container-Umgebung gibt es
@file{/bin}, @file{/lib} und so weiter.
Zum Beispiel wird folgender Befehl @file{/bin/ls} in einem solchen Container
ausführen:
@example
guix shell -CF coreutils -- /bin/ls
@end example
Führen Sie @command{info \"(guix.de) Aufruf von guix shell\"} aus, um mehr
zu erfahren.")
(fr "La commande @command{guix shell} dispose d'une nouvelle option,
@option{--emulate-fhs} (ou @option{-F}). Avec @option{--container} (ou
@option{-C}), elle permet d'imiter la disposition des fichiers et répertoires
spécifiée par le @i{Filesystem Hierarchy Standard} (FHS) en fournissant
@file{/bin}, @file{/lib}, etc. dans le conteneur.
Par exemple, la commande ci-dessous lance @file{/bin/ls} dans un tel
conteneur :
@example
guix shell -CF coreutils -- /bin/ls
@end example
Lancer @command{info \"(guix.fr) Invoquer guix shell\"} pour plus
d'informations.")
(pt "O comando @command{guix shell} tem uma nova opção
@option{--emulate-fhs} (ou @option{-F}). Combinada com
@option{--container} (ou @option{-C}), ela emula o layout de arquivos e
diretórios especificado pelo Padrão de Hierarquia do Sistema de
Arquivos (Filesystem Hierarchy Standard FHS), provendo @file{/bin},
@file{/lib}, etc. dentro do contêiner.
Por exemplo, o comando seguinte executa @file{/bin/ls} dentro de um contêiner
desse tipo:
@example
guix shell -CF coreutils -- /bin/ls
@end example
Execute @command{info \"(guix) Invoking guix shell\"} para mais informações.")))
(entry (commit "28ade1bab207974cce6a014e7187968511fc5526")
(title
(en "@option{--with-source} is now recursive")
(de "@option{--with-source} ist jetzt rekursiv")
(fr "@option{--with-source} est dorénavant récursive")
(pt "@option{--with-source} agora é recursiva"))
(body
(en "The @option{--with-source} package transformation option now
uses the specified source for all matching packages, including dependencies.
This option is useful for all package maintainers, developers, and, in
general, all users who want Guix to facilitate their rights to modify their
software and share their changes.
Run @command{info \"(guix) Package Transformation Options\"} for more
info.")
(de "Die Paketumwandlungsoption @option{--with-source} wird jetzt den
angegebenen Quellcode für sämtliche passende Pakete benutzen, Abhängigkeiten
eingeschlossen. Die Option hilft Paketbetreuern, Entwicklern und allgemein allen
Nutzern, die Guix benutzen, das Recht, ihre Software anzupassen und
Änderungen zu teilen, leichter auszuüben.
Führen Sie für mehr Informationen @command{info \"(guix.de)
Paketumwandlungsoptionen\"} aus.")
(fr "L'option de transformation de paquet @option{--with-source}
s'applique désormais à tous les paquets correspondant, y compris les
dépendances. Cette option est utile pour les personnes qui maintiennent un
logiciel, en développent un ou, plus généralement, pour toute personne qui
souhaite que Guix facilite l'exercice de ses droits à modifier le logiciel et
à partager ses changements.
Lancer @command{info \"(guix.fr) Options de transformation de paquets\"} pour
plus d'informations.")
(pt "A opção de transformação de pacote @option{--with-source} agora
usa a fonte especificada para todos os pacotes correspondentes, incluindo
dependências. Essa opção é útil para todos os mantenedores de pacotes,
desenvolvedores e usuários em geral que querem que o Guix facilite seu direito
de modificar seu software e compartilhar suas mudanças.
Execute @command{info \"(guix) Package Transformation Options\"} para mais
informações.")))
(entry (commit "a13f5ead0265cf0fe11e60150547c09dfc8c45b0") (entry (commit "a13f5ead0265cf0fe11e60150547c09dfc8c45b0")
(title (title
(en "Guix System image creation is now documented") (en "Guix System image creation is now documented")
(de "Es gibt eine Dokumentation, wie Sie Guix-System-Abbilder („Images“) erzeugen") (de "Es gibt eine Dokumentation, wie Sie Guix-System-Abbilder („Images“) erzeugen")
(fr "La création d'images pour Guix System est à présent documentée")) (fr "La création d'images pour Guix System est à présent documentée")
(pt "A criação de imagens do Guix System agora está documentada"))
(body (body
(en "The Guix System image API that allows you to create customized (en "The Guix System image API that allows you to create customized
system images and turn them into actual bootable images is now documented in system images and turn them into actual bootable images is now documented in
@ -45,12 +378,18 @@ zu bringen.")
permettant de créer des images personnalisées et de les transformer en images permettant de créer des images personnalisées et de les transformer en images
amorçables est désormais documentée dans le chapitre @code{Création d'images amorçables est désormais documentée dans le chapitre @code{Création d'images
système}. Cette interface devrait être particulièrement utile aux personnes système}. Cette interface devrait être particulièrement utile aux personnes
qui essaient de faire fonctionner Guix sur de nouvelles machines."))) qui essaient de faire fonctionner Guix sur de nouvelles machines.")
(pt "A API de imagens do Guix System que permite criar imagens de
sistema customizadas e torná-las inicializáveis agora está documentada no
capítulo @code{Creating System Images} da documentação do Guix. Isso é
particularmente útil para pessoas tentando portar o Guix System para um novo
hardware.")))
(entry (commit "c8112f3bd95269ce4aca12dedbfe61bb6b37acae") (entry (commit "c8112f3bd95269ce4aca12dedbfe61bb6b37acae")
(title (title
(en "WSL system images support") (en "WSL system images support")
(de "WSL-Systemabbilder werden unterstützt") (de "WSL-Systemabbilder werden unterstützt")
(fr "Support pour les images système WSL")) (fr "Support pour les images système WSL")
(pt "Suporte a imagens de sistema WSL"))
(body (body
(en "The @command{guix system image} command can now generate system (en "The @command{guix system image} command can now generate system
images for the Windows Subsystem for Linux. To get started, you can for images for the Windows Subsystem for Linux. To get started, you can for
@ -81,6 +420,16 @@ exemple lancer la commande suivante depuis un répertoire de sources Guix :
et importer l'image obtenue de cette manière : et importer l'image obtenue de cette manière :
@command{wsl --import Guix ./guix ./wsl2-image.tar.gz}
@command{wsl -d Guix}.")
(pt "Agora o comando @command{guix system image} pode gerar imagens
de sistema para o Subsistema do Windows para Linux. Para começar, você pode
por exemplo rodar a partir de um checkout do repositório do Guix:
@command{guix system image gnu/system/images/wsl2.scm},
e importar a imagem resultante da seguinte maneira:
@command{wsl --import Guix ./guix ./wsl2-image.tar.gz} @command{wsl --import Guix ./guix ./wsl2-image.tar.gz}
@command{wsl -d Guix}."))) @command{wsl -d Guix}.")))
(entry (commit "11a06d1e49f4d50d6789e05bbf35e2e145ff7838") (entry (commit "11a06d1e49f4d50d6789e05bbf35e2e145ff7838")
@ -124,18 +473,18 @@ uma transformação, como por exemplo
(entry (commit "c188cf57f161c0c26e2d7c8516bd1ddd1492d686") (entry (commit "c188cf57f161c0c26e2d7c8516bd1ddd1492d686")
(title (title
(en "Linux-libre kernel updated to 5.19") (en "Linux-libre kernel updated to 5.19")
(de "Linux-libre-Kernel wird auf 5.19 aktualisiert") (de "Linux-libre-Kernel wird auf 5.19 aktualisiert")
(fr "Le noyau linux-libre est mis à jour vers la 5.19") (fr "Le noyau linux-libre est mis à jour vers la 5.19")
(pt "Kernel linux-libre atualizado para 5.19")) (pt "Kernel linux-libre atualizado para 5.19"))
(body (body
(en "The default version of the linux-libre kernel has been (en "The default version of the linux-libre kernel has been
updated to the 5.19 release series.") updated to the 5.19 release series.")
(de "Der standardmäßig verwendete @code{linux-libre}-Kernel basiert (de "Der standardmäßig verwendete @code{linux-libre}-Kernel basiert
jetzt auf der 5.19-Versionsreihe.") jetzt auf der 5.19-Versionsreihe.")
(fr "La version par défaut du noyau linux-libre est mise à jour (fr "La version par défaut du noyau linux-libre est mise à jour
vers la série des 5.19.") vers la série des 5.19.")
(pt "A versão padrão do kernel linux-libre foi atualizada para a (pt "A versão padrão do kernel linux-libre foi atualizada para a
série do kernel 5.19."))) série do kernel 5.19.")))
(entry (commit "a15542d26df42dabdb5e2f76d150ae200230c3b0") (entry (commit "a15542d26df42dabdb5e2f76d150ae200230c3b0")
@ -177,15 +526,15 @@ Execute @command{info \"(guix) Invoking guix style\"} para mais informações.")
(entry (commit "2ec7ab2610eb67e26dab52b671eb29e46f64ea0f") (entry (commit "2ec7ab2610eb67e26dab52b671eb29e46f64ea0f")
(title (title
(en "Linux-libre kernel updated to 5.18") (en "Linux-libre kernel updated to 5.18")
(de "Linux-libre-Kernel wird auf 5.18 aktualisiert") (de "Linux-libre-Kernel wird auf 5.18 aktualisiert")
(fr "Le noyau linux-libre est mis à jour vers la 5.18")) (fr "Le noyau linux-libre est mis à jour vers la 5.18"))
(body (body
(en "The default version of the linux-libre kernel has been (en "The default version of the linux-libre kernel has been
updated to the 5.18 release series.") updated to the 5.18 release series.")
(de "Der standardmäßig verwendete @code{linux-libre}-Kernel basiert (de "Der standardmäßig verwendete @code{linux-libre}-Kernel basiert
jetzt auf der 5.18-Versionsreihe.") jetzt auf der 5.18-Versionsreihe.")
(fr "La version par défaut du noyau linux-libre est mise à jour (fr "La version par défaut du noyau linux-libre est mise à jour
vers la série des 5.18."))) vers la série des 5.18.")))
(entry (commit "bdf422176739b473add66eb8cac9fdd8c654f794") (entry (commit "bdf422176739b473add66eb8cac9fdd8c654f794")
@ -317,11 +666,11 @@ Cela vient avec un nouveau système de construction pour paquets Elm---lancer
(de "Linux-libre-Kernel wird auf 5.17 aktualisiert") (de "Linux-libre-Kernel wird auf 5.17 aktualisiert")
(fr "Le noyau linux-libre est mis à jour vers la 5.17")) (fr "Le noyau linux-libre est mis à jour vers la 5.17"))
(body (body
(en "The default version of the linux-libre kernel has been (en "The default version of the linux-libre kernel has been
updated to the 5.17 release series.") updated to the 5.17 release series.")
(de "Der standardmäßig verwendete @code{linux-libre}-Kernel basiert (de "Der standardmäßig verwendete @code{linux-libre}-Kernel basiert
jetzt auf der 5.17-Versionsreihe.") jetzt auf der 5.17-Versionsreihe.")
(fr "La version par défaut du noyau linux-libre est mise à jour (fr "La version par défaut du noyau linux-libre est mise à jour
vers la série des 5.17."))) vers la série des 5.17.")))
(entry (commit "c42b7baf13c7633b4512e94da7445299c57b247d") (entry (commit "c42b7baf13c7633b4512e94da7445299c57b247d")

View file

@ -51,18 +51,17 @@ TARGET."
"openssh" "emacs" "vim" "python" "guile" "guix"))) "openssh" "emacs" "vim" "python" "guile" "guix")))
(define %base-packages/armhf (define %base-packages/armhf
;; XXX: Relax requirements for armhf-linux for lack of enough build power. ;; The guix package doesn't build natively on armhf due to Guile memory
(map (lambda (package) ;; issues compiling the package modules
(if (string=? (package-name package) "emacs") (remove (lambda (package)
(specification->package "emacs-no-x") (string=? (package-name package) "guix"))
package)) %base-packages))
%base-packages))
(define %base-packages/hurd (define %base-packages/hurd
;; XXX: For now we are less demanding of "i586-gnu". ;; XXX: For now we are less demanding of "i586-gnu".
(map specification->package (map specification->package
'("coreutils" "grep" "findutils" "gawk" "make" '("coreutils" "grep" "findutils" "gawk" "make"
"gcc-toolchain" "tar" "xz"))) #;"gcc-toolchain" "tar" "xz")))
(define %system-packages (define %system-packages
;; Key packages proposed by the Guix System installer. ;; Key packages proposed by the Guix System installer.
@ -112,8 +111,6 @@ TARGET."
(cond ((string=? system "i586-gnu") (cond ((string=? system "i586-gnu")
%base-packages/hurd) %base-packages/hurd)
((string=? system "armhf-linux") ((string=? system "armhf-linux")
;; FIXME: Drop special case when ci.guix.gnu.org
;; has more ARMv7 build power.
%base-packages/armhf) %base-packages/armhf)
((string=? system "powerpc64le-linux") ((string=? system "powerpc64le-linux")
;; FIXME: Drop 'bootstrap-tarballs' until ;; FIXME: Drop 'bootstrap-tarballs' until

View file

@ -1,118 +1,158 @@
-*- mode: lisp-data -*- -*- mode: lisp-data -*-
text-mode :when (and (fboundp 'git-commit-mode) (git-commit-mode)) text-mode :when (and (fboundp 'git-commit-mode) git-commit-mode)
(add\ (add\ "gnu: Add "
"gnu: Add " (p (with-temp-buffer
(p (magit-git-wash #'magit-diff-wash-diffs
(with-temp-buffer "diff" "--staged")
(magit-git-wash #'magit-diff-wash-diffs (goto-char (point-min))
"diff" "--staged") (when (re-search-forward "\\+(define-public \\(\\S-+\\)"
(goto-char (point-min)) nil 'noerror)
(when (re-search-forward "\\+(define-public \\(\\S-+\\)" nil 'noerror) (match-string-no-properties 1)))
(match-string-no-properties 1))) var)
var ) "." n n "." n n
"* " (car (magit-staged-files)) " (" (s var ) "): New variable.") "* " (p (or (car (magit-staged-files)) ""))
" (" (s var ) "): New variable.")
(remove\ (remove\ "gnu: Remove "
"gnu: Remove " (p (with-temp-buffer
(p (with-temp-buffer (magit-git-wash #'magit-diff-wash-diffs
(magit-git-wash #'magit-diff-wash-diffs "diff" "--staged")
"diff" "--staged") (goto-char (point-min))
(goto-char (point-min)) (when (re-search-forward "\\-(define-public \\(\\S-+\\)"
(when (re-search-forward "\\-(define-public \\(\\S-+\\)" nil 'noerror) nil 'noerror)
(match-string-no-properties 1))) (match-string-no-properties 1)))
var) "." n n var)
"* " (car (magit-staged-files)) " (" (s var) "): Delete variable.") "." n n
"* " (p (or (car (magit-staged-files)) ""))
" (" (s var) "): Delete variable.")
(rename\ (rename\ "gnu: "
"gnu: " (p (with-temp-buffer
(p (with-temp-buffer (magit-git-wash #'magit-diff-wash-diffs
(magit-git-wash #'magit-diff-wash-diffs "diff" "--staged")
"diff" "--staged") (beginning-of-buffer)
(beginning-of-buffer) (when (search-forward "-(define-public " nil 'noerror)
(when (search-forward "-(define-public " nil 'noerror) (thing-at-point 'sexp 'no-properties)))
(thing-at-point 'sexp 'no-properties))) prev-var)
prev-var) ": Rename package to "
": Rename package to " (p (with-temp-buffer
(p (with-temp-buffer (magit-git-wash #'magit-diff-wash-diffs
(magit-git-wash #'magit-diff-wash-diffs "diff" "--staged")
"diff" "--staged") (beginning-of-buffer)
(beginning-of-buffer) (when (search-forward "+(define-public " nil 'noerror)
(when (search-forward "+(define-public " nil 'noerror) (thing-at-point 'sexp 'no-properties)))
(thing-at-point 'sexp 'no-properties))) new-var)
new-var) "." n n "." n n
"* " (car (magit-staged-files)) " (" (s prev-var) "): Define in terms of" n "* " (p (or (car (magit-staged-files)) "")) " (" (s prev-var) "): "
"'deprecated-package'." n "Define in terms of" n
"(" (s new-var) "): New variable, formerly known as \"" (s prev-var) "\".") "'deprecated-package'." n
"(" (s new-var) "): New variable, formerly known as \""
(s prev-var) "\".")
(update\ (update\ "gnu: "
"gnu: " (p (with-temp-buffer
(p (with-temp-buffer (magit-git-wash #'magit-diff-wash-diffs
(magit-git-wash #'magit-diff-wash-diffs "diff" "--staged")
"diff" "--staged") (goto-char (point-min))
(goto-char (point-min)) (when (re-search-forward "^[ ]*(define-public \\(\\S-+\\)"
(when (re-search-forward "^[ ]*(define-public \\(\\S-+\\)" nil 'noerror) nil 'noerror)
(match-string-no-properties 1))) (match-string-no-properties 1)))
var) var)
": Update to " ": Update to "
(p (with-temp-buffer (p (with-temp-buffer
(magit-git-wash #'magit-diff-wash-diffs (magit-git-wash #'magit-diff-wash-diffs
"diff" "--staged") "diff" "--staged")
(goto-char (point-min)) (goto-char (point-min))
(search-forward "name" nil 'noerror) (search-forward "name" nil 'noerror)
(search-forward "+" nil 'noerror) ; first change (search-forward "+" nil 'noerror) ; first change
(when (and (search-forward "version " nil 'noerror) (when (and (search-forward "version " nil 'noerror)
(looking-at-p "\"")) (looking-at-p "\""))
(let ((end (save-excursion (search-forward "\")" nil 'noerror)))) (let ((end (save-excursion (search-forward "\")"
(when end nil 'noerror))))
(forward-char) (when end
(buffer-substring-no-properties (point) (- end 2)))))) (forward-char)
version) "." n n (buffer-substring-no-properties (point) (- end 2))))))
"* " (car (magit-staged-files)) " (" (s var) "): Update to " (s version) "." version)
(mapconcat (lambda (file) (concat "* " file)) (cdr (magit-staged-files))) n) "." n n
"* " (p (or (car (magit-staged-files)) "")) " (" (s var) "): "
"Update to " (s version) "." n
(mapconcat (lambda (file) (concat "* " file))
(cdr (magit-staged-files))
"\n"))
(addcl\ (addcl\ "gnu: Add cl-"
"gnu: Add cl-" (p (replace-regexp-in-string
(p (replace-regexp-in-string "^cl-" "" (with-temp-buffer
"^cl-" "" (with-temp-buffer (magit-git-wash #'magit-diff-wash-diffs
(magit-git-wash #'magit-diff-wash-diffs "diff" "--staged")
"diff" "--staged") (beginning-of-buffer)
(beginning-of-buffer) (when (search-forward "+(define-public " nil 'noerror)
(when (search-forward "+(define-public " nil 'noerror) (replace-regexp-in-string
(replace-regexp-in-string "^sbcl-" ""
"^sbcl-" "" (thing-at-point 'sexp 'no-properties)))))
(thing-at-point 'sexp 'no-properties))))) var)
var) "." n n "." n n
"* " (car (magit-staged-files)) "* " (p (or (car (magit-staged-files)) ""))
" (cl-" (s var) ", ecl-" (s var) ", sbcl-" (s var) "): New variables.") " (cl-" (s var)
", ecl-" (s var)
", sbcl-" (s var) "): New variables.")
(https\ (https\ "gnu: "
"gnu: " (p (with-temp-buffer
(p (with-temp-buffer (magit-git-wash #'magit-diff-wash-diffs
(magit-git-wash #'magit-diff-wash-diffs "diff" "--staged")
"diff" "--staged") (goto-char (point-min))
(goto-char (point-min)) (when (re-search-forward "^[ ]*(define-public \\(\\S-+\\)"
(when (re-search-forward "^[ ]*(define-public \\(\\S-+\\)" nil 'noerror) nil 'noerror)
(match-string-no-properties 1))) (match-string-no-properties 1)))
var) var)
": Use HTTPS home page." n n ": Use HTTPS home page." n n
"* " (car (magit-staged-files)) " (" (s var) ")[home-page]: Use HTTPS." n "* " (p (or (car (magit-staged-files)) ""))
(mapconcat (lambda (file) (concat "* " file)) (cdr (magit-staged-files))) n) " (" (s var) ")[home-page]: Use HTTPS."
n
(mapconcat (lambda (file) (concat "* " file))
(cdr (magit-staged-files))
"\n"))
(move\ (move\ "gnu: "
"gnu: " (p (with-temp-buffer
(p (with-temp-buffer (magit-git-wash #'magit-diff-wash-diffs
(magit-git-wash #'magit-diff-wash-diffs "diff" "--staged")
"diff" "--staged") (goto-char (point-min))
(goto-char (point-min)) (when (re-search-forward "\\-(define-public \\(\\S-+\\)"
(when (re-search-forward "\\-(define-public \\(\\S-+\\)" nil 'noerror) nil 'noerror)
(match-string-no-properties 1))) (match-string-no-properties 1)))
var) var)
": Move to " ": Move to ("
(concat "(" (p (with-temp-buffer
(string-replace "\.scm" "" (magit-git-wash #'magit-diff-wash-diffs
(string-replace "/" " " (car (magit-staged-files)))) "diff" "--staged")
").") n (goto-char (point-min))
n "* " (car (magit-staged-files)) " (" (s var) "): Move from here…" (when (and
n "* " (cadr (magit-staged-files)) " (" (s var) "): …to here.") (re-search-forward "\\+(define-public \\(\\S-+\\)"
nil 'noerror)
(re-search-backward "modified[ ]*\\(\\S-+\\)"
nil 'noerror))
(string-replace
"\.scm" ""
(string-replace "/" " "
(match-string-no-properties 1)))))
new-module)
")." n
n
"* " (p (with-temp-buffer
(magit-git-wash #'magit-diff-wash-diffs
"diff" "--staged")
(goto-char (point-min))
(when (and
(re-search-forward "\\-(define-public \\(\\S-+\\)"
nil 'noerror)
(re-search-backward "modified[ ]*\\(\\S-+\\)"
nil 'noerror))
(match-string-no-properties 1)))
source)
" (" (s var) "): Move from here…" n
"* " (concat (string-replace " " "/" new-module) ".scm")
" (" (s var) "): …to here.")

View file

@ -0,0 +1,9 @@
# -*- mode: snippet -*-
# name: guix-vc-commit-message-add-package
# key: add
# --
gnu: Add ${1:`(when (string-match "\\+(define-public \\(\\S-+\\)" vc-patch-string)
(match-string-no-properties 1 vc-patch-string))`}.
* `(car (log-edit-files))` ($1): New variable.
`(mapconcat (lambda (file) (concat "* " file)) (cdr (log-edit-files)) "\n")`

View file

@ -0,0 +1,9 @@
# -*- mode: snippet -*-
# name: guix-vc-commit-message-remove-package
# key: remove
# --
gnu: Remove ${1:`(when (string-match "\\-(define-public \\(\\S-+\\)" vc-patch-string)
(match-string-no-properties 1 vc-patch-string))`}.
* `(car (log-edit-files))` ($1): Delete variable.
`(mapconcat (lambda (file) (concat "* " file)) (cdr (log-edit-files)) "\n")`

View file

@ -0,0 +1,14 @@
# -*- mode: snippet -*-
# name: guix-vc-commit-message-rename-package
# key: rename
# --
gnu: ${1:`(when (string-match "\\-(define-public \\(\\S-+\\)" vc-patch-string)
(match-string-no-properties 1 vc-patch-string))
`}: Rename package to ${2:`
(when (string-match "\\+(define-public \\(\\S-+\\)" vc-patch-string)
(match-string-no-properties 1 vc-patch-string))`}.
* `(car (log-edit-files))` ($1): Define in terms of
'deprecated-package'.
($2): New variable, formerly known as "$1".
`(mapconcat (lambda (file) (concat "* " file)) (cdr (log-edit-files)) "\n")`

View file

@ -0,0 +1,12 @@
# -*- mode: snippet -*-
# name: guix-vc-commit-message-update-package
# key: update
# --
gnu: ${1:`(when (string-match "^[ ]*(define-public \\(\\S-+\\)" vc-patch-string)
(match-string-no-properties 1 vc-patch-string))`}: Update to ${2:`
(when (string-match "^\\+[ ]*(version \"\\(.*\\)\"" vc-patch-string)
(match-string-no-properties 1 vc-patch-string))`}.
* `(car (log-edit-files))` ($1): Update to $2.$0
`(mapconcat (lambda (file) (concat "* " file)) (cdr (log-edit-files)) "\n")`

View file

@ -0,0 +1,9 @@
# -*- mode: snippet -*-
# name: guix-vc-commit-message-use-https-home-page
# key: https
# --
gnu: ${1:`(when (string-match "^[ ]*(define-public \\(\\S-+\\)" vc-patch-string)
(match-string-no-properties 1 vc-patch-string))`}: Use HTTPS home page URI.
* `(car (log-edit-files))` ($1)[home-page]: Use HTTPS URI.
`(mapconcat (lambda (file) (concat "* " file)) (cdr (log-edit-files)) "\n")`

View file

@ -5,6 +5,7 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2022 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2022 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2022 Mathieu Othacehe <othacehe@gnu.org> ;;; Copyright © 2022 Mathieu Othacehe <othacehe@gnu.org>
;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -34,6 +35,7 @@
(ice-9 format) (ice-9 format)
(ice-9 regex) (ice-9 regex)
(ice-9 match) (ice-9 match)
(ice-9 rdelim)
(guix ui) (guix ui)
(git)) (git))
@ -100,6 +102,8 @@
(make-regexp "^gnu/packages/python(-.+|)\\.scm$") (make-regexp "^gnu/packages/python(-.+|)\\.scm$")
"gnu/packages/sphinx.scm" "gnu/packages/sphinx.scm"
"gnu/packages/tryton.scm" "gnu/packages/tryton.scm"
"guix/build/pyproject-build-system.scm"
"guix/build-system/pyproject.scm"
"guix/build/python-build-system.scm" "guix/build/python-build-system.scm"
"guix/build-system/python.scm" "guix/build-system/python.scm"
"guix/import/pypi.scm" "guix/import/pypi.scm"
@ -129,13 +133,23 @@ the haskell-build-system."
#:name "R team" #:name "R team"
#:description #:description
"The R language, CRAN and Bioconductor repositories, the \"cran\" importer, "The R language, CRAN and Bioconductor repositories, the \"cran\" importer,
and the r-build-system.")) and the r-build-system."
#:scope (list "gnu/packages/bioconductor.scm"
"gnu/packages/cran.scm"
"guix/build/r-build-system.scm"
"guix/build-system/r.scm"
"guix/import/cran.scm"
"guix/scripts/import/cran.scm"
"tests/cran.scm")))
(define-team julia (define-team julia
(team 'julia (team 'julia
#:name "Julia team" #:name "Julia team"
#:description #:description
"The Julia language, Julia packages, and the julia-build-system.")) "The Julia language, Julia packages, and the julia-build-system."
#:scope (list (make-regexp "^gnu/packages/julia(-.+|)\\.scm$")
"guix/build/julia-build-system.scm"
"guix/build-system/julia.scm")))
(define-team ocaml (define-team ocaml
(team 'ocaml (team 'ocaml
@ -175,7 +189,14 @@ and the maven-build-system."
(define-team science (define-team science
(team 'science (team 'science
#:name "Science team")) #:name "Science team"
#:description "The main science disciplines and fields related
packages (e.g. Astronomy, Chemistry, Math, Physics etc.)"
#:scope (list "gnu/packages/algebra.scm"
"gnu/packages/astronomy.scm"
"gnu/packages/geo.scm"
"gnu/packages/chemestry.scm"
"gnu/packages/maths.scm")))
(define-team emacs (define-team emacs
(team 'emacs (team 'emacs
@ -185,7 +206,10 @@ ecosystem."
#:scope (list (make-regexp "^gnu/packages/emacs(-.+|)\\.scm$") #:scope (list (make-regexp "^gnu/packages/emacs(-.+|)\\.scm$")
"guix/build/emacs-build-system.scm" "guix/build/emacs-build-system.scm"
"guix/build/emacs-utils.scm" "guix/build/emacs-utils.scm"
"guix/build-system/emacs.scm"))) "guix/build-system/emacs.scm"
"guix/import/elpa.scm"
"guix/scripts/import/elpa.scm"
"tests/elpa.scm")))
(define-team lisp (define-team lisp
(team 'lisp (team 'lisp
@ -200,11 +224,23 @@ asdf-build-system."
(define-team ruby (define-team ruby
(team 'ruby (team 'ruby
#:name "Ruby team")) #:name "Ruby team"
#:scope (list "gnu/packages/ruby.scm"
"guix/build/ruby-build-system.scm"
"guix/build-system/ruby.scm"
"guix/import/gem.scm"
"guix/scripts/import/gem.scm"
"tests/gem.scm")))
(define-team go (define-team go
(team 'go (team 'go
#:name "Go team")) #:name "Go team"
#:scope (list "gnu/packages/golang.scm"
"guix/build/go-build-system.scm"
"guix/build-system/go.scm"
"guix/import/go.scm"
"guix/scripts/import/go.scm"
"tests/go.scm")))
(define-team embedded-bootstrap (define-team embedded-bootstrap
(team 'embedded-bootstrap (team 'embedded-bootstrap
@ -212,11 +248,23 @@ asdf-build-system."
(define-team rust (define-team rust
(team 'rust (team 'rust
#:name "Rust")) #:name "Rust"
#:scope (list (make-regexp "^gnu/packages/(crates|rust)(-.+|)\\.scm$")
"guix/build/cargo-build-system.scm"
"guix/build/cargo-utils.scm"
"guix/build-system/cargo.scm"
"guix/import/crate.scm"
"guix/scripts/import/crate.scm"
"tests/crate.scm")))
(define-team kernel (define-team kernel
(team 'kernel (team 'kernel
#:name "Linux-libre kernel team")) #:name "Linux-libre kernel team"
#:scope (list "gnu/build/linux-modules.scm"
"gnu/packages/linux.scm"
"gnu/tests/linux-modules.scm"
"guix/build/linux-module-build-system.scm"
"guix/build-system/linux-module.scm")))
(define-team core (define-team core
(team 'core (team 'core
@ -314,19 +362,35 @@ asdf-build-system."
"gnu/packages/motti.scm" "gnu/packages/motti.scm"
"guix/build/minetest-build-system.scm"))) "guix/build/minetest-build-system.scm")))
(define-team localization
(team 'localization
#:name "Localization (l10n) team"
#:description
"Localization of your system to specific languages."
#:scope (list "gnu/packages/anthy.scm"
"gnu/packages/fcitx5.scm"
"gnu/packages/fcitx.scm"
"gnu/packages/fonts.scm"
"gnu/packages/ibus.scm")))
(define-team translations (define-team translations
(team 'translations (team 'translations
#:name "Translations")) #:name "Translations"
#:scope (list "etc/news.scm"
(make-regexp "^po/"))))
(define-team installer (define-team installer
(team 'installer (team 'installer
#:name "Installer script and system installer" #:name "Installer script and system installer"
#:scope #:scope (list (make-regexp "^gnu/installer(\\.scm$|/)"))))
(list (make-regexp "^guix/installer(\\.scm$|/)"))))
(define-team home (define-team home
(team 'home (team 'home
#:name "Team for \"Guix Home\"")) #:name "Team for \"Guix Home\""
#:scope (list (make-regexp "^(gnu|guix/scripts)/home(\\.scm$|/)")
"tests/guix-home.sh"
"tests/home-import.scm"
"tests/home-services.scm")))
(define-team mentors (define-team mentors
(team 'mentors (team 'mentors
@ -339,7 +403,8 @@ asdf-build-system."
#:name "Mozilla" #:name "Mozilla"
#:description #:description
"Taking care about Icecat and Icedove, built from Mozilla Firefox "Taking care about Icecat and Icedove, built from Mozilla Firefox
and Thunderbird.")) and Thunderbird."
#:scope (list "gnu/packages/gnuzilla.scm")))
(define-team racket (define-team racket
(team 'racket (team 'racket
@ -347,13 +412,18 @@ and Thunderbird."))
#:description #:description
"The Racket language and Racket-based languages, Racket packages, "The Racket language and Racket-based languages, Racket packages,
Racket's variant of Chez Scheme, and development of a Racket build system and Racket's variant of Chez Scheme, and development of a Racket build system and
importer.")) importer."
#:scope (list "gnu/packages/chez.scm"
"gnu/packages/racket.scm")))
(define-team reproduciblebuilds
(team 'reproduciblebuilds
#:name "Reproducible Builds team"
#:description
"Reproducible Builds tooling and issues that affect any guix packages."
#:scope (list "gnu/packages/diffoscope.scm")))
(define-member (person "Thiago Jung Bauermann"
"bauermann@kolabnow.com")
embedded-bootstrap translations)
(define-member (person "Eric Bavier" (define-member (person "Eric Bavier"
"bavier@posteo.net") "bavier@posteo.net")
science) science)
@ -374,6 +444,10 @@ importer."))
"andreas@enge.fr") "andreas@enge.fr")
science) science)
(define-member (person "Tobias Geerinckx-Rice"
"me@tobias.gr")
core kernel mentors)
(define-member (person "Björn Höfling" (define-member (person "Björn Höfling"
"bjoern.hoefling@bjoernhoefling.de") "bjoern.hoefling@bjoernhoefling.de")
java) java)
@ -434,6 +508,26 @@ importer."))
"dev@jpoiret.xyz") "dev@jpoiret.xyz")
core installer) core installer)
(define-member (person "("
"paren@disroot.org")
home mentors)
(define-member (person "Simon Tournier"
"zimon.toutoune@gmail.com")
julia core mentors)
(define-member (person "Raghav Gururajan"
"rg@raghavgururajan.name")
mentors)
(define-member (person "宋文武"
"iyzsong@envs.net")
games localization)
(define-member (person "Vagrant Cascadian"
"vagrant@reproducible-builds.org")
reproduciblebuilds)
(define (find-team name) (define (find-team name)
(or (hash-ref %teams (string->symbol name)) (or (hash-ref %teams (string->symbol name))
@ -476,14 +570,16 @@ TEAMS when a patch is received by Debbugs."
prefix prefix
(person-name member) (person-name member)
(person-email member))) (person-email member)))
(team-members team))) (sort
(team-members team)
(lambda (m1 m2) (string<? (person-name m1) (person-name m2))))))
(define (list-teams) (define (list-teams)
"Print all teams, their scope and their members." "Print all teams, their scope and their members."
(define port* (current-output-port)) (define port* (current-output-port))
(define width* (%text-width)) (define width* (%text-width))
(hash-for-each (for-each
(lambda (key team) (lambda (team)
(format port* (format port*
"\ "\
id: ~a id: ~a
@ -504,7 +600,11 @@ description: ~a
(scope (format #f "scope: ~{~s ~}~%" scope)))) (scope (format #f "scope: ~{~s ~}~%" scope))))
(list-members team port* "+ ") (list-members team port* "+ ")
(newline)) (newline))
%teams)) (sort
(hash-map->list (lambda (key value) value) %teams)
(lambda (team1 team2)
(string<? (symbol->string (team-id team1))
(symbol->string (team-id team2)))))))
(define (diff-revisions rev-start rev-end) (define (diff-revisions rev-start rev-end)
@ -532,14 +632,38 @@ and REV-END, two git revision strings."
(const 0)) (const 0))
files)) files))
(define (git-patch->commit-id file)
"Parse the commit ID from the first line of FILE, a patch produced with git."
(call-with-input-file file
(lambda (port)
(let ((m (string-match "^From ([0-9a-f]{40})" (read-line port))))
(unless m
(error "invalid patch file:" file))
(match:substring m 1)))))
(define (git-patch->revisions file)
"Return the start and end revisions of FILE, a patch file produced with git."
(let* ((rev-end (git-patch->commit-id file))
(rev-start (string-append rev-end "^")))
(list rev-start rev-end)))
(define (main . args) (define (main . args)
(match args (match args
(("cc" . team-names) (("cc" . team-names)
(apply cc (map find-team team-names))) (apply cc (map find-team team-names)))
(("cc-members" patch-file)
(unless (file-exists? patch-file)
(error "patch file does not exist:" patch-file))
(apply main "cc-members" (git-patch->revisions patch-file)))
(("cc-members" rev-start rev-end) (("cc-members" rev-start rev-end)
(apply cc (find-team-by-scope (apply cc (find-team-by-scope
(diff-revisions rev-start rev-end)))) (diff-revisions rev-start rev-end))))
(("get-maintainer" patch-file)
(apply main "list-members"
(map (compose symbol->string team-id)
(find-team-by-scope (apply diff-revisions
(git-patch->revisions patch-file))))))
(("list-teams" . args) (("list-teams" . args)
(list-teams)) (list-teams))
(("list-members" . team-names) (("list-members" . team-names)
@ -549,6 +673,18 @@ and REV-END, two git revision strings."
team-names)) team-names))
(anything (anything
(format (current-error-port) (format (current-error-port)
"Usage: etc/teams.scm <command> [<args>]~%")))) "Usage: etc/teams.scm <command> [<args>]
Commands:
cc <team-name>
get git send-email flags for cc-ing <team-name>
cc-members <start> <end> | patch
cc teams related to files changed between revisions or in a patch file
list-teams
list teams and their members
list-members <team-name>
list members belonging to <team-name>
get-maintainer <patch>
compatibility mode with Linux get_maintainer.pl~%"))))
(apply main (cdr (command-line))) (apply main (cdr (command-line)))

View file

@ -322,26 +322,22 @@ instead~%")))
(force %bootloaders)) (force %bootloaders))
(leave (G_ "~a: no such bootloader~%") name))) (leave (G_ "~a: no such bootloader~%") name)))
(define (efi-bootloader-profile files bootloader-package hooks) (define (efi-bootloader-profile packages files hooks)
"Creates a profile with BOOTLOADER-PACKAGE and a directory collection/ with "Creates a profile from the lists of PACKAGES and FILES from the store.
links to additional FILES from the store. This collection is meant to be used This profile is meant to be used by the bootloader-installer.
by the bootloader installer.
FILES is a list of file or directory names from the store, which will be FILES is a list of file or directory names from the store, which will be
symlinked into the collection/ directory. If a directory name ends with '/', symlinked into the profile. If a directory name ends with '/', then the
then the directory content instead of the directory itself will be symlinked directory content instead of the directory itself will be symlinked into the
into the collection/ directory. profile.
FILES may contain file like objects produced by functions like plain-file, FILES may contain file like objects produced by procedures like plain-file,
local-file, etc., or package contents produced with file-append. local-file, etc., or package contents produced with file-append.
HOOKS lists additional hook functions to modify the profile." HOOKS lists additional hook functions to modify the profile."
(define (bootloader-collection manifest) (define (efi-bootloader-profile-hook manifest)
(define build (define build
(with-imported-modules '((guix build utils) (with-imported-modules '((guix build utils))
(ice-9 ftw)
(srfi srfi-1)
(srfi srfi-26))
#~(begin #~(begin
(use-modules ((guix build utils) (use-modules ((guix build utils)
#:select (mkdir-p strip-store-file-name)) #:select (mkdir-p strip-store-file-name))
@ -365,8 +361,7 @@ HOOKS lists additional hook functions to modify the profile."
(define (name-is-store-entry? name) (define (name-is-store-entry? name)
"Return #t if NAME is a direct store entry and nothing inside." "Return #t if NAME is a direct store entry and nothing inside."
(not (string-index (strip-store-file-name name) #\/))) (not (string-index (strip-store-file-name name) #\/)))
(let* ((collection (string-append #$output "/collection")) (let* ((files '#$files)
(files '#$files)
(directories (filter name-ends-with-/? files)) (directories (filter name-ends-with-/? files))
(names-from-directories (names-from-directories
(append-map (lambda (directory) (append-map (lambda (directory)
@ -374,11 +369,11 @@ HOOKS lists additional hook functions to modify the profile."
directories)) directories))
(names (append names-from-directories (names (append names-from-directories
(remove name-ends-with-/? files)))) (remove name-ends-with-/? files))))
(mkdir-p collection) (mkdir-p #$output)
(if (every file-exists? names) (if (every file-exists? names)
(begin (begin
(for-each (lambda (name) (for-each (lambda (name)
(symlink-to name collection (symlink-to name #$output
(if (name-is-store-entry? name) (if (name-is-store-entry? name)
strip-store-file-name strip-store-file-name
basename))) basename)))
@ -386,57 +381,63 @@ HOOKS lists additional hook functions to modify the profile."
#t) #t)
#f))))) #f)))))
(gexp->derivation "bootloader-collection" (gexp->derivation "efi-bootloader-profile"
build build
#:local-build? #t #:local-build? #t
#:substitutable? #f #:substitutable? #f
#:properties #:properties
`((type . profile-hook) `((type . profile-hook)
(hook . bootloader-collection)))) (hook . efi-bootloader-profile-hook))))
(profile (content (packages->manifest (list bootloader-package))) (profile (content (packages->manifest packages))
(name "bootloader-profile") (name "efi-bootloader-profile")
(hooks (append (list bootloader-collection) hooks)) (hooks (cons efi-bootloader-profile-hook hooks))
(locales? #f) (locales? #f)
(allow-collisions? #f) (allow-collisions? #f)
(relative-symlinks? #f))) (relative-symlinks? #f)))
(define* (efi-bootloader-chain files (define* (efi-bootloader-chain final-bootloader
final-bootloader
#:key #:key
(packages '())
(files '())
(hooks '()) (hooks '())
installer) installer
"Define a bootloader chain with FINAL-BOOTLOADER as the final bootloader and disk-image-installer)
certain directories and files from the store given in the list of FILES. "Define a chain of bootloaders with the FINAL-BOOTLOADER, optional PACKAGES,
and optional directories and files from the store given in the list of FILES.
FILES may contain file like objects produced by functions like plain-file, The package of the FINAL-BOOTLOADER and all PACKAGES and FILES will be placed
local-file, etc., or package contents produced with file-append. They will be in an efi-bootloader-profile, which will be passed to the INSTALLER.
collected inside a directory collection/ inside a generated bootloader profile,
which will be passed to the INSTALLER. FILES may contain file-like objects produced by procedures like plain-file,
local-file, etc., or package contents produced with file-append.
If a directory name in FILES ends with '/', then the directory content instead If a directory name in FILES ends with '/', then the directory content instead
of the directory itself will be symlinked into the collection/ directory. of the directory itself will be symlinked into the efi-bootloader-profile.
The procedures in the HOOKS list can be used to further modify the bootloader The procedures in the HOOKS list can be used to further modify the bootloader
profile. It is possible to pass a single function instead of a list. profile. It is possible to pass a single function instead of a list.
If the INSTALLER argument is used, then this function will be called to install If the INSTALLER argument is used, then this gexp procedure will be called to
the bootloader. Otherwise the installer of the FINAL-BOOTLOADER will be called." install the efi-bootloader-profile. Otherwise the installer of the
(let* ((final-installer (or installer FINAL-BOOTLOADER will be called.
(bootloader-installer final-bootloader)))
(profile (efi-bootloader-profile files If the DISK-IMAGE-INSTALLER is used, then this gexp procedure will be called
(bootloader-package final-bootloader) to install the efi-bootloader-profile into a disk image. Otherwise the
(if (list? hooks) disk-image-installer of the FINAL-BOOTLOADER will be called."
hooks (bootloader
(list hooks))))) (inherit final-bootloader)
(bootloader (name "efi-bootloader-chain")
(inherit final-bootloader) (package
(package profile) (efi-bootloader-profile (cons (bootloader-package final-bootloader)
(installer packages)
#~(lambda (bootloader target mount-point) files
(#$final-installer bootloader target mount-point) (if (list? hooks)
(copy-recursively hooks
(string-append bootloader "/collection") (list hooks))))
(string-append mount-point target) (installer
#:follow-symlinks? #t (or installer
#:log (%make-void-port "w"))))))) (bootloader-installer final-bootloader)))
(disk-image-installer
(or disk-image-installer
(bootloader-disk-image-installer final-bootloader)))))

View file

@ -53,13 +53,14 @@
grub-theme-gfxmode grub-theme-gfxmode
install-grub-efi-removable install-grub-efi-removable
install-grub-efi-netboot make-grub-efi-netboot-installer
grub-bootloader grub-bootloader
grub-efi-bootloader grub-efi-bootloader
grub-efi-removable-bootloader grub-efi-removable-bootloader
grub-efi32-bootloader grub-efi32-bootloader
grub-efi-netboot-bootloader grub-efi-netboot-bootloader
grub-efi-netboot-removable-bootloader
grub-mkrescue-bootloader grub-mkrescue-bootloader
grub-minimal-bootloader grub-minimal-bootloader
@ -353,7 +354,7 @@ code."
((or #f (? string?)) ((or #f (? string?))
#~(format #f "search --file --set ~a" #$file))))) #~(format #f "search --file --set ~a" #$file)))))
(define* (grub-configuration-file config entries (define* (make-grub-configuration grub config entries
#:key #:key
(locale #f) (locale #f)
(system (%current-system)) (system (%current-system))
@ -391,7 +392,7 @@ when booting a root file system on a Btrfs subvolume."
;; DEVICE-MOUNT-POINT is not "/", meaning that the store is on a ;; DEVICE-MOUNT-POINT is not "/", meaning that the store is on a
;; separate partition. ;; separate partition.
;; When BTRFS-SUBVOLUME-FILE-NAME is defined, prepend it the linux and ;; When STORE-DIRECTORY-PREFIX is defined, prepend it the linux and
;; initrd paths, to allow booting from a Btrfs subvolume. ;; initrd paths, to allow booting from a Btrfs subvolume.
#~(format port "menuentry ~s { #~(format port "menuentry ~s {
~a ~a
@ -453,9 +454,7 @@ menuentry ~s {
(define locale-config (define locale-config
(let* ((entry (first all-entries)) (let* ((entry (first all-entries))
(device (menu-entry-device entry)) (device (menu-entry-device entry))
(mount-point (menu-entry-device-mount-point entry)) (mount-point (menu-entry-device-mount-point entry)))
(bootloader (bootloader-configuration-bootloader config))
(grub (bootloader-package bootloader)))
#~(let ((locale #$(and locale #~(let ((locale #$(and locale
(locale-definition-source (locale-definition-source
(locale-name->definition locale)))) (locale-name->definition locale))))
@ -481,8 +480,6 @@ set lang=~a~%"
(define keyboard-layout-config (define keyboard-layout-config
(let* ((layout (bootloader-configuration-keyboard-layout config)) (let* ((layout (bootloader-configuration-keyboard-layout config))
(grub (bootloader-package
(bootloader-configuration-bootloader config)))
(keymap* (and layout (keymap* (and layout
(keyboard-layout-file layout #:grub grub))) (keyboard-layout-file layout #:grub grub)))
(entry (first all-entries)) (entry (first all-entries))
@ -533,6 +530,16 @@ fi~%"))))
#:options '(#:local-build? #t #:options '(#:local-build? #t
#:substitutable? #f))) #:substitutable? #f)))
(define (grub-configuration-file config . args)
(let* ((bootloader (bootloader-configuration-bootloader config))
(grub (bootloader-package bootloader)))
(apply make-grub-configuration grub config args)))
(define (grub-efi-configuration-file . args)
(apply make-grub-configuration grub-efi args))
(define grub-cfg "/boot/grub/grub.cfg")
;;; ;;;
@ -674,42 +681,31 @@ fi~%"))))
((target-arm?) "--target=arm-efi")) ((target-arm?) "--target=arm-efi"))
"--efi-directory" target-esp))))) "--efi-directory" target-esp)))))
(define (install-grub-efi-netboot subdir) (define* (make-grub-efi-netboot-installer grub-efi grub-cfg subdir)
"Define a grub-efi-netboot bootloader installer for installation in SUBDIR, "Make a bootloader-installer for a grub-efi-netboot bootloader, which expects
which is usually efi/Guix or efi/boot." its files in SUBDIR and its configuration file in GRUB-CFG.
(let* ((system (string-split (nix-system->gnu-triplet
(or (%current-target-system) As a grub-efi-netboot package is already pre-installed by 'grub-mknetdir', the
(%current-system))) installer basically copies all files from the bootloader-package (or profile)
#\-)) into the bootloader-target directory.
(arch (first system))
(boot-efi-link (match system Additionally for network booting over TFTP, two relative symlinks to the store
;; These are the supportend systems and the names and to the GRUB-CFG file are necessary. Due to this a TFTP root directory must
;; defined by the UEFI standard for removable media. not be located on a FAT file-system.
(("i686" _ ...) "/bootia32.efi")
(("x86_64" _ ...) "/bootx64.efi") If the bootloader-target does not support symlinks, then it is assumed to be a
(("arm" _ ...) "/bootarm.efi") kind of EFI System Partition (ESP). In this case an intermediate configuration
(("aarch64" _ ...) "/bootaa64.efi") file is created with the help of GRUB-EFI to load the GRUB-CFG.
(("riscv" _ ...) "/bootriscv32.efi")
(("riscv64" _ ...) "/bootriscv64.efi") The installer is usable for any efi-bootloader-chain, which prepares the
;; Other systems are not supported, although defined. bootloader-profile in a way ready for copying.
;; (("riscv128" _ ...) "/bootriscv128.efi")
;; (("ia64" _ ...) "/bootia64.efi") The installer does not manipulate the system's 'UEFI Boot Manager'.
((_ ...) #f)))
(core-efi (string-append The returned installer accepts the BOOTLOADER, TARGET and MOUNT-POINT
;; This is the arch dependent file name of GRUB, e.g. arguments. Its job is to copy the BOOTLOADER, which must be a pre-installed
;; i368-efi/core.efi or arm64-efi/core.efi. grub-efi-netboot package with a SUBDIR like efi/boot or efi/Guix, below the
(match arch directory TARGET for the system whose root is mounted at MOUNT-POINT.
("i686" "i386")
("aarch64" "arm64")
("riscv" "riscv32")
(_ arch))
"-efi/core.efi")))
(with-imported-modules
'((guix build union))
#~(lambda (bootloader target mount-point)
"Install the BOOTLOADER, which must be the package grub, as e.g.
bootx64.efi or bootaa64.efi into SUBDIR, which is usually efi/Guix or efi/boot,
below the directory TARGET for the system whose root is mounted at MOUNT-POINT.
MOUNT-POINT is the last argument in 'guix system init /etc/config.scm mnt/point' MOUNT-POINT is the last argument in 'guix system init /etc/config.scm mnt/point'
or '/' for other 'guix system' commands. or '/' for other 'guix system' commands.
@ -719,17 +715,19 @@ bootloader-configuration in:
(operating-system (operating-system
(bootloader (bootloader-configuration (bootloader (bootloader-configuration
(targets '(\"/boot\")) (targets '(\"/boot/efi\"))
)) ))
) )
TARGET is required to be an absolute directory name, usually mounted via NFS, TARGET is required to be an absolute directory name, usually mounted via NFS,
and finally needs to be provided by a TFTP server as the TFTP root directory. and finally needs to be provided by a TFTP server as
the TFTP root directory.
Usually the installer will be used to prepare network booting over TFTP. Then
GRUB will load tftp://server/SUBDIR/grub.cfg and this file will instruct it to GRUB will load tftp://server/SUBDIR/grub.cfg and this file will instruct it to
load more files from the store like tftp://server/gnu/store/-linux/Image. load more files from the store like tftp://server/gnu/store/-linux/Image.
To make this possible two symlinks will be created. The first symlink points To make this possible two symlinks are created. The first symlink points
relatively form MOUNT-POINT/TARGET/SUBDIR/grub.cfg to relatively form MOUNT-POINT/TARGET/SUBDIR/grub.cfg to
MOUNT-POINT/boot/grub/grub.cfg, and the second symlink points relatively from MOUNT-POINT/boot/grub/grub.cfg, and the second symlink points relatively from
MOUNT-POINT/TARGET/%store-prefix to MOUNT-POINT/%store-prefix. MOUNT-POINT/TARGET/%store-prefix to MOUNT-POINT/%store-prefix.
@ -739,34 +737,80 @@ paths on the TFTP server side are unknown.
It is also important to note that both symlinks will point outside the TFTP root It is also important to note that both symlinks will point outside the TFTP root
directory and that the TARGET/%store-prefix symlink makes the whole store directory and that the TARGET/%store-prefix symlink makes the whole store
accessible via TFTP. Possibly the TFTP server must be configured accessible via TFTP. Possibly the TFTP server must be configured to allow
to allow accesses outside its TFTP root directory. This may need to be accesses outside its TFTP root directory. This all may need to be considered
considered for security aspects." for security aspects. It is advised to disable any TFTP write access!
(use-modules ((guix build union) #:select (symlink-relative)))
(let* ((net-dir (string-append mount-point target "/")) The installer can also be used to prepare booting from local storage, if the
(sub-dir (string-append net-dir #$subdir "/")) underlying file-system, like FAT on an EFI System Partition (ESP), does not
(store (string-append mount-point (%store-prefix))) support symlinks. In this case the MOUNT-POINT/TARGET/SUBDIR/grub.cfg will be
(store-link (string-append net-dir (%store-prefix))) created with the help of GRUB-EFI to load the /boot/grub/grub.cfg file. A
(grub-cfg (string-append mount-point "/boot/grub/grub.cfg")) symlink to the store is not needed in this case."
(grub-cfg-link (string-append sub-dir (basename grub-cfg))) (with-imported-modules '((guix build union))
(boot-efi-link (string-append sub-dir #$boot-efi-link))) #~(lambda (bootloader target mount-point)
;; Prepare the symlink to the store. ;; In context of a disk image creation TARGET will be #f and an
(mkdir-p (dirname store-link)) ;; installer is expected to do necessary installations on MOUNT-POINT,
(false-if-exception (delete-file store-link)) ;; which will become the root file system. If TARGET is #f, this
(symlink-relative store store-link) ;; installer has nothing to do, as it only cares about the EFI System
;; Prepare the symlink to the grub.cfg, which points into the store. ;; Partition (ESP).
(mkdir-p (dirname grub-cfg-link)) (when target
(false-if-exception (delete-file grub-cfg-link)) (use-modules ((guix build union) #:select (symlink-relative))
(symlink-relative grub-cfg grub-cfg-link) (ice-9 popen)
;; Install GRUB, which refers to the grub.cfg, with support for (ice-9 rdelim))
;; encrypted partitions, (let* ((mount-point/target (string-append mount-point target "/"))
(setenv "GRUB_ENABLE_CRYPTODISK" "y") ;; When installing Guix, it is common to mount TARGET below
(invoke/quiet (string-append bootloader "/bin/grub-mknetdir") ;; MOUNT-POINT rather than the root directory.
(string-append "--net-directory=" net-dir) (bootloader-target (if (file-exists? mount-point/target)
(string-append "--subdir=" #$subdir)) mount-point/target
;; Prepare the bootloader symlink, which points to core.efi of GRUB. target))
(false-if-exception (delete-file boot-efi-link)) (store (string-append mount-point (%store-prefix)))
(symlink #$core-efi boot-efi-link)))))) (store-link (string-append bootloader-target (%store-prefix)))
(grub-cfg (string-append mount-point #$grub-cfg))
(grub-cfg-link (string-append bootloader-target
#$subdir "/"
(basename grub-cfg))))
;; Copy the bootloader into the bootloader-target directory.
;; Should we beforehand recursively delete any existing file?
(copy-recursively bootloader bootloader-target
#:follow-symlinks? #t
#:log (%make-void-port "w"))
;; For TFTP we need to install additional relative symlinks.
;; If we install on an EFI System Partition (ESP) or some other FAT
;; file-system, then symlinks cannot be created and are not needed.
;; Therefore we ignore exceptions when trying.
;; Prepare the symlink to the grub.cfg.
(mkdir-p (dirname grub-cfg-link))
(false-if-exception (delete-file grub-cfg-link))
(if (unspecified?
(false-if-exception (symlink-relative grub-cfg grub-cfg-link)))
;; Symlinks are supported.
(begin
;; Prepare the symlink to the store.
(mkdir-p (dirname store-link))
(false-if-exception (delete-file store-link))
(symlink-relative store store-link))
;; Creating symlinks does not seem to be supported. Probably
;; an ESP is used. Add a script to search and load the actual
;; grub.cfg.
(let* ((probe #$(file-append grub-efi "/sbin/grub-probe"))
(port (open-pipe* OPEN_READ probe "--target=fs_uuid"
grub-cfg))
(search-root
(match (read-line port)
((? eof-object?)
;; There is no UUID available. As a fallback search
;; everywhere for the grub.cfg.
(string-append "search --file --set " #$grub-cfg))
(fs-uuid
;; The UUID to load the grub.cfg from is known.
(string-append "search --fs-uuid --set " fs-uuid))))
(load-grub-cfg (string-append "configfile " #$grub-cfg)))
(close-pipe port)
(with-output-to-file grub-cfg-link
(lambda ()
(display (string-join (list search-root
load-grub-cfg)
"\n")))))))))))
@ -784,7 +828,7 @@ considered for security aspects."
(package grub) (package grub)
(installer install-grub) (installer install-grub)
(disk-image-installer install-grub-disk-image) (disk-image-installer install-grub-disk-image)
(configuration-file "/boot/grub/grub.cfg") (configuration-file grub-cfg)
(configuration-file-generator grub-configuration-file))) (configuration-file-generator grub-configuration-file)))
(define grub-minimal-bootloader (define grub-minimal-bootloader
@ -794,11 +838,12 @@ considered for security aspects."
(define grub-efi-bootloader (define grub-efi-bootloader
(bootloader (bootloader
(inherit grub-bootloader) (name 'grub-efi)
(package grub-efi)
(installer install-grub-efi) (installer install-grub-efi)
(disk-image-installer #f) (disk-image-installer #f)
(name 'grub-efi) (configuration-file grub-cfg)
(package grub-efi))) (configuration-file-generator grub-configuration-file)))
(define grub-efi-removable-bootloader (define grub-efi-removable-bootloader
(bootloader (bootloader
@ -813,11 +858,22 @@ considered for security aspects."
(name 'grub-efi32) (name 'grub-efi32)
(package grub-efi32))) (package grub-efi32)))
(define grub-efi-netboot-bootloader (define (make-grub-efi-netboot-bootloader name subdir)
(bootloader (bootloader
(inherit grub-efi-bootloader) (name name)
(name 'grub-efi-netboot-bootloader) (package (make-grub-efi-netboot (symbol->string name) subdir))
(installer (install-grub-efi-netboot "efi/Guix")))) (installer (make-grub-efi-netboot-installer grub-efi grub-cfg subdir))
(disk-image-installer #f)
(configuration-file grub-cfg)
(configuration-file-generator grub-efi-configuration-file)))
(define grub-efi-netboot-bootloader
(make-grub-efi-netboot-bootloader 'grub-efi-netboot-bootloader
"efi/Guix"))
(define grub-efi-netboot-removable-bootloader
(make-grub-efi-netboot-bootloader 'grub-efi-netboot-removable-bootloader
"efi/boot"))
(define grub-mkrescue-bootloader (define grub-mkrescue-bootloader
(bootloader (bootloader

View file

@ -3,6 +3,7 @@
;;; Copyright © 2017, 2019 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2017, 2019 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -42,6 +43,7 @@
u-boot-puma-rk3399-bootloader u-boot-puma-rk3399-bootloader
u-boot-rock64-rk3328-bootloader u-boot-rock64-rk3328-bootloader
u-boot-rockpro64-rk3399-bootloader u-boot-rockpro64-rk3399-bootloader
u-boot-ts7970-q-2g-1000mhz-c-bootloader
u-boot-wandboard-bootloader)) u-boot-wandboard-bootloader))
(define install-u-boot (define install-u-boot
@ -127,6 +129,12 @@
(define install-pinebook-pro-rk3399-u-boot install-rockpro64-rk3399-u-boot) (define install-pinebook-pro-rk3399-u-boot install-rockpro64-rk3399-u-boot)
(define install-u-boot-ts7970-q-2g-1000mhz-c-u-boot
#~(lambda (bootloader device mount-point)
(let ((u-boot.imx (string-append bootloader "/libexec/u-boot.imx"))
(install-dir (string-append mount-point "/boot")))
(install-file u-boot.imx install-dir))))
;;; ;;;
@ -255,3 +263,13 @@
(inherit u-boot-bootloader) (inherit u-boot-bootloader)
(package u-boot-pinebook-pro-rk3399) (package u-boot-pinebook-pro-rk3399)
(disk-image-installer install-pinebook-pro-rk3399-u-boot))) (disk-image-installer install-pinebook-pro-rk3399-u-boot)))
(define u-boot-ts7970-q-2g-1000mhz-c-bootloader
;; This bootloader doesn't really need to be installed, as it is read from
;; an SPI memory chip, not the SD card. It is copied to /boot/u-boot.imx
;; for convenience and should be manually flashed at the U-Boot prompt.
(bootloader
(inherit u-boot-bootloader)
(package u-boot-ts7970-q-2g-1000mhz-c)
(installer install-u-boot-ts7970-q-2g-1000mhz-c-u-boot)
(disk-image-installer #f)))

View file

@ -363,9 +363,14 @@ second element is the name it should appear at, such as:
"Tell the kernel to look for device firmware under DIRECTORY. This "Tell the kernel to look for device firmware under DIRECTORY. This
mechanism bypasses udev: it allows Linux to handle firmware loading directly mechanism bypasses udev: it allows Linux to handle firmware loading directly
by itself, without having to resort to a \"user helper\"." by itself, without having to resort to a \"user helper\"."
(call-with-output-file "/sys/module/firmware_class/parameters/path"
(lambda (port) ;; If the kernel was built without firmware loading support, this file
(display directory port)))) ;; does not exist. Do nothing in that case.
(let ((firmware-path "/sys/module/firmware_class/parameters/path"))
(when (file-exists? firmware-path)
(call-with-output-file firmware-path
(lambda (port)
(display directory port))))))
(define (activate-ptrace-attach) (define (activate-ptrace-attach)
"Allow users to PTRACE_ATTACH their own processes. "Allow users to PTRACE_ATTACH their own processes.

View file

@ -899,6 +899,10 @@ caught and lead to a warning and #f as the result."
(format (current-error-port) (format (current-error-port)
"warning: failed to read from device '~a'~%" device) "warning: failed to read from device '~a'~%" device)
#f) #f)
((= EMEDIUMTYPE errno) ;inaccessible, like DRBD secondaries
(format (current-error-port)
"warning: failed to open device '~a'~%" device)
#f)
(else (else
(apply throw args)))))))) (apply throw args))))))))
@ -1123,7 +1127,7 @@ corresponds to the symbols listed in FLAGS."
(('read-only rest ...) (('read-only rest ...)
(logior MS_RDONLY (loop rest))) (logior MS_RDONLY (loop rest)))
(('bind-mount rest ...) (('bind-mount rest ...)
(logior MS_BIND (loop rest))) (logior MS_REC (logior MS_BIND (loop rest))))
(('no-suid rest ...) (('no-suid rest ...)
(logior MS_NOSUID (loop rest))) (logior MS_NOSUID (loop rest)))
(('no-dev rest ...) (('no-dev rest ...)
@ -1132,6 +1136,8 @@ corresponds to the symbols listed in FLAGS."
(logior MS_NOEXEC (loop rest))) (logior MS_NOEXEC (loop rest)))
(('no-atime rest ...) (('no-atime rest ...)
(logior MS_NOATIME (loop rest))) (logior MS_NOATIME (loop rest)))
(('no-diratime rest ...)
(logior MS_NODIRATIME (loop rest)))
(('strict-atime rest ...) (('strict-atime rest ...)
(logior MS_STRICTATIME (loop rest))) (logior MS_STRICTATIME (loop rest)))
(('lazy-time rest ...) (('lazy-time rest ...)

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2020, 2021 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2020-2022 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
@ -127,6 +127,9 @@ set."
(define (translated? file-name) (define (translated? file-name)
"Return true if a translator is installed on FILE-NAME." "Return true if a translator is installed on FILE-NAME."
;; On GNU/Hurd, 'getxattr' in glibc opens the file without O_NOTRANS, and
;; then, for "gnu.translator", it calls 'file_get_translator', resulting in
;; EOPNOTSUPP (conversely, 'showtrans' opens the file with O_NOTRANS).
(if (string-contains %host-type "linux-gnu") (if (string-contains %host-type "linux-gnu")
(passive-translator-xattr? file-name) (passive-translator-xattr? file-name)
(passive-translator-installed? file-name))) (passive-translator-installed? file-name)))
@ -191,7 +194,7 @@ set."
("proc" ("/hurd/procfs" "--stat-mode=444")))) ("proc" ("/hurd/procfs" "--stat-mode=444"))))
(define devices (define devices
'(("dev/full" ("/hurd/null" "--full") #o666) `(("dev/full" ("/hurd/null" "--full") #o666)
("dev/null" ("/hurd/null") #o666) ("dev/null" ("/hurd/null") #o666)
("dev/random" ("/hurd/random" "--seed-file" "/var/lib/random-seed") ("dev/random" ("/hurd/random" "--seed-file" "/var/lib/random-seed")
#o644) #o644)
@ -210,31 +213,34 @@ set."
;; 'fd_to_filename' in libc expects it. ;; 'fd_to_filename' in libc expects it.
("dev/fd" ("/hurd/magic" "--directory" "fd") #o555) ("dev/fd" ("/hurd/magic" "--directory" "fd") #o555)
("dev/tty1" ("/hurd/term" "/dev/tty1" "hurdio" "/dev/vcs/1/console") ;; Create a number of ttys; syslogd writes to tty12 by default.
#o666) ;; FIXME: Creating /dev/tty12 leads the console client to switch to
("dev/tty2" ("/hurd/term" "/dev/tty2" "hurdio" "/dev/vcs/2/console") ;; tty12 when syslogd starts, which is confusing for users. Thus, do
#o666) ;; not create tty12.
("dev/tty3" ("/hurd/term" "/dev/tty3" "hurdio" "/dev/vcs/3/console") ,@(map (lambda (n)
#o666) (let ((n (number->string n)))
`(,(string-append "dev/tty" n)
("/hurd/term" ,(string-append "/dev/tty" n)
"hurdio" ,(string-append "/dev/vcs/" n "/console"))
#o666)))
(iota 11 1))
("dev/ptyp0" ("/hurd/term" "/dev/ptyp0" "pty-master" "/dev/ttyp0") ,@(append-map (lambda (n)
#o666) (let ((n (number->string n)))
("dev/ptyp1" ("/hurd/term" "/dev/ptyp1" "pty-master" "/dev/ttyp1") `((,(string-append "dev/ptyp" n)
#o666) ("/hurd/term" ,(string-append "/dev/ptyp" n)
("dev/ptyp2" ("/hurd/term" "/dev/ptyp2" "pty-master" "/dev/ttyp2") "pty-master" ,(string-append "/dev/ttyp" n))
#o666) #o666)
("dev/ttyp0" ("/hurd/term" "/dev/ttyp0" "pty-slave" "/dev/ptyp0") (,(string-append "dev/ttyp" n)
#o666) ("/hurd/term" ,(string-append "/dev/ttyp" n)
("dev/ttyp1" ("/hurd/term" "/dev/ttyp1" "pty-slave" "/dev/ptyp1") "pty-slave" ,(string-append "/dev/ptyp" n))
#o666) #o666))))
("dev/ttyp2" ("/hurd/term" "/dev/ttyp2" "pty-slave" "/dev/ptyp2") (iota 10 0))))
#o666)))
(for-each scope-set-translator servers) (for-each scope-set-translator servers)
(mkdir* "dev/vcs/1") (mkdir* "dev/vcs/1")
(mkdir* "dev/vcs/2") (mkdir* "dev/vcs/2")
(mkdir* "dev/vcs/2")
(rename-file (scope "dev/console") (scope "dev/console-")) (rename-file (scope "dev/console") (scope "dev/console-"))
(for-each scope-set-translator devices) (for-each scope-set-translator devices)

View file

@ -111,7 +111,10 @@ turn doesn't take any constant overhead into account, force a 1-MiB minimum."
(if (eq? size 'guess) (if (eq? size 'guess)
(estimate-partition-size root) (estimate-partition-size root)
size)) size))
(if (member 'esp flags) (list "-S" "1024") '())) ;; u-boot in particular needs the formatted block
;; size and the physical block size to be equal.
;; TODO: What about 4k blocks?
(if (member 'esp flags) (list "-S" "512") '()))
(for-each (lambda (file) (for-each (lambda (file)
(unless (member file '("." "..")) (unless (member file '("." ".."))
(invoke "mcopy" "-bsp" "-i" target (invoke "mcopy" "-bsp" "-i" target

View file

@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013-2020, 2022 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com> ;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com>
;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -56,19 +57,24 @@ that the fonts, background images, etc. referred to by BOOTCFG are not GC'd."
(define* (evaluate-populate-directive directive target (define* (evaluate-populate-directive directive target
#:key #:key
(default-gid 0) (default-gid 0)
(default-uid 0)) (default-uid 0)
(error-on-dangling-symlink? #t))
"Evaluate DIRECTIVE, an sexp describing a file or directory to create under "Evaluate DIRECTIVE, an sexp describing a file or directory to create under
directory TARGET. DEFAULT-UID and DEFAULT-GID are the default UID and GID in directory TARGET. DEFAULT-UID and DEFAULT-GID are the default UID and GID in
the context of the caller. If the directive matches those defaults then, the context of the caller. If the directive matches those defaults then,
'chown' won't be run." 'chown' won't be run. When ERROR-ON-DANGLING-SYMLINK? is true, abort with an
error when a dangling symlink would be created."
(define target* (if (string-suffix? "/" target)
target
(string-append target "/")))
(let loop ((directive directive)) (let loop ((directive directive))
(catch 'system-error (catch 'system-error
(lambda () (lambda ()
(match directive (match directive
(('directory name) (('directory name)
(mkdir-p (string-append target name))) (mkdir-p (string-append target* name)))
(('directory name uid gid) (('directory name uid gid)
(let ((dir (string-append target name))) (let ((dir (string-append target* name)))
(mkdir-p dir) (mkdir-p dir)
;; If called from a context without "root" permissions, "chown" ;; If called from a context without "root" permissions, "chown"
;; to root will fail. In that case, do not try to run "chown" ;; to root will fail. In that case, do not try to run "chown"
@ -78,27 +84,38 @@ the context of the caller. If the directive matches those defaults then,
(chown dir uid gid)))) (chown dir uid gid))))
(('directory name uid gid mode) (('directory name uid gid mode)
(loop `(directory ,name ,uid ,gid)) (loop `(directory ,name ,uid ,gid))
(chmod (string-append target name) mode)) (chmod (string-append target* name) mode))
(('file name) (('file name)
(call-with-output-file (string-append target name) (call-with-output-file (string-append target* name)
(const #t))) (const #t)))
(('file name (? string? content)) (('file name (? string? content))
(call-with-output-file (string-append target name) (call-with-output-file (string-append target* name)
(lambda (port) (lambda (port)
(display content port)))) (display content port))))
((new '-> old) ((new '-> old)
(let try () (let ((new* (string-append target* new)))
(catch 'system-error (let try ()
(lambda () (catch 'system-error
(symlink old (string-append target new))) (lambda ()
(lambda args (when error-on-dangling-symlink?
;; When doing 'guix system init' on the current '/', some ;; When the symbolic link points to a relative path,
;; symlinks may already exists. Override them. ;; checking if its target exists must be done relatively
(if (= EEXIST (system-error-errno args)) ;; to the link location.
(begin (unless (if (string-prefix? "/" old)
(delete-file (string-append target new)) (file-exists? old)
(try)) (with-directory-excursion (dirname new*)
(apply throw args)))))))) (file-exists? old)))
(error (format #f "symlink `~a' points to nonexistent \
file `~a'" new* old))))
(symlink old new*))
(lambda args
;; When doing 'guix system init' on the current '/', some
;; symlinks may already exists. Override them.
(if (= EEXIST (system-error-errno args))
(begin
(delete-file new*)
(try))
(apply throw args)))))))))
(lambda args (lambda args
;; Usually we can only get here when installing to an existing root, ;; Usually we can only get here when installing to an existing root,
;; as with 'guix system init foo.scm /'. ;; as with 'guix system init foo.scm /'.
@ -142,7 +159,10 @@ STORE."
includes /etc, /var, /run, /bin/sh, etc., and all the symlinks to SYSTEM. includes /etc, /var, /run, /bin/sh, etc., and all the symlinks to SYSTEM.
EXTRAS is a list of directives appended to the built-in directives to populate EXTRAS is a list of directives appended to the built-in directives to populate
TARGET." TARGET."
(for-each (cut evaluate-populate-directive <> target) ;; It's expected that some symbolic link targets do not exist yet, so do not
;; error on dangling links.
(for-each (cut evaluate-populate-directive <> target
#:error-on-dangling-symlink? #f)
(append (directives (%store-directory)) extras)) (append (directives (%store-directory)) extras))
;; Add system generation 1. ;; Add system generation 1.
@ -262,12 +282,31 @@ disk."
(mount "/.rw-store" (%store-directory) "" MS_MOVE) (mount "/.rw-store" (%store-directory) "" MS_MOVE)
(rmdir "/.rw-store"))) (rmdir "/.rw-store")))
(define (umount* directory)
"Unmount DIRECTORY, but retry a few times upon EBUSY."
(let loop ((attempts 5))
(catch 'system-error
(lambda ()
(umount directory))
(lambda args
(if (and (= EBUSY (system-error-errno args))
(> attempts 0))
(begin
(sleep 1)
(loop (- attempts 1)))
(apply throw args))))))
(define (unmount-cow-store target backing-directory) (define (unmount-cow-store target backing-directory)
"Unmount copy-on-write store." "Unmount copy-on-write store."
(let ((tmp-dir "/remove")) (let ((tmp-dir "/remove"))
(mkdir-p tmp-dir) (mkdir-p tmp-dir)
(mount (%store-directory) tmp-dir "" MS_MOVE) (mount (%store-directory) tmp-dir "" MS_MOVE)
(umount tmp-dir)
;; We might get EBUSY at this point, possibly because of lingering
;; processes with open file descriptors. Use 'umount*' to retry upon
;; EBUSY, leaving a bit of time. See <https://issues.guix.gnu.org/59884>.
(umount* tmp-dir)
(rmdir tmp-dir) (rmdir tmp-dir)
(delete-file-recursively (delete-file-recursively
(string-append target backing-directory)))) (string-append target backing-directory))))

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2016, 2018, 2019 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2014, 2016, 2018, 2019, 2022 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2018 Danny Milosavljevic <dannym@scratchpost.org> ;;; Copyright © 2018 Danny Milosavljevic <dannym@scratchpost.org>
;;; ;;;
@ -28,6 +28,7 @@
#:use-module (rnrs io ports) #:use-module (rnrs io ports)
#:use-module (rnrs bytevectors) #:use-module (rnrs bytevectors)
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
#:use-module (srfi srfi-9 gnu)
#:use-module (srfi srfi-11) #:use-module (srfi srfi-11)
#:use-module (srfi srfi-26) #:use-module (srfi srfi-26)
#:use-module (ice-9 ftw) #:use-module (ice-9 ftw)
@ -50,6 +51,17 @@
load-linux-module* load-linux-module*
load-linux-modules-from-directory load-linux-modules-from-directory
pci-devices
pci-device?
pci-device-vendor
pci-device-id
pci-device-class
pci-device-module-alias
storage-pci-device?
network-pci-device?
display-pci-device?
load-pci-device-database
current-module-debugging-port current-module-debugging-port
device-module-aliases device-module-aliases
@ -429,6 +441,127 @@ key such as 'MAJOR or 'DEVTYPE and each cdr is the corresponding value."
(line (line
(loop (cons (key=value->pair line) result)))))) (loop (cons (key=value->pair line) result))))))
;; PCI device known to the Linux kernel.
(define-immutable-record-type <pci-device>
(pci-device vendor device class module-alias)
pci-device?
(vendor pci-device-vendor) ;integer
(device pci-device-id) ;integer
(class pci-device-class) ;integer
(module-alias pci-device-module-alias)) ;string | #f
(define (pci-device-class-predicate mask bits)
(lambda (device)
"Return true if DEVICE has the chosen class."
(= (logand mask (pci-device-class device)) bits)))
(define storage-pci-device? ;"Mass storage controller" class
(pci-device-class-predicate #xff0000 #x010000))
(define network-pci-device? ;"Network controller" class
(pci-device-class-predicate #xff0000 #x020000))
(define display-pci-device? ;"Display controller" class
(pci-device-class-predicate #xff0000 #x030000))
(define (pci-devices)
"Return the list of PCI devices of the system (<pci-device> records)."
(define (read-hex port)
(let ((line (read-line port)))
(and (string? line)
(string-prefix? "0x" line)
(string->number (string-drop line 2) 16))))
(filter-map (lambda (directory)
(define properties
(call-with-input-file (string-append directory "/uevent")
read-uevent))
(define vendor
(call-with-input-file (string-append directory "/vendor")
read-hex))
(define device
(call-with-input-file (string-append directory "/device")
read-hex))
(define class
(call-with-input-file (string-append directory "/class")
read-hex))
(pci-device vendor device class
(assq-ref properties 'MODALIAS)))
(find-files "/sys/bus/pci/devices"
#:stat lstat)))
(define (read-pci-device-database port)
"Parse the 'pci.ids' database that ships with the pciutils package and is
maintained at <https://pci-ids.ucw.cz/>."
(define (comment? str)
(string-prefix? "#" (string-trim str)))
(define (blank? str)
(string-null? (string-trim-both str)))
(define (device? str)
(eqv? #\tab (string-ref str 0)))
(define (subvendor? str)
(string-prefix? "\t\t" str))
(define (class? str)
(string-prefix? "C " str))
(define (parse-id-line str)
(let* ((str (string-trim-both str))
(space (string-index str char-set:whitespace)))
(values (string->number (string-take str space) 16)
(string-trim (string-drop str (+ 1 space))))))
(define (finish vendor vendor-id devices table)
(fold (lambda (device table)
(match device
((device-id . name)
(vhash-consv (logior (ash vendor-id 16) device-id)
(cons vendor name)
table))))
table
devices))
(let loop ((table vlist-null)
(vendor-id #f)
(vendor #f)
(devices '()))
(match (read-line port)
((? eof-object?)
(let ((table (if (and vendor vendor-id)
(finish vendor vendor-id devices table)
table)))
(lambda (vendor device)
(match (vhash-assv (logior (ash vendor 16) device) table)
(#f
(values #f #f))
((_ . (vendor . name))
(values vendor name))))))
((? comment?)
(loop table vendor-id vendor devices))
((? blank?)
(loop table vendor-id vendor devices))
((? subvendor?) ;currently ignored
(loop table vendor-id vendor devices))
((? class?) ;currently ignored
(loop table vendor-id vendor devices))
((? device? line)
(let-values (((id name) (parse-id-line line)))
(loop table vendor-id vendor
(if (and vendor-id vendor) ;class or device?
(alist-cons id name devices)
devices))))
(line
(let ((table (if (and vendor vendor-id)
(finish vendor vendor-id devices table)
table)))
(let-values (((vendor-id vendor) (parse-id-line line)))
(loop table vendor-id vendor '())))))))
(define (load-pci-device-database file)
"Read the 'pci.ids' database at FILE (get it from the pciutils package or
from <https://pci-ids.ucw.cz/>) and return a lookup procedure that takes a PCI
vendor ID and a device ID (two integers) and returns the vendor name and
device name as two values."
(let ((port (open-file file "r0")))
(call-with-gzip-input-port port
read-pci-device-database)))
(define (device-module-aliases device) (define (device-module-aliases device)
"Return the list of module aliases required by DEVICE, a /dev file name, as "Return the list of module aliases required by DEVICE, a /dev file name, as
in this example: in this example:

View file

@ -22,18 +22,19 @@
#:use-module (srfi srfi-9) #:use-module (srfi srfi-9)
#:use-module (srfi srfi-26) #:use-module (srfi srfi-26)
#:use-module (srfi srfi-64) #:use-module (srfi srfi-64)
#:use-module (srfi srfi-71)
#:use-module (rnrs io ports) #:use-module (rnrs io ports)
#:use-module (ice-9 match) #:use-module (ice-9 match)
#:use-module (ice-9 popen) #:use-module (ice-9 popen)
#:use-module (ice-9 regex) #:use-module (ice-9 regex)
#:export (marionette? #:export (marionette?
marionette-pid
make-marionette make-marionette
marionette-eval marionette-eval
wait-for-file wait-for-file
wait-for-tcp-port wait-for-tcp-port
wait-for-unix-socket wait-for-unix-socket
marionette-control marionette-control
marionette-screen-text
wait-for-screen-text wait-for-screen-text
%qwerty-us-keystrokes %qwerty-us-keystrokes
marionette-type marionette-type
@ -312,40 +313,61 @@ Monitor\")."
(define* (marionette-screen-text marionette #:key (ocr "ocrad")) (define* (marionette-screen-text marionette #:key (ocr "ocrad"))
"Take a screenshot of MARIONETTE, perform optical character "Take a screenshot of MARIONETTE, perform optical character
recognition (OCR), and return the text read from the screen as a string. Do recognition (OCR), and return the text read from the screen as a string, along
this by invoking OCR, which should be the file name of GNU Ocrad's the screen dump image used. Do this by invoking OCR, which should be the file
@command{ocrad} or Tesseract OCR's @command{tesseract} command." name of GNU Ocrad's@command{ocrad} or Tesseract OCR's @command{tesseract}
command. The screen dump image returned as the second value should be deleted
if it is not needed."
(define image (string-append (tmpnam) ".ppm")) (define image (string-append (tmpnam) ".ppm"))
;; Use the QEMU Monitor to save an image of the screen to the host. ;; Use the QEMU Monitor to save an image of the screen to the host.
(marionette-control (string-append "screendump " image) marionette) (marionette-control (string-append "screendump " image) marionette)
;; Process it via the OCR. ;; Process it via the OCR.
(cond (cond
((string-contains ocr "ocrad") ((string-contains ocr "ocrad")
(invoke-ocrad-ocr image #:ocrad ocr)) (values (invoke-ocrad-ocr image #:ocrad ocr) image))
((string-contains ocr "tesseract") ((string-contains ocr "tesseract")
(invoke-tesseract-ocr image #:tesseract ocr)) (values (invoke-tesseract-ocr image #:tesseract ocr) image))
(else (error "unsupported ocr command")))) (else (error "unsupported ocr command"))))
(define* (wait-for-screen-text marionette predicate (define* (wait-for-screen-text marionette predicate
#:key #:key
(ocr "ocrad") (ocr "ocrad")
(timeout 30)) (timeout 30)
pre-action
post-action)
"Wait for TIMEOUT seconds or until the screen text on MARIONETTE matches "Wait for TIMEOUT seconds or until the screen text on MARIONETTE matches
PREDICATE, whichever comes first. Raise an error when TIMEOUT is exceeded." PREDICATE, whichever comes first. Raise an error when TIMEOUT is exceeded.
The error contains the recognized text along the preserved file name of the
screen dump, which is relative to the current working directory. If
PRE-ACTION is provided, it should be a thunk to call before each OCR attempt.
Likewise for POST-ACTION, except it runs at the end of a successful OCR."
(define start (define start
(car (gettimeofday))) (car (gettimeofday)))
(define end (define end
(+ start timeout)) (+ start timeout))
(let loop ((last-text #f)) (let loop ((last-text #f)
(last-screendump #f))
(if (> (car (gettimeofday)) end) (if (> (car (gettimeofday)) end)
(error "'wait-for-screen-text' timeout" 'ocr-text: last-text) (let ((screendump-backup (string-drop last-screendump 5)))
(let ((text (marionette-screen-text marionette #:ocr ocr))) ;; Move the file from /tmp/fileXXXXXX.pmm to the current working
(or (predicate text) ;; directory, so that it is preserved in the test derivation output.
(begin (copy-file last-screendump screendump-backup)
(sleep 1) (delete-file last-screendump)
(loop text))))))) (error "'wait-for-screen-text' timeout"
'ocr-text: last-text
'screendump: screendump-backup))
(let* ((_ (and (procedure? pre-action) (pre-action)))
(text screendump (marionette-screen-text marionette #:ocr ocr))
(_ (and (procedure? post-action) (post-action)))
(result (predicate text)))
(cond (result
(delete-file screendump)
result)
(else
(sleep 1)
(loop text screendump)))))))
(define %qwerty-us-keystrokes (define %qwerty-us-keystrokes
;; Maps "special" characters to their keystrokes. ;; Maps "special" characters to their keystrokes.
@ -367,8 +389,10 @@ PREDICATE, whichever comes first. Raise an error when TIMEOUT is exceeded."
(#\> . "shift-dot") (#\> . "shift-dot")
(#\. . "dot") (#\. . "dot")
(#\, . "comma") (#\, . "comma")
(#\: . "shift-semicolon")
(#\; . "semicolon") (#\; . "semicolon")
(#\' . "apostrophe") (#\' . "apostrophe")
(#\! . "shift-1")
(#\" . "shift-apostrophe") (#\" . "shift-apostrophe")
(#\` . "grave_accent") (#\` . "grave_accent")
(#\bs . "backspace") (#\bs . "backspace")

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012-2021 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2012-2022 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org> ;;; Copyright © 2017, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2018, 2019 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2018, 2019 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu> ;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu>
@ -25,7 +25,6 @@
#:use-module (guix config) #:use-module (guix config)
#:autoload (guix describe) (package-channels) #:autoload (guix describe) (package-channels)
#:use-module (guix store) #:use-module (guix store)
#:use-module (guix grafts)
#:use-module (guix profiles) #:use-module (guix profiles)
#:use-module (guix packages) #:use-module (guix packages)
#:autoload (guix transformations) (tunable-package? tuned-package) #:autoload (guix transformations) (tunable-package? tuned-package)
@ -38,6 +37,7 @@
#:use-module ((guix licenses) #:use-module ((guix licenses)
#:select (gpl3+ license? license-name)) #:select (gpl3+ license? license-name))
#:use-module ((guix utils) #:select (%current-system)) #:use-module ((guix utils) #:select (%current-system))
#:use-module ((guix scripts system) #:select (read-operating-system))
#:use-module ((guix scripts pack) #:use-module ((guix scripts pack)
#:select (self-contained-tarball)) #:select (self-contained-tarball))
#:use-module (gnu bootloader) #:use-module (gnu bootloader)
@ -251,7 +251,7 @@ otherwise use the IMAGE name."
(drv (run-with-store store (drv (run-with-store store
(mbegin %store-monad (mbegin %store-monad
(set-guile-for-build (default-guile)) (set-guile-for-build (default-guile))
(lower-object (system-image image)))))) (lower-object (system-image image) system)))))
(parameterize ((%graft? #f)) (parameterize ((%graft? #f))
(derivation->job name drv)))) (derivation->job name drv))))

View file

@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2021 Andrew Tropin <andrew@trop.in> ;;; Copyright © 2021-2023 Andrew Tropin <andrew@trop.in>
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz> ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
;;; Copyright © 2022-2023 Ludovic Courtès <ludo@gnu.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -33,6 +34,7 @@
#:use-module (guix i18n) #:use-module (guix i18n)
#:use-module (guix modules) #:use-module (guix modules)
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
#:use-module (srfi srfi-9)
#:use-module (ice-9 match) #:use-module (ice-9 match)
#:use-module (ice-9 vlist) #:use-module (ice-9 vlist)
@ -47,6 +49,10 @@
home-run-on-change-service-type home-run-on-change-service-type
home-provenance-service-type home-provenance-service-type
literal-string
literal-string?
literal-string-value
environment-variable-shell-definitions environment-variable-shell-definitions
home-files-directory home-files-directory
xdg-configuration-files-directory xdg-configuration-files-directory
@ -171,32 +177,52 @@ packages, configuration files, activation script, and so on.")))
configuration files that the user has declared in their configuration files that the user has declared in their
@code{home-environment} record."))) @code{home-environment} record.")))
;; Representation of a literal string.
(define-record-type <literal-string>
(literal-string str)
literal-string?
(str literal-string-value))
(define (environment-variable-shell-definitions variables) (define (environment-variable-shell-definitions variables)
"Return a gexp that evaluates to a list of POSIX shell statements defining "Return a gexp that evaluates to a list of POSIX shell statements defining
VARIABLES, a list of environment variable name/value pairs. The returned code VARIABLES, a list of environment variable name/value pairs. The returned code
ensures variable values are properly quoted." ensures variable values are properly quoted."
#~(let ((shell-quote #~(let* ((quote-string
(lambda (value) (lambda (value quoted-chars)
;; Double-quote VALUE, leaving dollar sign as is. (list->string (string-fold-right
(let ((quoted (list->string
(string-fold-right
(lambda (chr lst) (lambda (chr lst)
(case chr (if (memq chr quoted-chars)
((#\" #\\) (append (list #\\ chr) lst)
(append (list chr #\\) lst)) (cons chr lst)))
(else (cons chr lst))))
'() '()
value)))) value))))
(string-append "\"" quoted "\""))))) (shell-double-quote
(lambda (value)
;; Double-quote VALUE, leaving dollar sign as is.
(string-append "\"" (quote-string value '(#\" #\\))
"\"")))
(shell-single-quote
(lambda (value)
;; Single-quote VALUE to enter a literal string.
(string-append "'" (quote-string value '(#\'))
"'"))))
(string-append (string-append
#$@(map (match-lambda #$@(map (match-lambda
((key . #f) ((key . #f)
"") "")
((key . #t) ((key . #t)
#~(string-append "export " #$key "\n")) #~(string-append "export " #$key "\n"))
((key . value) ((key . (or (? string? value)
(? file-like? value)
(? gexp? value)))
#~(string-append "export " #$key "=" #~(string-append "export " #$key "="
(shell-quote #$value) "\n"))) (shell-double-quote #$value)
"\n"))
((key . (? literal-string? value))
#~(string-append "export " #$key "="
(shell-single-quote
#$(literal-string-value value))
"\n")))
variables)))) variables))))
(define (environment-variables->setup-environment-script vars) (define (environment-variables->setup-environment-script vars)
@ -313,7 +339,7 @@ directory containing FILES."
(extend append) (extend append)
(default-value '()) (default-value '())
(description "Files that will be put in (description "Files that will be put in
@file{~~/.guix-home/files}, and further processed during activation."))) @file{~/.guix-home/files}, and further processed during activation.")))
(define xdg-configuration-files-directory ".config") (define xdg-configuration-files-directory ".config")
@ -334,7 +360,7 @@ directory containing FILES."
(extend append) (extend append)
(default-value '()) (default-value '())
(description "Files that will be put in (description "Files that will be put in
@file{~~/.guix-home/files/.config}, and further processed during activation."))) @file{~/.guix-home/files/.config}, and further processed during activation.")))
(define xdg-data-files-directory ".local/share") (define xdg-data-files-directory ".local/share")
@ -355,7 +381,7 @@ directory containing FILES."
(extend append) (extend append)
(default-value '()) (default-value '())
(description "Files that will be put in (description "Files that will be put in
@file{~~/.guix-home/files/.local/share}, and further processed during @file{~/.guix-home/files/.local/share}, and further processed during
activation."))) activation.")))

View file

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2022 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2022 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2022 ( <paren@disroot.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -20,6 +21,7 @@
#:use-module (gnu home services) #:use-module (gnu home services)
#:use-module (gnu home services shepherd) #:use-module (gnu home services shepherd)
#:use-module (gnu services configuration) #:use-module (gnu services configuration)
#:autoload (gnu packages glib) (dbus)
#:autoload (gnu packages xdisorg) (redshift) #:autoload (gnu packages xdisorg) (redshift)
#:use-module (guix records) #:use-module (guix records)
#:use-module (guix gexp) #:use-module (guix gexp)
@ -27,8 +29,10 @@
#:use-module (ice-9 match) #:use-module (ice-9 match)
#:export (home-redshift-configuration #:export (home-redshift-configuration
home-redshift-configuration? home-redshift-configuration?
home-redshift-service-type
home-redshift-service-type)) home-dbus-configuration
home-dbus-service-type))
;;; ;;;
@ -161,7 +165,8 @@ format."))
(start #~(make-forkexec-constructor (start #~(make-forkexec-constructor
(list #$(file-append redshift "/bin/redshift") (list #$(file-append redshift "/bin/redshift")
"-c" #$config-file))) "-c" #$config-file)))
(stop #~(make-kill-destructor))))) (stop #~(make-kill-destructor))
(actions (list (shepherd-configuration-action config-file))))))
(define home-redshift-service-type (define home-redshift-service-type
(service-type (service-type
@ -172,3 +177,52 @@ format."))
(description (description
"Run Redshift, a program that adjusts the color temperature of display "Run Redshift, a program that adjusts the color temperature of display
according to time of day."))) according to time of day.")))
;;;
;;; D-Bus.
;;;
(define-record-type* <home-dbus-configuration>
home-dbus-configuration make-home-dbus-configuration
home-dbus-configuration?
(dbus home-dbus-dbus ;file-like
(default dbus)))
(define (home-dbus-shepherd-services config)
(list (shepherd-service
(documentation "Run the D-Bus daemon in session-specific mode.")
(provision '(dbus))
(start #~(make-forkexec-constructor
(list #$(file-append (home-dbus-dbus config)
"/bin/dbus-daemon")
"--nofork" "--session"
(format #f "--address=unix:path=~a/bus"
(or (getenv "XDG_RUNTIME_DIR")
(format #f "/run/user/~a"
(getuid)))))
#:environment-variables
(cons "DBUS_VERBOSE=1"
(default-environment-variables))
#:log-file
(format #f "~a/dbus.log"
(or (getenv "XDG_LOG_HOME")
(format #f "~a/.local/var/log"
(getenv "HOME"))))))
(stop #~(make-kill-destructor)))))
(define (home-dbus-environment-variables config)
'(("DBUS_SESSION_BUS_ADDRESS"
. "unix:path=${XDG_RUNTIME_DIR:-/run/user/$UID}/bus")))
(define home-dbus-service-type
(service-type
(name 'home-dbus)
(extensions
(list (service-extension home-shepherd-service-type
home-dbus-shepherd-services)
(service-extension home-environment-variables-service-type
home-dbus-environment-variables)))
(default-value (home-dbus-configuration))
(description
"Run the session-specific D-Bus inter-process message bus.")))

View file

@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2021 Andrew Tropin <andrew@trop.in> ;;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz> ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -20,6 +21,7 @@
(define-module (gnu home services mcron) (define-module (gnu home services mcron)
#:use-module (gnu packages guile-xyz) #:use-module (gnu packages guile-xyz)
#:use-module (gnu home services) #:use-module (gnu home services)
#:use-module (gnu services configuration)
#:use-module (gnu services shepherd) #:use-module (gnu services shepherd)
#:use-module (gnu home services shepherd) #:use-module (gnu home services shepherd)
#:use-module (guix records) #:use-module (guix records)
@ -53,45 +55,59 @@
;; ;;
;;; Code: ;;; Code:
(define-record-type* <home-mcron-configuration> home-mcron-configuration (define list-of-gexps?
make-home-mcron-configuration (list-of gexp?))
home-mcron-configuration?
(package home-mcron-configuration-package ; package (define-configuration/no-serialization home-mcron-configuration
(default mcron)) (mcron (file-like mcron) "The mcron package to use.")
(jobs home-mcron-configuration-jobs ; list of jobs (jobs
(default '()))) (list-of-gexps '())
"This is a list of gexps (@pxref{G-Expressions}), where each gexp
corresponds to an mcron job specification (@pxref{Syntax, mcron job
specifications,, mcron, GNU@tie{}mcron}).")
(log? (boolean #t) "Log messages to standard output.")
(log-format
(string "~1@*~a ~a: ~a~%")
"@code{(ice-9 format)} format string for log messages. The default value
produces messages like \"@samp{@var{pid} @var{name}:
@var{message}\"} (@pxref{Invoking mcron, Invoking,, mcron, GNU@tie{}mcron}).
Each message is also prefixed by a timestamp by GNU Shepherd."))
(define job-files (@@ (gnu services mcron) job-files)) (define job-files (@@ (gnu services mcron) job-files))
(define shepherd-schedule-action (define shepherd-schedule-action
(@@ (gnu services mcron) shepherd-schedule-action)) (@@ (gnu services mcron) shepherd-schedule-action))
(define home-mcron-shepherd-services (define (home-mcron-shepherd-services config)
(match-lambda (match-record config <home-mcron-configuration>
(($ <home-mcron-configuration> mcron '()) ; no jobs to run (mcron jobs log? log-format)
'()) (if (null? jobs)
(($ <home-mcron-configuration> mcron jobs) '() ;no jobs to run
(let ((files (job-files mcron jobs))) (let ((files (job-files mcron jobs)))
(list (shepherd-service (list (shepherd-service
(documentation "User cron jobs.") (documentation "User cron jobs.")
(provision '(mcron)) (provision '(mcron))
(modules `((srfi srfi-1) (modules `((srfi srfi-1)
(srfi srfi-26) (srfi srfi-26)
(ice-9 popen) ; for the 'schedule' action (ice-9 popen) ;for the 'schedule' action
(ice-9 rdelim) (ice-9 rdelim)
(ice-9 match) (ice-9 match)
,@%default-modules)) ,@%default-modules))
(start #~(make-forkexec-constructor (start #~(make-forkexec-constructor
(list #$(file-append mcron "/bin/mcron") #$@files) (list (string-append #$mcron "/bin/mcron")
#:log-file (string-append #$@(if log?
(or (getenv "XDG_LOG_HOME") #~("--log" "--log-format" #$log-format)
(format #f "~a/.local/var/log" #~())
(getenv "HOME"))) #$@files)
"/mcron.log"))) #:log-file (string-append
(stop #~(make-kill-destructor)) (or (getenv "XDG_LOG_HOME")
(actions (format #f "~a/.local/var/log"
(list (shepherd-schedule-action mcron files))))))))) (getenv "HOME")))
"/mcron.log")))
(stop #~(make-kill-destructor))
(actions
(list (shepherd-schedule-action mcron files)))))))))
(define home-mcron-profile (compose list home-mcron-configuration-package)) (define home-mcron-profile (compose list home-mcron-configuration-mcron))
(define (home-mcron-extend config jobs) (define (home-mcron-extend config jobs)
(home-mcron-configuration (home-mcron-configuration
@ -113,3 +129,12 @@
(default-value (home-mcron-configuration)) (default-value (home-mcron-configuration))
(description (description
"Install and configure the GNU mcron cron job manager."))) "Install and configure the GNU mcron cron job manager.")))
;;;
;;; Generate documentation.
;;;
(define (generate-doc)
(configuration->documentation 'home-mcron-configuration))
;;; mcron.scm ends here

145
gnu/home/services/pm.scm Normal file
View file

@ -0,0 +1,145 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2022 ( <paren@disroot.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 home services pm)
#:use-module (guix gexp)
#:use-module (guix packages)
#:use-module (guix records)
#:use-module (gnu home services)
#:use-module (gnu home services shepherd)
#:use-module (gnu packages monitoring)
#:use-module (gnu services shepherd)
#:export (home-batsignal-configuration
home-batsignal-service-type))
;;;
;;; batsignal
;;;
;;; Daemon for running commands and displaying notifications on
;;; battery events.
;;;
(define-record-type* <home-batsignal-configuration>
home-batsignal-configuration make-home-batsignal-configuration
home-batsignal-configuration?
(warning-level batsignal-warning-level ;integer
(default 15))
(warning-message batsignal-warning-message ;string | #f
(default #f))
(critical-level batsignal-critical-level ;integer
(default 5))
(critical-message batsignal-critical-message ;string | #f
(default #f))
(danger-level batsignal-danger-level ;integer
(default 2))
(danger-command batsignal-danger-command ;file-like | string | #f
(default #f))
(full-level batsignal-full-level ;integer | #f
(default #f))
(full-message batsignal-full-message ;string | #f
(default #f))
(batteries batsignal-batteries ;list of string
(default '()))
(poll-delay batsignal-poll-delay ;integer
(default 60))
(icon batsignal-icon ;file-like | #f
(default #f))
(notifications? batsignal-notifications? ;boolean
(default #t))
(notifications-expire? batsignal-notifications-expire? ;boolean
(default #f))
(notification-command batsignal-notification-command ;string | #f
(default #f))
(ignore-missing? batsignal-ignore-missing? ;boolean
(default #f)))
(define (home-batsignal-shepherd-services config)
(let ((warning-level (batsignal-warning-level config))
(warning-message (batsignal-warning-message config))
(critical-level (batsignal-critical-level config))
(critical-message (batsignal-critical-message config))
(danger-level (batsignal-danger-level config))
(danger-command (batsignal-danger-command config))
(full-level (batsignal-full-level config))
(full-message (batsignal-full-message config))
(batteries (batsignal-batteries config))
(poll-delay (batsignal-poll-delay config))
(icon (batsignal-icon config))
(notifications? (batsignal-notifications? config))
(notifications-expire? (batsignal-notifications-expire? config))
(notification-command (batsignal-notification-command config))
(ignore-missing? (batsignal-ignore-missing? config)))
(list (shepherd-service
(provision '(batsignal))
(documentation "Run the batsignal battery-watching daemon.")
(start #~(make-forkexec-constructor
(append (list #$(file-append batsignal "/bin/batsignal")
"-w" (number->string #$warning-level)
"-c" (number->string #$critical-level)
"-d" (number->string #$danger-level)
"-m" (number->string #$poll-delay))
(if #$warning-message
(list "-W" #$warning-message)
(list))
(if #$critical-message
(list "-C" #$critical-message)
(list))
(if #$danger-command
(list "-D" #$danger-command)
(list))
(if #$full-level
(list "-f" (number->string #$full-level))
(list))
(if #$full-message
(list "-F" #$full-message)
(list))
(if (null? (list #$@batteries))
(list)
(list "-n" (string-join (list #$@batteries) ",")))
(if #$icon
(list "-I" #$icon)
(list))
(if #$notifications?
(list)
(list "-N"))
(if #$notifications-expire?
(list "-e")
(list))
(if #$notification-command
(list "-M" #$notification-command)
(list))
(if #$ignore-missing?
(list "-i")
(list)))
#:log-file (string-append
(or (getenv "XDG_LOG_HOME")
(format #f "~a/.local/var/log"
(getenv "HOME")))
"/batsignal.log")))
(stop #~(make-kill-destructor))))))
(define home-batsignal-service-type
(service-type
(name 'home-batsignal)
(extensions
(list (service-extension home-shepherd-service-type
home-batsignal-shepherd-services)))
(default-value (home-batsignal-configuration))
(description
"Run batsignal, a battery watching and notification daemon.")))

View file

@ -19,12 +19,14 @@
(define-module (gnu home services shells) (define-module (gnu home services shells)
#:use-module (gnu services configuration) #:use-module (gnu services configuration)
#:autoload (gnu system shadow) (%default-bashrc)
#:use-module (gnu home services utils) #:use-module (gnu home services utils)
#:use-module (gnu home services) #:use-module (gnu home services)
#:use-module (gnu packages shells) #:use-module (gnu packages shells)
#:use-module (gnu packages bash) #:use-module (gnu packages bash)
#:use-module (guix gexp) #:use-module (guix gexp)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix records)
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
#:use-module (srfi srfi-26) #:use-module (srfi srfi-26)
#:use-module (ice-9 match) #:use-module (ice-9 match)
@ -369,43 +371,6 @@ Used for executing user's commands at the exit of login shell. It
won't be read in some cases (if the shell terminates by exec'ing won't be read in some cases (if the shell terminates by exec'ing
another process for example).")) another process for example)."))
;; TODO: Use value from (gnu system shadow)
(define guix-bashrc
"\
# Bash initialization for interactive non-login shells and
# for remote shells (info \"(bash) Bash Startup Files\").
# Export 'SHELL' to child processes. Programs such as 'screen'
# honor it and otherwise use /bin/sh.
export SHELL
if [[ $- != *i* ]]
then
# We are being invoked from a non-interactive shell. If this
# is an SSH session (as in \"ssh host command\"), source
# /etc/profile so we get PATH and other essential variables.
[[ -n \"$SSH_CLIENT\" ]] && source /etc/profile
# Don't do anything else.
return
fi
# Source the system-wide file.
if [[ -e /etc/bashrc ]]; then
source /etc/bashrc
fi
# Adjust the prompt depending on whether we're in 'guix environment'.
if [ -n \"$GUIX_ENVIRONMENT\" ]
then
PS1='\\u@\\h \\w [env]\\$ '
else
PS1='\\u@\\h \\w\\$ '
fi
alias ls='ls -p --color=auto'
alias ll='ls -l'
alias grep='grep --color=auto'\n")
(define (add-bash-configuration config) (define (add-bash-configuration config)
(define (filter-fields field) (define (filter-fields field)
(filter-configuration-fields home-bash-configuration-fields (filter-configuration-fields home-bash-configuration-fields
@ -442,13 +407,23 @@ if [ -f ~/.profile ]; then source ~/.profile; fi
# Honor per-interactive-shell startup file # Honor per-interactive-shell startup file
if [ -f ~/.bashrc ]; then source ~/.bashrc; fi if [ -f ~/.bashrc ]; then source ~/.bashrc; fi
" "
;; The host distro might provide a bad 'PS1' default--e.g., not taking
;; $GUIX_ENVIRONMENT into account. Provide a good default here when
;; asked to. The default can be overridden below via
;; 'environment-variables'.
(if (home-bash-configuration-guix-defaults? config)
"PS1='\\u@\\h \\w${GUIX_ENVIRONMENT:+ [env]}\\$ '\n"
"")
(serialize-field 'bash-profile) (serialize-field 'bash-profile)
(serialize-field 'environment-variables))) (serialize-field 'environment-variables)))
,@(list (file-if-not-empty ,@(list (file-if-not-empty
'bashrc 'bashrc
(if (home-bash-configuration-guix-defaults? config) (if (home-bash-configuration-guix-defaults? config)
(list (serialize-field 'aliases) guix-bashrc) (list (serialize-field 'aliases)
(plain-file-content %default-bashrc))
(list (serialize-field 'aliases)))) (list (serialize-field 'aliases))))
(file-if-not-empty 'bash-logout))))) (file-if-not-empty 'bash-logout)))))
@ -479,31 +454,30 @@ with text blocks from other extensions and the base service.")
with text blocks from other extensions and the base service.")) with text blocks from other extensions and the base service."))
(define (home-bash-extensions original-config extension-configs) (define (home-bash-extensions original-config extension-configs)
(match original-config (match-record original-config <home-bash-configuration>
(($ <home-bash-configuration> _ _ _ environment-variables aliases (environment-variables aliases bash-profile bashrc bash-logout)
bash-profile bashrc bash-logout) (home-bash-configuration
(home-bash-configuration (inherit original-config)
(inherit original-config) (environment-variables
(environment-variables (append environment-variables
(append environment-variables (append-map
(append-map home-bash-extension-environment-variables extension-configs)))
home-bash-extension-environment-variables extension-configs))) (aliases
(aliases (append aliases
(append aliases (append-map
(append-map home-bash-extension-aliases extension-configs)))
home-bash-extension-aliases extension-configs))) (bash-profile
(bash-profile (append bash-profile
(append bash-profile (append-map
(append-map home-bash-extension-bash-profile extension-configs)))
home-bash-extension-bash-profile extension-configs))) (bashrc
(bashrc (append bashrc
(append bashrc (append-map
(append-map home-bash-extension-bashrc extension-configs)))
home-bash-extension-bashrc extension-configs))) (bash-logout
(bash-logout (append bash-logout
(append bash-logout (append-map
(append-map home-bash-extension-bash-logout extension-configs))))))
home-bash-extension-bash-logout extension-configs)))))))
(define home-bash-service-type (define home-bash-service-type
(service-type (name 'home-bash) (service-type (name 'home-bash)

View file

@ -45,7 +45,8 @@
shepherd-service-auto-start? shepherd-service-auto-start?
shepherd-service-modules shepherd-service-modules
shepherd-action)) shepherd-action
shepherd-configuration-action))
(define-record-type* <home-shepherd-configuration> (define-record-type* <home-shepherd-configuration>
home-shepherd-configuration make-home-shepherd-configuration home-shepherd-configuration make-home-shepherd-configuration

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2021 Andrew Tropin <andrew@trop.in> ;;; Copyright © 2021, 2022 Andrew Tropin <andrew@trop.in>
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz> ;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
@ -35,10 +35,24 @@
#:export (home-xdg-base-directories-service-type #:export (home-xdg-base-directories-service-type
home-xdg-base-directories-configuration home-xdg-base-directories-configuration
home-xdg-base-directories-configuration? home-xdg-base-directories-configuration?
home-xdg-base-directories-configuration-cache-home
home-xdg-base-directories-configuration-config-home
home-xdg-base-directories-configuration-data-home
home-xdg-base-directories-configuration-state-home
home-xdg-base-directories-configuration-log-home
home-xdg-base-directories-configuration-runtime-dir
home-xdg-user-directories-service-type home-xdg-user-directories-service-type
home-xdg-user-directories-configuration home-xdg-user-directories-configuration
home-xdg-user-directories-configuration? home-xdg-user-directories-configuration?
home-xdg-user-directories-configuration-desktop
home-xdg-user-directories-configuration-documents
home-xdg-user-directories-configuration-download
home-xdg-user-directories-configuration-music
home-xdg-user-directories-configuration-pictures
home-xdg-user-directories-configuration-publicshare
home-xdg-user-directories-configuration-templates
home-xdg-user-directories-configuration-videos
xdg-desktop-action xdg-desktop-action
xdg-desktop-entry xdg-desktop-entry
@ -106,22 +120,25 @@ services more consistent."))
home-xdg-base-directories-configuration-fields)) home-xdg-base-directories-configuration-fields))
(define (ensure-xdg-base-dirs-on-activation config) (define (ensure-xdg-base-dirs-on-activation config)
#~(map (lambda (xdg-base-dir-variable) (with-imported-modules '((guix build utils))
((@ (guix build utils) mkdir-p) #~(begin
(getenv (use-modules (guix build utils))
xdg-base-dir-variable))) (map (lambda (xdg-base-dir-variable)
'#$(filter-map (mkdir-p
(lambda (field) (getenv
(let ((variable xdg-base-dir-variable)))
(string-append '#$(filter-map
"XDG_" (lambda (field)
(object->snake-case-string (let ((variable
(configuration-field-name field) 'upper)))) (string-append
;; XDG_RUNTIME_DIR shouldn't be created during activation "XDG_"
;; and will be provided by elogind or other service. (object->snake-case-string
(and (not (string=? "XDG_RUNTIME_DIR" variable)) (configuration-field-name field) 'upper))))
variable))) ;; XDG_RUNTIME_DIR shouldn't be created during activation
home-xdg-base-directories-configuration-fields))) ;; and will be provided by elogind or other service.
(and (not (string=? "XDG_RUNTIME_DIR" variable))
variable)))
home-xdg-base-directories-configuration-fields)))))
(define (last-extension-or-cfg config extensions) (define (last-extension-or-cfg config extensions)
"Picks configuration value from last provided extension. If there "Picks configuration value from last provided extension. If there
@ -231,6 +248,8 @@ pre-populated content.")
home-activation-service-type home-activation-service-type
home-xdg-user-directories-activation-service))) home-xdg-user-directories-activation-service)))
(default-value (home-xdg-user-directories-configuration)) (default-value (home-xdg-user-directories-configuration))
(compose identity)
(extend last-extension-or-cfg)
(description "Configure XDG user directories. To (description "Configure XDG user directories. To
disable a directory, point it to the $HOME."))) disable a directory, point it to the $HOME.")))
@ -383,25 +402,25 @@ configuration."
(define (serialize-alist config) (define (serialize-alist config)
(generic-serialize-alist append format-config config)) (generic-serialize-alist append format-config config))
(define (serialize-xdg-desktop-action action) (define (serialize-xdg-desktop-action desktop-action)
(match action (match-record desktop-action <xdg-desktop-action>
(($ <xdg-desktop-action> action name config) (action name config)
`(,(format #f "[Desktop Action ~a]\n" `(,(format #f "[Desktop Action ~a]\n"
(string-capitalize (maybe-object->string action))) (string-capitalize (maybe-object->string action)))
,(format #f "Name=~a\n" name) ,(format #f "Name=~a\n" name)
,@(serialize-alist config))))) ,@(serialize-alist config))))
(match entry (match-record entry <xdg-desktop-entry>
(($ <xdg-desktop-entry> file name type config actions) (file name type config actions)
(list (if (string-suffix? file ".desktop") (list (if (string-suffix? file ".desktop")
file file
(string-append file ".desktop")) (string-append file ".desktop"))
`("[Desktop Entry]\n" `("[Desktop Entry]\n"
,(format #f "Name=~a\n" name) ,(format #f "Name=~a\n" name)
,(format #f "Type=~a\n" ,(format #f "Type=~a\n"
(string-capitalize (symbol->string type))) (string-capitalize (symbol->string type)))
,@(serialize-alist config) ,@(serialize-alist config)
,@(append-map serialize-xdg-desktop-action actions)))))) ,@(append-map serialize-xdg-desktop-action actions)))))
(define-configuration home-xdg-mime-applications-configuration (define-configuration home-xdg-mime-applications-configuration
(added (added

View file

@ -27,6 +27,8 @@
#:use-module (guix utils) #:use-module (guix utils)
#:use-module (guix ui) #:use-module (guix ui)
#:use-module ((guix self) #:select (make-config.scm)) #:use-module ((guix self) #:select (make-config.scm))
#:use-module (guix describe)
#:use-module (guix channels)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix git-download) #:use-module (guix git-download)
#:use-module (gnu installer utils) #:use-module (gnu installer utils)
@ -46,11 +48,13 @@
#:use-module (gnu packages nano) #:use-module (gnu packages nano)
#:use-module (gnu packages ncurses) #:use-module (gnu packages ncurses)
#:use-module (gnu packages package-management) #:use-module (gnu packages package-management)
#:use-module (gnu packages pciutils)
#:use-module (gnu packages tls) #:use-module (gnu packages tls)
#:use-module (gnu packages xorg) #:use-module (gnu packages xorg)
#:use-module (gnu system locale) #:use-module (gnu system locale)
#:use-module (ice-9 match) #:use-module (ice-9 match)
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
#:use-module (web uri)
#:export (installer-program)) #:export (installer-program))
(define module-to-import? (define module-to-import?
@ -226,7 +230,9 @@ selected keymap."
(id 'welcome) (id 'welcome)
(compute (lambda _ (compute (lambda _
((installer-welcome-page current-installer) ((installer-welcome-page current-installer)
#$(local-file "installer/aux-files/logo.txt"))))) #$(local-file "installer/aux-files/logo.txt")
#:pci-database
#$(file-append pciutils "/share/hwdata/pci.ids.gz")))))
;; Ask the user to select a timezone under glibc format. ;; Ask the user to select a timezone under glibc format.
(installer-step (installer-step
@ -312,6 +318,25 @@ selected keymap."
((installer-final-page current-installer) ((installer-final-page current-installer)
result prev-steps)))))))) result prev-steps))))))))
(define (provenance-sexp)
"Return an sexp representing the currently-used channels, for logging
purposes."
(match (match (current-channels)
(() (and=> (repository->guix-channel (dirname (current-filename)))
list))
(channels channels))
(#f
(warning (G_ "cannot determine installer provenance~%"))
'unknown)
((channels ...)
(map (lambda (channel)
(let* ((uri (string->uri (channel-url channel)))
(url (if (or (not uri) (eq? 'file (uri-scheme uri)))
"local checkout"
(channel-url channel))))
`(channel ,(channel-name channel) ,url ,(channel-commit channel))))
channels))))
(define (installer-program) (define (installer-program)
"Return a file-like object that runs the given INSTALLER." "Return a file-like object that runs the given INSTALLER."
(define init-gettext (define init-gettext
@ -358,7 +383,9 @@ selected keymap."
(with-extensions (list guile-gcrypt guile-newt (with-extensions (list guile-gcrypt guile-newt
guile-parted guile-bytestructures guile-parted guile-bytestructures
guile-json-3 guile-git guile-webutils guile-json-3 guile-git guile-webutils
guix gnutls) guile-gnutls
guile-zlib ;for (gnu build linux-modules)
(current-guix))
(with-imported-modules `(,@(source-module-closure (with-imported-modules `(,@(source-module-closure
`(,@modules `(,@modules
(gnu services herd) (gnu services herd)
@ -389,6 +416,12 @@ selected keymap."
(ice-9 match) (ice-9 match)
(ice-9 textual-ports)) (ice-9 textual-ports))
;; Enable core dump generation.
(setrlimit 'core #f #f)
(call-with-output-file "/proc/sys/kernel/core_pattern"
(lambda (port)
(format port %core-dump)))
;; Initialize gettext support so that installers can use ;; Initialize gettext support so that installers can use
;; (guix i18n) module. ;; (guix i18n) module.
#$init-gettext #$init-gettext
@ -418,6 +451,9 @@ selected keymap."
(define current-installer newt-installer) (define current-installer newt-installer)
(define steps (#$steps current-installer)) (define steps (#$steps current-installer))
(installer-log-line "installer provenance: ~s"
'#$(provenance-sexp))
(dynamic-wind (dynamic-wind
(installer-init current-installer) (installer-init current-installer)
(lambda () (lambda ()
@ -447,11 +483,21 @@ selected keymap."
key args) key args)
(define dump-dir (define dump-dir
(prepare-dump key args #:result %current-result)) (prepare-dump key args #:result %current-result))
(define user-abort?
(match args
(((? user-abort-error? obj)) #t)
(_ #f)))
(define action (define action
((installer-exit-error current-installer) (if user-abort?
(get-string-all 'dump
(open-input-file ((installer-exit-error current-installer)
(string-append dump-dir "/installer-backtrace"))))) (get-string-all
(open-input-file
(string-append dump-dir
"/installer-backtrace"))))))
(match action (match action
('dump ('dump
(let* ((dump-files (let* ((dump-files

View file

@ -28,13 +28,17 @@
#:use-module (web http) #:use-module (web http)
#:use-module (web response) #:use-module (web response)
#:use-module (webutils multipart) #:use-module (webutils multipart)
#:export (prepare-dump #:export (%core-dump
prepare-dump
make-dump make-dump
send-dump-report)) send-dump-report))
;; The installer crash dump type. ;; The installer crash dump type.
(define %dump-type "installer-dump") (define %dump-type "installer-dump")
;; The core dump file.
(define %core-dump "/tmp/installer-core-dump")
(define (result->list result) (define (result->list result)
"Return the alist for the given RESULT." "Return the alist for the given RESULT."
(hash-map->list (lambda (k v) (hash-map->list (lambda (k v)
@ -66,6 +70,10 @@ RESULT is the installer result hash table. Returns the created directory path."
;; syslog ;; syslog
(copy-file "/var/log/messages" "syslog") (copy-file "/var/log/messages" "syslog")
;; core dump
(when (file-exists? %core-dump)
(copy-file %core-dump "core-dump"))
;; dmesg ;; dmesg
(let ((pipe (open-pipe* OPEN_READ "dmesg"))) (let ((pipe (open-pipe* OPEN_READ "dmesg")))
(call-with-output-file "dmesg" (call-with-output-file "dmesg"

View file

@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018, 2020 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2018, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2019, 2020, 2022 Ludovic Courtès <ludo@gnu.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -114,6 +114,8 @@ it can interact with the rest of the system."
;; Catch SIGINT and kill the container process. ;; Catch SIGINT and kill the container process.
(sigaction SIGINT (sigaction SIGINT
(lambda (signum) (lambda (signum)
;: FIXME: Use of SIGKILL prevents the dynamic-wind exit handler of
;; THUNK to run.
(false-if-exception (false-if-exception
(kill pid SIGKILL)))) (kill pid SIGKILL))))
@ -196,14 +198,16 @@ or #f. Return #t on success and #f on failure."
;; the loaded cow-store locale files will prevent umounting. ;; the loaded cow-store locale files will prevent umounting.
(install-locale locale) (install-locale locale)
;; Save the database, so that it can be restored once the ;; Stop the daemon and save the database, so that it can be
;; cow-store is umounted. ;; restored once the cow-store is umounted.
(stop-service 'guix-daemon)
(copy-file database-file saved-database) (copy-file database-file saved-database)
(installer-log-line "mounting copy-on-write store")
(mount-cow-store (%installer-target-dir) backing-directory)) (mount-cow-store (%installer-target-dir) backing-directory))
(lambda () (lambda ()
;; We need to drag the guix-daemon to the container MNT ;; We need to drag the guix-daemon to the container MNT
;; namespace, so that it can operate on the cow-store. ;; namespace, so that it can operate on the cow-store.
(stop-service 'guix-daemon)
(start-service 'guix-daemon (list (number->string (getpid)))) (start-service 'guix-daemon (list (number->string (getpid))))
(setvbuf (current-output-port) 'none) (setvbuf (current-output-port) 'none)
@ -211,13 +215,27 @@ or #f. Return #t on success and #f on failure."
(setenv "PATH" "/run/current-system/profile/bin/") (setenv "PATH" "/run/current-system/profile/bin/")
(set! ret (run-command install-command))) (set! ret (run-command install-command #:tty? #t)))
(lambda () (lambda ()
;; Restart guix-daemon so that it does no keep the MNT namespace ;; Stop guix-daemon so that it does no keep the MNT namespace
;; alive. ;; alive.
(restart-service 'guix-daemon) (stop-service 'guix-daemon)
;; Restore the database and restart it. As part of restoring the
;; database, remove the WAL and shm files in case they were left
;; behind after guix-daemon was stopped. Failing to do so,
;; sqlite might behave as if transactions that appear in the WAL
;; file were committed. (See <https://www.sqlite.org/wal.html>.)
(installer-log-line "restoring store database from '~a'"
saved-database)
(copy-file saved-database database-file) (copy-file saved-database database-file)
(for-each (lambda (suffix)
(false-if-exception
(delete-file (string-append database-file suffix))))
'("-wal" "-shm"))
(start-service 'guix-daemon)
;; Finally umount the cow-store and exit the container. ;; Finally umount the cow-store and exit the container.
(installer-log-line "unmounting copy-on-write store")
(unmount-cow-store (%installer-target-dir) backing-directory) (unmount-cow-store (%installer-target-dir) backing-directory)
(assert-exit ret)))))))) (assert-exit ret))))))))

View file

@ -0,0 +1,90 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2022 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
;;;
;;; 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 installer hardware)
#:use-module (gnu build linux-modules)
#:use-module (guix i18n)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-71)
#:export (unsupported-pci-device?
pci-device-description))
(define %unsupported-linux-modules
;; List of Linux modules that are useless without non-free firmware.
;;
;; Currently only drivers for PCI devices are listed. USB devices such as
;; "btintel" would require support to list USB devices and read the USB
;; device ID database. Punt for now as this is usually less critical.
;;
;; This list is currently manually maintained based on information on
;; non-free firmware available from
;; <https://packages.debian.org/search?keywords=firmware&searchon=names&suite=stable&section=all>.
'(;; WiFi.
"brcmfmac"
"ipw2100"
"ipw2200"
"iwlwifi"
"mwl8k"
"rtl8188ee"
"rtl818x_pci"
"rtl8192ce"
"rtl8192de"
"rtl8192ee"
;; Ethernet.
"bnx2"
"bnx2x"
"liquidio"
;; Graphics.
"amdgpu"
"radeon"
;; Multimedia.
"ivtv"))
(define unsupported-pci-device?
;; Arrange to load the module alias database only once.
(let ((aliases (delay (known-module-aliases))))
(lambda (device)
"Return true if DEVICE is known to not be supported by free software."
(any (lambda (module)
(member module %unsupported-linux-modules))
(matching-modules (pci-device-module-alias device)
(force aliases))))))
(define (pci-device-description pci-database)
"Return a procedure that, given a PCI device, returns a string describing
it."
(define (with-fallback lookup)
(lambda (vendor-id id)
(let ((vendor name (lookup vendor-id id)))
(values (or vendor (number->string vendor-id 16))
(or name (number->string id 16))))))
(define pci-lookup
(with-fallback (load-pci-device-database pci-database)))
(lambda (device)
(let ((vendor name (pci-lookup (pci-device-vendor device)
(pci-device-id device))))
(if (network-pci-device? device)
;; TRANSLATORS: The two placeholders are the manufacturer
;; and name of a PCI device.
(format #f (G_ "~a ~a (networking device)")
vendor name)
(string-append vendor " " name)))))

View file

@ -62,6 +62,9 @@
(clear-screen)) (clear-screen))
(define (exit-error error) (define (exit-error error)
;; Newt may be suspended in the context of the "install-system"
;; procedure. Resume it unconditionnally.
(newt-resume)
(newt-set-color COLORSET-ROOT "white" "red") (newt-set-color COLORSET-ROOT "white" "red")
(define action (define action
(run-textbox-page (run-textbox-page
@ -113,11 +116,7 @@ report it by email to ~a.") uploaded-name %guix-bug-report-address)
(define command-output "") (define command-output "")
(define (line-accumulator line) (define (line-accumulator line)
(set! command-output (set! command-output
(string-append/shared command-output line "\n"))) (string-append/shared command-output line)))
(define displayed-command
(string-join
(map (lambda (s) (string-append "\"" s "\"")) args)
" "))
(define result (run-external-command-with-line-hooks (list line-accumulator) (define result (run-external-command-with-line-hooks (list line-accumulator)
args)) args))
(define exit-val (status:exit-val result)) (define exit-val (status:exit-val result))
@ -173,8 +172,8 @@ report it by email to ~a.") uploaded-name %guix-bug-report-address)
(define (timezone-page zonetab) (define (timezone-page zonetab)
(run-timezone-page zonetab)) (run-timezone-page zonetab))
(define (welcome-page logo) (define* (welcome-page logo #:key pci-database)
(run-welcome-page logo)) (run-welcome-page logo #:pci-database pci-database))
(define (menu-page steps) (define (menu-page steps)
(run-menu-page steps)) (run-menu-page steps))

View file

@ -80,16 +80,20 @@ press the button to reboot.")))
(define (run-install-failed-page) (define (run-install-failed-page)
(match (current-clients) (match (current-clients)
(() (()
(match (choice-window (match (ternary-window
(G_ "Installation failed") (G_ "Installation failed")
(G_ "Resume") (G_ "Resume")
(G_ "Restart the installer") (G_ "Restart the installer")
(G_ "Report the failure")
(G_ "The final system installation step failed. You can resume from \ (G_ "The final system installation step failed. You can resume from \
a specific step, or restart the installer.")) a specific step, or restart the installer."))
(1 (abort-to-prompt 'installer-step 'abort)) (1 (abort-to-prompt 'installer-step 'abort))
(2 (2
;; Keep going, the installer will be restarted later on. ;; Keep going, the installer will be restarted later on.
#t))) #t)
(3 (raise
(condition
(&user-abort-error))))))
(_ (_
(send-to-clients '(installation-failure)) (send-to-clients '(installation-failure))
#t))) #t)))

View file

@ -115,6 +115,11 @@ network devices were found. Do you want to continue anyway?"))
(define (wait-service-online) (define (wait-service-online)
"Display a newt scale until connman detects an Internet access. Do "Display a newt scale until connman detects an Internet access. Do
FULL-VALUE tentatives, spaced by 1 second." FULL-VALUE tentatives, spaced by 1 second."
(define (url-alive? url)
(false-if-exception
(= (response-code (http-request url))
200)))
(define (ci-available?) (define (ci-available?)
(dynamic-wind (dynamic-wind
(lambda () (lambda ()
@ -122,10 +127,8 @@ FULL-VALUE tentatives, spaced by 1 second."
(lambda _ #f)) (lambda _ #f))
(alarm 3)) (alarm 3))
(lambda () (lambda ()
(false-if-exception (or (url-alive? "https://ci.guix.gnu.org")
(= (response-code (url-alive? "https://bordeaux.guix.gnu.org")))
(http-request "https://ci.guix.gnu.org"))
200)))
(lambda () (lambda ()
(alarm 0)))) (alarm 0))))

View file

@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2019, 2020, 2022 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
@ -278,12 +278,12 @@ input box, such as FLAG-PASSWORD."
(destroy-form-and-pop form) (destroy-form-and-pop form)
input)))))))) input))))))))
(define (run-error-page text title) (define* (run-error-page text title #:key (width 40))
"Run a page to inform the user of an error. The page contains the given TEXT "Run a page to inform the user of an error. The page is WIDTH column wide
to explain the error and an \"OK\" button to acknowledge the error. The title and contains the given TEXT to explain the error and an \"OK\" button to
of the page is set to TITLE." acknowledge the error. The title of the page is set to TITLE."
(let* ((text-box (let* ((text-box
(make-reflowed-textbox -1 -1 text 40 (make-reflowed-textbox -1 -1 text width
#:flags FLAG-BORDER)) #:flags FLAG-BORDER))
(grid (make-grid 1 2)) (grid (make-grid 1 2))
(ok-button (make-button -1 -1 "OK")) (ok-button (make-button -1 -1 "OK"))

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018, 2019 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2018, 2019, 2022 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
;;; ;;;
@ -92,17 +92,31 @@ disk. The installation device as well as the small devices are filtered.")
(device (car result))) (device (car result)))
device)) device))
(define (run-label-confirmation-page callback)
(lambda (item)
(match (current-clients)
(()
(and (run-confirmation-page
(format #f (G_ "This will create a new ~a partition table, \
all data on disk will be lost, are you sure you want to proceed?") item)
(G_ "Format disk?")
#:exit-button-procedure callback)
item))
(_ item))))
(define (run-label-page button-text button-callback) (define (run-label-page button-text button-callback)
"Run a page asking the user to select a partition table label." "Run a page asking the user to select a partition table label."
;; Force the GPT label if UEFI is supported. ;; Force the GPT label if UEFI is supported.
(if (efi-installation?) (if (efi-installation?)
"gpt" ((run-label-confirmation-page button-callback) "gpt")
(run-listbox-selection-page (run-listbox-selection-page
#:info-text (G_ "Select a new partition table type. \ #:info-text (G_ "Select a new partition table type. \
Be careful, all data on the disk will be lost.") Be careful, all data on the disk will be lost.")
#:title (G_ "Partition table") #:title (G_ "Partition table")
#:listbox-items '("msdos" "gpt") #:listbox-items '("msdos" "gpt")
#:listbox-item->text identity #:listbox-item->text identity
#:listbox-callback-procedure
(run-label-confirmation-page button-callback)
#:button-text button-text #:button-text button-text
#:button-callback-procedure button-callback))) #:button-callback-procedure button-callback)))

View file

@ -28,7 +28,7 @@
(match (current-clients) (match (current-clients)
(() (()
(case (choice-window (case (choice-window
(G_ "Substitute server discovery.") (G_ "Substitute server discovery")
(G_ "Enable") (G_ "Disable") (G_ "Enable") (G_ "Disable")
(G_ " By turning this option on, you allow Guix to fetch \ (G_ " By turning this option on, you allow Guix to fetch \
substitutes (pre-built binaries) during installation from servers \ substitutes (pre-built binaries) during installation from servers \

View file

@ -1,6 +1,7 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2020, 2022 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2022 Florian Pelz <pelzflorian@pelzflorian.de>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -17,6 +18,11 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu installer newt welcome) (define-module (gnu installer newt welcome)
#:use-module ((gnu build linux-modules)
#:select (modules-loaded
pci-devices))
#:use-module (gnu installer dump)
#:use-module (gnu installer hardware)
#:use-module (gnu installer steps) #:use-module (gnu installer steps)
#:use-module (gnu installer utils) #:use-module (gnu installer utils)
#:use-module (gnu installer newt page) #:use-module (gnu installer newt page)
@ -26,6 +32,8 @@
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
#:use-module (srfi srfi-34) #:use-module (srfi srfi-34)
#:use-module (srfi srfi-35) #:use-module (srfi srfi-35)
#:use-module (srfi srfi-71)
#:use-module (ice-9 format)
#:use-module (ice-9 match) #:use-module (ice-9 match)
#:use-module (ice-9 receive) #:use-module (ice-9 receive)
#:use-module (newt) #:use-module (newt)
@ -117,10 +125,52 @@ we want this page to occupy all the screen space available."
(lambda () (lambda ()
(destroy-form-and-pop form)))))) (destroy-form-and-pop form))))))
(define (run-welcome-page logo) (define (check-hardware-support pci-database)
"Warn about unsupported devices."
(when (member "uvesafb" (modules-loaded))
(run-error-page (G_ "\
This may be a false alarm, but possibly your graphics hardware does not
work well with only free software. Expect trouble. If after installation,
the system does not boot, perhaps you will need to add nomodeset to the
kernel arguments and need to configure the uvesafb kernel module.")
(G_ "Pre-install warning")))
(let ((devices (pci-devices)))
(match (filter unsupported-pci-device? devices)
(() ;no unsupported device
#t)
(unsupported
(run-error-page (format #f (G_ "\
Devices not supported by free software were found on your computer:
~{ - ~a~%~}
Unfortunately, it means those devices will not be usable.
To address it, we recommend choosing hardware that respects your freedom as a \
user--hardware for which free drivers and firmware exist. See \"Hardware \
Considerations\" in the manual for more information.")
(map (pci-device-description pci-database)
unsupported))
(G_ "Hardware support warning")
#:width 76)))))
(define* (run-welcome-page logo #:key pci-database)
"Run a welcome page with the given textual LOGO displayed at the center of "Run a welcome page with the given textual LOGO displayed at the center of
the page. Ask the user to choose between manual installation, graphical the page. Ask the user to choose between manual installation, graphical
installation and reboot." installation and reboot."
(when (file-exists? %core-dump)
(match (choice-window
(G_ "Previous installation failed")
(G_ "Continue")
(G_ "Report the failure")
(G_ "It seems that the previous installation exited unexpectedly \
and generated a core dump. Do you want to continue or to report the failure \
first?"))
(1 #t)
(2 (raise
(condition
(&user-abort-error))))))
(run-menu-page (run-menu-page
(G_ "GNU Guix install") (G_ "GNU Guix install")
(G_ "Welcome to GNU Guix system installer! (G_ "Welcome to GNU Guix system installer!
@ -134,14 +184,16 @@ Documentation is accessible at any time by pressing Ctrl-Alt-F2.")
#:listbox-items #:listbox-items
`((,(G_ "Graphical install using a terminal based interface") `((,(G_ "Graphical install using a terminal based interface")
. .
,(const #t)) ,(lambda ()
(check-hardware-support pci-database)))
(,(G_ "Install using the shell based process") (,(G_ "Install using the shell based process")
. .
,(lambda () ,(lambda ()
(check-hardware-support pci-database)
;; Switch to TTY3, where a root shell is available for shell based ;; Switch to TTY3, where a root shell is available for shell based
;; install. The other root TTY's would have been ok too. ;; install. The other root TTY's would have been ok too.
(system* "chvt" "3") (system* "chvt" "3")
(run-welcome-page logo))) (run-welcome-page logo #:pci-database pci-database)))
(,(G_ "Reboot") (,(G_ "Reboot")
. .
,(lambda () ,(lambda ()

View file

@ -319,6 +319,25 @@ PARTED-OBJECT field equals PARTITION, return #f if not found."
partition)) partition))
user-partitions)) user-partitions))
(define (read-partition-uuid/retry file-name)
"Call READ-PARTITION-UUID with 5 retries spaced by 1 second. This is useful
if the partition table is updated by the kernel at the time this function is
called, causing the underlying /dev to be absent."
(define max-retries 5)
(let loop ((retry max-retries))
(catch #t
(lambda ()
(read-partition-uuid file-name))
(lambda _
(if (> retry 0)
(begin
(sleep 1)
(loop (- retry 1)))
(error
(format #f (G_ "Could not open ~a after ~a retries~%.")
file-name max-retries)))))))
;; ;;
;; Devices ;; Devices
@ -360,12 +379,44 @@ fail. See rereadpt function in wipefs.c of util-linux for an explanation."
(define %min-device-size (define %min-device-size
(* 2 GIBIBYTE-SIZE)) ;2GiB (* 2 GIBIBYTE-SIZE)) ;2GiB
(define (mapped-device? device)
"Return #true if DEVICE is a mapped device, false otherwise."
(string-prefix? "/dev/dm-" device))
;; TODO: Use DM_TABLE_DEPS ioctl instead of dmsetup.
(define (mapped-device-parent-partition device)
"Return the parent partition path of the mapped DEVICE."
(let* ((command `("dmsetup" "deps" ,device "-o" "devname"))
(parent #f)
(handler
(lambda (input)
;; We are parsing an output that should look like:
;; 1 dependencies : (sda2)
(let ((result
(string-match "\\(([^\\)]+)\\)"
(get-string-all input))))
(and result
(set! parent
(format #f "/dev/~a"
(match:substring result 1))))))))
(run-external-command-with-handler handler command)
parent))
(define (eligible-devices) (define (eligible-devices)
"Return all the available devices except the install device and the devices "Return all the available devices except the install device and the devices
which are smaller than %MIN-DEVICE-SIZE." which are smaller than %MIN-DEVICE-SIZE."
(define the-installer-root-partition-path (define the-installer-root-partition-path
(installer-root-partition-path)) (let ((root (installer-root-partition-path)))
(cond
((mapped-device? root)
;; If the partition is a mapped device (/dev/dm-X), locate the parent
;; partition. It is the case when Ventoy is used to host the
;; installation image.
(let ((parent (mapped-device-parent-partition root)))
(installer-log-line "mapped device ~a -> ~a" parent root)
parent))
(else root))))
(define (small-device? device) (define (small-device? device)
(let ((length (device-length device)) (let ((length (device-length device))
@ -1108,7 +1159,7 @@ Return #t if all the statements are valid."
(need-formatting? (need-formatting?
(user-partition-need-formatting? user-partition))) (user-partition-need-formatting? user-partition)))
(or need-formatting? (or need-formatting?
(read-partition-uuid file-name) (read-partition-uuid/retry file-name)
(raise (raise
(condition (condition
(&cannot-read-uuid (&cannot-read-uuid

View file

@ -89,7 +89,7 @@
(partition-page installer-partition-page) (partition-page installer-partition-page)
;; procedure void -> void ;; procedure void -> void
(services-page installer-services-page) (services-page installer-services-page)
;; procedure (logo) -> void ;; procedure (logo #:pci-database) -> void
(welcome-page installer-welcome-page) (welcome-page installer-welcome-page)
;; procedure (menu-proc) -> void ;; procedure (menu-proc) -> void
(parameters-menu installer-parameters-menu) (parameters-menu installer-parameters-menu)

View file

@ -159,25 +159,32 @@
(base (if desktop? (base (if desktop?
'%desktop-services '%desktop-services
'%base-services)) '%base-services))
(heading (list (vertical-space 1) (service-heading (list (vertical-space 1)
(comment (G_ "\ (comment (G_ "\
;; Below is the list of system services. To search for available ;; Below is the list of system services. To search for available
;; services, run 'guix system search KEYWORD' in a terminal.\n"))))) ;; services, run 'guix system search KEYWORD' in a terminal.\n"))))
(package-heading (list (vertical-space 1)
(comment (G_ "\
;; Packages installed system-wide. Users can also install packages
;; under their own account: use 'guix search KEYWORD' to search
;; for packages and 'guix install PACKAGE' to install a package.\n")))))
(if (null? snippets) (if (null? snippets)
`(,@(if (null? packages) `(,@(if (null? packages)
'() '()
`((packages (append (list ,@packages) `(,@package-heading
(packages (append (list ,@packages)
%base-packages)))) %base-packages))))
,@heading ,@service-heading
(services ,base)) (services ,base))
`(,@(if (null? packages) `(,@(if (null? packages)
'() '()
`((packages (append (list ,@packages) `(,@package-heading
(packages (append (list ,@packages)
%base-packages)))) %base-packages))))
,@heading ,@service-heading
(services (append (list ,@snippets (services (append (list ,@snippets
,@(if desktop? ,@(if desktop?

View file

@ -28,7 +28,10 @@
#:use-module (srfi srfi-34) #:use-module (srfi srfi-34)
#:use-module (srfi srfi-35) #:use-module (srfi srfi-35)
#:use-module (rnrs io ports) #:use-module (rnrs io ports)
#:export (<installer-step> #:export (&user-abort-error
user-abort-error?
<installer-step>
installer-step installer-step
make-installer-step make-installer-step
installer-step? installer-step?
@ -50,6 +53,9 @@
%current-result)) %current-result))
(define-condition-type &user-abort-error &error
user-abort-error?)
;; Hash table storing the step results. Use it only for logging and debug ;; Hash table storing the step results. Use it only for logging and debug
;; purposes. ;; purposes.
(define %current-result (make-hash-table)) (define %current-result (make-hash-table))

View file

@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018, 2020 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2018, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2019, 2020, 2022 Ludovic Courtès <ludo@gnu.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -20,6 +20,7 @@
(define-module (gnu installer utils) (define-module (gnu installer utils)
#:use-module (gnu services herd) #:use-module (gnu services herd)
#:use-module (guix utils) #:use-module (guix utils)
#:use-module ((guix build syscalls) #:select (openpty login-tty))
#:use-module (guix build utils) #:use-module (guix build utils)
#:use-module (guix i18n) #:use-module (guix i18n)
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
@ -45,6 +46,7 @@
nearest-exact-integer nearest-exact-integer
read-percentage read-percentage
run-external-command-with-handler run-external-command-with-handler
run-external-command-with-handler/tty
run-external-command-with-line-hooks run-external-command-with-line-hooks
run-command run-command
run-command-in-installer run-command-in-installer
@ -124,26 +126,58 @@ the child process as returned by waitpid."
(close-port input) (close-port input)
(close-pipe dummy-pipe))) (close-pipe dummy-pipe)))
(define (run-external-command-with-line-hooks line-hooks command) (define (run-external-command-with-handler/tty handler command)
"Run command specified by the list COMMAND in a child operating in a
pseudoterminal with output handler HANDLER. HANDLER is a procedure taking an
input port, to which the command will write its standard output and error.
Returns the integer status value of the child process as returned by waitpid."
(define-values (controller inferior)
(openpty))
(match (primitive-fork)
(0
(catch #t
(lambda ()
(close-fdes controller)
(login-tty inferior)
(apply execlp (car command) command))
(lambda _
(primitive-exit 127))))
(pid
(close-fdes inferior)
(let* ((port (fdopen controller "r0"))
(result (false-if-exception
(handler port))))
(close-port port)
(cdr (waitpid pid))))))
(define* (run-external-command-with-line-hooks line-hooks command
#:key (tty? #false))
"Run command specified by the list COMMAND in a child, processing each "Run command specified by the list COMMAND in a child, processing each
output line with the procedures in LINE-HOOKS. Returns the integer status output line with the procedures in LINE-HOOKS. If TTY is set to #true, the
value of the child process as returned by waitpid." COMMAND will be run in a pseudoterminal. Returns the integer status value of
the child process as returned by waitpid."
(define (handler input) (define (handler input)
(and (and
(and=> (get-line input) ;; Lines for progress bars etc. end in \r; treat is as a line ending so
;; those lines are printed right away.
(and=> (read-delimited "\r\n" input 'concat)
(lambda (line) (lambda (line)
(if (eof-object? line) (if (eof-object? line)
#f #f
(begin (for-each (lambda (f) (f line)) (begin (for-each (lambda (f) (f line))
(append line-hooks (append line-hooks
%default-installer-line-hooks)) %default-installer-line-hooks))
#t)))) #t))))
(handler input))) (handler input)))
(run-external-command-with-handler handler command)) (if tty?
(run-external-command-with-handler/tty handler command)
(run-external-command-with-handler handler command)))
(define* (run-command command) (define* (run-command command #:key (tty? #f))
"Run COMMAND, a list of strings. Return true if COMMAND exited "Run COMMAND, a list of strings. Return true if COMMAND exited
successfully, #f otherwise." successfully, #f otherwise. If TTY is set to #true, the COMMAND will be run
in a pseudoterminal."
(define (pause) (define (pause)
(format #t (G_ "Press Enter to continue.~%")) (format #t (G_ "Press Enter to continue.~%"))
(send-to-clients '(pause)) (send-to-clients '(pause))
@ -154,8 +188,8 @@ successfully, #f otherwise."
(installer-log-line "running command ~s" command) (installer-log-line "running command ~s" command)
(define result (run-external-command-with-line-hooks (define result (run-external-command-with-line-hooks
(list %display-line-hook) (list display) command
command)) #:tty? tty?))
(define exit-val (status:exit-val result)) (define exit-val (status:exit-val result))
(define term-sig (status:term-sig result)) (define term-sig (status:term-sig result))
(define stop-sig (status:stop-sig result)) (define stop-sig (status:stop-sig result))
@ -232,7 +266,10 @@ values."
(or port (%make-void-port "w"))))) (or port (%make-void-port "w")))))
(define (%syslog-line-hook line) (define (%syslog-line-hook line)
(format (syslog-port) "installer[~d]: ~a~%" (getpid) line)) (let ((line (if (string-suffix? "\r" line)
(string-append (string-drop-right line 1) "\n")
line)))
(format (syslog-port) "installer[~d]: ~a" (getpid) line)))
(define-syntax syslog (define-syntax syslog
(lambda (s) (lambda (s)
@ -261,11 +298,7 @@ values."
port))) port)))
(define (%installer-log-line-hook line) (define (%installer-log-line-hook line)
(format (installer-log-port) "~a~%" line)) (display line (installer-log-port)))
(define (%display-line-hook line)
(display line)
(newline))
(define %default-installer-line-hooks (define %default-installer-line-hooks
(list %syslog-line-hook (list %syslog-line-hook
@ -277,9 +310,10 @@ values."
(syntax-case s () (syntax-case s ()
((_ fmt args ...) ((_ fmt args ...)
(string? (syntax->datum #'fmt)) (string? (syntax->datum #'fmt))
#'(let ((formatted (format #f fmt args ...))) (with-syntax ((fmt (string-append (syntax->datum #'fmt) "\n")))
(for-each (lambda (f) (f formatted)) #'(let ((formatted (format #f fmt args ...)))
%default-installer-line-hooks)))))) (for-each (lambda (f) (f formatted))
%default-installer-line-hooks)))))))
;;; ;;;

View file

@ -7,7 +7,7 @@
# Copyright © 2016, 2017, 2018 Kei Kebreau <kkebreau@posteo.net> # Copyright © 2016, 2017, 2018 Kei Kebreau <kkebreau@posteo.net>
# Copyright © 2016, 2017 Rene Saavedra <rennes@openmailbox.org> # Copyright © 2016, 2017 Rene Saavedra <rennes@openmailbox.org>
# Copyright © 2016 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@openmailbox.org> # Copyright © 2016 Adonay "adfeno" Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno> <adfeno@openmailbox.org>
# Copyright © 2016, 2017, 2018, 2019, 2020, 2021, 2022 Ricardo Wurmus <rekado@elephly.net> # Copyright © 2016, 2017, 2018, 2019, 2020, 2021, 2022, 2023 Ricardo Wurmus <rekado@elephly.net>
# Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com> # Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
# Copyright © 2016, 2017, 2018, 2019 Alex Vong <alexvong1995@gmail.com> # Copyright © 2016, 2017, 2018, 2019 Alex Vong <alexvong1995@gmail.com>
# Copyright © 2016, 2017, 2018, 2019, 2020, 2021, 2022 Efraim Flashner <efraim@flashner.co.il> # Copyright © 2016, 2017, 2018, 2019, 2020, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
@ -19,7 +19,7 @@
# Copyright © 2018 Amirouche Boubekki <amirouche@hypermove.net> # Copyright © 2018 Amirouche Boubekki <amirouche@hypermove.net>
# Copyright © 2018, 2019, 2020, 2021, 2022 Oleg Pykhalov <go.wigust@gmail.com> # Copyright © 2018, 2019, 2020, 2021, 2022 Oleg Pykhalov <go.wigust@gmail.com>
# Copyright © 2018 Stefan Stefanović <stefanx2ovic@gmail.com> # Copyright © 2018 Stefan Stefanović <stefanx2ovic@gmail.com>
# Copyright © 2018, 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> # Copyright © 2018, 2020, 2021, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
# Copyright © 2019, 2020, 2021, 2022 Guillaume Le Vaillant <glv@posteo.net> # Copyright © 2019, 2020, 2021, 2022 Guillaume Le Vaillant <glv@posteo.net>
# Copyright © 2019, 2020 John Soo <jsoo1@asu.edu> # Copyright © 2019, 2020 John Soo <jsoo1@asu.edu>
# Copyright © 2019 Jonathan Brielmaier <jonathan.brielmaier@web.de> # Copyright © 2019 Jonathan Brielmaier <jonathan.brielmaier@web.de>
@ -54,6 +54,8 @@
# Copyright © 2022 muradm <mail@muradm.net> # Copyright © 2022 muradm <mail@muradm.net>
# Copyright © 2022 Hilton Chain <hako@ultrarare.space> # Copyright © 2022 Hilton Chain <hako@ultrarare.space>
# Copyright © 2022 Alex Griffin <a@ajgrf.com> # Copyright © 2022 Alex Griffin <a@ajgrf.com>
# Copyright © 2022 ( <paren@disroot.org>
# Copyright © 2022 jgart <jgart@dismail.de>
# #
# This file is part of GNU Guix. # This file is part of GNU Guix.
# #
@ -89,6 +91,7 @@ GNU_SYSTEM_MODULES = \
%D%/home/services/symlink-manager.scm \ %D%/home/services/symlink-manager.scm \
%D%/home/services/fontutils.scm \ %D%/home/services/fontutils.scm \
%D%/home/services/guix.scm \ %D%/home/services/guix.scm \
%D%/home/services/pm.scm \
%D%/home/services/shells.scm \ %D%/home/services/shells.scm \
%D%/home/services/shepherd.scm \ %D%/home/services/shepherd.scm \
%D%/home/services/ssh.scm \ %D%/home/services/ssh.scm \
@ -113,6 +116,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/anthy.scm \ %D%/packages/anthy.scm \
%D%/packages/antivirus.scm \ %D%/packages/antivirus.scm \
%D%/packages/apl.scm \ %D%/packages/apl.scm \
%D%/packages/apparmor.scm \
%D%/packages/apr.scm \ %D%/packages/apr.scm \
%D%/packages/arcan.scm \ %D%/packages/arcan.scm \
%D%/packages/aspell.scm \ %D%/packages/aspell.scm \
@ -310,6 +314,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/haxe.scm \ %D%/packages/haxe.scm \
%D%/packages/heads.scm \ %D%/packages/heads.scm \
%D%/packages/hexedit.scm \ %D%/packages/hexedit.scm \
%D%/packages/high-availability.scm \
%D%/packages/hugs.scm \ %D%/packages/hugs.scm \
%D%/packages/hunspell.scm \ %D%/packages/hunspell.scm \
%D%/packages/hurd.scm \ %D%/packages/hurd.scm \
@ -333,9 +338,11 @@ GNU_SYSTEM_MODULES = \
%D%/packages/iso-codes.scm \ %D%/packages/iso-codes.scm \
%D%/packages/jami.scm \ %D%/packages/jami.scm \
%D%/packages/java.scm \ %D%/packages/java.scm \
%D%/packages/java-bootstrap.scm \
%D%/packages/java-compression.scm \ %D%/packages/java-compression.scm \
%D%/packages/java-graphics.scm \ %D%/packages/java-graphics.scm \
%D%/packages/java-maths.scm \ %D%/packages/java-maths.scm \
%D%/packages/java-xml.scm \
%D%/packages/javascript.scm \ %D%/packages/javascript.scm \
%D%/packages/jemalloc.scm \ %D%/packages/jemalloc.scm \
%D%/packages/jrnl.scm \ %D%/packages/jrnl.scm \
@ -503,6 +510,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/pure.scm \ %D%/packages/pure.scm \
%D%/packages/purescript.scm \ %D%/packages/purescript.scm \
%D%/packages/pv.scm \ %D%/packages/pv.scm \
%D%/packages/pypy.scm \
%D%/packages/python.scm \ %D%/packages/python.scm \
%D%/packages/python-build.scm \ %D%/packages/python-build.scm \
%D%/packages/python-check.scm \ %D%/packages/python-check.scm \
@ -576,6 +584,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/stenography.scm \ %D%/packages/stenography.scm \
%D%/packages/storage.scm \ %D%/packages/storage.scm \
%D%/packages/suckless.scm \ %D%/packages/suckless.scm \
%D%/packages/sugar.scm \
%D%/packages/swig.scm \ %D%/packages/swig.scm \
%D%/packages/sync.scm \ %D%/packages/sync.scm \
%D%/packages/syncthing.scm \ %D%/packages/syncthing.scm \
@ -636,6 +645,7 @@ GNU_SYSTEM_MODULES = \
%D%/packages/xorg.scm \ %D%/packages/xorg.scm \
%D%/packages/xfce.scm \ %D%/packages/xfce.scm \
%D%/packages/zig.scm \ %D%/packages/zig.scm \
%D%/packages/zig-xyz.scm \
%D%/packages/zile.scm \ %D%/packages/zile.scm \
%D%/packages/zwave.scm \ %D%/packages/zwave.scm \
\ \
@ -665,6 +675,7 @@ GNU_SYSTEM_MODULES = \
%D%/services/guix.scm \ %D%/services/guix.scm \
%D%/services/hurd.scm \ %D%/services/hurd.scm \
%D%/services/kerberos.scm \ %D%/services/kerberos.scm \
%D%/services/ldap.scm \
%D%/services/lightdm.scm \ %D%/services/lightdm.scm \
%D%/services/linux.scm \ %D%/services/linux.scm \
%D%/services/lirc.scm \ %D%/services/lirc.scm \
@ -693,6 +704,7 @@ GNU_SYSTEM_MODULES = \
%D%/services/sysctl.scm \ %D%/services/sysctl.scm \
%D%/services/telephony.scm \ %D%/services/telephony.scm \
%D%/services/version-control.scm \ %D%/services/version-control.scm \
%D%/services/vnc.scm \
%D%/services/vpn.scm \ %D%/services/vpn.scm \
%D%/services/web.scm \ %D%/services/web.scm \
%D%/services/xorg.scm \ %D%/services/xorg.scm \
@ -753,6 +765,7 @@ GNU_SYSTEM_MODULES = \
%D%/tests/docker.scm \ %D%/tests/docker.scm \
%D%/tests/file-sharing.scm \ %D%/tests/file-sharing.scm \
%D%/tests/ganeti.scm \ %D%/tests/ganeti.scm \
%D%/tests/gdm.scm \
%D%/tests/guix.scm \ %D%/tests/guix.scm \
%D%/tests/monitoring.scm \ %D%/tests/monitoring.scm \
%D%/tests/nfs.scm \ %D%/tests/nfs.scm \
@ -774,6 +787,7 @@ GNU_SYSTEM_MODULES = \
%D%/tests/telephony.scm \ %D%/tests/telephony.scm \
%D%/tests/version-control.scm \ %D%/tests/version-control.scm \
%D%/tests/virtualization.scm \ %D%/tests/virtualization.scm \
%D%/tests/vnc.scm \
%D%/tests/web.scm %D%/tests/web.scm
INSTALLER_MODULES = \ INSTALLER_MODULES = \
@ -781,6 +795,7 @@ INSTALLER_MODULES = \
%D%/installer/connman.scm \ %D%/installer/connman.scm \
%D%/installer/dump.scm \ %D%/installer/dump.scm \
%D%/installer/final.scm \ %D%/installer/final.scm \
%D%/installer/hardware.scm \
%D%/installer/hostname.scm \ %D%/installer/hostname.scm \
%D%/installer/keymap.scm \ %D%/installer/keymap.scm \
%D%/installer/locale.scm \ %D%/installer/locale.scm \
@ -923,6 +938,7 @@ dist_patch_DATA = \
%D%/packages/patches/bsd-games-prevent-name-collisions.patch \ %D%/packages/patches/bsd-games-prevent-name-collisions.patch \
%D%/packages/patches/bsd-games-stdio.h.patch \ %D%/packages/patches/bsd-games-stdio.h.patch \
%D%/packages/patches/beancount-disable-googleapis-fonts.patch \ %D%/packages/patches/beancount-disable-googleapis-fonts.patch \
%D%/packages/patches/bees-beesd-honor-destdir-on-installation.patch \
%D%/packages/patches/beignet-correct-file-names.patch \ %D%/packages/patches/beignet-correct-file-names.patch \
%D%/packages/patches/bidiv-update-fribidi.patch \ %D%/packages/patches/bidiv-update-fribidi.patch \
%D%/packages/patches/binutils-boot-2.20.1a.patch \ %D%/packages/patches/binutils-boot-2.20.1a.patch \
@ -949,8 +965,6 @@ dist_patch_DATA = \
%D%/packages/patches/cdrkit-libre-cross-compile.patch \ %D%/packages/patches/cdrkit-libre-cross-compile.patch \
%D%/packages/patches/cdrtools-3.01-mkisofs-isoinfo.patch \ %D%/packages/patches/cdrtools-3.01-mkisofs-isoinfo.patch \
%D%/packages/patches/ceph-disable-cpu-optimizations.patch \ %D%/packages/patches/ceph-disable-cpu-optimizations.patch \
%D%/packages/patches/ceph-boost-compat.patch \
%D%/packages/patches/ceph-rocksdb-compat.patch \
%D%/packages/patches/chmlib-inttypes.patch \ %D%/packages/patches/chmlib-inttypes.patch \
%D%/packages/patches/cl-asdf-config-directories.patch \ %D%/packages/patches/cl-asdf-config-directories.patch \
%D%/packages/patches/clamav-config-llvm-libs.patch \ %D%/packages/patches/clamav-config-llvm-libs.patch \
@ -967,6 +981,7 @@ dist_patch_DATA = \
%D%/packages/patches/clang-12.0-libc-search-path.patch \ %D%/packages/patches/clang-12.0-libc-search-path.patch \
%D%/packages/patches/clang-13.0-libc-search-path.patch \ %D%/packages/patches/clang-13.0-libc-search-path.patch \
%D%/packages/patches/clang-14.0-libc-search-path.patch \ %D%/packages/patches/clang-14.0-libc-search-path.patch \
%D%/packages/patches/clang-15.0-libc-search-path.patch \
%D%/packages/patches/clang-runtime-asan-build-fixes.patch \ %D%/packages/patches/clang-runtime-asan-build-fixes.patch \
%D%/packages/patches/clang-runtime-esan-build-fixes.patch \ %D%/packages/patches/clang-runtime-esan-build-fixes.patch \
%D%/packages/patches/clang-runtime-9-libsanitizer-mode-field.patch \ %D%/packages/patches/clang-runtime-9-libsanitizer-mode-field.patch \
@ -993,6 +1008,7 @@ dist_patch_DATA = \
%D%/packages/patches/cpuinfo-system-libraries.patch \ %D%/packages/patches/cpuinfo-system-libraries.patch \
%D%/packages/patches/cpulimit-with-glib-2.32.patch \ %D%/packages/patches/cpulimit-with-glib-2.32.patch \
%D%/packages/patches/crawl-upgrade-saves.patch \ %D%/packages/patches/crawl-upgrade-saves.patch \
%D%/packages/patches/crc32c-unbundle-googletest.patch \
%D%/packages/patches/crda-optional-gcrypt.patch \ %D%/packages/patches/crda-optional-gcrypt.patch \
%D%/packages/patches/clucene-contribs-lib.patch \ %D%/packages/patches/clucene-contribs-lib.patch \
%D%/packages/patches/cube-nocheck.patch \ %D%/packages/patches/cube-nocheck.patch \
@ -1014,7 +1030,6 @@ dist_patch_DATA = \
%D%/packages/patches/desmume-gcc6-fixes.patch \ %D%/packages/patches/desmume-gcc6-fixes.patch \
%D%/packages/patches/desmume-gcc7-fixes.patch \ %D%/packages/patches/desmume-gcc7-fixes.patch \
%D%/packages/patches/dfu-programmer-fix-libusb.patch \ %D%/packages/patches/dfu-programmer-fix-libusb.patch \
%D%/packages/patches/diffoscope-fix-llvm-test.patch \
%D%/packages/patches/diffutils-fix-signal-processing.patch \ %D%/packages/patches/diffutils-fix-signal-processing.patch \
%D%/packages/patches/dkimproxy-add-ipv6-support.patch \ %D%/packages/patches/dkimproxy-add-ipv6-support.patch \
%D%/packages/patches/docbook-xsl-nonrecursive-string-subst.patch \ %D%/packages/patches/docbook-xsl-nonrecursive-string-subst.patch \
@ -1026,9 +1041,6 @@ dist_patch_DATA = \
%D%/packages/patches/dstat-skip-devices-without-io.patch \ %D%/packages/patches/dstat-skip-devices-without-io.patch \
%D%/packages/patches/dvd+rw-tools-add-include.patch \ %D%/packages/patches/dvd+rw-tools-add-include.patch \
%D%/packages/patches/dynaconf-unvendor-deps.patch \ %D%/packages/patches/dynaconf-unvendor-deps.patch \
%D%/packages/patches/ecl-16-format-directive-limit.patch \
%D%/packages/patches/ecl-16-ignore-stderr-write-error.patch \
%D%/packages/patches/ecl-16-libffi.patch \
%D%/packages/patches/efibootmgr-remove-extra-decl.patch \ %D%/packages/patches/efibootmgr-remove-extra-decl.patch \
%D%/packages/patches/efivar-211.patch \ %D%/packages/patches/efivar-211.patch \
%D%/packages/patches/eigen-fix-strict-aliasing-bug.patch \ %D%/packages/patches/eigen-fix-strict-aliasing-bug.patch \
@ -1046,8 +1058,8 @@ dist_patch_DATA = \
%D%/packages/patches/emacs-json-reformat-fix-tests.patch \ %D%/packages/patches/emacs-json-reformat-fix-tests.patch \
%D%/packages/patches/emacs-helpful-fix-docstring-test.patch \ %D%/packages/patches/emacs-helpful-fix-docstring-test.patch \
%D%/packages/patches/emacs-highlight-stages-add-gexp.patch \ %D%/packages/patches/emacs-highlight-stages-add-gexp.patch \
%D%/packages/patches/emacs-libgit-use-system-libgit2.patch \
%D%/packages/patches/emacs-lispy-fix-thread-last-test.patch \ %D%/packages/patches/emacs-lispy-fix-thread-last-test.patch \
%D%/packages/patches/emacs-native-comp-driver-options.patch \
%D%/packages/patches/emacs-polymode-fix-lexical-variable-error.patch \ %D%/packages/patches/emacs-polymode-fix-lexical-variable-error.patch \
%D%/packages/patches/emacs-source-date-epoch.patch \ %D%/packages/patches/emacs-source-date-epoch.patch \
%D%/packages/patches/emacs-telega-path-placeholder.patch \ %D%/packages/patches/emacs-telega-path-placeholder.patch \
@ -1093,12 +1105,14 @@ dist_patch_DATA = \
%D%/packages/patches/firebird-riscv64-support-pt1.patch \ %D%/packages/patches/firebird-riscv64-support-pt1.patch \
%D%/packages/patches/firebird-riscv64-support-pt2.patch \ %D%/packages/patches/firebird-riscv64-support-pt2.patch \
%D%/packages/patches/flann-cmake-3.11.patch \ %D%/packages/patches/flann-cmake-3.11.patch \
%D%/packages/patches/flashrom-fix-building-on-aarch64.patch \
%D%/packages/patches/flatpak-fix-path.patch \ %D%/packages/patches/flatpak-fix-path.patch \
%D%/packages/patches/flatpak-unset-gdk-pixbuf-for-sandbox.patch \ %D%/packages/patches/flatpak-unset-gdk-pixbuf-for-sandbox.patch \
%D%/packages/patches/fontconfig-cache-ignore-mtime.patch \ %D%/packages/patches/fontconfig-cache-ignore-mtime.patch \
%D%/packages/patches/foobillard++-pkg-config.patch \ %D%/packages/patches/foobillard++-pkg-config.patch \
%D%/packages/patches/foomatic-filters-CVE-2015-8327.patch \ %D%/packages/patches/foomatic-filters-CVE-2015-8327.patch \
%D%/packages/patches/foomatic-filters-CVE-2015-8560.patch \ %D%/packages/patches/foomatic-filters-CVE-2015-8560.patch \
%D%/packages/patches/fp16-implicit-double.patch \
%D%/packages/patches/fp16-system-libraries.patch \ %D%/packages/patches/fp16-system-libraries.patch \
%D%/packages/patches/fpc-reproducibility.patch \ %D%/packages/patches/fpc-reproducibility.patch \
%D%/packages/patches/freedink-engine-fix-sdl-hints.patch \ %D%/packages/patches/freedink-engine-fix-sdl-hints.patch \
@ -1168,10 +1182,11 @@ dist_patch_DATA = \
%D%/packages/patches/gdm-wayland-session-wrapper-from-env.patch \ %D%/packages/patches/gdm-wayland-session-wrapper-from-env.patch \
%D%/packages/patches/gdm-pass-gdk-pixbuf-loader-env.patch \ %D%/packages/patches/gdm-pass-gdk-pixbuf-loader-env.patch \
%D%/packages/patches/geeqie-clutter.patch \ %D%/packages/patches/geeqie-clutter.patch \
%D%/packages/patches/gemmi-fix-pegtl-usage.patch \
%D%/packages/patches/gemmi-fix-sajson-types.patch \
%D%/packages/patches/genimage-mke2fs-test.patch \ %D%/packages/patches/genimage-mke2fs-test.patch \
%D%/packages/patches/geoclue-config.patch \ %D%/packages/patches/geoclue-config.patch \
%D%/packages/patches/gettext-libunicode-update.patch \ %D%/packages/patches/gettext-libunicode-update.patch \
%D%/packages/patches/ghc-4.patch \
%D%/packages/patches/ghc-8.0-fall-back-to-madv_dontneed.patch \ %D%/packages/patches/ghc-8.0-fall-back-to-madv_dontneed.patch \
%D%/packages/patches/ghc-testsuite-dlopen-pie.patch \ %D%/packages/patches/ghc-testsuite-dlopen-pie.patch \
%D%/packages/patches/ghc-testsuite-grep-compat.patch \ %D%/packages/patches/ghc-testsuite-grep-compat.patch \
@ -1179,7 +1194,6 @@ dist_patch_DATA = \
%D%/packages/patches/ghostscript-no-header-id.patch \ %D%/packages/patches/ghostscript-no-header-id.patch \
%D%/packages/patches/ghostscript-no-header-uuid.patch \ %D%/packages/patches/ghostscript-no-header-uuid.patch \
%D%/packages/patches/ghostscript-no-header-creationdate.patch \ %D%/packages/patches/ghostscript-no-header-creationdate.patch \
%D%/packages/patches/giara-fix-login.patch \
%D%/packages/patches/glib-appinfo-watch.patch \ %D%/packages/patches/glib-appinfo-watch.patch \
%D%/packages/patches/glib-networking-gnutls-binding.patch \ %D%/packages/patches/glib-networking-gnutls-binding.patch \
%D%/packages/patches/glib-networking-32-bit-time.patch \ %D%/packages/patches/glib-networking-32-bit-time.patch \
@ -1249,6 +1263,7 @@ dist_patch_DATA = \
%D%/packages/patches/guile-1.8-cpp-4.5.patch \ %D%/packages/patches/guile-1.8-cpp-4.5.patch \
%D%/packages/patches/guile-2.2-skip-oom-test.patch \ %D%/packages/patches/guile-2.2-skip-oom-test.patch \
%D%/packages/patches/guile-2.2-skip-so-test.patch \ %D%/packages/patches/guile-2.2-skip-so-test.patch \
%D%/packages/patches/guile-cross-compilation.patch \
%D%/packages/patches/guile-default-utf8.patch \ %D%/packages/patches/guile-default-utf8.patch \
%D%/packages/patches/guile-2.2-default-utf8.patch \ %D%/packages/patches/guile-2.2-default-utf8.patch \
%D%/packages/patches/guile-relocatable.patch \ %D%/packages/patches/guile-relocatable.patch \
@ -1256,16 +1271,15 @@ dist_patch_DATA = \
%D%/packages/patches/guile-linux-syscalls.patch \ %D%/packages/patches/guile-linux-syscalls.patch \
%D%/packages/patches/guile-3.0-linux-syscalls.patch \ %D%/packages/patches/guile-3.0-linux-syscalls.patch \
%D%/packages/patches/guile-ac-d-bus-fix-tests.patch \ %D%/packages/patches/guile-ac-d-bus-fix-tests.patch \
%D%/packages/patches/guile-cross-compilation.patch \
%D%/packages/patches/guile-fibers-destroy-peer-schedulers.patch \ %D%/packages/patches/guile-fibers-destroy-peer-schedulers.patch \
%D%/packages/patches/guile-fibers-epoll-instance-is-dead.patch \ %D%/packages/patches/guile-fibers-epoll-instance-is-dead.patch \
%D%/packages/patches/guile-fibers-fd-finalizer-leak.patch \
%D%/packages/patches/guile-fibers-wait-for-io-readiness.patch \ %D%/packages/patches/guile-fibers-wait-for-io-readiness.patch \
%D%/packages/patches/guile-gdbm-ffi-support-gdbm-1.14.patch \ %D%/packages/patches/guile-gdbm-ffi-support-gdbm-1.14.patch \
%D%/packages/patches/guile-git-adjust-for-libgit2-1.2.0.patch \ %D%/packages/patches/guile-git-adjust-for-libgit2-1.2.0.patch \
%D%/packages/patches/guile-present-coding.patch \ %D%/packages/patches/guile-present-coding.patch \
%D%/packages/patches/guile-rsvg-pkgconfig.patch \ %D%/packages/patches/guile-rsvg-pkgconfig.patch \
%D%/packages/patches/guile-emacs-fix-configure.patch \ %D%/packages/patches/guile-emacs-fix-configure.patch \
%D%/packages/patches/guile-email-fix-tests.patch \
%D%/packages/patches/gtk2-fix-builder-test.patch \ %D%/packages/patches/gtk2-fix-builder-test.patch \
%D%/packages/patches/gtk2-respect-GUIX_GTK2_PATH.patch \ %D%/packages/patches/gtk2-respect-GUIX_GTK2_PATH.patch \
%D%/packages/patches/gtk2-respect-GUIX_GTK2_IM_MODULE_FILE.patch \ %D%/packages/patches/gtk2-respect-GUIX_GTK2_IM_MODULE_FILE.patch \
@ -1301,7 +1315,6 @@ dist_patch_DATA = \
%D%/packages/patches/i7z-gcc-10.patch \ %D%/packages/patches/i7z-gcc-10.patch \
%D%/packages/patches/icecat-makeicecat.patch \ %D%/packages/patches/icecat-makeicecat.patch \
%D%/packages/patches/icecat-avoid-bundled-libraries.patch \ %D%/packages/patches/icecat-avoid-bundled-libraries.patch \
%D%/packages/patches/icecat-use-older-reveal-hidden-html.patch \
%D%/packages/patches/icecat-use-system-graphite2+harfbuzz.patch \ %D%/packages/patches/icecat-use-system-graphite2+harfbuzz.patch \
%D%/packages/patches/icecat-use-system-media-libs.patch \ %D%/packages/patches/icecat-use-system-media-libs.patch \
%D%/packages/patches/icedtea-7-hotspot-aarch64-use-c++98.patch \ %D%/packages/patches/icedtea-7-hotspot-aarch64-use-c++98.patch \
@ -1324,7 +1337,8 @@ dist_patch_DATA = \
%D%/packages/patches/irrlicht-link-against-needed-libs.patch \ %D%/packages/patches/irrlicht-link-against-needed-libs.patch \
%D%/packages/patches/isl-0.11.1-aarch64-support.patch \ %D%/packages/patches/isl-0.11.1-aarch64-support.patch \
%D%/packages/patches/itk-snap-alt-glibc-compat.patch \ %D%/packages/patches/itk-snap-alt-glibc-compat.patch \
%D%/packages/patches/jami-fix-crash-on-block-contact.patch \ %D%/packages/patches/jami-disable-integration-tests.patch \
%D%/packages/patches/jami-libjami-headers-search.patch \
%D%/packages/patches/jamvm-1.5.1-aarch64-support.patch \ %D%/packages/patches/jamvm-1.5.1-aarch64-support.patch \
%D%/packages/patches/jamvm-1.5.1-armv7-support.patch \ %D%/packages/patches/jamvm-1.5.1-armv7-support.patch \
%D%/packages/patches/jamvm-2.0.0-aarch64-support.patch \ %D%/packages/patches/jamvm-2.0.0-aarch64-support.patch \
@ -1349,8 +1363,7 @@ dist_patch_DATA = \
%D%/packages/patches/json-c-0.13-CVE-2020-12762.patch \ %D%/packages/patches/json-c-0.13-CVE-2020-12762.patch \
%D%/packages/patches/json-c-0.12-CVE-2020-12762.patch \ %D%/packages/patches/json-c-0.12-CVE-2020-12762.patch \
%D%/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch \ %D%/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch \
%D%/packages/patches/julia-tracker-16-compat.patch \ %D%/packages/patches/libgeotiff-fix-tests-with-proj-9.1.1.patch \
%D%/packages/patches/julia-allow-parallel-build.patch \
%D%/packages/patches/libobjc2-unbundle-robin-map.patch \ %D%/packages/patches/libobjc2-unbundle-robin-map.patch \
%D%/packages/patches/librime-fix-build-with-gcc10.patch \ %D%/packages/patches/librime-fix-build-with-gcc10.patch \
%D%/packages/patches/libvirt-add-install-prefix.patch \ %D%/packages/patches/libvirt-add-install-prefix.patch \
@ -1359,6 +1372,8 @@ dist_patch_DATA = \
%D%/packages/patches/lightdm-vncserver-check.patch \ %D%/packages/patches/lightdm-vncserver-check.patch \
%D%/packages/patches/lightdm-vnc-color-depth.patch \ %D%/packages/patches/lightdm-vnc-color-depth.patch \
%D%/packages/patches/localed-xorg-keyboard.patch \ %D%/packages/patches/localed-xorg-keyboard.patch \
%D%/packages/patches/kcontacts-incorrect-country-name.patch \
%D%/packages/patches/kde-cli-tools-delay-mime-db.patch \
%D%/packages/patches/kdiagram-Fix-missing-link-libraries.patch \ %D%/packages/patches/kdiagram-Fix-missing-link-libraries.patch \
%D%/packages/patches/kiki-level-selection-crash.patch \ %D%/packages/patches/kiki-level-selection-crash.patch \
%D%/packages/patches/kiki-makefile.patch \ %D%/packages/patches/kiki-makefile.patch \
@ -1375,9 +1390,8 @@ dist_patch_DATA = \
%D%/packages/patches/kobodeluxe-manpage-minus-not-hyphen.patch \ %D%/packages/patches/kobodeluxe-manpage-minus-not-hyphen.patch \
%D%/packages/patches/kobodeluxe-midicon-segmentation-fault.patch \ %D%/packages/patches/kobodeluxe-midicon-segmentation-fault.patch \
%D%/packages/patches/kobodeluxe-graphics-window-signed-char.patch \ %D%/packages/patches/kobodeluxe-graphics-window-signed-char.patch \
%D%/packages/patches/kodi-increase-test-timeout.patch \
%D%/packages/patches/kodi-set-libcurl-ssl-parameters.patch \ %D%/packages/patches/kodi-set-libcurl-ssl-parameters.patch \
%D%/packages/patches/kodi-skip-test-449.patch \ %D%/packages/patches/kwayland-skip-flaky-test.patch \
%D%/packages/patches/laby-make-install.patch \ %D%/packages/patches/laby-make-install.patch \
%D%/packages/patches/ldns-drill-examples.patch \ %D%/packages/patches/ldns-drill-examples.patch \
%D%/packages/patches/leela-zero-gtest.patch \ %D%/packages/patches/leela-zero-gtest.patch \
@ -1411,6 +1425,7 @@ dist_patch_DATA = \
%D%/packages/patches/libofa-ftbfs-2.diff \ %D%/packages/patches/libofa-ftbfs-2.diff \
%D%/packages/patches/libotr-test-auth-fix.patch \ %D%/packages/patches/libotr-test-auth-fix.patch \
%D%/packages/patches/libksieve-Fix-missing-link-libraries.patch \ %D%/packages/patches/libksieve-Fix-missing-link-libraries.patch \
%D%/packages/patches/libksysguard-qdiriterator-follow-symlinks.patch \
%D%/packages/patches/libmad-armv7-thumb-pt1.patch \ %D%/packages/patches/libmad-armv7-thumb-pt1.patch \
%D%/packages/patches/libmad-armv7-thumb-pt2.patch \ %D%/packages/patches/libmad-armv7-thumb-pt2.patch \
%D%/packages/patches/libmad-length-check.patch \ %D%/packages/patches/libmad-length-check.patch \
@ -1435,7 +1450,6 @@ dist_patch_DATA = \
%D%/packages/patches/libtommath-fix-linkage.patch \ %D%/packages/patches/libtommath-fix-linkage.patch \
%D%/packages/patches/libtool-grep-compat.patch \ %D%/packages/patches/libtool-grep-compat.patch \
%D%/packages/patches/libtool-skip-tests2.patch \ %D%/packages/patches/libtool-skip-tests2.patch \
%D%/packages/patches/libunwind-julia-fix-GCC10-fno-common.patch \
%D%/packages/patches/libusb-0.1-disable-tests.patch \ %D%/packages/patches/libusb-0.1-disable-tests.patch \
%D%/packages/patches/libusb-for-axoloti.patch \ %D%/packages/patches/libusb-for-axoloti.patch \
%D%/packages/patches/libutils-add-includes.patch \ %D%/packages/patches/libutils-add-includes.patch \
@ -1452,7 +1466,8 @@ dist_patch_DATA = \
%D%/packages/patches/lierolibre-remove-arch-warning.patch \ %D%/packages/patches/lierolibre-remove-arch-warning.patch \
%D%/packages/patches/lierolibre-try-building-other-arch.patch \ %D%/packages/patches/lierolibre-try-building-other-arch.patch \
%D%/packages/patches/linbox-fix-pkgconfig.patch \ %D%/packages/patches/linbox-fix-pkgconfig.patch \
%D%/packages/patches/linphone-desktop-without-sdk.patch \ %D%/packages/patches/linphone-desktop-without-sdk.patch \
%D%/packages/patches/linux-libre-infodocs-target.patch \
%D%/packages/patches/linux-libre-support-for-Pinebook-Pro.patch \ %D%/packages/patches/linux-libre-support-for-Pinebook-Pro.patch \
%D%/packages/patches/linux-pam-no-setfsuid.patch \ %D%/packages/patches/linux-pam-no-setfsuid.patch \
%D%/packages/patches/linux-pam-unix_chkpwd.patch \ %D%/packages/patches/linux-pam-unix_chkpwd.patch \
@ -1480,7 +1495,6 @@ dist_patch_DATA = \
%D%/packages/patches/lua-liblua-so.patch \ %D%/packages/patches/lua-liblua-so.patch \
%D%/packages/patches/lua-5.4-pkgconfig.patch \ %D%/packages/patches/lua-5.4-pkgconfig.patch \
%D%/packages/patches/lua-5.4-liblua-so.patch \ %D%/packages/patches/lua-5.4-liblua-so.patch \
%D%/packages/patches/luajit-no_ldconfig.patch \
%D%/packages/patches/luit-posix.patch \ %D%/packages/patches/luit-posix.patch \
%D%/packages/patches/lvm2-static-link.patch \ %D%/packages/patches/lvm2-static-link.patch \
%D%/packages/patches/mailutils-variable-lookup.patch \ %D%/packages/patches/mailutils-variable-lookup.patch \
@ -1502,6 +1516,7 @@ dist_patch_DATA = \
%D%/packages/patches/libmemcached-build-with-gcc7.patch \ %D%/packages/patches/libmemcached-build-with-gcc7.patch \
%D%/packages/patches/libmhash-hmac-fix-uaf.patch \ %D%/packages/patches/libmhash-hmac-fix-uaf.patch \
%D%/packages/patches/libsigrokdecode-python3.9-fix.patch \ %D%/packages/patches/libsigrokdecode-python3.9-fix.patch \
%D%/packages/patches/memtest86+-build-reproducibly.patch \
%D%/packages/patches/mercurial-hg-extension-path.patch \ %D%/packages/patches/mercurial-hg-extension-path.patch \
%D%/packages/patches/mercurial-openssl-compat.patch \ %D%/packages/patches/mercurial-openssl-compat.patch \
%D%/packages/patches/mesa-opencl-all-targets.patch \ %D%/packages/patches/mesa-opencl-all-targets.patch \
@ -1509,6 +1524,8 @@ dist_patch_DATA = \
%D%/packages/patches/mhash-keygen-test-segfault.patch \ %D%/packages/patches/mhash-keygen-test-segfault.patch \
%D%/packages/patches/mia-fix-boost-headers.patch \ %D%/packages/patches/mia-fix-boost-headers.patch \
%D%/packages/patches/mia-vtk9.patch \ %D%/packages/patches/mia-vtk9.patch \
%D%/packages/patches/mia-vtk92.patch \
%D%/packages/patches/mia-vtk-version.patch \
%D%/packages/patches/mingw-w64-6.0.0-gcc.patch \ %D%/packages/patches/mingw-w64-6.0.0-gcc.patch \
%D%/packages/patches/mingw-w64-dlltool-temp-prefix.patch \ %D%/packages/patches/mingw-w64-dlltool-temp-prefix.patch \
%D%/packages/patches/mingw-w64-reproducible-gendef.patch \ %D%/packages/patches/mingw-w64-reproducible-gendef.patch \
@ -1525,12 +1542,12 @@ dist_patch_DATA = \
%D%/packages/patches/monero-use-system-miniupnpc.patch \ %D%/packages/patches/monero-use-system-miniupnpc.patch \
%D%/packages/patches/mosaicatcher-unbundle-htslib.patch \ %D%/packages/patches/mosaicatcher-unbundle-htslib.patch \
%D%/packages/patches/mrrescue-support-love-11.patch \ %D%/packages/patches/mrrescue-support-love-11.patch \
%D%/packages/patches/mrustc-riscv64-support.patch \
%D%/packages/patches/mtools-mformat-uninitialized.patch \ %D%/packages/patches/mtools-mformat-uninitialized.patch \
%D%/packages/patches/mupen64plus-ui-console-notice.patch \ %D%/packages/patches/mupen64plus-ui-console-notice.patch \
%D%/packages/patches/mupen64plus-video-z64-glew-correct-path.patch \ %D%/packages/patches/mupen64plus-video-z64-glew-correct-path.patch \
%D%/packages/patches/musl-cross-locale.patch \ %D%/packages/patches/musl-cross-locale.patch \
%D%/packages/patches/mutt-store-references.patch \ %D%/packages/patches/mutt-store-references.patch \
%D%/packages/patches/nautilus-extension-search-path.patch \
%D%/packages/patches/ncompress-fix-softlinks.patch \ %D%/packages/patches/ncompress-fix-softlinks.patch \
%D%/packages/patches/ncftp-reproducible.patch \ %D%/packages/patches/ncftp-reproducible.patch \
%D%/packages/patches/netcdf-date-time.patch \ %D%/packages/patches/netcdf-date-time.patch \
@ -1557,6 +1574,7 @@ dist_patch_DATA = \
%D%/packages/patches/nvi-dbpagesize-binpower.patch \ %D%/packages/patches/nvi-dbpagesize-binpower.patch \
%D%/packages/patches/nvi-db4.patch \ %D%/packages/patches/nvi-db4.patch \
%D%/packages/patches/nyacc-binary-literals.patch \ %D%/packages/patches/nyacc-binary-literals.patch \
%D%/packages/patches/oath-toolkit-xmlsec-compat.patch \
%D%/packages/patches/obs-modules-location.patch \ %D%/packages/patches/obs-modules-location.patch \
%D%/packages/patches/ocaml-dose3-add-unix-dependency.patch \ %D%/packages/patches/ocaml-dose3-add-unix-dependency.patch \
%D%/packages/patches/ocaml-dose3-Fix-for-ocaml-4.06.patch \ %D%/packages/patches/ocaml-dose3-Fix-for-ocaml-4.06.patch \
@ -1570,6 +1588,7 @@ dist_patch_DATA = \
%D%/packages/patches/onnx-use-system-googletest.patch \ %D%/packages/patches/onnx-use-system-googletest.patch \
%D%/packages/patches/onnx-shared-libraries.patch \ %D%/packages/patches/onnx-shared-libraries.patch \
%D%/packages/patches/onnx-skip-model-downloads.patch \ %D%/packages/patches/onnx-skip-model-downloads.patch \
%D%/packages/patches/openbios-gcc-warnings.patch \
%D%/packages/patches/openboardview-use-system-imgui.patch \ %D%/packages/patches/openboardview-use-system-imgui.patch \
%D%/packages/patches/openboardview-use-system-utf8.patch \ %D%/packages/patches/openboardview-use-system-utf8.patch \
%D%/packages/patches/openbox-python3.patch \ %D%/packages/patches/openbox-python3.patch \
@ -1601,12 +1620,16 @@ dist_patch_DATA = \
%D%/packages/patches/pango-skip-libthai-test.patch \ %D%/packages/patches/pango-skip-libthai-test.patch \
%D%/packages/patches/password-store-tree-compat.patch \ %D%/packages/patches/password-store-tree-compat.patch \
%D%/packages/patches/plasma-framework-fix-KF5PlasmaMacros.cmake.patch \ %D%/packages/patches/plasma-framework-fix-KF5PlasmaMacros.cmake.patch \
%D%/packages/patches/pocketfft-cpp-prefer-preprocessor-if.patch \
%D%/packages/patches/pokerth-boost.patch \ %D%/packages/patches/pokerth-boost.patch \
%D%/packages/patches/ppsspp-disable-upgrade-and-gold.patch \ %D%/packages/patches/ppsspp-disable-upgrade-and-gold.patch \
%D%/packages/patches/pthreadpool-system-libraries.patch \ %D%/packages/patches/pthreadpool-system-libraries.patch \
%D%/packages/patches/python-chai-drop-python2.patch \ %D%/packages/patches/python-chai-drop-python2.patch \
%D%/packages/patches/python-louvain-fix-test.patch \
%D%/packages/patches/python-random2-getrandbits-test.patch \ %D%/packages/patches/python-random2-getrandbits-test.patch \
%D%/packages/patches/python-poppler-qt5-fix-build.patch \ %D%/packages/patches/python-poppler-qt5-fix-build.patch \
%D%/packages/patches/python-pypdf-annotate-tests-appropriately.patch \
%D%/packages/patches/python-telingo-fix-comparison.patch \
%D%/packages/patches/python-w3lib-fix-test-failure.patch \ %D%/packages/patches/python-w3lib-fix-test-failure.patch \
%D%/packages/patches/sdcc-disable-non-free-code.patch \ %D%/packages/patches/sdcc-disable-non-free-code.patch \
%D%/packages/patches/sdl-pango-api_additions.patch \ %D%/packages/patches/sdl-pango-api_additions.patch \
@ -1639,7 +1662,6 @@ dist_patch_DATA = \
%D%/packages/patches/phoronix-test-suite-fsdg.patch \ %D%/packages/patches/phoronix-test-suite-fsdg.patch \
%D%/packages/patches/php-bug-74093-test.patch \ %D%/packages/patches/php-bug-74093-test.patch \
%D%/packages/patches/php-curl-compat.patch \ %D%/packages/patches/php-curl-compat.patch \
%D%/packages/patches/picard-fix-id3-rename-test.patch \
%D%/packages/patches/picprog-non-intel-support.patch \ %D%/packages/patches/picprog-non-intel-support.patch \
%D%/packages/patches/pidgin-add-search-path.patch \ %D%/packages/patches/pidgin-add-search-path.patch \
%D%/packages/patches/pinball-system-ltdl.patch \ %D%/packages/patches/pinball-system-ltdl.patch \
@ -1659,11 +1681,11 @@ dist_patch_DATA = \
%D%/packages/patches/procmail-ambiguous-getline-debian.patch \ %D%/packages/patches/procmail-ambiguous-getline-debian.patch \
%D%/packages/patches/procmail-CVE-2014-3618.patch \ %D%/packages/patches/procmail-CVE-2014-3618.patch \
%D%/packages/patches/procmail-CVE-2017-16844.patch \ %D%/packages/patches/procmail-CVE-2017-16844.patch \
%D%/packages/patches/protobuf-fix-build-on-32bit.patch \
%D%/packages/patches/psm-arch.patch \ %D%/packages/patches/psm-arch.patch \
%D%/packages/patches/psm-disable-memory-stats.patch \ %D%/packages/patches/psm-disable-memory-stats.patch \
%D%/packages/patches/psm-ldflags.patch \ %D%/packages/patches/psm-ldflags.patch \
%D%/packages/patches/psm-repro.patch \ %D%/packages/patches/psm-repro.patch \
%D%/packages/patches/public-inbox-fix-spawn-test.patch \
%D%/packages/patches/pulseaudio-fix-mult-test.patch \ %D%/packages/patches/pulseaudio-fix-mult-test.patch \
%D%/packages/patches/pulseaudio-longer-test-timeout.patch \ %D%/packages/patches/pulseaudio-longer-test-timeout.patch \
%D%/packages/patches/pulseview-qt515-compat.patch \ %D%/packages/patches/pulseview-qt515-compat.patch \
@ -1685,7 +1707,7 @@ dist_patch_DATA = \
%D%/packages/patches/python-3-search-paths.patch \ %D%/packages/patches/python-3-search-paths.patch \
%D%/packages/patches/python-3-fix-tests.patch \ %D%/packages/patches/python-3-fix-tests.patch \
%D%/packages/patches/python-3-hurd-configure.patch \ %D%/packages/patches/python-3-hurd-configure.patch \
%D%/packages/patches/python-apsw-3.39.2.1-test-fix.patch \ %D%/packages/patches/python-afdko-suppress-copyright-test.patch \
%D%/packages/patches/python-aionotify-0.2.0-py3.8.patch \ %D%/packages/patches/python-aionotify-0.2.0-py3.8.patch \
%D%/packages/patches/python-argcomplete-1.11.1-fish31.patch \ %D%/packages/patches/python-argcomplete-1.11.1-fish31.patch \
%D%/packages/patches/python-cross-compile.patch \ %D%/packages/patches/python-cross-compile.patch \
@ -1695,7 +1717,6 @@ dist_patch_DATA = \
%D%/packages/patches/python-docopt-pytest6-compat.patch \ %D%/packages/patches/python-docopt-pytest6-compat.patch \
%D%/packages/patches/python-execnet-read-only-fix.patch \ %D%/packages/patches/python-execnet-read-only-fix.patch \
%D%/packages/patches/python-fixtures-remove-monkeypatch-test.patch \ %D%/packages/patches/python-fixtures-remove-monkeypatch-test.patch \
%D%/packages/patches/python-flask-restful-werkzeug-compat.patch \
%D%/packages/patches/python-ipython-documentation-chars.patch \ %D%/packages/patches/python-ipython-documentation-chars.patch \
%D%/packages/patches/python-ipython-documentation-repro.patch \ %D%/packages/patches/python-ipython-documentation-repro.patch \
%D%/packages/patches/python-keras-integration-test.patch \ %D%/packages/patches/python-keras-integration-test.patch \
@ -1725,8 +1746,6 @@ dist_patch_DATA = \
%D%/packages/patches/python-robotframework-atest.patch \ %D%/packages/patches/python-robotframework-atest.patch \
%D%/packages/patches/python-robotframework-source-date-epoch.patch \ %D%/packages/patches/python-robotframework-source-date-epoch.patch \
%D%/packages/patches/python-robotframework-sshlibrary-rf5-compat.patch \ %D%/packages/patches/python-robotframework-sshlibrary-rf5-compat.patch \
%D%/packages/patches/python-seaborn-kde-test.patch \
%D%/packages/patches/python-seaborn-2690.patch \
%D%/packages/patches/python-unittest2-python3-compat.patch \ %D%/packages/patches/python-unittest2-python3-compat.patch \
%D%/packages/patches/python-unittest2-remove-argparse.patch \ %D%/packages/patches/python-unittest2-remove-argparse.patch \
%D%/packages/patches/python-versioneer-guix-support.patch \ %D%/packages/patches/python-versioneer-guix-support.patch \
@ -1747,6 +1766,8 @@ dist_patch_DATA = \
%D%/packages/patches/quagga-reproducible-build.patch \ %D%/packages/patches/quagga-reproducible-build.patch \
%D%/packages/patches/quickswitch-fix-dmenu-check.patch \ %D%/packages/patches/quickswitch-fix-dmenu-check.patch \
%D%/packages/patches/qtwayland-gcc-11.patch \ %D%/packages/patches/qtwayland-gcc-11.patch \
%D%/packages/patches/qtwayland-dont-recreate-callbacks.patch \
%D%/packages/patches/qtwayland-cleanup-callbacks.patch \
%D%/packages/patches/qtwebkit-pbutils-include.patch \ %D%/packages/patches/qtwebkit-pbutils-include.patch \
%D%/packages/patches/qtwebkit-fix-building-with-bison-3.7.patch \ %D%/packages/patches/qtwebkit-fix-building-with-bison-3.7.patch \
%D%/packages/patches/qtwebkit-fix-building-with-python-3.9.patch \ %D%/packages/patches/qtwebkit-fix-building-with-python-3.9.patch \
@ -1769,26 +1790,28 @@ dist_patch_DATA = \
%D%/packages/patches/ripperx-missing-file.patch \ %D%/packages/patches/ripperx-missing-file.patch \
%D%/packages/patches/rpcbind-CVE-2017-8779.patch \ %D%/packages/patches/rpcbind-CVE-2017-8779.patch \
%D%/packages/patches/rtags-separate-rct.patch \ %D%/packages/patches/rtags-separate-rct.patch \
%D%/packages/patches/racket-backport-8.6-zuo.patch \ %D%/packages/patches/racket-backport-8.7-pkg-strip.patch \
%D%/packages/patches/racket-chez-scheme-bin-sh.patch \ %D%/packages/patches/racket-chez-scheme-bin-sh.patch \
%D%/packages/patches/racket-rktio-bin-sh.patch \ %D%/packages/patches/racket-rktio-bin-sh.patch \
%D%/packages/patches/racket-zuo-bin-sh.patch \ %D%/packages/patches/racket-zuo-bin-sh.patch \
%D%/packages/patches/remake-impure-dirs.patch \ %D%/packages/patches/remake-impure-dirs.patch \
%D%/packages/patches/restic-0.9.6-fix-tests-for-go1.15.patch \ %D%/packages/patches/restic-0.9.6-fix-tests-for-go1.15.patch \
%D%/packages/patches/retroarch-LIBRETRO_DIRECTORY.patch \ %D%/packages/patches/retroarch-LIBRETRO_DIRECTORY.patch \
%D%/packages/patches/r-mixedpower-r2power.patch \
%D%/packages/patches/rnp-add-version.cmake.patch \ %D%/packages/patches/rnp-add-version.cmake.patch \
%D%/packages/patches/rnp-disable-ruby-rnp-tests.patch \ %D%/packages/patches/rnp-disable-ruby-rnp-tests.patch \
%D%/packages/patches/rnp-unbundle-googletest.patch \ %D%/packages/patches/rnp-unbundle-googletest.patch \
%D%/packages/patches/rocm-comgr-3.1.0-dependencies.patch \ %D%/packages/patches/rocm-comgr-3.1.0-dependencies.patch \
%D%/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch \ %D%/packages/patches/rocm-opencl-runtime-4.3-noclinfo.patch \
%D%/packages/patches/rocm-opencl-runtime-4.3-noopencl.patch \ %D%/packages/patches/rocm-opencl-runtime-4.3-noopencl.patch \
%D%/packages/patches/ruby-hydra-minimal-no-byebug.patch \ %D%/packages/patches/rottlog-direntry.patch \
%D%/packages/patches/ruby-hydra-minimal-no-byebug.patch \
%D%/packages/patches/ruby-anystyle-data-immutable-install.patch \ %D%/packages/patches/ruby-anystyle-data-immutable-install.patch \
%D%/packages/patches/ruby-anystyle-fix-dictionary-populate.patch \ %D%/packages/patches/ruby-anystyle-fix-dictionary-populate.patch \
%D%/packages/patches/ruby-latex-decode-fix-test.patch \ %D%/packages/patches/ruby-latex-decode-fix-test.patch \
%D%/packages/patches/ruby-mustache-1.1.1-fix-race-condition-tests.patch \ %D%/packages/patches/ruby-mustache-1.1.1-fix-race-condition-tests.patch \
%D%/packages/patches/ruby-sanitize-system-libxml.patch \
%D%/packages/patches/rustc-1.54.0-src.patch \ %D%/packages/patches/rustc-1.54.0-src.patch \
%D%/packages/patches/rust-1.64-fix-riscv64-bootstrap.patch \
%D%/packages/patches/rust-adblock-ignore-live-tests.patch \ %D%/packages/patches/rust-adblock-ignore-live-tests.patch \
%D%/packages/patches/i3status-rust-enable-unstable-features.patch \ %D%/packages/patches/i3status-rust-enable-unstable-features.patch \
%D%/packages/patches/rust-ndarray-remove-blas-src-dep.patch \ %D%/packages/patches/rust-ndarray-remove-blas-src-dep.patch \
@ -1797,8 +1820,8 @@ dist_patch_DATA = \
%D%/packages/patches/rust-nettle-disable-vendor.patch \ %D%/packages/patches/rust-nettle-disable-vendor.patch \
%D%/packages/patches/rust-nettle-sys-disable-vendor.patch \ %D%/packages/patches/rust-nettle-sys-disable-vendor.patch \
%D%/packages/patches/rust-openssl-sys-no-vendor.patch \ %D%/packages/patches/rust-openssl-sys-no-vendor.patch \
%D%/packages/patches/rust-shell2batch-lint-fix.patch \
%D%/packages/patches/rust-wl-clipboard-rs-newer-wl.patch \ %D%/packages/patches/rust-wl-clipboard-rs-newer-wl.patch \
%D%/packages/patches/rw-igraph-0.10.patch \
%D%/packages/patches/sbc-fix-build-non-x86.patch \ %D%/packages/patches/sbc-fix-build-non-x86.patch \
%D%/packages/patches/sbcl-aserve-add-HTML-5-elements.patch \ %D%/packages/patches/sbcl-aserve-add-HTML-5-elements.patch \
%D%/packages/patches/sbcl-aserve-fix-rfe12668.patch \ %D%/packages/patches/sbcl-aserve-fix-rfe12668.patch \
@ -1808,8 +1831,6 @@ dist_patch_DATA = \
%D%/packages/patches/scalapack-gcc-10-compilation.patch \ %D%/packages/patches/scalapack-gcc-10-compilation.patch \
%D%/packages/patches/scheme48-tests.patch \ %D%/packages/patches/scheme48-tests.patch \
%D%/packages/patches/scons-test-environment.patch \ %D%/packages/patches/scons-test-environment.patch \
%D%/packages/patches/scotch-build-parallelism.patch \
%D%/packages/patches/scotch-integer-declarations.patch \
%D%/packages/patches/screen-hurd-path-max.patch \ %D%/packages/patches/screen-hurd-path-max.patch \
%D%/packages/patches/sdl-libx11-1.6.patch \ %D%/packages/patches/sdl-libx11-1.6.patch \
%D%/packages/patches/seed-webkit.patch \ %D%/packages/patches/seed-webkit.patch \
@ -1833,9 +1854,10 @@ dist_patch_DATA = \
%D%/packages/patches/snappy-add-O2-flag-in-CmakeLists.txt.patch \ %D%/packages/patches/snappy-add-O2-flag-in-CmakeLists.txt.patch \
%D%/packages/patches/snappy-add-inline-for-GCC.patch \ %D%/packages/patches/snappy-add-inline-for-GCC.patch \
%D%/packages/patches/source-highlight-gcc-compat.patch \ %D%/packages/patches/source-highlight-gcc-compat.patch \
%D%/packages/patches/spectre-meltdown-checker-externalize-fwdb.patch \
%D%/packages/patches/spectre-meltdown-checker-find-kernel.patch \
%D%/packages/patches/sphinxbase-fix-doxygen.patch \ %D%/packages/patches/sphinxbase-fix-doxygen.patch \
%D%/packages/patches/spice-vdagent-glib-2.68.patch \ %D%/packages/patches/spice-vdagent-glib-2.68.patch \
%D%/packages/patches/sssd-optional-systemd.patch \
%D%/packages/patches/sssd-system-directories.patch \ %D%/packages/patches/sssd-system-directories.patch \
%D%/packages/patches/steghide-fixes.patch \ %D%/packages/patches/steghide-fixes.patch \
%D%/packages/patches/suitesparse-mongoose-cmake.patch \ %D%/packages/patches/suitesparse-mongoose-cmake.patch \
@ -1857,7 +1879,6 @@ dist_patch_DATA = \
%D%/packages/patches/tao-fix-parser-types.patch \ %D%/packages/patches/tao-fix-parser-types.patch \
%D%/packages/patches/tar-remove-wholesparse-check.patch \ %D%/packages/patches/tar-remove-wholesparse-check.patch \
%D%/packages/patches/tar-skip-unreliable-tests.patch \ %D%/packages/patches/tar-skip-unreliable-tests.patch \
%D%/packages/patches/tbb-fix-test-on-aarch64.patch \
%D%/packages/patches/tbb-other-arches.patch \ %D%/packages/patches/tbb-other-arches.patch \
%D%/packages/patches/tclxml-3.2-install.patch \ %D%/packages/patches/tclxml-3.2-install.patch \
%D%/packages/patches/tcsh-fix-autotest.patch \ %D%/packages/patches/tcsh-fix-autotest.patch \
@ -1865,13 +1886,14 @@ dist_patch_DATA = \
%D%/packages/patches/tensorflow-c-api-fix.patch \ %D%/packages/patches/tensorflow-c-api-fix.patch \
%D%/packages/patches/texinfo-headings-single.patch \ %D%/packages/patches/texinfo-headings-single.patch \
%D%/packages/patches/texinfo-5-perl-compat.patch \ %D%/packages/patches/texinfo-5-perl-compat.patch \
%D%/packages/patches/telegram-desktop-allow-disable-libtgvoip.patch \
%D%/packages/patches/telegram-purple-adjust-test.patch \ %D%/packages/patches/telegram-purple-adjust-test.patch \
%D%/packages/patches/texi2html-document-encoding.patch \ %D%/packages/patches/texi2html-document-encoding.patch \
%D%/packages/patches/texi2html-i18n.patch \ %D%/packages/patches/texi2html-i18n.patch \
%D%/packages/patches/texlive-hyph-utf8-no-byebug.patch \ %D%/packages/patches/texlive-hyph-utf8-no-byebug.patch \
%D%/packages/patches/thefuck-test-environ.patch \ %D%/packages/patches/thefuck-test-environ.patch \
%D%/packages/patches/tidy-CVE-2015-5522+5523.patch \ %D%/packages/patches/tidy-CVE-2015-5522+5523.patch \
%D%/packages/patches/timescaledb-flaky-test.patch \ %D%/packages/patches/timewarrior-time-sensitive-tests.patch \
%D%/packages/patches/tinyxml-use-stl.patch \ %D%/packages/patches/tinyxml-use-stl.patch \
%D%/packages/patches/tipp10-disable-downloader.patch \ %D%/packages/patches/tipp10-disable-downloader.patch \
%D%/packages/patches/tipp10-fix-compiling.patch \ %D%/packages/patches/tipp10-fix-compiling.patch \
@ -1880,8 +1902,8 @@ dist_patch_DATA = \
%D%/packages/patches/tk-find-library.patch \ %D%/packages/patches/tk-find-library.patch \
%D%/packages/patches/tla2tools-build-xml.patch \ %D%/packages/patches/tla2tools-build-xml.patch \
%D%/packages/patches/tlf-support-hamlib-4.2+.patch \ %D%/packages/patches/tlf-support-hamlib-4.2+.patch \
gnu/packages/patches/tootle-glib-object-naming.patch \ %D%/packages/patches/tootle-glib-object-naming.patch \
gnu/packages/patches/tootle-reason-phrase.patch \ %D%/packages/patches/tootle-reason-phrase.patch \
%D%/packages/patches/transcode-ffmpeg.patch \ %D%/packages/patches/transcode-ffmpeg.patch \
%D%/packages/patches/transfig-gcc10-fno-common.patch \ %D%/packages/patches/transfig-gcc10-fno-common.patch \
%D%/packages/patches/transmission-honor-localedir.patch \ %D%/packages/patches/transmission-honor-localedir.patch \
@ -1894,11 +1916,14 @@ dist_patch_DATA = \
%D%/packages/patches/tuxpaint-stamps-path.patch \ %D%/packages/patches/tuxpaint-stamps-path.patch \
%D%/packages/patches/twinkle-bcg729.patch \ %D%/packages/patches/twinkle-bcg729.patch \
%D%/packages/patches/u-boot-allow-disabling-openssl.patch \ %D%/packages/patches/u-boot-allow-disabling-openssl.patch \
%D%/packages/patches/u-boot-infodocs-target.patch \
%D%/packages/patches/u-boot-patman-guix-integration.patch \
%D%/packages/patches/u-boot-nintendo-nes-serial.patch \ %D%/packages/patches/u-boot-nintendo-nes-serial.patch \
%D%/packages/patches/u-boot-rockchip-inno-usb.patch \ %D%/packages/patches/u-boot-rockchip-inno-usb.patch \
%D%/packages/patches/u-boot-sifive-prevent-reloc-initrd-fdt.patch \ %D%/packages/patches/u-boot-sifive-prevent-reloc-initrd-fdt.patch \
%D%/packages/patches/u-boot-rk3399-enable-emmc-phy.patch \ %D%/packages/patches/u-boot-rk3399-enable-emmc-phy.patch \
%D%/packages/patches/ucx-tcp-iface-ioctl.patch \ %D%/packages/patches/ucx-tcp-iface-ioctl.patch \
%D%/packages/patches/ultrastar-deluxe-no-freesans.patch \
%D%/packages/patches/ungoogled-chromium-extension-search-path.patch \ %D%/packages/patches/ungoogled-chromium-extension-search-path.patch \
%D%/packages/patches/ungoogled-chromium-ffmpeg-compat.patch \ %D%/packages/patches/ungoogled-chromium-ffmpeg-compat.patch \
%D%/packages/patches/ungoogled-chromium-RUNPATH.patch \ %D%/packages/patches/ungoogled-chromium-RUNPATH.patch \
@ -1940,7 +1965,6 @@ dist_patch_DATA = \
%D%/packages/patches/unzip-zipbomb-part2.patch \ %D%/packages/patches/unzip-zipbomb-part2.patch \
%D%/packages/patches/unzip-zipbomb-part3.patch \ %D%/packages/patches/unzip-zipbomb-part3.patch \
%D%/packages/patches/unzip-32bit-zipbomb-fix.patch \ %D%/packages/patches/unzip-32bit-zipbomb-fix.patch \
%D%/packages/patches/upx-CVE-2021-20285.patch \
%D%/packages/patches/ustr-fix-build-with-gcc-5.patch \ %D%/packages/patches/ustr-fix-build-with-gcc-5.patch \
%D%/packages/patches/util-linux-tests.patch \ %D%/packages/patches/util-linux-tests.patch \
%D%/packages/patches/valgrind-enable-arm.patch \ %D%/packages/patches/valgrind-enable-arm.patch \
@ -1955,13 +1979,16 @@ dist_patch_DATA = \
%D%/packages/patches/vsearch-unbundle-cityhash.patch \ %D%/packages/patches/vsearch-unbundle-cityhash.patch \
%D%/packages/patches/vte-CVE-2012-2738-pt1.patch \ %D%/packages/patches/vte-CVE-2012-2738-pt1.patch \
%D%/packages/patches/vte-CVE-2012-2738-pt2.patch \ %D%/packages/patches/vte-CVE-2012-2738-pt2.patch \
%D%/packages/patches/vtk-fix-freetypetools-build-failure.patch \
%D%/packages/patches/vtk-7-gcc-10-compat.patch \ %D%/packages/patches/vtk-7-gcc-10-compat.patch \
%D%/packages/patches/vtk-7-hdf5-compat.patch \ %D%/packages/patches/vtk-7-hdf5-compat.patch \
%D%/packages/patches/vtk-7-python-compat.patch \ %D%/packages/patches/vtk-7-python-compat.patch \
%D%/packages/patches/wacomtablet-add-missing-includes.patch \
%D%/packages/patches/wacomtablet-qt5.15.patch \
%D%/packages/patches/warsow-qfusion-fix-bool-return-type.patch \ %D%/packages/patches/warsow-qfusion-fix-bool-return-type.patch \
%D%/packages/patches/wdl-link-libs-and-fix-jnetlib.patch \
%D%/packages/patches/webkitgtk-adjust-bubblewrap-paths.patch \ %D%/packages/patches/webkitgtk-adjust-bubblewrap-paths.patch \
%D%/packages/patches/webrtc-audio-processing-big-endian.patch \ %D%/packages/patches/webrtc-audio-processing-big-endian.patch \
%D%/packages/patches/webrtc-for-telegram-desktop-fix-gcc12-cstdint.patch \
%D%/packages/patches/websocketpp-fix-for-cmake-3.15.patch \ %D%/packages/patches/websocketpp-fix-for-cmake-3.15.patch \
%D%/packages/patches/widelands-add-missing-map-include.patch \ %D%/packages/patches/widelands-add-missing-map-include.patch \
%D%/packages/patches/widelands-system-wide_minizip.patch \ %D%/packages/patches/widelands-system-wide_minizip.patch \

View file

@ -2,6 +2,7 @@
;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.org> ;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.org>
;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re> ;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
;;; Copyright © 2022 Matthew James Kraai <kraai@ftbfs.org> ;;; Copyright © 2022 Matthew James Kraai <kraai@ftbfs.org>
;;; Copyright © 2022 Ricardo Wurmus <rekado@elephly.net>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -22,6 +23,7 @@
#:use-module (gnu machine ssh) #:use-module (gnu machine ssh)
#:use-module (gnu machine) #:use-module (gnu machine)
#:use-module (gnu services) #:use-module (gnu services)
#:use-module (gnu services base)
#:use-module (gnu services networking) #:use-module (gnu services networking)
#:use-module (gnu system) #:use-module (gnu system)
#:use-module (gnu system pam) #:use-module (gnu system pam)
@ -34,7 +36,9 @@
#:use-module (guix records) #:use-module (guix records)
#:use-module (guix ssh) #:use-module (guix ssh)
#:use-module (guix store) #:use-module (guix store)
#:use-module (ice-9 format)
#:use-module (ice-9 iconv) #:use-module (ice-9 iconv)
#:use-module (ice-9 string-fun)
#:use-module (json) #:use-module (json)
#:use-module (rnrs bytevectors) #:use-module (rnrs bytevectors)
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
@ -188,18 +192,66 @@ an environment type of 'digital-ocean-environment-type'."
;;; System deployment. ;;; System deployment.
;;; ;;;
;; XXX Copied from (gnu services base)
(define* (ip+netmask->cidr ip netmask #:optional (family AF_INET))
"Return the CIDR notation (a string) for @var{ip} and @var{netmask}, two
@var{family} address strings, where @var{family} is @code{AF_INET} or
@code{AF_INET6}."
(let* ((netmask (inet-pton family netmask))
(bits (logcount netmask)))
(string-append ip "/" (number->string bits))))
;; The following script was adapted from the guide available at ;; The following script was adapted from the guide available at
;; <https://wiki.pantherx.org/Installation-digital-ocean/>. ;; <https://wiki.pantherx.org/Installation-digital-ocean/>.
(define (guix-infect network) (define (guix-infect network)
"Given NETWORK, an alist describing the Droplet's public IPv4 network "Given NETWORK, an alist describing the Droplet's public IPv4 network
interface, return a Bash script that will install the Guix system." interface, return a Bash script that will install the Guix system."
(define os
`(operating-system
(host-name "gnu-bootstrap")
(timezone "Etc/UTC")
(bootloader (bootloader-configuration
(bootloader grub-bootloader)
(targets '("/dev/vda"))
(terminal-outputs '(console))))
(file-systems (cons (file-system
(mount-point "/")
(device "/dev/vda1")
(type "ext4"))
%base-file-systems))
(services
(append (list (service static-networking-service-type
(list (static-networking
(addresses
(list (network-address
(device "eth0")
(value ,(ip+netmask->cidr
(assoc-ref network "ip_address")
(assoc-ref network "netmask"))))))
(routes
(list (network-route
(destination "default")
(gateway ,(assoc-ref network "gateway")))))
(name-servers '("84.200.69.80" "84.200.70.40")))))
(simple-service 'guile-load-path-in-global-env
session-environment-service-type
`(("GUILE_LOAD_PATH"
. "/run/current-system/profile/share/guile/site/3.0")
("GUILE_LOAD_COMPILED_PATH"
. ,(string-append "/run/current-system/profile/lib/guile/3.0/site-ccache:"
"/run/current-system/profile/share/guile/site/3.0"))))
(service openssh-service-type
(openssh-configuration
(log-level 'debug)
(permit-root-login 'prohibit-password))))
%base-services))))
(format #f "#!/bin/bash (format #f "#!/bin/bash
apt-get update apt-get update
apt-get install xz-utils -y apt-get install xz-utils -y
wget https://ftp.gnu.org/gnu/guix/guix-binary-1.0.1.x86_64-linux.tar.xz wget -nv https://ci.guix.gnu.org/search/latest/archive?query=spec:tarball+status:success+system:x86_64-linux+guix-binary.tar.xz -O guix-binary-nightly.x86_64-linux.tar.xz
cd /tmp cd /tmp
tar --warning=no-timestamp -xf ~~/guix-binary-1.0.1.x86_64-linux.tar.xz tar --warning=no-timestamp -xf ~~/guix-binary-nightly.x86_64-linux.tar.xz
mv var/guix /var/ && mv gnu / mv var/guix /var/ && mv gnu /
mkdir -p ~~root/.config/guix mkdir -p ~~root/.config/guix
ln -sf /var/guix/profiles/per-user/root/current-guix ~~root/.config/guix/current ln -sf /var/guix/profiles/per-user/root/current-guix ~~root/.config/guix/current
@ -229,37 +281,9 @@ export GUIX_LOCPATH=\"$HOME/.guix-profile/lib/locale\"
guix package -i openssl guix package -i openssl
cat > /etc/bootstrap-config.scm << EOF cat > /etc/bootstrap-config.scm << EOF
(use-modules (gnu)) (use-modules (gnu))
(use-service-modules networking ssh) (use-service-modules base networking ssh)
(operating-system ~a
(host-name \"gnu-bootstrap\")
(timezone \"Etc/UTC\")
(bootloader (bootloader-configuration
(bootloader grub-bootloader)
(targets '(\"/dev/vda\"))
(terminal-outputs '(console))))
(file-systems (cons (file-system
(mount-point \"/\")
(device \"/dev/vda1\")
(type \"ext4\"))
%base-file-systems))
(services
(append (list (static-networking-service \"eth0\" \"~a\"
#:netmask \"~a\"
#:gateway \"~a\"
#:name-servers '(\"84.200.69.80\" \"84.200.70.40\"))
(simple-service 'guile-load-path-in-global-env
session-environment-service-type
\\`((\"GUILE_LOAD_PATH\"
. \"/run/current-system/profile/share/guile/site/2.2\")
(\"GUILE_LOAD_COMPILED_PATH\"
. ,(string-append \"/run/current-system/profile/lib/guile/2.2/site-ccache:\"
\"/run/current-system/profile/share/guile/site/2.2\"))))
(service openssh-service-type
(openssh-configuration
(log-level 'debug)
(permit-root-login 'prohibit-password))))
%base-services)))
EOF EOF
# guix pull # guix pull
guix system build /etc/bootstrap-config.scm guix system build /etc/bootstrap-config.scm
@ -268,9 +292,9 @@ mv /etc /old-etc
mkdir /etc mkdir /etc
cp -r /old-etc/{passwd,group,shadow,gshadow,mtab,guix,bootstrap-config.scm} /etc/ cp -r /old-etc/{passwd,group,shadow,gshadow,mtab,guix,bootstrap-config.scm} /etc/
guix system reconfigure /etc/bootstrap-config.scm" guix system reconfigure /etc/bootstrap-config.scm"
(assoc-ref network "ip_address") ;; Escape the bare backtick to avoid having it interpreted by Bash.
(assoc-ref network "netmask") (string-replace-substring
(assoc-ref network "gateway"))) (format #f "~y" os) "`" "\\`")))
(define (machine-wait-until-available machine) (define (machine-wait-until-available machine)
"Block until the initial Debian image has been installed on the droplet "Block until the initial Debian image has been installed on the droplet
@ -301,18 +325,26 @@ named DROPLET-NAME."
configuration for the public IPv4 network described by the alist NETWORK." configuration for the public IPv4 network described by the alist NETWORK."
(operating-system (operating-system
(inherit (machine-operating-system target)) (inherit (machine-operating-system target))
(services (cons* (static-networking-service "eth0" (services (cons* (service static-networking-service-type
(assoc-ref network "ip_address") (list (static-networking
#:netmask (assoc-ref network "netmask") (addresses
#:gateway (assoc-ref network "gateway") (list (network-address
#:name-servers '("84.200.69.80" "84.200.70.40")) (device "eth0")
(value (ip+netmask->cidr
(assoc-ref network "ip_address")
(assoc-ref network "netmask"))))))
(routes
(list (network-route
(destination "default")
(gateway (assoc-ref network "gateway")))))
(name-servers '("84.200.69.80" "84.200.70.40")))))
(simple-service 'guile-load-path-in-global-env (simple-service 'guile-load-path-in-global-env
session-environment-service-type session-environment-service-type
`(("GUILE_LOAD_PATH" `(("GUILE_LOAD_PATH"
. "/run/current-system/profile/share/guile/site/2.2") . "/run/current-system/profile/share/guile/site/3.0")
("GUILE_LOAD_COMPILED_PATH" ("GUILE_LOAD_COMPILED_PATH"
. ,(string-append "/run/current-system/profile/lib/guile/2.2/site-ccache:" . ,(string-append "/run/current-system/profile/lib/guile/3.0/site-ccache:"
"/run/current-system/profile/share/guile/site/2.2")))) "/run/current-system/profile/share/guile/site/3.0"))))
(operating-system-user-services (operating-system-user-services
(machine-operating-system target)))))) (machine-operating-system target))))))

View file

@ -42,6 +42,7 @@
#:use-module ((guix inferior) #:use-module ((guix inferior)
#:select (inferior-exception? #:select (inferior-exception?
inferior-exception-arguments)) inferior-exception-arguments))
#:use-module ((guix platform) #:select (systems))
#:use-module (gcrypt pk-crypto) #:use-module (gcrypt pk-crypto)
#:use-module (ice-9 format) #:use-module (ice-9 format)
#:use-module (ice-9 match) #:use-module (ice-9 match)
@ -86,7 +87,8 @@
machine-ssh-configuration? machine-ssh-configuration?
this-machine-ssh-configuration this-machine-ssh-configuration
(host-name machine-ssh-configuration-host-name) ; string (host-name machine-ssh-configuration-host-name) ; string
(system machine-ssh-configuration-system) ; string (system machine-ssh-configuration-system ; string
(sanitize validate-system-type))
(build-locally? machine-ssh-configuration-build-locally? ; boolean (build-locally? machine-ssh-configuration-build-locally? ; boolean
(default #t)) (default #t))
(authorize? machine-ssh-configuration-authorize? ; boolean (authorize? machine-ssh-configuration-authorize? ; boolean
@ -109,6 +111,32 @@
(host-key machine-ssh-configuration-host-key ; #f | string (host-key machine-ssh-configuration-host-key ; #f | string
(default #f))) (default #f)))
(define-with-syntax-properties (validate-system-type (value properties))
;; Raise an error if VALUE is not a valid system type.
(unless (string? value)
(raise (make-compound-condition
(condition
(&error-location
(location (source-properties->location properties))))
(formatted-message
(G_ "~a: invalid system type; must be a string")
value))))
(unless (member value (systems))
(raise (apply make-compound-condition
(condition
(&error-location
(location (source-properties->location properties))))
(formatted-message (G_ "~a: unknown system type") value)
(let ((closest (string-closest value (systems)
#:threshold 5)))
(if closest
(list (condition
(&fix-hint
(hint (format #f (G_ "Did you mean @code{~a}?")
closest)))))
'())))))
value)
(define (open-machine-ssh-session config) (define (open-machine-ssh-session config)
"Open an SSH session for CONFIG, a <machine-ssh-configuration> record." "Open an SSH session for CONFIG, a <machine-ssh-configuration> record."
(let ((host-name (machine-ssh-configuration-host-name config)) (let ((host-name (machine-ssh-configuration-host-name config))
@ -466,7 +494,7 @@ environment type of 'managed-host."
(machine-configuration machine)) (machine-configuration machine))
(unless (file-exists? %public-key-file) (unless (file-exists? %public-key-file)
(raise (formatted-message (G_ "no signing key '~a'. \ (raise (formatted-message (G_ "no signing key '~a'. \
have you run 'guix archive --generate-key?'") Have you run 'guix archive --generate-key'?")
%public-key-file))) %public-key-file)))
(remote-authorize-signing-key (call-with-input-file %public-key-file (remote-authorize-signing-key (call-with-input-file %public-key-file
(lambda (port) (lambda (port)

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012-2020, 2022 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2012-2020, 2022-2023 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2013 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2016, 2017 Alex Kost <alezost@gmail.com> ;;; Copyright © 2016, 2017 Alex Kost <alezost@gmail.com>
@ -38,6 +38,7 @@
#:use-module (ice-9 vlist) #:use-module (ice-9 vlist)
#:use-module (ice-9 match) #:use-module (ice-9 match)
#:use-module (ice-9 binary-ports) #:use-module (ice-9 binary-ports)
#:autoload (rnrs bytevectors) (bytevector?)
#:autoload (system base compile) (compile) #:autoload (system base compile) (compile)
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
#:use-module (srfi srfi-26) #:use-module (srfi srfi-26)
@ -442,10 +443,15 @@ reducing the memory footprint."
(lambda (port) (lambda (port)
;; Store the cache as a '.go' file. This makes loading fast and reduces ;; Store the cache as a '.go' file. This makes loading fast and reduces
;; heap usage since some of the static data is directly mmapped. ;; heap usage since some of the static data is directly mmapped.
(put-bytevector port (match (compile `'(,@exp)
(compile `'(,@exp) #:to 'bytecode
#:to 'bytecode #:opts '(#:to-file? #t))
#:opts '(#:to-file? #t))))) ((? bytevector? bv)
(put-bytevector port bv))
(proc
;; In Guile 3.0.9, the linker can return a procedure instead of a
;; bytevector. Adjust to that.
(proc port)))))
cache-file) cache-file)

View file

@ -339,7 +339,7 @@ assistant for graphic designers, who need to select individual pixels.")
(synopsis "Bridge for espeak and speakup") (synopsis "Bridge for espeak and speakup")
(description (description
"Espeakup is a bridge between the speakup driver implemented in "Espeakup is a bridge between the speakup driver implemented in
the Linux kernel and the espeak-ng text to speach synthesizer. the Linux kernel and the espeak-ng text to speech synthesizer.
In order for this package to work, you need to have the following In order for this package to work, you need to have the following
kernel modules built: kernel modules built:
@itemize @bullet @itemize @bullet
@ -348,4 +348,4 @@ CONFIG_SPEAKUP=m
@item @item
CONFIG_SPEAKUP_SOFT=m CONFIG_SPEAKUP_SOFT=m
@end itemize") @end itemize")
(home-page "ttps://github.com/linux-speakup/espeakup"))) (home-page "https://github.com/linux-speakup/espeakup")))

View file

@ -35,7 +35,7 @@
;;; Copyright © 2020, 2021, 2022 Michael Rohleder <mike@rohleder.de> ;;; Copyright © 2020, 2021, 2022 Michael Rohleder <mike@rohleder.de>
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
;;; Copyright © 2020 Morgan Smith <Morgan.J.Smith@outlook.com> ;;; Copyright © 2020 Morgan Smith <Morgan.J.Smith@outlook.com>
;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2021 Zheng Junjie <873216071@qq.com> ;;; Copyright © 2021 Zheng Junjie <873216071@qq.com>
;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at> ;;; Copyright © 2021 Stefan Reichör <stefan@xsteve.at>
;;; Copyright © 2021 qblade <qblade@protonmail.com> ;;; Copyright © 2021 qblade <qblade@protonmail.com>
@ -43,7 +43,6 @@
;;; Copyright © 2021 David Larsson <david.larsson@selfhosted.xyz> ;;; Copyright © 2021 David Larsson <david.larsson@selfhosted.xyz>
;;; Copyright © 2021 WinterHound <winterhound@yandex.com> ;;; Copyright © 2021 WinterHound <winterhound@yandex.com>
;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re> ;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be> ;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
;;; Copyright © 2021 muradm <mail@muradm.net> ;;; Copyright © 2021 muradm <mail@muradm.net>
;;; Copyright © 2021 pineapples <guixuser6392@protonmail.com> ;;; Copyright © 2021 pineapples <guixuser6392@protonmail.com>
@ -51,6 +50,11 @@
;;; Copyright © 2021 Artyom V. Poptsov <poptsov.artyom@gmail.com> ;;; Copyright © 2021 Artyom V. Poptsov <poptsov.artyom@gmail.com>
;;; Copyright © 2022 Wamm K. D. <jaft.r@outlook.com> ;;; Copyright © 2022 Wamm K. D. <jaft.r@outlook.com>
;;; Copyright © 2022 Roman Riabenko <roman@riabenko.com> ;;; Copyright © 2022 Roman Riabenko <roman@riabenko.com>
;;; Copyright © 2022 Petr Hodina <phodina@protonmail.com>
;;; Copyright © 2022 Andreas Rammhold <andreas@rammhold.de>
;;; Copyright © 2022 ( <paren@disroot.org>
;;; Copyright © 2022 Matthew James Kraai <kraai@ftbfs.org>
;;; Copyright © 2022 jgart <jgart@dismail.de>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -97,6 +101,7 @@
#:use-module (gnu packages c) #:use-module (gnu packages c)
#:use-module (gnu packages check) #:use-module (gnu packages check)
#:use-module (gnu packages compression) #:use-module (gnu packages compression)
#:use-module (gnu packages crates-graphics)
#:use-module (gnu packages crates-io) #:use-module (gnu packages crates-io)
#:use-module (gnu packages cross-base) #:use-module (gnu packages cross-base)
#:use-module (gnu packages crypto) #:use-module (gnu packages crypto)
@ -107,6 +112,7 @@
#:use-module (gnu packages elf) #:use-module (gnu packages elf)
#:use-module (gnu packages file) #:use-module (gnu packages file)
#:use-module (gnu packages flex) #:use-module (gnu packages flex)
#:use-module (gnu packages fonts)
#:use-module (gnu packages freedesktop) #:use-module (gnu packages freedesktop)
#:use-module (gnu packages gawk) #:use-module (gnu packages gawk)
#:use-module (gnu packages gettext) #:use-module (gnu packages gettext)
@ -322,25 +328,14 @@ interface and is based on GNU Guile.")
(define-public shepherd-0.9 (define-public shepherd-0.9
(package (package
(inherit shepherd-0.8) (inherit shepherd-0.8)
(version "0.9.2") (version "0.9.3")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://gnu/shepherd/shepherd-" (uri (string-append "mirror://gnu/shepherd/shepherd-"
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"0mcby3ygh3bpns44rb1vnk8bz2km4nlw092nrcgkm3nkqfmbp4p1")) "0qy2yq13xhf05an5ilz7grighdxicx56211yaarqq5qigiiybc32"))))
(modules '((guix build utils)))
(snippet
;; Avoid continuation barriers so (@ (fibers) sleep) can be
;; called from a service's 'stop' method
'(substitute* "modules/shepherd/service.scm"
(("call-with-blocked-asyncs") ;in 'stop' method
"(lambda (thunk) (thunk))")
(("\\(for-each-service\n") ;in 'shutdown-services'
"((lambda (proc)
(for-each proc
(fold-services cons '())))\n")))))
(arguments (arguments
(list #:configure-flags #~'("--localstatedir=/var") (list #:configure-flags #~'("--localstatedir=/var")
#:make-flags #~'("GUILE_AUTO_COMPILE=0") #:make-flags #~'("GUILE_AUTO_COMPILE=0")
@ -360,9 +355,12 @@ interface and is based on GNU Guile.")
(this-package-input "guile-fibers") (this-package-input "guile-fibers")
"/lib/guile/3.0/site-ccache")))))) "/lib/guile/3.0/site-ccache"))))))
#~%standard-phases))) #~%standard-phases)))
(native-inputs (list pkg-config guile-3.0
;; Note: Use 'guile-3.0-latest' to address the continuation-related memory
;; leak reported at <https://issues.guix.gnu.org/58631>.
(native-inputs (list pkg-config guile-3.0-latest
guile-fibers-1.1)) ;for cross-compilation guile-fibers-1.1)) ;for cross-compilation
(inputs (list guile-3.0 guile-fibers-1.1)))) (inputs (list guile-3.0-latest guile-fibers-1.1))))
(define-public shepherd shepherd-0.9) (define-public shepherd shepherd-0.9)
@ -696,6 +694,76 @@ console.")
;; This package uses a modified version of the "ISC License". ;; This package uses a modified version of the "ISC License".
(license (license:non-copyleft "file://LICENSE"))))) (license (license:non-copyleft "file://LICENSE")))))
(define-public btop
(package
(name "btop")
(version "1.2.13")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/aristocratos/btop")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"0aggzlxyfp213rknpbhkn8wbgzcnz181dyh9m2awz72w705axy8p"))))
(build-system gnu-build-system)
(arguments
(list #:tests? #f ;no test suite
#:make-flags #~(list (string-append "PREFIX=" #$output))
#:phases #~(modify-phases %standard-phases
(delete 'configure))))
(home-page "https://github.com/aristocratos/btop")
(synopsis "Resource monitor")
(description "Btop++ provides unified monitoring of CPU, memory, network
and processes.")
(license license:asl2.0)))
(define-public smem
(package
(name "smem")
(version "1.5")
(source (origin
(method url-fetch)
(uri (string-append "https://selenic.com/repo/smem/archive/"
version ".tar.bz2"))
(file-name
(string-append name "-" version ".tar.bz2"))
(sha256
(base32
"19ibv1byxf2b68186ysrgrhy5shkc5mc69abark1h18yigp3j34m"))))
(build-system gnu-build-system)
(arguments
(list #:tests? #f ; There is no test suite.
#:make-flags #~(list "smemcap")
#:phases
#~(modify-phases %standard-phases
(delete 'configure)
(replace 'build
(lambda _
(let* ((system #$(cond ((target-x86?) "X86")
((target-arm?) "ARM")
((target-powerpc?) "POWER")
(else "CROSS_FINGERS"))))
(format #t "Building for ~a~%" system)
(invoke #$(cc-for-target) "-o" "smemcap" "smemcap.c"
"-g" "-Wall" "-D" system))))
(replace 'install
(lambda _
(let ((bin (string-append #$output "/bin"))
(man1 (string-append #$output "/share/man/man8")))
(install-file "smemcap" bin)
(install-file "smem" bin)
(mkdir-p man1)
(copy-file "smem.8" (string-append man1 "/smem.8"))))))))
(native-inputs (list python-minimal-wrapper))
(home-page "https://www.selenic.com/smem/")
(synopsis "Memory reporting tool")
(description
"This package provides a command line tool that can give numerous reports
on memory usage on GNU/Linux systems.")
(license license:gpl2+)))
(define-public htop (define-public htop
(package (package
(name "htop") (name "htop")
@ -1097,7 +1165,7 @@ would need and has several interesting built-in capabilities.")
(define-public netcat-openbsd (define-public netcat-openbsd
(package (package
(name "netcat-openbsd") (name "netcat-openbsd")
(version "1.218-5") (version "1.219-1")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -1106,7 +1174,7 @@ would need and has several interesting built-in capabilities.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"0hpbmz9m2q22a6qgbn9590z2x96xgffim8g0m1v47mariz3pqhlc")))) "1fhrmnbdl6bgsjk02vi78zy9i486mmniymbbbhdkzl8zfjbjkpxc"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:tests? #f ; no test suite `(#:tests? #f ; no test suite
@ -1331,14 +1399,14 @@ connection alive.")
bind-release-version))) bind-release-version)))
(package (package
(name "isc-dhcp") (name "isc-dhcp")
(version "4.4.3") (version "4.4.3-P1")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://ftp.isc.org/isc/dhcp/" (uri (string-append "https://ftp.isc.org/isc/dhcp/"
version "/dhcp-" version ".tar.gz")) version "/dhcp-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"062q2g8cj2zv0zv22x6pg21m21bdlscxkg3li0ac0pm0qasccghf")))) "1ivkvhhvqxap6c51cli7pa6xn76ngxri1zbl45ishz4ranxidi0a"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:parallel-build? #f `(#:parallel-build? #f
@ -1432,6 +1500,7 @@ connection alive.")
(libexec (string-append out "/libexec")) (libexec (string-append out "/libexec"))
(coreutils (assoc-ref inputs "coreutils*")) (coreutils (assoc-ref inputs "coreutils*"))
(inetutils (assoc-ref inputs "inetutils")) (inetutils (assoc-ref inputs "inetutils"))
(grep (assoc-ref inputs "grep*"))
(net-tools (assoc-ref inputs "net-tools")) (net-tools (assoc-ref inputs "net-tools"))
(sed (assoc-ref inputs "sed*"))) (sed (assoc-ref inputs "sed*")))
(substitute* "client/scripts/linux" (substitute* "client/scripts/linux"
@ -1448,7 +1517,7 @@ connection alive.")
,(map (lambda (dir) ,(map (lambda (dir)
(string-append dir "/bin:" (string-append dir "/bin:"
dir "/sbin")) dir "/sbin"))
(list inetutils net-tools coreutils sed)))))))))) (list inetutils net-tools coreutils grep sed))))))))))
(native-inputs (native-inputs
(list config perl file)) (list config perl file))
@ -1472,6 +1541,7 @@ connection alive.")
"1zsszgxs9043dfpxb6xs1iwk9jg7nxkl5pbawj8dlshnxkkzp3hd")))) "1zsszgxs9043dfpxb6xs1iwk9jg7nxkl5pbawj8dlshnxkkzp3hd"))))
("coreutils*" ,coreutils) ("coreutils*" ,coreutils)
("grep*" ,grep)
("sed*" ,sed))) ("sed*" ,sed)))
(home-page "https://www.isc.org/dhcp/") (home-page "https://www.isc.org/dhcp/")
@ -1479,7 +1549,10 @@ connection alive.")
(description (description
"ISC's Dynamic Host Configuration Protocol (DHCP) distribution provides a "ISC's Dynamic Host Configuration Protocol (DHCP) distribution provides a
reference implementation of all aspects of DHCP, through a suite of DHCP reference implementation of all aspects of DHCP, through a suite of DHCP
tools: server, client, and relay agent.") tools: server, client, and relay agent.
This software is @emph{end-of-life}! ISC does not intend to issue any further
maintenance releases.")
(license license:mpl2.0) (license license:mpl2.0)
(properties '((cpe-name . "dhcp")))))) (properties '((cpe-name . "dhcp"))))))
@ -1515,6 +1588,39 @@ periodically and when requested by a node sending a Router Solicitation
message. These messages are required for IPv6 stateless autoconfiguration.") message. These messages are required for IPv6 stateless autoconfiguration.")
(license (license:non-copyleft "file://COPYRIGHT")))) (license (license:non-copyleft "file://COPYRIGHT"))))
(define-public ndppd
(package
(name "ndppd")
(version "0.2.5")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/DanielAdolfsson/ndppd")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "0niri5q9qyyyw5lmjpxk19pv3v4srjvmvyd5k6ks99mvqczjx9c0"))))
(build-system gnu-build-system)
(arguments
(list #:tests? #f ; There are no tests
#:make-flags #~(list (string-append "PREFIX=" #$output))
#:phases
#~(modify-phases %standard-phases
(delete 'configure)
(add-after 'unpack 'fix-paths
(lambda _
(substitute* "Makefile"
(("/bin/gzip") "gzip")))))))
(synopsis "NDP Proxy Daemon")
(description
"The Neighbor Discovery Protocol Proxy Daemon (ndppd) proxies some IPv6
NDP messages between interfaces to allow IPv6 routing between machines that
are in the same network but not on the same local link. It currently only
supports Neighbor Solicitation and Neighbor Advertisement messages.")
(home-page "https://github.com/DanielAdolfsson/ndppd")
(license license:gpl3+)))
(define-public libpcap (define-public libpcap
(package (package
(name "libpcap") (name "libpcap")
@ -1689,7 +1795,7 @@ over ssh connections.")
(define-public realmd (define-public realmd
(package (package
(name "realmd") (name "realmd")
(version "0.17.0") (version "0.17.1")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -1698,8 +1804,7 @@ over ssh connections.")
(commit version))) (commit version)))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32 "063cf4jkpfj548a7dxmffrpbh3j413nq3zy1zzj20lcfffnnaqwn"))))
"1c6q2a86kk2f1akzc36nh52hfwsmmc0mbp6ayyjxj4zsyk9zx5bf"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:configure-flags '("--with-systemd-unit-dir=no" `(#:configure-flags '("--with-systemd-unit-dir=no"
@ -1784,66 +1889,61 @@ at once based on a Perl regular expression.")
(base32 (base32
"0751mb9l2f0jrk3vj6q8ilanifd121dliwk0c34g8k0dlzsv3kd7")) "0751mb9l2f0jrk3vj6q8ilanifd121dliwk0c34g8k0dlzsv3kd7"))
(modules '((guix build utils))) (modules '((guix build utils)))
(patches (search-patches "rottlog-direntry.patch"))
(snippet (snippet
'(begin '(begin
(substitute* "Makefile.in" ;; Delete outdated Autotools build system files.
(("-o \\$\\{LOG_OWN\\} -g \\$\\{LOG_GROUP\\}") (for-each delete-file
;; Don't try to chown root. (list "Makefile.in"
"") "config.guess"
"config.sub"
"configure"
"depcomp"
"install-sh"
"mdate-sh"
"missing"
"mkinstalldirs"
"texinfo.tex"))
(substitute* "Makefile.am"
(("mkdir -p \\$\\(ROTT_STATDIR\\)") (("mkdir -p \\$\\(ROTT_STATDIR\\)")
;; Don't attempt to create /var/lib/rottlog. ;; Don't attempt to create /var/lib/rottlog.
"true")) "true"))))))
#t))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:configure-flags (list "ROTT_ETCDIR=/etc/rottlog" ;rc file location (list
"--localstatedir=/var") #:configure-flags #~(list "ROTT_ETCDIR=/etc/rottlog" ;rc file location
"--localstatedir=/var")
;; Install example config files in OUT/etc. ;; Install example config files in OUT/etc.
#:make-flags (list (string-append "ROTT_ETCDIR=" #:make-flags #~(list (string-append "ROTT_ETCDIR=" #$output "/etc")
(assoc-ref %outputs "out") ;; Avoid the default -o root -g root arguments,
"/etc")) ;; which fail due to not running as root.
"INSTALL_RC=install"
#:phases (modify-phases %standard-phases "INSTALL_SCRIPT=install")
(add-after 'unpack 'patch-paths #:phases
(lambda* (#:key inputs #:allow-other-keys) #~(modify-phases %standard-phases
(substitute* "rc/rc" (add-after 'unpack 'patch-paths
(("/usr/sbin/sendmail") (lambda* (#:key inputs #:allow-other-keys)
(search-input-file inputs "/bin/mail"))) (substitute* "rc/rc"
#t)) (("/usr/sbin/sendmail")
(add-after 'unpack 'fix-configure (search-input-file inputs "/bin/mail")))))
(lambda* (#:key inputs native-inputs #:allow-other-keys) (add-after 'build 'set-packdir
;; Replace outdated config.sub and config.guess: (lambda _
(for-each (lambda (file) ;; Set a default location for archived logs.
(install-file (substitute* "rc/rc"
(string-append (("packdir=\"\"")
(assoc-ref "packdir=\"/var/log\""))))
(or native-inputs inputs) "automake") (add-before 'install 'tweak-rc-weekly
"/share/automake-" (lambda* (#:key inputs #:allow-other-keys)
,(version-major+minor (substitute* "rc/weekly"
(package-version automake)) (("/bin/kill")
"/" file) ".")) (search-input-file inputs "/bin/kill"))
'("config.sub" "config.guess")) (("syslogd\\.pid")
#t)) ;; The file is called 'syslog.pid' (no 'd').
(add-after 'build 'set-packdir "syslog.pid"))))
(lambda _ (add-after 'install 'install-info
;; Set a default location for archived logs. (lambda _
(substitute* "rc/rc" (invoke "make" "install-info"))))))
(("packdir=\"\"") (native-inputs (list autoconf automake texinfo util-linux)) ; for 'cal'
"packdir=\"/var/log\""))
#t))
(add-before 'install 'tweak-rc-weekly
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "rc/weekly"
(("/bin/kill")
(search-input-file inputs "/bin/kill"))
(("syslogd\\.pid")
;; The file is called 'syslog.pid' (no 'd').
"syslog.pid"))))
(add-after 'install 'install-info
(lambda _
(invoke "make" "install-info"))))))
(native-inputs (list texinfo automake util-linux)) ; for 'cal'
(inputs (list coreutils mailutils)) (inputs (list coreutils mailutils))
(home-page "https://www.gnu.org/software/rottlog/") (home-page "https://www.gnu.org/software/rottlog/")
(synopsis "Log rotation and management") (synopsis "Log rotation and management")
@ -1858,7 +1958,7 @@ system administrator.")
(define-public sudo (define-public sudo
(package (package
(name "sudo") (name "sudo")
(version "1.9.11p3") (version "1.9.12p2")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (uri
@ -1868,7 +1968,7 @@ system administrator.")
version ".tar.gz"))) version ".tar.gz")))
(sha256 (sha256
(base32 (base32
"0w0z9w4vnhjsc4jjghi6wlyv4v055hsy38ncb67p08b7yp9fg1s6")) "0fc55axh2hfd8hn66dpmyrrgb0gf0nz71zpaygkrpp8x1ypb385r"))
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet (snippet
'(begin '(begin
@ -2115,14 +2215,16 @@ command.")
(substitute-keyword-arguments (package-arguments wpa-supplicant-minimal) (substitute-keyword-arguments (package-arguments wpa-supplicant-minimal)
((#:phases phases) ((#:phases phases)
`(modify-phases ,phases `(modify-phases ,phases
(add-after 'configure 'configure-for-dbus (add-after 'configure 'set-config-options
(lambda _ (lambda _
(let ((port (open-file ".config" "al"))) (let ((port (open-file ".config" "al")))
;; Enable Opportunistic Wireless Encryption (OWE) and D-Bus
;; support.
(display " (display "
CONFIG_OWE=y
CONFIG_CTRL_IFACE_DBUS_NEW=y CONFIG_CTRL_IFACE_DBUS_NEW=y
CONFIG_CTRL_IFACE_DBUS_INTRO=y\n" port) CONFIG_CTRL_IFACE_DBUS_INTRO=y\n" port)
(close-port port)) (close-port port))))
#t))
(add-after 'install-documentation 'install-dbus-conf (add-after 'install-documentation 'install-dbus-conf
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref outputs "out")) (let* ((out (assoc-ref outputs "out"))
@ -2496,14 +2598,14 @@ characters can be replaced as well, as can UTF-8 characters.")
(define-public tree (define-public tree
(package (package
(name "tree") (name "tree")
(version "2.0.4") (version "2.1.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
"https://mama.indstate.edu/users/ice/tree/src/tree-" "https://mama.indstate.edu/users/ice/tree/src/tree-"
version ".tgz")) version ".tgz"))
(sha256 (sha256
(base32 "0x7s9wxvf83fw4qah16kapswl2277pybw3d514zrlms9g0cr5smh")))) (base32 "1xmbxgx72w7ddjlqsx1yys076hp3h7ll968bhdmdrc7jpwswaq01"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
(list (list
@ -2762,7 +2864,7 @@ sys.argv[0] = re.sub(r'\\.([^/]*)-real$', r'\\1', sys.argv[0])
(list openssh (list openssh
openssl openssl
python-mock python-mock
python-pycrypto python-pycryptodome
python-pytest python-pytest
python-pytest-forked python-pytest-forked
python-pytest-mock python-pytest-mock
@ -3170,13 +3272,13 @@ platform-specific methods.")
(package (package
(name "audit") (name "audit")
(home-page "https://people.redhat.com/sgrubb/audit/") (home-page "https://people.redhat.com/sgrubb/audit/")
(version "3.0.8") (version "3.0.9")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append home-page "audit-" version ".tar.gz")) (uri (string-append home-page "audit-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"04w9m9ffvi58z11i344wa1hji9ba68cdklrkizhiwf39mnwxkx5m")))) "0y5w8pl91xapi49ih1pw7h48lac201cj7fm89hkklmzi9m2715gx"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:configure-flags (list "--with-python=no" `(#:configure-flags (list "--with-python=no"
@ -3336,7 +3438,7 @@ throughput (in the same interval).")
(define-public thefuck (define-public thefuck
(package (package
(name "thefuck") (name "thefuck")
(version "3.31") (version "3.32")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -3345,7 +3447,7 @@ throughput (in the same interval).")
(commit version))) (commit version)))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 "05h60gxky57nalc2hdkpg8wqyg16432x9gcb9wnwblplk98998kq")) (base32 "18ipa1bm6q1n5drbi8i65726hhqhl1g41390lfqrc11hkbvv443d"))
(patches (search-patches "thefuck-test-environ.patch")))) (patches (search-patches "thefuck-test-environ.patch"))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
@ -3809,13 +3911,13 @@ you are running, what theme or icon set you are using, etc.")
(define-public hyfetch (define-public hyfetch
(package (package
(name "hyfetch") (name "hyfetch")
(version "1.4.1") (version "1.4.4")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri "HyFetch" version)) (uri (pypi-uri "HyFetch" version))
(sha256 (sha256
(base32 "18s8r63aqyah34vbahccgkiqw4008i2w5kvhqd9s8bdd4yvsrn4n")))) (base32 "1k3pcl16y2czkk7wd79yk0w1kqpi4fp8h8szhjs5ywwy20nqmms8"))))
(build-system python-build-system) (build-system python-build-system)
(inputs (list python-hypy-utils python-typing-extensions)) (inputs (list python-hypy-utils python-typing-extensions))
(arguments `(#:phases (modify-phases %standard-phases (arguments `(#:phases (modify-phases %standard-phases
@ -3975,14 +4077,14 @@ information tool.")
(define-public nnn (define-public nnn
(package (package
(name "nnn") (name "nnn")
(version "4.6") (version "4.7")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://github.com/jarun/nnn/releases/download/v" (uri (string-append "https://github.com/jarun/nnn/releases/download/v"
version "/nnn-v" version ".tar.gz")) version "/nnn-v" version ".tar.gz"))
(sha256 (sha256
(base32 "0gvyvynw957yirvc1aj65flzni7niaj5bvyk82ka5dfgi2dazb0m")))) (base32 "0dbm54m3iv8hzar38dsfxh77z4mlpjj649ga82s0wwms4vlrm5pg"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
(list ncurses readline)) (list ncurses readline))
@ -4010,7 +4112,7 @@ hard-coded.")
(define-public thermald (define-public thermald
(package (package
(name "thermald") (name "thermald")
(version "2.4.7") (version "2.5.1")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -4019,7 +4121,7 @@ hard-coded.")
(commit (string-append "v" version)))) (commit (string-append "v" version))))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 "1n0ih86bkm09bzhjl7hllxkl4gzcxvzsznbwi8dx87ragsjlix6n")))) (base32 "06p1154w3n4lm0nq8fdsr6ksxl8shrc9z8yz0sbviss9afpawxcg"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:configure-flags `(#:configure-flags
@ -4199,7 +4301,7 @@ Python loading in HPC environments.")
(let ((real-name "inxi")) (let ((real-name "inxi"))
(package (package
(name "inxi-minimal") (name "inxi-minimal")
(version "3.3.20-1") (version "3.3.24-1")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -4208,12 +4310,12 @@ Python loading in HPC environments.")
(commit version))) (commit version)))
(file-name (git-file-name real-name version)) (file-name (git-file-name real-name version))
(sha256 (sha256
(base32 "182lczpa217gpzn58nfdzjbbinp3bw9lbm1x9lck1mkdmqklgl2a")))) (base32 "1nai43251r791qvc1c4hhvcaa6hq7zcjlww7k3ip7br6zgxqjaxm"))))
(build-system trivial-build-system) (build-system trivial-build-system)
(inputs (inputs
`(("bash" ,bash-minimal) (list bash-minimal
("perl" ,perl) perl
("procps" ,procps))) procps))
(native-inputs (native-inputs
(list gzip)) (list gzip))
(arguments (arguments
@ -4223,10 +4325,14 @@ Python loading in HPC environments.")
(use-modules (guix build utils) (use-modules (guix build utils)
(ice-9 match) (ice-9 match)
(srfi srfi-26)) (srfi srfi-26))
(setenv "PATH" (string-append (setenv "PATH" (string-join
(assoc-ref %build-inputs "bash") "/bin" ":" (map (lambda (file)
(assoc-ref %build-inputs "gzip") "/bin" ":" (dirname (search-input-file %build-inputs
(assoc-ref %build-inputs "perl") "/bin" ":")) file)))
(list "bin/bash"
"bin/gzip"
"bin/perl"))
":"))
(copy-recursively (assoc-ref %build-inputs "source") (copy-recursively (assoc-ref %build-inputs "source")
,(string-append real-name "-" version)) ,(string-append real-name "-" version))
(with-directory-excursion ,(string-append real-name "-" version) (with-directory-excursion ,(string-append real-name "-" version)
@ -4562,52 +4668,54 @@ tcpdump and snoop.")
(sha256 (sha256
(base32 "0832nh2qf9pisgwnbgx6hkylx5d7i416l19y3ly4ifv7k1p7mxqa")))) (base32 "0832nh2qf9pisgwnbgx6hkylx5d7i416l19y3ly4ifv7k1p7mxqa"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments
(list
#:configure-flags
#~(list (string-append "--with-slibdir=" #$output "/lib")
(string-append "--with-ssbindir=" #$output "/sbin"))
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'patch-file-names
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(substitute* "src/mtcrypt.c"
(("\"(mount|umount)\";" _ command)
(format #f "\"~a\";"
(search-input-file inputs
(string-append "bin/" command))))
(("\"(fsck)\"," _ command)
(format #f "\"~a\","
(search-input-file inputs
(string-append "sbin/" command)))))
(substitute* "src/rdconf1.c"
(("\"(mount|umount)\", \"" _ command)
(format #f "\"~a\", \""
(search-input-file inputs
(string-append "bin/" command))))
(("\"(fsck)\", \"" _ command)
(format #f "\"~a\", \""
(search-input-file inputs
(string-append "sbin/" command))))
(("\"pmvarrun\", \"")
(format #f "\"~a/sbin/pmvarrun\", \"" out)))))))))
(native-inputs (native-inputs
(list perl pkg-config)) (list perl pkg-config))
(inputs (inputs
`(("cryptsetup" ,cryptsetup) (list cryptsetup
("libhx" ,libhx) libhx
("libxml2" ,libxml2) libxml2
("linux-pam" ,linux-pam) linux-pam
("lvm2" ,lvm2) lvm2
("openssl" ,openssl) openssl
("pcre2" ,pcre2) pcre2
("libmount" ,util-linux "lib") `(,util-linux "lib")
("util-linux" ,util-linux))) util-linux))
(arguments (home-page "https://inai.de/projects/pam_mount/")
`(#:configure-flags
(list (string-append "--with-slibdir=" %output "/lib")
(string-append "--with-ssbindir=" %output "/sbin"))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'fix-program-paths
(lambda* (#:key inputs outputs #:allow-other-keys)
(let ((util-linux (assoc-ref inputs "util-linux"))
(out (assoc-ref outputs "out")))
(substitute* "src/mtcrypt.c"
(("\"mount\";")
(string-append "\"" util-linux "/bin/mount\";"))
(("\"umount\";")
(string-append "\"" util-linux "/bin/umount\";"))
(("\"fsck\",")
(string-append "\"" util-linux "/sbin/fsck\",")))
(substitute* "src/rdconf1.c"
(("\"mount\", \"")
(string-append "\"" util-linux "/bin/mount\", \""))
(("\"umount\", \"")
(string-append "\"" util-linux "/bin/umount\", \""))
(("\"fsck\", \"")
(string-append "\"" util-linux "/sbin/fsck\", \""))
(("\"pmvarrun\", \"")
(string-append "\"" out "/sbin/pmvarrun\", \""))))
#t)))))
(home-page "http://pam-mount.sourceforge.net")
(synopsis "PAM module to mount volumes for a user session") (synopsis "PAM module to mount volumes for a user session")
(description (description
"Pam-mount is a PAM module that can mount volumes when a user logs in. "Pam-mount is a PAM module to mount volumes when a user logs in.
It supports mounting local filesystems of any kind the normal mount utility It can mount all local file systems supported by @command{mount}, as well as
supports. It can also mount encrypted LUKS volumes using the password LUKS volumes encrypted with the user's log-in password.")
supplied by the user when logging in.")
(license (list license:gpl2+ license:lgpl2.1+)))) (license (list license:gpl2+ license:lgpl2.1+))))
(define-public jc (define-public jc
@ -4741,7 +4849,7 @@ entries, providing commands to add, remove, comment, and search.")
(define-public nmrpflash (define-public nmrpflash
(package (package
(name "nmrpflash") (name "nmrpflash")
(version "0.9.16") (version "0.9.19")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -4750,7 +4858,7 @@ entries, providing commands to add, remove, comment, and search.")
(url "https://github.com/jclehner/nmrpflash") (url "https://github.com/jclehner/nmrpflash")
(commit (string-append "v" version)))) (commit (string-append "v" version))))
(sha256 (sha256
(base32 "0gp66l3a2wznjnlc2ljs8g38mfrf1b9a0qcfxqg2bczmfxnrsynj")) (base32 "02r2z3mnbj8dfka7adw1l76zq1jh1l13mmkns93c54ychs44jz3d"))
(file-name (git-file-name name version)))) (file-name (git-file-name name version))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (native-inputs
@ -4769,7 +4877,7 @@ entries, providing commands to add, remove, comment, and search.")
(lambda* (#:key outputs #:allow-other-keys) (lambda* (#:key outputs #:allow-other-keys)
(mkdir-p (string-append (assoc-ref outputs "out") "/bin"))))))) (mkdir-p (string-append (assoc-ref outputs "out") "/bin")))))))
(home-page "https://github.com/jclehner/nmrpflash") (home-page "https://github.com/jclehner/nmrpflash")
(synopsis "Netgear unbrick utility") (synopsis "Reflash (``unbrick'') Netgear devices with corrupted firmware")
(description "This package provides a utility to flash a new firmware (description "This package provides a utility to flash a new firmware
image to a Netgear device. It has been tested on Netgear EX2700, EX6120, image to a Netgear device. It has been tested on Netgear EX2700, EX6120,
EX6150v2, DNG3700v2, R6100, R6220, R7000, D7000, WNR3500, R6400, R6800, EX6150v2, DNG3700v2, R6100, R6220, R7000, D7000, WNR3500, R6400, R6800,
@ -5143,7 +5251,7 @@ it won't take longer to install 15 machines than it would to install just 2.")
(native-inputs (native-inputs
`(("linux-pam" ,linux-pam) `(("linux-pam" ,linux-pam)
("scdoc" ,scdoc))) ("scdoc" ,scdoc)))
(synopsis "minimal and flexible login manager daemon") (synopsis "Minimal and flexible login manager daemon")
(description (description
"greetd is a minimal and flexible login manager daemon "greetd is a minimal and flexible login manager daemon
that makes no assumptions about what you want to launch. that makes no assumptions about what you want to launch.
@ -5171,20 +5279,86 @@ then it can be a greeter.")
"#define CONFIGFILE \"/etc/security/greetd_pam_mount.conf.xml\"\n") "#define CONFIGFILE \"/etc/security/greetd_pam_mount.conf.xml\"\n")
(("pam_mount_config") "greetd_pam_mount_config") (("pam_mount_config") "greetd_pam_mount_config")
(("pam_mount_system_authtok") "greetd_pam_mount_system_authtok")))))))) (("pam_mount_system_authtok") "greetd_pam_mount_system_authtok"))))))))
(synopsis "pam-mount specifically compiled for use with greetd") (synopsis "PAM module to mount volumes for a user session (greetd variant)")
(description (description
"Pam-mount is a PAM module that can mount volumes when a user logs in. "Pam-mount is a PAM module to mount volumes when a user logs in.
It supports mounting local filesystems of any kind the normal mount utility It can mount all local file systems supported by @command{mount}, as well as
supports. It can also mount encrypted LUKS volumes using the password LUKS volumes encrypted with the user's log-in password.
supplied by the user when logging in.
This package inherits pam-mount in the way that it is compiled specifically This package inherits pam-mount but is compiled specifically for use with
for use with greetd daemon. It uses different configuration location and the @command{greetd} log-in manager. It uses a different configuration
name space for storing data in PAM. location and PAM name space from the original.
greetd-pam-mount is used in configuration of greetd to provide This allows greetd-pam-mount to auto-(un)mount @env{XDG_RUNTIME_DIR} without
auto-(mounting/unmounting) of XDG_RUNTIME_DIR in the way that it will not interfering with any pam-mount configuration.")))
interfere with default pam-mount configuration.")))
(define-public wlgreet
(package
(name "wlgreet")
(version "0.4")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://git.sr.ht/~kennylevinsen/wlgreet")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"00grp63n9nrgqls3knxfv9wjbc7p0jwr7i2vzxy750dz85gi2kzn"))))
(build-system cargo-build-system)
(arguments
(list #:cargo-inputs
`(("rust-chrono" ,rust-chrono-0.4)
("rust-getopts" ,rust-getopts-0.2)
("rust-greetd-ipc" ,rust-greetd-ipc-0.8)
("rust-lazy-static" ,rust-lazy-static-1)
("rust-memmap2" ,rust-memmap2-0.3)
("rust-nix" ,rust-nix-0.15)
("rust-os-pipe" ,rust-os-pipe-0.8)
("rust-rusttype" ,rust-rusttype-0.7)
("rust-serde" ,rust-serde-1)
("rust-smithay-client-toolkit"
,rust-smithay-client-toolkit-0.15)
("rust-toml" ,rust-toml-0.5)
("rust-wayland-client" ,rust-wayland-client-0.29)
("rust-wayland-protocols" ,rust-wayland-protocols-0.29)
("rust-xml-rs" ,rust-xml-rs-0.8))
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'remove-bundled-fonts
(lambda _
(delete-file-recursively "fonts")))
(add-after 'remove-bundled-fonts 'fix-font-references
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "src/draw.rs"
(("\\.\\./fonts/dejavu/DejaVuSansMono\\.ttf" _)
(search-input-file
inputs
"share/fonts/truetype/DejaVuSansMono.ttf"))
(("\\.\\./fonts/Roboto-Regular\\.ttf" _)
(search-input-file
inputs
"share/fonts/truetype/Roboto-Regular.ttf")))))
(add-after 'configure 'fix-library-references
(lambda* (#:key inputs vendor-dir #:allow-other-keys)
(substitute* (find-files vendor-dir "\\.rs$")
(("lib(wayland-.*|xkbcommon)\\.so" so-file)
(search-input-file
inputs
(string-append "lib/" so-file)))))))))
(inputs
(list font-dejavu
font-google-roboto
libxkbcommon
wayland))
(home-page "https://git.sr.ht/~kennylevinsen/wlgreet")
(synopsis "Bare-bones Wayland-based greeter for @command{greetd}")
(description
"@command{wlgreet} provides a @command{greetd} greeter
that runs on a Wayland compositor such as @command{sway}. It
is implemented with pure Wayland APIs, so it does not depend
on a GUI toolkit.")
(license license:gpl3)))
(define-public libseat (define-public libseat
(package (package
@ -5487,3 +5661,89 @@ mechanisms if you really want to protect services.")
several hosts in succession or in parallel. It can also be used to copy a several hosts in succession or in parallel. It can also be used to copy a
file or files to several hosts.") file or files to several hosts.")
(license license:gpl3+))) (license license:gpl3+)))
(define-public doctl
(package
(name "doctl")
(version "1.92.0")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/digitalocean/doctl")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"0n8xajr9s0y7a43is24q0f9nznmr2sjhlhgg9fpyx4s4nr3s5yqw"))))
(build-system go-build-system)
(arguments
(list #:import-path "github.com/digitalocean/doctl/cmd/doctl"
#:unpack-path "github.com/digitalocean/doctl"
#:go go-1.19
#:build-flags
#~(list (string-append "-ldflags=-X github.com/digitalocean/doctl.Label=release"
" -X github.com/digitalocean/doctl.Major="
(car (string-split #$version #\.))
" -X github.com/digitalocean/doctl.Minor="
(cadr (string-split #$version #\.))
" -X github.com/digitalocean/doctl.Patch="
(caddr (string-split #$version #\.))))
#:install-source? #f
#:phases
#~(modify-phases %standard-phases
(add-after 'install 'install-completions
(lambda _
(define (install-completion shell file)
(let ((file (string-append #$output file)))
(mkdir-p (dirname file))
(with-output-to-file file
(lambda _
(invoke (string-append #$output "/bin/doctl")
"completion" shell)))))
(install-completion "bash" "/etc/bash_completion.d/doctl")
(install-completion "fish"
"/etc/fish/completions/doctl.fish")
(install-completion "zsh"
"/etc/zsh/site-functions/_doctl"))))))
(home-page "https://github.com/digitalocean/doctl")
(synopsis "Command line client for DigitalOcean")
(description
"@code{doctl} provides a unified command line interface to the DigitalOcean API.")
(license license:asl2.0)))
(define-public du-dust
(package
(name "du-dust")
(version "0.8.3")
(source (origin
(method url-fetch)
(uri (crate-uri "du-dust" version))
(file-name (string-append name "-" version ".tar.gz"))
(sha256
(base32
"1daif13rdd7wb8m5fbp6zif5b8znqcvmkxrjpp2w2famsp36sahx"))))
(build-system cargo-build-system)
(arguments
`(#:cargo-inputs (("rust-ansi-term" ,rust-ansi-term-0.12)
("rust-clap" ,rust-clap-3)
("rust-clap" ,rust-clap-3)
("rust-clap-complete" ,rust-clap-complete-3)
("rust-config-file" ,rust-config-file-0.2)
("rust-directories" ,rust-directories-4)
("rust-lscolors" ,rust-lscolors-0.7)
("rust-rayon" ,rust-rayon-1)
("rust-regex" ,rust-regex-1)
("rust-serde" ,rust-serde-1)
("rust-stfu8" ,rust-stfu8-0.2)
("rust-sysinfo" ,rust-sysinfo-0.15)
("rust-terminal-size" ,rust-terminal-size-0.1)
("rust-thousands" ,rust-thousands-0.2)
("rust-unicode-width" ,rust-unicode-width-0.1)
("rust-winapi-util" ,rust-winapi-util-0.1))
#:cargo-development-inputs (("rust-assert-cmd" ,rust-assert-cmd-1)
("rust-tempfile" ,rust-tempfile-3))))
(home-page "https://github.com/bootandy/dust")
(synopsis "Graphical disk usage analyzer")
(description "This package provides a graphical disk usage analyzer in
text mode.")
(license license:asl2.0)))

View file

@ -64,8 +64,7 @@
(base32 (base32
"1yl2cpaqiv1g4nq9v0xfj1vd5faz55k4541vz6hsffvcxgn9nmc5")))) "1yl2cpaqiv1g4nq9v0xfj1vd5faz55k4541vz6hsffvcxgn9nmc5"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(native-inputs (native-inputs (list fmt-8 googletest))
(list fmt googletest))
(synopsis "C++ port of ZXing") (synopsis "C++ port of ZXing")
(description "ZXing-CPP is a barcode scanning library.") (description "ZXing-CPP is a barcode scanning library.")
(home-page "https://github.com/nu-book/zxing-cpp") (home-page "https://github.com/nu-book/zxing-cpp")

View file

@ -1,7 +1,7 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2022 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2022 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2013, 2015, 2017, 2018, 2021 Ludovic Courtès <ludo@gnu.org> ;;; Copyright © 2013, 2015, 2017, 2018, 2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016-2022 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; Copyright © 2016-2023 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2014, 2018 Mark H Weaver <mhw@netris.org> ;;; Copyright © 2014, 2018 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2016, 2018, 2019, 2021 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2016, 2018, 2019, 2021 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2017, 2020-2022 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2017, 2020-2022 Efraim Flashner <efraim@flashner.co.il>
@ -14,6 +14,7 @@
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com> ;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
;;; Copyright © 2020, 2021 Vinicius Monego <monego@posteo.net> ;;; Copyright © 2020, 2021 Vinicius Monego <monego@posteo.net>
;;; Copyright © 2021 Lars-Dominik Braun <ldb@leibniz-psychology.org> ;;; Copyright © 2021 Lars-Dominik Braun <ldb@leibniz-psychology.org>
;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -106,24 +107,26 @@ multiplication routines such as ToomCook and the FFT.")
(define-public gf2x (define-public gf2x
(package (package
(name "gf2x") (name "gf2x")
(version "1.2") (version "1.3.0")
(source (origin (source (origin
(method url-fetch) (method git-fetch)
(uri (string-append (uri (git-reference
"https://gforge.inria.fr/frs/download.php/file/36934/gf2x-" (url "https://gitlab.inria.fr/gf2x/gf2x")
version ".tar.gz")) (commit (string-append name "-" version))))
(sha256 (file-name (git-file-name name version))
(base32 (sha256
"0d6vh1mxskvv3bxl6byp7gxxw3zzpkldrxnyajhnl05m0gx7yhk1")))) (base32
(build-system gnu-build-system) "04g5jg0i4vz46b4w2dvbmahwzi3k6b8g515mfw7im1inc78s14id"))))
(synopsis "Arithmetic of polynomials over binary finite fields") (build-system gnu-build-system)
(description (native-inputs (list autoconf automake libtool))
"The gf2x library provides arithmetic of polynomials over finite fields (synopsis "Arithmetic of polynomials over binary finite fields")
(description
"The gf2x library provides arithmetic of polynomials over finite fields
of characteristic 2. It implements the multiplication, squaring and of characteristic 2. It implements the multiplication, squaring and
greatest common divisor operations.") greatest common divisor operations.")
(license license:gpl3+) (home-page "https://gitlab.inria.fr/gf2x/gf2x")
(home-page "https://gforge.inria.fr/projects/gf2x/"))) (license license:gpl3+)))
(define-public cm (define-public cm
(package (package
@ -221,7 +224,7 @@ the real span of the lattice.")
(define-public pari-gp (define-public pari-gp
(package (package
(name "pari-gp") (name "pari-gp")
(version "2.15.0") (version "2.15.2")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -229,7 +232,7 @@ the real span of the lattice.")
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"11anfn2lmixi83208p8qxjhwkrrad9s2qqfrl3wy9m0n1lg8ax74")))) "1pg0przhb3cgyn0rwkx2mx7a7fpy6bxxl72bk98pca723q8jhimh"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (list (texlive-updmap.cfg (native-inputs (list (texlive-updmap.cfg
(list texlive-amsfonts)))) (list texlive-amsfonts))))
@ -324,7 +327,7 @@ precision.")
(define-public giac (define-public giac
(package (package
(name "giac") (name "giac")
(version "1.9.0-21") (version "1.9.0-37")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -336,7 +339,7 @@ precision.")
"~parisse/debian/dists/stable/main/source/" "~parisse/debian/dists/stable/main/source/"
"giac_" version ".tar.gz")) "giac_" version ".tar.gz"))
(sha256 (sha256
(base32 "1zh7bf0ag4vbyyj5n8lbvy2ivp0kshms40ra5lq1ff035rpx230j")))) (base32 "0ch18wp6b3nr0zg31961rxng2mbw5mj76s00jf5qz7jdxl65s27n"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
(list (list
@ -352,9 +355,10 @@ precision.")
(find-files "doc" "^Makefile")) (find-files "doc" "^Makefile"))
(("/bin/cp") (which "cp"))))) (("/bin/cp") (which "cp")))))
(add-after 'unpack 'disable-failing-test (add-after 'unpack 'disable-failing-test
;; FIXME: Test failing. Not sure why. ;; FIXME: Tests failing. Not sure why.
(lambda _ (lambda _
(substitute* "check/Makefile.in" (substitute* "check/Makefile.in"
(("chk_fhan4") "")
(("chk_fhan11") "")))) (("chk_fhan11") ""))))
(add-after 'install 'fix-doc (add-after 'install 'fix-doc
(lambda _ (lambda _
@ -460,7 +464,9 @@ GCDs, factoring, solving linear systems, and evaluating special
functions. In addition, FLINT provides various low-level routines for functions. In addition, FLINT provides various low-level routines for
fast arithmetic.") fast arithmetic.")
(license license:lgpl2.1+) (license license:lgpl2.1+)
(home-page "http://flintlib.org/"))) (home-page "http://flintlib.org/")
(properties
'((release-monitoring-url . "http://flintlib.org/downloads.html")))))
(define-public arb (define-public arb
(package (package
@ -629,35 +635,42 @@ geometry and singularity theory.")
(define-public gmp-ecm (define-public gmp-ecm
(package (package
(name "gmp-ecm") (name "gmp-ecm")
(version "7.0.4") (version "7.0.5")
(source (origin (source (origin
(method url-fetch) (method git-fetch)
(uri (uri (git-reference
(let ((hash "00c4c691a1ef8605b65bdf794a71539d")) (url "https://gitlab.inria.fr/zimmerma/ecm")
(string-append "https://gitlab.inria.fr/zimmerma/ecm/" (commit (string-append "git-" version))))
"uploads/" hash "/ecm-" version (file-name (git-file-name name version))
".tar.gz"))) (sha256
(sha256 (base32 (base32
"0hxs24c2m3mh0nq1zz63z3sb7dhy1rilg2s1igwwcb26x3pb7xqc")))) "013sfsd5kyh7phhf4namcdndpcp2jnibzxf10f4g89qabr8av63m"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (inputs
(list gmp)) (list gmp))
(arguments (arguments
`(#:configure-flags '("--enable-shared" (list
;; Disable specific assembly routines, which depend #:configure-flags #~(list "--enable-shared"
;; on the subarchitecture of the build machine, ;; Disable specific assembly routines, which
;; and use gmp instead. ;; depend on the subarchitecture of the build
"--disable-asm-redc"))) ;; machine, and use gmp instead.
(synopsis "Integer factorization library using the elliptic curve method") "--disable-asm-redc")
(description #:phases #~(modify-phases %standard-phases
"GMP-ECM factors integers using the elliptic curve method (ECM) as well (add-after 'unpack 'patch-paths
(lambda _
(substitute* "test.ecm"
(("/bin/rm") (which "rm"))))))))
(native-inputs (list autoconf automake libtool))
(synopsis "Integer factorization library using the elliptic curve method")
(description
"GMP-ECM factors integers using the elliptic curve method (ECM) as well
as the P-1 and P+1 algorithms. It provides a library and a stand-alone as the P-1 and P+1 algorithms. It provides a library and a stand-alone
binary.") binary.")
;; Most files are under lgpl3+, but some are under gpl3+ or gpl2+, (home-page "https://gitlab.inria.fr/zimmerma/ecm")
;; so the combined work is under gpl3+. ;; Most files are under lgpl3+, but some are under gpl3+ or gpl2+, so the
(license license:gpl3+) ;; combined work is under gpl3+.
(home-page "http://ecm.gforge.inria.fr/"))) (license license:gpl3+)))
(define-public bc (define-public bc
(package (package
@ -1393,42 +1406,45 @@ objects.")
(define-public gappa (define-public gappa
(package (package
(name "gappa") (name "gappa")
(version "1.4.0") (version "1.4.1")
(source (origin (source (origin
(method url-fetch) (method git-fetch)
(uri (string-append "https://gappa.gitlabpages.inria.fr/releases/" (uri (git-reference
"gappa-" version ".tar.gz")) (url "https://gitlab.inria.fr/gappa/gappa")
(sha256 (commit (string-append name "-" version))))
(base32 (file-name (git-file-name name version))
"12x42z901pr05ldmparqdi8sq9s7fxbavhzk2dbq3l6hy247dwbb")))) (sha256
(build-system gnu-build-system) (base32
(inputs "0vfggzilc0gicrhqypmlx30ccrdkmyg22zzn46988c28xi9rcicj"))))
(list boost gmp mpfr)) (build-system gnu-build-system)
(arguments (arguments
`(#:phases (list #:phases
(modify-phases %standard-phases #~(modify-phases %standard-phases
(add-after 'unpack 'patch-remake-shell (add-after 'unpack 'patch-remake-shell
(lambda _ (lambda _
(substitute* "remake.cpp" (substitute* "remake.cpp"
(("/bin/sh") (which "sh"))) (("/bin/sh") (which "sh")))))
#t)) (replace 'build
(replace 'build (lambda _ (invoke "./remake" "-s" "-d")))
(lambda _ (invoke "./remake" "-s" "-d"))) (replace 'install
(replace 'install (lambda _ (invoke "./remake" "-s" "-d" "install")))
(lambda _ (invoke "./remake" "-s" "-d" "install"))) (replace 'check
(replace 'check (lambda* (#:key tests? #:allow-other-keys)
(lambda _ (invoke "./remake" "check")))))) (when tests?
(home-page "http://gappa.gforge.inria.fr/") (invoke "./remake" "check")))))))
(synopsis "Proof generator for arithmetic properties") (native-inputs (list autoconf automake bison flex libtool))
(description "Gappa is a tool intended to help verifying and formally (inputs (list boost gmp mpfr))
(home-page "https://gitlab.inria.fr/gappa/gappa")
(synopsis "Proof generator for arithmetic properties")
(description "Gappa is a tool intended to help verifying and formally
proving properties on numerical programs dealing with floating-point or proving properties on numerical programs dealing with floating-point or
fixed-point arithmetic. It has been used to write robust floating-point fixed-point arithmetic. It has been used to write robust floating-point
filters for CGAL and it is used to certify elementary functions in CRlibm. filters for CGAL and it is used to certify elementary functions in CRlibm.
While Gappa is intended to be used directly, it can also act as a backend While Gappa is intended to be used directly, it can also act as a backend
prover for the Why3 software verification platform or as an automatic tactic prover for the Why3 software verification platform or as an automatic tactic
for the Coq proof assistant.") for the Coq proof assistant.")
(license (list license:gpl3+ license:cecill)))) ; either/or (license (list license:gpl3+ license:cecill)))) ; either/or
(define-public givaro (define-public givaro
(package (package

View file

@ -872,7 +872,7 @@ algorithm.")
("libpng" ,libpng))) ("libpng" ,libpng)))
(home-page "https://developer.android.com/studio/command-line/etc1tool.html") (home-page "https://developer.android.com/studio/command-line/etc1tool.html")
(synopsis "Encode and decode PNG images to resp. from the ETC1 compression (synopsis "Encode and decode PNG images to resp. from the ETC1 compression
standard.") standard")
(description (description
"@command{etc1} is a command line utility that lets you encode PNG images "@command{etc1} is a command line utility that lets you encode PNG images
to the ETC1 compression standard and decode ETC1 compressed images back to to the ETC1 compression standard and decode ETC1 compressed images back to

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015, 2017 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015, 2017, 2023 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 20182021 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 20182021 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2019 Pkill -9 <pkill9@runbox.com> ;;; Copyright © 2019 Pkill -9 <pkill9@runbox.com>
;;; Copyright © 2020, 2021, 2022 Vinicius Monego <monego@posteo.net> ;;; Copyright © 2020, 2021, 2022 Vinicius Monego <monego@posteo.net>
@ -23,6 +23,7 @@
(define-module (gnu packages animation) (define-module (gnu packages animation)
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix gexp)
#:use-module (guix git-download) #:use-module (guix git-download)
#:use-module (guix utils) #:use-module (guix utils)
#:use-module ((guix licenses) #:prefix license:) #:use-module ((guix licenses) #:prefix license:)
@ -92,7 +93,7 @@ rendering vector based animations and art in realtime.")
(license license:expat))) (license license:expat)))
;; ETL, synfig, and Synfig Studio are updated in tandem. ;; ETL, synfig, and Synfig Studio are updated in tandem.
(define synfig-version "1.2.2") (define synfig-version "1.4.4")
(define-public etl (define-public etl
(package (package
@ -100,12 +101,15 @@ rendering vector based animations and art in realtime.")
(version synfig-version) (version synfig-version)
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://sourceforge/synfig/releases/" (uri (string-append "https://github.com/synfig/synfig"
version "/source/ETL-" version ".tar.gz")) "/releases/download/v" version
"/ETL-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"12sd8pz8l5xcxcmapkvih3brihdhdb6xmxisr9a415lydid9rh8d")))) "1jnahpxvrdxrll7b7av3zxabm5j3nlz6m3vg4sib2278v1wf91yc"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (list glibmm-2.64))
(native-inputs (list pkg-config))
(home-page "https://www.synfig.org") (home-page "https://www.synfig.org")
(synopsis "Extended C++ template library") (synopsis "Extended C++ template library")
(description (description
@ -120,68 +124,37 @@ C++ @dfn{Standard Template Library} (STL).")
(version synfig-version) (version synfig-version)
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://sourceforge/synfig/releases/" (uri (string-append "https://github.com/synfig/synfig"
version "/source/synfig-" version "/releases/download/v" version
".tar.gz")) "/synfig-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1vy27kl68sbg41sfasa58k3p2nc1xfalvzk3k9gich9h90rpnpsz")))) "01kgfmjfjk5y0v9ldmxzc8zzvbiaakz7nzg4hkj24gj3j6h8566d"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments
`(#:configure-flags
;; The Boost library path is taken from the value of BOOST_LDFLAGS.
(list (string-append "BOOST_LDFLAGS=-L"
(assoc-ref %build-inputs "boost")
"/lib"))
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'fix-boost-build-error
;; A chain of Boost headers leads to this error: "make_array" is
;; not a member of "boost::serialization". This can be avoided by
;; loading the "array_wrapper" header first.
(lambda _
(substitute* "src/synfig/valuenodes/valuenode_dynamic.cpp"
(("#include <boost/numeric/odeint/integrate/integrate.hpp>" match)
(string-append
"#include <boost/serialization/array_wrapper.hpp>\n" match)))
#t))
(add-after 'unpack 'adapt-to-libxml++-changes
(lambda _
(substitute* "configure"
(("libxml\\+\\+-2\\.6") "libxml++-3.0"))
(substitute* (append (find-files "src/modules/" "\\.cpp$")
(find-files "src/synfig/" "\\.(cpp|h)$"))
(("add_child\\(") "add_child_element(")
(("get_child_text\\(") "get_first_child_text(")
(("set_child_text\\(") "set_first_child_text(")
(("remove_child\\(") "remove_node("))
(substitute* "src/modules/mod_svg/svg_parser.cpp"
(("xmlpp::Node::NodeList") "xmlpp::Node::const_NodeList"))
#t)))))
(inputs (inputs
`(("boost" ,boost) (list boost
("ffmpeg" ,ffmpeg) libdv
("libdv" ,libdv) libjpeg-turbo
("libjpeg" ,libjpeg-turbo) libpng
("libpng" ,libpng) libmng
("libmng" ,libmng) zlib))
("zlib" ,zlib))) ;; synfig.pc lists the following as required: Magick++ libavcodec
;; synfig.pc lists the following as required: Magick++ freetype2 ;; libavformat libswscale freetype2 fontconfig OpenEXR ETL glibmm-2.4
;; fontconfig fftw OpenEXR ETL glibmm-2.4 giomm-2.4 libxml++-3.0 sigc++-2.0 ;; giomm-2.4 libxml++-2.6 sigc++-2.0 cairo fftw3 pango pangocairo mlt++
;; cairo pango pangocairo mlt++
(propagated-inputs (propagated-inputs
`(("cairo" ,cairo) (list cairo
("etl" ,etl) etl
("fftw" ,fftw) ffmpeg-4
("fontconfig" ,fontconfig) fftw
("freetype" ,freetype) fontconfig
("glibmm" ,glibmm) freetype
("imagemagick" ,imagemagick) glibmm-2.64
("libxml++" ,libxml++) imagemagick
("libsigc++" ,libsigc++) libxml++-2
("mlt" ,mlt-6) libsigc++
("openexr" ,openexr-2) mlt-6
("pango" ,pango))) openexr-2
pango))
(native-inputs (native-inputs
(list intltool pkg-config)) (list intltool pkg-config))
(home-page "https://www.synfig.org") (home-page "https://www.synfig.org")
@ -198,32 +171,24 @@ for tweening, preventing the need to hand-draw each frame.")
(version synfig-version) (version synfig-version)
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://sourceforge/synfig/releases/" (uri (string-append "https://github.com/synfig/synfig"
version "/source/synfigstudio-" version "/releases/download/v" version
".tar.gz")) "/synfigstudio-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1ql92kh9z8w2j9yi3pr7hn7wh2r2j35xynwv9xlwyd7niackgykn")) "07xjgs1qw0rwpihpcspj92rzwy5zizi86l9x2x7w6sysrj0wd4w8"))))
(modules '((guix build utils)))
(snippet
'(begin
(substitute* "src/synfigapp/pluginmanager.cpp"
(("xmlpp::Node\\* n =") "const xmlpp::Node* n =")
(("xmlpp::Node::NodeList") "xmlpp::Node::const_NodeList"))
#t))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:phases (list
(modify-phases %standard-phases #:phases
;; This fixes the file chooser crash that happens with GTK 3. #~(modify-phases %standard-phases
(add-after 'install 'wrap-program ;; This fixes the file chooser crash that happens with GTK 3.
(lambda* (#:key inputs outputs #:allow-other-keys) (add-after 'install 'wrap-program
(let* ((out (assoc-ref outputs "out")) (lambda* (#:key inputs #:allow-other-keys)
(gtk (assoc-ref inputs "gtk+")) (let* ((gtk (assoc-ref inputs "gtk+"))
(gtk-share (string-append gtk "/share"))) (gtk-share (string-append gtk "/share")))
(wrap-program (string-append out "/bin/synfigstudio") (wrap-program (string-append #$output "/bin/synfigstudio")
`("XDG_DATA_DIRS" ":" prefix (,gtk-share))) `("XDG_DATA_DIRS" ":" prefix (,gtk-share)))))))))
#t))))))
(inputs (inputs
(list gtkmm-3 gtk+ libsigc++ synfig)) (list gtkmm-3 gtk+ libsigc++ synfig))
(native-inputs (native-inputs
@ -325,7 +290,7 @@ audio or video backends, ensuring good performance.")
(define-public lightspark (define-public lightspark
(package (package
(name "lightspark") (name "lightspark")
(version "0.8.6") (version "0.8.6.1")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -334,7 +299,7 @@ audio or video backends, ensuring good performance.")
(commit version))) (commit version)))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 "0v7d7vwb0xqkk3v8dyks0wyk52ga57v5lg93y74v1d2wh7spmmzw")))) (base32 "1a78l9na01pd7a77r9n8lqih893s54rllpjvrx72sh0yyal1q3gz"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments (arguments
`(#:tests? #f ;requires Adobe Flex SDK, see README.tests `(#:tests? #f ;requires Adobe Flex SDK, see README.tests
@ -559,7 +524,7 @@ stacking and changing parameters in SWFs.
@item @item
@command{swfstrings} Scans SWFs for text data. @command{swfstrings} Scans SWFs for text data.
@item @item
@command{swfdump} Prints out various informations about SWFs. @command{swfdump} Prints out various information about SWFs.
@item @item
@command{jpeg2swf} Takes one or more JPEG pictures and generates a SWF @command{jpeg2swf} Takes one or more JPEG pictures and generates a SWF
@ -579,14 +544,14 @@ slideshow from them.
@command{font2swf} Converts font files (TTF, Type1) to SWF. @command{font2swf} Converts font files (TTF, Type1) to SWF.
@item @item
@command{swfbbox} Allows to read out, optimize and readjust SWF bounding boxes. @command{swfbbox} reads out, optimizes and readjusts SWF bounding boxes.
@item @item
@command{swfc} A tool for creating SWF files from simple script files. Supports @command{swfc} A tool for creating SWF files from simple script files. Supports
both ActionScript 2.0 aand 3.0. both ActionScript 2.0 aand 3.0.
@item @item
@command{swfextract} Allows to extract Movieclips, Sounds, Images etc. from SWF @command{swfextract} extracts Movieclips, Sounds, Images etc. from SWF
files. files.
@item @item

View file

@ -45,14 +45,14 @@
(define-public clamav (define-public clamav
(package (package
(name "clamav") (name "clamav")
(version "0.103.6") (version "0.103.7")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://www.clamav.net/downloads/production/" (uri (string-append "https://www.clamav.net/downloads/production/"
"clamav-" version ".tar.gz")) "clamav-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"0cxsv5m9pqxxb56qd7hlj11pwmdgm07s3msh3hxk47czq4yjx8da")) "0l3yn4dl4zgpq2qmj29kkd0fksyy1icr0rpp3fyvbcqcc0gw6d0y"))
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet (snippet
'(begin '(begin

202
gnu/packages/apparmor.scm Normal file
View file

@ -0,0 +1,202 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2022 Hilton Chain <hako@ultrarare.space>
;;;
;;; 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 packages apparmor)
#:use-module ((guix licenses) #:prefix license:)
#:use-module (gnu packages autotools)
#:use-module (gnu packages base)
#:use-module (gnu packages bison)
#:use-module (gnu packages dejagnu)
#:use-module (gnu packages flex)
#:use-module (gnu packages gawk)
#:use-module (gnu packages gettext)
#:use-module (gnu packages linux)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config)
#:use-module (gnu packages python)
#:use-module (gnu packages python-xyz)
#:use-module (gnu packages ruby)
#:use-module (gnu packages swig)
#:use-module (guix build-system gnu)
#:use-module (guix gexp)
#:use-module (guix git-download)
#:use-module (guix packages)
#:use-module (guix utils))
(define-public libapparmor
(package
(name "libapparmor")
(version "3.1.2")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://gitlab.com/apparmor/apparmor")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"1h77a7ww0rxfv5nsi1iy4fffklxdr2vq6r7kdsqm15yysglhbjyi"))))
(build-system gnu-build-system)
(arguments
(list #:configure-flags
#~(list (string-append "LDFLAGS=-Wl,-rpath=" #$output "/lib")
"--with-perl" "--with-python" "--with-ruby")
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'fix-paths
(lambda* (#:key inputs #:allow-other-keys)
(for-each patch-shebang
'("common/list_af_names.sh"
"common/list_capabilities.sh"))
(for-each (lambda (file)
(substitute* file
(("/usr") "")
(("/bin/\\<(pod2man|pod2html|podchecker|prove)\\>" path)
(search-input-file inputs path))
(("/include/linux/capability.h" path)
(search-input-file inputs path))))
'("common/Make-po.rules"
"common/Make.rules"
"binutils/Makefile"
"parser/Makefile"
"parser/tst/Makefile"
"profiles/Makefile"
"utils/Makefile"
"utils/python-tools-setup.py"
"utils/vim/Makefile"))))
(add-after 'fix-paths 'change-directory
(lambda _
(chdir "libraries/libapparmor"))))))
(native-inputs
(list autoconf
automake
bison
dejagnu
flex
libtool
perl
python-minimal
ruby
swig
which))
(home-page "https://apparmor.net")
(synopsis "Linux kernel security module")
(description
"AppArmor is an effective and easy-to-use Linux application security
system.
AppArmor proactively protects the operating system and applications from
external or internal threats, even zero-day attacks, by enforcing good
behavior and preventing both known and unknown application flaws from being
exploited.
AppArmor supplements the traditional Unix discretionary access control (DAC)
model by providing mandatory access control (MAC). It has been included in
the mainline Linux kernel since version 2.6.36 and its development has been
supported by Canonical since 2009.")
(license license:lgpl2.1)
(supported-systems (filter (lambda (system)
(string-suffix? "-linux" system))
%supported-systems))))
(define-public apparmor
(let ((base libapparmor))
(package
(inherit base)
(name "apparmor")
(arguments
(append
(list #:make-flags
#~(list (string-append "CC=" #$(cc-for-target))
(string-append "DESTDIR=" #$output)
"USE_SYSTEM=1"
;; No need to run the linter
"PYFLAKES=true"))
(substitute-keyword-arguments (package-arguments base)
((#:phases phases)
#~(modify-phases #$phases
(delete 'configure)
;; apparmor-binutils
(replace 'change-directory
(lambda _
(chdir "binutils")))
;; apparmor-parser
(add-after 'install 'chdir-parser
(lambda _
(chdir "../parser")))
(add-after 'chdir-parser 'patch-source-shebangs-parser
(assoc-ref %standard-phases 'patch-source-shebangs))
(add-after 'patch-source-shebangs-parser 'build-parser
(assoc-ref %standard-phases 'build))
(add-after 'build-parser 'check-parser
(assoc-ref %standard-phases 'check))
(add-after 'check-parser 'install-parser
(assoc-ref %standard-phases 'install))
;; apparmor-utils
;; FIXME: Tests required Python library from this package
;; (itself).
(add-after 'install-parser 'chdir-utils
(lambda _
(chdir "../utils")
;; Fix paths to installed policygroups and templates for
;; easyprof.
(substitute* "easyprof/easyprof.conf"
(("/usr") #$output))))
(add-after 'chdir-utils 'build-utils
(assoc-ref %standard-phases 'build))
(add-after 'build-utils 'install-utils
(assoc-ref %standard-phases 'install))
;; apparmor-profiles
;; FIXME: Tests need an AppArmor-enabled system.
(add-after 'install-utils 'chdir-profiles
(lambda _
(chdir "../profiles")))
(add-after 'chdir-profiles 'build-profiles
(assoc-ref %standard-phases 'build))
(add-after 'check-build 'install-profiles
(assoc-ref %standard-phases 'install)))))))
(propagated-inputs
(list libapparmor))
;; Python module `readline' needed
(native-inputs
(list bison flex gettext-minimal perl python which))
(license license:gpl2))))
(define-public pam-apparmor
(let ((base apparmor))
(package
(inherit base)
(name "pam-apparmor")
(arguments
(append
(list #:tests? #f) ;no tests
(substitute-keyword-arguments (package-arguments base)
((#:phases phases)
#~(modify-phases #$phases
(delete 'chdir-parser)
(delete 'chdir-utils)
(delete 'chdir-profiles)
(replace 'change-directory
(lambda _
(chdir "changehat/pam_apparmor"))))))))
(native-inputs (list pkg-config perl which))
(inputs (list libapparmor linux-pam))
(license license:bsd-3))))

View file

@ -123,7 +123,7 @@
(files '("share/arcan/scripts"))))) (files '("share/arcan/scripts")))))
(inputs (inputs
`(("apr" ,apr) `(("apr" ,apr)
("ffmpeg" ,ffmpeg) ("ffmpeg" ,ffmpeg-4)
("freetype" ,freetype) ("freetype" ,freetype)
("glib" ,glib) ("glib" ,glib)
("glu" ,glu) ("glu" ,glu)

View file

@ -161,6 +161,13 @@ dictionaries, including personal ones.")
(base32 (base32
"1svls9p7rsfi3hs0afh0cssj006qb4v1ik2yzqgj8hm10c6as2sm"))) "1svls9p7rsfi3hs0afh0cssj006qb4v1ik2yzqgj8hm10c6as2sm")))
(define-public aspell-dict-bn
(aspell-dictionary "bn" "Bengali"
#:version "0.01.1-1"
#:sha256
(base32
"1nc02jd67iggirwxnhdvlvaqm0xfyks35c4psszzj3dhzv29qgxh")))
(define-public aspell-dict-ca (define-public aspell-dict-ca
(let ((version "2.5.0") (let ((version "2.5.0")
(sha256 (sha256
@ -310,6 +317,14 @@ dictionaries, including personal ones.")
(base32 (base32
"0w2k5l5rbqpliripgqwiqixz5ghnjf7i9ggbrc4ly4vy1ia10rmc"))) "0w2k5l5rbqpliripgqwiqixz5ghnjf7i9ggbrc4ly4vy1ia10rmc")))
(define-public aspell-dict-nb
(aspell-dictionary "nb" "Norwegian Bokmål"
#:version "0.50.1-2"
#:prefix "aspell-"
#:sha256
(base32
"1xvns7dwx2sc0msldj7r2hv0426913rg3dpnkxlrvnsyrxzjpbpc")))
(define-public aspell-dict-pl (define-public aspell-dict-pl
(aspell-dictionary "pl" "Polish" (aspell-dictionary "pl" "Polish"
#:version "0.51-0" #:version "0.51-0"
@ -370,124 +385,6 @@ dictionaries, including personal ones.")
(base32 (base32
"0gb8j9iy1acdl11jq76idgc2lbc1rq3w04favn8cyh55d1v8phsk"))) "0gb8j9iy1acdl11jq76idgc2lbc1rq3w04favn8cyh55d1v8phsk")))
;;;
;;; Hunspell packages made from the Aspell word lists.
;;;
(define* (aspell-word-list language synopsis
#:optional
(nick (string-map (lambda (chr)
(if (char=? #\_ chr)
#\-
chr))
(string-downcase language))))
(package
(name (string-append "hunspell-dict-" nick))
(version "2018.04.16")
(source (origin
(method url-fetch)
(uri (string-append
"mirror://sourceforge/wordlist/SCOWL/"
version "/scowl-" version ".tar.gz"))
(sha256
(base32
"11lkrnhwrf5mvrrq45k4mads3n9aswgac8dc25ba61c75alxb5rs"))))
(native-inputs
(list tar gzip perl aspell))
(build-system gnu-build-system)
(arguments
`(#:phases
(modify-phases %standard-phases
(add-after 'unpack 'make-reproducible
(lambda _
(substitute* "speller/README_en.txt.sh"
(("\\bdate\\b") ""))))
(delete 'configure)
(delete 'check)
(replace 'build
(lambda _
(substitute* "speller/make-hunspell-dict"
(("zip -9 .*$")
"return\n"))
(mkdir "speller/hunspell")
;; XXX: This actually builds all the dictionary variants.
(invoke "make" "-C" "speller" "hunspell")))
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((out (assoc-ref %outputs "out"))
(hunspell (string-append out "/share/hunspell"))
(myspell (string-append out "/share/myspell"))
(doc (string-append out "/share/doc/"
,name))
(dot-dic ,(string-append "speller/" language ".dic")))
(mkdir-p myspell)
;; Usually there's only a 'LANGUAGE.dic' file, but for the "en"
;; dictionary, there no 'en.dic'. Instead, there's a set of
;; 'en*.dic' files, hence the 'find-files' call below.
(if (file-exists? dot-dic)
(install-file dot-dic hunspell)
(for-each (lambda (dic)
(install-file dic hunspell))
(find-files "speller"
,(string-append language ".*\\.dic$"))))
;; Install affix files corresponding to installed dictionaries
(for-each (lambda (dic)
(install-file (string-append
"speller/" (basename dic ".dic") ".aff")
hunspell))
(find-files hunspell ".*\\.dic$"))
(symlink hunspell (string-append myspell "/dicts"))
(for-each (lambda (file)
(install-file file doc))
(find-files "."
"^(Copyright|.*\\.(txt|org|md))$"))
#t))))))
(synopsis synopsis)
(description
"This package provides a dictionary for the Hunspell spell-checking
library.")
(home-page "http://wordlist.aspell.net/")
(license (non-copyleft "file://Copyright"
"Word lists come from several sources, all
under permissive licensing terms. See the 'Copyright' file."))))
(define-syntax define-word-list-dictionary
(syntax-rules (synopsis)
((_ name language (synopsis text))
(define-public name
(aspell-word-list language text)))
((_ name language nick (synopsis text))
(define-public name
(aspell-word-list language text nick)))))
(define-word-list-dictionary hunspell-dict-en
"en"
(synopsis "Hunspell dictionary for English"))
(define-word-list-dictionary hunspell-dict-en-au
"en_AU"
(synopsis "Hunspell dictionary for Australian English"))
(define-word-list-dictionary hunspell-dict-en-ca
"en_CA"
(synopsis "Hunspell dictionary for Canadian English"))
(define-word-list-dictionary hunspell-dict-en-gb
"en_GB-ise" "en-gb"
(synopsis "Hunspell dictionary for British English, with -ise endings"))
(define-word-list-dictionary hunspell-dict-en-gb-ize
"en_GB-ize"
(synopsis "Hunspell dictionary for British English, with -ize endings"))
(define-word-list-dictionary hunspell-dict-en-us
"en_US"
(synopsis "Hunspell dictionary for United States English"))
(define-public ispell (define-public ispell
(package (package
(name "ispell") (name "ispell")

View file

@ -12,6 +12,7 @@
;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net> ;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2022 Felix Gruber <felgru@posteo.net> ;;; Copyright © 2022 Felix Gruber <felgru@posteo.net>
;;; Copyright © 2022 Andy Tai <atai@atai.org>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -132,19 +133,21 @@ debugging information in STABS, DWARF 2, and CodeView 8 formats.")
(define-public lightning (define-public lightning
(package (package
(name "lightning") (name "lightning")
(version "2.1.3") (version "2.2.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://gnu/lightning/lightning-" (uri (string-append "mirror://gnu/lightning/lightning-"
version ".tar.gz")) version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"1jgxbq2cm51dzi3zhz38mmgwdcgs328mfl8iviw8dxn6dn36p1gd")))) "03kwvn00qggys203vpzb2kq2asy0ql7x84ajk05a62yg3kzq8faf"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (list zlib)) (native-inputs (list zlib))
(arguments (arguments
;; Some tests fail when run in parallel. `(#:configure-flags
`(#:parallel-tests? #f)) (list "--disable-static")
;; Some tests fail when run in parallel.
#:parallel-tests? #f))
(synopsis "Library for generating assembly code at runtime") (synopsis "Library for generating assembly code at runtime")
(description (description
"GNU Lightning is a library that generates assembly language code at "GNU Lightning is a library that generates assembly language code at

File diff suppressed because it is too large Load diff

View file

@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021, 2022 Ricardo Wurmus <rekado@elephly.net> ;;; Copyright © 2015-2023 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com> ;;; Copyright © 2015 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
;;; Copyright © 2015 Andreas Enge <andreas@enge.fr> ;;; Copyright © 2015 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2015 Alex Kost <alezost@gmail.com> ;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
@ -8,16 +8,16 @@
;;; Copyright © 2016, 2017 Alex Griffin <a@ajgrf.com> ;;; Copyright © 2016, 2017 Alex Griffin <a@ajgrf.com>
;;; Copyright © 2016 Nikita <nikita@n0.is> ;;; Copyright © 2016 Nikita <nikita@n0.is>
;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org> ;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
;;; Copyright © 20162022 Tobias Geerinckx-Rice <me@tobias.gr> ;;; Copyright © 20162023 Tobias Geerinckx-Rice <me@tobias.gr>
;;; Copyright © 2018, 2020 Oleg Pykhalov <go.wigust@gmail.com> ;;; Copyright © 2018, 2020 Oleg Pykhalov <go.wigust@gmail.com>
;;; Copyright © 2018 okapi <okapi@firemail.cc> ;;; Copyright © 2018 okapi <okapi@firemail.cc>
;;; Copyright © 2018, 2020, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2018, 2020, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org> ;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
;;; Copyright © 2018 Brett Gilio <brettg@gnu.org> ;;; Copyright © 2018 Brett Gilio <brettg@gnu.org>
;;; Copyright © 2018, 2019 Marius Bakke <mbakke@fastmail.com> ;;; Copyright © 2018, 2019, 2022 Marius Bakke <marius@gnu.org>
;;; Copyright © 2018, 2021 Thorsten Wilms <t_w_@freenet.de> ;;; Copyright © 2018, 2021 Thorsten Wilms <t_w_@freenet.de>
;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org> ;;; Copyright © 2018 Eric Bavier <bavier@member.fsf.org>
;;; Copyright © 2018 Brendan Tildesley <mail@brendan.scot> ;;; Copyright © 2018, 2022 Brendan Tildesley <mail@brendan.scot>
;;; Copyright © 2019, 2021 Pierre Langlois <pierre.langlois@gmx.com> ;;; Copyright © 2019, 2021 Pierre Langlois <pierre.langlois@gmx.com>
;;; Copyright © 2019, 2021 Leo Famulari <leo@famulari.name> ;;; Copyright © 2019, 2021 Leo Famulari <leo@famulari.name>
;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com> ;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
@ -39,6 +39,8 @@
;;; Copyright © 2022 Arjan Adriaanse <arjan@adriaan.se> ;;; Copyright © 2022 Arjan Adriaanse <arjan@adriaan.se>
;;; Copyright © 2022 Juliana Sims <jtsims@protonmail.com> ;;; Copyright © 2022 Juliana Sims <jtsims@protonmail.com>
;;; Copyright © 2022 Simon Streit <simon@netpanic.org> ;;; Copyright © 2022 Simon Streit <simon@netpanic.org>
;;; Copyright © 2022 Andy Tai <atai@atai.org>
;;; Copyright © 2023 Sergiu Ivanov <sivanov@colimite.fr>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -145,7 +147,8 @@
#:use-module (guix packages) #:use-module (guix packages)
#:use-module (guix utils) #:use-module (guix utils)
#:use-module (srfi srfi-1) #:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)) #:use-module (srfi srfi-26)
#:use-module (ice-9 match))
(define-public opensles (define-public opensles
(package (package
@ -236,7 +239,7 @@ promoting the market for advanced audio.")
("openal" ,openal))) ("openal" ,openal)))
(synopsis "Software Synthesizer") (synopsis "Software Synthesizer")
(description "WildMIDI is a simple software midi player which has a core (description "WildMIDI is a simple software midi player which has a core
softsynth library that can be use with other applications.") softsynth library that can be used with other applications.")
(home-page "https://www.mindwerks.net/projects/wildmidi/") (home-page "https://www.mindwerks.net/projects/wildmidi/")
(license (license
(list (list
@ -366,7 +369,12 @@ Linux kernel.")
"07857vdkak306d9s5g6fhmjyxk7vijzjhkmqb15s7ihfxx9lx8xb")))) "07857vdkak306d9s5g6fhmjyxk7vijzjhkmqb15s7ihfxx9lx8xb"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments (arguments
'(#:tests? #f)) ; no check target '(#:tests? #f ;no check target
;; XXX: Building with '-fsanitize=undefined' leads to embedded C++ STL
;; header file names in libgme.so, meaning that libgme retains a
;; reference to GCC. Disable UBSAN to avoid that.
#:configure-flags '("-DENABLE_UBSAN=OFF")))
(home-page "https://bitbucket.org/mpyne/game-music-emu") (home-page "https://bitbucket.org/mpyne/game-music-emu")
(synopsis "Video game music file playback library") (synopsis "Video game music file playback library")
(description (description
@ -470,31 +478,6 @@ by MusicIP.")
(home-page "https://code.google.com/archive/p/musicip-libofa/") (home-page "https://code.google.com/archive/p/musicip-libofa/")
(license license:gpl2+))) (license license:gpl2+)))
(define-public faac
(package
(name "faac")
(version "1.30")
(source
(origin
(method url-fetch)
(uri
(string-append "mirror://sourceforge/faac/faac-src"
"/faac-" version "/faac-1_30.tar.gz"))
(sha256
(base32 "1lmj0dib3mjp84jhxc5ddvydkzzhb0gfrdh3ikcidjlcb378ghxd"))))
(build-system gnu-build-system)
(native-inputs
(list autoconf automake libtool pkg-config))
(synopsis "Freeware Advanced Audio Coder")
(description "FAAC is an MPEG-4 and MPEG-2 AAC encoder.")
(home-page "https://www.audiocoding.com/faac.html")
(license
(list
;; ISO MPEG-4 reference code.
license:gpl2+
;; Others.
license:lgpl2.0+))))
(define-public libtimidity (define-public libtimidity
(package (package
(name "libtimidity") (name "libtimidity")
@ -622,7 +605,11 @@ Filter) modules follow the convention of 1V / Octave.")
"--enable-samplerate" "--enable-samplerate"
"--enable-avcodec"))) "--enable-avcodec")))
(inputs (inputs
(list jack-1 libsndfile libsamplerate fftwf ffmpeg)) ; for libavcodec (list jack-1
libsndfile
libsamplerate
ffmpeg-4 ;for libavcodec
fftwf))
(native-inputs (native-inputs
(list pkg-config)) (list pkg-config))
(home-page "https://aubio.org/") (home-page "https://aubio.org/")
@ -634,6 +621,100 @@ attacks, performing pitch detection, tapping the beat and producing MIDI
streams from live audio.") streams from live audio.")
(license license:gpl3+))) (license license:gpl3+)))
(define-public dsp
(package
(name "dsp")
(version "1.9")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/bmc0/dsp")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"0iksmianwig7w78hqip2a8yy6r63sv8cv9pis8qxny6w1xap6njb"))))
(build-system gnu-build-system)
(arguments
(list
#:tests? #false ;no tests
#:make-flags
#~(list (string-append "CC=" #$(cc-for-target)))
#:phases
#~(modify-phases %standard-phases
(replace 'configure
(lambda _
(invoke "sh" "configure"
(string-append "--prefix=" #$output)
"--disable-pulse"))))))
(inputs
(list alsa-lib
ao
ffmpeg
ladspa
libmad
libsndfile
fftw
fftwf
zita-convolver))
(native-inputs
(list libtool pkg-config))
(home-page "https://github.com/bmc0/dsp")
(synopsis "Audio processing program with an interactive mode")
(description
"dsp is an audio processing program with an interactive mode.")
(license license:isc)))
(define-public qm-dsp
(package
(name "qm-dsp")
(version "1.7.1")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/c4dm/qm-dsp")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32
"1vkb1xr2hjcaw88gig7rknlwsx01lm0w94d2z0rk5vz9ih4fslvv"))))
(build-system gnu-build-system)
(arguments
(list
#:make-flags
#~(list #$(string-append "-f" "build/"
(match (or (%current-target-system)
(%current-system))
("x86_64-linux" "linux/Makefile.linux64")
("i686-linux" "linux/Makefile.linux32")
(target
(if (string-suffix? "-mingw32" target)
"mingw32/Makefile.mingw32"
"general/Makefile.inc"))))
(string-append "CC=" #$(cc-for-target)))
#:phases
#~(modify-phases %standard-phases
(delete 'configure) ;no configure script
(replace 'install
(lambda* (#:key outputs #:allow-other-keys)
(let* ((lib (string-append #$output "/lib"))
(include (string-append #$output "/include")))
(install-file "libqm-dsp.a" lib)
(mkdir-p include)
(for-each (lambda (file)
(unless (or (string-prefix? "./build" file)
(string-prefix? "./include" file))
(install-file file (string-append include "/"
(dirname file)))))
(find-files "." "\\.h$"))))))
#:test-target "tests"))
(home-page "https://code.soundsoftware.ac.uk/projects/qm-dsp")
(synopsis "C++ library of functions for DSP and Music Informatics purposes")
(description
"QM-DSP is a C++ library of functions for DSP and Music Informatics
purposes developed at Queen Mary, University of London.")
(license license:gpl2+)))
(define (ardour-rpath-phase major-version) (define (ardour-rpath-phase major-version)
`(lambda* (#:key outputs #:allow-other-keys) `(lambda* (#:key outputs #:allow-other-keys)
(let ((libdir (string-append (assoc-ref outputs "out") (let ((libdir (string-append (assoc-ref outputs "out")
@ -647,13 +728,12 @@ streams from live audio.")
libdir "/engines" ":" libdir "/engines" ":"
libdir "/panners" ":" libdir "/panners" ":"
libdir "/surfaces" ":" libdir "/surfaces" ":"
libdir "/vamp" "\"]")))) libdir "/vamp" "\"]"))))))
#t))
(define-public ardour (define-public ardour
(package (package
(name "ardour") (name "ardour")
(version "6.9") (version "7.2")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -667,19 +747,19 @@ streams from live audio.")
"libs/ardour/revision.cc" "libs/ardour/revision.cc"
(lambda (port) (lambda (port)
(format port ,(string-append "#include \"ardour/revision.h\" (format port ,(string-append "#include \"ardour/revision.h\"
namespace ARDOUR { const char* revision = \"" version "\" ; const char* date = \"\"; }")) namespace ARDOUR { const char* revision = \"" version "\" ; const char* date = \"\"; }")))))
#t)))
(sha256 (sha256
(base32 (base32
"0vlcbd70y0an881zv87kc3akmaiz4w7whsy3yaiiqqjww35jg1mm")) "1gv0wkzyx59lbnaf5iz9yva4akrd2zkhsmdk8wda3wz06zmk4w1r"))
(file-name (string-append name "-" version)))) (file-name (string-append name "-" version))))
(build-system waf-build-system) (build-system waf-build-system)
(arguments (arguments
`(#:configure-flags '("--cxx11" ; required by gtkmm `(#:configure-flags '("--cxx11" ; required by gtkmm
"--optimize" "--optimize"
"--no-phone-home" ; don't contact ardour.org "--no-phone-home" ; don't contact ardour.org
"--freedesktop" ; build .desktop file "--freedesktop" ; build .desktop file
"--test") ; build unit tests "--test" ; build unit tests
"--use-external-libs") ; use system libraries
#:phases #:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(add-after 'unpack 'set-rpath-in-LDFLAGS (add-after 'unpack 'set-rpath-in-LDFLAGS
@ -704,8 +784,11 @@ namespace ARDOUR { const char* revision = \"" version "\" ; const char* date = \
(string-append share "/applications/")) (string-append share "/applications/"))
(install-file (string-append "build/gtk2_ardour/ardour" (install-file (string-append "build/gtk2_ardour/ardour"
ver ".appdata.xml") ver ".appdata.xml")
(string-append share "/appdata/"))) (string-append share "/appdata/")))))
#t))) (add-after 'install 'install-man-page
(lambda* (#:key outputs #:allow-other-keys)
(install-file "ardour.1" (string-append (assoc-ref outputs "out")
"/share/man/man1")))))
#:test-target "test")) #:test-target "test"))
(inputs (inputs
(list alsa-lib (list alsa-lib
@ -719,13 +802,17 @@ namespace ARDOUR { const char* revision = \"" version "\" ; const char* date = \
fftw fftw
fftwf fftwf
flac flac
fluidsynth
glibmm glibmm
gtkmm-2 gtkmm-2
hicolor-icon-theme
hidapi
jack-1 jack-1
libarchive libarchive
libart-lgpl libart-lgpl
libgnomecanvasmm libgnomecanvasmm
liblo liblo
libltc
libogg libogg
libsamplerate libsamplerate
libsndfile libsndfile
@ -740,6 +827,7 @@ namespace ARDOUR { const char* revision = \"" version "\" ; const char* date = \
pangomm pangomm
python-rdflib python-rdflib
pulseaudio pulseaudio
qm-dsp
readline readline
redland redland
rubberband rubberband
@ -751,11 +839,11 @@ namespace ARDOUR { const char* revision = \"" version "\" ; const char* date = \
taglib taglib
vamp)) vamp))
(native-inputs (native-inputs
`(("cppunit" ,cppunit) (list cppunit
("gettext" ,gettext-minimal) gettext-minimal
("itstool" ,itstool) itstool
("perl" ,perl) perl
("pkg-config" ,pkg-config))) pkg-config))
(home-page "https://ardour.org") (home-page "https://ardour.org")
(synopsis "Digital audio workstation") (synopsis "Digital audio workstation")
(description (description
@ -767,19 +855,16 @@ engineers, musicians, soundtrack editors and composers.")
(define-public audacity (define-public audacity
(package (package
(name "audacity") (name "audacity")
(version "3.1.3") (version "3.2.3")
(source (source
(origin (origin
;; If built from the release tag, Audacity will describe itself (method git-fetch)
;; as an "Alpha test version" and suggest to users that they use (uri (git-reference
;; the "latest stable released version". (url "https://github.com/audacity/audacity")
(method url-fetch) (commit (string-append "Audacity-" version))))
(uri (string-append "https://github.com/audacity/audacity/releases/download/" (file-name (git-file-name name version))
"Audacity-" version "/audacity-" version
"-source.tar.gz"))
(sha256 (sha256
(base32 (base32 "0wg75fblxlnrn5kqvg0w1fi2pwdkn1nd6vgya3sad84l3ki7wpyh"))
"189agx11361k9j958s6q5bngnnfx0rwaf0dwbjxy6fwvsb1wv3px"))
(patches (search-patches "audacity-ffmpeg-fallback.patch")) (patches (search-patches "audacity-ffmpeg-fallback.patch"))
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet (snippet
@ -803,20 +888,19 @@ engineers, musicians, soundtrack editors and composers.")
#t)))) #t))))
(build-system cmake-build-system) (build-system cmake-build-system)
(inputs (inputs
(list wxwidgets-3.1 (list wxwidgets
gtk+ gtk+
alsa-lib alsa-lib
jack-1 jack-1
expat expat
lame lame
linux-libre-headers
flac flac
ffmpeg ffmpeg
libid3tag libid3tag
libjpeg-turbo libjpeg-turbo
libmad
;;("libsbsms" ,libsbsms) ;bundled version is modified ;;("libsbsms" ,libsbsms) ;bundled version is modified
libsndfile libsndfile
mpg123
soundtouch soundtouch
soxr ;replaces libsamplerate soxr ;replaces libsamplerate
sqlite sqlite
@ -827,24 +911,32 @@ engineers, musicians, soundtrack editors and composers.")
lilv ;for lv2 lilv ;for lv2
suil ;for lv2 suil ;for lv2
portaudio portaudio
portmidi)) portmidi
wavpack))
(native-inputs (native-inputs
`(("autoconf" ,autoconf) (list autoconf
("automake" ,automake) automake
("gettext" ,gettext-minimal) ;for msgfmt gettext-minimal ;for msgfmt
("libtool" ,libtool) libtool
("pkg-config" ,pkg-config) pkg-config
("python" ,python) python
("which" ,which))) which))
(arguments (arguments
`(#:configure-flags `(#:configure-flags
(list (list
"-Daudacity_conan_enabled=off" "-Daudacity_conan_enabled=off"
"-Daudacity_lib_preference=system" "-Daudacity_lib_preference=system"
;; Disable support for VST 3 SDK, which is not yet in Guix (and has
;; a dubious licensing agreement despite GPL code).
"-Daudacity_has_vst3=off"
;; TODO: enable this flag once we've packaged all dependencies ;; TODO: enable this flag once we've packaged all dependencies
;; "-Daudacity_obey_system_dependencies=on" ;; "-Daudacity_obey_system_dependencies=on"
;; disable crash reports, updates, ..., anything that phones home ;; disable crash reports, updates, ..., anything that phones home
"-Daudacity_has_networking=off") "-Daudacity_has_networking=off"
;; When building from Git — even from a release tag — this is undefined,
;; and Audacity assumes that is is an alpha version and includes debug
;; symbols and extra code. Force level 2, release.
"-DAUDACITY_BUILD_LEVEL=2")
#:imported-modules ((guix build glib-or-gtk-build-system) #:imported-modules ((guix build glib-or-gtk-build-system)
,@%cmake-build-system-modules) ,@%cmake-build-system-modules)
#:modules #:modules
@ -862,24 +954,20 @@ engineers, musicians, soundtrack editors and composers.")
"CMAKE_BUILD_WITH_INSTALL_RPATH TRUE") "CMAKE_BUILD_WITH_INSTALL_RPATH TRUE")
(("CMAKE_INSTALL_RPATH_USE_LINK_PATH [A-Z]*") (("CMAKE_INSTALL_RPATH_USE_LINK_PATH [A-Z]*")
"CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE")) "CMAKE_INSTALL_RPATH_USE_LINK_PATH TRUE"))
(substitute* "libraries/image-compiler/CMakeLists.txt"
(("PROPERTIES")
;; This scripts needs to run during build, make sure it finds
;; the required libraries.
"PROPERTIES BUILD_WITH_INSTALL_RPATH FALSE"))
(substitute* "src/CMakeLists.txt" (substitute* "src/CMakeLists.txt"
;; Despite the name, this script breaks rpath. Don't run it.
(("install.*linux/fix_rpath\\.cmake.*")
"")
(("-Wl,--disable-new-dtags") "-Wl,--enable-new-dtags")))) (("-Wl,--disable-new-dtags") "-Wl,--enable-new-dtags"))))
(add-after 'unpack 'comment-out-revision-ident
(lambda _
(substitute* "src/CMakeLists.txt"
(("file\\( TOUCH \".*RevisionIdent\\.h\" \\)" directive)
(string-append "# " directive)))
(substitute* "src/AboutDialog.cpp"
(("(.*RevisionIdent\\.h.*)" include-line)
(string-append "// " include-line)))))
(add-after 'unpack 'use-upstream-headers (add-after 'unpack 'use-upstream-headers
(lambda* (#:key inputs #:allow-other-keys) (lambda* (#:key inputs #:allow-other-keys)
(substitute* '("libraries/lib-files/FileNames.cpp") (substitute* '("libraries/lib-files/FileNames.cpp")
(("\"/usr/include/linux/magic.h\"") "<linux/magic.h>")))) (("\"/usr/include/linux/magic.h\"") "<linux/magic.h>"))))
(add-after 'install 'delete-gratuitous-script
(lambda* (#:key outputs #:allow-other-keys)
(delete-file (string-append (assoc-ref outputs "out")
"/audacity"))))
(add-after 'wrap-program 'glib-or-gtk-wrap (add-after 'wrap-program 'glib-or-gtk-wrap
(assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap))) (assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))
;; The test suite is not "well exercised" according to the developers, ;; The test suite is not "well exercised" according to the developers,
@ -1121,6 +1209,39 @@ guitar amplification and a small range of classic effects, signal processors and
generators of mostly elementary and occasionally exotic nature.") generators of mostly elementary and occasionally exotic nature.")
(license license:gpl3+))) (license license:gpl3+)))
(define-public iir
(package
(name "iir")
(version "1.9.4")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/berndporr/iir1")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32 "1fqxn0qlvykpk9hiliivmkjjcz3g1bp83yd0zfm82r14abkjbj2g"))))
(build-system cmake-build-system)
(arguments
(list
#:phases
#~(modify-phases %standard-phases
(add-after 'install 'delete-static-library
(lambda* (#:key outputs #:allow-other-keys)
(let ((out (assoc-ref outputs "out")))
(delete-file (string-append out "/lib/libiir_static.a"))))))))
(home-page "https://berndporr.github.io/iir1/")
(synopsis
"Real-time C++ @acronym{IIR, infinite impulse response} filter library")
(description
"This C++ library implements the Butterworth, RBJ, and Chebychev
@acronym{IIR, infinite impulse response} filters. Samples are processed one by
one, in real time. It can easily import coefficients generated with Python
(@code{scipy}). It also avoids memory leaks by allocating memory at compile
time, using templates, instead of calling @code{malloc()} or @code{new}.")
(license license:expat)))
(define-public infamous-plugins (define-public infamous-plugins
(package (package
(name "infamous-plugins") (name "infamous-plugins")
@ -1400,7 +1521,7 @@ object library.")
(define-public csound (define-public csound
(package (package
(name "csound") (name "csound")
(version "6.14.0") (version "6.16.2")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -1409,7 +1530,7 @@ object library.")
(commit version))) (commit version)))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 "1sr9knfhbm2m0wpkjq2l5n471vnl51wy4p6j4m95zqybimzb4s2j")))) (base32 "1lgasyk8j4cl9178vci1dph63nks3cgwhf8y1d04z9dc8gg15dyn"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(native-inputs (native-inputs
(list bison flex gettext-minimal zlib)) (list bison flex gettext-minimal zlib))
@ -2245,6 +2366,8 @@ especially for creating reverb effects. It supports impulse responses with 1,
2 or 4 channels, in any soundfile format supported by libsndfile.") 2 or 4 channels, in any soundfile format supported by libsndfile.")
(license license:gpl2+))) (license license:gpl2+)))
;; Packages depending on JACK should always prefer jack-2.
;; JACK1 is provided for legacy applications
(define-public jack-1 (define-public jack-1
(package (package
(name "jack") (name "jack")
@ -2290,9 +2413,8 @@ synchronous execution of all clients, and low latency operation.")
;; licensed under the LGPL in order to allow for proprietary usage. ;; licensed under the LGPL in order to allow for proprietary usage.
(license (list license:gpl2+ license:lgpl2.1+)))) (license (list license:gpl2+ license:lgpl2.1+))))
;; Packages depending on JACK should always prefer jack-1. Both jack-1 and ;; Packages depending on JACK should always prefer jack-2. Both jack-1 and
;; jack-2 implement the same API. JACK2 is provided primarily as a client ;; jack-2 implement the same API.
;; program for users who might benefit from the D-BUS features.
(define-public jack-2 (define-public jack-2
(package (package
(inherit jack-1) (inherit jack-1)
@ -2344,20 +2466,102 @@ synchronous execution of all clients, and low latency operation.")
;; Most files are under GPLv2+, but some headers are under LGPLv2.1+ ;; Most files are under GPLv2+, but some headers are under LGPLv2.1+
(license (list license:gpl2+ license:lgpl2.1+)))) (license (list license:gpl2+ license:lgpl2.1+))))
(define-public jack-example-tools
(package
(name "jack-example-tools")
(version "3")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/jackaudio/jack-example-tools")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"0x684clxqib1bq3zvvrqlh7hb3arb1bf672xyx1jbwv76dcmm5mh"))))
(build-system meson-build-system)
(inputs
(list alsa-lib
jack-2
libsndfile
opus
readline))
(native-inputs
(list pkg-config))
(home-page "https://github.com/jackaudio/jack-example-tools")
(synopsis "Tools for JACK connections")
(description "This package provides tools for managing JACK connections
and testing or configuring the JACK session. Tools include @code{jack_lsp},
@code{jack_connect}, and @code{jack_transport}.")
;; Most files are under GPLv2+, but zalsa is GPLv3+.
(license (list license:gpl2+ license:gpl3+))))
(define-public jacktrip
(package
(name "jacktrip")
(version "1.6.8")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/jacktrip/jacktrip/")
(commit (string-append "v" version))))
(file-name (git-file-name name version))
(sha256
(base32 "0719ng799kingv0y9yk07bvnmprk25c09ph3yaia5dhapg0jz17m"))))
(build-system gnu-build-system)
(arguments
(list
#:phases
'(modify-phases %standard-phases
(replace 'configure
(lambda* (#:key outputs #:allow-other-keys)
(invoke "qmake"
(string-append "PREFIX="
(assoc-ref outputs "out"))
"-config" "novs"
"-config" "noupdater"
"jacktrip.pro"))))))
(inputs
(list jack-2
python
python-jinja2
python-pyyaml
qtbase-5
rtaudio))
(native-inputs
(list pkg-config qtbase-5)) ;for qmake
(home-page "https://jacktrip.github.io/jacktrip/")
(synopsis "Multi-machine audio system for network music performance")
(description
"JackTrip is a multi-machine audio system used for network music
performance over the Internet. It supports any number of channels (as many as
the computer/network can handle) of bidirectional, high quality, uncompressed
audio signal streaming.")
(license (list license:gpl3+ license:lgpl3 license:expat))))
(define-public jalv (define-public jalv
(package (package
(name "jalv") (name "jalv")
(version "1.6.6") (version "1.6.8")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://download.drobilla.net/jalv-" (uri (string-append "https://download.drobilla.net/jalv-"
version ".tar.bz2")) version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"05lycfq0f06zjp5xqvzjz9hx9kmqx72yng1lghh76hv63dw43lcj")))) "1q8mzjv577vdi64s47gd4pg0ydzxvs32cwrb1d64v90f52qpgbpd"))))
(build-system waf-build-system) (build-system meson-build-system)
(arguments (arguments
`(#:tests? #f)) ; no check target `(#:tests? #f ; no check target
#:phases
(modify-phases %standard-phases
(add-before 'configure 'build-PIC
;; The default -fPIE #errors when combined with our Qt packages.
;; Work around the broken meson.build script clobbering c_args.
(lambda _
(substitute* "meson.build"
(("'-DZIX_STATIC'" match)
(string-append match ", '-fPIC'"))))))))
(inputs (inputs
(list lv2 (list lv2
lilv lilv
@ -2600,14 +2804,13 @@ compensation, (de)interleaving, and byte-swapping
(define-public python-pyaudio (define-public python-pyaudio
(package (package
(name "python-pyaudio") (name "python-pyaudio")
(version "0.2.11") (version "0.2.12")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri "PyAudio" version)) (uri (pypi-uri "PyAudio" version))
(sha256 (sha256
(base32 (base32 "17pvc27pn2xbisbq7nibhidyw8h2kyms7g2xbyx7nlxwfbdzbpam"))))
"0x7vdsigm7xgvyg3shd3lj113m8zqj2pxmrgdyj66kmnw0qdxgwk"))))
(build-system python-build-system) (build-system python-build-system)
(inputs (inputs
(list portaudio)) (list portaudio))
@ -2617,6 +2820,38 @@ compensation, (de)interleaving, and byte-swapping
cross-platform audio input/output stream library.") cross-platform audio input/output stream library.")
(license license:expat))) (license license:expat)))
(define-public python-pulsectl
(package
(name "python-pulsectl")
(version "22.3.2")
(source (origin
(method url-fetch)
(uri (pypi-uri "pulsectl" version))
(sha256
(base32
"115ha1cwpd2r84ssnxdbr59hgs0jbx0lz3xpqli64kmxxqf4w5yc"))))
(build-system python-build-system)
(inputs (list pulseaudio))
(arguments
`(#:tests? #f ; tests try to communicate with PulseAudio
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch-path
(lambda* (#:key inputs #:allow-other-keys)
(substitute* "pulsectl/_pulsectl.py"
(("libpulse.so.0")
(string-append (search-input-file inputs "/lib/libpulse.so.0")))))))))
(home-page "https://github.com/mk-fg/python-pulse-control")
(synopsis
"Python bindings for mixer-like controls in PulseAudio")
(description
"This package provides a Python high-level interface and ctypes-based
bindings for PulseAudio (libpulse), to use in simple synchronous code.
This wrapper is mostly for mixer-like controls and introspection-related
operations, as opposed to e.g. submitting sound samples to play and
player-like clients.")
(license license:expat)))
(define-public python-pyliblo (define-public python-pyliblo
(package (package
(name "python-pyliblo") (name "python-pyliblo")
@ -2997,6 +3232,8 @@ including air absorption, occlusion, and environmental reverb, are available
through the EFX extension. It also facilitates streaming audio, multi-channel through the EFX extension. It also facilitates streaming audio, multi-channel
buffers, and audio capture.") buffers, and audio capture.")
(home-page "https://openal-soft.org/") (home-page "https://openal-soft.org/")
(properties
'((upstream-name . "openal-soft")))
(license license:lgpl2.0+))) (license license:lgpl2.0+)))
(define-public freealut (define-public freealut
@ -3088,19 +3325,23 @@ different audio devices such as ALSA or PulseAudio.")
(define-public qjackctl (define-public qjackctl
(package (package
(name "qjackctl") (name "qjackctl")
(version "0.9.7") (version "0.9.8")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "mirror://sourceforge/qjackctl/qjackctl/" (uri (string-append "mirror://sourceforge/qjackctl/qjackctl/"
version "/qjackctl-" version ".tar.gz")) version "/qjackctl-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32
"104hfvr15v8cbkzil8slrqj48y3fl7lx060alj80q1sjh5hl6j2j")))) "1rvxgxd7bbv7yazcpw3ily0jlra8ms5c0kkf7cybgivahw59zk87"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments (arguments
'(#:tests? #f)) ; no check target '(#:tests? #f)) ; no check target
(inputs (inputs
(list jack-1 alsa-lib portaudio qtbase-5 qtx11extras)) (list alsa-lib
jack-1
portaudio
qtbase-5
qtsvg-5))
(native-inputs (native-inputs
(list pkg-config qttools-5)) (list pkg-config qttools-5))
(home-page "https://qjackctl.sourceforge.io/") (home-page "https://qjackctl.sourceforge.io/")
@ -3587,7 +3828,8 @@ analysis plugins or audio feature extraction plugins.")
(symlink (symlink
(search-input-file inputs (search-input-file inputs
(string-append "/share/automake-" (string-append "/share/automake-"
,(package-version automake) ,(version-major+minor
(package-version automake))
"/ar-lib")) "/ar-lib"))
"ar-lib") "ar-lib")
#t))))) #t)))))
@ -4315,7 +4557,7 @@ simplified, although really accurate, measuring tools.")
,home-page)) ,home-page))
#t)))) #t))))
(build-system gnu-build-system) (build-system gnu-build-system)
(inputs (list ffmpeg sox)) (inputs (list ffmpeg-4 sox))
(synopsis "Tool to adjust loudness of media files") (synopsis "Tool to adjust loudness of media files")
(description (description
"BS1770GAIN is a loudness scanner compliant with ITU-R BS.1770 and its "BS1770GAIN is a loudness scanner compliant with ITU-R BS.1770 and its
@ -4701,7 +4943,7 @@ representations.")
(define-public cava (define-public cava
(package (package
(name "cava") (name "cava")
(version "0.7.4") (version "0.8.3")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -4710,15 +4952,7 @@ representations.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"1mziklmqifhnb4kg9ia2r56r8wjn6xp40bkpf484hsgqvnrccl86")) "0v0l6al3ygj6lq224ddffb1f10yv4218k7l82hbba8d7dj2rc67b"))))
(modules '((guix build utils)))
(snippet
#~(begin
(delete-file-recursively "iniparser")
(substitute* "configure.ac"
(("AC_CONFIG_FILES\\(iniparser/Makefile\\)") ""))
(substitute* "Makefile.am"
(("SUBDIRS = iniparser") ""))))))
(build-system gnu-build-system) (build-system gnu-build-system)
(native-inputs (list autoconf automake libtool)) (native-inputs (list autoconf automake libtool))
(inputs (list fftw ncurses pulseaudio iniparser)) (inputs (list fftw ncurses pulseaudio iniparser))
@ -4748,7 +4982,7 @@ representations.")
(string-append #$output (string-append #$output
"/share/doc/examples"))) "/share/doc/examples")))
(find-files "example_files"))))))) (find-files "example_files")))))))
(home-page "https://karlstav.github.io/cava/") (home-page "https://github.com/karlstav/cava")
(synopsis "Console audio visualizer for ALSA, MPD, and PulseAudio") (synopsis "Console audio visualizer for ALSA, MPD, and PulseAudio")
(description "C.A.V.A. is a bar audio spectrum visualizer for the terminal (description "C.A.V.A. is a bar audio spectrum visualizer for the terminal
using ALSA, MPD, PulseAudio, or a FIFO buffer as its input.") using ALSA, MPD, PulseAudio, or a FIFO buffer as its input.")
@ -4816,10 +5050,41 @@ library supports sample rates up to 96 kHz and up to eight channels (7.1
(license (license:fsf-free "https://github.com/mstorsjo/fdk-aac/blob/master/NOTICE" (license (license:fsf-free "https://github.com/mstorsjo/fdk-aac/blob/master/NOTICE"
"https://www.gnu.org/licenses/license-list.html#fdk")))) "https://www.gnu.org/licenses/license-list.html#fdk"))))
(define-public libfreeaptx
(package
(name "libfreeaptx")
(version "0.1.1")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/iamthehorker/libfreeaptx")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"1fm5041nd08yzg0m9474g0943lb3x54zmn59b53nhvxan8x22ibq"))))
(build-system gnu-build-system)
(arguments
(list #:tests? #f ;no tests.
#:make-flags
#~(list
(string-append "PREFIX=" #$output)
(string-append "LDFLAGS=" "-Wl,-rpath=" #$output "/lib")
(string-append "CC=" #$(cc-for-target)))
#:phases
#~(modify-phases %standard-phases
(delete 'configure))))
(home-page "https://github.com/iamthehorker/libfreeaptx")
(synopsis "aptX codec library")
(description "libfreeaptx is an implementation of the Audio Processing
Technology codecs aptX and aptX HD, mainly intended for use with an A2DP
bluetooth profile.")
(license license:lgpl2.1+)))
(define-public libopenshot-audio (define-public libopenshot-audio
(package (package
(name "libopenshot-audio") (name "libopenshot-audio")
(version "0.2.2") (version "0.3.0")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -4828,7 +5093,7 @@ library supports sample rates up to 96 kHz and up to eight channels (7.1
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"03dygh85riljk7dpn5a5a0d22a2kz45fs13gzwqgnbzzr1k17p2y")))) "1y3apyn71ysks88bv71knjvk832imnbpbb8mgib3q9b8pvdmjw3g"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(inputs (inputs
(list alsa-lib (list alsa-lib
@ -4854,7 +5119,7 @@ library.")
(define-public faudio (define-public faudio
(package (package
(name "faudio") (name "faudio")
(version "21.10") (version "22.11")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -4863,7 +5128,7 @@ library.")
(commit version))) (commit version)))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 "0l9bicg8v1shsyq9k48zh4wv5kwfs6lfjmm9blzd13xrgmhd07w2")))) (base32 "0jdfslxgzysqy0r3nfbsyj6dz0n36fncbsczm9zznxv5phic7g87"))))
(arguments (arguments
'(#:tests? #f ; No tests. '(#:tests? #f ; No tests.
#:configure-flags '("-DGSTREAMER=ON"))) #:configure-flags '("-DGSTREAMER=ON")))
@ -4942,7 +5207,7 @@ stream to one or more IceCast and/or ShoutCast servers.")
(define-public libltc (define-public libltc
(package (package
(name "libltc") (name "libltc")
(version "1.3.1") (version "1.3.2")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -4950,8 +5215,7 @@ stream to one or more IceCast and/or ShoutCast servers.")
(string-append "https://github.com/x42/libltc/releases/download/v" (string-append "https://github.com/x42/libltc/releases/download/v"
version "/libltc-" version ".tar.gz")) version "/libltc-" version ".tar.gz"))
(sha256 (sha256
(base32 (base32 "0j8j7cnw02arh8122d13bwkps1c0mi2xqq55gyi2bs91dk6l4v8a"))))
"173h9dgmain3nyrwk6q2d7yl4fnh4vacag4s2p01n5b7nyrkxrjh"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:parallel-tests? #f)) ;tests fail otherwise `(#:parallel-tests? #f)) ;tests fail otherwise
@ -5843,7 +6107,7 @@ and DSD streams.")
(define-public qpwgraph (define-public qpwgraph
(package (package
(name "qpwgraph") (name "qpwgraph")
(version "0.3.5") (version "0.3.9")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -5852,12 +6116,12 @@ and DSD streams.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"01f4zabn22dp0yl7szxck6gkbayk1p5iqajfgzls7mdkba7515b6")))) "1zdqgn2a139bazazbccpb65zn7qdynndwm9mafq54nkpa7n7lri8"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments (list #:tests? #f)) ;; no tests (arguments (list #:tests? #f)) ;; no tests
(inputs (list alsa-lib (inputs (list alsa-lib
libxkbcommon libxkbcommon
pipewire-0.3 pipewire
qtbase qtbase
qtsvg)) qtsvg))
(native-inputs (list pkg-config)) (native-inputs (list pkg-config))

View file

@ -43,6 +43,7 @@
(method url-fetch) (method url-fetch)
(uri (string-append "https://download.savannah.nongnu.org/releases/" (uri (string-append "https://download.savannah.nongnu.org/releases/"
name "/" name "-" version ".tar.gz")) name "/" name "-" version ".tar.gz"))
(patches (search-patches "oath-toolkit-xmlsec-compat.patch"))
(sha256 (sha256
(base32 "1aa620k05lsw3l3slkp2mzma40q3p9wginspn9zk8digiz7dzv9n")))) (base32 "1aa620k05lsw3l3slkp2mzma40q3p9wginspn9zk8digiz7dzv9n"))))
(build-system gnu-build-system) (build-system gnu-build-system)
@ -93,7 +94,7 @@ data.")
(define-public oauth2l (define-public oauth2l
(package (package
(name "oauth2l") (name "oauth2l")
(version "1.2.2") (version "1.3.0")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -102,7 +103,7 @@ data.")
(commit (string-append "v" version)))) (commit (string-append "v" version))))
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 "0a9x0b31ybyjg0k7923xw6zr6crm0kigcn8g6hyr228nbvw35r8w")))) (base32 "0010870xdhf0aysrs2vhl3yxd4gh87qp7mjpyp7qy1n2rz55pgbc"))))
(build-system go-build-system) (build-system go-build-system)
(arguments (arguments
'(#:import-path "github.com/google/oauth2l")) '(#:import-path "github.com/google/oauth2l"))

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -0,0 +1,99 @@
# -*- coding: utf-8 -*-
# GNU Guix --- Functional package management for GNU
# Copyright © 2021, 2022 Lars-Dominik Braun <lars@6xq.net>
#
# 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/>.
# This version adds a small change to accommodate missing python-setuptools.
# TODO: Merge with sanity-check.py in the next core-updates cycle.
from __future__ import print_function # Python 2 support.
import importlib
import sys
import traceback
try:
import pkg_resources
except ImportError:
print('Warning: Skipping, because python-setuptools are not available.')
sys.exit(0)
try:
from importlib.machinery import PathFinder
except ImportError:
PathFinder = None
ret = 0
# Only check site-packages installed by this package, but not dependencies
# (which pkg_resources.working_set would include). Path supplied via argv.
ws = pkg_resources.find_distributions(sys.argv[1])
for dist in ws:
print('validating', repr(dist.project_name), dist.location)
try:
print('...checking requirements: ', end='')
req = str(dist.as_requirement())
# dist.activate() is not enough to actually check requirements, we
# have to .require() it.
pkg_resources.require(req)
print('OK')
except Exception as e:
print('ERROR:', req, repr(e))
ret = 1
continue
# Try to load top level modules. This should not have any side-effects.
try:
metalines = dist.get_metadata_lines('top_level.txt')
except (KeyError, EnvironmentError):
# distutils (i.e. #:use-setuptools? #f) will not install any metadata.
# This file is also missing for packages built using a PEP 517 builder
# such as poetry.
print('WARNING: cannot determine top-level modules')
continue
for name in metalines:
# Only available on Python 3.
if PathFinder and PathFinder.find_spec(name) is None:
# Ignore unavailable modules, often C modules, which were not
# installed at the top-level. Cannot use ModuleNotFoundError,
# because it is raised by failed imports too.
continue
try:
print('...trying to load module', name, end=': ')
importlib.import_module(name)
print('OK')
except Exception:
print('ERROR:')
traceback.print_exc(file=sys.stdout)
ret = 1
# Try to load entry points of console scripts too, making sure they
# work. They should be removed if they don't. Other groups may not be
# safe, as they can depend on optional packages.
for group, v in dist.get_entry_map().items():
if group not in {'console_scripts', 'gui_scripts'}:
continue
for name, ep in v.items():
try:
print('...trying to load endpoint', group, name, end=': ')
ep.load()
print('OK')
except Exception:
print('ERROR:')
traceback.print_exc(file=sys.stdout)
ret = 1
sys.exit(ret)

View file

@ -31,10 +31,12 @@
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
#:use-module (guix build-system trivial) #:use-module (guix build-system trivial)
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module (gnu packages check)
#:use-module (gnu packages compression) #:use-module (gnu packages compression)
#:use-module (gnu packages cross-base) #:use-module (gnu packages cross-base)
#:use-module (gnu packages flashing-tools) #:use-module (gnu packages flashing-tools)
#:use-module (gnu packages gcc) #:use-module (gnu packages gcc)
#:use-module (gnu packages llvm)
#:use-module (gnu packages vim)) #:use-module (gnu packages vim))
(define-public avr-binutils (define-public avr-binutils
@ -148,7 +150,7 @@ C++.")
(define-public microscheme (define-public microscheme
(package (package
(name "microscheme") (name "microscheme")
(version "0.9.3") (version "0.9.4")
(source (source
(origin (origin
(method git-fetch) (method git-fetch)
@ -156,7 +158,7 @@ C++.")
(url "https://github.com/ryansuchocki/microscheme") (url "https://github.com/ryansuchocki/microscheme")
(commit (string-append "v" version)))) (commit (string-append "v" version))))
(sha256 (sha256
(base32 "1r3ng4pw1s9yy1h5rafra1rq19d3vmb5pzbpcz1913wz22qdd976")) (base32 "1bflwirpcd58bngbs6hgjfwxl894ni2gpdd4pj10pm2mjhyj5dgw"))
(file-name (git-file-name name version)))) (file-name (git-file-name name version))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
@ -168,7 +170,7 @@ C++.")
#:make-flags #:make-flags
(list (string-append "PREFIX=" (assoc-ref %outputs "out"))))) (list (string-append "PREFIX=" (assoc-ref %outputs "out")))))
(native-inputs (native-inputs
(list unzip xxd)) (list clang cppcheck unzip xxd))
(home-page "https://github.com/ryansuchocki/microscheme/") (home-page "https://github.com/ryansuchocki/microscheme/")
(synopsis "Scheme subset for Atmel microcontrollers") (synopsis "Scheme subset for Atmel microcontrollers")
(description (description

View file

@ -33,11 +33,11 @@
#:use-module (gnu packages flashing-tools) #:use-module (gnu packages flashing-tools)
#:use-module (gnu packages java) #:use-module (gnu packages java)
#:use-module (gnu packages java-graphics) #:use-module (gnu packages java-graphics)
#:use-module (gnu packages java-xml)
#:use-module (gnu packages libusb) #:use-module (gnu packages libusb)
#:use-module (gnu packages pkg-config) #:use-module (gnu packages pkg-config)
#:use-module (gnu packages textutils) #:use-module (gnu packages textutils)
#:use-module (gnu packages version-control) #:use-module (gnu packages version-control))
#:use-module (gnu packages xml))
;; XXX The patch does not apply to libusb 1.0.24. ;; XXX The patch does not apply to libusb 1.0.24.
;; See https://github.com/axoloti/axoloti/issues/464 ;; See https://github.com/axoloti/axoloti/issues/464
@ -98,8 +98,6 @@
(srfi srfi-26) (srfi srfi-26)
(ice-9 match) (ice-9 match)
(ice-9 regex)) (ice-9 regex))
#:imported-modules ((guix build syscalls)
,@%gnu-build-system-modules)
#:phases #:phases
(modify-phases %standard-phases (modify-phases %standard-phases
(add-after 'unpack 'patch-paths (add-after 'unpack 'patch-paths
@ -232,7 +230,6 @@ runtime.")
(sxml xpath) (sxml xpath)
(sxml transform)) (sxml transform))
#:imported-modules ((guix build ant-build-system) #:imported-modules ((guix build ant-build-system)
(guix build syscalls)
,@%gnu-build-system-modules) ,@%gnu-build-system-modules)
#:phases #:phases
(modify-phases %standard-phases (modify-phases %standard-phases
@ -390,7 +387,6 @@ patcher application.")))
(sxml xpath) (sxml xpath)
(sxml transform)) (sxml transform))
#:imported-modules ((guix build ant-build-system) #:imported-modules ((guix build ant-build-system)
(guix build syscalls)
,@%gnu-build-system-modules) ,@%gnu-build-system-modules)
#:phases #:phases
(modify-phases %standard-phases (modify-phases %standard-phases

View file

@ -15,7 +15,7 @@
;;; Copyright © 2019 Alex Vong <alexvong1995@gmail.com> ;;; Copyright © 2019 Alex Vong <alexvong1995@gmail.com>
;;; Copyright © 2019, 2022 Marius Bakke <marius@gnu.org> ;;; Copyright © 2019, 2022 Marius Bakke <marius@gnu.org>
;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com> ;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
;;; Copyright © 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr> ;;; Copyright © 2020, 2022 Nicolas Goaziou <mail@nicolasgoaziou.fr>
;;; Copyright © 2020 Marcin Karpezo <sirmacik@wioo.waw.pl> ;;; Copyright © 2020 Marcin Karpezo <sirmacik@wioo.waw.pl>
;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de> ;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
;;; Copyright © 2021 Timothy Sample <samplet@ngyro.com> ;;; Copyright © 2021 Timothy Sample <samplet@ngyro.com>
@ -323,7 +323,8 @@ reading and writing archives compressed using various compression filters such
as gzip and bzip2. The library is inherently stream-oriented; readers as gzip and bzip2. The library is inherently stream-oriented; readers
serially iterate through the archive, writers serially add things to the serially iterate through the archive, writers serially add things to the
archive. In particular, note that there is currently no built-in support for archive. In particular, note that there is currently no built-in support for
random access nor for in-place modification.") random access nor for in-place modification. This package provides the
@command{bsdcat}, @command{bsdcpio} and @command{bsdtar} commands.")
(license license:bsd-2))) (license license:bsd-2)))
(define-public rdup (define-public rdup
@ -513,7 +514,7 @@ rdiff-backup is easy to use and settings have sensible defaults.")
(define-public rsnapshot (define-public rsnapshot
(package (package
(name "rsnapshot") (name "rsnapshot")
(version "1.4.4") (version "1.4.5")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
@ -521,7 +522,7 @@ rdiff-backup is easy to use and settings have sensible defaults.")
"https://github.com/rsnapshot/rsnapshot/releases/download/" "https://github.com/rsnapshot/rsnapshot/releases/download/"
version "/rsnapshot-" version ".tar.gz")) version "/rsnapshot-" version ".tar.gz"))
(sha256 (sha256
(base32 "0yc5k2fhm54ypxgm1fsaf8vrg5b7qbvbsqk371n6baf592vprjy1")))) (base32 "0hl2ncld0xkwlnv1cqjmmnld2nlp65alkkdacs11wl95r80mxdqh"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:phases `(#:phases
@ -623,117 +624,114 @@ detection, and lossless compression.")
(define-public borg (define-public borg
(package (package
(name "borg") (name "borg")
(version "1.2.1") (version "1.2.3")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (pypi-uri "borgbackup" version)) (uri (pypi-uri "borgbackup" version))
(sha256 (sha256
(base32 "0cy6chpa053rlvy4448vf9klb5v0v1vq3l76gqa3mcrwjb8y574z")) (base32 "11b7jqv9sw22a9512b270d12k3mrcgmmcaimh6bgm5iwcgw1h973"))
(modules '((guix build utils))) (modules '((guix build utils)))
(snippet (snippet
'(begin #~(begin
;; Delete files generated by Cython. We used to have a regex ;; Delete files generated by Cython. We used to have a regex that
;; that created the list of generated files but Borg has ;; created the list of generated files but Borg has added new
;; added new non-generated C files that cause the regex to ;; non-generated C files that cause the regex to generate the
;; generate the wrong list. ;; wrong list.
(for-each delete-file (for-each delete-file
'("src/borg/algorithms/checksums.c" '("src/borg/algorithms/checksums.c"
"src/borg/chunker.c" "src/borg/chunker.c"
"src/borg/compress.c" "src/borg/compress.c"
"src/borg/crypto/low_level.c" "src/borg/crypto/low_level.c"
"src/borg/hashindex.c" "src/borg/hashindex.c"
"src/borg/item.c" "src/borg/item.c"
"src/borg/platform/darwin.c" "src/borg/platform/darwin.c"
"src/borg/platform/freebsd.c" "src/borg/platform/freebsd.c"
"src/borg/platform/linux.c" "src/borg/platform/linux.c"
"src/borg/platform/posix.c" "src/borg/platform/posix.c"
"src/borg/platform/syncfilerange.c" "src/borg/platform/syncfilerange.c"
"src/borg/platform/windows.c")) "src/borg/platform/windows.c"))
;; Remove bundled shared libraries. ;; Remove bundled shared libraries.
(with-directory-excursion "src/borg/algorithms" (with-directory-excursion "src/borg/algorithms"
(for-each delete-file-recursively (for-each delete-file-recursively
(list "lz4" "xxh64" "zstd"))) (list "lz4" "xxh64" "zstd")))))))
#t))))
(build-system python-build-system) (build-system python-build-system)
(arguments (arguments
`(#:modules ((srfi srfi-26) ; for cut (list
#:modules '((srfi srfi-26) ; for cut
(guix build utils) (guix build utils)
(guix build python-build-system)) (guix build python-build-system))
#:phases #:phases
(modify-phases %standard-phases #~(modify-phases %standard-phases
(add-after 'unpack 'set-env (add-after 'unpack 'set-env
(lambda* (#:key inputs #:allow-other-keys) (lambda* (#:key inputs #:allow-other-keys)
(let ((openssl (assoc-ref inputs "openssl")) (let ((openssl #$(this-package-input "openssl"))
(lz4 (assoc-ref inputs "lz4")) (lz4 #$(this-package-input "lz4"))
(xxhash (assoc-ref inputs "xxhash")) (xxhash #$(this-package-input "xxhash"))
(zstd (assoc-ref inputs "zstd"))) (zstd #$(this-package-input "zstd")))
(setenv "BORG_OPENSSL_PREFIX" openssl) (setenv "BORG_OPENSSL_PREFIX" openssl)
(setenv "BORG_LIBLZ4_PREFIX" lz4) (setenv "BORG_LIBLZ4_PREFIX" lz4)
(setenv "BORG_LIBXXHASH_PREFIX" xxhash) (setenv "BORG_LIBXXHASH_PREFIX" xxhash)
(setenv "BORG_LIBZSTD_PREFIX" zstd) (setenv "BORG_LIBZSTD_PREFIX" zstd)
(setenv "PYTHON_EGG_CACHE" "/tmp") (setenv "PYTHON_EGG_CACHE" "/tmp")
;; The test 'test_return_codes[python]' fails when ;; The test 'test_return_codes[python]' fails when
;; HOME=/homeless-shelter. ;; HOME=/homeless-shelter.
(setenv "HOME" "/tmp") (setenv "HOME" "/tmp"))))
#t))) ;; The tests need to be run after Borg is installed.
;; The tests need to be run after Borg is installed. (delete 'check)
(delete 'check) (add-after 'install 'check
(add-after 'install 'check (lambda* (#:key inputs outputs tests? #:allow-other-keys)
(lambda* (#:key inputs outputs tests? #:allow-other-keys) (when tests?
(when tests? ;; Make the installed package available for the test suite.
;; Make the installed package available for the test suite. (add-installed-pythonpath inputs outputs)
(add-installed-pythonpath inputs outputs) ;; The tests should be run in an empty directory.
;; The tests should be run in an empty directory. (mkdir-p "tests")
(mkdir-p "tests") (with-directory-excursion "tests"
(with-directory-excursion "tests" (invoke "py.test" "-v" "--pyargs" "borg.testsuite" "-k"
(invoke "py.test" "-v" "--pyargs" "borg.testsuite" "-k" (string-append
(string-append ;; These tests need to write to '/var'.
;; These tests need to write to '/var'. "not test_get_cache_dir "
"not test_get_cache_dir " "and not test_get_config_dir "
"and not test_get_config_dir " "and not test_get_keys_dir "
"and not test_get_keys_dir " "and not test_get_security_dir "
"and not test_get_security_dir " ;; These tests assume there is a root user in '/etc/passwd'.
;; These tests assume there is a root user in '/etc/passwd'. "and not test_access_acl "
"and not test_access_acl " "and not test_default_acl "
"and not test_default_acl " "and not test_get_item_uid_gid "
"and not test_get_item_uid_gid " "and not test_non_ascii_acl "
"and not test_non_ascii_acl " "and not test_create_content_from_command "
"and not test_create_content_from_command " "and not test_create_content_from_command_with_failed_command "
"and not test_create_content_from_command_with_failed_command " "and not test_create_stdin "
"and not test_create_stdin " ;; We don't need to run benchmarks
;; We don't need to run benchmarks "and not benchmark "
"and not benchmark " ;; These tests assume the kernel supports FUSE.
;; These tests assume the kernel supports FUSE. "and not test_fuse "
"and not test_fuse " "and not test_fuse_allow_damaged_files "
"and not test_fuse_allow_damaged_files " "and not test_mount_hardlinks "
"and not test_mount_hardlinks " "and not test_readonly_mount "
"and not test_readonly_mount " "and not test_fuse_versions_view "
"and not test_fuse_versions_view " "and not test_migrate_lock_alive"))))))
"and not test_migrate_lock_alive")))))) (add-after 'install 'install-doc
(add-after 'install 'install-doc (lambda _
(lambda* (#:key inputs outputs #:allow-other-keys) (let ((man (string-append #$output "/share/man/man1"))
(let* ((out (assoc-ref outputs "out")) (misc (string-append #$output "/share/borg/misc")))
(man (string-append out "/share/man/man1")) (for-each (cut install-file <> misc)
(misc (string-append out "/share/borg/misc"))) '("docs/misc/create_chunker-params.txt"
(for-each (cut install-file <> misc) "docs/misc/borg-data-flow.png"
'("docs/misc/create_chunker-params.txt" "docs/misc/internals-picture.txt"
"docs/misc/borg-data-flow.png" "docs/misc/prune-example.txt"))
"docs/misc/internals-picture.txt" (copy-recursively "docs/man" man))))
"docs/misc/prune-example.txt")) (add-after 'install-docs 'install-shell-completions
(copy-recursively "docs/man" man)))) (lambda _
(add-after 'install-docs 'install-shell-completions (let ((etc (string-append #$output "/etc"))
(lambda* (#:key outputs #:allow-other-keys) (share (string-append #$output "/share")))
(let* ((out (assoc-ref outputs "out")) (with-directory-excursion "scripts/shell_completions"
(etc (string-append out "/etc")) (install-file "bash/borg"
(share (string-append out "/share"))) (string-append etc "/bash_completion.d"))
(with-directory-excursion "scripts/shell_completions" (install-file "zsh/_borg"
(install-file "bash/borg" (string-append share "/zsh/site-functions"))
(string-append etc "/bash_completion.d")) (install-file "fish/borg.fish"
(install-file "zsh/_borg" (string-append share "/fish/vendor_completions.d")))))))))
(string-append share "/zsh/site-functions"))
(install-file "fish/borg.fish"
(string-append share "/fish/vendor_completions.d")))))))))
(native-inputs (native-inputs
(list python-cython python-dateutil python-setuptools-scm python-pytest)) (list python-cython python-dateutil python-setuptools-scm python-pytest))
(inputs (inputs
@ -745,8 +743,8 @@ detection, and lossless compression.")
;; FUSE 3 isn't working well, so we stick with FUSE 2 for now: ;; FUSE 3 isn't working well, so we stick with FUSE 2 for now:
;; <https://issues.guix.gnu.org/53407> ;; <https://issues.guix.gnu.org/53407>
python-llfuse python-llfuse
`(,zstd "lib") xxhash
xxhash)) `(,zstd "lib")))
(synopsis "Deduplicated, encrypted, authenticated and compressed backups") (synopsis "Deduplicated, encrypted, authenticated and compressed backups")
(description "Borg is a deduplicating backup program. Optionally, it (description "Borg is a deduplicating backup program. Optionally, it
supports compression and authenticated encryption. The main goal of Borg is to supports compression and authenticated encryption. The main goal of Borg is to
@ -1029,7 +1027,7 @@ precious backup space.
(arguments (arguments
`(#:tests? #f)) ;no test `(#:tests? #f)) ;no test
(inputs (inputs
(list lzo libressl protobuf xz zlib)) (list lzo libressl protobuf-3.6 xz zlib))
(home-page "http://zbackup.org") (home-page "http://zbackup.org")
(synopsis "Versatile deduplicating backup tool") (synopsis "Versatile deduplicating backup tool")
(description (description
@ -1081,14 +1079,14 @@ interactive mode.")
(define-public btrbk (define-public btrbk
(package (package
(name "btrbk") (name "btrbk")
(version "0.32.2") (version "0.32.5")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://digint.ch/download/btrbk/releases/" (uri (string-append "https://digint.ch/download/btrbk/releases/"
"btrbk-" version ".tar.xz")) "btrbk-" version ".tar.xz"))
(sha256 (sha256
(base32 (base32
"0gi0j09fm4pgw3dq0z27lkpyvrs3ssyqg9b46v5ba794z63w753z")))) "1d4zqf5klad55gdzzldipsjrhpprixzjmn03g66df5h2d28l1zpi"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
(list (list

View file

@ -21,6 +21,7 @@
;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net> ;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2022 zamfofex <zamfofex@twdb.moe> ;;; Copyright © 2022 zamfofex <zamfofex@twdb.moe>
;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -130,7 +131,22 @@ command-line arguments, multiple languages, and so on.")
(substitute* (list (string-append bin "/egrep") (substitute* (list (string-append bin "/egrep")
(string-append bin "/fgrep")) (string-append bin "/fgrep"))
(("^exec grep") (("^exec grep")
(string-append "exec " bin "/grep"))))))))) (string-append "exec " bin "/grep"))))))
,@(if (hurd-target?)
'((add-before 'check 'skip-triple-backref-test
(lambda _
;; This test is marked as malfunctioning on glibc systems
;; due to
;; <https://sourceware.org/bugzilla/show_bug.cgi?id=11053>
;; and it triggers a segfault with glibc 2.33 on GNU/Hurd.
;; Skip it.
(substitute* "tests/triple-backref"
(("^warn_" all)
(string-append "exit 77\n" all))))))
'()))
#:make-flags ,(if (hurd-target?)
''("XFAIL_TESTS=test-perror2 equiv-classes") ;XXX
''())))
(synopsis "Print lines matching a pattern") (synopsis "Print lines matching a pattern")
(description (description
"grep is a tool for finding text inside files. Text is found by "grep is a tool for finding text inside files. Text is found by
@ -169,6 +185,10 @@ including, for example, recursive directory searching.")
" CONFIG_HEADER='$(CONFIG_HEADER)'\t\t\\\n"))))) " CONFIG_HEADER='$(CONFIG_HEADER)'\t\t\\\n")))))
(modules '((guix build utils))))) (modules '((guix build utils)))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments
`(#:make-flags ,(if (hurd-target?)
''("XFAIL_TESTS=test-perror2")
''())))
(synopsis "Stream editor") (synopsis "Stream editor")
(native-inputs (list perl)) ;for tests (native-inputs (list perl)) ;for tests
(description (description
@ -209,6 +229,8 @@ implementation offers several extensions over the standard utility.")
",!concatenated incremental archives (renames)" ",!concatenated incremental archives (renames)"
",!renamed directory containing subdirectories" ",!renamed directory containing subdirectories"
",!renamed subdirectories" ",!renamed subdirectories"
",!chained renames"
",!Directory"
"'"))) "'")))
'()) '())
#:phases (modify-phases %standard-phases #:phases (modify-phases %standard-phases
@ -280,6 +302,10 @@ differences.")
"1v4g8gi0lgakqa7iix8s4fq7lq6l92vw3rjd9wfd2rhjng8xggd6")) "1v4g8gi0lgakqa7iix8s4fq7lq6l92vw3rjd9wfd2rhjng8xggd6"))
(patches (search-patches "diffutils-fix-signal-processing.patch")))) (patches (search-patches "diffutils-fix-signal-processing.patch"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments
`(#:make-flags ,(if (hurd-target?)
''("XFAIL_TESTS=test-perror2 large-subopt")
''())))
(native-inputs (list perl)) (native-inputs (list perl))
(synopsis "Comparing and merging files") (synopsis "Comparing and merging files")
(description (description
@ -314,7 +340,10 @@ interactive means to merge two files.")
(substitute* '("tests/xargs/verbose-quote.sh" (substitute* '("tests/xargs/verbose-quote.sh"
"tests/find/exec-plus-last-file.sh") "tests/find/exec-plus-last-file.sh")
(("#!/bin/sh") (("#!/bin/sh")
(string-append "#!" (which "sh"))))))))) (string-append "#!" (which "sh")))))))
#:make-flags ,(if (hurd-target?)
''("XFAIL_TESTS=test-perror2")
''())))
(synopsis "Operating on files matching given criteria") (synopsis "Operating on files matching given criteria")
(description (description
"Findutils supplies the basic file directory searching utilities of the "Findutils supplies the basic file directory searching utilities of the
@ -367,12 +396,18 @@ used to apply commands with arbitrarily long arguments.")
" tests/misc/nice.sh" " tests/misc/nice.sh"
" tests/misc/pwd-long.sh" " tests/misc/pwd-long.sh"
" tests/split/fail.sh" " tests/split/fail.sh"
;; /hurd/fifo issue:
;; <https://issues.guix.gnu.org/58803>.
" tests/df/unreadable.sh"
;; Gnulib tests.
" test-fdutimensat" " test-fdutimensat"
" test-futimens" " test-futimens"
" test-linkat" " test-linkat"
" test-perror2"
" test-renameat" " test-renameat"
" test-renameatu" " test-renameatu"
" test-tls"
" test-utimensat"))) " test-utimensat")))
'()) '())
#:phases (modify-phases %standard-phases #:phases (modify-phases %standard-phases
@ -391,7 +426,13 @@ used to apply commands with arbitrarily long arguments.")
,@(if (hurd-target?) ,@(if (hurd-target?)
'((substitute* "Makefile.in" '((substitute* "Makefile.in"
;; this test hangs ;; this test hangs
(("^ *tests/misc/timeout-group.sh.*") ""))) (("^ *tests/misc/timeout-group.sh.*") ""))
(substitute* "gnulib-tests/Makefile.in"
;; This test sometimes fails and sometimes
;; passes, but it does this consistently, so
;; there might be some environmental factor
;; here
((" test-tls\\$\\(EXEEXT\\) ") " ")))
'()) '())
(substitute* "Makefile.in" (substitute* "Makefile.in"
;; fails on filesystems where inotify cannot be used, ;; fails on filesystems where inotify cannot be used,
@ -975,6 +1016,20 @@ with the Linux kernel.")
(license lgpl2.0+) (license lgpl2.0+)
(home-page "https://www.gnu.org/software/libc/"))) (home-page "https://www.gnu.org/software/libc/")))
;; Define a variation of glibc which uses the default /etc/ld.so.cache, useful
;; in FHS containers.
(define-public glibc-for-fhs
(hidden-package
(package/inherit glibc
(name "glibc-for-fhs")
(source (origin (inherit (package-source glibc))
;; Remove Guix's patch to read ld.so.cache from /gnu/store
;; directories, re-enabling the default /etc/ld.so.cache
;; behavior.
(patches
(delete (search-patch "glibc-dl-cache.patch")
(origin-patches (package-source glibc)))))))))
;; Below are old libc versions, which we use mostly to build locale data in ;; Below are old libc versions, which we use mostly to build locale data in
;; the old format (which the new libc cannot cope with.) ;; the old format (which the new libc cannot cope with.)
(define-public glibc-2.32 (define-public glibc-2.32

View file

@ -466,8 +466,7 @@ you to call routines in shared libraries from within Bash.")
(lambda _ (lambda _
(substitute* "ble.pp" (substitute* "ble.pp"
(("PATH=/bin:/usr/bin readlink") (("PATH=/bin:/usr/bin readlink")
(search-input-file %build-inputs "readlink"))))
"/bin/readlink")))))
(delete 'configure) ;no configure (delete 'configure) ;no configure
(add-before 'check 'use-LANG-for-tests (add-before 'check 'use-LANG-for-tests
(lambda _ (lambda _

View file

@ -27,8 +27,8 @@
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module (gnu packages compression) #:use-module (gnu packages compression)
#:use-module (gnu packages java) #:use-module (gnu packages java)
#:use-module (gnu packages textutils) #:use-module (gnu packages java-xml)
#:use-module (gnu packages xml)) #:use-module (gnu packages textutils))
(define-public java-w3c-smil-3.0 (define-public java-w3c-smil-3.0
(package (package

View file

@ -11,6 +11,7 @@
;;; Copyright © 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2020 Greg Hogan <code@greghogan.com> ;;; Copyright © 2020 Greg Hogan <code@greghogan.com>
;;; Copyright © 2021 Arun Isaac <arunisaac@systemreboot.net> ;;; Copyright © 2021 Arun Isaac <arunisaac@systemreboot.net>
;;; Copyright © 2022 Tomasz Jeneralczyk <tj@schwi.pl>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -36,6 +37,7 @@
#:use-module (guix build-system cmake) #:use-module (guix build-system cmake)
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
#:use-module (guix build-system python) #:use-module (guix build-system python)
#:use-module (guix build-system meson)
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module (gnu packages autotools) #:use-module (gnu packages autotools)
#:use-module (gnu packages base) #:use-module (gnu packages base)
@ -46,6 +48,9 @@
#:use-module (gnu packages databases) #:use-module (gnu packages databases)
#:use-module (gnu packages docbook) #:use-module (gnu packages docbook)
#:use-module (gnu packages kde-frameworks) #:use-module (gnu packages kde-frameworks)
#:use-module (gnu packages freedesktop)
#:use-module (gnu packages gl)
#:use-module (gnu packages graphics)
#:use-module (gnu packages linux) #:use-module (gnu packages linux)
#:use-module (gnu packages lua) #:use-module (gnu packages lua)
#:use-module (gnu packages maths) #:use-module (gnu packages maths)
@ -60,6 +65,8 @@
#:use-module (gnu packages python-web) #:use-module (gnu packages python-web)
#:use-module (gnu packages python-xyz) #:use-module (gnu packages python-xyz)
#:use-module (gnu packages qt) #:use-module (gnu packages qt)
#:use-module (gnu packages vulkan)
#:use-module (gnu packages xorg)
#:use-module (gnu packages xml) #:use-module (gnu packages xml)
#:use-module (ice-9 match)) #:use-module (ice-9 match))
@ -72,14 +79,14 @@
(define-public fio (define-public fio
(package (package
(name "fio") (name "fio")
(version "3.31") (version "3.33")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://brick.kernel.dk/snaps/" (uri (string-append "https://brick.kernel.dk/snaps/"
"fio-" version ".tar.bz2")) "fio-" version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"03x0n18f2wsyjh6qv57kvgqcwga54rzngwzr6fzlrjsalqw7mxlp")))) "083c1w8jqkvyw7wcy69142inlikzmk1k78mk973rnqdp3a7798qb"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
(list #:modules (list #:modules
@ -693,3 +700,46 @@ user-provided Lua scripts.
@item @item
@end itemize") @end itemize")
(license license:gpl2+))) (license license:gpl2+)))
(define-public vkmark
;; The only ever release is tagged "2017.08" and as its name suggests
;; it was back in the august of 2017. That version no longer compiles
;; due to changes in APIs of its libraries.
;; Latest commit on the other hand seems to be fully working on xcb
;; and wayland backends.
(let ((commit "30d2cd37f0566589d90914501fc7c51a4e51f559")
(revision "0"))
(package
(name "vkmark")
(version (git-version "2017.08" revision commit))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/vkmark/vkmark")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"0w0n080sb67s7dbxqi71h0vhm6dccs78rqjnxx9x524jp4jh9b7x"))))
(build-system meson-build-system)
(native-inputs (list pkg-config))
;; The kms backend currently will not compile because of upstream issues.
;; So I omitted this backend's dependiencies. A fix has been proposed
;; on another branch, but it has not been merged yet.
;; See https://github.com/vkmark/vkmark/issues/33
(inputs
(list vulkan-loader
vulkan-headers
glm
assimp
libxcb
xcb-util-wm
wayland-protocols
wayland))
(home-page "https://github.com/vkmark/vkmark")
(synopsis "Extensible benchmarking suite for Vulkan")
(description
"vkmark offers a suite of scenes that can be used to measure various
aspects of Vulkan performance. The way in which each scene is rendered is
configurable through a set of options.")
(license license:lgpl2.1+))))

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

File diff suppressed because it is too large Load diff

View file

@ -313,7 +313,8 @@ or false to signal an error."
(%current-system)))) (%current-system))))
"Return the name of Glibc's dynamic linker for SYSTEM." "Return the name of Glibc's dynamic linker for SYSTEM."
;; See the 'SYSDEP_KNOWN_INTERPRETER_NAMES' cpp macro in libc. ;; See the 'SYSDEP_KNOWN_INTERPRETER_NAMES' cpp macro in libc.
(let ((platform (lookup-platform-by-system system))) (let ((platform (false-if-platform-not-found
(lookup-platform-by-system system))))
(cond (cond
((platform? platform) ((platform? platform)
(platform-glibc-dynamic-linker platform)) (platform-glibc-dynamic-linker platform))

View file

@ -1,5 +1,6 @@
;;; GNU Guix --- Functional package management for GNU ;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2022 Christopher Rodriguez <yewscion@gmail.com> ;;; Copyright © 2022 Christopher Rodriguez <yewscion@gmail.com>
;;; Copyright © 2022 Liliana Marie Prikler <liliana.prikler@gmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -32,7 +33,6 @@
#:use-module (gnu packages pkg-config) #:use-module (gnu packages pkg-config)
#:use-module (gnu packages llvm) #:use-module (gnu packages llvm)
#:use-module (gnu packages java) #:use-module (gnu packages java)
#:use-module (gnu packages linux)
#:use-module (gnu packages compression)) #:use-module (gnu packages compression))
(define-public dbqn (define-public dbqn
@ -54,7 +54,6 @@
(arguments (arguments
(list (list
#:imported-modules `(,@%gnu-build-system-modules #:imported-modules `(,@%gnu-build-system-modules
(guix build syscalls)
(guix build ant-build-system)) (guix build ant-build-system))
#:modules `((guix build gnu-build-system) #:modules `((guix build gnu-build-system)
((guix build ant-build-system) ((guix build ant-build-system)
@ -92,9 +91,8 @@
(dest-jar (string-append out "/share/java"))) (dest-jar (string-append out "/share/java")))
(mkdir-p dest-bin) (mkdir-p dest-bin)
(mkdir-p dest-jar) (mkdir-p dest-jar)
(copy-recursively "BQN" (rename-file "BQN" "dbqn")
(string-append dest-bin (install-file "dbqn" dest-bin)
"/dbqn"))
(install-file "BQN.jar" dest-jar) (install-file "BQN.jar" dest-jar)
(substitute* (string-append dest-bin "/dbqn") (substitute* (string-append dest-bin "/dbqn")
(("BQN.jar") (("BQN.jar")
@ -114,7 +112,7 @@ the same author.")
;; Aside from dbqn above, the main bqn repository is used by other ;; Aside from dbqn above, the main bqn repository is used by other
;; implementations as a "known good" set of sources. CBQN uses dbqn to ;; implementations as a "known good" set of sources. CBQN uses dbqn to
;; generate an intermediate bytecode for its own compilation. ;; generate an intermediate bytecode for its own compilation.
(let ((commit "e219af48401473a7bac49bdd8b89d69082cf5dd8")) (let ((commit "71ce36141aaacfa714edca2e408ca522a3bc5554"))
(origin (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -122,14 +120,14 @@ the same author.")
(commit commit))) (commit commit)))
(file-name (git-file-name "bqn-sources" commit)) (file-name (git-file-name "bqn-sources" commit))
(sha256 (sha256
(base32 "0r6pa9lscl2395g4xlvmg90vpdsjzhin4f1r0s7brymmpvmns2yc"))))) (base32 "060a3r5m7hynzxj4iz1av2kj5jf8w3j8yswzzx9wkx31rdrsiv2c")))))
(define cbqn-bootstrap (define cbqn-bootstrap
(let* ((revision "1") (let* ((revision "2")
(commit "9c1cbdc99863b1da0116df61cd832137b196dc5c")) (commit "66584ce1491d300746963b8ed17170348b2a03e6"))
(package (package
(name "cbqn-bootstrap") (name "cbqn-bootstrap")
(version (git-version "0" "1" commit)) (version (git-version "0" revision commit))
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -138,25 +136,27 @@ the same author.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"0w38fhwf20drkyijy6nfnhmc5g5gw0zmzgmy1q605x57znlj85a2")))) "13gg96aa56b8k08bjvv8i0f5nxrah2sij7g6pg7i21fdv08rd9iv"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
(list #:tests? #f ;skipping tests for bootstrap (list
#:phases #~(modify-phases %standard-phases #:tests? #f ; skipping tests for bootstrap
(delete 'configure) #:make-flags #~(list (string-append "CC=" #$(cc-for-target)))
(add-before 'build 'generate-bytecode #:phases
(lambda* (#:key inputs #:allow-other-keys) #~(modify-phases %standard-phases
(system (string-append #+dbqn (delete 'configure)
"/bin/dbqn ./genRuntime " (add-before 'build 'generate-bytecode
#+bqn-sources)))) (lambda* (#:key inputs #:allow-other-keys)
(replace 'install (system (string-append #+dbqn
(lambda* (#:key outputs #:allow-other-keys) "/bin/dbqn ./genRuntime "
(mkdir-p (string-append #$output "/bin")) #+bqn-sources))))
(chmod "BQN" #o755) (replace 'install
(copy-recursively "BQN" (lambda* (#:key outputs #:allow-other-keys)
(string-append #$output (mkdir-p (string-append #$output "/bin"))
"/bin/bqn"))))))) (chmod "BQN" #o755)
(native-inputs (list dbqn clang-toolchain bqn-sources)) (rename-file "BQN" "bqn")
(install-file "bqn" (string-append #$output "/bin")))))))
(native-inputs (list dbqn bqn-sources))
(inputs (list icedtea-8 libffi)) (inputs (list icedtea-8 libffi))
(synopsis "BQN implementation in C") (synopsis "BQN implementation in C")
(description "This package provides the reference implementation of (description "This package provides the reference implementation of
@ -165,60 +165,42 @@ by APL.")
(home-page "https://mlochbaum.github.io/BQN/") (home-page "https://mlochbaum.github.io/BQN/")
(license license:gpl3)))) (license license:gpl3))))
(define singeli-sources
(let ((commit "fd17b144483549dbd2bcf23e3a37a09219171a99"))
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/mlochbaum/Singeli")
(commit commit)))
(file-name (git-file-name "singeli-sources" commit))
(sha256
(base32 "1rr4l7ijzcg25n2igi1mzya6qllh5wsrf3m5i429rlgwv1fwvfji")))))
(define-public cbqn (define-public cbqn
(package (package
(inherit cbqn-bootstrap) (inherit cbqn-bootstrap)
(name "cbqn") (name "cbqn")
(outputs '("out" "lib")) (outputs '("out" "lib"))
(arguments (arguments
(list #:make-flags '(list "shared-o3" "o3n-singeli") (substitute-keyword-arguments (strip-keyword-arguments
#:phases #~(modify-phases %standard-phases (list #:tests?)
(delete 'configure) (package-arguments cbqn-bootstrap))
(add-before 'build 'link-singeli ((#:make-flags flags #~(list))
(lambda* (#:key inputs #:allow-other-keys) #~(cons* "shared-o3" "o3" #$flags))
(symlink #+singeli-sources "Singeli"))) ((#:phases phases #~%standard-phases)
(add-before 'build 'generate-bytecode #~(modify-phases #$phases
(lambda* (#:key inputs #:allow-other-keys) (replace 'check
(system (string-append #+dbqn (lambda* (#:key inputs tests? #:allow-other-keys)
"/bin/dbqn ./genRuntime " (when tests?
#+bqn-sources)))) (system (string-append "./BQN -M 1000 \""
(replace 'check #+bqn-sources
(lambda* (#:key inputs tests? #:allow-other-keys) "/test/this.bqn\""))
(when tests? (map (lambda (x)
(system (string-append "./BQN -M 1000 \"" (system (string-append "./BQN ./test/" x
#+bqn-sources ".bqn")))
"/test/this.bqn\"")) '("cmp" "equal" "copy" "random"))
(map (lambda (x) (system "make -C test/ffi"))))
(system (string-append "./BQN ./test/" x (replace 'install
".bqn"))) (lambda* (#:key outputs #:allow-other-keys)
'("cmp" "equal" "copy" "random")) (let* ((bin (string-append (assoc-ref outputs "out")
(system "make -C test/ffi")))) "/bin"))
(replace 'install (lib (string-append (assoc-ref outputs "lib")
(lambda* (#:key outputs #:allow-other-keys) "/lib")))
(let* ((bin (string-append (assoc-ref outputs (mkdir-p bin)
"out") (rename-file "BQN" "bqn")
"/bin")) (install-file "bqn" bin)
(lib (string-append (assoc-ref outputs (install-file "libcbqn.so" lib))))))))
"lib")
"/lib")))
(mkdir-p bin)
(copy-recursively "BQN"
(string-append bin "/bqn"))
(install-file "libcbqn.so" lib)))))))
(native-inputs (list dbqn (native-inputs (list dbqn
bqn-sources bqn-sources
singeli-sources libffi))
libffi (properties
clang-toolchain `((tunable? . #t)))))
linux-libre-headers))))

View file

@ -51,7 +51,7 @@ supported content to the Kodi media center.")
(define ublock-origin (define ublock-origin
(package (package
(name "ublock-origin") (name "ublock-origin")
(version "1.44.2") (version "1.45.2")
(home-page "https://github.com/gorhill/uBlock") (home-page "https://github.com/gorhill/uBlock")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
@ -62,7 +62,7 @@ supported content to the Kodi media center.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"0hci19wv5sj4vph8k24bmcz7q74y1adyykwijqyga4p7h68jklw1")))) "0dz1rcphm8cbc2qdd41ahbsqskmqcf2ja6zx0vq0dswnakpc3lyd"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(outputs '("xpi" "firefox" "chromium")) (outputs '("xpi" "firefox" "chromium"))
(arguments (arguments

View file

@ -14,6 +14,7 @@
;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il> ;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
;;; Copyright © 2021 qblade <qblade@protonmail.com> ;;; Copyright © 2021 qblade <qblade@protonmail.com>
;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com> ;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
;;; Copyright © 2022 Juliana Sims <jtsims@protonmail.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -31,6 +32,7 @@
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>. ;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (gnu packages build-tools) (define-module (gnu packages build-tools)
#:use-module (ice-9 optargs)
#:use-module ((guix licenses) #:prefix license:) #:use-module ((guix licenses) #:prefix license:)
#:use-module (guix utils) #:use-module (guix utils)
#:use-module (guix packages) #:use-module (guix packages)
@ -38,20 +40,28 @@
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix git-download) #:use-module (guix git-download)
#:use-module (guix build-system cmake) #:use-module (guix build-system cmake)
#:use-module (guix build-system copy)
#:use-module (guix modules)
#:use-module (gnu packages) #:use-module (gnu packages)
#:use-module (gnu packages adns) #:use-module (gnu packages adns)
#:use-module (gnu packages autotools)
#:use-module (gnu packages base) #:use-module (gnu packages base)
#:use-module (gnu packages bash) #:use-module (gnu packages bash)
#:use-module (gnu packages check) #:use-module (gnu packages check)
#:use-module (gnu packages code)
#:use-module (gnu packages compression) #:use-module (gnu packages compression)
#:use-module (gnu packages cpp) #:use-module (gnu packages cpp)
#:use-module (gnu packages cppi)
#:use-module (gnu packages elf) #:use-module (gnu packages elf)
#:use-module (gnu packages gcc)
#:use-module (gnu packages linux) #:use-module (gnu packages linux)
#:use-module (gnu packages lisp)
#:use-module (gnu packages logging) #:use-module (gnu packages logging)
#:use-module (gnu packages lua) #:use-module (gnu packages lua)
#:use-module (gnu packages ninja) #:use-module (gnu packages ninja)
#:use-module (gnu packages package-management) #:use-module (gnu packages package-management)
#:use-module (gnu packages pcre) #:use-module (gnu packages pcre)
#:use-module (gnu packages perl)
#:use-module (gnu packages pkg-config) #:use-module (gnu packages pkg-config)
#:use-module (gnu packages pretty-print) #:use-module (gnu packages pretty-print)
#:use-module (gnu packages protobuf) #:use-module (gnu packages protobuf)
@ -64,6 +74,7 @@
#:use-module (gnu packages rpc) #:use-module (gnu packages rpc)
#:use-module (gnu packages sqlite) #:use-module (gnu packages sqlite)
#:use-module (gnu packages tls) #:use-module (gnu packages tls)
#:use-module (gnu packages unicode)
#:use-module (gnu packages version-control) #:use-module (gnu packages version-control)
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
#:use-module (guix build-system python)) #:use-module (guix build-system python))
@ -134,13 +145,13 @@ makes a few sacrifices to acquire fast full and incremental build times.")
(invoke "ctest"))))))) (invoke "ctest")))))))
(inputs (inputs
`(("c-ares" ,c-ares) `(("c-ares" ,c-ares)
("fmt" ,fmt) ("fmt" ,fmt-8)
("grpc" ,grpc) ("grpc" ,grpc)
("json-modern-cxx" ,json-modern-cxx) ("json-modern-cxx" ,json-modern-cxx)
("protobuf" ,protobuf) ("protobuf" ,protobuf)
("python" ,python-wrapper) ("python" ,python-wrapper)
("re2" ,re2) ("re2" ,re2)
("spdlog" ,spdlog))) ("spdlog" ,spdlog-1.10)))
(native-inputs (native-inputs
`(("abseil-cpp" ,abseil-cpp) `(("abseil-cpp" ,abseil-cpp)
("googletest" ,googletest) ("googletest" ,googletest)
@ -203,8 +214,8 @@ programs and other files depend.")
(license license:bsd-3))) (license license:bsd-3)))
(define-public gn (define-public gn
(let ((commit "e327ffdc503815916db2543ec000226a8df45163") (let ((commit "1c4151ff5c1d6fbf7fa800b8d4bb34d3abc03a41")
(revision "1819")) ;as returned by `git describe`, used below (revision "2072")) ;as returned by `git describe`, used below
(package (package
(name "gn") (name "gn")
(version (git-version "0.0" revision commit)) (version (git-version "0.0" revision commit))
@ -214,49 +225,56 @@ programs and other files depend.")
(uri (git-reference (url home-page) (commit commit))) (uri (git-reference (url home-page) (commit commit)))
(sha256 (sha256
(base32 (base32
"0kvlfj3www84zp1vmxh76x8fdjm9hyk8lkh2vdsidafpmm75fphr")) "02621c9nqpr4pwcapy31x36l5kbyd0vdgd0wdaxj5p8hrxk67d6b"))
(file-name (git-file-name name version)))) (file-name (git-file-name name version))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
`(#:phases (modify-phases %standard-phases (list #:phases
(add-before 'configure 'set-build-environment #~(modify-phases %standard-phases
(lambda _ (add-before 'configure 'set-build-environment
(setenv "CC" "gcc") (setenv "CXX" "g++") (lambda _
(setenv "AR" "ar"))) (setenv "CC" "gcc")
(replace 'configure (setenv "CXX" "g++")
(lambda _ (setenv "AR" "ar")))
(invoke "python" "build/gen.py" (replace 'configure
"--no-last-commit-position"))) (lambda _
(add-after 'configure 'create-last-commit-position (invoke "python" "build/gen.py"
(lambda _ "--no-last-commit-position")))
;; Create "last_commit_position.h" to avoid a dependency (add-after 'configure 'create-last-commit-position
;; on 'git' (and the checkout..). (lambda _
(call-with-output-file "out/last_commit_position.h" ;; Mimic GenerateLastCommitPosition from gen.py.
(lambda (port) (call-with-output-file "out/last_commit_position.h"
(format port (lambda (port)
(string-append (format port
"#define LAST_COMMIT_POSITION_NUM ~a\n" "// Generated by Guix.
"#define LAST_COMMIT_POSITION \"~a (~a)\"\n")
,revision ,revision ,(string-take commit 8)))))) #ifndef OUT_LAST_COMMIT_POSITION_H_
(replace 'build #define OUT_LAST_COMMIT_POSITION_H_
(lambda _
(invoke "ninja" "-C" "out" "gn" #define LAST_COMMIT_POSITION_NUM ~a
"-j" (number->string (parallel-job-count))))) #define LAST_COMMIT_POSITION \"~a (~a)\"
(replace 'check
(lambda* (#:key tests? #:allow-other-keys) #endif // OUT_LAST_COMMIT_POSITION_H_
(if tests? "
(begin #$revision #$revision
(invoke "ninja" "-C" "out" "gn_unittests" #$(string-take commit 12))))))
"-j" (number->string (parallel-job-count))) (replace 'build
(invoke "./out/gn_unittests")) (lambda _
(format #t "test suite not run~%")))) (invoke "ninja" "-C" "out" "gn"
(replace 'install "-j" (number->string (parallel-job-count)))))
(lambda* (#:key outputs #:allow-other-keys) (replace 'check
(let ((out (assoc-ref outputs "out"))) (lambda* (#:key tests? #:allow-other-keys)
(install-file "out/gn" (string-append out "/bin")))))))) (if tests?
(begin
(invoke "ninja" "-C" "out" "gn_unittests"
"-j" (number->string (parallel-job-count)))
(invoke "./out/gn_unittests"))
(format #t "test suite not run~%"))))
(replace 'install
(lambda _
(install-file "out/gn" (string-append #$output "/bin")))))))
(native-inputs (native-inputs
`(("ninja" ,ninja) (list ninja python-wrapper))
("python" ,python-wrapper)))
(synopsis "Generate Ninja build files") (synopsis "Generate Ninja build files")
(description (description
"GN is a tool that collects information about a project from @file{.gn} "GN is a tool that collects information about a project from @file{.gn}
@ -762,3 +780,227 @@ Build has features such as:
@item Extensible language/compiler framework. @item Extensible language/compiler framework.
@end itemize") @end itemize")
(license license:gpl2+))) (license license:gpl2+)))
(define-public genie
(let ((commit "b139103697bbb62db895e4cc7bfe202bcff4ff25")
(revision "0"))
(package
(name "genie")
(version (git-version "1167" revision commit))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/bkaradzic/genie")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"16plshzkyjjzpfcxnwjskrs7i4gg0qn92h2k0rbfl4a79fgmwvwv"))))
(build-system gnu-build-system)
(arguments
(list #:phases #~(modify-phases %standard-phases
(delete 'configure)
(replace 'install
(lambda _
(install-file "bin/linux/genie"
(string-append #$output "/bin")))))
#:tests? #f)) ;no tests
(home-page "https://github.com/bkaradzic/genie")
(synopsis "Project generator")
(description
"GENie generates projects from Lua scripts, making it easy to apply the
same settings to multiple projects. It supports generating projects using GNU
Makefiles, JSON Compilation Database, and experimentally Ninja.")
(license license:bsd-3))))
(define*-public (gnulib-checkout #:key
version
(revision "1")
commit
hash)
"Return as a package the exact gnulib checkout."
(package
(name "gnulib")
(version (git-version version revision commit))
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://git.savannah.gnu.org/git/gnulib.git/")
(commit commit)))
(file-name (git-file-name name version))
(sha256 hash)
(snippet
(with-imported-modules (source-module-closure '((guix build utils)))
#~(begin
(use-modules (guix build utils)
(ice-9 ftw)
(ice-9 rdelim))
;; .c, .h and .gperf files whose first line is /* DO NOT EDIT!
;; GENERATED AUTOMATICALLY! */ are generated automatically based
;; on the unicode database. Since we replace the unicode
;; database with our own, we need to regenerate them. So, they
;; are removed from the source. They are sprinkled all over the
;; place unfortunately, so we cant exclude whole directories.
(let ((generated-automatically?
(lambda (filename . unused)
(and (or (string-suffix? ".c" filename)
(string-suffix? ".h" filename)
(string-suffix? ".gperf" filename))
(call-with-input-file filename
(lambda (port)
(let ((first-line (read-line port)))
(equal?
first-line
"/* DO NOT EDIT! GENERATED AUTOMATICALLY! */"))))))))
(for-each delete-file (find-files (getcwd) generated-automatically?)))
;; Other files are copied from UCD.
(for-each delete-file
'("tests/unigbrk/GraphemeBreakTest.txt"
"tests/uninorm/NormalizationTest.txt"
"tests/uniname/UnicodeData.txt"
"tests/uniname/NameAliases.txt"
;; FIXME: tests/uniname/HangulSyllableNames.txt
;; seems like a UCD file but it is not distributed
;; with UCD.
"tests/uniwbrk/WordBreakTest.txt")))))))
(build-system copy-build-system)
(arguments
(list
#:install-plan
#~'(("./gnulib-tool" "bin/")
("." "src/gnulib" #:exclude-regexp ("\\.git.*")))
#:modules '((ice-9 match)
(guix build utils)
(guix build copy-build-system)
((guix build gnu-build-system) #:prefix gnu:))
#:phases
#~(modify-phases %standard-phases
(add-before 'install 'check
(assoc-ref gnu:%standard-phases 'check))
(add-before 'check 'fix-tests
(lambda _
(substitute* "Makefile"
(("-f maint.mk syntax-check")
"_gl-Makefile=yes -f maint.mk syntax-check"))
(invoke "git" "init")
(invoke "git" "config" "user.name" "Guix")
(invoke "git" "config" "user.email" "guix@localhost")
(invoke "git" "add" ".")
;; Syntax checks are only run against committed files.
(invoke "git" "commit" "-m" "Prepare for tests.")))
(add-before 'check 'disable-failing-tests
(lambda _
(substitute* "cfg.mk"
(("local-checks-to-skip =")
;; sc_copyright_check fails because the fake commit date may
;; be later than the copyright year.
"local-checks-to-skip = \\
sc_Wundef_boolean \\
sc_copyright_check \\
sc_file_system \\
sc_indent \\
sc_keep_gnulib_texi_files_mostly_ascii \\
sc_prohibit_assert_without_use \\
sc_prohibit_close_stream_without_use \\
sc_prohibit_defined_have_decl_tests \\
sc_prohibit_doubled_word \\
sc_prohibit_empty_lines_at_EOF \\
sc_prohibit_intprops_without_use \\
sc_prohibit_openat_without_use \\
sc_prohibit_test_minus_ao \\
sc_unportable_grep_q"))
(substitute* "Makefile"
(("sc_check_(sym_list|copyright)" rule)
(string-append "disabled_check_" rule))
(("sc_cpp_indent_check")
"disabled_cpp_indent_check")
(("sc_prefer_ac_check_funcs_once")
"disabled_prefer_ac_check_funcs_once")
(("sc_prohibit_(AC_LIBOBJ_in_m4|leading_TABs)" rule)
(string-append "disabled_prohibit_" rule)))))
(add-before 'check 'regenerate-unicode
(lambda* (#:key inputs #:allow-other-keys)
(define (find-ucd-file name)
(search-input-file inputs (string-append "share/ucd/" name)))
(define (find-ucd-files . names)
(map find-ucd-file names))
(with-directory-excursion "lib"
;; See the compile-command buffer-local variable in
;; lib/gen-uni-tables.c
(invoke "gcc" "-O" "-Wall" "gen-uni-tables.c"
"-Iunictype" "-o" "gen-uni-tables")
(apply invoke
"./gen-uni-tables"
(append
(find-ucd-files "UnicodeData.txt"
"PropList.txt"
"DerivedCoreProperties.txt"
"emoji/emoji-data.txt"
"ArabicShaping.txt"
"Scripts.txt"
"Blocks.txt")
(list
#$(origin
(method url-fetch)
(uri (string-append
"https://www.unicode.org/Public/"
"3.0-Update1/PropList-3.0.1.txt"))
(sha256
(base32
"0k6wyijyzdl5g3nibcwfm898kfydx1pqaz28v7fdvnzdvd5fz7lh"))))
(find-ucd-files "EastAsianWidth.txt"
"LineBreak.txt"
"auxiliary/WordBreakProperty.txt"
"auxiliary/GraphemeBreakProperty.txt"
"CompositionExclusions.txt"
"SpecialCasing.txt"
"CaseFolding.txt")
(list #$(package-version (this-package-native-input "ucd")))))
(invoke "clisp" "-C" "uniname/gen-uninames.lisp"
(find-ucd-file "UnicodeData.txt")
"uniname/uninames.h"
(find-ucd-file "NameAliases.txt"))
(for-each
(match-lambda
((ucd-file . directory)
(copy-file (find-ucd-file ucd-file)
(string-append "../tests/" directory "/"
(basename ucd-file)))))
'(("NameAliases.txt" . "uniname")
("UnicodeData.txt" . "uniname")
("NormalizationTest.txt" . "uninorm")
("auxiliary/GraphemeBreakTest.txt" . "unigbrk")
("auxiliary/WordBreakTest.txt" . "uniwbrk")))
(delete-file "gen-uni-tables")))))))
(inputs ;; Shebangs for some auxiliary build files.
(list python perl clisp))
(native-inputs
(list
python perl clisp
;; Unicode data:
ucd-next
;; Programs for the tests:
cppi indent git autoconf))
(home-page "https://www.gnu.org/software/gnulib/")
(synopsis "Source files to share among distributions")
(description
"Gnulib is a central location for common infrastructure needed by GNU
packages. It provides a wide variety of functionality, e.g., portability
across many systems, working with Unicode strings, cryptographic computation,
and much more. The code is intended to be shared at the level of source
files, rather than being a standalone library that is distributed, built, and
installed. The included @command{gnulib-tool} script helps with using Gnulib
code in other packages. Gnulib also includes copies of licensing and
maintenance-related files, for convenience.")
(native-search-paths
(list (search-path-specification
(variable "GNULIB_SRCDIR")
(files (list "src/gnulib")))))
(license (list license:lgpl2.0+ license:gpl3+))))
(define-public gnulib
(gnulib-checkout
#:version "2022-12-31"
#:commit "875461ffdf58ac04677957b4ae4160465b83b940"
#:hash (base32 "0bf7a6wdns9c5wwv60qfcn9llg0j6jz5ryd2qgsqqx2i6xkmp77c")))

View file

@ -35,7 +35,7 @@
(define-public busybox (define-public busybox
(package (package
(name "busybox") (name "busybox")
(version "1.34.1") (version "1.35.0")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -43,7 +43,7 @@
version ".tar.bz2")) version ".tar.bz2"))
(sha256 (sha256
(base32 (base32
"0jfm9fik7nv4w21zqdg830pddgkdjmplmna9yjn9ck1lwn4vsps1")))) "1556hfgw32xf226dd138gfq0z1zf4r3f8naa9wrqld2sqd2b5vps"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(arguments (arguments
(list #:phases (list #:phases

View file

@ -41,6 +41,7 @@
#:use-module (guix download) #:use-module (guix download)
#:use-module (guix git-download) #:use-module (guix git-download)
#:use-module (guix build-system cmake) #:use-module (guix build-system cmake)
#:use-module (guix build-system copy)
#:use-module (guix build-system gnu) #:use-module (guix build-system gnu)
#:use-module (guix build-system python) #:use-module (guix build-system python)
#:use-module (guix build-system trivial) #:use-module (guix build-system trivial)
@ -55,6 +56,7 @@
#:use-module (gnu packages perl) #:use-module (gnu packages perl)
#:use-module (gnu packages texinfo) #:use-module (gnu packages texinfo)
#:use-module (gnu packages guile) #:use-module (gnu packages guile)
#:use-module (gnu packages llvm)
#:use-module (gnu packages lua) #:use-module (gnu packages lua)
#:use-module (gnu packages multiprecision) #:use-module (gnu packages multiprecision)
#:use-module (gnu packages pcre) #:use-module (gnu packages pcre)
@ -67,6 +69,45 @@
#:use-module (gnu packages web) #:use-module (gnu packages web)
#:use-module (gnu packages xml)) #:use-module (gnu packages xml))
(define-public c-intro-and-ref
(let ((revision "0")
(commit "f88559678feeb1391a0e9c7cf060c4429ef22ffc"))
(package
(name "c-intro-and-ref")
(version (git-version "0.0.0" revision commit))
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://git.savannah.gnu.org/git/c-intro-and-ref.git")
(commit commit)))
(file-name (git-file-name name version))
(sha256
(base32
"0c08h8k7wkn5lw0jqnnaayx55d3vf1q11pgsixfw31i58rnwa5y2"))))
(build-system copy-build-system)
(arguments
(list #:phases #~(modify-phases %standard-phases
(add-after 'unpack 'build
(lambda* (#:key parallel-build? #:allow-other-keys)
(substitute* "Makefile"
(("makeinfo c.texi")
"makeinfo --no-split c.texi"))
(invoke "make" "c.info" "c.html"
"-j" (number->string
(if parallel-build?
(parallel-job-count)
1))))))
#:install-plan ''(("c.info" "share/info/")
("c.html" "share/doc/"))))
(native-inputs (list texinfo))
(home-page "https://www.gnu.org/")
(synopsis "GNU C Language Intro and Reference")
(description "This manual explains the C language for use with the GNU
Compiler Collection (GCC) on the GNU/Linux system and other systems. We refer
to this dialect as GNU C. If you already know C, you can use this as a
reference manual.")
(license license:fdl1.3+))))
(define-public cproc (define-public cproc
(let ((commit "70fe9ef1810cc6c05bde9eb0970363c35fa7e802") (let ((commit "70fe9ef1810cc6c05bde9eb0970363c35fa7e802")
(revision "1")) (revision "1"))
@ -384,14 +425,14 @@ whose behaviour is inconsistent across *NIX flavours.")
(define-public libhx (define-public libhx
(package (package
(name "libhx") (name "libhx")
(version "4.3") (version "4.9")
(source (source
(origin (origin
(method url-fetch) (method url-fetch)
(uri (string-append "https://inai.de/files/libhx/" (uri (string-append "https://inai.de/files/libhx/"
"libHX-" version ".tar.xz")) "libHX-" version ".tar.xz"))
(sha256 (sha256
(base32 "06zkzaya6j3vaafz80qcgn5qcri047003bhmjisv5sbikcw97jqy")))) (base32 "16rwp8b2j8l0m27rffvb7ma350r79l611sa135hzfywkdli2bqh2"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(home-page "https://inai.de/projects/libhx/") (home-page "https://inai.de/projects/libhx/")
(synopsis "C library with common data structures and functions") (synopsis "C library with common data structures and functions")
@ -719,7 +760,7 @@ portability.")
(define-public byacc (define-public byacc
(package (package
(name "byacc") (name "byacc")
(version "20220128") (version "20221106")
(source (origin (source (origin
(method url-fetch) (method url-fetch)
(uri (string-append (uri (string-append
@ -727,7 +768,7 @@ portability.")
version ".tgz")) version ".tgz"))
(sha256 (sha256
(base32 (base32
"173l5pdzgqk2ld6lf0ablii0iiw07sry2vrjfrm4wc99qmf81ha2")))) "04lxggjarbidfq8ba5q6kwgqys4lhidbnz8gf3vrrb5wgcibx6d8"))))
(build-system gnu-build-system) (build-system gnu-build-system)
(home-page "https://invisible-island.net/byacc/byacc.html") (home-page "https://invisible-island.net/byacc/byacc.html")
(synopsis "Berkeley Yacc LALR parser generator") (synopsis "Berkeley Yacc LALR parser generator")
@ -1087,7 +1128,7 @@ Telemetry Transport (MQTT) publish-subscribe messaging protocol.")
(define-public mimalloc (define-public mimalloc
(package (package
(name "mimalloc") (name "mimalloc")
(version "2.0.6") (version "2.0.9")
(source (origin (source (origin
(method git-fetch) (method git-fetch)
(uri (git-reference (uri (git-reference
@ -1096,7 +1137,7 @@ Telemetry Transport (MQTT) publish-subscribe messaging protocol.")
(file-name (git-file-name name version)) (file-name (git-file-name name version))
(sha256 (sha256
(base32 (base32
"05x2dl3zimflfj91ns3vrphmzpdlyyr230p9adqgfds101f16qmv")))) "19w0i28p6knjd192rrcw1ayc3x0qp6rcm48cwkls4kwn8fng81fj"))))
(build-system cmake-build-system) (build-system cmake-build-system)
(arguments (arguments
`(#:build-type "Release")) `(#:build-type "Release"))
@ -1126,6 +1167,7 @@ Telemetry Transport (MQTT) publish-subscribe messaging protocol.")
("ppc64" => "ppc64") ("ppc64" => "ppc64")
("ppc" => "ppc") ("ppc" => "ppc")
("s390x" => "s390x") ("s390x" => "s390x")
("riscv64" => "riscv64")
("sparc64" => "sparcv9")))) ("sparc64" => "sparcv9"))))
(define-public ck (define-public ck
@ -1182,6 +1224,82 @@ performance concurrent systems developed in C99+.")
(license (list license:bsd-2 ;everything except... (license (list license:bsd-2 ;everything except...
license:asl2.0)))) ;src/ck_hp.c license:asl2.0)))) ;src/ck_hp.c
(define-public tinydir
(package
(name "tinydir")
(version "1.2.5")
(source (origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/cxong/tinydir")
(commit version)))
(file-name (git-file-name name version))
(sha256
(base32
"1nprgdfx4i8wzc1idw6chan4fjfa75b5ll8kghdc0q2278pny259"))
(patches (search-patches "tinydir-fix-cbehave-test.patch"))
(modules '((guix build utils)))
(snippet '(delete-file-recursively "tests/cbehave"))))
(build-system cmake-build-system)
(arguments
(list
#:phases
#~(modify-phases %standard-phases
(add-after 'unpack 'path-cmake
(lambda _
(substitute* "tests/CMakeLists.txt"
(("^include_dir.*cbehave.*")
(string-append "include_directories("#$cbehave "/include)"))
(("^add_subdir.*cbeha.*") ""))))
(add-before 'configure 'chdir
(lambda _
(chdir "tests")))
(replace 'install
(lambda _
(install-file "../tinydir.h"
(string-append #$output "/include")))))))
(native-inputs (list cbehave))
(home-page "https://github.com/cxong/tinydir")
(synopsis "List directories programmatically")
(description "@code{tinydir} is a header-only C wrapper for listing
directory contents.")
(license license:bsd-2)))
(define-public libdispatch
(package
(name "libdispatch")
(version "5.7")
(source
(origin
(method git-fetch)
(uri (git-reference
(url "https://github.com/apple/swift-corelibs-libdispatch")
(commit (string-append "swift-" version "-RELEASE"))))
(file-name (git-file-name name version))
(sha256
(base32
"0skg1azbhbg7y0ql2a5sx6lmfip8l1rajqm95zzf9xv45n4dg9nn"))))
(build-system cmake-build-system)
(arguments
(list #:phases
#~(modify-phases %standard-phases
;; Use Clang instead of GCC.
(add-before 'configure 'prepare-build-environment
(lambda _
(setenv "AR" "llvm-ar")
(setenv "NM" "llvm-nm")
(setenv "CC" "clang")
(setenv "CXX" "clang++"))))))
(native-inputs (list clang llvm))
(home-page "https://apple.github.io/swift-corelibs-libdispatch/")
(synopsis "Concurrent code execution on multicore hardware")
(description
"Grand Central Dispatch (GCD or libdispatch) implements a concurrency model
wherein program tasks are divided into work items. These can be run
sequentially or in parallel, with optional synchronization in between, and GCD
will take care of dispatching tasks to available cores.")
(license license:asl2.0)))
(define-public utf8-h (define-public utf8-h
;; The latest tag is used as there is no release. ;; The latest tag is used as there is no release.
(let ((commit "500d4ea9f4c3449e5243c088d8af8700f7189734") (let ((commit "500d4ea9f4c3449e5243c088d8af8700f7189734")

Some files were not shown because too many files have changed in this diff Show more