forked from tribes/guix
Compare commits
10 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 3bccc5edac | |||
| b446a604b4 | |||
| eb8eba95da | |||
| de340bd1f2 | |||
| 18c10b055e | |||
| ba6390df42 | |||
| 09763444ce | |||
| 947c4a1689 | |||
| 22a9dc1b79 | |||
| 3e480b17c7 |
@@ -68,7 +68,6 @@
|
||||
(eval . (put 'with-derivation-substitute 'scheme-indent-function 2))
|
||||
(eval . (put 'with-status-report 'scheme-indent-function 1))
|
||||
(eval . (put 'with-status-verbosity 'scheme-indent-function 1))
|
||||
(eval . (put 'with-build-handler 'scheme-indent-function 1))
|
||||
|
||||
(eval . (put 'mlambda 'scheme-indent-function 1))
|
||||
(eval . (put 'mlambdaq 'scheme-indent-function 1))
|
||||
@@ -84,7 +83,6 @@
|
||||
(eval . (put 'wrap-program 'scheme-indent-function 1))
|
||||
(eval . (put 'with-imported-modules 'scheme-indent-function 1))
|
||||
(eval . (put 'with-extensions 'scheme-indent-function 1))
|
||||
(eval . (put 'with-parameters 'scheme-indent-function 1))
|
||||
|
||||
(eval . (put 'with-database 'scheme-indent-function 2))
|
||||
(eval . (put 'call-with-transaction 'scheme-indent-function 2))
|
||||
|
||||
@@ -71,7 +71,6 @@
|
||||
/etc/guix-daemon.service
|
||||
/etc/guix-publish.conf
|
||||
/etc/guix-publish.service
|
||||
/etc/init.d/guix-daemon
|
||||
/guix-daemon
|
||||
/guix/config.scm
|
||||
/libformat.a
|
||||
@@ -138,7 +137,6 @@
|
||||
/test-env
|
||||
/test-tmp
|
||||
/tests/*.trs
|
||||
/tests/services/*.trs
|
||||
GPATH
|
||||
GRTAGS
|
||||
GTAGS
|
||||
|
||||
@@ -6,7 +6,6 @@ Al McElrath <hello@yrns.org> <hello@atonesir.com>
|
||||
Alex Sassmannshausen <alex@pompo.co> <alex.sassmannshausen@gmail.com>
|
||||
Alexander I. Grafov <grafov@gmail.com>
|
||||
Alírio Eyng <alirioeyng@gmail.com>
|
||||
Amin Bandali <bandali@gnu.org> <mab@gnu.org>
|
||||
Amirouche Boubekki <amirouche@hypermove.net>
|
||||
Andreas Enge <andreas@enge.fr> <andreas.enge@inria.fr>
|
||||
Andreas Enge <andreas@enge.fr> <privat@xobs-novena>
|
||||
@@ -30,7 +29,6 @@ Eric Dvorsak <eric@dvorsak.fr> <yenda1@gmail.com>
|
||||
George Clemmer <myglc2@gmail.com>
|
||||
ison <ison@airmail.cc> <ison111@protonmail.com>
|
||||
Ivan Vilata i Balaguer <ivan@selidor.net>
|
||||
Jakob L. Kreuze <zerodaysfordays@sdf.org> <zerodaysfordays@sdf.lonestar.org>
|
||||
Jeff Mickey <j@codemac.net> <jm@igneous.io>
|
||||
John Darrington <jmd@gnu.org> <john@darrington.wattle.id.au>
|
||||
John J. Foerch <jjfoerch@earthlink.net>
|
||||
|
||||
@@ -17,4 +17,58 @@ See the manual for useful hacking informations, either by running
|
||||
|
||||
info -f doc/guix.info "Contributing"
|
||||
|
||||
or by checking the [[https://guix.gnu.org/manual/devel/en/html_node/Contributing.html][web copy of the manual]].
|
||||
or by checking the [[http://www.gnu.org/software/guix/manual/guix.html#Contributing][web copy of the manual]].
|
||||
|
||||
* Commit Access
|
||||
|
||||
For frequent contributors, having write access to the repository is
|
||||
convenient. When you deem it necessary, feel free to ask for it on the
|
||||
mailing list. When you get commit access, please make sure to follow the
|
||||
policy below (discussions of the policy can take place on guix-devel@gnu.org.)
|
||||
|
||||
Non-trivial patches should always be posted to guix-patches@gnu.org (trivial
|
||||
patches include fixing typos, etc.). This mailing list fills the
|
||||
patch-tracking database at [[https://bugs.gnu.org/guix-patches]]; see
|
||||
"Contributing" in the manual for details.
|
||||
|
||||
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
|
||||
(guix-commits@gnu.org), so people can notice. Before pushing your changes,
|
||||
make sure to run ‘git pull --rebase’.
|
||||
|
||||
All commits that are pushed to the central repository on Savannah must be
|
||||
signed with an OpenPGP key, and the public key should be uploaded to your user
|
||||
account on Savannah and to public key servers, such as
|
||||
‘keys.openpgp.org’. To configure Git to automatically sign commits,
|
||||
run:
|
||||
|
||||
git config commit.gpgsign true
|
||||
git config user.signingkey CABBA6EA1DC0FF33
|
||||
|
||||
You can prevent yourself from accidentally pushing unsigned commits to
|
||||
Savannah by using the pre-push Git hook called located at ‘etc/git/pre-push’:
|
||||
|
||||
cp etc/git/pre-push .git/hooks/pre-push
|
||||
|
||||
When pushing a commit on behalf of somebody else, please add a Signed-off-by
|
||||
line at the end of the commit log message (e.g. with ‘git am --signoff’).
|
||||
This improves tracking of who did what.
|
||||
|
||||
For anything else, please post to guix-patches@gnu.org and leave time for a
|
||||
review, without committing anything. 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.
|
||||
|
||||
* Using emacs-debbugs
|
||||
|
||||
Bug reports and patches are tracked using debbugs. If you are on emacs, you
|
||||
can use emacs-debbugs.
|
||||
|
||||
List all open bug reports on guix-patches with
|
||||
|
||||
C-u M-x debbugs-gnu <RET> <RET> guix-patches <RET> n y
|
||||
|
||||
+16
-32
@@ -1,5 +1,5 @@
|
||||
# GNU Guix --- Functional package management for GNU
|
||||
# Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
# Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 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>
|
||||
@@ -122,7 +122,6 @@ MODULES = \
|
||||
guix/build-system/meson.scm \
|
||||
guix/build-system/minify.scm \
|
||||
guix/build-system/asdf.scm \
|
||||
guix/build-system/copy.scm \
|
||||
guix/build-system/glib-or-gtk.scm \
|
||||
guix/build-system/gnu.scm \
|
||||
guix/build-system/guile.scm \
|
||||
@@ -170,7 +169,6 @@ MODULES = \
|
||||
guix/build/go-build-system.scm \
|
||||
guix/build/asdf-build-system.scm \
|
||||
guix/build/bzr.scm \
|
||||
guix/build/copy-build-system.scm \
|
||||
guix/build/git.scm \
|
||||
guix/build/hg.scm \
|
||||
guix/build/glib-or-gtk-build-system.scm \
|
||||
@@ -322,6 +320,7 @@ AUX_FILES = \
|
||||
gnu/packages/aux-files/chromium/master-preferences.json \
|
||||
gnu/packages/aux-files/emacs/guix-emacs.el \
|
||||
gnu/packages/aux-files/linux-libre/5.4-arm.conf \
|
||||
gnu/packages/aux-files/linux-libre/5.4-arm-veyron.conf \
|
||||
gnu/packages/aux-files/linux-libre/5.4-arm64.conf \
|
||||
gnu/packages/aux-files/linux-libre/5.4-i686.conf \
|
||||
gnu/packages/aux-files/linux-libre/5.4-x86_64.conf \
|
||||
@@ -427,7 +426,6 @@ SCM_TESTS = \
|
||||
tests/scripts-build.scm \
|
||||
tests/search-paths.scm \
|
||||
tests/services.scm \
|
||||
tests/services/linux.scm \
|
||||
tests/sets.scm \
|
||||
tests/size.scm \
|
||||
tests/snix.scm \
|
||||
@@ -509,7 +507,9 @@ endif !CAN_RUN_TESTS
|
||||
|
||||
check-system: $(GOBJECTS)
|
||||
$(AM_V_at)$(top_builddir)/pre-inst-env \
|
||||
guix build -m $(top_srcdir)/etc/system-tests.scm -K
|
||||
$(GUILE) --no-auto-compile \
|
||||
-e '(@@ (run-system-tests) run-system-tests)' \
|
||||
$(top_srcdir)/build-aux/run-system-tests.scm
|
||||
|
||||
# Public keys used to sign substitutes.
|
||||
dist_pkgdata_DATA = \
|
||||
@@ -540,8 +540,6 @@ EXTRA_DIST += \
|
||||
scripts/guix.in \
|
||||
etc/guix-install.sh \
|
||||
etc/news.scm \
|
||||
etc/release-manifest.scm \
|
||||
etc/system-tests.scm \
|
||||
build-aux/build-self.scm \
|
||||
build-aux/compile-all.scm \
|
||||
build-aux/hydra/evaluate.scm \
|
||||
@@ -551,6 +549,7 @@ EXTRA_DIST += \
|
||||
build-aux/cuirass/gnu-system.scm \
|
||||
build-aux/cuirass/guix-modular.scm \
|
||||
build-aux/cuirass/hydra-to-cuirass.scm \
|
||||
build-aux/check-available-binaries.scm \
|
||||
build-aux/check-final-inputs-self-contained.scm \
|
||||
build-aux/compile-as-derivation.scm \
|
||||
build-aux/generate-authors.scm \
|
||||
@@ -558,6 +557,7 @@ EXTRA_DIST += \
|
||||
build-aux/test-driver.scm \
|
||||
build-aux/update-guix-package.scm \
|
||||
build-aux/update-NEWS.scm \
|
||||
build-aux/run-system-tests.scm \
|
||||
d3.v3.js \
|
||||
graph.js \
|
||||
tests/test.drv \
|
||||
@@ -662,16 +662,11 @@ AM_DISTCHECK_CONFIGURE_FLAGS = \
|
||||
--enable-daemon \
|
||||
ac_cv_guix_test_root="$(GUIX_TEST_ROOT)"
|
||||
|
||||
# Name of the 'guix' package shipped in the binary tarball.
|
||||
GUIX_FOR_BINARY_TARBALL = guile3.0-guix
|
||||
|
||||
# The self-contained tarball.
|
||||
guix-binary.%.tar.xz:
|
||||
$(AM_V_GEN)GUIX_PACKAGE_PATH= \
|
||||
tarball=`$(top_builddir)/pre-inst-env guix pack -K -C xz \
|
||||
--fallback \
|
||||
-s "$*" --localstatedir --profile-name=current-guix \
|
||||
$(GUIX_FOR_BINARY_TARBALL)` ; \
|
||||
-s "$*" --localstatedir --profile-name=current-guix guix` ; \
|
||||
cp "$$tarball" "$@.tmp" ; mv "$@.tmp" "$@"
|
||||
|
||||
|
||||
@@ -705,16 +700,6 @@ gen-AUTHORS:
|
||||
"$(top_srcdir)" "$(distdir)/AUTHORS"; \
|
||||
fi
|
||||
|
||||
# Like 'dist', but regenerate 'configure' so we get an up-to-date
|
||||
# 'PACKAGE_VERSION' string. (In Gnulib, 'GNUmakefile' has a special trick to
|
||||
# do that whenever a 'dist' target is used.)
|
||||
dist-with-updated-version:
|
||||
@echo "Running './bootstrap' for new version string..."
|
||||
$(top_srcdir)/bootstrap
|
||||
$(MAKE) $(AM_MAKEFLAGS) $(top_srcdir)/.version dist
|
||||
|
||||
.PHONY: dist-with-updated-version
|
||||
|
||||
|
||||
#
|
||||
# Release management.
|
||||
@@ -770,7 +755,7 @@ system_flags = $(foreach system,$(1),-s $(system))
|
||||
#
|
||||
# XXX: Depend on 'dist' rather than 'distcheck' to work around the Gettext
|
||||
# issue described at <https://savannah.gnu.org/bugs/index.php?51027>.
|
||||
release: dist-with-updated-version
|
||||
release: dist
|
||||
cd po; git checkout .
|
||||
@if ! git diff-index --quiet HEAD; then \
|
||||
echo "There are uncommitted changes; stopping." >&2 ; \
|
||||
@@ -784,9 +769,9 @@ release: dist-with-updated-version
|
||||
"`git rev-parse HEAD`" "$(PACKAGE_VERSION)"
|
||||
git add $(top_srcdir)/gnu/packages/package-management.scm
|
||||
git commit -m "gnu: guix: Update to $(PACKAGE_VERSION)."
|
||||
$(top_builddir)/pre-inst-env guix build $(GUIX_FOR_BINARY_TARBALL) \
|
||||
$(top_builddir)/pre-inst-env guix build guix \
|
||||
$(call system_flags,$(SUPPORTED_SYSTEMS)) \
|
||||
-v1 --no-grafts --fallback
|
||||
-v1 --no-grafts -K
|
||||
rm -f $(BINARY_TARBALLS)
|
||||
$(MAKE) $(BINARY_TARBALLS)
|
||||
for system in $(SUPPORTED_SYSTEMS) ; do \
|
||||
@@ -800,12 +785,12 @@ release: dist-with-updated-version
|
||||
git commit -m "gnu: guix: Update to `git rev-parse HEAD | cut -c1-7`."
|
||||
$(top_builddir)/pre-inst-env guix build guix \
|
||||
$(call system_flags,$(GUIX_SYSTEM_SUPPORTED_SYSTEMS)) \
|
||||
-v1 --no-grafts --fallback
|
||||
-v1 --no-grafts -K
|
||||
for system in $(GUIX_SYSTEM_SUPPORTED_SYSTEMS) ; do \
|
||||
image=`$(top_builddir)/pre-inst-env \
|
||||
guix system disk-image \
|
||||
--file-system-type=iso9660 \
|
||||
--system=$$system --fallback \
|
||||
--system=$$system \
|
||||
gnu/system/install.scm` ; \
|
||||
if [ ! -f "$$image" ] ; then \
|
||||
echo "failed to produced Guix installation image for $$system" >&2 ; \
|
||||
@@ -818,7 +803,7 @@ release: dist-with-updated-version
|
||||
for system in $(GUIX_SYSTEM_VM_SYSTEMS) ; do \
|
||||
image=`$(top_builddir)/pre-inst-env \
|
||||
guix system vm-image $(GUIX_SYSTEM_VM_IMAGE_FLAGS) \
|
||||
--system=$$system --fallback \
|
||||
--system=$$system \
|
||||
gnu/system/examples/vm-image.tmpl` ; \
|
||||
if [ ! -f "$$image" ] ; then \
|
||||
echo "failed to produced Guix VM image for $$system" >&2 ; \
|
||||
@@ -865,9 +850,8 @@ assert-no-store-file-names:
|
||||
|
||||
# Make sure important substitutes are available.
|
||||
assert-binaries-available: $(GOBJECTS)
|
||||
$(AM_V_at)$(top_builddir)/pre-inst-env \
|
||||
guix weather -m "$(top_srcdir)/etc/release-manifest.scm" \
|
||||
--display-missing
|
||||
$(AM_V_at)$(top_builddir)/pre-inst-env "$(GUILE)" \
|
||||
"$(top_srcdir)/build-aux/check-available-binaries.scm"
|
||||
|
||||
# Make sure the final inputs don't refer to bootstrap tools.
|
||||
assert-final-inputs-self-contained: $(GOBJECTS)
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
#+TITLE: Guix NEWS – history of user-visible changes
|
||||
#+STARTUP: content hidestars
|
||||
|
||||
Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
Copyright © 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
@@ -11,150 +11,6 @@ Copyright © 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
|
||||
|
||||
Please send Guix bug reports to bug-guix@gnu.org.
|
||||
|
||||
* Changes in 1.1.0 (since 1.0.1)
|
||||
** Package management
|
||||
*** New ‘guix deploy’ command to deploy several machines at once
|
||||
*** Channels can now provide news, viewed with ‘guix pull --news’
|
||||
*** ‘guix system reconfigure’ saves provenance data
|
||||
*** New ‘guix system describe’ command to view system provenance info
|
||||
*** New /run/current-system/{channels,configuration}.scm files
|
||||
*** New ‘guix time-machine’ command
|
||||
*** ‘guix pack’ has a new ‘--entry-point’ option
|
||||
*** ‘guix pack’ saves environment variables for ‘docker’ and ‘singularity’
|
||||
*** ‘guix pack’ provides a meaningful repository name for ‘docker’
|
||||
*** New ‘--target’ option for ‘guix system’
|
||||
*** ‘--no-build-hook’ was renamed to ‘--no-offload’
|
||||
*** ‘--keep-failed’ now implies ‘--no-offload’
|
||||
*** ‘--dry-run’ no longer implies ‘--no-grafts’
|
||||
*** ‘guix import crate’ has a new ‘--recursive’ option
|
||||
*** ‘guix import crate’ can import a specific package version
|
||||
*** ‘guix pull’ returns Guix on Guile 3.0
|
||||
*** ‘guix pull’ and ‘--with-git-url’ can clone repositories over SSH
|
||||
*** ‘--with-commit’ now accepts tags
|
||||
*** ‘guix challenge’ has a new ‘--diff’ option to show differences
|
||||
*** ‘guix weather’ has a new ‘--display-missing’ option
|
||||
*** Guix can now fetch lzip-compressed substitutes in addition to gzip
|
||||
*** ‘guix publish’ supports lzip compression via ‘-C’
|
||||
*** ‘guix lint -c archival’ queries Software Heritage
|
||||
*** ‘guix archive’ has a new ‘-t’ option to list archive contents
|
||||
*** ‘guix describe’ and similar commands emit terminal hyperlinks
|
||||
*** ‘guix build’ now attempts to substitute missing .drv files
|
||||
*** ‘guix package’ etc. now lock the profile they operate on
|
||||
*** ‘guix pull’ honors /etc/guix/channels.scm when it exists
|
||||
*** New ‘guix show’ command, synonymous with ‘guix package --show’
|
||||
*** The ‘--manifest’ option can be repeated to combine manifests
|
||||
*** Some commands previously lacking ‘--load-path’ now support it
|
||||
** Distribution
|
||||
*** The set of pre-built bootstrap “binary seeds” has been halved
|
||||
*** Graphical installer has better support for non-Latin keyboard layouts
|
||||
*** Graphical installer allows users to choose an HTTP/HTTPS proxy
|
||||
*** Graphical installer allows users to edit the system configuration
|
||||
*** New ‘kernel-loadable-modules’ field in ‘operating-system’
|
||||
*** rottlog service is now part of ‘%base-services’
|
||||
*** ‘%base-services’ now includes /usr/bin/env as a “special file”
|
||||
*** ‘herd set-http-proxy guix-daemon URL’ can be used to set a proxy
|
||||
*** ‘qemu-binfmt’ service now supports riscv32 and riscv64
|
||||
*** File system UUIDs and labels are now supported for JFS
|
||||
*** New services
|
||||
|
||||
auditd, fontconfig-file-system, getmail, gnome-keyring, kernel-module-loader,
|
||||
knot-resolver, mumi, nfs, nftables, nix, pagekite, pam-mount, patchwork,
|
||||
polkit-wheel, provenance, pulseaudio, sane, singularity, usb-modeswitch
|
||||
|
||||
*** 3514 new packages
|
||||
|
||||
*** 3368 package updates
|
||||
|
||||
Noteworthy updates:
|
||||
bash 5.0.7, binutils 2.32, cups 2.3.1, emacs 26.3, enlightenment 0.23.1,
|
||||
gcc-toolchain 9.3.0, gdb 9.1, ghc 8.6.5, gimp 2.10.18, glibc 2.29,
|
||||
gnome 3.32.2, gnupg 2.2.20, go 1.13.9, guile 2.2.7,
|
||||
icecat 68.7.0-guix0-preview1, icedtea 3.7.0, julia 1.3.1,
|
||||
libreoffice 6.4.2.2, linux-libre 5.4.31, mate 1.24.0, ocaml 4.09.0,
|
||||
octave 5.2.0, openjdk 12.33, perl 5.30.0, python2 2.7.16, python 3.7.4,
|
||||
racket 7.6, rust 1.39.0, r 3.6.3, sbcl 2.0.3, shepherd 0.7.0, xfce 4.14.0,
|
||||
xorg-server 1.20.7
|
||||
|
||||
** Programming interfaces
|
||||
*** New build systems
|
||||
|
||||
copy-build-system, julia-build-system, node-build-system, qt-build-system
|
||||
|
||||
*** New ‘with-build-handler’ and ‘map/accumulate-builds’ in (guix store)
|
||||
*** (guix gexp) has a new ‘with-parameters’ form
|
||||
*** New (guix remote) module for remote evaluation of gexps
|
||||
*** New ‘eval/container’ procedure in (gnu system linux-container)
|
||||
*** (guix inferior) now reifies exceptions as ‘&inferior-exception’
|
||||
*** (guix cve) uses the new NIST-provided JSON files instead of XML
|
||||
*** New (guix json) module to map JSON objects to Scheme records
|
||||
*** New (gnu installer tests) module to drive the graphical installer
|
||||
*** New (guix diagnostics) module for consistent diagnostic messages
|
||||
*** “Checkers” now live in (guix lint)
|
||||
** Notewothy bug fixes
|
||||
*** Grafts leads to inefficient substitute info retrieval
|
||||
(<https://issues.guix.gnu.org/issue/22990>)
|
||||
*** Grafting prevents build plan from being displayed upfront
|
||||
(https://issues.guix.gnu.org/issue/28310)
|
||||
*** Changing the HTTP/FTP proxy used by the daemon is inconvenient
|
||||
(<https://issues.guix.gnu.org/issue/25569>)
|
||||
*** ‘guix system disk-image’ successfully builds a bad image
|
||||
(<https://issues.guix.gnu.org/issue/34276>)
|
||||
*** Installer cannot be restarted after a failed install
|
||||
(<https://issues.guix.gnu.org/issue/35543>)
|
||||
*** Null pointer error when partitioning with the graphical installer
|
||||
(<https://issues.guix.gnu.org/issue/35858>)
|
||||
*** 'guix upgrade' misdiagnoses upgrades in the presence of propagated inputs
|
||||
(<https://issues.guix.gnu.org/issue/35872>)
|
||||
*** mcron randomly stops running jobs
|
||||
(<https://issues.guix.gnu.org/issue/37237>)
|
||||
*** Mistaken warning "guix pull was never run"
|
||||
(<https://issues.guix.gnu.org/issue/38196>)
|
||||
*** `guix pack --format=squashfs` fails on CentOS7
|
||||
(<https://issues.guix.gnu.org/issue/40043>)
|
||||
*** installer: No way to input Latin characters with non-Latin keyboard layouts
|
||||
(<https://issues.guix.gnu.org/issue/40273>)
|
||||
*** installer: Always add '%base-initrd-modules' to 'initrd-modules'
|
||||
(<https://issues.guix.gnu.org/issue/36099>)
|
||||
*** [MATE] shutdown and reboot not possible from UI
|
||||
(<https://issues.guix.gnu.org/issue/40327>)
|
||||
*** 'guix-daemon' honors %localstatedir, %sysconfdir, and %storedir
|
||||
(<https://issues.guix.gnu.org/issue/35874>)
|
||||
*** Fix ‘GUIX_LOCPATH’ quoting in ‘guix-daemon.service’ (systemd)
|
||||
(<https://issues.guix.gnu.org/issue/36074>)
|
||||
*** Include USB_ModeSwitch in %desktop-services
|
||||
(<https://issues.guix.gnu.org/issue/35640>)
|
||||
*** linux-container: Mount a new /dev/pts instance in the container
|
||||
(<https://issues.guix.gnu.org/issue/36463>)
|
||||
*** system: Write the timezone to /etc/timezone
|
||||
(<https://issues.guix.gnu.org/issue/35746>)
|
||||
*** linux-modules: Define and use a module name database
|
||||
(<https://issues.guix.gnu.org/issue/34902>)
|
||||
*** pack: Create /tmp in Docker images
|
||||
(<https://issues.guix.gnu.org/issue/37161>)
|
||||
*** guix system: Reinstalling the bootloader preserves extra menu entries
|
||||
(<https://issues.guix.gnu.org/issue/36876>)
|
||||
*** system: Add 'mount' and 'umount' to '%setuid-programs'
|
||||
(<https://issues.guix.gnu.org/issue/37569>)
|
||||
*** linux-libre: Try to aggressively gather entropy during boot
|
||||
(<https://issues.guix.gnu.org/issue/37501>)
|
||||
*** daemon: Make 'profiles/per-user' non-world-writable
|
||||
(<https://issues.guix.gnu.org/issue/37744>)
|
||||
*** linux-boot: Don't ignore options when mounting root file system
|
||||
(<https://issues.guix.gnu.org/issue/37977>)
|
||||
*** Files produced by syslogd are no longer world-readable
|
||||
(<https://issues.guix.gnu.org/issue/40405>)
|
||||
|
||||
** Native language support
|
||||
*** Updated translations of the manual
|
||||
|
||||
The manual is fully translated into Spanish, more than 85% complete in French
|
||||
and German, and has preliminary translations into Russian and Chinese.
|
||||
|
||||
*** Updated translations of messages
|
||||
|
||||
This version of Guix is fully translated in Brazilian Portuguese, French,
|
||||
German, and Spanish, and partially translated in 10 other languages.
|
||||
|
||||
* Changes in 1.0.1 (since 1.0.0)
|
||||
** Package management
|
||||
*** The ‘https_proxy’ environment variable is now honored
|
||||
|
||||
@@ -16,7 +16,7 @@ for lang in ${langs}; do
|
||||
fi
|
||||
done
|
||||
langs=`find po/doc -type f -name 'guix-cookbook*.po' \
|
||||
| sed -e 's,guix-cookbook\.,,' \
|
||||
| sed -e 's,guix-manual\.,,' \
|
||||
| xargs -n 1 -I{} basename {} .po`
|
||||
for lang in ${langs}; do
|
||||
if [ ! -e "doc/guix-cookbook.${lang}.texi" ]; then
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2014, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2014, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -286,8 +286,7 @@ interface (FFI) of Guile.")
|
||||
#:select? select?))
|
||||
(gexp->script "compute-guix-derivation"
|
||||
#~(begin
|
||||
(use-modules (ice-9 match)
|
||||
(ice-9 threads))
|
||||
(use-modules (ice-9 match))
|
||||
|
||||
(eval-when (expand load eval)
|
||||
;; (gnu packages …) modules are going to be looked up
|
||||
@@ -408,11 +407,7 @@ files."
|
||||
(major ((store-lift nix-server-major-version)))
|
||||
(minor ((store-lift nix-server-minor-version))))
|
||||
(mbegin %store-monad
|
||||
;; Before 'with-build-handler' was implemented and used, we had to
|
||||
;; explicitly call 'show-what-to-build*'.
|
||||
(munless (module-defined? (resolve-module '(guix store))
|
||||
'with-build-handler)
|
||||
(show-what-to-build* (list build)))
|
||||
(show-what-to-build* (list build))
|
||||
(built-derivations (list build))
|
||||
|
||||
;; Use the port beneath the current store as the stdin of BUILD. This
|
||||
@@ -425,7 +420,6 @@ files."
|
||||
;; $GUILE_LOAD_PATH & co.
|
||||
(with-clean-environment
|
||||
(setenv "GUILE_WARN_DEPRECATED" "no") ;be quiet and drive
|
||||
(setenv "COLUMNS" "120") ;show wider backtraces
|
||||
(when home
|
||||
;; Inherit HOME so that 'xdg-directory' works.
|
||||
(setenv "HOME" home))
|
||||
|
||||
@@ -0,0 +1,78 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;;
|
||||
;;; Check whether important binaries are available.
|
||||
;;;
|
||||
|
||||
(use-modules (guix store)
|
||||
(guix grafts)
|
||||
(guix packages)
|
||||
(guix derivations)
|
||||
(gnu packages)
|
||||
(gnu packages certs)
|
||||
(gnu packages emacs)
|
||||
(gnu packages make-bootstrap)
|
||||
(gnu packages ssh)
|
||||
(srfi srfi-1)
|
||||
(srfi srfi-26)
|
||||
(ice-9 format))
|
||||
|
||||
(define (packages-for-system system)
|
||||
"Return the list of packages to check for SYSTEM."
|
||||
(let ((base (list %bootstrap-tarballs emacs nss-certs openssh)))
|
||||
;; On Intel systems, make sure key packages proposed by the installer are
|
||||
;; available.
|
||||
(if (member system '("x86_64-linux" "i686-linux"))
|
||||
(append (map specification->package
|
||||
'("xfce" "gnome" "mate" "enlightenment"
|
||||
"openbox" "awesome" "i3-wm" "ratpoison"
|
||||
"network-manager-applet" "xlockmore"
|
||||
"linux-libre" "grub-hybrid" "xorg-server"
|
||||
"libreoffice"
|
||||
;; FIXME: Add IceCat when Rust is available on i686.
|
||||
#;"icecat"))
|
||||
base)
|
||||
base)))
|
||||
|
||||
(with-store store
|
||||
(parameterize ((%graft? #f))
|
||||
(let* ((native (append-map (lambda (system)
|
||||
(map (cut package-derivation store <> system)
|
||||
(packages-for-system system)))
|
||||
%hydra-supported-systems))
|
||||
(cross (map (cut package-cross-derivation store
|
||||
%bootstrap-tarballs <>)
|
||||
'("mips64el-linux-gnu"
|
||||
"arm-linux-gnueabihf")))
|
||||
(total (append native cross)))
|
||||
|
||||
(set-build-options store
|
||||
#:use-substitutes? #t
|
||||
#:substitute-urls %default-substitute-urls)
|
||||
(let* ((total (map derivation->output-path total))
|
||||
(available (substitutable-paths store total))
|
||||
(missing (lset-difference string=? total available)))
|
||||
(if (null? missing)
|
||||
(format (current-error-port)
|
||||
"~a packages found substitutable on~{ ~a~}~%"
|
||||
(length total) %hydra-supported-systems)
|
||||
(format (current-error-port)
|
||||
"~a packages are not substitutable:~%~{ ~a~%~}~%"
|
||||
(length missing) missing))
|
||||
(exit (null? missing))))))
|
||||
@@ -1,6 +1,6 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2016 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
|
||||
;;; Copyright © 2016, 2017, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -79,14 +79,6 @@ to 'make'."
|
||||
(current-processor-count))))
|
||||
(loop tail)))))))))
|
||||
|
||||
(define (parallel-job-count*)
|
||||
;; XXX: Work around memory requirements not sustainable on i686 above '-j4'
|
||||
;; or so: <https://bugs.gnu.org/40522>.
|
||||
(let ((count (parallel-job-count)))
|
||||
(if (string-prefix? "i686" %host-type)
|
||||
(min count 4)
|
||||
count)))
|
||||
|
||||
(define (% completed total)
|
||||
"Return the completion percentage of COMPLETED over TOTAL as an integer."
|
||||
(inexact->exact (round (* 100. (/ completed total)))))
|
||||
@@ -103,7 +95,7 @@ to 'make'."
|
||||
(lambda ()
|
||||
(compile-files srcdir (getcwd)
|
||||
(filter file-needs-compilation? files)
|
||||
#:workers (parallel-job-count*)
|
||||
#:workers (parallel-job-count)
|
||||
#:host host
|
||||
#:report-load (lambda (file total completed)
|
||||
(when file
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -59,11 +59,7 @@
|
||||
("arunisaac"
|
||||
"7F73 0343 F2F0 9F3C 77BF 79D3 2E25 EE8B 6180 2BB3")
|
||||
("atheia"
|
||||
;; primary: "3B12 9196 AE30 0C3C 0E90 A26F A715 5567 3271 9948"
|
||||
"9A2B 401E D001 0650 1584 BAAC 8BC4 F447 6E8A 8E00")
|
||||
("bandali"
|
||||
;; primary: "BE62 7373 8E61 6D6D 1B3A 08E8 A21A 0202 4881 6103"
|
||||
"39B3 3C8D 9448 0D2D DCC2 A498 8B44 A0CD C7B9 56F2")
|
||||
"3B12 9196 AE30 0C3C 0E90 A26F A715 5567 3271 9948")
|
||||
("bavier"
|
||||
;; primary: "34FF 38BC D151 25A6 E340 A0B5 3453 2F9F AFCA 8B8E"
|
||||
"A0C5 E352 2EF8 EF5C 64CD B7F0 FD73 CAC7 19D3 2566")
|
||||
@@ -93,8 +89,6 @@
|
||||
"B3C0 DB4D AD73 BA5D 285E 19AE 5143 0234 CEFD 87C3")
|
||||
("davexunit (2nd)" ;FIXME: to be confirmed!
|
||||
"8CCB A7F5 52B9 CBEA E1FB 2915 8328 C747 0FF1 D807")
|
||||
("daviwil"
|
||||
"53C4 1E6E 41AA FE55 335A CA5E 446A 2ED4 D940 BF14")
|
||||
("dvc"
|
||||
"6909 6DFD D702 8BED ACC5 884B C5E0 51C7 9C0B ECDB")
|
||||
("dvc (old)"
|
||||
@@ -152,8 +146,6 @@
|
||||
("nckx (2nd)"
|
||||
;; primary: "F5BC 5534 C36F 0087 B39D 36EF 1C9D C4FE B9DB 7C4B"
|
||||
"F5DA 2032 4B87 3D0B 7A38 7672 0DB0 FF88 4F55 6D79")
|
||||
("niedzejkob"
|
||||
"E576 BFB2 CF6E B13D F571 33B9 E315 A758 4613 1564")
|
||||
("ngz"
|
||||
"ED0E F1C8 E126 BA83 1B48 5FE9 DA00 B4F0 48E9 2F2D")
|
||||
("pelzflorian"
|
||||
@@ -169,18 +161,10 @@
|
||||
"BCA6 89B6 3655 3801 C3C6 2150 197A 5888 235F ACAC")
|
||||
("rhelling"
|
||||
"0154 E1B9 1CC9 D9EF 7764 8DE7 F3A7 27DB 44FC CA36")
|
||||
("roelj (old)"
|
||||
"17CB 2812 EB63 3DFF 2C7F 0452 C3EC 1DCA 8430 72E1")
|
||||
("roelj"
|
||||
;; From commit cc51c03ff867d4633505354819c6d88af88bf919 (March 2020).
|
||||
;; See <https://lists.gnu.org/archive/html/guix-devel/2020-03/msg00070.html>.
|
||||
"F556 FD94 FB8F 8B87 79E3 6832 CBD0 CD51 38C1 9AFC")
|
||||
("roptat (old)"
|
||||
"B5FA E628 5B41 3728 B2A0 FAED 4311 1F45 2008 6A0C")
|
||||
"17CB 2812 EB63 3DFF 2C7F 0452 C3EC 1DCA 8430 72E1")
|
||||
("roptat"
|
||||
;; From commit 2cbede5935eb6a40173bbdf30a9ad22bf7574c22 (Jan. 2020). See
|
||||
;; <https://lists.gnu.org/archive/html/guix-devel/2020-01/msg00499.html>.
|
||||
"1EFB 0909 1F17 D28C CBF9 B13A 53D4 57B2 D636 EE82")
|
||||
"B5FA E628 5B41 3728 B2A0 FAED 4311 1F45 2008 6A0C")
|
||||
("samplet"
|
||||
;; primary: "D6B0 C593 DA8C 5EDC A44C 7A58 C336 91F7 1188 B004"
|
||||
"A02C 2D82 0EF4 B25B A6B5 1D90 2AC6 A5EC 1C35 7C59")
|
||||
@@ -188,6 +172,8 @@
|
||||
"77DD AD2D 97F5 31BB C0F3 C7FD DFB5 EB09 AA62 5423")
|
||||
("snape"
|
||||
"F494 72F4 7A59 00D5 C235 F212 89F9 6D48 08F3 59C7")
|
||||
("snape"
|
||||
"F494 72F4 7A59 00D5 C235 F212 89F9 6D48 08F3 59C7")
|
||||
("steap"
|
||||
"4E26 CCE9 578E 0828 9855 BDD4 1C79 95D2 D5A3 8336")
|
||||
("taylanub"
|
||||
@@ -195,8 +181,7 @@
|
||||
|
||||
;; https://lists.gnu.org/archive/html/guix-devel/2017-03/msg00826.html
|
||||
("thomasd"
|
||||
;; primary: "1DD1 681F E285 E07F 11DC 0C59 2E15 A6BC D77D 54FD"
|
||||
"3D2C DA58 819C 08C2 A649 D43D 5C3B 064C 724A 5726")
|
||||
"1DD1 681F E285 E07F 11DC 0C59 2E15 A6BC D77D 54FD")
|
||||
("thomasd (old)"
|
||||
"A5C5 92EA 606E 7106 A6A3 BC08 98B2 1575 91E1 2B08")
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2016, 2017, 2018, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2017 Jan Nieuwenhuizen <janneke@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
@@ -24,7 +24,6 @@
|
||||
(use-modules (guix store)
|
||||
(guix git-download)
|
||||
((guix build utils) #:select (with-directory-excursion))
|
||||
((guix ui) #:select (build-notifier))
|
||||
(srfi srfi-19)
|
||||
(ice-9 match)
|
||||
(ice-9 pretty-print)
|
||||
@@ -42,6 +41,13 @@
|
||||
(beautify-user-module! m)
|
||||
m))
|
||||
|
||||
(cond-expand
|
||||
(guile-2.2
|
||||
;; Guile 2.2.2 has a bug whereby 'time-monotonic' objects have seconds and
|
||||
;; nanoseconds swapped (fixed in Guile commit 886ac3e). Work around it.
|
||||
(define time-monotonic time-tai))
|
||||
(else #t))
|
||||
|
||||
(define (call-with-time thunk kont)
|
||||
"Call THUNK and pass KONT the elapsed time followed by THUNK's return
|
||||
values."
|
||||
@@ -83,42 +89,49 @@ Otherwise return THING."
|
||||
#:use-substitutes? #f
|
||||
#:substitute-urls '())
|
||||
|
||||
;; The evaluation of Guix itself requires building a "trampoline"
|
||||
;; program, and possibly everything it depends on. Thus, allow builds
|
||||
;; but print a notification.
|
||||
(with-build-handler (build-notifier #:use-substitutes? #f)
|
||||
;; Grafts can trigger early builds. We do not want that to happen
|
||||
;; during evaluation, so use a sledgehammer to catch such problems.
|
||||
;; An exception, though, is the evaluation of Guix itself, which
|
||||
;; requires building a "trampoline" program.
|
||||
(set! build-things
|
||||
(lambda (store . args)
|
||||
(format (current-error-port)
|
||||
"warning: building things during evaluation~%")
|
||||
(format (current-error-port)
|
||||
"'build-things' arguments: ~s~%" args)
|
||||
(apply real-build-things store args)))
|
||||
|
||||
;; Add %TOP-SRCDIR to the store with a proper Git predicate so we work
|
||||
;; from a clean checkout
|
||||
(let ((source (add-to-store store "guix-source" #t
|
||||
"sha256" %top-srcdir
|
||||
#:select? (git-predicate %top-srcdir))))
|
||||
(with-directory-excursion source
|
||||
(save-module-excursion
|
||||
(lambda ()
|
||||
(set-current-module %user-module)
|
||||
(format (current-error-port)
|
||||
"loading '~a' relative to '~a'...~%"
|
||||
file source)
|
||||
(primitive-load file))))
|
||||
;; Add %TOP-SRCDIR to the store with a proper Git predicate so we work
|
||||
;; from a clean checkout
|
||||
(let ((source (add-to-store store "guix-source" #t
|
||||
"sha256" %top-srcdir
|
||||
#:select? (git-predicate %top-srcdir))))
|
||||
(with-directory-excursion source
|
||||
(save-module-excursion
|
||||
(lambda ()
|
||||
(set-current-module %user-module)
|
||||
(format (current-error-port)
|
||||
"loading '~a' relative to '~a'...~%"
|
||||
file source)
|
||||
(primitive-load file))))
|
||||
|
||||
;; Call the entry point of FILE and print the resulting job sexp.
|
||||
(pretty-print
|
||||
(match ((module-ref %user-module
|
||||
(if (equal? cuirass? "cuirass")
|
||||
'cuirass-jobs
|
||||
'hydra-jobs))
|
||||
store `((guix
|
||||
. ((file-name . ,source)))))
|
||||
(((names . thunks) ...)
|
||||
(map (lambda (job thunk)
|
||||
(format (current-error-port) "evaluating '~a'... " job)
|
||||
(force-output (current-error-port))
|
||||
(cons job
|
||||
(assert-valid-job job
|
||||
(call-with-time-display thunk))))
|
||||
names thunks)))
|
||||
port))))))
|
||||
;; Call the entry point of FILE and print the resulting job sexp.
|
||||
(pretty-print
|
||||
(match ((module-ref %user-module
|
||||
(if (equal? cuirass? "cuirass")
|
||||
'cuirass-jobs
|
||||
'hydra-jobs))
|
||||
store `((guix
|
||||
. ((file-name . ,source)))))
|
||||
(((names . thunks) ...)
|
||||
(map (lambda (job thunk)
|
||||
(format (current-error-port) "evaluating '~a'... " job)
|
||||
(force-output (current-error-port))
|
||||
(cons job
|
||||
(assert-valid-job job
|
||||
(call-with-time-display thunk))))
|
||||
names thunks)))
|
||||
port)))))
|
||||
((command _ ...)
|
||||
(format (current-error-port) "Usage: ~a FILE [cuirass]
|
||||
Evaluate the Hydra or Cuirass jobs defined in FILE.~%"
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2017 Jan Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2018, 2019 Clément Lassieur <clement@lassieur.org>
|
||||
;;;
|
||||
@@ -31,7 +31,7 @@
|
||||
|
||||
;; XXX: Debugging hack: since `hydra-eval-guile-jobs' redirects the output
|
||||
;; port to the bit bucket, let us write to the error port instead.
|
||||
(setvbuf (current-error-port) 'line)
|
||||
(setvbuf (current-error-port) _IOLBF)
|
||||
(set-current-output-port (current-error-port))
|
||||
|
||||
(define (find-current-checkout arguments)
|
||||
@@ -65,8 +65,6 @@ Return #f if no such checkout is found."
|
||||
(run-with-store store
|
||||
(channel-instances->derivation (list instance))))
|
||||
|
||||
;; TODO: Remove 'show-what-to-build' call when Cuirass' 'evaluate' scripts
|
||||
;; uses 'with-build-handler'.
|
||||
(show-what-to-build store (list derivation))
|
||||
(build-derivations store (list derivation))
|
||||
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2017, 2018, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2017, 2018 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -33,7 +33,7 @@
|
||||
|
||||
;; XXX: Debugging hack: since `hydra-eval-guile-jobs' redirects the output
|
||||
;; port to the bit bucket, let us write to the error port instead.
|
||||
(setvbuf (current-error-port) 'line)
|
||||
(setvbuf (current-error-port) _IOLBF)
|
||||
(set-current-output-port (current-error-port))
|
||||
|
||||
(define* (build-job store source version system)
|
||||
|
||||
@@ -0,0 +1,115 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2016, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (run-system-tests)
|
||||
#:use-module (gnu tests)
|
||||
#:use-module (gnu packages package-management)
|
||||
#:use-module ((gnu ci) #:select (channel-instance->package))
|
||||
#:use-module (guix store)
|
||||
#:use-module ((guix status) #:select (with-status-verbosity))
|
||||
#:use-module (guix monads)
|
||||
#:use-module (guix channels)
|
||||
#:use-module (guix derivations)
|
||||
#:use-module ((guix git-download) #:select (git-predicate))
|
||||
#:use-module (guix utils)
|
||||
#:use-module (guix ui)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-34)
|
||||
#:use-module (ice-9 match)
|
||||
#:export (run-system-tests))
|
||||
|
||||
(define (built-derivations* drv)
|
||||
(lambda (store)
|
||||
(guard (c ((store-protocol-error? c)
|
||||
(values #f store)))
|
||||
(values (build-derivations store drv) store))))
|
||||
|
||||
(define (filterm mproc lst) ;XXX: move to (guix monads)
|
||||
(with-monad %store-monad
|
||||
(>>= (foldm %store-monad
|
||||
(lambda (item result)
|
||||
(mlet %store-monad ((keep? (mproc item)))
|
||||
(return (if keep?
|
||||
(cons item result)
|
||||
result))))
|
||||
'()
|
||||
lst)
|
||||
(lift1 reverse %store-monad))))
|
||||
|
||||
(define (tests-for-channel-instance instance)
|
||||
"Return a list of tests for perform, using Guix from INSTANCE, a channel
|
||||
instance."
|
||||
;; Honor the 'TESTS' environment variable so that one can select a subset
|
||||
;; of tests to run in the usual way:
|
||||
;;
|
||||
;; make check-system TESTS=installed-os
|
||||
(parameterize ((current-guix-package
|
||||
(channel-instance->package instance)))
|
||||
(match (getenv "TESTS")
|
||||
(#f
|
||||
(all-system-tests))
|
||||
((= string-tokenize (tests ...))
|
||||
(filter (lambda (test)
|
||||
(member (system-test-name test) tests))
|
||||
(all-system-tests))))))
|
||||
|
||||
|
||||
|
||||
(define (run-system-tests . args)
|
||||
(define source
|
||||
(string-append (current-source-directory) "/.."))
|
||||
|
||||
(with-store store
|
||||
(with-status-verbosity 2
|
||||
(run-with-store store
|
||||
;; Intern SOURCE so that 'build-from-source' in (guix channels) sees
|
||||
;; "fresh" file names and thus doesn't find itself loading .go files
|
||||
;; from ~/.cache/guile when it loads 'build-aux/build-self.scm'.
|
||||
;; XXX: It would be best to not do it upfront because we may need it.
|
||||
(mlet* %store-monad ((source (interned-file source "guix-source"
|
||||
#:recursive? #t
|
||||
#:select?
|
||||
(or (git-predicate source)
|
||||
(const #t))))
|
||||
(instance -> (checkout->channel-instance source))
|
||||
(tests -> (tests-for-channel-instance instance))
|
||||
(drv (mapm %store-monad system-test-value tests))
|
||||
(out -> (map derivation->output-path drv)))
|
||||
(format (current-error-port) "Running ~a system tests...~%"
|
||||
(length tests))
|
||||
|
||||
(mbegin %store-monad
|
||||
(show-what-to-build* drv)
|
||||
(set-build-options* #:keep-going? #t #:keep-failed? #t
|
||||
#:print-build-trace #t
|
||||
#:print-extended-build-trace? #t
|
||||
#:fallback? #t)
|
||||
(built-derivations* drv)
|
||||
(mlet %store-monad ((valid (filterm (store-lift valid-path?)
|
||||
out))
|
||||
(failed (filterm (store-lift
|
||||
(negate valid-path?))
|
||||
out)))
|
||||
(format #t "TOTAL: ~a\n" (length drv))
|
||||
(for-each (lambda (item)
|
||||
(format #t "PASS: ~a~%" item))
|
||||
valid)
|
||||
(for-each (lambda (item)
|
||||
(format #t "FAIL: ~a~%" item))
|
||||
failed)
|
||||
(exit (null? failed)))))))))
|
||||
+2
-6
@@ -93,14 +93,10 @@ m4_pattern_forbid([^GUIX_])
|
||||
|
||||
dnl Search for 'guile' and 'guild'. This macro defines
|
||||
dnl 'GUILE_EFFECTIVE_VERSION'.
|
||||
GUILE_PKG([3.0 2.2])
|
||||
GUILE_PKG([2.2])
|
||||
GUILE_PROGS
|
||||
if test "x$GUILD" = "x"; then
|
||||
AC_MSG_ERROR(['guild' binary not found; please check your Guile installation.])
|
||||
fi
|
||||
|
||||
if test "x$GUILE_EFFECTIVE_VERSION" = "x2.2"; then
|
||||
PKG_CHECK_MODULES([GUILE], [guile-2.2 >= 2.2.3])
|
||||
AC_MSG_ERROR(['guild' binary not found; please check your guile-2.x installation.])
|
||||
fi
|
||||
|
||||
dnl Installation directories for .scm and .go files.
|
||||
|
||||
+54
-168
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -137,7 +137,7 @@ as well as images, OS examples, and translations."
|
||||
(date->string date "~B ~Y")
|
||||
version version))))))
|
||||
|
||||
(install-file #$(file-append documentation "/htmlxref.cnf")
|
||||
(install-file #$(file-append* documentation "/htmlxref.cnf")
|
||||
#$output)
|
||||
|
||||
(for-each (lambda (texi)
|
||||
@@ -178,27 +178,30 @@ content=\"width=device-width, initial-scale=1\" />"))
|
||||
;; Guile-Lib with a hotfix for (htmlprag).
|
||||
(package
|
||||
(inherit guile-lib)
|
||||
(source (origin
|
||||
(inherit (package-source guile-lib))
|
||||
(modules '(( guix build utils)))
|
||||
(snippet
|
||||
'(begin
|
||||
;; When parsing
|
||||
;; "<body><blockquote><p>foo</p>\n</blockquote></body>",
|
||||
;; 'html->shtml' would mistakenly close 'blockquote' right
|
||||
;; before <p>. This patch removes 'p' from the
|
||||
;; 'parent-constraints' alist to fix that.
|
||||
(substitute* "src/htmlprag.scm"
|
||||
(("^[[:blank:]]*\\(p[[:blank:]]+\\. \\(body td th\\)\\).*")
|
||||
""))
|
||||
#t))))
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments guile-lib)
|
||||
((#:phases phases '%standard-phases)
|
||||
`(modify-phases ,phases
|
||||
(add-before 'build 'fix-htmlprag
|
||||
(lambda _
|
||||
;; When parsing
|
||||
;; "<body><blockquote><p>foo</p>\n</blockquote></body>",
|
||||
;; 'html->shtml' would mistakenly close 'blockquote' right
|
||||
;; before <p>. This patch removes 'p' from the
|
||||
;; 'parent-constraints' alist to fix that.
|
||||
(substitute* "src/htmlprag.scm"
|
||||
(("^[[:blank:]]*\\(p[[:blank:]]+\\. \\(body td th\\)\\).*")
|
||||
""))
|
||||
#t))
|
||||
(add-before 'check 'skip-known-failure
|
||||
(lambda _
|
||||
;; XXX: The above change causes one test failure among
|
||||
;; the htmlprag tests.
|
||||
(setenv "XFAIL_TESTS" "htmlprag.scm")
|
||||
#t))))))))
|
||||
(add-before 'check 'skip-known-failure
|
||||
(lambda _
|
||||
;; XXX: The above change causes one test failure among
|
||||
;; the htmlprag tests.
|
||||
(setenv "XFAIL_TESTS" "htmlprag.scm")
|
||||
#t))))))))
|
||||
|
||||
(define* (syntax-highlighted-html input
|
||||
#:key
|
||||
@@ -217,11 +220,8 @@ its <pre class=\"lisp\"> blocks (as produced by 'makeinfo --html')."
|
||||
(syntax-highlight scheme)
|
||||
(syntax-highlight lexers)
|
||||
(guix build utils)
|
||||
(srfi srfi-1)
|
||||
(srfi srfi-26)
|
||||
(ice-9 match)
|
||||
(ice-9 threads)
|
||||
(ice-9 vlist))
|
||||
(ice-9 threads))
|
||||
|
||||
(define (pair-open/close lst)
|
||||
;; Pair 'open' and 'close' tags produced by 'highlights' and
|
||||
@@ -255,11 +255,10 @@ its <pre class=\"lisp\"> blocks (as produced by 'makeinfo --html')."
|
||||
level (reverse result)))
|
||||
(values (reverse result) "" '())))))
|
||||
|
||||
(define (highlights->sxml* highlights anchors)
|
||||
(define (highlights->sxml* highlights)
|
||||
;; Like 'highlights->sxml', but handle nested 'paren tags. This
|
||||
;; allows for paren matching highlights via appropriate CSS
|
||||
;; "hover" properties. When a symbol is encountered, look it up
|
||||
;; in ANCHORS, a vhash, and emit the corresponding href, if any.
|
||||
;; "hover" properties.
|
||||
(define (tag->class tag)
|
||||
(string-append "syntax-" (symbol->string tag)))
|
||||
|
||||
@@ -270,16 +269,8 @@ its <pre class=\"lisp\"> blocks (as produced by 'makeinfo --html')."
|
||||
(number->string level))))
|
||||
,open
|
||||
(span (@ (class "syntax-symbol"))
|
||||
,@(highlights->sxml* body anchors))
|
||||
,@(highlights->sxml* body))
|
||||
,close))
|
||||
(('symbol text)
|
||||
;; Check whether we can emit a hyperlink for TEXT.
|
||||
(match (vhash-assoc text anchors)
|
||||
(#f
|
||||
`(span (@ (class ,(tag->class 'symbol))) ,text))
|
||||
((_ . target)
|
||||
`(a (@ (class ,(tag->class 'symbol)) (href ,target))
|
||||
,text))))
|
||||
((tag text)
|
||||
`(span (@ (class ,(tag->class tag))) ,text)))
|
||||
highlights))
|
||||
@@ -310,109 +301,35 @@ its <pre class=\"lisp\"> blocks (as produced by 'makeinfo --html')."
|
||||
(pk 'unsupported-code-snippet something)
|
||||
(primitive-exit 1)))))
|
||||
|
||||
(define (syntax-highlight sxml anchors)
|
||||
(define (syntax-highlight sxml)
|
||||
;; Recurse over SXML and syntax-highlight code snippets.
|
||||
(let loop ((sxml sxml))
|
||||
(match sxml
|
||||
(('*TOP* decl body ...)
|
||||
`(*TOP* ,decl ,@(map loop body)))
|
||||
(('head things ...)
|
||||
`(head ,@things
|
||||
(link (@ (rel "stylesheet")
|
||||
(type "text/css")
|
||||
(href #$syntax-css-url)))))
|
||||
(('pre ('@ ('class "lisp")) code-snippet ...)
|
||||
`(pre (@ (class "lisp"))
|
||||
,@(highlights->sxml*
|
||||
(pair-open/close
|
||||
(highlight lex-scheme
|
||||
(concatenate-snippets code-snippet)))
|
||||
anchors)))
|
||||
((tag ('@ attributes ...) body ...)
|
||||
`(,tag (@ ,@attributes) ,@(map loop body)))
|
||||
((tag body ...)
|
||||
`(,tag ,@(map loop body)))
|
||||
((? string? str)
|
||||
str))))
|
||||
(match sxml
|
||||
(('*TOP* decl body ...)
|
||||
`(*TOP* ,decl ,@(map syntax-highlight body)))
|
||||
(('head things ...)
|
||||
`(head ,@things
|
||||
(link (@ (rel "stylesheet")
|
||||
(type "text/css")
|
||||
(href #$syntax-css-url)))))
|
||||
(('pre ('@ ('class "lisp")) code-snippet ...)
|
||||
`(pre (@ (class "lisp"))
|
||||
,@(highlights->sxml*
|
||||
(pair-open/close
|
||||
(highlight lex-scheme
|
||||
(concatenate-snippets code-snippet))))))
|
||||
((tag ('@ attributes ...) body ...)
|
||||
`(,tag (@ ,@attributes) ,@(map syntax-highlight body)))
|
||||
((tag body ...)
|
||||
`(,tag ,@(map syntax-highlight body)))
|
||||
((? string? str)
|
||||
str)))
|
||||
|
||||
(define (underscore-decode str)
|
||||
;; Decode STR, an "underscore-encoded" string as produced by
|
||||
;; makeinfo for indexes, such as "_0025base_002dservices" for
|
||||
;; "%base-services".
|
||||
(let loop ((str str)
|
||||
(result '()))
|
||||
(match (string-index str #\_)
|
||||
(#f
|
||||
(string-concatenate-reverse (cons str result)))
|
||||
(index
|
||||
(let ((char (string->number
|
||||
(substring str (+ index 1) (+ index 5))
|
||||
16)))
|
||||
(loop (string-drop str (+ index 5))
|
||||
(append (list (string (integer->char char))
|
||||
(string-take str index))
|
||||
result)))))))
|
||||
|
||||
(define (anchor-id->key id)
|
||||
;; Convert ID, an anchor ID such as
|
||||
;; "index-pam_002dlimits_002dservice" to the corresponding key,
|
||||
;; "pam-limits-service" in this example. Drop the suffix of
|
||||
;; duplicate anchor IDs like "operating_002dsystem-1".
|
||||
(let ((id (if (any (cut string-suffix? <> id)
|
||||
'("-1" "-2" "-3" "-4" "-5"))
|
||||
(string-drop-right id 2)
|
||||
id)))
|
||||
(underscore-decode
|
||||
(string-drop id (string-length "index-")))))
|
||||
|
||||
(define* (collect-anchors file #:optional (vhash vlist-null))
|
||||
;; Collect the anchors that appear in FILE, a makeinfo-generated
|
||||
;; file. Grab those from <dt> tags, which corresponds to
|
||||
;; Texinfo @deftp, @defvr, etc. Return VHASH augmented with
|
||||
;; more name/reference pairs.
|
||||
(define string-or-entity?
|
||||
(match-lambda
|
||||
((? string?) #t)
|
||||
(('*ENTITY* _ ...) #t)
|
||||
(_ #f)))
|
||||
|
||||
(define (worthy-entry? lst)
|
||||
;; Attempt to match:
|
||||
;; Scheme Variable: <strong>x</strong>
|
||||
;; but not:
|
||||
;; <code>cups-configuration</code> parameter: …
|
||||
(let loop ((lst lst))
|
||||
(match lst
|
||||
(((? string-or-entity?) rest ...)
|
||||
(loop rest))
|
||||
((('strong _ ...) _ ...)
|
||||
#t)
|
||||
(_ #f))))
|
||||
|
||||
(let ((shtml (call-with-input-file file html->shtml)))
|
||||
(let loop ((shtml shtml)
|
||||
(vhash vhash))
|
||||
(match shtml
|
||||
(('dt ('@ ('id id)) rest ...)
|
||||
(if (and (string-prefix? "index-" id)
|
||||
(worthy-entry? rest))
|
||||
(vhash-cons (anchor-id->key id)
|
||||
(string-append (basename file)
|
||||
"#" id)
|
||||
vhash)
|
||||
vhash))
|
||||
((tag ('@ _ ...) body ...)
|
||||
(fold loop vhash body))
|
||||
((tag body ...)
|
||||
(fold loop vhash body))
|
||||
(_ vhash)))))
|
||||
|
||||
(define (process-html file anchors)
|
||||
(define (process-html file)
|
||||
;; Parse FILE and perform syntax highlighting for its Scheme
|
||||
;; snippets. Install the result to #$output.
|
||||
(format (current-error-port) "processing ~a...~%" file)
|
||||
(let* ((shtml (call-with-input-file file html->shtml))
|
||||
(highlighted (syntax-highlight shtml anchors))
|
||||
(highlighted (syntax-highlight shtml))
|
||||
(base (string-drop file (string-length #$input)))
|
||||
(target (string-append #$output base)))
|
||||
(mkdir-p (dirname target))
|
||||
@@ -435,43 +352,17 @@ its <pre class=\"lisp\"> blocks (as produced by 'makeinfo --html')."
|
||||
(pk 'error-link file target (strerror errno))
|
||||
(primitive-exit 3))))))
|
||||
|
||||
(define (html? file stat)
|
||||
(string-suffix? ".html" file))
|
||||
|
||||
;; Install a UTF-8 locale so we can process UTF-8 files.
|
||||
(setenv "GUIX_LOCPATH"
|
||||
#+(file-append glibc-utf8-locales "/lib/locale"))
|
||||
(setlocale LC_ALL "en_US.utf8")
|
||||
|
||||
;; First process the mono-node 'guix.html' files.
|
||||
(n-par-for-each (parallel-job-count)
|
||||
(lambda (mono)
|
||||
(let ((anchors (collect-anchors mono)))
|
||||
(process-html mono anchors)))
|
||||
(find-files #$input "^guix(\\.[a-zA-Z_-]+)?\\.html$"))
|
||||
|
||||
;; Next process the multi-node HTML files in two phases: (1)
|
||||
;; collect the list of anchors, and (2) perform
|
||||
;; syntax-highlighting.
|
||||
(let* ((multi (find-files #$input "^html_node$"
|
||||
#:directories? #t))
|
||||
(anchors (n-par-map (parallel-job-count)
|
||||
(lambda (multi)
|
||||
(cons multi
|
||||
(fold collect-anchors vlist-null
|
||||
(find-files multi html?))))
|
||||
multi)))
|
||||
(n-par-for-each (parallel-job-count)
|
||||
(lambda (file)
|
||||
(let ((anchors (assoc-ref anchors (dirname file))))
|
||||
(process-html file anchors)))
|
||||
(append-map (lambda (multi)
|
||||
(find-files multi html?))
|
||||
multi)))
|
||||
|
||||
;; Last, copy non-HTML files as is.
|
||||
(for-each copy-as-is
|
||||
(find-files #$input (negate html?)))))))
|
||||
(lambda (file)
|
||||
(if (string-suffix? ".html" file)
|
||||
(process-html file)
|
||||
(copy-as-is file)))
|
||||
(find-files #$input))))))
|
||||
|
||||
(computed-file name build))
|
||||
|
||||
@@ -519,11 +410,6 @@ makeinfo OPTIONS."
|
||||
(setvbuf (current-output-port) 'line)
|
||||
(setvbuf (current-error-port) 'line)
|
||||
|
||||
;; 'makeinfo' looks for "htmlxref.cnf" in the current directory, so
|
||||
;; copy it right here.
|
||||
(copy-file (string-append #$manual-source "/htmlxref.cnf")
|
||||
"htmlxref.cnf")
|
||||
|
||||
(for-each (lambda (language)
|
||||
(let* ((texi (language->texi-file-name language))
|
||||
(opts `("--html"
|
||||
|
||||
+26
-255
@@ -12,7 +12,7 @@ particularly welcome help on packaging (@pxref{Packaging Guidelines}).
|
||||
We want to provide a warm, friendly, and harassment-free environment, so
|
||||
that anyone can contribute to the best of their abilities. To this end
|
||||
our project uses a ``Contributor Covenant'', which was adapted from
|
||||
@url{https://contributor-covenant.org/}. You can find a local version in
|
||||
@url{http://contributor-covenant.org/}. You can find a local version in
|
||||
the @file{CODE-OF-CONDUCT} file in the source tree.
|
||||
|
||||
Contributors are not required to use their legal name in patches and
|
||||
@@ -26,8 +26,6 @@ choice.
|
||||
* Packaging Guidelines:: Growing the distribution.
|
||||
* Coding Style:: Hygiene of the contributor.
|
||||
* Submitting Patches:: Share your work.
|
||||
* Tracking Bugs and Patches:: Using Debbugs.
|
||||
* Commit Access:: Pushing to the official repository.
|
||||
@end menu
|
||||
|
||||
@node Building from Git
|
||||
@@ -98,12 +96,12 @@ following are the required packages in addition to those mentioned in the
|
||||
installation instructions (@pxref{Requirements}).
|
||||
|
||||
@itemize
|
||||
@item @url{https://gnu.org/software/autoconf/, GNU Autoconf};
|
||||
@item @url{https://gnu.org/software/automake/, GNU Automake};
|
||||
@item @url{https://gnu.org/software/gettext/, GNU Gettext};
|
||||
@item @url{https://gnu.org/software/texinfo/, GNU Texinfo};
|
||||
@item @url{https://www.graphviz.org/, Graphviz};
|
||||
@item @url{https://www.gnu.org/software/help2man/, GNU Help2man (optional)}.
|
||||
@item @url{http://gnu.org/software/autoconf/, GNU Autoconf};
|
||||
@item @url{http://gnu.org/software/automake/, GNU Automake};
|
||||
@item @url{http://gnu.org/software/gettext/, GNU Gettext};
|
||||
@item @url{http://gnu.org/software/texinfo/, GNU Texinfo};
|
||||
@item @url{http://www.graphviz.org/, Graphviz};
|
||||
@item @url{http://www.gnu.org/software/help2man/, GNU Help2man (optional)}.
|
||||
@end itemize
|
||||
|
||||
On Guix, extra dependencies can be added by instead running @command{guix
|
||||
@@ -217,8 +215,8 @@ you want to upgrade your local source tree.
|
||||
The Perfect Setup to hack on Guix is basically the perfect setup used
|
||||
for Guile hacking (@pxref{Using Guile in Emacs,,, guile, Guile Reference
|
||||
Manual}). First, you need more than an editor, you need
|
||||
@url{https://www.gnu.org/software/emacs, Emacs}, empowered by the
|
||||
wonderful @url{https://nongnu.org/geiser/, Geiser}. To set that up, run:
|
||||
@url{http://www.gnu.org/software/emacs, Emacs}, empowered by the
|
||||
wonderful @url{http://nongnu.org/geiser/, Geiser}. To set that up, run:
|
||||
|
||||
@example
|
||||
guix package -i emacs guile emacs-geiser
|
||||
@@ -240,7 +238,7 @@ that it finds source files from your checkout:
|
||||
|
||||
To actually edit the code, Emacs already has a neat Scheme mode. But in
|
||||
addition to that, you must not miss
|
||||
@url{https://www.emacswiki.org/emacs/ParEdit, Paredit}. It provides
|
||||
@url{http://www.emacswiki.org/emacs/ParEdit, Paredit}. It provides
|
||||
facilities to directly operate on the syntax tree, such as raising an
|
||||
s-expression or wrapping it, swallowing or rejecting the following
|
||||
s-expression, etc.
|
||||
@@ -250,7 +248,7 @@ s-expression, etc.
|
||||
@cindex reducing boilerplate
|
||||
We also provide templates for common git commit messages and package
|
||||
definitions in the @file{etc/snippets} directory. These templates can
|
||||
be used with @url{https://joaotavora.github.io/yasnippet/, YASnippet} to
|
||||
be used with @url{http://joaotavora.github.io/yasnippet/, YASnippet} to
|
||||
expand short trigger strings to interactive text snippets. You may want
|
||||
to add the snippets directory to the @var{yas-snippet-dirs} variable in
|
||||
Emacs.
|
||||
@@ -274,33 +272,6 @@ trigger string @code{origin...}, which can be expanded further. The
|
||||
@code{origin} snippet in turn may insert other trigger strings ending on
|
||||
@code{...}, which also can be expanded further.
|
||||
|
||||
@cindex insert or update copyright
|
||||
@cindex @code{M-x guix-copyright}
|
||||
@cindex @code{M-x copyright-update}
|
||||
Additionaly we provide insertion and automatic update of a copyright in
|
||||
@file{etc/copyright.el}. You may want to set your full name, mail, and
|
||||
load a file.
|
||||
|
||||
@lisp
|
||||
(setq user-full-name "Alice Doe")
|
||||
(setq user-mail-address "alice@@mail.org")
|
||||
;; @r{Assuming the Guix checkout is in ~/src/guix.}
|
||||
(load-file "~/src/guix/etc/copyright.el")
|
||||
@end lisp
|
||||
|
||||
To insert a copyright at the current line invoke @code{M-x guix-copyright}.
|
||||
|
||||
To update a copyright you need to specify a @code{copyright-names-regexp}.
|
||||
|
||||
@lisp
|
||||
(setq copyright-names-regexp
|
||||
(format "%s <%s>" user-full-name user-mail-address))
|
||||
@end lisp
|
||||
|
||||
You can check if your copyright is up to date by evaluating @code{M-x
|
||||
copyright-update}. If you want to do it automatically after each buffer
|
||||
save then add @code{(add-hook 'after-save-hook 'copyright-update)} in
|
||||
Emacs.
|
||||
|
||||
@node Packaging Guidelines
|
||||
@section Packaging Guidelines
|
||||
@@ -374,7 +345,6 @@ needed is to review and apply the patch.
|
||||
* Python Modules:: A touch of British comedy.
|
||||
* Perl Modules:: Little pearls.
|
||||
* Java Packages:: Coffee break.
|
||||
* Rust Crates:: Beware of oxidation.
|
||||
* Fonts:: Fond of fonts.
|
||||
@end menu
|
||||
|
||||
@@ -385,14 +355,14 @@ needed is to review and apply the patch.
|
||||
@cindex free software
|
||||
The GNU operating system has been developed so that users can have
|
||||
freedom in their computing. GNU is @dfn{free software}, meaning that
|
||||
users have the @url{https://www.gnu.org/philosophy/free-sw.html,four
|
||||
users have the @url{http://www.gnu.org/philosophy/free-sw.html,four
|
||||
essential freedoms}: to run the program, to study and change the program
|
||||
in source code form, to redistribute exact copies, and to distribute
|
||||
modified versions. Packages found in the GNU distribution provide only
|
||||
software that conveys these four freedoms.
|
||||
|
||||
In addition, the GNU distribution follow the
|
||||
@url{https://www.gnu.org/distros/free-system-distribution-guidelines.html,free
|
||||
@url{http://www.gnu.org/distros/free-system-distribution-guidelines.html,free
|
||||
software distribution guidelines}. Among other things, these guidelines
|
||||
reject non-free firmware, recommendations of non-free software, and
|
||||
discuss ways to deal with trademarks and patents.
|
||||
@@ -571,7 +541,7 @@ such as @command{guix package --show} take care of rendering it
|
||||
appropriately.
|
||||
|
||||
Synopses and descriptions are translated by volunteers
|
||||
@uref{https://translationproject.org/domain/guix-packages.html, at the
|
||||
@uref{http://translationproject.org/domain/guix-packages.html, at the
|
||||
Translation Project} so that as many users as possible can read them in
|
||||
their native language. User interfaces search them and display them in
|
||||
the language specified by the current locale.
|
||||
@@ -612,12 +582,11 @@ To avoid confusion and naming clashes with other programming languages, it
|
||||
seems desirable that the name of a package for a Python module contains
|
||||
the word @code{python}.
|
||||
|
||||
Some modules are compatible with only one version of Python, others with
|
||||
both. If the package Foo is compiled with Python 3, we name it
|
||||
@code{python-foo}. If it is compiled with Python 2, we name it
|
||||
@code{python2-foo}. Packages should be added when they are necessary;
|
||||
we don't add Python 2 variants of the package unless we are going to use
|
||||
them.
|
||||
Some modules are compatible with only one version of Python, others with both.
|
||||
If the package Foo compiles only with Python 3, we name it
|
||||
@code{python-foo}; if it compiles only with Python 2, we name it
|
||||
@code{python2-foo}. If it is compatible with both versions, we create two
|
||||
packages with the corresponding names.
|
||||
|
||||
If a project already contains the word @code{python}, we drop this;
|
||||
for instance, the module python-dateutil is packaged under the names
|
||||
@@ -714,40 +683,6 @@ dashes and prepend the prefix @code{java-}. So the class
|
||||
@code{java-apache-commons-cli}.
|
||||
|
||||
|
||||
@node Rust Crates
|
||||
@subsection Rust Crates
|
||||
|
||||
@cindex rust
|
||||
Rust programs standing for themselves are named as any other package, using the
|
||||
lowercase upstream name.
|
||||
|
||||
To prevent namespace collisions we prefix all other Rust packages with the
|
||||
@code{rust-} prefix. The name should be changed to lowercase as appropriate and
|
||||
dashes should remain in place.
|
||||
|
||||
In the rust ecosystem it is common for multiple incompatible versions of a
|
||||
package to be used at any given time, so all packages should have a versioned
|
||||
suffix. If a package has passed version 1.0.0 then just the major version
|
||||
number is sufficient (e.g.@: @code{rust-clap-2}), otherwise the version suffix
|
||||
should contain both the major and minor version (e.g.@: @code{rust-rand-0.6}).
|
||||
|
||||
Because of the difficulty in reusing rust packages as pre-compiled inputs for
|
||||
other packages the Cargo build system (@pxref{Build Systems,
|
||||
@code{cargo-build-system}}) presents the @code{#:cargo-inputs} and
|
||||
@code{cargo-development-inputs} keywords as build system arguments. It would be
|
||||
helpful to think of these as similar to @code{propagated-inputs} and
|
||||
@code{native-inputs}. Rust @code{dependencies} and @code{build-dependencies}
|
||||
should go in @code{#:cargo-inputs}, and @code{dev-dependencies} should go in
|
||||
@code{#:cargo-development-inputs}. If a Rust package links to other libraries
|
||||
then the standard placement in @code{inputs} and the like should be used.
|
||||
|
||||
Care should be taken to ensure the correct version of dependencies are used; to
|
||||
this end we try to refrain from skipping the tests or using @code{#:skip-build?}
|
||||
when possible. Of course this is not always possible, as the package may be
|
||||
developed for a different Operating System, depend on features from the Nightly
|
||||
Rust compiler, or the test suite may have atrophied since it was released.
|
||||
|
||||
|
||||
@node Fonts
|
||||
@subsection Fonts
|
||||
|
||||
@@ -839,7 +774,7 @@ especially when matching lists.
|
||||
@cindex coding style
|
||||
When writing Scheme code, we follow common wisdom among Scheme
|
||||
programmers. In general, we follow the
|
||||
@url{https://mumble.net/~campbell/scheme/style.txt, Riastradh's Lisp
|
||||
@url{http://mumble.net/~campbell/scheme/style.txt, Riastradh's Lisp
|
||||
Style Rules}. This document happens to describe the conventions mostly
|
||||
used in Guile’s code too. It is very thoughtful and well written, so
|
||||
please do read it.
|
||||
@@ -891,15 +826,13 @@ Development is done using the Git distributed version control system.
|
||||
Thus, access to the repository is not strictly necessary. We welcome
|
||||
contributions in the form of patches as produced by @code{git
|
||||
format-patch} sent to the @email{guix-patches@@gnu.org} mailing list.
|
||||
Seasoned Guix developers may also want to look at the section on commit
|
||||
access (@pxref{Commit Access}).
|
||||
|
||||
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}).
|
||||
This mailing list is backed by a Debbugs instance accessible at
|
||||
@uref{https://bugs.gnu.org/guix-patches}, which allows us to keep track
|
||||
of submissions. 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}).
|
||||
|
||||
Please write commit logs in the ChangeLog format (@pxref{Change Logs,,,
|
||||
standards, GNU Coding Standards}); you can check the commit history for
|
||||
@@ -1107,165 +1040,3 @@ they are kept together. See
|
||||
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
|
||||
|
||||
@node Tracking Bugs and Patches
|
||||
@section Tracking Bugs and Patches
|
||||
|
||||
@cindex bug reports, tracking
|
||||
@cindex patch submissions, tracking
|
||||
@cindex issue tracking
|
||||
@cindex Debbugs, issue tracking system
|
||||
Bug reports and patch submissions are currently tracked using the
|
||||
Debbugs instance at @uref{https://bugs.gnu.org}. Bug reports are filed
|
||||
against the @code{guix} ``package'' (in Debbugs parlance), by sending
|
||||
email to @email{bug-guix@@gnu.org}, while patch submissions are filed
|
||||
against the @code{guix-patches} package by sending email to
|
||||
@email{guix-patches@@gnu.org} (@pxref{Submitting Patches}).
|
||||
|
||||
A web interface (actually @emph{two} web interfaces!) are available to
|
||||
browse issues:
|
||||
|
||||
@itemize
|
||||
@item
|
||||
@url{https://bugs.gnu.org/guix} lists bug reports;
|
||||
@item
|
||||
@url{https://bugs.gnu.org/guix-patches} lists patch submissions.
|
||||
@end itemize
|
||||
|
||||
You can also access both of these @i{via} the (nicer)
|
||||
@url{https://issues.guix.gnu.org} interface@footnote{The web interface
|
||||
at @url{https://issues.guix.gnu.org} is powered by Mumi, a nice piece of
|
||||
software written in Guile, and you can help! See
|
||||
@url{https://git.elephly.net/gitweb.cgi?p=software/mumi.git}.}. To view
|
||||
discussions related to issue number @var{n}, go to
|
||||
@indicateurl{https://issues.guix.gnu.org/issue/@var{n}} or
|
||||
@indicateurl{https://bugs.gnu.org/@var{n}}.
|
||||
|
||||
If you use Emacs, you may find it more convenient to interact with
|
||||
issues using @file{debbugs.el}, which you can install with:
|
||||
|
||||
@example
|
||||
guix install emacs-debbugs
|
||||
@end example
|
||||
|
||||
For example, to list all open issues on @code{guix-patches}, hit:
|
||||
|
||||
@example
|
||||
@kbd{C-u} @kbd{M-x} debbugs-gnu @kbd{RET} @kbd{RET} guix-patches @kbd{RET} n y
|
||||
@end example
|
||||
|
||||
@xref{Top,,, debbugs-ug, Debbugs User Guide}, for more information on
|
||||
this nifty tool!
|
||||
|
||||
@node Commit Access
|
||||
@section Commit Access
|
||||
|
||||
@cindex commit access, for developers
|
||||
For frequent contributors, having write access to the repository is
|
||||
convenient. When you deem it necessary, consider applying for commit
|
||||
access by following these steps:
|
||||
|
||||
@enumerate
|
||||
@item
|
||||
Find three committers who would vouch for you. You can view the list of
|
||||
committers at
|
||||
@url{https://savannah.gnu.org/project/memberlist.php?group=guix}. Each
|
||||
of them should email a statement to @email{guix-maintainers@@gnu.org} (a
|
||||
private alias for the collective of maintainers), signed with their
|
||||
OpenPGP key.
|
||||
|
||||
Committers are expected to have had some interactions with you as a
|
||||
contributor and to be able to judge whether you are sufficiently
|
||||
familiar with the project's practices. It is @emph{not} a judgment on
|
||||
the value of your work, so a refusal should rather be interpreted as
|
||||
``let's try again later''.
|
||||
|
||||
@item
|
||||
Send @email{guix-maintainers@@gnu.org} a message stating your intent,
|
||||
listing the three committers who support your application, signed with
|
||||
the OpenPGP key you will use to sign commits, and giving its fingerprint
|
||||
(see below). See @uref{https://emailselfdefense.fsf.org/en/}, for an
|
||||
introduction to public-key cryptography with GnuPG.
|
||||
|
||||
@item
|
||||
Maintainers ultimately decide whether to grant you commit access,
|
||||
usually following your referrals' recommendation.
|
||||
|
||||
@item
|
||||
If and once you've been given access, please send a message to
|
||||
@email{guix-devel@@gnu.org} to say so, again signed with the OpenPGP key
|
||||
you will use to sign commits (do that before pushing your first commit).
|
||||
That way, everyone can notice and ensure you control that OpenPGP key.
|
||||
|
||||
@c TODO: Add note about adding the fingerprint to the list of authorized
|
||||
@c keys once that has stabilized.
|
||||
|
||||
@item
|
||||
Make sure to read the rest of this section and... profit!
|
||||
@end enumerate
|
||||
|
||||
@quotation Note
|
||||
Maintainers are happy to give commit access to people who have been
|
||||
contributing for some time and have a track record---don't be shy and
|
||||
don't underestimate your work!
|
||||
|
||||
However, note that the project is working towards a more automated patch
|
||||
review and merging system, which, as a consequence, may lead us to have
|
||||
fewer people with commit access to the main repository. Stay tuned!
|
||||
@end quotation
|
||||
|
||||
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}).
|
||||
|
||||
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}.
|
||||
|
||||
All commits that are pushed to the central repository on Savannah must
|
||||
be signed with an OpenPGP key, and the public key should be uploaded to
|
||||
your user account on Savannah and to public key servers, such as
|
||||
@code{keys.openpgp.org}. To configure Git to automatically sign
|
||||
commits, run:
|
||||
|
||||
@example
|
||||
git config commit.gpgsign true
|
||||
git config user.signingkey CABBA6EA1DC0FF33
|
||||
@end example
|
||||
|
||||
You can prevent yourself from accidentally pushing unsigned commits to
|
||||
Savannah by using the pre-push Git hook called located at
|
||||
@file{etc/git/pre-push}:
|
||||
|
||||
@example
|
||||
cp etc/git/pre-push .git/hooks/pre-push
|
||||
@end example
|
||||
|
||||
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.,
|
||||
with @command{git am --signoff}. This improves tracking of who did
|
||||
what.
|
||||
|
||||
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.
|
||||
|
||||
One last thing: the project keeps moving forward because committers not
|
||||
only push their own awesome changes, but also offer some of their time
|
||||
@emph{reviewing} and pushing other people's changes. As a committer,
|
||||
you're welcome to use your expertise and commit rights to help other
|
||||
contributors, too!
|
||||
|
||||
+2
-2
@@ -6,7 +6,7 @@
|
||||
|
||||
@display
|
||||
Copyright @copyright{} 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
|
||||
@uref{https://fsf.org/}
|
||||
@uref{http://fsf.org/}
|
||||
|
||||
Everyone is permitted to copy and distribute verbatim copies
|
||||
of this license document, but changing it is not allowed.
|
||||
@@ -414,7 +414,7 @@ The Free Software Foundation may publish new, revised versions
|
||||
of the GNU Free Documentation License from time to time. Such new
|
||||
versions will be similar in spirit to the present version, but may
|
||||
differ in detail to address new problems or concerns. See
|
||||
@uref{https://www.gnu.org/copyleft/}.
|
||||
@uref{http://www.gnu.org/copyleft/}.
|
||||
|
||||
Each version of the License is given a distinguishing version number.
|
||||
If the Document specifies that a particular numbered version of this
|
||||
|
||||
+8
-56
@@ -11,7 +11,6 @@
|
||||
Copyright @copyright{} 2019 Ricardo Wurmus@*
|
||||
Copyright @copyright{} 2019 Efraim Flashner@*
|
||||
Copyright @copyright{} 2019 Pierre Neidhardt@*
|
||||
Copyright @copyright{} 2020 Oleg Pykhalov@*
|
||||
|
||||
Permission is granted to copy, distribute and/or modify this document
|
||||
under the terms of the GNU Free Documentation License, Version 1.3 or
|
||||
@@ -1140,10 +1139,14 @@ For the other build systems, such as ASDF, Emacs, Perl, Ruby and many more, the
|
||||
process is very similar to the GNU build system except for a few specialized
|
||||
arguments.
|
||||
|
||||
@xref{Build Systems,,, guix, GNU Guix Reference Manual}, for more
|
||||
information on build systems, or check the source code in the
|
||||
@samp{$GUIX_CHECKOUT/guix/build} and
|
||||
Learn more about build systems in
|
||||
@itemize
|
||||
@item
|
||||
@uref{https://www.gnu.org/software/guix/manual/en/html_node/Build-Systems.html#Build-Systems, the manual, section 4.2 Build systems},
|
||||
@item
|
||||
the source code in the @samp{$GUIX_CHECKOUT/guix/build} and
|
||||
@samp{$GUIX_CHECKOUT/guix/build-system} directories.
|
||||
@end itemize
|
||||
|
||||
@node Programmable and automated package definition
|
||||
@subsection Programmable and automated package definition
|
||||
@@ -1320,8 +1323,7 @@ chapter is to demonstrate some advanced configuration concepts.
|
||||
reference.
|
||||
|
||||
@menu
|
||||
* Customizing the Kernel:: Creating and using a custom Linux kernel on Guix System.
|
||||
* Customizing a Window Manager:: Handle customization of a Window manager on Guix System.
|
||||
* Customizing the Kernel:: Creating and using a custom Linux kernel on Guix System.
|
||||
@end menu
|
||||
|
||||
@node Customizing the Kernel
|
||||
@@ -1564,56 +1566,6 @@ likely that you'll need to modify the initrd on a machine using a custom
|
||||
kernel, since certain modules which are expected to be built may not be
|
||||
available for inclusion into the initrd.
|
||||
|
||||
@node Customizing a Window Manager
|
||||
@section Customizing a Window Manager
|
||||
@cindex wm
|
||||
|
||||
@node StumpWM
|
||||
@subsection StumpWM
|
||||
@cindex stumpwm
|
||||
|
||||
You could install StumpWM with a Guix system by adding
|
||||
@code{stumpwm-checkout} and optionally @code{`(,stumpwm-checkout "lib")}
|
||||
packages to a system configuration file, e.g. @file{/etc/config.scm}.
|
||||
|
||||
An example configuration can look like this:
|
||||
|
||||
@lisp
|
||||
(use-modules (gnu))
|
||||
(use-package-modules wm)
|
||||
|
||||
(operating-system
|
||||
;; …
|
||||
(packages (append (list sbcl stumpwm-checkout `(,stumpwm-checkout "lib"))
|
||||
%base-packages)))
|
||||
@end lisp
|
||||
|
||||
@cindex stumpwm fonts
|
||||
By default StumpWM uses X11 fonts, which could be small or pixelated on
|
||||
your system. You could fix this by installing StumpWM contrib Lisp
|
||||
module @code{sbcl-stumpwm-ttf-fonts}, adding it to Guix system packages:
|
||||
|
||||
@lisp
|
||||
(use-modules (gnu))
|
||||
(use-package-modules fonts wm)
|
||||
|
||||
(operating-system
|
||||
;; …
|
||||
(packages (append (list sbcl stumpwm-checkout `(,stumpwm-checkout "lib"))
|
||||
sbcl-stumpwm-ttf-fonts font-dejavu %base-packages)))
|
||||
@end lisp
|
||||
|
||||
Then you need to add the following code to a StumpWM configuration file
|
||||
@file{~/.stumpwm.d/init.lisp}:
|
||||
|
||||
@lisp
|
||||
(require :ttf-fonts)
|
||||
(setf xft:*font-dirs* '("/run/current-system/profile/share/fonts/"))
|
||||
(setf clx-truetype:+font-cache-filename+ (concat (getenv "HOME") "/.fonts/font-cache.sexp"))
|
||||
(xft:cache-fonts)
|
||||
(set-font (make-instance 'xft:font :family "DejaVu Sans Mono" :subfamily "Book" :size 11))
|
||||
@end lisp
|
||||
|
||||
@c *********************************************************************
|
||||
@node Advanced package management
|
||||
@chapter Advanced package management
|
||||
|
||||
+131
-716
File diff suppressed because it is too large
Load Diff
+17
-28
@@ -1,9 +1,9 @@
|
||||
# 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=2020-01-11.22; # UTC
|
||||
htmlxrefversion=2019-05-04.20; # UTC
|
||||
|
||||
# Copyright 2010, 2011, 2012, 2013, 2014, 2015, 2019, 2020 Free Software Foundation, Inc.
|
||||
# Copyright 2010, 2011, 2012, 2013, 2014, 2015, 2019 Free Software Foundation, Inc.
|
||||
#
|
||||
# Copying and distribution of this file, with or without modification,
|
||||
# are permitted in any medium without royalty provided the copyright
|
||||
@@ -68,12 +68,12 @@ autogen node ${GS}/autoconf/manual/html_node/
|
||||
automake mono ${GS}/automake/manual/automake.html
|
||||
automake node ${GS}/automake/manual/html_node/
|
||||
|
||||
avl node http://adtinfo.org/libavl.html/
|
||||
avl node http://www.stanford.edu/~blp/avl/libavl.html/
|
||||
|
||||
bash mono ${GS}/bash/manual/bash.html
|
||||
bash node ${GS}/bash/manual/html_node/
|
||||
|
||||
BINUTILS = https://sourceware.org/binutils/docs
|
||||
BINUTILS = http://sourceware.org/binutils/docs
|
||||
binutils node ${BINUTILS}/binutils/
|
||||
as node ${BINUTILS}/as/
|
||||
bfd node ${BINUTILS}/bfd/
|
||||
@@ -110,15 +110,13 @@ cpio node ${GS}/cpio/manual/html_node/
|
||||
|
||||
cssc node ${GS}/cssc/manual/
|
||||
|
||||
CVS = ${GS}/trans-coord/manual
|
||||
cvs mono ${CVS}/cvs/cvs.html
|
||||
cvs node ${CVS}/cvs/html_node/
|
||||
#cvs cannot be handled here; see http://ximbiot.com/cvs/manual.
|
||||
|
||||
ddd mono ${GS}/ddd/manual/html_mono/ddd.html
|
||||
|
||||
ddrescue mono ${GS}/ddrescue/manual/ddrescue_manual.html
|
||||
|
||||
DICO = https://puszcza.gnu.org.ua/software/dico/manual
|
||||
DICO = http://puszcza.gnu.org.ua/software/dico/manual
|
||||
dico mono ${DICO}/dico.html
|
||||
dico chapter ${DICO}/html_chapter/
|
||||
dico section ${DICO}/html_section/
|
||||
@@ -169,9 +167,6 @@ emacs node ${EMACS}/html_node/emacs/
|
||||
eshell mono ${EMACS}/html_mono/eshell.html
|
||||
eshell node ${EMACS}/html_node/eshell/
|
||||
#
|
||||
eww mono ${EMACS}/html_mono/eww.html
|
||||
eww node ${EMACS}/html_node/eww/
|
||||
#
|
||||
flymake mono ${EMACS}/html_mono/flymake.html
|
||||
flymake node ${EMACS}/html_node/flymake/
|
||||
#
|
||||
@@ -239,7 +234,8 @@ find node ${GS}/findutils/manual/html_node/find_html
|
||||
findutils mono ${GS}/findutils/manual/html_mono/find.html
|
||||
findutils node ${GS}/findutils/manual/html_node/find_html
|
||||
|
||||
flex node https://westes.github.io/flex/manual/
|
||||
FLEX = http://flex.sourceforge.net
|
||||
flex node ${FLEX}/manual/
|
||||
|
||||
gama mono ${GS}/gama/manual/gama.html
|
||||
gama node ${GS}/gama/manual/html_node/
|
||||
@@ -253,7 +249,7 @@ gawk node ${GAWK}/html_node/
|
||||
gcal mono ${GS}/gcal/manual/gcal.html
|
||||
gcal node ${GS}/gcal/manual/html_node/
|
||||
|
||||
GCC = https://gcc.gnu.org/onlinedocs
|
||||
GCC = http://gcc.gnu.org/onlinedocs
|
||||
gcc node ${GCC}/gcc/
|
||||
cpp node ${GCC}/cpp/
|
||||
gcj node ${GCC}/gcj/
|
||||
@@ -269,7 +265,7 @@ gcc node ${GCC}/gcc/
|
||||
gnat-style node ${GCC}/gnat-style/
|
||||
libiberty node ${GCC}/libiberty/
|
||||
|
||||
GDB = https://sourceware.org/gdb/current/onlinedocs
|
||||
GDB = http://sourceware.org/gdb/current/onlinedocs
|
||||
gdb node ${GDB}/gdb/
|
||||
stabs node ${GDB}/stabs/
|
||||
|
||||
@@ -286,13 +282,13 @@ geiser chapter http://geiser.nongnu.org/
|
||||
gettext mono ${GS}/gettext/manual/gettext.html
|
||||
gettext node ${GS}/gettext/manual/html_node/
|
||||
|
||||
gforth node https://www.complang.tuwien.ac.at/forth/gforth/Docs-html/
|
||||
gforth node http://www.complang.tuwien.ac.at/forth/gforth/Docs-html/
|
||||
|
||||
global mono ${GS}/global/manual/global.html
|
||||
|
||||
gmediaserver node ${GS}/gmediaserver/manual/
|
||||
|
||||
gmp node https://www.gmplib.org/manual/
|
||||
gmp node http://www.gmplib.org/manual/
|
||||
|
||||
gnu-arch node ${GS}/gnu-arch/tutorial/
|
||||
|
||||
@@ -315,7 +311,7 @@ gnun node ${GNUN}/gnun/html_node/
|
||||
web-trans mono ${GNUN}/web-trans/web-trans.html
|
||||
web-trans node ${GNUN}/web-trans/html_node/
|
||||
|
||||
GNUPG = https://www.gnupg.org/documentation/manuals
|
||||
GNUPG = http://www.gnupg.org/documentation/manuals
|
||||
gnupg node ${GNUPG}/gnupg/
|
||||
dirmngr node ${GNUPG}/dirmngr/
|
||||
gcrypt node ${GNUPG}/gcrypt/
|
||||
@@ -403,10 +399,6 @@ guix.es mono ${GS}/guix/manual/es/guix.html
|
||||
guix.es node ${GS}/guix/manual/es/html_node/
|
||||
guix.fr mono ${GS}/guix/manual/fr/guix.html
|
||||
guix.fr node ${GS}/guix/manual/fr/html_node/
|
||||
guix.ru mono ${GS}/guix/manual/ru/guix.html
|
||||
guix.ru node ${GS}/guix/manual/ru/html_node/
|
||||
guix.zh_CN mono ${GS}/guix/manual/zh-cn/guix.html
|
||||
guix.zh_CN node ${GS}/guix/manual/zh-cn/html_node/
|
||||
guix mono ${GS}/guix/manual/en/guix.html
|
||||
guix node ${GS}/guix/manual/en/html_node/
|
||||
|
||||
@@ -507,9 +499,6 @@ METAEXCHANGE = http://ftp.gwdg.de/pub/gnu2/iwfmdh/doc/texinfo
|
||||
iwf_mh node ${METAEXCHANGE}/iwf_mh.html
|
||||
scantest node ${METAEXCHANGE}/scantest.html
|
||||
|
||||
mes mono ${GS}/mes/manual/mes.html
|
||||
mes node ${GS}/mes/manual/html_node/
|
||||
|
||||
MIT_SCHEME = ${GS}/mit-scheme/documentation
|
||||
mit-scheme-ref node ${MIT_SCHEME}/mit-scheme-ref/
|
||||
mit-scheme-user node ${MIT_SCHEME}/mit-scheme-user/
|
||||
@@ -526,9 +515,9 @@ mpfr mono http://www.mpfr.org/mpfr-current/mpfr.html
|
||||
|
||||
mtools mono ${GS}/mtools/manual/mtools.html
|
||||
|
||||
myserver mono http://www.myserverproject.net/doc.php
|
||||
myserver node http://www.myserverproject.net/documentation/
|
||||
|
||||
nano mono https://www.nano-editor.org/dist/latest/nano.html
|
||||
nano mono http://www.nano-editor.org/dist/latest/nano.html
|
||||
|
||||
nettle chapter http://www.lysator.liu.se/~nisse/nettle/nettle.html
|
||||
|
||||
@@ -561,7 +550,7 @@ pspp node ${GS}/pspp/manual/html_node/
|
||||
pyconfigure mono ${GS}/pyconfigure/manual/pyconfigure.html
|
||||
pyconfigure node ${GS}/pyconfigure/manual/html_node/
|
||||
|
||||
R = https://cran.r-project.org/doc/manuals
|
||||
R = http://cran.r-project.org/doc/manuals
|
||||
R-intro mono ${R}/R-intro.html
|
||||
R-lang mono ${R}/R-lang.html
|
||||
R-exts mono ${R}/R-exts.html
|
||||
@@ -667,7 +656,7 @@ xboard node ${GS}/xboard/manual/html_node/
|
||||
# emacs-page
|
||||
# Free TeX-related Texinfo manuals on tug.org.
|
||||
|
||||
T = https://tug.org/texinfohtml
|
||||
T = http://tug.org/texinfohtml
|
||||
|
||||
dvipng mono ${T}/dvipng.html
|
||||
dvips mono ${T}/dvips.html
|
||||
|
||||
+2
-4
@@ -27,8 +27,7 @@ info_TEXINFOS = %D%/guix.texi \
|
||||
%D%/guix.fr.texi \
|
||||
%D%/guix.ru.texi \
|
||||
%D%/guix.zh_CN.texi \
|
||||
%D%/guix-cookbook.texi \
|
||||
%D%/guix-cookbook.de.texi
|
||||
%D%/guix-cookbook.texi
|
||||
|
||||
%C%_guix_TEXINFOS = \
|
||||
%D%/contributing.texi \
|
||||
@@ -70,8 +69,7 @@ TRANSLATED_INFO = \
|
||||
%D%/contributing.es.texi \
|
||||
%D%/contributing.fr.texi \
|
||||
%D%/contributing.ru.texi \
|
||||
%D%/contributing.zh_CN.texi \
|
||||
%D%/guix-cookbook.de.texi
|
||||
%D%/contributing.zh_CN.texi
|
||||
|
||||
# Bundle this file so that makeinfo finds it in out-of-source-tree builds.
|
||||
BUILT_SOURCES += $(OS_CONFIG_EXAMPLES_TEXI) $(TRANSLATED_INFO)
|
||||
|
||||
@@ -178,7 +178,7 @@ _guix_complete ()
|
||||
_guix_complete_installed_package "$word_at_point"
|
||||
elif _guix_is_command "build"
|
||||
then
|
||||
if _guix_is_dash_L || _guix_is_dash_m
|
||||
if _guix_is_dash_L
|
||||
then
|
||||
_guix_complete_file
|
||||
else
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
;;; copyright.el --- Insert a Guix copyright.
|
||||
|
||||
;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
|
||||
|
||||
;; 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 this program. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; Commentary:
|
||||
|
||||
;; This package provides skeleton to insert a copyright with `guix-copyright'.
|
||||
|
||||
;;; Code:
|
||||
|
||||
(define-skeleton guix-copyright
|
||||
"Insert a copyright by $USER notice at cursor."
|
||||
"FULL_NAME <MAIL_ADDRESS>: "
|
||||
comment-start
|
||||
";; Copyright © " `(format-time-string "%Y") " "
|
||||
(or (format "%s <%s>" user-full-name user-mail-address) str)
|
||||
comment-end)
|
||||
|
||||
;;; copyright.el ends here
|
||||
@@ -361,17 +361,6 @@ sys_enable_guix_daemon()
|
||||
systemctl enable guix-daemon; } &&
|
||||
_msg "${PAS}enabled Guix daemon via systemd"
|
||||
;;
|
||||
sysv-init)
|
||||
{ mkdir -p /etc/init.d;
|
||||
cp "${ROOT_HOME}/.config/guix/current/etc/init.d/guix-daemon" \
|
||||
/etc/init.d/guix-daemon;
|
||||
chmod 775 /etc/init.d/guix-daemon;
|
||||
|
||||
update-rc.d guix-daemon defaults &&
|
||||
update-rc.d guix-daemon enable &&
|
||||
service guix-daemon start; } &&
|
||||
_msg "${PAS}enabled Guix daemon via sysv"
|
||||
;;
|
||||
NA|*)
|
||||
_msg "${ERR}unsupported init system; run the daemon manually:"
|
||||
echo " ${ROOT_HOME}/.config/guix/current/bin/guix-daemon --build-users-group=guixbuild"
|
||||
@@ -404,34 +393,6 @@ sys_authorize_build_farms()
|
||||
done
|
||||
}
|
||||
|
||||
sys_create_init_profile()
|
||||
{ # Create /etc/profile.d/guix.sh for better desktop integration
|
||||
[ -d "/etc/profile.d" ] || mkdir /etc/profile.d # Just in case
|
||||
cat <<"EOF" > /etc/profile.d/guix.sh
|
||||
# _GUIX_PROFILE: `guix pull` profile
|
||||
_GUIX_PROFILE="$HOME/.config/guix/current"
|
||||
if [ -L $_GUIX_PROFILE ]; then
|
||||
export PATH="$_GUIX_PROFILE/bin${PATH:+:}$PATH"
|
||||
# Export INFOPATH so that the updated info pages can be found
|
||||
# and read by both /usr/bin/info and/or $GUIX_PROFILE/bin/info
|
||||
# When INFOPATH is unset, add a trailing colon so that Emacs
|
||||
# searches 'Info-default-directory-list'.
|
||||
export INFOPATH="$_GUIX_PROFILE/share/info:$INFOPATH"
|
||||
fi
|
||||
|
||||
# GUIX_PROFILE: User's default profile
|
||||
GUIX_PROFILE="$HOME/.guix-profile"
|
||||
[ -L $GUIX_PROFILE ] || return
|
||||
GUIX_LOCPATH="$GUIX_PROFILE/lib/locale"
|
||||
export GUIX_PROFILE 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:-/usr/local/share/:/usr/share/}"
|
||||
EOF
|
||||
}
|
||||
|
||||
welcome()
|
||||
{
|
||||
cat<<"EOF"
|
||||
@@ -488,7 +449,6 @@ main()
|
||||
sys_create_build_user
|
||||
sys_enable_guix_daemon
|
||||
sys_authorize_build_farms
|
||||
sys_create_init_profile
|
||||
|
||||
_msg "${INF}cleaning up ${tmp_path}"
|
||||
rm -r "${tmp_path}"
|
||||
|
||||
@@ -1,78 +0,0 @@
|
||||
#!/bin/bash
|
||||
### BEGIN INIT INFO
|
||||
# Provides: guix-daemon
|
||||
# Required-Start: $remote_fs $syslog
|
||||
# Required-Stop: $remote_fs $syslog
|
||||
# Default-Start: 2 3 4 5
|
||||
# Default-Stop: 0 1 6
|
||||
# Short-Description: Guix build daemon
|
||||
# Description: Provides a daemon that does builds for Guix
|
||||
### END INIT INFO
|
||||
|
||||
set -e
|
||||
mkdir -p "/var/run"
|
||||
if [ ! -f "@localstatedir@/guix/profiles/per-user/root/current-guix/bin/guix-daemon" ]
|
||||
then
|
||||
exit 5
|
||||
fi
|
||||
|
||||
case "$1" in
|
||||
start)
|
||||
if [ -f "/var/run/guix-daemon.pid" ]
|
||||
then
|
||||
if pgrep -F "/var/run/guix-daemon.pid" guix-daemon
|
||||
then
|
||||
exit 0
|
||||
else
|
||||
echo "guix-daemon has a stale pid file" >&2
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
daemonize \
|
||||
-a \
|
||||
-e "/var/log/guix-daemon-stderr.log" \
|
||||
-o "/var/log/guix-daemon-stdout.log" \
|
||||
-E GUIX_LOCPATH=@localstatedir@/guix/profiles/per-user/root/guix-profile/lib/locale \
|
||||
-E LC_ALL=en_US.utf8 \
|
||||
-p "/var/run/guix-daemon.pid" \
|
||||
@localstatedir@/guix/profiles/per-user/root/current-guix/bin/guix-daemon \
|
||||
--build-users-group=guixbuild
|
||||
fi
|
||||
;;
|
||||
stop)
|
||||
if [ -f "/var/run/guix-daemon.pid" ]
|
||||
then
|
||||
pkill -F "/var/run/guix-daemon.pid" guix-daemon || {
|
||||
exit 1
|
||||
}
|
||||
rm -f "/var/run/guix-daemon.pid"
|
||||
exit 0
|
||||
else
|
||||
exit 0
|
||||
fi
|
||||
;;
|
||||
status)
|
||||
if [ -f "/var/run/guix-daemon.pid" ]
|
||||
then
|
||||
if pgrep -F "/var/run/guix-daemon.pid" guix-daemon
|
||||
then
|
||||
echo "guix-daemon is running"
|
||||
exit 0
|
||||
else
|
||||
echo "guix-daemon has a stale pid file"
|
||||
exit 1
|
||||
fi
|
||||
else
|
||||
echo "guix-daemon is not running"
|
||||
exit 3
|
||||
fi
|
||||
;;
|
||||
restart|force-reload)
|
||||
"$0" stop
|
||||
"$0" start
|
||||
;;
|
||||
*)
|
||||
echo "Usage: $0 (start|stop|status|restart|force-reload)"
|
||||
exit 3
|
||||
;;
|
||||
esac
|
||||
+2
-80
@@ -1,7 +1,6 @@
|
||||
;; GNU Guix news, for use by 'guix pull'.
|
||||
;;
|
||||
;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
;;
|
||||
;; Copying and distribution of this file, with or without modification, are
|
||||
;; permitted in any medium without royalty provided the copyright notice and
|
||||
@@ -10,79 +9,9 @@
|
||||
(channel-news
|
||||
(version 0)
|
||||
|
||||
(entry (commit "0468455e7d279c89ea3ad1b51935efb2b785ec47")
|
||||
(title (en "Rottlog service added to @code{%base-services}")
|
||||
(de "Rottlog-Dienst ist nun Teil der @code{%base-services}"))
|
||||
(body (en "An instance of @code{rottlog-service-type}, the system
|
||||
service responsible for log rotation, has been added to @code{%base-services}.
|
||||
If your operating system configuration for Guix System is explicitly adding
|
||||
@code{rottlog-service-type} to the services, you should now remove it. See
|
||||
the ``Log Rotation'' section of the manual for more information.")
|
||||
(de "Eine Instanz des @code{rottlog-service-type} für
|
||||
Log-Rotation wurde zu den @code{%base-services} hinzugefügt. Wenn der
|
||||
Systemdienst bereits in Ihrer Konfiguration für Guix System ausdrücklich
|
||||
genannt wurde, sollten Sie ihn jetzt daraus entfernen. Siehe den Abschnitt
|
||||
„Log-Rotation“ im Handbuch für weitere Informationen.")))
|
||||
|
||||
(entry (commit "e3e1a7ba08af2d58c47264c543617e499c239444")
|
||||
(title (en "@command{guix pull} now supports SSH authenticated
|
||||
repositories")
|
||||
(de "@command{guix pull} unterstützt nun SSH-authentifizierte
|
||||
Repositorys")
|
||||
(fr "@command{guix pull} prend maintenant en charge
|
||||
l'authentification en SSH pour les dépôts.")
|
||||
(nl "@command{guix pull} ondersteunt nu SSH-geauthenticeerde
|
||||
repository's."))
|
||||
(body (en "The @command{guix pull} command now supports SSH
|
||||
authenticated repositories as argument of @option{--url} and in custom
|
||||
channels definitions. The authentication requires that an @command{ssh-agent}
|
||||
is running.")
|
||||
(de "Der Befehl @command{guix pull} unterstützt nun über SSH
|
||||
authentifizierte Repositorys als Argument von @option{--url} und in
|
||||
selbstgeschriebenen Kanaldefinitionen. Zur Authentisierung muss ein
|
||||
@command{ssh-agent} laufen.")
|
||||
(fr "La commande @command{guix pull} prend maintenant en
|
||||
charge l'authentification SSH pour les dépôts dans l'argument @option{--url}
|
||||
et dans le définitions de canaux personnalisés. L'authentification
|
||||
nécessite qu'un @command{ssh-agent} soit lancé.")
|
||||
(nl "Het @command{guix pull}-commando ondersteunt nu
|
||||
SSH-geauthenticeerde opslag als argument na @option{--url} en bij het
|
||||
schrijven van eigen kanaaldefinities. Hiervoor moet een @command{ssh-agent}
|
||||
gestart zijn.")))
|
||||
|
||||
(entry (commit "8234fe653e61d0090138cbd4c48d877568355439")
|
||||
(title (en "Guix now runs on Guile 3.0")
|
||||
(de "Guix läuft jetzt auf Guile 3.0")
|
||||
(fr "Guix tourne maintenant sous Guile 3.0")
|
||||
(nl "Guix draait nu op Guile 3.0"))
|
||||
(body (en "The Guix revision you just pulled runs on version 3.0 of
|
||||
GNU@tie{}Guile (previously it would run on version 2.2). Guile 3.0 improves
|
||||
performance through the use of just-in-time (JIT) native code generation. The
|
||||
switch should be entirely transparent to you. See
|
||||
@uref{https://gnu.org/software/guile} for more information on Guile 3.0.")
|
||||
(de "Die Guix-Version, die Sie gerade gepullt haben, läuft auf
|
||||
Version 3.0 von GNU@tie{}Guile (und nicht mehr auf Version 2.2). Guile 3.0
|
||||
verbessert die Rechenleistung, indem native Maschinenbefehle „just in time“
|
||||
erzeugt werden (JIT-Kompilierung). Der Wechsel sollte für Sie völlig
|
||||
transparent sein und Guix verhält sich gleich. Siehe
|
||||
@uref{https://gnu.org/software/guile} für weitere Informationen zu Guile
|
||||
3.0.")
|
||||
(fr "La révision de Guix que tu viens de récupérer tourne sous
|
||||
la version 3.0 de GNU@tie{}Guile (Guix tournait avant sous la version 2.2).
|
||||
Guile 3.0 améliore la performance en générant du code natif à la volée (JIT).
|
||||
Le changement devrait être totalement transparent pour toi. Voir
|
||||
@uref{https://gnu.org/software/guile} pour plus d'information sur Guile 3.0.")
|
||||
(nl "De Guix die u net heeft gepulld gebruikt versie 3.0 van
|
||||
GNU@tie{}Guile (voorheen was dat versie 2.2). Guile@tie{}3.0 draait dezelfde
|
||||
programma's doorgaans sneller door ze ‘just-in-time’ (JIT) te vertalen naar
|
||||
machine-instructies. De omschakeling zou voor u volledig naadloos moeten
|
||||
zijn. Lees @uref{https://gnu.org/software/guile} voor meer informatie over
|
||||
Guile@tie{}3.0.")))
|
||||
|
||||
(entry (commit "828a39da68a9169ef1d9f9ff02a1c66b1bcbe884")
|
||||
(title (en "New @option{--diff} option for @command{guix challenge}")
|
||||
(de "Neue @option{--diff}-Option für @command{guix challenge}")
|
||||
(fr "Nouvelle option @option{--diff} sur @command{guix challenge}"))
|
||||
(de "Neue @option{--diff}-Option für @command{guix challenge}"))
|
||||
(body (en "The @command{guix challenge} command, which compares
|
||||
binaries provided by different substitute servers as well as those built
|
||||
locally, has a new @option{--diff} option. With @option{--diff=simple} (the
|
||||
@@ -90,13 +19,6 @@ default), @command{guix challenge} automatically downloads binaries and
|
||||
reports the list of differing files; @option{--diff=diffoscope} instructs it
|
||||
to pass them to @command{diffoscope}, which simplifies the comparison process.
|
||||
Run @command{info \"(guix) Invoking guix challenge\"}, for more info.")
|
||||
(fr "La commande @command{guix challenge} qui compare les binaires
|
||||
fournis par différents serveurs de substituts aux contsructions locales a une
|
||||
nouvelle option @option{--diff}. Avec @option{--diff=simple} (par défaut),
|
||||
@command{guix challenge} télécharge automatiquement les binaires et rapporte
|
||||
la liste des fichiers différents@tie{}; @option{--diff=diffoscope} lui dit
|
||||
de les passer à @command{diffoscope} qui simplifie le processus de comparaison.
|
||||
Lance @command{info \"(guix.fr) Invoquer guix challenge\"} pour plus d'info.")
|
||||
(de "Der Befehl @command{guix challenge}, mit dem Binärdateien
|
||||
von unterschiedlichen Substitut-Servern oder lokale Erstellungen miteinander
|
||||
verglichen werden können, hat eine neue Befehlszeilenoption @option{--diff}
|
||||
|
||||
@@ -1,129 +0,0 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; This file returns a manifest containing release-critical bit, for all the
|
||||
;;; supported architectures and cross-compilation targets.
|
||||
|
||||
(use-modules (gnu packages)
|
||||
(guix packages)
|
||||
(guix profiles)
|
||||
((gnu ci) #:select (%cross-targets))
|
||||
((gnu services xorg) #:select (%default-xorg-modules))
|
||||
(guix utils)
|
||||
(srfi srfi-1)
|
||||
(srfi srfi-26))
|
||||
|
||||
(define* (package->manifest-entry* package system
|
||||
#:key target)
|
||||
"Return a manifest entry for PACKAGE on SYSTEM, optionally cross-compiled to
|
||||
TARGET."
|
||||
(manifest-entry
|
||||
(inherit (package->manifest-entry package))
|
||||
(name (string-append (package-name package) "." system
|
||||
(if target
|
||||
(string-append "." target)
|
||||
"'")))
|
||||
(item (with-parameters ((%current-system system)
|
||||
(%current-target-system target))
|
||||
package))))
|
||||
|
||||
(define %base-packages
|
||||
;; Packages that must be substitutable on all the platforms Guix supports.
|
||||
(map specification->package
|
||||
'("bootstrap-tarballs" "gcc-toolchain" "nss-certs"
|
||||
"openssh" "emacs" "vim" "python" "guile" "guix")))
|
||||
|
||||
(define %system-packages
|
||||
;; Key packages proposed by the Guix System installer.
|
||||
(append (map specification->package
|
||||
'("xorg-server" "xfce" "gnome" "mate" "enlightenment"
|
||||
"openbox" "awesome" "i3-wm" "ratpoison"
|
||||
"xlockmore" "slock" "libreoffice"
|
||||
"connman" "network-manager" "network-manager-applet"
|
||||
"openssh" "ntp" "tor"
|
||||
"linux-libre" "grub-hybrid"
|
||||
;; FIXME: Add IceCat when Rust is available on i686.
|
||||
;;"icecat"
|
||||
))
|
||||
%default-xorg-modules))
|
||||
|
||||
(define %packages-to-cross-build
|
||||
;; Packages that must be cross-buildable from x86_64-linux.
|
||||
;; FIXME: Add (@ (gnu packages gcc) gcc) when <https://bugs.gnu.org/40463>
|
||||
;; is fixed.
|
||||
(append (list (@ (gnu packages guile) guile-2.2/fixed))
|
||||
(map specification->package
|
||||
'("coreutils" "grep" "sed" "findutils" "diffutils" "patch"
|
||||
"gawk" "gettext" "gzip" "xz"
|
||||
"hello" "zlib"))))
|
||||
|
||||
(define %packages-to-cross-build-for-mingw
|
||||
;; Many things don't build for MinGW. Restrict to what's known to work.
|
||||
(map specification->package '("hello")))
|
||||
|
||||
(define %cross-bootstrap-targets
|
||||
;; Cross-compilation triplets for which 'bootstrap-tarballs' must be
|
||||
;; buildable.
|
||||
'("i586-pc-gnu"
|
||||
"arm-linux-gnueabihf"
|
||||
"aarch64-linux-gnu"))
|
||||
|
||||
|
||||
;;;
|
||||
;;; Manifests.
|
||||
;;;
|
||||
|
||||
(define %base-manifest
|
||||
(manifest
|
||||
(append-map (lambda (system)
|
||||
(map (cut package->manifest-entry* <> system)
|
||||
%base-packages))
|
||||
%hydra-supported-systems)))
|
||||
|
||||
(define %system-manifest
|
||||
(manifest
|
||||
(append-map (lambda (system)
|
||||
(map (cut package->manifest-entry* <> system)
|
||||
%system-packages))
|
||||
'("x86_64-linux" "i686-linux")))) ;Guix System
|
||||
|
||||
(define %cross-manifest
|
||||
(manifest
|
||||
(append-map (lambda (target)
|
||||
(map (cut package->manifest-entry* <> "x86_64-linux"
|
||||
#:target target)
|
||||
(if (target-mingw? target)
|
||||
%packages-to-cross-build-for-mingw
|
||||
%packages-to-cross-build)))
|
||||
;; XXX: Important bits like libsigsegv and libffi don't support
|
||||
;; RISCV at the moment, so don't require RISCV support.
|
||||
(delete "riscv64-linux-gnu" %cross-targets))))
|
||||
|
||||
(define %cross-bootstrap-manifest
|
||||
(manifest
|
||||
(map (lambda (target)
|
||||
(package->manifest-entry*
|
||||
(specification->package "bootstrap-tarballs")
|
||||
"x86_64-linux" #:target target))
|
||||
%cross-bootstrap-targets)))
|
||||
|
||||
;; Return the union of all three manifests.
|
||||
(concatenate-manifests (list %base-manifest
|
||||
%system-manifest
|
||||
%cross-manifest
|
||||
%cross-bootstrap-manifest))
|
||||
@@ -1,98 +0,0 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2016, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(use-modules (gnu tests)
|
||||
(gnu packages package-management)
|
||||
((gnu ci) #:select (channel-source->package))
|
||||
((guix git-download) #:select (git-predicate))
|
||||
((guix utils) #:select (current-source-directory))
|
||||
(git)
|
||||
(ice-9 match))
|
||||
|
||||
(define (source-commit directory)
|
||||
"Return the commit of the head of DIRECTORY or #f if it could not be
|
||||
determined."
|
||||
(let ((repository #f))
|
||||
(catch 'git-error
|
||||
(lambda ()
|
||||
(set! repository (repository-open directory))
|
||||
(let* ((head (repository-head repository))
|
||||
(target (reference-target head))
|
||||
(commit (oid->string target)))
|
||||
(repository-close! repository)
|
||||
commit))
|
||||
(lambda _
|
||||
(when repository
|
||||
(repository-close! repository))
|
||||
#f))))
|
||||
|
||||
(define (tests-for-current-guix source commit)
|
||||
"Return a list of tests for perform, using Guix built from SOURCE, a channel
|
||||
instance."
|
||||
;; Honor the 'TESTS' environment variable so that one can select a subset
|
||||
;; of tests to run in the usual way:
|
||||
;;
|
||||
;; make check-system TESTS=installed-os
|
||||
(parameterize ((current-guix-package
|
||||
(channel-source->package source #:commit commit)))
|
||||
(match (getenv "TESTS")
|
||||
(#f
|
||||
(all-system-tests))
|
||||
((= string-tokenize (tests ...))
|
||||
(filter (lambda (test)
|
||||
(member (system-test-name test) tests))
|
||||
(all-system-tests))))))
|
||||
|
||||
(define (system-test->manifest-entry test)
|
||||
"Return a manifest entry for TEST, a system test."
|
||||
(manifest-entry
|
||||
(name (string-append "test." (system-test-name test)))
|
||||
(version "0")
|
||||
(item test)))
|
||||
|
||||
(define (system-test-manifest)
|
||||
"Return a manifest containing all the system tests, or all those selected by
|
||||
the 'TESTS' environment variable."
|
||||
(define source
|
||||
(string-append (current-source-directory) "/.."))
|
||||
|
||||
(define commit
|
||||
;; Fetch the current commit ID so we can potentially build the same
|
||||
;; derivation as ci.guix.gnu.org.
|
||||
(source-commit source))
|
||||
|
||||
;; Intern SOURCE so that 'build-from-source' in (guix channels) sees
|
||||
;; "fresh" file names and thus doesn't find itself loading .go files
|
||||
;; from ~/.cache/guile when it loads 'build-aux/build-self.scm'.
|
||||
(let* ((source (local-file source
|
||||
(if commit
|
||||
(string-append "guix-"
|
||||
(string-take commit 7))
|
||||
"guix-source")
|
||||
#:recursive? #t
|
||||
#:select?
|
||||
(or (git-predicate source)
|
||||
(const #t))))
|
||||
(tests (tests-for-current-guix source commit)))
|
||||
(format (current-error-port) "Selected ~a system tests...~%"
|
||||
(length tests))
|
||||
|
||||
(manifest (map system-test->manifest-entry tests))))
|
||||
|
||||
;; Return the manifest.
|
||||
(system-test-manifest)
|
||||
+25
-31
@@ -3,8 +3,6 @@
|
||||
;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com>
|
||||
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
|
||||
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;; Copyright © 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -30,13 +28,12 @@
|
||||
#:use-module (gnu system uuid)
|
||||
#:use-module (gnu system file-systems)
|
||||
#:use-module (gnu system keyboard)
|
||||
#:use-module (gnu packages bootloaders)
|
||||
#:autoload (gnu packages bootloaders) (grub)
|
||||
#:autoload (gnu packages gtk) (guile-cairo guile-rsvg)
|
||||
#:autoload (gnu packages xorg) (xkeyboard-config)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (ice-9 regex)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-2)
|
||||
#:export (grub-image
|
||||
grub-image?
|
||||
grub-image-aspect-ratio
|
||||
@@ -91,9 +88,7 @@ denoting a file name."
|
||||
(color-normal grub-theme-color-normal
|
||||
(default '((fg . cyan) (bg . blue))))
|
||||
(color-highlight grub-theme-color-highlight
|
||||
(default '((fg . white) (bg . blue))))
|
||||
(gfxmode grub-gfxmode
|
||||
(default '("auto")))) ;list of string
|
||||
(default '((fg . white) (bg . blue)))))
|
||||
|
||||
(define %background-image
|
||||
(grub-image
|
||||
@@ -150,26 +145,29 @@ STORE-MOUNT-POINT is its mount point; these are used to determine where the
|
||||
background image and fonts must be searched for. SYSTEM must be the target
|
||||
system string---e.g., \"x86_64-linux\"."
|
||||
(define setup-gfxterm-body
|
||||
(let ((gfxmode
|
||||
(or (and-let* ((theme (bootloader-configuration-theme config))
|
||||
(gfxmode (grub-gfxmode theme)))
|
||||
(string-join gfxmode ";"))
|
||||
"auto")))
|
||||
;; Intel and EFI systems need to be switched into graphics mode, whereas
|
||||
;; most other modern architectures have no other mode and therefore don't
|
||||
;; need to be switched.
|
||||
(if (string-match "^(x86_64|i[3-6]86)-" system)
|
||||
"
|
||||
# Leave 'gfxmode' to 'auto'.
|
||||
insmod video_bochs
|
||||
insmod video_cirrus
|
||||
insmod gfxterm
|
||||
|
||||
;; Intel and EFI systems need to be switched into graphics mode, whereas
|
||||
;; most other modern architectures have no other mode and therefore
|
||||
;; don't need to be switched.
|
||||
|
||||
;; XXX: Do we really need to restrict to x86 systems? We could imitate
|
||||
;; what the GRUB default configuration does and decide based on whether
|
||||
;; a user provided 'gfxterm' in the terminal-outputs field of their
|
||||
;; bootloader-configuration record.
|
||||
(if (string-match "^(x86_64|i[3-6]86)-" system)
|
||||
(format #f "
|
||||
set gfxmode=~a
|
||||
insmod all_video
|
||||
insmod gfxterm~%" gfxmode)
|
||||
"")))
|
||||
if [ \"${grub_platform}\" == efi ]; then
|
||||
# This is for (U)EFI systems (these modules are unavailable in the
|
||||
# non-EFI GRUB.) If we don't load them, GRUB boots in \"blind mode\",
|
||||
# which isn't convenient.
|
||||
insmod efi_gop
|
||||
insmod efi_uga
|
||||
else
|
||||
# These are specific to non-EFI Intel machines.
|
||||
insmod vbe
|
||||
insmod vga
|
||||
fi
|
||||
"
|
||||
""))
|
||||
|
||||
(define (setup-gfxterm config font-file)
|
||||
(if (memq 'gfxterm (bootloader-configuration-terminal-outputs config))
|
||||
@@ -240,11 +238,7 @@ the 'share/X11/xkb/symbols/' directory of 'xkeyboard-config'."
|
||||
"-i" #+(keyboard-layout->console-keymap layout)
|
||||
"-o" #$output))))
|
||||
|
||||
(computed-file (string-append "grub-keymap."
|
||||
(string-map (match-lambda
|
||||
(#\, #\-)
|
||||
(chr chr))
|
||||
(keyboard-layout-name layout)))
|
||||
(computed-file (string-append "grub-keymap." (keyboard-layout-name layout))
|
||||
builder))
|
||||
|
||||
(define (grub-setup-io config)
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2017 David Craven <david@craven.ch>
|
||||
;;; Copyright © 2017, 2019 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -29,7 +28,6 @@
|
||||
u-boot-a20-olinuxino-micro-bootloader
|
||||
u-boot-bananapi-m2-ultra-bootloader
|
||||
u-boot-beaglebone-black-bootloader
|
||||
u-boot-cubietruck-bootloader
|
||||
u-boot-firefly-rk3399-bootloader
|
||||
u-boot-mx6cuboxi-bootloader
|
||||
u-boot-nintendo-nes-classic-edition-bootloader
|
||||
@@ -182,11 +180,6 @@
|
||||
(inherit u-boot-allwinner-bootloader)
|
||||
(package u-boot-bananapi-m2-ultra)))
|
||||
|
||||
(define u-boot-cubietruck-bootloader
|
||||
(bootloader
|
||||
(inherit u-boot-allwinner-bootloader)
|
||||
(package u-boot-cubietruck)))
|
||||
|
||||
(define u-boot-firefly-rk3399-bootloader
|
||||
;; SD and eMMC use the same format
|
||||
(bootloader
|
||||
|
||||
@@ -281,13 +281,9 @@ second element is the name it should appear at, such as:
|
||||
|
||||
(define (activate-modprobe modprobe)
|
||||
"Tell the kernel to use MODPROBE to load modules."
|
||||
|
||||
;; If the kernel was built without loadable module support, this file is
|
||||
;; unavailable, so check for its existence first.
|
||||
(when (file-exists? "/proc/sys/kernel/modprobe")
|
||||
(call-with-output-file "/proc/sys/kernel/modprobe"
|
||||
(lambda (port)
|
||||
(display modprobe port)))))
|
||||
(call-with-output-file "/proc/sys/kernel/modprobe"
|
||||
(lambda (port)
|
||||
(display modprobe port))))
|
||||
|
||||
(define (activate-firmware directory)
|
||||
"Tell the kernel to look for device firmware under DIRECTORY. This
|
||||
|
||||
@@ -4,8 +4,6 @@
|
||||
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
|
||||
;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2019 David C. Trudgian <dave@trudgian.net>
|
||||
;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -345,10 +343,6 @@ if DEVICE does not contain a JFS file system."
|
||||
;; <https://gitlab.com/cryptsetup/cryptsetup/wikis/Specification>. We follow
|
||||
;; version 1.2.1 of this document.
|
||||
|
||||
;; The LUKS2 header format is described in "LUKS2 On-Disk Format Specification":
|
||||
;; <https://gitlab.com/cryptsetup/LUKS2-docs/blob/master/luks2_doc_wip.pdf>.
|
||||
;; It is a WIP document.
|
||||
|
||||
(define-syntax %luks-endianness
|
||||
;; Endianness of LUKS headers.
|
||||
(identifier-syntax (endianness big)))
|
||||
@@ -362,16 +356,12 @@ if DEVICE does not contain a JFS file system."
|
||||
(let ((magic (sub-bytevector sblock 0 6))
|
||||
(version (bytevector-u16-ref sblock 6 %luks-endianness)))
|
||||
(and (bytevector=? magic %luks-magic)
|
||||
(or (= version 1) (= version 2)))))
|
||||
(= version 1))))
|
||||
|
||||
(define (read-luks-header file)
|
||||
"Read a LUKS header from FILE. Return the raw header on success, and #f if
|
||||
not valid header was found."
|
||||
;; Size in bytes of the LUKS binary header, which includes key slots in
|
||||
;; LUKS1. In LUKS2 the binary header is partially backward compatible, so
|
||||
;; that UUID can be extracted as for LUKS1. Keyslots and other metadata are
|
||||
;; not part of this header in LUKS2, but are included in the JSON metadata
|
||||
;; area that follows.
|
||||
;; Size in bytes of the LUKS header, including key slots.
|
||||
(read-superblock file 0 592 luks-superblock?))
|
||||
|
||||
(define (luks-header-uuid header)
|
||||
@@ -582,7 +572,6 @@ were found."
|
||||
((string-prefix? "btrfs" type) check-btrfs-file-system)
|
||||
((string-suffix? "fat" type) check-fat-file-system)
|
||||
((string-prefix? "jfs" type) check-jfs-file-system)
|
||||
((string-prefix? "nfs" type) (const 'pass))
|
||||
(else #f)))
|
||||
|
||||
(if check-procedure
|
||||
|
||||
@@ -362,12 +362,12 @@ the last argument of `mknod'."
|
||||
"Mount the root file system of type TYPE at device ROOT. If VOLATILE-ROOT? is
|
||||
true, mount ROOT read-only and make it an overlay with a writable tmpfs using
|
||||
the kernel built-in overlayfs. FLAGS and OPTIONS indicates the options to use
|
||||
to mount ROOT, and behave the same as for the `mount' procedure."
|
||||
to mount ROOT."
|
||||
|
||||
(if volatile-root?
|
||||
(begin
|
||||
(mkdir-p "/real-root")
|
||||
(mount root "/real-root" type (logior MS_RDONLY flags) options)
|
||||
(mount root "/real-root" type MS_RDONLY options)
|
||||
(mkdir-p "/rw-root")
|
||||
(mount "none" "/rw-root" "tmpfs")
|
||||
|
||||
|
||||
@@ -22,14 +22,12 @@
|
||||
#:use-module (guix elf)
|
||||
#:use-module (guix glob)
|
||||
#:use-module (guix build syscalls)
|
||||
#:use-module ((guix build utils) #:select (find-files invoke))
|
||||
#:use-module (guix build union)
|
||||
#:use-module ((guix build utils) #:select (find-files))
|
||||
#:use-module (rnrs io ports)
|
||||
#:use-module (rnrs bytevectors)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-11)
|
||||
#:use-module (srfi srfi-26)
|
||||
#:use-module (ice-9 ftw)
|
||||
#:use-module (ice-9 vlist)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (ice-9 rdelim)
|
||||
@@ -58,9 +56,7 @@
|
||||
|
||||
write-module-name-database
|
||||
write-module-alias-database
|
||||
write-module-device-database
|
||||
|
||||
make-linux-module-directory))
|
||||
write-module-device-database))
|
||||
|
||||
;;; Commentary:
|
||||
;;;
|
||||
@@ -635,42 +631,4 @@ be loaded on-demand, such as file system modules."
|
||||
module devname type major minor)))
|
||||
aliases))))
|
||||
|
||||
(define (depmod version directory)
|
||||
"Given an (existing) DIRECTORY, invoke depmod on it for
|
||||
kernel version VERSION."
|
||||
(let ((destination-directory (string-append directory "/lib/modules/"
|
||||
version))
|
||||
;; Note: "System.map" is an input file.
|
||||
(maps-file (string-append directory "/System.map"))
|
||||
;; Note: "Module.symvers" is an input file.
|
||||
(symvers-file (string-append directory "/Module.symvers")))
|
||||
;; These files will be regenerated by depmod below.
|
||||
(for-each (lambda (basename)
|
||||
(when (and (string-prefix? "modules." basename)
|
||||
;; Note: "modules.builtin" is an input file.
|
||||
(not (string=? "modules.builtin" basename))
|
||||
;; Note: "modules.order" is an input file.
|
||||
(not (string=? "modules.order" basename)))
|
||||
(delete-file (string-append destination-directory "/"
|
||||
basename))))
|
||||
(scandir destination-directory))
|
||||
(invoke "depmod"
|
||||
"-e" ; Report symbols that aren't supplied
|
||||
;"-w" ; Warn on duplicates
|
||||
"-b" directory
|
||||
"-F" maps-file
|
||||
;"-E" symvers-file ; using both "-E" and "-F" is not possible.
|
||||
version)))
|
||||
|
||||
(define (make-linux-module-directory inputs version output)
|
||||
"Create a new directory OUTPUT and ensure that the directory
|
||||
OUTPUT/lib/modules/VERSION can be used as a source of Linux
|
||||
kernel modules for the first kmod in PATH now to eventually
|
||||
load. Take modules to put into OUTPUT from INPUTS.
|
||||
|
||||
Right now that means it creates @code{modules.*.bin} which
|
||||
@command{modprobe} will use to find loadable modules."
|
||||
(union-build output inputs #:create-all-directories? #t)
|
||||
(depmod version output))
|
||||
|
||||
;;; linux-modules.scm ends here
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2018 Chris Marusich <cmmarusich@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
@@ -204,7 +204,6 @@ MARIONETTE. Raise an error on failure."
|
||||
(catch 'system-error
|
||||
(lambda ()
|
||||
(connect sock AF_INET INADDR_LOOPBACK ,port)
|
||||
(close-port sock)
|
||||
'success)
|
||||
(lambda args
|
||||
(if (< i ,timeout)
|
||||
@@ -228,7 +227,6 @@ accept connections in MARIONETTE. Raise an error on failure."
|
||||
(catch 'system-error
|
||||
(lambda ()
|
||||
(connect sock AF_UNIX ,file-name)
|
||||
(close-port sock)
|
||||
'success)
|
||||
(lambda args
|
||||
(if (< i ,timeout)
|
||||
@@ -317,8 +315,8 @@ PREDICATE, whichever comes first. Raise an error when TIMEOUT is exceeded."
|
||||
(#\( . "shift-9")
|
||||
(#\) . "shift-0")
|
||||
(#\/ . "slash")
|
||||
(#\< . "shift-comma")
|
||||
(#\> . "shift-dot")
|
||||
(#\< . "less")
|
||||
(#\> . "shift-less")
|
||||
(#\. . "dot")
|
||||
(#\, . "comma")
|
||||
(#\; . "semicolon")
|
||||
|
||||
+1
-29
@@ -1,11 +1,10 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2016 Christopher Allan Webber <cwebber@dustycloud.org>
|
||||
;;; Copyright © 2016, 2017 Leo Famulari <leo@famulari.name>
|
||||
;;; Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
|
||||
;;; Copyright © 2018 Chris Marusich <cmmarusich@gmail.com>
|
||||
;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -184,15 +183,6 @@ the #:references-graphs parameter of 'derivation'."
|
||||
'())
|
||||
arch-specific-flags))
|
||||
|
||||
(unless (file-exists? "xchg/.exit-status")
|
||||
(error "VM did not produce an exit code"))
|
||||
|
||||
(match (call-with-input-file "xchg/.exit-status" read)
|
||||
(0 #t)
|
||||
(status (error "guest VM code exited with a non-zero status" status)))
|
||||
|
||||
(delete-file "xchg/.exit-status")
|
||||
|
||||
;; When MAKE-DISK-IMAGE? is true, the image is in OUTPUT already.
|
||||
(unless make-disk-image?
|
||||
(if single-file-output?
|
||||
@@ -534,24 +524,6 @@ GRUB configuration and OS-DRV as the stuff in it."
|
||||
;; Set all timestamps to 1.
|
||||
"-volume_date" "all_file_dates" "=1"
|
||||
|
||||
;; ‘zisofs’ compression reduces the total image size by ~60%.
|
||||
"-zisofs" "level=9:block_size=128k" ; highest compression
|
||||
;; It's transparent to our Linux-Libre kernel but not to GRUB.
|
||||
;; Don't compress the kernel, initrd, and other files read by
|
||||
;; grub.cfg, as well as common already-compressed file names.
|
||||
"-find" "/" "-type" "f"
|
||||
;; XXX Even after "--" above, and despite documentation claiming
|
||||
;; otherwise, "-or" is stolen by grub-mkrescue which then chokes
|
||||
;; on it (as ‘-o …’) and dies. Don't use "-or".
|
||||
"-not" "-wholename" "/boot/*"
|
||||
"-not" "-wholename" "/System/*"
|
||||
"-not" "-name" "unicode.pf2"
|
||||
"-not" "-name" "bzImage"
|
||||
"-not" "-name" "*.gz" ; initrd & all man pages
|
||||
"-not" "-name" "*.png" ; includes grub-image.png
|
||||
"-exec" "set_filter" "--zisofs"
|
||||
"--"
|
||||
|
||||
"-volid" (string-upcase volume-id)
|
||||
(if volume-uuid
|
||||
`("-volume_date" "uuid"
|
||||
|
||||
+60
-70
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2017 Jan Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2018, 2019 Clément Lassieur <clement@lassieur.org>
|
||||
;;;
|
||||
@@ -28,7 +28,6 @@
|
||||
#:use-module (guix derivations)
|
||||
#:use-module (guix build-system)
|
||||
#:use-module (guix monads)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (guix ui)
|
||||
#:use-module ((guix licenses)
|
||||
#:select (gpl3+ license? license-name))
|
||||
@@ -55,8 +54,7 @@
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-26)
|
||||
#:use-module (ice-9 match)
|
||||
#:export (%cross-targets
|
||||
channel-source->package
|
||||
#:export (channel-instance->package
|
||||
hydra-jobs))
|
||||
|
||||
;;; Commentary:
|
||||
@@ -128,57 +126,14 @@ SYSTEM."
|
||||
|
||||
(define %cross-targets
|
||||
'("mips64el-linux-gnu"
|
||||
"mips64el-linux-gnuabi64"
|
||||
"arm-linux-gnueabihf"
|
||||
"aarch64-linux-gnu"
|
||||
"powerpc-linux-gnu"
|
||||
"riscv64-linux-gnu"
|
||||
"i586-pc-gnu" ;aka. GNU/Hurd
|
||||
"i686-w64-mingw32"
|
||||
"x86_64-w64-mingw32"))
|
||||
|
||||
(define (cross-jobs store system)
|
||||
"Return a list of cross-compilation jobs for SYSTEM."
|
||||
(define (from-32-to-64? target)
|
||||
;; Return true if SYSTEM is 32-bit and TARGET is 64-bit. This hack
|
||||
;; prevents known-to-fail cross-builds from i686-linux or armhf-linux to
|
||||
;; mips64el-linux-gnuabi64.
|
||||
(and (or (string-prefix? "i686-" system)
|
||||
(string-prefix? "i586-" system)
|
||||
(string-prefix? "armhf-" system))
|
||||
(string-contains target "64"))) ;x86_64, mips64el, aarch64, etc.
|
||||
|
||||
(define (same? target)
|
||||
;; Return true if SYSTEM and TARGET are the same thing. This is so we
|
||||
;; don't try to cross-compile to 'mips64el-linux-gnu' from
|
||||
;; 'mips64el-linux'.
|
||||
(or (string-contains target system)
|
||||
(and (string-prefix? "armhf" system) ;armhf-linux
|
||||
(string-prefix? "arm" target)))) ;arm-linux-gnueabihf
|
||||
|
||||
(define (pointless? target)
|
||||
;; Return #t if it makes no sense to cross-build to TARGET from SYSTEM.
|
||||
(match system
|
||||
((or "x86_64-linux" "i686-linux")
|
||||
(if (string-contains target "mingw")
|
||||
(not (string=? "x86_64-linux" system))
|
||||
#f))
|
||||
(_
|
||||
;; Don't try to cross-compile from non-Intel platforms: this isn't
|
||||
;; very useful and these are often brittle configurations.
|
||||
#t)))
|
||||
|
||||
(define (either proc1 proc2 proc3)
|
||||
(lambda (x)
|
||||
(or (proc1 x) (proc2 x) (proc3 x))))
|
||||
|
||||
(append-map (lambda (target)
|
||||
(map (lambda (package)
|
||||
(package-cross-job store (job-name package)
|
||||
package target system))
|
||||
%packages-to-cross-build))
|
||||
(remove (either from-32-to-64? same? pointless?)
|
||||
%cross-targets)))
|
||||
|
||||
(define %guixsd-supported-systems
|
||||
'("x86_64-linux" "i686-linux" "armhf-linux"))
|
||||
|
||||
@@ -240,39 +195,29 @@ system.")
|
||||
(define channel-build-system
|
||||
;; Build system used to "convert" a channel instance to a package.
|
||||
(let* ((build (lambda* (store name inputs
|
||||
#:key source commit system
|
||||
#:key instance system
|
||||
#:allow-other-keys)
|
||||
(run-with-store store
|
||||
;; SOURCE can be a lowerable object such as <local-file>
|
||||
;; or a file name. Adjust accordingly.
|
||||
(mlet* %store-monad ((source (if (string? source)
|
||||
(return source)
|
||||
(lower-object source)))
|
||||
(instance
|
||||
-> (checkout->channel-instance
|
||||
source #:commit commit)))
|
||||
(channel-instances->derivation (list instance)))
|
||||
(channel-instances->derivation (list instance))
|
||||
#:system system)))
|
||||
(lower (lambda* (name #:key system source commit
|
||||
#:allow-other-keys)
|
||||
(lower (lambda* (name #:key system instance #:allow-other-keys)
|
||||
(bag
|
||||
(name name)
|
||||
(system system)
|
||||
(build build)
|
||||
(arguments `(#:source ,source
|
||||
#:commit ,commit))))))
|
||||
(arguments `(#:instance ,instance))))))
|
||||
(build-system (name 'channel)
|
||||
(description "Turn a channel instance into a package.")
|
||||
(lower lower))))
|
||||
|
||||
(define* (channel-source->package source #:key commit)
|
||||
"Return a package for the given channel SOURCE, a lowerable object."
|
||||
(define (channel-instance->package instance)
|
||||
"Return a package for the given channel INSTANCE."
|
||||
(package
|
||||
(inherit guix)
|
||||
(version (string-append (package-version guix) "+"))
|
||||
(version (or (string-take (channel-instance-commit instance) 7)
|
||||
(string-append (package-version guix) "+")))
|
||||
(build-system channel-build-system)
|
||||
(arguments `(#:source ,source
|
||||
#:commit ,commit))
|
||||
(arguments `(#:instance ,instance))
|
||||
(inputs '())
|
||||
(native-inputs '())
|
||||
(propagated-inputs '())))
|
||||
@@ -280,6 +225,9 @@ system.")
|
||||
(define* (system-test-jobs store system
|
||||
#:key source commit)
|
||||
"Return a list of jobs for the system tests."
|
||||
(define instance
|
||||
(checkout->channel-instance source #:commit commit))
|
||||
|
||||
(define (test->thunk test)
|
||||
(lambda ()
|
||||
(define drv
|
||||
@@ -316,7 +264,7 @@ system.")
|
||||
;; expensive. It also makes sure we get a valid Guix package when this
|
||||
;; code is not running from a checkout.
|
||||
(parameterize ((current-guix-package
|
||||
(channel-source->package source #:commit commit)))
|
||||
(channel-instance->package instance)))
|
||||
(map ->job (all-system-tests)))
|
||||
'()))
|
||||
|
||||
@@ -468,6 +416,48 @@ Return #f if no such checkout is found."
|
||||
(define source
|
||||
(assq-ref checkout 'file-name))
|
||||
|
||||
(define (cross-jobs system)
|
||||
(define (from-32-to-64? target)
|
||||
;; Return true if SYSTEM is 32-bit and TARGET is 64-bit. This hack
|
||||
;; prevents known-to-fail cross-builds from i686-linux or armhf-linux to
|
||||
;; mips64el-linux-gnuabi64.
|
||||
(and (or (string-prefix? "i686-" system)
|
||||
(string-prefix? "i586-" system)
|
||||
(string-prefix? "armhf-" system))
|
||||
(string-contains target "64"))) ;x86_64, mips64el, aarch64, etc.
|
||||
|
||||
(define (same? target)
|
||||
;; Return true if SYSTEM and TARGET are the same thing. This is so we
|
||||
;; don't try to cross-compile to 'mips64el-linux-gnu' from
|
||||
;; 'mips64el-linux'.
|
||||
(or (string-contains target system)
|
||||
(and (string-prefix? "armhf" system) ;armhf-linux
|
||||
(string-prefix? "arm" target)))) ;arm-linux-gnueabihf
|
||||
|
||||
(define (pointless? target)
|
||||
;; Return #t if it makes no sense to cross-build to TARGET from SYSTEM.
|
||||
(match system
|
||||
((or "x86_64-linux" "i686-linux")
|
||||
(if (string-contains target "mingw")
|
||||
(not (string=? "x86_64-linux" system))
|
||||
#f))
|
||||
(_
|
||||
;; Don't try to cross-compile from non-Intel platforms: this isn't
|
||||
;; very useful and these are often brittle configurations.
|
||||
#t)))
|
||||
|
||||
(define (either proc1 proc2 proc3)
|
||||
(lambda (x)
|
||||
(or (proc1 x) (proc2 x) (proc3 x))))
|
||||
|
||||
(append-map (lambda (target)
|
||||
(map (lambda (package)
|
||||
(package-cross-job store (job-name package)
|
||||
package target system))
|
||||
%packages-to-cross-build))
|
||||
(remove (either from-32-to-64? same? pointless?)
|
||||
%cross-targets)))
|
||||
|
||||
;; Turn off grafts. Grafting is meant to happen on the user's machines.
|
||||
(parameterize ((%graft? #f))
|
||||
;; Return one job for each package, except bootstrap packages.
|
||||
@@ -492,14 +482,14 @@ Return #f if no such checkout is found."
|
||||
#:source source
|
||||
#:commit commit)
|
||||
(tarball-jobs store system)
|
||||
(cross-jobs store system))))
|
||||
(cross-jobs system))))
|
||||
((core)
|
||||
;; Build core packages only.
|
||||
(append (map (lambda (package)
|
||||
(package-job store (job-name package)
|
||||
package system))
|
||||
%core-packages)
|
||||
(cross-jobs store system)))
|
||||
(cross-jobs system)))
|
||||
((hello)
|
||||
;; Build hello package only.
|
||||
(if (string=? system (%current-system))
|
||||
|
||||
+25
-71
@@ -1,8 +1,7 @@
|
||||
;;; 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 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2020 Florian Pelz <pelzflorian@pelzflorian.de>
|
||||
;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -27,16 +26,12 @@
|
||||
#:use-module (guix utils)
|
||||
#:use-module (guix ui)
|
||||
#:use-module ((guix self) #:select (make-config.scm))
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix git-download)
|
||||
#:use-module (gnu installer utils)
|
||||
#:use-module (gnu packages admin)
|
||||
#:use-module (gnu packages base)
|
||||
#:use-module (gnu packages bash)
|
||||
#:use-module (gnu packages connman)
|
||||
#:use-module (gnu packages cryptsetup)
|
||||
#:use-module (gnu packages disk)
|
||||
#:use-module (gnu packages file-systems)
|
||||
#:use-module (gnu packages guile)
|
||||
#:use-module (gnu packages guile-xyz)
|
||||
#:autoload (gnu packages gnupg) (guile-gcrypt)
|
||||
@@ -62,14 +57,6 @@
|
||||
(('guix 'build _ ...) #t)
|
||||
(_ #f)))
|
||||
|
||||
(define not-config?
|
||||
;; Select (guix …) and (gnu …) modules, except (guix config).
|
||||
(match-lambda
|
||||
(('guix 'config) #f)
|
||||
(('guix _ ...) #t)
|
||||
(('gnu _ ...) #t)
|
||||
(_ #f)))
|
||||
|
||||
(define* (build-compiled-file name locale-builder)
|
||||
"Return a file-like object that evalutes the gexp LOCALE-BUILDER and store
|
||||
its result in the scheme file NAME. The derivation will also build a compiled
|
||||
@@ -84,10 +71,8 @@ version of this file."
|
||||
|
||||
(define builder
|
||||
(with-extensions (list guile-json-3)
|
||||
(with-imported-modules `(,@(source-module-closure
|
||||
'((gnu installer locale))
|
||||
#:select? not-config?)
|
||||
((guix config) => ,(make-config.scm)))
|
||||
(with-imported-modules (source-module-closure
|
||||
'((gnu installer locale)))
|
||||
#~(begin
|
||||
(use-modules (gnu installer locale))
|
||||
|
||||
@@ -114,12 +99,11 @@ version of this file."
|
||||
(setlocale LC_ALL locale))
|
||||
|
||||
;; Restart the documentation viewer so it displays the manual in
|
||||
;; language that corresponds to LOCALE. Make sure that nothing is
|
||||
;; printed on the console.
|
||||
(parameterize ((shepherd-message-port
|
||||
(%make-void-port "w")))
|
||||
(stop-service 'term-tty2)
|
||||
(start-service 'term-tty2 (list locale))))))
|
||||
;; language that corresponds to LOCALE.
|
||||
(with-error-to-port (%make-void-port "w")
|
||||
(lambda ()
|
||||
(stop-service 'term-tty2)
|
||||
(start-service 'term-tty2 (list locale)))))))
|
||||
|
||||
(define* (compute-locale-step #:key
|
||||
locales-name
|
||||
@@ -170,11 +154,11 @@ been performed at build time."
|
||||
(define apply-keymap
|
||||
;; Apply the specified keymap. Use the default keyboard model.
|
||||
#~(match-lambda
|
||||
((layout variant options)
|
||||
((layout variant)
|
||||
(kmscon-update-keymap (default-keyboard-model)
|
||||
layout variant options))))
|
||||
layout variant))))
|
||||
|
||||
(define* (compute-keymap-step context)
|
||||
(define* (compute-keymap-step)
|
||||
"Return a gexp that runs the keymap-page of INSTALLER and install the
|
||||
selected keymap."
|
||||
#~(lambda (current-installer)
|
||||
@@ -186,7 +170,7 @@ selected keymap."
|
||||
"/share/X11/xkb/rules/base.xml")))
|
||||
(lambda (models layouts)
|
||||
((installer-keymap-page current-installer)
|
||||
layouts '#$context)))))
|
||||
layouts)))))
|
||||
(#$apply-keymap result)
|
||||
result)))
|
||||
|
||||
@@ -195,15 +179,10 @@ selected keymap."
|
||||
#:locales-name "locales"
|
||||
#:iso639-languages-name "iso639-languages"
|
||||
#:iso3166-territories-name "iso3166-territories"))
|
||||
(keymap-step (compute-keymap-step))
|
||||
(timezone-data #~(string-append #$tzdata
|
||||
"/share/zoneinfo/zone.tab")))
|
||||
#~(lambda (current-installer)
|
||||
((installer-parameters-menu current-installer)
|
||||
(lambda ()
|
||||
((installer-parameters-page current-installer)
|
||||
(lambda _
|
||||
(#$(compute-keymap-step 'param)
|
||||
current-installer)))))
|
||||
(list
|
||||
;; Ask the user to choose a locale among those supported by
|
||||
;; the glibc. Install the selected locale right away, so that
|
||||
@@ -235,19 +214,17 @@ selected keymap."
|
||||
|
||||
;; The installer runs in a kmscon virtual terminal where loadkeys
|
||||
;; won't work. kmscon uses libxkbcommon as a backend for keyboard
|
||||
;; input. It is possible to update kmscon current keymap by sending
|
||||
;; it a keyboard model, layout, variant and options, in a somehow
|
||||
;; similar way as what is done with setxkbmap utility.
|
||||
;; input. It is possible to update kmscon current keymap by sending it
|
||||
;; a keyboard model, layout and variant, in a somehow similar way as
|
||||
;; what is done with setxkbmap utility.
|
||||
;;
|
||||
;; So ask for a keyboard model, layout and variant to update the
|
||||
;; current kmscon keymap. For non-Latin layouts, we add an
|
||||
;; appropriate second layout and toggle via Alt+Shift.
|
||||
;; current kmscon keymap.
|
||||
(installer-step
|
||||
(id 'keymap)
|
||||
(description (G_ "Keyboard mapping selection"))
|
||||
(compute (lambda _
|
||||
(#$(compute-keymap-step 'default)
|
||||
current-installer)))
|
||||
(#$keymap-step current-installer)))
|
||||
(configuration-formatter keyboard-layout->configuration))
|
||||
|
||||
;; Ask the user to input a hostname for the system.
|
||||
@@ -280,7 +257,7 @@ selected keymap."
|
||||
(description (G_ "Services"))
|
||||
(compute (lambda _
|
||||
((installer-services-page current-installer))))
|
||||
(configuration-formatter system-services->configuration))
|
||||
(configuration-formatter system-services->configuration))
|
||||
|
||||
;; Run a partitioning tool allowing the user to modify
|
||||
;; partition tables, partitions and their mount points.
|
||||
@@ -293,7 +270,7 @@ selected keymap."
|
||||
((installer-partition-page current-installer))))
|
||||
(configuration-formatter user-partitions->configuration))
|
||||
|
||||
(installer-step
|
||||
(installer-step
|
||||
(id 'final)
|
||||
(description (G_ "Configuration file"))
|
||||
(compute
|
||||
@@ -301,25 +278,6 @@ selected keymap."
|
||||
((installer-final-page current-installer)
|
||||
result prev-steps))))))))
|
||||
|
||||
(define guile-newt
|
||||
;; Guile-Newt with 'form-watch-fd'.
|
||||
;; TODO: Remove once a new release is out.
|
||||
(let ((commit "c3cdeb0b53ac71aedabee669f57d44563c662446")
|
||||
(revision "2"))
|
||||
(package
|
||||
(inherit (@ (gnu packages guile-xyz) guile-newt))
|
||||
(name "guile-newt")
|
||||
(version (git-version "0.0.1" revision commit))
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://gitlab.com/mothacehe/guile-newt")
|
||||
(commit commit)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1gksd1lzgjjh1p9vczghg8jw995d22hm34kbsiv8rcryirv2xy09")))))))
|
||||
|
||||
(define (installer-program)
|
||||
"Return a file-like object that runs the given INSTALLER."
|
||||
(define init-gettext
|
||||
@@ -337,8 +295,7 @@ selected keymap."
|
||||
cryptsetup
|
||||
dosfstools ;mkfs.fat
|
||||
e2fsprogs ;mkfs.ext4
|
||||
btrfs-progs ;mkfs.btrfs
|
||||
jfsutils ;jfs_mkfs
|
||||
btrfs-progs
|
||||
kbd ;chvt
|
||||
guix ;guix system init call
|
||||
util-linux ;mkwap
|
||||
@@ -430,14 +387,11 @@ selected keymap."
|
||||
;; We did it! Let's reboot!
|
||||
(sync)
|
||||
(stop-service 'root))
|
||||
(_
|
||||
;; The installation failed, exit so that it is restarted
|
||||
;; by login.
|
||||
(_ ;installation failed
|
||||
;; TODO: Honor the result of 'run-install-failed-page'.
|
||||
#f)))
|
||||
(const #f)
|
||||
(lambda (key . args)
|
||||
(syslog "crashing due to uncaught exception: ~s ~s~%"
|
||||
key args)
|
||||
(let ((error-file "/tmp/last-installer-error"))
|
||||
(call-with-output-file error-file
|
||||
(lambda (port)
|
||||
|
||||
+8
-104
@@ -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 © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -23,17 +23,10 @@
|
||||
#:use-module (gnu installer utils)
|
||||
#:use-module (gnu installer user)
|
||||
#:use-module (gnu services herd)
|
||||
#:use-module (guix build syscalls)
|
||||
#:use-module (guix build utils)
|
||||
#:use-module (gnu build accounts)
|
||||
#:use-module ((gnu system shadow) #:prefix sys:)
|
||||
#:use-module (rnrs io ports)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (ice-9 ftw)
|
||||
#:use-module (ice-9 popen)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (ice-9 format)
|
||||
#:use-module (ice-9 rdelim)
|
||||
#:export (install-system))
|
||||
|
||||
(define %seed
|
||||
@@ -103,93 +96,15 @@ USERS."
|
||||
(write-passwd password (string-append etc "/passwd"))
|
||||
(write-shadow shadow (string-append etc "/shadow")))
|
||||
|
||||
(define* (kill-cow-users cow-path #:key (spare '("udevd")))
|
||||
"Kill all processes that have references to the given COW-PATH in their
|
||||
'maps' file. The process whose names are in SPARE list are spared."
|
||||
(define %not-nul
|
||||
(char-set-complement (char-set #\nul)))
|
||||
|
||||
(let ((pids
|
||||
(filter-map (lambda (pid)
|
||||
(false-if-exception
|
||||
(call-with-input-file
|
||||
(string-append "/proc/" pid "/maps")
|
||||
(lambda (port)
|
||||
(and (string-contains (get-string-all port)
|
||||
cow-path)
|
||||
(string->number pid))))))
|
||||
(scandir "/proc" string->number))))
|
||||
(for-each (lambda (pid)
|
||||
;; cmdline does not always exist.
|
||||
(false-if-exception
|
||||
(call-with-input-file
|
||||
(string-append "/proc/" (number->string pid) "/cmdline")
|
||||
(lambda (port)
|
||||
(match (string-tokenize (read-string port) %not-nul)
|
||||
((argv0 _ ...)
|
||||
(unless (member (pk (basename argv0)) spare)
|
||||
(syslog "Killing process ~a~%" pid)
|
||||
(kill pid SIGKILL)))
|
||||
(_ #f))))))
|
||||
pids)))
|
||||
|
||||
(define (umount-cow-store)
|
||||
"Remove the store overlay and the bind-mount on /tmp created by the
|
||||
cow-store service. This procedure is very fragile and a better approach would
|
||||
be much appreciated."
|
||||
|
||||
;; Remove when integrated in (gnu services herd).
|
||||
(define (restart-service name)
|
||||
(with-shepherd-action name ('restart) result
|
||||
result))
|
||||
|
||||
(catch #t
|
||||
(lambda ()
|
||||
(let ((tmp-dir "/remove"))
|
||||
(mkdir-p tmp-dir)
|
||||
(mount (%store-directory) tmp-dir "" MS_MOVE)
|
||||
|
||||
;; The guix-daemon has possibly opened files from the cow-store,
|
||||
;; restart it.
|
||||
(restart-service 'guix-daemon)
|
||||
|
||||
;; Kill all processes started while the cow-store was active (logins
|
||||
;; on other TTYs for instance).
|
||||
(kill-cow-users tmp-dir)
|
||||
|
||||
;; Try to umount the store overlay. Some process such as udevd
|
||||
;; workers might still be active, so do some retries.
|
||||
(let loop ((try 5))
|
||||
(sleep 1)
|
||||
(let ((umounted? (false-if-exception (umount tmp-dir))))
|
||||
(if (and (not umounted?) (> try 0))
|
||||
(loop (- try 1))
|
||||
(if umounted?
|
||||
(syslog "Umounted ~a successfully.~%" tmp-dir)
|
||||
(syslog "Failed to umount ~a.~%" tmp-dir)))))
|
||||
|
||||
(umount "/tmp")))
|
||||
(lambda args
|
||||
(syslog "~a~%" args))))
|
||||
|
||||
(define* (install-system locale #:key (users '()))
|
||||
"Create /etc/shadow and /etc/passwd on the installation target for USERS.
|
||||
Start COW-STORE service on target directory and launch guix install command in
|
||||
a subshell. LOCALE must be the locale name under which that command will run,
|
||||
or #f. Return #t on success and #f on failure."
|
||||
(let* ((options (catch 'system-error
|
||||
(lambda ()
|
||||
;; If this file exists, it can provide
|
||||
;; additional command-line options.
|
||||
(call-with-input-file
|
||||
"/tmp/installer-system-init-options"
|
||||
read))
|
||||
(const '())))
|
||||
(install-command (append (list "guix" "system" "init"
|
||||
"--fallback")
|
||||
options
|
||||
(list (%installer-configuration-file)
|
||||
(%installer-target-dir)))))
|
||||
(let ((install-command
|
||||
(format #f "guix system init --fallback ~a ~a"
|
||||
(%installer-configuration-file)
|
||||
(%installer-target-dir))))
|
||||
(mkdir-p (%installer-target-dir))
|
||||
|
||||
;; We want to initialize user passwords but we don't want to store them in
|
||||
@@ -199,16 +114,5 @@ or #f. Return #t on success and #f on failure."
|
||||
;; passwords that we've put in there.
|
||||
(create-user-database users (%installer-target-dir))
|
||||
|
||||
(dynamic-wind
|
||||
(lambda ()
|
||||
(start-service 'cow-store (list (%installer-target-dir))))
|
||||
(lambda ()
|
||||
(run-command install-command #:locale locale))
|
||||
(lambda ()
|
||||
(stop-service 'cow-store)
|
||||
;; Remove the store overlay created at cow-store service start.
|
||||
;; Failing to do that will result in further umount calls to fail
|
||||
;; because the target device is seen as busy. See:
|
||||
;; https://lists.gnu.org/archive/html/guix-devel/2018-12/msg00161.html.
|
||||
(umount-cow-store)
|
||||
#f))))
|
||||
(start-service 'cow-store (list (%installer-target-dir)))
|
||||
(run-shell-command install-command #:locale locale)))
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;; Copyright © 2020 Florian Pelz <pelzflorian@pelzflorian.de>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -155,8 +154,8 @@ Configuration Database, describing possible XKB configurations."
|
||||
((models layouts)
|
||||
(values models layouts)))))
|
||||
|
||||
(define (kmscon-update-keymap model layout variant options)
|
||||
"Update kmscon keymap with the provided MODEL, LAYOUT, VARIANT and OPTIONS."
|
||||
(define (kmscon-update-keymap model layout variant)
|
||||
"Update kmscon keymap with the provided MODEL, LAYOUT and VARIANT."
|
||||
(and=>
|
||||
(getenv "KEYMAP_UPDATE")
|
||||
(lambda (keymap-file)
|
||||
@@ -175,8 +174,5 @@ Configuration Database, describing possible XKB configurations."
|
||||
(format port layout)
|
||||
(put-u8 port 0)
|
||||
|
||||
(format port (or variant ""))
|
||||
(put-u8 port 0)
|
||||
|
||||
(format port (or options ""))
|
||||
(format port variant)
|
||||
(put-u8 port 0))))))
|
||||
|
||||
+5
-16
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2018, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -21,7 +21,6 @@
|
||||
#:use-module (gnu installer utils)
|
||||
#:use-module (gnu installer newt ethernet)
|
||||
#:use-module (gnu installer newt final)
|
||||
#:use-module (gnu installer newt parameters)
|
||||
#:use-module (gnu installer newt hostname)
|
||||
#:use-module (gnu installer newt keymap)
|
||||
#:use-module (gnu installer newt locale)
|
||||
@@ -45,9 +44,7 @@
|
||||
(define (init)
|
||||
(newt-init)
|
||||
(clear-screen)
|
||||
(set-screen-size!)
|
||||
(push-help-line
|
||||
(format #f (G_ "Press <F1> for installation parameters."))))
|
||||
(set-screen-size!))
|
||||
|
||||
(define (exit)
|
||||
(newt-finish)
|
||||
@@ -94,8 +91,8 @@ problem. The backtrace is displayed below. Please report it by email to \
|
||||
(define (menu-page steps)
|
||||
(run-menu-page steps))
|
||||
|
||||
(define* (keymap-page layouts context)
|
||||
(run-keymap-page layouts #:context context))
|
||||
(define* (keymap-page layouts)
|
||||
(run-keymap-page layouts))
|
||||
|
||||
(define (network-page)
|
||||
(run-network-page))
|
||||
@@ -112,12 +109,6 @@ problem. The backtrace is displayed below. Please report it by email to \
|
||||
(define (services-page)
|
||||
(run-services-page))
|
||||
|
||||
(define (parameters-menu menu-proc)
|
||||
(newt-set-help-callback menu-proc))
|
||||
|
||||
(define (parameters-page keyboard-layout-selection)
|
||||
(run-parameters-page keyboard-layout-selection))
|
||||
|
||||
(define newt-installer
|
||||
(installer
|
||||
(name 'newt)
|
||||
@@ -134,6 +125,4 @@ problem. The backtrace is displayed below. Please report it by email to \
|
||||
(user-page user-page)
|
||||
(partition-page partition-page)
|
||||
(services-page services-page)
|
||||
(welcome-page welcome-page)
|
||||
(parameters-menu parameters-menu)
|
||||
(parameters-page parameters-page)))
|
||||
(welcome-page welcome-page)))
|
||||
|
||||
@@ -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 © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -27,7 +27,6 @@
|
||||
#:use-module (guix i18n)
|
||||
#:use-module (srfi srfi-34)
|
||||
#:use-module (srfi srfi-35)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (newt)
|
||||
#:export (run-final-page))
|
||||
|
||||
@@ -37,7 +36,7 @@
|
||||
(string-drop file (string-length prefix))
|
||||
file))
|
||||
|
||||
(define* (run-config-display-page #:key locale)
|
||||
(define (run-config-display-page)
|
||||
(let ((width (%configuration-file-width))
|
||||
(height (nearest-exact-integer
|
||||
(/ (screen-rows) 2))))
|
||||
@@ -51,8 +50,6 @@ This will take a few minutes.")
|
||||
(strip-prefix (%installer-configuration-file)))
|
||||
#:title (G_ "Configuration file")
|
||||
#:file (%installer-configuration-file)
|
||||
#:edit-button? #t
|
||||
#:editor-locale locale
|
||||
#:info-textbox-width width
|
||||
#:file-textbox-width width
|
||||
#:file-textbox-height height
|
||||
@@ -63,39 +60,23 @@ This will take a few minutes.")
|
||||
(&installer-step-abort)))))))
|
||||
|
||||
(define (run-install-success-page)
|
||||
(match (current-clients)
|
||||
(()
|
||||
(message-window
|
||||
(G_ "Installation complete")
|
||||
(G_ "Reboot")
|
||||
(G_ "Congratulations! Installation is now complete. \
|
||||
(message-window
|
||||
(G_ "Installation complete")
|
||||
(G_ "Reboot")
|
||||
(G_ "Congratulations! Installation is now complete. \
|
||||
You may remove the device containing the installation image and \
|
||||
press the button to reboot.")))
|
||||
(_
|
||||
;; When there are clients connected, send them a message and keep going.
|
||||
(send-to-clients '(installation-complete))))
|
||||
press the button to reboot."))
|
||||
|
||||
;; Return success so that the installer happily reboots.
|
||||
'success)
|
||||
|
||||
(define (run-install-failed-page)
|
||||
(match (current-clients)
|
||||
(()
|
||||
(match (choice-window
|
||||
(G_ "Installation failed")
|
||||
(G_ "Resume")
|
||||
(G_ "Restart the installer")
|
||||
(G_ "The final system installation step failed. You can resume from \
|
||||
a specific step, or restart the installer."))
|
||||
(1 (raise
|
||||
(condition
|
||||
(&installer-step-abort))))
|
||||
(2
|
||||
;; Keep going, the installer will be restarted later on.
|
||||
#t)))
|
||||
(_
|
||||
(send-to-clients '(installation-failure))
|
||||
#t)))
|
||||
(choice-window
|
||||
(G_ "Installation failed")
|
||||
(G_ "Restart installer")
|
||||
(G_ "Retry system install")
|
||||
(G_ "The final system installation step failed. You can retry the \
|
||||
last step, or restart the installer.")))
|
||||
|
||||
(define* (run-install-shell locale
|
||||
#:key (users '()))
|
||||
@@ -114,7 +95,7 @@ a specific step, or restart the installer."))
|
||||
(with-mounted-partitions
|
||||
user-partitions
|
||||
(configuration->file configuration)
|
||||
(run-config-display-page #:locale locale)
|
||||
(run-config-display-page)
|
||||
(run-install-shell locale #:users users))))
|
||||
(if install-ok?
|
||||
(run-install-success-page)
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2018, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2020 Florian Pelz <pelzflorian@pelzflorian.de>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -34,34 +33,20 @@
|
||||
#:export (run-keymap-page
|
||||
keyboard-layout->configuration))
|
||||
|
||||
(define (run-layout-page layouts layout->text context)
|
||||
(define (run-layout-page layouts layout->text)
|
||||
(let ((title (G_ "Layout")))
|
||||
(run-listbox-selection-page
|
||||
#:title title
|
||||
#:info-text
|
||||
(case context
|
||||
((param) (G_ "Please choose your keyboard layout. \
|
||||
It will only be used during the installation process. \
|
||||
Non-Latin layouts can be toggled with Alt+Shift."))
|
||||
(else (G_ "Please choose your keyboard layout. \
|
||||
It will be used during the install process, and for the installed system. \
|
||||
Non-Latin layouts can be toggled with Alt+Shift. You can switch to a \
|
||||
different layout at any time from the parameters menu.")))
|
||||
#:info-text (G_ "Please choose your keyboard layout.")
|
||||
#:listbox-items layouts
|
||||
#:listbox-item->text layout->text
|
||||
#:sort-listbox-items? #f
|
||||
#:button-text
|
||||
(case context
|
||||
((param) (G_ "Continue"))
|
||||
(else (G_ "Exit")))
|
||||
#:button-text (G_ "Exit")
|
||||
#:button-callback-procedure
|
||||
(case context
|
||||
((param) (const #t))
|
||||
(else
|
||||
(lambda _
|
||||
(raise
|
||||
(condition
|
||||
(&installer-step-abort)))))))))
|
||||
(lambda _
|
||||
(raise
|
||||
(condition
|
||||
(&installer-step-abort)))))))
|
||||
|
||||
(define (run-variant-page variants variant->text)
|
||||
(let ((title (G_ "Variant")))
|
||||
@@ -104,66 +89,21 @@ different layout at any time from the parameters menu.")))
|
||||
(append (sort main layout<?)
|
||||
(sort others layout<?)))))
|
||||
|
||||
(define (add-empty-variant variants)
|
||||
"Prepend #f to VARIANTS so the user has the option to select no variant.
|
||||
The resulting layout may be different from all other variants (e.g. for
|
||||
Azerbaijani)."
|
||||
(cons #f variants))
|
||||
|
||||
(define (sort-variants variants)
|
||||
"Sort VARIANTS list by putting the international variant ahead and return it."
|
||||
(call-with-values
|
||||
(lambda ()
|
||||
(partition
|
||||
(lambda (variant)
|
||||
(and variant
|
||||
(let ((name (x11-keymap-variant-name variant)))
|
||||
(string=? name "altgr-intl"))))
|
||||
(let ((name (x11-keymap-variant-name variant)))
|
||||
(string=? name "altgr-intl")))
|
||||
variants))
|
||||
(cut append <> <>)))
|
||||
|
||||
(define %non-latin-layouts
|
||||
;; List of keyboard layouts marked as $nonlatin in xkeyboard-config.
|
||||
;; See comments in xkeyboard-config file /share/X11/xkb/rules/base.
|
||||
;; We ignore layouts that support Latin input: "kr"
|
||||
'("am" "ara" "ben" "bd" "bg" "bt" "by" "cs" "deva" "ge" "gh"
|
||||
"gr" "guj" "guru" "il" "in" "ir" "iku" "jp" "kan" "kh"
|
||||
"la" "lao" "lk" "mk" "mm" "mn" "mv" "mal" "olck" "ori" "pk"
|
||||
"ru" "scc" "sy" "syr" "tel" "th" "tj" "tam" "ua" "uz"
|
||||
;; The list from xkeyboard-config is incomplete. Add more layouts when
|
||||
;; noticed:
|
||||
"et" "kz"))
|
||||
|
||||
(define %non-latin-variants
|
||||
'("cyrillic"))
|
||||
|
||||
(define %latin-layout+variants
|
||||
;; These layout+variant combinations are Latin after all.
|
||||
'(("ir" "ku")))
|
||||
|
||||
(define (toggleable-latin-layout layout variant)
|
||||
"If LAYOUT is a non-Latin layout, return a new combined layout,
|
||||
a variant, and options that allow the user to switch between the
|
||||
non-Latin and the Latin layout. Otherwise, return LAYOUT, VARIANT,
|
||||
and #f."
|
||||
(if (and (not (equal? variant "latin"))
|
||||
(not (member (list layout variant) %latin-layout+variants))
|
||||
(or (member layout %non-latin-layouts)
|
||||
(member variant %non-latin-variants)))
|
||||
(let ((latin-layout (if (equal? variant "azerty") "fr" "us")))
|
||||
(list
|
||||
(string-append layout "," latin-layout)
|
||||
;; Comma to use variant only for non-Latin:
|
||||
(and variant (string-append variant ","))
|
||||
"grp:alt_shift_toggle"))
|
||||
(list layout variant #f)))
|
||||
|
||||
(define* (run-keymap-page layouts #:key (context #f))
|
||||
(define* (run-keymap-page layouts)
|
||||
"Run a page asking the user to select a keyboard layout and variant. LAYOUTS
|
||||
is a list of supported X11-KEYMAP-LAYOUT. For non-Latin keyboard layouts, a
|
||||
second layout and toggle options will be added automatically. Return a list
|
||||
of three elements, the names of the selected keyboard layout, variant and
|
||||
options."
|
||||
is a list of supported X11-KEYMAP-LAYOUT. Return a list of two elements, the
|
||||
names of the selected keyboard layout and variant."
|
||||
(define keymap-steps
|
||||
(list
|
||||
(installer-step
|
||||
@@ -174,8 +114,7 @@ options."
|
||||
(sort-layouts layouts)
|
||||
(lambda (layout)
|
||||
(gettext (x11-keymap-layout-description layout)
|
||||
"xkeyboard-config"))
|
||||
context))))
|
||||
"xkeyboard-config"))))))
|
||||
;; Propose the user to select a variant among those supported by the
|
||||
;; previously selected layout.
|
||||
(installer-step
|
||||
@@ -187,14 +126,10 @@ options."
|
||||
;; Return #f if the layout does not have any variant.
|
||||
(and (not (null? variants))
|
||||
(run-variant-page
|
||||
(sort-variants (add-empty-variant variants))
|
||||
(sort-variants variants)
|
||||
(lambda (variant)
|
||||
(if variant
|
||||
(gettext (x11-keymap-variant-description variant)
|
||||
"xkeyboard-config")
|
||||
;; Text to opt for no variant at all:
|
||||
(gettext (x11-keymap-layout-description layout)
|
||||
"xkeyboard-config")))))))))))
|
||||
(gettext (x11-keymap-variant-description variant)
|
||||
"xkeyboard-config"))))))))))
|
||||
|
||||
(define (format-result result)
|
||||
(let ((layout (x11-keymap-layout-name
|
||||
@@ -203,20 +138,14 @@ options."
|
||||
(lambda (variant)
|
||||
(gettext (x11-keymap-variant-name variant)
|
||||
"xkeyboard-config")))))
|
||||
(toggleable-latin-layout layout variant)))
|
||||
(list layout (or variant ""))))
|
||||
(format-result
|
||||
(run-installer-steps #:steps keymap-steps)))
|
||||
|
||||
(define (keyboard-layout->configuration keymap)
|
||||
"Return the operating system configuration snippet to install KEYMAP."
|
||||
(match keymap
|
||||
((name #f "grp:alt_shift_toggle")
|
||||
`((keyboard-layout (keyboard-layout ,name
|
||||
#:options '("grp:alt_shift_toggle")))))
|
||||
((name #f _)
|
||||
((name "")
|
||||
`((keyboard-layout (keyboard-layout ,name))))
|
||||
((name variant "grp:alt_shift_toggle")
|
||||
`((keyboard-layout (keyboard-layout ,name ,variant
|
||||
#:options '("grp:alt_shift_toggle")))))
|
||||
((name variant _)
|
||||
((name variant)
|
||||
`((keyboard-layout (keyboard-layout ,name ,variant))))))
|
||||
|
||||
@@ -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 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -119,10 +119,6 @@ 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 (online?)
|
||||
(or (connman-online?)
|
||||
(file-exists? "/tmp/installer-assume-online")))
|
||||
|
||||
(let* ((full-value 5))
|
||||
(run-scale-page
|
||||
#:title (G_ "Checking connectivity")
|
||||
@@ -131,10 +127,10 @@ FULL-VALUE tentatives, spaced by 1 second."
|
||||
#:scale-update-proc
|
||||
(lambda (value)
|
||||
(sleep 1)
|
||||
(if (online?)
|
||||
(if (connman-online?)
|
||||
full-value
|
||||
(+ value 1))))
|
||||
(unless (online?)
|
||||
(unless (connman-online?)
|
||||
(run-error-page
|
||||
(G_ "The selected network does not provide access to the \
|
||||
Internet, please try again.")
|
||||
|
||||
+237
-443
@@ -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 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
@@ -19,7 +19,6 @@
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu installer newt page)
|
||||
#:use-module (gnu installer steps)
|
||||
#:use-module (gnu installer utils)
|
||||
#:use-module (gnu installer newt utils)
|
||||
#:use-module (guix i18n)
|
||||
@@ -27,10 +26,7 @@
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (ice-9 receive)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-11)
|
||||
#:use-module (srfi srfi-26)
|
||||
#:use-module (srfi srfi-34)
|
||||
#:use-module (srfi srfi-35)
|
||||
#:use-module (newt)
|
||||
#:export (draw-info-page
|
||||
draw-connecting-page
|
||||
@@ -40,9 +36,7 @@
|
||||
run-listbox-selection-page
|
||||
run-scale-page
|
||||
run-checkbox-tree-page
|
||||
run-file-textbox-page
|
||||
|
||||
run-form-with-clients))
|
||||
run-file-textbox-page))
|
||||
|
||||
;;; Commentary:
|
||||
;;;
|
||||
@@ -55,123 +49,9 @@
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(define* (watch-clients! form #:optional (clients (current-clients)))
|
||||
"Have FORM watch the file descriptors corresponding to current client
|
||||
connections. Consequently, FORM may exit with the 'exit-fd-ready' reason."
|
||||
(when (current-server-socket)
|
||||
(form-watch-fd form (fileno (current-server-socket))
|
||||
FD-READ))
|
||||
|
||||
(for-each (lambda (client)
|
||||
(form-watch-fd form (fileno client)
|
||||
(logior FD-READ FD-EXCEPT)))
|
||||
clients))
|
||||
|
||||
(define close-port-and-reuse-fd
|
||||
(let ((bit-bucket #f))
|
||||
(lambda (port)
|
||||
"Close PORT and redirect its underlying FD to point to a valid open file
|
||||
descriptor."
|
||||
(let ((fd (fileno port)))
|
||||
(unless bit-bucket
|
||||
(set! bit-bucket (car (pipe))))
|
||||
(close-port port)
|
||||
|
||||
;; FIXME: We're leaking FD.
|
||||
(dup2 (fileno bit-bucket) fd)))))
|
||||
|
||||
(define* (run-form-with-clients form exp)
|
||||
"Run FORM such as it watches the file descriptors beneath CLIENTS after
|
||||
sending EXP to all the clients.
|
||||
|
||||
Automatically restart the form when it exits with 'exit-fd-ready but without
|
||||
an actual client reply--e.g., it got a connection request or a client
|
||||
disconnect.
|
||||
|
||||
Like 'run-form', return two values: the exit reason, and an \"argument\"."
|
||||
(define* (discard-client! port #:optional errno)
|
||||
(if errno
|
||||
(syslog "removing client ~d due to ~s~%"
|
||||
(fileno port) (strerror errno))
|
||||
(syslog "removing client ~d due to EOF~%"
|
||||
(fileno port)))
|
||||
|
||||
;; XXX: Watch out! There's no 'form-unwatch-fd' procedure in Newt so we
|
||||
;; cheat: we keep PORT's file descriptor open, but make it a duplicate of
|
||||
;; a valid but inactive FD. Failing to do that, 'run-form' would
|
||||
;; select(2) on the now-closed port and keep spinning as select(2) returns
|
||||
;; EBADF.
|
||||
(close-port-and-reuse-fd port)
|
||||
|
||||
(current-clients (delq port (current-clients)))
|
||||
(close-port port))
|
||||
|
||||
(define title
|
||||
;; Title of FORM.
|
||||
(match exp
|
||||
(((? symbol? tag) alist ...)
|
||||
(match (assq 'title alist)
|
||||
((_ title) title)
|
||||
(_ tag)))
|
||||
(((? symbol? tag) _ ...)
|
||||
tag)
|
||||
(_
|
||||
'unknown)))
|
||||
|
||||
;; Send EXP to all the currently-connected clients.
|
||||
(send-to-clients exp)
|
||||
|
||||
(let loop ()
|
||||
(syslog "running form ~s (~s) with ~d clients~%"
|
||||
form title (length (current-clients)))
|
||||
|
||||
;; Call 'watch-clients!' within the loop because there might be new
|
||||
;; clients.
|
||||
(watch-clients! form)
|
||||
|
||||
(let-values (((reason argument) (run-form form)))
|
||||
(match reason
|
||||
('exit-fd-ready
|
||||
(match (fdes->ports argument)
|
||||
((port _ ...)
|
||||
(if (memq port (current-clients))
|
||||
|
||||
;; Read a reply from a client or handle its departure.
|
||||
(catch 'system-error
|
||||
(lambda ()
|
||||
(match (read port)
|
||||
((? eof-object? eof)
|
||||
(discard-client! port)
|
||||
(loop))
|
||||
(obj
|
||||
(syslog "form ~s (~s): client ~d replied ~s~%"
|
||||
form title (fileno port) obj)
|
||||
(values 'exit-fd-ready obj))))
|
||||
(lambda args
|
||||
(discard-client! port (system-error-errno args))
|
||||
(loop)))
|
||||
|
||||
;; Accept a new client and send it EXP.
|
||||
(match (accept port)
|
||||
((client . _)
|
||||
(syslog "accepting new client ~d while on form ~s~%"
|
||||
(fileno client) form)
|
||||
(catch 'system-error
|
||||
(lambda ()
|
||||
(write exp client)
|
||||
(newline client)
|
||||
(force-output client)
|
||||
(current-clients (cons client (current-clients))))
|
||||
(lambda _
|
||||
(close-port client)))
|
||||
(loop)))))))
|
||||
(_
|
||||
(values reason argument))))))
|
||||
|
||||
(define (draw-info-page text title)
|
||||
"Draw an informative page with the given TEXT as content. Set the title of
|
||||
this page to TITLE."
|
||||
(send-to-clients `(info (title ,title) (text ,text)))
|
||||
(let* ((text-box
|
||||
(make-reflowed-textbox -1 -1 text 40
|
||||
#:flags FLAG-BORDER))
|
||||
@@ -227,11 +107,11 @@ input box, such as FLAG-PASSWORD."
|
||||
(list GRID-ELEMENT-COMPONENT input-visible-cb)
|
||||
'())))
|
||||
GRID-ELEMENT-COMPONENT ok-button))
|
||||
(form (make-form #:flags FLAG-NOF12)))
|
||||
(form (make-form)))
|
||||
|
||||
(add-component-callback
|
||||
input-visible-cb
|
||||
(lambda ()
|
||||
(lambda (component)
|
||||
(set-entry-flags input-entry
|
||||
FLAG-PASSWORD
|
||||
FLAG-ROLE-TOGGLE)))
|
||||
@@ -246,25 +126,20 @@ input box, such as FLAG-PASSWORD."
|
||||
(G_ "Empty input")))))
|
||||
(let loop ()
|
||||
(receive (exit-reason argument)
|
||||
(run-form-with-clients form
|
||||
`(input (title ,title) (text ,text)
|
||||
(default ,default-text)))
|
||||
(let ((input (if (eq? exit-reason 'exit-fd-ready)
|
||||
argument
|
||||
(entry-value input-entry))))
|
||||
(cond ((not input) ;client disconnect or something
|
||||
(loop))
|
||||
((and (not allow-empty-input?)
|
||||
(eq? exit-reason 'exit-component)
|
||||
(string=? input ""))
|
||||
;; Display the error page.
|
||||
(error-page)
|
||||
;; Set the focus back to the input input field.
|
||||
(set-current-component form input-entry)
|
||||
(loop))
|
||||
(else
|
||||
(destroy-form-and-pop form)
|
||||
input))))))))
|
||||
(run-form form)
|
||||
(let ((input (entry-value input-entry)))
|
||||
(if (and (not allow-empty-input?)
|
||||
(eq? exit-reason 'exit-component)
|
||||
(string=? input ""))
|
||||
(begin
|
||||
;; Display the error page.
|
||||
(error-page)
|
||||
;; Set the focus back to the input input field.
|
||||
(set-current-component form input-entry)
|
||||
(loop))
|
||||
(begin
|
||||
(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
|
||||
@@ -285,8 +160,7 @@ of the page is set to TITLE."
|
||||
(newt-set-color COLORSET-ROOT "white" "red")
|
||||
(add-components-to-form form text-box ok-button)
|
||||
(make-wrapped-grid-window grid title)
|
||||
(run-form-with-clients form
|
||||
`(error (title ,title) (text ,text)))
|
||||
(run-form form)
|
||||
;; Restore the background to its original color.
|
||||
(newt-set-color COLORSET-ROOT "white" "blue")
|
||||
(destroy-form-and-pop form)))
|
||||
@@ -307,29 +181,23 @@ of the page is set to TITLE."
|
||||
(horizontal-stacked-grid
|
||||
GRID-ELEMENT-COMPONENT ok-button
|
||||
GRID-ELEMENT-COMPONENT exit-button)))
|
||||
(form (make-form #:flags FLAG-NOF12)))
|
||||
(form (make-form)))
|
||||
|
||||
(add-form-to-grid grid form #t)
|
||||
(make-wrapped-grid-window grid title)
|
||||
|
||||
(receive (exit-reason argument)
|
||||
(run-form-with-clients form
|
||||
`(confirmation (title ,title)
|
||||
(text ,text)))
|
||||
(run-form form)
|
||||
(dynamic-wind
|
||||
(const #t)
|
||||
(lambda ()
|
||||
(match exit-reason
|
||||
('exit-component
|
||||
(case exit-reason
|
||||
((exit-component)
|
||||
(cond
|
||||
((components=? argument ok-button)
|
||||
#t)
|
||||
((components=? argument exit-button)
|
||||
(exit-button-procedure))))
|
||||
('exit-fd-ready
|
||||
(if argument
|
||||
#t
|
||||
(exit-button-procedure)))))
|
||||
(exit-button-procedure))))))
|
||||
(lambda ()
|
||||
(destroy-form-and-pop form))))))
|
||||
|
||||
@@ -354,8 +222,6 @@ of the page is set to TITLE."
|
||||
(const #t))
|
||||
(listbox-callback-procedure
|
||||
identity)
|
||||
(client-callback-procedure
|
||||
listbox-callback-procedure)
|
||||
(hotkey-callback-procedure
|
||||
(const #t)))
|
||||
"Run a page asking the user to select an item in a listbox. The page
|
||||
@@ -388,9 +254,9 @@ Each time the listbox current item changes, call SKIP-ITEM-PROCEDURE? with the
|
||||
current listbox item as argument. If it returns #t, skip the element and jump
|
||||
to the next/previous one depending on the previous item, otherwise do
|
||||
nothing."
|
||||
(let loop ()
|
||||
(define (fill-listbox listbox items)
|
||||
"Append the given ITEMS to LISTBOX, once they have been converted to text
|
||||
|
||||
(define (fill-listbox listbox items)
|
||||
"Append the given ITEMS to LISTBOX, once they have been converted to text
|
||||
with LISTBOX-ITEM->TEXT. Each item appended to the LISTBOX is given a key by
|
||||
newt. Save this key by returning an association list under the form:
|
||||
|
||||
@@ -398,165 +264,144 @@ newt. Save this key by returning an association list under the form:
|
||||
|
||||
where NEWT-LISTBOX-KEY is the key returned by APPEND-ENTRY-TO-LISTBOX, when
|
||||
ITEM was inserted into LISTBOX."
|
||||
(map (lambda (item)
|
||||
(let* ((text (listbox-item->text item))
|
||||
(key (append-entry-to-listbox listbox text)))
|
||||
(cons key item)))
|
||||
items))
|
||||
(map (lambda (item)
|
||||
(let* ((text (listbox-item->text item))
|
||||
(key (append-entry-to-listbox listbox text)))
|
||||
(cons key item)))
|
||||
items))
|
||||
|
||||
(define (sort-listbox-items listbox-items)
|
||||
"Return LISTBOX-ITEMS sorted using the 'string-locale<?' procedure on the text
|
||||
(define (sort-listbox-items listbox-items)
|
||||
"Return LISTBOX-ITEMS sorted using the 'string-locale<?' procedure on the text
|
||||
corresponding to each item in the list."
|
||||
(let* ((items (map (lambda (item)
|
||||
(cons item (listbox-item->text item)))
|
||||
listbox-items))
|
||||
(sorted-items
|
||||
(sort items (lambda (a b)
|
||||
(let ((text-a (cdr a))
|
||||
(text-b (cdr b)))
|
||||
(string-locale<? text-a text-b))))))
|
||||
(map car sorted-items)))
|
||||
(let* ((items (map (lambda (item)
|
||||
(cons item (listbox-item->text item)))
|
||||
listbox-items))
|
||||
(sorted-items
|
||||
(sort items (lambda (a b)
|
||||
(let ((text-a (cdr a))
|
||||
(text-b (cdr b)))
|
||||
(string-locale<? text-a text-b))))))
|
||||
(map car sorted-items)))
|
||||
|
||||
;; Store the last selected listbox item's key.
|
||||
(define last-listbox-key (make-parameter #f))
|
||||
;; Store the last selected listbox item's key.
|
||||
(define last-listbox-key (make-parameter #f))
|
||||
|
||||
(define (previous-key keys key)
|
||||
(let ((index (list-index (cut eq? key <>) keys)))
|
||||
(and index
|
||||
(> index 0)
|
||||
(list-ref keys (- index 1)))))
|
||||
(define (previous-key keys key)
|
||||
(let ((index (list-index (cut eq? key <>) keys)))
|
||||
(and index
|
||||
(> index 0)
|
||||
(list-ref keys (- index 1)))))
|
||||
|
||||
(define (next-key keys key)
|
||||
(let ((index (list-index (cut eq? key <>) keys)))
|
||||
(and index
|
||||
(< index (- (length keys) 1))
|
||||
(list-ref keys (+ index 1)))))
|
||||
(define (next-key keys key)
|
||||
(let ((index (list-index (cut eq? key <>) keys)))
|
||||
(and index
|
||||
(< index (- (length keys) 1))
|
||||
(list-ref keys (+ index 1)))))
|
||||
|
||||
(define (set-default-item listbox listbox-keys default-item)
|
||||
"Set the default item of LISTBOX to DEFAULT-ITEM. LISTBOX-KEYS is the
|
||||
(define (set-default-item listbox listbox-keys default-item)
|
||||
"Set the default item of LISTBOX to DEFAULT-ITEM. LISTBOX-KEYS is the
|
||||
association list returned by the FILL-LISTBOX procedure. It is used because
|
||||
the current listbox item has to be selected by key."
|
||||
(for-each (match-lambda
|
||||
((key . item)
|
||||
(when (equal? item default-item)
|
||||
(set-current-listbox-entry-by-key listbox key))))
|
||||
listbox-keys))
|
||||
(for-each (match-lambda
|
||||
((key . item)
|
||||
(when (equal? item default-item)
|
||||
(set-current-listbox-entry-by-key listbox key))))
|
||||
listbox-keys))
|
||||
|
||||
(let* ((listbox (make-listbox
|
||||
-1 -1
|
||||
listbox-height
|
||||
(logior FLAG-SCROLL FLAG-BORDER FLAG-RETURNEXIT
|
||||
(if listbox-allow-multiple?
|
||||
FLAG-MULTIPLE
|
||||
0))))
|
||||
(form (make-form #:flags FLAG-NOF12))
|
||||
(info-textbox
|
||||
(make-reflowed-textbox -1 -1 info-text
|
||||
info-textbox-width
|
||||
#:flags FLAG-BORDER))
|
||||
(button (make-button -1 -1 button-text))
|
||||
(button2 (and button2-text
|
||||
(make-button -1 -1 button2-text)))
|
||||
(grid (vertically-stacked-grid
|
||||
GRID-ELEMENT-COMPONENT info-textbox
|
||||
GRID-ELEMENT-COMPONENT listbox
|
||||
GRID-ELEMENT-SUBGRID
|
||||
(apply
|
||||
horizontal-stacked-grid
|
||||
GRID-ELEMENT-COMPONENT button
|
||||
`(,@(if button2
|
||||
(list GRID-ELEMENT-COMPONENT button2)
|
||||
'())))))
|
||||
(sorted-items (if sort-listbox-items?
|
||||
(sort-listbox-items listbox-items)
|
||||
listbox-items))
|
||||
(keys (fill-listbox listbox sorted-items)))
|
||||
(let* ((listbox (make-listbox
|
||||
-1 -1
|
||||
listbox-height
|
||||
(logior FLAG-SCROLL FLAG-BORDER FLAG-RETURNEXIT
|
||||
(if listbox-allow-multiple?
|
||||
FLAG-MULTIPLE
|
||||
0))))
|
||||
(form (make-form))
|
||||
(info-textbox
|
||||
(make-reflowed-textbox -1 -1 info-text
|
||||
info-textbox-width
|
||||
#:flags FLAG-BORDER))
|
||||
(button (make-button -1 -1 button-text))
|
||||
(button2 (and button2-text
|
||||
(make-button -1 -1 button2-text)))
|
||||
(grid (vertically-stacked-grid
|
||||
GRID-ELEMENT-COMPONENT info-textbox
|
||||
GRID-ELEMENT-COMPONENT listbox
|
||||
GRID-ELEMENT-SUBGRID
|
||||
(apply
|
||||
horizontal-stacked-grid
|
||||
GRID-ELEMENT-COMPONENT button
|
||||
`(,@(if button2
|
||||
(list GRID-ELEMENT-COMPONENT button2)
|
||||
'())))))
|
||||
(sorted-items (if sort-listbox-items?
|
||||
(sort-listbox-items listbox-items)
|
||||
listbox-items))
|
||||
(keys (fill-listbox listbox sorted-items)))
|
||||
|
||||
(define (choice->item str)
|
||||
;; Return the item that corresponds to STR.
|
||||
(match (find (match-lambda
|
||||
((key . item)
|
||||
(string=? str (listbox-item->text item))))
|
||||
keys)
|
||||
((key . item) item)
|
||||
(#f (raise (condition (&installer-step-abort))))))
|
||||
;; On every listbox element change, check if we need to skip it. If yes,
|
||||
;; depending on the 'last-listbox-key', jump forward or backward. If no,
|
||||
;; do nothing.
|
||||
(add-component-callback
|
||||
listbox
|
||||
(lambda (component)
|
||||
(let* ((current-key (current-listbox-entry listbox))
|
||||
(listbox-keys (map car keys))
|
||||
(last-key (last-listbox-key))
|
||||
(item (assoc-ref keys current-key))
|
||||
(prev-key (previous-key listbox-keys current-key))
|
||||
(next-key (next-key listbox-keys current-key)))
|
||||
;; Update last-listbox-key before a potential call to
|
||||
;; set-current-listbox-entry-by-key, because it will immediately
|
||||
;; cause this callback to be called for the new entry.
|
||||
(last-listbox-key current-key)
|
||||
(when (skip-item-procedure? item)
|
||||
(when (eq? prev-key last-key)
|
||||
(if next-key
|
||||
(set-current-listbox-entry-by-key listbox next-key)
|
||||
(set-current-listbox-entry-by-key listbox prev-key)))
|
||||
(when (eq? next-key last-key)
|
||||
(if prev-key
|
||||
(set-current-listbox-entry-by-key listbox prev-key)
|
||||
(set-current-listbox-entry-by-key listbox next-key)))))))
|
||||
|
||||
;; On every listbox element change, check if we need to skip it. If yes,
|
||||
;; depending on the 'last-listbox-key', jump forward or backward. If no,
|
||||
;; do nothing.
|
||||
(add-component-callback
|
||||
listbox
|
||||
(lambda ()
|
||||
(let* ((current-key (current-listbox-entry listbox))
|
||||
(listbox-keys (map car keys))
|
||||
(last-key (last-listbox-key))
|
||||
(item (assoc-ref keys current-key))
|
||||
(prev-key (previous-key listbox-keys current-key))
|
||||
(next-key (next-key listbox-keys current-key)))
|
||||
;; Update last-listbox-key before a potential call to
|
||||
;; set-current-listbox-entry-by-key, because it will immediately
|
||||
;; cause this callback to be called for the new entry.
|
||||
(last-listbox-key current-key)
|
||||
(when (skip-item-procedure? item)
|
||||
(when (eq? prev-key last-key)
|
||||
(if next-key
|
||||
(set-current-listbox-entry-by-key listbox next-key)
|
||||
(set-current-listbox-entry-by-key listbox prev-key)))
|
||||
(when (eq? next-key last-key)
|
||||
(if prev-key
|
||||
(set-current-listbox-entry-by-key listbox prev-key)
|
||||
(set-current-listbox-entry-by-key listbox next-key)))))))
|
||||
(when listbox-default-item
|
||||
(set-default-item listbox keys listbox-default-item))
|
||||
|
||||
(when listbox-default-item
|
||||
(set-default-item listbox keys listbox-default-item))
|
||||
(when allow-delete?
|
||||
(form-add-hotkey form KEY-DELETE))
|
||||
|
||||
(when allow-delete?
|
||||
(form-add-hotkey form KEY-DELETE))
|
||||
(add-form-to-grid grid form #t)
|
||||
(make-wrapped-grid-window grid title)
|
||||
|
||||
(add-form-to-grid grid form #t)
|
||||
(make-wrapped-grid-window grid title)
|
||||
|
||||
(receive (exit-reason argument)
|
||||
(run-form-with-clients form
|
||||
`(list-selection (title ,title)
|
||||
(multiple-choices?
|
||||
,listbox-allow-multiple?)
|
||||
(items
|
||||
,(map listbox-item->text
|
||||
listbox-items))))
|
||||
(dynamic-wind
|
||||
(const #t)
|
||||
(lambda ()
|
||||
(match exit-reason
|
||||
('exit-component
|
||||
(cond
|
||||
((components=? argument button)
|
||||
(button-callback-procedure))
|
||||
((and button2
|
||||
(components=? argument button2))
|
||||
(button2-callback-procedure))
|
||||
((components=? argument listbox)
|
||||
(if listbox-allow-multiple?
|
||||
(let* ((entries (listbox-selection listbox))
|
||||
(items (map (lambda (entry)
|
||||
(assoc-ref keys entry))
|
||||
entries)))
|
||||
(listbox-callback-procedure items))
|
||||
(let* ((entry (current-listbox-entry listbox))
|
||||
(item (assoc-ref keys entry)))
|
||||
(listbox-callback-procedure item))))))
|
||||
('exit-fd-ready
|
||||
(let* ((choice argument)
|
||||
(item (if listbox-allow-multiple?
|
||||
(map choice->item choice)
|
||||
(choice->item choice))))
|
||||
(client-callback-procedure item)))
|
||||
('exit-hotkey
|
||||
(let* ((entry (current-listbox-entry listbox))
|
||||
(item (assoc-ref keys entry)))
|
||||
(hotkey-callback-procedure argument item)))))
|
||||
(lambda ()
|
||||
(destroy-form-and-pop form)))))))
|
||||
(receive (exit-reason argument)
|
||||
(run-form form)
|
||||
(dynamic-wind
|
||||
(const #t)
|
||||
(lambda ()
|
||||
(case exit-reason
|
||||
((exit-component)
|
||||
(cond
|
||||
((components=? argument button)
|
||||
(button-callback-procedure))
|
||||
((and button2
|
||||
(components=? argument button2))
|
||||
(button2-callback-procedure))
|
||||
((components=? argument listbox)
|
||||
(if listbox-allow-multiple?
|
||||
(let* ((entries (listbox-selection listbox))
|
||||
(items (map (lambda (entry)
|
||||
(assoc-ref keys entry))
|
||||
entries)))
|
||||
(listbox-callback-procedure items))
|
||||
(let* ((entry (current-listbox-entry listbox))
|
||||
(item (assoc-ref keys entry)))
|
||||
(listbox-callback-procedure item))))))
|
||||
((exit-hotkey)
|
||||
(let* ((entry (current-listbox-entry listbox))
|
||||
(item (assoc-ref keys entry)))
|
||||
(hotkey-callback-procedure argument item)))))
|
||||
(lambda ()
|
||||
(destroy-form-and-pop form))))))
|
||||
|
||||
(define* (run-scale-page #:key
|
||||
title
|
||||
@@ -653,75 +498,48 @@ ITEMS when 'Ok' is pressed."
|
||||
items
|
||||
selection))
|
||||
|
||||
(let loop ()
|
||||
(let* ((checkbox-tree
|
||||
(make-checkboxtree -1 -1
|
||||
checkbox-tree-height
|
||||
FLAG-BORDER))
|
||||
(info-textbox
|
||||
(make-reflowed-textbox -1 -1 info-text
|
||||
info-textbox-width
|
||||
#:flags FLAG-BORDER))
|
||||
(ok-button (make-button -1 -1 (G_ "OK")))
|
||||
(exit-button (make-button -1 -1 (G_ "Exit")))
|
||||
(grid (vertically-stacked-grid
|
||||
GRID-ELEMENT-COMPONENT info-textbox
|
||||
GRID-ELEMENT-COMPONENT checkbox-tree
|
||||
GRID-ELEMENT-SUBGRID
|
||||
(horizontal-stacked-grid
|
||||
GRID-ELEMENT-COMPONENT ok-button
|
||||
GRID-ELEMENT-COMPONENT exit-button)))
|
||||
(keys (fill-checkbox-tree checkbox-tree items))
|
||||
(form (make-form #:flags FLAG-NOF12)))
|
||||
(let* ((checkbox-tree
|
||||
(make-checkboxtree -1 -1
|
||||
checkbox-tree-height
|
||||
FLAG-BORDER))
|
||||
(info-textbox
|
||||
(make-reflowed-textbox -1 -1 info-text
|
||||
info-textbox-width
|
||||
#:flags FLAG-BORDER))
|
||||
(ok-button (make-button -1 -1 (G_ "OK")))
|
||||
(exit-button (make-button -1 -1 (G_ "Exit")))
|
||||
(grid (vertically-stacked-grid
|
||||
GRID-ELEMENT-COMPONENT info-textbox
|
||||
GRID-ELEMENT-COMPONENT checkbox-tree
|
||||
GRID-ELEMENT-SUBGRID
|
||||
(horizontal-stacked-grid
|
||||
GRID-ELEMENT-COMPONENT ok-button
|
||||
GRID-ELEMENT-COMPONENT exit-button)))
|
||||
(keys (fill-checkbox-tree checkbox-tree items))
|
||||
(form (make-form)))
|
||||
|
||||
(define (choice->item str)
|
||||
;; Return the item that corresponds to STR.
|
||||
(match (find (match-lambda
|
||||
((key . item)
|
||||
(string=? str (item->text item))))
|
||||
keys)
|
||||
((key . item) item)
|
||||
(#f (raise (condition (&installer-step-abort))))))
|
||||
(add-form-to-grid grid form #t)
|
||||
(make-wrapped-grid-window grid title)
|
||||
|
||||
(add-form-to-grid grid form #t)
|
||||
(make-wrapped-grid-window grid title)
|
||||
|
||||
(receive (exit-reason argument)
|
||||
(run-form-with-clients form
|
||||
`(checkbox-list (title ,title)
|
||||
(text ,info-text)
|
||||
(items
|
||||
,(map item->text items))))
|
||||
(dynamic-wind
|
||||
(const #t)
|
||||
|
||||
(lambda ()
|
||||
(match exit-reason
|
||||
('exit-component
|
||||
(cond
|
||||
((components=? argument ok-button)
|
||||
(let* ((entries (current-checkbox-selection checkbox-tree))
|
||||
(current-items (map (lambda (entry)
|
||||
(assoc-ref keys entry))
|
||||
entries)))
|
||||
(ok-button-callback-procedure)
|
||||
current-items))
|
||||
((components=? argument exit-button)
|
||||
(exit-button-callback-procedure))))
|
||||
('exit-fd-ready
|
||||
(map choice->item argument))))
|
||||
(lambda ()
|
||||
(destroy-form-and-pop form)))))))
|
||||
|
||||
(define* (edit-file file #:key locale)
|
||||
"Spawn an editor for FILE."
|
||||
(clear-screen)
|
||||
(newt-suspend)
|
||||
;; Use Nano because it syntax-highlights Scheme by default.
|
||||
;; TODO: Add a menu to choose an editor?
|
||||
(run-command (list "/run/current-system/profile/bin/nano" file)
|
||||
#:locale locale)
|
||||
(newt-resume))
|
||||
(receive (exit-reason argument)
|
||||
(run-form form)
|
||||
(dynamic-wind
|
||||
(const #t)
|
||||
(lambda ()
|
||||
(case exit-reason
|
||||
((exit-component)
|
||||
(cond
|
||||
((components=? argument ok-button)
|
||||
(let* ((entries (current-checkbox-selection checkbox-tree))
|
||||
(current-items (map (lambda (entry)
|
||||
(assoc-ref keys entry))
|
||||
entries)))
|
||||
(ok-button-callback-procedure)
|
||||
current-items))
|
||||
((components=? argument exit-button)
|
||||
(exit-button-callback-procedure))))))
|
||||
(lambda ()
|
||||
(destroy-form-and-pop form))))))
|
||||
|
||||
(define* (run-file-textbox-page #:key
|
||||
info-text
|
||||
@@ -731,79 +549,55 @@ ITEMS when 'Ok' is pressed."
|
||||
(file-textbox-width 50)
|
||||
(file-textbox-height 30)
|
||||
(exit-button? #t)
|
||||
(edit-button? #f)
|
||||
(editor-locale #f)
|
||||
(ok-button-callback-procedure
|
||||
(const #t))
|
||||
(exit-button-callback-procedure
|
||||
(const #t)))
|
||||
(let loop ()
|
||||
(let* ((info-textbox
|
||||
(make-reflowed-textbox -1 -1 info-text
|
||||
info-textbox-width
|
||||
#:flags FLAG-BORDER))
|
||||
(file-textbox
|
||||
(make-textbox -1 -1
|
||||
file-textbox-width
|
||||
file-textbox-height
|
||||
(logior FLAG-SCROLL FLAG-BORDER)))
|
||||
(ok-button (make-button -1 -1 (G_ "OK")))
|
||||
(exit-button (make-button -1 -1 (G_ "Exit")))
|
||||
(edit-button (and edit-button?
|
||||
(make-button -1 -1 (G_ "Edit"))))
|
||||
(grid (vertically-stacked-grid
|
||||
GRID-ELEMENT-COMPONENT info-textbox
|
||||
GRID-ELEMENT-COMPONENT file-textbox
|
||||
GRID-ELEMENT-SUBGRID
|
||||
(apply
|
||||
horizontal-stacked-grid
|
||||
GRID-ELEMENT-COMPONENT ok-button
|
||||
`(,@(if edit-button?
|
||||
(list GRID-ELEMENT-COMPONENT edit-button)
|
||||
'())
|
||||
,@(if exit-button?
|
||||
(list GRID-ELEMENT-COMPONENT exit-button)
|
||||
'())))))
|
||||
(form (make-form #:flags FLAG-NOF12)))
|
||||
(let* ((info-textbox
|
||||
(make-reflowed-textbox -1 -1 info-text
|
||||
info-textbox-width
|
||||
#:flags FLAG-BORDER))
|
||||
(file-text (read-all file))
|
||||
(file-textbox
|
||||
(make-textbox -1 -1
|
||||
file-textbox-width
|
||||
file-textbox-height
|
||||
(logior FLAG-SCROLL FLAG-BORDER)))
|
||||
(ok-button (make-button -1 -1 (G_ "OK")))
|
||||
(exit-button (make-button -1 -1 (G_ "Exit")))
|
||||
(grid (vertically-stacked-grid
|
||||
GRID-ELEMENT-COMPONENT info-textbox
|
||||
GRID-ELEMENT-COMPONENT file-textbox
|
||||
GRID-ELEMENT-SUBGRID
|
||||
(apply
|
||||
horizontal-stacked-grid
|
||||
GRID-ELEMENT-COMPONENT ok-button
|
||||
`(,@(if exit-button?
|
||||
(list GRID-ELEMENT-COMPONENT exit-button)
|
||||
'())))))
|
||||
(form (make-form)))
|
||||
|
||||
(add-form-to-grid grid form #t)
|
||||
(make-wrapped-grid-window grid title)
|
||||
(set-textbox-text file-textbox
|
||||
(receive (_w _h text)
|
||||
(reflow-text file-text
|
||||
file-textbox-width
|
||||
0 0)
|
||||
text))
|
||||
(add-form-to-grid grid form #t)
|
||||
(make-wrapped-grid-window grid title)
|
||||
|
||||
(set-textbox-text file-textbox
|
||||
(receive (_w _h text)
|
||||
(reflow-text (read-all file)
|
||||
file-textbox-width
|
||||
0 0)
|
||||
text))
|
||||
|
||||
(receive (exit-reason argument)
|
||||
(run-form-with-clients form
|
||||
`(file-dialog (title ,title)
|
||||
(text ,info-text)
|
||||
(file ,file)))
|
||||
(define result
|
||||
(dynamic-wind
|
||||
(const #t)
|
||||
(lambda ()
|
||||
(match exit-reason
|
||||
('exit-component
|
||||
(cond
|
||||
((components=? argument ok-button)
|
||||
(ok-button-callback-procedure))
|
||||
((and exit-button?
|
||||
(components=? argument exit-button))
|
||||
(exit-button-callback-procedure))
|
||||
((and edit-button?
|
||||
(components=? argument edit-button))
|
||||
(edit-file file))))
|
||||
('exit-fd-ready
|
||||
(if argument
|
||||
(ok-button-callback-procedure)
|
||||
(exit-button-callback-procedure)))))
|
||||
(lambda ()
|
||||
(destroy-form-and-pop form))))
|
||||
|
||||
(if (and (eq? exit-reason 'exit-component)
|
||||
(components=? argument edit-button))
|
||||
(loop) ;recurse in tail position
|
||||
result)))))
|
||||
(receive (exit-reason argument)
|
||||
(run-form form)
|
||||
(dynamic-wind
|
||||
(const #t)
|
||||
(lambda ()
|
||||
(case exit-reason
|
||||
((exit-component)
|
||||
(cond
|
||||
((components=? argument ok-button)
|
||||
(ok-button-callback-procedure))
|
||||
((and exit-button?
|
||||
(components=? argument exit-button))
|
||||
(exit-button-callback-procedure))))))
|
||||
(lambda ()
|
||||
(destroy-form-and-pop form))))))
|
||||
|
||||
@@ -1,57 +0,0 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;;
|
||||
;;; 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 installer newt parameters)
|
||||
#:use-module (gnu installer proxy)
|
||||
#:use-module (gnu installer steps)
|
||||
#:use-module (gnu installer newt page)
|
||||
#:use-module (guix i18n)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (newt)
|
||||
#:export (run-parameters-page))
|
||||
|
||||
(define (run-proxy-page)
|
||||
(define proxy
|
||||
(run-input-page (G_ "Please enter the HTTP proxy URL. If you enter an \
|
||||
empty string, proxy usage will be disabled.")
|
||||
(G_ "HTTP proxy configuration")
|
||||
#:allow-empty-input? #t))
|
||||
(if (string=? proxy "")
|
||||
(clear-http-proxy)
|
||||
(set-http-proxy proxy)))
|
||||
|
||||
(define (run-parameters-page keyboard-layout-selection)
|
||||
"Run a parameters page allowing to change the keyboard layout"
|
||||
(let* ((items
|
||||
(list
|
||||
(cons (G_ "Change keyboard layout") keyboard-layout-selection)
|
||||
(cons (G_ "Configure HTTP proxy") run-proxy-page)))
|
||||
(result
|
||||
(run-listbox-selection-page
|
||||
#:info-text (G_ "Please choose one of the following parameters or \
|
||||
press ‘Back’ to go back to the installation process.")
|
||||
#:title (G_ "Installation parameters")
|
||||
#:listbox-items items
|
||||
#:listbox-item->text car
|
||||
#:sort-listbox-items? #f
|
||||
#:listbox-height 6
|
||||
#:button-text (G_ "Back"))))
|
||||
(match result
|
||||
((_ . proc)
|
||||
(proc))
|
||||
(_ #f))))
|
||||
@@ -1,7 +1,6 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2018, 2019 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -121,7 +120,7 @@ Be careful, all data on the disk will be lost.")
|
||||
(run-listbox-selection-page
|
||||
#:info-text (G_ "Please select the file-system type for this partition.")
|
||||
#:title (G_ "File-system type")
|
||||
#:listbox-items '(ext4 btrfs fat16 fat32 jfs swap)
|
||||
#:listbox-items '(ext4 btrfs fat16 fat32 swap)
|
||||
#:listbox-item->text user-fs-type-name
|
||||
#:sort-listbox-items? #f
|
||||
#:button-text (G_ "Exit")
|
||||
@@ -682,12 +681,6 @@ by pressing the Exit button.~%~%")))
|
||||
#:allow-delete? #t
|
||||
#:button-text (G_ "OK")
|
||||
#:button-callback-procedure button-ok-action
|
||||
|
||||
;; Consider client replies equivalent to hitting the "OK" button.
|
||||
;; XXX: In practice this means that clients cannot do anything but
|
||||
;; approve the predefined list of partitions.
|
||||
#:client-callback-procedure (lambda (_) (button-ok-action))
|
||||
|
||||
#:button2-text (G_ "Exit")
|
||||
#:button2-callback-procedure button-exit-action
|
||||
#:listbox-callback-procedure listbox-action
|
||||
|
||||
+29
-43
@@ -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 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
@@ -23,7 +23,6 @@
|
||||
#:use-module ((gnu installer steps) #:select (&installer-step-abort))
|
||||
#:use-module (gnu installer newt page)
|
||||
#:use-module (gnu installer newt utils)
|
||||
#:use-module (gnu installer utils)
|
||||
#:use-module (guix i18n)
|
||||
#:use-module (newt)
|
||||
#:use-module (ice-9 match)
|
||||
@@ -89,7 +88,7 @@ REAL-NAME, and HOME-DIRECTORY as the initial values in the form."
|
||||
|
||||
(add-component-callback
|
||||
entry-name
|
||||
(lambda ()
|
||||
(lambda (component)
|
||||
(set-entry-text entry-home-directory
|
||||
(string-append "/home/" (entry-value entry-name)))
|
||||
|
||||
@@ -99,7 +98,7 @@ REAL-NAME, and HOME-DIRECTORY as the initial values in the form."
|
||||
|
||||
(add-component-callback
|
||||
password-visible-cb
|
||||
(lambda ()
|
||||
(lambda (component)
|
||||
(set-entry-flags entry-password
|
||||
FLAG-PASSWORD
|
||||
FLAG-ROLE-TOGGLE)))
|
||||
@@ -116,7 +115,6 @@ REAL-NAME, and HOME-DIRECTORY as the initial values in the form."
|
||||
GRID-ELEMENT-SUBGRID entry-grid
|
||||
GRID-ELEMENT-SUBGRID button-grid)
|
||||
title)
|
||||
|
||||
(let ((error-page
|
||||
(lambda ()
|
||||
(run-error-page (G_ "Empty inputs are not allowed.")
|
||||
@@ -170,9 +168,9 @@ a thunk, if the confirmation doesn't match PASSWORD, and return its result."
|
||||
(try-again))))
|
||||
|
||||
(define (run-root-password-page)
|
||||
;; TRANSLATORS: Leave "root" untranslated: it refers to the name of the
|
||||
;; system administrator account.
|
||||
(define password
|
||||
;; TRANSLATORS: Leave "root" untranslated: it refers to the name of the
|
||||
;; system administrator account.
|
||||
(run-input-page (G_ "Please choose a password for the system \
|
||||
administrator (\"root\").")
|
||||
(G_ "System administrator password")
|
||||
@@ -232,45 +230,33 @@ administrator (\"root\").")
|
||||
(set-current-component form ok-button))
|
||||
|
||||
(receive (exit-reason argument)
|
||||
(run-form-with-clients form '(add-users))
|
||||
(run-form form)
|
||||
(dynamic-wind
|
||||
(const #t)
|
||||
(lambda ()
|
||||
(match exit-reason
|
||||
('exit-component
|
||||
(cond
|
||||
((components=? argument add-button)
|
||||
(run (cons (run-user-add-page) users)))
|
||||
((components=? argument del-button)
|
||||
(let* ((current-user-key (current-listbox-entry listbox))
|
||||
(users
|
||||
(map (cut assoc-ref <> 'user)
|
||||
(remove (lambda (element)
|
||||
(equal? (assoc-ref element 'key)
|
||||
current-user-key))
|
||||
listbox-elements))))
|
||||
(run users)))
|
||||
((components=? argument ok-button)
|
||||
(when (null? users)
|
||||
(run-error-page (G_ "Please create at least one user.")
|
||||
(G_ "No user"))
|
||||
(run users))
|
||||
(reverse users))
|
||||
((components=? argument exit-button)
|
||||
(raise
|
||||
(condition
|
||||
(&installer-step-abort))))))
|
||||
('exit-fd-ready
|
||||
;; Read the complete user list at once.
|
||||
(match argument
|
||||
((('user ('name names) ('real-name real-names)
|
||||
('home-directory homes) ('password passwords))
|
||||
..1)
|
||||
(map (lambda (name real-name home password)
|
||||
(user (name name) (real-name real-name)
|
||||
(home-directory home)
|
||||
(password password)))
|
||||
names real-names homes passwords))))))
|
||||
(when (eq? exit-reason 'exit-component)
|
||||
(cond
|
||||
((components=? argument add-button)
|
||||
(run (cons (run-user-add-page) users)))
|
||||
((components=? argument del-button)
|
||||
(let* ((current-user-key (current-listbox-entry listbox))
|
||||
(users
|
||||
(map (cut assoc-ref <> 'user)
|
||||
(remove (lambda (element)
|
||||
(equal? (assoc-ref element 'key)
|
||||
current-user-key))
|
||||
listbox-elements))))
|
||||
(run users)))
|
||||
((components=? argument ok-button)
|
||||
(when (null? users)
|
||||
(run-error-page (G_ "Please create at least one user.")
|
||||
(G_ "No user"))
|
||||
(run users))
|
||||
(reverse users))
|
||||
((components=? argument exit-button)
|
||||
(raise
|
||||
(condition
|
||||
(&installer-step-abort)))))))
|
||||
(lambda ()
|
||||
(destroy-form-and-pop form))))))
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;; Copyright © 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -12,20 +11,16 @@
|
||||
;;; 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 newt welcome)
|
||||
#:use-module (gnu installer steps)
|
||||
#:use-module (gnu installer utils)
|
||||
#:use-module (gnu installer newt page)
|
||||
#:use-module (gnu installer newt utils)
|
||||
#:use-module (guix build syscalls)
|
||||
#:use-module (guix i18n)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-34)
|
||||
#:use-module (srfi srfi-35)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (ice-9 receive)
|
||||
#:use-module (newt)
|
||||
@@ -71,43 +66,24 @@ we want this page to occupy all the screen space available."
|
||||
GRID-ELEMENT-COMPONENT options-listbox))
|
||||
(form (make-form)))
|
||||
|
||||
(define (choice->item str)
|
||||
;; Return the item that corresponds to STR.
|
||||
(match (find (match-lambda
|
||||
((key . item)
|
||||
(string=? str (listbox-item->text item))))
|
||||
keys)
|
||||
((key . item) item)
|
||||
(#f (raise (condition (&installer-step-abort))))))
|
||||
|
||||
(set-textbox-text logo-textbox (read-all logo))
|
||||
|
||||
(add-form-to-grid grid form #t)
|
||||
(make-wrapped-grid-window grid title)
|
||||
|
||||
(receive (exit-reason argument)
|
||||
(run-form-with-clients form
|
||||
`(menu (title ,title)
|
||||
(text ,info-text)
|
||||
(items
|
||||
,(map listbox-item->text
|
||||
listbox-items))))
|
||||
(run-form form)
|
||||
(dynamic-wind
|
||||
(const #t)
|
||||
(lambda ()
|
||||
(match exit-reason
|
||||
('exit-component
|
||||
(let* ((entry (current-listbox-entry options-listbox))
|
||||
(item (assoc-ref keys entry)))
|
||||
(match item
|
||||
((text . proc)
|
||||
(proc)))))
|
||||
('exit-fd-ready
|
||||
(let* ((choice argument)
|
||||
(item (choice->item choice)))
|
||||
(match item
|
||||
((text . proc)
|
||||
(proc)))))))
|
||||
(when (eq? exit-reason 'exit-component)
|
||||
(cond
|
||||
((components=? argument options-listbox)
|
||||
(let* ((entry (current-listbox-entry options-listbox))
|
||||
(item (assoc-ref keys entry)))
|
||||
(match item
|
||||
((text . proc)
|
||||
(proc))))))))
|
||||
(lambda ()
|
||||
(destroy-form-and-pop form))))))
|
||||
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2018, 2019 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2020 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -222,7 +221,6 @@ inferior to MAX-SIZE, #f otherwise."
|
||||
((btrfs) "btrfs")
|
||||
((fat16) "fat16")
|
||||
((fat32) "fat32")
|
||||
((jfs) "jfs")
|
||||
((swap) "linux-swap")))
|
||||
|
||||
(define (user-fs-type->mount-type fs-type)
|
||||
@@ -231,8 +229,7 @@ inferior to MAX-SIZE, #f otherwise."
|
||||
((ext4) "ext4")
|
||||
((btrfs) "btrfs")
|
||||
((fat16) "fat")
|
||||
((fat32) "vfat")
|
||||
((jfs) "jfs")))
|
||||
((fat32) "vfat")))
|
||||
|
||||
(define (partition-filesystem-user-type partition)
|
||||
"Return the filesystem type of PARTITION, to be stored in the FS-TYPE field
|
||||
@@ -245,7 +242,6 @@ of <user-partition> record."
|
||||
((string=? name "btrfs") 'btrfs)
|
||||
((string=? name "fat16") 'fat16)
|
||||
((string=? name "fat32") 'fat32)
|
||||
((string=? name "jfs") 'jfs)
|
||||
((or (string=? name "swsusp")
|
||||
(string=? name "linux-swap(v0)")
|
||||
(string=? name "linux-swap(v1)"))
|
||||
@@ -1016,7 +1012,7 @@ bit bucket."
|
||||
(lambda () exp ...)))))
|
||||
|
||||
(define (create-btrfs-file-system partition)
|
||||
"Create a btrfs file-system for PARTITION file-name."
|
||||
"Create an btrfs file-system for PARTITION file-name."
|
||||
(with-null-output-ports
|
||||
(invoke "mkfs.btrfs" "-f" partition)))
|
||||
|
||||
@@ -1035,11 +1031,6 @@ bit bucket."
|
||||
(with-null-output-ports
|
||||
(invoke "mkfs.fat" "-F32" partition)))
|
||||
|
||||
(define (create-jfs-file-system partition)
|
||||
"Create a JFS file-system for PARTITION file-name."
|
||||
(with-null-output-ports
|
||||
(invoke "jfs_mkfs" "-f" partition)))
|
||||
|
||||
(define (create-swap-partition partition)
|
||||
"Set up swap area on PARTITION file-name."
|
||||
(with-null-output-ports
|
||||
@@ -1070,8 +1061,6 @@ USER-PARTITION if it is encrypted, or the plain file-name otherwise."
|
||||
(call-with-luks-key-file
|
||||
password
|
||||
(lambda (key-file)
|
||||
(syslog "formatting and opening LUKS entry ~s at ~s~%"
|
||||
label file-name)
|
||||
(system* "cryptsetup" "-q" "luksFormat" file-name key-file)
|
||||
(system* "cryptsetup" "open" "--type" "luks"
|
||||
"--key-file" key-file file-name label)))))
|
||||
@@ -1079,7 +1068,6 @@ USER-PARTITION if it is encrypted, or the plain file-name otherwise."
|
||||
(define (luks-close user-partition)
|
||||
"Close the encrypted partition pointed by USER-PARTITION."
|
||||
(let ((label (user-partition-crypt-label user-partition)))
|
||||
(syslog "closing LUKS entry ~s~%" label)
|
||||
(system* "cryptsetup" "close" label)))
|
||||
|
||||
(define (format-user-partitions user-partitions)
|
||||
@@ -1113,10 +1101,6 @@ NEED-FORMATING? field set to #t."
|
||||
(and need-formatting?
|
||||
(not (eq? type 'extended))
|
||||
(create-fat32-file-system file-name)))
|
||||
((jfs)
|
||||
(and need-formatting?
|
||||
(not (eq? type 'extended))
|
||||
(create-jfs-file-system file-name)))
|
||||
((swap)
|
||||
(create-swap-partition file-name))
|
||||
(else
|
||||
@@ -1153,7 +1137,6 @@ respective mount-points."
|
||||
(file-name
|
||||
(user-partition-upper-file-name user-partition)))
|
||||
(mkdir-p target)
|
||||
(syslog "mounting ~s on ~s~%" file-name target)
|
||||
(mount file-name target mount-type)))
|
||||
sorted-partitions)))
|
||||
|
||||
@@ -1169,7 +1152,6 @@ respective mount-points."
|
||||
(target
|
||||
(string-append (%installer-target-dir)
|
||||
mount-point)))
|
||||
(syslog "unmounting ~s~%" target)
|
||||
(umount target)
|
||||
(when crypt-label
|
||||
(luks-close user-partition))))
|
||||
|
||||
@@ -1,45 +0,0 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;;
|
||||
;;; 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 installer proxy)
|
||||
#:use-module (gnu services herd)
|
||||
#:export (set-http-proxy
|
||||
clear-http-proxy))
|
||||
|
||||
(define-syntax-rule (with-silent-shepherd exp ...)
|
||||
(parameterize ((shepherd-message-port
|
||||
(%make-void-port "w")))
|
||||
exp ...))
|
||||
|
||||
(define (set-http-proxy proxy)
|
||||
(with-silent-shepherd
|
||||
(with-shepherd-action 'guix-daemon
|
||||
('set-http-proxy proxy)
|
||||
result
|
||||
result)))
|
||||
|
||||
(define (clear-http-proxy)
|
||||
(with-silent-shepherd
|
||||
(with-shepherd-action 'guix-daemon
|
||||
('set-http-proxy)
|
||||
result
|
||||
result)))
|
||||
|
||||
;; Local Variables:
|
||||
;; eval: (put 'with-silent-shepherd 'scheme-indent-function 0)
|
||||
;; End:
|
||||
@@ -1,6 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2018, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;; Copyright © 2020 Florian Pelz <pelzflorian@pelzflorian.de>
|
||||
;;; Copyright © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -38,9 +37,7 @@
|
||||
installer-user-page
|
||||
installer-partition-page
|
||||
installer-services-page
|
||||
installer-welcome-page
|
||||
installer-parameters-menu
|
||||
installer-parameters-page))
|
||||
installer-welcome-page))
|
||||
|
||||
|
||||
;;;
|
||||
@@ -64,7 +61,7 @@
|
||||
(exit-error installer-exit-error)
|
||||
;; procedure void -> void
|
||||
(final-page installer-final-page)
|
||||
;; procedure (layouts context) -> (list layout variant options)
|
||||
;; procedure (layouts) -> (list layout variant)
|
||||
(keymap-page installer-keymap-page)
|
||||
;; procedure: (#:key supported-locales iso639-languages iso3166-territories)
|
||||
;; -> glibc-locale
|
||||
@@ -84,8 +81,4 @@
|
||||
;; procedure void -> void
|
||||
(services-page installer-services-page)
|
||||
;; procedure (logo) -> void
|
||||
(welcome-page installer-welcome-page)
|
||||
;; procedure (menu-proc) -> void
|
||||
(parameters-menu installer-parameters-menu)
|
||||
;; procedure (keyboard-layout-selection) -> void
|
||||
(parameters-page installer-parameters-page))
|
||||
(welcome-page installer-welcome-page))
|
||||
|
||||
+7
-19
@@ -1,6 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2018, 2019 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;; Copyright © 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -20,7 +19,6 @@
|
||||
(define-module (gnu installer steps)
|
||||
#:use-module (guix records)
|
||||
#:use-module (guix build utils)
|
||||
#:use-module (gnu installer utils)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (ice-9 pretty-print)
|
||||
#:use-module (srfi srfi-1)
|
||||
@@ -179,7 +177,6 @@ return the accumalated result so far."
|
||||
#:done-steps '())))))
|
||||
((installer-step-break? c)
|
||||
(reverse result)))
|
||||
(syslog "running step '~a'~%" (installer-step-id step))
|
||||
(let* ((id (installer-step-id step))
|
||||
(compute (installer-step-compute step))
|
||||
(res (compute result done-steps)))
|
||||
@@ -187,18 +184,13 @@ return the accumalated result so far."
|
||||
#:todo-steps rest-steps
|
||||
#:done-steps (append done-steps (list step))))))))
|
||||
|
||||
;; Ignore SIGPIPE so that we don't die if a client closes the connection
|
||||
;; prematurely.
|
||||
(sigaction SIGPIPE SIG_IGN)
|
||||
|
||||
(with-server-socket
|
||||
(call-with-prompt 'raise-above
|
||||
(lambda ()
|
||||
(run '()
|
||||
#:todo-steps steps
|
||||
#:done-steps '()))
|
||||
(lambda (k condition)
|
||||
(raise condition)))))
|
||||
(call-with-prompt 'raise-above
|
||||
(lambda ()
|
||||
(run '()
|
||||
#:todo-steps steps
|
||||
#:done-steps '()))
|
||||
(lambda (k condition)
|
||||
(raise condition))))
|
||||
|
||||
(define (find-step-by-id steps id)
|
||||
"Find and return the step in STEPS whose id is equal to ID."
|
||||
@@ -256,7 +248,3 @@ found in RESULTS."
|
||||
(pretty-print part port)))
|
||||
configuration)
|
||||
(flush-output-port port))))
|
||||
|
||||
;;; Local Variables:
|
||||
;;; eval: (put 'with-server-socket 'scheme-indent-function 0)
|
||||
;;; End:
|
||||
|
||||
@@ -1,350 +0,0 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;;
|
||||
;;; 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 installer tests)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-34)
|
||||
#:use-module (srfi srfi-35)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (ice-9 regex)
|
||||
#:use-module (ice-9 pretty-print)
|
||||
#:export (&pattern-not-matched
|
||||
pattern-not-matched?
|
||||
|
||||
%installer-socket-file
|
||||
open-installer-socket
|
||||
|
||||
converse
|
||||
conversation-log-port
|
||||
|
||||
choose-locale+keyboard
|
||||
enter-host-name+passwords
|
||||
choose-services
|
||||
choose-partitioning
|
||||
conclude-installation
|
||||
|
||||
edit-configuration-file))
|
||||
|
||||
;;; Commentary:
|
||||
;;;
|
||||
;;; This module provides tools to test the guided "graphical" installer in a
|
||||
;;; non-interactive fashion. The core of it is 'converse': it allows you to
|
||||
;;; state Expect-style dialogues, which happen over the Unix-domain socket the
|
||||
;;; installer listens to. Higher-level procedures such as
|
||||
;;; 'choose-locale+keyboard' are provided to perform specific parts of the
|
||||
;;; dialogue.
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(define %installer-socket-file
|
||||
;; Socket the installer listens to.
|
||||
"/var/guix/installer-socket")
|
||||
|
||||
(define* (open-installer-socket #:optional (file %installer-socket-file))
|
||||
"Return a socket connected to the installer."
|
||||
(let ((sock (socket AF_UNIX SOCK_STREAM 0)))
|
||||
(connect sock AF_UNIX file)
|
||||
sock))
|
||||
|
||||
(define-condition-type &pattern-not-matched &error
|
||||
pattern-not-matched?
|
||||
(pattern pattern-not-matched-pattern)
|
||||
(sexp pattern-not-matched-sexp))
|
||||
|
||||
(define (pattern-error pattern sexp)
|
||||
(raise (condition
|
||||
(&pattern-not-matched
|
||||
(pattern pattern) (sexp sexp)))))
|
||||
|
||||
(define conversation-log-port
|
||||
;; Port where debugging info is logged
|
||||
(make-parameter (current-error-port)))
|
||||
|
||||
(define (converse-debug pattern)
|
||||
(format (conversation-log-port)
|
||||
"conversation expecting pattern ~s~%"
|
||||
pattern))
|
||||
|
||||
(define-syntax converse
|
||||
(lambda (s)
|
||||
"Convert over PORT: read sexps from there, match them against each
|
||||
PATTERN, and send the corresponding REPLY. Raise to '&pattern-not-matched'
|
||||
when one of the PATTERNs is not matched."
|
||||
|
||||
;; XXX: Strings that appear in PATTERNs must be in the language the
|
||||
;; installer is running in. In the future, we should add support to allow
|
||||
;; writing English strings in PATTERNs and have the pattern matcher
|
||||
;; automatically translate them.
|
||||
|
||||
;; Here we emulate 'pmatch' syntax on top of 'match'. This is ridiculous
|
||||
;; but that's because 'pmatch' compares objects with 'eq?', making it
|
||||
;; pretty useless, and it doesn't support ellipses and such.
|
||||
|
||||
(define (quote-pattern s)
|
||||
;; Rewrite the pattern S from pmatch style (a ,b) to match style like
|
||||
;; ('a b).
|
||||
(with-ellipsis :::
|
||||
(syntax-case s (unquote _ ...)
|
||||
((unquote id) #'id)
|
||||
(_ #'_)
|
||||
(... #'...)
|
||||
(id
|
||||
(identifier? #'id)
|
||||
#''id)
|
||||
((lst :::) (map quote-pattern #'(lst :::)))
|
||||
(pattern #'pattern))))
|
||||
|
||||
(define (match-pattern s)
|
||||
;; Match one pattern without a guard.
|
||||
(syntax-case s ()
|
||||
((port (pattern reply) continuation)
|
||||
(with-syntax ((pattern (quote-pattern #'pattern)))
|
||||
#'(let ((pat 'pattern))
|
||||
(converse-debug pat)
|
||||
(match (read port)
|
||||
(pattern
|
||||
(let ((data (call-with-values (lambda () reply)
|
||||
list)))
|
||||
(for-each (lambda (obj)
|
||||
(write obj port)
|
||||
(newline port))
|
||||
data)
|
||||
(force-output port)
|
||||
(continuation port)))
|
||||
(sexp
|
||||
(pattern-error pat sexp))))))))
|
||||
|
||||
(syntax-case s ()
|
||||
((_ port (pattern reply) rest ...)
|
||||
(match-pattern #'(port (pattern reply)
|
||||
(lambda (port)
|
||||
(converse port rest ...)))))
|
||||
((_ port (pattern guard reply) rest ...)
|
||||
#`(let ((skip? (not guard))
|
||||
(next (lambda (p)
|
||||
(converse p rest ...))))
|
||||
(if skip?
|
||||
(next port)
|
||||
#,(match-pattern #'(port (pattern reply) next)))))
|
||||
((_ port)
|
||||
#t))))
|
||||
|
||||
(define* (choose-locale+keyboard port
|
||||
#:key
|
||||
(language "English")
|
||||
(location "Hong Kong")
|
||||
(timezone '("Europe" "Zagreb"))
|
||||
(keyboard
|
||||
'("English (US)"
|
||||
"English (intl., with AltGr dead keys)")))
|
||||
"Converse over PORT with the guided installer to choose the specified
|
||||
LANGUAGE, LOCATION, TIMEZONE, and KEYBOARD."
|
||||
(converse port
|
||||
((list-selection (title "Locale language")
|
||||
(multiple-choices? #f)
|
||||
(items _))
|
||||
language)
|
||||
((list-selection (title "Locale location")
|
||||
(multiple-choices? #f)
|
||||
(items _))
|
||||
location)
|
||||
((menu (title "GNU Guix install")
|
||||
(text _)
|
||||
(items (,guided _ ...))) ;"Guided graphical installation"
|
||||
guided)
|
||||
((list-selection (title "Timezone")
|
||||
(multiple-choices? #f)
|
||||
(items _))
|
||||
(first timezone))
|
||||
((list-selection (title "Timezone")
|
||||
(multiple-choices? #f)
|
||||
(items _))
|
||||
(second timezone))
|
||||
((list-selection (title "Layout")
|
||||
(multiple-choices? #f)
|
||||
(items _))
|
||||
(first keyboard))
|
||||
((list-selection (title "Variant")
|
||||
(multiple-choices? #f)
|
||||
(items _))
|
||||
(second keyboard))))
|
||||
|
||||
(define* (enter-host-name+passwords port
|
||||
#:key
|
||||
(host-name "guix")
|
||||
(root-password "foo")
|
||||
(users '(("alice" "pass1")
|
||||
("bob" "pass2")
|
||||
("charlie" "pass3"))))
|
||||
"Converse over PORT with the guided installer to choose HOST-NAME,
|
||||
ROOT-PASSWORD, and USERS."
|
||||
(converse port
|
||||
((input (title "Hostname") (text _) (default _))
|
||||
host-name)
|
||||
((input (title "System administrator password") (text _) (default _))
|
||||
root-password)
|
||||
((input (title "Password confirmation required") (text _) (default _))
|
||||
root-password)
|
||||
((add-users)
|
||||
(match users
|
||||
(((names passwords) ...)
|
||||
(map (lambda (name password)
|
||||
`(user (name ,name) (real-name ,(string-titlecase name))
|
||||
(home-directory ,(string-append "/home/" name))
|
||||
(password ,password)))
|
||||
names passwords))))))
|
||||
|
||||
(define* (choose-services port
|
||||
#:key
|
||||
(choose-desktop-environment? (const #f))
|
||||
(choose-network-service?
|
||||
(lambda (service)
|
||||
(or (string-contains service "SSH")
|
||||
(string-contains service "NSS"))))
|
||||
(choose-network-management-tool?
|
||||
(lambda (service)
|
||||
(string-contains service "DHCP"))))
|
||||
"Converse over PORT to choose networking services."
|
||||
(define desktop-environments '())
|
||||
|
||||
(converse port
|
||||
((checkbox-list (title "Desktop environment") (text _)
|
||||
(items ,services))
|
||||
(let ((desktops (filter choose-desktop-environment? services)))
|
||||
(set! desktop-environments desktops)
|
||||
desktops))
|
||||
((checkbox-list (title "Network service") (text _)
|
||||
(items ,services))
|
||||
(filter choose-network-service? services))
|
||||
|
||||
;; The "Network management" dialog shows up only when no desktop
|
||||
;; environments have been selected, hence the guard.
|
||||
((list-selection (title "Network management")
|
||||
(multiple-choices? #f)
|
||||
(items ,services))
|
||||
(null? desktop-environments)
|
||||
(find choose-network-management-tool? services))))
|
||||
|
||||
(define (edit-configuration-file file)
|
||||
"Edit FILE, an operating system configuration file generated by the
|
||||
installer, by adding a marionette service such that the installed OS is
|
||||
instrumented for further testing."
|
||||
(define (read-expressions port)
|
||||
(let loop ((result '()))
|
||||
(match (read port)
|
||||
((? eof-object?)
|
||||
(reverse result))
|
||||
(exp
|
||||
(loop (cons exp result))))))
|
||||
|
||||
(define (edit exp)
|
||||
(match exp
|
||||
(('operating-system _ ...)
|
||||
`(marionette-operating-system ,exp
|
||||
#:imported-modules
|
||||
'((gnu services herd)
|
||||
(guix build utils)
|
||||
(guix combinators))))
|
||||
(_
|
||||
exp)))
|
||||
|
||||
(let ((content (call-with-input-file file read-expressions)))
|
||||
(call-with-output-file file
|
||||
(lambda (port)
|
||||
(format port "\
|
||||
;; Operating system configuration edited for automated testing.~%~%")
|
||||
|
||||
(pretty-print '(use-modules (gnu tests)) port)
|
||||
(for-each (lambda (exp)
|
||||
(pretty-print (edit exp) port)
|
||||
(newline port))
|
||||
content)))
|
||||
|
||||
#t))
|
||||
|
||||
(define* (choose-partitioning port
|
||||
#:key
|
||||
(encrypted? #t)
|
||||
(passphrase "thepassphrase")
|
||||
(edit-configuration-file
|
||||
edit-configuration-file))
|
||||
"Converse over PORT to choose the partitioning method. When ENCRYPTED? is
|
||||
true, choose full-disk encryption with PASSPHRASE as the LUKS passphrase.
|
||||
This conversation goes past the final dialog box that shows the configuration
|
||||
file, actually starting the installation process."
|
||||
(converse port
|
||||
((list-selection (title "Partitioning method")
|
||||
(multiple-choices? #f)
|
||||
(items (,not-encrypted ,encrypted _ ...)))
|
||||
(if encrypted?
|
||||
encrypted
|
||||
not-encrypted))
|
||||
((list-selection (title "Disk") (multiple-choices? #f)
|
||||
(items (,disks ...)))
|
||||
;; When running the installation from an ISO image, the CD/DVD drive
|
||||
;; shows up in the list. Avoid it.
|
||||
(find (lambda (disk)
|
||||
(not (or (string-contains disk "DVD")
|
||||
(string-contains disk "CD-ROM"))))
|
||||
disks))
|
||||
|
||||
;; The "Partition table" dialog pops up only if there's not already a
|
||||
;; partition table.
|
||||
((list-selection (title "Partition table")
|
||||
(multiple-choices? #f)
|
||||
(items _))
|
||||
"gpt")
|
||||
((list-selection (title "Partition scheme")
|
||||
(multiple-choices? #f)
|
||||
(items (,one-partition _ ...)))
|
||||
one-partition)
|
||||
((list-selection (title "Guided partitioning")
|
||||
(multiple-choices? #f)
|
||||
(items (,disk _ ...)))
|
||||
disk)
|
||||
((input (title "Password required")
|
||||
(text _) (default #f))
|
||||
encrypted? ;only when ENCRYPTED?
|
||||
passphrase)
|
||||
((input (title "Password confirmation required")
|
||||
(text _) (default #f))
|
||||
encrypted?
|
||||
passphrase)
|
||||
((confirmation (title "Format disk?") (text _))
|
||||
#t)
|
||||
((info (title "Preparing partitions") _ ...)
|
||||
(values)) ;nothing to return
|
||||
((file-dialog (title "Configuration file")
|
||||
(text _)
|
||||
(file ,configuration-file))
|
||||
(edit-configuration-file configuration-file))))
|
||||
|
||||
(define (conclude-installation port)
|
||||
"Conclude the installation by checking over PORT that we get the final
|
||||
messages once the 'guix system init' process has completed."
|
||||
(converse port
|
||||
((pause) ;"Press Enter to continue."
|
||||
#t)
|
||||
((installation-complete) ;congratulations!
|
||||
(values))))
|
||||
|
||||
;;; Local Variables:
|
||||
;;; eval: (put 'converse 'scheme-indent-function 1)
|
||||
;;; eval: (put 'with-ellipsis 'scheme-indent-function 1)
|
||||
;;; End:
|
||||
+31
-159
@@ -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 © 2018 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -21,26 +21,15 @@
|
||||
#:use-module (guix utils)
|
||||
#:use-module (guix build utils)
|
||||
#:use-module (guix i18n)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-34)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (ice-9 rdelim)
|
||||
#:use-module (ice-9 regex)
|
||||
#:use-module (ice-9 format)
|
||||
#:use-module (ice-9 textual-ports)
|
||||
#:export (read-lines
|
||||
read-all
|
||||
nearest-exact-integer
|
||||
read-percentage
|
||||
run-command
|
||||
|
||||
syslog-port
|
||||
syslog
|
||||
|
||||
with-server-socket
|
||||
current-server-socket
|
||||
current-clients
|
||||
send-to-clients))
|
||||
run-shell-command))
|
||||
|
||||
(define* (read-lines #:optional (port (current-input-port)))
|
||||
"Read lines from PORT and return them as a list."
|
||||
@@ -68,154 +57,37 @@ number. If no percentage is found, return #f"
|
||||
(and result
|
||||
(string->number (match:substring result 1)))))
|
||||
|
||||
(define* (run-command command #:key locale)
|
||||
"Run COMMAND, a list of strings, in the given LOCALE. Return true if
|
||||
(define* (run-shell-command command #:key locale)
|
||||
"Run COMMAND, a string, with Bash, and in the given LOCALE. Return true if
|
||||
COMMAND exited successfully, #f otherwise."
|
||||
(define env (environ))
|
||||
|
||||
(define (pause)
|
||||
(format #t (G_ "Press Enter to continue.~%"))
|
||||
(send-to-clients '(pause))
|
||||
(environ env) ;restore environment variables
|
||||
(match (select (cons (current-input-port) (current-clients))
|
||||
'() '())
|
||||
(((port _ ...) _ _)
|
||||
(read-line port))))
|
||||
(read-line (current-input-port)))
|
||||
|
||||
(setenv "PATH" "/run/current-system/profile/bin")
|
||||
(call-with-temporary-output-file
|
||||
(lambda (file port)
|
||||
(when locale
|
||||
(let ((supported? (false-if-exception
|
||||
(setlocale LC_ALL locale))))
|
||||
;; If LOCALE is not supported, then set LANGUAGE, which might at
|
||||
;; least give us translated messages.
|
||||
(if supported?
|
||||
(format port "export LC_ALL=\"~a\"~%" locale)
|
||||
(format port "export LANGUAGE=\"~a\"~%"
|
||||
(string-take locale
|
||||
(string-index locale #\_))))))
|
||||
|
||||
(when locale
|
||||
(let ((supported? (false-if-exception
|
||||
(setlocale LC_ALL locale))))
|
||||
;; If LOCALE is not supported, then set LANGUAGE, which might at
|
||||
;; least give us translated messages.
|
||||
(if supported?
|
||||
(setenv "LC_ALL" locale)
|
||||
(setenv "LANGUAGE"
|
||||
(string-take locale
|
||||
(or (string-index locale #\_)
|
||||
(string-length locale)))))))
|
||||
(format port "exec ~a~%" command)
|
||||
(close port)
|
||||
|
||||
(guard (c ((invoke-error? c)
|
||||
(newline)
|
||||
(format (current-error-port)
|
||||
(G_ "Command failed with exit code ~a.~%")
|
||||
(invoke-error-exit-status c))
|
||||
(syslog "command ~s failed with exit code ~a"
|
||||
command (invoke-error-exit-status c))
|
||||
(pause)
|
||||
#f))
|
||||
(syslog "running command ~s~%" command)
|
||||
(apply invoke command)
|
||||
(syslog "command ~s succeeded~%" command)
|
||||
(newline)
|
||||
(pause)
|
||||
#t))
|
||||
|
||||
|
||||
;;;
|
||||
;;; Logging.
|
||||
;;;
|
||||
|
||||
(define (open-syslog-port)
|
||||
"Return an open port (a socket) to /dev/log or #f if that wasn't possible."
|
||||
(let ((sock (socket AF_UNIX SOCK_DGRAM 0)))
|
||||
(catch 'system-error
|
||||
(lambda ()
|
||||
(connect sock AF_UNIX "/dev/log")
|
||||
(setvbuf sock 'line)
|
||||
sock)
|
||||
(lambda args
|
||||
(close-port sock)
|
||||
#f))))
|
||||
|
||||
(define syslog-port
|
||||
(let ((port #f))
|
||||
(lambda ()
|
||||
"Return an output port to syslog."
|
||||
(unless port
|
||||
(set! port (open-syslog-port)))
|
||||
(or port (%make-void-port "w")))))
|
||||
|
||||
(define-syntax syslog
|
||||
(lambda (s)
|
||||
"Like 'format', but write to syslog."
|
||||
(syntax-case s ()
|
||||
((_ fmt args ...)
|
||||
(string? (syntax->datum #'fmt))
|
||||
(with-syntax ((fmt (string-append "installer[~d]: "
|
||||
(syntax->datum #'fmt))))
|
||||
#'(format (syslog-port) fmt (getpid) args ...))))))
|
||||
|
||||
|
||||
;;;
|
||||
;;; Client protocol.
|
||||
;;;
|
||||
|
||||
(define %client-socket-file
|
||||
;; Unix-domain socket where the installer accepts connections.
|
||||
"/var/guix/installer-socket")
|
||||
|
||||
(define current-server-socket
|
||||
;; Socket on which the installer is currently accepting connections, or #f.
|
||||
(make-parameter #f))
|
||||
|
||||
(define current-clients
|
||||
;; List of currently connected clients.
|
||||
(make-parameter '()))
|
||||
|
||||
(define* (open-server-socket
|
||||
#:optional (socket-file %client-socket-file))
|
||||
"Open SOCKET-FILE as a Unix-domain socket to accept incoming connections and
|
||||
return it."
|
||||
(mkdir-p (dirname socket-file))
|
||||
(when (file-exists? socket-file)
|
||||
(delete-file socket-file))
|
||||
(let ((sock (socket AF_UNIX SOCK_STREAM 0)))
|
||||
(bind sock AF_UNIX socket-file)
|
||||
(listen sock 0)
|
||||
sock))
|
||||
|
||||
(define (call-with-server-socket thunk)
|
||||
(if (current-server-socket)
|
||||
(thunk)
|
||||
(let ((socket (open-server-socket)))
|
||||
(dynamic-wind
|
||||
(const #t)
|
||||
(lambda ()
|
||||
(parameterize ((current-server-socket socket))
|
||||
(thunk)))
|
||||
(lambda ()
|
||||
(close-port socket))))))
|
||||
|
||||
(define-syntax-rule (with-server-socket exp ...)
|
||||
"Evaluate EXP with 'current-server-socket' parameterized to a currently
|
||||
accepting socket."
|
||||
(call-with-server-socket (lambda () exp ...)))
|
||||
|
||||
(define* (send-to-clients exp)
|
||||
"Send EXP to all the current clients."
|
||||
(define remainder
|
||||
(fold (lambda (client remainder)
|
||||
(catch 'system-error
|
||||
(lambda ()
|
||||
(write exp client)
|
||||
(newline client)
|
||||
(force-output client)
|
||||
(cons client remainder))
|
||||
(lambda args
|
||||
;; We might get EPIPE if the client disconnects; when that
|
||||
;; happens, remove CLIENT from the set of available clients.
|
||||
(let ((errno (system-error-errno args)))
|
||||
(if (memv errno (list EPIPE ECONNRESET ECONNABORTED))
|
||||
(begin
|
||||
(syslog "removing client ~s due to ~s while replying~%"
|
||||
(fileno client) (strerror errno))
|
||||
(false-if-exception (close-port client))
|
||||
remainder)
|
||||
(cons client remainder))))))
|
||||
'()
|
||||
(current-clients)))
|
||||
|
||||
(current-clients (reverse remainder))
|
||||
exp)
|
||||
(guard (c ((invoke-error? c)
|
||||
(newline)
|
||||
(format (current-error-port)
|
||||
(G_ "Command failed with exit code ~a.~%")
|
||||
(invoke-error-exit-status c))
|
||||
(pause)
|
||||
#f))
|
||||
(invoke "bash" "--init-file" file)
|
||||
(newline)
|
||||
(pause)
|
||||
#t))))
|
||||
|
||||
+47
-102
@@ -1,5 +1,5 @@
|
||||
# GNU Guix --- Functional package management for GNU
|
||||
# Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
# Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
# Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Andreas Enge <andreas@enge.fr>
|
||||
# Copyright © 2016 Mathieu Lirzin <mthl@gnu.org>
|
||||
# Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Mark H Weaver <mhw@netris.org>
|
||||
@@ -12,12 +12,12 @@
|
||||
# Copyright © 2016, 2017, 2018, 2019 Alex Vong <alexvong1995@gmail.com>
|
||||
# Copyright © 2016, 2017, 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
|
||||
# Copyright © 2016, 2017, 2018, 2019 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||
# Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
# Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
# Copyright © 2017, 2018 Clément Lassieur <clement@lassieur.org>
|
||||
# Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
# Copyright © 2017, 2018, 2019 Gábor Boskovits <boskovits@gmail.com>
|
||||
# Copyright © 2018 Amirouche Boubekki <amirouche@hypermove.net>
|
||||
# Copyright © 2018, 2019, 2020 Oleg Pykhalov <go.wigust@gmail.com>
|
||||
# Copyright © 2018, 2019 Oleg Pykhalov <go.wigust@gmail.com>
|
||||
# Copyright © 2018 Stefan Stefanović <stefanx2ovic@gmail.com>
|
||||
# Copyright © 2018 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
# Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
|
||||
@@ -26,10 +26,6 @@
|
||||
# Copyright © 2019 Evan Straw <evan.straw99@gmail.com>
|
||||
# Copyright © 2019 Brett Gilio <brettg@gnu.org>
|
||||
# Copyright © 2019 Amin Bandali <bandali@gnu.org>
|
||||
# Copyright © 2020 Brendan Tildesley <mail@brendan.scot>
|
||||
# Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
|
||||
# Copyright © 2020 R Veera Kumar <vkor@vkten.in>
|
||||
# Copyright © 2020 Nicolò Balzarotti <nicolo@nixo.xyz
|
||||
#
|
||||
# This file is part of GNU Guix.
|
||||
#
|
||||
@@ -113,7 +109,6 @@ GNU_SYSTEM_MODULES = \
|
||||
%D%/packages/check.scm \
|
||||
%D%/packages/chemistry.scm \
|
||||
%D%/packages/chez.scm \
|
||||
%D%/packages/chicken.scm \
|
||||
%D%/packages/chromium.scm \
|
||||
%D%/packages/ci.scm \
|
||||
%D%/packages/cinnamon.scm \
|
||||
@@ -140,7 +135,6 @@ GNU_SYSTEM_MODULES = \
|
||||
%D%/packages/cups.scm \
|
||||
%D%/packages/curl.scm \
|
||||
%D%/packages/cvassistant.scm \
|
||||
%D%/packages/cybersecurity.scm \
|
||||
%D%/packages/cyrus-sasl.scm \
|
||||
%D%/packages/databases.scm \
|
||||
%D%/packages/datamash.scm \
|
||||
@@ -289,11 +283,8 @@ GNU_SYSTEM_MODULES = \
|
||||
%D%/packages/kawa.scm \
|
||||
%D%/packages/kde.scm \
|
||||
%D%/packages/kde-frameworks.scm \
|
||||
%D%/packages/kde-internet.scm \
|
||||
%D%/packages/kde-multimedia.scm \
|
||||
%D%/packages/kde-pim.scm \
|
||||
%D%/packages/kde-plasma.scm \
|
||||
%D%/packages/kde-systemtools.scm \
|
||||
%D%/packages/kde-utils.scm \
|
||||
%D%/packages/kerberos.scm \
|
||||
%D%/packages/key-mon.scm \
|
||||
@@ -321,7 +312,6 @@ GNU_SYSTEM_MODULES = \
|
||||
%D%/packages/libusb.scm \
|
||||
%D%/packages/libunwind.scm \
|
||||
%D%/packages/lighting.scm \
|
||||
%D%/packages/linphone.scm \
|
||||
%D%/packages/linux.scm \
|
||||
%D%/packages/lirc.scm \
|
||||
%D%/packages/lisp.scm \
|
||||
@@ -346,7 +336,6 @@ GNU_SYSTEM_MODULES = \
|
||||
%D%/packages/marst.scm \
|
||||
%D%/packages/mate.scm \
|
||||
%D%/packages/maths.scm \
|
||||
%D%/packages/matrix.scm \
|
||||
%D%/packages/maven.scm \
|
||||
%D%/packages/mc.scm \
|
||||
%D%/packages/mcrypt.scm \
|
||||
@@ -378,7 +367,6 @@ GNU_SYSTEM_MODULES = \
|
||||
%D%/packages/nim.scm \
|
||||
%D%/packages/ninja.scm \
|
||||
%D%/packages/node.scm \
|
||||
%D%/packages/node-xyz.scm \
|
||||
%D%/packages/noweb.scm \
|
||||
%D%/packages/nss.scm \
|
||||
%D%/packages/ntp.scm \
|
||||
@@ -438,7 +426,6 @@ GNU_SYSTEM_MODULES = \
|
||||
%D%/packages/ragel.scm \
|
||||
%D%/packages/rails.scm \
|
||||
%D%/packages/ratpoison.scm \
|
||||
%D%/packages/rcm.scm \
|
||||
%D%/packages/rdesktop.scm \
|
||||
%D%/packages/rdf.scm \
|
||||
%D%/packages/re2c.scm \
|
||||
@@ -446,7 +433,6 @@ GNU_SYSTEM_MODULES = \
|
||||
%D%/packages/rednotebook.scm \
|
||||
%D%/packages/regex.scm \
|
||||
%D%/packages/robotics.scm \
|
||||
%D%/packages/rpc.scm \
|
||||
%D%/packages/rrdtool.scm \
|
||||
%D%/packages/rsync.scm \
|
||||
%D%/packages/ruby.scm \
|
||||
@@ -463,7 +449,6 @@ GNU_SYSTEM_MODULES = \
|
||||
%D%/packages/scsi.scm \
|
||||
%D%/packages/sdcc.scm \
|
||||
%D%/packages/sdl.scm \
|
||||
%D%/packages/sdr.scm \
|
||||
%D%/packages/search.scm \
|
||||
%D%/packages/security-token.scm \
|
||||
%D%/packages/selinux.scm \
|
||||
@@ -505,13 +490,13 @@ GNU_SYSTEM_MODULES = \
|
||||
%D%/packages/tex.scm \
|
||||
%D%/packages/textutils.scm \
|
||||
%D%/packages/text-editors.scm \
|
||||
%D%/packages/tigervnc.scm \
|
||||
%D%/packages/time.scm \
|
||||
%D%/packages/tls.scm \
|
||||
%D%/packages/tmux.scm \
|
||||
%D%/packages/tor.scm \
|
||||
%D%/packages/tv.scm \
|
||||
%D%/packages/uml.scm \
|
||||
%D%/packages/unicode.scm \
|
||||
%D%/packages/unrtf.scm \
|
||||
%D%/packages/upnp.scm \
|
||||
%D%/packages/usb-modeswitch.scm \
|
||||
@@ -521,7 +506,6 @@ GNU_SYSTEM_MODULES = \
|
||||
%D%/packages/video.scm \
|
||||
%D%/packages/vim.scm \
|
||||
%D%/packages/virtualization.scm \
|
||||
%D%/packages/vnc.scm \
|
||||
%D%/packages/vpn.scm \
|
||||
%D%/packages/vulkan.scm \
|
||||
%D%/packages/w3m.scm \
|
||||
@@ -569,7 +553,6 @@ GNU_SYSTEM_MODULES = \
|
||||
%D%/services/getmail.scm \
|
||||
%D%/services/guix.scm \
|
||||
%D%/services/kerberos.scm \
|
||||
%D%/services/linux.scm \
|
||||
%D%/services/lirc.scm \
|
||||
%D%/services/virtualization.scm \
|
||||
%D%/services/mail.scm \
|
||||
@@ -610,6 +593,7 @@ GNU_SYSTEM_MODULES = \
|
||||
%D%/system/shadow.scm \
|
||||
%D%/system/uuid.scm \
|
||||
%D%/system/vm.scm \
|
||||
%D%/system/bootstrap.scm \
|
||||
\
|
||||
%D%/machine.scm \
|
||||
%D%/machine/digital-ocean.scm \
|
||||
@@ -631,7 +615,6 @@ GNU_SYSTEM_MODULES = \
|
||||
%D%/tests.scm \
|
||||
%D%/tests/audio.scm \
|
||||
%D%/tests/base.scm \
|
||||
%D%/tests/cups.scm \
|
||||
%D%/tests/databases.scm \
|
||||
%D%/tests/desktop.scm \
|
||||
%D%/tests/dict.scm \
|
||||
@@ -641,7 +624,6 @@ GNU_SYSTEM_MODULES = \
|
||||
%D%/tests/nfs.scm \
|
||||
%D%/tests/install.scm \
|
||||
%D%/tests/ldap.scm \
|
||||
%D%/tests/linux-modules.scm \
|
||||
%D%/tests/mail.scm \
|
||||
%D%/tests/messaging.scm \
|
||||
%D%/tests/networking.scm \
|
||||
@@ -663,18 +645,15 @@ INSTALLER_MODULES = \
|
||||
%D%/installer/locale.scm \
|
||||
%D%/installer/newt.scm \
|
||||
%D%/installer/parted.scm \
|
||||
%D%/installer/proxy.scm \
|
||||
%D%/installer/record.scm \
|
||||
%D%/installer/services.scm \
|
||||
%D%/installer/steps.scm \
|
||||
%D%/installer/tests.scm \
|
||||
%D%/installer/timezone.scm \
|
||||
%D%/installer/user.scm \
|
||||
%D%/installer/utils.scm \
|
||||
\
|
||||
%D%/installer/newt/ethernet.scm \
|
||||
%D%/installer/newt/final.scm \
|
||||
%D%/installer/newt/parameters.scm \
|
||||
%D%/installer/newt/hostname.scm \
|
||||
%D%/installer/newt/keymap.scm \
|
||||
%D%/installer/newt/locale.scm \
|
||||
@@ -716,6 +695,7 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/a2ps-CVE-2015-8107.patch \
|
||||
%D%/packages/patches/abcl-fix-build-xml.patch \
|
||||
%D%/packages/patches/abiword-explictly-cast-bools.patch \
|
||||
%D%/packages/patches/abiword-black-drawing-with-gtk322.patch \
|
||||
%D%/packages/patches/adb-add-libraries.patch \
|
||||
%D%/packages/patches/aegis-constness-error.patch \
|
||||
%D%/packages/patches/aegis-perl-tempdir1.patch \
|
||||
@@ -725,17 +705,15 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/aegisub-icu59-include-unistr.patch \
|
||||
%D%/packages/patches/aegisub-boost68.patch \
|
||||
%D%/packages/patches/agg-am_c_prototype.patch \
|
||||
%D%/packages/patches/akonadi-paths.patch \
|
||||
%D%/packages/patches/akonadi-not-relocatable.patch \
|
||||
%D%/packages/patches/akonadi-timestamps.patch \
|
||||
%D%/packages/patches/allegro-mesa-18.2.5-and-later.patch \
|
||||
%D%/packages/patches/amule-crypto-6.patch \
|
||||
%D%/packages/patches/anki-mpv-args.patch \
|
||||
%D%/packages/patches/antiword-CVE-2014-8123.patch \
|
||||
%D%/packages/patches/antlr3-3_1-fix-java8-compilation.patch \
|
||||
%D%/packages/patches/antlr3-3_3-fix-java8-compilation.patch \
|
||||
%D%/packages/patches/apr-skip-getservbyname-test.patch \
|
||||
%D%/packages/patches/arm-trusted-firmware-disable-hdcp.patch \
|
||||
%D%/packages/patches/arm-trusted-firmware-optional-bin-generation.patch \
|
||||
%D%/packages/patches/arm-trusted-firmware-rockchip-disable-binary.patch \
|
||||
%D%/packages/patches/aspell-default-dict-dir.patch \
|
||||
%D%/packages/patches/aspell-gcc-compat.patch \
|
||||
%D%/packages/patches/ath9k-htc-firmware-binutils.patch \
|
||||
@@ -768,31 +746,27 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/bash-completion-directories.patch \
|
||||
%D%/packages/patches/bastet-change-source-of-unordered_set.patch \
|
||||
%D%/packages/patches/bazaar-CVE-2017-14176.patch \
|
||||
%D%/packages/patches/beancount-disable-googleapis-fonts.patch \
|
||||
%D%/packages/patches/beets-werkzeug-compat.patch \
|
||||
%D%/packages/patches/beignet-correct-file-names.patch \
|
||||
%D%/packages/patches/benchmark-unbundle-googletest.patch \
|
||||
%D%/packages/patches/biber-fix-encoding-write.patch \
|
||||
%D%/packages/patches/bidiv-update-fribidi.patch \
|
||||
%D%/packages/patches/binutils-boot-2.20.1a.patch \
|
||||
%D%/packages/patches/binutils-loongson-workaround.patch \
|
||||
%D%/packages/patches/binutils-mingw-w64-timestamp.patch \
|
||||
%D%/packages/patches/binutils-mingw-w64-deterministic.patch \
|
||||
%D%/packages/patches/blender-2.79-newer-ffmpeg.patch \
|
||||
%D%/packages/patches/blender-2.79-python-3.7-fix.patch \
|
||||
%D%/packages/patches/bluez-CVE-2020-0556.patch \
|
||||
%D%/packages/patches/byobu-writable-status.patch \
|
||||
%D%/packages/patches/calibre-msgpack-compat.patch \
|
||||
%D%/packages/patches/calibre-no-updates-dialog.patch \
|
||||
%D%/packages/patches/calibre-remove-test-bs4.patch \
|
||||
%D%/packages/patches/calibre-remove-test-sqlite.patch \
|
||||
%D%/packages/patches/calibre-remove-test-unrar.patch \
|
||||
%D%/packages/patches/casync-renameat2-declaration.patch \
|
||||
%D%/packages/patches/catdoc-CVE-2017-11110.patch \
|
||||
%D%/packages/patches/circos-remove-findbin.patch \
|
||||
%D%/packages/patches/cdparanoia-fpic.patch \
|
||||
%D%/packages/patches/cdrtools-3.01-mkisofs-isoinfo.patch \
|
||||
%D%/packages/patches/ceph-detect-rocksdb.patch \
|
||||
%D%/packages/patches/ceph-disable-cpu-optimizations.patch \
|
||||
%D%/packages/patches/ceph-skip-collect-sys-info-test.patch \
|
||||
%D%/packages/patches/ceph-skip-unittest_blockdev.patch \
|
||||
%D%/packages/patches/ceph-volume-respect-PATH.patch \
|
||||
%D%/packages/patches/chmlib-inttypes.patch \
|
||||
%D%/packages/patches/clamav-config-llvm-libs.patch \
|
||||
%D%/packages/patches/clamav-system-tomsfastmath.patch \
|
||||
@@ -801,7 +775,6 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/clang-3.8-libc-search-path.patch \
|
||||
%D%/packages/patches/clang-6.0-libc-search-path.patch \
|
||||
%D%/packages/patches/clang-7.0-libc-search-path.patch \
|
||||
%D%/packages/patches/clang-9.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/classpath-aarch64-support.patch \
|
||||
@@ -814,15 +787,14 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/coda-use-system-libs.patch \
|
||||
%D%/packages/patches/combinatorial-blas-awpm.patch \
|
||||
%D%/packages/patches/combinatorial-blas-io-fix.patch \
|
||||
%D%/packages/patches/containerd-test-with-go1.13.patch \
|
||||
%D%/packages/patches/cpufrequtils-fix-aclocal.patch \
|
||||
%D%/packages/patches/crawl-upgrade-saves.patch \
|
||||
%D%/packages/patches/crda-optional-gcrypt.patch \
|
||||
%D%/packages/patches/csvkit-fix-tests.patch \
|
||||
%D%/packages/patches/clucene-contribs-lib.patch \
|
||||
%D%/packages/patches/cube-nocheck.patch \
|
||||
%D%/packages/patches/cursynth-wave-rand.patch \
|
||||
%D%/packages/patches/cvs-CVE-2017-12836.patch \
|
||||
%D%/packages/patches/date-output-pkg-config-files.patch \
|
||||
%D%/packages/patches/darkice-workaround-fpermissive-error.patch \
|
||||
%D%/packages/patches/dbus-helper-search-path.patch \
|
||||
%D%/packages/patches/dbus-c++-gcc-compat.patch \
|
||||
@@ -830,21 +802,21 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/debops-constants-for-external-program-names.patch \
|
||||
%D%/packages/patches/debops-debops-defaults-fall-back-to-less.patch \
|
||||
%D%/packages/patches/deja-dup-use-ref-keyword-for-iter.patch \
|
||||
%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/diffutils-gets-undeclared.patch \
|
||||
%D%/packages/patches/dkimproxy-add-ipv6-support.patch \
|
||||
%D%/packages/patches/docbook-xsl-nonrecursive-string-subst.patch \
|
||||
%D%/packages/patches/doc++-include-directives.patch \
|
||||
%D%/packages/patches/doc++-segfault-fix.patch \
|
||||
%D%/packages/patches/docker-adjust-tests-for-changes-in-go.patch \
|
||||
%D%/packages/patches/docker-engine-test-noinstall.patch \
|
||||
%D%/packages/patches/docker-fix-tests.patch \
|
||||
%D%/packages/patches/docker-use-fewer-modprobes.patch \
|
||||
%D%/packages/patches/dovecot-trees-support-dovecot-2.3.patch \
|
||||
%D%/packages/patches/doxygen-test.patch \
|
||||
%D%/packages/patches/dstat-fix-crash-when-specifying-delay.patch \
|
||||
%D%/packages/patches/dstat-skip-devices-without-io.patch \
|
||||
%D%/packages/patches/dvd+rw-tools-add-include.patch \
|
||||
%D%/packages/patches/eigen-stabilise-sparseqr-test.patch \
|
||||
%D%/packages/patches/einstein-build.patch \
|
||||
%D%/packages/patches/elfutils-tests-ptrace.patch \
|
||||
%D%/packages/patches/elixir-path-length.patch \
|
||||
@@ -868,7 +840,6 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/eudev-rules-directory.patch \
|
||||
%D%/packages/patches/evilwm-lost-focus-bug.patch \
|
||||
%D%/packages/patches/evolution-data-server-locales.patch \
|
||||
%D%/packages/patches/evolution-data-server-libical-compat.patch \
|
||||
%D%/packages/patches/exiv2-CVE-2017-14860.patch \
|
||||
%D%/packages/patches/exiv2-CVE-2017-14859-14862-14864.patch \
|
||||
%D%/packages/patches/extundelete-e2fsprogs-1.44.patch \
|
||||
@@ -880,7 +851,6 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/fasthenry-spSolve.patch \
|
||||
%D%/packages/patches/fasthenry-spFactor.patch \
|
||||
%D%/packages/patches/fbreader-curl-7.62.patch \
|
||||
%D%/packages/patches/ffmpeg-prefer-dav1d.patch \
|
||||
%D%/packages/patches/fifo-map-fix-flags-for-gcc.patch \
|
||||
%D%/packages/patches/fifo-map-remove-catch.hpp.patch \
|
||||
%D%/packages/patches/file-CVE-2018-10360.patch \
|
||||
@@ -890,7 +860,6 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/findutils-test-xargs.patch \
|
||||
%D%/packages/patches/flann-cmake-3.11.patch \
|
||||
%D%/packages/patches/flint-ldconfig.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/fribidi-CVE-2019-18397.patch \
|
||||
@@ -932,7 +901,6 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/gd-CVE-2019-6978.patch \
|
||||
%D%/packages/patches/gd-fix-tests-on-i686.patch \
|
||||
%D%/packages/patches/gd-freetype-test-failure.patch \
|
||||
%D%/packages/patches/gdm-default-session.patch \
|
||||
%D%/packages/patches/geoclue-config.patch \
|
||||
%D%/packages/patches/ghc-8.0-fall-back-to-madv_dontneed.patch \
|
||||
%D%/packages/patches/ghc-diff-swap-cover-args.patch \
|
||||
@@ -985,7 +953,6 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/gmp-faulty-test.patch \
|
||||
%D%/packages/patches/gnome-shell-theme.patch \
|
||||
%D%/packages/patches/gnome-tweaks-search-paths.patch \
|
||||
%D%/packages/patches/gnupg-default-pinentry.patch \
|
||||
%D%/packages/patches/gnutls-skip-trust-store-test.patch \
|
||||
%D%/packages/patches/gobject-introspection-absolute-shlib-path.patch \
|
||||
%D%/packages/patches/gobject-introspection-cc.patch \
|
||||
@@ -1005,6 +972,7 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/guile-2.2-skip-oom-test.patch \
|
||||
%D%/packages/patches/guile-default-utf8.patch \
|
||||
%D%/packages/patches/guile-gdbm-ffi-support-gdbm-1.14.patch \
|
||||
%D%/packages/patches/guile-finalization-crash.patch \
|
||||
%D%/packages/patches/guile-linux-syscalls.patch \
|
||||
%D%/packages/patches/guile-present-coding.patch \
|
||||
%D%/packages/patches/guile-relocatable.patch \
|
||||
@@ -1018,7 +986,6 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/gtkglext-disable-disable-deprecated.patch \
|
||||
%D%/packages/patches/gtksourceview-2-add-default-directory.patch \
|
||||
%D%/packages/patches/gzdoom-search-in-installed-share.patch \
|
||||
%D%/packages/patches/gzdoom-find-system-libgme.patch \
|
||||
%D%/packages/patches/haskell-mode-unused-variables.patch \
|
||||
%D%/packages/patches/haskell-mode-make-check.patch \
|
||||
%D%/packages/patches/hdf4-architectures.patch \
|
||||
@@ -1034,6 +1001,7 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/hdf-eos5-remove-gctp.patch \
|
||||
%D%/packages/patches/hdf-eos5-fix-szip.patch \
|
||||
%D%/packages/patches/hdf-eos5-fortrantests.patch \
|
||||
%D%/packages/patches/higan-remove-march-native-flag.patch \
|
||||
%D%/packages/patches/hubbub-sort-entities.patch \
|
||||
%D%/packages/patches/hurd-fix-eth-multiplexer-dependency.patch \
|
||||
%D%/packages/patches/hplip-remove-imageprocessor.patch \
|
||||
@@ -1044,7 +1012,6 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/icecat-use-system-media-libs.patch \
|
||||
%D%/packages/patches/icedtea-6-hotspot-gcc-segfault-workaround.patch \
|
||||
%D%/packages/patches/icedtea-7-hotspot-gcc-segfault-workaround.patch \
|
||||
%D%/packages/patches/icu4c-CVE-2020-10531.patch \
|
||||
%D%/packages/patches/id3lib-CVE-2007-4460.patch \
|
||||
%D%/packages/patches/id3lib-UTF16-writing-bug.patch \
|
||||
%D%/packages/patches/ilmbase-fix-tests.patch \
|
||||
@@ -1052,6 +1019,7 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/inkscape-poppler-0.76.patch \
|
||||
%D%/packages/patches/intltool-perl-compatibility.patch \
|
||||
%D%/packages/patches/irrlicht-use-system-libs.patch \
|
||||
%D%/packages/patches/isc-dhcp-4.4.1-fixes-for-newer-bind.patch \
|
||||
%D%/packages/patches/isl-0.11.1-aarch64-support.patch \
|
||||
%D%/packages/patches/jacal-fix-texinfo.patch \
|
||||
%D%/packages/patches/jamvm-arm.patch \
|
||||
@@ -1067,15 +1035,11 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/jbig2dec-ignore-testtest.patch \
|
||||
%D%/packages/patches/jfsutils-add-sysmacros.patch \
|
||||
%D%/packages/patches/jfsutils-include-systypes.patch \
|
||||
%D%/packages/patches/jsoncpp-fix-inverted-case.patch \
|
||||
%D%/packages/patches/julia-SOURCE_DATE_EPOCH-mtime.patch \
|
||||
%D%/packages/patches/kdbusaddons-kinit-file-name.patch \
|
||||
%D%/packages/patches/libnftnl-dont-check-NFTNL_FLOWTABLE_SIZE.patch \
|
||||
%D%/packages/patches/libvirt-create-machine-cgroup.patch \
|
||||
%D%/packages/patches/libziparchive-add-includes.patch \
|
||||
%D%/packages/patches/localed-xorg-keyboard.patch \
|
||||
%D%/packages/patches/kdepim-runtime-Fix-missing-link-libraries.patch \
|
||||
%D%/packages/patches/kdiagram-Fix-missing-link-libraries.patch \
|
||||
%D%/packages/patches/kiki-level-selection-crash.patch \
|
||||
%D%/packages/patches/kiki-makefile.patch \
|
||||
%D%/packages/patches/kiki-missing-includes.patch \
|
||||
@@ -1083,7 +1047,6 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/kinit-kdeinit-extra_libs.patch \
|
||||
%D%/packages/patches/kinit-kdeinit-libpath.patch \
|
||||
%D%/packages/patches/kio-search-smbd-on-PATH.patch \
|
||||
%D%/packages/patches/kmail-Fix-missing-link-libraries.patch \
|
||||
%D%/packages/patches/kmod-module-directory.patch \
|
||||
%D%/packages/patches/kmscon-runtime-keymap-switch.patch \
|
||||
%D%/packages/patches/kpackage-allow-external-paths.patch \
|
||||
@@ -1100,7 +1063,6 @@ dist_patch_DATA = \
|
||||
%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/konversation-Fix-build-with-Qt-5.11.patch \
|
||||
%D%/packages/patches/laby-make-install.patch \
|
||||
%D%/packages/patches/lcalc-default-parameters-1.patch \
|
||||
%D%/packages/patches/lcalc-default-parameters-2.patch \
|
||||
@@ -1124,6 +1086,7 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/libexif-CVE-2018-20030.patch \
|
||||
%D%/packages/patches/libextractor-exiv2.patch \
|
||||
%D%/packages/patches/libgeotiff-adapt-test-script-for-proj-6.2.patch \
|
||||
%D%/packages/patches/libgit2-avoid-python.patch \
|
||||
%D%/packages/patches/libgit2-mtime-0.patch \
|
||||
%D%/packages/patches/libgnome-encoding.patch \
|
||||
%D%/packages/patches/libgnomeui-utf8.patch \
|
||||
@@ -1133,7 +1096,6 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/libjxr-fix-function-signature.patch \
|
||||
%D%/packages/patches/libjxr-fix-typos.patch \
|
||||
%D%/packages/patches/libotr-test-auth-fix.patch \
|
||||
%D%/packages/patches/libksieve-Fix-missing-link-libraries.patch \
|
||||
%D%/packages/patches/libmad-armv7-thumb-pt1.patch \
|
||||
%D%/packages/patches/libmad-armv7-thumb-pt2.patch \
|
||||
%D%/packages/patches/libmad-length-check.patch \
|
||||
@@ -1144,13 +1106,14 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/libmpeg2-global-symbol-test.patch \
|
||||
%D%/packages/patches/libmygpo-qt-fix-qt-5.11.patch \
|
||||
%D%/packages/patches/libmygpo-qt-missing-qt5-modules.patch \
|
||||
%D%/packages/patches/libreoffice-icu.patch \
|
||||
%D%/packages/patches/libreoffice-glm.patch \
|
||||
%D%/packages/patches/libseccomp-open-aarch64.patch \
|
||||
%D%/packages/patches/libsndfile-armhf-type-checks.patch \
|
||||
%D%/packages/patches/libsndfile-CVE-2017-8361-8363-8365.patch \
|
||||
%D%/packages/patches/libsndfile-CVE-2017-8362.patch \
|
||||
%D%/packages/patches/libsndfile-CVE-2017-12562.patch \
|
||||
%D%/packages/patches/libtar-CVE-2013-4420.patch \
|
||||
%D%/packages/patches/libtgvoip-disable-sse2.patch \
|
||||
%D%/packages/patches/libtgvoip-disable-webrtc.patch \
|
||||
%D%/packages/patches/libtheora-config-guess.patch \
|
||||
%D%/packages/patches/libtommath-fix-linkage.patch \
|
||||
%D%/packages/patches/libtool-skip-tests2.patch \
|
||||
@@ -1159,8 +1122,6 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/libutils-add-includes.patch \
|
||||
%D%/packages/patches/libutils-remove-damaging-includes.patch \
|
||||
%D%/packages/patches/libvdpau-va-gl-unbundle.patch \
|
||||
%D%/packages/patches/libvnc-CVE-2018-20750.patch \
|
||||
%D%/packages/patches/libvnc-CVE-2019-15681.patch \
|
||||
%D%/packages/patches/libvpx-CVE-2016-2818.patch \
|
||||
%D%/packages/patches/libvpx-use-after-free-in-postproc.patch \
|
||||
%D%/packages/patches/libxslt-generated-ids.patch \
|
||||
@@ -1171,7 +1132,6 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/lierolibre-remove-arch-warning.patch \
|
||||
%D%/packages/patches/lierolibre-try-building-other-arch.patch \
|
||||
%D%/packages/patches/linkchecker-tests-require-network.patch \
|
||||
%D%/packages/patches/linux-libre-support-for-Pinebook-Pro.patch \
|
||||
%D%/packages/patches/linux-pam-no-setfsuid.patch \
|
||||
%D%/packages/patches/lirc-localstatedir.patch \
|
||||
%D%/packages/patches/lirc-reproducible-build.patch \
|
||||
@@ -1201,16 +1161,14 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/mcrypt-CVE-2012-4409.patch \
|
||||
%D%/packages/patches/mcrypt-CVE-2012-4426.patch \
|
||||
%D%/packages/patches/mcrypt-CVE-2012-4527.patch \
|
||||
%D%/packages/patches/libmemcached-build-with-gcc7.patch \
|
||||
%D%/packages/patches/mediastreamer2-srtp2.patch \
|
||||
%D%/packages/patches/mes-remove-store-name.patch \
|
||||
%D%/packages/patches/mesa-skip-disk-cache-test.patch \
|
||||
%D%/packages/patches/mesa-timespec-test-32bit.patch \
|
||||
%D%/packages/patches/mescc-tools-boot.patch \
|
||||
%D%/packages/patches/meson-for-build-rpath.patch \
|
||||
%D%/packages/patches/metabat-fix-compilation.patch \
|
||||
%D%/packages/patches/mhash-keygen-test-segfault.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 \
|
||||
%D%/packages/patches/minisat-friend-declaration.patch \
|
||||
%D%/packages/patches/minisat-install.patch \
|
||||
%D%/packages/patches/mpc123-initialize-ao.patch \
|
||||
@@ -1225,6 +1183,7 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/mozjs38-tracelogger.patch \
|
||||
%D%/packages/patches/mozjs38-version-detection.patch \
|
||||
%D%/packages/patches/mrrescue-support-love-11.patch \
|
||||
%D%/packages/patches/mrustc-0.8.0-fix-variable-length-integer-receiving.patch \
|
||||
%D%/packages/patches/mtools-mformat-uninitialized.patch \
|
||||
%D%/packages/patches/mumps-build-parallelism.patch \
|
||||
%D%/packages/patches/mumps-shared-libseq.patch \
|
||||
@@ -1246,6 +1205,8 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/ngircd-handle-zombies.patch \
|
||||
%D%/packages/patches/nm-plugin-path.patch \
|
||||
%D%/packages/patches/nsis-env-passthru.patch \
|
||||
%D%/packages/patches/nss-CVE-2019-11745.patch \
|
||||
%D%/packages/patches/nss-freebl-stubs.patch \
|
||||
%D%/packages/patches/nss-increase-test-timeout.patch \
|
||||
%D%/packages/patches/nss-pkgconfig.patch \
|
||||
%D%/packages/patches/ntfs-3g-CVE-2019-9755.patch \
|
||||
@@ -1272,11 +1233,13 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/openjdk-10-idlj-reproducibility.patch \
|
||||
%D%/packages/patches/openmpi-mtl-priorities.patch \
|
||||
%D%/packages/patches/openocd-nrf52.patch \
|
||||
%D%/packages/patches/opensmtpd-fix-crash.patch \
|
||||
%D%/packages/patches/openssl-runpath.patch \
|
||||
%D%/packages/patches/openssl-1.1-c-rehash-in.patch \
|
||||
%D%/packages/patches/openssl-c-rehash-in.patch \
|
||||
%D%/packages/patches/openssl-CVE-2019-1559.patch \
|
||||
%D%/packages/patches/open-zwave-hidapi.patch \
|
||||
%D%/packages/patches/orc-typedef-enum.patch \
|
||||
%D%/packages/patches/orpheus-cast-errors-and-includes.patch \
|
||||
%D%/packages/patches/osip-CVE-2017-7853.patch \
|
||||
%D%/packages/patches/ots-no-include-missing-file.patch \
|
||||
@@ -1284,16 +1247,10 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/p7zip-CVE-2016-9296.patch \
|
||||
%D%/packages/patches/p7zip-CVE-2017-17969.patch \
|
||||
%D%/packages/patches/p7zip-remove-unused-code.patch \
|
||||
%D%/packages/patches/pam-krb5-CVE-2020-10595.patch \
|
||||
%D%/packages/patches/pam-mount-luks2-support.patch \
|
||||
%D%/packages/patches/sdl-pango-api_additions.patch \
|
||||
%D%/packages/patches/sdl-pango-blit_overflow.patch \
|
||||
%D%/packages/patches/sdl-pango-fillrect_crash.patch \
|
||||
%D%/packages/patches/sdl-pango-header-guard.patch \
|
||||
%D%/packages/patches/sdl-pango-matrix_declarations.patch \
|
||||
%D%/packages/patches/sdl-pango-sans-serif.patch \
|
||||
%D%/packages/patches/patchutils-test-perms.patch \
|
||||
%D%/packages/patches/patch-hurd-path-max.patch \
|
||||
%D%/packages/patches/pcre2-fix-jit_match-crash.patch \
|
||||
%D%/packages/patches/perl-autosplit-default-time.patch \
|
||||
%D%/packages/patches/perl-deterministic-ordering.patch \
|
||||
%D%/packages/patches/perl-finance-quote-unuse-mozilla-ca.patch \
|
||||
@@ -1353,24 +1310,19 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/python-3.8-search-paths.patch \
|
||||
%D%/packages/patches/python-3.8-fix-tests.patch \
|
||||
%D%/packages/patches/python-CVE-2018-14647.patch \
|
||||
%D%/packages/patches/python-aiohttp-3.6.2-no-warning-fail.patch \
|
||||
%D%/packages/patches/python-alembic-exceptions-cause.patch \
|
||||
%D%/packages/patches/python-axolotl-AES-fix.patch \
|
||||
%D%/packages/patches/python-cairocffi-dlopen-path.patch \
|
||||
%D%/packages/patches/python-cffi-x87-stack-clean.patch \
|
||||
%D%/packages/patches/python2-larch-coverage-4.0a6-compatibility.patch \
|
||||
%D%/packages/patches/python-configobj-setuptools.patch \
|
||||
%D%/packages/patches/python-flask-restful-werkzeug-compat.patch \
|
||||
%D%/packages/patches/python-faker-fix-build-32bit.patch \
|
||||
%D%/packages/patches/python-keras-integration-test.patch \
|
||||
%D%/packages/patches/python-pep8-stdlib-tokenize-compat.patch \
|
||||
%D%/packages/patches/python-pyfakefs-remove-bad-test.patch \
|
||||
%D%/packages/patches/python-flint-includes.patch \
|
||||
%D%/packages/patches/python-jedi-deleted-variables.patch \
|
||||
%D%/packages/patches/python-libxml2-utf8.patch \
|
||||
%D%/packages/patches/python-mox3-python3.6-compat.patch \
|
||||
%D%/packages/patches/python-testtools.patch \
|
||||
%D%/packages/patches/python-packaging-test-arch.patch \
|
||||
%D%/packages/patches/python2-parameterized-docstring-test.patch \
|
||||
%D%/packages/patches/python-paste-remove-timing-test.patch \
|
||||
%D%/packages/patches/python-pycrypto-CVE-2013-7459.patch \
|
||||
%D%/packages/patches/python2-pygobject-2-gi-info-type-error-domain.patch \
|
||||
@@ -1382,15 +1334,8 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/python-unittest2-remove-argparse.patch \
|
||||
%D%/packages/patches/python-waitress-fix-tests.patch \
|
||||
%D%/packages/patches/qemu-glibc-2.27.patch \
|
||||
%D%/packages/patches/qemu-CVE-2020-1711.patch \
|
||||
%D%/packages/patches/qemu-CVE-2020-7039.patch \
|
||||
%D%/packages/patches/qemu-CVE-2020-7211.patch \
|
||||
%D%/packages/patches/qemu-CVE-2020-8608.patch \
|
||||
%D%/packages/patches/qemu-fix-documentation-build-failure.patch \
|
||||
%D%/packages/patches/qrcodegen-cpp-make-install.patch \
|
||||
%D%/packages/patches/qt4-ldflags.patch \
|
||||
%D%/packages/patches/qtbase-use-TZDIR.patch \
|
||||
%D%/packages/patches/qtbase-QTBUG-81715.patch \
|
||||
%D%/packages/patches/qtscript-disable-tests.patch \
|
||||
%D%/packages/patches/quagga-reproducible-build.patch \
|
||||
%D%/packages/patches/quickswitch-fix-dmenu-check.patch \
|
||||
@@ -1405,6 +1350,7 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/rct-add-missing-headers.patch \
|
||||
%D%/packages/patches/readline-link-ncurses.patch \
|
||||
%D%/packages/patches/readline-6.2-CVE-2014-2524.patch \
|
||||
%D%/packages/patches/red-eclipse-remove-gamma-name-hack.patch \
|
||||
%D%/packages/patches/reposurgeon-add-missing-docbook-files.patch \
|
||||
%D%/packages/patches/ri-li-modernize_cpp.patch \
|
||||
%D%/packages/patches/ripperx-missing-file.patch \
|
||||
@@ -1421,7 +1367,6 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/rust-bootstrap-stage0-test.patch \
|
||||
%D%/packages/patches/rust-coresimd-doctest.patch \
|
||||
%D%/packages/patches/rust-reproducible-builds.patch \
|
||||
%D%/packages/patches/rust-openssl-sys-no-vendor.patch \
|
||||
%D%/packages/patches/rxvt-unicode-escape-sequences.patch \
|
||||
%D%/packages/patches/sbcl-graph-asdf-definitions.patch \
|
||||
%D%/packages/patches/scalapack-blacs-mpi-deprecations.patch \
|
||||
@@ -1429,6 +1374,7 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/scotch-build-parallelism.patch \
|
||||
%D%/packages/patches/scotch-integer-declarations.patch \
|
||||
%D%/packages/patches/sdl-libx11-1.6.patch \
|
||||
%D%/packages/patches/sdl2-mesa-compat.patch \
|
||||
%D%/packages/patches/seahorse-gkr-use-0-on-empty-flags.patch \
|
||||
%D%/packages/patches/seq24-rename-mutex.patch \
|
||||
%D%/packages/patches/sharutils-CVE-2018-1000097.patch \
|
||||
@@ -1443,8 +1389,10 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/sooperlooper-build-with-wx-30.patch \
|
||||
%D%/packages/patches/soundconverter-remove-gconf-dependency.patch \
|
||||
%D%/packages/patches/steghide-fixes.patch \
|
||||
%D%/packages/patches/suitesparse-mongoose-cmake.patch \
|
||||
%D%/packages/patches/streamlink-update-test.patch \
|
||||
%D%/packages/patches/supercollider-boost-1.70-build-fix.patch \
|
||||
%D%/packages/patches/superlu-dist-awpm-grid.patch \
|
||||
%D%/packages/patches/superlu-dist-fix-mpi-deprecations.patch \
|
||||
%D%/packages/patches/superlu-dist-scotchmetis.patch \
|
||||
%D%/packages/patches/supertux-unbundle-squirrel.patch \
|
||||
%D%/packages/patches/swig-guile-gc.patch \
|
||||
@@ -1457,7 +1405,6 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/t1lib-CVE-2010-2642.patch \
|
||||
%D%/packages/patches/t1lib-CVE-2011-0764.patch \
|
||||
%D%/packages/patches/t1lib-CVE-2011-1552+.patch \
|
||||
%D%/packages/patches/t4k-common-libpng16.patch \
|
||||
%D%/packages/patches/tar-remove-wholesparse-check.patch \
|
||||
%D%/packages/patches/tar-skip-unreliable-tests.patch \
|
||||
%D%/packages/patches/tcc-boot-0.9.27.patch \
|
||||
@@ -1465,6 +1412,7 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/tcsh-fix-autotest.patch \
|
||||
%D%/packages/patches/tcsh-fix-out-of-bounds-read.patch \
|
||||
%D%/packages/patches/teensy-loader-cli-help.patch \
|
||||
%D%/packages/patches/teeworlds-use-latest-wavpack.patch \
|
||||
%D%/packages/patches/texinfo-5-perl-compat.patch \
|
||||
%D%/packages/patches/texlive-bin-CVE-2018-17407.patch \
|
||||
%D%/packages/patches/texlive-bin-luatex-poppler-compat.patch \
|
||||
@@ -1482,7 +1430,7 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/tomb-fix-errors-on-open.patch \
|
||||
%D%/packages/patches/tuxpaint-stamps-path.patch \
|
||||
%D%/packages/patches/txr-shell.patch \
|
||||
%D%/packages/patches/u-boot-riscv64-fix-extlinux.patch \
|
||||
%D%/packages/patches/u-boot-fix-mkimage-header-verification.patch \
|
||||
%D%/packages/patches/ucx-tcp-iface-ioctl.patch \
|
||||
%D%/packages/patches/udiskie-no-appindicator.patch \
|
||||
%D%/packages/patches/unzip-CVE-2014-8139.patch \
|
||||
@@ -1501,6 +1449,8 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/ustr-fix-build-with-gcc-5.patch \
|
||||
%D%/packages/patches/util-linux-tests.patch \
|
||||
%D%/packages/patches/upower-builddir.patch \
|
||||
%D%/packages/patches/upx-fix-CVE-2017-15056.patch \
|
||||
%D%/packages/patches/usb-modeswitch-accept-config-arg.patch \
|
||||
%D%/packages/patches/valgrind-enable-arm.patch \
|
||||
%D%/packages/patches/vboot-utils-fix-format-load-address.patch \
|
||||
%D%/packages/patches/vboot-utils-fix-tests-show-contents.patch \
|
||||
@@ -1515,6 +1465,9 @@ 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/wavpack-CVE-2018-6767.patch \
|
||||
%D%/packages/patches/wavpack-CVE-2018-7253.patch \
|
||||
%D%/packages/patches/wavpack-CVE-2018-7254.patch \
|
||||
%D%/packages/patches/weasyprint-library-paths.patch \
|
||||
%D%/packages/patches/websocketpp-fix-for-boost-1.70.patch \
|
||||
%D%/packages/patches/wicd-bitrate-none-fix.patch \
|
||||
@@ -1523,6 +1476,7 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/wicd-wpa2-ttls.patch \
|
||||
%D%/packages/patches/wmctrl-64-fix.patch \
|
||||
%D%/packages/patches/wmfire-update-for-new-gdk-versions.patch \
|
||||
%D%/packages/patches/woff2-libbrotli.patch \
|
||||
%D%/packages/patches/wordnet-CVE-2008-2149.patch \
|
||||
%D%/packages/patches/wordnet-CVE-2008-3908-pt1.patch \
|
||||
%D%/packages/patches/wordnet-CVE-2008-3908-pt2.patch \
|
||||
@@ -1537,20 +1491,11 @@ dist_patch_DATA = \
|
||||
%D%/packages/patches/xf86-video-voodoo-pcitag.patch \
|
||||
%D%/packages/patches/xfce4-panel-plugins.patch \
|
||||
%D%/packages/patches/xfce4-settings-defaults.patch \
|
||||
%D%/packages/patches/xmoto-utf8.patch \
|
||||
%D%/packages/patches/xmoto-remove-glext.patch \
|
||||
%D%/packages/patches/xmoto-reproducible.patch \
|
||||
%D%/packages/patches/xplanet-1.3.1-cxx11-eof.patch \
|
||||
%D%/packages/patches/xplanet-1.3.1-libdisplay_DisplayOutput.cpp.patch \
|
||||
%D%/packages/patches/xplanet-1.3.1-libimage_gif.c.patch \
|
||||
%D%/packages/patches/xplanet-1.3.1-xpUtil-Add2017LeapSecond.cpp.patch \
|
||||
%D%/packages/patches/xsane-fix-memory-leak.patch \
|
||||
%D%/packages/patches/xsane-fix-pdf-floats.patch \
|
||||
%D%/packages/patches/xsane-fix-snprintf-buffer-length.patch \
|
||||
%D%/packages/patches/xsane-support-ipv6.patch \
|
||||
%D%/packages/patches/xsane-tighten-default-umask.patch \
|
||||
%D%/packages/patches/zziplib-CVE-2018-16548.patch
|
||||
%D%/packages/patches/xsane-tighten-default-umask.patch
|
||||
|
||||
MISC_DISTRO_FILES = \
|
||||
%D%/packages/ld-wrapper.in \
|
||||
%D%/packages/ld-wrapper-next.in
|
||||
%D%/packages/ld-wrapper.in
|
||||
|
||||
+1
-1
@@ -1,6 +1,6 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2019 David Thompson <davet@gnu.org>
|
||||
;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.org>
|
||||
;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.lonestar.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.org>
|
||||
;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.lonestar.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
|
||||
+58
-82
@@ -1,6 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.org>
|
||||
;;; Copyright © 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.lonestar.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -40,7 +39,6 @@
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (ice-9 textual-ports)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-9)
|
||||
#:use-module (srfi srfi-19)
|
||||
#:use-module (srfi srfi-26)
|
||||
#:use-module (srfi srfi-34)
|
||||
@@ -144,24 +142,9 @@ an environment type of 'managed-host."
|
||||
;;; Safety checks.
|
||||
;;;
|
||||
|
||||
;; Assertion to be executed remotely. This abstraction exists to allow us to
|
||||
;; gather a list of expressions to be evaluated and eventually evaluate them
|
||||
;; all at once instead of one by one. (This is pretty much a monad.)
|
||||
(define-record-type <remote-assertion>
|
||||
(remote-assertion exp proc)
|
||||
remote-assertion?
|
||||
(exp remote-assertion-expression)
|
||||
(proc remote-assertion-procedure))
|
||||
|
||||
(define-syntax-rule (remote-let ((var exp)) body ...)
|
||||
"Return a <remote-assertion> that binds VAR to the result of evaluating EXP,
|
||||
a gexp, remotely, and evaluate BODY in that context."
|
||||
(remote-assertion exp (lambda (var) body ...)))
|
||||
|
||||
(define (machine-check-file-system-availability machine)
|
||||
"Return a list of <remote-assertion> that raise a '&message' error condition
|
||||
if any of the file-systems specified in MACHINE's 'system' declaration do not
|
||||
exist on the machine."
|
||||
"Raise a '&message' error condition if any of the file-systems specified in
|
||||
MACHINE's 'system' declaration do not exist on the machine."
|
||||
(define file-systems
|
||||
(filter (lambda (fs)
|
||||
(and (file-system-mount? fs)
|
||||
@@ -171,18 +154,22 @@ exist on the machine."
|
||||
(operating-system-file-systems (machine-operating-system machine))))
|
||||
|
||||
(define (check-literal-file-system fs)
|
||||
(remote-let ((errno #~(catch 'system-error
|
||||
(lambda ()
|
||||
(stat #$(file-system-device fs))
|
||||
#t)
|
||||
(lambda args
|
||||
(system-error-errno args)))))
|
||||
(define remote-exp
|
||||
#~(catch 'system-error
|
||||
(lambda ()
|
||||
(stat #$(file-system-device fs))
|
||||
#t)
|
||||
(lambda args
|
||||
(system-error-errno args))))
|
||||
|
||||
(mlet %store-monad ((errno (machine-remote-eval machine remote-exp)))
|
||||
(when (number? errno)
|
||||
(raise (condition
|
||||
(&message
|
||||
(message (format #f (G_ "device '~a' not found: ~a")
|
||||
(file-system-device fs)
|
||||
(strerror errno)))))))))
|
||||
(strerror errno)))))))
|
||||
(return #t)))
|
||||
|
||||
(define (check-labeled-file-system fs)
|
||||
(define remote-exp
|
||||
@@ -193,13 +180,14 @@ exist on the machine."
|
||||
(find-partition-by-label #$(file-system-label->string
|
||||
(file-system-device fs))))))
|
||||
|
||||
(remote-let ((result remote-exp))
|
||||
(mlet %store-monad ((result (machine-remote-eval machine remote-exp)))
|
||||
(unless result
|
||||
(raise (condition
|
||||
(&message
|
||||
(message (format #f (G_ "no file system with label '~a'")
|
||||
(file-system-label->string
|
||||
(file-system-device fs))))))))))
|
||||
(file-system-device fs))))))))
|
||||
(return #t)))
|
||||
|
||||
(define (check-uuid-file-system fs)
|
||||
(define remote-exp
|
||||
@@ -215,30 +203,31 @@ exist on the machine."
|
||||
|
||||
(find-partition-by-uuid uuid))))
|
||||
|
||||
(remote-let ((result remote-exp))
|
||||
(mlet %store-monad ((result (machine-remote-eval machine remote-exp)))
|
||||
(unless result
|
||||
(raise (condition
|
||||
(&message
|
||||
(message (format #f (G_ "no file system with UUID '~a'")
|
||||
(uuid->string (file-system-device fs))))))))))
|
||||
(uuid->string (file-system-device fs))))))))
|
||||
(return #t)))
|
||||
|
||||
(append (map check-literal-file-system
|
||||
(filter (lambda (fs)
|
||||
(string? (file-system-device fs)))
|
||||
file-systems))
|
||||
(map check-labeled-file-system
|
||||
(filter (lambda (fs)
|
||||
(file-system-label? (file-system-device fs)))
|
||||
file-systems))
|
||||
(map check-uuid-file-system
|
||||
(filter (lambda (fs)
|
||||
(uuid? (file-system-device fs)))
|
||||
file-systems))))
|
||||
(mbegin %store-monad
|
||||
(mapm %store-monad check-literal-file-system
|
||||
(filter (lambda (fs)
|
||||
(string? (file-system-device fs)))
|
||||
file-systems))
|
||||
(mapm %store-monad check-labeled-file-system
|
||||
(filter (lambda (fs)
|
||||
(file-system-label? (file-system-device fs)))
|
||||
file-systems))
|
||||
(mapm %store-monad check-uuid-file-system
|
||||
(filter (lambda (fs)
|
||||
(uuid? (file-system-device fs)))
|
||||
file-systems))))
|
||||
|
||||
(define (machine-check-initrd-modules machine)
|
||||
"Return a list of <remote-assertion> that raise a '&message' error condition
|
||||
if any of the modules needed by 'needed-for-boot' file systems in MACHINE are
|
||||
not available in the initrd."
|
||||
"Raise a '&message' error condition if any of the modules needed by
|
||||
'needed-for-boot' file systems in MACHINE are not available in the initrd."
|
||||
(define file-systems
|
||||
(filter file-system-needed-for-boot?
|
||||
(operating-system-file-systems (machine-operating-system machine))))
|
||||
@@ -266,16 +255,20 @@ not available in the initrd."
|
||||
|
||||
(missing-modules dev '#$(operating-system-initrd-modules
|
||||
(machine-operating-system machine)))))))
|
||||
(mlet %store-monad ((missing (machine-remote-eval machine remote-exp)))
|
||||
(return (list fs missing))))
|
||||
|
||||
(remote-let ((missing remote-exp))
|
||||
(unless (null? missing)
|
||||
(raise (condition
|
||||
(&message
|
||||
(message (format #f (G_ "missing modules for ~a:~{ ~a~}~%")
|
||||
(file-system-device fs)
|
||||
missing))))))))
|
||||
|
||||
(map missing-modules file-systems))
|
||||
(mlet %store-monad ((device (mapm %store-monad missing-modules file-systems)))
|
||||
(for-each (match-lambda
|
||||
((fs missing)
|
||||
(unless (null? missing)
|
||||
(raise (condition
|
||||
(&message
|
||||
(message (format #f (G_ "~a missing modules ~{ ~a~}~%")
|
||||
(file-system-device fs)
|
||||
missing))))))))
|
||||
device)
|
||||
(return #t)))
|
||||
|
||||
(define (machine-check-building-for-appropriate-system machine)
|
||||
"Raise a '&message' error condition if MACHINE is configured to be built
|
||||
@@ -287,38 +280,21 @@ by MACHINE."
|
||||
(not (string= system (machine-ssh-configuration-system config))))
|
||||
(raise (condition
|
||||
(&message
|
||||
(message (format #f (G_ "incorrect target system\
|
||||
('~a' was given, while the system reports that it is '~a')~%")
|
||||
(message (format #f (G_ "incorrect target system \
|
||||
('~a' was given, while the system reports that it is '~a')~%")
|
||||
(machine-ssh-configuration-system config)
|
||||
system))))))))
|
||||
system)))))))
|
||||
(with-monad %store-monad (return #t)))
|
||||
|
||||
(define (check-deployment-sanity machine)
|
||||
"Raise a '&message' error condition if it is clear that deploying MACHINE's
|
||||
'system' declaration would fail."
|
||||
(define assertions
|
||||
(append (machine-check-file-system-availability machine)
|
||||
(machine-check-initrd-modules machine)))
|
||||
|
||||
(define aggregate-exp
|
||||
;; Gather all the expressions so that a single round-trip is enough to
|
||||
;; evaluate all the ASSERTIONS remotely.
|
||||
#~(map (lambda (file)
|
||||
(false-if-exception (primitive-load file)))
|
||||
'#$(map (lambda (assertion)
|
||||
(scheme-file "remote-assertion.scm"
|
||||
(remote-assertion-expression assertion)))
|
||||
assertions)))
|
||||
|
||||
;; First check MACHINE's system type--an incorrect value for 'system' would
|
||||
;; cause subsequent invocations of 'remote-eval' to fail.
|
||||
(machine-check-building-for-appropriate-system machine)
|
||||
|
||||
(mlet %store-monad ((values (machine-remote-eval machine aggregate-exp)))
|
||||
(for-each (lambda (proc value)
|
||||
(proc value))
|
||||
(map remote-assertion-procedure assertions)
|
||||
values)
|
||||
(return #t)))
|
||||
;; Order is important here -- an incorrect value for 'system' will cause
|
||||
;; invocations of 'remote-eval' to fail.
|
||||
(mbegin %store-monad
|
||||
(machine-check-building-for-appropriate-system machine)
|
||||
(machine-check-file-system-availability machine)
|
||||
(machine-check-initrd-modules machine)))
|
||||
|
||||
|
||||
;;;
|
||||
|
||||
+3
-6
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 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>
|
||||
@@ -30,12 +30,12 @@
|
||||
#:select ((package-name->name+version
|
||||
. hyphen-separated-name->name+version)
|
||||
mkdir-p))
|
||||
#:use-module (guix profiles)
|
||||
#:autoload (guix profiles) (packages->manifest)
|
||||
#:use-module (guix describe)
|
||||
#:use-module (guix deprecation)
|
||||
#:use-module (ice-9 vlist)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (ice-9 binary-ports)
|
||||
#:autoload (ice-9 binary-ports) (put-bytevector)
|
||||
#:autoload (system base compile) (compile)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-11)
|
||||
@@ -369,9 +369,6 @@ VERSION."
|
||||
(string=? (package-version p) highest))
|
||||
matches))))))
|
||||
|
||||
;; Prevent Guile 3 from inlining this procedure so we can mock it in tests.
|
||||
(set! find-best-packages-by-name find-best-packages-by-name)
|
||||
|
||||
(define (generate-package-cache directory)
|
||||
"Generate under DIRECTORY a cache of all the available packages.
|
||||
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2015, 2016 Leo Famulari <leo@famulari.name>
|
||||
;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -30,7 +29,7 @@
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://www.brain-dump.org/projects/abduco/abduco-"
|
||||
"http://www.brain-dump.org/projects/abduco/abduco-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
@@ -46,5 +45,5 @@
|
||||
(description "abduco provides session management i.e. it allows programs to
|
||||
be run independently from their controlling terminal. That is, programs can
|
||||
be detached---run in the background---and then later reattached.")
|
||||
(home-page "https://www.brain-dump.org/projects/abduco/")
|
||||
(home-page "http://www.brain-dump.org/projects/abduco/")
|
||||
(license isc)))
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
|
||||
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -48,7 +47,7 @@
|
||||
(define-public abiword
|
||||
(package
|
||||
(name "abiword")
|
||||
(version "3.0.4")
|
||||
(version "3.0.2")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@@ -56,9 +55,10 @@
|
||||
(string-append "https://www.abisource.com/downloads/abiword/" version
|
||||
"/source/abiword-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32 "1mx5l716n0z5788i19qmad30cck4v9ggr071cafw2nrf375rcc79"))
|
||||
(base32 "08imry821g81apdwym3gcs4nss0l9j5blqk31j5rv602zmcd9gxg"))
|
||||
(patches
|
||||
(search-patches "abiword-explictly-cast-bools.patch"))))
|
||||
(search-patches "abiword-explictly-cast-bools.patch"
|
||||
"abiword-black-drawing-with-gtk322.patch"))))
|
||||
|
||||
(build-system glib-or-gtk-build-system)
|
||||
(arguments ;; NOTE: rsvg is disabled, since Abiword
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Nikita Karetnikov <nikita@karetnikov.org>
|
||||
;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -36,7 +35,7 @@
|
||||
(base32
|
||||
"0gv6m8giazshvgpvwbng98chpas09myyfw1zr2y7hqxib0mvy5ac"))))
|
||||
(build-system gnu-build-system)
|
||||
(home-page "https://www.gnu.org/software/acct/")
|
||||
(home-page "https://gnu.org/software/acct/")
|
||||
(synopsis "Standard login and process accounting utilities")
|
||||
(description
|
||||
"GNU acct provides a means for system administrators to determine
|
||||
|
||||
+115
-150
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
|
||||
;;; Copyright © 2014, 2015, 2016, 2018, 2019 Mark H Weaver <mhw@netris.org>
|
||||
;;; Copyright © 2014, 2015, 2016, 2017, 2018 Eric Bavier <bavier@member.fsf.org>
|
||||
@@ -18,21 +18,18 @@
|
||||
;;; Copyright © 2017 Ben Sturmfels <ben@sturm.com.au>
|
||||
;;; Copyright © 2017 Ethan R. Jones <doubleplusgood23@gmail.com>
|
||||
;;; Copyright © 2017 Christopher Allan Webber <cwebber@dustycloud.org>
|
||||
;;; Copyright © 2017, 2018, 2020 Marius Bakke <mbakke@fastmail.com>
|
||||
;;; Copyright © 2017, 2018 Marius Bakke <mbakke@fastmail.com>
|
||||
;;; Copyright © 2018, 2019 Arun Isaac <arunisaac@systemreboot.net>
|
||||
;;; Copyright © 2018 Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
|
||||
;;; Copyright © 2018 Rutger Helling <rhelling@mykolab.com>
|
||||
;;; Copyright © 2018 Pierre Neidhardt <mail@ambrevar.xyz>
|
||||
;;; Copyright © 2019 Brett Gilio <brettg@gnu.org>
|
||||
;;; Copyright © 2019,2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
|
||||
;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.org>
|
||||
;;; Copyright © 2019 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
|
||||
;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.lonestar.org>
|
||||
;;; Copyright © 2019 Hartmut Goebel <h.goebel@crazy-compilers.com>
|
||||
;;; Copyright © 2019 Alex Griffin <a@ajgrf.com>
|
||||
;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
|
||||
;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
|
||||
;;; Copyright © 2020 Michael Rohleder <mike@rohleder.de>
|
||||
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -50,6 +47,11 @@
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages admin)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix git-download)
|
||||
#:use-module (guix build-system cmake)
|
||||
#:use-module (guix build-system emacs)
|
||||
#:use-module (guix build-system gnu)
|
||||
@@ -57,58 +59,41 @@
|
||||
#:use-module (guix build-system perl)
|
||||
#:use-module (guix build-system python)
|
||||
#:use-module (guix build-system trivial)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix git-download)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages algebra)
|
||||
#:use-module (gnu packages autotools)
|
||||
#:use-module (gnu packages base)
|
||||
#:use-module (gnu packages bash)
|
||||
#:use-module (gnu packages bison)
|
||||
#:use-module (gnu packages boost)
|
||||
#:use-module (gnu packages c)
|
||||
#:use-module (gnu packages check)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages cross-base)
|
||||
#:use-module (gnu packages crypto)
|
||||
#:use-module (gnu packages cryptsetup)
|
||||
#:use-module (gnu packages cyrus-sasl)
|
||||
#:use-module (gnu packages dns)
|
||||
#:use-module (gnu packages elf)
|
||||
#:use-module (gnu packages file)
|
||||
#:use-module (gnu packages flex)
|
||||
#:use-module (gnu packages gettext)
|
||||
#:use-module (gnu packages gl)
|
||||
#:use-module (gnu packages glib)
|
||||
#:use-module (gnu packages gnome)
|
||||
#:use-module (gnu packages gnupg)
|
||||
#:use-module (gnu packages golang)
|
||||
#:use-module (gnu packages groff)
|
||||
#:use-module (gnu packages gtk)
|
||||
#:use-module (gnu packages guile)
|
||||
#:use-module (gnu packages image)
|
||||
#:use-module (gnu packages imagemagick)
|
||||
#:use-module (gnu packages inkscape)
|
||||
#:use-module (gnu packages kerberos)
|
||||
#:use-module (gnu packages ncurses)
|
||||
#:use-module (gnu packages readline)
|
||||
#:use-module (gnu packages libbsd)
|
||||
#:use-module (gnu packages libftdi)
|
||||
#:use-module (gnu packages libunwind)
|
||||
#:use-module (gnu packages libusb)
|
||||
#:use-module (gnu packages linux)
|
||||
#:use-module (gnu packages lua)
|
||||
#:use-module (gnu packages man)
|
||||
#:use-module (gnu packages mcrypt)
|
||||
#:use-module (gnu packages mpi)
|
||||
#:use-module (gnu packages ncurses)
|
||||
#:use-module (gnu packages openldap)
|
||||
#:use-module (gnu packages patchutils)
|
||||
#:use-module (gnu packages pciutils)
|
||||
#:use-module (gnu packages guile)
|
||||
#:use-module (gnu packages gettext)
|
||||
#:use-module (gnu packages imagemagick)
|
||||
#:use-module (gnu packages inkscape)
|
||||
#:use-module (gnu packages pcre)
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages perl-check)
|
||||
#:use-module (gnu packages tcl)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages cross-base)
|
||||
#:use-module (gnu packages tls)
|
||||
#:use-module (gnu packages gnupg)
|
||||
#:use-module (gnu packages bison)
|
||||
#:use-module (gnu packages flex)
|
||||
#:use-module (gnu packages gl)
|
||||
#:use-module (gnu packages glib)
|
||||
#:use-module (gnu packages openldap)
|
||||
#:use-module (gnu packages mcrypt)
|
||||
#:use-module (gnu packages patchutils)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages popt)
|
||||
#:use-module (gnu packages python)
|
||||
@@ -116,17 +101,28 @@
|
||||
#:use-module (gnu packages python-web)
|
||||
#:use-module (gnu packages python-xyz)
|
||||
#:use-module (gnu packages qt)
|
||||
#:use-module (gnu packages readline)
|
||||
#:use-module (gnu packages sphinx)
|
||||
#:use-module (gnu packages tcl)
|
||||
#:use-module (gnu packages terminals)
|
||||
#:use-module (gnu packages texinfo)
|
||||
#:use-module (gnu packages tls)
|
||||
#:use-module (gnu packages version-control)
|
||||
#:use-module (gnu packages web)
|
||||
#:use-module (gnu packages groff)
|
||||
#:use-module (gnu packages pciutils)
|
||||
#:use-module (gnu packages libunwind)
|
||||
#:use-module (gnu packages libusb)
|
||||
#:use-module (gnu packages libftdi)
|
||||
#:use-module (gnu packages image)
|
||||
#:use-module (gnu packages xorg)
|
||||
#:use-module (gnu packages xdisorg)
|
||||
#:use-module (gnu packages man)
|
||||
#:use-module (gnu packages autotools)
|
||||
#:use-module (gnu packages gnome)
|
||||
#:use-module (gnu packages kerberos)
|
||||
#:use-module (gnu packages gtk)
|
||||
#:use-module (gnu packages xml)
|
||||
#:use-module (gnu packages xorg))
|
||||
#:use-module (gnu packages boost)
|
||||
#:use-module (gnu packages elf)
|
||||
#:use-module (gnu packages mpi)
|
||||
#:use-module (gnu packages version-control)
|
||||
#:use-module (gnu packages web))
|
||||
|
||||
(define-public aide
|
||||
(package
|
||||
@@ -199,14 +195,14 @@ and provides a \"top-like\" mode (monitoring).")
|
||||
(define-public shepherd
|
||||
(package
|
||||
(name "shepherd")
|
||||
(version "0.7.0")
|
||||
(version "0.6.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/shepherd/shepherd-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"07j3vd0y8zab2nwbrwj0ahrfif1ldm5sjssn7m3dw4s307fsrfzx"))))
|
||||
"1xn6mb5bh8bpfgdrh09ja31jk0ln7bmxbbf0vjcqxkkixs2wl6sk"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:configure-flags '("--localstatedir=/var")))
|
||||
@@ -214,10 +210,10 @@ and provides a \"top-like\" mode (monitoring).")
|
||||
`(("pkg-config" ,pkg-config)
|
||||
|
||||
;; This is the Guile we use as a cross-compiler...
|
||||
("guile" ,guile-2.2.7)))
|
||||
("guile" ,guile-2.2/bug-fix)))
|
||||
(inputs
|
||||
;; ... and this is the one that appears in shebangs when cross-compiling.
|
||||
`(("guile" ,guile-2.2.7) ;for <https://bugs.gnu.org/37757>
|
||||
`(("guile" ,guile-2.2/bug-fix) ;for <https://bugs.gnu.org/37757>
|
||||
|
||||
;; The 'shepherd' command uses Readline when used interactively. It's
|
||||
;; an unusual use case though, so we don't propagate it.
|
||||
@@ -231,16 +227,6 @@ interface and is based on GNU Guile.")
|
||||
(license license:gpl3+)
|
||||
(home-page "https://www.gnu.org/software/shepherd/")))
|
||||
|
||||
(define-public guile3.0-shepherd
|
||||
(package
|
||||
(inherit shepherd)
|
||||
(name "guile3.0-shepherd")
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)
|
||||
("guile" ,guile-next)))
|
||||
(inputs
|
||||
`(("guile" ,guile-next)))))
|
||||
|
||||
(define-public cloud-utils
|
||||
(package
|
||||
(name "cloud-utils")
|
||||
@@ -418,7 +404,7 @@ application (for console or X terminals) and requires ncurses.")
|
||||
(("\"/bin/sh\"")
|
||||
(string-append "\"" bash "/bin/sh\"")))
|
||||
#t))))))
|
||||
(home-page "https://www.gnu.org.ua/software/pies/")
|
||||
(home-page "https://www.gnu.org/software/pies/")
|
||||
(synopsis "Program invocation and execution supervisor")
|
||||
(description
|
||||
"GNU pies is a program that supervises the invocation and execution of
|
||||
@@ -464,7 +450,7 @@ hostname.")
|
||||
(define-public shadow
|
||||
(package
|
||||
(name "shadow")
|
||||
(version "4.8.1")
|
||||
(version "4.8")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
@@ -472,7 +458,7 @@ hostname.")
|
||||
"download/" version "/shadow-" version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0qmfq50sdhz6xilgxvinblll8j2iqfl7hwk45bq744y4plq4dbd3"))))
|
||||
"0r5c1p8mfwhw11gb6mjsx1k7d4c32dxai7yss8n5pwy1p61ndd34"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(;; Assume System V `setpgrp (void)', which is the default on GNU
|
||||
@@ -712,7 +698,7 @@ IPv6, proxies, and Unix sockets.")
|
||||
(base32
|
||||
"0mv3wndj4z2bsshh2k8d5sy3j8wxzgf8mzmmkvj1k8gpcz37dm6g"))))
|
||||
(build-system gnu-build-system)
|
||||
(home-page "https://www.routemeister.net/projects/sipcalc/")
|
||||
(home-page "http://www.routemeister.net/projects/sipcalc/")
|
||||
(synopsis "Command-line IP subnet calculator")
|
||||
(description
|
||||
"Sipcalc is an advanced command-line IP subnet calculator. It can take
|
||||
@@ -780,14 +766,14 @@ connection alive.")
|
||||
bind-release-version)))
|
||||
(package
|
||||
(name "isc-dhcp")
|
||||
(version "4.4.2")
|
||||
(version "4.4.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://ftp.isc.org/isc/dhcp/"
|
||||
version "/dhcp-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"08a5003zdxgl41b29zjkxa92h2i40zyjgxg0npvnhpkfl5jcsz0s"))))
|
||||
"025nfqx4zwdgv4b3rkw26ihcj312vir08jk6yi57ndmb4a4m08ia"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:parallel-build? #f
|
||||
@@ -796,6 +782,17 @@ connection alive.")
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'replace-bundled-bind
|
||||
(lambda* (#:key inputs native-inputs #:allow-other-keys)
|
||||
;; XXX TODO: Remove the following invocation of 'patch' when
|
||||
;; isc-dhcp is updated. It should be needed only for 4.4.1.
|
||||
(let ((patch (string-append (assoc-ref (or native-inputs inputs)
|
||||
"patch")
|
||||
"/bin/patch"))
|
||||
(the-patch (assoc-ref (or native-inputs inputs)
|
||||
"fixes-for-newer-bind.patch")))
|
||||
(format #t "applying '~a'...~%" the-patch)
|
||||
(invoke patch "--force" "--no-backup-if-mismatch"
|
||||
"-p1" "--input" the-patch))
|
||||
|
||||
(delete-file "bind/bind.tar.gz")
|
||||
(copy-file (assoc-ref inputs "bind-source-tarball")
|
||||
"bind/bind.tar.gz")
|
||||
@@ -812,17 +809,12 @@ connection alive.")
|
||||
(("^RELEASEVER=.*")
|
||||
(format #f "RELEASEVER=~a\n" ,bind-release-version)))
|
||||
#t))
|
||||
,@(if (%current-target-system)
|
||||
'((add-before 'configure 'fix-bind-cross-compilation
|
||||
(lambda _
|
||||
(substitute* "configure"
|
||||
(("--host=\\$host")
|
||||
"--host=$host_alias"))
|
||||
;; BIND needs a native compiler because the DHCP
|
||||
;; build system uses the built 'gen' executable.
|
||||
(setenv "BUILD_CC" "gcc")
|
||||
#t)))
|
||||
'())
|
||||
(add-before 'configure 'fix-bind-cross-compilation
|
||||
(lambda _
|
||||
(substitute* "configure"
|
||||
(("--host=\\$host")
|
||||
"--host=$host_alias"))
|
||||
#t))
|
||||
(add-after 'configure 'post-configure
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
;; Point to the right client script, which will be
|
||||
@@ -888,14 +880,20 @@ connection alive.")
|
||||
|
||||
(native-inputs
|
||||
`(("perl" ,perl)
|
||||
("file" ,file)))
|
||||
("file" ,file)
|
||||
|
||||
;; XXX TODO: Remove the following patch, and also the 'patch'
|
||||
;; program, when isc-dhcp is updated.
|
||||
("fixes-for-newer-bind.patch"
|
||||
,(search-patch "isc-dhcp-4.4.1-fixes-for-newer-bind.patch"))
|
||||
("patch" ,patch)))
|
||||
|
||||
(inputs `(("inetutils" ,inetutils)
|
||||
("net-tools" ,net-tools)
|
||||
("iproute" ,iproute)
|
||||
|
||||
;; isc-dhcp bundles a copy of BIND, which has proved vulnerable
|
||||
;; in the past. Use a BIND-VERSION of our choosing instead.
|
||||
;; XXX isc-dhcp bundles a copy of bind that has security
|
||||
;; flaws, so we use a newer version.
|
||||
("bind-source-tarball"
|
||||
,(origin
|
||||
(method url-fetch)
|
||||
@@ -1202,7 +1200,7 @@ system administrator.")
|
||||
(define-public sudo
|
||||
(package
|
||||
(name "sudo")
|
||||
(version "1.8.31p1")
|
||||
(version "1.8.30")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri
|
||||
@@ -1212,7 +1210,7 @@ system administrator.")
|
||||
version ".tar.gz")))
|
||||
(sha256
|
||||
(base32
|
||||
"1n0mdmgcs92af34xxsnsh1arrngymhdmwd9srjgjbk65q7xzsg67"))
|
||||
"1rvrqlqrrjsd06dczgj9cwjdkpkqil5zzlwh87h06ms6qzfx6nm3"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
'(begin
|
||||
@@ -1269,10 +1267,9 @@ system administrator.")
|
||||
;; XXX: The 'testsudoers' test series expects user 'root' to exist, but
|
||||
;; the chroot's /etc/passwd doesn't have it. Turn off the tests.
|
||||
#:tests? #f))
|
||||
(native-inputs
|
||||
`(("groff" ,groff)))
|
||||
(inputs
|
||||
`(("linux-pam" ,linux-pam)
|
||||
`(("groff" ,groff)
|
||||
("linux-pam" ,linux-pam)
|
||||
("zlib" ,zlib)
|
||||
("coreutils" ,coreutils)))
|
||||
(home-page "https://www.sudo.ws/")
|
||||
@@ -1586,7 +1583,7 @@ module slots, and the list of I/O ports (e.g. serial, parallel, USB).")
|
||||
(define-public acpica
|
||||
(package
|
||||
(name "acpica")
|
||||
(version "20200326")
|
||||
(version "20191213")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
@@ -1594,7 +1591,7 @@ module slots, and the list of I/O ports (e.g. serial, parallel, USB).")
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0y08l6djjn87jmsp5kj0myjdb48000g20xlfs0a22jzzi383h3by"))))
|
||||
"1106d5b7q8jlgc2z0gz83jdah1yml4fz5z0jjcs7a52pv00c9am8"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs `(("flex" ,flex)
|
||||
("bison" ,bison)))
|
||||
@@ -1620,13 +1617,14 @@ development, not the kernel implementation of ACPI.")
|
||||
(define-public s-tui
|
||||
(package
|
||||
(name "s-tui")
|
||||
(version "1.0.0")
|
||||
(version "0.8.3")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "s-tui" version))
|
||||
(sha256
|
||||
(base32 "0r5yhlsi5xiy7ii1w4kqkaxz9069v5bbfwi3x3xnxhk51yjfgr8n"))))
|
||||
(base32
|
||||
"00lsh2v4i8rwfyjyxx5lijd6rnk9smcfffhzg5sv94ijpcnh216m"))))
|
||||
(build-system python-build-system)
|
||||
(inputs
|
||||
`(("python-psutil" ,python-psutil)
|
||||
@@ -1789,7 +1787,7 @@ environment variable is set and output is to tty.")
|
||||
(string-append "SHELL=" bash "/bin/sh")))
|
||||
|
||||
#t))))))
|
||||
(home-page "https://www.gnu.org.ua/software/direvent/")
|
||||
(home-page "https://www.gnu.org/software/direvent/")
|
||||
(synopsis "Daemon to monitor directories for events such as file removal")
|
||||
(description
|
||||
"A daemon that monitors directories for events, such as creating,
|
||||
@@ -1920,13 +1918,13 @@ of supported upstream metrics systems simultaneously.")
|
||||
(define-public ansible
|
||||
(package
|
||||
(name "ansible")
|
||||
(version "2.9.6")
|
||||
(version "2.8.5")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "ansible" version))
|
||||
(sha256
|
||||
(base32 "1jfbp1i3nl4yvqwd5ssy43dz3pq2x03mn875vb8r56gqh43kmksr"))))
|
||||
(base32 "11k94ifp42psivzx147xwbmq1ak7qnjdgkb6c1xz53nfapkh754f"))))
|
||||
(build-system python-build-system)
|
||||
(native-inputs
|
||||
`(("python-bcrypt" ,python-bcrypt)
|
||||
@@ -2245,7 +2243,7 @@ displays a table of current bandwidth usage by pairs of hosts.")
|
||||
(define-public munge
|
||||
(package
|
||||
(name "munge")
|
||||
(version "0.5.14")
|
||||
(version "0.5.13")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://github.com/dun/munge/releases/"
|
||||
@@ -2253,45 +2251,20 @@ displays a table of current bandwidth usage by pairs of hosts.")
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0h06sghb4rqvv1ywyd6mzsmbcgh712v6ygrff0gzm440y4ca41k6"))
|
||||
"1nj486bbg1adfg298zck96vgx57kchcypc1zdz1n7w540vyksxcr"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
'(begin
|
||||
;; Don't insist on write access to /var.
|
||||
(substitute* "src/etc/Makefile.in"
|
||||
(("\\$\\(INSTALL\\)(.*)localstatedir" _ middle)
|
||||
(string-append "-$(INSTALL)" middle "localstatedir"))
|
||||
(("\\$\\(MKDIR_P\\) .*(local|run)statedir.*")
|
||||
""))
|
||||
(string-append "-$(INSTALL)" middle "localstatedir")))
|
||||
#t))))
|
||||
(inputs
|
||||
`(("openssl" ,openssl)
|
||||
("libgcrypt" ,libgcrypt)))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:configure-flags
|
||||
(list "--localstatedir=/var"
|
||||
(string-append "--with-pkgconfigdir="
|
||||
(assoc-ref %outputs "out") "/lib/pkgconfig"))
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
;; XXX Many test series fail. Some might be fixable, others do no-no
|
||||
;; things like invoking ‘sudo’.
|
||||
(add-after 'unpack 'skip-failing-tests
|
||||
(lambda _
|
||||
(for-each (lambda (test)
|
||||
(substitute* "t/Makefile.in"
|
||||
(((string-append test "\\.t ")) "")))
|
||||
(list "0100-munged-lock"
|
||||
"0010-basic"
|
||||
"0011-munged-cmdline"
|
||||
"0012-munge-cmdline"
|
||||
"0013-unmunge-cmdline"
|
||||
"0101-munged-security-socket"
|
||||
"0102-munged-security-keyfile"
|
||||
"0103-munged-security-logfile"
|
||||
"0110-munged-origin-addr"))
|
||||
#t)))))
|
||||
(arguments '(#:configure-flags '("--localstatedir=/var")))
|
||||
(home-page "https://dun.github.io/munge/")
|
||||
(synopsis "Cluster computing authentication service")
|
||||
(description
|
||||
@@ -2477,7 +2450,7 @@ throughput (in the same interval).")
|
||||
(define-public thefuck
|
||||
(package
|
||||
(name "thefuck")
|
||||
(version "3.30")
|
||||
(version "3.29")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
@@ -2486,7 +2459,7 @@ throughput (in the same interval).")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "0fnf78956pwhb9cgv1jmgypnkma5xzflkivfrkfiadbgin848yfg"))
|
||||
(base32 "1qhxwjjgrzpqrqjv7l2847ywpln76lyd6j8bl9gz2r6kl0fx2fqs"))
|
||||
(patches (search-patches "thefuck-test-environ.patch"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
@@ -2508,8 +2481,7 @@ throughput (in the same interval).")
|
||||
("python-pyte" ,python-pyte)
|
||||
("python-six" ,python-six)))
|
||||
(native-inputs
|
||||
`(("go" ,go)
|
||||
("python-mock" ,python-mock)
|
||||
`(("python-mock" ,python-mock)
|
||||
("python-pytest" ,python-pytest)
|
||||
("python-pytest-mock" ,python-pytest-mock)))
|
||||
(home-page "https://github.com/nvbn/thefuck")
|
||||
@@ -2541,7 +2513,7 @@ a new command using the matched rule, and runs it.")
|
||||
(setenv "prefix" (assoc-ref outputs "out"))
|
||||
#t)))
|
||||
#:make-flags (list "--environment-overrides")))
|
||||
(home-page "https://gentoo.com/di/")
|
||||
(home-page "https://www.gentoo.com/di/")
|
||||
(synopsis "Advanced df like disk information utility")
|
||||
(description
|
||||
"@code{di} is a disk information utility, displaying everything that your
|
||||
@@ -2626,7 +2598,6 @@ shortcut syntax and completion options.")
|
||||
(uri (string-append
|
||||
"https://archives.eyrie.org/software/kerberos/"
|
||||
"pam-krb5-" version ".tar.xz"))
|
||||
(patches (search-patches "pam-krb5-CVE-2020-10595.patch"))
|
||||
(sha256
|
||||
(base32
|
||||
"1qjp8i1s9bz7g6kiqrkzzkxn5pfspa4sy53b6z40fqmdf9przdfb"))))
|
||||
@@ -2870,7 +2841,7 @@ buffers.")
|
||||
("automake" ,automake)
|
||||
("libtool" ,libtool)
|
||||
("pkg-config" ,pkg-config)))
|
||||
(home-page "https://gitlab.freedesktop.org/drm/igt-gpu-tools")
|
||||
(home-page "https://cgit.freedesktop.org/xorg/app/intel-gpu-tools/")
|
||||
(synopsis "Tools for development and testing of the Intel DRM driver")
|
||||
(description "IGT GPU Tools is a collection of tools for development and
|
||||
testing of the Intel DRM driver. There are many macro-level test suites that
|
||||
@@ -2883,17 +2854,20 @@ Intel DRM Driver.")
|
||||
(supported-systems '("i686-linux" "x86_64-linux"))
|
||||
(license license:expat)))
|
||||
|
||||
(define-public intel-gpu-tools
|
||||
(deprecated-package "intel-gpu-tools" igt-gpu-tools))
|
||||
|
||||
(define-public fabric
|
||||
(package
|
||||
(name "fabric")
|
||||
(version "1.14.1")
|
||||
(version "1.14.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "Fabric" version))
|
||||
(sha256
|
||||
(base32
|
||||
"1a3ndlpdw6bhn8fcw1jgznl117a8pnr84az9rb5fwnrypf1ph2b6"))))
|
||||
"13r0b0hllgf8j9rh6x1knmbgvingbdmx046aazv6vck2ll120mw1"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
`(#:python ,python-2 ; Python 2 only
|
||||
@@ -2917,7 +2891,7 @@ Intel DRM Driver.")
|
||||
("python2-bcrypt" ,python2-bcrypt)))
|
||||
(propagated-inputs
|
||||
`(("python2-paramiko" ,python2-paramiko)))
|
||||
(home-page "https://www.fabfile.org/")
|
||||
(home-page "http://fabfile.org")
|
||||
(synopsis "Simple Pythonic remote execution and deployment tool")
|
||||
(description
|
||||
"Fabric is designed to upload files and run shell commands on a number of
|
||||
@@ -2932,7 +2906,7 @@ tool for remote execution and deployment.")
|
||||
(define-public neofetch
|
||||
(package
|
||||
(name "neofetch")
|
||||
(version "7.0.0")
|
||||
(version "6.1.0")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
@@ -2941,7 +2915,7 @@ tool for remote execution and deployment.")
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0xc0fdc7n5bhqirh83agqiy8r14l14zwca07czvj8vgnsnfybslr"))))
|
||||
"022xzn9jk18k2f4b6011d8jk5nbl84i3mw3inlz4q52p2hvk8fch"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f ; there are no tests
|
||||
@@ -3172,16 +3146,7 @@ late.")
|
||||
version "/launchmon-v" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0fm3nd9mydm9v2bf7bh01dbgrfnpwkapxa3dsvy3x1z0rz61qc0x"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
'(begin
|
||||
;; Fix build failure with GCC 7 due to a conversion error.
|
||||
;; Remove for versions > 1.0.2.
|
||||
(substitute* "launchmon/src/linux/lmon_api/lmon_coloc_spawner.cxx"
|
||||
((" lmonpl = '\\\\0'")
|
||||
" *lmonpl = '\\0'"))
|
||||
#t))))
|
||||
"0fm3nd9mydm9v2bf7bh01dbgrfnpwkapxa3dsvy3x1z0rz61qc0x"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("mpi" ,openmpi)
|
||||
@@ -3236,7 +3201,7 @@ Python loading in HPC environments.")
|
||||
(let ((real-name "inxi"))
|
||||
(package
|
||||
(name "inxi-minimal")
|
||||
(version "3.0.38-1")
|
||||
(version "3.0.34-1")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
@@ -3245,7 +3210,7 @@ Python loading in HPC environments.")
|
||||
(commit version)))
|
||||
(file-name (git-file-name real-name version))
|
||||
(sha256
|
||||
(base32 "1qw3sxgd3ly916bzzl3873s3flngwd3vh57slw0shsj7ivz8bfnm"))))
|
||||
(base32 "0x2s40lwsan2pk292nspjgyw00f9f5fdfmwfvl50924pxhyxn2fh"))))
|
||||
(build-system trivial-build-system)
|
||||
(inputs
|
||||
`(("bash" ,bash-minimal)
|
||||
@@ -3374,14 +3339,14 @@ support forum. It runs with the @code{/exec} command in most IRC clients.")
|
||||
(define-public python-pyudev
|
||||
(package
|
||||
(name "python-pyudev")
|
||||
(version "0.22.0")
|
||||
(version "0.21.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "pyudev" version))
|
||||
(sha256
|
||||
(base32
|
||||
"0xmj6l08iih2js9skjqpv4w7y0dhxyg91zmrs6v5aa65gbmipfv9"))))
|
||||
"0arz0dqp75sszsmgm6vhg92n1lsx91ihddx3m944f4ah0487ljq9"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f ; Tests require /sys
|
||||
@@ -3407,7 +3372,7 @@ support forum. It runs with the @code{/exec} command in most IRC clients.")
|
||||
("python-mock" ,python-mock)
|
||||
("python-pytest" ,python-pytest)
|
||||
("python-sphinx" ,python-sphinx)))
|
||||
(home-page "https://pyudev.readthedocs.io/")
|
||||
(home-page "http://pyudev.readthedocs.org/")
|
||||
(synopsis "Python udev binding")
|
||||
(description "This package provides @code{udev} bindings for Python.")
|
||||
(license license:lgpl2.1)))
|
||||
|
||||
@@ -126,7 +126,7 @@
|
||||
(for-each (cut invoke agda-compiler <>)
|
||||
(find-files (string-append out "/share") "\\.agda$"))
|
||||
#t))))))
|
||||
(home-page "https://wiki.portal.chalmers.se/agda/")
|
||||
(home-page "http://wiki.portal.chalmers.se/agda/")
|
||||
(synopsis
|
||||
"Dependently typed functional programming language and proof assistant")
|
||||
(description
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
;;; Copyright © 2017 Hartmut Goebel <h.goebel@crazy-compilers.com>
|
||||
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2019 Guillaume Le Vaillant <glv@posteo.net>
|
||||
;;; Copyright © 2020 Leo Famulari <leo@famulari.name>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -155,41 +154,3 @@ For application developers, language bindings are included for C, C++ and
|
||||
Python as well as GUI widgets for GTK and Qt.")
|
||||
(home-page "https://github.com/mchehab/zbar")
|
||||
(license license:lgpl2.1+)))
|
||||
|
||||
(define-public qrcodegen-cpp
|
||||
;; Currently this project's installation mechanism only exists as a GitHub
|
||||
;; pull request, so we build from a recent commit that the proposed patch
|
||||
;; applies to.
|
||||
(let ((commit "6ea933f1596d818bd21e9a6b8d2e851fb8b4bcf1")
|
||||
(revision "0"))
|
||||
(package
|
||||
(name "qrcodegen-cpp")
|
||||
(version (git-version "1.5.0" revision commit))
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/nayuki/QR-Code-generator.git")
|
||||
(commit commit)))
|
||||
(file-name (git-file-name name version))
|
||||
(patches (search-patches "qrcodegen-cpp-make-install.patch"))
|
||||
(sha256
|
||||
(base32
|
||||
"19fcwqmfk2n9p2n01dv2j4x2y2mqip0j1wbmfbxjp34rqkjwcwxm"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f ; no test suite
|
||||
#:make-flags
|
||||
(list (string-append "PREFIX=" (assoc-ref %outputs "out")))
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(delete 'configure) ; No ./configure script
|
||||
;; Only build the C++ variant.
|
||||
(add-after 'unpack 'chdir
|
||||
(lambda _
|
||||
(chdir "cpp")
|
||||
#t)))))
|
||||
(synopsis "QR Code generator library")
|
||||
(description "qrcodegen-cpp is a QR code generator library in C++. The
|
||||
project also offers Java, Javascript, Python, C, and Rust implementations.")
|
||||
(home-page "https://www.nayuki.io/page/qr-code-generator-library")
|
||||
(license license:expat))))
|
||||
|
||||
+47
-54
@@ -1,15 +1,13 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Andreas Enge <andreas@enge.fr>
|
||||
;;; Copyright © 2013, 2015, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2016, 2017, 2018, 2019, 2020 Nicolas Goaziou <mail@nicolasgoaziou.fr>
|
||||
;;; Copyright © 2016, 2017, 2018, 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
|
||||
;;; Copyright © 2014, 2018 Mark H Weaver <mhw@netris.org>
|
||||
;;; Copyright © 2016, 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2017, 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
|
||||
;;; Copyright © 2017, 2019 Eric Bavier <bavier@member.fsf.org>
|
||||
;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
|
||||
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -93,7 +91,7 @@ implement the floating point approach to complex multiplication are
|
||||
implemented. On the other hand, these comprise asymptotically fast
|
||||
multiplication routines such as Toom–Cook and the FFT.")
|
||||
(license license:lgpl3+)
|
||||
(home-page "http://www.multiprecision.org/mpfrcx/")))
|
||||
(home-page "http://mpfrcx.multiprecision.org/")))
|
||||
|
||||
(define-public gf2x
|
||||
(package
|
||||
@@ -142,7 +140,7 @@ multiplication via floating point approximations. It consists of libraries
|
||||
that can be called from within a C program and of executable command
|
||||
line applications.")
|
||||
(license license:gpl3+)
|
||||
(home-page "http://www.multiprecision.org/cm/")))
|
||||
(home-page "http://cm.multiprecision.org/")))
|
||||
|
||||
(define-public fplll
|
||||
(package
|
||||
@@ -227,7 +225,7 @@ the real span of the lattice.")
|
||||
(define-public pari-gp
|
||||
(package
|
||||
(name "pari-gp")
|
||||
(version "2.11.3")
|
||||
(version "2.11.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
@@ -235,7 +233,7 @@ the real span of the lattice.")
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1jd65h2psrmba2dx7rkf5qidf9ka0cwbsg20pd18k45ggr30l467"))))
|
||||
"0fck8ssmirl8fy7s4mspgrxjs5sag76xbshqlqzkcl3kqyrk4raa"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("texlive" ,(texlive-union
|
||||
@@ -269,7 +267,7 @@ PARI is also available as a C library to allow for faster computations.")
|
||||
(define-public gp2c
|
||||
(package
|
||||
(name "gp2c")
|
||||
(version "0.0.11pl3")
|
||||
(version "0.0.11pl2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
@@ -277,7 +275,7 @@ PARI is also available as a C library to allow for faster computations.")
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0yymbrgyjw500hqgmkj5m4nmscd7c9rs9w2c96lxgrcyab8krhrm"))))
|
||||
"0wqsf05wgkqvmmsx7jinvzdqav6rl56sr8haibgs31nzz4x9xz9g"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs `(("perl" ,perl)))
|
||||
(inputs `(("pari-gp" ,pari-gp)))
|
||||
@@ -347,19 +345,19 @@ precision.")
|
||||
(define-public giac
|
||||
(package
|
||||
(name "giac")
|
||||
(version "1.5.0-87")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
;; "~parisse/giac" is not used because the maintainer regularly
|
||||
;; overwrites the release tarball there, introducing a checksum
|
||||
;; mismatch every time. See
|
||||
;; <https://www-fourier.ujf-grenoble.fr/~parisse/debian/dists/stable/main/source/README>
|
||||
(uri (string-append "https://www-fourier.ujf-grenoble.fr/"
|
||||
"~parisse/debian/dists/stable/main/source/"
|
||||
"giac_" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32 "1d0h1yb7qvh9x7wwv9yrzmcp712f49w1iljkxp4y6g9pzsmg1mmv"))))
|
||||
(version "1.5.0-85")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
;; "~parisse/giac" is not used because the maintainer regularly
|
||||
;; overwrites the release tarball there, introducing a checksum
|
||||
;; mismatch every time. See
|
||||
;; <https://www-fourier.ujf-grenoble.fr/~parisse/debian/dists/stable/main/source/README>
|
||||
(uri (string-append "https://www-fourier.ujf-grenoble.fr/"
|
||||
"~parisse/debian/dists/stable/main/"
|
||||
"source/giac_" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"03icgrfhb1xiy95cqmfgmcb1lw3775mr2ybnzandmyn44iycs6rh"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:modules ((ice-9 ftw)
|
||||
@@ -433,6 +431,9 @@ maple, mupad and the TI89. It is available as a standalone program (graphic
|
||||
or text interfaces) or as a C++ library.")
|
||||
(license license:gpl3+)))
|
||||
|
||||
(define-public giac-xcas
|
||||
(deprecated-package "giac-xcas" giac))
|
||||
|
||||
(define-public flint
|
||||
(package
|
||||
(name "flint")
|
||||
@@ -559,50 +560,42 @@ these types and other mathematical functions.")
|
||||
(define-public ntl
|
||||
(package
|
||||
(name "ntl")
|
||||
(version "11.4.3")
|
||||
(version "9.7.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://shoup.net/ntl/ntl-"
|
||||
(uri (string-append "http://shoup.net/ntl/ntl-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1lisp3064rch3jaa2wrhy1s9kll7i3ka3d0y6lj6l3l4ckfcrhdp"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
'(begin
|
||||
(delete-file-recursively "src/libtool-origin")
|
||||
#t))))
|
||||
(sha256 (base32
|
||||
"115frp5flyvw9wghz4zph1b3llmr5nbxk1skgsggckr81fh3gmxq"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("libtool" ,libtool)
|
||||
("perl" ,perl))) ; for configuration
|
||||
;; FIXME: Add optional input gf2x once available; then also add
|
||||
;; configure flag "NTL_GF2X_LIB=on".
|
||||
(inputs
|
||||
`(("gmp" ,gmp)
|
||||
("gf2x" ,gf2x)))
|
||||
`(("gmp" ,gmp)))
|
||||
(arguments
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(replace 'configure
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(chdir "src")
|
||||
(invoke "./configure"
|
||||
(system* "./configure"
|
||||
(string-append "PREFIX=" (assoc-ref outputs "out"))
|
||||
(string-append "LIBTOOL=" (assoc-ref inputs "libtool") "/bin/libtool")
|
||||
;; set the library prefixes explicitly so that they get
|
||||
;; embedded in the .la file
|
||||
(string-append "GMP_PREFIX=" (assoc-ref inputs "gmp"))
|
||||
(string-append "GF2X_PREFIX=" (assoc-ref inputs "gf2x"))
|
||||
;; Do not build especially for the build machine.
|
||||
"NATIVE=off"
|
||||
"NTL_GF2X_LIB=on"
|
||||
"SHARED=on"))))))
|
||||
;; Also do not tune to the build machine.
|
||||
"WIZARD=off"
|
||||
"SHARED=on")
|
||||
#t)))))
|
||||
(synopsis "C++ library for number theory")
|
||||
(description
|
||||
"NTL is a C++ library providing data structures and algorithms
|
||||
for manipulating signed, arbitrary length integers, and for vectors,
|
||||
matrices, and polynomials over the integers and over finite fields.")
|
||||
(license license:gpl2+)
|
||||
(home-page "https://shoup.net/ntl/")))
|
||||
(home-page "http://shoup.net/ntl/")))
|
||||
|
||||
(define-public singular
|
||||
(package
|
||||
@@ -864,8 +857,8 @@ the la4j library are:
|
||||
(version "1.6")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://repo1.maven.org/maven2/"
|
||||
"pl/edu/icm/JLargeArrays/"
|
||||
(uri (string-append "http://search.maven.org/remotecontent?"
|
||||
"filepath=pl/edu/icm/JLargeArrays/"
|
||||
version "/JLargeArrays-" version
|
||||
"-sources.jar"))
|
||||
(file-name (string-append name "-" version ".jar"))
|
||||
@@ -891,8 +884,8 @@ that can store up to 263 elements.")
|
||||
(version "3.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://repo1.maven.org/maven2/"
|
||||
"com/github/wendykierp/JTransforms/"
|
||||
(uri (string-append "http://search.maven.org/remotecontent?"
|
||||
"filepath=com/github/wendykierp/JTransforms/"
|
||||
version "/JTransforms-" version "-sources.jar"))
|
||||
(sha256
|
||||
(base32
|
||||
@@ -916,16 +909,15 @@ Sine Transform} (DST) and @dfn{Discrete Hartley Transform} (DHT).")
|
||||
(define-public eigen
|
||||
(package
|
||||
(name "eigen")
|
||||
(version "3.3.7")
|
||||
(version "3.3.5")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://bitbucket.org/eigen/eigen/get/"
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"1km3fyfzyqfdvmnl79drps3fjwnz3zbh0c7l34mfbqyvvs8cy4wz"))
|
||||
"1qh3yrwn78ms5yhwbpl5wvblk4gbz02cacdygxylr7i9xbrvylkk"))
|
||||
(file-name (string-append name "-" version ".tar.bz2"))
|
||||
(patches (search-patches "eigen-stabilise-sparseqr-test.patch"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
;; There are 3 test failures in the "unsupported" directory,
|
||||
@@ -1460,7 +1452,8 @@ of M4RI from F_2 to F_{2^e}.")
|
||||
("automake" ,automake)
|
||||
("libtool" ,libtool)))
|
||||
(inputs
|
||||
`(("ntl" ,ntl)
|
||||
`(("gmp" ,gmp)
|
||||
("ntl" ,ntl)
|
||||
("pari-gp" ,pari-gp)))
|
||||
(synopsis "Ranks of elliptic curves and modular symbols")
|
||||
(description "The eclib package includes mwrank (for 2-descent on
|
||||
@@ -1505,7 +1498,7 @@ cohomology ring of a Grassmann variety. The software package also includes
|
||||
a program that performs fast computation of the more general multiplicative
|
||||
structure constants of Schubert polynomials.")
|
||||
(license license:gpl2+)
|
||||
(home-page "https://sites.math.rutgers.edu/~asbuch/lrcalc/")))
|
||||
(home-page "http://sites.math.rutgers.edu/~asbuch/lrcalc/")))
|
||||
|
||||
(define-public iml
|
||||
(package
|
||||
|
||||
+39
-44
@@ -9,7 +9,6 @@
|
||||
;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2019 Andreas Enge <andreas@enge.fr>
|
||||
;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -717,7 +716,7 @@ to be passed to the @code{udev} service.")
|
||||
(define-public git-repo
|
||||
(package
|
||||
(name "git-repo")
|
||||
(version "2.4.1")
|
||||
(version "1.12.37")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
@@ -726,66 +725,61 @@ to be passed to the @code{udev} service.")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (string-append "git-repo-" version "-checkout"))
|
||||
(sha256
|
||||
(base32 "0khg1731927gvin73dcbw1657kbfq4k7agla5rpzqcnwkk5agzg3"))))
|
||||
(base32 "0qp7jqhblv7xblfgpcq4n18dyjdv8shz7r60c3vnjxx2fngkj2jd"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
`(#:python ,python-2 ; code says: "Python 3 support is … experimental."
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-before 'build 'set-executable-paths
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(git (assoc-ref inputs "git"))
|
||||
(gpg (assoc-ref inputs "gnupg"))
|
||||
(ssh (assoc-ref inputs "ssh")))
|
||||
(substitute* '("repo" "git_command.py")
|
||||
(("^GIT = 'git'")
|
||||
(string-append "GIT = '" git "/bin/git'")))
|
||||
(("^GIT = 'git' ")
|
||||
(string-append "GIT = '" git "/bin/git' ")))
|
||||
(substitute* "repo"
|
||||
((" cmd = \\['gpg',")
|
||||
(string-append " cmd = ['" gpg "/bin/gpg',")))
|
||||
(substitute* "git_config.py"
|
||||
((" command_base = \\['ssh',")
|
||||
(string-append " command_base = ['" ssh "/bin/ssh',")))
|
||||
#t)))
|
||||
(add-before 'build 'do-not-self-update
|
||||
(add-before 'build 'do-not-clone-this-source
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
;; Setting the REPO_MAIN variable to an absolute file name is
|
||||
;; enough to have _FindRepo return the store main.py file. The
|
||||
;; self update mechanism is activated with the call to _Init() in
|
||||
;; main(), so we bypass it.
|
||||
|
||||
;; Ticket requesting upstream to provide a mean to disable the
|
||||
;; self update mechanism:
|
||||
;; https://bugs.chromium.org/p/gerrit/issues/detail?id=12407.
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(repo-main (string-append out "/share/git-repo/main.py")))
|
||||
(repo-dir (string-append out "/share/" ,name)))
|
||||
(substitute* "repo"
|
||||
(("^REPO_MAIN = .*")
|
||||
(format #f "REPO_MAIN = ~s~%" repo-main))
|
||||
((" _Init\\(args, gitc_init=\\(cmd ==.*" all)
|
||||
(string-append "True #" all)))
|
||||
;; Prevent repo from trying to git describe its version from
|
||||
;; the (disabled) self updated copy.
|
||||
(substitute* "git_command.py"
|
||||
(("ver = getattr\\(RepoSourceVersion.*")
|
||||
(format #f "ver = ~s~%" ,version)))
|
||||
(substitute* "subcmds/version.py"
|
||||
(("rp_ver = .*")
|
||||
(format #f "rp_ver = ~s~%" ,version)))
|
||||
;; Prevent repo from adding its (disabled) self update copy to
|
||||
;; the list of projects to fetch when using 'repo sync'.
|
||||
(substitute* "subcmds/sync.py"
|
||||
(("to_fetch\\.extend\\(all_projects\\).*" all)
|
||||
(string-append "#" all))
|
||||
(("self\\._Fetch\\(to_fetch")
|
||||
"self._Fetch(all_projects")
|
||||
(("_PostRepoFetch\\(rp, opt\\.repo_verify).*" all)
|
||||
(string-append "#" all))))))
|
||||
(("^def _FindRepo\\(\\):.*")
|
||||
(format #f "
|
||||
def _FindRepo():
|
||||
'''Look for a repo installation, starting at the current directory.'''
|
||||
# Use the installed version of git-repo.
|
||||
repo_main = '~a/main.py'
|
||||
curdir = os.getcwd()
|
||||
olddir = None
|
||||
while curdir != '/' and curdir != olddir:
|
||||
dot_repo = os.path.join(curdir, repodir)
|
||||
if os.path.isdir(dot_repo):
|
||||
return (repo_main, dot_repo)
|
||||
else:
|
||||
olddir = curdir
|
||||
curdir = os.path.dirname(curdir)
|
||||
return None, ''
|
||||
|
||||
# The remaining of this function is dead code. It was used to
|
||||
# find a git-checked-out version in the local project.\n" repo-dir))
|
||||
;; Neither clone, check out, nor verify the git repository
|
||||
(("(^\\s+)_Clone\\(.*\\)") "")
|
||||
(("(^\\s+)_Checkout\\(.*\\)") "")
|
||||
((" rev = _Verify\\(.*\\)") " rev = None"))
|
||||
#t)))
|
||||
(delete 'build) ; nothing to build
|
||||
(add-before 'check 'configure-git
|
||||
(lambda _
|
||||
(setenv "HOME" (getcwd))
|
||||
(invoke "git" "config" "--global" "user.email" "you@example.com")
|
||||
(invoke "git" "config" "--global" "user.name" "Your Name")))
|
||||
(replace 'check
|
||||
(lambda _
|
||||
(invoke "./run_tests")))
|
||||
(invoke "python" "-m" "nose")))
|
||||
(replace 'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
@@ -801,9 +795,10 @@ to be passed to the @code{udev} service.")
|
||||
(inputs
|
||||
;; TODO: Add git-remote-persistent-https once it is available in guix
|
||||
`(("git" ,git)
|
||||
("gnupg" ,gnupg)
|
||||
("ssh" ,openssh)))
|
||||
(native-inputs
|
||||
`(("pytest" ,python-pytest)))
|
||||
`(("nose" ,python2-nose)))
|
||||
(home-page "https://code.google.com/p/git-repo/")
|
||||
(synopsis "Helps to manage many Git repositories.")
|
||||
(description "Repo is a tool built on top of Git. Repo helps manage many
|
||||
|
||||
@@ -49,7 +49,7 @@
|
||||
(lambda _
|
||||
(with-directory-excursion "test"
|
||||
(invoke "./anthy" "--all")))))))
|
||||
(home-page "https://anthy.osdn.jp/")
|
||||
(home-page "http://anthy.osdn.jp/")
|
||||
(synopsis "Japanese input method")
|
||||
(description "Anthy is a Japanese input method for converting
|
||||
hiragana text to mixed kana and kanji. It is written in the C
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2016, 2017, 2018, 2019, 2020 Eric Bavier <bavier@posteo.net>
|
||||
;;; Copyright © 2016, 2017, 2018, 2019 Eric Bavier <bavier@member.fsf.org>
|
||||
;;; Copyright © 2018 Christopher Baines <mail@cbaines.net>
|
||||
;;; Copyright © 2019 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;;
|
||||
@@ -44,14 +44,14 @@
|
||||
(define-public clamav
|
||||
(package
|
||||
(name "clamav")
|
||||
(version "0.102.2")
|
||||
(version "0.102.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://www.clamav.net/downloads/production/"
|
||||
"clamav-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1lq7r6r2yl8pp3fkn32b0bsmbbl9pg90kpvhsa2clad3xg0drz49"))
|
||||
"1mpdgn3isz26hd1j6p8lcb76v8hjs54k1wb655rnil4hv78aig8d"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
'(begin
|
||||
|
||||
+3
-11
@@ -7,7 +7,6 @@
|
||||
;;; Copyright © 2016 Theodoros Foradis <theodoros@foradis.org>
|
||||
;;; Copyright © 2016, 2017, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2019 Jens Mølgaard <jens@zete.tk>
|
||||
;;; Copyright © 2020 Timotej Lazar <timotej.lazar@araneo.si>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -183,10 +182,11 @@ dictionaries, including personal ones.")
|
||||
|
||||
(define-public aspell-dict-da
|
||||
(aspell-dictionary "da" "Danish"
|
||||
#:version "1.6.36-11-0"
|
||||
#:version "1.4.42-1"
|
||||
#:prefix "aspell5-"
|
||||
#:sha256
|
||||
(base32
|
||||
"1xz2haayvwlxgss9jf1x2311a1ixbk75q2vgfprjhibsmb7cpinv")))
|
||||
"1hfkmiyhgrx5lgrb2mffjbdn1hivrm73wcg7x0iid74p2yb0fjpp")))
|
||||
|
||||
(define-public aspell-dict-el
|
||||
(aspell-dictionary "el" "Greek"
|
||||
@@ -319,14 +319,6 @@ dictionaries, including personal ones.")
|
||||
(base32
|
||||
"0ip6nq43hcr7vvzbv4lwwmlwgfa60hrhsldh9xy3zg2prv6bcaaw")))
|
||||
|
||||
(define-public aspell-dict-sl
|
||||
(aspell-dictionary "sl" "Slovenian"
|
||||
#:version "0.50-0"
|
||||
#:prefix "aspell-"
|
||||
#:sha256
|
||||
(base32
|
||||
"1l9kc5g35flq8kw9jhn2n0bjb4sipjs4qkqzgggs438kywkx2rp5")))
|
||||
|
||||
(define-public aspell-dict-sv
|
||||
(aspell-dictionary "sv" "Swedish"
|
||||
#:version "0.51-0"
|
||||
|
||||
@@ -7,7 +7,6 @@
|
||||
;;; Copyright © 2019 Guy Fleury Iteriteka <hoonandon@gmail.com>
|
||||
;;; Copyright © 2019 Andy Tai <atai@atai.org>
|
||||
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
|
||||
;;; Copyright © 2020 Christopher Lemmer Webber <cwebber@dustycloud.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -25,7 +24,6 @@
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages assembly)
|
||||
#:use-module (guix build-system cmake)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix git-download)
|
||||
@@ -46,7 +44,6 @@
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages texinfo)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages sphinx)
|
||||
#:use-module (gnu packages xml)
|
||||
#:use-module ((guix utils)
|
||||
#:select (%current-system)))
|
||||
@@ -112,7 +109,7 @@ has strong support for macros.")
|
||||
(inputs
|
||||
`(("python" ,python-wrapper)
|
||||
("xmlto" ,xmlto)))
|
||||
(home-page "https://yasm.tortall.net/")
|
||||
(home-page "http://yasm.tortall.net/")
|
||||
(synopsis "Rewrite of the NASM assembler")
|
||||
(description
|
||||
"Yasm is a complete rewrite of the NASM assembler.
|
||||
@@ -149,14 +146,14 @@ to the clients.")
|
||||
(define-public fasm
|
||||
(package
|
||||
(name "fasm")
|
||||
(version "1.73.22")
|
||||
(version "1.73.21")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://flatassembler.net/fasm-"
|
||||
version ".tgz"))
|
||||
(sha256
|
||||
(base32 "1pb0rcfdsb0h89khjjrbikz5wjdllavj3ajim0rcyh7x12xr1hw5"))))
|
||||
(base32 "143zh7x3q0r2kclshh8n5w4i5pw4lh60si7rspvc725xxjpjkvcv"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f ; no tests exist
|
||||
@@ -233,7 +230,7 @@ assembler, a C compiler and a linker. The assembler uses Intel syntax
|
||||
(uri (git-reference
|
||||
(url "https://git.savannah.gnu.org/r/libjit.git")
|
||||
(commit commit)))
|
||||
(file-name (git-file-name name version))
|
||||
(file-name (string-append name "-" version "-checkout"))
|
||||
(sha256
|
||||
(base32
|
||||
"0p6wklslkkp3s4aisj3w5a53bagqn5fy4m6088ppd4fcfxgqkrcd"))))
|
||||
@@ -259,7 +256,7 @@ runtime")
|
||||
(define-public rgbds
|
||||
(package
|
||||
(name "rgbds")
|
||||
(version "0.4.0")
|
||||
(version "0.3.9")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
@@ -268,7 +265,7 @@ runtime")
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"15680964nlsa83nqgxk7knxajn98lddz2hg6jnn8ffmnms5wdam7"))))
|
||||
"0pzd9ig3ahpgq7jbj82grllxx1v01d620insr2m8h0c6jj25n5hv"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
@@ -302,72 +299,3 @@ package for the Game Boy and Game Boy Color. It consists of:
|
||||
@item rgbgfx (PNG-to-Game Boy graphics converter)
|
||||
@end itemize")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public wla-dx
|
||||
(package
|
||||
(name "wla-dx")
|
||||
(version "9.10")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/vhelin/wla-dx.git")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"022isf7s9q5i0j4xj69zpp0lgw8p9n37sn7ii25v68r15zaahk2w"))))
|
||||
(build-system cmake-build-system)
|
||||
(native-inputs
|
||||
`(("sphinx" ,python-sphinx))) ; to generate man pages
|
||||
(arguments
|
||||
`(#:tests? #f)) ; no tests
|
||||
(home-page "https://github.com/vhelin/wla-dx")
|
||||
(synopsis "Assemblers for various processors")
|
||||
(description "WLA DX is a set of tools to assemble assembly files to
|
||||
object or library files (@code{wla-ARCH}) and link them together (@code{wlalink}).
|
||||
Supported architectures are:
|
||||
|
||||
@itemize @bullet
|
||||
@item z80
|
||||
@item gb (z80-gb)
|
||||
@item 6502
|
||||
@item 65c02
|
||||
@item 6510
|
||||
@item 65816
|
||||
@item 6800
|
||||
@item 6801
|
||||
@item 6809
|
||||
@item 8008
|
||||
@item 8080
|
||||
@item huc6280
|
||||
@item spc700
|
||||
@end itemize")
|
||||
(license license:gpl2)))
|
||||
|
||||
(define-public xa
|
||||
(package
|
||||
(name "xa")
|
||||
(version "2.3.10")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://www.floodgap.com/retrotech/xa"
|
||||
"/dists/xa-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0y5sd247g11jfk5msxy91hz2nhpy7smj125dzfyfhjsjnqk5nyw6"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f ; TODO: custom test harness, not sure how it works
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(delete 'configure)) ; no "configure" script
|
||||
#:make-flags (list (string-append "DESTDIR=" (assoc-ref %outputs "out")))))
|
||||
(native-inputs `(("perl" ,perl)))
|
||||
(home-page "https://www.floodgap.com/retrotech/xa/")
|
||||
(synopsis "Two-pass portable cross-assembler")
|
||||
(description
|
||||
"xa is a high-speed, two-pass portable cross-assembler.
|
||||
It understands mnemonics and generates code for NMOS 6502s (such
|
||||
as 6502A, 6504, 6507, 6510, 7501, 8500, 8501, 8502 ...),
|
||||
CMOS 6502s (65C02 and Rockwell R65C02) and the 65816.")
|
||||
(license license:gpl2)))
|
||||
|
||||
+15
-115
@@ -1,10 +1,8 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2016 John Darrington <jmd@gnu.org>
|
||||
;;; Copyright © 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2018, 2019 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2019 by Amar Singh <nly@disroot.org>
|
||||
;;; Copyright © 2020 R Veera Kumar <vkor@vkten.in>
|
||||
;;; Copyright © 2020 Guillaume Le Vaillant <glv@posteo.net>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -27,28 +25,22 @@
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix git-download)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages algebra)
|
||||
#:use-module (gnu packages autotools)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages curl)
|
||||
#:use-module (gnu packages fontutils)
|
||||
#:use-module (gnu packages gettext)
|
||||
#:use-module (gnu packages gl)
|
||||
#:use-module (gnu packages glib)
|
||||
#:use-module (gnu packages gnome)
|
||||
#:use-module (gnu packages gtk)
|
||||
#:use-module (gnu packages image)
|
||||
#:use-module (gnu packages lua)
|
||||
#:use-module (gnu packages maths)
|
||||
#:use-module (gnu packages netpbm)
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages pretty-print)
|
||||
#:use-module (gnu packages qt)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages gettext)
|
||||
#:use-module (gnu packages version-control)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages xiph)
|
||||
#:use-module (gnu packages xorg)
|
||||
#:use-module (gnu packages pretty-print)
|
||||
#:use-module (gnu packages algebra)
|
||||
#:use-module (gnu packages lua)
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages gl)
|
||||
#:use-module (gnu packages qt)
|
||||
#:use-module (gnu packages gtk)
|
||||
#:use-module (gnu packages gnome)
|
||||
#:use-module (gnu packages maths)
|
||||
#:use-module (guix build-system cmake)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (srfi srfi-1))
|
||||
@@ -157,7 +149,7 @@ programs for the manipulation and analysis of astronomical data.")
|
||||
(define-public stellarium
|
||||
(package
|
||||
(name "stellarium")
|
||||
(version "0.19.3")
|
||||
(version "0.19.2")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@@ -165,7 +157,7 @@ programs for the manipulation and analysis of astronomical data.")
|
||||
"/releases/download/v" version
|
||||
"/stellarium-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32 "0p92rgclag0nkic9gk3p9vclb8xx9hv4zlgyij6cyh43s7c1avhp"))))
|
||||
(base32 "10b05slj5fjakrjb20m68xql68plb64mwn0165dy2fry8z2hbl74"))))
|
||||
(build-system cmake-build-system)
|
||||
(inputs
|
||||
`(("qtbase" ,qtbase)
|
||||
@@ -297,95 +289,3 @@ Mechanics, Astrometry and Astrodynamics library.")
|
||||
(license (list license:lgpl2.0+
|
||||
license:gpl2+)))) ; examples/transforms.c & lntest/*.c
|
||||
|
||||
(define-public xplanet
|
||||
(package
|
||||
(name "xplanet")
|
||||
(version "1.3.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri
|
||||
(string-append
|
||||
"mirror://sourceforge/xplanet/xplanet/"
|
||||
version "/xplanet-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32 "1rzc1alph03j67lrr66499zl0wqndiipmj99nqgvh9xzm1qdb023"))
|
||||
(patches
|
||||
(search-patches
|
||||
"xplanet-1.3.1-cxx11-eof.patch"
|
||||
"xplanet-1.3.1-libdisplay_DisplayOutput.cpp.patch"
|
||||
"xplanet-1.3.1-libimage_gif.c.patch"
|
||||
"xplanet-1.3.1-xpUtil-Add2017LeapSecond.cpp.patch"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
(inputs
|
||||
`(("libx11" ,libx11)
|
||||
("libxscrnsaver" ,libxscrnsaver)
|
||||
("libice" ,libice)
|
||||
("freetype" ,freetype)
|
||||
("pango" ,pango)
|
||||
("giflib" ,giflib)
|
||||
("libjpeg", libjpeg)
|
||||
("libpng" ,libpng)
|
||||
("libtiff" ,libtiff)
|
||||
("netpbm" ,netpbm)
|
||||
("zlib" ,zlib)))
|
||||
(arguments
|
||||
`(#:configure-flags
|
||||
(let ((netpbm (assoc-ref %build-inputs "netpbm")))
|
||||
(append (list
|
||||
;; Give correct path for pnm.h header to configure script
|
||||
(string-append "CPPFLAGS=-I" netpbm "/include/netpbm")
|
||||
;; no nasa jpl cspice support
|
||||
"--without-cspice" )))))
|
||||
(home-page "http://xplanet.sourceforge.net/")
|
||||
(synopsis "Planetary body renderer")
|
||||
(description
|
||||
"Xplanet renders an image of a planet into an X window or file.
|
||||
All of the major planets and most satellites can be drawn and different map
|
||||
projections are also supported, including azimuthal, hemisphere, Lambert,
|
||||
Mercator, Mollweide, Peters, polyconic, orthographic and rectangular.")
|
||||
(license license:gpl2+)))
|
||||
|
||||
(define-public gpredict
|
||||
(package
|
||||
(name "gpredict")
|
||||
(version "2.2.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://github.com/csete/gpredict/releases"
|
||||
"/download/v" version
|
||||
"/gpredict-" version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32 "0hwf97kng1zy8rxyglw04x89p0bg07zq30hgghm20yxiw2xc8ng7"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("intltool" ,intltool)
|
||||
("gettext" ,gettext-minimal)
|
||||
("pkg-config" ,pkg-config)))
|
||||
(inputs
|
||||
`(("curl" ,curl)
|
||||
("glib" ,glib)
|
||||
("goocanvas" ,goocanvas)
|
||||
("gtk+" ,gtk+)))
|
||||
(arguments
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'fix-tests
|
||||
(lambda _
|
||||
;; Remove reference to non-existent file.
|
||||
(substitute* "po/POTFILES.in"
|
||||
(("src/gtk-sat-tree\\.c")
|
||||
""))
|
||||
#t)))))
|
||||
(synopsis "Satellite tracking and orbit prediction application")
|
||||
(description
|
||||
"Gpredict is a real-time satellite tracking and orbit prediction
|
||||
application. It can track a large number of satellites and display their
|
||||
position and other data in lists, tables, maps, and polar plots (radar view).
|
||||
Gpredict can also predict the time of future passes for a satellite, and
|
||||
provide you with detailed information about each pass.")
|
||||
(home-page "http://gpredict.oz9aec.net/index.php")
|
||||
(license license:gpl2+)))
|
||||
|
||||
+162
-373
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2015, 2016, 2017, 2018, 2019 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>
|
||||
@@ -9,9 +9,9 @@
|
||||
;;; Copyright © 2016 ng0 <ng0@n0.is>
|
||||
;;; Copyright © 2016 Lukas Gradl <lgradl@openmailbox.org>
|
||||
;;; Copyright © 2016, 2017, 2018, 2019, 2020 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2018, 2020 Oleg Pykhalov <go.wigust@gmail.com>
|
||||
;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
|
||||
;;; Copyright © 2018 okapi <okapi@firemail.cc>
|
||||
;;; Copyright © 2018, 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
;;; Copyright © 2018 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>
|
||||
@@ -23,12 +23,11 @@
|
||||
;;; Copyright © 2019 Rutger Helling <rhelling@mykolab.com>
|
||||
;;; Copyright © 2019 Arun Isaac <arunisaac@systemreboot.net>
|
||||
;;; Copyright © 2019 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;; Copyright © 2019, 2020 Alexandros Theodotou <alex@zrythm.org>
|
||||
;;; Copyright © 2019 Alexandros Theodotou <alex@zrythm.org>
|
||||
;;; Copyright © 2019 Christopher Lemmer Webber <cwebber@dustycloud.org>
|
||||
;;; Copyright © 2019 Jan Wielkiewicz <tona_kosmicznego_smiecia@interia.pl>
|
||||
;;; Copyright © 2019 Hartmt Goebel <h.goebel@crazy-compilers.com>
|
||||
;;; Copyright © 2019 Nicolas Goaziou <mail@nicolasgoaziou.fr>
|
||||
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -46,20 +45,30 @@
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages audio)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix git-download)
|
||||
#:use-module (guix utils)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system waf)
|
||||
#:use-module (guix build-system trivial)
|
||||
#:use-module (guix build-system cmake)
|
||||
#:use-module (guix build-system python)
|
||||
#:use-module (guix build-system glib-or-gtk)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages algebra)
|
||||
#:use-module (gnu packages autotools)
|
||||
#:use-module (gnu packages avahi)
|
||||
#:use-module (gnu packages boost)
|
||||
#:use-module (gnu packages backup)
|
||||
#:use-module (gnu packages base)
|
||||
#:use-module (gnu packages bison)
|
||||
#:use-module (gnu packages boost)
|
||||
#:use-module (gnu packages check)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages curl)
|
||||
#:use-module (gnu packages dbm)
|
||||
#:use-module (gnu packages documentation)
|
||||
#:use-module (gnu packages elf)
|
||||
#:use-module (gnu packages emacs)
|
||||
#:use-module (gnu packages file)
|
||||
#:use-module (gnu packages flex)
|
||||
@@ -68,36 +77,30 @@
|
||||
#:use-module (gnu packages gcc)
|
||||
#:use-module (gnu packages gettext)
|
||||
#:use-module (gnu packages glib)
|
||||
#:use-module (gnu packages gtk)
|
||||
#:use-module (gnu packages gnome)
|
||||
#:use-module (gnu packages gnunet) ; libmicrohttpd
|
||||
#:use-module (gnu packages gperf)
|
||||
#:use-module (gnu packages gtk)
|
||||
#:use-module (gnu packages guile)
|
||||
#:use-module (gnu packages icu4c)
|
||||
#:use-module (gnu packages image)
|
||||
#:use-module (gnu packages libbsd)
|
||||
#:use-module (gnu packages libusb)
|
||||
#:use-module (gnu packages linux)
|
||||
#:use-module (gnu packages llvm)
|
||||
#:use-module (gnu packages man)
|
||||
#:use-module (gnu packages maths)
|
||||
#:use-module (gnu packages mp3) ;taglib
|
||||
#:use-module (gnu packages multiprecision)
|
||||
#:use-module (gnu packages music)
|
||||
#:use-module (gnu packages ncurses)
|
||||
#:use-module (gnu packages onc-rpc)
|
||||
#:use-module (gnu packages qt)
|
||||
#:use-module (gnu packages libbsd)
|
||||
#:use-module (gnu packages linux)
|
||||
#:use-module (gnu packages libusb)
|
||||
#:use-module (gnu packages llvm)
|
||||
#:use-module (gnu packages mp3) ;taglib
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages pulseaudio) ;libsndfile, libsamplerate
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages python-xyz)
|
||||
#:use-module (gnu packages qt)
|
||||
#:use-module (gnu packages rdf)
|
||||
#:use-module (gnu packages readline)
|
||||
#:use-module (gnu packages sdl)
|
||||
#:use-module (gnu packages serialization)
|
||||
#:use-module (gnu packages telephony)
|
||||
#:use-module (gnu packages linphone)
|
||||
#:use-module (gnu packages tls)
|
||||
#:use-module (gnu packages video)
|
||||
#:use-module (gnu packages vim) ;xxd
|
||||
@@ -106,60 +109,12 @@
|
||||
#:use-module (gnu packages xiph)
|
||||
#:use-module (gnu packages xml)
|
||||
#:use-module (gnu packages xorg)
|
||||
#:use-module (guix build-system cmake)
|
||||
#:use-module (guix build-system glib-or-gtk)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system meson)
|
||||
#:use-module (guix build-system python)
|
||||
#:use-module (guix build-system trivial)
|
||||
#:use-module (guix build-system waf)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix git-download)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (gnu packages maths)
|
||||
#:use-module (gnu packages multiprecision)
|
||||
#:use-module (gnu packages music)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-26))
|
||||
|
||||
(define-public vo-amrwbenc
|
||||
(package
|
||||
(name "vo-amrwbenc")
|
||||
(version "0.1.3")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri
|
||||
(string-append "https://sourceforge.net/projects/opencore-amr/files/"
|
||||
name "/" name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32 "0klx3nkidc6b8aawchpk19n3xlrzgnc046w4gd0rdqphw28v6ljn"))))
|
||||
(build-system gnu-build-system)
|
||||
(synopsis "Adaptive Multi Rate Codec")
|
||||
(description "VO-AMR is a library of VisualOn implementation of
|
||||
Adaptive Multi Rate Narrowband and Wideband (AMR-NB and AMR-WB) speech codec.")
|
||||
(home-page "https://sourceforge.net/projects/opencore-amr/")
|
||||
(license license:asl2.0)))
|
||||
|
||||
(define-public opencore-amr
|
||||
(package
|
||||
(name "opencore-amr")
|
||||
(version "0.1.5")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri
|
||||
(string-append "https://sourceforge.net/projects/opencore-amr/files/"
|
||||
name "/" name "-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32 "0hfk9khz3by0119h3jdwgdfd7jgkdbzxnmh1wssvylgnsnwnq01c"))))
|
||||
(build-system gnu-build-system)
|
||||
(synopsis "Adaptive Multi Rate Codec")
|
||||
(description "OpenCore-AMR is a library of OpenCORE Framework
|
||||
implementation of Adaptive Multi Rate Narrowband and Wideband
|
||||
(AMR-NB and AMR-WB) speech codec.")
|
||||
(home-page "https://sourceforge.net/projects/opencore-amr/")
|
||||
(license license:asl2.0)))
|
||||
|
||||
(define-public alsa-modular-synth
|
||||
(package
|
||||
(name "alsa-modular-synth")
|
||||
@@ -194,10 +149,10 @@ implementation of Adaptive Multi Rate Narrowband and Wideband
|
||||
("jack" ,jack-1)
|
||||
("ladspa" ,ladspa)
|
||||
("liblo" ,liblo)
|
||||
("qtbase" ,qtbase)))
|
||||
("qtbase" ,qtbase)
|
||||
("qttools" ,qttools)))
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)
|
||||
("qttools" ,qttools)
|
||||
("gcc" ,gcc-5)))
|
||||
(home-page "http://alsamodular.sourceforge.net/")
|
||||
(synopsis "Realtime modular synthesizer and effect processor")
|
||||
@@ -366,7 +321,7 @@ namespace ARDOUR { const char* revision = \"" version "\" ; }"))
|
||||
("itstool" ,itstool)
|
||||
("perl" ,perl)
|
||||
("pkg-config" ,pkg-config)))
|
||||
(home-page "https://ardour.org")
|
||||
(home-page "http://ardour.org")
|
||||
(synopsis "Digital audio workstation")
|
||||
(description
|
||||
"Ardour is a multi-channel digital audio workstation, allowing users to
|
||||
@@ -377,7 +332,7 @@ engineers, musicians, soundtrack editors and composers.")
|
||||
(define-public audacity
|
||||
(package
|
||||
(name "audacity")
|
||||
(version "2.3.3")
|
||||
(version "2.3.2")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
@@ -387,7 +342,7 @@ engineers, musicians, soundtrack editors and composers.")
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0707fsnrl4vjalsi21w4blwgz024qhd0w8rdd5j5vpxf5lyk2rbk"))
|
||||
"08w96124vv8k4myd4vifq73ningq6404x889wvg2sk016kc4dfv1"))
|
||||
(patches (search-patches "audacity-build-with-system-portaudio.patch"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
@@ -396,7 +351,7 @@ engineers, musicians, soundtrack editors and composers.")
|
||||
(for-each
|
||||
(lambda (dir)
|
||||
(delete-file-recursively (string-append "lib-src/" dir)))
|
||||
'("expat" "ffmpeg" "lame" "libflac" "libid3tag" "libmad" "libogg"
|
||||
'("expat" "ffmpeg" "libflac" "libid3tag" "libmad" "libogg"
|
||||
"libsndfile" "libsoxr" "libvamp" "libvorbis" "lv2"
|
||||
"portaudio-v19" "portmidi" "soundtouch" "twolame"
|
||||
;; FIXME: these libraries have not been packaged yet:
|
||||
@@ -496,8 +451,7 @@ engineers, musicians, soundtrack editors and composers.")
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(substitute* '("src/NoteTrack.cpp"
|
||||
"src/AudioIO.cpp"
|
||||
"src/AudioIO.h"
|
||||
"src/AudioIOBase.cpp")
|
||||
"src/AudioIO.h")
|
||||
(("../lib-src/portmidi/pm_common/portmidi.h") "portmidi.h")
|
||||
(("../lib-src/portmidi/porttime/porttime.h") "porttime.h"))
|
||||
(substitute* "src/prefs/MidiIOPrefs.cpp"
|
||||
@@ -768,36 +722,6 @@ performances. The plugins include a cellular automaton synthesizer, an
|
||||
envelope follower, distortion effects, tape effects and more.")
|
||||
(license license:gpl2+)))
|
||||
|
||||
(define-public swh-plugins
|
||||
(package
|
||||
(name "swh-plugins")
|
||||
(version "0.4.17")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/swh/ladspa.git")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1c98z2xxz9pgcb4dg99gz8qrylh5cnag0j18a52d88ifsy24isvq"))))
|
||||
(native-inputs
|
||||
`(("autoconf" ,autoconf)
|
||||
("automake" ,automake)
|
||||
("gettext" ,gettext-minimal) ;for autopoint
|
||||
("libtool" ,libtool)
|
||||
("perl" ,perl)
|
||||
("pkg-config" ,pkg-config)
|
||||
("which" ,which)))
|
||||
(inputs
|
||||
`(("fftwf" ,fftwf)
|
||||
("perl-xml-parser" ,perl-xml-parser)))
|
||||
(build-system gnu-build-system)
|
||||
(home-page "http://plugin.org.uk")
|
||||
(synopsis "The SWH Plugins package for the LADSPA plugin system")
|
||||
(description "This package provides Steve Harris's LADSPA plugins.")
|
||||
(license license:gpl2+)))
|
||||
|
||||
(define-public swh-plugins-lv2
|
||||
(package
|
||||
(name "swh-plugins-lv2")
|
||||
@@ -1237,7 +1161,7 @@ follower.")
|
||||
(define-public fluidsynth
|
||||
(package
|
||||
(name "fluidsynth")
|
||||
(version "2.1.1")
|
||||
(version "2.1.0")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
@@ -1246,7 +1170,7 @@ follower.")
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"09jq04hrasidf6b5gkk4aba13fq55z3bmn7bq35rdaikz26xiij4"))))
|
||||
"0jhla1641rx77va4b6n4shn8srj87rpwvp170byj1bg8z8g89ji1"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
'(#:tests? #f ; no check target
|
||||
@@ -1349,7 +1273,7 @@ PS, and DAB+.")
|
||||
#t)))))
|
||||
(native-inputs
|
||||
`(("unzip" ,unzip)))
|
||||
(home-page "https://faust.grame.fr/")
|
||||
(home-page "http://faust.grame.fr/")
|
||||
(synopsis "Signal processing language")
|
||||
(description
|
||||
"Faust is a programming language for realtime audio signal processing.")
|
||||
@@ -1485,7 +1409,7 @@ patches that can be used with softsynths such as Timidity and WildMidi.")
|
||||
(list (search-path-specification
|
||||
(variable "LV2_PATH")
|
||||
(files '("lib/lv2")))))
|
||||
(home-page "https://guitarix.org/")
|
||||
(home-page "http://guitarix.org/")
|
||||
(synopsis "Virtual guitar amplifier")
|
||||
(description "Guitarix is a virtual guitar amplifier running JACK.
|
||||
Guitarix takes the signal from your guitar as a mono-signal from your sound
|
||||
@@ -1557,23 +1481,25 @@ well suited to all musical instruments and vocals.")
|
||||
(define-public ir
|
||||
(package
|
||||
(name "ir")
|
||||
(version "1.3.4")
|
||||
(version "1.3.2")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/tomszilagyi/ir.lv2")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(method url-fetch)
|
||||
;; The original home-page is gone. Download the tarball from an
|
||||
;; archive mirror instead.
|
||||
(uri (list (string-append
|
||||
"https://web.archive.org/web/20150803095032/"
|
||||
"http://factorial.hu/system/files/ir.lv2-"
|
||||
version ".tar.gz")
|
||||
(string-append
|
||||
"https://mirrors.kernel.org/gentoo/distfiles/ir.lv2-"
|
||||
version ".tar.gz")))
|
||||
(sha256
|
||||
(base32
|
||||
"0svmjhg4r6wy5ci5rwz43ybll7yxjv7nnj7nyqscbzhr3gi5aib0"))))
|
||||
"1jh2z01l9m4ar7yz0n911df07dygc7n4cl59p7qdjbh0nvkm747g"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f ; no tests
|
||||
#:make-flags
|
||||
(list (string-append "PREFIX=" (assoc-ref %outputs "out"))
|
||||
(string-append "INSTDIR="
|
||||
(assoc-ref %outputs "out") "/lib/lv2"))
|
||||
#:make-flags (list (string-append "PREFIX=" (assoc-ref %outputs "out")))
|
||||
#:phases (modify-phases %standard-phases
|
||||
(delete 'configure)))) ; no configure script
|
||||
(inputs
|
||||
@@ -1589,7 +1515,9 @@ well suited to all musical instruments and vocals.")
|
||||
(list (search-path-specification
|
||||
(variable "LV2_PATH")
|
||||
(files '("lib/lv2")))))
|
||||
(home-page "https://tomszilagyi.github.io/plugins/ir.lv2")
|
||||
;; Link to an archived copy of the home-page since the original is gone.
|
||||
(home-page (string-append "https://web.archive.org/web/20150803095032/"
|
||||
"http://factorial.hu/plugins/lv2/ir"))
|
||||
(synopsis "LV2 convolution reverb")
|
||||
(description
|
||||
"IR is a low-latency, real-time, high performance signal convolver
|
||||
@@ -1856,14 +1784,14 @@ essential distortions.")
|
||||
(define-public liblo
|
||||
(package
|
||||
(name "liblo")
|
||||
(version "0.31")
|
||||
(version "0.30")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://sourceforge/liblo/liblo/" version
|
||||
"/liblo-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0l67rkdhfa8cffa0nynql3lh2xlbn1454h6qxhjddp1029p48krb"))))
|
||||
"06wdjzxjdshr6hyl4c94yvg3jixiylap8yjs8brdfpm297gck9rh"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(;; liblo test FAILED
|
||||
@@ -2032,7 +1960,7 @@ software.")
|
||||
(list (search-path-specification
|
||||
(variable "LV2_PATH")
|
||||
(files '("lib/lv2")))))
|
||||
(home-page "https://elephly.net/lv2/mdapiano.html")
|
||||
(home-page "http://elephly.net/lv2/mdapiano.html")
|
||||
(synopsis "LV2 port of the mda Piano plugin")
|
||||
(description "An LV2 port of the mda Piano VSTi.")
|
||||
(license license:gpl3+)))
|
||||
@@ -2046,7 +1974,7 @@ software.")
|
||||
(string-append "PREFIX=" (assoc-ref %outputs "out")))
|
||||
#:tests? #f ; no check target
|
||||
#:phases (modify-phases %standard-phases (delete 'configure))))
|
||||
(home-page "https://elephly.net/lv2/mdaepiano.html")
|
||||
(home-page "http://elephly.net/lv2/mdaepiano.html")
|
||||
(synopsis "LV2 port of the mda EPiano plugin")
|
||||
(description "An LV2 port of the mda EPiano VSTi.")))
|
||||
|
||||
@@ -2088,7 +2016,7 @@ lv2-c++-tools.")
|
||||
(define-public openal
|
||||
(package
|
||||
(name "openal")
|
||||
(version "1.20.1")
|
||||
(version "1.20.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
@@ -2096,7 +2024,7 @@ lv2-c++-tools.")
|
||||
version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"0vax0b1lgd4212bpxa1rciz52d4mv3dkfvcbbhzw4cjp698v1kmn"))))
|
||||
"03p6s5gap0lvig2fs0a8nib5rxsc24dbqjsydpwvlm5l49wlk2f0"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f ; no check target
|
||||
@@ -2155,7 +2083,7 @@ buffers, and audio capture.")
|
||||
`(("openal" ,openal)))
|
||||
(synopsis "Free implementation of OpenAL's ALUT standard")
|
||||
(description "freealut is the OpenAL Utility Toolkit.")
|
||||
(home-page "https://kcat.strangesoft.net/openal.html")
|
||||
(home-page "http://kcat.strangesoft.net/openal.html")
|
||||
(license license:lgpl2.0)))
|
||||
|
||||
(define-public patchage
|
||||
@@ -2290,22 +2218,24 @@ background file post-processing.")
|
||||
(define-public supercollider
|
||||
(package
|
||||
(name "supercollider")
|
||||
(version "3.10.4")
|
||||
(version "3.10.3")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://github.com/supercollider/supercollider"
|
||||
"/releases/download/Version-" version
|
||||
"/SuperCollider-" version "-Source-linux.tar.bz2"))
|
||||
(patches
|
||||
(search-patches "supercollider-boost-1.70-build-fix.patch"))
|
||||
(sha256
|
||||
(base32
|
||||
"0x11g3pfw11m6v18qfpfl5w99dbmf73g4z7wvwhrj1a4qv2dn084"))))
|
||||
"0srm6wbazidkrd4ckjy4ypyhkdwcnx2i7k9msjyngalh0mrc9zz1"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags '("-DSYSTEM_BOOST=on" "-DSYSTEM_YAMLCPP=on"
|
||||
"-DSC_QT=off"
|
||||
"-DSC_EL=off") ;scel is packaged individually as
|
||||
;emacs-scel
|
||||
;emacs-scel.
|
||||
#:modules ((guix build utils)
|
||||
(guix build cmake-build-system)
|
||||
(ice-9 ftw))
|
||||
@@ -2314,7 +2244,8 @@ background file post-processing.")
|
||||
(add-after 'unpack 'rm-bundled-libs
|
||||
(lambda _
|
||||
;; The build system doesn't allow us to unbundle the following
|
||||
;; libraries. hidapi is also heavily patched.
|
||||
;; libraries. hidapi is also heavily patched and upstream not
|
||||
;; actively maintained.
|
||||
(let ((keep-dirs '("nova-simd" "nova-tt" "hidapi" "TLSF-2.4.6"
|
||||
"oscpack_1_1_0" "." "..")))
|
||||
(with-directory-excursion "./external_libraries"
|
||||
@@ -2613,7 +2544,6 @@ Suil currently supports every combination of Gtk, Qt, and X11.")
|
||||
("flac" ,flac)
|
||||
("jack" ,jack-1)
|
||||
("libogg" ,libogg)
|
||||
("libvorbis" ,libvorbis)
|
||||
("speex" ,speex)
|
||||
("ncurses" ,ncurses)
|
||||
("freepats" ,freepats)))
|
||||
@@ -2659,7 +2589,7 @@ disks as various audio file formats.")
|
||||
`(("libsndfile" ,libsndfile)))
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
(home-page "https://vamp-plugins.org")
|
||||
(home-page "http://vamp-plugins.org")
|
||||
(synopsis "Modular and extensible audio processing system")
|
||||
(description
|
||||
"Vamp is an audio processing plugin system for plugins that extract
|
||||
@@ -2713,17 +2643,18 @@ stretching and pitch scaling of audio. This package contains the library.")
|
||||
(define-public wavpack
|
||||
(package
|
||||
(name "wavpack")
|
||||
(version "5.2.0")
|
||||
(version "5.1.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "http://www.wavpack.com/"
|
||||
"wavpack-" version ".tar.xz"))
|
||||
name "-" version ".tar.bz2"))
|
||||
(patches (search-patches "wavpack-CVE-2018-6767.patch"
|
||||
"wavpack-CVE-2018-7253.patch"
|
||||
"wavpack-CVE-2018-7254.patch"))
|
||||
(sha256
|
||||
(base32
|
||||
"1qvpvfx30kvrkw7y1g6r8xj109wszg1z0qmkfm17wf3flb7v3rbp"))))
|
||||
"0i19c6krc0p9krwrqy9s5xahaafigqzxcn31piidmlaqadyn4f8r"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:configure-flags '("--disable-static")))
|
||||
(home-page "http://www.wavpack.com/")
|
||||
(synopsis "Hybrid lossless audio codec")
|
||||
(description
|
||||
@@ -3035,7 +2966,7 @@ synthesizer written in C++.")
|
||||
(string-append "--prefix=" (assoc-ref outputs "out"))))))
|
||||
;; No 'check' target.
|
||||
#:tests? #f))
|
||||
(home-page "https://themaister.net/rsound.html")
|
||||
(home-page "http://themaister.net/rsound.html")
|
||||
(synopsis "Networked audio system")
|
||||
(description
|
||||
"RSound allows you to send audio from an application and transfer it
|
||||
@@ -3313,14 +3244,14 @@ with support for HD extensions.")
|
||||
(define-public bs1770gain
|
||||
(package
|
||||
(name "bs1770gain")
|
||||
(version "0.6.7")
|
||||
(version "0.6.5")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://sourceforge/bs1770gain/bs1770gain/"
|
||||
version "/bs1770gain-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32 "13hsbqj1dkpz1gbclnjxv50kr7b4gcjai6c1l38g01433h217qjc"))
|
||||
(base32 "15nvlh9bg0a52cpg2mii17mlzmxszwivjjalbb4np1v5nj8l5fk6"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
'(begin
|
||||
@@ -3383,7 +3314,7 @@ code, used in @code{libtoxcore}.")
|
||||
(define-public gsm
|
||||
(package
|
||||
(name "gsm")
|
||||
(version "1.0.19")
|
||||
(version "1.0.18")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@@ -3392,24 +3323,18 @@ code, used in @code{libtoxcore}.")
|
||||
"-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1xkha9ss5g5qnfaybi8il0mcvp8knwg9plgh8404vh58d0pna0s9"))))
|
||||
"041amvpz8cvxykl3pwqldrzxligmmzcg8ncdnxbg32rlqf3q1xh4"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:test-target "tst"
|
||||
#:make-flags (list (string-append "INSTALL_ROOT=" %output))
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'add-fpic-ccflag
|
||||
(lambda _
|
||||
;; The -fPIC compiler option is needed when building
|
||||
;; mediastreamer.
|
||||
(substitute* "Makefile"
|
||||
(("^CCFLAGS.*" all)
|
||||
(string-append all "CCFLAGS += -fPIC\n")))
|
||||
#t))
|
||||
(add-before 'install 'pre-install
|
||||
(lambda _
|
||||
(let ((out (assoc-ref %outputs "out")))
|
||||
(substitute* "Makefile"
|
||||
(("INSTALL_ROOT\t=")
|
||||
(string-append "INSTALL_ROOT\t=\t" out)))
|
||||
(mkdir-p (string-append out "/inc"))
|
||||
(mkdir-p (string-append out "/man"))
|
||||
(mkdir-p (string-append out "/man/man1"))
|
||||
@@ -3448,7 +3373,7 @@ code, used in @code{libtoxcore}.")
|
||||
`(#:tests? #f)) ; tests require access to ALSA devices.
|
||||
(inputs
|
||||
`(("alsa-lib" ,alsa-lib)))
|
||||
(home-page "https://larsimmisch.github.io/pyalsaaudio/")
|
||||
(home-page "http://larsimmisch.github.io/pyalsaaudio/")
|
||||
(synopsis "ALSA wrappers for Python")
|
||||
(description
|
||||
"This package contains wrappers for accessing the ALSA API from Python.
|
||||
@@ -3573,7 +3498,7 @@ the Snd sources), Ruby, or Forth.")
|
||||
(define-public noise-repellent
|
||||
(package
|
||||
(name "noise-repellent")
|
||||
(version "0.1.5")
|
||||
(version "0.1.4")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
@@ -3582,12 +3507,16 @@ the Snd sources), Ruby, or Forth.")
|
||||
(file-name (string-append name "-" version "-checkout"))
|
||||
(sha256
|
||||
(base32
|
||||
"0hb89x9i2knzan46q4nwscf5zmnb2nwf4w13xl2c0y1mx1ls1mwl"))))
|
||||
(build-system meson-build-system)
|
||||
"0rd3dlmk3vivjmcr6x2x860y0j1d49c2j95j6ny50v184mwvn11j"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags
|
||||
(list (string-append "--prefix=" (assoc-ref %outputs "out")
|
||||
"/lib/lv2"))))
|
||||
`(#:make-flags
|
||||
(list "CC=gcc"
|
||||
(string-append "PREFIX=" (assoc-ref %outputs "out")))
|
||||
#:tests? #f ; there are none
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(delete 'configure))))
|
||||
(inputs
|
||||
`(("lv2" ,lv2)
|
||||
("fftwf" ,fftwf)))
|
||||
@@ -3617,41 +3546,51 @@ the following features:
|
||||
(define-public cli-visualizer
|
||||
(package
|
||||
(name "cli-visualizer")
|
||||
(version "1.8")
|
||||
(version "1.6")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/dpayne/cli-visualizer.git")
|
||||
(commit (string-append "v" version))))
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "003mbbwsz43mg3d7llphpypqa9g7rs1p1cdbqi1mbc2bfrc1gcq2"))))
|
||||
(build-system cmake-build-system)
|
||||
(base32
|
||||
"0mirp8bk398di5xyq95iprmdyvplfghxqmrfj7jdnpy554vx7ppc"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
;; TODO: Try using the latest googletest for versions > 1.8.
|
||||
`( ;; ("googletest" ,googletest-1.8)
|
||||
("which" ,which)))
|
||||
`(("which" ,which)))
|
||||
(inputs
|
||||
`(("fftw" ,fftw)
|
||||
("googletest" ,googletest)
|
||||
("ncurses" ,ncurses)
|
||||
("pulseaudio" ,pulseaudio)))
|
||||
(arguments
|
||||
'(#:tests? #f
|
||||
;; XXX Enable tests after patching them to use the system googletest.
|
||||
;; #:configure-flags (list "-DVIS_WITH_TESTS=true")
|
||||
'(#:test-target "test"
|
||||
#:make-flags
|
||||
(list (string-append "PREFIX=" %output "/bin/") "ENABLE_PULSE=1")
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'install 'install-examples
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(with-directory-excursion "../source/examples"
|
||||
(delete-file "mac_osx_config")
|
||||
(for-each (lambda (file)
|
||||
(install-file file
|
||||
(string-append
|
||||
(assoc-ref outputs "out")
|
||||
"/share/doc")))
|
||||
(find-files ".")))
|
||||
(add-after 'unpack 'remove-sudo
|
||||
(lambda _
|
||||
(substitute* "install.sh" (("sudo") ""))
|
||||
#t))
|
||||
(add-before 'check 'set-check-environment
|
||||
(lambda _
|
||||
(setenv "CXX" "g++")
|
||||
(setenv "CC" "gcc")
|
||||
#t))
|
||||
(add-before 'install 'make-prefix
|
||||
(lambda _
|
||||
(mkdir-p (string-append (assoc-ref %outputs "out") "/bin"))
|
||||
#t))
|
||||
(add-after 'install 'data
|
||||
(lambda _
|
||||
(for-each (lambda (file)
|
||||
(install-file file
|
||||
(string-append (assoc-ref %outputs "out")
|
||||
"/share/doc")))
|
||||
(find-files "examples"))
|
||||
#t)))))
|
||||
(home-page "https://github.com/dpayne/cli-visualizer/")
|
||||
(synopsis "Command-line audio visualizer")
|
||||
@@ -3747,40 +3686,43 @@ using ALSA, MPD, PulseAudio, or a FIFO buffer as its input.")
|
||||
(license license:expat))))
|
||||
|
||||
(define-public libfdk
|
||||
(package
|
||||
(name "libfdk")
|
||||
(version "2.0.1")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/mstorsjo/fdk-aac")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1fkrnzs78fmj11n9z3l0w53i2fl16jcfiyavwidck9bzmkmsf486"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("autoconf" ,autoconf)
|
||||
("automake" ,automake)
|
||||
("libtool" ,libtool)))
|
||||
(home-page "https://github.com/mstorsjo/fdk-aac")
|
||||
(synopsis "Fraunhofer FDK AAC library")
|
||||
(description "FDK is a library for encoding and decoding Advanced Audio
|
||||
(let ((commit "2326faaf8f2cdf2c3a9108ccdaf1d7551aec543e")
|
||||
(revision "0"))
|
||||
(package
|
||||
(name "libfdk")
|
||||
;; The latest upstream revision, with many bug fixes.
|
||||
(version (git-version "0.1.6" revision commit))
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/mstorsjo/fdk-aac")
|
||||
(commit commit)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0yy6ndd9d61bwl283vl1r5kva2a4acc0f4r9g0sza156f2abr9ws"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("autoconf" ,autoconf)
|
||||
("automake" ,automake)
|
||||
("libtool" ,libtool)))
|
||||
(home-page "https://github.com/mstorsjo/fdk-aac")
|
||||
(synopsis "Fraunhofer FDK AAC library")
|
||||
(description "FDK is a library for encoding and decoding Advanced Audio
|
||||
Coding (AAC) format audio, developed by Fraunhofer IIS, and included as part of
|
||||
Android. It supports several Audio Object Types including MPEG-2 and MPEG-4 AAC
|
||||
LC, HE-AAC (AAC LC + SBR), HE-AACv2 (LC + SBR + PS) as well AAC-LD (low delay)
|
||||
and AAC-ELD (enhanced low delay) for real-time communication. The encoding
|
||||
library supports sample rates up to 96 kHz and up to eight channels (7.1
|
||||
surround).")
|
||||
(license (license:fsf-free "https://github.com/mstorsjo/fdk-aac/blob/master/NOTICE"
|
||||
"https://www.gnu.org/licenses/license-list.html#fdk"))))
|
||||
surround).")
|
||||
(license (license:fsf-free "https://github.com/mstorsjo/fdk-aac/blob/master/NOTICE"
|
||||
"https://www.gnu.org/licenses/license-list.html#fdk")))))
|
||||
|
||||
(define-public libopenshot-audio
|
||||
(package
|
||||
(name "libopenshot-audio")
|
||||
(version "0.2.0")
|
||||
(version "0.1.8")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
@@ -3789,7 +3731,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
|
||||
"13if0m5mvlqly8gmbhschzb9papkgp3yqivklhb949dhy16m8zgf"))))
|
||||
"1fvp6nmf30xzkmcznakh8dv5vn9d7nq051pqcqv638hsfppkmcrl"))))
|
||||
(build-system cmake-build-system)
|
||||
(inputs
|
||||
`(("alsa-lib" ,alsa-lib)
|
||||
@@ -3928,7 +3870,7 @@ stream to one or more IceCast and/or ShoutCast servers.")
|
||||
(define-public redkite
|
||||
(package
|
||||
(name "redkite")
|
||||
(version "0.8.0")
|
||||
(version "0.6.2")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
@@ -3938,7 +3880,7 @@ stream to one or more IceCast and/or ShoutCast servers.")
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1747w1kg8y9jbl11xi018d85dm38xk7843pz26sh0k5fdv87a10q"))))
|
||||
"1i874izajbdhlfacwwj84qrsxf7g4y6nblzxalrkzaap9sa7d1r6"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f)) ;no tests included
|
||||
@@ -3977,22 +3919,11 @@ as is the case with audio plugins.")
|
||||
(list (string-append "PREFIX=" (assoc-ref %outputs "out")))
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(delete 'configure) ; no configure script
|
||||
(add-before 'build 'set-CC-variable-and-show-features
|
||||
(lambda _
|
||||
(setenv "CC" "gcc")
|
||||
(invoke "make" "features")))
|
||||
(add-after 'install 'make-carla-executable
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
(chmod (string-append out "/share/carla/carla") #o555)
|
||||
#t)))
|
||||
(add-after 'install 'wrap-executables
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
(wrap-script (string-append out "/bin/carla")
|
||||
`("PYTHONPATH" ":" prefix (,(getenv "PYTHONPATH"))))
|
||||
#t))))))
|
||||
(delete 'configure))))
|
||||
(inputs
|
||||
`(("alsa-lib" ,alsa-lib)
|
||||
("ffmpeg" ,ffmpeg)
|
||||
@@ -4010,10 +3941,7 @@ as is the case with audio plugins.")
|
||||
("python-wrapper" ,python-wrapper)
|
||||
("libx11" ,libx11)
|
||||
("qtbase" ,qtbase)
|
||||
("zlib" ,zlib)
|
||||
|
||||
;; For WRAP-SCRIPT above.
|
||||
("guile" ,guile-2.2)))
|
||||
("zlib" ,zlib)))
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
(home-page "https://kx.studio/Applications:Carla")
|
||||
@@ -4028,17 +3956,17 @@ default and preferred audio driver but also supports native drivers like ALSA.")
|
||||
(define-public ecasound
|
||||
(package
|
||||
(name "ecasound")
|
||||
(version "2.9.3")
|
||||
(version "2.9.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://nosignal.fi/download/ecasound-"
|
||||
(uri (string-append "http://nosignal.fi/download/ecasound-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32 "1m7njfjdb7sqf0lhgc4swihgdr4snkg8v02wcly08wb5ar2fr2s6"))))
|
||||
(base32 "15rcs28fq2wfvfs66p5na7adq88b55qszbhshpizgdbyqzgr2jf1"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs `(("pkg-config" ,pkg-config)))
|
||||
;; It would be nice to add mikmod to inputs if that gets packaged
|
||||
;; eventually.
|
||||
;; would be nice to add mikmod to inputs if that gets packaged
|
||||
;; eventually
|
||||
(inputs `(("alsa-lib" ,alsa-lib)
|
||||
("jack" ,jack-1)
|
||||
("mpg123" ,mpg123)
|
||||
@@ -4052,7 +3980,7 @@ default and preferred audio driver but also supports native drivers like ALSA.")
|
||||
("ncurses" ,ncurses)
|
||||
("ladspa" ,ladspa)
|
||||
("lilv" ,lilv)))
|
||||
(home-page "https://nosignal.fi/ecasound/index.php")
|
||||
(home-page "http://nosignal.fi/ecasound/index.php")
|
||||
(synopsis "Multitrack audio processing")
|
||||
(description "Ecasound is a software package designed for multitrack audio
|
||||
processing. It can be used for simple tasks like audio playback, recording and
|
||||
@@ -4067,142 +3995,3 @@ in the package.")
|
||||
;; (see the file 'COPYING.LGPL'). This allows writing ECI applications
|
||||
;; that are not licensed under GPL.
|
||||
(license (list license:gpl2 license:lgpl2.1))))
|
||||
|
||||
(define-public libaudec
|
||||
(package
|
||||
(name "libaudec")
|
||||
(version "0.2")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://git.zrythm.org/git/libaudec")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0lfydvs92b0hr72z71ci3yi356rjzi162pgms8dphgg18bz8dazv"))))
|
||||
(build-system meson-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags `("-Denable_tests=true -Denable_ffmpeg=true")))
|
||||
(inputs
|
||||
`(("libsamplerate" ,libsamplerate)
|
||||
("libsndfile" ,libsndfile)
|
||||
("ffmpeg" ,ffmpeg)))
|
||||
(native-inputs
|
||||
`(("pkg-config", pkg-config)))
|
||||
(synopsis "Library for reading and resampling audio files")
|
||||
(description "libaudec is a wrapper library over ffmpeg, sndfile and
|
||||
libsamplerate for reading and resampling audio files, based on Robin Gareus'
|
||||
@code{audio_decoder} code.")
|
||||
(home-page "https://git.zrythm.org/cgit/libaudec")
|
||||
(license license:agpl3+)))
|
||||
|
||||
(define-public lv2lint
|
||||
(package
|
||||
(name "lv2lint")
|
||||
(version "0.4.0")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://git.open-music-kontrollers.ch/lv2/lv2lint")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1pspwqpzl2dw1hd9ra9yr53arqbbqjn7d7j0f7p9g3iqa76vblpi"))))
|
||||
(build-system meson-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags
|
||||
`("-Delf-tests=true" ; for checking symbol visibility
|
||||
"-Donline-tests=true"))) ; for checking URI existence
|
||||
(inputs
|
||||
`(("curl", curl)
|
||||
("libelf", libelf)
|
||||
("lilv", lilv)))
|
||||
(native-inputs
|
||||
`(("pkg-config", pkg-config)))
|
||||
(synopsis "LV2 plugin lint tool")
|
||||
(description "lv2lint is an LV2 lint-like tool that checks whether a
|
||||
given plugin and its UI(s) match up with the provided metadata and adhere
|
||||
to well-known best practices.")
|
||||
(home-page "https://open-music-kontrollers.ch/lv2/lv2lint/")
|
||||
(license license:artistic2.0)))
|
||||
|
||||
(define-public lv2toweb
|
||||
(package
|
||||
(name "lv2toweb")
|
||||
(version "0.4")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/x42/lv2toweb")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"007aysqvgkf25za8nkmyd5g9kp1zla460dcpidlj5xg1zc3fcdfi"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f ; no "check" target
|
||||
#:make-flags (list "CC=gcc"
|
||||
(string-append "PREFIX=" (assoc-ref %outputs "out")))
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(delete 'configure))))
|
||||
(inputs
|
||||
`(("jalv", jalv)
|
||||
("lilv", lilv)))
|
||||
(native-inputs
|
||||
`(("help2man", help2man)
|
||||
("pkg-config", pkg-config)))
|
||||
(synopsis "Documentation generator for LV2 plugins")
|
||||
(description
|
||||
"lv2toweb allows the user to create an xhtml page with information
|
||||
about the given LV2 plugin, provided that the plugin and its UI(s) match up
|
||||
with the provided metadata and adhere to well-known best practices.")
|
||||
(home-page "https://github.com/x42/lv2toweb")
|
||||
(license (list license:isc license:gpl2))))
|
||||
|
||||
(define-public ztoolkit
|
||||
(package
|
||||
(name "ztoolkit")
|
||||
(version "0.1.1")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://git.zrythm.org/git/ztoolkit")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"07xl3cmdaf7k9mm58m93cn8i1jvgimmiifdw1w7v2jl88nx60pm1"))))
|
||||
(build-system meson-build-system)
|
||||
(inputs
|
||||
`(("cairo" ,cairo)
|
||||
("libx11" ,libx11)))
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
(synopsis "GUI toolkit for LV2 plugins")
|
||||
(description "ZToolkit (Ztk) is a cross-platform GUI toolkit heavily
|
||||
inspired by GTK. It handles events and low level drawing on behalf of
|
||||
the user and provides a high-level API for managing the UI and custom
|
||||
widgets. ZToolkit is written in C and was created to be used for building
|
||||
audio plugin UIs, where the dependencies often need to be kept to a
|
||||
minimum.")
|
||||
(home-page "https://git.zrythm.org/cgit/ztoolkit/")
|
||||
(license license:agpl3+)))
|
||||
|
||||
(define-public ztoolkit-rsvg
|
||||
(package
|
||||
(inherit ztoolkit)
|
||||
(name "ztoolkit-rsvg")
|
||||
(arguments
|
||||
`(#:configure-flags `("-Denable_rsvg=true")))
|
||||
(inputs
|
||||
`(("librsvg" ,librsvg)
|
||||
,@(package-inputs ztoolkit)))
|
||||
(synopsis "ZToolkit with SVG support")))
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2012 Nikita Karetnikov <nikita@karetnikov.org>
|
||||
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2015 Mathieu Lirzin <mthl@openmailbox.org>
|
||||
;;; Copyright © 2014 Manolis Fragkiskos Ragkousis <manolis837@gmail.com>
|
||||
;;; Copyright © 2015, 2017, 2018 Mark H Weaver <mhw@netris.org>
|
||||
@@ -60,7 +60,8 @@
|
||||
;; XXX: testsuite: 209 and 279 failed. The latter is an impurity. It
|
||||
;; should use our own "cpp" instead of "/lib/cpp".
|
||||
(arguments `(#:tests? #f))
|
||||
(home-page "https://www.gnu.org/software/autoconf/")
|
||||
(home-page
|
||||
"http://www.gnu.org/software/autoconf/")
|
||||
(synopsis "Create source code configuration scripts")
|
||||
(description
|
||||
"Autoconf offers the developer a robust set of M4 macros which expand
|
||||
@@ -243,7 +244,7 @@ Autobuild generates an HTML summary file, containing links to each build log.
|
||||
The summary includes project name, version, build hostname, host type (cross
|
||||
compile aware), date of build, and indication of success or failure. The
|
||||
output is indexed in many ways to simplify browsing.")
|
||||
(home-page "https://josefsson.org/autobuild/")
|
||||
(home-page "http://josefsson.org/autobuild/")
|
||||
(license gpl3+)))
|
||||
|
||||
(define-public automake
|
||||
@@ -324,32 +325,6 @@ intuitive format and then Automake works with Autoconf to produce a robust
|
||||
Makefile, simplifying the entire process for the developer.")
|
||||
(license gpl2+))) ; some files are under GPLv3+
|
||||
|
||||
(define-public automake-1.16.2
|
||||
(package
|
||||
(inherit automake)
|
||||
(version "1.16.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/automake/automake-"
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1l7dkqbsmbf94ax29jj1jf6a0r6ikc8jybg1p5m0c3ki7pg5ki6c"))
|
||||
(patches
|
||||
(search-patches "automake-skip-amhello-tests.patch"))))
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments automake)
|
||||
((#:phases phases '%standard-phases)
|
||||
`(modify-phases ,phases
|
||||
(add-before 'check 'skip-test
|
||||
(lambda _
|
||||
;; This test requires 'etags' and fails if it's missing.
|
||||
;; Skip it.
|
||||
(substitute* "t/tags-lisp-space.sh"
|
||||
(("^required.*" all)
|
||||
(string-append "exit 77\n" all "\n")))
|
||||
#t))))))))
|
||||
|
||||
(define-public libtool
|
||||
(package
|
||||
(name "libtool")
|
||||
|
||||
@@ -35,9 +35,8 @@
|
||||
"Return a list of Emacs 'autoloads' files in DIRECTORY.
|
||||
The files in the list do not have extensions (.el, .elc)."
|
||||
;; `directory-files' doesn't honor group in regexp.
|
||||
(delete-dups (mapcar #'file-name-sans-extension
|
||||
(directory-files directory 'full-name
|
||||
guix-emacs-autoloads-regexp))))
|
||||
(mapcar #'file-name-sans-extension
|
||||
(directory-files directory 'full-name guix-emacs-autoloads-regexp)))
|
||||
|
||||
;;;###autoload
|
||||
(defun guix-emacs-autoload-packages ()
|
||||
@@ -45,6 +44,8 @@ The files in the list do not have extensions (.el, .elc)."
|
||||
|
||||
'Autoload' means to load the 'autoloads' files matching
|
||||
`guix-emacs-autoloads-regexp'."
|
||||
;; FIXME: The autoloads generated by the emacs-build-system are not byte
|
||||
;; compiled.
|
||||
(interactive)
|
||||
(let* ((emacs-non-core-load-path-directories
|
||||
;; Filter out core Elisp directories, which are already autoloaded
|
||||
|
||||
@@ -8344,19 +8344,9 @@ CONFIG_LIBFDT=y
|
||||
CONFIG_OID_REGISTRY=y
|
||||
CONFIG_UCS2_STRING=y
|
||||
CONFIG_FONT_SUPPORT=y
|
||||
CONFIG_FONTS=y
|
||||
# CONFIG_FONTS is not set
|
||||
CONFIG_FONT_8x8=y
|
||||
CONFIG_FONT_8x16=y
|
||||
# CONFIG_FONT_6x11 is not set
|
||||
# CONFIG_FONT_7x14 is not set
|
||||
# CONFIG_FONT_PEARL_8x8 is not set
|
||||
# CONFIG_FONT_ACORN_8x8 is not set
|
||||
# CONFIG_FONT_MINI_4x6 is not set
|
||||
CONFIG_FONT_6x10=y
|
||||
# CONFIG_FONT_10x18 is not set
|
||||
# CONFIG_FONT_SUN8x16 is not set
|
||||
# CONFIG_FONT_SUN12x22 is not set
|
||||
CONFIG_FONT_TER16x32=y
|
||||
CONFIG_SG_SPLIT=y
|
||||
CONFIG_SG_POOL=y
|
||||
CONFIG_ARCH_HAS_SG_CHAIN=y
|
||||
|
||||
@@ -9514,19 +9514,9 @@ CONFIG_SIGNATURE=y
|
||||
CONFIG_OID_REGISTRY=y
|
||||
CONFIG_UCS2_STRING=y
|
||||
CONFIG_FONT_SUPPORT=y
|
||||
CONFIG_FONTS=y
|
||||
# CONFIG_FONTS is not set
|
||||
CONFIG_FONT_8x8=y
|
||||
CONFIG_FONT_8x16=y
|
||||
# CONFIG_FONT_6x11 is not set
|
||||
# CONFIG_FONT_7x14 is not set
|
||||
# CONFIG_FONT_PEARL_8x8 is not set
|
||||
# CONFIG_FONT_ACORN_8x8 is not set
|
||||
# CONFIG_FONT_MINI_4x6 is not set
|
||||
CONFIG_FONT_6x10=y
|
||||
# CONFIG_FONT_10x18 is not set
|
||||
# CONFIG_FONT_SUN8x16 is not set
|
||||
# CONFIG_FONT_SUN12x22 is not set
|
||||
CONFIG_FONT_TER16x32=y
|
||||
# CONFIG_SG_SPLIT is not set
|
||||
CONFIG_SG_POOL=y
|
||||
CONFIG_ARCH_HAS_SG_CHAIN=y
|
||||
|
||||
@@ -9386,19 +9386,9 @@ CONFIG_SIGNATURE=y
|
||||
CONFIG_OID_REGISTRY=y
|
||||
CONFIG_UCS2_STRING=y
|
||||
CONFIG_FONT_SUPPORT=y
|
||||
CONFIG_FONTS=y
|
||||
# CONFIG_FONTS is not set
|
||||
CONFIG_FONT_8x8=y
|
||||
CONFIG_FONT_8x16=y
|
||||
# CONFIG_FONT_6x11 is not set
|
||||
# CONFIG_FONT_7x14 is not set
|
||||
# CONFIG_FONT_PEARL_8x8 is not set
|
||||
# CONFIG_FONT_ACORN_8x8 is not set
|
||||
# CONFIG_FONT_MINI_4x6 is not set
|
||||
CONFIG_FONT_6x10=y
|
||||
# CONFIG_FONT_10x18 is not set
|
||||
# CONFIG_FONT_SUN8x16 is not set
|
||||
# CONFIG_FONT_SUN12x22 is not set
|
||||
CONFIG_FONT_TER16x32=y
|
||||
# CONFIG_SG_SPLIT is not set
|
||||
CONFIG_SG_POOL=y
|
||||
CONFIG_ARCH_HAS_SG_CHAIN=y
|
||||
|
||||
@@ -8353,19 +8353,9 @@ CONFIG_LIBFDT=y
|
||||
CONFIG_OID_REGISTRY=y
|
||||
CONFIG_UCS2_STRING=y
|
||||
CONFIG_FONT_SUPPORT=y
|
||||
CONFIG_FONTS=y
|
||||
# CONFIG_FONTS is not set
|
||||
CONFIG_FONT_8x8=y
|
||||
CONFIG_FONT_8x16=y
|
||||
# CONFIG_FONT_6x11 is not set
|
||||
# CONFIG_FONT_7x14 is not set
|
||||
# CONFIG_FONT_PEARL_8x8 is not set
|
||||
# CONFIG_FONT_ACORN_8x8 is not set
|
||||
# CONFIG_FONT_MINI_4x6 is not set
|
||||
CONFIG_FONT_6x10=y
|
||||
# CONFIG_FONT_10x18 is not set
|
||||
# CONFIG_FONT_SUN8x16 is not set
|
||||
# CONFIG_FONT_SUN12x22 is not set
|
||||
CONFIG_FONT_TER16x32=y
|
||||
CONFIG_SG_SPLIT=y
|
||||
CONFIG_SG_POOL=y
|
||||
CONFIG_ARCH_HAS_SG_CHAIN=y
|
||||
|
||||
@@ -8090,19 +8090,9 @@ CONFIG_LIBFDT=y
|
||||
CONFIG_OID_REGISTRY=y
|
||||
CONFIG_UCS2_STRING=y
|
||||
CONFIG_FONT_SUPPORT=y
|
||||
CONFIG_FONTS=y
|
||||
# CONFIG_FONTS is not set
|
||||
CONFIG_FONT_8x8=y
|
||||
CONFIG_FONT_8x16=y
|
||||
# CONFIG_FONT_6x11 is not set
|
||||
# CONFIG_FONT_7x14 is not set
|
||||
# CONFIG_FONT_PEARL_8x8 is not set
|
||||
# CONFIG_FONT_ACORN_8x8 is not set
|
||||
# CONFIG_FONT_MINI_4x6 is not set
|
||||
CONFIG_FONT_6x10=y
|
||||
# CONFIG_FONT_10x18 is not set
|
||||
# CONFIG_FONT_SUN8x16 is not set
|
||||
# CONFIG_FONT_SUN12x22 is not set
|
||||
CONFIG_FONT_TER16x32=y
|
||||
CONFIG_SG_SPLIT=y
|
||||
CONFIG_SG_POOL=y
|
||||
CONFIG_ARCH_HAS_SG_CHAIN=y
|
||||
|
||||
@@ -9435,19 +9435,9 @@ CONFIG_SIGNATURE=y
|
||||
CONFIG_OID_REGISTRY=y
|
||||
CONFIG_UCS2_STRING=y
|
||||
CONFIG_FONT_SUPPORT=y
|
||||
CONFIG_FONTS=y
|
||||
# CONFIG_FONTS is not set
|
||||
CONFIG_FONT_8x8=y
|
||||
CONFIG_FONT_8x16=y
|
||||
# CONFIG_FONT_6x11 is not set
|
||||
# CONFIG_FONT_7x14 is not set
|
||||
# CONFIG_FONT_PEARL_8x8 is not set
|
||||
# CONFIG_FONT_ACORN_8x8 is not set
|
||||
# CONFIG_FONT_MINI_4x6 is not set
|
||||
CONFIG_FONT_6x10=y
|
||||
# CONFIG_FONT_10x18 is not set
|
||||
# CONFIG_FONT_SUN8x16 is not set
|
||||
# CONFIG_FONT_SUN12x22 is not set
|
||||
CONFIG_FONT_TER16x32=y
|
||||
CONFIG_SG_POOL=y
|
||||
CONFIG_ARCH_HAS_SG_CHAIN=y
|
||||
CONFIG_SBITMAP=y
|
||||
|
||||
@@ -9327,19 +9327,9 @@ CONFIG_SIGNATURE=y
|
||||
CONFIG_OID_REGISTRY=y
|
||||
CONFIG_UCS2_STRING=y
|
||||
CONFIG_FONT_SUPPORT=y
|
||||
CONFIG_FONTS=y
|
||||
# CONFIG_FONTS is not set
|
||||
CONFIG_FONT_8x8=y
|
||||
CONFIG_FONT_8x16=y
|
||||
# CONFIG_FONT_6x11 is not set
|
||||
# CONFIG_FONT_7x14 is not set
|
||||
# CONFIG_FONT_PEARL_8x8 is not set
|
||||
# CONFIG_FONT_ACORN_8x8 is not set
|
||||
# CONFIG_FONT_MINI_4x6 is not set
|
||||
CONFIG_FONT_6x10=y
|
||||
# CONFIG_FONT_10x18 is not set
|
||||
# CONFIG_FONT_SUN8x16 is not set
|
||||
# CONFIG_FONT_SUN12x22 is not set
|
||||
CONFIG_FONT_TER16x32=y
|
||||
CONFIG_SG_POOL=y
|
||||
CONFIG_ARCH_HAS_SG_CHAIN=y
|
||||
CONFIG_ARCH_HAS_PMEM_API=y
|
||||
|
||||
@@ -8612,19 +8612,9 @@ CONFIG_SIGNATURE=y
|
||||
CONFIG_OID_REGISTRY=y
|
||||
CONFIG_UCS2_STRING=y
|
||||
CONFIG_FONT_SUPPORT=y
|
||||
CONFIG_FONTS=y
|
||||
# CONFIG_FONTS is not set
|
||||
CONFIG_FONT_8x8=y
|
||||
CONFIG_FONT_8x16=y
|
||||
# CONFIG_FONT_6x11 is not set
|
||||
# CONFIG_FONT_7x14 is not set
|
||||
# CONFIG_FONT_PEARL_8x8 is not set
|
||||
# CONFIG_FONT_ACORN_8x8 is not set
|
||||
# CONFIG_FONT_MINI_4x6 is not set
|
||||
CONFIG_FONT_6x10=y
|
||||
# CONFIG_FONT_10x18 is not set
|
||||
# CONFIG_FONT_SUN8x16 is not set
|
||||
# CONFIG_FONT_SUN12x22 is not set
|
||||
CONFIG_FONT_TER16x32=y
|
||||
# CONFIG_SG_SPLIT is not set
|
||||
CONFIG_ARCH_HAS_SG_CHAIN=y
|
||||
CONFIG_ARCH_HAS_MMIO_FLUSH=y
|
||||
|
||||
@@ -8418,19 +8418,9 @@ CONFIG_SIGNATURE=y
|
||||
CONFIG_OID_REGISTRY=y
|
||||
CONFIG_UCS2_STRING=y
|
||||
CONFIG_FONT_SUPPORT=y
|
||||
CONFIG_FONTS=y
|
||||
# CONFIG_FONTS is not set
|
||||
CONFIG_FONT_8x8=y
|
||||
CONFIG_FONT_8x16=y
|
||||
# CONFIG_FONT_6x11 is not set
|
||||
# CONFIG_FONT_7x14 is not set
|
||||
# CONFIG_FONT_PEARL_8x8 is not set
|
||||
# CONFIG_FONT_ACORN_8x8 is not set
|
||||
# CONFIG_FONT_MINI_4x6 is not set
|
||||
CONFIG_FONT_6x10=y
|
||||
# CONFIG_FONT_10x18 is not set
|
||||
# CONFIG_FONT_SUN8x16 is not set
|
||||
# CONFIG_FONT_SUN12x22 is not set
|
||||
CONFIG_FONT_TER16x32=y
|
||||
# CONFIG_SG_SPLIT is not set
|
||||
CONFIG_ARCH_HAS_SG_CHAIN=y
|
||||
CONFIG_ARCH_HAS_PMEM_API=y
|
||||
|
||||
@@ -9040,19 +9040,9 @@ CONFIG_SIGNATURE=y
|
||||
CONFIG_OID_REGISTRY=y
|
||||
CONFIG_UCS2_STRING=y
|
||||
CONFIG_FONT_SUPPORT=y
|
||||
CONFIG_FONTS=y
|
||||
# CONFIG_FONTS is not set
|
||||
CONFIG_FONT_8x8=y
|
||||
CONFIG_FONT_8x16=y
|
||||
# CONFIG_FONT_6x11 is not set
|
||||
# CONFIG_FONT_7x14 is not set
|
||||
# CONFIG_FONT_PEARL_8x8 is not set
|
||||
# CONFIG_FONT_ACORN_8x8 is not set
|
||||
# CONFIG_FONT_MINI_4x6 is not set
|
||||
CONFIG_FONT_6x10=y
|
||||
# CONFIG_FONT_10x18 is not set
|
||||
# CONFIG_FONT_SUN8x16 is not set
|
||||
# CONFIG_FONT_SUN12x22 is not set
|
||||
CONFIG_FONT_TER16x32=y
|
||||
# CONFIG_SG_SPLIT is not set
|
||||
CONFIG_SG_POOL=y
|
||||
CONFIG_ARCH_HAS_SG_CHAIN=y
|
||||
|
||||
@@ -8885,19 +8885,9 @@ CONFIG_SIGNATURE=y
|
||||
CONFIG_OID_REGISTRY=y
|
||||
CONFIG_UCS2_STRING=y
|
||||
CONFIG_FONT_SUPPORT=y
|
||||
CONFIG_FONTS=y
|
||||
# CONFIG_FONTS is not set
|
||||
CONFIG_FONT_8x8=y
|
||||
CONFIG_FONT_8x16=y
|
||||
# CONFIG_FONT_6x11 is not set
|
||||
# CONFIG_FONT_7x14 is not set
|
||||
# CONFIG_FONT_PEARL_8x8 is not set
|
||||
# CONFIG_FONT_ACORN_8x8 is not set
|
||||
# CONFIG_FONT_MINI_4x6 is not set
|
||||
CONFIG_FONT_6x10=y
|
||||
# CONFIG_FONT_10x18 is not set
|
||||
# CONFIG_FONT_SUN8x16 is not set
|
||||
# CONFIG_FONT_SUN12x22 is not set
|
||||
CONFIG_FONT_TER16x32=y
|
||||
# CONFIG_SG_SPLIT is not set
|
||||
CONFIG_SG_POOL=y
|
||||
CONFIG_ARCH_HAS_SG_CHAIN=y
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -9106,19 +9106,9 @@ CONFIG_LIBFDT=y
|
||||
CONFIG_OID_REGISTRY=y
|
||||
CONFIG_UCS2_STRING=y
|
||||
CONFIG_FONT_SUPPORT=y
|
||||
CONFIG_FONTS=y
|
||||
# CONFIG_FONTS is not set
|
||||
CONFIG_FONT_8x8=y
|
||||
CONFIG_FONT_8x16=y
|
||||
# CONFIG_FONT_6x11 is not set
|
||||
# CONFIG_FONT_7x14 is not set
|
||||
# CONFIG_FONT_PEARL_8x8 is not set
|
||||
# CONFIG_FONT_ACORN_8x8 is not set
|
||||
# CONFIG_FONT_MINI_4x6 is not set
|
||||
CONFIG_FONT_6x10=y
|
||||
# CONFIG_FONT_10x18 is not set
|
||||
# CONFIG_FONT_SUN8x16 is not set
|
||||
# CONFIG_FONT_SUN12x22 is not set
|
||||
CONFIG_FONT_TER16x32=y
|
||||
CONFIG_SG_SPLIT=y
|
||||
CONFIG_SG_POOL=y
|
||||
CONFIG_SBITMAP=y
|
||||
|
||||
@@ -9069,19 +9069,9 @@ CONFIG_UCS2_STRING=y
|
||||
CONFIG_HAVE_GENERIC_VDSO=y
|
||||
CONFIG_GENERIC_GETTIMEOFDAY=y
|
||||
CONFIG_FONT_SUPPORT=y
|
||||
CONFIG_FONTS=y
|
||||
# CONFIG_FONTS is not set
|
||||
CONFIG_FONT_8x8=y
|
||||
CONFIG_FONT_8x16=y
|
||||
# CONFIG_FONT_6x11 is not set
|
||||
# CONFIG_FONT_7x14 is not set
|
||||
# CONFIG_FONT_PEARL_8x8 is not set
|
||||
# CONFIG_FONT_ACORN_8x8 is not set
|
||||
# CONFIG_FONT_MINI_4x6 is not set
|
||||
CONFIG_FONT_6x10=y
|
||||
# CONFIG_FONT_10x18 is not set
|
||||
# CONFIG_FONT_SUN8x16 is not set
|
||||
# CONFIG_FONT_SUN12x22 is not set
|
||||
CONFIG_FONT_TER16x32=y
|
||||
CONFIG_SG_SPLIT=y
|
||||
CONFIG_SG_POOL=y
|
||||
CONFIG_ARCH_HAS_PMEM_API=y
|
||||
|
||||
@@ -10010,19 +10010,9 @@ CONFIG_HAVE_GENERIC_VDSO=y
|
||||
CONFIG_GENERIC_GETTIMEOFDAY=y
|
||||
CONFIG_GENERIC_VDSO_32=y
|
||||
CONFIG_FONT_SUPPORT=y
|
||||
CONFIG_FONTS=y
|
||||
# CONFIG_FONTS is not set
|
||||
CONFIG_FONT_8x8=y
|
||||
CONFIG_FONT_8x16=y
|
||||
# CONFIG_FONT_6x11 is not set
|
||||
# CONFIG_FONT_7x14 is not set
|
||||
# CONFIG_FONT_PEARL_8x8 is not set
|
||||
# CONFIG_FONT_ACORN_8x8 is not set
|
||||
# CONFIG_FONT_MINI_4x6 is not set
|
||||
CONFIG_FONT_6x10=y
|
||||
# CONFIG_FONT_10x18 is not set
|
||||
# CONFIG_FONT_SUN8x16 is not set
|
||||
# CONFIG_FONT_SUN12x22 is not set
|
||||
CONFIG_FONT_TER16x32=y
|
||||
CONFIG_SG_POOL=y
|
||||
CONFIG_ARCH_STACKWALK=y
|
||||
CONFIG_SBITMAP=y
|
||||
|
||||
@@ -9954,19 +9954,9 @@ CONFIG_UCS2_STRING=y
|
||||
CONFIG_HAVE_GENERIC_VDSO=y
|
||||
CONFIG_GENERIC_GETTIMEOFDAY=y
|
||||
CONFIG_FONT_SUPPORT=y
|
||||
CONFIG_FONTS=y
|
||||
# CONFIG_FONTS is not set
|
||||
CONFIG_FONT_8x8=y
|
||||
CONFIG_FONT_8x16=y
|
||||
# CONFIG_FONT_6x11 is not set
|
||||
# CONFIG_FONT_7x14 is not set
|
||||
# CONFIG_FONT_PEARL_8x8 is not set
|
||||
# CONFIG_FONT_ACORN_8x8 is not set
|
||||
# CONFIG_FONT_MINI_4x6 is not set
|
||||
CONFIG_FONT_6x10=y
|
||||
# CONFIG_FONT_10x18 is not set
|
||||
# CONFIG_FONT_SUN8x16 is not set
|
||||
# CONFIG_FONT_SUN12x22 is not set
|
||||
CONFIG_FONT_TER16x32=y
|
||||
CONFIG_SG_POOL=y
|
||||
CONFIG_ARCH_HAS_PMEM_API=y
|
||||
CONFIG_ARCH_HAS_UACCESS_FLUSHCACHE=y
|
||||
|
||||
@@ -36,7 +36,7 @@
|
||||
(name "avahi")
|
||||
(version "0.7")
|
||||
(replacement avahi/fixed)
|
||||
(home-page "https://avahi.org")
|
||||
(home-page "http://avahi.org")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append home-page "/download/avahi-"
|
||||
|
||||
+2
-14
@@ -63,16 +63,7 @@
|
||||
`(delete "--disable-multilib" ,flags))))
|
||||
(native-search-paths
|
||||
(list (search-path-specification
|
||||
(variable "CROSS_C_INCLUDE_PATH")
|
||||
(files '("avr/include")))
|
||||
(search-path-specification
|
||||
(variable "CROSS_CPLUS_INCLUDE_PATH")
|
||||
(files '("avr/include")))
|
||||
(search-path-specification
|
||||
(variable "CROSS_OBJC_INCLUDE_PATH")
|
||||
(files '("avr/include")))
|
||||
(search-path-specification
|
||||
(variable "CROSS_OBJCPLUS_INCLUDE_PATH")
|
||||
(variable "CROSS_CPATH")
|
||||
(files '("avr/include")))
|
||||
(search-path-specification
|
||||
(variable "CROSS_LIBRARY_PATH")
|
||||
@@ -85,10 +76,7 @@
|
||||
(package
|
||||
(inherit avr-gcc-4.9)
|
||||
(version (package-version gcc-5))
|
||||
(source (origin
|
||||
(inherit (package-source gcc-5))
|
||||
(patches (append (origin-patches (package-source gcc-5))
|
||||
(search-patches "gcc-cross-environment-variables.patch")))))))
|
||||
(source (package-source gcc-5))))
|
||||
|
||||
(define (avr-libc avr-gcc)
|
||||
(package
|
||||
|
||||
+11
-43
@@ -59,7 +59,6 @@
|
||||
#:use-module (gnu packages linux)
|
||||
#:use-module (gnu packages mcrypt)
|
||||
#:use-module (gnu packages nettle)
|
||||
#:use-module (gnu packages onc-rpc)
|
||||
#:use-module (gnu packages pcre)
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
@@ -424,7 +423,7 @@ rdiff-backup is easy to use and settings have sensible defaults.")
|
||||
(define-public rsnapshot
|
||||
(package
|
||||
(name "rsnapshot")
|
||||
(version "1.4.3")
|
||||
(version "1.4.2")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@@ -432,7 +431,8 @@ 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 "1lavqmmsf53pim0nvming7fkng6p0nk2a51k2c2jdq0l7snpl31b"))))
|
||||
(base32
|
||||
"05jfy99a0xs6lvsjfp3wz21z0myqhmwl2grn3jr9clijbg282ah4"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
@@ -444,15 +444,11 @@ rdiff-backup is easy to use and settings have sensible defaults.")
|
||||
"t/backup_exec/conf/backup_exec.conf")
|
||||
(("/bin/true") (which "true"))
|
||||
(("/bin/false") (which "false")))
|
||||
|
||||
;; Disable a test that tries to connect to localhost on port 22.
|
||||
(delete-file "t/ssh_args/ssh_args.t.in")
|
||||
|
||||
(invoke "make" "test"))))))
|
||||
(inputs
|
||||
`(("perl" ,perl)
|
||||
("rsync" ,rsync)))
|
||||
(home-page "https://rsnapshot.org")
|
||||
(home-page "http://rsnapshot.org")
|
||||
(synopsis "Deduplicating snapshot backup utility based on rsync")
|
||||
(description "rsnapshot is a file system snapshot utility based on rsync.
|
||||
rsnapshot makes it easy to make periodic snapshots of local machines, and
|
||||
@@ -471,26 +467,10 @@ rsnapshot uses hard links to deduplicate identical files.")
|
||||
(sha256
|
||||
(base32
|
||||
"0fpdyxww41ba52d98blvnf543xvirq1v9xz1i3x1gm9lzlzpmc2g"))
|
||||
(patches (search-patches "diffutils-gets-undeclared.patch"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
'(begin
|
||||
;; Include all the libtirpc headers necessary to get the
|
||||
;; definitions of 'u_int', etc.
|
||||
(substitute* '("src/block-server.c"
|
||||
"include/chop/block-server.h"
|
||||
"utils/chop-block-server.c")
|
||||
(("#include <rpc/(.*)\\.h>" _ header)
|
||||
(string-append "#include <rpc/types.h>\n"
|
||||
"#include <rpc/rpc.h>\n"
|
||||
"#include <rpc/" header ".h>\n")))
|
||||
#t))))
|
||||
(patches (search-patches "diffutils-gets-undeclared.patch"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(;; Link against libtirpc.
|
||||
#:configure-flags '("LDFLAGS=-ltirpc -Wl,--as-needed")
|
||||
|
||||
#:phases (modify-phases %standard-phases
|
||||
'(#:phases (modify-phases %standard-phases
|
||||
(add-before 'configure 'adjust-configure-script
|
||||
(lambda _
|
||||
;; Mimic upstream commit
|
||||
@@ -500,15 +480,6 @@ rsnapshot uses hard links to deduplicate identical files.")
|
||||
(string-append "GUILE=" middle
|
||||
"--variable bindir`/guile")))
|
||||
#t))
|
||||
(add-before 'build 'set-libtirpc-include-path
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
;; Allow <rpc/rpc.h> & co. to be found.
|
||||
(let ((libtirpc (assoc-ref inputs "libtirpc")))
|
||||
(setenv "CPATH"
|
||||
(string-append (getenv "CPATH")
|
||||
":" libtirpc
|
||||
"/include/tirpc"))
|
||||
#t)))
|
||||
(add-before 'check 'skip-test
|
||||
(lambda _
|
||||
;; XXX: This test fails (1) because current GnuTLS no
|
||||
@@ -519,12 +490,10 @@ rsnapshot uses hard links to deduplicate identical files.")
|
||||
(native-inputs
|
||||
`(("guile" ,guile-2.0)
|
||||
("gperf" ,gperf-3.0) ;see <https://bugs.gnu.org/32382>
|
||||
("pkg-config" ,pkg-config)
|
||||
("rpcsvc-proto" ,rpcsvc-proto))) ;for 'rpcgen'
|
||||
("pkg-config" ,pkg-config)))
|
||||
(inputs
|
||||
`(("guile" ,guile-2.0)
|
||||
("util-linux" ,util-linux)
|
||||
("libtirpc" ,libtirpc)
|
||||
("gnutls" ,gnutls)
|
||||
("tdb" ,tdb)
|
||||
("bdb" ,bdb)
|
||||
@@ -548,14 +517,13 @@ detection, and lossless compression.")
|
||||
(define-public borg
|
||||
(package
|
||||
(name "borg")
|
||||
(version "1.1.11")
|
||||
(version "1.1.10")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "borgbackup" version))
|
||||
(sha256
|
||||
(base32
|
||||
"190gjzx83b6p64nqj840x382dgz9gfv0gm7wj585lnkrpa90j29n"))
|
||||
(base32 "1pp70p4n5kamvcbl4d8021ggrxhyykmg9isjg4yd3wags8b19d7g"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
'(begin
|
||||
@@ -979,14 +947,14 @@ precious backup space.
|
||||
(define-public burp
|
||||
(package
|
||||
(name "burp")
|
||||
(version "2.3.20")
|
||||
(version "2.3.6")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://sourceforge/burp/burp-" version
|
||||
"/burp-" version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"0dm2y76z7pg17kfv6ahmh4mf2r3pg7mlwd69lvmjwssnd9vs1nn5"))))
|
||||
"101nn30apcbmy9k0wksdf8d4ccw7sfcqzkasgg17a5y332x2imr9"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
`(("librsync" ,librsync)
|
||||
|
||||
@@ -14,7 +14,6 @@
|
||||
;;; Copyright © 2017 Eric Bavier <bavier@member.fsf.org>
|
||||
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2018, 2019 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2020 Vitaliy Shatrov <D0dyBo0D0dyBo0@protonmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -354,11 +353,10 @@ used to apply commands with arbitrarily long arguments.")
|
||||
#t)))))
|
||||
(synopsis "Core GNU utilities (file, text, shell)")
|
||||
(description
|
||||
"GNU Coreutils package includes all of the basic command-line tools that
|
||||
are expected in a POSIX system, excluding shell. This package is the union of
|
||||
the GNU fileutils, sh-utils, and textutils packages. Most of these tools
|
||||
offer extended functionality beyond that which is outlined in the POSIX
|
||||
standard.")
|
||||
"GNU Coreutils includes all of the basic command-line tools that are
|
||||
expected in a POSIX system. These provide the basic file, shell and text
|
||||
manipulation functions of the GNU system. Most of these tools offer extended
|
||||
functionality beyond that which is outlined in the POSIX standard.")
|
||||
(license gpl3+)
|
||||
(home-page "https://www.gnu.org/software/coreutils/")))
|
||||
|
||||
|
||||
@@ -341,7 +341,7 @@ completion for many common commands.")
|
||||
(install-file "bash-tap" bin)
|
||||
(install-file "bash-tap-bootstrap" bin)
|
||||
(install-file "bash-tap-mock" bin)))))))
|
||||
(home-page "https://www.illusori.co.uk/projects/bash-tap/")
|
||||
(home-page "http://www.illusori.co.uk/projects/bash-tap/")
|
||||
(synopsis "Bash port of a Test::More/Test::Builder-style TAP-compliant
|
||||
test library")
|
||||
(description "Bash TAP is a TAP-compliant Test::More-style testing library
|
||||
|
||||
+4
-16
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2012, 2013, 2014, 2016, 2017, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2012, 2013, 2014, 2016, 2017 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2014 Mark H Weaver <mhw@netris.org>
|
||||
;;; Copyright © 2016, 2018 Leo Famulari <leo@famulari.name>
|
||||
;;; Copyright © 2017 Rene Saavedra <rennes@openmailbox.org>
|
||||
@@ -87,25 +87,13 @@ simple collector interface.
|
||||
|
||||
Alternatively, the garbage collector may be used as a leak detector for
|
||||
C or C++ programs, though that is not its primary goal.")
|
||||
(home-page "https://www.hboehm.info/gc/")
|
||||
(home-page "http://www.hboehm.info/gc/")
|
||||
|
||||
(license (x11-style (string-append home-page "license.txt")))))
|
||||
|
||||
(define-public libgc-8.0
|
||||
(package
|
||||
(inherit libgc)
|
||||
(version "8.0.4")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://github.com/ivmai/bdwgc/releases"
|
||||
"/download/v" version "/gc-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1798rp3mcfkgs38ynkbg2p47bq59pisrc6mn0l20pb5iczf0ssj3"))))))
|
||||
|
||||
(define-public libgc/back-pointers
|
||||
(package/inherit
|
||||
libgc
|
||||
(package
|
||||
(inherit libgc)
|
||||
(name "libgc-back-pointers")
|
||||
(arguments
|
||||
`(#:make-flags
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user