mirror of
https://git.savannah.gnu.org/git/guix.git
synced 2026-06-13 04:34:04 +02:00
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:
@@ -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
|
||||
@@ -35,10 +35,8 @@
|
||||
(;; primary: "295A F991 6F46 F8A1 34B0 29DA 8086 3842 F0FE D83B"
|
||||
"76CE C6B1 7274 B465 C02D B3D9 E71A 3554 2C30 BAA5"
|
||||
(name "dannym"))
|
||||
("B3C0 DB4D AD73 BA5D 285E 19AE 5143 0234 CEFD 87C3"
|
||||
(name "davexunit"))
|
||||
("8CCB A7F5 52B9 CBEA E1FB 2915 8328 C747 0FF1 D807" ;FIXME: to be confirmed!
|
||||
(name "davexunit (2nd)"))
|
||||
("8CCB A7F5 52B9 CBEA E1FB 2915 8328 C747 0FF1 D807"
|
||||
(name "dthompson"))
|
||||
("A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351"
|
||||
(name "efraim"))
|
||||
(;; 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"
|
||||
"C699 ED09 E51B CE89 FD1D A078 AAC7 E891 896B 568A"
|
||||
(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"
|
||||
(name "raghavgururajan"))
|
||||
("BCA6 89B6 3655 3801 C3C6 2150 197A 5888 235F ACAC"
|
||||
|
||||
@@ -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
|
||||
+64
-42
@@ -1,5 +1,5 @@
|
||||
# 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 © 2015, 2017 Alex Kost <alezost@gmail.com>
|
||||
# Copyright © 2016, 2018 Mathieu Lirzin <mthl@gnu.org>
|
||||
@@ -167,6 +167,7 @@ MODULES = \
|
||||
guix/build-system/maven.scm \
|
||||
guix/build-system/node.scm \
|
||||
guix/build-system/perl.scm \
|
||||
guix/build-system/pyproject.scm \
|
||||
guix/build-system/python.scm \
|
||||
guix/build-system/renpy.scm \
|
||||
guix/build-system/ocaml.scm \
|
||||
@@ -223,6 +224,7 @@ MODULES = \
|
||||
guix/build/minetest-build-system.scm \
|
||||
guix/build/node-build-system.scm \
|
||||
guix/build/perl-build-system.scm \
|
||||
guix/build/pyproject-build-system.scm \
|
||||
guix/build/python-build-system.scm \
|
||||
guix/build/ocaml-build-system.scm \
|
||||
guix/build/qt-build-system.scm \
|
||||
@@ -236,6 +238,7 @@ MODULES = \
|
||||
guix/build/waf-build-system.scm \
|
||||
guix/build/haskell-build-system.scm \
|
||||
guix/build/julia-build-system.scm \
|
||||
guix/build/kconfig.scm \
|
||||
guix/build/linux-module-build-system.scm \
|
||||
guix/build/store-copy.scm \
|
||||
guix/build/json.scm \
|
||||
@@ -287,6 +290,7 @@ MODULES = \
|
||||
guix/import/print.scm \
|
||||
guix/import/pypi.scm \
|
||||
guix/import/stackage.scm \
|
||||
guix/import/test.scm \
|
||||
guix/import/texlive.scm \
|
||||
guix/import/utils.scm \
|
||||
guix/scripts.scm \
|
||||
@@ -398,10 +402,10 @@ AUX_FILES = \
|
||||
gnu/packages/aux-files/chromium/master-preferences.json \
|
||||
gnu/packages/aux-files/emacs/guix-emacs.el \
|
||||
gnu/packages/aux-files/guix.vim \
|
||||
gnu/packages/aux-files/linux-libre/5.19-arm.conf \
|
||||
gnu/packages/aux-files/linux-libre/5.19-arm64.conf \
|
||||
gnu/packages/aux-files/linux-libre/5.19-i686.conf \
|
||||
gnu/packages/aux-files/linux-libre/5.19-x86_64.conf \
|
||||
gnu/packages/aux-files/linux-libre/6.1-arm.conf \
|
||||
gnu/packages/aux-files/linux-libre/6.1-arm64.conf \
|
||||
gnu/packages/aux-files/linux-libre/6.1-i686.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-arm64.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-i686.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/python/sanity-check.py \
|
||||
gnu/packages/aux-files/python/sanity-check-next.py \
|
||||
gnu/packages/aux-files/python/sitecustomize.py \
|
||||
gnu/packages/aux-files/renpy/renpy.in \
|
||||
gnu/packages/aux-files/run-in-namespace.c
|
||||
@@ -438,6 +441,8 @@ EXAMPLES = \
|
||||
gnu/system/examples/desktop.tmpl \
|
||||
gnu/system/examples/lightweight-desktop.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
|
||||
|
||||
GOBJECTS = $(MODULES:%.scm=%.go) guix/config.go $(dist_noinst_DATA:%.scm=%.go)
|
||||
@@ -590,6 +595,7 @@ SH_TESTS = \
|
||||
tests/guix-authenticate.sh \
|
||||
tests/guix-environment.sh \
|
||||
tests/guix-environment-container.sh \
|
||||
tests/guix-refresh.sh \
|
||||
tests/guix-shell.sh \
|
||||
tests/guix-shell-export-manifest.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
|
||||
|
||||
EXTRA_DIST += \
|
||||
HACKING \
|
||||
ROADMAP \
|
||||
TODO \
|
||||
CODE-OF-CONDUCT \
|
||||
.dir-locals.el \
|
||||
.guix-authorizations \
|
||||
.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/guix-install.sh \
|
||||
etc/historical-authorizations \
|
||||
etc/news.scm \
|
||||
etc/kernels-manifest.scm \
|
||||
etc/release-manifest.scm \
|
||||
etc/source-manifest.scm \
|
||||
etc/system-tests.scm \
|
||||
etc/time-travel-manifest.scm \
|
||||
etc/historical-authorizations \
|
||||
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 \
|
||||
scripts/guix.in \
|
||||
tests/cve-sample.json \
|
||||
tests/keys/signing-key.pub \
|
||||
tests/keys/signing-key.sec \
|
||||
tests/keys/civodul.pub \
|
||||
tests/keys/rsa.pub \
|
||||
tests/keys/dsa.pub \
|
||||
tests/keys/ed25519.pub \
|
||||
tests/keys/ed25519.sec \
|
||||
tests/keys/ed25519-2.pub \
|
||||
tests/keys/ed25519-2.sec \
|
||||
tests/keys/ed25519-3.pub \
|
||||
tests/keys/ed25519-3.sec \
|
||||
build-aux/config.rpath \
|
||||
bootstrap \
|
||||
doc/build.scm \
|
||||
tests/keys/ed25519.pub \
|
||||
tests/keys/ed25519.sec \
|
||||
tests/keys/rsa.pub \
|
||||
tests/keys/signing-key.pub \
|
||||
tests/keys/signing-key.sec \
|
||||
tests/test.drv \
|
||||
$(TESTS)
|
||||
|
||||
if !BUILD_DAEMON_OFFLOAD
|
||||
@@ -750,20 +757,35 @@ endef
|
||||
# in <https://issues.guix.gnu.org/48963>. Each 'eval' call below creates a
|
||||
# 'make-*-go' phony target that builds the corresponding subset.
|
||||
|
||||
MODULES_CORE = guix.scm $(filter-out guix/scripts/%,$(filter guix/%,$(MODULES)))
|
||||
MODULES_PACKAGES = $(filter gnu/packages/%,$(MODULES))
|
||||
MODULES_SYSTEM = gnu.scm $(filter-out gnu/packages/%,$(filter gnu/%,$(MODULES)))
|
||||
MODULES_CLI = $(filter guix/scripts/%,$(MODULES))
|
||||
MODULES_PO = guix/build/po.scm
|
||||
first_half := \
|
||||
gnu/packages/a% gnu/packages/b% gnu/packages/c% gnu/packages/d% \
|
||||
gnu/packages/e% gnu/packages/f% gnu/packages/g% gnu/packages/h% \
|
||||
gnu/packages/i% gnu/packages/j% gnu/packages/k% gnu/packages/l%
|
||||
|
||||
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, \
|
||||
$(MODULES_CORE) guix/config.scm $(dist_noinst_DATA), \
|
||||
0))
|
||||
.PHONY: make-core-go
|
||||
|
||||
$(eval $(call guile-compilation-rule,make-packages-go, \
|
||||
$(MODULES_PACKAGES) make-core-go, \
|
||||
$(eval $(call guile-compilation-rule,make-packages1-go, \
|
||||
$(MODULES_PACKAGES1) make-core-go, \
|
||||
$(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
|
||||
|
||||
$(eval $(call guile-compilation-rule,make-system-go, \
|
||||
@@ -986,7 +1008,7 @@ release: dist-with-updated-version all
|
||||
-v1 --no-grafts --fallback
|
||||
# Generate the ISO installation images.
|
||||
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 \
|
||||
guix system image -t iso9660 \
|
||||
--label="GUIX_$${system}_$(VERSION)" \
|
||||
@@ -1002,7 +1024,7 @@ release: dist-with-updated-version all
|
||||
done
|
||||
# Generate the VM images.
|
||||
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 \
|
||||
guix system image -t qcow2 $(GUIX_SYSTEM_VM_IMAGE_FLAGS) \
|
||||
--save-provenance \
|
||||
|
||||
@@ -31,7 +31,10 @@ Please send Guix bug reports to bug-guix@gnu.org.
|
||||
*** New updater (see ‘guix refresh’): ‘generic-git’
|
||||
*** ‘guix graph’ has a new ‘--max-depth’ 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-source’ option now applied recursively
|
||||
*** Align tabular data output by commands like ‘guix package --list-available’
|
||||
*** Improved ‘guix import go’ importer via a new PEG parser
|
||||
*** Improved Software Heritage downloader
|
||||
@@ -43,12 +46,14 @@ Please send Guix bug reports to bug-guix@gnu.org.
|
||||
|
||||
** Distribution
|
||||
*** 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
|
||||
*** XFS file systems can be created by the installer and mounted by label/UUID
|
||||
*** New interface for declaring swap space
|
||||
*** GNOME is now at version 42
|
||||
*** TeX Live is now at version 2021
|
||||
*** 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
|
||||
*** The Rust bootstrap now starts from 1.54 instead of 1.19
|
||||
*** 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
|
||||
*** Emacs now supports native compilation
|
||||
*** 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’
|
||||
*** ‘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
|
||||
*** 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
|
||||
*** New ‘modify-inputs’ macro to ease customizing a list of package inputs
|
||||
*** 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’
|
||||
*** New (guix cpu) module
|
||||
*** New (guix least-authority) module
|
||||
*** New (guix plaform) module
|
||||
*** New (guix platform) module
|
||||
*** New (guix read-print) module
|
||||
|
||||
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,
|
||||
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 ‘rebar-build-system’
|
||||
*** New services
|
||||
anonip, bitmask, fail2ban, gitile, greetd, jami, lightdm, log-cleanup,
|
||||
nar-herder, opendht, rasdaemon, seatd, strongswan
|
||||
|
||||
** Noteworthy bug fixes
|
||||
*** 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>)
|
||||
*** Fonts can now be discovered in any profile via XDG_DATA_DIRS
|
||||
(<https://issues.guix.gnu.org/31403>)
|
||||
*** Python modules are searched in GUIX_PYTHONPATH instead of PYTHONPATH
|
||||
*** Various Python reproducibility fixes
|
||||
*** The installer now supports MSDOS disk labels on UEFI systems
|
||||
(<https://issues.guix.gnu.org/47889>)
|
||||
@@ -123,10 +151,10 @@ nar-herder, opendht, rasdaemon, seatd, strongswan
|
||||
(<https://issues.guix.gnu.org/48419>)
|
||||
*** The installer no longer crashes when deleting a free space partition
|
||||
*** 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
|
||||
(<https://issues.guix.gnu.org/40997>.)
|
||||
*** A file system mount point is always created when ‘create?’ is true
|
||||
(<https://issues.guix.gnu.org/40997>)
|
||||
*** File system mount point is always created when ‘create?’ is true
|
||||
(<https://issues.guix.gnu.org/40158>)
|
||||
*** Build the man database only if ‘man-db’ is in the profile
|
||||
*** 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)
|
||||
*** ‘chfn’ can now change the user's full name
|
||||
(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)
|
||||
*** Inferiors are now caching store connections
|
||||
(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 ship an older Guix revision
|
||||
(https://issues.guix.gnu.org/53210)
|
||||
|
||||
+1
-1
@@ -66,7 +66,7 @@
|
||||
|
||||
(define %manual-languages
|
||||
;; 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
|
||||
;; Available translations for the 'guix-cookbook' text domain.
|
||||
|
||||
+205
-66
@@ -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
|
||||
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
|
||||
@cindex inputs, for Python packages
|
||||
|
||||
Dependency information for Python packages is usually available 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
|
||||
these dependencies to the appropriate type of ``input'' (@pxref{package
|
||||
@@ -802,10 +819,12 @@ following check list to determine which dependency goes where.
|
||||
@itemize
|
||||
|
||||
@item
|
||||
We currently package Python 2 with @code{setuptools} and @code{pip}
|
||||
installed like Python 3.4 has per default. Thus you don't need to
|
||||
specify either of these as an input. @command{guix lint} will warn you
|
||||
if you do.
|
||||
We currently package Python with @code{setuptools} and @code{pip}
|
||||
installed per default. This is about to change, and users are encouraged
|
||||
to use @code{python-toolchain} if they want a build environment for Python.
|
||||
|
||||
@command{guix lint} will warn if @code{setuptools} or @code{pip} are
|
||||
added as native-inputs because they are generally not necessary.
|
||||
|
||||
@item
|
||||
Python dependencies required at run time go into
|
||||
@@ -814,9 +833,10 @@ Python dependencies required at run time go into
|
||||
@file{requirements.txt} file.
|
||||
|
||||
@item
|
||||
Python packages required only at build time---e.g., those listed with
|
||||
the @code{setup_requires} keyword in @file{setup.py}---or only for
|
||||
testing---e.g., those in @code{tests_require}---go into
|
||||
Python packages required only at build time---e.g., those listed under
|
||||
@code{build-system.requires} in @file{pyproject.toml} or with the
|
||||
@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
|
||||
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.
|
||||
@@ -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
|
||||
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
|
||||
@code{define-record-type*}) rather than abuse lists. In addition, it
|
||||
should use pattern matching, via Guile’s @code{(ice-9 match)} module,
|
||||
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
|
||||
@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
|
||||
message sent to that mailing list gets a new tracking number assigned;
|
||||
people can then follow up on the submission by sending email to
|
||||
@code{@var{NNN}@@debbugs.gnu.org}, where @var{NNN} is the tracking
|
||||
number (@pxref{Sending a Patch Series}).
|
||||
@code{@var{ISSUE_NUMBER}@@debbugs.gnu.org}, where @var{ISSUE_NUMBER} is
|
||||
the tracking number (@pxref{Sending a Patch Series}).
|
||||
|
||||
Please write commit logs in the ChangeLog format (@pxref{Change Logs,,,
|
||||
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:
|
||||
|
||||
@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
|
||||
If the authors of the packaged software provide a cryptographic
|
||||
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
|
||||
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
|
||||
@samp{[PATCH core-updates] @dots{}}. You may use your email client or
|
||||
the @command{git send-email} command (@pxref{Sending a Patch Series}).
|
||||
We prefer to get patches in plain text messages, either inline or as
|
||||
MIME attachments. You are advised to pay attention if your email client
|
||||
changes anything like line breaks or indentation which could potentially
|
||||
break the patches.
|
||||
@samp{[PATCH core-updates] @dots{}}.
|
||||
|
||||
You may use your email client or the @command{git send-email} command
|
||||
(@pxref{Sending a Patch Series}). We prefer to get patches in plain
|
||||
text messages, either inline or as MIME attachments. You are advised to
|
||||
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
|
||||
@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.
|
||||
|
||||
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
|
||||
@subsection Configuring Git
|
||||
@@ -1392,26 +1409,152 @@ git config --local format.thread shallow
|
||||
git config --local sendemail.thread no
|
||||
@end example
|
||||
|
||||
@unnumberedsubsec Sending a Patch Series
|
||||
@anchor{Sending a Patch Series}
|
||||
@node Sending a Patch Series
|
||||
@subsection Sending a Patch Series
|
||||
@cindex patch series
|
||||
@cindex @code{git send-email}
|
||||
@cindex @code{git format-patch}
|
||||
|
||||
When sending a patch series (e.g., using @code{git send-email}), please
|
||||
first send one message to @email{guix-patches@@gnu.org}, and then send
|
||||
subsequent patches to @email{@var{NNN}@@debbugs.gnu.org} to make sure
|
||||
they are kept together. See
|
||||
@uref{https://debbugs.gnu.org/Advanced.html, the Debbugs documentation}
|
||||
for more information. You can install @command{git send-email} with
|
||||
@command{guix install git:send-email}.
|
||||
@c Debbugs bug: https://debbugs.gnu.org/db/15/15361.html
|
||||
@unnumberedsubsubsec Single Patches
|
||||
@anchor{Single Patches}
|
||||
The @command{git send-email} command is the best way to send both single
|
||||
patches and patch series (@pxref{Multiple Patches}) to the Guix mailing
|
||||
list. Sending patches as email attachments may make them difficult to
|
||||
review in some mail clients, and @command{git diff} does not store commit
|
||||
metadata.
|
||||
|
||||
To maximize the chances that you patch series is reviewed, the preferred
|
||||
submission way is to use the @code{etc/teams.scm} script to notify the
|
||||
appropriate team members (@pxref{Teams}).
|
||||
@quotation Note
|
||||
The @command{git send-email} command is provided by the @code{send-email}
|
||||
output of the @code{git} package, i.e. @code{git:send-email}.
|
||||
@end quotation
|
||||
|
||||
@unnumberedsubsec Teams
|
||||
@anchor{Teams}
|
||||
The following command will create a patch email from the latest commit,
|
||||
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
|
||||
|
||||
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:
|
||||
|
||||
@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
|
||||
|
||||
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
|
||||
$ 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
|
||||
|
||||
@node Tracking Bugs and Patches
|
||||
@@ -1687,23 +1830,27 @@ It additionally calls @code{make check-channel-news} to be sure
|
||||
|
||||
@subsection Commit Policy
|
||||
|
||||
If you get commit access, please make sure to follow
|
||||
the policy below (discussions of the policy can take place on
|
||||
If you get commit access, please make sure to follow the policy below
|
||||
(discussions of the policy can take place on
|
||||
@email{guix-devel@@gnu.org}).
|
||||
|
||||
Non-trivial patches should always be posted to
|
||||
@email{guix-patches@@gnu.org} (trivial patches include fixing typos,
|
||||
etc.). This mailing list fills the patch-tracking database
|
||||
(@pxref{Tracking Bugs and Patches}).
|
||||
Changes should be posted to @email{guix-patches@@gnu.org}. This mailing
|
||||
list fills the patch-tracking database (@pxref{Tracking Bugs and
|
||||
Patches}). It also allows patches to be picked up and tested by the
|
||||
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 didn’t 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
|
||||
commit, if you're confident (which means you successfully built it in a
|
||||
chroot setup, and have done a reasonable copyright and license
|
||||
auditing). Likewise for package upgrades, except upgrades that trigger
|
||||
a lot of rebuilds (for example, upgrading GnuTLS or GLib). We have a
|
||||
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}.
|
||||
As an exception, some changes considered ``trivial'' or ``obvious'' may
|
||||
be pushed directly. This includes changes to fix typos and reverting
|
||||
commits that caused immediate problems. This is subject to being
|
||||
adjusted, allowing individuals to commit directly on non-controversial
|
||||
changes on parts they’re familiar with.
|
||||
|
||||
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.,
|
||||
@@ -1718,14 +1865,6 @@ right before pushing:
|
||||
make check-channel-news
|
||||
@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 didn’t 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 they’re familiar with.
|
||||
|
||||
@subsection Addressing Issues
|
||||
|
||||
Peer review (@pxref{Submitting Patches}) and tools such as
|
||||
|
||||
+1068
-15
File diff suppressed because it is too large
Load Diff
+1846
-727
File diff suppressed because it is too large
Load Diff
+9
-3
@@ -1,7 +1,7 @@
|
||||
# htmlxref.cnf - reference file for free Texinfo manuals on the web.
|
||||
# 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.
|
||||
#
|
||||
@@ -409,6 +409,8 @@ GUILE_GNOME = ${GS}/guile-gnome/docs
|
||||
|
||||
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 node ${GS}/guile-rpc/manual/html_node/
|
||||
|
||||
@@ -420,6 +422,8 @@ GUIX = ${GUIX_ROOT}/manual
|
||||
guix.es node ${GUIX}/es/html_node/
|
||||
guix.fr mono ${GUIX}/fr/guix.fr.html
|
||||
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 node ${GUIX}/ru/html_node/
|
||||
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_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.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.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 node ${GUIX_COOKBOOK}/en/html_node/
|
||||
|
||||
|
||||
@@ -179,19 +179,31 @@ sub_commands_mans = \
|
||||
$(srcdir)/%D%/guix-archive.1 \
|
||||
$(srcdir)/%D%/guix-build.1 \
|
||||
$(srcdir)/%D%/guix-challenge.1 \
|
||||
$(srcdir)/%D%/guix-container.1 \
|
||||
$(srcdir)/%D%/guix-copy.1 \
|
||||
$(srcdir)/%D%/guix-deploy.1 \
|
||||
$(srcdir)/%D%/guix-describe.1 \
|
||||
$(srcdir)/%D%/guix-download.1 \
|
||||
$(srcdir)/%D%/guix-edit.1 \
|
||||
$(srcdir)/%D%/guix-environment.1 \
|
||||
$(srcdir)/%D%/guix-gc.1 \
|
||||
$(srcdir)/%D%/guix-git.1 \
|
||||
$(srcdir)/%D%/guix-graph.1 \
|
||||
$(srcdir)/%D%/guix-hash.1 \
|
||||
$(srcdir)/%D%/guix-home.1 \
|
||||
$(srcdir)/%D%/guix-import.1 \
|
||||
$(srcdir)/%D%/guix-lint.1 \
|
||||
$(srcdir)/%D%/guix-offload.1 \
|
||||
$(srcdir)/%D%/guix-pack.1 \
|
||||
$(srcdir)/%D%/guix-package.1 \
|
||||
$(srcdir)/%D%/guix-processes.1 \
|
||||
$(srcdir)/%D%/guix-publish.1 \
|
||||
$(srcdir)/%D%/guix-pull.1 \
|
||||
$(srcdir)/%D%/guix-refresh.1 \
|
||||
$(srcdir)/%D%/guix-repl.1 \
|
||||
$(srcdir)/%D%/guix-shell.1 \
|
||||
$(srcdir)/%D%/guix-size.1 \
|
||||
$(srcdir)/%D%/guix-style.1 \
|
||||
$(srcdir)/%D%/guix-system.1 \
|
||||
$(srcdir)/%D%/guix-time-machine.1 \
|
||||
$(srcdir)/%D%/guix-weather.1
|
||||
|
||||
+20
-5
@@ -1,6 +1,6 @@
|
||||
; -*- lisp -*-
|
||||
;;; 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 Marius Bakke <marius@gnu.org>
|
||||
;;;
|
||||
@@ -37,11 +37,13 @@
|
||||
|
||||
(block guix_daemon
|
||||
;; 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 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
|
||||
(type guix_daemon_t)
|
||||
@@ -92,6 +94,9 @@
|
||||
(allow init_t
|
||||
guix_store_content_t
|
||||
(file (open read execute)))
|
||||
(allow init_t
|
||||
guix_profiles_t
|
||||
(dir (setattr)))
|
||||
|
||||
;; guix-daemon needs to know the names of users
|
||||
(allow guix_daemon_t
|
||||
@@ -284,6 +289,14 @@
|
||||
guix_store_content_t
|
||||
(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
|
||||
(allow guix_daemon_t
|
||||
guix_daemon_conf_t
|
||||
@@ -447,6 +460,8 @@
|
||||
any (unconfined_u object_r guix_store_content_t (low low)))
|
||||
(filecon "@prefix@/bin/guix-daemon"
|
||||
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"
|
||||
file (system_u object_r guix_daemon_exec_t (low low)))
|
||||
(filecon "@storedir@/[a-z0-9]+-guix-daemon"
|
||||
|
||||
@@ -9,10 +9,16 @@ Description=Build daemon for GNU Guix
|
||||
ExecStart=@localstatedir@/guix/profiles/per-user/root/current-guix/bin/guix-daemon \
|
||||
--build-users-group=guixbuild --discover=no
|
||||
Environment='GUIX_LOCPATH=@localstatedir@/guix/profiles/per-user/root/guix-profile/lib/locale' LC_ALL=en_US.utf8
|
||||
RemainAfterExit=yes
|
||||
StandardOutput=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>.
|
||||
# Some package builds (for example, go@1.8.1) may require even more than
|
||||
# 1024 tasks.
|
||||
|
||||
+91
-53
@@ -3,13 +3,14 @@
|
||||
# Copyright © 2017 sharlatan <sharlatanus@gmail.com>
|
||||
# Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
|
||||
# Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
|
||||
# Copyright © 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
# Copyright © 2019–2020, 2022 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
# Copyright © 2020 Morgan Smith <Morgan.J.Smith@outlook.com>
|
||||
# Copyright © 2020 Simon Tournier <zimon.toutoune@gmail.com>
|
||||
# Copyright © 2020 Daniel Brooks <db48x@db48x.net>
|
||||
# Copyright © 2021 Jakub Kądziołka <kuba@kadziolka.net>
|
||||
# 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.
|
||||
#
|
||||
@@ -33,7 +34,7 @@ then
|
||||
exec bash "$0" "$@"
|
||||
fi
|
||||
|
||||
set -e
|
||||
set -eo pipefail
|
||||
|
||||
[ "$UID" -eq 0 ] || { echo "This script must be run as root."; exit 1; }
|
||||
|
||||
@@ -52,6 +53,7 @@ REQUIRE=(
|
||||
"chmod"
|
||||
"uname"
|
||||
"groupadd"
|
||||
"useradd"
|
||||
"tail"
|
||||
"tr"
|
||||
"xz"
|
||||
@@ -92,17 +94,20 @@ _debug()
|
||||
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.
|
||||
prompt_yes_no() {
|
||||
while true; do
|
||||
read -rp "$1 " yn
|
||||
case $yn in
|
||||
[Yy]*) return 0;;
|
||||
[Nn]*) return 1;;
|
||||
*) _msg "Please answer yes or no."
|
||||
esac
|
||||
done
|
||||
local -l yn
|
||||
read -rp "$1 [Y/n]" yn
|
||||
[[ ! $yn || $yn = y || $yn = yes ]] || return 1
|
||||
}
|
||||
|
||||
chk_require()
|
||||
@@ -116,10 +121,8 @@ chk_require()
|
||||
command -v "$c" &>/dev/null || warn+=("$c")
|
||||
done
|
||||
|
||||
[ "${#warn}" -ne 0 ] &&
|
||||
{ _err "${ERR}Missing commands: ${warn[*]}.";
|
||||
return 1; }
|
||||
|
||||
[ "${#warn}" -ne 0 ] && die "Missing commands: ${warn[*]}."
|
||||
|
||||
_msg "${PAS}verification of required commands completed"
|
||||
}
|
||||
|
||||
@@ -134,21 +137,27 @@ chk_gpg_keyring()
|
||||
gpg_key_id=${GPG_SIGNING_KEYS[$user_id]}
|
||||
# Without --dry-run this command will create a ~/.gnupg owned by root on
|
||||
# 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 prompt_yes_no "${INF}The following OpenPGP public key is \
|
||||
if gpg --dry-run --list-keys "$gpg_key_id" >/dev/null 2>&1; then
|
||||
continue
|
||||
fi
|
||||
if prompt_yes_no "${INF}The following OpenPGP public key is \
|
||||
required to verify the Guix binary signature: $gpg_key_id.
|
||||
Would you like me to fetch it for you? (yes/no)"; then
|
||||
wget "https://sv.gnu.org/people/viewgpg.php?user_id=$user_id" \
|
||||
--no-verbose -O- | gpg --import -
|
||||
else
|
||||
_err "${ERR}Missing OpenPGP public key ($gpg_key_id).
|
||||
Would you like me to fetch it for you?"; then
|
||||
# Use a reasonable time-out here so users don't report silent
|
||||
# ‘freezes’ when Savannah goes out to lunch, as has happened.
|
||||
if wget "https://sv.gnu.org/people/viewgpg.php?user_id=$user_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:
|
||||
|
||||
wget \"https://sv.gnu.org/people/viewgpg.php?user_id=$user_id\" -O - | \
|
||||
sudo -i gpg --import -"
|
||||
exit_flag=yes
|
||||
fi
|
||||
fi
|
||||
exit_flag=yes
|
||||
done
|
||||
if [ "$exit_flag" = yes ]; then
|
||||
exit 1
|
||||
@@ -220,8 +229,7 @@ chk_sys_arch()
|
||||
local arch=powerpc64le
|
||||
;;
|
||||
*)
|
||||
_err "${ERR}Unsupported CPU type: ${arch}"
|
||||
exit 1
|
||||
die "Unsupported CPU type: ${arch}"
|
||||
esac
|
||||
|
||||
case "$os" in
|
||||
@@ -229,8 +237,7 @@ chk_sys_arch()
|
||||
local os=linux
|
||||
;;
|
||||
*)
|
||||
_err "${ERR}Your operation system (${os}) is not supported."
|
||||
exit 1
|
||||
die "Your operation system (${os}) is not supported."
|
||||
esac
|
||||
|
||||
ARCH_OS="${arch}-${os}"
|
||||
@@ -254,7 +261,7 @@ chk_sys_nscd()
|
||||
configure_substitute_discovery() {
|
||||
if grep -q -- '--discover=no' "$1" && \
|
||||
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"
|
||||
fi
|
||||
}
|
||||
@@ -285,8 +292,7 @@ guix_get_bin_list()
|
||||
if [[ "${#bin_ver_ls}" -ne "0" ]]; then
|
||||
_msg "${PAS}Release for your system: ${default_ver}"
|
||||
else
|
||||
_err "${ERR}Could not obtain list of Guix releases."
|
||||
exit 1
|
||||
die "Could not obtain list of Guix releases."
|
||||
fi
|
||||
|
||||
# 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
|
||||
_msg "${PAS}download completed."
|
||||
else
|
||||
_err "${ERR}could not download ${url}/${bin_ver}.tar.xz."
|
||||
exit 1
|
||||
die "could not download ${url}/${bin_ver}.tar.xz."
|
||||
fi
|
||||
|
||||
pushd "${dl_path}" >/dev/null
|
||||
@@ -320,8 +325,7 @@ guix_get_bin()
|
||||
_msg "${PAS}Signature is valid."
|
||||
popd >/dev/null
|
||||
else
|
||||
_err "${ERR}could not verify the signature."
|
||||
exit 1
|
||||
die "could not verify the signature."
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -333,8 +337,7 @@ sys_create_store()
|
||||
_debug "--- [ ${FUNCNAME[0]} ] ---"
|
||||
|
||||
if [[ -e "/var/guix" || -e "/gnu" ]]; then
|
||||
_err "${ERR}A previous Guix installation was found. Refusing to overwrite."
|
||||
exit 1
|
||||
die "A previous Guix installation was found. Refusing to overwrite."
|
||||
fi
|
||||
|
||||
cd "$tmp_path"
|
||||
@@ -488,14 +491,22 @@ sys_enable_guix_daemon()
|
||||
}
|
||||
|
||||
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 \
|
||||
project's build farm? (yes/no)"; then
|
||||
guix archive --authorize \
|
||||
< ~root/.config/guix/current/share/guix/ci.guix.gnu.org.pub \
|
||||
&& _msg "${PAS}Authorized public key for ci.guix.gnu.org"
|
||||
else
|
||||
_msg "${INF}Skipped authorizing build farm public keys"
|
||||
project's build farms?"; then
|
||||
for host in "${hosts[@]}"; do
|
||||
local key=~root/.config/guix/current/share/guix/$host.pub
|
||||
[ -f "$key" ] \
|
||||
&& guix archive --authorize < "$key" \
|
||||
&& _msg "${PAS}Authorized public key for $host"
|
||||
done
|
||||
else
|
||||
_msg "${INF}Skipped authorizing build farm public keys"
|
||||
fi
|
||||
}
|
||||
|
||||
@@ -503,7 +514,7 @@ sys_create_init_profile()
|
||||
{ # Define for better desktop integration
|
||||
# This will not take effect until the next shell or desktop session!
|
||||
[ -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
|
||||
# with Guix System: see <https://issues.guix.gnu.org/56050#3>.
|
||||
export XDG_DATA_HOME="${XDG_DATA_HOME:-$HOME/.local/share}"
|
||||
@@ -532,9 +543,6 @@ GUIX_LOCPATH="$GUIX_PROFILE/lib/locale"
|
||||
export GUIX_LOCPATH
|
||||
|
||||
[ -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
|
||||
}
|
||||
|
||||
@@ -557,9 +565,28 @@ sys_create_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()
|
||||
{
|
||||
local char
|
||||
cat<<"EOF"
|
||||
░░░ ░░░
|
||||
░░▒▒░░░░░░░░░ ░░░░░░░░░▒▒░░
|
||||
@@ -585,8 +612,18 @@ This script installs GNU Guix on your system
|
||||
|
||||
https://www.gnu.org/software/guix/
|
||||
EOF
|
||||
echo -n "Press return to continue..."
|
||||
read -r
|
||||
# Don't use ‘read -p’ here! It won't display when run non-interactively.
|
||||
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()
|
||||
@@ -606,7 +643,7 @@ main()
|
||||
_msg "${INF}system is ${ARCH_OS}"
|
||||
|
||||
umask 0022
|
||||
tmp_path="$(mktemp -t -d guix.XXX)"
|
||||
tmp_path="$(mktemp -t -d guix.XXXXXX)"
|
||||
|
||||
if [ -z "${GUIX_BINARY_FILE_NAME}" ]; then
|
||||
guix_get_bin_list "${GNU_URL}"
|
||||
@@ -626,6 +663,7 @@ main()
|
||||
sys_authorize_build_farms
|
||||
sys_create_init_profile
|
||||
sys_create_shell_completion
|
||||
sys_customize_bashrc
|
||||
|
||||
_msg "${INF}cleaning up ${tmp_path}"
|
||||
rm -r "${tmp_path}"
|
||||
|
||||
@@ -11,10 +11,12 @@ After=guix-daemon.service
|
||||
[Service]
|
||||
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
|
||||
RemainAfterExit=yes
|
||||
StandardOutput=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>.
|
||||
TasksMax=1024
|
||||
|
||||
|
||||
@@ -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))
|
||||
'())))
|
||||
+372
-23
@@ -1,12 +1,12 @@
|
||||
;; 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 © 2019–2021 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;; Copyright © 2019, 2020 Miguel Ángel Arruga Vivas <rosen644835@gmail.com>
|
||||
;; Copyright © 2019, 2020 Konrad Hinsen <konrad.hinsen@fastmail.net>
|
||||
;; Copyright © 2019, 2020, 2021 Julien Lepiller <julien@lepiller.eu>
|
||||
;; Copyright © 2019–2022 Florian Pelz <pelzflorian@pelzflorian.de>
|
||||
;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
|
||||
;; Copyright © 2019–2023 Florian Pelz <pelzflorian@pelzflorian.de>
|
||||
;; Copyright © 2020, 2022 Marius Bakke <marius@gnu.org>
|
||||
;; Copyright © 2020, 2021 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||
;; Copyright © 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
@@ -25,11 +25,344 @@
|
||||
|
||||
(channel-news
|
||||
(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}.
|
||||
|
||||
Há 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")
|
||||
(title
|
||||
(en "Guix System image creation is now documented")
|
||||
(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
|
||||
(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
|
||||
@@ -45,12 +378,18 @@ zu bringen.")
|
||||
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
|
||||
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")
|
||||
(title
|
||||
(en "WSL system images support")
|
||||
(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
|
||||
(en "The @command{guix system image} command can now generate system
|
||||
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 :
|
||||
|
||||
@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 -d Guix}.")))
|
||||
(entry (commit "11a06d1e49f4d50d6789e05bbf35e2e145ff7838")
|
||||
@@ -124,18 +473,18 @@ uma transformação, como por exemplo
|
||||
|
||||
(entry (commit "c188cf57f161c0c26e2d7c8516bd1ddd1492d686")
|
||||
(title
|
||||
(en "Linux-libre kernel updated to 5.19")
|
||||
(de "Linux-libre-Kernel wird auf 5.19 aktualisiert")
|
||||
(fr "Le noyau linux-libre est mis à jour vers la 5.19")
|
||||
(pt "Kernel linux-libre atualizado para 5.19"))
|
||||
(en "Linux-libre kernel updated to 5.19")
|
||||
(de "Linux-libre-Kernel wird auf 5.19 aktualisiert")
|
||||
(fr "Le noyau linux-libre est mis à jour vers la 5.19")
|
||||
(pt "Kernel linux-libre atualizado para 5.19"))
|
||||
(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.")
|
||||
(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.")
|
||||
(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.")
|
||||
(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.")))
|
||||
|
||||
(entry (commit "a15542d26df42dabdb5e2f76d150ae200230c3b0")
|
||||
@@ -177,15 +526,15 @@ Execute @command{info \"(guix) Invoking guix style\"} para mais informações.")
|
||||
|
||||
(entry (commit "2ec7ab2610eb67e26dab52b671eb29e46f64ea0f")
|
||||
(title
|
||||
(en "Linux-libre kernel updated to 5.18")
|
||||
(de "Linux-libre-Kernel wird auf 5.18 aktualisiert")
|
||||
(fr "Le noyau linux-libre est mis à jour vers la 5.18"))
|
||||
(en "Linux-libre kernel updated to 5.18")
|
||||
(de "Linux-libre-Kernel wird auf 5.18 aktualisiert")
|
||||
(fr "Le noyau linux-libre est mis à jour vers la 5.18"))
|
||||
(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.")
|
||||
(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.")
|
||||
(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.")))
|
||||
|
||||
(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")
|
||||
(fr "Le noyau linux-libre est mis à jour vers la 5.17"))
|
||||
(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.")
|
||||
(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.")
|
||||
(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.")))
|
||||
|
||||
(entry (commit "c42b7baf13c7633b4512e94da7445299c57b247d")
|
||||
|
||||
@@ -51,18 +51,17 @@ TARGET."
|
||||
"openssh" "emacs" "vim" "python" "guile" "guix")))
|
||||
|
||||
(define %base-packages/armhf
|
||||
;; XXX: Relax requirements for armhf-linux for lack of enough build power.
|
||||
(map (lambda (package)
|
||||
(if (string=? (package-name package) "emacs")
|
||||
(specification->package "emacs-no-x")
|
||||
package))
|
||||
%base-packages))
|
||||
;; The guix package doesn't build natively on armhf due to Guile memory
|
||||
;; issues compiling the package modules
|
||||
(remove (lambda (package)
|
||||
(string=? (package-name package) "guix"))
|
||||
%base-packages))
|
||||
|
||||
(define %base-packages/hurd
|
||||
;; XXX: For now we are less demanding of "i586-gnu".
|
||||
(map specification->package
|
||||
'("coreutils" "grep" "findutils" "gawk" "make"
|
||||
"gcc-toolchain" "tar" "xz")))
|
||||
#;"gcc-toolchain" "tar" "xz")))
|
||||
|
||||
(define %system-packages
|
||||
;; Key packages proposed by the Guix System installer.
|
||||
@@ -112,8 +111,6 @@ TARGET."
|
||||
(cond ((string=? system "i586-gnu")
|
||||
%base-packages/hurd)
|
||||
((string=? system "armhf-linux")
|
||||
;; FIXME: Drop special case when ci.guix.gnu.org
|
||||
;; has more ARMv7 build power.
|
||||
%base-packages/armhf)
|
||||
((string=? system "powerpc64le-linux")
|
||||
;; FIXME: Drop 'bootstrap-tarballs' until
|
||||
|
||||
+149
-109
@@ -1,118 +1,158 @@
|
||||
-*- 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\
|
||||
"gnu: Add "
|
||||
(p
|
||||
(with-temp-buffer
|
||||
(magit-git-wash #'magit-diff-wash-diffs
|
||||
"diff" "--staged")
|
||||
(goto-char (point-min))
|
||||
(when (re-search-forward "\\+(define-public \\(\\S-+\\)" nil 'noerror)
|
||||
(match-string-no-properties 1)))
|
||||
var ) "." n n
|
||||
"* " (car (magit-staged-files)) " (" (s var ) "): New variable.")
|
||||
(add\ "gnu: Add "
|
||||
(p (with-temp-buffer
|
||||
(magit-git-wash #'magit-diff-wash-diffs
|
||||
"diff" "--staged")
|
||||
(goto-char (point-min))
|
||||
(when (re-search-forward "\\+(define-public \\(\\S-+\\)"
|
||||
nil 'noerror)
|
||||
(match-string-no-properties 1)))
|
||||
var)
|
||||
"." n n
|
||||
"* " (p (or (car (magit-staged-files)) ""))
|
||||
" (" (s var ) "): New variable.")
|
||||
|
||||
(remove\
|
||||
"gnu: Remove "
|
||||
(p (with-temp-buffer
|
||||
(magit-git-wash #'magit-diff-wash-diffs
|
||||
"diff" "--staged")
|
||||
(goto-char (point-min))
|
||||
(when (re-search-forward "\\-(define-public \\(\\S-+\\)" nil 'noerror)
|
||||
(match-string-no-properties 1)))
|
||||
var) "." n n
|
||||
"* " (car (magit-staged-files)) " (" (s var) "): Delete variable.")
|
||||
(remove\ "gnu: Remove "
|
||||
(p (with-temp-buffer
|
||||
(magit-git-wash #'magit-diff-wash-diffs
|
||||
"diff" "--staged")
|
||||
(goto-char (point-min))
|
||||
(when (re-search-forward "\\-(define-public \\(\\S-+\\)"
|
||||
nil 'noerror)
|
||||
(match-string-no-properties 1)))
|
||||
var)
|
||||
"." n n
|
||||
"* " (p (or (car (magit-staged-files)) ""))
|
||||
" (" (s var) "): Delete variable.")
|
||||
|
||||
(rename\
|
||||
"gnu: "
|
||||
(p (with-temp-buffer
|
||||
(magit-git-wash #'magit-diff-wash-diffs
|
||||
"diff" "--staged")
|
||||
(beginning-of-buffer)
|
||||
(when (search-forward "-(define-public " nil 'noerror)
|
||||
(thing-at-point 'sexp 'no-properties)))
|
||||
prev-var)
|
||||
": Rename package to "
|
||||
(p (with-temp-buffer
|
||||
(magit-git-wash #'magit-diff-wash-diffs
|
||||
"diff" "--staged")
|
||||
(beginning-of-buffer)
|
||||
(when (search-forward "+(define-public " nil 'noerror)
|
||||
(thing-at-point 'sexp 'no-properties)))
|
||||
new-var) "." n n
|
||||
"* " (car (magit-staged-files)) " (" (s prev-var) "): Define in terms of" n
|
||||
"'deprecated-package'." n
|
||||
"(" (s new-var) "): New variable, formerly known as \"" (s prev-var) "\".")
|
||||
(rename\ "gnu: "
|
||||
(p (with-temp-buffer
|
||||
(magit-git-wash #'magit-diff-wash-diffs
|
||||
"diff" "--staged")
|
||||
(beginning-of-buffer)
|
||||
(when (search-forward "-(define-public " nil 'noerror)
|
||||
(thing-at-point 'sexp 'no-properties)))
|
||||
prev-var)
|
||||
": Rename package to "
|
||||
(p (with-temp-buffer
|
||||
(magit-git-wash #'magit-diff-wash-diffs
|
||||
"diff" "--staged")
|
||||
(beginning-of-buffer)
|
||||
(when (search-forward "+(define-public " nil 'noerror)
|
||||
(thing-at-point 'sexp 'no-properties)))
|
||||
new-var)
|
||||
"." n n
|
||||
"* " (p (or (car (magit-staged-files)) "")) " (" (s prev-var) "): "
|
||||
"Define in terms of" n
|
||||
"'deprecated-package'." n
|
||||
"(" (s new-var) "): New variable, formerly known as \""
|
||||
(s prev-var) "\".")
|
||||
|
||||
(update\
|
||||
"gnu: "
|
||||
(p (with-temp-buffer
|
||||
(magit-git-wash #'magit-diff-wash-diffs
|
||||
"diff" "--staged")
|
||||
(goto-char (point-min))
|
||||
(when (re-search-forward "^[ ]*(define-public \\(\\S-+\\)" nil 'noerror)
|
||||
(match-string-no-properties 1)))
|
||||
var)
|
||||
": Update to "
|
||||
(p (with-temp-buffer
|
||||
(magit-git-wash #'magit-diff-wash-diffs
|
||||
"diff" "--staged")
|
||||
(goto-char (point-min))
|
||||
(search-forward "name" nil 'noerror)
|
||||
(search-forward "+" nil 'noerror) ; first change
|
||||
(when (and (search-forward "version " nil 'noerror)
|
||||
(looking-at-p "\""))
|
||||
(let ((end (save-excursion (search-forward "\")" nil 'noerror))))
|
||||
(when end
|
||||
(forward-char)
|
||||
(buffer-substring-no-properties (point) (- end 2))))))
|
||||
version) "." n n
|
||||
"* " (car (magit-staged-files)) " (" (s var) "): Update to " (s version) "."
|
||||
(mapconcat (lambda (file) (concat "* " file)) (cdr (magit-staged-files))) n)
|
||||
(update\ "gnu: "
|
||||
(p (with-temp-buffer
|
||||
(magit-git-wash #'magit-diff-wash-diffs
|
||||
"diff" "--staged")
|
||||
(goto-char (point-min))
|
||||
(when (re-search-forward "^[ ]*(define-public \\(\\S-+\\)"
|
||||
nil 'noerror)
|
||||
(match-string-no-properties 1)))
|
||||
var)
|
||||
": Update to "
|
||||
(p (with-temp-buffer
|
||||
(magit-git-wash #'magit-diff-wash-diffs
|
||||
"diff" "--staged")
|
||||
(goto-char (point-min))
|
||||
(search-forward "name" nil 'noerror)
|
||||
(search-forward "+" nil 'noerror) ; first change
|
||||
(when (and (search-forward "version " nil 'noerror)
|
||||
(looking-at-p "\""))
|
||||
(let ((end (save-excursion (search-forward "\")"
|
||||
nil 'noerror))))
|
||||
(when end
|
||||
(forward-char)
|
||||
(buffer-substring-no-properties (point) (- end 2))))))
|
||||
version)
|
||||
"." 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\
|
||||
"gnu: Add cl-"
|
||||
(p (replace-regexp-in-string
|
||||
"^cl-" "" (with-temp-buffer
|
||||
(magit-git-wash #'magit-diff-wash-diffs
|
||||
"diff" "--staged")
|
||||
(beginning-of-buffer)
|
||||
(when (search-forward "+(define-public " nil 'noerror)
|
||||
(replace-regexp-in-string
|
||||
"^sbcl-" ""
|
||||
(thing-at-point 'sexp 'no-properties)))))
|
||||
var) "." n n
|
||||
"* " (car (magit-staged-files))
|
||||
" (cl-" (s var) ", ecl-" (s var) ", sbcl-" (s var) "): New variables.")
|
||||
(addcl\ "gnu: Add cl-"
|
||||
(p (replace-regexp-in-string
|
||||
"^cl-" "" (with-temp-buffer
|
||||
(magit-git-wash #'magit-diff-wash-diffs
|
||||
"diff" "--staged")
|
||||
(beginning-of-buffer)
|
||||
(when (search-forward "+(define-public " nil 'noerror)
|
||||
(replace-regexp-in-string
|
||||
"^sbcl-" ""
|
||||
(thing-at-point 'sexp 'no-properties)))))
|
||||
var)
|
||||
"." n n
|
||||
"* " (p (or (car (magit-staged-files)) ""))
|
||||
" (cl-" (s var)
|
||||
", ecl-" (s var)
|
||||
", sbcl-" (s var) "): New variables.")
|
||||
|
||||
(https\
|
||||
"gnu: "
|
||||
(p (with-temp-buffer
|
||||
(magit-git-wash #'magit-diff-wash-diffs
|
||||
"diff" "--staged")
|
||||
(goto-char (point-min))
|
||||
(when (re-search-forward "^[ ]*(define-public \\(\\S-+\\)" nil 'noerror)
|
||||
(match-string-no-properties 1)))
|
||||
var)
|
||||
": Use HTTPS home page." n n
|
||||
"* " (car (magit-staged-files)) " (" (s var) ")[home-page]: Use HTTPS." n
|
||||
(mapconcat (lambda (file) (concat "* " file)) (cdr (magit-staged-files))) n)
|
||||
(https\ "gnu: "
|
||||
(p (with-temp-buffer
|
||||
(magit-git-wash #'magit-diff-wash-diffs
|
||||
"diff" "--staged")
|
||||
(goto-char (point-min))
|
||||
(when (re-search-forward "^[ ]*(define-public \\(\\S-+\\)"
|
||||
nil 'noerror)
|
||||
(match-string-no-properties 1)))
|
||||
var)
|
||||
": Use HTTPS home page." n n
|
||||
"* " (p (or (car (magit-staged-files)) ""))
|
||||
" (" (s var) ")[home-page]: Use HTTPS."
|
||||
n
|
||||
(mapconcat (lambda (file) (concat "* " file))
|
||||
(cdr (magit-staged-files))
|
||||
"\n"))
|
||||
|
||||
(move\
|
||||
"gnu: "
|
||||
(p (with-temp-buffer
|
||||
(magit-git-wash #'magit-diff-wash-diffs
|
||||
"diff" "--staged")
|
||||
(goto-char (point-min))
|
||||
(when (re-search-forward "\\-(define-public \\(\\S-+\\)" nil 'noerror)
|
||||
(match-string-no-properties 1)))
|
||||
var)
|
||||
": Move to "
|
||||
(concat "("
|
||||
(string-replace "\.scm" ""
|
||||
(string-replace "/" " " (car (magit-staged-files))))
|
||||
").") n
|
||||
n "* " (car (magit-staged-files)) " (" (s var) "): Move from here…"
|
||||
n "* " (cadr (magit-staged-files)) " (" (s var) "): …to here.")
|
||||
(move\ "gnu: "
|
||||
(p (with-temp-buffer
|
||||
(magit-git-wash #'magit-diff-wash-diffs
|
||||
"diff" "--staged")
|
||||
(goto-char (point-min))
|
||||
(when (re-search-forward "\\-(define-public \\(\\S-+\\)"
|
||||
nil 'noerror)
|
||||
(match-string-no-properties 1)))
|
||||
var)
|
||||
": Move to ("
|
||||
(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))
|
||||
(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.")
|
||||
|
||||
@@ -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")`
|
||||
@@ -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")`
|
||||
@@ -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")`
|
||||
@@ -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")`
|
||||
@@ -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")`
|
||||
+159
-23
@@ -5,6 +5,7 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2022 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2022 Mathieu Othacehe <othacehe@gnu.org>
|
||||
;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -34,6 +35,7 @@
|
||||
(ice-9 format)
|
||||
(ice-9 regex)
|
||||
(ice-9 match)
|
||||
(ice-9 rdelim)
|
||||
(guix ui)
|
||||
(git))
|
||||
|
||||
@@ -100,6 +102,8 @@
|
||||
(make-regexp "^gnu/packages/python(-.+|)\\.scm$")
|
||||
"gnu/packages/sphinx.scm"
|
||||
"gnu/packages/tryton.scm"
|
||||
"guix/build/pyproject-build-system.scm"
|
||||
"guix/build-system/pyproject.scm"
|
||||
"guix/build/python-build-system.scm"
|
||||
"guix/build-system/python.scm"
|
||||
"guix/import/pypi.scm"
|
||||
@@ -129,13 +133,23 @@ the haskell-build-system."
|
||||
#:name "R team"
|
||||
#:description
|
||||
"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
|
||||
(team 'julia
|
||||
#:name "Julia team"
|
||||
#: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
|
||||
(team 'ocaml
|
||||
@@ -175,7 +189,14 @@ and the maven-build-system."
|
||||
|
||||
(define-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
|
||||
(team 'emacs
|
||||
@@ -185,7 +206,10 @@ ecosystem."
|
||||
#:scope (list (make-regexp "^gnu/packages/emacs(-.+|)\\.scm$")
|
||||
"guix/build/emacs-build-system.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
|
||||
(team 'lisp
|
||||
@@ -200,11 +224,23 @@ asdf-build-system."
|
||||
|
||||
(define-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
|
||||
(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
|
||||
(team 'embedded-bootstrap
|
||||
@@ -212,11 +248,23 @@ asdf-build-system."
|
||||
|
||||
(define-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
|
||||
(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
|
||||
(team 'core
|
||||
@@ -314,19 +362,35 @@ asdf-build-system."
|
||||
"gnu/packages/motti.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
|
||||
(team 'translations
|
||||
#:name "Translations"))
|
||||
#:name "Translations"
|
||||
#:scope (list "etc/news.scm"
|
||||
(make-regexp "^po/"))))
|
||||
|
||||
(define-team installer
|
||||
(team 'installer
|
||||
#:name "Installer script and system installer"
|
||||
#:scope
|
||||
(list (make-regexp "^guix/installer(\\.scm$|/)"))))
|
||||
#:scope (list (make-regexp "^gnu/installer(\\.scm$|/)"))))
|
||||
|
||||
(define-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
|
||||
(team 'mentors
|
||||
@@ -339,7 +403,8 @@ asdf-build-system."
|
||||
#:name "Mozilla"
|
||||
#:description
|
||||
"Taking care about Icecat and Icedove, built from Mozilla Firefox
|
||||
and Thunderbird."))
|
||||
and Thunderbird."
|
||||
#:scope (list "gnu/packages/gnuzilla.scm")))
|
||||
|
||||
(define-team racket
|
||||
(team 'racket
|
||||
@@ -347,13 +412,18 @@ and Thunderbird."))
|
||||
#:description
|
||||
"The Racket language and Racket-based languages, Racket packages,
|
||||
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"
|
||||
"bavier@posteo.net")
|
||||
science)
|
||||
@@ -374,6 +444,10 @@ importer."))
|
||||
"andreas@enge.fr")
|
||||
science)
|
||||
|
||||
(define-member (person "Tobias Geerinckx-Rice"
|
||||
"me@tobias.gr")
|
||||
core kernel mentors)
|
||||
|
||||
(define-member (person "Björn Höfling"
|
||||
"bjoern.hoefling@bjoernhoefling.de")
|
||||
java)
|
||||
@@ -434,6 +508,26 @@ importer."))
|
||||
"dev@jpoiret.xyz")
|
||||
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)
|
||||
(or (hash-ref %teams (string->symbol name))
|
||||
@@ -476,14 +570,16 @@ TEAMS when a patch is received by Debbugs."
|
||||
prefix
|
||||
(person-name member)
|
||||
(person-email member)))
|
||||
(team-members team)))
|
||||
(sort
|
||||
(team-members team)
|
||||
(lambda (m1 m2) (string<? (person-name m1) (person-name m2))))))
|
||||
|
||||
(define (list-teams)
|
||||
"Print all teams, their scope and their members."
|
||||
(define port* (current-output-port))
|
||||
(define width* (%text-width))
|
||||
(hash-for-each
|
||||
(lambda (key team)
|
||||
(for-each
|
||||
(lambda (team)
|
||||
(format port*
|
||||
"\
|
||||
id: ~a
|
||||
@@ -504,7 +600,11 @@ description: ~a
|
||||
(scope (format #f "scope: ~{~s ~}~%" scope))))
|
||||
(list-members team port* "+ ")
|
||||
(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)
|
||||
@@ -532,14 +632,38 @@ and REV-END, two git revision strings."
|
||||
(const 0))
|
||||
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)
|
||||
(match args
|
||||
(("cc" . 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)
|
||||
(apply cc (find-team-by-scope
|
||||
(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))
|
||||
(("list-members" . team-names)
|
||||
@@ -549,6 +673,18 @@ and REV-END, two git revision strings."
|
||||
team-names))
|
||||
(anything
|
||||
(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)))
|
||||
|
||||
+53
-52
@@ -322,26 +322,22 @@ instead~%")))
|
||||
(force %bootloaders))
|
||||
(leave (G_ "~a: no such bootloader~%") name)))
|
||||
|
||||
(define (efi-bootloader-profile files bootloader-package hooks)
|
||||
"Creates a profile with BOOTLOADER-PACKAGE and a directory collection/ with
|
||||
links to additional FILES from the store. This collection is meant to be used
|
||||
by the bootloader installer.
|
||||
(define (efi-bootloader-profile packages files hooks)
|
||||
"Creates a profile from the lists of PACKAGES and FILES from the store.
|
||||
This profile is meant to be used by the bootloader-installer.
|
||||
|
||||
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 '/',
|
||||
then the directory content instead of the directory itself will be symlinked
|
||||
into the collection/ directory.
|
||||
symlinked into the profile. If a directory name ends with '/', then the
|
||||
directory content instead of the directory itself will be symlinked into the
|
||||
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.
|
||||
|
||||
HOOKS lists additional hook functions to modify the profile."
|
||||
(define (bootloader-collection manifest)
|
||||
(define (efi-bootloader-profile-hook manifest)
|
||||
(define build
|
||||
(with-imported-modules '((guix build utils)
|
||||
(ice-9 ftw)
|
||||
(srfi srfi-1)
|
||||
(srfi srfi-26))
|
||||
(with-imported-modules '((guix build utils))
|
||||
#~(begin
|
||||
(use-modules ((guix build utils)
|
||||
#: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)
|
||||
"Return #t if NAME is a direct store entry and nothing inside."
|
||||
(not (string-index (strip-store-file-name name) #\/)))
|
||||
(let* ((collection (string-append #$output "/collection"))
|
||||
(files '#$files)
|
||||
(let* ((files '#$files)
|
||||
(directories (filter name-ends-with-/? files))
|
||||
(names-from-directories
|
||||
(append-map (lambda (directory)
|
||||
@@ -374,11 +369,11 @@ HOOKS lists additional hook functions to modify the profile."
|
||||
directories))
|
||||
(names (append names-from-directories
|
||||
(remove name-ends-with-/? files))))
|
||||
(mkdir-p collection)
|
||||
(mkdir-p #$output)
|
||||
(if (every file-exists? names)
|
||||
(begin
|
||||
(for-each (lambda (name)
|
||||
(symlink-to name collection
|
||||
(symlink-to name #$output
|
||||
(if (name-is-store-entry? name)
|
||||
strip-store-file-name
|
||||
basename)))
|
||||
@@ -386,57 +381,63 @@ HOOKS lists additional hook functions to modify the profile."
|
||||
#t)
|
||||
#f)))))
|
||||
|
||||
(gexp->derivation "bootloader-collection"
|
||||
(gexp->derivation "efi-bootloader-profile"
|
||||
build
|
||||
#:local-build? #t
|
||||
#:substitutable? #f
|
||||
#:properties
|
||||
`((type . profile-hook)
|
||||
(hook . bootloader-collection))))
|
||||
(hook . efi-bootloader-profile-hook))))
|
||||
|
||||
(profile (content (packages->manifest (list bootloader-package)))
|
||||
(name "bootloader-profile")
|
||||
(hooks (append (list bootloader-collection) hooks))
|
||||
(profile (content (packages->manifest packages))
|
||||
(name "efi-bootloader-profile")
|
||||
(hooks (cons efi-bootloader-profile-hook hooks))
|
||||
(locales? #f)
|
||||
(allow-collisions? #f)
|
||||
(relative-symlinks? #f)))
|
||||
|
||||
(define* (efi-bootloader-chain files
|
||||
final-bootloader
|
||||
(define* (efi-bootloader-chain final-bootloader
|
||||
#:key
|
||||
(packages '())
|
||||
(files '())
|
||||
(hooks '())
|
||||
installer)
|
||||
"Define a bootloader chain with FINAL-BOOTLOADER as the final bootloader and
|
||||
certain directories and files from the store given in the list of FILES.
|
||||
installer
|
||||
disk-image-installer)
|
||||
"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,
|
||||
local-file, etc., or package contents produced with file-append. They will be
|
||||
collected inside a directory collection/ inside a generated bootloader profile,
|
||||
which will be passed to the INSTALLER.
|
||||
The package of the FINAL-BOOTLOADER and all PACKAGES and FILES will be placed
|
||||
in an efi-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
|
||||
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
|
||||
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
|
||||
the bootloader. Otherwise the installer of the FINAL-BOOTLOADER will be called."
|
||||
(let* ((final-installer (or installer
|
||||
(bootloader-installer final-bootloader)))
|
||||
(profile (efi-bootloader-profile files
|
||||
(bootloader-package final-bootloader)
|
||||
(if (list? hooks)
|
||||
hooks
|
||||
(list hooks)))))
|
||||
(bootloader
|
||||
(inherit final-bootloader)
|
||||
(package profile)
|
||||
(installer
|
||||
#~(lambda (bootloader target mount-point)
|
||||
(#$final-installer bootloader target mount-point)
|
||||
(copy-recursively
|
||||
(string-append bootloader "/collection")
|
||||
(string-append mount-point target)
|
||||
#:follow-symlinks? #t
|
||||
#:log (%make-void-port "w")))))))
|
||||
If the INSTALLER argument is used, then this gexp procedure will be called to
|
||||
install the efi-bootloader-profile. Otherwise the installer of the
|
||||
FINAL-BOOTLOADER will be called.
|
||||
|
||||
If the DISK-IMAGE-INSTALLER is used, then this gexp procedure will be called
|
||||
to install the efi-bootloader-profile into a disk image. Otherwise the
|
||||
disk-image-installer of the FINAL-BOOTLOADER will be called."
|
||||
(bootloader
|
||||
(inherit final-bootloader)
|
||||
(name "efi-bootloader-chain")
|
||||
(package
|
||||
(efi-bootloader-profile (cons (bootloader-package final-bootloader)
|
||||
packages)
|
||||
files
|
||||
(if (list? hooks)
|
||||
hooks
|
||||
(list hooks))))
|
||||
(installer
|
||||
(or installer
|
||||
(bootloader-installer final-bootloader)))
|
||||
(disk-image-installer
|
||||
(or disk-image-installer
|
||||
(bootloader-disk-image-installer final-bootloader)))))
|
||||
|
||||
+139
-83
@@ -53,13 +53,14 @@
|
||||
grub-theme-gfxmode
|
||||
|
||||
install-grub-efi-removable
|
||||
install-grub-efi-netboot
|
||||
make-grub-efi-netboot-installer
|
||||
|
||||
grub-bootloader
|
||||
grub-efi-bootloader
|
||||
grub-efi-removable-bootloader
|
||||
grub-efi32-bootloader
|
||||
grub-efi-netboot-bootloader
|
||||
grub-efi-netboot-removable-bootloader
|
||||
grub-mkrescue-bootloader
|
||||
grub-minimal-bootloader
|
||||
|
||||
@@ -353,7 +354,7 @@ code."
|
||||
((or #f (? string?))
|
||||
#~(format #f "search --file --set ~a" #$file)))))
|
||||
|
||||
(define* (grub-configuration-file config entries
|
||||
(define* (make-grub-configuration grub config entries
|
||||
#:key
|
||||
(locale #f)
|
||||
(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
|
||||
;; 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.
|
||||
#~(format port "menuentry ~s {
|
||||
~a
|
||||
@@ -453,9 +454,7 @@ menuentry ~s {
|
||||
(define locale-config
|
||||
(let* ((entry (first all-entries))
|
||||
(device (menu-entry-device entry))
|
||||
(mount-point (menu-entry-device-mount-point entry))
|
||||
(bootloader (bootloader-configuration-bootloader config))
|
||||
(grub (bootloader-package bootloader)))
|
||||
(mount-point (menu-entry-device-mount-point entry)))
|
||||
#~(let ((locale #$(and locale
|
||||
(locale-definition-source
|
||||
(locale-name->definition locale))))
|
||||
@@ -481,8 +480,6 @@ set lang=~a~%"
|
||||
|
||||
(define keyboard-layout-config
|
||||
(let* ((layout (bootloader-configuration-keyboard-layout config))
|
||||
(grub (bootloader-package
|
||||
(bootloader-configuration-bootloader config)))
|
||||
(keymap* (and layout
|
||||
(keyboard-layout-file layout #:grub grub)))
|
||||
(entry (first all-entries))
|
||||
@@ -533,6 +530,16 @@ fi~%"))))
|
||||
#:options '(#:local-build? #t
|
||||
#: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"))
|
||||
"--efi-directory" target-esp)))))
|
||||
|
||||
(define (install-grub-efi-netboot subdir)
|
||||
"Define a grub-efi-netboot bootloader installer for installation in SUBDIR,
|
||||
which is usually efi/Guix or efi/boot."
|
||||
(let* ((system (string-split (nix-system->gnu-triplet
|
||||
(or (%current-target-system)
|
||||
(%current-system)))
|
||||
#\-))
|
||||
(arch (first system))
|
||||
(boot-efi-link (match system
|
||||
;; These are the supportend systems and the names
|
||||
;; defined by the UEFI standard for removable media.
|
||||
(("i686" _ ...) "/bootia32.efi")
|
||||
(("x86_64" _ ...) "/bootx64.efi")
|
||||
(("arm" _ ...) "/bootarm.efi")
|
||||
(("aarch64" _ ...) "/bootaa64.efi")
|
||||
(("riscv" _ ...) "/bootriscv32.efi")
|
||||
(("riscv64" _ ...) "/bootriscv64.efi")
|
||||
;; Other systems are not supported, although defined.
|
||||
;; (("riscv128" _ ...) "/bootriscv128.efi")
|
||||
;; (("ia64" _ ...) "/bootia64.efi")
|
||||
((_ ...) #f)))
|
||||
(core-efi (string-append
|
||||
;; This is the arch dependent file name of GRUB, e.g.
|
||||
;; i368-efi/core.efi or arm64-efi/core.efi.
|
||||
(match arch
|
||||
("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.
|
||||
(define* (make-grub-efi-netboot-installer grub-efi grub-cfg subdir)
|
||||
"Make a bootloader-installer for a grub-efi-netboot bootloader, which expects
|
||||
its files in SUBDIR and its configuration file in GRUB-CFG.
|
||||
|
||||
As a grub-efi-netboot package is already pre-installed by 'grub-mknetdir', the
|
||||
installer basically copies all files from the bootloader-package (or profile)
|
||||
into the bootloader-target directory.
|
||||
|
||||
Additionally for network booting over TFTP, two relative symlinks to the store
|
||||
and to the GRUB-CFG file are necessary. Due to this a TFTP root directory must
|
||||
not be located on a FAT file-system.
|
||||
|
||||
If the bootloader-target does not support symlinks, then it is assumed to be a
|
||||
kind of EFI System Partition (ESP). In this case an intermediate configuration
|
||||
file is created with the help of GRUB-EFI to load the GRUB-CFG.
|
||||
|
||||
The installer is usable for any efi-bootloader-chain, which prepares the
|
||||
bootloader-profile in a way ready for copying.
|
||||
|
||||
The installer does not manipulate the system's 'UEFI Boot Manager'.
|
||||
|
||||
The returned installer accepts the BOOTLOADER, TARGET and MOUNT-POINT
|
||||
arguments. Its job is to copy the BOOTLOADER, which must be a pre-installed
|
||||
grub-efi-netboot package with a SUBDIR like efi/boot or efi/Guix, 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'
|
||||
or '/' for other 'guix system' commands.
|
||||
@@ -719,17 +715,19 @@ bootloader-configuration in:
|
||||
|
||||
(operating-system
|
||||
(bootloader (bootloader-configuration
|
||||
(targets '(\"/boot\"))
|
||||
(targets '(\"/boot/efi\"))
|
||||
…))
|
||||
…)
|
||||
|
||||
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
|
||||
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
|
||||
MOUNT-POINT/boot/grub/grub.cfg, and the second symlink points relatively from
|
||||
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
|
||||
directory and that the TARGET/%store-prefix symlink makes the whole store
|
||||
accessible via TFTP. Possibly the TFTP server must be configured
|
||||
to allow accesses outside its TFTP root directory. This may need to be
|
||||
considered for security aspects."
|
||||
(use-modules ((guix build union) #:select (symlink-relative)))
|
||||
(let* ((net-dir (string-append mount-point target "/"))
|
||||
(sub-dir (string-append net-dir #$subdir "/"))
|
||||
(store (string-append mount-point (%store-prefix)))
|
||||
(store-link (string-append net-dir (%store-prefix)))
|
||||
(grub-cfg (string-append mount-point "/boot/grub/grub.cfg"))
|
||||
(grub-cfg-link (string-append sub-dir (basename grub-cfg)))
|
||||
(boot-efi-link (string-append sub-dir #$boot-efi-link)))
|
||||
;; Prepare the symlink to the store.
|
||||
(mkdir-p (dirname store-link))
|
||||
(false-if-exception (delete-file store-link))
|
||||
(symlink-relative store store-link)
|
||||
;; Prepare the symlink to the grub.cfg, which points into the store.
|
||||
(mkdir-p (dirname grub-cfg-link))
|
||||
(false-if-exception (delete-file grub-cfg-link))
|
||||
(symlink-relative grub-cfg grub-cfg-link)
|
||||
;; Install GRUB, which refers to the grub.cfg, with support for
|
||||
;; encrypted partitions,
|
||||
(setenv "GRUB_ENABLE_CRYPTODISK" "y")
|
||||
(invoke/quiet (string-append bootloader "/bin/grub-mknetdir")
|
||||
(string-append "--net-directory=" net-dir)
|
||||
(string-append "--subdir=" #$subdir))
|
||||
;; Prepare the bootloader symlink, which points to core.efi of GRUB.
|
||||
(false-if-exception (delete-file boot-efi-link))
|
||||
(symlink #$core-efi boot-efi-link))))))
|
||||
accessible via TFTP. Possibly the TFTP server must be configured to allow
|
||||
accesses outside its TFTP root directory. This all may need to be considered
|
||||
for security aspects. It is advised to disable any TFTP write access!
|
||||
|
||||
The installer can also be used to prepare booting from local storage, if the
|
||||
underlying file-system, like FAT on an EFI System Partition (ESP), does not
|
||||
support symlinks. In this case the MOUNT-POINT/TARGET/SUBDIR/grub.cfg will be
|
||||
created with the help of GRUB-EFI to load the /boot/grub/grub.cfg file. A
|
||||
symlink to the store is not needed in this case."
|
||||
(with-imported-modules '((guix build union))
|
||||
#~(lambda (bootloader target mount-point)
|
||||
;; In context of a disk image creation TARGET will be #f and an
|
||||
;; installer is expected to do necessary installations on MOUNT-POINT,
|
||||
;; which will become the root file system. If TARGET is #f, this
|
||||
;; installer has nothing to do, as it only cares about the EFI System
|
||||
;; Partition (ESP).
|
||||
(when target
|
||||
(use-modules ((guix build union) #:select (symlink-relative))
|
||||
(ice-9 popen)
|
||||
(ice-9 rdelim))
|
||||
(let* ((mount-point/target (string-append mount-point target "/"))
|
||||
;; When installing Guix, it is common to mount TARGET below
|
||||
;; MOUNT-POINT rather than the root directory.
|
||||
(bootloader-target (if (file-exists? mount-point/target)
|
||||
mount-point/target
|
||||
target))
|
||||
(store (string-append mount-point (%store-prefix)))
|
||||
(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)
|
||||
(installer install-grub)
|
||||
(disk-image-installer install-grub-disk-image)
|
||||
(configuration-file "/boot/grub/grub.cfg")
|
||||
(configuration-file grub-cfg)
|
||||
(configuration-file-generator grub-configuration-file)))
|
||||
|
||||
(define grub-minimal-bootloader
|
||||
@@ -794,11 +838,12 @@ considered for security aspects."
|
||||
|
||||
(define grub-efi-bootloader
|
||||
(bootloader
|
||||
(inherit grub-bootloader)
|
||||
(name 'grub-efi)
|
||||
(package grub-efi)
|
||||
(installer install-grub-efi)
|
||||
(disk-image-installer #f)
|
||||
(name 'grub-efi)
|
||||
(package grub-efi)))
|
||||
(configuration-file grub-cfg)
|
||||
(configuration-file-generator grub-configuration-file)))
|
||||
|
||||
(define grub-efi-removable-bootloader
|
||||
(bootloader
|
||||
@@ -813,11 +858,22 @@ considered for security aspects."
|
||||
(name 'grub-efi32)
|
||||
(package grub-efi32)))
|
||||
|
||||
(define grub-efi-netboot-bootloader
|
||||
(define (make-grub-efi-netboot-bootloader name subdir)
|
||||
(bootloader
|
||||
(inherit grub-efi-bootloader)
|
||||
(name 'grub-efi-netboot-bootloader)
|
||||
(installer (install-grub-efi-netboot "efi/Guix"))))
|
||||
(name name)
|
||||
(package (make-grub-efi-netboot (symbol->string name) subdir))
|
||||
(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
|
||||
(bootloader
|
||||
|
||||
@@ -3,6 +3,7 @@
|
||||
;;; Copyright © 2017, 2019 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu>
|
||||
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -42,6 +43,7 @@
|
||||
u-boot-puma-rk3399-bootloader
|
||||
u-boot-rock64-rk3328-bootloader
|
||||
u-boot-rockpro64-rk3399-bootloader
|
||||
u-boot-ts7970-q-2g-1000mhz-c-bootloader
|
||||
u-boot-wandboard-bootloader))
|
||||
|
||||
(define install-u-boot
|
||||
@@ -127,6 +129,12 @@
|
||||
|
||||
(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)
|
||||
(package u-boot-pinebook-pro-rk3399)
|
||||
(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)))
|
||||
|
||||
@@ -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
|
||||
mechanism bypasses udev: it allows Linux to handle firmware loading directly
|
||||
by itself, without having to resort to a \"user helper\"."
|
||||
(call-with-output-file "/sys/module/firmware_class/parameters/path"
|
||||
(lambda (port)
|
||||
(display directory port))))
|
||||
|
||||
;; If the kernel was built without firmware loading support, this file
|
||||
;; 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)
|
||||
"Allow users to PTRACE_ATTACH their own processes.
|
||||
|
||||
@@ -899,6 +899,10 @@ caught and lead to a warning and #f as the result."
|
||||
(format (current-error-port)
|
||||
"warning: failed to read from device '~a'~%" device)
|
||||
#f)
|
||||
((= EMEDIUMTYPE errno) ;inaccessible, like DRBD secondaries
|
||||
(format (current-error-port)
|
||||
"warning: failed to open device '~a'~%" device)
|
||||
#f)
|
||||
(else
|
||||
(apply throw args))))))))
|
||||
|
||||
@@ -1123,7 +1127,7 @@ corresponds to the symbols listed in FLAGS."
|
||||
(('read-only rest ...)
|
||||
(logior MS_RDONLY (loop rest)))
|
||||
(('bind-mount rest ...)
|
||||
(logior MS_BIND (loop rest)))
|
||||
(logior MS_REC (logior MS_BIND (loop rest))))
|
||||
(('no-suid rest ...)
|
||||
(logior MS_NOSUID (loop rest)))
|
||||
(('no-dev rest ...)
|
||||
@@ -1132,6 +1136,8 @@ corresponds to the symbols listed in FLAGS."
|
||||
(logior MS_NOEXEC (loop rest)))
|
||||
(('no-atime rest ...)
|
||||
(logior MS_NOATIME (loop rest)))
|
||||
(('no-diratime rest ...)
|
||||
(logior MS_NODIRATIME (loop rest)))
|
||||
(('strict-atime rest ...)
|
||||
(logior MS_STRICTATIME (loop rest)))
|
||||
(('lazy-time rest ...)
|
||||
|
||||
+27
-21
@@ -1,5 +1,5 @@
|
||||
;;; 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>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
@@ -127,6 +127,9 @@ set."
|
||||
|
||||
(define (translated? 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")
|
||||
(passive-translator-xattr? file-name)
|
||||
(passive-translator-installed? file-name)))
|
||||
@@ -191,7 +194,7 @@ set."
|
||||
("proc" ("/hurd/procfs" "--stat-mode=444"))))
|
||||
|
||||
(define devices
|
||||
'(("dev/full" ("/hurd/null" "--full") #o666)
|
||||
`(("dev/full" ("/hurd/null" "--full") #o666)
|
||||
("dev/null" ("/hurd/null") #o666)
|
||||
("dev/random" ("/hurd/random" "--seed-file" "/var/lib/random-seed")
|
||||
#o644)
|
||||
@@ -210,31 +213,34 @@ set."
|
||||
;; 'fd_to_filename' in libc expects it.
|
||||
("dev/fd" ("/hurd/magic" "--directory" "fd") #o555)
|
||||
|
||||
("dev/tty1" ("/hurd/term" "/dev/tty1" "hurdio" "/dev/vcs/1/console")
|
||||
#o666)
|
||||
("dev/tty2" ("/hurd/term" "/dev/tty2" "hurdio" "/dev/vcs/2/console")
|
||||
#o666)
|
||||
("dev/tty3" ("/hurd/term" "/dev/tty3" "hurdio" "/dev/vcs/3/console")
|
||||
#o666)
|
||||
;; Create a number of ttys; syslogd writes to tty12 by default.
|
||||
;; FIXME: Creating /dev/tty12 leads the console client to switch to
|
||||
;; tty12 when syslogd starts, which is confusing for users. Thus, do
|
||||
;; not create tty12.
|
||||
,@(map (lambda (n)
|
||||
(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")
|
||||
#o666)
|
||||
("dev/ptyp1" ("/hurd/term" "/dev/ptyp1" "pty-master" "/dev/ttyp1")
|
||||
#o666)
|
||||
("dev/ptyp2" ("/hurd/term" "/dev/ptyp2" "pty-master" "/dev/ttyp2")
|
||||
#o666)
|
||||
,@(append-map (lambda (n)
|
||||
(let ((n (number->string n)))
|
||||
`((,(string-append "dev/ptyp" n)
|
||||
("/hurd/term" ,(string-append "/dev/ptyp" n)
|
||||
"pty-master" ,(string-append "/dev/ttyp" n))
|
||||
#o666)
|
||||
|
||||
("dev/ttyp0" ("/hurd/term" "/dev/ttyp0" "pty-slave" "/dev/ptyp0")
|
||||
#o666)
|
||||
("dev/ttyp1" ("/hurd/term" "/dev/ttyp1" "pty-slave" "/dev/ptyp1")
|
||||
#o666)
|
||||
("dev/ttyp2" ("/hurd/term" "/dev/ttyp2" "pty-slave" "/dev/ptyp2")
|
||||
#o666)))
|
||||
(,(string-append "dev/ttyp" n)
|
||||
("/hurd/term" ,(string-append "/dev/ttyp" n)
|
||||
"pty-slave" ,(string-append "/dev/ptyp" n))
|
||||
#o666))))
|
||||
(iota 10 0))))
|
||||
|
||||
(for-each scope-set-translator servers)
|
||||
(mkdir* "dev/vcs/1")
|
||||
(mkdir* "dev/vcs/2")
|
||||
(mkdir* "dev/vcs/2")
|
||||
(rename-file (scope "dev/console") (scope "dev/console-"))
|
||||
(for-each scope-set-translator devices)
|
||||
|
||||
|
||||
+4
-1
@@ -111,7 +111,10 @@ turn doesn't take any constant overhead into account, force a 1-MiB minimum."
|
||||
(if (eq? size 'guess)
|
||||
(estimate-partition-size root)
|
||||
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)
|
||||
(unless (member file '("." ".."))
|
||||
(invoke "mcopy" "-bsp" "-i" target
|
||||
|
||||
+61
-22
@@ -1,6 +1,7 @@
|
||||
;;; 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 © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
;;;
|
||||
;;; 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
|
||||
#:key
|
||||
(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
|
||||
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,
|
||||
'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))
|
||||
(catch 'system-error
|
||||
(lambda ()
|
||||
(match directive
|
||||
(('directory name)
|
||||
(mkdir-p (string-append target name)))
|
||||
(mkdir-p (string-append target* name)))
|
||||
(('directory name uid gid)
|
||||
(let ((dir (string-append target name)))
|
||||
(let ((dir (string-append target* name)))
|
||||
(mkdir-p dir)
|
||||
;; If called from a context without "root" permissions, "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))))
|
||||
(('directory name uid gid mode)
|
||||
(loop `(directory ,name ,uid ,gid))
|
||||
(chmod (string-append target name) mode))
|
||||
(chmod (string-append target* name) mode))
|
||||
(('file name)
|
||||
(call-with-output-file (string-append target name)
|
||||
(call-with-output-file (string-append target* name)
|
||||
(const #t)))
|
||||
(('file name (? string? content))
|
||||
(call-with-output-file (string-append target name)
|
||||
(call-with-output-file (string-append target* name)
|
||||
(lambda (port)
|
||||
(display content port))))
|
||||
((new '-> old)
|
||||
(let try ()
|
||||
(catch 'system-error
|
||||
(lambda ()
|
||||
(symlink old (string-append target 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 (string-append target new))
|
||||
(try))
|
||||
(apply throw args))))))))
|
||||
(let ((new* (string-append target* new)))
|
||||
(let try ()
|
||||
(catch 'system-error
|
||||
(lambda ()
|
||||
(when error-on-dangling-symlink?
|
||||
;; When the symbolic link points to a relative path,
|
||||
;; checking if its target exists must be done relatively
|
||||
;; to the link location.
|
||||
(unless (if (string-prefix? "/" old)
|
||||
(file-exists? old)
|
||||
(with-directory-excursion (dirname new*)
|
||||
(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
|
||||
;; Usually we can only get here when installing to an existing root,
|
||||
;; 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.
|
||||
EXTRAS is a list of directives appended to the built-in directives to populate
|
||||
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))
|
||||
|
||||
;; Add system generation 1.
|
||||
@@ -262,12 +282,31 @@ disk."
|
||||
(mount "/.rw-store" (%store-directory) "" MS_MOVE)
|
||||
(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)
|
||||
"Unmount copy-on-write store."
|
||||
(let ((tmp-dir "/remove"))
|
||||
(mkdir-p tmp-dir)
|
||||
(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)
|
||||
(delete-file-recursively
|
||||
(string-append target backing-directory))))
|
||||
|
||||
+134
-1
@@ -1,5 +1,5 @@
|
||||
;;; 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 © 2018 Danny Milosavljevic <dannym@scratchpost.org>
|
||||
;;;
|
||||
@@ -28,6 +28,7 @@
|
||||
#:use-module (rnrs io ports)
|
||||
#:use-module (rnrs bytevectors)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-9 gnu)
|
||||
#:use-module (srfi srfi-11)
|
||||
#:use-module (srfi srfi-26)
|
||||
#:use-module (ice-9 ftw)
|
||||
@@ -50,6 +51,17 @@
|
||||
load-linux-module*
|
||||
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
|
||||
|
||||
device-module-aliases
|
||||
@@ -429,6 +441,127 @@ key such as 'MAJOR or 'DEVTYPE and each cdr is the corresponding value."
|
||||
(line
|
||||
(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)
|
||||
"Return the list of module aliases required by DEVICE, a /dev file name, as
|
||||
in this example:
|
||||
|
||||
+39
-15
@@ -22,18 +22,19 @@
|
||||
#:use-module (srfi srfi-9)
|
||||
#:use-module (srfi srfi-26)
|
||||
#:use-module (srfi srfi-64)
|
||||
#:use-module (srfi srfi-71)
|
||||
#:use-module (rnrs io ports)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (ice-9 popen)
|
||||
#:use-module (ice-9 regex)
|
||||
#:export (marionette?
|
||||
marionette-pid
|
||||
make-marionette
|
||||
marionette-eval
|
||||
wait-for-file
|
||||
wait-for-tcp-port
|
||||
wait-for-unix-socket
|
||||
marionette-control
|
||||
marionette-screen-text
|
||||
wait-for-screen-text
|
||||
%qwerty-us-keystrokes
|
||||
marionette-type
|
||||
@@ -312,40 +313,61 @@ Monitor\")."
|
||||
|
||||
(define* (marionette-screen-text marionette #:key (ocr "ocrad"))
|
||||
"Take a screenshot of MARIONETTE, perform optical character
|
||||
recognition (OCR), and return the text read from the screen as a string. Do
|
||||
this by invoking OCR, which should be the file name of GNU Ocrad's
|
||||
@command{ocrad} or Tesseract OCR's @command{tesseract} command."
|
||||
recognition (OCR), and return the text read from the screen as a string, along
|
||||
the screen dump image used. Do this by invoking OCR, which should be the file
|
||||
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"))
|
||||
;; Use the QEMU Monitor to save an image of the screen to the host.
|
||||
(marionette-control (string-append "screendump " image) marionette)
|
||||
;; Process it via the OCR.
|
||||
(cond
|
||||
((string-contains ocr "ocrad")
|
||||
(invoke-ocrad-ocr image #:ocrad ocr))
|
||||
(values (invoke-ocrad-ocr image #:ocrad ocr) image))
|
||||
((string-contains ocr "tesseract")
|
||||
(invoke-tesseract-ocr image #:tesseract ocr))
|
||||
(values (invoke-tesseract-ocr image #:tesseract ocr) image))
|
||||
(else (error "unsupported ocr command"))))
|
||||
|
||||
(define* (wait-for-screen-text marionette predicate
|
||||
#:key
|
||||
(ocr "ocrad")
|
||||
(timeout 30))
|
||||
(timeout 30)
|
||||
pre-action
|
||||
post-action)
|
||||
"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
|
||||
(car (gettimeofday)))
|
||||
|
||||
(define end
|
||||
(+ start timeout))
|
||||
|
||||
(let loop ((last-text #f))
|
||||
(let loop ((last-text #f)
|
||||
(last-screendump #f))
|
||||
(if (> (car (gettimeofday)) end)
|
||||
(error "'wait-for-screen-text' timeout" 'ocr-text: last-text)
|
||||
(let ((text (marionette-screen-text marionette #:ocr ocr)))
|
||||
(or (predicate text)
|
||||
(begin
|
||||
(sleep 1)
|
||||
(loop text)))))))
|
||||
(let ((screendump-backup (string-drop last-screendump 5)))
|
||||
;; Move the file from /tmp/fileXXXXXX.pmm to the current working
|
||||
;; directory, so that it is preserved in the test derivation output.
|
||||
(copy-file last-screendump screendump-backup)
|
||||
(delete-file last-screendump)
|
||||
(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
|
||||
;; Maps "special" characters to their keystrokes.
|
||||
@@ -367,8 +389,10 @@ PREDICATE, whichever comes first. Raise an error when TIMEOUT is exceeded."
|
||||
(#\> . "shift-dot")
|
||||
(#\. . "dot")
|
||||
(#\, . "comma")
|
||||
(#\: . "shift-semicolon")
|
||||
(#\; . "semicolon")
|
||||
(#\' . "apostrophe")
|
||||
(#\! . "shift-1")
|
||||
(#\" . "shift-apostrophe")
|
||||
(#\` . "grave_accent")
|
||||
(#\bs . "backspace")
|
||||
|
||||
+3
-3
@@ -1,5 +1,5 @@
|
||||
;;; 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 © 2018, 2019 Clément Lassieur <clement@lassieur.org>
|
||||
;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu>
|
||||
@@ -25,7 +25,6 @@
|
||||
#:use-module (guix config)
|
||||
#:autoload (guix describe) (package-channels)
|
||||
#:use-module (guix store)
|
||||
#:use-module (guix grafts)
|
||||
#:use-module (guix profiles)
|
||||
#:use-module (guix packages)
|
||||
#:autoload (guix transformations) (tunable-package? tuned-package)
|
||||
@@ -38,6 +37,7 @@
|
||||
#:use-module ((guix licenses)
|
||||
#:select (gpl3+ license? license-name))
|
||||
#:use-module ((guix utils) #:select (%current-system))
|
||||
#:use-module ((guix scripts system) #:select (read-operating-system))
|
||||
#:use-module ((guix scripts pack)
|
||||
#:select (self-contained-tarball))
|
||||
#:use-module (gnu bootloader)
|
||||
@@ -251,7 +251,7 @@ otherwise use the IMAGE name."
|
||||
(drv (run-with-store store
|
||||
(mbegin %store-monad
|
||||
(set-guile-for-build (default-guile))
|
||||
(lower-object (system-image image))))))
|
||||
(lower-object (system-image image) system)))))
|
||||
(parameterize ((%graft? #f))
|
||||
(derivation->job name drv))))
|
||||
|
||||
|
||||
+42
-16
@@ -1,6 +1,7 @@
|
||||
;;; 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 © 2022-2023 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -33,6 +34,7 @@
|
||||
#:use-module (guix i18n)
|
||||
#:use-module (guix modules)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-9)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (ice-9 vlist)
|
||||
|
||||
@@ -47,6 +49,10 @@
|
||||
home-run-on-change-service-type
|
||||
home-provenance-service-type
|
||||
|
||||
literal-string
|
||||
literal-string?
|
||||
literal-string-value
|
||||
|
||||
environment-variable-shell-definitions
|
||||
home-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
|
||||
@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)
|
||||
"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
|
||||
ensures variable values are properly quoted."
|
||||
#~(let ((shell-quote
|
||||
(lambda (value)
|
||||
;; Double-quote VALUE, leaving dollar sign as is.
|
||||
(let ((quoted (list->string
|
||||
(string-fold-right
|
||||
#~(let* ((quote-string
|
||||
(lambda (value quoted-chars)
|
||||
(list->string (string-fold-right
|
||||
(lambda (chr lst)
|
||||
(case chr
|
||||
((#\" #\\)
|
||||
(append (list chr #\\) lst))
|
||||
(else (cons chr lst))))
|
||||
(if (memq chr quoted-chars)
|
||||
(append (list #\\ chr) lst)
|
||||
(cons chr lst)))
|
||||
'()
|
||||
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
|
||||
#$@(map (match-lambda
|
||||
((key . #f)
|
||||
"")
|
||||
((key . #t)
|
||||
#~(string-append "export " #$key "\n"))
|
||||
((key . value)
|
||||
((key . (or (? string? value)
|
||||
(? file-like? value)
|
||||
(? gexp? value)))
|
||||
#~(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))))
|
||||
|
||||
(define (environment-variables->setup-environment-script vars)
|
||||
@@ -313,7 +339,7 @@ directory containing FILES."
|
||||
(extend append)
|
||||
(default-value '())
|
||||
(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")
|
||||
|
||||
@@ -334,7 +360,7 @@ directory containing FILES."
|
||||
(extend append)
|
||||
(default-value '())
|
||||
(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")
|
||||
|
||||
@@ -355,7 +381,7 @@ directory containing FILES."
|
||||
(extend append)
|
||||
(default-value '())
|
||||
(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.")))
|
||||
|
||||
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2022 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2022 ( <paren@disroot.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -20,6 +21,7 @@
|
||||
#:use-module (gnu home services)
|
||||
#:use-module (gnu home services shepherd)
|
||||
#:use-module (gnu services configuration)
|
||||
#:autoload (gnu packages glib) (dbus)
|
||||
#:autoload (gnu packages xdisorg) (redshift)
|
||||
#:use-module (guix records)
|
||||
#:use-module (guix gexp)
|
||||
@@ -27,8 +29,10 @@
|
||||
#:use-module (ice-9 match)
|
||||
#:export (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
|
||||
(list #$(file-append redshift "/bin/redshift")
|
||||
"-c" #$config-file)))
|
||||
(stop #~(make-kill-destructor)))))
|
||||
(stop #~(make-kill-destructor))
|
||||
(actions (list (shepherd-configuration-action config-file))))))
|
||||
|
||||
(define home-redshift-service-type
|
||||
(service-type
|
||||
@@ -172,3 +177,52 @@ format."))
|
||||
(description
|
||||
"Run Redshift, a program that adjusts the color temperature of display
|
||||
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.")))
|
||||
|
||||
+58
-33
@@ -1,6 +1,7 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
|
||||
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
|
||||
;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -20,6 +21,7 @@
|
||||
(define-module (gnu home services mcron)
|
||||
#:use-module (gnu packages guile-xyz)
|
||||
#:use-module (gnu home services)
|
||||
#:use-module (gnu services configuration)
|
||||
#:use-module (gnu services shepherd)
|
||||
#:use-module (gnu home services shepherd)
|
||||
#:use-module (guix records)
|
||||
@@ -53,45 +55,59 @@
|
||||
;;
|
||||
;;; Code:
|
||||
|
||||
(define-record-type* <home-mcron-configuration> home-mcron-configuration
|
||||
make-home-mcron-configuration
|
||||
home-mcron-configuration?
|
||||
(package home-mcron-configuration-package ; package
|
||||
(default mcron))
|
||||
(jobs home-mcron-configuration-jobs ; list of jobs
|
||||
(default '())))
|
||||
(define list-of-gexps?
|
||||
(list-of gexp?))
|
||||
|
||||
(define-configuration/no-serialization home-mcron-configuration
|
||||
(mcron (file-like mcron) "The mcron package to use.")
|
||||
(jobs
|
||||
(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 shepherd-schedule-action
|
||||
(@@ (gnu services mcron) shepherd-schedule-action))
|
||||
|
||||
(define home-mcron-shepherd-services
|
||||
(match-lambda
|
||||
(($ <home-mcron-configuration> mcron '()) ; no jobs to run
|
||||
'())
|
||||
(($ <home-mcron-configuration> mcron jobs)
|
||||
(let ((files (job-files mcron jobs)))
|
||||
(list (shepherd-service
|
||||
(documentation "User cron jobs.")
|
||||
(provision '(mcron))
|
||||
(modules `((srfi srfi-1)
|
||||
(srfi srfi-26)
|
||||
(ice-9 popen) ; for the 'schedule' action
|
||||
(ice-9 rdelim)
|
||||
(ice-9 match)
|
||||
,@%default-modules))
|
||||
(start #~(make-forkexec-constructor
|
||||
(list #$(file-append mcron "/bin/mcron") #$@files)
|
||||
#:log-file (string-append
|
||||
(or (getenv "XDG_LOG_HOME")
|
||||
(format #f "~a/.local/var/log"
|
||||
(getenv "HOME")))
|
||||
"/mcron.log")))
|
||||
(stop #~(make-kill-destructor))
|
||||
(actions
|
||||
(list (shepherd-schedule-action mcron files)))))))))
|
||||
(define (home-mcron-shepherd-services config)
|
||||
(match-record config <home-mcron-configuration>
|
||||
(mcron jobs log? log-format)
|
||||
(if (null? jobs)
|
||||
'() ;no jobs to run
|
||||
(let ((files (job-files mcron jobs)))
|
||||
(list (shepherd-service
|
||||
(documentation "User cron jobs.")
|
||||
(provision '(mcron))
|
||||
(modules `((srfi srfi-1)
|
||||
(srfi srfi-26)
|
||||
(ice-9 popen) ;for the 'schedule' action
|
||||
(ice-9 rdelim)
|
||||
(ice-9 match)
|
||||
,@%default-modules))
|
||||
(start #~(make-forkexec-constructor
|
||||
(list (string-append #$mcron "/bin/mcron")
|
||||
#$@(if log?
|
||||
#~("--log" "--log-format" #$log-format)
|
||||
#~())
|
||||
#$@files)
|
||||
#:log-file (string-append
|
||||
(or (getenv "XDG_LOG_HOME")
|
||||
(format #f "~a/.local/var/log"
|
||||
(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)
|
||||
(home-mcron-configuration
|
||||
@@ -113,3 +129,12 @@
|
||||
(default-value (home-mcron-configuration))
|
||||
(description
|
||||
"Install and configure the GNU mcron cron job manager.")))
|
||||
|
||||
|
||||
;;;
|
||||
;;; Generate documentation.
|
||||
;;;
|
||||
(define (generate-doc)
|
||||
(configuration->documentation 'home-mcron-configuration))
|
||||
|
||||
;;; mcron.scm ends here
|
||||
|
||||
@@ -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.")))
|
||||
@@ -19,12 +19,14 @@
|
||||
|
||||
(define-module (gnu home services shells)
|
||||
#:use-module (gnu services configuration)
|
||||
#:autoload (gnu system shadow) (%default-bashrc)
|
||||
#:use-module (gnu home services utils)
|
||||
#:use-module (gnu home services)
|
||||
#:use-module (gnu packages shells)
|
||||
#:use-module (gnu packages bash)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix records)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-26)
|
||||
#: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
|
||||
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 (filter-fields field)
|
||||
(filter-configuration-fields home-bash-configuration-fields
|
||||
@@ -442,13 +407,23 @@ if [ -f ~/.profile ]; then source ~/.profile; fi
|
||||
# Honor per-interactive-shell startup file
|
||||
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 'environment-variables)))
|
||||
|
||||
,@(list (file-if-not-empty
|
||||
'bashrc
|
||||
(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))))
|
||||
(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."))
|
||||
|
||||
(define (home-bash-extensions original-config extension-configs)
|
||||
(match original-config
|
||||
(($ <home-bash-configuration> _ _ _ environment-variables aliases
|
||||
bash-profile bashrc bash-logout)
|
||||
(home-bash-configuration
|
||||
(inherit original-config)
|
||||
(environment-variables
|
||||
(append environment-variables
|
||||
(append-map
|
||||
home-bash-extension-environment-variables extension-configs)))
|
||||
(aliases
|
||||
(append aliases
|
||||
(append-map
|
||||
home-bash-extension-aliases extension-configs)))
|
||||
(bash-profile
|
||||
(append bash-profile
|
||||
(append-map
|
||||
home-bash-extension-bash-profile extension-configs)))
|
||||
(bashrc
|
||||
(append bashrc
|
||||
(append-map
|
||||
home-bash-extension-bashrc extension-configs)))
|
||||
(bash-logout
|
||||
(append bash-logout
|
||||
(append-map
|
||||
home-bash-extension-bash-logout extension-configs)))))))
|
||||
(match-record original-config <home-bash-configuration>
|
||||
(environment-variables aliases bash-profile bashrc bash-logout)
|
||||
(home-bash-configuration
|
||||
(inherit original-config)
|
||||
(environment-variables
|
||||
(append environment-variables
|
||||
(append-map
|
||||
home-bash-extension-environment-variables extension-configs)))
|
||||
(aliases
|
||||
(append aliases
|
||||
(append-map
|
||||
home-bash-extension-aliases extension-configs)))
|
||||
(bash-profile
|
||||
(append bash-profile
|
||||
(append-map
|
||||
home-bash-extension-bash-profile extension-configs)))
|
||||
(bashrc
|
||||
(append bashrc
|
||||
(append-map
|
||||
home-bash-extension-bashrc extension-configs)))
|
||||
(bash-logout
|
||||
(append bash-logout
|
||||
(append-map
|
||||
home-bash-extension-bash-logout extension-configs))))))
|
||||
|
||||
(define home-bash-service-type
|
||||
(service-type (name 'home-bash)
|
||||
|
||||
@@ -45,7 +45,8 @@
|
||||
shepherd-service-auto-start?
|
||||
shepherd-service-modules
|
||||
|
||||
shepherd-action))
|
||||
shepherd-action
|
||||
shepherd-configuration-action))
|
||||
|
||||
(define-record-type* <home-shepherd-configuration>
|
||||
home-shepherd-configuration make-home-shepherd-configuration
|
||||
|
||||
+54
-35
@@ -1,5 +1,5 @@
|
||||
;;; 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>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
@@ -35,10 +35,24 @@
|
||||
#:export (home-xdg-base-directories-service-type
|
||||
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-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-entry
|
||||
@@ -106,22 +120,25 @@ services more consistent."))
|
||||
home-xdg-base-directories-configuration-fields))
|
||||
|
||||
(define (ensure-xdg-base-dirs-on-activation config)
|
||||
#~(map (lambda (xdg-base-dir-variable)
|
||||
((@ (guix build utils) mkdir-p)
|
||||
(getenv
|
||||
xdg-base-dir-variable)))
|
||||
'#$(filter-map
|
||||
(lambda (field)
|
||||
(let ((variable
|
||||
(string-append
|
||||
"XDG_"
|
||||
(object->snake-case-string
|
||||
(configuration-field-name field) 'upper))))
|
||||
;; XDG_RUNTIME_DIR shouldn't be created during activation
|
||||
;; and will be provided by elogind or other service.
|
||||
(and (not (string=? "XDG_RUNTIME_DIR" variable))
|
||||
variable)))
|
||||
home-xdg-base-directories-configuration-fields)))
|
||||
(with-imported-modules '((guix build utils))
|
||||
#~(begin
|
||||
(use-modules (guix build utils))
|
||||
(map (lambda (xdg-base-dir-variable)
|
||||
(mkdir-p
|
||||
(getenv
|
||||
xdg-base-dir-variable)))
|
||||
'#$(filter-map
|
||||
(lambda (field)
|
||||
(let ((variable
|
||||
(string-append
|
||||
"XDG_"
|
||||
(object->snake-case-string
|
||||
(configuration-field-name field) 'upper))))
|
||||
;; XDG_RUNTIME_DIR shouldn't be created during activation
|
||||
;; 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)
|
||||
"Picks configuration value from last provided extension. If there
|
||||
@@ -231,6 +248,8 @@ pre-populated content.")
|
||||
home-activation-service-type
|
||||
home-xdg-user-directories-activation-service)))
|
||||
(default-value (home-xdg-user-directories-configuration))
|
||||
(compose identity)
|
||||
(extend last-extension-or-cfg)
|
||||
(description "Configure XDG user directories. To
|
||||
disable a directory, point it to the $HOME.")))
|
||||
|
||||
@@ -383,25 +402,25 @@ configuration."
|
||||
(define (serialize-alist config)
|
||||
(generic-serialize-alist append format-config config))
|
||||
|
||||
(define (serialize-xdg-desktop-action action)
|
||||
(match action
|
||||
(($ <xdg-desktop-action> action name config)
|
||||
`(,(format #f "[Desktop Action ~a]\n"
|
||||
(string-capitalize (maybe-object->string action)))
|
||||
,(format #f "Name=~a\n" name)
|
||||
,@(serialize-alist config)))))
|
||||
(define (serialize-xdg-desktop-action desktop-action)
|
||||
(match-record desktop-action <xdg-desktop-action>
|
||||
(action name config)
|
||||
`(,(format #f "[Desktop Action ~a]\n"
|
||||
(string-capitalize (maybe-object->string action)))
|
||||
,(format #f "Name=~a\n" name)
|
||||
,@(serialize-alist config))))
|
||||
|
||||
(match entry
|
||||
(($ <xdg-desktop-entry> file name type config actions)
|
||||
(list (if (string-suffix? file ".desktop")
|
||||
file
|
||||
(string-append file ".desktop"))
|
||||
`("[Desktop Entry]\n"
|
||||
,(format #f "Name=~a\n" name)
|
||||
,(format #f "Type=~a\n"
|
||||
(string-capitalize (symbol->string type)))
|
||||
,@(serialize-alist config)
|
||||
,@(append-map serialize-xdg-desktop-action actions))))))
|
||||
(match-record entry <xdg-desktop-entry>
|
||||
(file name type config actions)
|
||||
(list (if (string-suffix? file ".desktop")
|
||||
file
|
||||
(string-append file ".desktop"))
|
||||
`("[Desktop Entry]\n"
|
||||
,(format #f "Name=~a\n" name)
|
||||
,(format #f "Type=~a\n"
|
||||
(string-capitalize (symbol->string type)))
|
||||
,@(serialize-alist config)
|
||||
,@(append-map serialize-xdg-desktop-action actions)))))
|
||||
|
||||
(define-configuration home-xdg-mime-applications-configuration
|
||||
(added
|
||||
|
||||
+52
-6
@@ -27,6 +27,8 @@
|
||||
#:use-module (guix utils)
|
||||
#:use-module (guix ui)
|
||||
#:use-module ((guix self) #:select (make-config.scm))
|
||||
#:use-module (guix describe)
|
||||
#:use-module (guix channels)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix git-download)
|
||||
#:use-module (gnu installer utils)
|
||||
@@ -46,11 +48,13 @@
|
||||
#:use-module (gnu packages nano)
|
||||
#:use-module (gnu packages ncurses)
|
||||
#:use-module (gnu packages package-management)
|
||||
#:use-module (gnu packages pciutils)
|
||||
#:use-module (gnu packages tls)
|
||||
#:use-module (gnu packages xorg)
|
||||
#:use-module (gnu system locale)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (web uri)
|
||||
#:export (installer-program))
|
||||
|
||||
(define module-to-import?
|
||||
@@ -226,7 +230,9 @@ selected keymap."
|
||||
(id 'welcome)
|
||||
(compute (lambda _
|
||||
((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.
|
||||
(installer-step
|
||||
@@ -312,6 +318,25 @@ selected keymap."
|
||||
((installer-final-page current-installer)
|
||||
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)
|
||||
"Return a file-like object that runs the given INSTALLER."
|
||||
(define init-gettext
|
||||
@@ -358,7 +383,9 @@ selected keymap."
|
||||
(with-extensions (list guile-gcrypt guile-newt
|
||||
guile-parted guile-bytestructures
|
||||
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
|
||||
`(,@modules
|
||||
(gnu services herd)
|
||||
@@ -389,6 +416,12 @@ selected keymap."
|
||||
(ice-9 match)
|
||||
(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
|
||||
;; (guix i18n) module.
|
||||
#$init-gettext
|
||||
@@ -418,6 +451,9 @@ selected keymap."
|
||||
(define current-installer newt-installer)
|
||||
(define steps (#$steps current-installer))
|
||||
|
||||
(installer-log-line "installer provenance: ~s"
|
||||
'#$(provenance-sexp))
|
||||
|
||||
(dynamic-wind
|
||||
(installer-init current-installer)
|
||||
(lambda ()
|
||||
@@ -447,11 +483,21 @@ selected keymap."
|
||||
key args)
|
||||
(define dump-dir
|
||||
(prepare-dump key args #:result %current-result))
|
||||
|
||||
(define user-abort?
|
||||
(match args
|
||||
(((? user-abort-error? obj)) #t)
|
||||
(_ #f)))
|
||||
|
||||
(define action
|
||||
((installer-exit-error current-installer)
|
||||
(get-string-all
|
||||
(open-input-file
|
||||
(string-append dump-dir "/installer-backtrace")))))
|
||||
(if user-abort?
|
||||
'dump
|
||||
((installer-exit-error current-installer)
|
||||
(get-string-all
|
||||
(open-input-file
|
||||
(string-append dump-dir
|
||||
"/installer-backtrace"))))))
|
||||
|
||||
(match action
|
||||
('dump
|
||||
(let* ((dump-files
|
||||
|
||||
@@ -28,13 +28,17 @@
|
||||
#:use-module (web http)
|
||||
#:use-module (web response)
|
||||
#:use-module (webutils multipart)
|
||||
#:export (prepare-dump
|
||||
#:export (%core-dump
|
||||
prepare-dump
|
||||
make-dump
|
||||
send-dump-report))
|
||||
|
||||
;; The installer crash dump type.
|
||||
(define %dump-type "installer-dump")
|
||||
|
||||
;; The core dump file.
|
||||
(define %core-dump "/tmp/installer-core-dump")
|
||||
|
||||
(define (result->list result)
|
||||
"Return the alist for the given RESULT."
|
||||
(hash-map->list (lambda (k v)
|
||||
@@ -66,6 +70,10 @@ RESULT is the installer result hash table. Returns the created directory path."
|
||||
;; syslog
|
||||
(copy-file "/var/log/messages" "syslog")
|
||||
|
||||
;; core dump
|
||||
(when (file-exists? %core-dump)
|
||||
(copy-file %core-dump "core-dump"))
|
||||
|
||||
;; dmesg
|
||||
(let ((pipe (open-pipe* OPEN_READ "dmesg")))
|
||||
(call-with-output-file "dmesg"
|
||||
|
||||
+25
-7
@@ -1,6 +1,6 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; 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.
|
||||
;;;
|
||||
@@ -114,6 +114,8 @@ it can interact with the rest of the system."
|
||||
;; Catch SIGINT and kill the container process.
|
||||
(sigaction SIGINT
|
||||
(lambda (signum)
|
||||
;: FIXME: Use of SIGKILL prevents the dynamic-wind exit handler of
|
||||
;; THUNK to run.
|
||||
(false-if-exception
|
||||
(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.
|
||||
(install-locale locale)
|
||||
|
||||
;; Save the database, so that it can be restored once the
|
||||
;; cow-store is umounted.
|
||||
;; Stop the daemon and save the database, so that it can be
|
||||
;; restored once the cow-store is umounted.
|
||||
(stop-service 'guix-daemon)
|
||||
(copy-file database-file saved-database)
|
||||
|
||||
(installer-log-line "mounting copy-on-write store")
|
||||
(mount-cow-store (%installer-target-dir) backing-directory))
|
||||
(lambda ()
|
||||
;; We need to drag the guix-daemon to the container MNT
|
||||
;; namespace, so that it can operate on the cow-store.
|
||||
(stop-service 'guix-daemon)
|
||||
(start-service 'guix-daemon (list (number->string (getpid))))
|
||||
|
||||
(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/")
|
||||
|
||||
(set! ret (run-command install-command)))
|
||||
(set! ret (run-command install-command #:tty? #t)))
|
||||
(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.
|
||||
(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)
|
||||
(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.
|
||||
(installer-log-line "unmounting copy-on-write store")
|
||||
(unmount-cow-store (%installer-target-dir) backing-directory)
|
||||
(assert-exit ret))))))))
|
||||
|
||||
@@ -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§ion=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)))))
|
||||
@@ -62,6 +62,9 @@
|
||||
(clear-screen))
|
||||
|
||||
(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")
|
||||
(define action
|
||||
(run-textbox-page
|
||||
@@ -113,11 +116,7 @@ report it by email to ~a.") uploaded-name %guix-bug-report-address)
|
||||
(define command-output "")
|
||||
(define (line-accumulator line)
|
||||
(set! command-output
|
||||
(string-append/shared command-output line "\n")))
|
||||
(define displayed-command
|
||||
(string-join
|
||||
(map (lambda (s) (string-append "\"" s "\"")) args)
|
||||
" "))
|
||||
(string-append/shared command-output line)))
|
||||
(define result (run-external-command-with-line-hooks (list line-accumulator)
|
||||
args))
|
||||
(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)
|
||||
(run-timezone-page zonetab))
|
||||
|
||||
(define (welcome-page logo)
|
||||
(run-welcome-page logo))
|
||||
(define* (welcome-page logo #:key pci-database)
|
||||
(run-welcome-page logo #:pci-database pci-database))
|
||||
|
||||
(define (menu-page steps)
|
||||
(run-menu-page steps))
|
||||
|
||||
@@ -80,16 +80,20 @@ press the button to reboot.")))
|
||||
(define (run-install-failed-page)
|
||||
(match (current-clients)
|
||||
(()
|
||||
(match (choice-window
|
||||
(match (ternary-window
|
||||
(G_ "Installation failed")
|
||||
(G_ "Resume")
|
||||
(G_ "Restart the installer")
|
||||
(G_ "Report the failure")
|
||||
(G_ "The final system installation step failed. You can resume from \
|
||||
a specific step, or restart the installer."))
|
||||
(1 (abort-to-prompt 'installer-step 'abort))
|
||||
(2
|
||||
;; Keep going, the installer will be restarted later on.
|
||||
#t)))
|
||||
#t)
|
||||
(3 (raise
|
||||
(condition
|
||||
(&user-abort-error))))))
|
||||
(_
|
||||
(send-to-clients '(installation-failure))
|
||||
#t)))
|
||||
|
||||
@@ -115,6 +115,11 @@ network devices were found. Do you want to continue anyway?"))
|
||||
(define (wait-service-online)
|
||||
"Display a newt scale until connman detects an Internet access. Do
|
||||
FULL-VALUE tentatives, spaced by 1 second."
|
||||
(define (url-alive? url)
|
||||
(false-if-exception
|
||||
(= (response-code (http-request url))
|
||||
200)))
|
||||
|
||||
(define (ci-available?)
|
||||
(dynamic-wind
|
||||
(lambda ()
|
||||
@@ -122,10 +127,8 @@ FULL-VALUE tentatives, spaced by 1 second."
|
||||
(lambda _ #f))
|
||||
(alarm 3))
|
||||
(lambda ()
|
||||
(false-if-exception
|
||||
(= (response-code
|
||||
(http-request "https://ci.guix.gnu.org"))
|
||||
200)))
|
||||
(or (url-alive? "https://ci.guix.gnu.org")
|
||||
(url-alive? "https://bordeaux.guix.gnu.org")))
|
||||
(lambda ()
|
||||
(alarm 0))))
|
||||
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; 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>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
@@ -278,12 +278,12 @@ input box, such as FLAG-PASSWORD."
|
||||
(destroy-form-and-pop form)
|
||||
input))))))))
|
||||
|
||||
(define (run-error-page text title)
|
||||
"Run a page to inform the user of an error. The page contains the given TEXT
|
||||
to explain the error and an \"OK\" button to acknowledge the error. The title
|
||||
of the page is set to TITLE."
|
||||
(define* (run-error-page text title #:key (width 40))
|
||||
"Run a page to inform the user of an error. The page is WIDTH column wide
|
||||
and contains the given TEXT to explain the error and an \"OK\" button to
|
||||
acknowledge the error. The title of the page is set to TITLE."
|
||||
(let* ((text-box
|
||||
(make-reflowed-textbox -1 -1 text 40
|
||||
(make-reflowed-textbox -1 -1 text width
|
||||
#:flags FLAG-BORDER))
|
||||
(grid (make-grid 1 2))
|
||||
(ok-button (make-button -1 -1 "OK"))
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
;;; 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 © 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))
|
||||
|
||||
(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)
|
||||
"Run a page asking the user to select a partition table label."
|
||||
;; Force the GPT label if UEFI is supported.
|
||||
(if (efi-installation?)
|
||||
"gpt"
|
||||
((run-label-confirmation-page button-callback) "gpt")
|
||||
(run-listbox-selection-page
|
||||
#:info-text (G_ "Select a new partition table type. \
|
||||
Be careful, all data on the disk will be lost.")
|
||||
#:title (G_ "Partition table")
|
||||
#:listbox-items '("msdos" "gpt")
|
||||
#:listbox-item->text identity
|
||||
#:listbox-callback-procedure
|
||||
(run-label-confirmation-page button-callback)
|
||||
#:button-text button-text
|
||||
#:button-callback-procedure button-callback)))
|
||||
|
||||
|
||||
@@ -28,7 +28,7 @@
|
||||
(match (current-clients)
|
||||
(()
|
||||
(case (choice-window
|
||||
(G_ "Substitute server discovery.")
|
||||
(G_ "Substitute server discovery")
|
||||
(G_ "Enable") (G_ "Disable")
|
||||
(G_ " By turning this option on, you allow Guix to fetch \
|
||||
substitutes (pre-built binaries) during installation from servers \
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; 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.
|
||||
;;;
|
||||
@@ -17,6 +18,11 @@
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(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 utils)
|
||||
#:use-module (gnu installer newt page)
|
||||
@@ -26,6 +32,8 @@
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-34)
|
||||
#:use-module (srfi srfi-35)
|
||||
#:use-module (srfi srfi-71)
|
||||
#:use-module (ice-9 format)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (ice-9 receive)
|
||||
#:use-module (newt)
|
||||
@@ -117,10 +125,52 @@ we want this page to occupy all the screen space available."
|
||||
(lambda ()
|
||||
(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
|
||||
the page. Ask the user to choose between manual installation, graphical
|
||||
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
|
||||
(G_ "GNU Guix install")
|
||||
(G_ "Welcome to GNU Guix system installer!
|
||||
@@ -134,14 +184,16 @@ Documentation is accessible at any time by pressing Ctrl-Alt-F2.")
|
||||
#:listbox-items
|
||||
`((,(G_ "Graphical install using a terminal based interface")
|
||||
.
|
||||
,(const #t))
|
||||
,(lambda ()
|
||||
(check-hardware-support pci-database)))
|
||||
(,(G_ "Install using the shell based process")
|
||||
.
|
||||
,(lambda ()
|
||||
(check-hardware-support pci-database)
|
||||
;; Switch to TTY3, where a root shell is available for shell based
|
||||
;; install. The other root TTY's would have been ok too.
|
||||
(system* "chvt" "3")
|
||||
(run-welcome-page logo)))
|
||||
(run-welcome-page logo #:pci-database pci-database)))
|
||||
(,(G_ "Reboot")
|
||||
.
|
||||
,(lambda ()
|
||||
|
||||
@@ -319,6 +319,25 @@ PARTED-OBJECT field equals PARTITION, return #f if not found."
|
||||
partition))
|
||||
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
|
||||
@@ -360,12 +379,44 @@ fail. See rereadpt function in wipefs.c of util-linux for an explanation."
|
||||
(define %min-device-size
|
||||
(* 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)
|
||||
"Return all the available devices except the install device and the devices
|
||||
which are smaller than %MIN-DEVICE-SIZE."
|
||||
|
||||
(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)
|
||||
(let ((length (device-length device))
|
||||
@@ -1108,7 +1159,7 @@ Return #t if all the statements are valid."
|
||||
(need-formatting?
|
||||
(user-partition-need-formatting? user-partition)))
|
||||
(or need-formatting?
|
||||
(read-partition-uuid file-name)
|
||||
(read-partition-uuid/retry file-name)
|
||||
(raise
|
||||
(condition
|
||||
(&cannot-read-uuid
|
||||
|
||||
@@ -89,7 +89,7 @@
|
||||
(partition-page installer-partition-page)
|
||||
;; procedure void -> void
|
||||
(services-page installer-services-page)
|
||||
;; procedure (logo) -> void
|
||||
;; procedure (logo #:pci-database) -> void
|
||||
(welcome-page installer-welcome-page)
|
||||
;; procedure (menu-proc) -> void
|
||||
(parameters-menu installer-parameters-menu)
|
||||
|
||||
@@ -159,25 +159,32 @@
|
||||
(base (if desktop?
|
||||
'%desktop-services
|
||||
'%base-services))
|
||||
(heading (list (vertical-space 1)
|
||||
(comment (G_ "\
|
||||
(service-heading (list (vertical-space 1)
|
||||
(comment (G_ "\
|
||||
;; 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? packages)
|
||||
'()
|
||||
`((packages (append (list ,@packages)
|
||||
`(,@package-heading
|
||||
(packages (append (list ,@packages)
|
||||
%base-packages))))
|
||||
|
||||
,@heading
|
||||
,@service-heading
|
||||
(services ,base))
|
||||
`(,@(if (null? packages)
|
||||
'()
|
||||
`((packages (append (list ,@packages)
|
||||
`(,@package-heading
|
||||
(packages (append (list ,@packages)
|
||||
%base-packages))))
|
||||
|
||||
,@heading
|
||||
,@service-heading
|
||||
(services (append (list ,@snippets
|
||||
|
||||
,@(if desktop?
|
||||
|
||||
@@ -28,7 +28,10 @@
|
||||
#:use-module (srfi srfi-34)
|
||||
#:use-module (srfi srfi-35)
|
||||
#:use-module (rnrs io ports)
|
||||
#:export (<installer-step>
|
||||
#:export (&user-abort-error
|
||||
user-abort-error?
|
||||
|
||||
<installer-step>
|
||||
installer-step
|
||||
make-installer-step
|
||||
installer-step?
|
||||
@@ -50,6 +53,9 @@
|
||||
|
||||
%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
|
||||
;; purposes.
|
||||
(define %current-result (make-hash-table))
|
||||
|
||||
+54
-20
@@ -1,6 +1,6 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; 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.
|
||||
;;;
|
||||
@@ -20,6 +20,7 @@
|
||||
(define-module (gnu installer utils)
|
||||
#:use-module (gnu services herd)
|
||||
#:use-module (guix utils)
|
||||
#:use-module ((guix build syscalls) #:select (openpty login-tty))
|
||||
#:use-module (guix build utils)
|
||||
#:use-module (guix i18n)
|
||||
#:use-module (srfi srfi-1)
|
||||
@@ -45,6 +46,7 @@
|
||||
nearest-exact-integer
|
||||
read-percentage
|
||||
run-external-command-with-handler
|
||||
run-external-command-with-handler/tty
|
||||
run-external-command-with-line-hooks
|
||||
run-command
|
||||
run-command-in-installer
|
||||
@@ -124,26 +126,58 @@ the child process as returned by waitpid."
|
||||
(close-port input)
|
||||
(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
|
||||
output line with the procedures in LINE-HOOKS. Returns the integer status
|
||||
value of the child process as returned by waitpid."
|
||||
output line with the procedures in LINE-HOOKS. If TTY is set to #true, the
|
||||
COMMAND will be run in a pseudoterminal. Returns the integer status value of
|
||||
the child process as returned by waitpid."
|
||||
(define (handler input)
|
||||
(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)
|
||||
(if (eof-object? line)
|
||||
#f
|
||||
(begin (for-each (lambda (f) (f line))
|
||||
(append line-hooks
|
||||
%default-installer-line-hooks))
|
||||
%default-installer-line-hooks))
|
||||
#t))))
|
||||
(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
|
||||
successfully, #f otherwise."
|
||||
successfully, #f otherwise. If TTY is set to #true, the COMMAND will be run
|
||||
in a pseudoterminal."
|
||||
(define (pause)
|
||||
(format #t (G_ "Press Enter to continue.~%"))
|
||||
(send-to-clients '(pause))
|
||||
@@ -154,8 +188,8 @@ successfully, #f otherwise."
|
||||
|
||||
(installer-log-line "running command ~s" command)
|
||||
(define result (run-external-command-with-line-hooks
|
||||
(list %display-line-hook)
|
||||
command))
|
||||
(list display) command
|
||||
#:tty? tty?))
|
||||
(define exit-val (status:exit-val result))
|
||||
(define term-sig (status:term-sig result))
|
||||
(define stop-sig (status:stop-sig result))
|
||||
@@ -232,7 +266,10 @@ values."
|
||||
(or port (%make-void-port "w")))))
|
||||
|
||||
(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
|
||||
(lambda (s)
|
||||
@@ -261,11 +298,7 @@ values."
|
||||
port)))
|
||||
|
||||
(define (%installer-log-line-hook line)
|
||||
(format (installer-log-port) "~a~%" line))
|
||||
|
||||
(define (%display-line-hook line)
|
||||
(display line)
|
||||
(newline))
|
||||
(display line (installer-log-port)))
|
||||
|
||||
(define %default-installer-line-hooks
|
||||
(list %syslog-line-hook
|
||||
@@ -277,9 +310,10 @@ values."
|
||||
(syntax-case s ()
|
||||
((_ fmt args ...)
|
||||
(string? (syntax->datum #'fmt))
|
||||
#'(let ((formatted (format #f fmt args ...)))
|
||||
(for-each (lambda (f) (f formatted))
|
||||
%default-installer-line-hooks))))))
|
||||
(with-syntax ((fmt (string-append (syntax->datum #'fmt) "\n")))
|
||||
#'(let ((formatted (format #f fmt args ...)))
|
||||
(for-each (lambda (f) (f formatted))
|
||||
%default-installer-line-hooks)))))))
|
||||
|
||||
|
||||
;;;
|
||||
|
||||
+72
-45
@@ -7,7 +7,7 @@
|
||||
# Copyright © 2016, 2017, 2018 Kei Kebreau <kkebreau@posteo.net>
|
||||
# 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, 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, 2017, 2018, 2019 Alex Vong <alexvong1995@gmail.com>
|
||||
# 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, 2019, 2020, 2021, 2022 Oleg Pykhalov <go.wigust@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 John Soo <jsoo1@asu.edu>
|
||||
# Copyright © 2019 Jonathan Brielmaier <jonathan.brielmaier@web.de>
|
||||
@@ -54,6 +54,8 @@
|
||||
# Copyright © 2022 muradm <mail@muradm.net>
|
||||
# Copyright © 2022 Hilton Chain <hako@ultrarare.space>
|
||||
# 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.
|
||||
#
|
||||
@@ -89,6 +91,7 @@ GNU_SYSTEM_MODULES = \
|
||||
%D%/home/services/symlink-manager.scm \
|
||||
%D%/home/services/fontutils.scm \
|
||||
%D%/home/services/guix.scm \
|
||||
%D%/home/services/pm.scm \
|
||||
%D%/home/services/shells.scm \
|
||||
%D%/home/services/shepherd.scm \
|
||||
%D%/home/services/ssh.scm \
|
||||
@@ -113,6 +116,7 @@ GNU_SYSTEM_MODULES = \
|
||||
%D%/packages/anthy.scm \
|
||||
%D%/packages/antivirus.scm \
|
||||
%D%/packages/apl.scm \
|
||||
%D%/packages/apparmor.scm \
|
||||
%D%/packages/apr.scm \
|
||||
%D%/packages/arcan.scm \
|
||||
%D%/packages/aspell.scm \
|
||||
@@ -310,6 +314,7 @@ GNU_SYSTEM_MODULES = \
|
||||
%D%/packages/haxe.scm \
|
||||
%D%/packages/heads.scm \
|
||||
%D%/packages/hexedit.scm \
|
||||
%D%/packages/high-availability.scm \
|
||||
%D%/packages/hugs.scm \
|
||||
%D%/packages/hunspell.scm \
|
||||
%D%/packages/hurd.scm \
|
||||
@@ -333,9 +338,11 @@ GNU_SYSTEM_MODULES = \
|
||||
%D%/packages/iso-codes.scm \
|
||||
%D%/packages/jami.scm \
|
||||
%D%/packages/java.scm \
|
||||
%D%/packages/java-bootstrap.scm \
|
||||
%D%/packages/java-compression.scm \
|
||||
%D%/packages/java-graphics.scm \
|
||||
%D%/packages/java-maths.scm \
|
||||
%D%/packages/java-xml.scm \
|
||||
%D%/packages/javascript.scm \
|
||||
%D%/packages/jemalloc.scm \
|
||||
%D%/packages/jrnl.scm \
|
||||
@@ -503,6 +510,7 @@ GNU_SYSTEM_MODULES = \
|
||||
%D%/packages/pure.scm \
|
||||
%D%/packages/purescript.scm \
|
||||
%D%/packages/pv.scm \
|
||||
%D%/packages/pypy.scm \
|
||||
%D%/packages/python.scm \
|
||||
%D%/packages/python-build.scm \
|
||||
%D%/packages/python-check.scm \
|
||||
@@ -576,6 +584,7 @@ GNU_SYSTEM_MODULES = \
|
||||
%D%/packages/stenography.scm \
|
||||
%D%/packages/storage.scm \
|
||||
%D%/packages/suckless.scm \
|
||||
%D%/packages/sugar.scm \
|
||||
%D%/packages/swig.scm \
|
||||
%D%/packages/sync.scm \
|
||||
%D%/packages/syncthing.scm \
|
||||
@@ -636,6 +645,7 @@ GNU_SYSTEM_MODULES = \
|
||||
%D%/packages/xorg.scm \
|
||||
%D%/packages/xfce.scm \
|
||||
%D%/packages/zig.scm \
|
||||
%D%/packages/zig-xyz.scm \
|
||||
%D%/packages/zile.scm \
|
||||
%D%/packages/zwave.scm \
|
||||
\
|
||||
@@ -665,6 +675,7 @@ GNU_SYSTEM_MODULES = \
|
||||
%D%/services/guix.scm \
|
||||
%D%/services/hurd.scm \
|
||||
%D%/services/kerberos.scm \
|
||||
%D%/services/ldap.scm \
|
||||
%D%/services/lightdm.scm \
|
||||
%D%/services/linux.scm \
|
||||
%D%/services/lirc.scm \
|
||||
@@ -693,6 +704,7 @@ GNU_SYSTEM_MODULES = \
|
||||
%D%/services/sysctl.scm \
|
||||
%D%/services/telephony.scm \
|
||||
%D%/services/version-control.scm \
|
||||
%D%/services/vnc.scm \
|
||||
%D%/services/vpn.scm \
|
||||
%D%/services/web.scm \
|
||||
%D%/services/xorg.scm \
|
||||
@@ -753,6 +765,7 @@ GNU_SYSTEM_MODULES = \
|
||||
%D%/tests/docker.scm \
|
||||
%D%/tests/file-sharing.scm \
|
||||
%D%/tests/ganeti.scm \
|
||||
%D%/tests/gdm.scm \
|
||||
%D%/tests/guix.scm \
|
||||
%D%/tests/monitoring.scm \
|
||||
%D%/tests/nfs.scm \
|
||||
@@ -774,6 +787,7 @@ GNU_SYSTEM_MODULES = \
|
||||
%D%/tests/telephony.scm \
|
||||
%D%/tests/version-control.scm \
|
||||
%D%/tests/virtualization.scm \
|
||||
%D%/tests/vnc.scm \
|
||||
%D%/tests/web.scm
|
||||
|
||||
INSTALLER_MODULES = \
|
||||
@@ -781,6 +795,7 @@ INSTALLER_MODULES = \
|
||||
%D%/installer/connman.scm \
|
||||
%D%/installer/dump.scm \
|
||||
%D%/installer/final.scm \
|
||||
%D%/installer/hardware.scm \
|
||||
%D%/installer/hostname.scm \
|
||||
%D%/installer/keymap.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-stdio.h.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/bidiv-update-fribidi.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/cdrtools-3.01-mkisofs-isoinfo.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/cl-asdf-config-directories.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-13.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-esan-build-fixes.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/cpulimit-with-glib-2.32.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/clucene-contribs-lib.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-gcc7-fixes.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/dkimproxy-add-ipv6-support.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/dvd+rw-tools-add-include.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/efivar-211.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-helpful-fix-docstring-test.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-native-comp-driver-options.patch \
|
||||
%D%/packages/patches/emacs-polymode-fix-lexical-variable-error.patch \
|
||||
%D%/packages/patches/emacs-source-date-epoch.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-pt2.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-unset-gdk-pixbuf-for-sandbox.patch \
|
||||
%D%/packages/patches/fontconfig-cache-ignore-mtime.patch \
|
||||
%D%/packages/patches/foobillard++-pkg-config.patch \
|
||||
%D%/packages/patches/foomatic-filters-CVE-2015-8327.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/fpc-reproducibility.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-pass-gdk-pixbuf-loader-env.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/geoclue-config.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-testsuite-dlopen-pie.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-uuid.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-networking-gnutls-binding.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-2.2-skip-oom-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-2.2-default-utf8.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-3.0-linux-syscalls.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-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-gdbm-ffi-support-gdbm-1.14.patch \
|
||||
%D%/packages/patches/guile-git-adjust-for-libgit2-1.2.0.patch \
|
||||
%D%/packages/patches/guile-present-coding.patch \
|
||||
%D%/packages/patches/guile-rsvg-pkgconfig.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-respect-GUIX_GTK2_PATH.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/icecat-makeicecat.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-media-libs.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/isl-0.11.1-aarch64-support.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-armv7-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.12-CVE-2020-12762.patch \
|
||||
%D%/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch \
|
||||
%D%/packages/patches/julia-tracker-16-compat.patch \
|
||||
%D%/packages/patches/julia-allow-parallel-build.patch \
|
||||
%D%/packages/patches/libgeotiff-fix-tests-with-proj-9.1.1.patch \
|
||||
%D%/packages/patches/libobjc2-unbundle-robin-map.patch \
|
||||
%D%/packages/patches/librime-fix-build-with-gcc10.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-vnc-color-depth.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/kiki-level-selection-crash.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-midicon-segmentation-fault.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-skip-test-449.patch \
|
||||
%D%/packages/patches/kwayland-skip-flaky-test.patch \
|
||||
%D%/packages/patches/laby-make-install.patch \
|
||||
%D%/packages/patches/ldns-drill-examples.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/libotr-test-auth-fix.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-pt2.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/libtool-grep-compat.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-for-axoloti.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-try-building-other-arch.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-pam-no-setfsuid.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-5.4-pkgconfig.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/lvm2-static-link.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/libmhash-hmac-fix-uaf.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-openssl-compat.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/mia-fix-boost-headers.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-dlltool-temp-prefix.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/mosaicatcher-unbundle-htslib.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/mupen64plus-ui-console-notice.patch \
|
||||
%D%/packages/patches/mupen64plus-video-z64-glew-correct-path.patch \
|
||||
%D%/packages/patches/musl-cross-locale.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/ncftp-reproducible.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-db4.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/ocaml-dose3-add-unix-dependency.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-shared-libraries.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-utf8.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/password-store-tree-compat.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/ppsspp-disable-upgrade-and-gold.patch \
|
||||
%D%/packages/patches/pthreadpool-system-libraries.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-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/sdcc-disable-non-free-code.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/php-bug-74093-test.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/pidgin-add-search-path.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-CVE-2014-3618.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-disable-memory-stats.patch \
|
||||
%D%/packages/patches/psm-ldflags.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-longer-test-timeout.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-fix-tests.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-argcomplete-1.11.1-fish31.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-execnet-read-only-fix.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-repro.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-source-date-epoch.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-remove-argparse.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/quickswitch-fix-dmenu-check.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-fix-building-with-bison-3.7.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/rpcbind-CVE-2017-8779.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-rktio-bin-sh.patch \
|
||||
%D%/packages/patches/racket-zuo-bin-sh.patch \
|
||||
%D%/packages/patches/remake-impure-dirs.patch \
|
||||
%D%/packages/patches/restic-0.9.6-fix-tests-for-go1.15.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-disable-ruby-rnp-tests.patch \
|
||||
%D%/packages/patches/rnp-unbundle-googletest.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-noopencl.patch \
|
||||
%D%/packages/patches/ruby-hydra-minimal-no-byebug.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-noopencl.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-fix-dictionary-populate.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-sanitize-system-libxml.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/i3status-rust-enable-unstable-features.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-sys-disable-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/rw-igraph-0.10.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-fix-rfe12668.patch \
|
||||
@@ -1808,8 +1831,6 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/scalapack-gcc-10-compilation.patch \
|
||||
%D%/packages/patches/scheme48-tests.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/sdl-libx11-1.6.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-inline-for-GCC.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/spice-vdagent-glib-2.68.patch \
|
||||
%D%/packages/patches/sssd-optional-systemd.patch \
|
||||
%D%/packages/patches/sssd-system-directories.patch \
|
||||
%D%/packages/patches/steghide-fixes.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/tar-remove-wholesparse-check.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/tclxml-3.2-install.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/texinfo-headings-single.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/texi2html-document-encoding.patch \
|
||||
%D%/packages/patches/texi2html-i18n.patch \
|
||||
%D%/packages/patches/texlive-hyph-utf8-no-byebug.patch \
|
||||
%D%/packages/patches/thefuck-test-environ.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/tipp10-disable-downloader.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/tla2tools-build-xml.patch \
|
||||
%D%/packages/patches/tlf-support-hamlib-4.2+.patch \
|
||||
gnu/packages/patches/tootle-glib-object-naming.patch \
|
||||
gnu/packages/patches/tootle-reason-phrase.patch \
|
||||
%D%/packages/patches/tootle-glib-object-naming.patch \
|
||||
%D%/packages/patches/tootle-reason-phrase.patch \
|
||||
%D%/packages/patches/transcode-ffmpeg.patch \
|
||||
%D%/packages/patches/transfig-gcc10-fno-common.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/twinkle-bcg729.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-rockchip-inno-usb.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/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-ffmpeg-compat.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-part3.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/util-linux-tests.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/vte-CVE-2012-2738-pt1.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-hdf5-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/wdl-link-libs-and-fix-jnetlib.patch \
|
||||
%D%/packages/patches/webkitgtk-adjust-bubblewrap-paths.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/widelands-add-missing-map-include.patch \
|
||||
%D%/packages/patches/widelands-system-wide_minizip.patch \
|
||||
|
||||
@@ -2,6 +2,7 @@
|
||||
;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.org>
|
||||
;;; Copyright © 2020 Brice Waegeneire <brice@waegenei.re>
|
||||
;;; Copyright © 2022 Matthew James Kraai <kraai@ftbfs.org>
|
||||
;;; Copyright © 2022 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -22,6 +23,7 @@
|
||||
#:use-module (gnu machine ssh)
|
||||
#:use-module (gnu machine)
|
||||
#:use-module (gnu services)
|
||||
#:use-module (gnu services base)
|
||||
#:use-module (gnu services networking)
|
||||
#:use-module (gnu system)
|
||||
#:use-module (gnu system pam)
|
||||
@@ -34,7 +36,9 @@
|
||||
#:use-module (guix records)
|
||||
#:use-module (guix ssh)
|
||||
#:use-module (guix store)
|
||||
#:use-module (ice-9 format)
|
||||
#:use-module (ice-9 iconv)
|
||||
#:use-module (ice-9 string-fun)
|
||||
#:use-module (json)
|
||||
#:use-module (rnrs bytevectors)
|
||||
#:use-module (srfi srfi-1)
|
||||
@@ -188,18 +192,66 @@ an environment type of 'digital-ocean-environment-type'."
|
||||
;;; 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
|
||||
;; <https://wiki.pantherx.org/Installation-digital-ocean/>.
|
||||
(define (guix-infect network)
|
||||
"Given NETWORK, an alist describing the Droplet's public IPv4 network
|
||||
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
|
||||
|
||||
apt-get update
|
||||
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
|
||||
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 /
|
||||
mkdir -p ~~root/.config/guix
|
||||
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
|
||||
cat > /etc/bootstrap-config.scm << EOF
|
||||
(use-modules (gnu))
|
||||
(use-service-modules networking ssh)
|
||||
(use-service-modules base networking ssh)
|
||||
|
||||
(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 (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)))
|
||||
~a
|
||||
EOF
|
||||
# guix pull
|
||||
guix system build /etc/bootstrap-config.scm
|
||||
@@ -268,9 +292,9 @@ mv /etc /old-etc
|
||||
mkdir /etc
|
||||
cp -r /old-etc/{passwd,group,shadow,gshadow,mtab,guix,bootstrap-config.scm} /etc/
|
||||
guix system reconfigure /etc/bootstrap-config.scm"
|
||||
(assoc-ref network "ip_address")
|
||||
(assoc-ref network "netmask")
|
||||
(assoc-ref network "gateway")))
|
||||
;; Escape the bare backtick to avoid having it interpreted by Bash.
|
||||
(string-replace-substring
|
||||
(format #f "~y" os) "`" "\\`")))
|
||||
|
||||
(define (machine-wait-until-available machine)
|
||||
"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."
|
||||
(operating-system
|
||||
(inherit (machine-operating-system target))
|
||||
(services (cons* (static-networking-service "eth0"
|
||||
(assoc-ref network "ip_address")
|
||||
#:netmask (assoc-ref network "netmask")
|
||||
#:gateway (assoc-ref network "gateway")
|
||||
#:name-servers '("84.200.69.80" "84.200.70.40"))
|
||||
(services (cons* (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/2.2")
|
||||
. "/run/current-system/profile/share/guile/site/3.0")
|
||||
("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"))))
|
||||
. ,(string-append "/run/current-system/profile/lib/guile/3.0/site-ccache:"
|
||||
"/run/current-system/profile/share/guile/site/3.0"))))
|
||||
(operating-system-user-services
|
||||
(machine-operating-system target))))))
|
||||
|
||||
|
||||
+30
-2
@@ -42,6 +42,7 @@
|
||||
#:use-module ((guix inferior)
|
||||
#:select (inferior-exception?
|
||||
inferior-exception-arguments))
|
||||
#:use-module ((guix platform) #:select (systems))
|
||||
#:use-module (gcrypt pk-crypto)
|
||||
#:use-module (ice-9 format)
|
||||
#:use-module (ice-9 match)
|
||||
@@ -86,7 +87,8 @@
|
||||
machine-ssh-configuration?
|
||||
this-machine-ssh-configuration
|
||||
(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
|
||||
(default #t))
|
||||
(authorize? machine-ssh-configuration-authorize? ; boolean
|
||||
@@ -109,6 +111,32 @@
|
||||
(host-key machine-ssh-configuration-host-key ; #f | string
|
||||
(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)
|
||||
"Open an SSH session for CONFIG, a <machine-ssh-configuration> record."
|
||||
(let ((host-name (machine-ssh-configuration-host-name config))
|
||||
@@ -466,7 +494,7 @@ environment type of 'managed-host."
|
||||
(machine-configuration machine))
|
||||
(unless (file-exists? %public-key-file)
|
||||
(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)))
|
||||
(remote-authorize-signing-key (call-with-input-file %public-key-file
|
||||
(lambda (port)
|
||||
|
||||
+11
-5
@@ -1,5 +1,5 @@
|
||||
;;; 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 © 2014 Eric Bavier <bavier@member.fsf.org>
|
||||
;;; Copyright © 2016, 2017 Alex Kost <alezost@gmail.com>
|
||||
@@ -38,6 +38,7 @@
|
||||
#:use-module (ice-9 vlist)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (ice-9 binary-ports)
|
||||
#:autoload (rnrs bytevectors) (bytevector?)
|
||||
#:autoload (system base compile) (compile)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-26)
|
||||
@@ -442,10 +443,15 @@ reducing the memory footprint."
|
||||
(lambda (port)
|
||||
;; Store the cache as a '.go' file. This makes loading fast and reduces
|
||||
;; heap usage since some of the static data is directly mmapped.
|
||||
(put-bytevector port
|
||||
(compile `'(,@exp)
|
||||
#:to 'bytecode
|
||||
#:opts '(#:to-file? #t)))))
|
||||
(match (compile `'(,@exp)
|
||||
#:to 'bytecode
|
||||
#: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)
|
||||
|
||||
|
||||
|
||||
@@ -339,7 +339,7 @@ assistant for graphic designers, who need to select individual pixels.")
|
||||
(synopsis "Bridge for espeak and speakup")
|
||||
(description
|
||||
"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
|
||||
kernel modules built:
|
||||
@itemize @bullet
|
||||
@@ -348,4 +348,4 @@ CONFIG_SPEAKUP=m
|
||||
@item
|
||||
CONFIG_SPEAKUP_SOFT=m
|
||||
@end itemize")
|
||||
(home-page "ttps://github.com/linux-speakup/espeakup")))
|
||||
(home-page "https://github.com/linux-speakup/espeakup")))
|
||||
|
||||
+423
-163
@@ -35,7 +35,7 @@
|
||||
;;; Copyright © 2020, 2021, 2022 Michael Rohleder <mike@rohleder.de>
|
||||
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.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 Stefan Reichör <stefan@xsteve.at>
|
||||
;;; Copyright © 2021 qblade <qblade@protonmail.com>
|
||||
@@ -43,7 +43,6 @@
|
||||
;;; Copyright © 2021 David Larsson <david.larsson@selfhosted.xyz>
|
||||
;;; Copyright © 2021 WinterHound <winterhound@yandex.com>
|
||||
;;; Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
|
||||
;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
;;; Copyright © 2021 Maxime Devos <maximedevos@telenet.be>
|
||||
;;; Copyright © 2021 muradm <mail@muradm.net>
|
||||
;;; Copyright © 2021 pineapples <guixuser6392@protonmail.com>
|
||||
@@ -51,6 +50,11 @@
|
||||
;;; Copyright © 2021 Artyom V. Poptsov <poptsov.artyom@gmail.com>
|
||||
;;; Copyright © 2022 Wamm K. D. <jaft.r@outlook.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.
|
||||
;;;
|
||||
@@ -97,6 +101,7 @@
|
||||
#:use-module (gnu packages c)
|
||||
#:use-module (gnu packages check)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages crates-graphics)
|
||||
#:use-module (gnu packages crates-io)
|
||||
#:use-module (gnu packages cross-base)
|
||||
#:use-module (gnu packages crypto)
|
||||
@@ -107,6 +112,7 @@
|
||||
#:use-module (gnu packages elf)
|
||||
#:use-module (gnu packages file)
|
||||
#:use-module (gnu packages flex)
|
||||
#:use-module (gnu packages fonts)
|
||||
#:use-module (gnu packages freedesktop)
|
||||
#:use-module (gnu packages gawk)
|
||||
#:use-module (gnu packages gettext)
|
||||
@@ -322,25 +328,14 @@ interface and is based on GNU Guile.")
|
||||
(define-public shepherd-0.9
|
||||
(package
|
||||
(inherit shepherd-0.8)
|
||||
(version "0.9.2")
|
||||
(version "0.9.3")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/shepherd/shepherd-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0mcby3ygh3bpns44rb1vnk8bz2km4nlw092nrcgkm3nkqfmbp4p1"))
|
||||
(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")))))
|
||||
"0qy2yq13xhf05an5ilz7grighdxicx56211yaarqq5qigiiybc32"))))
|
||||
(arguments
|
||||
(list #:configure-flags #~'("--localstatedir=/var")
|
||||
#:make-flags #~'("GUILE_AUTO_COMPILE=0")
|
||||
@@ -360,9 +355,12 @@ interface and is based on GNU Guile.")
|
||||
(this-package-input "guile-fibers")
|
||||
"/lib/guile/3.0/site-ccache"))))))
|
||||
#~%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
|
||||
(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)
|
||||
|
||||
@@ -696,6 +694,76 @@ console.")
|
||||
;; This package uses a modified version of the "ISC 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
|
||||
(package
|
||||
(name "htop")
|
||||
@@ -1097,7 +1165,7 @@ would need and has several interesting built-in capabilities.")
|
||||
(define-public netcat-openbsd
|
||||
(package
|
||||
(name "netcat-openbsd")
|
||||
(version "1.218-5")
|
||||
(version "1.219-1")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
@@ -1106,7 +1174,7 @@ would need and has several interesting built-in capabilities.")
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0hpbmz9m2q22a6qgbn9590z2x96xgffim8g0m1v47mariz3pqhlc"))))
|
||||
"1fhrmnbdl6bgsjk02vi78zy9i486mmniymbbbhdkzl8zfjbjkpxc"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f ; no test suite
|
||||
@@ -1331,14 +1399,14 @@ connection alive.")
|
||||
bind-release-version)))
|
||||
(package
|
||||
(name "isc-dhcp")
|
||||
(version "4.4.3")
|
||||
(version "4.4.3-P1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://ftp.isc.org/isc/dhcp/"
|
||||
version "/dhcp-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"062q2g8cj2zv0zv22x6pg21m21bdlscxkg3li0ac0pm0qasccghf"))))
|
||||
"1ivkvhhvqxap6c51cli7pa6xn76ngxri1zbl45ishz4ranxidi0a"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:parallel-build? #f
|
||||
@@ -1432,6 +1500,7 @@ connection alive.")
|
||||
(libexec (string-append out "/libexec"))
|
||||
(coreutils (assoc-ref inputs "coreutils*"))
|
||||
(inetutils (assoc-ref inputs "inetutils"))
|
||||
(grep (assoc-ref inputs "grep*"))
|
||||
(net-tools (assoc-ref inputs "net-tools"))
|
||||
(sed (assoc-ref inputs "sed*")))
|
||||
(substitute* "client/scripts/linux"
|
||||
@@ -1448,7 +1517,7 @@ connection alive.")
|
||||
,(map (lambda (dir)
|
||||
(string-append dir "/bin:"
|
||||
dir "/sbin"))
|
||||
(list inetutils net-tools coreutils sed))))))))))
|
||||
(list inetutils net-tools coreutils grep sed))))))))))
|
||||
|
||||
(native-inputs
|
||||
(list config perl file))
|
||||
@@ -1472,6 +1541,7 @@ connection alive.")
|
||||
"1zsszgxs9043dfpxb6xs1iwk9jg7nxkl5pbawj8dlshnxkkzp3hd"))))
|
||||
|
||||
("coreutils*" ,coreutils)
|
||||
("grep*" ,grep)
|
||||
("sed*" ,sed)))
|
||||
|
||||
(home-page "https://www.isc.org/dhcp/")
|
||||
@@ -1479,7 +1549,10 @@ connection alive.")
|
||||
(description
|
||||
"ISC's Dynamic Host Configuration Protocol (DHCP) distribution provides a
|
||||
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)
|
||||
(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.")
|
||||
(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
|
||||
(package
|
||||
(name "libpcap")
|
||||
@@ -1689,7 +1795,7 @@ over ssh connections.")
|
||||
(define-public realmd
|
||||
(package
|
||||
(name "realmd")
|
||||
(version "0.17.0")
|
||||
(version "0.17.1")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
@@ -1698,8 +1804,7 @@ over ssh connections.")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1c6q2a86kk2f1akzc36nh52hfwsmmc0mbp6ayyjxj4zsyk9zx5bf"))))
|
||||
(base32 "063cf4jkpfj548a7dxmffrpbh3j413nq3zy1zzj20lcfffnnaqwn"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags '("--with-systemd-unit-dir=no"
|
||||
@@ -1784,66 +1889,61 @@ at once based on a Perl regular expression.")
|
||||
(base32
|
||||
"0751mb9l2f0jrk3vj6q8ilanifd121dliwk0c34g8k0dlzsv3kd7"))
|
||||
(modules '((guix build utils)))
|
||||
(patches (search-patches "rottlog-direntry.patch"))
|
||||
(snippet
|
||||
'(begin
|
||||
(substitute* "Makefile.in"
|
||||
(("-o \\$\\{LOG_OWN\\} -g \\$\\{LOG_GROUP\\}")
|
||||
;; Don't try to chown root.
|
||||
"")
|
||||
;; Delete outdated Autotools build system files.
|
||||
(for-each delete-file
|
||||
(list "Makefile.in"
|
||||
"config.guess"
|
||||
"config.sub"
|
||||
"configure"
|
||||
"depcomp"
|
||||
"install-sh"
|
||||
"mdate-sh"
|
||||
"missing"
|
||||
"mkinstalldirs"
|
||||
"texinfo.tex"))
|
||||
(substitute* "Makefile.am"
|
||||
(("mkdir -p \\$\\(ROTT_STATDIR\\)")
|
||||
;; Don't attempt to create /var/lib/rottlog.
|
||||
"true"))
|
||||
#t))))
|
||||
"true"))))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags (list "ROTT_ETCDIR=/etc/rottlog" ;rc file location
|
||||
"--localstatedir=/var")
|
||||
|
||||
;; Install example config files in OUT/etc.
|
||||
#:make-flags (list (string-append "ROTT_ETCDIR="
|
||||
(assoc-ref %outputs "out")
|
||||
"/etc"))
|
||||
|
||||
#:phases (modify-phases %standard-phases
|
||||
(add-after 'unpack 'patch-paths
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(substitute* "rc/rc"
|
||||
(("/usr/sbin/sendmail")
|
||||
(search-input-file inputs "/bin/mail")))
|
||||
#t))
|
||||
(add-after 'unpack 'fix-configure
|
||||
(lambda* (#:key inputs native-inputs #:allow-other-keys)
|
||||
;; Replace outdated config.sub and config.guess:
|
||||
(for-each (lambda (file)
|
||||
(install-file
|
||||
(string-append
|
||||
(assoc-ref
|
||||
(or native-inputs inputs) "automake")
|
||||
"/share/automake-"
|
||||
,(version-major+minor
|
||||
(package-version automake))
|
||||
"/" file) "."))
|
||||
'("config.sub" "config.guess"))
|
||||
#t))
|
||||
(add-after 'build 'set-packdir
|
||||
(lambda _
|
||||
;; Set a default location for archived logs.
|
||||
(substitute* "rc/rc"
|
||||
(("packdir=\"\"")
|
||||
"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'
|
||||
(list
|
||||
#:configure-flags #~(list "ROTT_ETCDIR=/etc/rottlog" ;rc file location
|
||||
"--localstatedir=/var")
|
||||
;; Install example config files in OUT/etc.
|
||||
#:make-flags #~(list (string-append "ROTT_ETCDIR=" #$output "/etc")
|
||||
;; Avoid the default -o root -g root arguments,
|
||||
;; which fail due to not running as root.
|
||||
"INSTALL_RC=install"
|
||||
"INSTALL_SCRIPT=install")
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'patch-paths
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(substitute* "rc/rc"
|
||||
(("/usr/sbin/sendmail")
|
||||
(search-input-file inputs "/bin/mail")))))
|
||||
(add-after 'build 'set-packdir
|
||||
(lambda _
|
||||
;; Set a default location for archived logs.
|
||||
(substitute* "rc/rc"
|
||||
(("packdir=\"\"")
|
||||
"packdir=\"/var/log\""))))
|
||||
(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 autoconf automake texinfo util-linux)) ; for 'cal'
|
||||
(inputs (list coreutils mailutils))
|
||||
(home-page "https://www.gnu.org/software/rottlog/")
|
||||
(synopsis "Log rotation and management")
|
||||
@@ -1858,7 +1958,7 @@ system administrator.")
|
||||
(define-public sudo
|
||||
(package
|
||||
(name "sudo")
|
||||
(version "1.9.11p3")
|
||||
(version "1.9.12p2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri
|
||||
@@ -1868,7 +1968,7 @@ system administrator.")
|
||||
version ".tar.gz")))
|
||||
(sha256
|
||||
(base32
|
||||
"0w0z9w4vnhjsc4jjghi6wlyv4v055hsy38ncb67p08b7yp9fg1s6"))
|
||||
"0fc55axh2hfd8hn66dpmyrrgb0gf0nz71zpaygkrpp8x1ypb385r"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
'(begin
|
||||
@@ -2115,14 +2215,16 @@ command.")
|
||||
(substitute-keyword-arguments (package-arguments wpa-supplicant-minimal)
|
||||
((#:phases phases)
|
||||
`(modify-phases ,phases
|
||||
(add-after 'configure 'configure-for-dbus
|
||||
(add-after 'configure 'set-config-options
|
||||
(lambda _
|
||||
(let ((port (open-file ".config" "al")))
|
||||
;; Enable Opportunistic Wireless Encryption (OWE) and D-Bus
|
||||
;; support.
|
||||
(display "
|
||||
CONFIG_OWE=y
|
||||
CONFIG_CTRL_IFACE_DBUS_NEW=y
|
||||
CONFIG_CTRL_IFACE_DBUS_INTRO=y\n" port)
|
||||
(close-port port))
|
||||
#t))
|
||||
(close-port port))))
|
||||
(add-after 'install-documentation 'install-dbus-conf
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
@@ -2496,14 +2598,14 @@ characters can be replaced as well, as can UTF-8 characters.")
|
||||
(define-public tree
|
||||
(package
|
||||
(name "tree")
|
||||
(version "2.0.4")
|
||||
(version "2.1.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://mama.indstate.edu/users/ice/tree/src/tree-"
|
||||
version ".tgz"))
|
||||
(sha256
|
||||
(base32 "0x7s9wxvf83fw4qah16kapswl2277pybw3d514zrlms9g0cr5smh"))))
|
||||
(base32 "1xmbxgx72w7ddjlqsx1yys076hp3h7ll968bhdmdrc7jpwswaq01"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
(list
|
||||
@@ -2762,7 +2864,7 @@ sys.argv[0] = re.sub(r'\\.([^/]*)-real$', r'\\1', sys.argv[0])
|
||||
(list openssh
|
||||
openssl
|
||||
python-mock
|
||||
python-pycrypto
|
||||
python-pycryptodome
|
||||
python-pytest
|
||||
python-pytest-forked
|
||||
python-pytest-mock
|
||||
@@ -3170,13 +3272,13 @@ platform-specific methods.")
|
||||
(package
|
||||
(name "audit")
|
||||
(home-page "https://people.redhat.com/sgrubb/audit/")
|
||||
(version "3.0.8")
|
||||
(version "3.0.9")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append home-page "audit-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"04w9m9ffvi58z11i344wa1hji9ba68cdklrkizhiwf39mnwxkx5m"))))
|
||||
"0y5w8pl91xapi49ih1pw7h48lac201cj7fm89hkklmzi9m2715gx"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags (list "--with-python=no"
|
||||
@@ -3336,7 +3438,7 @@ throughput (in the same interval).")
|
||||
(define-public thefuck
|
||||
(package
|
||||
(name "thefuck")
|
||||
(version "3.31")
|
||||
(version "3.32")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
@@ -3345,7 +3447,7 @@ throughput (in the same interval).")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "05h60gxky57nalc2hdkpg8wqyg16432x9gcb9wnwblplk98998kq"))
|
||||
(base32 "18ipa1bm6q1n5drbi8i65726hhqhl1g41390lfqrc11hkbvv443d"))
|
||||
(patches (search-patches "thefuck-test-environ.patch"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
@@ -3809,13 +3911,13 @@ you are running, what theme or icon set you are using, etc.")
|
||||
(define-public hyfetch
|
||||
(package
|
||||
(name "hyfetch")
|
||||
(version "1.4.1")
|
||||
(version "1.4.4")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "HyFetch" version))
|
||||
(sha256
|
||||
(base32 "18s8r63aqyah34vbahccgkiqw4008i2w5kvhqd9s8bdd4yvsrn4n"))))
|
||||
(base32 "1k3pcl16y2czkk7wd79yk0w1kqpi4fp8h8szhjs5ywwy20nqmms8"))))
|
||||
(build-system python-build-system)
|
||||
(inputs (list python-hypy-utils python-typing-extensions))
|
||||
(arguments `(#:phases (modify-phases %standard-phases
|
||||
@@ -3975,14 +4077,14 @@ information tool.")
|
||||
(define-public nnn
|
||||
(package
|
||||
(name "nnn")
|
||||
(version "4.6")
|
||||
(version "4.7")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://github.com/jarun/nnn/releases/download/v"
|
||||
version "/nnn-v" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32 "0gvyvynw957yirvc1aj65flzni7niaj5bvyk82ka5dfgi2dazb0m"))))
|
||||
(base32 "0dbm54m3iv8hzar38dsfxh77z4mlpjj649ga82s0wwms4vlrm5pg"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
(list ncurses readline))
|
||||
@@ -4010,7 +4112,7 @@ hard-coded.")
|
||||
(define-public thermald
|
||||
(package
|
||||
(name "thermald")
|
||||
(version "2.4.7")
|
||||
(version "2.5.1")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
@@ -4019,7 +4121,7 @@ hard-coded.")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "1n0ih86bkm09bzhjl7hllxkl4gzcxvzsznbwi8dx87ragsjlix6n"))))
|
||||
(base32 "06p1154w3n4lm0nq8fdsr6ksxl8shrc9z8yz0sbviss9afpawxcg"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags
|
||||
@@ -4199,7 +4301,7 @@ Python loading in HPC environments.")
|
||||
(let ((real-name "inxi"))
|
||||
(package
|
||||
(name "inxi-minimal")
|
||||
(version "3.3.20-1")
|
||||
(version "3.3.24-1")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
@@ -4208,12 +4310,12 @@ Python loading in HPC environments.")
|
||||
(commit version)))
|
||||
(file-name (git-file-name real-name version))
|
||||
(sha256
|
||||
(base32 "182lczpa217gpzn58nfdzjbbinp3bw9lbm1x9lck1mkdmqklgl2a"))))
|
||||
(base32 "1nai43251r791qvc1c4hhvcaa6hq7zcjlww7k3ip7br6zgxqjaxm"))))
|
||||
(build-system trivial-build-system)
|
||||
(inputs
|
||||
`(("bash" ,bash-minimal)
|
||||
("perl" ,perl)
|
||||
("procps" ,procps)))
|
||||
(list bash-minimal
|
||||
perl
|
||||
procps))
|
||||
(native-inputs
|
||||
(list gzip))
|
||||
(arguments
|
||||
@@ -4223,10 +4325,14 @@ Python loading in HPC environments.")
|
||||
(use-modules (guix build utils)
|
||||
(ice-9 match)
|
||||
(srfi srfi-26))
|
||||
(setenv "PATH" (string-append
|
||||
(assoc-ref %build-inputs "bash") "/bin" ":"
|
||||
(assoc-ref %build-inputs "gzip") "/bin" ":"
|
||||
(assoc-ref %build-inputs "perl") "/bin" ":"))
|
||||
(setenv "PATH" (string-join
|
||||
(map (lambda (file)
|
||||
(dirname (search-input-file %build-inputs
|
||||
file)))
|
||||
(list "bin/bash"
|
||||
"bin/gzip"
|
||||
"bin/perl"))
|
||||
":"))
|
||||
(copy-recursively (assoc-ref %build-inputs "source")
|
||||
,(string-append real-name "-" version))
|
||||
(with-directory-excursion ,(string-append real-name "-" version)
|
||||
@@ -4562,52 +4668,54 @@ tcpdump and snoop.")
|
||||
(sha256
|
||||
(base32 "0832nh2qf9pisgwnbgx6hkylx5d7i416l19y3ly4ifv7k1p7mxqa"))))
|
||||
(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
|
||||
(list perl pkg-config))
|
||||
(inputs
|
||||
`(("cryptsetup" ,cryptsetup)
|
||||
("libhx" ,libhx)
|
||||
("libxml2" ,libxml2)
|
||||
("linux-pam" ,linux-pam)
|
||||
("lvm2" ,lvm2)
|
||||
("openssl" ,openssl)
|
||||
("pcre2" ,pcre2)
|
||||
("libmount" ,util-linux "lib")
|
||||
("util-linux" ,util-linux)))
|
||||
(arguments
|
||||
`(#: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")
|
||||
(list cryptsetup
|
||||
libhx
|
||||
libxml2
|
||||
linux-pam
|
||||
lvm2
|
||||
openssl
|
||||
pcre2
|
||||
`(,util-linux "lib")
|
||||
util-linux))
|
||||
(home-page "https://inai.de/projects/pam_mount/")
|
||||
(synopsis "PAM module to mount volumes for a user session")
|
||||
(description
|
||||
"Pam-mount is a PAM module that can mount volumes when a user logs in.
|
||||
It supports mounting local filesystems of any kind the normal mount utility
|
||||
supports. It can also mount encrypted LUKS volumes using the password
|
||||
supplied by the user when logging in.")
|
||||
"Pam-mount is a PAM module to mount volumes when a user logs in.
|
||||
It can mount all local file systems supported by @command{mount}, as well as
|
||||
LUKS volumes encrypted with the user's log-in password.")
|
||||
(license (list license:gpl2+ license:lgpl2.1+))))
|
||||
|
||||
(define-public jc
|
||||
@@ -4741,7 +4849,7 @@ entries, providing commands to add, remove, comment, and search.")
|
||||
(define-public nmrpflash
|
||||
(package
|
||||
(name "nmrpflash")
|
||||
(version "0.9.16")
|
||||
(version "0.9.19")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
@@ -4750,7 +4858,7 @@ entries, providing commands to add, remove, comment, and search.")
|
||||
(url "https://github.com/jclehner/nmrpflash")
|
||||
(commit (string-append "v" version))))
|
||||
(sha256
|
||||
(base32 "0gp66l3a2wznjnlc2ljs8g38mfrf1b9a0qcfxqg2bczmfxnrsynj"))
|
||||
(base32 "02r2z3mnbj8dfka7adw1l76zq1jh1l13mmkns93c54ychs44jz3d"))
|
||||
(file-name (git-file-name name version))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
@@ -4769,7 +4877,7 @@ entries, providing commands to add, remove, comment, and search.")
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(mkdir-p (string-append (assoc-ref outputs "out") "/bin")))))))
|
||||
(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
|
||||
image to a Netgear device. It has been tested on Netgear EX2700, EX6120,
|
||||
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
|
||||
`(("linux-pam" ,linux-pam)
|
||||
("scdoc" ,scdoc)))
|
||||
(synopsis "minimal and flexible login manager daemon")
|
||||
(synopsis "Minimal and flexible login manager daemon")
|
||||
(description
|
||||
"greetd is a minimal and flexible login manager daemon
|
||||
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")
|
||||
(("pam_mount_config") "greetd_pam_mount_config")
|
||||
(("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
|
||||
"Pam-mount is a PAM module that can mount volumes when a user logs in.
|
||||
It supports mounting local filesystems of any kind the normal mount utility
|
||||
supports. It can also mount encrypted LUKS volumes using the password
|
||||
supplied by the user when logging in.
|
||||
"Pam-mount is a PAM module to mount volumes when a user logs in.
|
||||
It can mount all local file systems supported by @command{mount}, as well as
|
||||
LUKS volumes encrypted with the user's log-in password.
|
||||
|
||||
This package inherits pam-mount in the way that it is compiled specifically
|
||||
for use with greetd daemon. It uses different configuration location and
|
||||
name space for storing data in PAM.
|
||||
This package inherits pam-mount but is compiled specifically for use with
|
||||
the @command{greetd} log-in manager. It uses a different configuration
|
||||
location and PAM name space from the original.
|
||||
|
||||
greetd-pam-mount is used in configuration of greetd to provide
|
||||
auto-(mounting/unmounting) of XDG_RUNTIME_DIR in the way that it will not
|
||||
interfere with default pam-mount configuration.")))
|
||||
This allows greetd-pam-mount to auto-(un)mount @env{XDG_RUNTIME_DIR} without
|
||||
interfering with any 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
|
||||
(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
|
||||
file or files to several hosts.")
|
||||
(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)))
|
||||
|
||||
@@ -64,8 +64,7 @@
|
||||
(base32
|
||||
"1yl2cpaqiv1g4nq9v0xfj1vd5faz55k4541vz6hsffvcxgn9nmc5"))))
|
||||
(build-system cmake-build-system)
|
||||
(native-inputs
|
||||
(list fmt googletest))
|
||||
(native-inputs (list fmt-8 googletest))
|
||||
(synopsis "C++ port of ZXing")
|
||||
(description "ZXing-CPP is a barcode scanning library.")
|
||||
(home-page "https://github.com/nu-book/zxing-cpp")
|
||||
|
||||
+96
-80
@@ -1,7 +1,7 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; 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 © 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 © 2016, 2018, 2019, 2021 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2017, 2020-2022 Efraim Flashner <efraim@flashner.co.il>
|
||||
@@ -14,6 +14,7 @@
|
||||
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
|
||||
;;; Copyright © 2020, 2021 Vinicius Monego <monego@posteo.net>
|
||||
;;; Copyright © 2021 Lars-Dominik Braun <ldb@leibniz-psychology.org>
|
||||
;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -106,24 +107,26 @@ multiplication routines such as Toom–Cook and the FFT.")
|
||||
|
||||
(define-public gf2x
|
||||
(package
|
||||
(name "gf2x")
|
||||
(version "1.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://gforge.inria.fr/frs/download.php/file/36934/gf2x-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0d6vh1mxskvv3bxl6byp7gxxw3zzpkldrxnyajhnl05m0gx7yhk1"))))
|
||||
(build-system gnu-build-system)
|
||||
(synopsis "Arithmetic of polynomials over binary finite fields")
|
||||
(description
|
||||
"The gf2x library provides arithmetic of polynomials over finite fields
|
||||
(name "gf2x")
|
||||
(version "1.3.0")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://gitlab.inria.fr/gf2x/gf2x")
|
||||
(commit (string-append name "-" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"04g5jg0i4vz46b4w2dvbmahwzi3k6b8g515mfw7im1inc78s14id"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs (list autoconf automake libtool))
|
||||
(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
|
||||
greatest common divisor operations.")
|
||||
(license license:gpl3+)
|
||||
(home-page "https://gforge.inria.fr/projects/gf2x/")))
|
||||
(home-page "https://gitlab.inria.fr/gf2x/gf2x")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public cm
|
||||
(package
|
||||
@@ -221,7 +224,7 @@ the real span of the lattice.")
|
||||
(define-public pari-gp
|
||||
(package
|
||||
(name "pari-gp")
|
||||
(version "2.15.0")
|
||||
(version "2.15.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
@@ -229,7 +232,7 @@ the real span of the lattice.")
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"11anfn2lmixi83208p8qxjhwkrrad9s2qqfrl3wy9m0n1lg8ax74"))))
|
||||
"1pg0przhb3cgyn0rwkx2mx7a7fpy6bxxl72bk98pca723q8jhimh"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs (list (texlive-updmap.cfg
|
||||
(list texlive-amsfonts))))
|
||||
@@ -324,7 +327,7 @@ precision.")
|
||||
(define-public giac
|
||||
(package
|
||||
(name "giac")
|
||||
(version "1.9.0-21")
|
||||
(version "1.9.0-37")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@@ -336,7 +339,7 @@ precision.")
|
||||
"~parisse/debian/dists/stable/main/source/"
|
||||
"giac_" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32 "1zh7bf0ag4vbyyj5n8lbvy2ivp0kshms40ra5lq1ff035rpx230j"))))
|
||||
(base32 "0ch18wp6b3nr0zg31961rxng2mbw5mj76s00jf5qz7jdxl65s27n"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
(list
|
||||
@@ -352,9 +355,10 @@ precision.")
|
||||
(find-files "doc" "^Makefile"))
|
||||
(("/bin/cp") (which "cp")))))
|
||||
(add-after 'unpack 'disable-failing-test
|
||||
;; FIXME: Test failing. Not sure why.
|
||||
;; FIXME: Tests failing. Not sure why.
|
||||
(lambda _
|
||||
(substitute* "check/Makefile.in"
|
||||
(("chk_fhan4") "")
|
||||
(("chk_fhan11") ""))))
|
||||
(add-after 'install 'fix-doc
|
||||
(lambda _
|
||||
@@ -460,7 +464,9 @@ GCDs, factoring, solving linear systems, and evaluating special
|
||||
functions. In addition, FLINT provides various low-level routines for
|
||||
fast arithmetic.")
|
||||
(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
|
||||
(package
|
||||
@@ -629,35 +635,42 @@ geometry and singularity theory.")
|
||||
|
||||
(define-public gmp-ecm
|
||||
(package
|
||||
(name "gmp-ecm")
|
||||
(version "7.0.4")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri
|
||||
(let ((hash "00c4c691a1ef8605b65bdf794a71539d"))
|
||||
(string-append "https://gitlab.inria.fr/zimmerma/ecm/"
|
||||
"uploads/" hash "/ecm-" version
|
||||
".tar.gz")))
|
||||
(sha256 (base32
|
||||
"0hxs24c2m3mh0nq1zz63z3sb7dhy1rilg2s1igwwcb26x3pb7xqc"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
(list gmp))
|
||||
(arguments
|
||||
`(#:configure-flags '("--enable-shared"
|
||||
;; Disable specific assembly routines, which depend
|
||||
;; on the subarchitecture of the build machine,
|
||||
;; and use gmp instead.
|
||||
"--disable-asm-redc")))
|
||||
(synopsis "Integer factorization library using the elliptic curve method")
|
||||
(description
|
||||
"GMP-ECM factors integers using the elliptic curve method (ECM) as well
|
||||
(name "gmp-ecm")
|
||||
(version "7.0.5")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://gitlab.inria.fr/zimmerma/ecm")
|
||||
(commit (string-append "git-" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"013sfsd5kyh7phhf4namcdndpcp2jnibzxf10f4g89qabr8av63m"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
(list gmp))
|
||||
(arguments
|
||||
(list
|
||||
#:configure-flags #~(list "--enable-shared"
|
||||
;; Disable specific assembly routines, which
|
||||
;; depend on the subarchitecture of the build
|
||||
;; machine, and use gmp instead.
|
||||
"--disable-asm-redc")
|
||||
#:phases #~(modify-phases %standard-phases
|
||||
(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
|
||||
binary.")
|
||||
;; Most files are under lgpl3+, but some are under gpl3+ or gpl2+,
|
||||
;; so the combined work is under gpl3+.
|
||||
(license license:gpl3+)
|
||||
(home-page "http://ecm.gforge.inria.fr/")))
|
||||
(home-page "https://gitlab.inria.fr/zimmerma/ecm")
|
||||
;; Most files are under lgpl3+, but some are under gpl3+ or gpl2+, so the
|
||||
;; combined work is under gpl3+.
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public bc
|
||||
(package
|
||||
@@ -1393,42 +1406,45 @@ objects.")
|
||||
|
||||
(define-public gappa
|
||||
(package
|
||||
(name "gappa")
|
||||
(version "1.4.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://gappa.gitlabpages.inria.fr/releases/"
|
||||
"gappa-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"12x42z901pr05ldmparqdi8sq9s7fxbavhzk2dbq3l6hy247dwbb"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
(list boost gmp mpfr))
|
||||
(arguments
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'patch-remake-shell
|
||||
(lambda _
|
||||
(substitute* "remake.cpp"
|
||||
(("/bin/sh") (which "sh")))
|
||||
#t))
|
||||
(replace 'build
|
||||
(lambda _ (invoke "./remake" "-s" "-d")))
|
||||
(replace 'install
|
||||
(lambda _ (invoke "./remake" "-s" "-d" "install")))
|
||||
(replace 'check
|
||||
(lambda _ (invoke "./remake" "check"))))))
|
||||
(home-page "http://gappa.gforge.inria.fr/")
|
||||
(synopsis "Proof generator for arithmetic properties")
|
||||
(description "Gappa is a tool intended to help verifying and formally
|
||||
(name "gappa")
|
||||
(version "1.4.1")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://gitlab.inria.fr/gappa/gappa")
|
||||
(commit (string-append name "-" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0vfggzilc0gicrhqypmlx30ccrdkmyg22zzn46988c28xi9rcicj"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
(list #:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'patch-remake-shell
|
||||
(lambda _
|
||||
(substitute* "remake.cpp"
|
||||
(("/bin/sh") (which "sh")))))
|
||||
(replace 'build
|
||||
(lambda _ (invoke "./remake" "-s" "-d")))
|
||||
(replace 'install
|
||||
(lambda _ (invoke "./remake" "-s" "-d" "install")))
|
||||
(replace 'check
|
||||
(lambda* (#:key tests? #:allow-other-keys)
|
||||
(when tests?
|
||||
(invoke "./remake" "check")))))))
|
||||
(native-inputs (list autoconf automake bison flex libtool))
|
||||
(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
|
||||
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.
|
||||
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
|
||||
for the Coq proof assistant.")
|
||||
(license (list license:gpl3+ license:cecill)))) ; either/or
|
||||
(license (list license:gpl3+ license:cecill)))) ; either/or
|
||||
|
||||
(define-public givaro
|
||||
(package
|
||||
|
||||
@@ -872,7 +872,7 @@ algorithm.")
|
||||
("libpng" ,libpng)))
|
||||
(home-page "https://developer.android.com/studio/command-line/etc1tool.html")
|
||||
(synopsis "Encode and decode PNG images to resp. from the ETC1 compression
|
||||
standard.")
|
||||
standard")
|
||||
(description
|
||||
"@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
|
||||
|
||||
+54
-89
@@ -1,5 +1,5 @@
|
||||
;;; 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 © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2019 Pkill -9 <pkill9@runbox.com>
|
||||
;;; Copyright © 2020, 2021, 2022 Vinicius Monego <monego@posteo.net>
|
||||
@@ -23,6 +23,7 @@
|
||||
(define-module (gnu packages animation)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (guix git-download)
|
||||
#:use-module (guix utils)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
@@ -92,7 +93,7 @@ rendering vector based animations and art in realtime.")
|
||||
(license license:expat)))
|
||||
|
||||
;; ETL, synfig, and Synfig Studio are updated in tandem.
|
||||
(define synfig-version "1.2.2")
|
||||
(define synfig-version "1.4.4")
|
||||
|
||||
(define-public etl
|
||||
(package
|
||||
@@ -100,12 +101,15 @@ rendering vector based animations and art in realtime.")
|
||||
(version synfig-version)
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://sourceforge/synfig/releases/"
|
||||
version "/source/ETL-" version ".tar.gz"))
|
||||
(uri (string-append "https://github.com/synfig/synfig"
|
||||
"/releases/download/v" version
|
||||
"/ETL-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"12sd8pz8l5xcxcmapkvih3brihdhdb6xmxisr9a415lydid9rh8d"))))
|
||||
"1jnahpxvrdxrll7b7av3zxabm5j3nlz6m3vg4sib2278v1wf91yc"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs (list glibmm-2.64))
|
||||
(native-inputs (list pkg-config))
|
||||
(home-page "https://www.synfig.org")
|
||||
(synopsis "Extended C++ template library")
|
||||
(description
|
||||
@@ -120,68 +124,37 @@ C++ @dfn{Standard Template Library} (STL).")
|
||||
(version synfig-version)
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://sourceforge/synfig/releases/"
|
||||
version "/source/synfig-" version
|
||||
".tar.gz"))
|
||||
(uri (string-append "https://github.com/synfig/synfig"
|
||||
"/releases/download/v" version
|
||||
"/synfig-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1vy27kl68sbg41sfasa58k3p2nc1xfalvzk3k9gich9h90rpnpsz"))))
|
||||
"01kgfmjfjk5y0v9ldmxzc8zzvbiaakz7nzg4hkj24gj3j6h8566d"))))
|
||||
(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
|
||||
`(("boost" ,boost)
|
||||
("ffmpeg" ,ffmpeg)
|
||||
("libdv" ,libdv)
|
||||
("libjpeg" ,libjpeg-turbo)
|
||||
("libpng" ,libpng)
|
||||
("libmng" ,libmng)
|
||||
("zlib" ,zlib)))
|
||||
;; synfig.pc lists the following as required: Magick++ freetype2
|
||||
;; fontconfig fftw OpenEXR ETL glibmm-2.4 giomm-2.4 libxml++-3.0 sigc++-2.0
|
||||
;; cairo pango pangocairo mlt++
|
||||
(list boost
|
||||
libdv
|
||||
libjpeg-turbo
|
||||
libpng
|
||||
libmng
|
||||
zlib))
|
||||
;; synfig.pc lists the following as required: Magick++ libavcodec
|
||||
;; libavformat libswscale freetype2 fontconfig OpenEXR ETL glibmm-2.4
|
||||
;; giomm-2.4 libxml++-2.6 sigc++-2.0 cairo fftw3 pango pangocairo mlt++
|
||||
(propagated-inputs
|
||||
`(("cairo" ,cairo)
|
||||
("etl" ,etl)
|
||||
("fftw" ,fftw)
|
||||
("fontconfig" ,fontconfig)
|
||||
("freetype" ,freetype)
|
||||
("glibmm" ,glibmm)
|
||||
("imagemagick" ,imagemagick)
|
||||
("libxml++" ,libxml++)
|
||||
("libsigc++" ,libsigc++)
|
||||
("mlt" ,mlt-6)
|
||||
("openexr" ,openexr-2)
|
||||
("pango" ,pango)))
|
||||
(list cairo
|
||||
etl
|
||||
ffmpeg-4
|
||||
fftw
|
||||
fontconfig
|
||||
freetype
|
||||
glibmm-2.64
|
||||
imagemagick
|
||||
libxml++-2
|
||||
libsigc++
|
||||
mlt-6
|
||||
openexr-2
|
||||
pango))
|
||||
(native-inputs
|
||||
(list intltool pkg-config))
|
||||
(home-page "https://www.synfig.org")
|
||||
@@ -198,32 +171,24 @@ for tweening, preventing the need to hand-draw each frame.")
|
||||
(version synfig-version)
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://sourceforge/synfig/releases/"
|
||||
version "/source/synfigstudio-" version
|
||||
".tar.gz"))
|
||||
(uri (string-append "https://github.com/synfig/synfig"
|
||||
"/releases/download/v" version
|
||||
"/synfigstudio-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1ql92kh9z8w2j9yi3pr7hn7wh2r2j35xynwv9xlwyd7niackgykn"))
|
||||
(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))))
|
||||
"07xjgs1qw0rwpihpcspj92rzwy5zizi86l9x2x7w6sysrj0wd4w8"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
;; This fixes the file chooser crash that happens with GTK 3.
|
||||
(add-after 'install 'wrap-program
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(gtk (assoc-ref inputs "gtk+"))
|
||||
(gtk-share (string-append gtk "/share")))
|
||||
(wrap-program (string-append out "/bin/synfigstudio")
|
||||
`("XDG_DATA_DIRS" ":" prefix (,gtk-share)))
|
||||
#t))))))
|
||||
(list
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
;; This fixes the file chooser crash that happens with GTK 3.
|
||||
(add-after 'install 'wrap-program
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(let* ((gtk (assoc-ref inputs "gtk+"))
|
||||
(gtk-share (string-append gtk "/share")))
|
||||
(wrap-program (string-append #$output "/bin/synfigstudio")
|
||||
`("XDG_DATA_DIRS" ":" prefix (,gtk-share)))))))))
|
||||
(inputs
|
||||
(list gtkmm-3 gtk+ libsigc++ synfig))
|
||||
(native-inputs
|
||||
@@ -325,7 +290,7 @@ audio or video backends, ensuring good performance.")
|
||||
(define-public lightspark
|
||||
(package
|
||||
(name "lightspark")
|
||||
(version "0.8.6")
|
||||
(version "0.8.6.1")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
@@ -334,7 +299,7 @@ audio or video backends, ensuring good performance.")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "0v7d7vwb0xqkk3v8dyks0wyk52ga57v5lg93y74v1d2wh7spmmzw"))))
|
||||
(base32 "1a78l9na01pd7a77r9n8lqih893s54rllpjvrx72sh0yyal1q3gz"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f ;requires Adobe Flex SDK, see README.tests
|
||||
@@ -559,7 +524,7 @@ stacking and changing parameters in SWFs.
|
||||
@item
|
||||
@command{swfstrings} Scans SWFs for text data.
|
||||
@item
|
||||
@command{swfdump} Prints out various informations about SWFs.
|
||||
@command{swfdump} Prints out various information about SWFs.
|
||||
|
||||
@item
|
||||
@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.
|
||||
|
||||
@item
|
||||
@command{swfbbox} Allows to read out, optimize and readjust SWF bounding boxes.
|
||||
@command{swfbbox} reads out, optimizes and readjusts SWF bounding boxes.
|
||||
|
||||
@item
|
||||
@command{swfc} A tool for creating SWF files from simple script files. Supports
|
||||
both ActionScript 2.0 aand 3.0.
|
||||
|
||||
@item
|
||||
@command{swfextract} Allows to extract Movieclips, Sounds, Images etc. from SWF
|
||||
@command{swfextract} extracts Movieclips, Sounds, Images etc. from SWF
|
||||
files.
|
||||
|
||||
@item
|
||||
|
||||
@@ -45,14 +45,14 @@
|
||||
(define-public clamav
|
||||
(package
|
||||
(name "clamav")
|
||||
(version "0.103.6")
|
||||
(version "0.103.7")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://www.clamav.net/downloads/production/"
|
||||
"clamav-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0cxsv5m9pqxxb56qd7hlj11pwmdgm07s3msh3hxk47czq4yjx8da"))
|
||||
"0l3yn4dl4zgpq2qmj29kkd0fksyy1icr0rpp3fyvbcqcc0gw6d0y"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
'(begin
|
||||
|
||||
@@ -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))))
|
||||
@@ -123,7 +123,7 @@
|
||||
(files '("share/arcan/scripts")))))
|
||||
(inputs
|
||||
`(("apr" ,apr)
|
||||
("ffmpeg" ,ffmpeg)
|
||||
("ffmpeg" ,ffmpeg-4)
|
||||
("freetype" ,freetype)
|
||||
("glib" ,glib)
|
||||
("glu" ,glu)
|
||||
|
||||
+15
-118
@@ -161,6 +161,13 @@ dictionaries, including personal ones.")
|
||||
(base32
|
||||
"1svls9p7rsfi3hs0afh0cssj006qb4v1ik2yzqgj8hm10c6as2sm")))
|
||||
|
||||
(define-public aspell-dict-bn
|
||||
(aspell-dictionary "bn" "Bengali"
|
||||
#:version "0.01.1-1"
|
||||
#:sha256
|
||||
(base32
|
||||
"1nc02jd67iggirwxnhdvlvaqm0xfyks35c4psszzj3dhzv29qgxh")))
|
||||
|
||||
(define-public aspell-dict-ca
|
||||
(let ((version "2.5.0")
|
||||
(sha256
|
||||
@@ -310,6 +317,14 @@ dictionaries, including personal ones.")
|
||||
(base32
|
||||
"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
|
||||
(aspell-dictionary "pl" "Polish"
|
||||
#:version "0.51-0"
|
||||
@@ -370,124 +385,6 @@ dictionaries, including personal ones.")
|
||||
(base32
|
||||
"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
|
||||
(package
|
||||
(name "ispell")
|
||||
|
||||
@@ -12,6 +12,7 @@
|
||||
;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
|
||||
;;; Copyright © 2022 Felix Gruber <felgru@posteo.net>
|
||||
;;; Copyright © 2022 Andy Tai <atai@atai.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -132,19 +133,21 @@ debugging information in STABS, DWARF 2, and CodeView 8 formats.")
|
||||
(define-public lightning
|
||||
(package
|
||||
(name "lightning")
|
||||
(version "2.1.3")
|
||||
(version "2.2.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/lightning/lightning-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1jgxbq2cm51dzi3zhz38mmgwdcgs328mfl8iviw8dxn6dn36p1gd"))))
|
||||
"03kwvn00qggys203vpzb2kq2asy0ql7x84ajk05a62yg3kzq8faf"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs (list zlib))
|
||||
(arguments
|
||||
;; Some tests fail when run in parallel.
|
||||
`(#:parallel-tests? #f))
|
||||
`(#:configure-flags
|
||||
(list "--disable-static")
|
||||
;; Some tests fail when run in parallel.
|
||||
#:parallel-tests? #f))
|
||||
(synopsis "Library for generating assembly code at runtime")
|
||||
(description
|
||||
"GNU Lightning is a library that generates assembly language code at
|
||||
|
||||
+710
-139
File diff suppressed because it is too large
Load Diff
+387
-123
@@ -1,5 +1,5 @@
|
||||
;;; 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 Andreas Enge <andreas@enge.fr>
|
||||
;;; Copyright © 2015 Alex Kost <alezost@gmail.com>
|
||||
@@ -8,16 +8,16 @@
|
||||
;;; Copyright © 2016, 2017 Alex Griffin <a@ajgrf.com>
|
||||
;;; Copyright © 2016 Nikita <nikita@n0.is>
|
||||
;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
|
||||
;;; Copyright © 2016–2022 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2016–2023 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2018, 2020 Oleg Pykhalov <go.wigust@gmail.com>
|
||||
;;; Copyright © 2018 okapi <okapi@firemail.cc>
|
||||
;;; Copyright © 2018, 2020, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
;;; Copyright © 2018 Clément Lassieur <clement@lassieur.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 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 Leo Famulari <leo@famulari.name>
|
||||
;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
|
||||
@@ -39,6 +39,8 @@
|
||||
;;; Copyright © 2022 Arjan Adriaanse <arjan@adriaan.se>
|
||||
;;; Copyright © 2022 Juliana Sims <jtsims@protonmail.com>
|
||||
;;; 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.
|
||||
;;;
|
||||
@@ -145,7 +147,8 @@
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-26))
|
||||
#:use-module (srfi srfi-26)
|
||||
#:use-module (ice-9 match))
|
||||
|
||||
(define-public opensles
|
||||
(package
|
||||
@@ -236,7 +239,7 @@ promoting the market for advanced audio.")
|
||||
("openal" ,openal)))
|
||||
(synopsis "Software Synthesizer")
|
||||
(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/")
|
||||
(license
|
||||
(list
|
||||
@@ -366,7 +369,12 @@ Linux kernel.")
|
||||
"07857vdkak306d9s5g6fhmjyxk7vijzjhkmqb15s7ihfxx9lx8xb"))))
|
||||
(build-system cmake-build-system)
|
||||
(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")
|
||||
(synopsis "Video game music file playback library")
|
||||
(description
|
||||
@@ -470,31 +478,6 @@ by MusicIP.")
|
||||
(home-page "https://code.google.com/archive/p/musicip-libofa/")
|
||||
(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
|
||||
(package
|
||||
(name "libtimidity")
|
||||
@@ -622,7 +605,11 @@ Filter) modules follow the convention of 1V / Octave.")
|
||||
"--enable-samplerate"
|
||||
"--enable-avcodec")))
|
||||
(inputs
|
||||
(list jack-1 libsndfile libsamplerate fftwf ffmpeg)) ; for libavcodec
|
||||
(list jack-1
|
||||
libsndfile
|
||||
libsamplerate
|
||||
ffmpeg-4 ;for libavcodec
|
||||
fftwf))
|
||||
(native-inputs
|
||||
(list pkg-config))
|
||||
(home-page "https://aubio.org/")
|
||||
@@ -634,6 +621,100 @@ attacks, performing pitch detection, tapping the beat and producing MIDI
|
||||
streams from live audio.")
|
||||
(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)
|
||||
`(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((libdir (string-append (assoc-ref outputs "out")
|
||||
@@ -647,13 +728,12 @@ streams from live audio.")
|
||||
libdir "/engines" ":"
|
||||
libdir "/panners" ":"
|
||||
libdir "/surfaces" ":"
|
||||
libdir "/vamp" "\"]"))))
|
||||
#t))
|
||||
libdir "/vamp" "\"]"))))))
|
||||
|
||||
(define-public ardour
|
||||
(package
|
||||
(name "ardour")
|
||||
(version "6.9")
|
||||
(version "7.2")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
@@ -667,19 +747,19 @@ streams from live audio.")
|
||||
"libs/ardour/revision.cc"
|
||||
(lambda (port)
|
||||
(format port ,(string-append "#include \"ardour/revision.h\"
|
||||
namespace ARDOUR { const char* revision = \"" version "\" ; const char* date = \"\"; }"))
|
||||
#t)))
|
||||
namespace ARDOUR { const char* revision = \"" version "\" ; const char* date = \"\"; }")))))
|
||||
(sha256
|
||||
(base32
|
||||
"0vlcbd70y0an881zv87kc3akmaiz4w7whsy3yaiiqqjww35jg1mm"))
|
||||
"1gv0wkzyx59lbnaf5iz9yva4akrd2zkhsmdk8wda3wz06zmk4w1r"))
|
||||
(file-name (string-append name "-" version))))
|
||||
(build-system waf-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags '("--cxx11" ; required by gtkmm
|
||||
`(#:configure-flags '("--cxx11" ; required by gtkmm
|
||||
"--optimize"
|
||||
"--no-phone-home" ; don't contact ardour.org
|
||||
"--freedesktop" ; build .desktop file
|
||||
"--test") ; build unit tests
|
||||
"--no-phone-home" ; don't contact ardour.org
|
||||
"--freedesktop" ; build .desktop file
|
||||
"--test" ; build unit tests
|
||||
"--use-external-libs") ; use system libraries
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'set-rpath-in-LDFLAGS
|
||||
@@ -704,8 +784,11 @@ namespace ARDOUR { const char* revision = \"" version "\" ; const char* date = \
|
||||
(string-append share "/applications/"))
|
||||
(install-file (string-append "build/gtk2_ardour/ardour"
|
||||
ver ".appdata.xml")
|
||||
(string-append share "/appdata/")))
|
||||
#t)))
|
||||
(string-append share "/appdata/")))))
|
||||
(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"))
|
||||
(inputs
|
||||
(list alsa-lib
|
||||
@@ -719,13 +802,17 @@ namespace ARDOUR { const char* revision = \"" version "\" ; const char* date = \
|
||||
fftw
|
||||
fftwf
|
||||
flac
|
||||
fluidsynth
|
||||
glibmm
|
||||
gtkmm-2
|
||||
hicolor-icon-theme
|
||||
hidapi
|
||||
jack-1
|
||||
libarchive
|
||||
libart-lgpl
|
||||
libgnomecanvasmm
|
||||
liblo
|
||||
libltc
|
||||
libogg
|
||||
libsamplerate
|
||||
libsndfile
|
||||
@@ -740,6 +827,7 @@ namespace ARDOUR { const char* revision = \"" version "\" ; const char* date = \
|
||||
pangomm
|
||||
python-rdflib
|
||||
pulseaudio
|
||||
qm-dsp
|
||||
readline
|
||||
redland
|
||||
rubberband
|
||||
@@ -751,11 +839,11 @@ namespace ARDOUR { const char* revision = \"" version "\" ; const char* date = \
|
||||
taglib
|
||||
vamp))
|
||||
(native-inputs
|
||||
`(("cppunit" ,cppunit)
|
||||
("gettext" ,gettext-minimal)
|
||||
("itstool" ,itstool)
|
||||
("perl" ,perl)
|
||||
("pkg-config" ,pkg-config)))
|
||||
(list cppunit
|
||||
gettext-minimal
|
||||
itstool
|
||||
perl
|
||||
pkg-config))
|
||||
(home-page "https://ardour.org")
|
||||
(synopsis "Digital audio workstation")
|
||||
(description
|
||||
@@ -767,19 +855,16 @@ engineers, musicians, soundtrack editors and composers.")
|
||||
(define-public audacity
|
||||
(package
|
||||
(name "audacity")
|
||||
(version "3.1.3")
|
||||
(version "3.2.3")
|
||||
(source
|
||||
(origin
|
||||
;; If built from the release tag, Audacity will describe itself
|
||||
;; as an "Alpha test version" and suggest to users that they use
|
||||
;; the "latest stable released version".
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://github.com/audacity/audacity/releases/download/"
|
||||
"Audacity-" version "/audacity-" version
|
||||
"-source.tar.gz"))
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/audacity/audacity")
|
||||
(commit (string-append "Audacity-" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"189agx11361k9j958s6q5bngnnfx0rwaf0dwbjxy6fwvsb1wv3px"))
|
||||
(base32 "0wg75fblxlnrn5kqvg0w1fi2pwdkn1nd6vgya3sad84l3ki7wpyh"))
|
||||
(patches (search-patches "audacity-ffmpeg-fallback.patch"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
@@ -803,20 +888,19 @@ engineers, musicians, soundtrack editors and composers.")
|
||||
#t))))
|
||||
(build-system cmake-build-system)
|
||||
(inputs
|
||||
(list wxwidgets-3.1
|
||||
(list wxwidgets
|
||||
gtk+
|
||||
alsa-lib
|
||||
jack-1
|
||||
expat
|
||||
lame
|
||||
linux-libre-headers
|
||||
flac
|
||||
ffmpeg
|
||||
libid3tag
|
||||
libjpeg-turbo
|
||||
libmad
|
||||
;;("libsbsms" ,libsbsms) ;bundled version is modified
|
||||
libsndfile
|
||||
mpg123
|
||||
soundtouch
|
||||
soxr ;replaces libsamplerate
|
||||
sqlite
|
||||
@@ -827,24 +911,32 @@ engineers, musicians, soundtrack editors and composers.")
|
||||
lilv ;for lv2
|
||||
suil ;for lv2
|
||||
portaudio
|
||||
portmidi))
|
||||
portmidi
|
||||
wavpack))
|
||||
(native-inputs
|
||||
`(("autoconf" ,autoconf)
|
||||
("automake" ,automake)
|
||||
("gettext" ,gettext-minimal) ;for msgfmt
|
||||
("libtool" ,libtool)
|
||||
("pkg-config" ,pkg-config)
|
||||
("python" ,python)
|
||||
("which" ,which)))
|
||||
(list autoconf
|
||||
automake
|
||||
gettext-minimal ;for msgfmt
|
||||
libtool
|
||||
pkg-config
|
||||
python
|
||||
which))
|
||||
(arguments
|
||||
`(#:configure-flags
|
||||
(list
|
||||
"-Daudacity_conan_enabled=off"
|
||||
"-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
|
||||
;; "-Daudacity_obey_system_dependencies=on"
|
||||
;; 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)
|
||||
,@%cmake-build-system-modules)
|
||||
#:modules
|
||||
@@ -862,24 +954,20 @@ engineers, musicians, soundtrack editors and composers.")
|
||||
"CMAKE_BUILD_WITH_INSTALL_RPATH TRUE")
|
||||
(("CMAKE_INSTALL_RPATH_USE_LINK_PATH [A-Z]*")
|
||||
"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"
|
||||
;; Despite the name, this script breaks rpath. Don't run it.
|
||||
(("install.*linux/fix_rpath\\.cmake.*")
|
||||
"")
|
||||
(("-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
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(substitute* '("libraries/lib-files/FileNames.cpp")
|
||||
(("\"/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
|
||||
(assoc-ref glib-or-gtk:%standard-phases 'glib-or-gtk-wrap)))
|
||||
;; 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.")
|
||||
(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
|
||||
(package
|
||||
(name "infamous-plugins")
|
||||
@@ -1400,7 +1521,7 @@ object library.")
|
||||
(define-public csound
|
||||
(package
|
||||
(name "csound")
|
||||
(version "6.14.0")
|
||||
(version "6.16.2")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
@@ -1409,7 +1530,7 @@ object library.")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "1sr9knfhbm2m0wpkjq2l5n471vnl51wy4p6j4m95zqybimzb4s2j"))))
|
||||
(base32 "1lgasyk8j4cl9178vci1dph63nks3cgwhf8y1d04z9dc8gg15dyn"))))
|
||||
(build-system cmake-build-system)
|
||||
(native-inputs
|
||||
(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.")
|
||||
(license license:gpl2+)))
|
||||
|
||||
;; Packages depending on JACK should always prefer jack-2.
|
||||
;; JACK1 is provided for legacy applications
|
||||
(define-public jack-1
|
||||
(package
|
||||
(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.
|
||||
(license (list license:gpl2+ license:lgpl2.1+))))
|
||||
|
||||
;; Packages depending on JACK should always prefer jack-1. Both jack-1 and
|
||||
;; jack-2 implement the same API. JACK2 is provided primarily as a client
|
||||
;; program for users who might benefit from the D-BUS features.
|
||||
;; Packages depending on JACK should always prefer jack-2. Both jack-1 and
|
||||
;; jack-2 implement the same API.
|
||||
(define-public jack-2
|
||||
(package
|
||||
(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+
|
||||
(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
|
||||
(package
|
||||
(name "jalv")
|
||||
(version "1.6.6")
|
||||
(version "1.6.8")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://download.drobilla.net/jalv-"
|
||||
version ".tar.bz2"))
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"05lycfq0f06zjp5xqvzjz9hx9kmqx72yng1lghh76hv63dw43lcj"))))
|
||||
(build-system waf-build-system)
|
||||
"1q8mzjv577vdi64s47gd4pg0ydzxvs32cwrb1d64v90f52qpgbpd"))))
|
||||
(build-system meson-build-system)
|
||||
(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
|
||||
(list lv2
|
||||
lilv
|
||||
@@ -2600,14 +2804,13 @@ compensation, (de)interleaving, and byte-swapping
|
||||
(define-public python-pyaudio
|
||||
(package
|
||||
(name "python-pyaudio")
|
||||
(version "0.2.11")
|
||||
(version "0.2.12")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "PyAudio" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0x7vdsigm7xgvyg3shd3lj113m8zqj2pxmrgdyj66kmnw0qdxgwk"))))
|
||||
(base32 "17pvc27pn2xbisbq7nibhidyw8h2kyms7g2xbyx7nlxwfbdzbpam"))))
|
||||
(build-system python-build-system)
|
||||
(inputs
|
||||
(list portaudio))
|
||||
@@ -2617,6 +2820,38 @@ compensation, (de)interleaving, and byte-swapping
|
||||
cross-platform audio input/output stream library.")
|
||||
(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
|
||||
(package
|
||||
(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
|
||||
buffers, and audio capture.")
|
||||
(home-page "https://openal-soft.org/")
|
||||
(properties
|
||||
'((upstream-name . "openal-soft")))
|
||||
(license license:lgpl2.0+)))
|
||||
|
||||
(define-public freealut
|
||||
@@ -3088,19 +3325,23 @@ different audio devices such as ALSA or PulseAudio.")
|
||||
(define-public qjackctl
|
||||
(package
|
||||
(name "qjackctl")
|
||||
(version "0.9.7")
|
||||
(version "0.9.8")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://sourceforge/qjackctl/qjackctl/"
|
||||
version "/qjackctl-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"104hfvr15v8cbkzil8slrqj48y3fl7lx060alj80q1sjh5hl6j2j"))))
|
||||
"1rvxgxd7bbv7yazcpw3ily0jlra8ms5c0kkf7cybgivahw59zk87"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
'(#:tests? #f)) ; no check target
|
||||
(inputs
|
||||
(list jack-1 alsa-lib portaudio qtbase-5 qtx11extras))
|
||||
(list alsa-lib
|
||||
jack-1
|
||||
portaudio
|
||||
qtbase-5
|
||||
qtsvg-5))
|
||||
(native-inputs
|
||||
(list pkg-config qttools-5))
|
||||
(home-page "https://qjackctl.sourceforge.io/")
|
||||
@@ -3587,7 +3828,8 @@ analysis plugins or audio feature extraction plugins.")
|
||||
(symlink
|
||||
(search-input-file inputs
|
||||
(string-append "/share/automake-"
|
||||
,(package-version automake)
|
||||
,(version-major+minor
|
||||
(package-version automake))
|
||||
"/ar-lib"))
|
||||
"ar-lib")
|
||||
#t)))))
|
||||
@@ -4315,7 +4557,7 @@ simplified, although really accurate, measuring tools.")
|
||||
,home-page))
|
||||
#t))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs (list ffmpeg sox))
|
||||
(inputs (list ffmpeg-4 sox))
|
||||
(synopsis "Tool to adjust loudness of media files")
|
||||
(description
|
||||
"BS1770GAIN is a loudness scanner compliant with ITU-R BS.1770 and its
|
||||
@@ -4701,7 +4943,7 @@ representations.")
|
||||
(define-public cava
|
||||
(package
|
||||
(name "cava")
|
||||
(version "0.7.4")
|
||||
(version "0.8.3")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
@@ -4710,15 +4952,7 @@ representations.")
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1mziklmqifhnb4kg9ia2r56r8wjn6xp40bkpf484hsgqvnrccl86"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
#~(begin
|
||||
(delete-file-recursively "iniparser")
|
||||
(substitute* "configure.ac"
|
||||
(("AC_CONFIG_FILES\\(iniparser/Makefile\\)") ""))
|
||||
(substitute* "Makefile.am"
|
||||
(("SUBDIRS = iniparser") ""))))))
|
||||
"0v0l6al3ygj6lq224ddffb1f10yv4218k7l82hbba8d7dj2rc67b"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs (list autoconf automake libtool))
|
||||
(inputs (list fftw ncurses pulseaudio iniparser))
|
||||
@@ -4748,7 +4982,7 @@ representations.")
|
||||
(string-append #$output
|
||||
"/share/doc/examples")))
|
||||
(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")
|
||||
(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.")
|
||||
@@ -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"
|
||||
"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
|
||||
(package
|
||||
(name "libopenshot-audio")
|
||||
(version "0.2.2")
|
||||
(version "0.3.0")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(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))
|
||||
(sha256
|
||||
(base32
|
||||
"03dygh85riljk7dpn5a5a0d22a2kz45fs13gzwqgnbzzr1k17p2y"))))
|
||||
"1y3apyn71ysks88bv71knjvk832imnbpbb8mgib3q9b8pvdmjw3g"))))
|
||||
(build-system cmake-build-system)
|
||||
(inputs
|
||||
(list alsa-lib
|
||||
@@ -4854,7 +5119,7 @@ library.")
|
||||
(define-public faudio
|
||||
(package
|
||||
(name "faudio")
|
||||
(version "21.10")
|
||||
(version "22.11")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
@@ -4863,7 +5128,7 @@ library.")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "0l9bicg8v1shsyq9k48zh4wv5kwfs6lfjmm9blzd13xrgmhd07w2"))))
|
||||
(base32 "0jdfslxgzysqy0r3nfbsyj6dz0n36fncbsczm9zznxv5phic7g87"))))
|
||||
(arguments
|
||||
'(#:tests? #f ; No tests.
|
||||
#:configure-flags '("-DGSTREAMER=ON")))
|
||||
@@ -4942,7 +5207,7 @@ stream to one or more IceCast and/or ShoutCast servers.")
|
||||
(define-public libltc
|
||||
(package
|
||||
(name "libltc")
|
||||
(version "1.3.1")
|
||||
(version "1.3.2")
|
||||
(source
|
||||
(origin
|
||||
(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"
|
||||
version "/libltc-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"173h9dgmain3nyrwk6q2d7yl4fnh4vacag4s2p01n5b7nyrkxrjh"))))
|
||||
(base32 "0j8j7cnw02arh8122d13bwkps1c0mi2xqq55gyi2bs91dk6l4v8a"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:parallel-tests? #f)) ;tests fail otherwise
|
||||
@@ -5843,7 +6107,7 @@ and DSD streams.")
|
||||
(define-public qpwgraph
|
||||
(package
|
||||
(name "qpwgraph")
|
||||
(version "0.3.5")
|
||||
(version "0.3.9")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
@@ -5852,12 +6116,12 @@ and DSD streams.")
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"01f4zabn22dp0yl7szxck6gkbayk1p5iqajfgzls7mdkba7515b6"))))
|
||||
"1zdqgn2a139bazazbccpb65zn7qdynndwm9mafq54nkpa7n7lri8"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments (list #:tests? #f)) ;; no tests
|
||||
(inputs (list alsa-lib
|
||||
libxkbcommon
|
||||
pipewire-0.3
|
||||
pipewire
|
||||
qtbase
|
||||
qtsvg))
|
||||
(native-inputs (list pkg-config))
|
||||
|
||||
@@ -43,6 +43,7 @@
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://download.savannah.nongnu.org/releases/"
|
||||
name "/" name "-" version ".tar.gz"))
|
||||
(patches (search-patches "oath-toolkit-xmlsec-compat.patch"))
|
||||
(sha256
|
||||
(base32 "1aa620k05lsw3l3slkp2mzma40q3p9wginspn9zk8digiz7dzv9n"))))
|
||||
(build-system gnu-build-system)
|
||||
@@ -93,7 +94,7 @@ data.")
|
||||
(define-public oauth2l
|
||||
(package
|
||||
(name "oauth2l")
|
||||
(version "1.2.2")
|
||||
(version "1.3.0")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
@@ -102,7 +103,7 @@ data.")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "0a9x0b31ybyjg0k7923xw6zr6crm0kigcn8g6hyr228nbvw35r8w"))))
|
||||
(base32 "0010870xdhf0aysrs2vhl3yxd4gh87qp7mjpyp7qy1n2rz55pgbc"))))
|
||||
(build-system go-build-system)
|
||||
(arguments
|
||||
'(#: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
+359
-198
File diff suppressed because it is too large
Load Diff
+439
-236
File diff suppressed because it is too large
Load Diff
+366
-248
File diff suppressed because it is too large
Load Diff
+418
-283
File diff suppressed because it is too large
Load Diff
@@ -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)
|
||||
@@ -31,10 +31,12 @@
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system trivial)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages check)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages cross-base)
|
||||
#:use-module (gnu packages flashing-tools)
|
||||
#:use-module (gnu packages gcc)
|
||||
#:use-module (gnu packages llvm)
|
||||
#:use-module (gnu packages vim))
|
||||
|
||||
(define-public avr-binutils
|
||||
@@ -148,7 +150,7 @@ C++.")
|
||||
(define-public microscheme
|
||||
(package
|
||||
(name "microscheme")
|
||||
(version "0.9.3")
|
||||
(version "0.9.4")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
@@ -156,7 +158,7 @@ C++.")
|
||||
(url "https://github.com/ryansuchocki/microscheme")
|
||||
(commit (string-append "v" version))))
|
||||
(sha256
|
||||
(base32 "1r3ng4pw1s9yy1h5rafra1rq19d3vmb5pzbpcz1913wz22qdd976"))
|
||||
(base32 "1bflwirpcd58bngbs6hgjfwxl894ni2gpdd4pj10pm2mjhyj5dgw"))
|
||||
(file-name (git-file-name name version))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
@@ -168,7 +170,7 @@ C++.")
|
||||
#:make-flags
|
||||
(list (string-append "PREFIX=" (assoc-ref %outputs "out")))))
|
||||
(native-inputs
|
||||
(list unzip xxd))
|
||||
(list clang cppcheck unzip xxd))
|
||||
(home-page "https://github.com/ryansuchocki/microscheme/")
|
||||
(synopsis "Scheme subset for Atmel microcontrollers")
|
||||
(description
|
||||
|
||||
@@ -33,11 +33,11 @@
|
||||
#:use-module (gnu packages flashing-tools)
|
||||
#:use-module (gnu packages java)
|
||||
#:use-module (gnu packages java-graphics)
|
||||
#:use-module (gnu packages java-xml)
|
||||
#:use-module (gnu packages libusb)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages textutils)
|
||||
#:use-module (gnu packages version-control)
|
||||
#:use-module (gnu packages xml))
|
||||
#:use-module (gnu packages version-control))
|
||||
|
||||
;; XXX The patch does not apply to libusb 1.0.24.
|
||||
;; See https://github.com/axoloti/axoloti/issues/464
|
||||
@@ -98,8 +98,6 @@
|
||||
(srfi srfi-26)
|
||||
(ice-9 match)
|
||||
(ice-9 regex))
|
||||
#:imported-modules ((guix build syscalls)
|
||||
,@%gnu-build-system-modules)
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'patch-paths
|
||||
@@ -232,7 +230,6 @@ runtime.")
|
||||
(sxml xpath)
|
||||
(sxml transform))
|
||||
#:imported-modules ((guix build ant-build-system)
|
||||
(guix build syscalls)
|
||||
,@%gnu-build-system-modules)
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
@@ -390,7 +387,6 @@ patcher application.")))
|
||||
(sxml xpath)
|
||||
(sxml transform))
|
||||
#:imported-modules ((guix build ant-build-system)
|
||||
(guix build syscalls)
|
||||
,@%gnu-build-system-modules)
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
|
||||
+107
-109
@@ -15,7 +15,7 @@
|
||||
;;; Copyright © 2019 Alex Vong <alexvong1995@gmail.com>
|
||||
;;; Copyright © 2019, 2022 Marius Bakke <marius@gnu.org>
|
||||
;;; 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 Michael Rohleder <mike@rohleder.de>
|
||||
;;; 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
|
||||
serially iterate through the archive, writers serially add things to the
|
||||
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)))
|
||||
|
||||
(define-public rdup
|
||||
@@ -513,7 +514,7 @@ rdiff-backup is easy to use and settings have sensible defaults.")
|
||||
(define-public rsnapshot
|
||||
(package
|
||||
(name "rsnapshot")
|
||||
(version "1.4.4")
|
||||
(version "1.4.5")
|
||||
(source
|
||||
(origin
|
||||
(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/"
|
||||
version "/rsnapshot-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32 "0yc5k2fhm54ypxgm1fsaf8vrg5b7qbvbsqk371n6baf592vprjy1"))))
|
||||
(base32 "0hl2ncld0xkwlnv1cqjmmnld2nlp65alkkdacs11wl95r80mxdqh"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
@@ -623,117 +624,114 @@ detection, and lossless compression.")
|
||||
(define-public borg
|
||||
(package
|
||||
(name "borg")
|
||||
(version "1.2.1")
|
||||
(version "1.2.3")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "borgbackup" version))
|
||||
(sha256
|
||||
(base32 "0cy6chpa053rlvy4448vf9klb5v0v1vq3l76gqa3mcrwjb8y574z"))
|
||||
(base32 "11b7jqv9sw22a9512b270d12k3mrcgmmcaimh6bgm5iwcgw1h973"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
'(begin
|
||||
;; Delete files generated by Cython. We used to have a regex
|
||||
;; that created the list of generated files but Borg has
|
||||
;; added new non-generated C files that cause the regex to
|
||||
;; generate the wrong list.
|
||||
(for-each delete-file
|
||||
'("src/borg/algorithms/checksums.c"
|
||||
"src/borg/chunker.c"
|
||||
"src/borg/compress.c"
|
||||
"src/borg/crypto/low_level.c"
|
||||
"src/borg/hashindex.c"
|
||||
"src/borg/item.c"
|
||||
"src/borg/platform/darwin.c"
|
||||
"src/borg/platform/freebsd.c"
|
||||
"src/borg/platform/linux.c"
|
||||
"src/borg/platform/posix.c"
|
||||
"src/borg/platform/syncfilerange.c"
|
||||
"src/borg/platform/windows.c"))
|
||||
;; Remove bundled shared libraries.
|
||||
(with-directory-excursion "src/borg/algorithms"
|
||||
(for-each delete-file-recursively
|
||||
(list "lz4" "xxh64" "zstd")))
|
||||
#t))))
|
||||
#~(begin
|
||||
;; Delete files generated by Cython. We used to have a regex that
|
||||
;; created the list of generated files but Borg has added new
|
||||
;; non-generated C files that cause the regex to generate the
|
||||
;; wrong list.
|
||||
(for-each delete-file
|
||||
'("src/borg/algorithms/checksums.c"
|
||||
"src/borg/chunker.c"
|
||||
"src/borg/compress.c"
|
||||
"src/borg/crypto/low_level.c"
|
||||
"src/borg/hashindex.c"
|
||||
"src/borg/item.c"
|
||||
"src/borg/platform/darwin.c"
|
||||
"src/borg/platform/freebsd.c"
|
||||
"src/borg/platform/linux.c"
|
||||
"src/borg/platform/posix.c"
|
||||
"src/borg/platform/syncfilerange.c"
|
||||
"src/borg/platform/windows.c"))
|
||||
;; Remove bundled shared libraries.
|
||||
(with-directory-excursion "src/borg/algorithms"
|
||||
(for-each delete-file-recursively
|
||||
(list "lz4" "xxh64" "zstd")))))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
`(#:modules ((srfi srfi-26) ; for cut
|
||||
(list
|
||||
#:modules '((srfi srfi-26) ; for cut
|
||||
(guix build utils)
|
||||
(guix build python-build-system))
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'set-env
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(let ((openssl (assoc-ref inputs "openssl"))
|
||||
(lz4 (assoc-ref inputs "lz4"))
|
||||
(xxhash (assoc-ref inputs "xxhash"))
|
||||
(zstd (assoc-ref inputs "zstd")))
|
||||
(setenv "BORG_OPENSSL_PREFIX" openssl)
|
||||
(setenv "BORG_LIBLZ4_PREFIX" lz4)
|
||||
(setenv "BORG_LIBXXHASH_PREFIX" xxhash)
|
||||
(setenv "BORG_LIBZSTD_PREFIX" zstd)
|
||||
(setenv "PYTHON_EGG_CACHE" "/tmp")
|
||||
;; The test 'test_return_codes[python]' fails when
|
||||
;; HOME=/homeless-shelter.
|
||||
(setenv "HOME" "/tmp")
|
||||
#t)))
|
||||
;; The tests need to be run after Borg is installed.
|
||||
(delete 'check)
|
||||
(add-after 'install 'check
|
||||
(lambda* (#:key inputs outputs tests? #:allow-other-keys)
|
||||
(when tests?
|
||||
;; Make the installed package available for the test suite.
|
||||
(add-installed-pythonpath inputs outputs)
|
||||
;; The tests should be run in an empty directory.
|
||||
(mkdir-p "tests")
|
||||
(with-directory-excursion "tests"
|
||||
(invoke "py.test" "-v" "--pyargs" "borg.testsuite" "-k"
|
||||
(string-append
|
||||
;; These tests need to write to '/var'.
|
||||
"not test_get_cache_dir "
|
||||
"and not test_get_config_dir "
|
||||
"and not test_get_keys_dir "
|
||||
"and not test_get_security_dir "
|
||||
;; These tests assume there is a root user in '/etc/passwd'.
|
||||
"and not test_access_acl "
|
||||
"and not test_default_acl "
|
||||
"and not test_get_item_uid_gid "
|
||||
"and not test_non_ascii_acl "
|
||||
"and not test_create_content_from_command "
|
||||
"and not test_create_content_from_command_with_failed_command "
|
||||
"and not test_create_stdin "
|
||||
;; We don't need to run benchmarks
|
||||
"and not benchmark "
|
||||
;; These tests assume the kernel supports FUSE.
|
||||
"and not test_fuse "
|
||||
"and not test_fuse_allow_damaged_files "
|
||||
"and not test_mount_hardlinks "
|
||||
"and not test_readonly_mount "
|
||||
"and not test_fuse_versions_view "
|
||||
"and not test_migrate_lock_alive"))))))
|
||||
(add-after 'install 'install-doc
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(man (string-append out "/share/man/man1"))
|
||||
(misc (string-append out "/share/borg/misc")))
|
||||
(for-each (cut install-file <> misc)
|
||||
'("docs/misc/create_chunker-params.txt"
|
||||
"docs/misc/borg-data-flow.png"
|
||||
"docs/misc/internals-picture.txt"
|
||||
"docs/misc/prune-example.txt"))
|
||||
(copy-recursively "docs/man" man))))
|
||||
(add-after 'install-docs 'install-shell-completions
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(etc (string-append out "/etc"))
|
||||
(share (string-append out "/share")))
|
||||
(with-directory-excursion "scripts/shell_completions"
|
||||
(install-file "bash/borg"
|
||||
(string-append etc "/bash_completion.d"))
|
||||
(install-file "zsh/_borg"
|
||||
(string-append share "/zsh/site-functions"))
|
||||
(install-file "fish/borg.fish"
|
||||
(string-append share "/fish/vendor_completions.d")))))))))
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'set-env
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(let ((openssl #$(this-package-input "openssl"))
|
||||
(lz4 #$(this-package-input "lz4"))
|
||||
(xxhash #$(this-package-input "xxhash"))
|
||||
(zstd #$(this-package-input "zstd")))
|
||||
(setenv "BORG_OPENSSL_PREFIX" openssl)
|
||||
(setenv "BORG_LIBLZ4_PREFIX" lz4)
|
||||
(setenv "BORG_LIBXXHASH_PREFIX" xxhash)
|
||||
(setenv "BORG_LIBZSTD_PREFIX" zstd)
|
||||
(setenv "PYTHON_EGG_CACHE" "/tmp")
|
||||
;; The test 'test_return_codes[python]' fails when
|
||||
;; HOME=/homeless-shelter.
|
||||
(setenv "HOME" "/tmp"))))
|
||||
;; The tests need to be run after Borg is installed.
|
||||
(delete 'check)
|
||||
(add-after 'install 'check
|
||||
(lambda* (#:key inputs outputs tests? #:allow-other-keys)
|
||||
(when tests?
|
||||
;; Make the installed package available for the test suite.
|
||||
(add-installed-pythonpath inputs outputs)
|
||||
;; The tests should be run in an empty directory.
|
||||
(mkdir-p "tests")
|
||||
(with-directory-excursion "tests"
|
||||
(invoke "py.test" "-v" "--pyargs" "borg.testsuite" "-k"
|
||||
(string-append
|
||||
;; These tests need to write to '/var'.
|
||||
"not test_get_cache_dir "
|
||||
"and not test_get_config_dir "
|
||||
"and not test_get_keys_dir "
|
||||
"and not test_get_security_dir "
|
||||
;; These tests assume there is a root user in '/etc/passwd'.
|
||||
"and not test_access_acl "
|
||||
"and not test_default_acl "
|
||||
"and not test_get_item_uid_gid "
|
||||
"and not test_non_ascii_acl "
|
||||
"and not test_create_content_from_command "
|
||||
"and not test_create_content_from_command_with_failed_command "
|
||||
"and not test_create_stdin "
|
||||
;; We don't need to run benchmarks
|
||||
"and not benchmark "
|
||||
;; These tests assume the kernel supports FUSE.
|
||||
"and not test_fuse "
|
||||
"and not test_fuse_allow_damaged_files "
|
||||
"and not test_mount_hardlinks "
|
||||
"and not test_readonly_mount "
|
||||
"and not test_fuse_versions_view "
|
||||
"and not test_migrate_lock_alive"))))))
|
||||
(add-after 'install 'install-doc
|
||||
(lambda _
|
||||
(let ((man (string-append #$output "/share/man/man1"))
|
||||
(misc (string-append #$output "/share/borg/misc")))
|
||||
(for-each (cut install-file <> misc)
|
||||
'("docs/misc/create_chunker-params.txt"
|
||||
"docs/misc/borg-data-flow.png"
|
||||
"docs/misc/internals-picture.txt"
|
||||
"docs/misc/prune-example.txt"))
|
||||
(copy-recursively "docs/man" man))))
|
||||
(add-after 'install-docs 'install-shell-completions
|
||||
(lambda _
|
||||
(let ((etc (string-append #$output "/etc"))
|
||||
(share (string-append #$output "/share")))
|
||||
(with-directory-excursion "scripts/shell_completions"
|
||||
(install-file "bash/borg"
|
||||
(string-append etc "/bash_completion.d"))
|
||||
(install-file "zsh/_borg"
|
||||
(string-append share "/zsh/site-functions"))
|
||||
(install-file "fish/borg.fish"
|
||||
(string-append share "/fish/vendor_completions.d")))))))))
|
||||
(native-inputs
|
||||
(list python-cython python-dateutil python-setuptools-scm python-pytest))
|
||||
(inputs
|
||||
@@ -745,8 +743,8 @@ detection, and lossless compression.")
|
||||
;; FUSE 3 isn't working well, so we stick with FUSE 2 for now:
|
||||
;; <https://issues.guix.gnu.org/53407>
|
||||
python-llfuse
|
||||
`(,zstd "lib")
|
||||
xxhash))
|
||||
xxhash
|
||||
`(,zstd "lib")))
|
||||
(synopsis "Deduplicated, encrypted, authenticated and compressed backups")
|
||||
(description "Borg is a deduplicating backup program. Optionally, it
|
||||
supports compression and authenticated encryption. The main goal of Borg is to
|
||||
@@ -1029,7 +1027,7 @@ precious backup space.
|
||||
(arguments
|
||||
`(#:tests? #f)) ;no test
|
||||
(inputs
|
||||
(list lzo libressl protobuf xz zlib))
|
||||
(list lzo libressl protobuf-3.6 xz zlib))
|
||||
(home-page "http://zbackup.org")
|
||||
(synopsis "Versatile deduplicating backup tool")
|
||||
(description
|
||||
@@ -1081,14 +1079,14 @@ interactive mode.")
|
||||
(define-public btrbk
|
||||
(package
|
||||
(name "btrbk")
|
||||
(version "0.32.2")
|
||||
(version "0.32.5")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://digint.ch/download/btrbk/releases/"
|
||||
"btrbk-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0gi0j09fm4pgw3dq0z27lkpyvrs3ssyqg9b46v5ba794z63w753z"))))
|
||||
"1d4zqf5klad55gdzzldipsjrhpprixzjmn03g66df5h2d28l1zpi"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
(list
|
||||
|
||||
+59
-4
@@ -21,6 +21,7 @@
|
||||
;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
|
||||
;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
;;; Copyright © 2022 zamfofex <zamfofex@twdb.moe>
|
||||
;;; Copyright © 2022 John Kehayias <john.kehayias@protonmail.com>
|
||||
;;;
|
||||
;;; 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")
|
||||
(string-append bin "/fgrep"))
|
||||
(("^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")
|
||||
(description
|
||||
"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")))))
|
||||
(modules '((guix build utils)))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:make-flags ,(if (hurd-target?)
|
||||
''("XFAIL_TESTS=test-perror2")
|
||||
''())))
|
||||
(synopsis "Stream editor")
|
||||
(native-inputs (list perl)) ;for tests
|
||||
(description
|
||||
@@ -209,6 +229,8 @@ implementation offers several extensions over the standard utility.")
|
||||
",!concatenated incremental archives (renames)"
|
||||
",!renamed directory containing subdirectories"
|
||||
",!renamed subdirectories"
|
||||
",!chained renames"
|
||||
",!Directory"
|
||||
"'")))
|
||||
'())
|
||||
#:phases (modify-phases %standard-phases
|
||||
@@ -280,6 +302,10 @@ differences.")
|
||||
"1v4g8gi0lgakqa7iix8s4fq7lq6l92vw3rjd9wfd2rhjng8xggd6"))
|
||||
(patches (search-patches "diffutils-fix-signal-processing.patch"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:make-flags ,(if (hurd-target?)
|
||||
''("XFAIL_TESTS=test-perror2 large-subopt")
|
||||
''())))
|
||||
(native-inputs (list perl))
|
||||
(synopsis "Comparing and merging files")
|
||||
(description
|
||||
@@ -314,7 +340,10 @@ interactive means to merge two files.")
|
||||
(substitute* '("tests/xargs/verbose-quote.sh"
|
||||
"tests/find/exec-plus-last-file.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")
|
||||
(description
|
||||
"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/pwd-long.sh"
|
||||
" tests/split/fail.sh"
|
||||
|
||||
;; /hurd/fifo issue:
|
||||
;; <https://issues.guix.gnu.org/58803>.
|
||||
" tests/df/unreadable.sh"
|
||||
|
||||
;; Gnulib tests.
|
||||
" test-fdutimensat"
|
||||
" test-futimens"
|
||||
" test-linkat"
|
||||
" test-perror2"
|
||||
" test-renameat"
|
||||
" test-renameatu"
|
||||
" test-tls"
|
||||
" test-utimensat")))
|
||||
'())
|
||||
#:phases (modify-phases %standard-phases
|
||||
@@ -391,7 +426,13 @@ used to apply commands with arbitrarily long arguments.")
|
||||
,@(if (hurd-target?)
|
||||
'((substitute* "Makefile.in"
|
||||
;; 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"
|
||||
;; fails on filesystems where inotify cannot be used,
|
||||
@@ -975,6 +1016,20 @@ with the Linux kernel.")
|
||||
(license lgpl2.0+)
|
||||
(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
|
||||
;; the old format (which the new libc cannot cope with.)
|
||||
(define-public glibc-2.32
|
||||
|
||||
@@ -466,8 +466,7 @@ you to call routines in shared libraries from within Bash.")
|
||||
(lambda _
|
||||
(substitute* "ble.pp"
|
||||
(("PATH=/bin:/usr/bin readlink")
|
||||
(search-input-file %build-inputs
|
||||
"/bin/readlink")))))
|
||||
"readlink"))))
|
||||
(delete 'configure) ;no configure
|
||||
(add-before 'check 'use-LANG-for-tests
|
||||
(lambda _
|
||||
|
||||
@@ -27,8 +27,8 @@
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages java)
|
||||
#:use-module (gnu packages textutils)
|
||||
#:use-module (gnu packages xml))
|
||||
#:use-module (gnu packages java-xml)
|
||||
#:use-module (gnu packages textutils))
|
||||
|
||||
(define-public java-w3c-smil-3.0
|
||||
(package
|
||||
|
||||
@@ -11,6 +11,7 @@
|
||||
;;; Copyright © 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
;;; Copyright © 2020 Greg Hogan <code@greghogan.com>
|
||||
;;; Copyright © 2021 Arun Isaac <arunisaac@systemreboot.net>
|
||||
;;; Copyright © 2022 Tomasz Jeneralczyk <tj@schwi.pl>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -36,6 +37,7 @@
|
||||
#:use-module (guix build-system cmake)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system python)
|
||||
#:use-module (guix build-system meson)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages autotools)
|
||||
#:use-module (gnu packages base)
|
||||
@@ -46,6 +48,9 @@
|
||||
#:use-module (gnu packages databases)
|
||||
#:use-module (gnu packages docbook)
|
||||
#: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 lua)
|
||||
#:use-module (gnu packages maths)
|
||||
@@ -60,6 +65,8 @@
|
||||
#:use-module (gnu packages python-web)
|
||||
#:use-module (gnu packages python-xyz)
|
||||
#:use-module (gnu packages qt)
|
||||
#:use-module (gnu packages vulkan)
|
||||
#:use-module (gnu packages xorg)
|
||||
#:use-module (gnu packages xml)
|
||||
#:use-module (ice-9 match))
|
||||
|
||||
@@ -72,14 +79,14 @@
|
||||
(define-public fio
|
||||
(package
|
||||
(name "fio")
|
||||
(version "3.31")
|
||||
(version "3.33")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://brick.kernel.dk/snaps/"
|
||||
"fio-" version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"03x0n18f2wsyjh6qv57kvgqcwga54rzngwzr6fzlrjsalqw7mxlp"))))
|
||||
"083c1w8jqkvyw7wcy69142inlikzmk1k78mk973rnqdp3a7798qb"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
(list #:modules
|
||||
@@ -693,3 +700,46 @@ user-provided Lua scripts.
|
||||
@item
|
||||
@end itemize")
|
||||
(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+))))
|
||||
|
||||
+3087
-856
File diff suppressed because it is too large
Load Diff
+2175
-738
File diff suppressed because it is too large
Load Diff
+1050
-499
File diff suppressed because it is too large
Load Diff
@@ -313,7 +313,8 @@ or false to signal an error."
|
||||
(%current-system))))
|
||||
"Return the name of Glibc's dynamic linker for SYSTEM."
|
||||
;; 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
|
||||
((platform? platform)
|
||||
(platform-glibc-dynamic-linker platform))
|
||||
|
||||
+58
-76
@@ -1,5 +1,6 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2022 Christopher Rodriguez <yewscion@gmail.com>
|
||||
;;; Copyright © 2022 Liliana Marie Prikler <liliana.prikler@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -32,7 +33,6 @@
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages llvm)
|
||||
#:use-module (gnu packages java)
|
||||
#:use-module (gnu packages linux)
|
||||
#:use-module (gnu packages compression))
|
||||
|
||||
(define-public dbqn
|
||||
@@ -54,7 +54,6 @@
|
||||
(arguments
|
||||
(list
|
||||
#:imported-modules `(,@%gnu-build-system-modules
|
||||
(guix build syscalls)
|
||||
(guix build ant-build-system))
|
||||
#:modules `((guix build gnu-build-system)
|
||||
((guix build ant-build-system)
|
||||
@@ -92,9 +91,8 @@
|
||||
(dest-jar (string-append out "/share/java")))
|
||||
(mkdir-p dest-bin)
|
||||
(mkdir-p dest-jar)
|
||||
(copy-recursively "BQN"
|
||||
(string-append dest-bin
|
||||
"/dbqn"))
|
||||
(rename-file "BQN" "dbqn")
|
||||
(install-file "dbqn" dest-bin)
|
||||
(install-file "BQN.jar" dest-jar)
|
||||
(substitute* (string-append dest-bin "/dbqn")
|
||||
(("BQN.jar")
|
||||
@@ -114,7 +112,7 @@ the same author.")
|
||||
;; Aside from dbqn above, the main bqn repository is used by other
|
||||
;; implementations as a "known good" set of sources. CBQN uses dbqn to
|
||||
;; generate an intermediate bytecode for its own compilation.
|
||||
(let ((commit "e219af48401473a7bac49bdd8b89d69082cf5dd8"))
|
||||
(let ((commit "71ce36141aaacfa714edca2e408ca522a3bc5554"))
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
@@ -122,14 +120,14 @@ the same author.")
|
||||
(commit commit)))
|
||||
(file-name (git-file-name "bqn-sources" commit))
|
||||
(sha256
|
||||
(base32 "0r6pa9lscl2395g4xlvmg90vpdsjzhin4f1r0s7brymmpvmns2yc")))))
|
||||
(base32 "060a3r5m7hynzxj4iz1av2kj5jf8w3j8yswzzx9wkx31rdrsiv2c")))))
|
||||
|
||||
(define cbqn-bootstrap
|
||||
(let* ((revision "1")
|
||||
(commit "9c1cbdc99863b1da0116df61cd832137b196dc5c"))
|
||||
(let* ((revision "2")
|
||||
(commit "66584ce1491d300746963b8ed17170348b2a03e6"))
|
||||
(package
|
||||
(name "cbqn-bootstrap")
|
||||
(version (git-version "0" "1" commit))
|
||||
(version (git-version "0" revision commit))
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
@@ -138,25 +136,27 @@ the same author.")
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0w38fhwf20drkyijy6nfnhmc5g5gw0zmzgmy1q605x57znlj85a2"))))
|
||||
"13gg96aa56b8k08bjvv8i0f5nxrah2sij7g6pg7i21fdv08rd9iv"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
(list #:tests? #f ;skipping tests for bootstrap
|
||||
#:phases #~(modify-phases %standard-phases
|
||||
(delete 'configure)
|
||||
(add-before 'build 'generate-bytecode
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(system (string-append #+dbqn
|
||||
"/bin/dbqn ./genRuntime "
|
||||
#+bqn-sources))))
|
||||
(replace 'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(mkdir-p (string-append #$output "/bin"))
|
||||
(chmod "BQN" #o755)
|
||||
(copy-recursively "BQN"
|
||||
(string-append #$output
|
||||
"/bin/bqn")))))))
|
||||
(native-inputs (list dbqn clang-toolchain bqn-sources))
|
||||
(list
|
||||
#:tests? #f ; skipping tests for bootstrap
|
||||
#:make-flags #~(list (string-append "CC=" #$(cc-for-target)))
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(delete 'configure)
|
||||
(add-before 'build 'generate-bytecode
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(system (string-append #+dbqn
|
||||
"/bin/dbqn ./genRuntime "
|
||||
#+bqn-sources))))
|
||||
(replace 'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(mkdir-p (string-append #$output "/bin"))
|
||||
(chmod "BQN" #o755)
|
||||
(rename-file "BQN" "bqn")
|
||||
(install-file "bqn" (string-append #$output "/bin")))))))
|
||||
(native-inputs (list dbqn bqn-sources))
|
||||
(inputs (list icedtea-8 libffi))
|
||||
(synopsis "BQN implementation in C")
|
||||
(description "This package provides the reference implementation of
|
||||
@@ -165,60 +165,42 @@ by APL.")
|
||||
(home-page "https://mlochbaum.github.io/BQN/")
|
||||
(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
|
||||
(package
|
||||
(inherit cbqn-bootstrap)
|
||||
(name "cbqn")
|
||||
(outputs '("out" "lib"))
|
||||
(arguments
|
||||
(list #:make-flags '(list "shared-o3" "o3n-singeli")
|
||||
#:phases #~(modify-phases %standard-phases
|
||||
(delete 'configure)
|
||||
(add-before 'build 'link-singeli
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(symlink #+singeli-sources "Singeli")))
|
||||
(add-before 'build 'generate-bytecode
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(system (string-append #+dbqn
|
||||
"/bin/dbqn ./genRuntime "
|
||||
#+bqn-sources))))
|
||||
(replace 'check
|
||||
(lambda* (#:key inputs tests? #:allow-other-keys)
|
||||
(when tests?
|
||||
(system (string-append "./BQN -M 1000 \""
|
||||
#+bqn-sources
|
||||
"/test/this.bqn\""))
|
||||
(map (lambda (x)
|
||||
(system (string-append "./BQN ./test/" x
|
||||
".bqn")))
|
||||
'("cmp" "equal" "copy" "random"))
|
||||
(system "make -C test/ffi"))))
|
||||
(replace 'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((bin (string-append (assoc-ref outputs
|
||||
"out")
|
||||
"/bin"))
|
||||
(lib (string-append (assoc-ref outputs
|
||||
"lib")
|
||||
"/lib")))
|
||||
(mkdir-p bin)
|
||||
(copy-recursively "BQN"
|
||||
(string-append bin "/bqn"))
|
||||
(install-file "libcbqn.so" lib)))))))
|
||||
(substitute-keyword-arguments (strip-keyword-arguments
|
||||
(list #:tests?)
|
||||
(package-arguments cbqn-bootstrap))
|
||||
((#:make-flags flags #~(list))
|
||||
#~(cons* "shared-o3" "o3" #$flags))
|
||||
((#:phases phases #~%standard-phases)
|
||||
#~(modify-phases #$phases
|
||||
(replace 'check
|
||||
(lambda* (#:key inputs tests? #:allow-other-keys)
|
||||
(when tests?
|
||||
(system (string-append "./BQN -M 1000 \""
|
||||
#+bqn-sources
|
||||
"/test/this.bqn\""))
|
||||
(map (lambda (x)
|
||||
(system (string-append "./BQN ./test/" x
|
||||
".bqn")))
|
||||
'("cmp" "equal" "copy" "random"))
|
||||
(system "make -C test/ffi"))))
|
||||
(replace 'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((bin (string-append (assoc-ref outputs "out")
|
||||
"/bin"))
|
||||
(lib (string-append (assoc-ref outputs "lib")
|
||||
"/lib")))
|
||||
(mkdir-p bin)
|
||||
(rename-file "BQN" "bqn")
|
||||
(install-file "bqn" bin)
|
||||
(install-file "libcbqn.so" lib))))))))
|
||||
(native-inputs (list dbqn
|
||||
bqn-sources
|
||||
singeli-sources
|
||||
libffi
|
||||
clang-toolchain
|
||||
linux-libre-headers))))
|
||||
libffi))
|
||||
(properties
|
||||
`((tunable? . #t)))))
|
||||
|
||||
@@ -51,7 +51,7 @@ supported content to the Kodi media center.")
|
||||
(define ublock-origin
|
||||
(package
|
||||
(name "ublock-origin")
|
||||
(version "1.44.2")
|
||||
(version "1.45.2")
|
||||
(home-page "https://github.com/gorhill/uBlock")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
@@ -62,7 +62,7 @@ supported content to the Kodi media center.")
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0hci19wv5sj4vph8k24bmcz7q74y1adyykwijqyga4p7h68jklw1"))))
|
||||
"0dz1rcphm8cbc2qdd41ahbsqskmqcf2ja6zx0vq0dswnakpc3lyd"))))
|
||||
(build-system gnu-build-system)
|
||||
(outputs '("xpi" "firefox" "chromium"))
|
||||
(arguments
|
||||
|
||||
+285
-43
@@ -14,6 +14,7 @@
|
||||
;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2021 qblade <qblade@protonmail.com>
|
||||
;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
;;; Copyright © 2022 Juliana Sims <jtsims@protonmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -31,6 +32,7 @@
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages build-tools)
|
||||
#:use-module (ice-9 optargs)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (guix packages)
|
||||
@@ -38,20 +40,28 @@
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix git-download)
|
||||
#:use-module (guix build-system cmake)
|
||||
#:use-module (guix build-system copy)
|
||||
#:use-module (guix modules)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages adns)
|
||||
#:use-module (gnu packages autotools)
|
||||
#:use-module (gnu packages base)
|
||||
#:use-module (gnu packages bash)
|
||||
#:use-module (gnu packages check)
|
||||
#:use-module (gnu packages code)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages cpp)
|
||||
#:use-module (gnu packages cppi)
|
||||
#:use-module (gnu packages elf)
|
||||
#:use-module (gnu packages gcc)
|
||||
#:use-module (gnu packages linux)
|
||||
#:use-module (gnu packages lisp)
|
||||
#:use-module (gnu packages logging)
|
||||
#:use-module (gnu packages lua)
|
||||
#:use-module (gnu packages ninja)
|
||||
#:use-module (gnu packages package-management)
|
||||
#:use-module (gnu packages pcre)
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages pretty-print)
|
||||
#:use-module (gnu packages protobuf)
|
||||
@@ -64,6 +74,7 @@
|
||||
#:use-module (gnu packages rpc)
|
||||
#:use-module (gnu packages sqlite)
|
||||
#:use-module (gnu packages tls)
|
||||
#:use-module (gnu packages unicode)
|
||||
#:use-module (gnu packages version-control)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system python))
|
||||
@@ -134,13 +145,13 @@ makes a few sacrifices to acquire fast full and incremental build times.")
|
||||
(invoke "ctest")))))))
|
||||
(inputs
|
||||
`(("c-ares" ,c-ares)
|
||||
("fmt" ,fmt)
|
||||
("fmt" ,fmt-8)
|
||||
("grpc" ,grpc)
|
||||
("json-modern-cxx" ,json-modern-cxx)
|
||||
("protobuf" ,protobuf)
|
||||
("python" ,python-wrapper)
|
||||
("re2" ,re2)
|
||||
("spdlog" ,spdlog)))
|
||||
("spdlog" ,spdlog-1.10)))
|
||||
(native-inputs
|
||||
`(("abseil-cpp" ,abseil-cpp)
|
||||
("googletest" ,googletest)
|
||||
@@ -203,8 +214,8 @@ programs and other files depend.")
|
||||
(license license:bsd-3)))
|
||||
|
||||
(define-public gn
|
||||
(let ((commit "e327ffdc503815916db2543ec000226a8df45163")
|
||||
(revision "1819")) ;as returned by `git describe`, used below
|
||||
(let ((commit "1c4151ff5c1d6fbf7fa800b8d4bb34d3abc03a41")
|
||||
(revision "2072")) ;as returned by `git describe`, used below
|
||||
(package
|
||||
(name "gn")
|
||||
(version (git-version "0.0" revision commit))
|
||||
@@ -214,49 +225,56 @@ programs and other files depend.")
|
||||
(uri (git-reference (url home-page) (commit commit)))
|
||||
(sha256
|
||||
(base32
|
||||
"0kvlfj3www84zp1vmxh76x8fdjm9hyk8lkh2vdsidafpmm75fphr"))
|
||||
"02621c9nqpr4pwcapy31x36l5kbyd0vdgd0wdaxj5p8hrxk67d6b"))
|
||||
(file-name (git-file-name name version))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:phases (modify-phases %standard-phases
|
||||
(add-before 'configure 'set-build-environment
|
||||
(lambda _
|
||||
(setenv "CC" "gcc") (setenv "CXX" "g++")
|
||||
(setenv "AR" "ar")))
|
||||
(replace 'configure
|
||||
(lambda _
|
||||
(invoke "python" "build/gen.py"
|
||||
"--no-last-commit-position")))
|
||||
(add-after 'configure 'create-last-commit-position
|
||||
(lambda _
|
||||
;; Create "last_commit_position.h" to avoid a dependency
|
||||
;; on 'git' (and the checkout..).
|
||||
(call-with-output-file "out/last_commit_position.h"
|
||||
(lambda (port)
|
||||
(format port
|
||||
(string-append
|
||||
"#define LAST_COMMIT_POSITION_NUM ~a\n"
|
||||
"#define LAST_COMMIT_POSITION \"~a (~a)\"\n")
|
||||
,revision ,revision ,(string-take commit 8))))))
|
||||
(replace 'build
|
||||
(lambda _
|
||||
(invoke "ninja" "-C" "out" "gn"
|
||||
"-j" (number->string (parallel-job-count)))))
|
||||
(replace 'check
|
||||
(lambda* (#:key tests? #:allow-other-keys)
|
||||
(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* (#:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
(install-file "out/gn" (string-append out "/bin"))))))))
|
||||
(list #:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-before 'configure 'set-build-environment
|
||||
(lambda _
|
||||
(setenv "CC" "gcc")
|
||||
(setenv "CXX" "g++")
|
||||
(setenv "AR" "ar")))
|
||||
(replace 'configure
|
||||
(lambda _
|
||||
(invoke "python" "build/gen.py"
|
||||
"--no-last-commit-position")))
|
||||
(add-after 'configure 'create-last-commit-position
|
||||
(lambda _
|
||||
;; Mimic GenerateLastCommitPosition from gen.py.
|
||||
(call-with-output-file "out/last_commit_position.h"
|
||||
(lambda (port)
|
||||
(format port
|
||||
"// Generated by Guix.
|
||||
|
||||
#ifndef OUT_LAST_COMMIT_POSITION_H_
|
||||
#define OUT_LAST_COMMIT_POSITION_H_
|
||||
|
||||
#define LAST_COMMIT_POSITION_NUM ~a
|
||||
#define LAST_COMMIT_POSITION \"~a (~a)\"
|
||||
|
||||
#endif // OUT_LAST_COMMIT_POSITION_H_
|
||||
"
|
||||
#$revision #$revision
|
||||
#$(string-take commit 12))))))
|
||||
(replace 'build
|
||||
(lambda _
|
||||
(invoke "ninja" "-C" "out" "gn"
|
||||
"-j" (number->string (parallel-job-count)))))
|
||||
(replace 'check
|
||||
(lambda* (#:key tests? #:allow-other-keys)
|
||||
(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
|
||||
`(("ninja" ,ninja)
|
||||
("python" ,python-wrapper)))
|
||||
(list ninja python-wrapper))
|
||||
(synopsis "Generate Ninja build files")
|
||||
(description
|
||||
"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.
|
||||
@end itemize")
|
||||
(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 can’t 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")))
|
||||
|
||||
@@ -35,7 +35,7 @@
|
||||
(define-public busybox
|
||||
(package
|
||||
(name "busybox")
|
||||
(version "1.34.1")
|
||||
(version "1.35.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
@@ -43,7 +43,7 @@
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"0jfm9fik7nv4w21zqdg830pddgkdjmplmna9yjn9ck1lwn4vsps1"))))
|
||||
"1556hfgw32xf226dd138gfq0z1zf4r3f8naa9wrqld2sqd2b5vps"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
(list #:phases
|
||||
|
||||
+124
-6
@@ -41,6 +41,7 @@
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix git-download)
|
||||
#:use-module (guix build-system cmake)
|
||||
#:use-module (guix build-system copy)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system python)
|
||||
#:use-module (guix build-system trivial)
|
||||
@@ -55,6 +56,7 @@
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages texinfo)
|
||||
#:use-module (gnu packages guile)
|
||||
#:use-module (gnu packages llvm)
|
||||
#:use-module (gnu packages lua)
|
||||
#:use-module (gnu packages multiprecision)
|
||||
#:use-module (gnu packages pcre)
|
||||
@@ -67,6 +69,45 @@
|
||||
#:use-module (gnu packages web)
|
||||
#: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
|
||||
(let ((commit "70fe9ef1810cc6c05bde9eb0970363c35fa7e802")
|
||||
(revision "1"))
|
||||
@@ -384,14 +425,14 @@ whose behaviour is inconsistent across *NIX flavours.")
|
||||
(define-public libhx
|
||||
(package
|
||||
(name "libhx")
|
||||
(version "4.3")
|
||||
(version "4.9")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://inai.de/files/libhx/"
|
||||
"libHX-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32 "06zkzaya6j3vaafz80qcgn5qcri047003bhmjisv5sbikcw97jqy"))))
|
||||
(base32 "16rwp8b2j8l0m27rffvb7ma350r79l611sa135hzfywkdli2bqh2"))))
|
||||
(build-system gnu-build-system)
|
||||
(home-page "https://inai.de/projects/libhx/")
|
||||
(synopsis "C library with common data structures and functions")
|
||||
@@ -719,7 +760,7 @@ portability.")
|
||||
(define-public byacc
|
||||
(package
|
||||
(name "byacc")
|
||||
(version "20220128")
|
||||
(version "20221106")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
@@ -727,7 +768,7 @@ portability.")
|
||||
version ".tgz"))
|
||||
(sha256
|
||||
(base32
|
||||
"173l5pdzgqk2ld6lf0ablii0iiw07sry2vrjfrm4wc99qmf81ha2"))))
|
||||
"04lxggjarbidfq8ba5q6kwgqys4lhidbnz8gf3vrrb5wgcibx6d8"))))
|
||||
(build-system gnu-build-system)
|
||||
(home-page "https://invisible-island.net/byacc/byacc.html")
|
||||
(synopsis "Berkeley Yacc LALR parser generator")
|
||||
@@ -1087,7 +1128,7 @@ Telemetry Transport (MQTT) publish-subscribe messaging protocol.")
|
||||
(define-public mimalloc
|
||||
(package
|
||||
(name "mimalloc")
|
||||
(version "2.0.6")
|
||||
(version "2.0.9")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
@@ -1096,7 +1137,7 @@ Telemetry Transport (MQTT) publish-subscribe messaging protocol.")
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"05x2dl3zimflfj91ns3vrphmzpdlyyr230p9adqgfds101f16qmv"))))
|
||||
"19w0i28p6knjd192rrcw1ayc3x0qp6rcm48cwkls4kwn8fng81fj"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
`(#:build-type "Release"))
|
||||
@@ -1126,6 +1167,7 @@ Telemetry Transport (MQTT) publish-subscribe messaging protocol.")
|
||||
("ppc64" => "ppc64")
|
||||
("ppc" => "ppc")
|
||||
("s390x" => "s390x")
|
||||
("riscv64" => "riscv64")
|
||||
("sparc64" => "sparcv9"))))
|
||||
|
||||
(define-public ck
|
||||
@@ -1182,6 +1224,82 @@ performance concurrent systems developed in C99+.")
|
||||
(license (list license:bsd-2 ;everything except...
|
||||
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
|
||||
;; The latest tag is used as there is no release.
|
||||
(let ((commit "500d4ea9f4c3449e5243c088d8af8700f7189734")
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user