forked from tribes/guix
Compare commits
14 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 88c2e2349a | |||
| 3bf155b888 | |||
| a40cc32ae8 | |||
| 1691a4458c | |||
| e32c098f5d | |||
| 4ea1538dd7 | |||
| 10527dac08 | |||
| f492b57306 | |||
| 9b3c194c2d | |||
| bba1e723b0 | |||
| 47d554602c | |||
| aaf86bbe1f | |||
| 889fe96307 | |||
| efc8489651 |
+24
-7
@@ -32,7 +32,27 @@
|
||||
;; Geiser
|
||||
;; This allows automatically setting the `geiser-guile-load-path'
|
||||
;; variable when using various Guix checkouts (e.g., via git worktrees).
|
||||
(geiser-repl-per-project-p . t)))
|
||||
(eval . (let ((root-dir-unexpanded (locate-dominating-file
|
||||
default-directory ".dir-locals.el")))
|
||||
;; While Guix should in theory always have a .dir-locals.el
|
||||
;; (we are reading this file, after all) there seems to be a
|
||||
;; strange problem where this code "escapes" to some other buffers,
|
||||
;; at least vc-mode. See:
|
||||
;; https://lists.gnu.org/archive/html/guix-devel/2020-11/msg00296.html
|
||||
;; Upstream report: <https://bugs.gnu.org/44698>
|
||||
;; Hence the following "when", which might otherwise be unnecessary;
|
||||
;; it prevents causing an error when root-dir-unexpanded is nil.
|
||||
(when root-dir-unexpanded
|
||||
(let* ((root-dir (expand-file-name root-dir-unexpanded))
|
||||
;; Workaround for bug https://issues.guix.gnu.org/43818.
|
||||
(root-dir* (directory-file-name root-dir)))
|
||||
|
||||
(unless (boundp 'geiser-guile-load-path)
|
||||
(defvar geiser-guile-load-path '()))
|
||||
(make-local-variable 'geiser-guile-load-path)
|
||||
(require 'cl-lib)
|
||||
(cl-pushnew root-dir* geiser-guile-load-path
|
||||
:test #'string-equal)))))))
|
||||
|
||||
(c-mode . ((c-file-style . "gnu")))
|
||||
(scheme-mode
|
||||
@@ -41,7 +61,7 @@
|
||||
(eval . (put 'eval-when 'scheme-indent-function 1))
|
||||
(eval . (put 'call-with-prompt 'scheme-indent-function 1))
|
||||
(eval . (put 'test-assert 'scheme-indent-function 1))
|
||||
(eval . (put 'test-assertm 'scheme-indent-function 2))
|
||||
(eval . (put 'test-assertm 'scheme-indent-function 1))
|
||||
(eval . (put 'test-equalm 'scheme-indent-function 1))
|
||||
(eval . (put 'test-equal 'scheme-indent-function 1))
|
||||
(eval . (put 'test-eq 'scheme-indent-function 1))
|
||||
@@ -50,11 +70,7 @@
|
||||
(eval . (put 'guard 'scheme-indent-function 1))
|
||||
(eval . (put 'lambda* 'scheme-indent-function 1))
|
||||
(eval . (put 'substitute* 'scheme-indent-function 1))
|
||||
(eval . (put 'match-record 'scheme-indent-function 3))
|
||||
(eval . (put 'match-record-lambda 'scheme-indent-function 2))
|
||||
|
||||
;; TODO: Contribute these to Emacs' scheme-mode.
|
||||
(eval . (put 'let-keywords 'scheme-indent-function 3))
|
||||
(eval . (put 'match-record 'scheme-indent-function 2))
|
||||
|
||||
;; 'modify-inputs' and its keywords.
|
||||
(eval . (put 'modify-inputs 'scheme-indent-function 1))
|
||||
@@ -78,6 +94,7 @@
|
||||
(eval . (put 'origin 'scheme-indent-function 0))
|
||||
(eval . (put 'build-system 'scheme-indent-function 0))
|
||||
(eval . (put 'bag 'scheme-indent-function 0))
|
||||
(eval . (put 'gexp->derivation 'scheme-indent-function 1))
|
||||
(eval . (put 'graft 'scheme-indent-function 0))
|
||||
(eval . (put 'operating-system 'scheme-indent-function 0))
|
||||
(eval . (put 'file-system 'scheme-indent-function 0))
|
||||
|
||||
@@ -159,4 +159,3 @@ tmp
|
||||
/gnu/packages/aux-files/guile-guile-launcher.o
|
||||
/guile
|
||||
.DS_Store
|
||||
.mumi/current-issue
|
||||
+15
-13
@@ -7,6 +7,8 @@
|
||||
(;; primary: "D963 A5A3 8A80 3D52 4461 F914 7483 0A27 6C32 8EC2"
|
||||
("2841 9AC6 5038 7440 C7E9 2FFA 2208 D209 58C1 DEB0"
|
||||
(name "abcdw"))
|
||||
("4FB9 9F49 2B12 A365 7997 E664 8246 0C08 2A0E E98F"
|
||||
(name "alezost"))
|
||||
("50F3 3E2E 5B0C 3D90 0424 ABE8 9BDC F497 A4BB CC7F"
|
||||
(name "ambrevar"))
|
||||
("AD17 A21E F8AE D8F1 CC02 DBD9 F7D5 C9BF 765C 61E3"
|
||||
@@ -18,6 +20,9 @@
|
||||
(;; primary: "34FF 38BC D151 25A6 E340 A0B5 3453 2F9F AFCA 8B8E"
|
||||
"A3A4 B419 0074 087C A7DE 5698 BC45 CA67 E2F8 D007"
|
||||
(name "bavier"))
|
||||
(;; primary: "8929 BBC5 73CD 9206 3DDD 979D 3D36 CAA0 116F 0F99"
|
||||
"1C9B F005 1A1A 6A44 5257 599A A949 03A1 66A1 8FAE"
|
||||
(name "bricewge"))
|
||||
(;; primary: "0401 7A2A 6D9A 0CCD C81D 8EC2 96AB 007F 1A7E D999"
|
||||
"09CD D25B 5244 A376 78F6 EEA8 0CC5 2153 1979 91A5"
|
||||
(name "carl"))
|
||||
@@ -37,9 +42,6 @@
|
||||
(;; primary: "2453 02B1 BAB1 F867 FDCA 96BC 8F3F 861F 82EB 7A9A"
|
||||
"CBC5 9C66 EC27 B971 7940 6B3E 6BE8 208A DF21 FE3F"
|
||||
(name "glv"))
|
||||
(;; primary: "220F 98D9 5E86 204C 0036 DA7B 6DEC 4360 408B 4185"
|
||||
"F4C2 D1DF 3FDE EA63 D1D3 0776 ACC6 6D09 CA52 8292"
|
||||
(name "hako"))
|
||||
("2219 43F4 9E9F 276F 9499 3382 BF28 6CB6 593E 5FFD"
|
||||
(name "hoebjo"))
|
||||
("B943 509D 633E 80DD 27FC 4EED 634A 8DFF D3F6 31DF"
|
||||
@@ -49,22 +51,22 @@
|
||||
(name "iyzsong"))
|
||||
("1A85 8392 E331 EAFD B8C2 7FFB F3C1 A0D9 C1D6 5273"
|
||||
(name "janneke"))
|
||||
("3B1D 7F19 E36B B60C 0F5B 2CA9 A52A A2B4 77B6 DD35"
|
||||
(name "jgart"))
|
||||
(;; primary: "1BA4 08C5 8BF2 0EA7 3179 635A 865D C0A3 DED9 B5D0"
|
||||
"E31D 9DDE EBA5 4A14 8A20 4550 DA45 97F9 47B4 1025"
|
||||
(name "jlicht"))
|
||||
("8141 6036 E81A 5CF7 8F80 1071 ECFC 8398 8B4E 4B9F"
|
||||
(name "jonsger"))
|
||||
("3924 8CD8 41C6 3CC3 36DC AF2F 505E 40B9 1617 1A8A"
|
||||
(name "jpoiret"))
|
||||
("017D 74E2 7F58 5696 3801 781D F663 943E 08D8 092A"
|
||||
(name "lbraun"))
|
||||
("CA4F 8CF4 37D7 478F DA05 5FD4 4213 7701 1A37 8446"
|
||||
(name "lbraun (professional)"))
|
||||
("ACC2 3BA0 59F7 CCF4 08F0 43AD 442A 84B8 C70E 2F87"
|
||||
(name "lilyp"))
|
||||
(;; primary: "4F71 6F9A 8FA2 C80E F1B5 E1BA 5E35 F231 DE1A C5E0"
|
||||
"B051 5948 F1E7 D3C1 B980 38A0 2646 FA30 BACA 7F08"
|
||||
(name "lfam"))
|
||||
("CBF5 9755 CBE7 E7EF EF18 3FB1 DD40 9A15 D822 469D"
|
||||
(name "marusich"))
|
||||
("BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA"
|
||||
(name "mbakke"))
|
||||
("D919 0965 CE03 199E AF28 B3BE 7CEF 2984 7562 C516"
|
||||
@@ -76,6 +78,8 @@
|
||||
(;; primary: "F5BC 5534 C36F 0087 B39D 36EF 1C9D C4FE B9DB 7C4B"
|
||||
"F5DA 2032 4B87 3D0B 7A38 7672 0DB0 FF88 4F55 6D79"
|
||||
(name "nckx"))
|
||||
("E576 BFB2 CF6E B13D F571 33B9 E315 A758 4613 1564"
|
||||
(name "niedzejkob"))
|
||||
("ED0E F1C8 E126 BA83 1B48 5FE9 DA00 B4F0 48E9 2F2D"
|
||||
(name "ngz"))
|
||||
("CEF4 CB91 4856 BA38 0A20 A7E2 3008 88CB 39C6 3817"
|
||||
@@ -83,9 +87,9 @@
|
||||
(;; primary: "41CA 12EA DE0C F33F 6885 A58F 5719 6E37 E00B 77FD"
|
||||
"72D5 3D81 8CB6 F4A1 7258 374C A8FC 9E44 7F4F 7D54"
|
||||
(name "planglois"))
|
||||
(;; primary: "7E9F 5BF6 1680 4367 127B 7A87 F9E6 9FB8 5A75 54F1"
|
||||
"A420 7B56 C255 109F 2CB3 157E 4990 97AE 5EA8 15D9"
|
||||
(name "podiki"))
|
||||
(;; primary: "B68B DF22 73F9 DA0E 63C1 8A32 515B F416 9242 D600"
|
||||
"C699 ED09 E51B CE89 FD1D A078 AAC7 E891 896B 568A"
|
||||
(name "pgarlick"))
|
||||
("CD2D 5EAA A98C CB37 DA91 D6B0 5F58 1664 7F8B E551"
|
||||
(name "raghavgururajan"))
|
||||
("BCA6 89B6 3655 3801 C3C6 2150 197A 5888 235F ACAC"
|
||||
@@ -107,6 +111,4 @@
|
||||
(name "vagrantc"))
|
||||
(;; primary: "C955 CC5D C048 7FB1 7966 40A9 199A F6A3 67E9 4ABB"
|
||||
"7238 7123 8EAC EB63 4548 5857 167F 8EA5 001A FA9C"
|
||||
(name "wigust"))
|
||||
("705A 29B7 01EE 410E B6F9 236E 92F1 D22C 608E E7E5"
|
||||
(name "zimoun"))))
|
||||
(name "wigust"))))
|
||||
|
||||
@@ -39,7 +39,6 @@ Joshua Grant <tadni@riseup.net> <gzg@riseup.net>
|
||||
Joshua Grant <tadni@riseup.net> <jgrant@parenthetical.io>
|
||||
Joshua Grant <tadni@riseup.net> <tadnimi@gmail.com>
|
||||
Joshua Grant <tadni@riseup.net> <youlysses@riseup.net>
|
||||
Juliana Sims <juli@incana.org> <jtsims@protonmail.com>
|
||||
Kei Kebreau <kkebreau@posteo.net>
|
||||
Leo Famulari <leo@famulari.name> <lfamular@gmail.com>
|
||||
Liliana Marie Prikler <liliana.prikler@gmail.com>
|
||||
|
||||
@@ -1,3 +0,0 @@
|
||||
((debbugs-host . "debbugs.gnu.org")
|
||||
(patch-email-address . "guix-patches@gnu.org")
|
||||
(mumi-host . "issues.guix.gnu.org"))
|
||||
@@ -1,10 +0,0 @@
|
||||
# This config file allows for Patchwork integration with
|
||||
# https://patches.guix-patches.cbaines.net/.
|
||||
|
||||
[settings]
|
||||
project: guix-patches
|
||||
patchwork_url: https://patches.guix-patches.cbaines.net
|
||||
add_signoff: False
|
||||
# TODO: enable check_patch
|
||||
check_patch: False
|
||||
ignore_bad_tags: True
|
||||
+20
-92
@@ -1,5 +1,5 @@
|
||||
# GNU Guix --- Functional package management for GNU
|
||||
# Copyright © 2012-2023 Ludovic Courtès <ludo@gnu.org>
|
||||
# Copyright © 2012-2022 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>
|
||||
@@ -7,14 +7,13 @@
|
||||
# Copyright © 2017 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
# Copyright © 2017 Leo Famulari <leo@famulari.name>
|
||||
# Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
|
||||
# Copyright © 2017, 2020, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
|
||||
# Copyright © 2017, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||
# Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
|
||||
# Copyright © 2018 Nikita <nikita@n0.is>
|
||||
# Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
|
||||
# Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
|
||||
# Copyright © 2018 Alex Vong <alexvong1995@gmail.com>
|
||||
# Copyright © 2019 Efraim Flashner <efraim@flashner.co.il>
|
||||
# Copyright © 2020, 2021, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
# Copyright © 2021 Chris Marusich <cmmarusich@gmail.com>
|
||||
# Copyright © 2021 Andrew Tropin <andrew@trop.in>
|
||||
#
|
||||
@@ -112,7 +111,6 @@ MODULES = \
|
||||
guix/derivations.scm \
|
||||
guix/grafts.scm \
|
||||
guix/repl.scm \
|
||||
guix/rpm.scm \
|
||||
guix/transformations.scm \
|
||||
guix/inferior.scm \
|
||||
guix/describe.scm \
|
||||
@@ -141,7 +139,6 @@ MODULES = \
|
||||
guix/platforms/riscv.scm \
|
||||
guix/platforms/x86.scm \
|
||||
guix/build-system.scm \
|
||||
guix/build-system/agda.scm \
|
||||
guix/build-system/android-ndk.scm \
|
||||
guix/build-system/ant.scm \
|
||||
guix/build-system/cargo.scm \
|
||||
@@ -156,7 +153,6 @@ MODULES = \
|
||||
guix/build-system/font.scm \
|
||||
guix/build-system/go.scm \
|
||||
guix/build-system/meson.scm \
|
||||
guix/build-system/mozilla.scm \
|
||||
guix/build-system/minify.scm \
|
||||
guix/build-system/minetest.scm \
|
||||
guix/build-system/asdf.scm \
|
||||
@@ -182,7 +178,6 @@ MODULES = \
|
||||
guix/build-system/ruby.scm \
|
||||
guix/build-system/scons.scm \
|
||||
guix/build-system/texlive.scm \
|
||||
guix/build-system/tree-sitter.scm \
|
||||
guix/build-system/trivial.scm \
|
||||
guix/ftp-client.scm \
|
||||
guix/http-client.scm \
|
||||
@@ -197,7 +192,6 @@ MODULES = \
|
||||
guix/diagnostics.scm \
|
||||
guix/ui.scm \
|
||||
guix/status.scm \
|
||||
guix/build/agda-build-system.scm \
|
||||
guix/build/android-ndk-build-system.scm \
|
||||
guix/build/ant-build-system.scm \
|
||||
guix/build/download.scm \
|
||||
@@ -240,11 +234,9 @@ MODULES = \
|
||||
guix/build/ruby-build-system.scm \
|
||||
guix/build/scons-build-system.scm \
|
||||
guix/build/texlive-build-system.scm \
|
||||
guix/build/tree-sitter-build-system.scm \
|
||||
guix/build/waf-build-system.scm \
|
||||
guix/build/haskell-build-system.scm \
|
||||
guix/build/julia-build-system.scm \
|
||||
guix/build/kconfig.scm \
|
||||
guix/build/linux-module-build-system.scm \
|
||||
guix/build/store-copy.scm \
|
||||
guix/build/json.scm \
|
||||
@@ -296,7 +288,6 @@ MODULES = \
|
||||
guix/import/print.scm \
|
||||
guix/import/pypi.scm \
|
||||
guix/import/stackage.scm \
|
||||
guix/import/test.scm \
|
||||
guix/import/texlive.scm \
|
||||
guix/import/utils.scm \
|
||||
guix/scripts.scm \
|
||||
@@ -306,7 +297,6 @@ MODULES = \
|
||||
guix/scripts/archive.scm \
|
||||
guix/scripts/import.scm \
|
||||
guix/scripts/package.scm \
|
||||
guix/scripts/locate.scm \
|
||||
guix/scripts/install.scm \
|
||||
guix/scripts/remove.scm \
|
||||
guix/scripts/upgrade.scm \
|
||||
@@ -333,7 +323,6 @@ MODULES = \
|
||||
guix/scripts/lint.scm \
|
||||
guix/scripts/challenge.scm \
|
||||
guix/scripts/import/crate.scm \
|
||||
guix/scripts/import/cpan.scm \
|
||||
guix/scripts/import/cran.scm \
|
||||
guix/scripts/import/egg.scm \
|
||||
guix/scripts/import/elm.scm \
|
||||
@@ -410,14 +399,10 @@ AUX_FILES = \
|
||||
gnu/packages/aux-files/chromium/master-preferences.json \
|
||||
gnu/packages/aux-files/emacs/guix-emacs.el \
|
||||
gnu/packages/aux-files/guix.vim \
|
||||
gnu/packages/aux-files/linux-libre/6.4-arm.conf \
|
||||
gnu/packages/aux-files/linux-libre/6.4-arm64.conf \
|
||||
gnu/packages/aux-files/linux-libre/6.4-i686.conf \
|
||||
gnu/packages/aux-files/linux-libre/6.4-x86_64.conf \
|
||||
gnu/packages/aux-files/linux-libre/6.1-arm.conf \
|
||||
gnu/packages/aux-files/linux-libre/6.1-arm64.conf \
|
||||
gnu/packages/aux-files/linux-libre/6.1-i686.conf \
|
||||
gnu/packages/aux-files/linux-libre/6.1-x86_64.conf \
|
||||
gnu/packages/aux-files/linux-libre/6.0-arm.conf \
|
||||
gnu/packages/aux-files/linux-libre/6.0-arm64.conf \
|
||||
gnu/packages/aux-files/linux-libre/6.0-i686.conf \
|
||||
gnu/packages/aux-files/linux-libre/6.0-x86_64.conf \
|
||||
gnu/packages/aux-files/linux-libre/5.15-arm.conf \
|
||||
gnu/packages/aux-files/linux-libre/5.15-arm64.conf \
|
||||
gnu/packages/aux-files/linux-libre/5.15-i686.conf \
|
||||
@@ -437,13 +422,14 @@ AUX_FILES = \
|
||||
gnu/packages/aux-files/linux-libre/4.14-arm.conf \
|
||||
gnu/packages/aux-files/linux-libre/4.14-i686.conf \
|
||||
gnu/packages/aux-files/linux-libre/4.14-x86_64.conf \
|
||||
gnu/packages/aux-files/linux-libre/4.9-i686.conf \
|
||||
gnu/packages/aux-files/linux-libre/4.9-x86_64.conf \
|
||||
gnu/packages/aux-files/pack-audit.c \
|
||||
gnu/packages/aux-files/python/sanity-check.py \
|
||||
gnu/packages/aux-files/python/sanity-check-next.py \
|
||||
gnu/packages/aux-files/python/sitecustomize.py \
|
||||
gnu/packages/aux-files/renpy/renpy.in \
|
||||
gnu/packages/aux-files/run-in-namespace.c \
|
||||
gnu/packages/aux-files/xml/patch-catalog-xml.xsl \
|
||||
gnu/packages/aux-files/xml/docbook-xml/catalog-4.1.2.xml
|
||||
gnu/packages/aux-files/run-in-namespace.c
|
||||
|
||||
# Templates, examples.
|
||||
EXAMPLES = \
|
||||
@@ -454,9 +440,6 @@ EXAMPLES = \
|
||||
gnu/system/examples/desktop.tmpl \
|
||||
gnu/system/examples/lightweight-desktop.tmpl \
|
||||
gnu/system/examples/docker-image.tmpl \
|
||||
gnu/system/examples/plasma.tmpl \
|
||||
gnu/system/examples/raspberry-pi-64.tmpl \
|
||||
gnu/system/examples/raspberry-pi-64-nfs-root.tmpl \
|
||||
gnu/system/examples/vm-image.tmpl
|
||||
|
||||
GOBJECTS = $(MODULES:%.scm=%.go) guix/config.go $(dist_noinst_DATA:%.scm=%.go)
|
||||
@@ -548,7 +531,6 @@ SCM_TESTS = \
|
||||
tests/pypi.scm \
|
||||
tests/read-print.scm \
|
||||
tests/records.scm \
|
||||
tests/rpm.scm \
|
||||
tests/scripts.scm \
|
||||
tests/search-paths.scm \
|
||||
tests/services.scm \
|
||||
@@ -556,9 +538,7 @@ SCM_TESTS = \
|
||||
tests/services/configuration.scm \
|
||||
tests/services/lightdm.scm \
|
||||
tests/services/linux.scm \
|
||||
tests/services/pam-mount.scm \
|
||||
tests/services/telephony.scm \
|
||||
tests/services/vpn.scm \
|
||||
tests/sets.scm \
|
||||
tests/size.scm \
|
||||
tests/status.scm \
|
||||
@@ -599,7 +579,6 @@ SH_TESTS = \
|
||||
tests/guix-gc.sh \
|
||||
tests/guix-git-authenticate.sh \
|
||||
tests/guix-hash.sh \
|
||||
tests/guix-locate.sh \
|
||||
tests/guix-pack.sh \
|
||||
tests/guix-pack-localstatedir.sh \
|
||||
tests/guix-pack-relocatable.sh \
|
||||
@@ -613,10 +592,8 @@ SH_TESTS = \
|
||||
tests/guix-authenticate.sh \
|
||||
tests/guix-environment.sh \
|
||||
tests/guix-environment-container.sh \
|
||||
tests/guix-refresh.sh \
|
||||
tests/guix-shell.sh \
|
||||
tests/guix-shell-export-manifest.sh \
|
||||
tests/guix-time-machine.sh \
|
||||
tests/guix-graph.sh \
|
||||
tests/guix-describe.sh \
|
||||
tests/guix-repl.sh \
|
||||
@@ -698,7 +675,8 @@ EXTRA_DIST += \
|
||||
build-aux/compile-all.scm \
|
||||
build-aux/compile-as-derivation.scm \
|
||||
build-aux/config.rpath \
|
||||
build-aux/convert-xref.scm \
|
||||
build-aux/convert-xref.scm \
|
||||
build-aux/cuirass/hurd-manifest.scm \
|
||||
build-aux/generate-authors.scm \
|
||||
build-aux/test-driver.scm \
|
||||
build-aux/update-NEWS.scm \
|
||||
@@ -708,8 +686,6 @@ EXTRA_DIST += \
|
||||
etc/guix-install.sh \
|
||||
etc/historical-authorizations \
|
||||
etc/news.scm \
|
||||
etc/hurd-manifest.scm \
|
||||
etc/kernels-manifest.scm \
|
||||
etc/release-manifest.scm \
|
||||
etc/source-manifest.scm \
|
||||
etc/system-tests.scm \
|
||||
@@ -776,30 +752,15 @@ endef
|
||||
# in <https://issues.guix.gnu.org/48963>. Each 'eval' call below creates a
|
||||
# 'make-*-go' phony target that builds the corresponding subset.
|
||||
|
||||
first_fifth := \
|
||||
gnu/packages/a% gnu/packages/b% gnu/packages/c%
|
||||
|
||||
second_fifth := \
|
||||
gnu/packages/d% gnu/packages/e% gnu/packages/f%
|
||||
|
||||
third_fifth := \
|
||||
gnu/packages/g% gnu/packages/h% gnu/packages/i%
|
||||
|
||||
fourth_fifth := \
|
||||
gnu/packages/j% gnu/packages/k% gnu/packages/l% gnu/packages/m% \
|
||||
gnu/packages/n% gnu/packages/o%
|
||||
first_half := \
|
||||
gnu/packages/a% gnu/packages/b% gnu/packages/c% gnu/packages/d% \
|
||||
gnu/packages/e% gnu/packages/f% gnu/packages/g% gnu/packages/h% \
|
||||
gnu/packages/i% gnu/packages/j% gnu/packages/k% gnu/packages/l%
|
||||
|
||||
MODULES_CORE := guix.scm $(filter-out guix/scripts/%,$(filter guix/%,$(MODULES)))
|
||||
MODULES_PACKAGES1 := $(filter $(first_fifth),$(MODULES))
|
||||
MODULES_PACKAGES2 := $(filter $(second_fifth),$(MODULES))
|
||||
MODULES_PACKAGES3 := $(filter $(third_fifth),$(MODULES))
|
||||
MODULES_PACKAGES4 := $(filter $(fourth_fifth),$(MODULES))
|
||||
MODULES_PACKAGES5 := $(filter-out $(first_fifth) $(second_fifth) \
|
||||
$(third_fifth) $(fourth_fifth), \
|
||||
$(filter gnu/packages/%,$(MODULES)))
|
||||
MODULES_PACKAGES := $(MODULES_PACKAGES1) $(MODULES_PACKAGES2) \
|
||||
$(MODULES_PACKAGES3) $(MODULES_PACKAGES4) \
|
||||
$(MODULES_PACKAGES5)
|
||||
MODULES_PACKAGES1 := $(filter $(first_half),$(MODULES))
|
||||
MODULES_PACKAGES2 := $(filter-out $(first_half),$(filter gnu/packages/%,$(MODULES)))
|
||||
MODULES_PACKAGES := $(MODULES_PACKAGES1) $(MODULES_PACKAGES2)
|
||||
MODULES_SYSTEM := gnu.scm $(filter-out gnu/packages/%,$(filter gnu/%,$(MODULES)))
|
||||
MODULES_CLI := $(filter guix/scripts/%,$(MODULES))
|
||||
MODULES_PO := guix/build/po.scm
|
||||
@@ -819,27 +780,7 @@ $(eval $(call guile-compilation-rule,make-packages2-go, \
|
||||
$(words $(MODULES_CORE) $(MODULES_PACKAGES1))))
|
||||
.PHONY: make-packages2-go
|
||||
|
||||
$(eval $(call guile-compilation-rule,make-packages3-go, \
|
||||
$(MODULES_PACKAGES3) make-core-go make-packages1-go make-packages2-go, \
|
||||
$(words $(MODULES_CORE) $(MODULES_PACKAGES1) $(MODULES_PACKAGES2))))
|
||||
.PHONY: make-packages3-go
|
||||
|
||||
$(eval $(call guile-compilation-rule,make-packages4-go, \
|
||||
$(MODULES_PACKAGES4) make-core-go make-packages1-go make-packages2-go \
|
||||
make-packages3-go, \
|
||||
$(words $(MODULES_CORE) $(MODULES_PACKAGES1) $(MODULES_PACKAGES2) \
|
||||
$(MODULES_PACKAGES3))))
|
||||
.PHONY: make-packages4-go
|
||||
|
||||
$(eval $(call guile-compilation-rule,make-packages5-go, \
|
||||
$(MODULES_PACKAGES5) make-core-go make-packages1-go make-packages2-go \
|
||||
make-packages3-go make-packages4-go, \
|
||||
$(words $(MODULES_CORE) $(MODULES_PACKAGES1) $(MODULES_PACKAGES2) \
|
||||
$(MODULES_PACKAGES3) $(MODULES_PACKAGES4))))
|
||||
.PHONY: make-packages5-go
|
||||
|
||||
make-packages-go: make-packages1-go make-packages2-go \
|
||||
make-packages3-go make-packages4-go make-packages5-go
|
||||
make-packages-go: make-packages1-go make-packages2-go
|
||||
.PHONY: make-packages-go
|
||||
|
||||
$(eval $(call guile-compilation-rule,make-system-go, \
|
||||
@@ -1156,19 +1097,6 @@ cuirass-jobs: $(GOBJECTS)
|
||||
.PHONY: clean-go make-go as-derivation authenticate
|
||||
.PHONY: update-guix-package update-NEWS cuirass-jobs release
|
||||
|
||||
# Git auto-configuration.
|
||||
.git/hooks/pre-push: etc/git/pre-push
|
||||
$(AM_V_at)if test -d .git; then \
|
||||
cp etc/git/pre-push .git/hooks/pre-push; \
|
||||
fi
|
||||
|
||||
.git/config: etc/git/gitconfig
|
||||
$(AM_V_at)if command -v git >/dev/null && test -d .git; then \
|
||||
git config --add include.path ../etc/git/gitconfig; \
|
||||
fi
|
||||
|
||||
nodist_noinst_DATA = .git/hooks/pre-push .git/config
|
||||
|
||||
# Downloading up-to-date PO files.
|
||||
|
||||
WEBLATE_REPO = https://framagit.org/tyreunom/guix-translations
|
||||
|
||||
@@ -13,9 +13,6 @@ Copyright © 2022 Mathieu Othacehe <othacehe@gnu.org>
|
||||
|
||||
Please send Guix bug reports to bug-guix@gnu.org.
|
||||
|
||||
* Changes in 1.5.0 (since 1.4.0)
|
||||
** Package management
|
||||
*** New ‘rpm’ format for the ‘guix pack’ command
|
||||
* Changes in 1.4.0 (since 1.3.0)
|
||||
** Package management
|
||||
*** New ‘guix home’ command, for home environment management
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2020, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -31,7 +31,7 @@
|
||||
(srfi srfi-1))
|
||||
|
||||
(use-package-modules
|
||||
base bootloaders commencement compression file gawk gdb gettext guile
|
||||
base commencement compression file gawk gdb gettext guile
|
||||
hurd less m4 package-management python ssh version-control)
|
||||
|
||||
(define (input->package input)
|
||||
@@ -64,14 +64,11 @@
|
||||
|
||||
;; development packages
|
||||
gcc-toolchain gdb-minimal git-minimal gnu-make
|
||||
gettext-minimal python-minimal
|
||||
|
||||
;; ourselves!
|
||||
(package-without-tests guix)
|
||||
|
||||
;; system
|
||||
grub-minimal grub
|
||||
;; guix environment guix --without-tests=python-minimal --without-tests=gettext-minimal
|
||||
(package-without-tests gettext-minimal)
|
||||
(package-without-tests python-minimal)
|
||||
|
||||
(append
|
||||
guix-dependencies
|
||||
%base-packages/hurd)))
|
||||
(delete guile-3.0 %base-packages/hurd))))
|
||||
+204
-16
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2019-2023 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2019-2025 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
|
||||
;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
;;;
|
||||
@@ -34,6 +34,7 @@
|
||||
(guix profiles)
|
||||
(guix utils)
|
||||
(git)
|
||||
(gnu packages)
|
||||
(gnu packages base)
|
||||
(gnu packages compression)
|
||||
(gnu packages gawk)
|
||||
@@ -52,8 +53,116 @@
|
||||
(define file-append*
|
||||
(@@ (guix self) file-append*))
|
||||
|
||||
(define translated-texi-manuals
|
||||
(@@ (guix self) translate-texi-manuals))
|
||||
(define (translated-texi-manuals source)
|
||||
"Return the translated texinfo manuals built from SOURCE."
|
||||
(define po4a
|
||||
(specification->package "po4a"))
|
||||
|
||||
(define gettext-minimal
|
||||
(specification->package "gettext-minimal"))
|
||||
|
||||
(define documentation
|
||||
(file-append* source "doc"))
|
||||
|
||||
(define documentation-po
|
||||
(file-append* source "po/doc"))
|
||||
|
||||
(define build
|
||||
(with-imported-modules '((guix build utils) (guix build po))
|
||||
#~(begin
|
||||
(use-modules (guix build utils) (guix build po)
|
||||
(ice-9 match) (ice-9 regex) (ice-9 textual-ports)
|
||||
(ice-9 vlist) (ice-9 threads)
|
||||
(srfi srfi-1))
|
||||
|
||||
(define (translate-tmp-texi po source output)
|
||||
"Translate Texinfo file SOURCE using messages from PO, and write
|
||||
the result to OUTPUT."
|
||||
(invoke #+(file-append po4a "/bin/po4a-translate")
|
||||
"-M" "UTF-8" "-L" "UTF-8" "-k" "0" "-f" "texinfo"
|
||||
"-m" source "-p" po "-l" output))
|
||||
|
||||
(define (canonicalize-whitespace str)
|
||||
;; Change whitespace (newlines, etc.) in STR to #\space.
|
||||
(string-map (lambda (chr)
|
||||
(if (char-set-contains? char-set:whitespace chr)
|
||||
#\space
|
||||
chr))
|
||||
str))
|
||||
|
||||
(define* (translate-texi prefix po lang
|
||||
#:key (extras '()))
|
||||
"Translate the manual for one language LANG using the PO file.
|
||||
PREFIX must be the prefix of the manual, 'guix' or 'guix-cookbook'. EXTRAS is
|
||||
a list of extra files, such as '(\"contributing\")."
|
||||
(for-each (lambda (file)
|
||||
(translate-tmp-texi po (string-append file ".texi")
|
||||
(string-append file "." lang
|
||||
".texi.tmp")))
|
||||
(cons prefix extras))
|
||||
|
||||
(for-each (lambda (file)
|
||||
(let* ((texi (string-append file "." lang ".texi"))
|
||||
(tmp (string-append texi ".tmp")))
|
||||
(copy-file tmp texi)
|
||||
(translate-cross-references texi po)))
|
||||
(cons prefix extras)))
|
||||
|
||||
(define (available-translations directory domain)
|
||||
;; Return the list of available translations under DIRECTORY for
|
||||
;; DOMAIN, a gettext domain such as "guix-manual". The result is
|
||||
;; a list of language/PO file pairs.
|
||||
(filter-map (lambda (po)
|
||||
(let ((base (basename po)))
|
||||
(and (string-prefix? (string-append domain ".")
|
||||
base)
|
||||
(match (string-split base #\.)
|
||||
((_ ... lang "po")
|
||||
(cons lang po))))))
|
||||
(find-files directory
|
||||
"\\.[a-z]{2}(_[A-Z]{2})?\\.po$")))
|
||||
|
||||
(define parallel-jobs
|
||||
;; Limit thread creation by 'n-par-for-each', mostly to put an
|
||||
;; upper bound on memory usage.
|
||||
(min (parallel-job-count) 4))
|
||||
|
||||
(mkdir #$output)
|
||||
(copy-recursively #$documentation "."
|
||||
#:log (%make-void-port "w"))
|
||||
|
||||
(for-each
|
||||
(lambda (file)
|
||||
(copy-file file (basename file)))
|
||||
(find-files #$documentation-po ".*.po$"))
|
||||
|
||||
(setenv "GUIX_LOCPATH"
|
||||
#+(file-append glibc-utf8-locales "/lib/locale"))
|
||||
(setenv "PATH" #+(file-append gettext-minimal "/bin"))
|
||||
(setenv "LC_ALL" "en_US.UTF-8")
|
||||
(setlocale LC_ALL "en_US.UTF-8")
|
||||
|
||||
(n-par-for-each parallel-jobs
|
||||
(match-lambda
|
||||
((language . po)
|
||||
(translate-texi "guix" po language
|
||||
#:extras '("contributing"))))
|
||||
(available-translations "." "guix-manual"))
|
||||
|
||||
(n-par-for-each parallel-jobs
|
||||
(match-lambda
|
||||
((language . po)
|
||||
(translate-texi "guix-cookbook" po language)))
|
||||
(available-translations "." "guix-cookbook"))
|
||||
|
||||
(for-each (lambda (file)
|
||||
(install-file file #$output))
|
||||
(append
|
||||
(find-files "." "contributing\\..*\\.texi$")
|
||||
(find-files "." "guix\\..*\\.texi$")
|
||||
(find-files "." "guix-cookbook\\..*\\.texi$"))))))
|
||||
|
||||
(computed-file "guix-translated-texinfo" build))
|
||||
|
||||
(define info-manual
|
||||
(@@ (guix self) info-manual))
|
||||
@@ -78,6 +187,10 @@
|
||||
%cookbook-languages
|
||||
%manual-languages))
|
||||
|
||||
(define %latest-guix-version
|
||||
;; Latest released version.
|
||||
"1.4.0")
|
||||
|
||||
(define (texinfo-manual-images source)
|
||||
"Return a directory containing all the images used by the user manual, taken
|
||||
from SOURCE, the root of the source tree."
|
||||
@@ -184,11 +297,16 @@ as well as images, OS examples, and translations."
|
||||
(define %web-site-url
|
||||
;; URL of the web site home page.
|
||||
(or (getenv "GUIX_WEB_SITE_URL")
|
||||
"/software/guix/"))
|
||||
"/"))
|
||||
|
||||
(define %manual-css-url
|
||||
;; URL of the main CSS file.
|
||||
(in-vicinity %web-site-url
|
||||
"themes/initial/css/manual.css"))
|
||||
|
||||
(define %makeinfo-html-options
|
||||
;; Options passed to 'makeinfo --html'.
|
||||
'("--css-ref=https://www.gnu.org/software/gnulib/manual.css"
|
||||
`(,(string-append "--css-ref=" %manual-css-url)
|
||||
"-c" "EXTRA_HEAD=<meta name=\"viewport\" \
|
||||
content=\"width=device-width, initial-scale=1\" />"))
|
||||
|
||||
@@ -622,9 +740,10 @@ its <pre class=\"lisp\"> blocks (as produced by 'makeinfo --html')."
|
||||
|
||||
(define* (stylized-html source input
|
||||
#:key
|
||||
(latest-version %latest-guix-version)
|
||||
(languages %languages)
|
||||
(manual %manual)
|
||||
(manual-css-url "/static/base/css/manual.css"))
|
||||
(manual-css-url %manual-css-url))
|
||||
"Process all the HTML files in INPUT; add them MANUAL-CSS-URL as a <style>
|
||||
link, and add a menu to choose among LANGUAGES. Use the Guix PO files found
|
||||
in SOURCE."
|
||||
@@ -670,6 +789,14 @@ in SOURCE."
|
||||
(href ,url))
|
||||
,label)))
|
||||
|
||||
(define menu-item-separator
|
||||
;; Thin horizontal line to separate drop-down menu items.
|
||||
`(img (@ (class "hline")
|
||||
(src ,(in-vicinity
|
||||
#$%web-site-url
|
||||
"themes/initial/img/h-separator.png"))
|
||||
(alt ""))))
|
||||
|
||||
(define* (navigation-bar menus #:key split-node?)
|
||||
;; Return the navigation bar showing all of MENUS.
|
||||
`(header (@ (class "navbar"))
|
||||
@@ -716,7 +843,43 @@ in SOURCE."
|
||||
"https://translate.fedoraproject.org/projects/guix/documentation-cookbook/"
|
||||
"https://translate.fedoraproject.org/projects/guix/documentation-manual/")))))
|
||||
|
||||
(define (stylized-html sxml file)
|
||||
(define (version-menu-items language split-node?)
|
||||
;; Return the menu items to select the version of the manual of
|
||||
;; the type of medium (PDF, split-node, etc.).
|
||||
(define language-extension
|
||||
(if (string=? language "en")
|
||||
""
|
||||
(string-append "." language)))
|
||||
|
||||
(define pdf-link
|
||||
(string-append (if split-node? "../" "")
|
||||
#$manual language-extension ".pdf"))
|
||||
|
||||
(define version-links
|
||||
(list (menu-item #$latest-version
|
||||
(string-append
|
||||
"/manual/" #$latest-version
|
||||
"/" language
|
||||
(if split-node? "/html_node" "")))
|
||||
(menu-item "development"
|
||||
(string-append
|
||||
"/manual/devel/" language
|
||||
(if split-node? "/html_node" "")))
|
||||
menu-item-separator))
|
||||
|
||||
(append (if (string=? #$manual "guix")
|
||||
version-links
|
||||
'())
|
||||
(list (if split-node?
|
||||
(menu-item "single page"
|
||||
(string-append "../" #$manual
|
||||
language-extension
|
||||
".html"))
|
||||
(menu-item "multiple pages"
|
||||
"html_node"))
|
||||
(menu-item "PDF" pdf-link))))
|
||||
|
||||
(define (stylized-html sxml file language)
|
||||
;; Return SXML, which was read from FILE, with additional
|
||||
;; styling.
|
||||
(define split-node?
|
||||
@@ -739,9 +902,16 @@ in SOURCE."
|
||||
;; TODO: Add "Contribute" menu, to report
|
||||
;; errors, etc.
|
||||
(list (menu-dropdown
|
||||
#:label "Version"
|
||||
#:items
|
||||
(version-menu-items language
|
||||
split-node?))
|
||||
(menu-dropdown
|
||||
#:label
|
||||
`(img (@ (alt "Language")
|
||||
(src "/static/base/img/language-picker.svg")))
|
||||
(src #$(in-vicinity
|
||||
%web-site-url
|
||||
"themes/initial/img/language-picker.svg"))))
|
||||
#:items
|
||||
(language-menu-items file)))
|
||||
#:split-node? split-node?)
|
||||
@@ -753,13 +923,13 @@ in SOURCE."
|
||||
((? string? str)
|
||||
str))))
|
||||
|
||||
(define (process-html file)
|
||||
(define (process-html file language)
|
||||
;; Parse FILE and add links to translations. Install the result
|
||||
;; to #$output.
|
||||
(format (current-error-port) "processing ~a...~%" file)
|
||||
(let* ((shtml (parameterize ((%strict-tokenizer? #t))
|
||||
(call-with-input-file file html->shtml)))
|
||||
(processed (stylized-html shtml file))
|
||||
(processed (stylized-html shtml file language))
|
||||
(base (string-drop file (string-length #$input)))
|
||||
(target (string-append #$output base)))
|
||||
(mkdir-p (dirname target))
|
||||
@@ -767,6 +937,15 @@ in SOURCE."
|
||||
(lambda (port)
|
||||
(write-shtml-as-html processed port)))))
|
||||
|
||||
(define (input-file-language file)
|
||||
;; Return the language code of FILE, an input file, as a string
|
||||
;; like "sv" or "zh-cn".
|
||||
(match (string-tokenize (string-drop file
|
||||
(string-length #$input))
|
||||
(char-set-complement
|
||||
(char-set #\/)))
|
||||
((language _ ...) language)))
|
||||
|
||||
;; Install a UTF-8 locale so we can process UTF-8 files.
|
||||
(setenv "GUIX_LOCPATH"
|
||||
#+(file-append glibc-utf8-locales "/lib/locale"))
|
||||
@@ -777,7 +956,8 @@ in SOURCE."
|
||||
(n-par-for-each (parallel-job-count)
|
||||
(lambda (file)
|
||||
(if (string-suffix? ".html" file)
|
||||
(process-html file)
|
||||
(let ((language (input-file-language file)))
|
||||
(process-html file language))
|
||||
;; Copy FILE as is to #$output.
|
||||
(let* ((base (string-drop file (string-length #$input)))
|
||||
(target (string-append #$output base)))
|
||||
@@ -844,7 +1024,8 @@ makeinfo OPTIONS."
|
||||
(let* ((texi (language->texi-file-name language))
|
||||
(opts `("--html"
|
||||
"-c" ,(string-append "TOP_NODE_UP_URL=/manual/"
|
||||
language)
|
||||
#$%latest-guix-version
|
||||
"/" language)
|
||||
#$@options
|
||||
,texi)))
|
||||
(format #t "building HTML manual for language '~a'...~%"
|
||||
@@ -912,8 +1093,11 @@ makeinfo OPTIONS."
|
||||
sed
|
||||
tar
|
||||
texinfo
|
||||
(texlive-updmap.cfg
|
||||
(list texlive-epsf texlive-texinfo)))))))
|
||||
texlive-scheme-basic
|
||||
texlive-bin ;for GUIX_TEXMF
|
||||
texlive-epsf
|
||||
texlive-ec
|
||||
texlive-texinfo)))))
|
||||
|
||||
(define build
|
||||
(with-imported-modules '((guix build utils))
|
||||
@@ -1299,6 +1483,7 @@ commit date (an integer)."
|
||||
(setenv "PATH"
|
||||
(string-append #+tar "/bin:"
|
||||
#+xz "/bin:"
|
||||
#+zstd "/bin:"
|
||||
#+texinfo "/bin"))
|
||||
(invoke "tar" "xf" #$(package-source guile))
|
||||
(mkdir-p (string-append #$output "/en/html_node"))
|
||||
@@ -1362,7 +1547,9 @@ by 'html-identifier-indexes'."
|
||||
|
||||
|
||||
(let* ((root (canonicalize-path
|
||||
(string-append (current-source-directory) "/..")))
|
||||
(string-append (or (current-source-directory)
|
||||
(string-append (getcwd) "/doc"))
|
||||
"/..")))
|
||||
(commit date (latest-commit+date root))
|
||||
(version (or (getenv "GUIX_MANUAL_VERSION")
|
||||
(string-take commit 7)))
|
||||
@@ -1409,7 +1596,8 @@ by 'html-identifier-indexes'."
|
||||
(merge-index-alists guix-split-node-indexes guile-split-node-indexes))
|
||||
|
||||
(format (current-error-port)
|
||||
"building manual from work tree around commit ~a, ~a~%"
|
||||
"building manual from work tree (~a) around commit ~a, ~a~%"
|
||||
root
|
||||
commit
|
||||
(let* ((time (make-time time-utc 0 date))
|
||||
(date (time-utc->date time)))
|
||||
|
||||
+171
-253
@@ -26,7 +26,7 @@ choice.
|
||||
* Packaging Guidelines:: Growing the distribution.
|
||||
* Coding Style:: Hygiene of the contributor.
|
||||
* Submitting Patches:: Share your work.
|
||||
* Tracking Bugs and Changes:: Keeping it all organized.
|
||||
* Tracking Bugs and Patches:: Keeping it all organized.
|
||||
* Commit Access:: Pushing to the official repository.
|
||||
* Updating the Guix Package:: Updating the Guix package definition.
|
||||
* Writing Documentation:: Improving documentation in GNU Guix.
|
||||
@@ -130,16 +130,14 @@ more information.
|
||||
Then, run:
|
||||
|
||||
@example
|
||||
./configure --localstatedir=/var --sysconfdir=/etc
|
||||
./configure --localstatedir=/var
|
||||
@end example
|
||||
|
||||
@noindent
|
||||
... where @file{/var} is the normal @code{localstatedir} value
|
||||
(@pxref{The Store}, for information about this) and @file{/etc} is the
|
||||
normal @code{sysconfdir} value. Note that you will probably not run
|
||||
@command{make install} at the end (you don't have to) but it's still
|
||||
important to pass the right @code{localstatedir} and @code{sysconfdir}
|
||||
values, which get recorded in the @code{(guix config)} Guile module.
|
||||
(@pxref{The Store}, for information about this). Note that you will
|
||||
probably not run @command{make install} at the end (you don't have to)
|
||||
but it's still important to pass the right @code{localstatedir}.
|
||||
|
||||
Finally, you can build Guix and, if you feel so inclined, run the tests
|
||||
(@pxref{Running the Test Suite}):
|
||||
@@ -300,10 +298,15 @@ Geiser allows for interactive and incremental development from within
|
||||
Emacs: code compilation and evaluation from within buffers, access to
|
||||
on-line documentation (docstrings), context-sensitive completion,
|
||||
@kbd{M-.} to jump to an object definition, a REPL to try out your code,
|
||||
and more (@pxref{Introduction,,, geiser, Geiser User Manual}). If you
|
||||
allow Emacs to load the @file{.dir-locals.el} file at the root of the
|
||||
project checkout, it will cause Geiser to automatically add the local
|
||||
Guix sources to the Guile load path.
|
||||
and more (@pxref{Introduction,,, geiser, Geiser User Manual}). For
|
||||
convenient Guix development, make sure to augment Guile’s load path so
|
||||
that it finds source files from your checkout:
|
||||
|
||||
@lisp
|
||||
;; @r{Assuming the Guix checkout is in ~/src/guix.}
|
||||
(with-eval-after-load 'geiser-guile
|
||||
(add-to-list 'geiser-guile-load-path "~/src/guix"))
|
||||
@end lisp
|
||||
|
||||
To actually edit the code, Emacs already has a neat Scheme mode. But in
|
||||
addition to that, you must not miss
|
||||
@@ -612,7 +615,7 @@ A typical package definition may look like this:
|
||||
)))
|
||||
@end lisp
|
||||
|
||||
@deffn {Procedure} git-version @var{VERSION} @var{REVISION} @var{COMMIT}
|
||||
@deffn {Scheme Procedure} git-version @var{VERSION} @var{REVISION} @var{COMMIT}
|
||||
Return the version string for packages using @code{git-fetch}.
|
||||
|
||||
@lisp
|
||||
@@ -621,7 +624,7 @@ Return the version string for packages using @code{git-fetch}.
|
||||
@end lisp
|
||||
@end deffn
|
||||
|
||||
@deffn {Procedure} hg-version @var{VERSION} @var{REVISION} @var{CHANGESET}
|
||||
@deffn {Scheme Procedure} hg-version @var{VERSION} @var{REVISION} @var{CHANGESET}
|
||||
Return the version string for packages using @code{hg-fetch}. It works
|
||||
in the same way as @code{git-version}.
|
||||
@end deffn
|
||||
@@ -773,8 +776,9 @@ 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}. Python 2 packages are being removed from the
|
||||
distribution; please do no not submit any new Python 2 packages.
|
||||
@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.
|
||||
|
||||
If a project already contains the word @code{python}, we drop this;
|
||||
for instance, the module python-dateutil is packaged under the names
|
||||
@@ -965,7 +969,7 @@ When the @var{author} contains hyphens or uppercase letters, as with
|
||||
The module @code{(guix build-system elm)} provides the following utilities for
|
||||
working with names and related conventions:
|
||||
|
||||
@deffn {Procedure} elm-package-origin @var{elm-name} @var{version} @
|
||||
@deffn {Scheme procedure} elm-package-origin @var{elm-name} @var{version} @
|
||||
@var{hash}
|
||||
Returns a Git origin using the repository naming and tagging regime required
|
||||
for a published Elm package with the upstream name @var{elm-name} at version
|
||||
@@ -985,7 +989,7 @@ For example:
|
||||
@end lisp
|
||||
@end deffn
|
||||
|
||||
@deffn {Procedure} elm->package-name @var{elm-name}
|
||||
@deffn {Scheme procedure} elm->package-name @var{elm-name}
|
||||
Returns the Guix-style package name for an Elm package with upstream name
|
||||
@var{elm-name}.
|
||||
|
||||
@@ -993,13 +997,13 @@ Note that there is more than one possible @var{elm-name} for which
|
||||
@code{elm->package-name} will produce a given result.
|
||||
@end deffn
|
||||
|
||||
@deffn {Procedure} guix-package->elm-name @var{package}
|
||||
@deffn {Scheme procedure} guix-package->elm-name @var{package}
|
||||
Given an Elm @var{package}, returns the possibly-inferred upstream name, or
|
||||
@code{#f} the upstream name is not specified via the @code{'upstream-name}
|
||||
property and can not be inferred by @code{infer-elm-package-name}.
|
||||
@end deffn
|
||||
|
||||
@deffn {Procedure} infer-elm-package-name @var{guix-name}
|
||||
@deffn {Scheme procedure} infer-elm-package-name @var{guix-name}
|
||||
Given the @var{guix-name} of an Elm package, returns the inferred upstream
|
||||
name, or @code{#f} if the upstream name can't be inferred. If the result is
|
||||
not @code{#f}, supplying it to @code{elm->package-name} would produce
|
||||
@@ -1156,26 +1160,16 @@ readability of patches. 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 Changes}).
|
||||
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{ISSUE_NUMBER}@@debbugs.gnu.org}, where @var{ISSUE_NUMBER}
|
||||
is the tracking number (@pxref{Sending a Patch Series}).
|
||||
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{ISSUE_NUMBER}@@debbugs.gnu.org}, where @var{ISSUE_NUMBER} is
|
||||
the tracking number (@pxref{Sending a Patch Series}).
|
||||
|
||||
Please write commit logs in the ChangeLog format (@pxref{Change Logs,,,
|
||||
standards, GNU Coding Standards}); you can check the commit history for
|
||||
examples.
|
||||
|
||||
You can help make the review process more efficient, and increase the
|
||||
chance that your patch will be reviewed quickly, by describing the
|
||||
context of your patch and the impact you expect it to have. For
|
||||
example, if your patch is fixing something that is broken, describe the
|
||||
problem and how your patch fixes it. Tell us how you have tested your
|
||||
patch. Will users of the code changed by your patch have to adjust
|
||||
their workflow at all? If so, tell us how. In general, try to imagine
|
||||
what questions a reviewer will ask, and answer those questions in
|
||||
advance.
|
||||
|
||||
Before submitting a patch that adds or modifies a package definition,
|
||||
please run through this check list:
|
||||
|
||||
@@ -1247,14 +1241,53 @@ Take a look at the profile reported by @command{guix size}
|
||||
(@pxref{Invoking guix size}). This will allow you to notice references
|
||||
to other packages unwillingly retained. It may also help determine
|
||||
whether to split the package (@pxref{Packages with Multiple Outputs}),
|
||||
and which optional dependencies should be used. In particular, avoid
|
||||
adding @code{texlive} as a dependency: because of its extreme size, use
|
||||
@code{texlive-updmap.cfg} procedure instead.
|
||||
and which optional dependencies should be used. In particular, avoid adding
|
||||
@code{texlive} as a dependency: because of its extreme size, use
|
||||
the @code{texlive-tiny} package or @code{texlive-union} procedure instead.
|
||||
|
||||
@item
|
||||
Check that dependent packages (if applicable) are not affected by the
|
||||
change; @code{guix refresh --list-dependent @var{package}} will help you
|
||||
do that (@pxref{Invoking guix refresh}).
|
||||
For important changes, check that dependent packages (if applicable) are
|
||||
not affected by the change; @code{guix refresh --list-dependent
|
||||
@var{package}} will help you do that (@pxref{Invoking guix refresh}).
|
||||
|
||||
@c See <https://lists.gnu.org/archive/html/guix-devel/2016-10/msg00933.html>.
|
||||
@cindex branching strategy
|
||||
@cindex rebuild scheduling strategy
|
||||
Depending on the number of dependent packages and thus the amount of
|
||||
rebuilding induced, commits go to different branches, along these lines:
|
||||
|
||||
@table @asis
|
||||
@item 300 dependent packages or less
|
||||
@code{master} branch (non-disruptive changes).
|
||||
|
||||
@item between 300 and 1,800 dependent packages
|
||||
@code{staging} branch (non-disruptive changes). This branch is intended
|
||||
to be merged in @code{master} every 6 weeks or so. Topical changes
|
||||
(e.g., an update of the GNOME stack) can instead go to a specific branch
|
||||
(say, @code{gnome-updates}). This branch is not expected to be
|
||||
buildable or usable until late in its development process.
|
||||
|
||||
@item more than 1,800 dependent packages
|
||||
@code{core-updates} branch (may include major and potentially disruptive
|
||||
changes). This branch is intended to be merged in @code{master} every
|
||||
6 months or so. This branch is not expected to be buildable or usable
|
||||
until late in its development process.
|
||||
@end table
|
||||
|
||||
All these branches are @uref{https://@value{SUBSTITUTE-SERVER-1},
|
||||
tracked by our build farm} and merged into @code{master} once
|
||||
everything has been successfully built. This allows us to fix issues
|
||||
before they hit users, and to reduce the window during which pre-built
|
||||
binaries are not available.
|
||||
|
||||
When we decide to start building the @code{staging} or
|
||||
@code{core-updates} branches, they will be forked and renamed with the
|
||||
suffix @code{-frozen}, at which time only bug fixes may be pushed to the
|
||||
frozen branches. The @code{core-updates} and @code{staging} branches
|
||||
will remain open to accept patches for the next cycle. Please ask on
|
||||
the mailing list or IRC if unsure where to place a patch.
|
||||
@c TODO: It would be good with badges on the website that tracks these
|
||||
@c branches. Or maybe even a status page.
|
||||
|
||||
@item
|
||||
@cindex determinism, of build processes
|
||||
@@ -1340,12 +1373,6 @@ should not be delayed.
|
||||
When a bug is resolved, please close the thread by sending an email to
|
||||
@email{@var{ISSUE_NUMBER}-done@@debbugs.gnu.org}.
|
||||
|
||||
@menu
|
||||
* Configuring Git::
|
||||
* Sending a Patch Series::
|
||||
* Teams::
|
||||
@end menu
|
||||
|
||||
@node Configuring Git
|
||||
@subsection Configuring Git
|
||||
@cindex git configuration
|
||||
@@ -1359,8 +1386,28 @@ different name or email just for commits in this repository, you can
|
||||
use @command{git config --local}, or edit @file{.git/config} in the
|
||||
repository instead of @file{~/.gitconfig}.
|
||||
|
||||
Other important Git configuration will automatically be configured when
|
||||
building the project (@pxref{Building from Git}).
|
||||
We provide some default settings in @file{etc/git/gitconfig} which
|
||||
modify how patches are generated, making them easier to read and apply.
|
||||
These settings can be applied by manually copying them to
|
||||
@file{.git/config} in your checkout, or by telling Git to include the
|
||||
whole file:
|
||||
|
||||
@example
|
||||
git config --local include.path ../etc/git/gitconfig
|
||||
@end example
|
||||
|
||||
From then on, any changes to @file{etc/git/gitconfig} would
|
||||
automatically take effect.
|
||||
|
||||
Since the first patch in a series must be sent separately
|
||||
(@pxref{Sending a Patch Series}), it can also be helpful to tell
|
||||
@command{git format-patch} to handle the e-mail threading instead of
|
||||
@command{git send-email}:
|
||||
|
||||
@example
|
||||
git config --local format.thread shallow
|
||||
git config --local sendemail.thread no
|
||||
@end example
|
||||
|
||||
@node Sending a Patch Series
|
||||
@subsection Sending a Patch Series
|
||||
@@ -1383,12 +1430,10 @@ output of the @code{git} package, i.e. @code{git:send-email}.
|
||||
|
||||
The following command will create a patch email from the latest commit,
|
||||
open it in your @var{EDITOR} or @var{VISUAL} for editing, and send it to
|
||||
the Guix mailing list to be reviewed and merged. Assuming you have
|
||||
already configured Git according to @xref{Configuring Git}, you can
|
||||
simply use:
|
||||
the Guix mailing list to be reviewed and merged:
|
||||
|
||||
@example
|
||||
$ git send-email --annotate -1
|
||||
$ git send-email -1 -a --base=auto --to=guix-patches@@gnu.org
|
||||
@end example
|
||||
|
||||
@quotation Tip
|
||||
@@ -1399,50 +1444,49 @@ other than the @code{master} branch of
|
||||
@url{https://git.savannah.gnu.org/cgit/guix.git}.
|
||||
|
||||
@example
|
||||
git send-email --annotate --subject-prefix='PATCH core-updates' -1
|
||||
git send-email -1 -a --base=auto \
|
||||
--subject-prefix='PATCH core-updates' \
|
||||
--to=guix-patches@@gnu.org
|
||||
@end example
|
||||
@end quotation
|
||||
|
||||
The patch email contains a three-dash separator line after the commit
|
||||
message. You may ``annotate'' the patch with explanatory text by adding
|
||||
it under this line. If you do not wish to annotate the email, you may
|
||||
drop the @option{--annotate} option.
|
||||
drop the @option{-a} flag (which is short for @option{--annotate}).
|
||||
|
||||
The @option{--base=auto} flag automatically adds a note at the bottom
|
||||
of the patch of the commit it was based on, making it easier for
|
||||
maintainers to rebase and merge your patch.
|
||||
|
||||
If you need to send a revised patch, don't resend it like this or send
|
||||
a ``fix'' patch to be applied on top of the last one; instead, use
|
||||
@command{git commit --amend} or @url{https://git-rebase.io,
|
||||
@command{git rebase}} to modify the commit, and use the
|
||||
@email{@var{ISSUE_NUMBER}@@debbugs.gnu.org} address and the @option{-v}
|
||||
flag with @command{git send-email}.
|
||||
@command{git commit -a} or @url{https://git-rebase.io, @command{git rebase}}
|
||||
to modify the commit, and use the @email{@var{ISSUE_NUMBER}@@debbugs.gnu.org}
|
||||
address and the @option{-v} flag with @command{git send-email}.
|
||||
|
||||
@example
|
||||
$ git commit --amend
|
||||
$ git send-email --annotate -v@var{REVISION} \
|
||||
--to=@var{ISSUE_NUMBER}@@debbugs.gnu.org -1
|
||||
$ git commit -a
|
||||
$ git send-email -1 -a --base=auto -v @var{REVISION} \
|
||||
--to=@var{ISSUE_NUMBER}@@debbugs.gnu.org
|
||||
@end example
|
||||
|
||||
@quotation Note
|
||||
Due to an apparent bug in @command{git send-email},
|
||||
@option{-v @var{REVISION}} (with the space) will not work; you
|
||||
@emph{must} use @option{-v@var{REVISION}}.
|
||||
@end quotation
|
||||
|
||||
You can find out @var{ISSUE_NUMBER} either by searching on the mumi
|
||||
interface at @url{https://issues.guix.gnu.org} for the name of your patch or
|
||||
interface at @url{issues.guix.gnu.org} for the name of your patch or
|
||||
reading the acknowledgement email sent automatically by Debbugs in
|
||||
reply to incoming bugs and patches, which contains the bug number.
|
||||
|
||||
@unnumberedsubsubsec Notifying Teams
|
||||
@anchor{Notifying Teams}
|
||||
@cindex teams
|
||||
If your git checkout has been correctly configured (@pxref{Configuring
|
||||
Git}), the @command{git send-email} command will automatically notify
|
||||
the appropriate team members, based on the scope of your changes. This
|
||||
relies on the @file{etc/teams.scm} script, which can also be invoked
|
||||
manually if you do not use the preferred @command{git send-email}
|
||||
command to submit patches. To list the available actions of the script,
|
||||
you can invoke it via the @command{etc/teams.scm help} command. For
|
||||
more information regarding teams, see @xref{Teams}.
|
||||
The @file{etc/teams.scm} script may be used to notify all those who
|
||||
may be interested in your patch of its existence (@pxref{Teams}).
|
||||
Use @command{etc/teams.scm list-teams} to display all the teams,
|
||||
decide which team(s) your patch relates to, and use
|
||||
@command{etc/teams.scm cc} to output various @command{git send-email}
|
||||
flags which will notify the appropriate team members, or use
|
||||
@command{etc/teams.scm cc-members} to detect the appropriate teams
|
||||
automatically.
|
||||
|
||||
@unnumberedsubsubsec Multiple Patches
|
||||
@anchor{Multiple Patches}
|
||||
@@ -1469,7 +1513,9 @@ We can now send @emph{just} the cover letter to the
|
||||
that we can send the rest of the patches to.
|
||||
|
||||
@example
|
||||
$ git send-email outgoing/0000-cover-letter.patch --annotate
|
||||
$ git send-email outgoing/0000-cover-letter.patch -a \
|
||||
--to=guix-patches@@gnu.org \
|
||||
$(etc/teams.scm cc-members ...)
|
||||
$ rm outgoing/0000-cover-letter.patch # we don't want to resend it!
|
||||
@end example
|
||||
|
||||
@@ -1481,7 +1527,9 @@ Once the Debbugs mailer has replied to your cover letter email, you
|
||||
can send the actual patches to the newly-created issue address.
|
||||
|
||||
@example
|
||||
$ git send-email outgoing/*.patch --to=@var{ISSUE_NUMBER}@@debbugs.gnu.org
|
||||
$ git send-email outgoing/*.patch \
|
||||
--to=@var{ISSUE_NUMBER}@@debbugs.gnu.org \
|
||||
$(etc/teams.scm cc-members ...)
|
||||
$ rm -rf outgoing # we don't need these anymore
|
||||
@end example
|
||||
|
||||
@@ -1490,13 +1538,14 @@ to send an amended patch series, since an issue already exists for
|
||||
the patchset.
|
||||
|
||||
@example
|
||||
$ git send-email -@var{NUMBER_COMMITS} -v@var{REVISION} \
|
||||
--to=@var{ISSUE_NUMBER}@@debbugs.gnu.org
|
||||
$ git send-email -@var{NUMBER_COMMITS} \
|
||||
-v@var{REVISION} --base=auto \
|
||||
--to @var{ISSUE_NUMBER}@@debbugs.gnu.org
|
||||
@end example
|
||||
|
||||
If need be, you may use @option{--cover-letter --annotate} to send
|
||||
another cover letter, e.g. for explaining what's changed since the last
|
||||
revision, and these changes are necessary.
|
||||
If need be, you may use @option{--cover-letter -a} to send another cover
|
||||
letter, e.g. for explaining what's changed since the last revision, and
|
||||
these changes are necessary.
|
||||
|
||||
@node Teams
|
||||
@subsection Teams
|
||||
@@ -1523,8 +1572,7 @@ You can run the following command to have the @code{Mentors} team put in
|
||||
CC of a patch series:
|
||||
|
||||
@example
|
||||
$ git send-email --to=@var{ISSUE_NUMBER}@@debbugs.gnu.org \
|
||||
--header-cmd='etc/teams.scm cc-mentors-header-cmd' *.patch
|
||||
$ git send-email --to @var{ISSUE_NUMBER}@@debbugs.gnu.org $(./etc/teams.scm cc mentors) *.patch
|
||||
@end example
|
||||
|
||||
The appropriate team or teams can also be inferred from the modified
|
||||
@@ -1533,18 +1581,17 @@ current Git repository to review, you can run:
|
||||
|
||||
@example
|
||||
$ guix shell -D guix
|
||||
[env]$ git send-email --to=@var{ISSUE_NUMBER}@@debbugs.gnu.org -2
|
||||
[env]$ git send-email --to @var{ISSUE_NUMBER}@@debbugs.gnu.org $(./etc/teams.scm cc-members HEAD~2 HEAD) *.patch
|
||||
@end example
|
||||
|
||||
@node Tracking Bugs and Changes
|
||||
@section Tracking Bugs and Changes
|
||||
@node Tracking Bugs and Patches
|
||||
@section Tracking Bugs and Patches
|
||||
|
||||
This section describes how the Guix project tracks its bug reports,
|
||||
patch submissions and topic branches.
|
||||
This section describes how the Guix project tracks its bug reports and
|
||||
patch submissions.
|
||||
|
||||
@menu
|
||||
* The Issue Tracker:: The official bug and patch tracker.
|
||||
* Managing Patches and Branches:: How changes to Guix are managed.
|
||||
* Debbugs User Interfaces:: Ways to interact with Debbugs.
|
||||
* Debbugs Usertags:: Tag reports with custom labels.
|
||||
@end menu
|
||||
@@ -1563,71 +1610,9 @@ 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}).
|
||||
|
||||
@node Managing Patches and Branches
|
||||
@subsection Managing Patches and Branches
|
||||
@cindex branching strategy
|
||||
@cindex rebuild scheduling strategy
|
||||
|
||||
Changes should be posted to @email{guix-patches@@gnu.org}. This mailing
|
||||
list fills the patch-tracking database (@pxref{The Issue Tracker}). It
|
||||
also allows patches to be picked up and tested by the quality assurance
|
||||
tooling; the result of that testing eventually shows up on the dashboard
|
||||
at @indicateurl{https://qa.guix.gnu.org/issue/@var{ISSUE_NUMBER}}, where
|
||||
@var{ISSUE_NUMBER} is the number assigned by the issue tracker. Leave
|
||||
time for a review, without committing anything.
|
||||
|
||||
As an exception, some changes considered ``trivial'' or ``obvious'' may
|
||||
be pushed directly to the @code{master} branch. This includes changes
|
||||
to fix typos and reverting commits that caused immediate problems. This
|
||||
is subject to being adjusted, allowing individuals to commit directly on
|
||||
non-controversial changes on parts they’re familiar with.
|
||||
|
||||
Changes which affect more than 300 dependent packages (@pxref{Invoking
|
||||
guix refresh}) should first be pushed to a topic branch other than
|
||||
@code{master}; the set of changes should be consistent---e.g., ``GNOME
|
||||
update'', ``NumPy update'', etc. This allows for testing: the branch
|
||||
will automatically show up at
|
||||
@indicateurl{https://qa.guix.gnu.org/branch/@var{branch}}, with an
|
||||
indication of its build status on various platforms.
|
||||
|
||||
@cindex feature branches, coordination
|
||||
To help coordinate the merging of branches, you must create a new
|
||||
guix-patches issue each time you wish to merge a branch (@pxref{The
|
||||
Issue Tracker}). The title of the issue requesting to merge a branch
|
||||
should have the following format:
|
||||
|
||||
@cindex merge requests, template
|
||||
@example
|
||||
Request for merging "@var{name}" branch
|
||||
@end example
|
||||
|
||||
The @url{https://qa.guix.gnu.org/, QA infrastructure} recognizes such
|
||||
issues and lists the merge requests on its main page. Normally branches
|
||||
will be merged in a ``first come, first merged'' manner, tracked through
|
||||
the guix-patches issues.
|
||||
|
||||
If you agree on a different order with those involved, you can track
|
||||
this by updating which issues block@footnote{You can mark an issue as
|
||||
blocked by another by emailing @email{control@@debbugs.gnu.org} with the
|
||||
following line in the body of the email: @code{block XXXXX by YYYYY}.
|
||||
Where @code{XXXXX} is the number for the blocked issue, and @code{YYYYY}
|
||||
is the number for the issue blocking it.} which other issues.
|
||||
Therefore, to know which branch is at the front of the queue, look for
|
||||
the oldest issue, or the issue that isn't @dfn{blocked} by any other
|
||||
branch merges. An ordered list of branches with the open issues is
|
||||
available at @url{https://qa.guix.gnu.org}.
|
||||
|
||||
Once a branch is at the front of the queue, wait until sufficient time
|
||||
has passed for the build farms to have processed the changes, and for
|
||||
the necessary testing to have happened. For example, you can check
|
||||
@indicateurl{https://qa.guix.gnu.org/branch/@var{branch}} to see
|
||||
information on some builds and substitute availability.
|
||||
|
||||
@node Debbugs User Interfaces
|
||||
@subsection Debbugs User Interfaces
|
||||
|
||||
@subsubsection Web interface
|
||||
|
||||
A web interface (actually @emph{two} web interfaces!) are available to
|
||||
browse issues:
|
||||
|
||||
@@ -1649,88 +1634,6 @@ To view discussions related to issue number @var{n}, go to
|
||||
@indicateurl{https://issues.guix.gnu.org/@var{n}} or
|
||||
@indicateurl{https://bugs.gnu.org/@var{n}}.
|
||||
|
||||
@subsubsection Command-line interface
|
||||
|
||||
Mumi also comes with a command-line interface that can be used to search
|
||||
existing issues, open new issues and send patches. You do not need to
|
||||
use Emacs to use the mumi command-line client. You interact with it
|
||||
only on the command-line.
|
||||
|
||||
To use the mumi command-line interface, navigate to a local clone of the
|
||||
Guix git repository, and drop into a shell with mumi, git and
|
||||
git:send-email installed.
|
||||
|
||||
@example
|
||||
$ cd guix
|
||||
~/guix$ guix shell mumi git git:send-email
|
||||
@end example
|
||||
|
||||
To search for issues, say all open issues about "zig", run
|
||||
|
||||
@example
|
||||
~/guix [env]$ mumi search zig is:open
|
||||
|
||||
#60889 Add zig-build-system
|
||||
opened on 17 Jan 17:37 Z by Ekaitz Zarraga
|
||||
#61036 [PATCH 0/3] Update zig to 0.10.1
|
||||
opened on 24 Jan 09:42 Z by Efraim Flashner
|
||||
#39136 [PATCH] gnu: services: Add endlessh.
|
||||
opened on 14 Jan 2020 21:21 by Nicol? Balzarotti
|
||||
#60424 [PATCH] gnu: Add python-online-judge-tools
|
||||
opened on 30 Dec 2022 07:03 by gemmaro
|
||||
#45601 [PATCH 0/6] vlang 0.2 update
|
||||
opened on 1 Jan 2021 19:23 by Ryan Prior
|
||||
@end example
|
||||
|
||||
Pick an issue and make it the "current" issue.
|
||||
|
||||
@example
|
||||
~/guix [env]$ mumi current 61036
|
||||
|
||||
#61036 [PATCH 0/3] Update zig to 0.10.1
|
||||
opened on 24 Jan 09:42 Z by Efraim Flashner
|
||||
@end example
|
||||
|
||||
Once an issue is the current issue, you can easily create and send
|
||||
patches to it using
|
||||
|
||||
@example
|
||||
~/guix [env]$ git format-patch origin/master
|
||||
~/guix [env]$ mumi send-email foo.patch bar.patch
|
||||
@end example
|
||||
|
||||
Note that you do not have to pass in @samp{--to} or @samp{--cc}
|
||||
arguments to @command{git format-patch}. @command{mumi send-email} will
|
||||
put them in correctly when sending the patches.
|
||||
|
||||
To open a new issue, run
|
||||
|
||||
@example
|
||||
~/guix [env]$ mumi new
|
||||
@end example
|
||||
|
||||
and send patches
|
||||
|
||||
@example
|
||||
~/guix [env]$ mumi send-email foo.patch bar.patch
|
||||
@end example
|
||||
|
||||
@command{mumi send-email} is really a wrapper around @command{git
|
||||
send-email} that automates away all the nitty-gritty of sending patches.
|
||||
It uses the current issue state to automatically figure out the correct
|
||||
@samp{To} address to send to, other participants to @samp{Cc}, headers
|
||||
to add, etc.
|
||||
|
||||
Also note that, unlike @command{git send-email}, @command{mumi
|
||||
send-email} works perfectly well with single and multiple patches alike.
|
||||
It automates away the debbugs dance of sending the first patch, waiting
|
||||
for a response from debbugs and sending the remaining patches. It does
|
||||
so by sending the first patch, polling the server for a response, and
|
||||
then sending the remaining patches. This polling can unfortunately take
|
||||
a few minutes. So, please be patient.
|
||||
|
||||
@subsubsection Emacs interface
|
||||
|
||||
If you use Emacs, you may find it more convenient to interact with
|
||||
issues using @file{debbugs.el}, which you can install with:
|
||||
|
||||
@@ -1809,12 +1712,7 @@ project for at least 6 months. This ensures enough interactions with
|
||||
the contributor, which is essential for mentoring and assessing whether
|
||||
they are ready to become a committer. Commit access should not be
|
||||
thought of as a ``badge of honor'' but rather as a responsibility a
|
||||
contributor is willing to take to help the project. It is expected from
|
||||
all contributors, and even more so from committers, to help build
|
||||
consensus and make decisions based on consensus. To learn what
|
||||
consensus decision making means and understand its finer details, you
|
||||
are encouraged to read
|
||||
@url{https://www.seedsforchange.org.uk/consensus}.
|
||||
contributor is willing to take to help the project.
|
||||
|
||||
The following sections explain how to get commit access, how to be ready
|
||||
to push commits, and the policies and community expectations for commits
|
||||
@@ -1913,24 +1811,36 @@ To check that commits are signed with correct key, use:
|
||||
make authenticate
|
||||
@end example
|
||||
|
||||
To avoid accidentally pushing unsigned or signed with the wrong key
|
||||
commits to Savannah, make sure to configure Git according to
|
||||
@xref{Configuring Git}.
|
||||
You can prevent yourself from accidentally pushing unsigned or signed
|
||||
with the wrong key commits to Savannah by using the pre-push Git hook
|
||||
located at @file{etc/git/pre-push}:
|
||||
|
||||
@example
|
||||
cp etc/git/pre-push .git/hooks/pre-push
|
||||
@end example
|
||||
|
||||
It additionally calls @code{make check-channel-news} to be sure
|
||||
@file{news.scm} file is correct.
|
||||
|
||||
@subsection Commit Policy
|
||||
|
||||
If you get commit access, please make sure to follow the policy below
|
||||
(discussions of the policy can take place on
|
||||
If you get commit access, please make sure to follow
|
||||
the policy below (discussions of the policy can take place on
|
||||
@email{guix-devel@@gnu.org}).
|
||||
|
||||
Ensure you're aware of how the changes should be handled
|
||||
(@pxref{Managing Patches and Branches}) prior to being pushed to the
|
||||
repository, especially for the @code{master} branch.
|
||||
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}).
|
||||
|
||||
If you're committing and pushing your own changes, try and wait at least
|
||||
one week (two weeks for more significant changes) after you send them
|
||||
for review. After this, if no one else is available to review them and
|
||||
if you're confident about the changes, it's OK to commit.
|
||||
For patches that just add a new package, and a simple one, it's OK to
|
||||
commit, if you're confident (which means you successfully built it in a
|
||||
chroot setup, and have done a reasonable copyright and license
|
||||
auditing). Likewise for package upgrades, except upgrades that trigger
|
||||
a lot of rebuilds (for example, upgrading GnuTLS or GLib). We have a
|
||||
mailing list for commit notifications (@email{guix-commits@@gnu.org}),
|
||||
so people can notice. Before pushing your changes, make sure to run
|
||||
@code{git pull --rebase}.
|
||||
|
||||
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.,
|
||||
@@ -1945,6 +1855,14 @@ right before pushing:
|
||||
make check-channel-news
|
||||
@end example
|
||||
|
||||
For anything else, please post to @email{guix-patches@@gnu.org} and
|
||||
leave time for a review, without committing anything (@pxref{Submitting
|
||||
Patches}). If you didn’t receive any reply after two weeks, and if
|
||||
you're confident, it's OK to commit.
|
||||
|
||||
That last part is subject to being adjusted, allowing individuals to commit
|
||||
directly on non-controversial changes on parts they’re familiar with.
|
||||
|
||||
@subsection Addressing Issues
|
||||
|
||||
Peer review (@pxref{Submitting Patches}) and tools such as
|
||||
|
||||
@@ -9,4 +9,4 @@
|
||||
(package
|
||||
(inherit gdb)
|
||||
(native-inputs (modify-inputs (package-native-inputs gdb)
|
||||
(prepend autoconf-2.69 automake texinfo))))
|
||||
(prepend autoconf-2.64 automake texinfo))))
|
||||
|
||||
+87
-1049
File diff suppressed because it is too large
Load Diff
+1926
-5068
File diff suppressed because it is too large
Load Diff
+2
-2
@@ -1,7 +1,7 @@
|
||||
# htmlxref.cnf - reference file for free Texinfo manuals on the web.
|
||||
# Modified by Ludovic Courtès <ludo@gnu.org> for the GNU Guix manual.
|
||||
|
||||
htmlxrefversion=2022-12-18.15; # UTC
|
||||
htmlxrefversion=2026-01-19.09; # UTC
|
||||
|
||||
# Copyright 2010-2020, 2022 Free Software Foundation, Inc.
|
||||
#
|
||||
@@ -415,7 +415,7 @@ guile-rpc mono ${GS}/guile-rpc/manual/guile-rpc.html
|
||||
guile-rpc node ${GS}/guile-rpc/manual/html_node/
|
||||
|
||||
GUIX_ROOT = https://guix.gnu.org
|
||||
GUIX = ${GUIX_ROOT}/manual
|
||||
GUIX = ${GUIX_ROOT}/manual/1.4.0
|
||||
guix.de mono ${GUIX}/de/guix.de.html
|
||||
guix.de node ${GUIX}/de/html_node/
|
||||
guix.es mono ${GUIX}/es/guix.es.html
|
||||
|
||||
@@ -1,79 +1,114 @@
|
||||
digraph "Guix package" {
|
||||
"139803511371136" [label = "gcc-core-mesboot0@2.95.3", shape = box, fontname = sans];
|
||||
"139803511371136" -> "139803511371312" [color = red];
|
||||
"139803511371136" -> "139803511372016" [color = red];
|
||||
"139803511371136" -> "139803511371488" [color = red];
|
||||
"139803511371136" -> "139803511371664" [color = red];
|
||||
"139803511371136" -> "139803511371840" [color = red];
|
||||
"139803511371136" -> "139803507105792" [color = red];
|
||||
"139803511371136" -> "139803511373600" [color = red];
|
||||
"139803511371136" -> "139803507105968" [color = red];
|
||||
"139803511371136" -> "139803749199472" [color = red];
|
||||
"139803511371312" [label = "binutils-mesboot0@2.20.1a", shape = box, fontname = sans];
|
||||
"139803511371312" -> "139803511372016" [color = dimgrey];
|
||||
"139803511371312" -> "139803511371488" [color = dimgrey];
|
||||
"139803511371312" -> "139803511371664" [color = dimgrey];
|
||||
"139803511371312" -> "139803511371840" [color = dimgrey];
|
||||
"139803511371312" -> "139803507105792" [color = dimgrey];
|
||||
"139803511371312" -> "139803511373600" [color = dimgrey];
|
||||
"139803511371312" -> "139803507105968" [color = dimgrey];
|
||||
"139803511371312" -> "139803749199472" [color = dimgrey];
|
||||
"139803511372016" [label = "gzip-mesboot@1.2.4", shape = box, fontname = sans];
|
||||
"139803511372016" -> "139803511372192" [color = magenta];
|
||||
"139803511372016" -> "139803507105792" [color = magenta];
|
||||
"139803511372016" -> "139803511373600" [color = magenta];
|
||||
"139803511372016" -> "139803507105968" [color = magenta];
|
||||
"139803511372016" -> "139803749199472" [color = magenta];
|
||||
"139803511372192" [label = "tcc-boot0@0.9.26-1136-g5bba73cc", shape = box, fontname = sans];
|
||||
"139803511372192" -> "139803511372368" [color = magenta];
|
||||
"139803511372192" -> "139803511372544" [color = magenta];
|
||||
"139803511372192" -> "139803507105792" [color = magenta];
|
||||
"139803511372192" -> "139803511373600" [color = magenta];
|
||||
"139803511372192" -> "139803507105968" [color = magenta];
|
||||
"139803511372192" -> "139803749199472" [color = magenta];
|
||||
"139803511372368" [label = "mes-boot@0.24", shape = box, fontname = sans];
|
||||
"139803511372368" -> "139803511372544" [color = darkviolet];
|
||||
"139803511372368" -> "139803507105792" [color = darkviolet];
|
||||
"139803511372368" -> "139803511373600" [color = darkviolet];
|
||||
"139803511372368" -> "139803507105968" [color = darkviolet];
|
||||
"139803511372368" -> "139803749199472" [color = darkviolet];
|
||||
"139803511372544" [label = "stage0-posix@1.4", shape = box, fontname = sans];
|
||||
"139803511372544" -> "139803511373072" [color = peachpuff4];
|
||||
"139803511372544" -> "139803507105792" [color = peachpuff4];
|
||||
"139803511372544" -> "139803511373600" [color = peachpuff4];
|
||||
"139803511372544" -> "139803507105968" [color = peachpuff4];
|
||||
"139803511372544" -> "139803749199472" [color = peachpuff4];
|
||||
"139803511373072" [label = "bootstrap-seeds@1.0.0", shape = ellipse, fontname = sans];
|
||||
"139803511373072" -> "139803507105968" [color = cyan3];
|
||||
"139803507105968" [label = "bootar@1b", shape = box, fontname = sans];
|
||||
"139803507105968" -> "139803749199472" [color = dimgrey];
|
||||
"139803749199472" [label = "guile-bootstrap@2.0", shape = ellipse, fontname = sans];
|
||||
"139803507105792" [label = "gash-boot@0.3.0", shape = box, fontname = sans];
|
||||
"139803507105792" -> "139803507105968" [color = darkviolet];
|
||||
"139803507105792" -> "139803749199472" [color = darkviolet];
|
||||
"139803511373600" [label = "gash-utils-boot@0.2.0", shape = box, fontname = sans];
|
||||
"139803511373600" -> "139803507105968" [color = red];
|
||||
"139803511373600" -> "139803507105792" [color = red];
|
||||
"139803511373600" -> "139803749199472" [color = red];
|
||||
"139803511371488" [label = "patch-mesboot@2.5.9", shape = box, fontname = sans];
|
||||
"139803511371488" -> "139803511371840" [color = darkseagreen];
|
||||
"139803511371488" -> "139803511372192" [color = darkseagreen];
|
||||
"139803511371488" -> "139803507105792" [color = darkseagreen];
|
||||
"139803511371488" -> "139803511373600" [color = darkseagreen];
|
||||
"139803511371488" -> "139803507105968" [color = darkseagreen];
|
||||
"139803511371488" -> "139803749199472" [color = darkseagreen];
|
||||
"139803511371840" [label = "make-mesboot0@3.80", shape = box, fontname = sans];
|
||||
"139803511371840" -> "139803511372192" [color = blue];
|
||||
"139803511371840" -> "139803507105792" [color = blue];
|
||||
"139803511371840" -> "139803511373600" [color = blue];
|
||||
"139803511371840" -> "139803507105968" [color = blue];
|
||||
"139803511371840" -> "139803749199472" [color = blue];
|
||||
"139803511371664" [label = "tcc-boot@0.9.27", shape = box, fontname = sans];
|
||||
"139803511371664" -> "139803511371840" [color = peachpuff4];
|
||||
"139803511371664" -> "139803511372192" [color = peachpuff4];
|
||||
"139803511371664" -> "139803507105792" [color = peachpuff4];
|
||||
"139803511371664" -> "139803511373600" [color = peachpuff4];
|
||||
"139803511371664" -> "139803507105968" [color = peachpuff4];
|
||||
"139803511371664" -> "139803749199472" [color = peachpuff4];
|
||||
"139781154519456" [label = "gcc-core-mesboot0@2.95.3", shape = box, fontname = Helvetica];
|
||||
"139781154519456" -> "139781154519632" [color = darkgoldenrod];
|
||||
"139781154519456" -> "139781154520688" [color = darkgoldenrod];
|
||||
"139781154519456" -> "139781034971312" [color = darkgoldenrod];
|
||||
"139781154519456" -> "139781154520160" [color = darkgoldenrod];
|
||||
"139781154519456" -> "139781034971664" [color = darkgoldenrod];
|
||||
"139781154519456" -> "139781154519984" [color = darkgoldenrod];
|
||||
"139781154519456" -> "139781154519808" [color = darkgoldenrod];
|
||||
"139781154519456" -> "139781154520512" [color = darkgoldenrod];
|
||||
"139781154519456" -> "139781034971488" [color = darkgoldenrod];
|
||||
"139781154519456" -> "139781034972896" [color = darkgoldenrod];
|
||||
"139781154519456" -> "139781034972368" [color = darkgoldenrod];
|
||||
"139781154519456" -> "139781034973072" [color = darkgoldenrod];
|
||||
"139781154519456" -> "139781131267872" [color = darkgoldenrod];
|
||||
"139781154519632" [label = "binutils-mesboot0@2.14", shape = box, fontname = Helvetica];
|
||||
"139781154519632" -> "139781154520688" [color = peachpuff4];
|
||||
"139781154519632" -> "139781034971312" [color = peachpuff4];
|
||||
"139781154519632" -> "139781154520160" [color = peachpuff4];
|
||||
"139781154519632" -> "139781034971664" [color = peachpuff4];
|
||||
"139781154519632" -> "139781154519984" [color = peachpuff4];
|
||||
"139781154519632" -> "139781154519808" [color = peachpuff4];
|
||||
"139781154519632" -> "139781154520512" [color = peachpuff4];
|
||||
"139781154519632" -> "139781034971488" [color = peachpuff4];
|
||||
"139781154519632" -> "139781034972896" [color = peachpuff4];
|
||||
"139781154519632" -> "139781034972368" [color = peachpuff4];
|
||||
"139781154519632" -> "139781034973072" [color = peachpuff4];
|
||||
"139781154519632" -> "139781131267872" [color = peachpuff4];
|
||||
"139781154520688" [label = "bash-mesboot0@2.05b", shape = box, fontname = Helvetica];
|
||||
"139781154520688" -> "139781034971488" [color = magenta];
|
||||
"139781154520688" -> "139781034971840" [color = magenta];
|
||||
"139781154520688" -> "139781034972896" [color = magenta];
|
||||
"139781154520688" -> "139781034972368" [color = magenta];
|
||||
"139781154520688" -> "139781034973072" [color = magenta];
|
||||
"139781154520688" -> "139781131267872" [color = magenta];
|
||||
"139781034971488" [label = "make-mesboot0@3.80", shape = box, fontname = Helvetica];
|
||||
"139781034971488" -> "139781034971840" [color = dimgrey];
|
||||
"139781034971488" -> "139781034972896" [color = dimgrey];
|
||||
"139781034971488" -> "139781034972368" [color = dimgrey];
|
||||
"139781034971488" -> "139781034973072" [color = dimgrey];
|
||||
"139781034971488" -> "139781131267872" [color = dimgrey];
|
||||
"139781034971840" [label = "tcc-boot0@0.9.26-1103-g6e62e0e", shape = box, fontname = Helvetica];
|
||||
"139781034971840" -> "139781034972016" [color = magenta];
|
||||
"139781034971840" -> "139781131266816" [color = magenta];
|
||||
"139781034971840" -> "139781034972896" [color = magenta];
|
||||
"139781034971840" -> "139781034972368" [color = magenta];
|
||||
"139781034971840" -> "139781034973072" [color = magenta];
|
||||
"139781034971840" -> "139781131267872" [color = magenta];
|
||||
"139781034972016" [label = "mes-boot@0.22", shape = box, fontname = Helvetica];
|
||||
"139781034972016" -> "139781034972192" [color = cyan3];
|
||||
"139781034972016" -> "139781131266816" [color = cyan3];
|
||||
"139781034972016" -> "139781034972896" [color = cyan3];
|
||||
"139781034972016" -> "139781034972368" [color = cyan3];
|
||||
"139781034972016" -> "139781034973072" [color = cyan3];
|
||||
"139781034972016" -> "139781131267872" [color = cyan3];
|
||||
"139781034972192" [label = "bootstrap-mes-rewired@0.19", shape = ellipse, fontname = Helvetica];
|
||||
"139781034972192" -> "139781131266640" [color = darkseagreen];
|
||||
"139781034972192" -> "139781034972896" [color = darkseagreen];
|
||||
"139781131266640" [label = "bootstrap-mes@0", shape = ellipse, fontname = Helvetica];
|
||||
"139781034972896" [label = "gash-boot@0.2.0", shape = box, fontname = Helvetica];
|
||||
"139781034972896" -> "139781034973072" [color = darkviolet];
|
||||
"139781034972896" -> "139781131267872" [color = darkviolet];
|
||||
"139781034973072" [label = "bootar@1", shape = box, fontname = Helvetica];
|
||||
"139781034973072" -> "139781131267872" [color = darkviolet];
|
||||
"139781131267872" [label = "guile-bootstrap@2.0", shape = ellipse, fontname = Helvetica];
|
||||
"139781131266816" [label = "bootstrap-mescc-tools@0.5.2", shape = ellipse, fontname = Helvetica];
|
||||
"139781034972368" [label = "gash-utils-boot@0.1.0", shape = box, fontname = Helvetica];
|
||||
"139781034972368" -> "139781034973072" [color = darkseagreen];
|
||||
"139781034972368" -> "139781034972896" [color = darkseagreen];
|
||||
"139781034972368" -> "139781131267872" [color = darkseagreen];
|
||||
"139781034971312" [label = "bzip2-mesboot@1.0.8", shape = box, fontname = Helvetica];
|
||||
"139781034971312" -> "139781034971488" [color = cyan3];
|
||||
"139781034971312" -> "139781034971840" [color = cyan3];
|
||||
"139781034971312" -> "139781034972896" [color = cyan3];
|
||||
"139781034971312" -> "139781034972368" [color = cyan3];
|
||||
"139781034971312" -> "139781034973072" [color = cyan3];
|
||||
"139781034971312" -> "139781131267872" [color = cyan3];
|
||||
"139781154520160" [label = "diffutils-mesboot@2.7", shape = box, fontname = Helvetica];
|
||||
"139781154520160" -> "139781034971488" [color = red];
|
||||
"139781154520160" -> "139781034971840" [color = red];
|
||||
"139781154520160" -> "139781034972896" [color = red];
|
||||
"139781154520160" -> "139781034972368" [color = red];
|
||||
"139781154520160" -> "139781034973072" [color = red];
|
||||
"139781154520160" -> "139781131267872" [color = red];
|
||||
"139781034971664" [label = "gzip-mesboot@1.2.4", shape = box, fontname = Helvetica];
|
||||
"139781034971664" -> "139781034971840" [color = red];
|
||||
"139781034971664" -> "139781034972896" [color = red];
|
||||
"139781034971664" -> "139781034972368" [color = red];
|
||||
"139781034971664" -> "139781034973072" [color = red];
|
||||
"139781034971664" -> "139781131267872" [color = red];
|
||||
"139781154519984" [label = "patch-mesboot@2.5.9", shape = box, fontname = Helvetica];
|
||||
"139781154519984" -> "139781034971488" [color = blue];
|
||||
"139781154519984" -> "139781034971840" [color = blue];
|
||||
"139781154519984" -> "139781034972896" [color = blue];
|
||||
"139781154519984" -> "139781034972368" [color = blue];
|
||||
"139781154519984" -> "139781034973072" [color = blue];
|
||||
"139781154519984" -> "139781131267872" [color = blue];
|
||||
"139781154519808" [label = "sed-mesboot0@1.18", shape = box, fontname = Helvetica];
|
||||
"139781154519808" -> "139781034971488" [color = red];
|
||||
"139781154519808" -> "139781034971840" [color = red];
|
||||
"139781154519808" -> "139781034972896" [color = red];
|
||||
"139781154519808" -> "139781034972368" [color = red];
|
||||
"139781154519808" -> "139781034973072" [color = red];
|
||||
"139781154519808" -> "139781131267872" [color = red];
|
||||
"139781154520512" [label = "tcc-boot@0.9.27", shape = box, fontname = Helvetica];
|
||||
"139781154520512" -> "139781034971312" [color = darkviolet];
|
||||
"139781154520512" -> "139781034971488" [color = darkviolet];
|
||||
"139781154520512" -> "139781034971840" [color = darkviolet];
|
||||
"139781154520512" -> "139781034972896" [color = darkviolet];
|
||||
"139781154520512" -> "139781034972368" [color = darkviolet];
|
||||
"139781154520512" -> "139781034973072" [color = darkviolet];
|
||||
"139781154520512" -> "139781131267872" [color = darkviolet];
|
||||
|
||||
}
|
||||
|
||||
+2
-2
@@ -229,8 +229,8 @@ $(srcdir)/%D%/guix.1: scripts/guix.in $(sub_commands_mans)
|
||||
# The 'case' ensures the man pages are only generated if the corresponding
|
||||
# source script (the first prerequisite) has been changed. The $(GOBJECTS)
|
||||
# prerequisite is solely meant to force these docs to be made only after all
|
||||
# Guile modules have been compiled. We also need the guix script to exist.
|
||||
$(srcdir)/%D%/guix-%.1: guix/scripts/%.scm $(GOBJECTS) scripts/guix
|
||||
# Guile modules have been compiled.
|
||||
$(srcdir)/%D%/guix-%.1: guix/scripts/%.scm $(GOBJECTS)
|
||||
-@case '$?' in \
|
||||
*$<*) $(AM_V_P) && set -x || echo " HELP2MAN $@"; \
|
||||
$(gen_man) --output="$@" "guix $*";; \
|
||||
|
||||
@@ -3,16 +3,3 @@
|
||||
|
||||
[diff "texinfo"]
|
||||
xfuncname = "^@node[[:space:]]+([^,]+).*$"
|
||||
|
||||
[format]
|
||||
forceinbodyfrom = true # help preserve commit authorship
|
||||
thread = shallow
|
||||
useAutoBase = true
|
||||
|
||||
[pull]
|
||||
rebase = true
|
||||
|
||||
[sendemail]
|
||||
to = guix-patches@gnu.org
|
||||
headerCmd = etc/teams.scm cc-members-header-cmd
|
||||
thread = no
|
||||
|
||||
+3
-26
@@ -1,6 +1,6 @@
|
||||
; -*- lisp -*-
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2018, 2022 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2020 Daniel Brooks <db48x@db48x.net>
|
||||
;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
|
||||
;;;
|
||||
@@ -37,13 +37,11 @@
|
||||
|
||||
(block guix_daemon
|
||||
;; Require existing types
|
||||
(typeattributeset cil_gen_require domain)
|
||||
(typeattributeset cil_gen_require init_t)
|
||||
(typeattributeset cil_gen_require init_var_run_t)
|
||||
(typeattributeset cil_gen_require nscd_var_run_t)
|
||||
(typeattributeset cil_gen_require system_dbusd_var_run_t)
|
||||
(typeattributeset cil_gen_require tmp_t)
|
||||
(typeattributeset cil_gen_require nscd_var_run_t)
|
||||
(typeattributeset cil_gen_require var_log_t)
|
||||
(typeattributeset cil_gen_require domain)
|
||||
|
||||
;; Declare own types
|
||||
(type guix_daemon_t)
|
||||
@@ -94,9 +92,6 @@
|
||||
(allow init_t
|
||||
guix_store_content_t
|
||||
(file (open read execute)))
|
||||
(allow init_t
|
||||
guix_profiles_t
|
||||
(dir (setattr)))
|
||||
|
||||
;; guix-daemon needs to know the names of users
|
||||
(allow guix_daemon_t
|
||||
@@ -176,11 +171,6 @@
|
||||
execute_no_trans read write open entrypoint map
|
||||
getattr link unlink)))
|
||||
|
||||
;; Remounting /gnu/store read-write.
|
||||
(allow guix_daemon_t
|
||||
fs_t
|
||||
(filesystem (remount)))
|
||||
|
||||
;; TODO: unknown
|
||||
(allow guix_daemon_t
|
||||
root_t
|
||||
@@ -228,9 +218,6 @@
|
||||
(allow guix_daemon_t
|
||||
tmpfs_t
|
||||
(file (create open read unlink write)))
|
||||
(allow guix_daemon_t ;same as above, but with tmp_t
|
||||
tmp_t
|
||||
(file (create open read unlink write)))
|
||||
(allow guix_daemon_t
|
||||
tmpfs_t
|
||||
(dir (getattr add_name remove_name write)))
|
||||
@@ -297,14 +284,6 @@
|
||||
guix_store_content_t
|
||||
(sock_file (create getattr setattr unlink write)))
|
||||
|
||||
;; Access to run state directories
|
||||
(allow guix_daemon_t
|
||||
system_dbusd_var_run_t
|
||||
(dir (search)))
|
||||
(allow guix_daemon_t
|
||||
init_var_run_t
|
||||
(dir (search)))
|
||||
|
||||
;; Access to configuration files and directories
|
||||
(allow guix_daemon_t
|
||||
guix_daemon_conf_t
|
||||
@@ -468,8 +447,6 @@
|
||||
any (unconfined_u object_r guix_store_content_t (low low)))
|
||||
(filecon "@prefix@/bin/guix-daemon"
|
||||
file (system_u object_r guix_daemon_exec_t (low low)))
|
||||
(filecon "@guix_localstatedir@/guix/profiles/per-user/[^/]+/current-guix/bin/guix-daemon"
|
||||
file (system_u object_r guix_daemon_exec_t (low low)))
|
||||
(filecon "@storedir@/.+-(guix-.+|profile)/bin/guix-daemon"
|
||||
file (system_u object_r guix_daemon_exec_t (low low)))
|
||||
(filecon "@storedir@/[a-z0-9]+-guix-daemon"
|
||||
|
||||
+43
-85
@@ -9,9 +9,8 @@
|
||||
# Copyright © 2020 Daniel Brooks <db48x@db48x.net>
|
||||
# Copyright © 2021 Jakub Kądziołka <kuba@kadziolka.net>
|
||||
# Copyright © 2021 Chris Marusich <cmmarusich@gmail.com>
|
||||
# Copyright © 2021, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
# Copyright © 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
# Copyright © 2022 Prafulla Giri <prafulla.giri@protonmail.com>
|
||||
# Copyright © 2023 Andrew Tropin <andrew@trop.in>
|
||||
#
|
||||
# This file is part of GNU Guix.
|
||||
#
|
||||
@@ -30,22 +29,6 @@
|
||||
|
||||
# We require Bash but for portability we'd rather not use /bin/bash or
|
||||
# /usr/bin/env in the shebang, hence this hack.
|
||||
|
||||
# Environment variables
|
||||
#
|
||||
# GUIX_BINARY_FILE_NAME
|
||||
#
|
||||
# Can be used to override the automatic download mechanism and point
|
||||
# to a local Guix binary archive filename like
|
||||
# "/tmp/guix-binary-1.4.0rc2.armhf-linux.tar.xz"
|
||||
#
|
||||
# GUIX_ALLOW_OVERWRITE
|
||||
#
|
||||
# Instead of aborting to avoid overwriting a previous installations,
|
||||
# allow copying over /var/guix or /gnu. This can be useful when the
|
||||
# installation required the user to extract Guix packs under /gnu to
|
||||
# satisfy its dependencies.
|
||||
|
||||
if [ "x$BASH_VERSION" = "x" ]
|
||||
then
|
||||
exec bash "$0" "$@"
|
||||
@@ -70,7 +53,6 @@ REQUIRE=(
|
||||
"chmod"
|
||||
"uname"
|
||||
"groupadd"
|
||||
"useradd"
|
||||
"tail"
|
||||
"tr"
|
||||
"xz"
|
||||
@@ -138,8 +120,10 @@ chk_require()
|
||||
command -v "$c" &>/dev/null || warn+=("$c")
|
||||
done
|
||||
|
||||
[ "${#warn}" -ne 0 ] && die "Missing commands: ${warn[*]}."
|
||||
|
||||
[ "${#warn}" -ne 0 ] &&
|
||||
{ _err "${ERR}Missing commands: ${warn[*]}.";
|
||||
return 1; }
|
||||
|
||||
_msg "${PAS}verification of required commands completed"
|
||||
}
|
||||
|
||||
@@ -353,18 +337,16 @@ sys_create_store()
|
||||
|
||||
_debug "--- [ ${FUNCNAME[0]} ] ---"
|
||||
|
||||
if [[ -e /var/guix && -e /gnu ]]; then
|
||||
if [ -n "$GUIX_ALLOW_OVERWRITE" ]; then
|
||||
_msg "${WAR}Overwriting existing installation!"
|
||||
else
|
||||
die "A previous Guix installation was found. Refusing to overwrite."
|
||||
fi
|
||||
if [[ -e "/var/guix" || -e "/gnu" ]]; then
|
||||
die "A previous Guix installation was found. Refusing to overwrite."
|
||||
fi
|
||||
|
||||
cd "$tmp_path"
|
||||
tar --extract --file "$pkg" && _msg "${PAS}unpacked archive"
|
||||
|
||||
_msg "${INF}Installing /var/guix and /gnu..."
|
||||
# Strip (skip) the leading ‘.’ component, which fails on read-only ‘/’.
|
||||
tar --extract --strip-components=1 --file "$pkg" -C /
|
||||
mv "${tmp_path}/var/guix" /var/
|
||||
mv "${tmp_path}/gnu" /
|
||||
|
||||
_msg "${INF}Linking the root user's profile"
|
||||
mkdir -p ~root/.config/guix
|
||||
@@ -434,27 +416,36 @@ sys_enable_guix_daemon()
|
||||
_msg "${PAS}enabled Guix daemon via upstart"
|
||||
;;
|
||||
systemd)
|
||||
{ install_unit()
|
||||
{
|
||||
local dest="/etc/systemd/system/$1"
|
||||
rm -f "$dest"
|
||||
cp ~root/.config/guix/current/lib/systemd/system/"$1" "$dest"
|
||||
chmod 664 "$dest"
|
||||
systemctl daemon-reload
|
||||
systemctl enable "$1"
|
||||
}
|
||||
{ # systemd .mount units must be named after the target directory.
|
||||
# Here we assume a hard-coded name of /gnu/store.
|
||||
# XXX Work around <https://issues.guix.gnu.org/41356> until next release.
|
||||
if [ -f ~root/.config/guix/current/lib/systemd/system/gnu-store.mount ]; then
|
||||
cp ~root/.config/guix/current/lib/systemd/system/gnu-store.mount \
|
||||
/etc/systemd/system/;
|
||||
chmod 664 /etc/systemd/system/gnu-store.mount;
|
||||
systemctl daemon-reload &&
|
||||
systemctl enable gnu-store.mount;
|
||||
fi
|
||||
|
||||
install_unit guix-daemon.service
|
||||
cp ~root/.config/guix/current/lib/systemd/system/guix-daemon.service \
|
||||
/etc/systemd/system/;
|
||||
chmod 664 /etc/systemd/system/guix-daemon.service;
|
||||
|
||||
# Work around <https://bugs.gnu.org/36074>, present in 1.0.1.
|
||||
sed -i /etc/systemd/system/guix-daemon.service \
|
||||
-e "s/GUIX_LOCPATH='/'GUIX_LOCPATH=/";
|
||||
|
||||
# Work around <https://bugs.gnu.org/35671>, present in 1.0.1.
|
||||
if ! grep en_US /etc/systemd/system/guix-daemon.service >/dev/null;
|
||||
then sed -i /etc/systemd/system/guix-daemon.service \
|
||||
-e 's/^Environment=\(.*\)$/Environment=\1 LC_ALL=en_US.UTF-8';
|
||||
fi;
|
||||
|
||||
configure_substitute_discovery \
|
||||
/etc/systemd/system/guix-daemon.service
|
||||
|
||||
# Install after guix-daemon.service to avoid a harmless warning.
|
||||
# systemd .mount units must be named after the target directory.
|
||||
# Here we assume a hard-coded name of /gnu/store.
|
||||
install_unit gnu-store.mount
|
||||
|
||||
systemctl daemon-reload &&
|
||||
systemctl enable guix-daemon &&
|
||||
systemctl start guix-daemon; } &&
|
||||
_msg "${PAS}enabled Guix daemon via systemd"
|
||||
;;
|
||||
@@ -544,19 +535,15 @@ export PATH="$_GUIX_PROFILE/bin${PATH:+:}$PATH"
|
||||
# searches 'Info-default-directory-list'.
|
||||
export INFOPATH="$_GUIX_PROFILE/share/info:$INFOPATH"
|
||||
|
||||
# GUIX_PROFILE: User's default profile and home profile
|
||||
GUIX_PROFILE="$HOME/.guix-profile"
|
||||
[ -f "$GUIX_PROFILE/etc/profile" ] && . "$GUIX_PROFILE/etc/profile"
|
||||
[ -L "$GUIX_PROFILE" ] || \
|
||||
GUIX_LOCPATH="$GUIX_PROFILE/lib/locale:${GUIX_LOCPATH:+:}$GUIX_LOCPATH"
|
||||
|
||||
# GUIX_PROFILE: User's default profile
|
||||
# Prefer the one from 'guix home' if it exists.
|
||||
GUIX_PROFILE="$HOME/.guix-home/profile"
|
||||
[ -f "$GUIX_PROFILE/etc/profile" ] && . "$GUIX_PROFILE/etc/profile"
|
||||
[ -L "$GUIX_PROFILE" ] || \
|
||||
GUIX_LOCPATH="$GUIX_PROFILE/lib/locale:${GUIX_LOCPATH:+:}$GUIX_LOCPATH"
|
||||
|
||||
[ -L $GUIX_PROFILE ] || GUIX_PROFILE="$HOME/.guix-profile"
|
||||
[ -L $GUIX_PROFILE ] || return
|
||||
GUIX_LOCPATH="$GUIX_PROFILE/lib/locale"
|
||||
export GUIX_LOCPATH
|
||||
|
||||
[ -f "$GUIX_PROFILE/etc/profile" ] && . "$GUIX_PROFILE/etc/profile"
|
||||
EOF
|
||||
}
|
||||
|
||||
@@ -581,8 +568,7 @@ sys_create_shell_completion()
|
||||
|
||||
sys_customize_bashrc()
|
||||
{
|
||||
prompt_yes_no "Customize users Bash shell prompt for Guix?" || return 0
|
||||
|
||||
prompt_yes_no "Customize users Bash shell prompt for Guix?" || return
|
||||
for bashrc in /home/*/.bashrc /root/.bashrc; do
|
||||
test -f "$bashrc" || continue
|
||||
grep -Fq '$GUIX_ENVIRONMENT' "$bashrc" && continue
|
||||
@@ -599,30 +585,6 @@ fi
|
||||
_msg "${PAS}Bash shell prompt successfully customized for Guix"
|
||||
}
|
||||
|
||||
sys_maybe_setup_selinux()
|
||||
{
|
||||
if ! [ -f /sys/fs/selinux/policy ]
|
||||
then
|
||||
return
|
||||
fi
|
||||
|
||||
local c
|
||||
for c in semodule restorecon
|
||||
do
|
||||
if ! command -v "$c" &>/dev/null
|
||||
then
|
||||
return
|
||||
fi
|
||||
done
|
||||
|
||||
prompt_yes_no "Install SELinux policy that might be required to run guix-daemon?" \
|
||||
|| return 0
|
||||
|
||||
local var_guix=/var/guix/profiles/per-user/root/current-guix
|
||||
semodule -i "${var_guix}/share/selinux/guix-daemon.cil"
|
||||
restorecon -R /gnu /var/guix
|
||||
}
|
||||
|
||||
welcome()
|
||||
{
|
||||
local char
|
||||
@@ -653,10 +615,7 @@ https://www.gnu.org/software/guix/
|
||||
EOF
|
||||
# Don't use ‘read -p’ here! It won't display when run non-interactively.
|
||||
echo -n "Press return to continue..."$'\r'
|
||||
if ! read -r char; then
|
||||
echo
|
||||
die "Can't read standard input. Hint: don't pipe scripts into a shell."
|
||||
fi
|
||||
read -r char
|
||||
if [ "$char" ]; then
|
||||
echo
|
||||
echo "...that ($char) was not a return!"
|
||||
@@ -698,7 +657,6 @@ main()
|
||||
|
||||
sys_create_store "${GUIX_BINARY_FILE_NAME}" "${tmp_path}"
|
||||
sys_create_build_user
|
||||
sys_maybe_setup_selinux
|
||||
sys_enable_guix_daemon
|
||||
sys_authorize_build_farms
|
||||
sys_create_init_profile
|
||||
|
||||
@@ -1,35 +0,0 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2022 Leo Famulari <leo@famulari.name>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
;;; This file returns a manifest of packages related to linux-libre.
|
||||
;;; Simplistically, it selects packages whose names begin with "linux-libre".
|
||||
;;; It is used to assist continuous integration of the kernel packages.
|
||||
|
||||
(use-modules (guix packages)
|
||||
(guix profiles)
|
||||
(gnu packages))
|
||||
|
||||
(manifest
|
||||
(map package->manifest-entry
|
||||
(fold-packages
|
||||
(lambda (package lst)
|
||||
(if (string-prefix? "linux-libre"
|
||||
(package-name package))
|
||||
(cons package lst)
|
||||
lst))
|
||||
'())))
|
||||
+6
-477
@@ -1,22 +1,22 @@
|
||||
;; GNU Guix news, for use by 'guix pull'.
|
||||
;;
|
||||
;; Copyright © 2019-2023 Ludovic Courtès <ludo@gnu.org>
|
||||
;; Copyright © 2019-2022 Ludovic Courtès <ludo@gnu.org>
|
||||
;; Copyright © 2019–2021 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;; Copyright © 2019, 2020 Miguel Ángel Arruga Vivas <rosen644835@gmail.com>
|
||||
;; Copyright © 2019, 2020 Konrad Hinsen <konrad.hinsen@fastmail.net>
|
||||
;; Copyright © 2019, 2020, 2021, 2023 Julien Lepiller <julien@lepiller.eu>
|
||||
;; Copyright © 2019–2023 Florian Pelz <pelzflorian@pelzflorian.de>
|
||||
;; Copyright © 2019, 2020, 2021 Julien Lepiller <julien@lepiller.eu>
|
||||
;; Copyright © 2019–2022 Florian Pelz <pelzflorian@pelzflorian.de>
|
||||
;; Copyright © 2020, 2022 Marius Bakke <marius@gnu.org>
|
||||
;; Copyright © 2020, 2021 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||
;; Copyright © 2020, 2021, 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
;; Copyright © 2021–2023 Leo Famulari <leo@famulari.name>
|
||||
;; Copyright © 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
;; Copyright © 2021 Leo Famulari <leo@famulari.name>
|
||||
;; Copyright © 2021 Zhu Zihao <all_but_last@163.com>
|
||||
;; Copyright © 2021 Chris Marusich <cmmarusich@gmail.com>
|
||||
;; Copyright © 2021, 2022 Maxime Devos <maximedevos@telenet.be>
|
||||
;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
|
||||
;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
|
||||
;; Copyright © 2021, 2023 Jonathan Brielmaier <jonathan.brielmaier@web.de>
|
||||
;; Copyright © 2021 Jonathan Brielmaier <jonathan.brielmaier@web.de>
|
||||
;; Copyright © 2022 Thiago Jung Bauermann <bauermann@kolabnow.com>
|
||||
;;
|
||||
;; Copying and distribution of this file, with or without modification, are
|
||||
@@ -26,477 +26,6 @@
|
||||
(channel-news
|
||||
(version 0)
|
||||
|
||||
(entry (commit "db775e7367e8deffb513aad94f4afb875d796d0b")
|
||||
(title
|
||||
(en "Linux-libre 6.3 removed due to end of upstream support")
|
||||
(de "Linux-libre 6.3 wurde entfernt"))
|
||||
(body
|
||||
(en "The linux-libre 6.3 kernel series has reached the end of
|
||||
its life, and is no longer supported upstream. For this
|
||||
reason, it has been removed from GNU Guix.")
|
||||
(de "Vom Kernel @code{linux-libre} wird die 6.3-Versionsreihe keine
|
||||
Unterstützung von dessen Anbieter mehr erfahren („end of life“). Daher ist es
|
||||
aus GNU Guix entfernt worden.")))
|
||||
|
||||
(entry (commit "bff1f2d4d07e934ea296f9c724b5337996a27c44")
|
||||
(title
|
||||
(en "Linux-libre kernel updated to 6.4")
|
||||
(de "Linux-libre-Kernel wird auf 6.4 aktualisiert")
|
||||
(fr "Le noyau linux-libre est mis à jour vers la 6.4")
|
||||
(pt "Kernel linux-libre atualizado para 6.4"))
|
||||
(body
|
||||
(en "The default version of the linux-libre kernel has been updated to
|
||||
the 6.4 release series.")
|
||||
(de "Der standardmäßig verwendete @code{linux-libre}-Kernel basiert
|
||||
jetzt auf der 6.4-Versionsreihe.")
|
||||
(fr "La version par défaut du noyau linux-libre est mise à jour
|
||||
vers la série des 6.4.")
|
||||
(pt "A versão padrão do kernel linux-libre foi atualizada para a
|
||||
série do kernel 6.4.")))
|
||||
|
||||
(entry (commit "1b7aabbc79969a89141aadd3d41d7a5329a3462e")
|
||||
(title
|
||||
(en "New @command{guix locate} command")
|
||||
(de "Neuer Befehl @command{guix locate}")
|
||||
(fr "Nouvelle commande @command{guix locate}"))
|
||||
(body
|
||||
(en "The new @command{guix locate} command lets you search for
|
||||
packages containing a given file---at long last! For instance, to find which
|
||||
package(s) provide a file named @file{ls}, run:
|
||||
|
||||
@example
|
||||
guix locate ls
|
||||
@end example
|
||||
|
||||
Currently the command relies on purely local information. It is thus unable
|
||||
to find packages that have not reached your store. This limitation will be
|
||||
lifted in a future revision.
|
||||
|
||||
Run @command{info \"(guix) Invoking guix locate\"} for more info.")
|
||||
(de "Mit dem neuen Befehl @command{guix locate} können Sie nach
|
||||
Paketen suchen, die eine angegebene Datei enthalten — endlich ist es
|
||||
soweit! Um zum Beispiel das Paket bzw.@: die Pakete zu finden, die eine
|
||||
Datei namens @file{ls} bereitstellen, führen Sie aus:
|
||||
|
||||
@example
|
||||
guix locate ls
|
||||
@end example
|
||||
|
||||
Derzeit benutzt der Befehl ausschließlich lokal vorliegende
|
||||
Informationen. Daher können Sie damit nur Pakete finden, die sich in
|
||||
Ihrem Store-Verzeichnis befinden. Diese Einschränkung werden wir in
|
||||
einer zukünftigen Version aufheben.
|
||||
|
||||
Führen Sie @command{info \"(guix) Invoking guix locate\"} aus, um mehr zu
|
||||
erfahren.")
|
||||
(fr "La nouvelle commande @command{guix locate} permet de chercher le
|
||||
ou les paquets contenant un fichier donné---enfin ! Par exemple, pour trouver
|
||||
quel paquet fournit un fichier nommé @file{ls}, on lance :
|
||||
|
||||
@example
|
||||
guix locate ls
|
||||
@end example
|
||||
|
||||
Pour le moment la commande se base uniquement sur des informations locales.
|
||||
Elle ne peut donc pas trouver des paquets absents de votre dépôt. Cette limitation
|
||||
sera levée dans une prochaine version.
|
||||
|
||||
Lancer @command{info \"(guix) Invoking guix locate\"} pour plus d'informations.")))
|
||||
|
||||
(entry (commit "ba5da5125a81307500982517e2f458d57b024668")
|
||||
(title
|
||||
(en "New @code{arguments} rule for @command{guix style}")
|
||||
(de "Neue Stilregel @code{arguments} für @command{guix style}")
|
||||
(fr "Nouvelle règle @code{arguments} pour @command{guix style}"))
|
||||
(body
|
||||
(en "The @command{guix style} command has a new @dfn{styling rule}
|
||||
for package definitions. Package writers may now run the following command:
|
||||
|
||||
@example
|
||||
guix style -L /path/to/channel -S arguments @var{package}
|
||||
@end example
|
||||
|
||||
This command rewrites the @code{arguments} field of @var{package} so that it
|
||||
uses G-expressions instead of classical quasiquotation.
|
||||
|
||||
Run @command{info \"(guix) Invoking guix style\"} for more info.")
|
||||
(de "Der Befehl @command{guix style} verfügt über eine neue @dfn{Stilregel}
|
||||
für Paketdefinitionen. Paketautoren können jetzt folgenden Befehl benutzen:
|
||||
|
||||
@example
|
||||
guix style -L /pfad/zum/kanal -S arguments @var{Paket}
|
||||
@end example
|
||||
|
||||
Dadurch wird das Feld @code{arguments} in @var{Paket} so umgeschrieben, dass
|
||||
G-Ausdrücke (gexps) anstelle von klassischer Quasiquotierung verwendet
|
||||
werden.
|
||||
|
||||
Führen Sie @command{info \"(guix.de) Aufruf von guix style\"} aus, um
|
||||
mehr Informationen zu erhalten.")
|
||||
(fr "La commande @command{guix style} a une nouvelle @dfn{règle de
|
||||
style} pour les définitions de paquets. Les auteurices de paquets peuvent
|
||||
maintenant lancer la commande suivante :
|
||||
|
||||
@example
|
||||
guix style -L /chemin/vers/canal -S arguments @var{paquet}
|
||||
@end example
|
||||
|
||||
Cette commande réécrit le champ @code{arguments} de @var{paquet} pour qu'il
|
||||
utilise des G-expressions plutôt que des quasicitations classiques.
|
||||
|
||||
Lancer @command{info \"(guix.fr) Invoquer guix style\"} pour plus
|
||||
d'informations.")))
|
||||
|
||||
(entry (commit "ae11fcb84ac478dfa56d322ef08890645183a087")
|
||||
(title
|
||||
(en "New @option{--with-configure-flag} transformation option")
|
||||
(de "Neue Paketumwandlungsoption @option{--with-configure-flag}")
|
||||
(fr "Nouvelle option de transformation @option{--with-configure-flag}"))
|
||||
(body
|
||||
(en "The new @option{--with-configure-flag} package transformation
|
||||
option lets you pass an additional configure flag to the build system of a
|
||||
package. For instance, here is how you would pass a flag to @command{cmake},
|
||||
the build system of the @code{lapack} package:
|
||||
|
||||
@example
|
||||
guix build lapack \\
|
||||
--with-configure-flag=lapack=-DBUILD_SHARED_LIBS=OFF
|
||||
@end example
|
||||
|
||||
Run @command{info \"(guix) Package Transformation Options\"} for more info.")
|
||||
(de "Die neue Paketumwandlungsoption @option{--with-configure-flag}
|
||||
macht es möglich, dem Erstellungssystem eines Pakets eine zusätzliche
|
||||
Befehlszeilenoption für configure mitzugeben. Zum Beispiel können Sie dem
|
||||
@command{cmake}-Erstellungssystem des @code{lapack}-Pakets eine Option mitgeben:
|
||||
|
||||
@example
|
||||
guix build lapack \\
|
||||
--with-configure-flag=lapack=-DBUILD_SHARED_LIBS=OFF
|
||||
@end example
|
||||
|
||||
Führen Sie für mehr Informationen @command{info \"(guix.de)
|
||||
Paketumwandlungsoptionen\"} aus.")
|
||||
(fr "La nouvelle option de transformation de paquets
|
||||
@option{--with-configure-flag} permet de passer un drapeau supplémentaire au
|
||||
système de construction d'un paquet. Par exemple, voici comment on passerait
|
||||
un drapeau à @command{cmake}, le système de construction du logiciel
|
||||
@code{lapack} :
|
||||
|
||||
@example
|
||||
guix build lapack \\
|
||||
--with-configure-flag=lapack=-DBUILD_SHARED_LIBS=OFF
|
||||
@end example
|
||||
|
||||
Voir @command{info \"(guix.fr) Options de transformation de paquets\"} pour
|
||||
plus de détails.")))
|
||||
|
||||
(entry (commit "c919bfefd98bf2e29549539b4e28e6dc2a8a6f32")
|
||||
(title
|
||||
(en "Core packages updated")
|
||||
(de "Kern-Pakete aktualisiert")
|
||||
(fr "Mise à jour des logiciels importants"))
|
||||
(body
|
||||
(en "Core packages have been updated, following months of hard work
|
||||
by contributors. Noteworthy package upgrades include:
|
||||
|
||||
@itemize
|
||||
@item glibc 2.35;
|
||||
@item Python 3.10;
|
||||
@item Perl 5.36;
|
||||
@item Mesa 22;
|
||||
@item GCC 11 is now used as the default compiler.
|
||||
@end itemize
|
||||
|
||||
A major highlight is the introduction of the so-called @dfn{full-source
|
||||
bootstrap}: packages are all built starting from a 500-byte program called
|
||||
stage0, which is then used to build a higher-level interpreter, a basic Scheme
|
||||
interpreter and C compiler (GNU Mes), and so on, until @acronym{GCC, the GNU
|
||||
Compiler Collection} is finally built. This is a premiere and a huge step
|
||||
forward in terms of transparency of auditability.")
|
||||
(de "Die Pakete, die den Kern der Distribution ausmachen, haben eine
|
||||
Aktualisierung bekommen. Dies ist das Ergebnis monatelanger harter Arbeit
|
||||
unserer Mitwirkenden. Zu den wichtigen Paketaktualisierungen gehören:
|
||||
|
||||
@itemize
|
||||
@item glibc 2.35,
|
||||
@item Python 3.10,
|
||||
@item Perl 5.36,
|
||||
@item Mesa 22,
|
||||
@item GCC 11 wird jetzt standardmäßig als Compiler benutzt.
|
||||
@end itemize
|
||||
|
||||
Eine große Neuigkeit ist, dass Guix jetzt auf „Bootstrapping aus dem Quellcode
|
||||
allein“ basiert: Grundlage der Pakete ist ein 500 Byte großes Programm namens
|
||||
stage0, womit ein weiter abstrahierter Interpretierer kompiliert wird, dann ein
|
||||
grundlegender Scheme-Interpretierer und C-Compiler (GNU Mes), und so geht es
|
||||
weiter, bis endlich @acronym{GCC, die GNU Compiler Collection} erstellt wird. Es
|
||||
ist eine Premiere und ein großer Schritt nach vorne, was Transparenz und
|
||||
Auditierbarkeit angeht.")
|
||||
(fr "Les logiciels de base ont été mis à jour, après des mois de dur
|
||||
labeur par les contributeur·rices du projet. Parmi les mises à jour notables,
|
||||
il y a :
|
||||
|
||||
@itemize
|
||||
@item glibc 2.35 ;
|
||||
@item Python 3.10 ;
|
||||
@item Perl 5.36 ;
|
||||
@item Mesa 22 ;
|
||||
@item GCC 11 est dorénavant le compilateur par défaut.
|
||||
@end itemize
|
||||
|
||||
Une autre nouveauté importante est l'introduction de @dfn{l'amorçage intégral
|
||||
depuis le source} (@i{full-source bootstrap} en anglais) : les logiciels sont
|
||||
compilés en partant d'un programme de 500 octets appelé stage0, à partir
|
||||
duquel on compile un interprète de plus haut niveau, un interprète Scheme et
|
||||
un compilateur C de base (GNU Mes), et ainsi de suite, jusqu'à ce que
|
||||
@acronym{GCC, the GNU Compiler Collection} soit enfin compilé. C'est une
|
||||
première et un grand pas en avant en termes de transparence et
|
||||
d'auditabilité.")))
|
||||
|
||||
(entry (commit "21564fada141bfba25d471518b293b6004244c3a")
|
||||
(title
|
||||
(en "Linux-libre LTS kernel updated to 6.1")
|
||||
(de "Linux-libre LTS Kernel wird auf 6.1 aktualisiert"))
|
||||
(body
|
||||
(en "The default version of the @code{linux-libre-lts} kernel has been
|
||||
updated to the 6.1 longterm release series.")
|
||||
(de "Der standardmäßig verwendete @code{linux-libre-lts}-Kernel basiert
|
||||
jetzt auf der 6.1-Versionsreihe (Langzeitunterstützung).")))
|
||||
|
||||
(entry (commit "57db09aae73e3713a10c5253758d84e1046f80dc")
|
||||
(title
|
||||
(en "Using Guix within @command{guix shell --container}")
|
||||
(de "Guix innerhalb @command{guix shell --container} nutzen")
|
||||
(fr "Utilisation de Guix dans @command{guix shell --container}"))
|
||||
(body
|
||||
(en "The @option{--container} (or @option{-C}) option lets you spawn
|
||||
a container---an isolated software environment. In some cases, it is useful
|
||||
to use Guix from within the container, something that is normally not
|
||||
possible.
|
||||
|
||||
The new @option{--nesting} (or @option{-W}) option lets you do exactly that: a
|
||||
container created with that option will let you use @command{guix} commands,
|
||||
including @command{guix shell -C}, @emph{inside} of it.
|
||||
|
||||
The example below shows how to evaluate a @file{guix.scm} file to build a
|
||||
package from within an isolated container, which is useful if @file{guix.scm}
|
||||
is untrusted:
|
||||
|
||||
@example
|
||||
guix shell -CW -- guix build -f guix.scm
|
||||
@end example
|
||||
|
||||
Run @command{info \"(guix) Invoking guix shell\"} for more information.")
|
||||
(de "Mit der Befehlszeilenoption @option{--container} (oder
|
||||
@option{-C}) können Sie Container anlegen, also isolierte
|
||||
Software-Umgebungen. Allerdings will man manchmal Guix innerhalb eines
|
||||
Containers nutzen, was unmöglich ist, wenn Sie es normal aufrufen.
|
||||
|
||||
Die neue Befehlszeilenoption @option{--nesting} (oder @option{-W}) ergänzt
|
||||
genau das: In einem damit angelegten Container lassen sich
|
||||
@command{guix}-Befehle, einschließlich @command{guix shell -C}, @emph{im
|
||||
Container} benutzen.
|
||||
|
||||
Folgendes Beispiel zeigt, wie Sie eine Datei @file{guix.scm} auswerten lassen,
|
||||
um ein Paket aus dem isolierten Container heraus erstellen zu lassen. Das
|
||||
können Sie gebrauchen, wenn Sie @file{guix.scm} @emph{nicht} vertrauen:
|
||||
|
||||
@example
|
||||
guix shell -CW -- guix build -f guix.scm
|
||||
@end example
|
||||
|
||||
Führen Sie @command{info \"(guix.de) Aufruf von guix shell\"} aus, um mehr
|
||||
zu erfahren.")
|
||||
(fr "L'option @option{--container} (ou @option{-C}) permet de
|
||||
démarrer un conteneur---un environnement logiciel isolé. Dans certains cas,
|
||||
il peut être utile d'utiliser Guix à l'intérieur du conteneur, ce qui n'est
|
||||
normalement pas possible.
|
||||
|
||||
La nouvelle option @option{--nesting} (ou @option{-W}) résoud ce problème : un
|
||||
conteneur créé avec cette option permet d'utiliser des commandes
|
||||
@command{guix} à l'intérieur, y compris @command{guix shell -C}.
|
||||
|
||||
L'exemple ci-dessous montre comment évaluer un fichier @file{guix.scm} pour
|
||||
construire un paquet depuis un conteneur isolé, ce qui est utile si
|
||||
@file{guix.scm} n'est pas de confiance :
|
||||
|
||||
@example
|
||||
guix shell -CW -- guix build -f guix.scm
|
||||
@end example
|
||||
|
||||
Lancer @command{info \"(guix.fr) Invoquer guix shell\"} pour plus
|
||||
d'informations.")))
|
||||
|
||||
(entry (commit "0e18c5e5bcb9204c278cfc75493d3b02b746d5c3")
|
||||
(title
|
||||
(en "Linux-libre kernel updated to 6.2")
|
||||
(de "Linux-libre-Kernel wird auf 6.2 aktualisiert")
|
||||
(fr "Le noyau linux-libre est mis à jour vers la 6.2")
|
||||
(pt "Kernel linux-libre atualizado para 6.2"))
|
||||
(body
|
||||
(en "The default version of the linux-libre kernel has been updated to
|
||||
the 6.2 release series.")
|
||||
(de "Der standardmäßig verwendete @code{linux-libre}-Kernel basiert
|
||||
jetzt auf der 6.2-Versionsreihe.")
|
||||
(fr "La version par défaut du noyau linux-libre est mise à jour
|
||||
vers la série des 6.2.")
|
||||
(pt "A versão padrão do kernel linux-libre foi atualizada para a
|
||||
série do kernel 6.2.")))
|
||||
|
||||
(entry (commit "598f4c509bbfec2b983a8ee246cce0a0fe45ec7f")
|
||||
(title
|
||||
(de "Neues Format @samp{rpm} für den Befehl @command{guix pack}")
|
||||
(en "New @samp{rpm} format for the @command{guix pack} command")
|
||||
(fr "Nouveau format @samp{rpm} pour la commande @command{guix pack}"))
|
||||
(body
|
||||
(de "Sie können jetzt auch RPM-Archive (mit der Dateinamenserweiterung
|
||||
.rpm) erzeugen mit dem Befehl @command{guix pack --format=rpm}. Damit
|
||||
haben Sie einen alternativen Distributionsweg für mit Guix erstellte
|
||||
Software. Hier sehen Sie ein einfaches Beispiel, wie Sie ein
|
||||
RPM-Archiv für das Paket @code{hello} erzeugen:
|
||||
|
||||
@example
|
||||
guix pack --format=rpm --symlink=/usr/bin/hello=bin/hello hello
|
||||
@end example
|
||||
|
||||
Siehe @command{info \"(guix.de) Aufruf von guix pack\"} für mehr
|
||||
Informationen.")
|
||||
(en "RPM archives (with the .rpm file extension) can now be produced
|
||||
via the @command{guix pack --format=rpm} command, providing an alternative
|
||||
distribution path for software built with Guix. Here is a simple example that
|
||||
generates an RPM archive for the @code{hello} package:
|
||||
|
||||
@example
|
||||
guix pack --format=rpm --symlink=/usr/bin/hello=bin/hello hello
|
||||
@end example
|
||||
|
||||
See @command{info \"(guix) Invoking guix pack\"} for more information.")
|
||||
(fr "Vous pouvez désormais produire une archive RPM (avec l'extension
|
||||
.rpm) avec la commande @command{guix pack --format=rpm} qui propose
|
||||
donc une nouvelle manière de distribuer les logiciels construits avec
|
||||
Guix. Voici un exemple permettant de générer une archive RPM pour le
|
||||
paquet @code{hello} :
|
||||
|
||||
@example
|
||||
guix pack --format=rpm --symlink=/usr/bin/hello=bin/hello hello
|
||||
@end example
|
||||
|
||||
Consultez @command{info \"(guix.fr) Invoquer guix pack\"} pour plus
|
||||
d'informations.")))
|
||||
|
||||
(entry (commit "137b91f03bbb7f1df71cf10c4f79ae57fbcea400")
|
||||
(title
|
||||
(en "New @option{--with-version} package transformation option")
|
||||
(de "Neue Paketumwandlungsoption @option{--with-version}")
|
||||
(fr "Nouvelle option de transformation @option{--with-version}"))
|
||||
(body
|
||||
(en "The new @option{--with-version} package transformation option
|
||||
generalizes @option{--with-latest}: it gets the specified upstream release of
|
||||
a package and uses it instead of the currently-packaged version.
|
||||
|
||||
For example, the command below would spawn GNOME Clocks built against GTK
|
||||
4.7.0, skipping its test suite:
|
||||
|
||||
@example
|
||||
guix shell gnome-clocks --with-version=gtk=4.7.0 \\
|
||||
--without-tests=gtk -- gnome-clocks
|
||||
@end example
|
||||
|
||||
Run @command{info \"(guix) Package Transformation Options\"} for more info.")
|
||||
(de "Die neue Paketumwandlungsoption @option{--with-version}
|
||||
verallgemeinert @option{--with-latest}: Mit ihr kann man angeben, welche
|
||||
vom Anbieter veröffentlichte Version man anstelle der derzeit im Paket
|
||||
vorgegebenen haben möchte.
|
||||
|
||||
Zum Beispiel kann mit folgendem Befehl ein für die GTK-Version 4.7.0
|
||||
erstelltes GNOME Clocks aufgerufen werden, wobei der Testkatalog dafür
|
||||
übersprungen wird.
|
||||
|
||||
@example
|
||||
guix shell gnome-clocks --with-version=gtk=4.7.0 \\
|
||||
--without-tests=gtk -- gnome-clocks
|
||||
@end example
|
||||
|
||||
Führen Sie für mehr Informationen @command{info \"(guix.de)
|
||||
Paketumwandlungsoptionen\"} aus.")
|
||||
(fr "La nouvelle option de transformation de paquets
|
||||
@option{--with-version} généralise @option{--with-latest} : elle permet de
|
||||
spécifier quelle version amont d'un logiciel utiliser à la place de celle
|
||||
actuellement fournie.
|
||||
|
||||
Par exemple, la commande ci-dessous démarre GNOME Clocks construit avec GTK
|
||||
4.7.0, sans lancer sa suite de tests :
|
||||
|
||||
@example
|
||||
guix shell gnome-clocks --with-version=gtk=4.7.0 \\
|
||||
--without-tests=gtk -- gnome-clocks
|
||||
@end example
|
||||
|
||||
Voir @command{info \"(guix.fr) Options de transformation de paquets\"} pour
|
||||
plus de détails.")))
|
||||
|
||||
(entry (commit "9ea37eb9f5329c213757bbfe5d9241cde8433858")
|
||||
(title
|
||||
(en "Linux-libre 6.0 removed due to end of upstream support")
|
||||
(de "Linux-libre 6.0 wurde entfernt"))
|
||||
(body
|
||||
(en "The linux-libre 6.0 kernel series has reached the end of
|
||||
its life, and no longer supported upstream. For this
|
||||
reason, it has been removed from GNU Guix.")
|
||||
(de "Vom Kernel @code{linux-libre} wird die 6.0-Versionsreihe keine
|
||||
Unterstützung von dessen Anbieter mehr erfahren („end of life“). Daher ist es
|
||||
aus GNU Guix entfernt worden.")))
|
||||
|
||||
(entry (commit "ce8a34bc9ab89f31f107383ba791954864aed372")
|
||||
(title
|
||||
(en "Linux-libre kernel updated to 6.1")
|
||||
(de "Linux-libre-Kernel wird auf 6.1 aktualisiert")
|
||||
(fr "Le noyau linux-libre est mis à jour vers la 6.1")
|
||||
(pt "Kernel linux-libre atualizado para 6.1"))
|
||||
(body
|
||||
(en "The default version of the linux-libre kernel has been updated to
|
||||
the 6.1 release series.")
|
||||
(de "Der standardmäßig verwendete @code{linux-libre}-Kernel basiert
|
||||
jetzt auf der 6.1-Versionsreihe.")
|
||||
(fr "La version par défaut du noyau linux-libre est mise à jour
|
||||
vers la série des 6.1.")
|
||||
(pt "A versão padrão do kernel linux-libre foi atualizada para a
|
||||
série do kernel 6.1.")))
|
||||
|
||||
(entry (commit "064c5b7e450f9f6d55cfcd0ec2bc9e96ee0b2958")
|
||||
(title
|
||||
(en "Linux-libre 4.9 removed due to end of upstream support")
|
||||
(de "Linux-libre 4.9 wurde entfernt"))
|
||||
(body
|
||||
(en "The linux-libre 4.9 kernel series has reach the end of its life,
|
||||
and is no longer supported upstream. For this reason, it has been removed from
|
||||
GNU Guix.")
|
||||
(de "Vom Kernel @code{linux-libre} wird die 4.9-Versionsreihe keine
|
||||
Unterstützung von dessen Anbieter mehr erfahren („end of life“). Daher ist es
|
||||
aus GNU Guix entfernt worden.")))
|
||||
|
||||
(entry (commit "dfc6957a5af7d179d4618eb19d4f555c519bc6f2")
|
||||
(title
|
||||
(en "New @code{customize-linux} procedure")
|
||||
(de "Neue Prozedur @code{customize-linux}")
|
||||
(fr "Nouvelle procédure @code{customize-linux}"))
|
||||
(body
|
||||
(en "The @code{(gnu packages linux)} module includes a new
|
||||
@code{customize-linux} procedure, which should now be used instead of
|
||||
replacing the @samp{\"kconfig\"} native input of a @code{linux-libre}-derived
|
||||
package, as the kernel config file is no longer provided as a native
|
||||
input.")
|
||||
(de "Das Modul @code{(gnu packages linux)} enthält eine neue Prozedur
|
||||
@code{customize-linux}, die von nun an für angepasste Linux-Pakete benutzt
|
||||
werden sollte. Die native Eingabe @samp{\"kconfig\"} eines von
|
||||
@code{linux-libre} abgeleiteten Pakets zu ersetzen, funktioniert nicht mehr,
|
||||
weil die Kernel-Konfigurationsdatei nicht mehr als native Eingabe vorliegt.")
|
||||
(fr "Le module @code{(gnu packages linux)} inclut une nouvelle
|
||||
procédure @code{customize-linux}, qui devrait maintenant être utilisée au lieu
|
||||
de remplacer l'entrée native @samp{\"kconfig\"} d'un paquet dérivé de
|
||||
@code{linux-libre}, car le fichier de configuration du noyau n'est plus fourni
|
||||
en tant qu'entrée native.")))
|
||||
|
||||
(entry (commit "788602b37ff42f730d4b7b569b0fb51465f147da")
|
||||
(title
|
||||
(en "New @option{--symlink} option for @command{guix shell}")
|
||||
|
||||
@@ -1,7 +1,6 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2020-2022 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2023 Andreas Enge <andreas@enge.fr>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -74,14 +73,16 @@ TARGET."
|
||||
"connman" "network-manager" "network-manager-applet"
|
||||
"openssh" "ntp" "tor"
|
||||
"linux-libre" "grub-hybrid"
|
||||
"icecat"))
|
||||
;; 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-3.0/pinned))
|
||||
(append (list (@ (gnu packages guile) guile-3.0/fixed))
|
||||
(map specification->package
|
||||
'("coreutils" "grep" "sed" "findutils" "diffutils" "patch"
|
||||
"gawk" "gettext" "gzip" "xz"
|
||||
|
||||
@@ -56,12 +56,12 @@ scheme-mode
|
||||
(git-reference...
|
||||
"(git-reference"
|
||||
n> "(url \"" p "\")"
|
||||
n> "(commit " (p "commit") "))")
|
||||
n> "(commit \"" p "\"))")
|
||||
|
||||
(svn-reference...
|
||||
"(svn-reference"
|
||||
n> "(url \"" p "\")"
|
||||
n> "(revision " (p "revision") "))")
|
||||
n> "(revision \"" p "\"))")
|
||||
|
||||
(cvs-reference...
|
||||
"(cvs-reference"
|
||||
@@ -72,12 +72,12 @@ scheme-mode
|
||||
(hg-reference...
|
||||
"(hg-reference"
|
||||
n> "(url \"" p "\")"
|
||||
n> "(changeset " (p "changeset") "))")
|
||||
n> "(changeset \"" p "\"))")
|
||||
|
||||
(bzr-reference...
|
||||
"(bzr-reference"
|
||||
n> "(url \"" p "\")"
|
||||
n> "(revision " (p "revision") "))")
|
||||
n> "(revision \"" p "\"))")
|
||||
|
||||
(:phases\ "#:phases (modify-phases %standard-phases"
|
||||
n> p ")")
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
-*- mode: lisp-data -*-
|
||||
|
||||
text-mode :when (bound-and-true-p git-commit-mode)
|
||||
text-mode :when (and (fboundp 'git-commit-mode) (git-commit-mode))
|
||||
|
||||
(add\ "gnu: Add "
|
||||
(p (with-temp-buffer
|
||||
|
||||
@@ -1,9 +0,0 @@
|
||||
# -*- mode: snippet -*-
|
||||
# name: guix-vc-commit-message-add-package
|
||||
# key: add
|
||||
# --
|
||||
gnu: Add ${1:`(when (string-match "\\+(define-public \\(\\S-+\\)" vc-patch-string)
|
||||
(match-string-no-properties 1 vc-patch-string))`}.
|
||||
|
||||
* `(car (log-edit-files))` ($1): New variable.
|
||||
`(mapconcat (lambda (file) (concat "* " file)) (cdr (log-edit-files)) "\n")`
|
||||
@@ -1,9 +0,0 @@
|
||||
# -*- mode: snippet -*-
|
||||
# name: guix-vc-commit-message-remove-package
|
||||
# key: remove
|
||||
# --
|
||||
gnu: Remove ${1:`(when (string-match "\\-(define-public \\(\\S-+\\)" vc-patch-string)
|
||||
(match-string-no-properties 1 vc-patch-string))`}.
|
||||
|
||||
* `(car (log-edit-files))` ($1): Delete variable.
|
||||
`(mapconcat (lambda (file) (concat "* " file)) (cdr (log-edit-files)) "\n")`
|
||||
@@ -1,14 +0,0 @@
|
||||
# -*- mode: snippet -*-
|
||||
# name: guix-vc-commit-message-rename-package
|
||||
# key: rename
|
||||
# --
|
||||
gnu: ${1:`(when (string-match "\\-(define-public \\(\\S-+\\)" vc-patch-string)
|
||||
(match-string-no-properties 1 vc-patch-string))
|
||||
`}: Rename package to ${2:`
|
||||
(when (string-match "\\+(define-public \\(\\S-+\\)" vc-patch-string)
|
||||
(match-string-no-properties 1 vc-patch-string))`}.
|
||||
|
||||
* `(car (log-edit-files))` ($1): Define in terms of
|
||||
'deprecated-package'.
|
||||
($2): New variable, formerly known as "$1".
|
||||
`(mapconcat (lambda (file) (concat "* " file)) (cdr (log-edit-files)) "\n")`
|
||||
@@ -1,12 +0,0 @@
|
||||
# -*- mode: snippet -*-
|
||||
# name: guix-vc-commit-message-update-package
|
||||
# key: update
|
||||
# --
|
||||
|
||||
gnu: ${1:`(when (string-match "^[ ]*(define-public \\(\\S-+\\)" vc-patch-string)
|
||||
(match-string-no-properties 1 vc-patch-string))`}: Update to ${2:`
|
||||
(when (string-match "^\\+[ ]*(version \"\\(.*\\)\"" vc-patch-string)
|
||||
(match-string-no-properties 1 vc-patch-string))`}.
|
||||
|
||||
* `(car (log-edit-files))` ($1): Update to $2.$0
|
||||
`(mapconcat (lambda (file) (concat "* " file)) (cdr (log-edit-files)) "\n")`
|
||||
@@ -1,9 +0,0 @@
|
||||
# -*- mode: snippet -*-
|
||||
# name: guix-vc-commit-message-use-https-home-page
|
||||
# key: https
|
||||
# --
|
||||
gnu: ${1:`(when (string-match "^[ ]*(define-public \\(\\S-+\\)" vc-patch-string)
|
||||
(match-string-no-properties 1 vc-patch-string))`}: Use HTTPS home page URI.
|
||||
|
||||
* `(car (log-edit-files))` ($1)[home-page]: Use HTTPS URI.
|
||||
`(mapconcat (lambda (file) (concat "* " file)) (cdr (log-edit-files)) "\n")`
|
||||
@@ -1,9 +0,0 @@
|
||||
# -*- mode: snippet -*-
|
||||
# name: guix-news-entry
|
||||
# key: entry...
|
||||
# --
|
||||
(entry (commit "$1")
|
||||
(title
|
||||
(en "$2"))
|
||||
(body
|
||||
(en "$3")))
|
||||
+81
-297
@@ -3,10 +3,8 @@
|
||||
!#
|
||||
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2022, 2023 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2022 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2022 Mathieu Othacehe <othacehe@gnu.org>
|
||||
;;; Copyright © 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
;;; Copyright © 2022 Simon Tournier <zimon.toutoune@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -36,27 +34,9 @@
|
||||
(ice-9 format)
|
||||
(ice-9 regex)
|
||||
(ice-9 match)
|
||||
(ice-9 rdelim)
|
||||
(guix ui)
|
||||
(git))
|
||||
|
||||
(define-record-type <regexp*>
|
||||
(%make-regexp* pat flag rx)
|
||||
regexp*?
|
||||
(pat regexp*-pattern)
|
||||
(flag regexp*-flag)
|
||||
(rx regexp*-rx))
|
||||
|
||||
;;; Work around regexp implementation.
|
||||
;;; This record allows to track the regexp pattern and then display it.
|
||||
(define* (make-regexp* pat #:optional (flag regexp/extended))
|
||||
"Alternative to `make-regexp' producing annotated <regexp*> objects."
|
||||
(%make-regexp* pat flag (make-regexp pat flag)))
|
||||
|
||||
(define (regexp*-exec rx* str)
|
||||
"Execute the RX* regexp, a <regexp*> object."
|
||||
(regexp-exec (regexp*-rx rx*) str))
|
||||
|
||||
(define-record-type <team>
|
||||
(make-team id name description members scope)
|
||||
team?
|
||||
@@ -117,7 +97,7 @@
|
||||
(list "gnu/packages/django.scm"
|
||||
"gnu/packages/jupyter.scm"
|
||||
;; Match haskell.scm and haskell-*.scm.
|
||||
(make-regexp* "^gnu/packages/python(-.+|)\\.scm$")
|
||||
(make-regexp "^gnu/packages/python(-.+|)\\.scm$")
|
||||
"gnu/packages/sphinx.scm"
|
||||
"gnu/packages/tryton.scm"
|
||||
"guix/build/pyproject-build-system.scm"
|
||||
@@ -137,7 +117,7 @@ the haskell-build-system."
|
||||
#:scope
|
||||
(list "gnu/packages/dhall.scm"
|
||||
;; Match haskell.scm and haskell-*.scm.
|
||||
(make-regexp* "^gnu/packages/haskell(-.+|)\\.scm$")
|
||||
(make-regexp "^gnu/packages/haskell(-.+|)\\.scm$")
|
||||
"gnu/packages/purescript.scm"
|
||||
"guix/build/haskell-build-system.scm"
|
||||
"guix/build-system/haskell.scm"
|
||||
@@ -146,17 +126,6 @@ the haskell-build-system."
|
||||
"guix/import/stackage.scm"
|
||||
"guix/scripts/import/hackage.scm")))
|
||||
|
||||
(define-team qt
|
||||
(team 'qt
|
||||
#:name "Qt team"
|
||||
#:description
|
||||
"The Qt toolkit/library and the qt-build-system,
|
||||
as well as some packages using Qt."
|
||||
#:scope (list "gnu/packages/qt.scm"
|
||||
"guix/build-system/qt.scm"
|
||||
"guix/build/qt-build-system.scm"
|
||||
"guix/build/qt-utils.scm")))
|
||||
|
||||
(define-team r
|
||||
(team 'r
|
||||
#:name "R team"
|
||||
@@ -171,40 +140,12 @@ and the r-build-system."
|
||||
"guix/scripts/import/cran.scm"
|
||||
"tests/cran.scm")))
|
||||
|
||||
(define-team telephony
|
||||
(team 'telephony
|
||||
#:name "Telephony team"
|
||||
#:description
|
||||
"Telephony packages and services such as Jami, Linphone, etc."
|
||||
#:scope (list "gnu/build/jami-service.scm"
|
||||
"gnu/packages/jami.scm"
|
||||
"gnu/packages/linphone.scm"
|
||||
"gnu/packages/telephony.scm"
|
||||
"gnu/services/telephony.scm"
|
||||
"gnu/tests/data/jami-dummy-account.dat"
|
||||
"gnu/tests/telephony.scm"
|
||||
"tests/services/telephony.scm")))
|
||||
|
||||
(define-team tex
|
||||
(team 'tex
|
||||
#:name "TeX team"
|
||||
#:description
|
||||
"TeX, LaTeX, XeLaTeX, LuaTeX, TeXLive, the texlive-build-system, and
|
||||
the \"texlive\" importer."
|
||||
#:scope (list "gnu/packages/tex.scm"
|
||||
"gnu/packages/texlive.scm"
|
||||
"guix/build/texlive-build-system.scm"
|
||||
"guix/build-system/texlive.scm"
|
||||
"guix/import/texlive.scm"
|
||||
"guix/scripts/import/texlive.scm"
|
||||
"tests/texlive.scm")))
|
||||
|
||||
(define-team julia
|
||||
(team 'julia
|
||||
#:name "Julia team"
|
||||
#:description
|
||||
"The Julia language, Julia packages, and the julia-build-system."
|
||||
#:scope (list (make-regexp* "^gnu/packages/julia(-.+|)\\.scm$")
|
||||
#:scope (list (make-regexp "^gnu/packages/julia(-.+|)\\.scm$")
|
||||
"guix/build/julia-build-system.scm"
|
||||
"guix/build-system/julia.scm")))
|
||||
|
||||
@@ -233,36 +174,27 @@ importer, and the ocaml-build-system."
|
||||
and the maven-build-system."
|
||||
#:scope
|
||||
(list ;; Match java.scm and java-*.scm.
|
||||
(make-regexp* "^gnu/packages/java(-.+|)\\.scm$")
|
||||
(make-regexp "^gnu/packages/java(-.+|)\\.scm$")
|
||||
;; Match maven.scm and maven-*.scm
|
||||
(make-regexp* "^gnu/packages/maven(-.+|)\\.scm$")
|
||||
(make-regexp "^gnu/packages/maven(-.+|)\\.scm$")
|
||||
"guix/build/ant-build-system.scm"
|
||||
"guix/build/java-utils.scm"
|
||||
"guix/build/maven-build-system.scm"
|
||||
;; The maven directory
|
||||
(make-regexp* "^guix/build/maven/")
|
||||
(make-regexp "^guix/build/maven/")
|
||||
"guix/build-system/ant.scm"
|
||||
"guix/build-system/maven.scm")))
|
||||
|
||||
(define-team science
|
||||
(team 'science
|
||||
#:name "Science team"
|
||||
#:description "The main science disciplines and fields related
|
||||
packages (e.g. Astronomy, Chemistry, Math, Physics etc.)"
|
||||
#:scope (list "gnu/packages/algebra.scm"
|
||||
"gnu/packages/astronomy.scm"
|
||||
"gnu/packages/geo.scm"
|
||||
"gnu/packages/chemistry.scm"
|
||||
"gnu/packages/maths.scm")))
|
||||
#:name "Science team"))
|
||||
|
||||
(define-team emacs
|
||||
(team 'emacs
|
||||
#:name "Emacs team"
|
||||
#:description "The extensible, customizable text editor and its
|
||||
ecosystem."
|
||||
#:scope (list "gnu/packages/aux-files/emacs/guix-emacs.el"
|
||||
(make-regexp* "^gnu/packages/emacs(-.+|)\\.scm$")
|
||||
"gnu/packages/tree-sitter.scm"
|
||||
#:scope (list (make-regexp "^gnu/packages/emacs(-.+|)\\.scm$")
|
||||
"guix/build/emacs-build-system.scm"
|
||||
"guix/build/emacs-utils.scm"
|
||||
"guix/build-system/emacs.scm"
|
||||
@@ -276,7 +208,7 @@ ecosystem."
|
||||
#:description
|
||||
"Common Lisp and similar languages, Common Lisp packages and the
|
||||
asdf-build-system."
|
||||
#:scope (list (make-regexp* "^gnu/packages/lisp(-.+|)\\.scm$")
|
||||
#:scope (list (make-regexp "^gnu/packages/lisp(-.+|)\\.scm$")
|
||||
"guix/build/asdf-build-system.scm"
|
||||
"guix/build/lisp-utils.scm"
|
||||
"guix/build-system/asdf.scm")))
|
||||
@@ -301,22 +233,14 @@ asdf-build-system."
|
||||
"guix/scripts/import/go.scm"
|
||||
"tests/go.scm")))
|
||||
|
||||
(define-team bootstrap
|
||||
(team 'bootstrap
|
||||
#:name "Bootstrap"
|
||||
#:scope (list "gnu/packages/mes.scm")))
|
||||
|
||||
(define-team embedded
|
||||
(team 'embedded
|
||||
#:name "Embedded"
|
||||
#:scope (list "gnu/packages/bootloaders.scm"
|
||||
"gnu/packages/firmware.scm")))
|
||||
(define-team embedded-bootstrap
|
||||
(team 'embedded-bootstrap
|
||||
#:name "Embedded / Bootstrap"))
|
||||
|
||||
(define-team rust
|
||||
(team 'rust
|
||||
#:name "Rust"
|
||||
#:scope (list (make-regexp* "^gnu/packages/(crates|rust)(-.+|)\\.scm$")
|
||||
"gnu/packages/sequoia.scm"
|
||||
#:scope (list (make-regexp "^gnu/packages/(crates|rust)(-.+|)\\.scm$")
|
||||
"guix/build/cargo-build-system.scm"
|
||||
"guix/build/cargo-utils.scm"
|
||||
"guix/build-system/cargo.scm"
|
||||
@@ -414,9 +338,9 @@ asdf-build-system."
|
||||
"guix/upstream.scm"
|
||||
"guix/utils.scm"
|
||||
"guix/workers.scm"
|
||||
(make-regexp* "^guix/platforms/")
|
||||
(make-regexp* "^guix/scripts/")
|
||||
(make-regexp* "^guix/store/"))))
|
||||
(make-regexp "^guix/platforms/")
|
||||
(make-regexp "^guix/scripts/")
|
||||
(make-regexp "^guix/store/"))))
|
||||
|
||||
(define-team games
|
||||
(team 'games
|
||||
@@ -429,32 +353,21 @@ asdf-build-system."
|
||||
"gnu/packages/motti.scm"
|
||||
"guix/build/minetest-build-system.scm")))
|
||||
|
||||
(define-team localization
|
||||
(team 'localization
|
||||
#:name "Localization (l10n) team"
|
||||
#:description
|
||||
"Localization of your system to specific languages."
|
||||
#:scope (list "gnu/packages/anthy.scm"
|
||||
"gnu/packages/fcitx5.scm"
|
||||
"gnu/packages/fcitx.scm"
|
||||
"gnu/packages/fonts.scm"
|
||||
"gnu/packages/ibus.scm")))
|
||||
|
||||
(define-team translations
|
||||
(team 'translations
|
||||
#:name "Translations"
|
||||
#:scope (list "etc/news.scm"
|
||||
(make-regexp* "^po/"))))
|
||||
(make-regexp "^po/"))))
|
||||
|
||||
(define-team installer
|
||||
(team 'installer
|
||||
#:name "Installer script and system installer"
|
||||
#:scope (list (make-regexp* "^gnu/installer(\\.scm$|/)"))))
|
||||
#:scope (list (make-regexp "^gnu/installer(\\.scm$|/)"))))
|
||||
|
||||
(define-team home
|
||||
(team 'home
|
||||
#:name "Team for \"Guix Home\""
|
||||
#:scope (list (make-regexp* "^(gnu|guix/scripts)/home(\\.scm$|/)")
|
||||
#:scope (list (make-regexp "^(gnu|guix/scripts)/home(\\.scm$|/)")
|
||||
"tests/guix-home.sh"
|
||||
"tests/home-import.scm"
|
||||
"tests/home-services.scm")))
|
||||
@@ -480,45 +393,13 @@ and Thunderbird."
|
||||
"The Racket language and Racket-based languages, Racket packages,
|
||||
Racket's variant of Chez Scheme, and development of a Racket build system and
|
||||
importer."
|
||||
#:scope (list "gnu/packages/chez.scm"
|
||||
"gnu/packages/racket.scm")))
|
||||
|
||||
(define-team reproduciblebuilds
|
||||
(team 'reproduciblebuilds
|
||||
#:name "Reproducible Builds team"
|
||||
#:description
|
||||
"Reproducible Builds tooling and issues that affect any guix packages."
|
||||
#:scope (list "gnu/packages/diffoscope.scm")))
|
||||
|
||||
(define-team gnome
|
||||
(team 'gnome
|
||||
#:name "Gnome team"
|
||||
#:description
|
||||
"The Gnome desktop environment, along with core technologies such as
|
||||
GLib/GIO, GTK, GStreamer and Webkit."
|
||||
#:scope (list "gnu/packages/glib.scm"
|
||||
"gnu/packages/gstreamer.scm"
|
||||
"gnu/packages/gtk.scm"
|
||||
"gnu/packages/gnome.scm"
|
||||
"gnu/packages/gnome-xyz.scm"
|
||||
"gnu/packages/webkit.scm"
|
||||
"guix/build/glib-or-gtk-build-system.scm"
|
||||
"guix/build/meson-build-system.scm")))
|
||||
|
||||
(define-team xfce
|
||||
(team 'xfce
|
||||
#:name "Xfce team"
|
||||
#:description "Xfce desktop environment."
|
||||
#:scope (list "gnu/packages/xfce.scm")))
|
||||
|
||||
(define-team lxqt
|
||||
(team 'lxqt
|
||||
#:name "LXQt team"
|
||||
#:description "LXQt desktop environment."
|
||||
#:scope (list "gnu/packages/lxqt.scm"
|
||||
"gnu/packages/qt.scm")))
|
||||
#:scope (list "gnu/packages/racket.scm")))
|
||||
|
||||
|
||||
(define-member (person "Thiago Jung Bauermann"
|
||||
"bauermann@kolabnow.com")
|
||||
embedded-bootstrap translations)
|
||||
|
||||
(define-member (person "Eric Bavier"
|
||||
"bavier@posteo.net")
|
||||
science)
|
||||
@@ -533,15 +414,11 @@ GLib/GIO, GTK, GStreamer and Webkit."
|
||||
|
||||
(define-member (person "Ludovic Courtès"
|
||||
"ludo@gnu.org")
|
||||
core home bootstrap installer mentors)
|
||||
core home embedded-bootstrap mentors)
|
||||
|
||||
(define-member (person "Andreas Enge"
|
||||
"andreas@enge.fr")
|
||||
lxqt science tex)
|
||||
|
||||
(define-member (person "Tobias Geerinckx-Rice"
|
||||
"me@tobias.gr")
|
||||
core kernel mentors)
|
||||
science)
|
||||
|
||||
(define-member (person "Björn Höfling"
|
||||
"bjoern.hoefling@bjoernhoefling.de")
|
||||
@@ -553,7 +430,7 @@ GLib/GIO, GTK, GStreamer and Webkit."
|
||||
|
||||
(define-member (person "Efraim Flashner"
|
||||
"efraim@flashner.co.il")
|
||||
embedded bootstrap julia rust science)
|
||||
embedded-bootstrap julia rust science)
|
||||
|
||||
(define-member (person "jgart"
|
||||
"jgart@dismail.de")
|
||||
@@ -581,14 +458,14 @@ GLib/GIO, GTK, GStreamer and Webkit."
|
||||
|
||||
(define-member (person "Liliana Marie Prikler"
|
||||
"liliana.prikler@gmail.com")
|
||||
emacs games gnome)
|
||||
emacs games)
|
||||
|
||||
(define-member (person "Ricardo Wurmus"
|
||||
"rekado@elephly.net")
|
||||
r core mentors tex)
|
||||
r core mentors)
|
||||
|
||||
(define-member (person "Christopher Baines"
|
||||
"guix@cbaines.net")
|
||||
"mail@cbaines.net")
|
||||
core mentors ruby)
|
||||
|
||||
(define-member (person "Andrew Tropin"
|
||||
@@ -613,37 +490,13 @@ GLib/GIO, GTK, GStreamer and Webkit."
|
||||
|
||||
(define-member (person "Raghav Gururajan"
|
||||
"rg@raghavgururajan.name")
|
||||
gnome mentors)
|
||||
|
||||
(define-member (person "宋文武"
|
||||
"iyzsong@envs.net")
|
||||
games localization lxqt xfce)
|
||||
|
||||
(define-member (person "Vagrant Cascadian"
|
||||
"vagrant@debian.org")
|
||||
embedded)
|
||||
|
||||
(define-member (person "Vagrant Cascadian"
|
||||
"vagrant@reproducible-builds.org")
|
||||
reproduciblebuilds)
|
||||
|
||||
(define-member (person "Zhu Zihao"
|
||||
"all_but_last@163.com")
|
||||
localization xfce)
|
||||
|
||||
(define-member (person "Maxim Cournoyer"
|
||||
"maxim.cournoyer@gmail.com")
|
||||
gnome qt telephony)
|
||||
|
||||
(define-member (person "Katherine Cox-Buday"
|
||||
"cox.katherine.e+guix@gmail.com")
|
||||
emacs go lisp)
|
||||
mentors)
|
||||
|
||||
|
||||
(define (find-team name)
|
||||
(or (hash-ref %teams (string->symbol name))
|
||||
(error (format #false
|
||||
"no such team: ~a~%" name))))
|
||||
"no such team: ~a~%" name))))
|
||||
|
||||
(define (find-team-by-scope files)
|
||||
"Return the team(s) which scope matches at least one of the FILES, as list
|
||||
@@ -654,8 +507,8 @@ of file names as string."
|
||||
(any (match-lambda
|
||||
((? string? scope)
|
||||
(string=? scope file))
|
||||
((? regexp*? scope)
|
||||
(regexp*-exec scope file)))
|
||||
((? regexp? scope)
|
||||
(regexp-exec scope file)))
|
||||
(team-scope team)))
|
||||
files)
|
||||
(cons team acc)
|
||||
@@ -666,74 +519,56 @@ of file names as string."
|
||||
(define (cc . teams)
|
||||
"Return arguments for `git send-email' to notify the members of the given
|
||||
TEAMS when a patch is received by Debbugs."
|
||||
(let ((members (append-map team-members teams)))
|
||||
(unless (null? members)
|
||||
(format #true "--add-header=\"X-Debbugs-Cc: ~{~a~^, ~}\""
|
||||
(map person-email (sort-members members))))))
|
||||
(format #true
|
||||
"~{--add-header=\"X-Debbugs-Cc: ~a\"~^ ~}"
|
||||
(map person-email
|
||||
(delete-duplicates (append-map team-members teams) equal?))))
|
||||
|
||||
(define (sort-members members)
|
||||
"Deduplicate and sort MEMBERS alphabetically by their name."
|
||||
(sort (delete-duplicates members equal?)
|
||||
(lambda (m1 m2)
|
||||
(string<? (person-name m1) (person-name m2)))))
|
||||
|
||||
(define (member->string member)
|
||||
"Return the 'email <name>' string representation of MEMBER."
|
||||
(let* ((name (person-name member))
|
||||
(quoted-name/maybe (if (string-contains name ",")
|
||||
(string-append "\"" name "\"")
|
||||
name)))
|
||||
(format #false "~a <~a>" quoted-name/maybe (person-email member))))
|
||||
|
||||
(define* (list-members team #:key (prefix ""))
|
||||
(define* (list-members team #:optional port (prefix ""))
|
||||
"Print the members of the given TEAM."
|
||||
(for-each (lambda (member)
|
||||
(format #t "~a~a~%" prefix (member->string member)))
|
||||
(sort-members (team-members team))))
|
||||
(define port* (or port (current-output-port)))
|
||||
(for-each
|
||||
(lambda (member)
|
||||
(format port*
|
||||
"~a~a <~a>~%"
|
||||
prefix
|
||||
(person-name member)
|
||||
(person-email member)))
|
||||
(sort
|
||||
(team-members team)
|
||||
(lambda (m1 m2) (string<? (person-name m1) (person-name m2))))))
|
||||
|
||||
(define (print-team team)
|
||||
"Print TEAM, a <team> record object."
|
||||
(format #t
|
||||
"\
|
||||
(define (list-teams)
|
||||
"Print all teams, their scope and their members."
|
||||
(define port* (current-output-port))
|
||||
(define width* (%text-width))
|
||||
(for-each
|
||||
(lambda (team)
|
||||
(format port*
|
||||
"\
|
||||
id: ~a
|
||||
name: ~a
|
||||
description: ~a
|
||||
~amembers:
|
||||
"
|
||||
(team-id team)
|
||||
(team-name team)
|
||||
(or (and=> (team-description team)
|
||||
(lambda (text)
|
||||
(string->recutils
|
||||
(fill-paragraph text (%text-width)
|
||||
(string-length "description: ")))))
|
||||
"<none>")
|
||||
(match (team-scope team)
|
||||
(() "")
|
||||
(scope (format #f "scope:~%~{+ ~a~^~%~}~%"
|
||||
(sort (map (match-lambda
|
||||
((? regexp*? rx)
|
||||
(regexp*-pattern rx))
|
||||
(item item))
|
||||
scope)
|
||||
string<?)))))
|
||||
(list-members team #:prefix "+ ")
|
||||
(newline))
|
||||
|
||||
(define (sort-teams teams)
|
||||
"Sort TEAMS, a list of <team> record objects."
|
||||
(sort teams
|
||||
(lambda (team1 team2)
|
||||
(string<? (symbol->string (team-id team1))
|
||||
(symbol->string (team-id team2))))))
|
||||
|
||||
(define* (list-teams #:optional team-names)
|
||||
"Print all teams, their scope and their members."
|
||||
(for-each print-team
|
||||
(sort-teams
|
||||
(if team-names
|
||||
(map find-team team-names)
|
||||
(hash-map->list (lambda (_ value) value) %teams)))))
|
||||
(team-id team)
|
||||
(team-name team)
|
||||
(or (and=> (team-description team)
|
||||
(lambda (text)
|
||||
(string->recutils
|
||||
(fill-paragraph text width*
|
||||
(string-length "description: ")))))
|
||||
"<none>")
|
||||
(match (team-scope team)
|
||||
(() "")
|
||||
(scope (format #f "scope: ~{~s ~}~%" scope))))
|
||||
(list-members team port* "+ ")
|
||||
(newline))
|
||||
(sort
|
||||
(hash-map->list (lambda (key value) value) %teams)
|
||||
(lambda (team1 team2)
|
||||
(string<? (symbol->string (team-id team1))
|
||||
(symbol->string (team-id team2)))))))
|
||||
|
||||
|
||||
(define (diff-revisions rev-start rev-end)
|
||||
@@ -761,51 +596,14 @@ and REV-END, two git revision strings."
|
||||
(const 0))
|
||||
files))
|
||||
|
||||
(define (git-patch->commit-id file)
|
||||
"Parse the commit ID from the first line of FILE, a patch produced with git."
|
||||
(call-with-input-file file
|
||||
(lambda (port)
|
||||
(let ((m (string-match "^From ([0-9a-f]{40})" (read-line port))))
|
||||
(unless m
|
||||
(error "invalid patch file:" file))
|
||||
(match:substring m 1)))))
|
||||
|
||||
(define (git-patch->revisions file)
|
||||
"Return the start and end revisions of FILE, a patch file produced with git."
|
||||
(let* ((rev-end (git-patch->commit-id file))
|
||||
(rev-start (string-append rev-end "^")))
|
||||
(list rev-start rev-end)))
|
||||
|
||||
(define (patch->teams patch-file)
|
||||
"Return the name of the teams in scope for the changes in PATCH-FILE."
|
||||
(map (compose symbol->string team-id)
|
||||
(find-team-by-scope (apply diff-revisions
|
||||
(git-patch->revisions patch-file)))))
|
||||
|
||||
|
||||
(define (main . args)
|
||||
(match args
|
||||
(("cc" . team-names)
|
||||
(apply cc (map find-team team-names)))
|
||||
(("cc-members" patch-file)
|
||||
(unless (file-exists? patch-file)
|
||||
(error "patch file does not exist:" patch-file))
|
||||
(apply main "cc-members" (git-patch->revisions patch-file)))
|
||||
(("cc-members" rev-start rev-end)
|
||||
(apply cc (find-team-by-scope
|
||||
(diff-revisions rev-start rev-end))))
|
||||
(("cc-members-header-cmd" patch-file)
|
||||
(let* ((teams (map find-team (patch->teams patch-file)))
|
||||
(members (sort-members (append-map team-members teams))))
|
||||
(unless (null? members)
|
||||
(format #true "X-Debbugs-Cc: ~{~a~^, ~}"
|
||||
(map member->string members)))))
|
||||
(("cc-mentors-header-cmd" patch-file)
|
||||
(format #true "X-Debbugs-Cc: ~{~a~^, ~}"
|
||||
(map member->string
|
||||
(sort-members (team-members (find-team "mentors"))))))
|
||||
(("get-maintainer" patch-file)
|
||||
(apply main "list-members" (patch->teams patch-file)))
|
||||
(("list-teams" . args)
|
||||
(list-teams))
|
||||
(("list-members" . team-names)
|
||||
@@ -813,28 +611,14 @@ and REV-END, two git revision strings."
|
||||
(lambda (team-name)
|
||||
(list-members (find-team team-name)))
|
||||
team-names))
|
||||
(("show" . team-names)
|
||||
(list-teams team-names))
|
||||
(anything
|
||||
(format (current-error-port)
|
||||
"Usage: etc/teams.scm <command> [<args>]
|
||||
|
||||
Commands:
|
||||
cc <team-name>
|
||||
get git send-email flags for cc-ing <team-name>
|
||||
cc-members <start> <end> | <patch>
|
||||
cc teams related to files changed between revisions or in a patch file
|
||||
cc-members-header-cmd <patch>
|
||||
cc-members variant for use with 'git send-email --header-cmd'
|
||||
cc-mentors-header-cmd <patch>
|
||||
command to use with 'git send-email --header-cmd' to notify mentors
|
||||
list-teams
|
||||
list teams and their members
|
||||
list-members <team-name>
|
||||
list members belonging to <team-name>
|
||||
get-maintainer <patch>
|
||||
compatibility mode with Linux get_maintainer.pl
|
||||
show <team-name>
|
||||
display <team-name> properties~%"))))
|
||||
cc <team-name> get git send-email flags for cc-ing <team-name>
|
||||
cc-members <start> <end> cc teams related to files changed between revisions
|
||||
list-teams list teams and their members
|
||||
list-members <team-name> list members belonging to <team-name>~%"))))
|
||||
|
||||
(apply main (cdr (command-line)))
|
||||
|
||||
@@ -1,50 +0,0 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2023 Maxim Cournoyer <maxim.cournoyer@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/>.
|
||||
|
||||
;;; This file returns a manifest of packages related to linux-libre.
|
||||
;;; Simplistically, it selects packages whose names begin with "linux-libre".
|
||||
;;; It is used to assist continuous integration of the kernel packages.
|
||||
|
||||
(use-modules (guix packages)
|
||||
(guix profiles)
|
||||
(guix utils)
|
||||
(gnu packages))
|
||||
|
||||
(define* (qt-packages-manifest #:key major-version negate-version-test?)
|
||||
"Return a manifest of Qt packages for MAJOR-VERSION, or any version if left
|
||||
unspecified. If NEGATE-VERSION-TEST? is true, select all the Qt packages
|
||||
*not* matching MAJOR-VERSION."
|
||||
(manifest
|
||||
(map package->manifest-entry
|
||||
(fold-packages
|
||||
(lambda (package lst)
|
||||
(let ((uri (and=> (package-source package)
|
||||
(lambda (x)
|
||||
(and (origin? x)
|
||||
(origin-uri x))))))
|
||||
(if (and uri
|
||||
(string? uri)
|
||||
(string-prefix? "mirror://qt/" uri)
|
||||
(if major-version
|
||||
((if negate-version-test? not identity)
|
||||
(string=? major-version (version-major
|
||||
(package-version package))))
|
||||
#t))
|
||||
(cons package lst)
|
||||
lst)))
|
||||
'()))))
|
||||
@@ -1,34 +0,0 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2023 Maxim Cournoyer <maxim.cournoyer@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/>.
|
||||
|
||||
;;; This file returns a manifest of packages related to linux-libre.
|
||||
;;; Simplistically, it selects packages whose names begin with "linux-libre".
|
||||
;;; It is used to assist continuous integration of the kernel packages.
|
||||
|
||||
(load "common.scm")
|
||||
|
||||
;;; Commentary:
|
||||
;;;
|
||||
;;; This manifest can be used to update the latest Qt packages collection, via
|
||||
;;; e.g.:
|
||||
;;;
|
||||
;;; ./pre-inst-env guix refresh -u -m etc/teams/qt/qt-manifest.scm
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(qt-packages-manifest #:major-version "5" #:negate-version-test? #t)
|
||||
+52
-53
@@ -322,22 +322,26 @@ instead~%")))
|
||||
(force %bootloaders))
|
||||
(leave (G_ "~a: no such bootloader~%") name)))
|
||||
|
||||
(define (efi-bootloader-profile packages files hooks)
|
||||
"Creates a profile from the lists of PACKAGES and FILES from the store.
|
||||
This profile is meant to be used by the bootloader-installer.
|
||||
(define (efi-bootloader-profile files bootloader-package hooks)
|
||||
"Creates a profile with BOOTLOADER-PACKAGE and a directory collection/ with
|
||||
links to additional FILES from the store. This collection is meant to be used
|
||||
by the bootloader installer.
|
||||
|
||||
FILES is a list of file or directory names from the store, which will be
|
||||
symlinked into the profile. If a directory name ends with '/', then the
|
||||
directory content instead of the directory itself will be symlinked into the
|
||||
profile.
|
||||
symlinked into the collection/ directory. If a directory name ends with '/',
|
||||
then the directory content instead of the directory itself will be symlinked
|
||||
into the collection/ directory.
|
||||
|
||||
FILES may contain file like objects produced by procedures like plain-file,
|
||||
FILES may contain file like objects produced by functions like plain-file,
|
||||
local-file, etc., or package contents produced with file-append.
|
||||
|
||||
HOOKS lists additional hook functions to modify the profile."
|
||||
(define (efi-bootloader-profile-hook manifest)
|
||||
(define (bootloader-collection manifest)
|
||||
(define build
|
||||
(with-imported-modules '((guix build utils))
|
||||
(with-imported-modules '((guix build utils)
|
||||
(ice-9 ftw)
|
||||
(srfi srfi-1)
|
||||
(srfi srfi-26))
|
||||
#~(begin
|
||||
(use-modules ((guix build utils)
|
||||
#:select (mkdir-p strip-store-file-name))
|
||||
@@ -361,7 +365,8 @@ HOOKS lists additional hook functions to modify the profile."
|
||||
(define (name-is-store-entry? name)
|
||||
"Return #t if NAME is a direct store entry and nothing inside."
|
||||
(not (string-index (strip-store-file-name name) #\/)))
|
||||
(let* ((files '#$files)
|
||||
(let* ((collection (string-append #$output "/collection"))
|
||||
(files '#$files)
|
||||
(directories (filter name-ends-with-/? files))
|
||||
(names-from-directories
|
||||
(append-map (lambda (directory)
|
||||
@@ -369,11 +374,11 @@ HOOKS lists additional hook functions to modify the profile."
|
||||
directories))
|
||||
(names (append names-from-directories
|
||||
(remove name-ends-with-/? files))))
|
||||
(mkdir-p #$output)
|
||||
(mkdir-p collection)
|
||||
(if (every file-exists? names)
|
||||
(begin
|
||||
(for-each (lambda (name)
|
||||
(symlink-to name #$output
|
||||
(symlink-to name collection
|
||||
(if (name-is-store-entry? name)
|
||||
strip-store-file-name
|
||||
basename)))
|
||||
@@ -381,63 +386,57 @@ HOOKS lists additional hook functions to modify the profile."
|
||||
#t)
|
||||
#f)))))
|
||||
|
||||
(gexp->derivation "efi-bootloader-profile"
|
||||
(gexp->derivation "bootloader-collection"
|
||||
build
|
||||
#:local-build? #t
|
||||
#:substitutable? #f
|
||||
#:properties
|
||||
`((type . profile-hook)
|
||||
(hook . efi-bootloader-profile-hook))))
|
||||
(hook . bootloader-collection))))
|
||||
|
||||
(profile (content (packages->manifest packages))
|
||||
(name "efi-bootloader-profile")
|
||||
(hooks (cons efi-bootloader-profile-hook hooks))
|
||||
(profile (content (packages->manifest (list bootloader-package)))
|
||||
(name "bootloader-profile")
|
||||
(hooks (append (list bootloader-collection) hooks))
|
||||
(locales? #f)
|
||||
(allow-collisions? #f)
|
||||
(relative-symlinks? #f)))
|
||||
|
||||
(define* (efi-bootloader-chain final-bootloader
|
||||
(define* (efi-bootloader-chain files
|
||||
final-bootloader
|
||||
#:key
|
||||
(packages '())
|
||||
(files '())
|
||||
(hooks '())
|
||||
installer
|
||||
disk-image-installer)
|
||||
"Define a chain of bootloaders with the FINAL-BOOTLOADER, optional PACKAGES,
|
||||
and optional directories and files from the store given in the list of FILES.
|
||||
installer)
|
||||
"Define a bootloader chain with FINAL-BOOTLOADER as the final bootloader and
|
||||
certain directories and files from the store given in the list of FILES.
|
||||
|
||||
The package of the FINAL-BOOTLOADER and all PACKAGES and FILES will be placed
|
||||
in an efi-bootloader-profile, which will be passed to the INSTALLER.
|
||||
|
||||
FILES may contain file-like objects produced by procedures like plain-file,
|
||||
local-file, etc., or package contents produced with file-append.
|
||||
FILES may contain file like objects produced by functions like plain-file,
|
||||
local-file, etc., or package contents produced with file-append. They will be
|
||||
collected inside a directory collection/ inside a generated bootloader profile,
|
||||
which will be passed to the INSTALLER.
|
||||
|
||||
If a directory name in FILES ends with '/', then the directory content instead
|
||||
of the directory itself will be symlinked into the efi-bootloader-profile.
|
||||
of the directory itself will be symlinked into the collection/ directory.
|
||||
|
||||
The procedures in the HOOKS list can be used to further modify the bootloader
|
||||
profile. It is possible to pass a single function instead of a list.
|
||||
|
||||
If the INSTALLER argument is used, then this gexp procedure will be called to
|
||||
install the efi-bootloader-profile. Otherwise the installer of the
|
||||
FINAL-BOOTLOADER will be called.
|
||||
|
||||
If the DISK-IMAGE-INSTALLER is used, then this gexp procedure will be called
|
||||
to install the efi-bootloader-profile into a disk image. Otherwise the
|
||||
disk-image-installer of the FINAL-BOOTLOADER will be called."
|
||||
(bootloader
|
||||
(inherit final-bootloader)
|
||||
(name "efi-bootloader-chain")
|
||||
(package
|
||||
(efi-bootloader-profile (cons (bootloader-package final-bootloader)
|
||||
packages)
|
||||
files
|
||||
(if (list? hooks)
|
||||
hooks
|
||||
(list hooks))))
|
||||
(installer
|
||||
(or installer
|
||||
(bootloader-installer final-bootloader)))
|
||||
(disk-image-installer
|
||||
(or disk-image-installer
|
||||
(bootloader-disk-image-installer final-bootloader)))))
|
||||
If the INSTALLER argument is used, then this function will be called to install
|
||||
the bootloader. Otherwise the installer of the FINAL-BOOTLOADER will be called."
|
||||
(let* ((final-installer (or installer
|
||||
(bootloader-installer final-bootloader)))
|
||||
(profile (efi-bootloader-profile files
|
||||
(bootloader-package final-bootloader)
|
||||
(if (list? hooks)
|
||||
hooks
|
||||
(list hooks)))))
|
||||
(bootloader
|
||||
(inherit final-bootloader)
|
||||
(package profile)
|
||||
(installer
|
||||
#~(lambda (bootloader target mount-point)
|
||||
(#$final-installer bootloader target mount-point)
|
||||
(copy-recursively
|
||||
(string-append bootloader "/collection")
|
||||
(string-append mount-point target)
|
||||
#:follow-symlinks? #t
|
||||
#:log (%make-void-port "w")))))))
|
||||
|
||||
+90
-152
@@ -3,7 +3,7 @@
|
||||
;;; Copyright © 2016 Chris Marusich <cmmarusich@gmail.com>
|
||||
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
|
||||
;;; Copyright © 2017, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;; Copyright © 2019, 2020, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2019, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2019, 2020 Miguel Ángel Arruga Vivas <rosen644835@gmail.com>
|
||||
;;; Copyright © 2020 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
;;; Copyright © 2020 Stefan <stefan-guix@vodafonemail.de>
|
||||
@@ -53,14 +53,13 @@
|
||||
grub-theme-gfxmode
|
||||
|
||||
install-grub-efi-removable
|
||||
make-grub-efi-netboot-installer
|
||||
install-grub-efi-netboot
|
||||
|
||||
grub-bootloader
|
||||
grub-efi-bootloader
|
||||
grub-efi-removable-bootloader
|
||||
grub-efi32-bootloader
|
||||
grub-efi-netboot-bootloader
|
||||
grub-efi-netboot-removable-bootloader
|
||||
grub-mkrescue-bootloader
|
||||
grub-minimal-bootloader
|
||||
|
||||
@@ -354,7 +353,7 @@ code."
|
||||
((or #f (? string?))
|
||||
#~(format #f "search --file --set ~a" #$file)))))
|
||||
|
||||
(define* (make-grub-configuration grub config entries
|
||||
(define* (grub-configuration-file config entries
|
||||
#:key
|
||||
(locale #f)
|
||||
(system (%current-system))
|
||||
@@ -392,7 +391,7 @@ when booting a root file system on a Btrfs subvolume."
|
||||
;; DEVICE-MOUNT-POINT is not "/", meaning that the store is on a
|
||||
;; separate partition.
|
||||
|
||||
;; When STORE-DIRECTORY-PREFIX is defined, prepend it the linux and
|
||||
;; When BTRFS-SUBVOLUME-FILE-NAME is defined, prepend it the linux and
|
||||
;; initrd paths, to allow booting from a Btrfs subvolume.
|
||||
#~(format port "menuentry ~s {
|
||||
~a
|
||||
@@ -404,23 +403,17 @@ when booting a root file system on a Btrfs subvolume."
|
||||
#$linux (string-join (list #$@arguments))
|
||||
#$initrd)))
|
||||
(multiboot-kernel
|
||||
(let* ((kernel (menu-entry-multiboot-kernel entry))
|
||||
(arguments (menu-entry-multiboot-arguments entry))
|
||||
;; Choose between device names as understood by Mach's built-in
|
||||
;; IDE driver ("hdX") and those understood by rumpdisk ("wdX"
|
||||
;; in the "noide" case).
|
||||
(disk (if (member "noide" arguments) "w" "h"))
|
||||
(modules (menu-entry-multiboot-modules entry))
|
||||
(root-index 1)) ; XXX EFI will need root-index 2
|
||||
(let ((kernel (menu-entry-multiboot-kernel entry))
|
||||
(arguments (menu-entry-multiboot-arguments entry))
|
||||
(modules (menu-entry-multiboot-modules entry))
|
||||
(root-index 1)) ; XXX EFI will need root-index 2
|
||||
#~(format port "
|
||||
menuentry ~s {
|
||||
multiboot ~a root=part:~a:device:~ad0~a~a
|
||||
multiboot ~a root=device:hd0s~a~a~a
|
||||
}~%"
|
||||
#$label
|
||||
#$kernel
|
||||
#$root-index
|
||||
#$disk
|
||||
(string-join (list #$@arguments) " " 'prefix)
|
||||
#$root-index (string-join (list #$@arguments) " " 'prefix)
|
||||
(string-join (map string-join '#$modules)
|
||||
"\n module " 'prefix))))
|
||||
(chain-loader
|
||||
@@ -460,7 +453,9 @@ menuentry ~s {
|
||||
(define locale-config
|
||||
(let* ((entry (first all-entries))
|
||||
(device (menu-entry-device entry))
|
||||
(mount-point (menu-entry-device-mount-point entry)))
|
||||
(mount-point (menu-entry-device-mount-point entry))
|
||||
(bootloader (bootloader-configuration-bootloader config))
|
||||
(grub (bootloader-package bootloader)))
|
||||
#~(let ((locale #$(and locale
|
||||
(locale-definition-source
|
||||
(locale-name->definition locale))))
|
||||
@@ -486,6 +481,8 @@ set lang=~a~%"
|
||||
|
||||
(define keyboard-layout-config
|
||||
(let* ((layout (bootloader-configuration-keyboard-layout config))
|
||||
(grub (bootloader-package
|
||||
(bootloader-configuration-bootloader config)))
|
||||
(keymap* (and layout
|
||||
(keyboard-layout-file layout #:grub grub)))
|
||||
(entry (first all-entries))
|
||||
@@ -536,16 +533,6 @@ fi~%"))))
|
||||
#:options '(#:local-build? #t
|
||||
#:substitutable? #f)))
|
||||
|
||||
(define (grub-configuration-file config . args)
|
||||
(let* ((bootloader (bootloader-configuration-bootloader config))
|
||||
(grub (bootloader-package bootloader)))
|
||||
(apply make-grub-configuration grub config args)))
|
||||
|
||||
(define (grub-efi-configuration-file . args)
|
||||
(apply make-grub-configuration grub-efi args))
|
||||
|
||||
(define grub-cfg "/boot/grub/grub.cfg")
|
||||
|
||||
|
||||
|
||||
;;;
|
||||
@@ -687,31 +674,42 @@ fi~%"))))
|
||||
((target-arm?) "--target=arm-efi"))
|
||||
"--efi-directory" target-esp)))))
|
||||
|
||||
(define* (make-grub-efi-netboot-installer grub-efi grub-cfg subdir)
|
||||
"Make a bootloader-installer for a grub-efi-netboot bootloader, which expects
|
||||
its files in SUBDIR and its configuration file in GRUB-CFG.
|
||||
|
||||
As a grub-efi-netboot package is already pre-installed by 'grub-mknetdir', the
|
||||
installer basically copies all files from the bootloader-package (or profile)
|
||||
into the bootloader-target directory.
|
||||
|
||||
Additionally for network booting over TFTP, two relative symlinks to the store
|
||||
and to the GRUB-CFG file are necessary. Due to this a TFTP root directory must
|
||||
not be located on a FAT file-system.
|
||||
|
||||
If the bootloader-target does not support symlinks, then it is assumed to be a
|
||||
kind of EFI System Partition (ESP). In this case an intermediate configuration
|
||||
file is created with the help of GRUB-EFI to load the GRUB-CFG.
|
||||
|
||||
The installer is usable for any efi-bootloader-chain, which prepares the
|
||||
bootloader-profile in a way ready for copying.
|
||||
|
||||
The installer does not manipulate the system's 'UEFI Boot Manager'.
|
||||
|
||||
The returned installer accepts the BOOTLOADER, TARGET and MOUNT-POINT
|
||||
arguments. Its job is to copy the BOOTLOADER, which must be a pre-installed
|
||||
grub-efi-netboot package with a SUBDIR like efi/boot or efi/Guix, below the
|
||||
directory TARGET for the system whose root is mounted at MOUNT-POINT.
|
||||
(define (install-grub-efi-netboot subdir)
|
||||
"Define a grub-efi-netboot bootloader installer for installation in SUBDIR,
|
||||
which is usually efi/Guix or efi/boot."
|
||||
(let* ((system (string-split (nix-system->gnu-triplet
|
||||
(or (%current-target-system)
|
||||
(%current-system)))
|
||||
#\-))
|
||||
(arch (first system))
|
||||
(boot-efi-link (match system
|
||||
;; These are the supportend systems and the names
|
||||
;; defined by the UEFI standard for removable media.
|
||||
(("i686" _ ...) "/bootia32.efi")
|
||||
(("x86_64" _ ...) "/bootx64.efi")
|
||||
(("arm" _ ...) "/bootarm.efi")
|
||||
(("aarch64" _ ...) "/bootaa64.efi")
|
||||
(("riscv" _ ...) "/bootriscv32.efi")
|
||||
(("riscv64" _ ...) "/bootriscv64.efi")
|
||||
;; Other systems are not supported, although defined.
|
||||
;; (("riscv128" _ ...) "/bootriscv128.efi")
|
||||
;; (("ia64" _ ...) "/bootia64.efi")
|
||||
((_ ...) #f)))
|
||||
(core-efi (string-append
|
||||
;; This is the arch dependent file name of GRUB, e.g.
|
||||
;; i368-efi/core.efi or arm64-efi/core.efi.
|
||||
(match arch
|
||||
("i686" "i386")
|
||||
("aarch64" "arm64")
|
||||
("riscv" "riscv32")
|
||||
(_ arch))
|
||||
"-efi/core.efi")))
|
||||
(with-imported-modules
|
||||
'((guix build union))
|
||||
#~(lambda (bootloader target mount-point)
|
||||
"Install the BOOTLOADER, which must be the package grub, as e.g.
|
||||
bootx64.efi or bootaa64.efi into SUBDIR, which is usually efi/Guix or efi/boot,
|
||||
below the directory TARGET for the system whose root is mounted at MOUNT-POINT.
|
||||
|
||||
MOUNT-POINT is the last argument in 'guix system init /etc/config.scm mnt/point'
|
||||
or '/' for other 'guix system' commands.
|
||||
@@ -721,19 +719,17 @@ bootloader-configuration in:
|
||||
|
||||
(operating-system
|
||||
(bootloader (bootloader-configuration
|
||||
(targets '(\"/boot/efi\"))
|
||||
(targets '(\"/boot\"))
|
||||
…))
|
||||
…)
|
||||
|
||||
TARGET is required to be an absolute directory name, usually mounted via NFS,
|
||||
and finally needs to be provided by a TFTP server as
|
||||
the TFTP root directory.
|
||||
and finally needs to be provided by a TFTP server as the TFTP root directory.
|
||||
|
||||
Usually the installer will be used to prepare network booting over TFTP. Then
|
||||
GRUB will load tftp://server/SUBDIR/grub.cfg and this file will instruct it to
|
||||
load more files from the store like tftp://server/gnu/store/…-linux…/Image.
|
||||
|
||||
To make this possible two symlinks are created. The first symlink points
|
||||
To make this possible two symlinks will be created. The first symlink points
|
||||
relatively form MOUNT-POINT/TARGET/SUBDIR/grub.cfg to
|
||||
MOUNT-POINT/boot/grub/grub.cfg, and the second symlink points relatively from
|
||||
MOUNT-POINT/TARGET/%store-prefix to MOUNT-POINT/%store-prefix.
|
||||
@@ -743,80 +739,34 @@ paths on the TFTP server side are unknown.
|
||||
|
||||
It is also important to note that both symlinks will point outside the TFTP root
|
||||
directory and that the TARGET/%store-prefix symlink makes the whole store
|
||||
accessible via TFTP. Possibly the TFTP server must be configured to allow
|
||||
accesses outside its TFTP root directory. This all may need to be considered
|
||||
for security aspects. It is advised to disable any TFTP write access!
|
||||
|
||||
The installer can also be used to prepare booting from local storage, if the
|
||||
underlying file-system, like FAT on an EFI System Partition (ESP), does not
|
||||
support symlinks. In this case the MOUNT-POINT/TARGET/SUBDIR/grub.cfg will be
|
||||
created with the help of GRUB-EFI to load the /boot/grub/grub.cfg file. A
|
||||
symlink to the store is not needed in this case."
|
||||
(with-imported-modules '((guix build union))
|
||||
#~(lambda (bootloader target mount-point)
|
||||
;; In context of a disk image creation TARGET will be #f and an
|
||||
;; installer is expected to do necessary installations on MOUNT-POINT,
|
||||
;; which will become the root file system. If TARGET is #f, this
|
||||
;; installer has nothing to do, as it only cares about the EFI System
|
||||
;; Partition (ESP).
|
||||
(when target
|
||||
(use-modules ((guix build union) #:select (symlink-relative))
|
||||
(ice-9 popen)
|
||||
(ice-9 rdelim))
|
||||
(let* ((mount-point/target (string-append mount-point target "/"))
|
||||
;; When installing Guix, it is common to mount TARGET below
|
||||
;; MOUNT-POINT rather than the root directory.
|
||||
(bootloader-target (if (file-exists? mount-point/target)
|
||||
mount-point/target
|
||||
target))
|
||||
(store (string-append mount-point (%store-prefix)))
|
||||
(store-link (string-append bootloader-target (%store-prefix)))
|
||||
(grub-cfg (string-append mount-point #$grub-cfg))
|
||||
(grub-cfg-link (string-append bootloader-target
|
||||
#$subdir "/"
|
||||
(basename grub-cfg))))
|
||||
;; Copy the bootloader into the bootloader-target directory.
|
||||
;; Should we beforehand recursively delete any existing file?
|
||||
(copy-recursively bootloader bootloader-target
|
||||
#:follow-symlinks? #t
|
||||
#:log (%make-void-port "w"))
|
||||
;; For TFTP we need to install additional relative symlinks.
|
||||
;; If we install on an EFI System Partition (ESP) or some other FAT
|
||||
;; file-system, then symlinks cannot be created and are not needed.
|
||||
;; Therefore we ignore exceptions when trying.
|
||||
;; Prepare the symlink to the grub.cfg.
|
||||
(mkdir-p (dirname grub-cfg-link))
|
||||
(false-if-exception (delete-file grub-cfg-link))
|
||||
(if (unspecified?
|
||||
(false-if-exception (symlink-relative grub-cfg grub-cfg-link)))
|
||||
;; Symlinks are supported.
|
||||
(begin
|
||||
;; Prepare the symlink to the store.
|
||||
(mkdir-p (dirname store-link))
|
||||
(false-if-exception (delete-file store-link))
|
||||
(symlink-relative store store-link))
|
||||
;; Creating symlinks does not seem to be supported. Probably
|
||||
;; an ESP is used. Add a script to search and load the actual
|
||||
;; grub.cfg.
|
||||
(let* ((probe #$(file-append grub-efi "/sbin/grub-probe"))
|
||||
(port (open-pipe* OPEN_READ probe "--target=fs_uuid"
|
||||
grub-cfg))
|
||||
(search-root
|
||||
(match (read-line port)
|
||||
((? eof-object?)
|
||||
;; There is no UUID available. As a fallback search
|
||||
;; everywhere for the grub.cfg.
|
||||
(string-append "search --file --set " #$grub-cfg))
|
||||
(fs-uuid
|
||||
;; The UUID to load the grub.cfg from is known.
|
||||
(string-append "search --fs-uuid --set " fs-uuid))))
|
||||
(load-grub-cfg (string-append "configfile " #$grub-cfg)))
|
||||
(close-pipe port)
|
||||
(with-output-to-file grub-cfg-link
|
||||
(lambda ()
|
||||
(display (string-join (list search-root
|
||||
load-grub-cfg)
|
||||
"\n")))))))))))
|
||||
accessible via TFTP. Possibly the TFTP server must be configured
|
||||
to allow accesses outside its TFTP root directory. This may need to be
|
||||
considered for security aspects."
|
||||
(use-modules ((guix build union) #:select (symlink-relative)))
|
||||
(let* ((net-dir (string-append mount-point target "/"))
|
||||
(sub-dir (string-append net-dir #$subdir "/"))
|
||||
(store (string-append mount-point (%store-prefix)))
|
||||
(store-link (string-append net-dir (%store-prefix)))
|
||||
(grub-cfg (string-append mount-point "/boot/grub/grub.cfg"))
|
||||
(grub-cfg-link (string-append sub-dir (basename grub-cfg)))
|
||||
(boot-efi-link (string-append sub-dir #$boot-efi-link)))
|
||||
;; Prepare the symlink to the store.
|
||||
(mkdir-p (dirname store-link))
|
||||
(false-if-exception (delete-file store-link))
|
||||
(symlink-relative store store-link)
|
||||
;; Prepare the symlink to the grub.cfg, which points into the store.
|
||||
(mkdir-p (dirname grub-cfg-link))
|
||||
(false-if-exception (delete-file grub-cfg-link))
|
||||
(symlink-relative grub-cfg grub-cfg-link)
|
||||
;; Install GRUB, which refers to the grub.cfg, with support for
|
||||
;; encrypted partitions,
|
||||
(setenv "GRUB_ENABLE_CRYPTODISK" "y")
|
||||
(invoke/quiet (string-append bootloader "/bin/grub-mknetdir")
|
||||
(string-append "--net-directory=" net-dir)
|
||||
(string-append "--subdir=" #$subdir))
|
||||
;; Prepare the bootloader symlink, which points to core.efi of GRUB.
|
||||
(false-if-exception (delete-file boot-efi-link))
|
||||
(symlink #$core-efi boot-efi-link))))))
|
||||
|
||||
|
||||
|
||||
@@ -834,7 +784,7 @@ symlink to the store is not needed in this case."
|
||||
(package grub)
|
||||
(installer install-grub)
|
||||
(disk-image-installer install-grub-disk-image)
|
||||
(configuration-file grub-cfg)
|
||||
(configuration-file "/boot/grub/grub.cfg")
|
||||
(configuration-file-generator grub-configuration-file)))
|
||||
|
||||
(define grub-minimal-bootloader
|
||||
@@ -844,12 +794,11 @@ symlink to the store is not needed in this case."
|
||||
|
||||
(define grub-efi-bootloader
|
||||
(bootloader
|
||||
(name 'grub-efi)
|
||||
(package grub-efi)
|
||||
(inherit grub-bootloader)
|
||||
(installer install-grub-efi)
|
||||
(disk-image-installer #f)
|
||||
(configuration-file grub-cfg)
|
||||
(configuration-file-generator grub-configuration-file)))
|
||||
(name 'grub-efi)
|
||||
(package grub-efi)))
|
||||
|
||||
(define grub-efi-removable-bootloader
|
||||
(bootloader
|
||||
@@ -864,22 +813,11 @@ symlink to the store is not needed in this case."
|
||||
(name 'grub-efi32)
|
||||
(package grub-efi32)))
|
||||
|
||||
(define (make-grub-efi-netboot-bootloader name subdir)
|
||||
(bootloader
|
||||
(name name)
|
||||
(package (make-grub-efi-netboot (symbol->string name) subdir))
|
||||
(installer (make-grub-efi-netboot-installer grub-efi grub-cfg subdir))
|
||||
(disk-image-installer #f)
|
||||
(configuration-file grub-cfg)
|
||||
(configuration-file-generator grub-efi-configuration-file)))
|
||||
|
||||
(define grub-efi-netboot-bootloader
|
||||
(make-grub-efi-netboot-bootloader 'grub-efi-netboot-bootloader
|
||||
"efi/Guix"))
|
||||
|
||||
(define grub-efi-netboot-removable-bootloader
|
||||
(make-grub-efi-netboot-bootloader 'grub-efi-netboot-removable-bootloader
|
||||
"efi/boot"))
|
||||
(bootloader
|
||||
(inherit grub-efi-bootloader)
|
||||
(name 'grub-efi-netboot-bootloader)
|
||||
(installer (install-grub-efi-netboot "efi/Guix"))))
|
||||
|
||||
(define grub-mkrescue-bootloader
|
||||
(bootloader
|
||||
|
||||
@@ -3,8 +3,6 @@
|
||||
;;; Copyright © 2017, 2019 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu>
|
||||
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
;;; Copyright © 2023 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -44,8 +42,6 @@
|
||||
u-boot-puma-rk3399-bootloader
|
||||
u-boot-rock64-rk3328-bootloader
|
||||
u-boot-rockpro64-rk3399-bootloader
|
||||
u-boot-sifive-unmatched-bootloader
|
||||
u-boot-ts7970-q-2g-1000mhz-c-bootloader
|
||||
u-boot-wandboard-bootloader))
|
||||
|
||||
(define install-u-boot
|
||||
@@ -131,21 +127,6 @@
|
||||
|
||||
(define install-pinebook-pro-rk3399-u-boot install-rockpro64-rk3399-u-boot)
|
||||
|
||||
(define install-u-boot-ts7970-q-2g-1000mhz-c-u-boot
|
||||
#~(lambda (bootloader device mount-point)
|
||||
(let ((u-boot.imx (string-append bootloader "/libexec/u-boot.imx"))
|
||||
(install-dir (string-append mount-point "/boot")))
|
||||
(install-file u-boot.imx install-dir))))
|
||||
|
||||
(define install-sifive-unmatched-u-boot
|
||||
#~(lambda (bootloader root-index image)
|
||||
(let ((spl (string-append bootloader "/libexec/spl/u-boot-spl.bin"))
|
||||
(u-boot (string-append bootloader "/libexec/u-boot.itb")))
|
||||
(write-file-on-device spl (stat:size (stat spl))
|
||||
image (* 34 512))
|
||||
(write-file-on-device u-boot (stat:size (stat u-boot))
|
||||
image (* 2082 512)))))
|
||||
|
||||
|
||||
|
||||
;;;
|
||||
@@ -274,19 +255,3 @@
|
||||
(inherit u-boot-bootloader)
|
||||
(package u-boot-pinebook-pro-rk3399)
|
||||
(disk-image-installer install-pinebook-pro-rk3399-u-boot)))
|
||||
|
||||
(define u-boot-ts7970-q-2g-1000mhz-c-bootloader
|
||||
;; This bootloader doesn't really need to be installed, as it is read from
|
||||
;; an SPI memory chip, not the SD card. It is copied to /boot/u-boot.imx
|
||||
;; for convenience and should be manually flashed at the U-Boot prompt.
|
||||
(bootloader
|
||||
(inherit u-boot-bootloader)
|
||||
(package u-boot-ts7970-q-2g-1000mhz-c)
|
||||
(installer install-u-boot-ts7970-q-2g-1000mhz-c-u-boot)
|
||||
(disk-image-installer #f)))
|
||||
|
||||
(define u-boot-sifive-unmatched-bootloader
|
||||
(bootloader
|
||||
(inherit u-boot-bootloader)
|
||||
(package u-boot-sifive-unmatched)
|
||||
(disk-image-installer install-sifive-unmatched-u-boot)))
|
||||
|
||||
@@ -363,14 +363,9 @@ second element is the name it should appear at, such as:
|
||||
"Tell the kernel to look for device firmware under DIRECTORY. This
|
||||
mechanism bypasses udev: it allows Linux to handle firmware loading directly
|
||||
by itself, without having to resort to a \"user helper\"."
|
||||
|
||||
;; If the kernel was built without firmware loading support, this file
|
||||
;; does not exist. Do nothing in that case.
|
||||
(let ((firmware-path "/sys/module/firmware_class/parameters/path"))
|
||||
(when (file-exists? firmware-path)
|
||||
(call-with-output-file firmware-path
|
||||
(lambda (port)
|
||||
(display directory port))))))
|
||||
(call-with-output-file "/sys/module/firmware_class/parameters/path"
|
||||
(lambda (port)
|
||||
(display directory port))))
|
||||
|
||||
(define (activate-ptrace-attach)
|
||||
"Allow users to PTRACE_ATTACH their own processes.
|
||||
|
||||
@@ -64,10 +64,10 @@
|
||||
;;; which is required at least for the Jami service.
|
||||
(define sleep*
|
||||
(lambda () ;delay execution
|
||||
(if (resolve-module '(fibers) #f #:ensure #f)
|
||||
(if (resolve-module '(fibers) #f)
|
||||
(module-ref (resolve-interface '(fibers)) 'sleep)
|
||||
(begin
|
||||
(format #t "Fibers not available -- blocking 'sleep' in use~%")
|
||||
(format #f "fibers not available -- blocking 'sleep' in use")
|
||||
sleep))))
|
||||
|
||||
;;;
|
||||
|
||||
@@ -1123,7 +1123,6 @@ an exception in such cases but perform the nearest sane action."
|
||||
"Return the number suitable for the 'flags' argument of 'mount' that
|
||||
corresponds to the symbols listed in FLAGS."
|
||||
(let loop ((flags flags))
|
||||
;; Note: Keep in sync with ‘invalid-file-system-flags’.
|
||||
(match flags
|
||||
(('read-only rest ...)
|
||||
(logior MS_RDONLY (loop rest)))
|
||||
|
||||
+28
-63
@@ -1,6 +1,6 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2020-2022 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2020, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2020, 2021 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -105,7 +105,7 @@ Return the value associated with OPTION, or #f on failure."
|
||||
|
||||
;; TODO: Set the 'gnu.translator' extended attribute for passive translator
|
||||
;; settings?
|
||||
(mkdir-p (scope "servers/bus/pci")))
|
||||
)
|
||||
|
||||
(define (passive-translator-xattr? file-name)
|
||||
"Return true if FILE-NAME has an extended @code{gnu.translator} attribute
|
||||
@@ -127,9 +127,6 @@ set."
|
||||
|
||||
(define (translated? file-name)
|
||||
"Return true if a translator is installed on FILE-NAME."
|
||||
;; On GNU/Hurd, 'getxattr' in glibc opens the file without O_NOTRANS, and
|
||||
;; then, for "gnu.translator", it calls 'file_get_translator', resulting in
|
||||
;; EOPNOTSUPP (conversely, 'showtrans' opens the file with O_NOTRANS).
|
||||
(if (string-contains %host-type "linux-gnu")
|
||||
(passive-translator-xattr? file-name)
|
||||
(passive-translator-installed? file-name)))
|
||||
@@ -183,8 +180,7 @@ set."
|
||||
(mkdir-p dir))))
|
||||
|
||||
(define servers
|
||||
'(("servers/bus/pci" ("/hurd/pci-arbiter"))
|
||||
("servers/crash-dump-core" ("/hurd/crash" "--dump-core"))
|
||||
'(("servers/crash-dump-core" ("/hurd/crash" "--dump-core"))
|
||||
("servers/crash-kill" ("/hurd/crash" "--kill"))
|
||||
("servers/crash-suspend" ("/hurd/crash" "--suspend"))
|
||||
("servers/password" ("/hurd/password"))
|
||||
@@ -195,7 +191,7 @@ set."
|
||||
("proc" ("/hurd/procfs" "--stat-mode=444"))))
|
||||
|
||||
(define devices
|
||||
`(("dev/full" ("/hurd/null" "--full") #o666)
|
||||
'(("dev/full" ("/hurd/null" "--full") #o666)
|
||||
("dev/null" ("/hurd/null") #o666)
|
||||
("dev/random" ("/hurd/random" "--seed-file" "/var/lib/random-seed")
|
||||
#o644)
|
||||
@@ -214,58 +210,31 @@ set."
|
||||
;; 'fd_to_filename' in libc expects it.
|
||||
("dev/fd" ("/hurd/magic" "--directory" "fd") #o555)
|
||||
|
||||
("dev/rumpdisk" ("/hurd/rumpdisk") #o660)
|
||||
("dev/netdde" ("/hurd/netdde") #o660)
|
||||
("dev/eth0" ("/hurd/devnode" "--master-device=/dev/net"
|
||||
"eth0")
|
||||
#o660)
|
||||
("dev/eth1" ("/hurd/devnode" "--master-device=/dev/net"
|
||||
"eth1")
|
||||
#o660)
|
||||
("dev/tty1" ("/hurd/term" "/dev/tty1" "hurdio" "/dev/vcs/1/console")
|
||||
#o666)
|
||||
("dev/tty2" ("/hurd/term" "/dev/tty2" "hurdio" "/dev/vcs/2/console")
|
||||
#o666)
|
||||
("dev/tty3" ("/hurd/term" "/dev/tty3" "hurdio" "/dev/vcs/3/console")
|
||||
#o666)
|
||||
|
||||
;; Create a number of ttys; syslogd writes to tty12 by default.
|
||||
;; FIXME: Creating /dev/tty12 leads the console client to switch to
|
||||
;; tty12 when syslogd starts, which is confusing for users. Thus, do
|
||||
;; not create tty12.
|
||||
,@(map (lambda (n)
|
||||
(let ((n (number->string n)))
|
||||
`(,(string-append "dev/tty" n)
|
||||
("/hurd/term" ,(string-append "/dev/tty" n)
|
||||
"hurdio" ,(string-append "/dev/vcs/" n "/console"))
|
||||
#o666)))
|
||||
(iota 11 1))
|
||||
("dev/ptyp0" ("/hurd/term" "/dev/ptyp0" "pty-master" "/dev/ttyp0")
|
||||
#o666)
|
||||
("dev/ptyp1" ("/hurd/term" "/dev/ptyp1" "pty-master" "/dev/ttyp1")
|
||||
#o666)
|
||||
("dev/ptyp2" ("/hurd/term" "/dev/ptyp2" "pty-master" "/dev/ttyp2")
|
||||
#o666)
|
||||
|
||||
,@(append-map (lambda (n)
|
||||
(let ((n (number->string n)))
|
||||
`((,(string-append "dev/ptyp" n)
|
||||
("/hurd/term" ,(string-append "/dev/ptyp" n)
|
||||
"pty-master" ,(string-append "/dev/ttyp" n))
|
||||
#o666)
|
||||
|
||||
(,(string-append "dev/ttyp" n)
|
||||
("/hurd/term" ,(string-append "/dev/ttyp" n)
|
||||
"pty-slave" ,(string-append "/dev/ptyp" n))
|
||||
#o666))))
|
||||
(iota 10 0))
|
||||
,@(append-map (lambda (n)
|
||||
(let* ((n (number->string n))
|
||||
(drive (string-append "dev/wd" n))
|
||||
(disk (string-append "@/dev/disk:wd" n)))
|
||||
`((,drive ("/hurd/storeio" ,disk) #o600)
|
||||
,@(map (lambda (p)
|
||||
(let ((p (number->string p)))
|
||||
`(,(string-append drive "s" p)
|
||||
("/hurd/storeio"
|
||||
"--store-type=typed"
|
||||
,(string-append
|
||||
"part:" p ":device:" disk))
|
||||
#o660)))
|
||||
(iota 4 1)))))
|
||||
(iota 4 0))))
|
||||
("dev/ttyp0" ("/hurd/term" "/dev/ttyp0" "pty-slave" "/dev/ptyp0")
|
||||
#o666)
|
||||
("dev/ttyp1" ("/hurd/term" "/dev/ttyp1" "pty-slave" "/dev/ptyp1")
|
||||
#o666)
|
||||
("dev/ttyp2" ("/hurd/term" "/dev/ttyp2" "pty-slave" "/dev/ptyp2")
|
||||
#o666)))
|
||||
|
||||
(for-each scope-set-translator servers)
|
||||
(mkdir* "dev/vcs/1")
|
||||
(mkdir* "dev/vcs/2")
|
||||
(mkdir* "dev/vcs/2")
|
||||
(rename-file (scope "dev/console") (scope "dev/console-"))
|
||||
(for-each scope-set-translator devices)
|
||||
|
||||
@@ -274,10 +243,6 @@ set."
|
||||
(false-if-EEXIST (symlink "/dev/fd/1" (scope "dev/stdout")))
|
||||
(false-if-EEXIST (symlink "/dev/fd/2" (scope "dev/stderr")))
|
||||
(false-if-EEXIST (symlink "crash-dump-core" (scope "servers/crash")))
|
||||
(false-if-EEXIST (symlink "/dev/rumpdisk" (scope "dev/disk")))
|
||||
(false-if-EEXIST (symlink "/dev/netdde" (scope "dev/net")))
|
||||
(false-if-EEXIST (symlink "/servers/socket/2" (scope "servers/socket/inet")))
|
||||
(false-if-EEXIST (symlink "/servers/socket/26" (scope "servers/socket/inet6")))
|
||||
|
||||
;; Make sure /etc/mtab is a symlink to /proc/mounts.
|
||||
(false-if-exception (delete-file (scope "etc/mtab")))
|
||||
@@ -309,14 +274,14 @@ XXX TODO: use Linux xattr/setxattr to remove (settrans in) /libexec/RUNSYSTEM
|
||||
(system (find-long-option "gnu.system" args))
|
||||
(to-load (find-long-option "gnu.load" args)))
|
||||
|
||||
(false-if-exception (delete-file "/hurd"))
|
||||
(let ((hurd/hurd (readlink* (string-append system "/profile/hurd"))))
|
||||
(symlink hurd/hurd "/hurd"))
|
||||
|
||||
(format #t "Setting-up essential translators...\n")
|
||||
(setenv "PATH" (string-append system "/profile/bin"))
|
||||
(set-hurd-device-translators)
|
||||
|
||||
(false-if-exception (delete-file "/hurd"))
|
||||
(let ((hurd/hurd (readlink* (string-append system "/profile/hurd"))))
|
||||
(symlink hurd/hurd "/hurd"))
|
||||
|
||||
(format #t "Starting pager...\n")
|
||||
(unless (zero? (system* "/hurd/mach-defpager"))
|
||||
(format #t "FAILED...Good luck!\n"))
|
||||
|
||||
+1
-15
@@ -7,7 +7,6 @@
|
||||
;;; Copyright © 2020 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;; Copyright © 2022 Pavel Shlyak <p.shlyak@pantherx.org>
|
||||
;;; Copyright © 2022 Denis 'GNUtoo' Carikli <GNUtoo@cyberdimension.org>
|
||||
;;; Copyright © 2023 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -112,10 +111,7 @@ turn doesn't take any constant overhead into account, force a 1-MiB minimum."
|
||||
(if (eq? size 'guess)
|
||||
(estimate-partition-size root)
|
||||
size))
|
||||
;; u-boot in particular needs the formatted block
|
||||
;; size and the physical block size to be equal.
|
||||
;; TODO: What about 4k blocks?
|
||||
(if (member 'esp flags) (list "-S" "512") '()))
|
||||
(if (member 'esp flags) (list "-S" "1024") '()))
|
||||
(for-each (lambda (file)
|
||||
(unless (member file '("." ".."))
|
||||
(invoke "mcopy" "-bsp" "-i" target
|
||||
@@ -123,14 +119,6 @@ turn doesn't take any constant overhead into account, force a 1-MiB minimum."
|
||||
(string-append "::" file))))
|
||||
(scandir root))))
|
||||
|
||||
(define* (make-unformatted-image partition target)
|
||||
"Make an unformatted partition of a certain size."
|
||||
(let ((size (partition-size partition)))
|
||||
;; Create the file and then truncate it to the desired size.
|
||||
(with-output-to-file target
|
||||
(lambda _ (display "")))
|
||||
(truncate-file target size)))
|
||||
|
||||
(define* (make-partition-image partition-sexp target root)
|
||||
"Create and return the image of PARTITION-SEXP as TARGET. Use the given
|
||||
ROOT directory to populate the image."
|
||||
@@ -143,8 +131,6 @@ ROOT directory to populate the image."
|
||||
(make-vfat-image partition target root 16))
|
||||
((string=? type "fat32")
|
||||
(make-vfat-image partition target root 32))
|
||||
((string=? type "unformatted")
|
||||
(make-unformatted-image partition target))
|
||||
(else
|
||||
(raise (condition
|
||||
(&message
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2015 David Thompson <davet@gnu.org>
|
||||
;;; Copyright © 2017-2019, 2022, 2023 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2017-2019, 2022 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -404,7 +404,7 @@ load path must be adjusted as needed."
|
||||
|
||||
(define (container-excursion pid thunk)
|
||||
"Run THUNK as a child process within the namespaces of process PID and
|
||||
return the exit status, an integer as returned by 'waitpid'."
|
||||
return the exit status."
|
||||
(define (namespace-file pid namespace)
|
||||
(string-append "/proc/" (number->string pid) "/ns/" namespace))
|
||||
|
||||
@@ -432,20 +432,11 @@ return the exit status, an integer as returned by 'waitpid'."
|
||||
'("user" "ipc" "uts" "net" "pid" "mnt"))
|
||||
(purify-environment)
|
||||
(chdir "/")
|
||||
|
||||
;; Per setns(2), changing the PID namespace only applies to child
|
||||
;; processes, not to the process itself. Thus fork so that THUNK runs
|
||||
;; in the right PID namespace, which also gives it access to /proc.
|
||||
(match (primitive-fork)
|
||||
(0 (call-with-clean-exit thunk))
|
||||
(pid (primitive-exit
|
||||
(match (waitpid pid)
|
||||
((_ . status)
|
||||
(or (status:exit-val status) 127)))))))))
|
||||
(thunk))))
|
||||
(pid
|
||||
(match (waitpid pid)
|
||||
((_ . status)
|
||||
status)))))
|
||||
(status:exit-val status))))))
|
||||
|
||||
(define (container-excursion* pid thunk)
|
||||
"Like 'container-excursion', but return the return value of THUNK."
|
||||
|
||||
+10
-31
@@ -1,8 +1,7 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2016-2022 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2018 Chris Marusich <cmmarusich@gmail.com>
|
||||
;;; Copyright © 2022, 2023 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
;;; Copyright © 2023 Bruno Victal <mirai@makinata.eu>
|
||||
;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -37,7 +36,6 @@
|
||||
wait-for-unix-socket
|
||||
marionette-control
|
||||
wait-for-screen-text
|
||||
%default-ocrad-arguments
|
||||
%qwerty-us-keystrokes
|
||||
marionette-type
|
||||
|
||||
@@ -289,30 +287,23 @@ Monitor\")."
|
||||
;; The "quit" command terminates QEMU immediately, with no output.
|
||||
(unless (string=? command "quit") (wait-for-monitor-prompt monitor)))))
|
||||
|
||||
(define %default-ocrad-arguments
|
||||
'("--invert" "--scale=10"))
|
||||
|
||||
(define* (invoke-ocrad-ocr image #:key (ocrad "ocrad")
|
||||
(ocr-arguments %default-ocrad-arguments))
|
||||
(define* (invoke-ocrad-ocr image #:key (ocrad "ocrad"))
|
||||
"Invoke the OCRAD command on image, and return the recognized text."
|
||||
(let* ((command (string-join `(,ocrad ,@ocr-arguments ,image)))
|
||||
(pipe (open-input-pipe command))
|
||||
(let* ((pipe (open-pipe* OPEN_READ ocrad "-i" "-s" "10" image))
|
||||
(text (get-string-all pipe)))
|
||||
(unless (zero? (close-pipe pipe))
|
||||
(error "'ocrad' failed" ocrad))
|
||||
text))
|
||||
|
||||
(define* (invoke-tesseract-ocr image #:key (tesseract "tesseract")
|
||||
(ocr-arguments '()))
|
||||
(define* (invoke-tesseract-ocr image #:key (tesseract "tesseract"))
|
||||
"Invoke the TESSERACT command on IMAGE, and return the recognized text."
|
||||
(let* ((output-basename (tmpnam))
|
||||
(output-basename* (string-append output-basename ".txt"))
|
||||
(arguments (cons* image output-basename ocr-arguments)))
|
||||
(output-basename* (string-append output-basename ".txt")))
|
||||
(dynamic-wind
|
||||
(const #t)
|
||||
(lambda ()
|
||||
(let ((exit-val (status:exit-val
|
||||
(apply system* tesseract arguments))))
|
||||
(system* tesseract image output-basename))))
|
||||
(unless (zero? exit-val)
|
||||
(error "'tesseract' failed" tesseract))
|
||||
(call-with-input-file output-basename* get-string-all)))
|
||||
@@ -320,8 +311,7 @@ Monitor\")."
|
||||
(false-if-exception (delete-file output-basename))
|
||||
(false-if-exception (delete-file output-basename*))))))
|
||||
|
||||
(define* (marionette-screen-text marionette #:key (ocr "ocrad")
|
||||
ocr-arguments)
|
||||
(define* (marionette-screen-text marionette #:key (ocr "ocrad"))
|
||||
"Take a screenshot of MARIONETTE, perform optical character
|
||||
recognition (OCR), and return the text read from the screen as a string, along
|
||||
the screen dump image used. Do this by invoking OCR, which should be the file
|
||||
@@ -334,22 +324,14 @@ if it is not needed."
|
||||
;; Process it via the OCR.
|
||||
(cond
|
||||
((string-contains ocr "ocrad")
|
||||
(values (invoke-ocrad-ocr image
|
||||
#:ocrad ocr
|
||||
#:ocr-arguments
|
||||
(or ocr-arguments %default-ocrad-arguments))
|
||||
image))
|
||||
(values (invoke-ocrad-ocr image #:ocrad ocr) image))
|
||||
((string-contains ocr "tesseract")
|
||||
(values (invoke-tesseract-ocr image
|
||||
#:tesseract ocr
|
||||
#:ocr-arguments (or ocr-arguments '()))
|
||||
image))
|
||||
(values (invoke-tesseract-ocr image #:tesseract ocr) image))
|
||||
(else (error "unsupported ocr command"))))
|
||||
|
||||
(define* (wait-for-screen-text marionette predicate
|
||||
#:key
|
||||
(ocr "ocrad")
|
||||
ocr-arguments
|
||||
(timeout 30)
|
||||
pre-action
|
||||
post-action)
|
||||
@@ -377,10 +359,7 @@ Likewise for POST-ACTION, except it runs at the end of a successful OCR."
|
||||
'ocr-text: last-text
|
||||
'screendump: screendump-backup))
|
||||
(let* ((_ (and (procedure? pre-action) (pre-action)))
|
||||
(text screendump
|
||||
(marionette-screen-text marionette
|
||||
#:ocr ocr
|
||||
#:ocr-arguments ocr-arguments))
|
||||
(text screendump (marionette-screen-text marionette #:ocr ocr))
|
||||
(_ (and (procedure? post-action) (post-action)))
|
||||
(result (predicate text)))
|
||||
(cond (result
|
||||
|
||||
@@ -62,7 +62,7 @@ bindings available within the lexical scope of BODY."
|
||||
(define (wait-for-readable-fd port timeout)
|
||||
"Wait until PORT has data available for reading or TIMEOUT has expired.
|
||||
Return #t in the former case and #f in the latter case."
|
||||
(match (resolve-module '(fibers) #f #:ensure #f) ;using Fibers?
|
||||
(match (resolve-module '(fibers) #f) ;using Fibers?
|
||||
(#f
|
||||
(log "blocking on socket...~%")
|
||||
(match (select (list port) '() '() timeout)
|
||||
|
||||
+33
-41
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2012-2023 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2012-2022 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2017, 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2018, 2019 Clément Lassieur <clement@lassieur.org>
|
||||
;;; Copyright © 2020 Julien Lepiller <julien@lepiller.eu>
|
||||
@@ -24,7 +24,6 @@
|
||||
#:use-module (guix build-system channel)
|
||||
#:use-module (guix config)
|
||||
#:autoload (guix describe) (package-channels)
|
||||
#:use-module (guix memoization)
|
||||
#:use-module (guix store)
|
||||
#:use-module (guix profiles)
|
||||
#:use-module (guix packages)
|
||||
@@ -47,7 +46,6 @@
|
||||
#:use-module (gnu image)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages gcc)
|
||||
#:use-module (gnu packages gdb)
|
||||
#:use-module (gnu packages base)
|
||||
#:use-module (gnu packages gawk)
|
||||
#:use-module (gnu packages guile)
|
||||
@@ -139,7 +137,7 @@ SYSTEM."
|
||||
;; Note: Don't put the '-final' package variants because (1) that's
|
||||
;; implicit, and (2) they cannot be cross-built (due to the explicit input
|
||||
;; chain.)
|
||||
(list gcc-10 gcc-11 gcc-12 glibc binutils gdb-minimal
|
||||
(list gcc-8 gcc-9 gcc-10 gcc-11 glibc binutils
|
||||
gmp mpfr mpc coreutils findutils diffutils patch sed grep
|
||||
gawk gnu-gettext hello guile-2.2 guile-3.0 zlib gzip xz guix
|
||||
%bootstrap-binaries-tarball
|
||||
@@ -343,32 +341,29 @@ otherwise use the IMAGE name."
|
||||
;; Return the name of a package's job.
|
||||
package-name)
|
||||
|
||||
(define base-packages
|
||||
(mlambda (system)
|
||||
"Return the set of packages considered to be part of the base for SYSTEM."
|
||||
(delete-duplicates
|
||||
(append-map (match-lambda
|
||||
((_ package _ ...)
|
||||
(match (package-transitive-inputs package)
|
||||
(((_ inputs _ ...) ...)
|
||||
inputs))))
|
||||
(%final-inputs system)))))
|
||||
|
||||
(define package->job
|
||||
(lambda* (store package system #:key (suffix ""))
|
||||
"Return a job for PACKAGE on SYSTEM, or #f if this combination is not
|
||||
(let ((base-packages
|
||||
(delete-duplicates
|
||||
(append-map (match-lambda
|
||||
((_ package _ ...)
|
||||
(match (package-transitive-inputs package)
|
||||
(((_ inputs _ ...) ...)
|
||||
inputs))))
|
||||
(%final-inputs)))))
|
||||
(lambda* (store package system #:key (suffix ""))
|
||||
"Return a job for PACKAGE on SYSTEM, or #f if this combination is not
|
||||
valid. Append SUFFIX to the job name."
|
||||
(cond ((member package (base-packages system))
|
||||
(package-job store (string-append "base." (job-name package))
|
||||
package system #:suffix suffix))
|
||||
((supported-package? package system)
|
||||
(let ((drv (package-derivation store package system
|
||||
#:graft? #f)))
|
||||
(and (substitutable-derivation? drv)
|
||||
(package-job store (job-name package)
|
||||
package system #:suffix suffix))))
|
||||
(else
|
||||
#f))))
|
||||
(cond ((member package base-packages)
|
||||
(package-job store (string-append "base." (job-name package))
|
||||
package system #:suffix suffix))
|
||||
((supported-package? package system)
|
||||
(let ((drv (package-derivation store package system
|
||||
#:graft? #f)))
|
||||
(and (substitutable-derivation? drv)
|
||||
(package-job store (job-name package)
|
||||
package system #:suffix suffix))))
|
||||
(else
|
||||
#f)))))
|
||||
|
||||
(define %x86-64-micro-architectures
|
||||
;; Micro-architectures for which we build tuned variants.
|
||||
@@ -421,9 +416,9 @@ valid. Append SUFFIX to the job name."
|
||||
(map channel-url channels)))
|
||||
arguments))
|
||||
|
||||
(define (manifests->jobs store manifests systems)
|
||||
(define (manifests->jobs store manifests)
|
||||
"Return the list of jobs for the entries in MANIFESTS, a list of file
|
||||
names, for each one of SYSTEMS."
|
||||
names."
|
||||
(define (load-manifest manifest)
|
||||
(save-module-excursion
|
||||
(lambda ()
|
||||
@@ -434,12 +429,11 @@ names, for each one of SYSTEMS."
|
||||
(string-append (manifest-entry-name entry) "-"
|
||||
(manifest-entry-version entry)))
|
||||
|
||||
(define (manifest-entry->job entry system)
|
||||
(define (manifest-entry->job entry)
|
||||
(let* ((obj (manifest-entry-item entry))
|
||||
(drv (parameterize ((%graft? #f))
|
||||
(run-with-store store
|
||||
(lower-object obj system)
|
||||
#:system system)))
|
||||
(lower-object obj))))
|
||||
(max-silent-time (or (and (package? obj)
|
||||
(assoc-ref (package-properties obj)
|
||||
'max-silent-time))
|
||||
@@ -451,13 +445,11 @@ names, for each one of SYSTEMS."
|
||||
#:max-silent-time max-silent-time
|
||||
#:timeout timeout)))
|
||||
|
||||
(let ((entries (delete-duplicates
|
||||
(append-map (compose manifest-entries load-manifest)
|
||||
manifests)
|
||||
manifest-entry=?)))
|
||||
(append-map (lambda (system)
|
||||
(map (cut manifest-entry->job <> system) entries))
|
||||
systems)))
|
||||
(map manifest-entry->job
|
||||
(delete-duplicates
|
||||
(append-map (compose manifest-entries load-manifest)
|
||||
manifests)
|
||||
manifest-entry=?)))
|
||||
|
||||
(define (arguments->systems arguments)
|
||||
"Return the systems list from ARGUMENTS."
|
||||
@@ -579,7 +571,7 @@ names, for each one of SYSTEMS."
|
||||
(('manifests . rest)
|
||||
;; Build packages in the list of manifests.
|
||||
(let ((manifests (arguments->manifests rest channels)))
|
||||
(manifests->jobs store manifests systems)))
|
||||
(manifests->jobs store manifests)))
|
||||
(else
|
||||
(error "unknown subset" subset))))
|
||||
systems)))
|
||||
|
||||
+1
-16
@@ -35,7 +35,6 @@
|
||||
this-home-environment
|
||||
|
||||
home-environment-derivation
|
||||
home-environment-packages
|
||||
home-environment-user-services
|
||||
home-environment-essential-services
|
||||
home-environment-services
|
||||
@@ -103,21 +102,7 @@
|
||||
#:target-type home-service-type)))
|
||||
(service-value home)))
|
||||
|
||||
|
||||
(define (home-environment-configuration-file he)
|
||||
"Return the configuration file of HE, based on its 'location' field, or #f
|
||||
if it could not be determined."
|
||||
(let ((file (and=> (home-environment-location he)
|
||||
location-file)))
|
||||
(and file
|
||||
(or (and (string-prefix? "/" file) file)
|
||||
(search-path %load-path file)))))
|
||||
|
||||
(define* (home-environment-with-provenance he
|
||||
#:optional
|
||||
(config-file
|
||||
(home-environment-configuration-file
|
||||
he)))
|
||||
(define* (home-environment-with-provenance he config-file)
|
||||
"Return a variant of HE that stores its own provenance information,
|
||||
including CONFIG-FILE, if available. This is achieved by adding an instance
|
||||
of HOME-PROVENANCE-SERVICE-TYPE to its services."
|
||||
|
||||
+28
-128
@@ -1,7 +1,6 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2021-2023 Andrew Tropin <andrew@trop.in>
|
||||
;;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
|
||||
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
|
||||
;;; Copyright © 2022-2023 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -33,9 +32,7 @@
|
||||
#:use-module (guix diagnostics)
|
||||
#:use-module (guix i18n)
|
||||
#:use-module (guix modules)
|
||||
#:use-module (guix memoization)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-9)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (ice-9 vlist)
|
||||
|
||||
@@ -50,11 +47,6 @@
|
||||
home-run-on-change-service-type
|
||||
home-provenance-service-type
|
||||
|
||||
literal-string
|
||||
literal-string?
|
||||
literal-string-value
|
||||
|
||||
with-shell-quotation-bindings
|
||||
environment-variable-shell-definitions
|
||||
home-files-directory
|
||||
xdg-configuration-files-directory
|
||||
@@ -64,16 +56,11 @@
|
||||
lookup-home-service-types
|
||||
home-provenance
|
||||
|
||||
define-service-type-mapping
|
||||
system->home-service-type
|
||||
|
||||
%initialize-gettext)
|
||||
|
||||
#:re-export (service
|
||||
service-type
|
||||
service-extension
|
||||
for-home
|
||||
for-home?))
|
||||
service-extension))
|
||||
|
||||
;;; Comment:
|
||||
;;;
|
||||
@@ -184,59 +171,33 @@ packages, configuration files, activation script, and so on.")))
|
||||
configuration files that the user has declared in their
|
||||
@code{home-environment} record.")))
|
||||
|
||||
;; Representation of a literal string.
|
||||
(define-record-type <literal-string>
|
||||
(literal-string str)
|
||||
literal-string?
|
||||
(str literal-string-value))
|
||||
|
||||
(define (with-shell-quotation-bindings exp)
|
||||
"Insert EXP, a gexp, in a lexical environment providing the
|
||||
'shell-single-quote' and 'shell-double-quote' bindings."
|
||||
#~(let* ((quote-string
|
||||
(lambda (value quoted-chars)
|
||||
(list->string (string-fold-right
|
||||
(lambda (chr lst)
|
||||
(if (memq chr quoted-chars)
|
||||
(append (list #\\ chr) lst)
|
||||
(cons chr lst)))
|
||||
'()
|
||||
value))))
|
||||
(shell-double-quote
|
||||
(lambda (value)
|
||||
;; Double-quote VALUE, leaving dollar sign as is.
|
||||
(string-append "\"" (quote-string value '(#\" #\\))
|
||||
"\"")))
|
||||
(shell-single-quote
|
||||
(lambda (value)
|
||||
;; Single-quote VALUE to enter a literal string.
|
||||
(string-append "'" (quote-string value '(#\'))
|
||||
"'"))))
|
||||
#$exp))
|
||||
|
||||
(define (environment-variable-shell-definitions variables)
|
||||
"Return a gexp that evaluates to a list of POSIX shell statements defining
|
||||
VARIABLES, a list of environment variable name/value pairs. The returned code
|
||||
ensures variable values are properly quoted."
|
||||
(with-shell-quotation-bindings
|
||||
#~(string-append
|
||||
#$@(map (match-lambda
|
||||
((key . #f)
|
||||
"")
|
||||
((key . #t)
|
||||
#~(string-append "export " #$key "\n"))
|
||||
((key . (or (? string? value)
|
||||
(? file-like? value)
|
||||
(? gexp? value)))
|
||||
#~(string-append "export " #$key "="
|
||||
(shell-double-quote #$value)
|
||||
"\n"))
|
||||
((key . (? literal-string? value))
|
||||
#~(string-append "export " #$key "="
|
||||
(shell-single-quote
|
||||
#$(literal-string-value value))
|
||||
"\n")))
|
||||
variables))))
|
||||
#~(let ((shell-quote
|
||||
(lambda (value)
|
||||
;; Double-quote VALUE, leaving dollar sign as is.
|
||||
(let ((quoted (list->string
|
||||
(string-fold-right
|
||||
(lambda (chr lst)
|
||||
(case chr
|
||||
((#\" #\\)
|
||||
(append (list chr #\\) lst))
|
||||
(else (cons chr lst))))
|
||||
'()
|
||||
value))))
|
||||
(string-append "\"" quoted "\"")))))
|
||||
(string-append
|
||||
#$@(map (match-lambda
|
||||
((key . #f)
|
||||
"")
|
||||
((key . #t)
|
||||
#~(string-append "export " #$key "\n"))
|
||||
((key . value)
|
||||
#~(string-append "export " #$key "="
|
||||
(shell-quote #$value) "\n")))
|
||||
variables))))
|
||||
|
||||
(define (environment-variables->setup-environment-script vars)
|
||||
"Return a file that can be sourced by a POSIX compliant shell which
|
||||
@@ -352,7 +313,7 @@ directory containing FILES."
|
||||
(extend append)
|
||||
(default-value '())
|
||||
(description "Files that will be put in
|
||||
@file{~/.guix-home/files}, and further processed during activation.")))
|
||||
@file{~~/.guix-home/files}, and further processed during activation.")))
|
||||
|
||||
(define xdg-configuration-files-directory ".config")
|
||||
|
||||
@@ -373,7 +334,7 @@ directory containing FILES."
|
||||
(extend append)
|
||||
(default-value '())
|
||||
(description "Files that will be put in
|
||||
@file{~/.guix-home/files/.config}, and further processed during activation.")))
|
||||
@file{~~/.guix-home/files/.config}, and further processed during activation.")))
|
||||
|
||||
(define xdg-data-files-directory ".local/share")
|
||||
|
||||
@@ -394,7 +355,7 @@ directory containing FILES."
|
||||
(extend append)
|
||||
(default-value '())
|
||||
(description "Files that will be put in
|
||||
@file{~/.guix-home/files/.local/share}, and further processed during
|
||||
@file{~~/.guix-home/files/.local/share}, and further processed during
|
||||
activation.")))
|
||||
|
||||
|
||||
@@ -519,67 +480,6 @@ directory. @command{activate} script automatically called during
|
||||
reconfiguration or generation switching. This service can be extended
|
||||
with one gexp, but many times, and all gexps must be idempotent.")))
|
||||
|
||||
|
||||
;;;
|
||||
;;; Service type graph rewriting.
|
||||
;;;
|
||||
|
||||
(define (service-type-mapping proc)
|
||||
"Return a procedure that applies PROC to map a service type graph to another
|
||||
one."
|
||||
(define (rewrite extension)
|
||||
(match (proc (service-extension-target extension))
|
||||
(#f #f)
|
||||
(target
|
||||
(service-extension target
|
||||
(service-extension-compute extension)))))
|
||||
|
||||
(define replace
|
||||
(mlambdaq (type)
|
||||
(service-type
|
||||
(inherit type)
|
||||
(name (symbol-append 'home- (service-type-name type)))
|
||||
(location (service-type-location type))
|
||||
(extensions (filter-map rewrite (service-type-extensions type))))))
|
||||
|
||||
replace)
|
||||
|
||||
(define %system/home-service-type-mapping
|
||||
;; Mapping of System to Home services.
|
||||
(make-hash-table))
|
||||
|
||||
(define system->home-service-type
|
||||
;; Map the given System service type to the corresponding Home service type.
|
||||
(let ()
|
||||
(define (replace type)
|
||||
(define replacement
|
||||
(hashq-ref %system/home-service-type-mapping type
|
||||
*unspecified*))
|
||||
|
||||
(if (eq? replacement *unspecified*)
|
||||
type
|
||||
replacement))
|
||||
|
||||
(service-type-mapping replace)))
|
||||
|
||||
(define-syntax define-service-type-mapping
|
||||
(syntax-rules (=>)
|
||||
((_ system-type => home-type)
|
||||
(hashq-set! %system/home-service-type-mapping
|
||||
system-type home-type))))
|
||||
|
||||
(define-syntax define-service-type-mappings
|
||||
(syntax-rules (=>)
|
||||
((_ (system-type => home-type) ...)
|
||||
(begin
|
||||
(define-service-type-mapping system-type => home-type)
|
||||
...))))
|
||||
|
||||
(define-service-type-mappings
|
||||
(system-service-type => home-service-type)
|
||||
(activation-service-type => home-activation-service-type)
|
||||
(profile-service-type => home-profile-service-type))
|
||||
|
||||
|
||||
;;;
|
||||
;;; On-change.
|
||||
|
||||
@@ -1,8 +1,6 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2022 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2022 ( <paren@disroot.org>
|
||||
;;; Copyright © 2023 conses <contact@conses.eu>
|
||||
;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -24,8 +22,7 @@
|
||||
#:use-module (gnu home services shepherd)
|
||||
#:use-module (gnu services configuration)
|
||||
#:autoload (gnu packages glib) (dbus)
|
||||
#:autoload (gnu packages xdisorg) (redshift unclutter)
|
||||
#:autoload (gnu packages xorg) (setxkbmap xmodmap)
|
||||
#:autoload (gnu packages xdisorg) (redshift)
|
||||
#:use-module (guix records)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (srfi srfi-1)
|
||||
@@ -35,13 +32,7 @@
|
||||
home-redshift-service-type
|
||||
|
||||
home-dbus-configuration
|
||||
home-dbus-service-type
|
||||
|
||||
home-unclutter-configuration
|
||||
home-unclutter-service-type
|
||||
|
||||
home-xmodmap-configuration
|
||||
home-xmodmap-service-type))
|
||||
home-dbus-service-type))
|
||||
|
||||
|
||||
;;;
|
||||
@@ -214,9 +205,9 @@ according to time of day.")))
|
||||
(cons "DBUS_VERBOSE=1"
|
||||
(default-environment-variables))
|
||||
#:log-file
|
||||
(format #f "~a/log/dbus.log"
|
||||
(or (getenv "XDG_STATE_HOME")
|
||||
(format #f "~a/.local/state"
|
||||
(format #f "~a/dbus.log"
|
||||
(or (getenv "XDG_LOG_HOME")
|
||||
(format #f "~a/.local/var/log"
|
||||
(getenv "HOME"))))))
|
||||
(stop #~(make-kill-destructor)))))
|
||||
|
||||
@@ -235,104 +226,3 @@ according to time of day.")))
|
||||
(default-value (home-dbus-configuration))
|
||||
(description
|
||||
"Run the session-specific D-Bus inter-process message bus.")))
|
||||
|
||||
|
||||
;;;
|
||||
;;; Unclutter.
|
||||
;;;
|
||||
|
||||
(define-configuration/no-serialization home-unclutter-configuration
|
||||
(unclutter
|
||||
(file-like unclutter)
|
||||
"The @code{unclutter} package to use.")
|
||||
(idle-timeout
|
||||
(integer 5)
|
||||
"Timeout in seconds after which to hide the cursor."))
|
||||
|
||||
(define (home-unclutter-shepherd-service config)
|
||||
(list
|
||||
(shepherd-service
|
||||
(provision '(unclutter))
|
||||
(requirement '())
|
||||
(one-shot? #t)
|
||||
(start #~(make-forkexec-constructor
|
||||
(list
|
||||
#$(file-append
|
||||
(home-unclutter-configuration-unclutter config)
|
||||
"/bin/unclutter")
|
||||
"-idle"
|
||||
(number->string
|
||||
#$(home-unclutter-configuration-idle-timeout config)))
|
||||
#:log-file (string-append
|
||||
(or (getenv "XDG_STATE_HOME")
|
||||
(format #f "~a/.local/state"
|
||||
(getenv "HOME")))
|
||||
"/log/unclutter.log"))))))
|
||||
|
||||
(define home-unclutter-service-type
|
||||
(service-type
|
||||
(name 'home-unclutter)
|
||||
(extensions
|
||||
(list
|
||||
(service-extension home-shepherd-service-type
|
||||
home-unclutter-shepherd-service)))
|
||||
(default-value (home-unclutter-configuration))
|
||||
(description "Run the @code{unclutter} daemon, which, on systems using the
|
||||
Xorg graphical display server, automatically hides the cursor after a
|
||||
user-defined timeout has expired.")))
|
||||
|
||||
|
||||
;;;
|
||||
;;; Xmodmap.
|
||||
;;;
|
||||
|
||||
(define-configuration/no-serialization home-xmodmap-configuration
|
||||
(xmodmap
|
||||
(file-like xmodmap)
|
||||
"The @code{xmodmap} package to use.")
|
||||
(key-map
|
||||
(list '())
|
||||
"List of expressions to be read by @code{xmodmap} on service startup."))
|
||||
|
||||
(define (serialize-xmodmap-configuration field-name val)
|
||||
(define serialize-field
|
||||
(match-lambda
|
||||
((key . value)
|
||||
(format #f "~a = ~a" key value))
|
||||
(e e)))
|
||||
|
||||
#~(string-append
|
||||
#$@(interpose (map serialize-field val) "\n" 'suffix)))
|
||||
|
||||
(define (xmodmap-shepherd-service config)
|
||||
(define config-file
|
||||
(mixed-text-file
|
||||
"config"
|
||||
(serialize-xmodmap-configuration
|
||||
#f (home-xmodmap-configuration-key-map config))))
|
||||
|
||||
(list
|
||||
(shepherd-service
|
||||
(provision '(xmodmap))
|
||||
(start #~(make-system-constructor
|
||||
(string-join
|
||||
(list #$(file-append
|
||||
(home-xmodmap-configuration-xmodmap config)
|
||||
"/bin/xmodmap")
|
||||
#$config-file))))
|
||||
(stop #~(make-system-constructor
|
||||
#$(file-append setxkbmap "/bin/setxkbmap")))
|
||||
(documentation "On startup, run @code{xmodmap} and read the expressions in
|
||||
the configuration file. On stop, reset all the mappings back to the
|
||||
defaults."))))
|
||||
|
||||
(define home-xmodmap-service-type
|
||||
(service-type
|
||||
(name 'home-xmodmap)
|
||||
(extensions
|
||||
(list
|
||||
(service-extension home-shepherd-service-type
|
||||
xmodmap-shepherd-service)))
|
||||
(default-value (home-xmodmap-configuration))
|
||||
(description "Run the @code{xmodmap} utility to modify keymaps and pointer
|
||||
buttons under the Xorg display server via user-defined expressions.")))
|
||||
|
||||
@@ -1,34 +0,0 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2023 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu home services dict)
|
||||
#:use-module (gnu home services)
|
||||
#:use-module (gnu services)
|
||||
#:use-module (gnu services dict)
|
||||
#:use-module ((gnu system shadow) #:select (account-service-type))
|
||||
;; For the 'home-shepherd-service-type' mapping.
|
||||
#:use-module (gnu home services shepherd)
|
||||
#:export (home-dicod-service-type)
|
||||
#:re-export (dicod-configuration))
|
||||
|
||||
(define home-dicod-service-type
|
||||
(service-type
|
||||
(inherit (system->home-service-type
|
||||
(remove-service-extensions dicod-service-type
|
||||
(list account-service-type))))
|
||||
(default-value (for-home (dicod-configuration)))))
|
||||
@@ -1,8 +1,6 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
|
||||
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
|
||||
;;; Copyright © 2023 Giacomo Leidi <goodoldpaul@autistici.org>
|
||||
;;; Copyright © 2023 Andrew Patterson <andrewpatt7@gmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -23,9 +21,6 @@
|
||||
#:use-module (gnu home services)
|
||||
#:use-module (gnu packages fontutils)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (sxml simple)
|
||||
|
||||
#:export (home-fontconfig-service-type))
|
||||
|
||||
@@ -38,36 +33,15 @@
|
||||
;;;
|
||||
;;; Code:
|
||||
|
||||
(define (write-fontconfig-doctype)
|
||||
"Prints fontconfig's DOCTYPE to current-output-port."
|
||||
;; This is necessary because SXML doesn't seem to have a way to represent a doctype,
|
||||
;; but sxml->xml /does/ currently call any thunks in the SXML with the XML output port
|
||||
;; as current-output-port, allowing the output to include arbitrary text instead of
|
||||
;; just properly quoted XML.
|
||||
(format #t "<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>"))
|
||||
|
||||
(define (config->sxml config)
|
||||
"Converts a <home-fontconfig-configuration> record into the SXML representation
|
||||
of fontconfig's fonts.conf file."
|
||||
(define (snippets->sxml snippet)
|
||||
(match snippet
|
||||
((or (? string? dir)
|
||||
(? gexp? dir))
|
||||
`(dir ,dir))
|
||||
((? list?)
|
||||
snippet)))
|
||||
`(*TOP* (*PI* xml "version='1.0'")
|
||||
,write-fontconfig-doctype
|
||||
(fontconfig
|
||||
,@(map snippets->sxml config))))
|
||||
|
||||
(define (add-fontconfig-config-file config)
|
||||
(define (add-fontconfig-config-file he-symlink-path)
|
||||
`(("fontconfig/fonts.conf"
|
||||
,(mixed-text-file
|
||||
"fonts.conf"
|
||||
(call-with-output-string
|
||||
(lambda (port)
|
||||
(sxml->xml (config->sxml config) port)))))))
|
||||
"<?xml version='1.0'?>
|
||||
<!DOCTYPE fontconfig SYSTEM 'fonts.dtd'>
|
||||
<fontconfig>
|
||||
<dir>~/.guix-home/profile/share/fonts</dir>
|
||||
</fontconfig>"))))
|
||||
|
||||
(define (regenerate-font-cache-gexp _)
|
||||
`(("profile/share/fonts"
|
||||
@@ -85,9 +59,7 @@ of fontconfig's fonts.conf file."
|
||||
(service-extension
|
||||
home-profile-service-type
|
||||
(const (list fontconfig)))))
|
||||
(compose concatenate)
|
||||
(extend append)
|
||||
(default-value '("~/.guix-home/profile/share/fonts"))
|
||||
(default-value #f)
|
||||
(description
|
||||
"Provides configuration file for fontconfig and make
|
||||
fc-* utilities aware of font packages installed in Guix Home's profile.")))
|
||||
|
||||
@@ -1,225 +0,0 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2023 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2023 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu home services gnupg)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module ((guix records) #:select (match-record))
|
||||
#:use-module (gnu services)
|
||||
#:use-module (gnu services configuration)
|
||||
#:use-module (gnu home services)
|
||||
#:use-module (gnu home services shepherd)
|
||||
#:autoload (gnu packages gnupg) (gnupg pinentry parcimonie)
|
||||
#:export (home-gpg-agent-configuration
|
||||
home-gpg-agent-configuration?
|
||||
home-gpg-agent-configuration-gnupg
|
||||
home-gpg-agent-configuration-pinentry-program
|
||||
home-gpg-agent-configuration-ssh-support?
|
||||
home-gpg-agent-configuration-default-cache-ttl
|
||||
home-gpg-agent-configuration-max-cache-ttl
|
||||
home-gpg-agent-configuration-max-cache-ttl-ssh
|
||||
home-gpg-agent-configuration-extra-content
|
||||
|
||||
home-gpg-agent-service-type
|
||||
|
||||
home-parcimonie-configuration
|
||||
home-parcimonie-configuration?
|
||||
home-parcimonie-configuration-parcimonie
|
||||
home-parcimonie-configuration-gnupg-already-torified?
|
||||
home-parcimonie-configuration-refresh-guix-keyrings?
|
||||
home-parcimonie-configuration-extra-content
|
||||
|
||||
home-parcimonie-service-type))
|
||||
|
||||
(define raw-configuration-string? string?)
|
||||
|
||||
;; Configuration of 'gpg-agent'.
|
||||
(define-configuration/no-serialization home-gpg-agent-configuration
|
||||
(gnupg
|
||||
(file-like gnupg)
|
||||
"The GnuPG package to use.")
|
||||
(pinentry-program
|
||||
(file-like (file-append pinentry "/bin/pinentry-curses"))
|
||||
"Pinentry program to use. Pinentry is a small user interface that
|
||||
@command{gpg-agent} delegates to anytime it needs user input for a passphrase
|
||||
or @acronym{PIN, personal identification number} (@pxref{Top,,, pinentry,
|
||||
Using the PIN-Entry}).")
|
||||
(ssh-support?
|
||||
(boolean #f)
|
||||
"Whether to enable @acronym{SSH, secure shell} support. When true,
|
||||
@command{gpg-agent} acts as a drop-in replacement for OpenSSH's
|
||||
@command{ssh-agent} program, taking care of OpenSSH secret keys and directing
|
||||
passphrase requests to the chosen Pinentry program.")
|
||||
(default-cache-ttl
|
||||
(integer 600)
|
||||
"Time a cache entry is valid, in seconds.")
|
||||
(max-cache-ttl
|
||||
(integer 7200)
|
||||
"Maximum time a cache entry is valid, in seconds. After this time a cache
|
||||
entry will be expired even if it has been accessed recently.")
|
||||
(default-cache-ttl-ssh
|
||||
(integer 1800)
|
||||
"Time a cache entry for SSH keys is valid, in seconds.")
|
||||
(max-cache-ttl-ssh
|
||||
(integer 7200)
|
||||
"Maximum time a cache entry for SSH keys is valid, in seconds.")
|
||||
(extra-content
|
||||
(raw-configuration-string "")
|
||||
"Raw content to add to the end of @file{~/.gnupg/gpg-agent.conf}."))
|
||||
|
||||
(define (home-gpg-agent-configuration-file config)
|
||||
"Return the @file{gpg-agent.conf} file for @var{config}."
|
||||
(match-record config <home-gpg-agent-configuration>
|
||||
(pinentry-program default-cache-ttl max-cache-ttl
|
||||
default-cache-ttl-ssh max-cache-ttl-ssh
|
||||
extra-content)
|
||||
(mixed-text-file "gpg-agent.conf"
|
||||
"pinentry-program " pinentry-program "\n"
|
||||
"default-cache-ttl "
|
||||
(number->string default-cache-ttl) "\n"
|
||||
"max-cache-ttl "
|
||||
(number->string max-cache-ttl) "\n"
|
||||
"default-cache-ttl-ssh "
|
||||
(number->string default-cache-ttl-ssh) "\n"
|
||||
"max-cache-ttl-ssh "
|
||||
(number->string max-cache-ttl-ssh) "\n"
|
||||
extra-content)))
|
||||
|
||||
(define (home-gpg-agent-shepherd-services config)
|
||||
"Return the possibly-empty list of Shepherd services for @var{config}."
|
||||
(match-record config <home-gpg-agent-configuration>
|
||||
(gnupg ssh-support?)
|
||||
;; 'gpg-agent' is started on demand by GnuPG's programs, but it has to be
|
||||
;; started explicitly when OpenSSH support is enabled (info "(gnupg) Agent
|
||||
;; Options").
|
||||
(if ssh-support?
|
||||
(let ((endpoint (lambda (name socket)
|
||||
#~(endpoint
|
||||
(make-socket-address
|
||||
AF_UNIX
|
||||
(string-append %user-runtime-dir
|
||||
"/gnupg/" #$socket))
|
||||
#:name #$name
|
||||
#:socket-directory-permissions #o700))))
|
||||
(list (shepherd-service
|
||||
(provision '(gpg-agent ssh-agent))
|
||||
(modules '((shepherd support))) ;for '%user-runtime-dir'
|
||||
(start #~(make-systemd-constructor
|
||||
(list #$(file-append gnupg "/bin/gpg-agent")
|
||||
"--supervised" "--enable-ssh-support")
|
||||
(list #$(endpoint "ssh" "S.gpg-agent.ssh")
|
||||
#$(endpoint "browser" "S.gpg-agent.browser")
|
||||
#$(endpoint "extra" "S.gpg-agent.extra")
|
||||
;; #$(endpoint "scdaemon" "S.scdaemon")
|
||||
#$(endpoint "std" "S.gpg-agent"))))
|
||||
(stop #~(make-systemd-destructor))
|
||||
(documentation "Start 'gpg-agent', the GnuPG passphrase
|
||||
agent, with support for handling OpenSSH material."))))
|
||||
'())))
|
||||
|
||||
(define (home-gpg-agent-files config)
|
||||
`((".gnupg/gpg-agent.conf" ,(home-gpg-agent-configuration-file config))))
|
||||
|
||||
(define (home-gpg-agent-environment-variables config)
|
||||
"Return GnuPG environment variables needed for @var{config}."
|
||||
(if (home-gpg-agent-configuration-ssh-support? config)
|
||||
`(("SSH_AUTH_SOCK"
|
||||
. "$XDG_RUNTIME_DIR/gnupg/S.gpg-agent.ssh"))
|
||||
'()))
|
||||
|
||||
(define home-gpg-agent-service-type
|
||||
(service-type
|
||||
(name 'home-gpg-agent)
|
||||
(extensions
|
||||
(list (service-extension home-files-service-type
|
||||
home-gpg-agent-files)
|
||||
(service-extension home-shepherd-service-type
|
||||
home-gpg-agent-shepherd-services)
|
||||
(service-extension home-environment-variables-service-type
|
||||
home-gpg-agent-environment-variables)))
|
||||
(default-value (home-gpg-agent-configuration))
|
||||
(description
|
||||
"Configure GnuPG's agent, @command{gpg-agent}, which is responsible for
|
||||
managing OpenPGP and optionally SSH private keys. When SSH support is
|
||||
enabled, @command{gpg-agent} acts as a drop-in replacement for OpenSSH's
|
||||
@command{ssh-agent}.")))
|
||||
|
||||
(define-configuration/no-serialization home-parcimonie-configuration
|
||||
(parcimonie
|
||||
(file-like parcimonie)
|
||||
"The parcimonie package to use.")
|
||||
(verbose?
|
||||
(boolean #f)
|
||||
"Provide extra output to the log file.")
|
||||
(gnupg-aleady-torified?
|
||||
(boolean #f)
|
||||
"GnuPG is already configured to use tor and parcimonie won't attempt to use
|
||||
tor directly.")
|
||||
(refresh-guix-keyrings?
|
||||
(boolean #f)
|
||||
"Also refresh any Guix keyrings found in the XDG_CONFIG_DIR.")
|
||||
(extra-content
|
||||
(raw-configuration-string "")
|
||||
"Raw content to add to the parcimonie service."))
|
||||
|
||||
(define (home-parcimonie-shepherd-service config)
|
||||
"Return a user service to run parcimonie."
|
||||
(match-record config <home-parcimonie-configuration>
|
||||
(parcimonie verbose? gnupg-aleady-torified?
|
||||
refresh-guix-keyrings? extra-content)
|
||||
(let ((log-file #~(string-append %user-log-dir "/parcimonie.log")))
|
||||
(list (shepherd-service
|
||||
(provision '(parcimonie))
|
||||
(modules '((shepherd support) ;for '%user-log-dir'
|
||||
(guix build utils)
|
||||
(srfi srfi-1)))
|
||||
(start #~(make-forkexec-constructor
|
||||
(cons*
|
||||
#$(file-append parcimonie "/bin/parcimonie")
|
||||
#$@(if verbose?
|
||||
'("--verbose")
|
||||
'())
|
||||
#$@(if gnupg-aleady-torified?
|
||||
'("--gnupg_already_torified")
|
||||
'())
|
||||
#$@(if (not (string=? extra-content ""))
|
||||
(list extra-content)
|
||||
'())
|
||||
#$@(if refresh-guix-keyrings?
|
||||
'((append-map
|
||||
(lambda (item)
|
||||
(list (string-append "--gnupg_extra_args="
|
||||
"--keyring=" item)))
|
||||
(find-files
|
||||
(string-append (getenv "XDG_CONFIG_HOME") "/guix")
|
||||
"^trustedkeys\\.kbx$")))
|
||||
'((list))))
|
||||
#:log-file #$log-file))
|
||||
(stop #~(make-kill-destructor))
|
||||
(respawn? #t)
|
||||
(documentation "Incrementally refresh gnupg keyring over Tor"))))))
|
||||
|
||||
(define home-parcimonie-service-type
|
||||
(service-type
|
||||
(name 'home-parcimonie)
|
||||
(extensions
|
||||
(list (service-extension home-shepherd-service-type
|
||||
home-parcimonie-shepherd-service)))
|
||||
(default-value (home-parcimonie-configuration))
|
||||
(description
|
||||
"Incrementally refresh GnuPG keyrings over Tor.")))
|
||||
@@ -1,222 +0,0 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2023 Tanguy Le Carrour <tanguy@bioneland.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu home services mail)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (gnu services)
|
||||
#:use-module (gnu services configuration)
|
||||
#:use-module (gnu home services)
|
||||
#:use-module (gnu home services shepherd)
|
||||
#:use-module (gnu packages mail)
|
||||
#:use-module (ice-9 string-fun)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-26)
|
||||
#:export (home-msmtp-configuration
|
||||
home-msmtp-configuration?
|
||||
home-msmtp-configuration-defaults
|
||||
home-msmtp-configuration-accounts
|
||||
home-msmtp-configuration-default-account
|
||||
home-msmtp-configuration-extra-content
|
||||
home-msmtp-service-type
|
||||
msmtp-configuration
|
||||
msmtp-configuration-auth?
|
||||
msmtp-configuration-tls?
|
||||
msmtp-configuration-tls-starttls?
|
||||
msmtp-configuration-tls-trust-file
|
||||
msmtp-configuration-log-file
|
||||
msmtp-configuration-host
|
||||
msmtp-configuration-port
|
||||
msmtp-configuration-user
|
||||
msmtp-configuration-from
|
||||
msmtp-configuration-password-eval
|
||||
msmtp-configuration-extra-content
|
||||
msmtp-account
|
||||
msmtp-account-name
|
||||
msmtp-account-configuration))
|
||||
|
||||
(define-maybe string (prefix msmtp-configuration-))
|
||||
(define-maybe boolean (prefix msmtp-configuration-))
|
||||
(define-maybe integer (prefix msmtp-configuration-))
|
||||
|
||||
;; Serialization of 'msmtp'.
|
||||
(define (uglify-symbol field-name)
|
||||
(let* ((name (symbol->string field-name))
|
||||
(ugly-name (string-replace-substring name "-" "_")))
|
||||
(if (string-suffix? "?" ugly-name)
|
||||
(string-drop-right ugly-name 1)
|
||||
ugly-name)))
|
||||
|
||||
(define (msmtp-configuration-serialize-boolean field-name value)
|
||||
#~(string-append #$(uglify-symbol field-name) " "
|
||||
(if #$value "on" "off") "\n"))
|
||||
|
||||
(define (msmtp-configuration-serialize-string field-name value)
|
||||
#~(string-append #$(uglify-symbol field-name) " " #$value "\n"))
|
||||
|
||||
(define (msmtp-configuration-serialize-maybe-string-no-underscore field-name value)
|
||||
#~(if #$(maybe-value-set? value)
|
||||
(string-append
|
||||
#$(string-replace-substring (uglify-symbol field-name) "_" "") " " #$value "\n")
|
||||
""))
|
||||
|
||||
(define (msmtp-configuration-serialize-integer field-name value)
|
||||
#~(string-append #$(uglify-symbol field-name) " "
|
||||
(number->string #$value) "\n"))
|
||||
|
||||
(define (msmtp-configuration-serialize-extra-content field-name value)
|
||||
#~(if (string=? #$value "") "" (string-append #$value "\n")))
|
||||
|
||||
(define (msmtp-account-serialize-name field-name value)
|
||||
#~(string-append "\naccount " #$value "\n"))
|
||||
|
||||
(define (msmtp-account-serialize-msmtp-configuration field-name value)
|
||||
#~(string-append #$(serialize-configuration value msmtp-configuration-fields)))
|
||||
|
||||
(define (home-msmtp-configuration-serialize-list-of-msmtp-accounts field-name value)
|
||||
#~(string-append #$@(map (cut serialize-configuration <> msmtp-account-fields)
|
||||
value)))
|
||||
|
||||
(define (home-msmtp-configuration-serialize-msmtp-configuration field-name value)
|
||||
#~(string-append "defaults\n"
|
||||
#$(serialize-configuration value msmtp-configuration-fields)))
|
||||
|
||||
(define (home-msmtp-configuration-serialize-default-account field-name value)
|
||||
#~(if #$(maybe-value-set? value)
|
||||
(string-append "\naccount default : " #$value "\n")
|
||||
""))
|
||||
|
||||
(define (home-msmtp-configuration-serialize-extra-content field-name value)
|
||||
#~(if (string=? #$value "") "" (string-append #$value "\n")))
|
||||
|
||||
;; Configuration of 'msmtp'.
|
||||
;; Source <https://marlam.de/msmtp/msmtp.html#Configuration-files>.
|
||||
(define-configuration msmtp-configuration
|
||||
(auth?
|
||||
maybe-boolean
|
||||
"Enable or disable authentication.")
|
||||
|
||||
(tls?
|
||||
maybe-boolean
|
||||
"Enable or disable TLS (also known as SSL) for secured connections.")
|
||||
|
||||
(tls-starttls?
|
||||
maybe-boolean
|
||||
"Choose the TLS variant: start TLS from within the session (‘on’, default),
|
||||
or tunnel the session through TLS (‘off’).")
|
||||
|
||||
(tls-trust-file
|
||||
maybe-string
|
||||
"Activate server certificate verification using a list of
|
||||
trusted Certification Authorities (CAs).")
|
||||
|
||||
(log-file
|
||||
maybe-string
|
||||
"Enable logging to the specified file. An empty argument disables logging.
|
||||
The file name ‘-’ directs the log information to standard output."
|
||||
(serializer msmtp-configuration-serialize-maybe-string-no-underscore))
|
||||
|
||||
(host
|
||||
maybe-string
|
||||
"The SMTP server to send the mail to.")
|
||||
|
||||
(port
|
||||
maybe-integer
|
||||
"The port that the SMTP server listens on. The default is 25 (\"smtp\"),
|
||||
unless TLS without STARTTLS is used, in which case it is 465 (\"smtps\").")
|
||||
|
||||
(user
|
||||
maybe-string
|
||||
"Set the user name for authentication.")
|
||||
|
||||
(from
|
||||
maybe-string
|
||||
"Set the envelope-from address.")
|
||||
|
||||
(password-eval
|
||||
maybe-string
|
||||
"Set the password for authentication to the output (stdout) of the command cmd."
|
||||
(serializer msmtp-configuration-serialize-maybe-string-no-underscore))
|
||||
|
||||
(extra-content
|
||||
(string "")
|
||||
"Extra content appended as-is to the configuration block. Run
|
||||
@command{man msmtp} for more information about the configuration file
|
||||
format."
|
||||
(serializer msmtp-configuration-serialize-extra-content))
|
||||
|
||||
(prefix msmtp-configuration-))
|
||||
|
||||
(define-configuration msmtp-account
|
||||
(name
|
||||
(string)
|
||||
"The unique name of the account."
|
||||
(serializer msmtp-account-serialize-name))
|
||||
|
||||
(configuration
|
||||
(msmtp-configuration)
|
||||
"The configuration for this given account.")
|
||||
|
||||
(prefix msmtp-account-))
|
||||
|
||||
(define (list-of-msmtp-accounts? lst)
|
||||
(every msmtp-account? lst))
|
||||
|
||||
(define-configuration home-msmtp-configuration
|
||||
(defaults
|
||||
(msmtp-configuration (msmtp-configuration))
|
||||
"The configuration that will be set as default for all accounts.")
|
||||
|
||||
(accounts
|
||||
(list-of-msmtp-accounts '())
|
||||
"A list of @code{msmtp-account} records which contain
|
||||
information about all your accounts.")
|
||||
|
||||
(default-account
|
||||
maybe-string
|
||||
"Set the default account."
|
||||
(serializer home-msmtp-configuration-serialize-default-account))
|
||||
|
||||
(extra-content
|
||||
(string "")
|
||||
"Extra content appended as-is to the configuration file. Run
|
||||
@command{man msmtp} for more information about the configuration file
|
||||
format."
|
||||
(serializer home-msmtp-configuration-serialize-extra-content))
|
||||
|
||||
(prefix home-msmtp-configuration-))
|
||||
|
||||
(define (home-msmtp-files config)
|
||||
(list
|
||||
`(".config/msmtp/config"
|
||||
,(mixed-text-file "msmtp-config"
|
||||
(serialize-configuration config home-msmtp-configuration-fields)))))
|
||||
|
||||
(define (home-msmtp-profile-entries config)
|
||||
(list msmtp))
|
||||
|
||||
(define home-msmtp-service-type
|
||||
(service-type (name 'home-msmtp)
|
||||
(extensions
|
||||
(list (service-extension home-profile-service-type
|
||||
home-msmtp-profile-entries)
|
||||
(service-extension home-files-service-type
|
||||
home-msmtp-files)))
|
||||
(default-value (home-msmtp-configuration))
|
||||
(description "Configure msmtp, a simple
|
||||
@acronym{SMTP, Simple Mail Transfer Protocol} client that can relay email
|
||||
to SMTP servers.")))
|
||||
+87
-11
@@ -1,8 +1,7 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2021, 2023 Andrew Tropin <andrew@trop.in>
|
||||
;;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
|
||||
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
|
||||
;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
;;; Copyright © 2023 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -20,9 +19,16 @@
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu home services mcron)
|
||||
#:use-module (gnu packages guile-xyz)
|
||||
#:use-module (gnu home services)
|
||||
#:use-module (gnu services configuration)
|
||||
#:use-module (gnu services shepherd)
|
||||
#:use-module (gnu home services shepherd)
|
||||
#:use-module (gnu services mcron) ;for the service mapping
|
||||
#:use-module (guix records)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (ice-9 match)
|
||||
|
||||
#:export (home-mcron-configuration
|
||||
home-mcron-service-type))
|
||||
|
||||
@@ -49,16 +55,86 @@
|
||||
;;
|
||||
;;; Code:
|
||||
|
||||
(define-syntax-rule (home-mcron-configuration fields ...)
|
||||
;; Macro provided for backward compatibility.
|
||||
(for-home (mcron-configuration fields ...)))
|
||||
(define list-of-gexps?
|
||||
(list-of gexp?))
|
||||
|
||||
(define-configuration/no-serialization home-mcron-configuration
|
||||
(mcron (file-like mcron) "The mcron package to use.")
|
||||
(jobs
|
||||
(list-of-gexps '())
|
||||
"This is a list of gexps (@pxref{G-Expressions}), where each gexp
|
||||
corresponds to an mcron job specification (@pxref{Syntax, mcron job
|
||||
specifications,, mcron, GNU@tie{}mcron}).")
|
||||
(log? (boolean #t) "Log messages to standard output.")
|
||||
(log-format
|
||||
(string "~1@*~a ~a: ~a~%")
|
||||
"@code{(ice-9 format)} format string for log messages. The default value
|
||||
produces messages like \"@samp{@var{pid} @var{name}:
|
||||
@var{message}\"} (@pxref{Invoking mcron, Invoking,, mcron, GNU@tie{}mcron}).
|
||||
Each message is also prefixed by a timestamp by GNU Shepherd."))
|
||||
|
||||
(define job-files (@@ (gnu services mcron) job-files))
|
||||
(define shepherd-schedule-action
|
||||
(@@ (gnu services mcron) shepherd-schedule-action))
|
||||
|
||||
(define (home-mcron-shepherd-services config)
|
||||
(match-record config <home-mcron-configuration>
|
||||
(mcron jobs log? log-format)
|
||||
(if (null? jobs)
|
||||
'() ;no jobs to run
|
||||
(let ((files (job-files mcron jobs)))
|
||||
(list (shepherd-service
|
||||
(documentation "User cron jobs.")
|
||||
(provision '(mcron))
|
||||
(modules `((srfi srfi-1)
|
||||
(srfi srfi-26)
|
||||
(ice-9 popen) ;for the 'schedule' action
|
||||
(ice-9 rdelim)
|
||||
(ice-9 match)
|
||||
,@%default-modules))
|
||||
(start #~(make-forkexec-constructor
|
||||
(list (string-append #$mcron "/bin/mcron")
|
||||
#$@(if log?
|
||||
#~("--log" "--log-format" #$log-format)
|
||||
#~())
|
||||
#$@files)
|
||||
#:log-file (string-append
|
||||
(or (getenv "XDG_LOG_HOME")
|
||||
(format #f "~a/.local/var/log"
|
||||
(getenv "HOME")))
|
||||
"/mcron.log")))
|
||||
(stop #~(make-kill-destructor))
|
||||
(actions
|
||||
(list (shepherd-schedule-action mcron files)))))))))
|
||||
|
||||
(define home-mcron-profile (compose list home-mcron-configuration-mcron))
|
||||
|
||||
(define (home-mcron-extend config jobs)
|
||||
(home-mcron-configuration
|
||||
(inherit config)
|
||||
(jobs (append (home-mcron-configuration-jobs config)
|
||||
jobs))))
|
||||
|
||||
(define home-mcron-service-type
|
||||
(service-type
|
||||
(inherit (system->home-service-type mcron-service-type))
|
||||
(default-value (for-home (mcron-configuration)))))
|
||||
(service-type (name 'home-mcron)
|
||||
(extensions
|
||||
(list (service-extension
|
||||
home-shepherd-service-type
|
||||
home-mcron-shepherd-services)
|
||||
(service-extension
|
||||
home-profile-service-type
|
||||
home-mcron-profile)))
|
||||
(compose concatenate)
|
||||
(extend home-mcron-extend)
|
||||
(default-value (home-mcron-configuration))
|
||||
(description
|
||||
"Install and configure the GNU mcron cron job manager.")))
|
||||
|
||||
(define-service-type-mapping
|
||||
mcron-service-type => home-mcron-service-type)
|
||||
|
||||
;;;
|
||||
;;; Generate documentation.
|
||||
;;;
|
||||
(define (generate-doc)
|
||||
(configuration->documentation 'home-mcron-configuration))
|
||||
|
||||
;;; mcron.scm ends here
|
||||
|
||||
@@ -1,68 +0,0 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu home services media)
|
||||
#:use-module (srfi srfi-26)
|
||||
#:use-module (gnu home services)
|
||||
#:use-module (gnu home services shepherd)
|
||||
#:use-module (gnu packages kodi)
|
||||
#:use-module (gnu services configuration)
|
||||
#:use-module (gnu services shepherd)
|
||||
#:use-module (guix records)
|
||||
#:use-module (guix gexp)
|
||||
#:export (home-kodi-configuration
|
||||
home-kodi-service-type))
|
||||
|
||||
|
||||
;;;
|
||||
;;; Kodi.
|
||||
;;;
|
||||
|
||||
(define-record-type* <home-kodi-configuration>
|
||||
home-kodi-configuration make-home-kodi-configuration
|
||||
home-kodi-configuration?
|
||||
(kodi home-kodi-kodi ;file-like
|
||||
(default kodi))
|
||||
(extra-options home-kodi-extra-options ;list of string
|
||||
(default '())))
|
||||
|
||||
(define (home-kodi-services config)
|
||||
"Return a <shepherd-service> for kodi with CONFIG."
|
||||
(match-record config <home-kodi-configuration>
|
||||
(kodi extra-options)
|
||||
(let* ((kodi (file-append kodi "/bin/kodi"))
|
||||
(command #~'(#$kodi "-fs" #$@extra-options))
|
||||
(log-file #~(string-append %user-log-dir "/kodi.log")))
|
||||
(list (shepherd-service
|
||||
(documentation "Run the kodi media center.")
|
||||
(provision '(kodi))
|
||||
(modules '((shepherd support))) ;for '%user-log-dir'
|
||||
(start #~(make-forkexec-constructor #$command
|
||||
#:log-file #$log-file))
|
||||
(stop #~(make-kill-destructor)))))))
|
||||
|
||||
(define home-kodi-service-type
|
||||
(service-type
|
||||
(name 'home-kodi)
|
||||
(default-value (home-kodi-configuration))
|
||||
(extensions
|
||||
(list (service-extension home-shepherd-service-type
|
||||
home-kodi-services)))
|
||||
(description
|
||||
"Install and configure the Kodi media center so that it runs as a Shepherd
|
||||
service.")))
|
||||
@@ -1,66 +0,0 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu home services messaging)
|
||||
#:use-module (srfi srfi-26)
|
||||
#:use-module (gnu home services)
|
||||
#:use-module (gnu home services shepherd)
|
||||
#:use-module (gnu packages messaging)
|
||||
#:use-module (gnu services configuration)
|
||||
#:use-module (gnu services shepherd)
|
||||
#:use-module (guix records)
|
||||
#:use-module (guix gexp)
|
||||
#:export (home-znc-configuration
|
||||
home-znc-service-type))
|
||||
|
||||
;;;
|
||||
;;; Znc.
|
||||
;;;
|
||||
(define-record-type* <home-znc-configuration>
|
||||
home-znc-configuration make-home-znc-configuration
|
||||
home-znc-configuration?
|
||||
(znc home-znc-znc ;string
|
||||
(default znc))
|
||||
(extra-options home-znc-extra-options ;list of string
|
||||
(default '())))
|
||||
|
||||
(define (home-znc-services config)
|
||||
"Return a <shepherd-service> for znc with CONFIG."
|
||||
(match-record config <home-znc-configuration>
|
||||
(znc extra-options)
|
||||
(let* ((znc (file-append znc "/bin/znc"))
|
||||
(command #~'(#$znc "--foreground" #$@extra-options))
|
||||
(log-file #~(string-append %user-log-dir "/znc.log")))
|
||||
(list (shepherd-service
|
||||
(documentation "Run the znc IRC bouncer.")
|
||||
(provision '(znc))
|
||||
(modules '((shepherd support))) ;for '%user-log-dir'
|
||||
(start #~(make-forkexec-constructor #$command
|
||||
#:log-file #$log-file))
|
||||
(stop #~(make-kill-destructor)))))))
|
||||
|
||||
(define home-znc-service-type
|
||||
(service-type
|
||||
(name 'home-znc)
|
||||
(default-value (home-znc-configuration))
|
||||
(extensions
|
||||
(list (service-extension home-shepherd-service-type
|
||||
home-znc-services)))
|
||||
(description
|
||||
"Install and configure @command{znc}, an @acronym{IRC, Internet Relay
|
||||
Chat} bouncer, as a Shepherd service.")))
|
||||
@@ -128,10 +128,10 @@
|
||||
(list "-i")
|
||||
(list)))
|
||||
#:log-file (string-append
|
||||
(or (getenv "XDG_STATE_HOME")
|
||||
(format #f "~a/.local/state"
|
||||
(getenv "HOME")))
|
||||
"/log/batsignal.log")))
|
||||
(or (getenv "XDG_LOG_HOME")
|
||||
(format #f "~a/.local/var/log"
|
||||
(getenv "HOME")))
|
||||
"/batsignal.log")))
|
||||
(stop #~(make-kill-destructor))))))
|
||||
|
||||
(define home-batsignal-service-type
|
||||
|
||||
+55
-169
@@ -1,7 +1,6 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
|
||||
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
|
||||
;;; Copyright © 2023 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -20,7 +19,6 @@
|
||||
|
||||
(define-module (gnu home services shells)
|
||||
#:use-module (gnu services configuration)
|
||||
#:autoload (gnu system shadow) (%default-bashrc)
|
||||
#:use-module (gnu home services utils)
|
||||
#:use-module (gnu home services)
|
||||
#:use-module (gnu packages shells)
|
||||
@@ -45,10 +43,7 @@
|
||||
|
||||
home-fish-service-type
|
||||
home-fish-configuration
|
||||
home-fish-extension
|
||||
|
||||
home-inputrc-service-type
|
||||
home-inputrc-configuration))
|
||||
home-fish-extension))
|
||||
|
||||
;;; Commentary:
|
||||
;;;
|
||||
@@ -137,7 +132,7 @@ Shell startup process will continue with
|
||||
(environment-variables
|
||||
(alist '())
|
||||
"Association list of environment variables to set for the Zsh session."
|
||||
(serializer serialize-posix-env-vars))
|
||||
serialize-posix-env-vars)
|
||||
(zshenv
|
||||
(text-config '())
|
||||
"List of file-like objects, which will be added to @file{.zshenv}.
|
||||
@@ -313,24 +308,16 @@ source ~/.profile
|
||||
;;;
|
||||
|
||||
(define (bash-serialize-aliases field-name val)
|
||||
(with-shell-quotation-bindings
|
||||
#~(string-append
|
||||
#$@(map
|
||||
(match-lambda
|
||||
((key . #f)
|
||||
"")
|
||||
((key . #t)
|
||||
#~(string-append "alias " #$key "\n"))
|
||||
((key . (? literal-string? value))
|
||||
#~(string-append "alias " #$key "="
|
||||
(shell-single-quote
|
||||
#$(literal-string-value value))
|
||||
"\n"))
|
||||
((key . value)
|
||||
#~(string-append "alias " #$key "="
|
||||
(shell-double-quote #$value)
|
||||
"\n")))
|
||||
val))))
|
||||
#~(string-append
|
||||
#$@(map
|
||||
(match-lambda
|
||||
((key . #f)
|
||||
"")
|
||||
((key . #t)
|
||||
#~(string-append "alias " #$key "\n"))
|
||||
((key . value)
|
||||
#~(string-append "alias " #$key "=\"" #$value "\"\n")))
|
||||
val)))
|
||||
|
||||
(define-configuration home-bash-configuration
|
||||
(package
|
||||
@@ -346,7 +333,7 @@ source ~/.profile
|
||||
rules for the @code{home-environment-variables-service-type} apply
|
||||
here (@pxref{Essential Home Services}). The contents of this field will be
|
||||
added after the contents of the @code{bash-profile} field."
|
||||
(serializer serialize-posix-env-vars))
|
||||
serialize-posix-env-vars)
|
||||
(aliases
|
||||
(alist '())
|
||||
"Association list of aliases to set for the Bash session. The aliases will be
|
||||
@@ -363,7 +350,7 @@ turns into
|
||||
@example
|
||||
alias ls=\"ls -alF\"
|
||||
@end example"
|
||||
(serializer bash-serialize-aliases))
|
||||
bash-serialize-aliases)
|
||||
(bash-profile
|
||||
(text-config '())
|
||||
"List of file-like objects, which will be added to @file{.bash_profile}.
|
||||
@@ -383,6 +370,43 @@ Used for executing user's commands at the exit of login shell. It
|
||||
won't be read in some cases (if the shell terminates by exec'ing
|
||||
another process for example)."))
|
||||
|
||||
;; TODO: Use value from (gnu system shadow)
|
||||
(define guix-bashrc
|
||||
"\
|
||||
# Bash initialization for interactive non-login shells and
|
||||
# for remote shells (info \"(bash) Bash Startup Files\").
|
||||
|
||||
# Export 'SHELL' to child processes. Programs such as 'screen'
|
||||
# honor it and otherwise use /bin/sh.
|
||||
export SHELL
|
||||
|
||||
if [[ $- != *i* ]]
|
||||
then
|
||||
# We are being invoked from a non-interactive shell. If this
|
||||
# is an SSH session (as in \"ssh host command\"), source
|
||||
# /etc/profile so we get PATH and other essential variables.
|
||||
[[ -n \"$SSH_CLIENT\" ]] && source /etc/profile
|
||||
|
||||
# Don't do anything else.
|
||||
return
|
||||
fi
|
||||
|
||||
# Source the system-wide file.
|
||||
if [[ -e /etc/bashrc ]]; then
|
||||
source /etc/bashrc
|
||||
fi
|
||||
|
||||
# Adjust the prompt depending on whether we're in 'guix environment'.
|
||||
if [ -n \"$GUIX_ENVIRONMENT\" ]
|
||||
then
|
||||
PS1='\\u@\\h \\w [env]\\$ '
|
||||
else
|
||||
PS1='\\u@\\h \\w\\$ '
|
||||
fi
|
||||
alias ls='ls -p --color=auto'
|
||||
alias ll='ls -l'
|
||||
alias grep='grep --color=auto'\n")
|
||||
|
||||
(define (add-bash-configuration config)
|
||||
(define (filter-fields field)
|
||||
(filter-configuration-fields home-bash-configuration-fields
|
||||
@@ -419,23 +443,13 @@ if [ -f ~/.profile ]; then source ~/.profile; fi
|
||||
# Honor per-interactive-shell startup file
|
||||
if [ -f ~/.bashrc ]; then source ~/.bashrc; fi
|
||||
"
|
||||
|
||||
;; The host distro might provide a bad 'PS1' default--e.g., not taking
|
||||
;; $GUIX_ENVIRONMENT into account. Provide a good default here when
|
||||
;; asked to. The default can be overridden below via
|
||||
;; 'environment-variables'.
|
||||
(if (home-bash-configuration-guix-defaults? config)
|
||||
"PS1='\\u@\\h \\w${GUIX_ENVIRONMENT:+ [env]}\\$ '\n"
|
||||
"")
|
||||
|
||||
(serialize-field 'bash-profile)
|
||||
(serialize-field 'environment-variables)))
|
||||
|
||||
,@(list (file-if-not-empty
|
||||
'bashrc
|
||||
(if (home-bash-configuration-guix-defaults? config)
|
||||
(list (serialize-field 'aliases)
|
||||
(plain-file-content %default-bashrc))
|
||||
(list (serialize-field 'aliases) guix-bashrc)
|
||||
(list (serialize-field 'aliases))))
|
||||
(file-if-not-empty 'bash-logout)))))
|
||||
|
||||
@@ -548,19 +562,19 @@ with text blocks from other extensions and the base service."))
|
||||
(environment-variables
|
||||
(alist '())
|
||||
"Association list of environment variables to set in Fish."
|
||||
(serializer serialize-fish-env-vars))
|
||||
serialize-fish-env-vars)
|
||||
(aliases
|
||||
(alist '())
|
||||
"Association list of aliases for Fish, both the key and the value
|
||||
should be a string. An alias is just a simple function that wraps a
|
||||
command, If you want something more akin to @dfn{aliases} in POSIX
|
||||
shells, see the @code{abbreviations} field."
|
||||
(serializer serialize-fish-aliases))
|
||||
serialize-fish-aliases)
|
||||
(abbreviations
|
||||
(alist '())
|
||||
"Association list of abbreviations for Fish. These are words that,
|
||||
when typed in the shell, will automatically expand to the full text."
|
||||
(serializer serialize-fish-abbreviations)))
|
||||
serialize-fish-abbreviations))
|
||||
|
||||
(define (fish-files-service config)
|
||||
`(("fish/config.fish"
|
||||
@@ -638,134 +652,6 @@ end\n\n")
|
||||
(description "\
|
||||
Install and configure Fish, the friendly interactive shell.")))
|
||||
|
||||
|
||||
;;;
|
||||
;;; Readline.
|
||||
;;;
|
||||
|
||||
(define (serialize-inputrc-key-bindings field-name val)
|
||||
#~(string-append
|
||||
#$@(map
|
||||
(match-lambda
|
||||
((key . value)
|
||||
#~(string-append #$key ": " #$value "\n")))
|
||||
val)))
|
||||
|
||||
(define (serialize-inputrc-variables field-name val)
|
||||
#~(string-append
|
||||
#$@(map
|
||||
(match-lambda
|
||||
((key . #f)
|
||||
#~(string-append "set " #$key " off\n"))
|
||||
((key . #t)
|
||||
#~(string-append "set " #$key " on\n"))
|
||||
((key . value)
|
||||
#~(string-append "set " #$key " " #$value "\n")))
|
||||
val)))
|
||||
|
||||
(define (serialize-inputrc-conditional-constructs field-name val)
|
||||
#~(string-append
|
||||
#$@(map
|
||||
(match-lambda
|
||||
(("$endif" . _)
|
||||
"$endif\n")
|
||||
(("$include" . value)
|
||||
#~(string-append "$include " #$value "\n"))
|
||||
;; TODO: key can only be "$if" or "$else".
|
||||
((key . value)
|
||||
#~(string-append #$key "\n"
|
||||
#$(serialize-configuration
|
||||
value
|
||||
home-inputrc-configuration-fields))))
|
||||
val)))
|
||||
|
||||
(define (serialize-inputrc-extra-content field-name value)
|
||||
#~(if (string=? #$value "") "" (string-append #$value "\n")))
|
||||
|
||||
(define-configuration home-inputrc-configuration
|
||||
(key-bindings
|
||||
(alist '())
|
||||
"Association list of readline key bindings to be added to the
|
||||
@code{~/.inputrc} file. This is where code like this:
|
||||
|
||||
@lisp
|
||||
'((\"Control-l\" . \"clear-screen\"))
|
||||
@end lisp
|
||||
|
||||
turns into
|
||||
|
||||
@example
|
||||
Control-l: clear-screen
|
||||
@end example"
|
||||
(serializer serialize-inputrc-key-bindings))
|
||||
(variables
|
||||
(alist '())
|
||||
"Association list of readline variables to set. This is where configuration
|
||||
options like this:
|
||||
|
||||
@lisp
|
||||
'((\"bell-style\" . \"visible\")
|
||||
(\"colored-completion-prefix\" . #t))
|
||||
@end lisp
|
||||
|
||||
turns into
|
||||
|
||||
@example
|
||||
set bell-style visible
|
||||
set colored-completion-prefix on
|
||||
@end example"
|
||||
(serializer serialize-inputrc-variables))
|
||||
(conditional-constructs
|
||||
(alist '())
|
||||
"Association list of conditionals to add to the initialization file. This
|
||||
includes @command{$if}, @command{else}, @command{endif} and @command{include}
|
||||
and they receive a value of another @command{home-inputrc-configuration}.
|
||||
|
||||
@lisp
|
||||
(conditional-constructs
|
||||
`((\"$if mode=vi\" .
|
||||
,(home-inputrc-configuration
|
||||
(variables
|
||||
`((\"show-mode-in-prompt\" . #t)))))
|
||||
(\"$else\" .
|
||||
,(home-inputrc-configuration
|
||||
(key-bindings
|
||||
`((\"Control-l\" . \"clear-screen\")))))
|
||||
(\"$endif\" . #t)))
|
||||
@end lisp
|
||||
|
||||
turns into
|
||||
|
||||
@example
|
||||
$if mode=vi
|
||||
set show-mode-in-prompt on
|
||||
$else
|
||||
Control-l: clear-screen
|
||||
$endif
|
||||
@end example"
|
||||
(serializer serialize-inputrc-conditional-constructs))
|
||||
(extra-content
|
||||
(string "")
|
||||
"Extra content appended as-is to the configuration file. Run @command{man
|
||||
readline} for more information about all the configuration options."
|
||||
(serializer serialize-inputrc-extra-content)))
|
||||
|
||||
(define (home-inputrc-files config)
|
||||
(list
|
||||
`(".inputrc"
|
||||
,(mixed-text-file "inputrc"
|
||||
(serialize-configuration
|
||||
config
|
||||
home-inputrc-configuration-fields)))))
|
||||
|
||||
(define home-inputrc-service-type
|
||||
(service-type (name 'inputrc)
|
||||
(extensions
|
||||
(list (service-extension home-files-service-type
|
||||
home-inputrc-files)))
|
||||
(default-value (home-inputrc-configuration))
|
||||
(description "Configure readline in @code{.inputrc}.")))
|
||||
|
||||
|
||||
(define (generate-home-shell-profile-documentation)
|
||||
(generate-documentation
|
||||
|
||||
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2021, 2023 Andrew Tropin <andrew@trop.in>
|
||||
;;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
|
||||
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
@@ -52,7 +52,7 @@
|
||||
home-shepherd-configuration make-home-shepherd-configuration
|
||||
home-shepherd-configuration?
|
||||
(shepherd home-shepherd-configuration-shepherd
|
||||
(default shepherd-0.10)) ; package
|
||||
(default shepherd-0.9)) ; package
|
||||
(auto-start? home-shepherd-configuration-auto-start?
|
||||
(default #t))
|
||||
(daemonize? home-shepherd-configuration-daemonize?
|
||||
@@ -108,10 +108,9 @@ as shepherd package."
|
||||
(or (getenv "XDG_RUNTIME_DIR")
|
||||
(format #f "/run/user/~a" (getuid)))
|
||||
"/shepherd/socket"))
|
||||
(let* ((state-dir (or (getenv "XDG_STATE_HOME")
|
||||
(format #f "~a/.local/state"
|
||||
(getenv "HOME"))))
|
||||
(log-dir (string-append state-dir "/log")))
|
||||
(let ((log-dir (or (getenv "XDG_LOG_HOME")
|
||||
(format #f "~a/.local/var/log"
|
||||
(getenv "HOME")))))
|
||||
;; TODO: Remove it, 0.9.2 creates it automatically?
|
||||
((@ (guix build utils) mkdir-p) log-dir)
|
||||
(system*
|
||||
@@ -141,7 +140,7 @@ as shepherd package."
|
||||
(define (shepherd-xdg-configuration-files config)
|
||||
`(("shepherd/init.scm" ,(home-shepherd-configuration-file config))))
|
||||
|
||||
(define home-shepherd-service-type
|
||||
(define-public home-shepherd-service-type
|
||||
(service-type (name 'home-shepherd)
|
||||
(extensions
|
||||
(list (service-extension
|
||||
@@ -168,6 +167,4 @@ as shepherd package."
|
||||
(default-value (home-shepherd-configuration))
|
||||
(description "Configure and install userland Shepherd.")))
|
||||
|
||||
(define-service-type-mapping
|
||||
shepherd-root-service-type => home-shepherd-service-type)
|
||||
|
||||
|
||||
@@ -1,151 +0,0 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2023 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu home services sound)
|
||||
#:use-module (gnu home services)
|
||||
#:use-module (gnu home services shepherd)
|
||||
#:use-module (guix records)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (ice-9 match)
|
||||
#:export (home-pulseaudio-rtp-sink-service-type
|
||||
home-pulseaudio-rtp-source-service-type
|
||||
%pulseaudio-rtp-multicast-address))
|
||||
|
||||
|
||||
;;;
|
||||
;;; PulseAudio support.
|
||||
;;;
|
||||
|
||||
(define (with-pulseaudio-connection sock exp)
|
||||
;; Wrap EXP in an expression where SOCK is bound to a socket connected to
|
||||
;; the user's PulseAudio command-line interface socket.
|
||||
#~(let* ((#$sock (socket AF_UNIX SOCK_STREAM 0))
|
||||
(pulse-user-file
|
||||
(lambda (name)
|
||||
(string-append "/run/user/" (number->string (getuid))
|
||||
"/pulse/" name)))
|
||||
(file (pulse-user-file "cli")))
|
||||
(let loop ((tries 0))
|
||||
(catch #t
|
||||
(lambda ()
|
||||
(connect #$sock AF_UNIX file)
|
||||
(let ((result #$exp))
|
||||
(close-port #$sock)
|
||||
result))
|
||||
(lambda (key . args)
|
||||
(if (and (eq? key 'system-error)
|
||||
(= ENOENT (system-error-errno (cons key args)))
|
||||
(< tries 3))
|
||||
;; The CLI socket doesn't exist yet, so send pulseaudio
|
||||
;; SIGUSR2 so that it creates it and listens to it.
|
||||
(let ((pid (call-with-input-file (pulse-user-file "pid")
|
||||
read)))
|
||||
(when (and (integer? pid) (> pid 1))
|
||||
(kill pid SIGUSR2))
|
||||
((@ (fibers) sleep) 1)
|
||||
(loop (+ tries 1)))
|
||||
(begin
|
||||
(close-port #$sock)
|
||||
(apply throw key args))))))))
|
||||
|
||||
(define %pulseaudio-rtp-multicast-address
|
||||
;; Default address used by 'module-rtp-sink' and 'module-rtp-recv'. This is
|
||||
;; a multicast address, for the Session Announcement Protocol (SAP) and the
|
||||
;; Session Description Protocol (SDP).
|
||||
"224.0.0.56")
|
||||
|
||||
(define (pulseaudio-rtp-sink-shepherd-services destination-ip)
|
||||
(list (shepherd-service
|
||||
(provision '(pulseaudio-rtp-sink))
|
||||
(start
|
||||
#~(lambda* (#:optional (destination-ip #$destination-ip))
|
||||
#$(with-pulseaudio-connection
|
||||
#~sock
|
||||
#~(begin
|
||||
(display "\
|
||||
load-module module-null-sink \
|
||||
sink_name=rtp sink_properties=\"device.description='RTP network output'\"\n"
|
||||
sock)
|
||||
(display (string-append "\
|
||||
load-module module-rtp-send source=rtp.monitor"
|
||||
(if destination-ip
|
||||
(string-append
|
||||
" destination_ip="
|
||||
destination-ip)
|
||||
"")
|
||||
"\n")
|
||||
sock)
|
||||
#t))))
|
||||
(stop
|
||||
#~(lambda (_)
|
||||
#$(with-pulseaudio-connection
|
||||
#~sock
|
||||
#~(begin
|
||||
(display "unload-module module-rtp-send\n"
|
||||
sock)
|
||||
(display "unload-module module-null-sink\n"
|
||||
sock)
|
||||
#f))))
|
||||
(auto-start? #f))))
|
||||
|
||||
(define home-pulseaudio-rtp-sink-service-type
|
||||
(service-type
|
||||
(name 'pulseaudio-rtp-sink)
|
||||
(extensions
|
||||
(list (service-extension home-shepherd-service-type
|
||||
pulseaudio-rtp-sink-shepherd-services)))
|
||||
(description
|
||||
"Define a PulseAudio sink to broadcast audio output over RTP, which can
|
||||
then by played by another PulseAudio instance.")
|
||||
|
||||
;; By default, send to the SAP multicast address, 224.0.0.56, which can be
|
||||
;; network-intensive.
|
||||
(default-value %pulseaudio-rtp-multicast-address)))
|
||||
|
||||
(define (pulseaudio-rtp-source-shepherd-services source-ip)
|
||||
(list (shepherd-service
|
||||
(provision '(pulseaudio-rtp-source))
|
||||
(start
|
||||
#~(lambda* (#:optional (source-ip #$source-ip))
|
||||
#$(with-pulseaudio-connection
|
||||
#~sock
|
||||
#~(begin
|
||||
(format sock "\
|
||||
load-module module-rtp-recv sap_address=~a\n" source-ip)
|
||||
#t))))
|
||||
(stop
|
||||
#~(lambda (_)
|
||||
#$(with-pulseaudio-connection
|
||||
#~sock
|
||||
#~(begin
|
||||
(display "unload-module module-rtp-recv\n"
|
||||
sock)
|
||||
#f))))
|
||||
(auto-start? #f))))
|
||||
|
||||
(define home-pulseaudio-rtp-source-service-type
|
||||
(service-type
|
||||
(name 'pulseaudio-rtp-source)
|
||||
(extensions
|
||||
(list (service-extension home-shepherd-service-type
|
||||
pulseaudio-rtp-source-shepherd-services)))
|
||||
(description
|
||||
"Define a PulseAudio source to receive audio broadcasted over RTP by
|
||||
another PulseAudio instance.")
|
||||
(default-value %pulseaudio-rtp-multicast-address)))
|
||||
+31
-238
@@ -1,8 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2022 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2023 Nicolas Graves <ngraves@ngraves.fr>
|
||||
;;; Copyright © 2023 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -22,41 +19,26 @@
|
||||
(define-module (gnu home services ssh)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (guix records)
|
||||
#:use-module (guix deprecation)
|
||||
#:use-module (guix diagnostics)
|
||||
#:use-module (guix i18n)
|
||||
#:use-module (gnu services)
|
||||
#:use-module (gnu services configuration)
|
||||
#:use-module (guix modules)
|
||||
#:use-module (gnu home services)
|
||||
#:use-module (gnu home services shepherd)
|
||||
#:use-module ((gnu home services utils)
|
||||
#:select (object->camel-case-string))
|
||||
#:autoload (gnu packages base) (glibc-utf8-locales)
|
||||
#:use-module (gnu packages ssh)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-9)
|
||||
#:use-module (srfi srfi-9 gnu)
|
||||
#:use-module (srfi srfi-34)
|
||||
#:use-module (srfi srfi-35)
|
||||
#:use-module (ice-9 match)
|
||||
#:autoload (ice-9 regex) (string-match match:substring)
|
||||
#:export (home-openssh-configuration
|
||||
home-openssh-configuration-authorized-keys
|
||||
home-openssh-configuration-known-hosts
|
||||
home-openssh-configuration-hosts
|
||||
home-openssh-configuration-add-keys-to-agent
|
||||
home-openssh-configuration?
|
||||
|
||||
home-ssh-agent-configuration
|
||||
home-ssh-agent-openssh
|
||||
home-ssh-agent-socket-directory
|
||||
home-ssh-agent-extra-options
|
||||
home-ssh-agent-configuration?
|
||||
|
||||
openssh-host
|
||||
openssh-host-host-name
|
||||
openssh-host-match-criteria
|
||||
openssh-host-identity-file
|
||||
openssh-host-name
|
||||
openssh-host-port
|
||||
@@ -69,15 +51,8 @@
|
||||
openssh-host-host-key-algorithms
|
||||
openssh-host-accepted-key-types
|
||||
openssh-host-extra-content
|
||||
proxy-jump
|
||||
proxy-jump-host-name
|
||||
proxy-jump-port
|
||||
proxy-jump-user
|
||||
proxy-command
|
||||
proxy-command->string
|
||||
|
||||
home-openssh-service-type
|
||||
home-ssh-agent-service-type))
|
||||
home-openssh-service-type))
|
||||
|
||||
(define (serialize-field-name name)
|
||||
(match name
|
||||
@@ -104,11 +79,7 @@
|
||||
(cond ((= family AF_INET) "inet")
|
||||
((= family AF_INET6) "inet6")
|
||||
;; The 'else' branch is unreachable.
|
||||
(else
|
||||
(raise
|
||||
(formatted-message
|
||||
(G_ "~s: invalid address family value")
|
||||
family))))
|
||||
(else (raise (condition (&error)))))
|
||||
"\n")
|
||||
""))
|
||||
|
||||
@@ -119,8 +90,6 @@
|
||||
(string-append " " (serialize-field-name field) " "
|
||||
(number->string value) "\n"))
|
||||
|
||||
(define-maybe boolean)
|
||||
|
||||
(define (serialize-boolean field value)
|
||||
(string-append " " (serialize-field-name field) " "
|
||||
(if value "yes" "no") "\n"))
|
||||
@@ -140,91 +109,13 @@
|
||||
|
||||
(define-maybe string-list)
|
||||
|
||||
(define-record-type <proxy-command>
|
||||
(proxy-command command)
|
||||
proxy-command?
|
||||
(command proxy-command->string))
|
||||
|
||||
(set-record-type-printer! <proxy-command>
|
||||
(lambda (obj port)
|
||||
(format port "#<proxy-command ~s>" (proxy-command->string obj))))
|
||||
|
||||
(define-configuration/no-serialization proxy-jump
|
||||
(user
|
||||
maybe-string
|
||||
"User name on the remote host.")
|
||||
(host-name
|
||||
(string)
|
||||
"Host name---e.g., @code{foo.example.org} or @code{192.168.1.2}.")
|
||||
(port
|
||||
maybe-natural-number
|
||||
"TCP port number to connect to."))
|
||||
|
||||
(define (proxy-jump->string proxy-jump)
|
||||
(match-record proxy-jump <proxy-jump>
|
||||
(host-name user port)
|
||||
(string-append
|
||||
(if (maybe-value-set? user) (string-append user "@") "")
|
||||
host-name
|
||||
(if (maybe-value-set? port) (string-append ":" (number->string port)) ""))))
|
||||
|
||||
(define (proxy-command-or-jump-list? x)
|
||||
(or (proxy-command? x)
|
||||
(and (list? x)
|
||||
(every proxy-jump? x))))
|
||||
|
||||
(define (serialize-proxy-command-or-jump-list field value)
|
||||
(if (proxy-command? value)
|
||||
(serialize-string 'proxy-command (proxy-command->string value))
|
||||
(serialize-string-list 'proxy-jump (map proxy-jump->string value))))
|
||||
|
||||
(define-maybe proxy-command-or-jump-list)
|
||||
|
||||
(define (sanitize-proxy-command properties)
|
||||
(lambda (value)
|
||||
(when (maybe-value-set? value)
|
||||
(warn-about-deprecation 'proxy-command properties #:replacement 'proxy))
|
||||
(unless (maybe-string? value)
|
||||
(configuration-field-error (source-properties->location properties) 'proxy-command value))
|
||||
value))
|
||||
|
||||
(define ssh-match-keywords
|
||||
'(canonical final exec host originalhost user localuser))
|
||||
|
||||
(define (match-criteria? str)
|
||||
;; Rule out the case of "all" keyword.
|
||||
(if (member str '("all"
|
||||
"canonical all"
|
||||
"final all"))
|
||||
#t
|
||||
(let* ((first (string-take str (string-index str #\ )))
|
||||
(keyword (string->symbol (if (string-prefix? "!" first)
|
||||
(string-drop first 1)
|
||||
first))))
|
||||
(memq keyword ssh-match-keywords))))
|
||||
|
||||
(define (serialize-match-criteria _ value)
|
||||
(string-append "Match " value "\n"))
|
||||
|
||||
(define-maybe match-criteria)
|
||||
|
||||
(define-configuration openssh-host
|
||||
(name
|
||||
maybe-string
|
||||
"Name of this host declaration. A @code{openssh-host} must define only
|
||||
@code{name} or @code{match-criteria}. Use host-name @code{\"*\"} for
|
||||
top-level options.")
|
||||
(string)
|
||||
"Name of this host declaration.")
|
||||
(host-name
|
||||
maybe-string
|
||||
"Host name---e.g., @code{\"foo.example.org\"} or @code{\"192.168.1.2\"}.")
|
||||
(match-criteria
|
||||
maybe-match-criteria
|
||||
"When specified, this string denotes the set of hosts to which the entry
|
||||
applies, superseding the @code{host-name} field. Its first element must be
|
||||
all or one of @code{ssh-match-keywords}. The rest of the elements are
|
||||
arguments for the keyword, or other criteria. A @code{openssh-host} must
|
||||
define only @code{name} or @code{match-criteria}. Other host configuration
|
||||
options will apply to all hosts matching @code{match-criteria}.")
|
||||
(address-family
|
||||
maybe-address-family
|
||||
"Address family to use when connecting to this host: one of
|
||||
@@ -241,31 +132,25 @@ Additionally, the field can be left unset to allow any address family.")
|
||||
maybe-string
|
||||
"User name on the remote host.")
|
||||
(forward-x11?
|
||||
maybe-boolean
|
||||
(boolean #f)
|
||||
"Whether to forward remote client connections to the local X11 graphical
|
||||
display.")
|
||||
(forward-x11-trusted?
|
||||
maybe-boolean
|
||||
(boolean #f)
|
||||
"Whether remote X11 clients have full access to the original X11 graphical
|
||||
display.")
|
||||
(forward-agent?
|
||||
maybe-boolean
|
||||
(boolean #f)
|
||||
"Whether the authentication agent (if any) is forwarded to the remote
|
||||
machine.")
|
||||
(compression?
|
||||
maybe-boolean
|
||||
(boolean #f)
|
||||
"Whether to compress data in transit.")
|
||||
(proxy-command
|
||||
maybe-string
|
||||
"The command to use to connect to the server. As an example, a command
|
||||
to connect via an HTTP proxy at 192.0.2.0 would be: @code{\"nc -X
|
||||
connect -x 192.0.2.0:8080 %h %p\"}. Using 'proxy-command' is deprecated, use
|
||||
'proxy' instead."
|
||||
(sanitizer (sanitize-proxy-command (current-source-location))))
|
||||
(proxy
|
||||
maybe-proxy-command-or-jump-list
|
||||
"The command to use to connect to the server or a list of SSH hosts to jump
|
||||
through before connecting to the server.")
|
||||
connect -x 192.0.2.0:8080 %h %p\"}.")
|
||||
(host-key-algorithms
|
||||
maybe-string-list
|
||||
"The list of accepted host key algorithms---e.g.,
|
||||
@@ -279,72 +164,33 @@ through before connecting to the server.")
|
||||
@file{~/.ssh/config}."))
|
||||
|
||||
(define (serialize-openssh-host config)
|
||||
(define (openssh-host-name-or-match-field? field)
|
||||
(or (eq? (configuration-field-name field) 'name)
|
||||
(eq? (configuration-field-name field) 'match-criteria)))
|
||||
(define (openssh-host-name-field? field)
|
||||
(eq? (configuration-field-name field) 'name))
|
||||
|
||||
(string-append
|
||||
(if (maybe-value-set? (openssh-host-name config))
|
||||
(if (maybe-value-set? (openssh-host-match-criteria config))
|
||||
(raise
|
||||
(formatted-message
|
||||
(G_ "define either 'name' or 'match-criteria', not both")))
|
||||
(string-append "Host " (openssh-host-name config) "\n"))
|
||||
(if (maybe-value-set? (openssh-host-match-criteria config))
|
||||
(serialize-match-criteria #t (openssh-host-match-criteria config))
|
||||
(raise
|
||||
(formatted-message
|
||||
(G_ "define either 'name' or 'match-criteria' once")))))
|
||||
"Host " (openssh-host-name config) "\n"
|
||||
(string-concatenate
|
||||
(map (lambda (field)
|
||||
((configuration-field-serializer field)
|
||||
(configuration-field-name field)
|
||||
((configuration-field-getter field) config)))
|
||||
(remove openssh-host-name-or-match-field?
|
||||
(remove openssh-host-name-field?
|
||||
openssh-host-fields)))))
|
||||
|
||||
(define-record-type* <home-openssh-configuration>
|
||||
home-openssh-configuration make-home-openssh-configuration
|
||||
home-openssh-configuration?
|
||||
(authorized-keys home-openssh-configuration-authorized-keys ;list of file-like
|
||||
(default #f))
|
||||
(known-hosts home-openssh-configuration-known-hosts ;unspec | list of file-like
|
||||
(default *unspecified*))
|
||||
(hosts home-openssh-configuration-hosts ;list of <openssh-host>
|
||||
(default '()))
|
||||
(add-keys-to-agent home-openssh-configuration-add-keys-to-agent ;string with limited values
|
||||
(default "no")))
|
||||
|
||||
(define (serialize-add-keys-to-agent value)
|
||||
(define (valid-time-string? str)
|
||||
(and (> (string-length str) 0)
|
||||
(equal?
|
||||
str
|
||||
(match:substring
|
||||
(string-match "\
|
||||
[0-9]+|([0-9]+[Ww])?([0-9]+[Dd])?([0-9]+[Hh])?([0-9]+[Mm])?([0-9]+[Ss])?"
|
||||
str)))))
|
||||
|
||||
(string-append "AddKeysToAgent "
|
||||
(cond ((member value '("yes" "no" "confirm" "ask")) value)
|
||||
((valid-time-string? value) value)
|
||||
((and (string-prefix? "confirm" value)
|
||||
(valid-time-string?
|
||||
(cdr (string-split value #\ )))) value)
|
||||
;; The 'else' branch is unreachable.
|
||||
(else
|
||||
(raise
|
||||
(formatted-message
|
||||
(G_ "~s: invalid 'add-keys-to-agent' value")
|
||||
value))))))
|
||||
(authorized-keys home-openssh-configuration-authorized-keys ;list of file-like
|
||||
(default '()))
|
||||
(known-hosts home-openssh-configuration-known-hosts ;unspec | list of file-like
|
||||
(default *unspecified*))
|
||||
(hosts home-openssh-configuration-hosts ;list of <openssh-host>
|
||||
(default '())))
|
||||
|
||||
(define (openssh-configuration->string config)
|
||||
(string-join
|
||||
(cons* (serialize-add-keys-to-agent
|
||||
(home-openssh-configuration-add-keys-to-agent config))
|
||||
(map serialize-openssh-host
|
||||
(home-openssh-configuration-hosts config)))
|
||||
"\n"))
|
||||
(string-join (map serialize-openssh-host
|
||||
(home-openssh-configuration-hosts config))
|
||||
"\n"))
|
||||
|
||||
(define* (file-join name files #:optional (delimiter " "))
|
||||
"Return a file in the store called @var{name} that is the concatenation
|
||||
@@ -371,21 +217,19 @@ inserted after each of them."
|
||||
'#$files)))))))
|
||||
|
||||
(define (openssh-configuration-files config)
|
||||
(let* ((ssh-config (plain-file "ssh.conf"
|
||||
(openssh-configuration->string config)))
|
||||
(known-hosts (home-openssh-configuration-known-hosts config))
|
||||
(authorized-keys (home-openssh-configuration-authorized-keys config))
|
||||
(authorized-keys (and
|
||||
authorized-keys
|
||||
(file-join "authorized_keys" authorized-keys "\n"))))
|
||||
`(,@(if authorized-keys
|
||||
`((".ssh/authorized_keys" ,authorized-keys))
|
||||
'())
|
||||
(let ((config (plain-file "ssh.conf"
|
||||
(openssh-configuration->string config)))
|
||||
(known-hosts (home-openssh-configuration-known-hosts config))
|
||||
(authorized-keys (file-join
|
||||
"authorized_keys"
|
||||
(home-openssh-configuration-authorized-keys config)
|
||||
"\n")))
|
||||
`((".ssh/authorized_keys" ,authorized-keys)
|
||||
,@(if (unspecified? known-hosts)
|
||||
'()
|
||||
`((".ssh/known_hosts"
|
||||
,(file-join "known_hosts" known-hosts "\n"))))
|
||||
(".ssh/config" ,ssh-config))))
|
||||
(".ssh/config" ,config))))
|
||||
|
||||
(define openssh-activation
|
||||
(with-imported-modules (source-module-closure
|
||||
@@ -410,54 +254,3 @@ inserted after each of them."
|
||||
by providing a @file{~/.ssh/config} file, which is honored by the OpenSSH
|
||||
client,@command{ssh}, and by other tools such as @command{guix deploy}.")
|
||||
(default-value (home-openssh-configuration))))
|
||||
|
||||
|
||||
;;;
|
||||
;;; Ssh-agent.
|
||||
;;;
|
||||
(define-record-type* <home-ssh-agent-configuration>
|
||||
home-ssh-agent-configuration make-home-ssh-agent-configuration
|
||||
home-ssh-agent-configuration?
|
||||
(openssh home-ssh-agent-openssh ;file-like
|
||||
(default openssh))
|
||||
(socket-directory home-ssh-agent-socket-directory ;string
|
||||
(default #~(string-append %user-runtime-dir "/ssh-agent")))
|
||||
(extra-options home-ssh-agent-extra-options ;list of string
|
||||
(default '())))
|
||||
|
||||
(define (home-ssh-agent-services config)
|
||||
"Return a <shepherd-service> for an ssh-agent with CONFIG."
|
||||
(match-record config <home-ssh-agent-configuration>
|
||||
(openssh socket-directory extra-options)
|
||||
(let* ((ssh-agent (file-append openssh "/bin/ssh-agent"))
|
||||
(socket-file #~(string-append #$socket-directory "/socket"))
|
||||
(command #~`(#$ssh-agent
|
||||
"-D" "-a" ,#$socket-file
|
||||
#$@extra-options))
|
||||
(log-file #~(string-append %user-log-dir "/ssh-agent.log")))
|
||||
(list (shepherd-service
|
||||
(documentation "Run the ssh-agent.")
|
||||
(provision '(ssh-agent))
|
||||
(modules '((shepherd support))) ;for '%user-runtime-dir', etc.
|
||||
(start #~(lambda _
|
||||
(unless (file-exists? #$socket-directory)
|
||||
(mkdir-p #$socket-directory)
|
||||
(chmod #$socket-directory #o700))
|
||||
(fork+exec-command #$command #:log-file #$log-file)))
|
||||
(stop #~(make-kill-destructor)))))))
|
||||
|
||||
(define (home-ssh-agent-environment-variables config)
|
||||
'(("SSH_AUTH_SOCK"
|
||||
. "${SSH_AUTH_SOCK-${XDG_RUNTIME_DIR-$HOME/.cache}/ssh-agent/socket}")))
|
||||
|
||||
(define home-ssh-agent-service-type
|
||||
(service-type
|
||||
(name 'home-ssh-agent)
|
||||
(default-value (home-ssh-agent-configuration))
|
||||
(extensions
|
||||
(list (service-extension home-shepherd-service-type
|
||||
home-ssh-agent-services)
|
||||
(service-extension home-environment-variables-service-type
|
||||
home-ssh-agent-environment-variables)))
|
||||
(description
|
||||
"Install and configure @command{ssh-agent} as a Shepherd service.")))
|
||||
|
||||
@@ -1,32 +0,0 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2023 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu home services syncthing)
|
||||
#:use-module (gnu services)
|
||||
#:use-module (gnu home services)
|
||||
#:use-module (gnu services syncthing)
|
||||
;; For the 'home-shepherd-service-type' mapping.
|
||||
#:use-module (gnu home services shepherd)
|
||||
#:export (home-syncthing-service-type)
|
||||
#:re-export (syncthing-configuration
|
||||
syncthing-configuration?))
|
||||
|
||||
(define home-syncthing-service-type
|
||||
(service-type
|
||||
(inherit (system->home-service-type syncthing-service-type))
|
||||
(default-value (for-home (syncthing-configuration)))))
|
||||
+32
-69
@@ -1,7 +1,6 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2021, 2022 Andrew Tropin <andrew@trop.in>
|
||||
;;; Copyright © 2021 Andrew Tropin <andrew@trop.in>
|
||||
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
|
||||
;;; Copyright © 2023 Bruno Victal <mirai@makinata.eu>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -23,7 +22,6 @@
|
||||
#:use-module (gnu home services)
|
||||
#:use-module (gnu packages freedesktop)
|
||||
#:use-module (gnu home services utils)
|
||||
#:use-module (guix deprecation)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (guix modules)
|
||||
#:use-module (guix records)
|
||||
@@ -37,24 +35,10 @@
|
||||
#:export (home-xdg-base-directories-service-type
|
||||
home-xdg-base-directories-configuration
|
||||
home-xdg-base-directories-configuration?
|
||||
home-xdg-base-directories-configuration-cache-home
|
||||
home-xdg-base-directories-configuration-config-home
|
||||
home-xdg-base-directories-configuration-data-home
|
||||
home-xdg-base-directories-configuration-state-home
|
||||
home-xdg-base-directories-configuration-log-home ; deprecated
|
||||
home-xdg-base-directories-configuration-runtime-dir
|
||||
|
||||
home-xdg-user-directories-service-type
|
||||
home-xdg-user-directories-configuration
|
||||
home-xdg-user-directories-configuration?
|
||||
home-xdg-user-directories-configuration-desktop
|
||||
home-xdg-user-directories-configuration-documents
|
||||
home-xdg-user-directories-configuration-download
|
||||
home-xdg-user-directories-configuration-music
|
||||
home-xdg-user-directories-configuration-pictures
|
||||
home-xdg-user-directories-configuration-publicshare
|
||||
home-xdg-user-directories-configuration-templates
|
||||
home-xdg-user-directories-configuration-videos
|
||||
|
||||
xdg-desktop-action
|
||||
xdg-desktop-entry
|
||||
@@ -79,7 +63,6 @@
|
||||
|
||||
(define (serialize-path field-name val) "")
|
||||
(define path? string?)
|
||||
(define-maybe path)
|
||||
|
||||
(define-configuration home-xdg-base-directories-configuration
|
||||
(cache-home
|
||||
@@ -100,23 +83,18 @@ read-only shared data, analogus to @file{/usr/share}, but for user.")
|
||||
(path "${XDG_RUNTIME_DIR:-/run/user/$UID}")
|
||||
"Base directory for programs to store user-specific runtime files,
|
||||
like sockets.")
|
||||
;; TODO: deprecated field, use $XDG_STATE_HOME(/log) instead.
|
||||
(log-home
|
||||
maybe-path
|
||||
(path "$HOME/.local/var/log")
|
||||
"Base directory for programs to store log files, analogus to
|
||||
@file{/var/log}, but for user. It is not a part of XDG Base Directory
|
||||
Specification, but helps to make implementation of home services more
|
||||
consistent."
|
||||
(lambda (field-name val)
|
||||
(when (maybe-value-set? val)
|
||||
(warn-about-deprecation field-name #f #:replacement 'state-home))
|
||||
(serialize-path field-name val)))
|
||||
consistent.")
|
||||
(state-home
|
||||
(path "$HOME/.local/state")
|
||||
"Base directory for programs to store state data that should persist
|
||||
between (application) restarts, such as logs, but are not important or
|
||||
portable enough to the user to warrant storing them in
|
||||
@env{XDG_DATA_HOME}."))
|
||||
(path "$HOME/.local/var/lib")
|
||||
"Base directory for programs to store state files, like databases,
|
||||
analogus to @file{/var/lib}, but for user. It is not a part of XDG
|
||||
Base Directory Specification, but helps to make implementation of home
|
||||
services more consistent."))
|
||||
|
||||
(define (home-xdg-base-directories-environment-variables-service config)
|
||||
(map
|
||||
@@ -125,41 +103,25 @@ portable enough to the user to warrant storing them in
|
||||
#f "XDG_~a"
|
||||
(object->snake-case-string (configuration-field-name field) 'upper))
|
||||
((configuration-field-getter field) config)))
|
||||
;; XXX: deprecated field, remove later
|
||||
(if (maybe-value-set?
|
||||
(home-xdg-base-directories-configuration-log-home config))
|
||||
home-xdg-base-directories-configuration-fields
|
||||
(filter-configuration-fields
|
||||
home-xdg-base-directories-configuration-fields
|
||||
'(log-home) #t))))
|
||||
home-xdg-base-directories-configuration-fields))
|
||||
|
||||
(define (ensure-xdg-base-dirs-on-activation config)
|
||||
(with-imported-modules '((guix build utils))
|
||||
#~(begin
|
||||
(use-modules (guix build utils))
|
||||
(map (lambda (xdg-base-dir-variable)
|
||||
(mkdir-p
|
||||
(getenv
|
||||
xdg-base-dir-variable)))
|
||||
'#$(filter-map
|
||||
(lambda (field)
|
||||
(let ((variable
|
||||
(string-append
|
||||
"XDG_"
|
||||
(object->snake-case-string
|
||||
(configuration-field-name field) 'upper))))
|
||||
;; XDG_RUNTIME_DIR shouldn't be created during activation
|
||||
;; and will be provided by elogind or other service.
|
||||
(and (not (string=? "XDG_RUNTIME_DIR" variable))
|
||||
variable)))
|
||||
;; XXX: deprecated field, remove later
|
||||
(if (maybe-value-set?
|
||||
(home-xdg-base-directories-configuration-log-home
|
||||
config))
|
||||
home-xdg-base-directories-configuration-fields
|
||||
(filter-configuration-fields
|
||||
home-xdg-base-directories-configuration-fields
|
||||
'(log-home) #t)))))))
|
||||
#~(map (lambda (xdg-base-dir-variable)
|
||||
((@ (guix build utils) mkdir-p)
|
||||
(getenv
|
||||
xdg-base-dir-variable)))
|
||||
'#$(filter-map
|
||||
(lambda (field)
|
||||
(let ((variable
|
||||
(string-append
|
||||
"XDG_"
|
||||
(object->snake-case-string
|
||||
(configuration-field-name field) 'upper))))
|
||||
;; XDG_RUNTIME_DIR shouldn't be created during activation
|
||||
;; and will be provided by elogind or other service.
|
||||
(and (not (string=? "XDG_RUNTIME_DIR" variable))
|
||||
variable)))
|
||||
home-xdg-base-directories-configuration-fields)))
|
||||
|
||||
(define (last-extension-or-cfg config extensions)
|
||||
"Picks configuration value from last provided extension. If there
|
||||
@@ -178,10 +140,13 @@ are no extensions use configuration instead."
|
||||
(default-value (home-xdg-base-directories-configuration))
|
||||
(compose identity)
|
||||
(extend last-extension-or-cfg)
|
||||
(description "Configure XDG base directories. The
|
||||
services of this service-type is instantiated by default, to provide
|
||||
non-default value, extend the service-type (using @code{simple-service}
|
||||
for example).")))
|
||||
(description "Configure XDG base directories. This
|
||||
service introduces two additional variables @env{XDG_STATE_HOME},
|
||||
@env{XDG_LOG_HOME}. They are not a part of XDG specification, at
|
||||
least yet, but are convenient to have, it improves the consistency
|
||||
between different home services. The services of this service-type is
|
||||
instantiated by default, to provide non-default value, extend the
|
||||
service-type (using @code{simple-service} for example).")))
|
||||
|
||||
(define (generate-home-xdg-base-directories-documentation)
|
||||
(generate-documentation
|
||||
@@ -266,8 +231,6 @@ pre-populated content.")
|
||||
home-activation-service-type
|
||||
home-xdg-user-directories-activation-service)))
|
||||
(default-value (home-xdg-user-directories-configuration))
|
||||
(compose identity)
|
||||
(extend last-extension-or-cfg)
|
||||
(description "Configure XDG user directories. To
|
||||
disable a directory, point it to the $HOME.")))
|
||||
|
||||
|
||||
@@ -93,10 +93,9 @@ optionally, CODESET."
|
||||
(define (supported-locales->locales supported-locales)
|
||||
"Given SUPPORTED-LOCALES, a file produced by 'glibc-supported-locales',
|
||||
return a list of locales where each locale is an alist."
|
||||
(filter-map (match-lambda
|
||||
(("C.UTF-8" . codeset) #f)
|
||||
((locale . codeset)
|
||||
(locale-string->locale locale codeset)))
|
||||
(map (match-lambda
|
||||
((locale . codeset)
|
||||
(locale-string->locale locale codeset)))
|
||||
(call-with-input-file supported-locales read)))
|
||||
|
||||
|
||||
|
||||
@@ -4,7 +4,6 @@
|
||||
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2021 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2021 Leo Famulari <leo@famulari.name>
|
||||
;;; Copyright © 2023 Denys Nykula <vegan@libre.net.ua>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -24,7 +23,6 @@
|
||||
(define-module (gnu installer services)
|
||||
#:use-module (guix records)
|
||||
#:use-module (guix read-print)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:export (system-service?
|
||||
system-service-name
|
||||
@@ -161,19 +159,6 @@
|
||||
(base (if desktop?
|
||||
'%desktop-services
|
||||
'%base-services))
|
||||
(native-console-font (match (getenv "LANGUAGE")
|
||||
((or "be" "bg" "el" "eo" "kk" "ky"
|
||||
"mk" "mn" "ru" "sr" "tg" "uk")
|
||||
"LatGrkCyr-8x16")
|
||||
(_ #f)))
|
||||
(services (if native-console-font
|
||||
`(modify-services ,base
|
||||
(console-font-service-type
|
||||
config => (map (lambda (tty)
|
||||
(cons (car tty)
|
||||
,native-console-font))
|
||||
config)))
|
||||
base))
|
||||
(service-heading (list (vertical-space 1)
|
||||
(comment (G_ "\
|
||||
;; Below is the list of system services. To search for available
|
||||
@@ -192,7 +177,7 @@
|
||||
%base-packages))))
|
||||
|
||||
,@service-heading
|
||||
(services ,services))
|
||||
(services ,base))
|
||||
`(,@(if (null? packages)
|
||||
'()
|
||||
`(,@package-heading
|
||||
@@ -214,4 +199,4 @@
|
||||
,(comment (G_ "\
|
||||
;; This is the default list of services we
|
||||
;; are appending to.\n"))
|
||||
,services))))))
|
||||
,base))))))
|
||||
|
||||
+148
-249
File diff suppressed because it is too large
Load Diff
+2
-5
@@ -1,6 +1,6 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2019 Jakob L. Kreuze <zerodaysfordays@sdf.org>
|
||||
;;; Copyright © 2020-2023 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2020-2022 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -291,10 +291,7 @@ exist on the machine."
|
||||
if any of the modules needed by 'needed-for-boot' file systems in MACHINE are
|
||||
not available in the initrd."
|
||||
(define file-systems
|
||||
(filter (lambda (file-system)
|
||||
(and (file-system-needed-for-boot? file-system)
|
||||
(not (member (file-system-type file-system)
|
||||
%pseudo-file-system-types))))
|
||||
(filter file-system-needed-for-boot?
|
||||
(operating-system-file-systems (machine-operating-system machine))))
|
||||
|
||||
(define (missing-modules fs)
|
||||
|
||||
+5
-11
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2012-2020, 2022-2023 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2012-2020, 2022 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2013 Mark H Weaver <mhw@netris.org>
|
||||
;;; Copyright © 2014 Eric Bavier <bavier@member.fsf.org>
|
||||
;;; Copyright © 2016, 2017 Alex Kost <alezost@gmail.com>
|
||||
@@ -38,7 +38,6 @@
|
||||
#:use-module (ice-9 vlist)
|
||||
#:use-module (ice-9 match)
|
||||
#:use-module (ice-9 binary-ports)
|
||||
#:autoload (rnrs bytevectors) (bytevector?)
|
||||
#:autoload (system base compile) (compile)
|
||||
#:use-module (srfi srfi-1)
|
||||
#:use-module (srfi srfi-26)
|
||||
@@ -443,15 +442,10 @@ reducing the memory footprint."
|
||||
(lambda (port)
|
||||
;; Store the cache as a '.go' file. This makes loading fast and reduces
|
||||
;; heap usage since some of the static data is directly mmapped.
|
||||
(match (compile `'(,@exp)
|
||||
#:to 'bytecode
|
||||
#:opts '(#:to-file? #t))
|
||||
((? bytevector? bv)
|
||||
(put-bytevector port bv))
|
||||
(proc
|
||||
;; In Guile 3.0.9, the linker can return a procedure instead of a
|
||||
;; bytevector. Adjust to that.
|
||||
(proc port)))))
|
||||
(put-bytevector port
|
||||
(compile `'(,@exp)
|
||||
#:to 'bytecode
|
||||
#:opts '(#:to-file? #t)))))
|
||||
cache-file)
|
||||
|
||||
|
||||
|
||||
+28
-37
@@ -1,7 +1,7 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2014 Marek Benc <merkur32@gmail.com>
|
||||
;;; Copyright © 2016, 2018 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2017, 2023 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2017 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2017 Leo Famulari <leo@famulari.name>
|
||||
;;; Copyright © 2018, 2021 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
|
||||
@@ -25,6 +25,7 @@
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system glib-or-gtk)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages autotools)
|
||||
@@ -40,7 +41,6 @@
|
||||
#:use-module (gnu packages ots)
|
||||
#:use-module (gnu packages popt)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages readline)
|
||||
#:use-module (gnu packages wv)
|
||||
#:use-module (gnu packages xml))
|
||||
@@ -74,14 +74,7 @@
|
||||
"latex " "loadbindings " "mht " "mif " "mswrite " "opendocument "
|
||||
"openwriter " "openxml " "opml " "ots " "paint " "passepartout "
|
||||
"pdb " "pdf " "presentation " "s5 " "sdw " "t602 " "urldict "
|
||||
"wikipedia " "wml " "xslfo")
|
||||
"--enable-introspection"
|
||||
(string-append "--with-gir-dir="
|
||||
(assoc-ref %outputs "out")
|
||||
"/share/gir-1.0")
|
||||
(string-append "--with-typelib-dir="
|
||||
(assoc-ref %outputs "out")
|
||||
"/lib/girepository-1.0"))
|
||||
"wikipedia " "wml " "xslfo"))
|
||||
;; tests fail with: Gtk-CRITICAL **: gtk_settings_get_for_screen:
|
||||
;; assertion 'GDK_IS_SCREEN (screen)' failed
|
||||
;; GLib-GObject-CRITICAL **: g_object_get_qdata:
|
||||
@@ -92,34 +85,32 @@
|
||||
#:make-flags
|
||||
(list "gtk_update_icon_cache=true")))
|
||||
(inputs
|
||||
(list boost
|
||||
enchant
|
||||
fontconfig
|
||||
fribidi
|
||||
glib
|
||||
goffice
|
||||
gtk+
|
||||
libchamplain
|
||||
libglade
|
||||
libgsf
|
||||
libjpeg-turbo
|
||||
libpng
|
||||
(librsvg-for-system)
|
||||
libxml2
|
||||
libxslt
|
||||
ots
|
||||
popt
|
||||
readline
|
||||
telepathy-glib
|
||||
wv
|
||||
zlib))
|
||||
`(("boost" ,boost)
|
||||
("enchant" ,enchant)
|
||||
("fontconfig" ,fontconfig)
|
||||
("fribidi" ,fribidi)
|
||||
("glib" ,glib)
|
||||
("goffice" ,goffice)
|
||||
("gtk+" ,gtk+)
|
||||
("libchamplain" ,libchamplain)
|
||||
("libglade" ,libglade)
|
||||
("libgsf" ,libgsf)
|
||||
("libjpeg" ,libjpeg-turbo)
|
||||
("libpng" ,libpng)
|
||||
("librsvg" ,librsvg)
|
||||
("libxml2" ,libxml2)
|
||||
("libxslt" ,libxslt)
|
||||
("ots" ,ots)
|
||||
("popt" ,popt)
|
||||
("readline" ,readline)
|
||||
("telepathy" ,telepathy-glib)
|
||||
("wv" ,wv)
|
||||
("zlib" ,zlib)))
|
||||
(native-inputs
|
||||
(list gobject-introspection
|
||||
intltool
|
||||
`(,glib "bin")
|
||||
libtool
|
||||
pkg-config
|
||||
python-wrapper))
|
||||
`(("intltool" ,intltool)
|
||||
("glib:bin" ,glib "bin")
|
||||
("libtool" ,libtool)
|
||||
("pkg-config" ,pkg-config)))
|
||||
(home-page "https://www.abisource.com/")
|
||||
(synopsis "Word processing program")
|
||||
|
||||
|
||||
+78
-105
@@ -3,9 +3,8 @@
|
||||
;;; Copyright © 2017 Stefan Reichör <stefan@xsteve.at>
|
||||
;;; Copyright © 2018, 2021, 2022 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2019 Andrew Miloradovsky <andrew@interpretmath.pw>
|
||||
;;; Copyright © 2020, 2023 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2020 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2022 Hunter Jozwiak <hunter.t.joz@gmail.com>
|
||||
;;; Copyright © 2023 Ivan Gankevich <igankevich@capybaramail.xyz>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -24,7 +23,6 @@
|
||||
|
||||
(define-module (gnu packages accessibility)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
@@ -93,56 +91,66 @@ terminals.")
|
||||
(define-public brltty
|
||||
(package
|
||||
(name "brltty")
|
||||
(version "6.6")
|
||||
(version "6.5")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri
|
||||
(string-append "https://brltty.app/archive/brltty-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32 "1z54rin4zhg3294pq47gamzjy2c56zfkl07rx2qy2khlpyczds0k"))))
|
||||
(base32 "1h62xzd5k0aaq2k4v3w93rizxnb8psvkxrlx62wr08ybwpspgp7z"))))
|
||||
(build-system glib-or-gtk-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:tests? #f ; no target
|
||||
;; High parallelism may cause errors such as:
|
||||
;; ranlib: ./libbrlapi_stubs.a: error reading brlapi_stubs.o: file truncated
|
||||
#:parallel-build? #f
|
||||
#:configure-flags
|
||||
#~(list
|
||||
(string-append "--with-libbraille="
|
||||
#$(this-package-input "libbraille"))
|
||||
(string-append "--with-espeak_ng="
|
||||
#$(this-package-input "espeak-ng"))
|
||||
(string-append "--with-espeak="
|
||||
#$(this-package-input "espeak"))
|
||||
(string-append "--with-flite="
|
||||
#$(this-package-input "flite"))
|
||||
;; Required for RUNPATH validation.
|
||||
(string-append "LDFLAGS=-Wl,-rpath=" #$output "/lib"))
|
||||
#:make-flags
|
||||
#~(list
|
||||
(string-append "JAVA_JAR_DIR=" #$output)
|
||||
(string-append "JAVA_JNI_DIR=" #$output)
|
||||
(string-append "OCAML_DESTDIR=" #$output "/lib")
|
||||
(string-append "PYTHON_PREFIX=" #$output)
|
||||
"PYTHON_ROOT=/"
|
||||
(string-append "TCL_DIR=" #$output "/lib")
|
||||
"INSTALL_WRITABLE_DIRECTORY=no-thanks")
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'fix-errors
|
||||
(lambda _
|
||||
(substitute* "configure"
|
||||
(("/sbin/ldconfig")
|
||||
(which "true")))
|
||||
;; Make Python bindings use rpath.
|
||||
(substitute* "Bindings/Python/setup.py.in"
|
||||
(("extra_compile_args =")
|
||||
(string-append "extra_link_args = ['-Wl,-rpath="
|
||||
#$output
|
||||
"/lib'], "
|
||||
"extra_compile_args = "))))))))
|
||||
`(#:tests? #f ; No target
|
||||
|
||||
;; High parallelism may cause errors such as:
|
||||
;; ranlib: ./libbrlapi_stubs.a: error reading brlapi_stubs.o: file truncated
|
||||
#:parallel-build? #f
|
||||
|
||||
#:configure-flags
|
||||
(list
|
||||
(string-append "--with-libbraille="
|
||||
(assoc-ref %build-inputs "libbraille"))
|
||||
(string-append "--with-espeak_ng="
|
||||
(assoc-ref %build-inputs "espeak-ng"))
|
||||
(string-append "--with-espeak="
|
||||
(assoc-ref %build-inputs "espeak"))
|
||||
(string-append "--with-flite="
|
||||
(assoc-ref %build-inputs "flite"))
|
||||
;; Required for RUNPATH validation.
|
||||
(string-append "LDFLAGS=-Wl,-rpath="
|
||||
(assoc-ref %outputs "out")
|
||||
"/lib"))
|
||||
#:make-flags
|
||||
(list
|
||||
(string-append "JAVA_JAR_DIR="
|
||||
(assoc-ref %outputs "out"))
|
||||
(string-append "JAVA_JNI_DIR="
|
||||
(assoc-ref %outputs "out"))
|
||||
(string-append "OCAML_DESTDIR="
|
||||
(assoc-ref %outputs "out")
|
||||
"/lib")
|
||||
(string-append "PYTHON_PREFIX="
|
||||
(assoc-ref %outputs "out"))
|
||||
"PYTHON_ROOT=/"
|
||||
(string-append "TCL_DIR="
|
||||
(assoc-ref %outputs "out")
|
||||
"/lib")
|
||||
"INSTALL_WRITABLE_DIRECTORY=no-thanks")
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'fix-errors
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(substitute* "configure"
|
||||
(("/sbin/ldconfig")
|
||||
(which "true")))
|
||||
;; Make Python bindings use rpath.
|
||||
(substitute* "Bindings/Python/setup.py.in"
|
||||
(("extra_compile_args =")
|
||||
(string-append "extra_link_args = ['-Wl,-rpath="
|
||||
(assoc-ref outputs "out")
|
||||
"/lib'], "
|
||||
"extra_compile_args = "))))))))
|
||||
(native-inputs
|
||||
(list clisp
|
||||
python-cython
|
||||
@@ -212,7 +220,7 @@ incorporated.")
|
||||
(inputs
|
||||
(list libxml2
|
||||
libglade
|
||||
(librsvg-for-system)
|
||||
librsvg
|
||||
gstreamer
|
||||
cairo
|
||||
gtk+
|
||||
@@ -221,7 +229,7 @@ incorporated.")
|
||||
libnotify))
|
||||
(native-inputs
|
||||
(list gettext-minimal intltool pkg-config))
|
||||
(home-page "https://florence.sourceforge.net/")
|
||||
(home-page "http://florence.sourceforge.net/")
|
||||
(synopsis "Extensible, scalable virtual keyboard for X11")
|
||||
(description
|
||||
"Florence is an extensible scalable virtual keyboard for X11.
|
||||
@@ -237,11 +245,11 @@ available to help to click.")
|
||||
(license license:gpl2+)))
|
||||
|
||||
(define-public footswitch
|
||||
(let ((commit "e455d6752221b9e9c3818cc304c873b9c2792490")
|
||||
(revision "0"))
|
||||
(let ((commit "ca43d53fc2002520cc825d119702afc124303e73")
|
||||
(revision "2"))
|
||||
(package
|
||||
(name "footswitch")
|
||||
(version (git-version "1.0" revision commit))
|
||||
(version (git-version "0.1" revision commit))
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
@@ -250,32 +258,32 @@ available to help to click.")
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0xkk60sg3szpgbl3z8djlpagglsldv9viqibsih6wcnbhikzlc6j"))))
|
||||
"14pyzc4ws1mj859xs9n4x83wzxxvd3bh5bdxzr6nv267xwx1mq68"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:tests? #f ; no tests
|
||||
#:make-flags #~(list (string-append "CC=" #$(cc-for-target)))
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(delete 'configure)
|
||||
;; Install target in the Makefile does not work for Guix.
|
||||
(replace 'install
|
||||
(lambda _
|
||||
(let ((bin (string-append #$output "/bin")))
|
||||
(install-file "footswitch" bin)
|
||||
(install-file "scythe" bin)))))))
|
||||
(native-inputs
|
||||
(list pkg-config))
|
||||
(inputs
|
||||
(list hidapi))
|
||||
(arguments
|
||||
`(#:tests? #f ; no tests
|
||||
#:make-flags (list (string-append "CC=" ,(cc-for-target)))
|
||||
#:phases (modify-phases %standard-phases
|
||||
(delete 'configure)
|
||||
;; Install target in the Makefile does not work for Guix
|
||||
(replace 'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((bin (string-append (assoc-ref outputs "out")
|
||||
"/bin")))
|
||||
(install-file "footswitch" bin)
|
||||
(install-file "scythe" bin)
|
||||
#t))))))
|
||||
(home-page "https://github.com/rgerganov/footswitch")
|
||||
(synopsis "Command line utilities for PCsensor and Scythe foot switches")
|
||||
(synopsis "Command line utility for PCsensor foot switch")
|
||||
(description
|
||||
"This package provides command line utilities for programming PCsensor
|
||||
and Scythe foot switches. It works for both single pedal and three pedal
|
||||
devices.")
|
||||
(license license:expat))))
|
||||
"Command line utility for programming foot switches sold by PCsensor.
|
||||
It works for both single pedal devices and three pedal devices. All supported
|
||||
devices have vendorId:productId = 0c45:7403 or 0c45:7404.")
|
||||
(license license:expat))))
|
||||
|
||||
(define-public xmagnify
|
||||
(package
|
||||
@@ -340,39 +348,4 @@ CONFIG_SPEAKUP=m
|
||||
@item
|
||||
CONFIG_SPEAKUP_SOFT=m
|
||||
@end itemize")
|
||||
(home-page "https://github.com/linux-speakup/espeakup")))
|
||||
|
||||
(define-public mouseloupe
|
||||
(package
|
||||
(name "mouseloupe")
|
||||
(version "0.6")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://sourceforge/" name "/" name "/v" version
|
||||
"/" name "-v" version ".tar.gz"))
|
||||
(sha256 (base32 "0cvdkfakw7cix07j0c4iy10fkbqn6n8l1gr5dd3iy4f2d9bkza43"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f ; there are no tests
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(delete 'configure)
|
||||
(add-before 'build 'strtof
|
||||
(lambda _
|
||||
(substitute* "mouseloupe.c"
|
||||
(("\\bstrtof\\b") "mouseloupe_strtof"))))
|
||||
(replace 'install
|
||||
(lambda _
|
||||
(define out (assoc-ref %outputs "out"))
|
||||
(install-file "mouseloupe" (string-append out "/bin"))
|
||||
(install-file "mouseloupe.1.gz" (string-append out "/share/man/man1")))))))
|
||||
(native-inputs
|
||||
(list pkg-config))
|
||||
(inputs
|
||||
(list libx11 libxext libxcomposite libxdamage libxrender))
|
||||
(synopsis "Screen magnifier tool for people with low vision")
|
||||
(description "MouseLoupe is a kind of magnifying glass combined with the mouse pointer
|
||||
which allows an easy and pleasant web navigation.")
|
||||
(home-page "https://sourceforge.net/projects/mouseloupe/")
|
||||
(license license:gpl2+)))
|
||||
(home-page "ttps://github.com/linux-speakup/espeakup")))
|
||||
|
||||
@@ -5,7 +5,7 @@
|
||||
;;; Copyright © 2017 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
|
||||
;;; Copyright © 2020, 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2021 Lars-Dominik Braun <ldb@leibniz-psychology.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
@@ -28,14 +28,14 @@
|
||||
#:use-module (gnu packages attr)
|
||||
#:use-module (gnu packages base)
|
||||
#:use-module (gnu packages check)
|
||||
#:use-module (gnu packages hurd)
|
||||
#:use-module (gnu packages gettext)
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system python)
|
||||
#:use-module (guix utils))
|
||||
#:use-module (guix build-system python))
|
||||
|
||||
(define-public acl
|
||||
(package
|
||||
@@ -55,7 +55,7 @@
|
||||
,@%gnu-build-system-modules)
|
||||
#:configure-flags '("--disable-static")
|
||||
#:tests? ,(not (or (%current-target-system)
|
||||
(target-hurd?)))
|
||||
(hurd-target?)))
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
;; XXX After repacking the sources the timestamps are reset to the
|
||||
|
||||
@@ -21,10 +21,16 @@
|
||||
(define-module (gnu packages ada)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system python)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix git-download)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages base)
|
||||
#:use-module (gnu packages check)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages python-xyz)
|
||||
#:use-module (ice-9 match))
|
||||
|
||||
(define-public ada/ed
|
||||
|
||||
+311
-573
File diff suppressed because it is too large
Load Diff
+11
-63
@@ -3,7 +3,6 @@
|
||||
;;; Copyright © 2015, 2016, 2018, 2020 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2019, 2021 Marius Bakke <marius@gnu.org>
|
||||
;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -21,11 +20,9 @@
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages adns)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (guix licenses)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (guix build-system cmake)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (gnu packages m4)
|
||||
@@ -68,7 +65,7 @@ scripts.")
|
||||
(define-public c-ares
|
||||
(package
|
||||
(name "c-ares")
|
||||
(version "1.18.1")
|
||||
(version "1.17.2")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
@@ -76,72 +73,23 @@ scripts.")
|
||||
".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1kxviskwsaa7dcgscvssxa8ps88pdq7kq4z93gxvz7sam2l54z8s"))))
|
||||
"0gcincjvpll2qmlc906jx6mfq97s87mgi0zby0753ki0rr2ch0s8"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-before 'check 'filter-live-tests
|
||||
(lambda _
|
||||
;; Filter tests that require internet access.
|
||||
(setenv "GTEST_FILTER" "-*.Live*:*.FamilyV4*")))
|
||||
#$@(if (system-hurd?)
|
||||
#~((add-after 'unpack 'skip-tests
|
||||
(lambda _
|
||||
(substitute* "test/ares-test-main.cc"
|
||||
(("(^| )main *\\(.*" all)
|
||||
(string-append all " exit (77);\n")))))
|
||||
(add-after 'filter-live-tests 'filter-hurd-tests
|
||||
(lambda _
|
||||
(setenv "GTEST_FILTER"
|
||||
(string-append
|
||||
(getenv "GTEST_FILTER")
|
||||
":.*Basic/2"
|
||||
":.*CancelImmediate/2"
|
||||
":.*CancelImmediateGetHostByAddr/2"
|
||||
":.*CancelLater/1"
|
||||
":.*FamilyUnspecified/2"
|
||||
":.*FamilyV6/2"
|
||||
":.*GetAddrInfoParallelLookups/1"
|
||||
":.*GetHostByAddrDestroy/2"
|
||||
":.*GetHostByNameCNAMENoData/2"
|
||||
":.*GetHostByNameDestroyAbsolute/2"
|
||||
":.*GetHostByNameDestroyRelative/2"
|
||||
":.*GetHostByNameParallelLookups/1"
|
||||
":.*HostAlias/2"
|
||||
":.*HostAliasMissing/2"
|
||||
":.*HostAliasMissingFile/2"
|
||||
":.*NotImplResponse/2"
|
||||
":.*RefusedResponse/2"
|
||||
":.*Resend/1"
|
||||
":.*RetryWithoutEDNS/2"
|
||||
":.*SearchDomains/2"
|
||||
":.*SearchDomainsBare/2"
|
||||
":.*SearchDomainsServFailOnAAAA/2"
|
||||
":.*SearchDomainsWithResentReply/1"
|
||||
":.*SearchHighNdots/2"
|
||||
":.*SearchNoDataThenFail/2"
|
||||
":.*SearchNoDataThenNoDataBare/2"
|
||||
":.*SearchNoDataThenSuccess/2"
|
||||
":.*ServFailResponse/2"
|
||||
":.*SimpleQuery/2"
|
||||
":.*SockCallback/2"
|
||||
":.*SockConfigureCallback/2"
|
||||
":.*SortListV4/2"
|
||||
":.*SortListV6/2"
|
||||
":.*ThirdServer/2"
|
||||
":.*TruncationRetry/1"
|
||||
":.*UnspecifiedFamilyCname6A4/2"
|
||||
":.*UnspecifiedFamilyV4/2"
|
||||
":.*UnspecifiedFamilyV6/2")))))
|
||||
#~()))))
|
||||
'(;; FIXME: Some tests require network access
|
||||
#:tests? #f
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-before 'check 'filter-live-tests
|
||||
(lambda _
|
||||
;; Filter tests that require internet access.
|
||||
(setenv "GTEST_FILTER" "-*.Live*:*.FamilyV4*"))))))
|
||||
(native-inputs
|
||||
(list pkg-config))
|
||||
(home-page "https://c-ares.haxx.se/")
|
||||
(synopsis "C library for asynchronous DNS requests")
|
||||
(description
|
||||
"C-ares is a C library that performs DNS requests and name resolution
|
||||
"C-ares is a C library that performs DNS requests and name resolution
|
||||
asynchronously. It is intended for applications which need to perform DNS
|
||||
queries without blocking, or need to perform multiple DNS queries in parallel.
|
||||
The primary examples of such applications are servers which communicate with
|
||||
|
||||
+49
-202
@@ -5,7 +5,6 @@
|
||||
;;; Copyright © 2018, 2022 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2018 John Soo <jsoo1@asu.edu>
|
||||
;;; Copyright © 2019 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2023 Josselin Poiret <dev@jpoiret.xyz>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -23,18 +22,13 @@
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages agda)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages haskell-check)
|
||||
#:use-module (gnu packages haskell-web)
|
||||
#:use-module (gnu packages haskell-xyz)
|
||||
#:use-module (gnu packages imagemagick)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages sphinx)
|
||||
#:use-module (gnu packages texinfo)
|
||||
#:use-module (guix build-system agda)
|
||||
#:use-module (guix build-system emacs)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system haskell)
|
||||
#:use-module (guix build-system trivial)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix git-download)
|
||||
@@ -44,17 +38,15 @@
|
||||
(define-public agda
|
||||
(package
|
||||
(name "agda")
|
||||
(version "2.6.3")
|
||||
(version "2.6.2.2")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/agda/agda.git")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"https://hackage.haskell.org/package/Agda/Agda-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32 "1s7zd01i8pmvi90ywx497kc07z50nah7h0fc2dn6jzb132k5sh1q"))
|
||||
(patches (search-patches "agda-libdirs-env-variable.patch"))))
|
||||
(base32 "0yjjbhc593ylrm4mq4j01nkdvh7xqsg5in30wxj4y53vf5hkggp5"))))
|
||||
(build-system haskell-build-system)
|
||||
(inputs
|
||||
(list ghc-aeson
|
||||
@@ -78,14 +70,7 @@
|
||||
ghc-strict
|
||||
ghc-unordered-containers
|
||||
ghc-uri-encode
|
||||
ghc-vector-hashtables
|
||||
ghc-zlib))
|
||||
(native-inputs
|
||||
(list python
|
||||
python-sphinx
|
||||
python-sphinx-rtd-theme
|
||||
texinfo
|
||||
imagemagick))
|
||||
(arguments
|
||||
(list #:modules `((guix build haskell-build-system)
|
||||
(guix build utils)
|
||||
@@ -102,22 +87,7 @@
|
||||
(let ((agda-compiler (string-append #$output "/bin/agda")))
|
||||
(for-each (cut invoke agda-compiler <>)
|
||||
(find-files (string-append #$output "/share")
|
||||
"\\.agda$")))))
|
||||
(add-after 'agda-compile 'install-info
|
||||
(lambda _
|
||||
(with-directory-excursion "doc/user-manual"
|
||||
(invoke "sphinx-build" "-b" "texinfo"
|
||||
"." "_build_texinfo")
|
||||
(with-directory-excursion "_build_texinfo"
|
||||
(setenv "infodir" (string-append #$output
|
||||
"/share/info"))
|
||||
(invoke "make" "install-info"))))))))
|
||||
(search-paths
|
||||
(list (search-path-specification
|
||||
(variable "AGDA_LIBDIRS")
|
||||
(files (list "lib/agda")))))
|
||||
(native-search-paths
|
||||
search-paths)
|
||||
"\\.agda$"))))))))
|
||||
(home-page "https://wiki.portal.chalmers.se/agda/")
|
||||
(synopsis
|
||||
"Dependently typed functional programming language and proof assistant")
|
||||
@@ -138,181 +108,58 @@ such as Coq, Epigram and NuPRL.")
|
||||
|
||||
(define-public emacs-agda2-mode
|
||||
(package
|
||||
(inherit agda)
|
||||
(name "emacs-agda2-mode")
|
||||
(version (package-version agda))
|
||||
(source (package-source agda))
|
||||
(build-system emacs-build-system)
|
||||
(inputs '())
|
||||
(arguments
|
||||
(list
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'enter-elisp-dir
|
||||
(lambda _ (chdir "src/data/emacs-mode"))))))
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'enter-elisp-dir
|
||||
(lambda _ (chdir "src/data/emacs-mode") #t)))))
|
||||
(home-page "https://agda.readthedocs.io/en/latest/tools/emacs-mode.html")
|
||||
(synopsis "Emacs mode for Agda")
|
||||
(description "This Emacs mode enables interactive development with
|
||||
Agda. It also aids the input of Unicode characters.")
|
||||
(license (package-license agda))))
|
||||
Agda. It also aids the input of Unicode characters.")))
|
||||
|
||||
(define-public agda-ial
|
||||
(let ((revision "1")
|
||||
;; There hasn't been a release in a long time, and the last one
|
||||
;; doesn't build with Agda 2.6.
|
||||
(commit "ded30c410d5d40142249686572aa1acd1b2f8cc7"))
|
||||
(package
|
||||
(name "agda-ial")
|
||||
(version (git-version "1.5.0" revision commit))
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference (url "https://github.com/cedille/ial")
|
||||
(commit commit)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0xn6zvp1wnm0i84pz1rfbzfmayd15ch4i5s11ycd88d22pxd55dc"))))
|
||||
(build-system agda-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:gnu-and-haskell? #t
|
||||
(package
|
||||
(name "agda-ial")
|
||||
(version "1.5.0")
|
||||
(home-page "https://github.com/cedille/ial")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference (url home-page)
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0dlis6v6nzbscf713cmwlx8h9n2gxghci8y21qak3hp18gkxdp0g"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
(list agda))
|
||||
(arguments
|
||||
`(#:parallel-build? #f
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-before 'build 'patch-dependencies
|
||||
(lambda _ (patch-shebang "find-deps.sh")))
|
||||
(replace 'build
|
||||
(lambda _
|
||||
(invoke "make"))))))
|
||||
(home-page "https://github.com/cedille/ial")
|
||||
(synopsis "The Iowa Agda Library")
|
||||
(description
|
||||
"The goal is to provide a concrete library focused on verification
|
||||
(modify-phases %standard-phases
|
||||
(delete 'configure)
|
||||
(add-before 'build 'patch-dependencies
|
||||
(lambda _ (patch-shebang "find-deps.sh") #t))
|
||||
(delete 'check)
|
||||
(replace 'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(include (string-append out "/include/agda/ial")))
|
||||
(for-each (lambda (file)
|
||||
(make-file-writable file)
|
||||
(install-file file include))
|
||||
(find-files "." "\\.agdai?(-lib)?$"))
|
||||
#t))))))
|
||||
(synopsis "The Iowa Agda Library")
|
||||
(description
|
||||
"The goal is to provide a concrete library focused on verification
|
||||
examples, as opposed to mathematics. The library has a good number
|
||||
of theorems for booleans, natural numbers, and lists. It also has
|
||||
trees, tries, vectors, and rudimentary IO. A number of good ideas
|
||||
come from Agda's standard library.")
|
||||
(license license:expat))))
|
||||
|
||||
(define-public agda-stdlib
|
||||
(package
|
||||
(name "agda-stdlib")
|
||||
(version "1.7.2")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/agda/agda-stdlib")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"065hf24xjpciwdrvk4isslgcgi01q0k93ql0y1sjqqvy5ryg5xmy"))))
|
||||
(build-system agda-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:plan '(("^\\./README.agda$" "-i."))
|
||||
#:gnu-and-haskell? #t
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-before 'build 'generate-everything
|
||||
(lambda* (#:key inputs native-inputs #:allow-other-keys)
|
||||
(invoke
|
||||
(search-input-file (or native-inputs inputs) "/bin/runhaskell")
|
||||
"GenerateEverything.hs"))))))
|
||||
(native-inputs (list ghc-filemanip))
|
||||
(synopsis "The Agda Standard Library")
|
||||
(description
|
||||
"The standard library aims to contain all the tools needed to write
|
||||
both programs and proofs easily. While we always try and write efficient
|
||||
code, we prioritize ease of proof over type-checking and normalization
|
||||
performance. If computational performance is important to you, then perhaps
|
||||
try agda-prelude instead.")
|
||||
(home-page "https://wiki.portal.chalmers.se/agda/pmwiki.php")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public agda-categories
|
||||
(package
|
||||
(name "agda-categories")
|
||||
(version "0.1.7.2")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/agda/agda-categories.git")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0xwgm2mfl2pxipsv31bin8p14y1yhd9n27lv3clvsxd4z9yc034m"))
|
||||
(patches (search-patches "agda-categories-remove-incompatible-flags.patch"
|
||||
"agda-categories-use-find.patch"))))
|
||||
(build-system agda-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:gnu-and-haskell? #t
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(replace 'build
|
||||
(lambda _
|
||||
(invoke "make"))))))
|
||||
(propagated-inputs
|
||||
(list agda-stdlib))
|
||||
(synopsis "New Categories library for Agda")
|
||||
(description "A new Categories library for Agda")
|
||||
(home-page "https://github.com/agda/agda-categories")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public agda-cubical
|
||||
;; Upstream's HEAD follows the latest Agda release, but they don't release
|
||||
;; until a newer Agda release comes up, so their releases are always one
|
||||
;; version late.
|
||||
(package
|
||||
(name "agda-cubical")
|
||||
(version "0.5")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/agda/cubical.git")
|
||||
(commit (string-append "v" version))))
|
||||
(sha256
|
||||
(base32
|
||||
"0yfg7gr55n08ly1qgzpcp16s15k1abycppbcdi9lzg1hjryqxcg3"))))
|
||||
(build-system agda-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:gnu-and-haskell? #t
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(replace 'build
|
||||
(lambda _
|
||||
(invoke "make"))))))
|
||||
(synopsis "Standard library for Cubical Agda")
|
||||
(description "A standard library for Cubical Agda, comparable to
|
||||
agda-stdlib but using cubical methods.")
|
||||
(home-page "https://github.com/agda/cubical")
|
||||
(license license:expat)))
|
||||
|
||||
(define-public agda-1lab
|
||||
;; Upstream doesn't do releases (yet). Use a commit that builds with 2.6.3,
|
||||
;; since they use Agda HEAD.
|
||||
(let* ((revision "1")
|
||||
(commit "47ca1d23640a6f49a3abe3c2fe27738bcc10c9c6"))
|
||||
(package
|
||||
(name "agda-1lab")
|
||||
(version (git-version "0.0" revision commit))
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/plt-amy/1lab.git")
|
||||
(commit commit)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"0j7mp6c0xd0849skdxzncklkxynxnyfrbpcjv4qp5p1xfn0dnfqx"))))
|
||||
(build-system agda-build-system)
|
||||
(arguments
|
||||
(list #:plan '(("src/index\\.lagda\\.md$"))))
|
||||
(synopsis "Reference resource for mathematics done in Homotopy Type Theory")
|
||||
(description "A formalised, cross-linked reference resource for
|
||||
mathematics done in Homotopy Type Theory. Unlike the HoTT book, the 1lab is
|
||||
not a “linear” resource: Concepts are presented as a directed graph, with
|
||||
links indicating dependencies.")
|
||||
(home-page "https://1lab.dev")
|
||||
(license license:agpl3))))
|
||||
|
||||
+99
-173
@@ -1,9 +1,9 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2022 Andreas Enge <andreas@enge.fr>
|
||||
;;; Copyright © 2013, 2015, 2017, 2018, 2021 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2016-2023 Nicolas Goaziou <mail@nicolasgoaziou.fr>
|
||||
;;; Copyright © 2016-2022 Nicolas Goaziou <mail@nicolasgoaziou.fr>
|
||||
;;; Copyright © 2014, 2018 Mark H Weaver <mhw@netris.org>
|
||||
;;; Copyright © 2016, 2018, 2019, 2021, 2023 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2016, 2018, 2019, 2021 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2017, 2020-2022 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2017–2021 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2017 Marius Bakke <mbakke@fastmail.com>
|
||||
@@ -12,7 +12,7 @@
|
||||
;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
|
||||
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
|
||||
;;; Copyright © 2020 Vincent Legoll <vincent.legoll@gmail.com>
|
||||
;;; Copyright © 2020, 2021, 2023 Vinicius Monego <monego@posteo.net>
|
||||
;;; Copyright © 2020, 2021 Vinicius Monego <monego@posteo.net>
|
||||
;;; Copyright © 2021 Lars-Dominik Braun <ldb@leibniz-psychology.org>
|
||||
;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
;;;
|
||||
@@ -34,7 +34,6 @@
|
||||
(define-module (gnu packages algebra)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages autotools)
|
||||
#:use-module (gnu packages bash)
|
||||
#:use-module (gnu packages bison)
|
||||
#:use-module (gnu packages boost)
|
||||
#:use-module (gnu packages check)
|
||||
@@ -59,7 +58,6 @@
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages python-xyz)
|
||||
#:use-module (gnu packages readline)
|
||||
#:use-module (gnu packages ruby)
|
||||
#:use-module (gnu packages shells)
|
||||
#:use-module (gnu packages tex)
|
||||
#:use-module (gnu packages texinfo)
|
||||
@@ -105,7 +103,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 "https://www.multiprecision.org/mpfrcx/")))
|
||||
(home-page "http://www.multiprecision.org/mpfrcx/")))
|
||||
|
||||
(define-public gf2x
|
||||
(package
|
||||
@@ -133,7 +131,7 @@ greatest common divisor operations.")
|
||||
(define-public cm
|
||||
(package
|
||||
(name "cm")
|
||||
(version "0.4.2")
|
||||
(version "0.4.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
@@ -141,7 +139,7 @@ greatest common divisor operations.")
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1c6m00wiw3rs5f0lq6c80rdr3dzklsvh69l8w3s7bj2r6yha6qbw"))))
|
||||
"04l3inafql40n0r5rq8rmp21zplgdrzblil2kgkpx5s0jbs9i8rr"))))
|
||||
(build-system gnu-build-system)
|
||||
(propagated-inputs
|
||||
(list mpfrcx zlib)) ; Header files included from cm_common.h.
|
||||
@@ -155,7 +153,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 "https://www.multiprecision.org/cm/")))
|
||||
(home-page "http://www.multiprecision.org/cm/")))
|
||||
|
||||
(define-public fplll
|
||||
(package
|
||||
@@ -226,7 +224,7 @@ the real span of the lattice.")
|
||||
(define-public pari-gp
|
||||
(package
|
||||
(name "pari-gp")
|
||||
(version "2.15.4")
|
||||
(version "2.15.1")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
@@ -234,9 +232,10 @@ the real span of the lattice.")
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"03swii601kxnphl6v7wv0rh2xn4rz6xbljzvfw5v9py6w3z5nm63"))))
|
||||
"0gcyj0p0z5s1i9y67z5awwmmdvqrisvyrq22gvkbx1b6gjvrsha5"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs (list (texlive-updmap.cfg)))
|
||||
(native-inputs (list (texlive-updmap.cfg
|
||||
(list texlive-amsfonts))))
|
||||
(inputs (list gmp libx11 perl readline))
|
||||
(arguments
|
||||
'(#:make-flags '("all")
|
||||
@@ -328,7 +327,7 @@ precision.")
|
||||
(define-public giac
|
||||
(package
|
||||
(name "giac")
|
||||
(version "1.9.0-45")
|
||||
(version "1.9.0-29")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@@ -340,7 +339,7 @@ precision.")
|
||||
"~parisse/debian/dists/stable/main/source/"
|
||||
"giac_" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32 "0yxsl1vvwcbpwcmzp9v9rfm9djmapab0nhb3gs7zmjv5yvzbgj4d"))))
|
||||
(base32 "03hbg5b0xmdfp919mxn5lsard1mwg1kcm9xrm8gk7wnmr9r1adgn"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
(list
|
||||
@@ -359,8 +358,8 @@ precision.")
|
||||
;; FIXME: Tests failing. Not sure why.
|
||||
(lambda _
|
||||
(substitute* "check/Makefile.in"
|
||||
(("chk_fhan(4|11)") "")
|
||||
(("chk_fhan(14|21)") "")))) ;fail specifically on i686
|
||||
(("chk_fhan4") "")
|
||||
(("chk_fhan11") ""))))
|
||||
(add-after 'install 'fix-doc
|
||||
(lambda _
|
||||
;; Most French documentation has a non-commercial license, so we
|
||||
@@ -405,7 +404,7 @@ precision.")
|
||||
hevea
|
||||
python-wrapper
|
||||
readline
|
||||
(texlive-updmap.cfg)))
|
||||
texlive-tiny))
|
||||
(home-page "https://www-fourier.ujf-grenoble.fr/~parisse/giac.html")
|
||||
(synopsis "Computer algebra system")
|
||||
(description
|
||||
@@ -465,9 +464,7 @@ GCDs, factoring, solving linear systems, and evaluating special
|
||||
functions. In addition, FLINT provides various low-level routines for
|
||||
fast arithmetic.")
|
||||
(license license:lgpl2.1+)
|
||||
(home-page "https://flintlib.org/")
|
||||
(properties
|
||||
'((release-monitoring-url . "http://flintlib.org/downloads.html")))))
|
||||
(home-page "http://flintlib.org/")))
|
||||
|
||||
(define-public arb
|
||||
(package
|
||||
@@ -686,7 +683,7 @@ binary.")
|
||||
(patches (search-patches "bc-fix-cross-compilation.patch"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
(list automake autoconf ed flex readline texinfo))
|
||||
(list automake autoconf ed flex texinfo))
|
||||
(inputs
|
||||
(list readline))
|
||||
(arguments
|
||||
@@ -769,7 +766,7 @@ a C program.")
|
||||
;; different machine.
|
||||
"ax_cv_c_flags__mtune_native=no")))
|
||||
(native-inputs (list perl))
|
||||
(home-page "https://fftw.org")
|
||||
(home-page "http://fftw.org")
|
||||
(synopsis "Computing the discrete Fourier transform")
|
||||
(description
|
||||
"FFTW is a C subroutine library for computing the discrete Fourier
|
||||
@@ -936,7 +933,7 @@ algorithms from the FORTRAN library MINPACK.")
|
||||
(define-public symengine
|
||||
(package
|
||||
(name "symengine")
|
||||
(version "0.10.1")
|
||||
(version "0.9.0")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
@@ -945,7 +942,7 @@ algorithms from the FORTRAN library MINPACK.")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "0qy5w5msq0zy7drbhdy0vx451zglha8jm5s4zzmvmsja5yyv8fx9"))))
|
||||
(base32 "17b6byrhk0bgvarqmg92nrrqhzll9as6x1smghmyq2h9xc373ap4"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
'(#:configure-flags
|
||||
@@ -1147,12 +1144,9 @@ features, and more.")
|
||||
(substitute-keyword-arguments (package-arguments eigen)
|
||||
((#:phases phases)
|
||||
`(modify-phases ,phases
|
||||
(delete 'disable-some-tests)
|
||||
;; This test cannot be compiled
|
||||
(add-after 'unpack 'gcc-compatibility
|
||||
(lambda _
|
||||
(substitute* "test/CMakeLists.txt"
|
||||
(("ei_add_test\\(stddeque") "#")))))))))))
|
||||
(delete 'disable-some-tests)))))
|
||||
(native-inputs
|
||||
(list gcc-7)))))
|
||||
|
||||
(define-public eigen-for-tensorflow-lite
|
||||
;; This commit was taken from
|
||||
@@ -1189,7 +1183,7 @@ features, and more.")
|
||||
(define-public xtensor
|
||||
(package
|
||||
(name "xtensor")
|
||||
(version "0.24.6")
|
||||
(version "0.24.0")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
@@ -1197,7 +1191,7 @@ features, and more.")
|
||||
(commit version)))
|
||||
(sha256
|
||||
(base32
|
||||
"0gf5m5p61981pv7yh5425lcv8dci948ri37hn1zlli7xg54x0g3i"))
|
||||
"14fpzwdq26p2fqdrmc78hny9pp09k9c53jnwlh7f8x54ikzm23c2"))
|
||||
(file-name (git-file-name name version))))
|
||||
(build-system cmake-build-system)
|
||||
(native-inputs
|
||||
@@ -1261,7 +1255,7 @@ xtensor provides:
|
||||
(define-public gap
|
||||
(package
|
||||
(name "gap")
|
||||
(version "4.12.2")
|
||||
(version "4.11.1")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@@ -1271,13 +1265,14 @@ xtensor provides:
|
||||
version
|
||||
".tar.gz"))
|
||||
(sha256
|
||||
(base32 "1a47slldnjq6mib69k3g8lqw6nyxdrwdd3gfjhj252mpbrs0h8v7"))
|
||||
(base32 "01535s81h254zcs84zi95xqmhvvn6fn9qss8761myxc2gpdcadb6"))
|
||||
(modules '((guix build utils) (ice-9 ftw) (srfi srfi-1)))
|
||||
(snippet
|
||||
'(begin
|
||||
;; Delete bundled external libraries.
|
||||
;; Delete the external gmp and zlib libraries
|
||||
;; and a subdirectory not needed for our build.
|
||||
(for-each delete-file-recursively
|
||||
'("extern" "hpcgap/extern"))
|
||||
'("extern" "hpcgap"))
|
||||
;; Delete a failing test.
|
||||
;; FIXME: This might be fixed in the next release, see
|
||||
;; https://github.com/gap-system/gap/issues/3292
|
||||
@@ -1291,69 +1286,47 @@ xtensor provides:
|
||||
(scandir ".")
|
||||
'("." ".."
|
||||
;; Necessary packages.
|
||||
"gapdoc"
|
||||
"primgrp"
|
||||
"smallgrp" ; artistic2.0
|
||||
"transgrp" ; artistic2.0 for data,
|
||||
; gpl2 or gpl3 for code
|
||||
"GAPDoc-"
|
||||
"primgrp-"
|
||||
"SmallGrp-" ; artistic2.0
|
||||
"transgrp" ; artistic2.0 for data,
|
||||
; gpl2 or gpl3 for code
|
||||
;; Optional packages.
|
||||
"4ti2interface"
|
||||
"alnuth"
|
||||
"autodoc"
|
||||
"automata"
|
||||
"autpgrp"
|
||||
"cap"
|
||||
"crime"
|
||||
"crisp" ; bsd-2
|
||||
"ctbllib" ; gpl3+
|
||||
"alnuth-"
|
||||
"AutoDoc-"
|
||||
"automata-"
|
||||
"autpgrp-"
|
||||
"crime-"
|
||||
"crisp-" ; bsd-2
|
||||
"ctbllib" ; gpl3+
|
||||
"datastructures"
|
||||
"examplesforhomalg"
|
||||
"factint"
|
||||
"FactInt-"
|
||||
"fga"
|
||||
"format"
|
||||
"gauss"
|
||||
"gaussforhomalg"
|
||||
"generalizedmorphismsforcap"
|
||||
"gradedmodules"
|
||||
"gradedringforhomalg"
|
||||
"groupoids"
|
||||
"groupoids-"
|
||||
"guarana"
|
||||
"homalg"
|
||||
"homalgtocas"
|
||||
"idrel"
|
||||
"images" ; mpl2.0
|
||||
"intpic"
|
||||
"io" ; gpl3+
|
||||
"ioforhomalg"
|
||||
"irredsol" ; bsd-2
|
||||
"laguna"
|
||||
"liering"
|
||||
"linearalgebraforcap"
|
||||
"localizeringforhomalg"
|
||||
"mapclass"
|
||||
"matricesforhomalg"
|
||||
"modulepresentationsforcap"
|
||||
"modules"
|
||||
"monoidalcategories"
|
||||
"nconvex"
|
||||
"nilmat"
|
||||
"numericalsgps"
|
||||
"openmath"
|
||||
"orb" ; gpl3+
|
||||
"polenta"
|
||||
"polycyclic"
|
||||
"radiroot"
|
||||
"recog" ; gpl3+
|
||||
"repsn"
|
||||
"resclasses"
|
||||
"ringsforhomalg"
|
||||
"sco"
|
||||
"idrel-"
|
||||
"images-" ; mpl2.0
|
||||
"IntPic-"
|
||||
"io-" ; gpl3+
|
||||
"irredsol-" ; bsd-2
|
||||
"laguna-"
|
||||
"liering-"
|
||||
"MapClass-"
|
||||
"nilmat-"
|
||||
"NumericalSgps-"
|
||||
"OpenMath-"
|
||||
"orb-" ; gpl3+
|
||||
"polenta-"
|
||||
"polycyclic-"
|
||||
"radiroot-"
|
||||
"repsn-"
|
||||
"resclasses-"
|
||||
"simpcomp"
|
||||
"sophus"
|
||||
"tomlib"
|
||||
"toolsforhomalg"
|
||||
"unipot"
|
||||
"utils"))))))))
|
||||
"sophus-"
|
||||
"tomlib-"
|
||||
"unipot-"
|
||||
"utils-"))))))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
(list gmp readline zlib))
|
||||
@@ -1376,10 +1349,41 @@ xtensor provides:
|
||||
(lambda _
|
||||
(with-directory-excursion "doc"
|
||||
(invoke "./make_doc"))))
|
||||
(add-after 'install 'install-packages
|
||||
(replace 'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(bin (string-append out "/bin"))
|
||||
(prog (string-append bin "/gap"))
|
||||
(prog-real (string-append bin "/.gap-real"))
|
||||
(share (string-append out "/share/gap")))
|
||||
;; Install only the gap binary; the gac compiler is left
|
||||
;; for maybe later. "Wrap" it in a shell script that calls
|
||||
;; the binary with the correct parameter.
|
||||
;; The make target install-bin is supposed to do that, but
|
||||
;; is not currently working.
|
||||
(mkdir-p bin)
|
||||
(copy-file "gap" prog-real)
|
||||
(call-with-output-file prog
|
||||
(lambda (port)
|
||||
(format port
|
||||
"#!~a~%exec ~a -l ~a \"$@\"~%"
|
||||
(which "bash")
|
||||
prog-real
|
||||
share)))
|
||||
(chmod prog #o755)
|
||||
;; Install the headers and library, which are needed by Sage.
|
||||
(invoke "make" "install-headers")
|
||||
(install-file "gen/config.h"
|
||||
(string-append out "/include/gap"))
|
||||
(invoke "make" "install-libgap")
|
||||
;; Remove information on the build directory from sysinfo.gap.
|
||||
(substitute* "sysinfo.gap"
|
||||
(("GAP_BIN_DIR=\".*\"") "GAP_BIN_DIR=\"\"")
|
||||
(("GAP_LIB_DIR=\".*\"") "GAP_LIB_DIR=\"\"")
|
||||
(("GAP_CPPFLAGS=\".*\"") "GAP_CPPFLAGS=\"\""))
|
||||
(invoke "make" "install-gaproot")
|
||||
;; Copy the directory of compiled packages; the make target
|
||||
;; install-pkg is currently empty.
|
||||
(copy-recursively "pkg" (string-append share "/pkg"))))))))
|
||||
(home-page "https://www.gap-system.org/")
|
||||
(synopsis
|
||||
@@ -1770,7 +1774,7 @@ no more than about 20 bits long).")
|
||||
"0n8gj5iylfagdbaqirpykb01a9difsy4zl6qq55f0ghvazxqdvmn"))))
|
||||
(properties `((upstream-name . "dtt")))
|
||||
(build-system r-build-system)
|
||||
(home-page "https://www.r-project.org")
|
||||
(home-page "http://www.r-project.org")
|
||||
(synopsis "Discrete Trigonometric Transforms")
|
||||
(description
|
||||
"This package provides functions for 1D and 2D Discrete Cosine Transform
|
||||
@@ -1822,81 +1826,3 @@ mathematical floating-point libraries (libm). Amongst other features,
|
||||
it offers a certified infinity norm, an automatic polynomial
|
||||
implementer, and a fast Remez algorithm.")
|
||||
(license license:cecill-c)))
|
||||
|
||||
(define-public form
|
||||
;; using this commit as it removes some invalid/ambiguous license info
|
||||
(let ((commit "e7c52d3b07abe21f21718f5e70ee138e856f15ac")
|
||||
(revision "0"))
|
||||
(package
|
||||
(name "form")
|
||||
(version (git-version "4.3.0" revision commit))
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/vermaseren/form")
|
||||
(commit commit)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"15pjpn5s8d3sva18syhyymh5v1dijchk0xkf6d0m7cl2sj3qxxxq"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
(list #:configure-flags #~'("--enable-native=no")
|
||||
#:phases #~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'patch-src
|
||||
(lambda _
|
||||
(substitute* "check/examples.frm"
|
||||
;; skip test that causes memory leak and fails
|
||||
(("#pend_if valgrind\\?")
|
||||
"#pend_if 0"))
|
||||
(substitute* "sources/extcmd.c"
|
||||
(("/bin/sh")
|
||||
(string-append
|
||||
#$(this-package-input "bash-minimal")
|
||||
"/bin/sh")))))
|
||||
(add-after 'build 'build-doxygen
|
||||
(lambda _
|
||||
(with-directory-excursion "doc/doxygen"
|
||||
(invoke "make" "html"))))
|
||||
(add-after 'install 'install-docs
|
||||
(lambda _
|
||||
(let ((doc (string-append
|
||||
#$output "/share/doc/" #$name "-"
|
||||
#$version "/html")))
|
||||
(mkdir-p doc)
|
||||
(copy-recursively "doc/doxygen/html" doc)))))))
|
||||
(native-inputs (list autoconf automake doxygen ruby))
|
||||
(inputs (list bash-minimal))
|
||||
(home-page "https://www.nikhef.nl/~form/")
|
||||
(synopsis "Symbolic manipulation system for very big expressions")
|
||||
(description
|
||||
"FORM is a symbolic manipulation system. It reads symbolic expressions
|
||||
from files and executes symbolic/algebraic transformations upon them. The
|
||||
answers are returned in a textual mathematical representation. The size of
|
||||
the considered expressions in FORM is only limited by the available disk space
|
||||
and not by the available RAM.")
|
||||
;; XXX: Ignore this CVE to work around a name clash with the unrelated
|
||||
;; "neos/forms" package.
|
||||
(properties '((lint-hidden-cve . ("CVE-2021-32697"))))
|
||||
;; x86_64 only due to test failures on other platforms.
|
||||
;; Developers say other platforms are not "tier 1" supported:
|
||||
;; https://github.com/vermaseren/form/issues/426
|
||||
(supported-systems '("x86_64-linux"))
|
||||
(license license:gpl3+))))
|
||||
|
||||
(define-public parform
|
||||
(package
|
||||
(inherit form)
|
||||
(name "parform")
|
||||
(arguments
|
||||
(substitute-keyword-arguments (package-arguments form)
|
||||
((#:configure-flags flags)
|
||||
#~(cons* "--enable-parform=yes" #$flags))
|
||||
((#:phases phases)
|
||||
#~(modify-phases #$phases
|
||||
(add-before 'check 'mpi-setup
|
||||
#$%openmpi-setup)))))
|
||||
(inputs (list bash-minimal openmpi))
|
||||
(description (string-append (package-description form)
|
||||
" This package also includes
|
||||
@code{parform}, a version of FORM parallelized using OpenMPI."))))
|
||||
|
||||
+41
-43
@@ -7,12 +7,11 @@
|
||||
;;; Copyright © 2017, 2020, 2021, 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2018 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2019, 2020, 2023 Andreas Enge <andreas@enge.fr>
|
||||
;;; Copyright © 2019, 2020 Andreas Enge <andreas@enge.fr>
|
||||
;;; Copyright © 2019 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2020 Sergey Trofimov <sarg@sarg.org.ru>
|
||||
;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
|
||||
;;; Copyright © 2021 Petr Hodina <phodina@protonmail.com>
|
||||
;;; Copyright © 2023 Camilo Q.S. (Distopico) <distopico@riseup.net>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -39,7 +38,6 @@
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system go)
|
||||
#:use-module (guix build-system python)
|
||||
#:use-module (guix build-system pyproject)
|
||||
#:use-module (guix build-system trivial)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (gnu packages)
|
||||
@@ -723,35 +721,6 @@ file system.")
|
||||
"This package provides @command{fastboot}, a tool to upload file system images to Android devices.")
|
||||
(license license:asl2.0)))
|
||||
|
||||
(define-public sdkmanager
|
||||
(package
|
||||
(name "sdkmanager")
|
||||
(version "0.6.5")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "sdkmanager" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"11as7n2mj3nbqsqb3ivyv9985n73i022s748qvjg36cs8ig50afx"))))
|
||||
(build-system pyproject-build-system)
|
||||
(inputs (list python-requests python-argcomplete python-urllib3 gnupg))
|
||||
(arguments
|
||||
(list #:phases #~(modify-phases %standard-phases
|
||||
(add-before 'build 'patch-gnupg
|
||||
(lambda _
|
||||
(substitute* "sdkmanager.py"
|
||||
(("gpgv")
|
||||
(string-append #$(this-package-input "gnupg")
|
||||
"/bin/gpgv"))))))))
|
||||
(home-page "https://gitlab.com/fdroid/sdkmanager")
|
||||
(synopsis "Replacement for Android sdkmanager written in Python")
|
||||
(description
|
||||
"This package provides a drop-in replacement for sdkmanager from
|
||||
the Android SDK. It is written in Python and part of the F-Droid
|
||||
project. It implements the exact API of the Android sdkmanager command
|
||||
line. The project also attempts to maintain the same terminal output.")
|
||||
(license license:agpl3+)))
|
||||
|
||||
(define-public android-udev-rules
|
||||
(package
|
||||
(name "android-udev-rules")
|
||||
@@ -1090,17 +1059,36 @@ safest way, on a file image.")
|
||||
useful for reverse engineering, analysis of Android applications and more.")
|
||||
(license license:asl2.0)))
|
||||
|
||||
(define-public python-android-backup
|
||||
(package
|
||||
(name "python-android-backup")
|
||||
(version "0.2.0")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "android_backup" version))
|
||||
(sha256
|
||||
(base32
|
||||
"15wb2lyjj2fpf7bhvmgpqn0mglsjj11zfvbjycx7mnidisgnljw6"))))
|
||||
(build-system python-build-system)
|
||||
(propagated-inputs (list python-pycrypto))
|
||||
(home-page "https://github.com/bluec0re/android-backup-tools")
|
||||
(synopsis "Unpack and repack android backups")
|
||||
(description "This package allows you to unpack and repack Android
|
||||
backups. It supports encrypted archives.")
|
||||
(license license:asl2.0)))
|
||||
|
||||
(define-public python-miio
|
||||
(package
|
||||
(name "python-miio")
|
||||
(version "0.5.12")
|
||||
(version "0.5.11")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (pypi-uri "python-miio" version))
|
||||
(sha256
|
||||
(base32
|
||||
"05kc0icap3a4iw4910zfqi61zphcf6x958v2b5x68fy51ld3b704"))))
|
||||
"1dyzzywfa5h6q8clmzxsqmszlby8757ajmvkhdyvq6719z4bn46n"))))
|
||||
(build-system python-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
@@ -1110,6 +1098,12 @@ useful for reverse engineering, analysis of Android applications and more.")
|
||||
(substitute* "setup.py"
|
||||
(("cryptography>=35")
|
||||
"cryptography"))))
|
||||
(add-after 'unpack 'adjust-for-click-8
|
||||
(lambda _
|
||||
(substitute* '("miio/integrations/vacuum/roborock/vacuum.py"
|
||||
"miio/integrations/vacuum/roborock/vacuum_cli.py")
|
||||
(("resultcallback")
|
||||
"result_callback"))))
|
||||
(replace 'check
|
||||
(lambda* (#:key tests? #:allow-other-keys)
|
||||
(when tests?
|
||||
@@ -1122,7 +1116,8 @@ useful for reverse engineering, analysis of Android applications and more.")
|
||||
python-sphinx-rtd-theme
|
||||
python-sphinxcontrib-apidoc))
|
||||
(propagated-inputs
|
||||
(list python-appdirs
|
||||
(list python-android-backup
|
||||
python-appdirs
|
||||
python-attrs
|
||||
python-click
|
||||
python-construct
|
||||
@@ -1200,22 +1195,25 @@ main repository.")
|
||||
(define-public fdroidcl
|
||||
(package
|
||||
(name "fdroidcl")
|
||||
(version "0.7.0")
|
||||
(version "0.5.0")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/mvdan/fdroidcl")
|
||||
(commit (string-append "v" version))))
|
||||
(url "https://github.com/mvdan/fdroidcl")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1s3fszlyyab9gbdrg52zcbafsb1mgb770skg7b3gj7f3pzfnra5n"))))
|
||||
(base32 "1rxcdyy2j34z0ql9d62w7ivsch9xihjnpb1z9kgy9q46vl8zhhy0"))))
|
||||
(build-system go-build-system)
|
||||
(arguments
|
||||
`(#:import-path "mvdan.cc/fdroidcl"
|
||||
#:tests? #f ;requires internet access
|
||||
#:tests? #f ; TODO: Inputs missing.
|
||||
#:install-source? #f))
|
||||
(inputs (list go-github-com-kr-pretty go-github-com-schollz-progressbar-v3))
|
||||
(inputs
|
||||
(list go-github-com-kr-pretty))
|
||||
;(native-inputs
|
||||
; `(("go-github-com-rogpeppe-go-internal-testscript"
|
||||
; ,go-github-com-rogpeppe-go-internal-testscript)))
|
||||
(synopsis "F-Droid desktop client")
|
||||
(description
|
||||
"While the Android client integrates with the system with regular update
|
||||
@@ -1291,7 +1289,7 @@ Java bytecode, which simplifies the analysis of Android applications.")
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
(list #:tests? #f)) ;there are no tests
|
||||
(inputs (list qtbase-5 fuse libxkbcommon))
|
||||
(inputs (list qtbase-5 fuse-3 libxkbcommon))
|
||||
(native-inputs (list qttools-5 openssl readline))
|
||||
(home-page "https://whoozle.github.io/android-file-transfer-linux/")
|
||||
(synopsis "MTP client for Android devices")
|
||||
|
||||
+102
-72
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2015, 2017, 2023 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2015, 2017 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2018–2021 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2019 Pkill -9 <pkill9@runbox.com>
|
||||
;;; Copyright © 2020, 2021, 2022 Vinicius Monego <monego@posteo.net>
|
||||
@@ -23,7 +23,6 @@
|
||||
(define-module (gnu packages animation)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (guix git-download)
|
||||
#:use-module (guix utils)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
@@ -83,8 +82,7 @@
|
||||
`(#:configure-flags
|
||||
(list
|
||||
"-Dlog=true"
|
||||
"-Dtest=true"
|
||||
"-Dcpp_std=gnu++17")))
|
||||
"-Dtest=true")))
|
||||
(native-inputs
|
||||
(list googletest pkg-config))
|
||||
(synopsis "Lottie Animation Library")
|
||||
@@ -94,7 +92,7 @@ rendering vector based animations and art in realtime.")
|
||||
(license license:expat)))
|
||||
|
||||
;; ETL, synfig, and Synfig Studio are updated in tandem.
|
||||
(define synfig-version "1.4.4")
|
||||
(define synfig-version "1.2.2")
|
||||
|
||||
(define-public etl
|
||||
(package
|
||||
@@ -102,15 +100,12 @@ rendering vector based animations and art in realtime.")
|
||||
(version synfig-version)
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://github.com/synfig/synfig"
|
||||
"/releases/download/v" version
|
||||
"/ETL-" version ".tar.gz"))
|
||||
(uri (string-append "mirror://sourceforge/synfig/releases/"
|
||||
version "/source/ETL-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1jnahpxvrdxrll7b7av3zxabm5j3nlz6m3vg4sib2278v1wf91yc"))))
|
||||
"12sd8pz8l5xcxcmapkvih3brihdhdb6xmxisr9a415lydid9rh8d"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs (list glibmm-2.64))
|
||||
(native-inputs (list pkg-config))
|
||||
(home-page "https://www.synfig.org")
|
||||
(synopsis "Extended C++ template library")
|
||||
(description
|
||||
@@ -125,37 +120,68 @@ C++ @dfn{Standard Template Library} (STL).")
|
||||
(version synfig-version)
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://github.com/synfig/synfig"
|
||||
"/releases/download/v" version
|
||||
"/synfig-" version ".tar.gz"))
|
||||
(uri (string-append "mirror://sourceforge/synfig/releases/"
|
||||
version "/source/synfig-" version
|
||||
".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"01kgfmjfjk5y0v9ldmxzc8zzvbiaakz7nzg4hkj24gj3j6h8566d"))))
|
||||
"1vy27kl68sbg41sfasa58k3p2nc1xfalvzk3k9gich9h90rpnpsz"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags
|
||||
;; The Boost library path is taken from the value of BOOST_LDFLAGS.
|
||||
(list (string-append "BOOST_LDFLAGS=-L"
|
||||
(assoc-ref %build-inputs "boost")
|
||||
"/lib"))
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'fix-boost-build-error
|
||||
;; A chain of Boost headers leads to this error: "make_array" is
|
||||
;; not a member of "boost::serialization". This can be avoided by
|
||||
;; loading the "array_wrapper" header first.
|
||||
(lambda _
|
||||
(substitute* "src/synfig/valuenodes/valuenode_dynamic.cpp"
|
||||
(("#include <boost/numeric/odeint/integrate/integrate.hpp>" match)
|
||||
(string-append
|
||||
"#include <boost/serialization/array_wrapper.hpp>\n" match)))
|
||||
#t))
|
||||
(add-after 'unpack 'adapt-to-libxml++-changes
|
||||
(lambda _
|
||||
(substitute* "configure"
|
||||
(("libxml\\+\\+-2\\.6") "libxml++-3.0"))
|
||||
(substitute* (append (find-files "src/modules/" "\\.cpp$")
|
||||
(find-files "src/synfig/" "\\.(cpp|h)$"))
|
||||
(("add_child\\(") "add_child_element(")
|
||||
(("get_child_text\\(") "get_first_child_text(")
|
||||
(("set_child_text\\(") "set_first_child_text(")
|
||||
(("remove_child\\(") "remove_node("))
|
||||
(substitute* "src/modules/mod_svg/svg_parser.cpp"
|
||||
(("xmlpp::Node::NodeList") "xmlpp::Node::const_NodeList"))
|
||||
#t)))))
|
||||
(inputs
|
||||
(list boost
|
||||
libdv
|
||||
libjpeg-turbo
|
||||
libpng
|
||||
libmng
|
||||
zlib))
|
||||
;; synfig.pc lists the following as required: Magick++ libavcodec
|
||||
;; libavformat libswscale freetype2 fontconfig OpenEXR ETL glibmm-2.4
|
||||
;; giomm-2.4 libxml++-2.6 sigc++-2.0 cairo fftw3 pango pangocairo mlt++
|
||||
`(("boost" ,boost)
|
||||
("ffmpeg" ,ffmpeg)
|
||||
("libdv" ,libdv)
|
||||
("libjpeg" ,libjpeg-turbo)
|
||||
("libpng" ,libpng)
|
||||
("libmng" ,libmng)
|
||||
("zlib" ,zlib)))
|
||||
;; synfig.pc lists the following as required: Magick++ freetype2
|
||||
;; fontconfig fftw OpenEXR ETL glibmm-2.4 giomm-2.4 libxml++-3.0 sigc++-2.0
|
||||
;; cairo pango pangocairo mlt++
|
||||
(propagated-inputs
|
||||
(list cairo
|
||||
etl
|
||||
ffmpeg-4
|
||||
fftw
|
||||
fontconfig
|
||||
freetype
|
||||
glibmm-2.64
|
||||
imagemagick
|
||||
libxml++-2
|
||||
libsigc++
|
||||
mlt-6
|
||||
openexr-2
|
||||
pango))
|
||||
`(("cairo" ,cairo)
|
||||
("etl" ,etl)
|
||||
("fftw" ,fftw)
|
||||
("fontconfig" ,fontconfig)
|
||||
("freetype" ,freetype)
|
||||
("glibmm" ,glibmm)
|
||||
("imagemagick" ,imagemagick)
|
||||
("libxml++" ,libxml++)
|
||||
("libsigc++" ,libsigc++)
|
||||
("mlt" ,mlt-6)
|
||||
("openexr" ,openexr-2)
|
||||
("pango" ,pango)))
|
||||
(native-inputs
|
||||
(list intltool pkg-config))
|
||||
(home-page "https://www.synfig.org")
|
||||
@@ -172,24 +198,32 @@ for tweening, preventing the need to hand-draw each frame.")
|
||||
(version synfig-version)
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://github.com/synfig/synfig"
|
||||
"/releases/download/v" version
|
||||
"/synfigstudio-" version ".tar.gz"))
|
||||
(uri (string-append "mirror://sourceforge/synfig/releases/"
|
||||
version "/source/synfigstudio-" version
|
||||
".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"07xjgs1qw0rwpihpcspj92rzwy5zizi86l9x2x7w6sysrj0wd4w8"))))
|
||||
"1ql92kh9z8w2j9yi3pr7hn7wh2r2j35xynwv9xlwyd7niackgykn"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
'(begin
|
||||
(substitute* "src/synfigapp/pluginmanager.cpp"
|
||||
(("xmlpp::Node\\* n =") "const xmlpp::Node* n =")
|
||||
(("xmlpp::Node::NodeList") "xmlpp::Node::const_NodeList"))
|
||||
#t))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
;; This fixes the file chooser crash that happens with GTK 3.
|
||||
(add-after 'install 'wrap-program
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(let* ((gtk (assoc-ref inputs "gtk+"))
|
||||
(gtk-share (string-append gtk "/share")))
|
||||
(wrap-program (string-append #$output "/bin/synfigstudio")
|
||||
`("XDG_DATA_DIRS" ":" prefix (,gtk-share)))))))))
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
;; This fixes the file chooser crash that happens with GTK 3.
|
||||
(add-after 'install 'wrap-program
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(gtk (assoc-ref inputs "gtk+"))
|
||||
(gtk-share (string-append gtk "/share")))
|
||||
(wrap-program (string-append out "/bin/synfigstudio")
|
||||
`("XDG_DATA_DIRS" ":" prefix (,gtk-share)))
|
||||
#t))))))
|
||||
(inputs
|
||||
(list gtkmm-3 gtk+ libsigc++ synfig))
|
||||
(native-inputs
|
||||
@@ -261,7 +295,7 @@ contains the graphical user interface for synfig.")
|
||||
("python" ,python-wrapper)))
|
||||
(inputs
|
||||
`(("agg" ,agg)
|
||||
("at-spi2-core" ,at-spi2-core)
|
||||
("atk" ,atk)
|
||||
("boost" ,boost)
|
||||
("curl" ,curl)
|
||||
("ffmpeg" ,ffmpeg-2.8)
|
||||
@@ -291,7 +325,7 @@ audio or video backends, ensuring good performance.")
|
||||
(define-public lightspark
|
||||
(package
|
||||
(name "lightspark")
|
||||
(version "0.8.7")
|
||||
(version "0.8.6")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
@@ -300,7 +334,7 @@ audio or video backends, ensuring good performance.")
|
||||
(commit version)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "156yd79dbs6lzp5jc2zd0knw6bk0g8qdm8icp7pkcn95vfvxyzx9"))))
|
||||
(base32 "0v7d7vwb0xqkk3v8dyks0wyk52ga57v5lg93y74v1d2wh7spmmzw"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f ;requires Adobe Flex SDK, see README.tests
|
||||
@@ -340,6 +374,7 @@ audio or video backends, ensuring good performance.")
|
||||
pcre2
|
||||
rtmpdump
|
||||
sdl2
|
||||
sdl2-mixer
|
||||
zlib))
|
||||
(home-page "https://lightspark.github.io/")
|
||||
(synopsis "Flash player implementation")
|
||||
@@ -442,24 +477,19 @@ waveform until they line up with the proper sounds.")
|
||||
(inputs
|
||||
(list qtbase-5 qtxmlpatterns qtmultimedia-5 qtsvg-5))
|
||||
(arguments
|
||||
(list
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'fix-tests
|
||||
(lambda _
|
||||
;; Its bundled catch2-2.5.0 fails to build with glibc-2.35.
|
||||
(copy-file #$(file-append catch2 "/include/catch2/catch.hpp")
|
||||
"tests/src/catch.hpp")))
|
||||
(replace 'configure
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
(invoke "qmake" (string-append "PREFIX=" out)))))
|
||||
(add-after 'install 'wrap-executable
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out"))
|
||||
(plugin-path (getenv "QT_PLUGIN_PATH")))
|
||||
(wrap-program (string-append out "/bin/pencil2d")
|
||||
`("QT_PLUGIN_PATH" ":" prefix (,plugin-path)))))))))
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(replace 'configure
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
(invoke "qmake" (string-append "PREFIX=" out)))))
|
||||
(add-after 'install 'wrap-executable
|
||||
(lambda* (#:key inputs outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out"))
|
||||
(plugin-path (getenv "QT_PLUGIN_PATH")))
|
||||
(wrap-program (string-append out "/bin/pencil2d")
|
||||
`("QT_PLUGIN_PATH" ":" prefix (,plugin-path)))
|
||||
#t))))))
|
||||
(home-page "https://www.pencil2d.org")
|
||||
(synopsis "Make 2D hand-drawn animations")
|
||||
(description
|
||||
|
||||
+10
-12
@@ -27,17 +27,15 @@
|
||||
(package
|
||||
(name "anthy")
|
||||
(version "9100h")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
;; The URI does not appear to be easily guessable. For
|
||||
;; example, you cannot download version "9100g" simply
|
||||
;; by replacing "9100h" in the URI.
|
||||
(uri (list (string-append "https://ftp.jaist.ac.jp/pub/Linux/Gentoo/"
|
||||
"distfiles/31/anthy-9100h.tar.gz")
|
||||
"https://osdn.dl.osdn.net/anthy/37536/anthy-9100h.tar.gz"))
|
||||
(sha256
|
||||
(base32 "0ism4zibcsa5nl77wwi12vdsfjys3waxcphn1p5s7d0qy1sz0mnj"))))
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
;; The URI does not appear to be easily guessable. For
|
||||
;; example, you cannot download version "9100g" simply
|
||||
;; by replacing "9100h" in the URI.
|
||||
(uri "http://dl.osdn.jp/anthy/37536/anthy-9100h.tar.gz")
|
||||
(sha256
|
||||
(base32
|
||||
"0ism4zibcsa5nl77wwi12vdsfjys3waxcphn1p5s7d0qy1sz0mnj"))))
|
||||
(build-system gnu-build-system)
|
||||
;; Anthy also contains elisp modules for using anthy within Emacs.
|
||||
;; However, these modules are incompatible with the latest version
|
||||
@@ -57,7 +55,7 @@
|
||||
hiragana text to mixed kana and kanji. It is written in the C
|
||||
programming language. Anthy stores personal customizations (words it
|
||||
has learned from the user's input, words the user has explicitly
|
||||
added, etc.) in the @file{~/.anthy/} directory. This package contains the
|
||||
added, etc.) in the ~/.anthy/ directory. This package contains the
|
||||
anthy C libraries, the cannadic and alt-cannadic kana dictionaries, as
|
||||
well as command-line tools for using anthy and managing
|
||||
dictionaries.")
|
||||
|
||||
@@ -45,14 +45,14 @@
|
||||
(define-public clamav
|
||||
(package
|
||||
(name "clamav")
|
||||
(version "0.103.8")
|
||||
(version "0.103.6")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://www.clamav.net/downloads/production/"
|
||||
"clamav-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0gwcikzfdswrdh5vhh3x4lx8w92476fmb7im7phnv4r7x5pdljbg"))
|
||||
"0cxsv5m9pqxxb56qd7hlj11pwmdgm07s3msh3hxk47czq4yjx8da"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
'(begin
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
;;; Copyright © 2014, 2015 Mark H Weaver <mhw@netris.org>
|
||||
;;; Copyright © 2017, 2019 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2022 Paul A. Patience <paul@apatience.com>
|
||||
;;; Copyright © 2023 B. Wilson <elaexuotee@wilsonb.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -27,8 +26,6 @@
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system trivial)
|
||||
#:use-module (gnu packages fontutils)
|
||||
#:use-module (gnu packages gettext)
|
||||
#:use-module (gnu packages maths)
|
||||
#:use-module (gnu packages pcre)
|
||||
@@ -79,44 +76,3 @@
|
||||
"GNU APL is a free interpreter for the programming language APL. It is
|
||||
an implementation of the ISO standard 13751.")
|
||||
(license license:gpl3+))))
|
||||
|
||||
(define-public font-apl2741-unicode
|
||||
(let ((commit "1e11efae38e5095bfe49a786b111d563e83dad03"))
|
||||
(package
|
||||
(name "font-apl2741-unicode")
|
||||
(version "1668049300")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/abrudz/APL2741.git")
|
||||
(commit commit)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "0i1yk1x99lr2swlbq9r7dny5w70zwiwi8lpfcw4n7k7pfbw0xh7y"))))
|
||||
(build-system trivial-build-system)
|
||||
(native-inputs (list fontforge))
|
||||
(arguments
|
||||
`(#:modules ((guix build utils))
|
||||
#:builder
|
||||
(begin
|
||||
(use-modules (guix build utils))
|
||||
(let* ((source (assoc-ref %build-inputs "source"))
|
||||
(out (assoc-ref %outputs "out"))
|
||||
(dest (string-append out "/share/fonts/truetype"))
|
||||
(fontforge (string-append
|
||||
(assoc-ref %build-inputs "fontforge")
|
||||
"/bin/fontforge")))
|
||||
(mkdir-p dest)
|
||||
(invoke fontforge "-lang=ff" "-c" "Open($1); Generate($2)"
|
||||
(string-append source "/APL2741.sfd")
|
||||
(string-append dest "/APL2741.ttf"))))))
|
||||
(synopsis "APL2741 Unicode font")
|
||||
(home-page "https://abrudz.github.io/APL2741/")
|
||||
(description "APL font based on Adrian Smith's IBM Selectric APL2741
|
||||
golf-ball font. It supports most special characters used by popular APL
|
||||
implementations, some additional mathematical and typographical symbols,
|
||||
single line drawing characters, as well as the full Unicode APL range,
|
||||
including both uppercase and lowercase underscored alphabets, as-of-yet unused
|
||||
symbols, and almost all Latin-1 accented letters.")
|
||||
(license license:unlicense))))
|
||||
|
||||
@@ -1,202 +0,0 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2022 Hilton Chain <hako@ultrarare.space>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
;;; GNU Guix is free software; you can redistribute it and/or modify it
|
||||
;;; under the terms of the GNU General Public License as published by
|
||||
;;; the Free Software Foundation; either version 3 of the License, or (at
|
||||
;;; your option) any later version.
|
||||
;;;
|
||||
;;; GNU Guix is distributed in the hope that it will be useful, but
|
||||
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
;;; GNU General Public License for more details.
|
||||
;;;
|
||||
;;; You should have received a copy of the GNU General Public License
|
||||
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
(define-module (gnu packages apparmor)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (gnu packages autotools)
|
||||
#:use-module (gnu packages base)
|
||||
#:use-module (gnu packages bison)
|
||||
#:use-module (gnu packages dejagnu)
|
||||
#:use-module (gnu packages flex)
|
||||
#:use-module (gnu packages gawk)
|
||||
#:use-module (gnu packages gettext)
|
||||
#:use-module (gnu packages linux)
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages python)
|
||||
#:use-module (gnu packages python-xyz)
|
||||
#:use-module (gnu packages ruby)
|
||||
#:use-module (gnu packages swig)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (guix git-download)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix utils))
|
||||
|
||||
(define-public libapparmor
|
||||
(package
|
||||
(name "libapparmor")
|
||||
(version "3.1.2")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://gitlab.com/apparmor/apparmor")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1h77a7ww0rxfv5nsi1iy4fffklxdr2vq6r7kdsqm15yysglhbjyi"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
(list #:configure-flags
|
||||
#~(list (string-append "LDFLAGS=-Wl,-rpath=" #$output "/lib")
|
||||
"--with-perl" "--with-python" "--with-ruby")
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'fix-paths
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(for-each patch-shebang
|
||||
'("common/list_af_names.sh"
|
||||
"common/list_capabilities.sh"))
|
||||
(for-each (lambda (file)
|
||||
(substitute* file
|
||||
(("/usr") "")
|
||||
(("/bin/\\<(pod2man|pod2html|podchecker|prove)\\>" path)
|
||||
(search-input-file inputs path))
|
||||
(("/include/linux/capability.h" path)
|
||||
(search-input-file inputs path))))
|
||||
'("common/Make-po.rules"
|
||||
"common/Make.rules"
|
||||
"binutils/Makefile"
|
||||
"parser/Makefile"
|
||||
"parser/tst/Makefile"
|
||||
"profiles/Makefile"
|
||||
"utils/Makefile"
|
||||
"utils/python-tools-setup.py"
|
||||
"utils/vim/Makefile"))))
|
||||
(add-after 'fix-paths 'change-directory
|
||||
(lambda _
|
||||
(chdir "libraries/libapparmor"))))))
|
||||
(native-inputs
|
||||
(list autoconf
|
||||
automake
|
||||
bison
|
||||
dejagnu
|
||||
flex
|
||||
libtool
|
||||
perl
|
||||
python-minimal
|
||||
ruby
|
||||
swig
|
||||
which))
|
||||
(home-page "https://apparmor.net")
|
||||
(synopsis "Linux kernel security module")
|
||||
(description
|
||||
"AppArmor is an effective and easy-to-use Linux application security
|
||||
system.
|
||||
|
||||
AppArmor proactively protects the operating system and applications from
|
||||
external or internal threats, even zero-day attacks, by enforcing good
|
||||
behavior and preventing both known and unknown application flaws from being
|
||||
exploited.
|
||||
|
||||
AppArmor supplements the traditional Unix discretionary access control (DAC)
|
||||
model by providing mandatory access control (MAC). It has been included in
|
||||
the mainline Linux kernel since version 2.6.36 and its development has been
|
||||
supported by Canonical since 2009.")
|
||||
(license license:lgpl2.1)
|
||||
(supported-systems (filter (lambda (system)
|
||||
(string-suffix? "-linux" system))
|
||||
%supported-systems))))
|
||||
|
||||
(define-public apparmor
|
||||
(let ((base libapparmor))
|
||||
(package
|
||||
(inherit base)
|
||||
(name "apparmor")
|
||||
(arguments
|
||||
(append
|
||||
(list #:make-flags
|
||||
#~(list (string-append "CC=" #$(cc-for-target))
|
||||
(string-append "DESTDIR=" #$output)
|
||||
"USE_SYSTEM=1"
|
||||
;; No need to run the linter
|
||||
"PYFLAKES=true"))
|
||||
(substitute-keyword-arguments (package-arguments base)
|
||||
((#:phases phases)
|
||||
#~(modify-phases #$phases
|
||||
(delete 'configure)
|
||||
;; apparmor-binutils
|
||||
(replace 'change-directory
|
||||
(lambda _
|
||||
(chdir "binutils")))
|
||||
|
||||
;; apparmor-parser
|
||||
(add-after 'install 'chdir-parser
|
||||
(lambda _
|
||||
(chdir "../parser")))
|
||||
(add-after 'chdir-parser 'patch-source-shebangs-parser
|
||||
(assoc-ref %standard-phases 'patch-source-shebangs))
|
||||
(add-after 'patch-source-shebangs-parser 'build-parser
|
||||
(assoc-ref %standard-phases 'build))
|
||||
(add-after 'build-parser 'check-parser
|
||||
(assoc-ref %standard-phases 'check))
|
||||
(add-after 'check-parser 'install-parser
|
||||
(assoc-ref %standard-phases 'install))
|
||||
|
||||
;; apparmor-utils
|
||||
;; FIXME: Tests required Python library from this package
|
||||
;; (itself).
|
||||
(add-after 'install-parser 'chdir-utils
|
||||
(lambda _
|
||||
(chdir "../utils")
|
||||
;; Fix paths to installed policygroups and templates for
|
||||
;; easyprof.
|
||||
(substitute* "easyprof/easyprof.conf"
|
||||
(("/usr") #$output))))
|
||||
(add-after 'chdir-utils 'build-utils
|
||||
(assoc-ref %standard-phases 'build))
|
||||
(add-after 'build-utils 'install-utils
|
||||
(assoc-ref %standard-phases 'install))
|
||||
|
||||
;; apparmor-profiles
|
||||
;; FIXME: Tests need an AppArmor-enabled system.
|
||||
(add-after 'install-utils 'chdir-profiles
|
||||
(lambda _
|
||||
(chdir "../profiles")))
|
||||
(add-after 'chdir-profiles 'build-profiles
|
||||
(assoc-ref %standard-phases 'build))
|
||||
(add-after 'check-build 'install-profiles
|
||||
(assoc-ref %standard-phases 'install)))))))
|
||||
(propagated-inputs
|
||||
(list libapparmor))
|
||||
;; Python module `readline' needed
|
||||
(native-inputs
|
||||
(list bison flex gettext-minimal perl python which))
|
||||
(license license:gpl2))))
|
||||
|
||||
(define-public pam-apparmor
|
||||
(let ((base apparmor))
|
||||
(package
|
||||
(inherit base)
|
||||
(name "pam-apparmor")
|
||||
(arguments
|
||||
(append
|
||||
(list #:tests? #f) ;no tests
|
||||
(substitute-keyword-arguments (package-arguments base)
|
||||
((#:phases phases)
|
||||
#~(modify-phases #$phases
|
||||
(delete 'chdir-parser)
|
||||
(delete 'chdir-utils)
|
||||
(delete 'chdir-profiles)
|
||||
(replace 'change-directory
|
||||
(lambda _
|
||||
(chdir "changehat/pam_apparmor"))))))))
|
||||
(native-inputs (list pkg-config perl which))
|
||||
(inputs (list libapparmor linux-pam))
|
||||
(license license:bsd-3))))
|
||||
+4
-21
@@ -1,7 +1,6 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2013 Cyril Roelandt <tipecaml@gmail.com>
|
||||
;;; Copyright © 2014, 2015, 2018 Mark H Weaver <mhw@netris.org>
|
||||
;;; Copyright © 2023 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -22,8 +21,6 @@
|
||||
#:use-module ((guix licenses) #:prefix l:)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages perl)
|
||||
@@ -49,24 +46,10 @@
|
||||
;; Sometimes we end up with two processes concurrently trying to make
|
||||
;; 'libmod_test.la': <http://hydra.gnu.org/build/60266/nixlog/2/raw>.
|
||||
;; Thus, build sequentially.
|
||||
`(#:parallel-build? #f
|
||||
#:parallel-tests? #f
|
||||
,@(if (target-ppc32?)
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'patch-sources
|
||||
(lambda* (#:key inputs native-inputs #:allow-other-keys)
|
||||
(invoke "patch" "-p1" "--force" "--input"
|
||||
(assoc-ref (or native-inputs inputs)
|
||||
"atomics-patch"))))))
|
||||
'())))
|
||||
'(#:parallel-build? #f
|
||||
#:parallel-tests? #f))
|
||||
(inputs (list perl libltdl))
|
||||
(native-inputs
|
||||
`(,@(if (target-ppc32?)
|
||||
`(("atomics-patch"
|
||||
,(local-file (search-patch "apr-fix-atomics.patch"))))
|
||||
'())))
|
||||
(home-page "https://apr.apache.org/")
|
||||
(home-page "http://apr.apache.org/")
|
||||
(synopsis "The Apache Portable Runtime Library")
|
||||
(description
|
||||
"The mission of the Apache Portable Runtime (APR) project is to create and
|
||||
@@ -113,7 +96,7 @@ around or take advantage of platform-specific deficiencies or features.")
|
||||
;; to run it. See
|
||||
;; <http://lists.gnu.org/archive/html/guix-devel/2014-03/msg00261.html>.
|
||||
#:parallel-tests? #f))
|
||||
(home-page "https://apr.apache.org/")
|
||||
(home-page "http://apr.apache.org/")
|
||||
(synopsis "One of the Apache Portable Runtime Library companions")
|
||||
(description
|
||||
"APR-util provides a number of helpful abstractions on top of APR.")
|
||||
|
||||
+196
-172
@@ -1,7 +1,6 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2019 L p R n d n <guix@lprndn.info>
|
||||
;;; Copyright © 2021 Guillaume Le Vaillant <glv@posteo.net>
|
||||
;;; Copyright © 2023 Ahmad Draidi <a.r.draidi@redscript.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -20,149 +19,151 @@
|
||||
|
||||
(define-module (gnu packages arcan)
|
||||
#:use-module (guix build-system cmake)
|
||||
#:use-module (guix build-system meson)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (guix git-download)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix utils)
|
||||
#:use-module (gnu packages apr)
|
||||
#:use-module (gnu packages audio)
|
||||
#:use-module (gnu packages autotools)
|
||||
#:use-module (gnu packages bash)
|
||||
#:use-module (gnu packages compression)
|
||||
#:use-module (gnu packages databases)
|
||||
#:use-module (gnu packages fonts)
|
||||
#:use-module (gnu packages fontutils)
|
||||
#:use-module (gnu packages freedesktop)
|
||||
#:use-module (gnu packages gl)
|
||||
#:use-module (gnu packages glib)
|
||||
#:use-module (gnu packages gtk)
|
||||
#:use-module (gnu packages image)
|
||||
#:use-module (gnu packages libusb)
|
||||
#:use-module (gnu packages linux)
|
||||
#:use-module (gnu packages lua)
|
||||
#:use-module (gnu packages ocr)
|
||||
#:use-module (gnu packages onc-rpc)
|
||||
#:use-module (gnu packages pcre)
|
||||
#:use-module (gnu packages pdf)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages ruby)
|
||||
#:use-module (gnu packages sdl)
|
||||
#:use-module (gnu packages speech)
|
||||
#:use-module (gnu packages sqlite)
|
||||
#:use-module (gnu packages tls)
|
||||
#:use-module (gnu packages video)
|
||||
#:use-module (gnu packages vnc)
|
||||
#:use-module (gnu packages web)
|
||||
#:use-module (gnu packages xdisorg)
|
||||
#:use-module (gnu packages xorg)
|
||||
#:use-module (srfi srfi-1))
|
||||
|
||||
(define-public arcan
|
||||
(package
|
||||
(name "arcan")
|
||||
(version "0.6.2.1")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(file-name (git-file-name name version))
|
||||
(uri (git-reference
|
||||
(url "https://github.com/letoram/arcan")
|
||||
(commit version)))
|
||||
(sha256
|
||||
(base32
|
||||
"14wwb7mgq8ab39dfprps7hzdz7a37r3cl8dc5q6m1r8n5daxyzgc"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
;; Remove some bundled packages.
|
||||
#~(begin
|
||||
(delete-file-recursively "external/git")
|
||||
(delete-file-recursively "external/lua")
|
||||
(delete-file-recursively "external/sqlite")))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
(list #:configure-flags #~'("-DBUILD_PRESET=everything"
|
||||
"-DDISTR_TAG='Guix'")
|
||||
#:phases #~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'patch-paths
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(substitute* "src/platform/posix/paths.c"
|
||||
(("/usr/local")
|
||||
(assoc-ref outputs "out")))))
|
||||
;; Normally, it tries to fetch patched openal with git
|
||||
;; but copying files manually in the right place seems
|
||||
;; to work too.
|
||||
(add-after 'unpack 'prepare-static-openal
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(let ((arcan-openal (assoc-ref inputs
|
||||
"arcan-openal")))
|
||||
(copy-recursively arcan-openal
|
||||
"external/git/openal")) #t))
|
||||
(add-after 'prepare-static-openal 'generate-man
|
||||
(lambda _
|
||||
(with-directory-excursion "doc"
|
||||
(invoke "ruby" "docgen.rb" "mangen")) #t))
|
||||
(add-before 'configure 'chdir
|
||||
(lambda _
|
||||
(chdir "src") #t)))
|
||||
#:tests? #f))
|
||||
(inputs `(("bash-minimal" ,bash-minimal)
|
||||
("espeak" ,espeak)
|
||||
("ffmpeg" ,ffmpeg)
|
||||
("freetype" ,freetype)
|
||||
("gumbo-parser" ,gumbo-parser)
|
||||
("harfbuzz" ,harfbuzz)
|
||||
("jbig2dec" ,jbig2dec)
|
||||
("leptonica" ,leptonica)
|
||||
("libdrm" ,libdrm)
|
||||
("libjpeg-turbo" ,libjpeg-turbo)
|
||||
("libseccomp" ,libseccomp)
|
||||
("libusb" ,libusb)
|
||||
("libvnc" ,libvnc)
|
||||
("libxkbcommon" ,libxkbcommon)
|
||||
("luajit" ,luajit)
|
||||
("mupdf" ,mupdf)
|
||||
("openal" ,openal)
|
||||
("openjpeg" ,openjpeg)
|
||||
("sdl2" ,sdl2)
|
||||
("sqlite" ,sqlite)
|
||||
("tesseract-ocr" ,tesseract-ocr)
|
||||
("vlc" ,vlc)
|
||||
("wayland" ,wayland)
|
||||
("wayland-protocols" ,wayland-protocols)
|
||||
("xcb-util" ,xcb-util)
|
||||
("xcb-util-wm" ,xcb-util-wm)
|
||||
("zlib" ,zlib)
|
||||
;; To build arcan_lwa, we need a patched version of openal.
|
||||
;; https://github.com/letoram/arcan/wiki/packaging
|
||||
("arcan-openal"
|
||||
,(origin
|
||||
(method git-fetch)
|
||||
(file-name "arcan-openal-0.6.2")
|
||||
(uri (git-reference (url
|
||||
"https://github.com/letoram/openal")
|
||||
(commit "0.6.2")))
|
||||
(sha256
|
||||
(base32
|
||||
"0vg3fda47q2dk1n43ijcc64q39z044pa8h6scmfyi22g6r6bfw2z"))))))
|
||||
(native-inputs (list pkg-config ruby)) ;For documentation and testing
|
||||
(home-page "https://arcan-fe.com")
|
||||
(synopsis "Display server, multimedia framework and game engine")
|
||||
(description
|
||||
"Arcan is a development framework for creating virtually
|
||||
(let ((commit "b4dd1fbd1938492ff4b269189d3c8524be7450a9")
|
||||
(revision "1"))
|
||||
(package
|
||||
(name "arcan")
|
||||
(version (git-version "0.5.5.2" revision commit))
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(file-name (git-file-name name version))
|
||||
(uri (git-reference
|
||||
(url "https://github.com/letoram/arcan")
|
||||
(commit commit)))
|
||||
(sha256
|
||||
(base32 "1pd0avlzc2rig1hd37zbhc7r2s6fjzdhshfg9l9cfzibl7caclyw"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags '("-DCMAKE_C_FLAGS=-fcommon"
|
||||
"-DVIDEO_PLATFORM=egl-dri" "-DBUILTIN_LUA=off"
|
||||
"-DSTATIC_OPENAL=off""-DENABLE_LWA=on"
|
||||
"-DSTATIC_SQLITE3=off" "-DSTATIC_FREETYPE=off"
|
||||
"-DSHMIF_TUI_ACCEL=on")
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'fix-cmake-paths
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(substitute* "src/platform/cmake/modules/FindGBMKMS.cmake"
|
||||
(("/usr/local/include/libdrm")
|
||||
(search-input-directory inputs "include/libdrm")))
|
||||
(substitute* "src/platform/cmake/modules/FindAPR.cmake"
|
||||
(("/usr/local/apr/include/apr-1")
|
||||
(search-input-directory inputs "include/apr-1")))
|
||||
#t))
|
||||
;; Normally, it tries to fetch patched openal with git
|
||||
;; but copying files manually in the right place seems to work too.
|
||||
(add-after 'unpack 'prepare-static-openal
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(let ((arcan-openal (assoc-ref inputs "arcan-openal")))
|
||||
(copy-recursively arcan-openal "external/git/openal"))
|
||||
#t))
|
||||
(add-after 'prepare-static-openal 'generate-man
|
||||
(lambda _
|
||||
(with-directory-excursion "doc"
|
||||
(invoke "ruby" "docgen.rb" "mangen"))
|
||||
#t))
|
||||
(add-before 'configure 'chdir
|
||||
(lambda _
|
||||
(chdir "src")
|
||||
#t))
|
||||
(add-after 'install 'wrap-program
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let ((out (assoc-ref outputs "out")))
|
||||
(wrap-program (string-append out "/bin/arcan")
|
||||
`("ARCAN_RESOURCEPATH" ":" suffix
|
||||
(,(string-append out "/share/arcan/resources")))
|
||||
`("ARCAN_STATEBASEPATH" ":" =
|
||||
("$HOME/.arcan/resources/savestates"))
|
||||
`("ARCAN_STATEPATH" ":" =
|
||||
("$HOME/.arcan/resources/savestates"))
|
||||
`("ARCAN_BINPATH" ":" =
|
||||
(,(string-append out "/bin/arcan_frameserver")))))
|
||||
#t)))
|
||||
#:tests? #f))
|
||||
(native-search-paths
|
||||
(list (search-path-specification
|
||||
(variable "ARCAN_APPLBASEPATH")
|
||||
(separator #f)
|
||||
(files '("share/arcan/appl")))
|
||||
(search-path-specification
|
||||
(variable "ARCAN_SCRIPTPATH")
|
||||
(separator #f)
|
||||
(files '("share/arcan/scripts")))))
|
||||
(inputs
|
||||
`(("apr" ,apr)
|
||||
("ffmpeg" ,ffmpeg)
|
||||
("freetype" ,freetype)
|
||||
("glib" ,glib)
|
||||
("glu" ,glu)
|
||||
("harfbuzz" ,harfbuzz)
|
||||
("libdrm" ,libdrm)
|
||||
("libusb" ,libusb)
|
||||
("libxkbcommon" ,libxkbcommon)
|
||||
("lua" ,luajit)
|
||||
("lzip" ,lzip)
|
||||
("openal" ,openal)
|
||||
("pcre" ,pcre)
|
||||
("sqlite" ,sqlite)
|
||||
("tesseract-ocr" ,tesseract-ocr)
|
||||
("leptonica" ,leptonica)
|
||||
("vlc" ,vlc)
|
||||
;; To build arcan_lwa, we need a patched version of openal.
|
||||
;; https://github.com/letoram/arcan/wiki/packaging
|
||||
("arcan-openal" ,(origin
|
||||
(method git-fetch)
|
||||
(file-name "arcan-openal-0.5.4")
|
||||
(uri (git-reference
|
||||
(url "https://github.com/letoram/openal")
|
||||
(commit "1c7302c580964fee9ee9e1d89ff56d24f934bdef")))
|
||||
(sha256
|
||||
(base32
|
||||
"0dcxcnqjkyyqdr2yk84mprvkncy5g172kfs6vc4zrkklsbkr8yi2"))))))
|
||||
(native-inputs
|
||||
(list pkg-config ruby)) ; For documentation and testing
|
||||
(home-page "https://arcan-fe.com")
|
||||
(synopsis "Display server, multimedia framework and game engine (egl-dri)")
|
||||
(description "Arcan is a development framework for creating virtually
|
||||
anything from user interfaces for specialized embedded applications
|
||||
all the way to full-blown desktop environments. At its heart lies a multimedia
|
||||
engine with a Lua scripting interface.")
|
||||
;; https://github.com/letoram/arcan/blob/master/COPYING
|
||||
(license (list license:asl2.0
|
||||
license:bsd-3
|
||||
license:cc-by3.0
|
||||
license:expat
|
||||
license:gpl2+
|
||||
license:lgpl2.0
|
||||
license:lgpl2.0+
|
||||
license:public-domain
|
||||
license:silofl1.1
|
||||
license:zlib))))
|
||||
engine programmable using Lua.")
|
||||
;; https://github.com/letoram/arcan/blob/master/COPYING
|
||||
(license (list license:gpl2+
|
||||
license:lgpl2.0
|
||||
license:lgpl2.0+
|
||||
license:public-domain
|
||||
license:bsd-3)))))
|
||||
|
||||
(define-public arcan-sdl
|
||||
(package
|
||||
@@ -184,67 +185,90 @@ engine with a Lua scripting interface.")
|
||||
(synopsis "Combined display server, multimedia framework and game engine (SDL)")))
|
||||
|
||||
(define-public xarcan
|
||||
(package
|
||||
(name "xarcan")
|
||||
(version "0.6.1")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(file-name (git-file-name name version))
|
||||
(uri (git-reference
|
||||
(url "https://github.com/letoram/xarcan")
|
||||
(commit version)))
|
||||
(sha256
|
||||
(base32 "1z4sf101i2y6rg2vcxfwmp1nkzfa3rw1pp48ym1ds1ka513vy128"))))
|
||||
(build-system meson-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#:configure-flags
|
||||
#~(list
|
||||
"-Dglamor=true" "-Dint10=false"
|
||||
"-Dipv6=true"
|
||||
"-Dsystemd_logind=false"
|
||||
|
||||
;; The following arguments were taken from the Xwayland package.
|
||||
|
||||
;; The build system insist on providing a default font path; give
|
||||
;; that of dejavu, the same used for our fontconfig package.
|
||||
(string-append "-Ddefault_font_path="
|
||||
#$(this-package-input "font-dejavu") "/share/fonts")
|
||||
(string-append "-Dxkb_dir=" #$(this-package-input "xkeyboard-config")
|
||||
"/share/X11/xkb")
|
||||
(string-append "-Dxkb_bin_dir=" #$(this-package-input "xkbcomp")
|
||||
"/bin")
|
||||
(format #f "-Dbuilder_string=\"Build ID: ~a ~a\"" #$name #$version))))
|
||||
(native-inputs
|
||||
(list pkg-config autoconf automake libtool util-macros))
|
||||
(inputs
|
||||
(list arcan
|
||||
font-dejavu
|
||||
font-util
|
||||
libdrm
|
||||
libepoxy
|
||||
libtirpc
|
||||
libx11
|
||||
libxfont2
|
||||
libxkbfile
|
||||
libxshmfence
|
||||
mesa
|
||||
openssl
|
||||
pixman
|
||||
xcb-util
|
||||
xcb-util-wm
|
||||
xkbcomp
|
||||
xkeyboard-config
|
||||
xorgproto
|
||||
xtrans))
|
||||
(home-page "https://arcan-fe.com")
|
||||
(synopsis "Patched Xserver that bridges connections to Arcan")
|
||||
(description "Patched Xserver with a KDrive backend that uses the arcan-shmif
|
||||
(let ((commit "8e6ee029388326cfe5cddeffe482eb3702e9b7f3")
|
||||
(revision "1" ))
|
||||
(package
|
||||
(name "xarcan")
|
||||
(version (git-version "0.5.4" revision commit))
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(file-name (git-file-name name version))
|
||||
(uri (git-reference
|
||||
(url "https://github.com/letoram/xarcan")
|
||||
(commit commit)))
|
||||
(sha256
|
||||
(base32 "0zng7cs6733mnf0p6g5wv02981f2sf567n56csax6cmzb8fpamym"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags
|
||||
`("--enable-kdrive" "--enable-xarcan"
|
||||
"--disable-xorg" "--disable-xwayland"
|
||||
"--disable-xnest" "--disable-xvfb"
|
||||
"--enable-glamor" "--enable-glx"
|
||||
"--disable-int10-module" "--enable-ipv6"
|
||||
"--enable-record" "--without-systemd-daemon"
|
||||
"--enable-xcsecurity" "--disable-static"
|
||||
,(string-append "--with-xkb-path="
|
||||
(assoc-ref %build-inputs "xkeyboard-config")
|
||||
"/share/X11/xkb")
|
||||
,(string-append "--with-xkb-bin-directory="
|
||||
(assoc-ref %build-inputs "xkbcomp")
|
||||
"/bin")
|
||||
,(string-append "--with-xkb-output="
|
||||
"/tmp")))) ; FIXME: Copied from xorg
|
||||
(native-inputs
|
||||
(list pkg-config autoconf automake libtool util-macros))
|
||||
(inputs
|
||||
`(("arcan" ,arcan)
|
||||
("font-util" ,font-util)
|
||||
("libdrm" ,libdrm)
|
||||
("libepoxy" ,libepoxy)
|
||||
("libkbfile" ,libxkbfile)
|
||||
("libressl" ,libressl)
|
||||
("libx11" ,libx11)
|
||||
("libxfont2" ,libxfont2)
|
||||
("mesa" ,mesa)
|
||||
("pixman" ,pixman)
|
||||
("xkeyboard-config" ,xkeyboard-config)
|
||||
("xkbcomp" ,xkbcomp)
|
||||
("xorgproto" ,xorgproto)
|
||||
("xtrans" ,xtrans)))
|
||||
(home-page "https://arcan-fe.com")
|
||||
(synopsis "Patched Xserver that bridges connections to Arcan")
|
||||
(description "Patched Xserver with a KDrive backend that uses the arcan-shmif
|
||||
to map Xlib/Xcb/X clients to a running arcan instance. It allows running an X session
|
||||
as a window under Arcan.")
|
||||
(license (list license:bsd-3 license:expat))))
|
||||
(license license:expat))))
|
||||
|
||||
;; Package was merged into arcan in upstream.
|
||||
(define-public arcan-wayland
|
||||
(deprecated-package "arcan-wayland" arcan))
|
||||
(package
|
||||
(inherit arcan)
|
||||
(name "arcan-wayland")
|
||||
(native-inputs
|
||||
(list pkg-config))
|
||||
(inputs
|
||||
(list arcan
|
||||
libseccomp
|
||||
libxkbcommon
|
||||
mesa
|
||||
wayland
|
||||
wayland-protocols))
|
||||
(arguments
|
||||
`(#:tests? #f
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-before 'configure 'chdir
|
||||
(lambda _
|
||||
(chdir "src/tools/waybridge")
|
||||
#t))
|
||||
(add-after 'unpack 'fix-cmake-find-shmif
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(substitute* "src/platform/cmake/modules/Findarcan_shmif.cmake"
|
||||
(("/usr/local") (assoc-ref inputs "arcan")))
|
||||
#t)))))
|
||||
(synopsis "Wayland protocol service for Arcan")
|
||||
(description "Arcan-wayland (waybridge) bridges Wayland connections
|
||||
with an Arcan connection point. It allows Wayland compatible clients
|
||||
to connect and render using Arcan.")
|
||||
(license license:bsd-3)))
|
||||
|
||||
+132
-29
@@ -13,8 +13,6 @@
|
||||
;;; Copyright © 2020 Jakub Kądziołka <kuba@kadziolka.net>
|
||||
;;; Copyright © 2020 Noah Landis <noahlandis@posteo.net>
|
||||
;;; Copyright © 2021 Sergiu Ivanov <sivanov@colimite.fr>
|
||||
;;; Copyright © 2023 Yovan Naumovski <yovan@gorski.stream>
|
||||
;;; Copyright © 2023 Zheng Junjie <873216071@qq.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -49,6 +47,7 @@
|
||||
(package
|
||||
(name "aspell")
|
||||
(version "0.60.8")
|
||||
(replacement aspell/replacement)
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@@ -57,8 +56,7 @@
|
||||
(sha256
|
||||
(base32
|
||||
"1wi60ankalmh8ds7nplz434jd7j94gdvbahdwsr539rlad8pxdzr"))
|
||||
(patches (search-patches "aspell-default-dict-dir.patch"
|
||||
"aspell-CVE-2019-25051.patch"))))
|
||||
(patches (search-patches "aspell-default-dict-dir.patch"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
@@ -76,7 +74,7 @@
|
||||
(string-append "\"filter-path" middle
|
||||
"\"" libdir "\"")))
|
||||
#t))))))
|
||||
(native-inputs (list perl))
|
||||
(inputs (list perl))
|
||||
|
||||
(native-search-paths
|
||||
;; This is a Guix-specific environment variable that takes a single
|
||||
@@ -95,6 +93,16 @@ documents written in the UTF-8 encoding and its ability to use multiple
|
||||
dictionaries, including personal ones.")
|
||||
(license lgpl2.1+)))
|
||||
|
||||
;; Replacement package with security fixes.
|
||||
(define aspell/replacement
|
||||
(package
|
||||
(inherit aspell)
|
||||
(source
|
||||
(origin
|
||||
(inherit (package-source aspell))
|
||||
(patches (append (origin-patches (package-source aspell))
|
||||
(search-patches "aspell-CVE-2019-25051.patch")))))))
|
||||
|
||||
;;;
|
||||
;;; Dictionaries.
|
||||
;;;
|
||||
@@ -163,21 +171,6 @@ dictionaries, including personal ones.")
|
||||
(base32
|
||||
"1svls9p7rsfi3hs0afh0cssj006qb4v1ik2yzqgj8hm10c6as2sm")))
|
||||
|
||||
(define-public aspell-dict-bg
|
||||
(aspell-dictionary "bg" "Bulgarian"
|
||||
#:version "4.1-0"
|
||||
#:prefix "aspell6-"
|
||||
#:sha256
|
||||
(base32
|
||||
"1alacmgpfk0yrgq83y23d16fhav1bxmb98kg8d2a5r9bvh2h0mvl")))
|
||||
|
||||
(define-public aspell-dict-bn
|
||||
(aspell-dictionary "bn" "Bengali"
|
||||
#:version "0.01.1-1"
|
||||
#:sha256
|
||||
(base32
|
||||
"1nc02jd67iggirwxnhdvlvaqm0xfyks35c4psszzj3dhzv29qgxh")))
|
||||
|
||||
(define-public aspell-dict-ca
|
||||
(let ((version "2.5.0")
|
||||
(sha256
|
||||
@@ -301,7 +294,7 @@ dictionaries, including personal ones.")
|
||||
"aspell6-it-" version ".tar.bz2"))
|
||||
(hash (content-hash sha256))))
|
||||
(home-page
|
||||
"https://linguistico.sourceforge.net/pages/dizionario_italiano.html"))))
|
||||
"http://linguistico.sourceforge.net/pages/dizionario_italiano.html"))))
|
||||
|
||||
(define-public aspell-dict-mi
|
||||
(aspell-dictionary "mi" "Maori"
|
||||
@@ -327,14 +320,6 @@ dictionaries, including personal ones.")
|
||||
(base32
|
||||
"0w2k5l5rbqpliripgqwiqixz5ghnjf7i9ggbrc4ly4vy1ia10rmc")))
|
||||
|
||||
(define-public aspell-dict-nb
|
||||
(aspell-dictionary "nb" "Norwegian Bokmål"
|
||||
#:version "0.50-2"
|
||||
#:prefix "aspell-"
|
||||
#:sha256
|
||||
(base32
|
||||
"1xvns7dwx2sc0msldj7r2hv0426913rg3dpnkxlrvnsyrxzjpbpc")))
|
||||
|
||||
(define-public aspell-dict-pl
|
||||
(aspell-dictionary "pl" "Polish"
|
||||
#:version "0.51-0"
|
||||
@@ -395,6 +380,124 @@ dictionaries, including personal ones.")
|
||||
(base32
|
||||
"0gb8j9iy1acdl11jq76idgc2lbc1rq3w04favn8cyh55d1v8phsk")))
|
||||
|
||||
|
||||
;;;
|
||||
;;; Hunspell packages made from the Aspell word lists.
|
||||
;;;
|
||||
|
||||
(define* (aspell-word-list language synopsis
|
||||
#:optional
|
||||
(nick (string-map (lambda (chr)
|
||||
(if (char=? #\_ chr)
|
||||
#\-
|
||||
chr))
|
||||
(string-downcase language))))
|
||||
(package
|
||||
(name (string-append "hunspell-dict-" nick))
|
||||
(version "2018.04.16")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
"mirror://sourceforge/wordlist/SCOWL/"
|
||||
version "/scowl-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"11lkrnhwrf5mvrrq45k4mads3n9aswgac8dc25ba61c75alxb5rs"))))
|
||||
(native-inputs
|
||||
(list tar gzip perl aspell))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'make-reproducible
|
||||
(lambda _
|
||||
(substitute* "speller/README_en.txt.sh"
|
||||
(("\\bdate\\b") ""))))
|
||||
(delete 'configure)
|
||||
(delete 'check)
|
||||
(replace 'build
|
||||
(lambda _
|
||||
(substitute* "speller/make-hunspell-dict"
|
||||
(("zip -9 .*$")
|
||||
"return\n"))
|
||||
(mkdir "speller/hunspell")
|
||||
|
||||
;; XXX: This actually builds all the dictionary variants.
|
||||
(invoke "make" "-C" "speller" "hunspell")))
|
||||
(replace 'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref %outputs "out"))
|
||||
(hunspell (string-append out "/share/hunspell"))
|
||||
(myspell (string-append out "/share/myspell"))
|
||||
(doc (string-append out "/share/doc/"
|
||||
,name))
|
||||
(dot-dic ,(string-append "speller/" language ".dic")))
|
||||
(mkdir-p myspell)
|
||||
|
||||
;; Usually there's only a 'LANGUAGE.dic' file, but for the "en"
|
||||
;; dictionary, there no 'en.dic'. Instead, there's a set of
|
||||
;; 'en*.dic' files, hence the 'find-files' call below.
|
||||
(if (file-exists? dot-dic)
|
||||
(install-file dot-dic hunspell)
|
||||
(for-each (lambda (dic)
|
||||
(install-file dic hunspell))
|
||||
(find-files "speller"
|
||||
,(string-append language ".*\\.dic$"))))
|
||||
|
||||
;; Install affix files corresponding to installed dictionaries
|
||||
(for-each (lambda (dic)
|
||||
(install-file (string-append
|
||||
"speller/" (basename dic ".dic") ".aff")
|
||||
hunspell))
|
||||
(find-files hunspell ".*\\.dic$"))
|
||||
(symlink hunspell (string-append myspell "/dicts"))
|
||||
(for-each (lambda (file)
|
||||
(install-file file doc))
|
||||
(find-files "."
|
||||
"^(Copyright|.*\\.(txt|org|md))$"))
|
||||
#t))))))
|
||||
(synopsis synopsis)
|
||||
(description
|
||||
"This package provides a dictionary for the Hunspell spell-checking
|
||||
library.")
|
||||
(home-page "http://wordlist.aspell.net/")
|
||||
(license (non-copyleft "file://Copyright"
|
||||
"Word lists come from several sources, all
|
||||
under permissive licensing terms. See the 'Copyright' file."))))
|
||||
|
||||
(define-syntax define-word-list-dictionary
|
||||
(syntax-rules (synopsis)
|
||||
((_ name language (synopsis text))
|
||||
(define-public name
|
||||
(aspell-word-list language text)))
|
||||
((_ name language nick (synopsis text))
|
||||
(define-public name
|
||||
(aspell-word-list language text nick)))))
|
||||
|
||||
(define-word-list-dictionary hunspell-dict-en
|
||||
"en"
|
||||
(synopsis "Hunspell dictionary for English"))
|
||||
|
||||
(define-word-list-dictionary hunspell-dict-en-au
|
||||
"en_AU"
|
||||
(synopsis "Hunspell dictionary for Australian English"))
|
||||
|
||||
(define-word-list-dictionary hunspell-dict-en-ca
|
||||
"en_CA"
|
||||
(synopsis "Hunspell dictionary for Canadian English"))
|
||||
|
||||
(define-word-list-dictionary hunspell-dict-en-gb
|
||||
"en_GB-ise" "en-gb"
|
||||
(synopsis "Hunspell dictionary for British English, with -ise endings"))
|
||||
|
||||
(define-word-list-dictionary hunspell-dict-en-gb-ize
|
||||
"en_GB-ize"
|
||||
(synopsis "Hunspell dictionary for British English, with -ize endings"))
|
||||
|
||||
(define-word-list-dictionary hunspell-dict-en-us
|
||||
"en_US"
|
||||
(synopsis "Hunspell dictionary for United States English"))
|
||||
|
||||
(define-public ispell
|
||||
(package
|
||||
(name "ispell")
|
||||
|
||||
+63
-106
@@ -37,7 +37,6 @@
|
||||
#:use-module (guix git-download)
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages admin)
|
||||
#:use-module (gnu packages autotools)
|
||||
@@ -134,21 +133,19 @@ debugging information in STABS, DWARF 2, and CodeView 8 formats.")
|
||||
(define-public lightning
|
||||
(package
|
||||
(name "lightning")
|
||||
(version "2.2.1")
|
||||
(version "2.2.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/lightning/lightning-"
|
||||
version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"1aiwx9cl9c7swqcgrsjnvd5laah3iwxzl1van3670iv8sn0icrwq"))))
|
||||
"03kwvn00qggys203vpzb2kq2asy0ql7x84ajk05a62yg3kzq8faf"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs (list zlib))
|
||||
(arguments
|
||||
`(#:configure-flags
|
||||
(list "--disable-static")
|
||||
;; Some tests fail when run in parallel.
|
||||
#:parallel-tests? #f))
|
||||
;; Some tests fail when run in parallel.
|
||||
`(#:parallel-tests? #f))
|
||||
(synopsis "Library for generating assembly code at runtime")
|
||||
(description
|
||||
"GNU Lightning is a library that generates assembly language code at
|
||||
@@ -186,14 +183,14 @@ speed on x86, NEON on ARM, etc.).")
|
||||
(define-public fasm
|
||||
(package
|
||||
(name "fasm")
|
||||
(version "1.73.31")
|
||||
(version "1.73.30")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://flatassembler.net/fasm-"
|
||||
version ".tgz"))
|
||||
(sha256
|
||||
(base32 "1qqg1czr9dr73l4gwrwim85mjs65al7vv8b292jipywimhhwnf4g"))))
|
||||
(base32 "00giqb94z8cxhv20yiyk8axkd2kzjcg1c0841yzbn7c8lm8m06bm"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:tests? #f ; no tests exist
|
||||
@@ -346,7 +343,7 @@ package for the Game Boy and Game Boy Color. It consists of:
|
||||
(define-public wla-dx
|
||||
(package
|
||||
(name "wla-dx")
|
||||
(version "10.5")
|
||||
(version "10.1")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
@@ -355,21 +352,20 @@ package for the Game Boy and Game Boy Color. It consists of:
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"1h6apmhaks4772s2cja34ck488p8yhb3nscbxjw5061ml2046zqq"))))
|
||||
"1nh2k2xn5fj389gq68f3fxgrxakgn8c6dw2ffqay86s3706hac9w"))))
|
||||
(build-system cmake-build-system)
|
||||
(native-inputs (list python-sphinx)) ; to generate man pages
|
||||
(arguments
|
||||
(list
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-before 'check 'copy-tests-to-build-directory
|
||||
(lambda _
|
||||
(copy-recursively "../source/tests" "tests")))
|
||||
(replace 'check
|
||||
(lambda* (#:key tests? #:allow-other-keys)
|
||||
(let ((sh (which "sh")))
|
||||
(when tests?
|
||||
(invoke sh "../source/run_tests.sh"))))))))
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-before 'check 'copy-tests-to-build-directory
|
||||
(lambda _
|
||||
(copy-recursively "../source/tests" "tests")))
|
||||
(replace 'check
|
||||
(lambda* (#:key tests? #:allow-other-keys)
|
||||
(let ((sh (which "sh")))
|
||||
(when tests?
|
||||
(invoke sh "../source/run_tests.sh"))))))))
|
||||
(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
|
||||
@@ -396,23 +392,21 @@ Supported architectures are:
|
||||
(define-public xa
|
||||
(package
|
||||
(name "xa")
|
||||
(version "2.3.14")
|
||||
(version "2.3.12")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://www.floodgap.com/retrotech/xa"
|
||||
"/dists/xa-" version ".tar.gz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0bph41aglxl07rnggrir2dl1x97f52hm0bl51d0vklyqvfyvm6qv"))))
|
||||
"0107zdwc2rzlp26pyx7gns4lqmiyg68nmpgwrg36yrrd04v1bzgq"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
(list
|
||||
#: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=" #$output)))) ; no $prefix support
|
||||
`(#: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 (list perl))
|
||||
(home-page "https://www.floodgap.com/retrotech/xa/")
|
||||
(synopsis "Two-pass portable cross-assembler")
|
||||
@@ -424,64 +418,56 @@ as 6502A, 6504, 6507, 6510, 7501, 8500, 8501, 8502 ...),
|
||||
(license license:gpl2)))
|
||||
|
||||
(define-public armips
|
||||
(let ((commit "6719edebaae03330ee5441d9b28280672edf00d5")
|
||||
(revision "1"))
|
||||
(package
|
||||
(name "armips")
|
||||
(version "0.11.0")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/Kingcom/armips")
|
||||
(commit commit)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "1a85h2b3r3hy9hm07v8drvkklp4qfdq3i3zwb3cgk011s0njdfvz"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
#~(begin
|
||||
(substitute* "Core/Types.h"
|
||||
(("#include <string>" all)
|
||||
(string-append all "\n"
|
||||
"#include <string_view>")))))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags '("-DARMIPS_USE_STD_FILESYSTEM=ON")
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(replace 'check
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(invoke "./armipstests" "../source/Tests")))
|
||||
(replace 'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(install-file "armips" (string-append (assoc-ref outputs "out")
|
||||
"/bin"))
|
||||
#t)))))
|
||||
(home-page "https://github.com/Kingcom/armips")
|
||||
(synopsis "Assembler for various ARM and MIPS platforms")
|
||||
(description
|
||||
"armips is an assembler with full support for the MIPS R3000, MIPS R4000,
|
||||
(package
|
||||
(name "armips")
|
||||
(version "0.11.0")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/Kingcom/armips")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "1c4dhjkvynqn9xm2vcvwzymk7yg8h25alnawkz4z1dnn1z1k3r9g"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
(replace 'check
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
(invoke "./armipstests" "../source/Tests")))
|
||||
(replace 'install
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(install-file "armips" (string-append (assoc-ref outputs "out")
|
||||
"/bin"))
|
||||
#t)))))
|
||||
(home-page "https://github.com/Kingcom/armips")
|
||||
(synopsis "Assembler for various ARM and MIPS platforms")
|
||||
(description
|
||||
"armips is an assembler with full support for the MIPS R3000, MIPS R4000,
|
||||
Allegrex and RSP instruction sets, partial support for the EmotionEngine
|
||||
instruction set, as well as complete support for the ARM7 and ARM9 instruction
|
||||
sets, both THUMB and ARM mode.")
|
||||
(license license:expat))))
|
||||
(license license:expat)))
|
||||
|
||||
(define-public intel-xed
|
||||
(package
|
||||
(name "intel-xed")
|
||||
(version "2023.08.21")
|
||||
(version "12.0.1")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/intelxed/xed")
|
||||
(commit (string-append "v" version))))
|
||||
(sha256 (base32 "1zv99m5h3n3w6jcpplznq030s5mlwg5llz3vgfwpfl5l8laz1032"))
|
||||
(file-name (git-file-name name version))))
|
||||
(commit version)))
|
||||
(sha256 (base32 "07zfff8zf29c2n0wal87hiqfq3cwcjn80zz78mz0nyjfj09nd39f"))
|
||||
(file-name (git-file-name name version))
|
||||
(patches (search-patches "intel-xed-fix-nondeterminism.patch"))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs
|
||||
`(("python" ,python-wrapper)
|
||||
("tcsh" ,tcsh)
|
||||
;; As of the time of writing this comment, mbuild does not exist in the
|
||||
;; Python Package Index and seems to only be used by intel-xed, so we
|
||||
;; opt to include it here instead of packaging separately. Note also
|
||||
@@ -489,15 +475,15 @@ sets, both THUMB and ARM mode.")
|
||||
;; reference the "version" variable from setup.py instead.
|
||||
("mbuild"
|
||||
,(let ((name "mbuild")
|
||||
(version "2022.07.28"))
|
||||
(version "0.2496"))
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/intelxed/mbuild")
|
||||
(commit (string-append "v" version))))
|
||||
(commit "3de3f0d753c11dbe634bec611d4cc13f74768e4f")))
|
||||
(sha256
|
||||
(base32
|
||||
"0rc9xp202yqw42bwgylwxvfvjr1crdl50qvv8vzfczyvlf4wflcx"))
|
||||
"0z8hdhpmk8y5c9429p2yns9daswnffbprni9czkq3vij8f58lkg4"))
|
||||
(file-name (git-file-name name version)))))))
|
||||
(outputs '("out" "lib"))
|
||||
(arguments
|
||||
@@ -554,32 +540,3 @@ family of command line utility wrappers in the default output. Each of the cli
|
||||
tools is named like @code{xed*}. Documentation for the cli tools is sparse, so
|
||||
this is a case where ``the code is the documentation.''")
|
||||
(license license:asl2.0)))
|
||||
|
||||
(define-public neon2sse
|
||||
(let ((commit "097a5ecacd527d5b5c3006e360fb9cb1c1c48a1f")
|
||||
(version "0")
|
||||
(revision "1"))
|
||||
(package
|
||||
(name "neon2sse")
|
||||
(version (git-version version revision commit))
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/intel/ARM_NEON_2_x86_SSE")
|
||||
(commit commit)))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32
|
||||
"17mf788b8asrvjl6dnyzrm5xrz20wx9j5f8n6drgc6qgwqxpx4hv"))))
|
||||
(build-system cmake-build-system)
|
||||
(arguments
|
||||
(list #:tests? #f)) ;no tests
|
||||
(home-page "https://github.com/intel/ARM_NEON_2_x86_SSE")
|
||||
(synopsis "Header file to simplify ARM->IA32 porting")
|
||||
(description
|
||||
"The @file{NEON_2_SSE.h} file is intended to simplify ARM-to-IA32
|
||||
porting. It makes the correspondence (or a real porting) of ARM NEON
|
||||
intrinsics as defined in the @file{arm_neon.h} header and x86 SSE (up to
|
||||
SSE4.2) intrinsic functions as defined in corresponding x86 compilers headers
|
||||
files.")
|
||||
(license license:bsd-2))))
|
||||
|
||||
+501
-1918
File diff suppressed because it is too large
Load Diff
@@ -3,7 +3,6 @@
|
||||
;;; Copyright © 2012, 2013, 2016, 2021 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2018 Mark H Weaver <mhw@netris.org>
|
||||
;;; Copyright © 2019 Marius Bakke <mbakke@fastmail.com>
|
||||
;;; Copyright © 2023 Janneke Nieuwenhuizen <janneke@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -24,10 +23,10 @@
|
||||
#:use-module (guix licenses)
|
||||
#:use-module (gnu packages perl)
|
||||
#:use-module (gnu packages gettext)
|
||||
#:use-module (gnu packages hurd)
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix utils))
|
||||
#:use-module (guix build-system gnu))
|
||||
|
||||
(define-public attr
|
||||
(package
|
||||
@@ -44,7 +43,7 @@
|
||||
(arguments
|
||||
`(#:phases
|
||||
(modify-phases %standard-phases
|
||||
,@(if (target-hurd?)
|
||||
,@(if (hurd-target?)
|
||||
`((add-before 'configure 'skip-linux-syscalls
|
||||
(lambda _
|
||||
;; Starting from 2.5.1, libattr includes Linux-specific
|
||||
|
||||
+360
-713
File diff suppressed because it is too large
Load Diff
@@ -22,13 +22,11 @@
|
||||
#:use-module (gnu packages)
|
||||
#:use-module (gnu packages autotools)
|
||||
#:use-module (gnu packages documentation)
|
||||
#:use-module (gnu packages gnupg)
|
||||
#:use-module (gnu packages linux)
|
||||
#:use-module (gnu packages pkg-config)
|
||||
#:use-module (gnu packages security-token)
|
||||
#:use-module (gnu packages tls)
|
||||
#:use-module (gnu packages xml)
|
||||
#:use-module (guix build-system cmake)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system go)
|
||||
#:use-module (guix download)
|
||||
@@ -36,40 +34,18 @@
|
||||
#:use-module ((guix licenses) #:prefix license:)
|
||||
#:use-module (guix packages))
|
||||
|
||||
(define-public libcotp
|
||||
(package
|
||||
(name "libcotp")
|
||||
(version "2.0.1")
|
||||
(source
|
||||
(origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
(url "https://github.com/paolostivanin/libcotp")
|
||||
(commit (string-append "v" version))))
|
||||
(file-name (git-file-name name version))
|
||||
(sha256
|
||||
(base32 "12ps2msclcbv53gjf936cny10an8sc70b9frp6xxjirfn5jg2h63"))))
|
||||
(build-system cmake-build-system)
|
||||
(inputs (list libgcrypt))
|
||||
(native-inputs (list pkg-config))
|
||||
(home-page "https://github.com/paolostivanin/libcotp")
|
||||
(synopsis "One-Time Passwords")
|
||||
(description "This package provides a library to generate
|
||||
@acronym{HOTP, HMAC-base One-Time Password}s as specified in RFC 4226 and
|
||||
@acronym{TOTP, Time-based One-Time Password}s as specified in RFC 6238.")
|
||||
(license license:asl2.0)))
|
||||
|
||||
(define-public oath-toolkit
|
||||
(package
|
||||
(name "oath-toolkit")
|
||||
(version "2.6.9")
|
||||
(version "2.6.7")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "https://download.savannah.nongnu.org/releases/"
|
||||
name "/" name "-" version ".tar.gz"))
|
||||
(patches (search-patches "oath-toolkit-xmlsec-compat.patch"))
|
||||
(sha256
|
||||
(base32 "11g9r1avl3d2nnkglk0g7d6z6gs5padk75xqzvbxp9pir0qwhfik"))))
|
||||
(base32 "1aa620k05lsw3l3slkp2mzma40q3p9wginspn9zk8digiz7dzv9n"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
;; TODO ‘--enable-pskc’ causes xmlsec-related test suite failures.
|
||||
@@ -92,16 +68,16 @@
|
||||
(inputs
|
||||
(list linux-pam openssl xmlsec-openssl))
|
||||
(home-page "https://www.nongnu.org/oath-toolkit/")
|
||||
(synopsis "@acronym{OTP, one-time password} components")
|
||||
(synopsis "One-time password (OTP) components")
|
||||
(description
|
||||
"The @acronym{OATH, Open AuTHentication} Toolkit provides various
|
||||
components for building @acronym{OTP, One-Time Password} authentication systems:
|
||||
"The @dfn{OATH} (Open AuTHentication) Toolkit provides various components
|
||||
for building one-time password (@dfn{OTP}) authentication systems:
|
||||
|
||||
@itemize
|
||||
@item @command{oathtool}, a command-line tool for generating & validating OTPs.
|
||||
@item @code{liboath}, a C library for OATH handling.
|
||||
@item @command{pskctool}, a command-line tool for manipulating secret key
|
||||
files in the @acronym{PSKC, Portable Symmetric Key Container} format
|
||||
files in the Portable Symmetric Key Container (@dfn{PSKC}) format
|
||||
described in RFC6030.
|
||||
@item @code{libpskc}, a shared and static C library for PSKC handling.
|
||||
@item @code{pam_oath}, a PAM module for pluggable login authentication.
|
||||
@@ -110,7 +86,8 @@ described in RFC6030.
|
||||
Supported technologies include the event-based @acronym{HOTP, Hash-based Message
|
||||
Authentication Code One-Time Password} algorithm (RFC4226), the time-based
|
||||
@acronym{TOTP, Time-based One-Time Password} algorithm (RFC6238), and
|
||||
PSKC (RFC6030) to manage secret key data.")
|
||||
@acronym{PSKC, Portable Symmetric Key Container} (RFC6030) to manage secret key
|
||||
data.")
|
||||
(license (list license:lgpl2.1+ ; the libraries (liboath/ & libpskc/)
|
||||
license:gpl3+)))) ; the tools (everything else)
|
||||
|
||||
@@ -184,7 +161,7 @@ YubiKey into your existing user authentication infrastructure.")
|
||||
(list pkg-config))
|
||||
(inputs
|
||||
(list linux-pam))
|
||||
(home-page "https://pamtester.sourceforge.net/")
|
||||
(home-page "http://pamtester.sourceforge.net/")
|
||||
(synopsis "Utility for testing pluggable authentication modules (PAM) facility")
|
||||
(description
|
||||
"Pamtester is a tiny utility program to test the pluggable authentication
|
||||
|
||||
@@ -3,7 +3,6 @@
|
||||
;;; Copyright © 2015, 2016 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2018, 2019 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2020 Marius Bakke <mbakke@fastmail.com>
|
||||
;;; Copyright © 2023 Kaelyn Takata <kaelyn.alexi@protonmail.com>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -44,15 +43,10 @@
|
||||
(base32 "16mlbdys8q4ckxlvxyhwkdnh1ay9f6g0cyp1kylkpalgnik398gq"))
|
||||
(modules '((guix build utils)))
|
||||
(snippet
|
||||
'(begin
|
||||
;; Address '-Werror=format-overflow' error.
|
||||
(substitute* "getdefs/getdefs.c"
|
||||
(("def_bf\\[[[:space:]]*MAXNAMELEN[[:space:]]*\\]")
|
||||
"def_bf[MAXNAMELEN + 10]"))
|
||||
;; Address '-Werror=format-truncation' error on i686.
|
||||
(substitute* "autoopts/usage.c"
|
||||
(("vfmt\\[sizeof\\(vfmtfmt\\)\\]")
|
||||
"vfmt[sizeof(vfmtfmt) + 6]"))))))
|
||||
;; Address '-Werror=format-overflow' error.
|
||||
'(substitute* "getdefs/getdefs.c"
|
||||
(("def_bf\\[[[:space:]]*MAXNAMELEN[[:space:]]*\\]")
|
||||
"def_bf[MAXNAMELEN + 10]")))))
|
||||
(build-system gnu-build-system)
|
||||
(native-inputs (list pkg-config which))
|
||||
(inputs (list guile-3.0 perl)) ; for doc generator mdoc
|
||||
|
||||
+243
-211
@@ -6,13 +6,12 @@
|
||||
;;; Copyright © 2015, 2017, 2018 Mark H Weaver <mhw@netris.org>
|
||||
;;; Copyright © 2016 David Thompson <davet@gnu.org>
|
||||
;;; Copyright © 2017 Nikita <nikita@n0.is>
|
||||
;;; Copyright © 2017, 2019, 2021, 2022 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2017, 2019, 2021 Efraim Flashner <efraim@flashner.co.il>
|
||||
;;; Copyright © 2018 Tobias Geerinckx-Rice <me@tobias.gr>
|
||||
;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
|
||||
;;; Copyright © 2019 Pierre-Moana Levesque <pierre.moana.levesque@gmail.com>
|
||||
;;; Copyright © 2020, 2023 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||
;;; Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
;;; Copyright © 2022 Marius Bakke <marius@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -41,7 +40,6 @@
|
||||
#:use-module (guix packages)
|
||||
#:use-module (guix download)
|
||||
#:use-module (guix git-download)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (guix build-system gnu)
|
||||
#:use-module (guix build-system trivial)
|
||||
#:use-module (ice-9 match)
|
||||
@@ -53,55 +51,55 @@
|
||||
(version "2.69")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/autoconf/autoconf-"
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"113nlmidxy9kjr45kg9x3ngar4951mvag1js2a3j8nxcz34wxsv4"))))
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/autoconf/autoconf-"
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"113nlmidxy9kjr45kg9x3ngar4951mvag1js2a3j8nxcz34wxsv4"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
(list bash-minimal m4 perl))
|
||||
`(("bash" ,bash-minimal)
|
||||
("perl" ,perl)
|
||||
("m4" ,m4)))
|
||||
(native-inputs
|
||||
(list perl m4))
|
||||
(arguments
|
||||
(list
|
||||
;; XXX: testsuite: 209 and 279 failed. The latter is an impurity. It
|
||||
;; should use our own "cpp" instead of "/lib/cpp".
|
||||
#:tests? #f
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
#$@(if (%current-target-system)
|
||||
#~((add-after 'install 'patch-non-shebang-references
|
||||
(lambda* (#:key build inputs #:allow-other-keys)
|
||||
;; `patch-shebangs' patches shebangs only, and the Perl
|
||||
;; scripts use a re-exec feature that references the
|
||||
;; build hosts' perl. Also, BASH and M4 store references
|
||||
;; hide in the scripts.
|
||||
(let ((bash (dirname (dirname
|
||||
(search-input-file inputs "bin/bash"))))
|
||||
(m4 (dirname (dirname
|
||||
(search-input-file inputs "bin/m4"))))
|
||||
(perl (dirname (dirname
|
||||
(search-input-file inputs "bin/perl"))))
|
||||
(store-directory (%store-directory)))
|
||||
(substitute* (find-files (string-append #$output "/bin"))
|
||||
(((string-append store-directory "/[^/]*-bash-[^/]*"))
|
||||
bash)
|
||||
(((string-append store-directory "/[^/]*-m4-[^/]*"))
|
||||
m4)
|
||||
(((string-append store-directory "/[^/]*-perl-[^/]*"))
|
||||
perl))))))
|
||||
'())
|
||||
(add-after 'install 'unpatch-shebangs
|
||||
(lambda _
|
||||
;; Scripts that "autoconf -i" installs (config.guess,
|
||||
;; config.sub, and install-sh) must use a regular shebang
|
||||
;; rather than a reference to the store. Restore it.
|
||||
(let ((build-aux (string-append #$output
|
||||
"/share/autoconf/build-aux")))
|
||||
(substitute* (find-files build-aux)
|
||||
(("^#!.*/bin/sh") "#!/bin/sh"))))))))
|
||||
`(;; XXX: testsuite: 209 and 279 failed. The latter is an impurity. It
|
||||
;; should use our own "cpp" instead of "/lib/cpp".
|
||||
#:tests? #f
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
,@(if (%current-target-system)
|
||||
'((add-after 'install 'patch-non-shebang-references
|
||||
(lambda* (#:key build inputs outputs #:allow-other-keys)
|
||||
;; `patch-shebangs' patches shebangs only, and the Perl
|
||||
;; scripts use a re-exec feature that references the
|
||||
;; build hosts' perl. Also, BASH and M4 store references
|
||||
;; hide in the scripts.
|
||||
(let ((bash (assoc-ref inputs "bash"))
|
||||
(m4 (assoc-ref inputs "m4"))
|
||||
(perl (assoc-ref inputs "perl"))
|
||||
(out (assoc-ref outputs "out"))
|
||||
(store-directory (%store-directory)))
|
||||
(substitute* (find-files (string-append out "/bin"))
|
||||
(((string-append store-directory "/[^/]*-bash-[^/]*"))
|
||||
bash)
|
||||
(((string-append store-directory "/[^/]*-m4-[^/]*"))
|
||||
m4)
|
||||
(((string-append store-directory "/[^/]*-perl-[^/]*"))
|
||||
perl))))))
|
||||
'())
|
||||
(add-after 'install 'unpatch-shebangs
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
;; Scripts that "autoconf -i" installs (config.guess,
|
||||
;; config.sub, and install-sh) must use a regular shebang
|
||||
;; rather than a reference to the store. Restore it.
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(build-aux (string-append
|
||||
out "/share/autoconf/build-aux")))
|
||||
(substitute* (find-files build-aux)
|
||||
(("^#!.*/bin/sh") "#!/bin/sh"))))))))
|
||||
(home-page "https://www.gnu.org/software/autoconf/")
|
||||
(synopsis "Create source code configuration scripts")
|
||||
(description
|
||||
@@ -131,17 +129,17 @@ know anything about Autoconf or M4.")
|
||||
;; FIXME: To run the test suite, fix all the instances where scripts
|
||||
;; generates "#! /bin/sh" shebangs.
|
||||
#f)
|
||||
((#:phases phases #~%standard-phases)
|
||||
#~(modify-phases #$phases
|
||||
(add-before 'check 'prepare-tests
|
||||
(lambda _
|
||||
(for-each patch-shebang
|
||||
(append (find-files "tests"
|
||||
(lambda (file stat)
|
||||
(executable-file? file)))
|
||||
(find-files "bin"
|
||||
(lambda (file stat)
|
||||
(executable-file? file)))))))))))))
|
||||
((#:phases phases '%standard-phases)
|
||||
`(modify-phases ,phases
|
||||
(add-before 'check 'prepare-tests
|
||||
(lambda _
|
||||
(for-each patch-shebang
|
||||
(append (find-files "tests"
|
||||
(lambda (file stat)
|
||||
(executable-file? file)))
|
||||
(find-files "bin"
|
||||
(lambda (file stat)
|
||||
(executable-file? file)))))))))))))
|
||||
|
||||
(define-public autoconf autoconf-2.69)
|
||||
|
||||
@@ -158,6 +156,7 @@ know anything about Autoconf or M4.")
|
||||
"1fjm21k2na07f3vasf288a0zx66lbv0hd3l9bvv3q8p62s3pg569"))))))
|
||||
|
||||
(define-public autoconf-2.64
|
||||
;; As of GDB 7.8, GDB is still developed using this version of Autoconf.
|
||||
(package (inherit autoconf)
|
||||
(version "2.64")
|
||||
(source
|
||||
@@ -204,65 +203,70 @@ know anything about Autoconf or M4.")
|
||||
use our own Bash instead of /bin/sh in shebangs. For that reason, it should
|
||||
only be used internally---users should not end up distributing `configure'
|
||||
files with a system-specific shebang."
|
||||
(package
|
||||
(inherit autoconf)
|
||||
(package (inherit autoconf)
|
||||
(name (string-append (package-name autoconf) "-wrapper"))
|
||||
(build-system trivial-build-system)
|
||||
(inputs
|
||||
(list
|
||||
;; XXX: Kludge to hide the circular dependency.
|
||||
(module-ref (resolve-interface '(gnu packages guile))
|
||||
'guile-3.0/pinned)
|
||||
autoconf
|
||||
bash-minimal))
|
||||
(inputs `(("guile"
|
||||
;; XXX: Kludge to hide the circular dependency.
|
||||
,(module-ref (resolve-interface '(gnu packages guile))
|
||||
'guile-3.0/fixed))
|
||||
("autoconf" ,autoconf)
|
||||
("bash" ,bash-minimal)))
|
||||
(arguments
|
||||
(list
|
||||
#:modules '((guix build utils))
|
||||
#:builder
|
||||
#~(begin
|
||||
(use-modules (guix build utils))
|
||||
(let ((bin (string-append #$output "/bin"))
|
||||
(autoconf (search-input-file %build-inputs "/bin/autoconf"))
|
||||
(guile (search-input-file %build-inputs "/bin/guile"))
|
||||
(sh (search-input-file %build-inputs "/bin/sh"))
|
||||
'(#:modules ((guix build utils))
|
||||
#:builder
|
||||
(begin
|
||||
(use-modules (guix build utils))
|
||||
(let* ((out (assoc-ref %outputs "out"))
|
||||
(bin (string-append out "/bin"))
|
||||
(autoconf (string-append
|
||||
(assoc-ref %build-inputs "autoconf")
|
||||
"/bin/autoconf"))
|
||||
(guile (string-append
|
||||
(assoc-ref %build-inputs "guile")
|
||||
"/bin/guile"))
|
||||
(sh (string-append
|
||||
(assoc-ref %build-inputs "bash")
|
||||
"/bin/sh"))
|
||||
(modules ((compose dirname dirname dirname)
|
||||
(search-path %load-path
|
||||
"guix/build/utils.scm"))))
|
||||
(mkdir-p bin)
|
||||
(mkdir-p bin)
|
||||
|
||||
;; Symlink all the binaries but `autoconf'.
|
||||
(with-directory-excursion bin
|
||||
(for-each (lambda (file)
|
||||
(unless (string=? (basename file) "autoconf")
|
||||
(symlink file (basename file))))
|
||||
(find-files (dirname autoconf) ".*")))
|
||||
;; Symlink all the binaries but `autoconf'.
|
||||
(with-directory-excursion bin
|
||||
(for-each (lambda (file)
|
||||
(unless (string=? (basename file) "autoconf")
|
||||
(symlink file (basename file))))
|
||||
(find-files (dirname autoconf) ".*")))
|
||||
|
||||
;; Add an `autoconf' binary that wraps the real one.
|
||||
(call-with-output-file (string-append bin "/autoconf")
|
||||
(lambda (port)
|
||||
;; Shamefully, Guile can be used in shebangs only if a
|
||||
;; single argument is passed (-ds); otherwise it gets
|
||||
;; them all as a single argument and fails to parse them.
|
||||
(format port "#!~a
|
||||
;; Add an `autoconf' binary that wraps the real one.
|
||||
(call-with-output-file (string-append bin "/autoconf")
|
||||
(lambda (port)
|
||||
;; Shamefully, Guile can be used in shebangs only if a
|
||||
;; single argument is passed (-ds); otherwise it gets
|
||||
;; them all as a single argument and fails to parse them.
|
||||
(format port "#!~a
|
||||
export GUILE_LOAD_PATH=\"~a\"
|
||||
export GUILE_LOAD_COMPILED_PATH=\"~a\"
|
||||
exec ~a --no-auto-compile \"$0\" \"$@\"
|
||||
!#~%"
|
||||
sh modules modules guile)
|
||||
(write
|
||||
`(begin
|
||||
(use-modules (guix build utils))
|
||||
(let ((result (apply system* ,autoconf
|
||||
(cdr (command-line)))))
|
||||
(when (and (file-exists? "configure")
|
||||
(not (file-exists? "/bin/sh")))
|
||||
;; Patch regardless of RESULT, because `autoconf
|
||||
;; -Werror' can both create a `configure' file and
|
||||
;; return a non-zero exit code.
|
||||
(patch-shebang "configure"))
|
||||
(exit (status:exit-val result))))
|
||||
port)))
|
||||
(chmod (string-append bin "/autoconf") #o555)))))
|
||||
sh modules modules guile)
|
||||
(write
|
||||
`(begin
|
||||
(use-modules (guix build utils))
|
||||
(let ((result (apply system* ,autoconf
|
||||
(cdr (command-line)))))
|
||||
(when (and (file-exists? "configure")
|
||||
(not (file-exists? "/bin/sh")))
|
||||
;; Patch regardless of RESULT, because `autoconf
|
||||
;; -Werror' can both create a `configure' file and
|
||||
;; return a non-zero exit code.
|
||||
(patch-shebang "configure"))
|
||||
(exit (status:exit-val result))))
|
||||
port)))
|
||||
(chmod (string-append bin "/autoconf") #o555)
|
||||
#t))))
|
||||
|
||||
;; Do not show it in the UI since it's meant for internal use.
|
||||
(properties '((hidden? . #t)))))
|
||||
@@ -275,7 +279,7 @@ exec ~a --no-auto-compile \"$0\" \"$@\"
|
||||
(define-public autoconf-archive
|
||||
(package
|
||||
(name "autoconf-archive")
|
||||
(version "2023.02.20")
|
||||
(version "2021.02.19")
|
||||
(source
|
||||
(origin
|
||||
(method url-fetch)
|
||||
@@ -283,7 +287,7 @@ exec ~a --no-auto-compile \"$0\" \"$@\"
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0cqsqdnmjdyybzw8wqhwkgs1vh7r5pbw66a6g7sz2a5fg6209m3i"))))
|
||||
"1gcwqspcxiygnyk02smsk8ivzs9r69ji38izxzzsijyx52fyp9p8"))))
|
||||
(build-system gnu-build-system)
|
||||
(home-page "https://www.gnu.org/software/autoconf-archive/")
|
||||
(synopsis "Collection of freely reusable Autoconf macros")
|
||||
@@ -320,104 +324,107 @@ output is indexed in many ways to simplify browsing.")
|
||||
(define-public automake
|
||||
(package
|
||||
(name "automake")
|
||||
(version "1.16.5")
|
||||
(version "1.16.3")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/automake/automake-"
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0sdl32qxdy7m06iggmkkvf7j520rmmgbsjzbm7fgnxwxdp6mh7gh"))
|
||||
(patches
|
||||
(search-patches "automake-skip-amhello-tests.patch"))))
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/automake/automake-"
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0fmz2fhmzcpacnprl5msphvaflwiy0hvpgmqlgfny72ddijzfazz"))
|
||||
(patches
|
||||
(search-patches "automake-skip-amhello-tests.patch"))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
(list autoconf-wrapper bash-minimal perl))
|
||||
`(("autoconf" ,autoconf-wrapper)
|
||||
("bash" ,bash-minimal)
|
||||
("perl" ,perl)))
|
||||
(native-inputs
|
||||
(list autoconf-wrapper perl))
|
||||
`(("autoconf" ,autoconf-wrapper)
|
||||
("perl" ,perl)))
|
||||
(native-search-paths
|
||||
(list (search-path-specification
|
||||
(variable "ACLOCAL_PATH")
|
||||
(files '("share/aclocal")))))
|
||||
(arguments
|
||||
(list
|
||||
#:modules '((guix build gnu-build-system)
|
||||
`(#:modules ((guix build gnu-build-system)
|
||||
(guix build utils)
|
||||
(srfi srfi-1)
|
||||
(srfi srfi-26)
|
||||
(rnrs io ports))
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-before 'patch-source-shebangs 'patch-tests-shebangs
|
||||
(lambda* (#:key native-inputs inputs #:allow-other-keys)
|
||||
(let ((sh (search-input-file (or native-inputs inputs) "bin/sh")))
|
||||
(substitute* (find-files "t" "\\.(sh|tap)$")
|
||||
(("#![[:blank:]]?/bin/sh")
|
||||
(string-append "#!" sh)))
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-before 'patch-source-shebangs 'patch-tests-shebangs
|
||||
(lambda _
|
||||
(let ((sh (which "sh")))
|
||||
(substitute* (find-files "t" "\\.(sh|tap)$")
|
||||
(("#![[:blank:]]?/bin/sh")
|
||||
(string-append "#!" sh)))
|
||||
|
||||
;; Set these variables for all the `configure' runs
|
||||
;; that occur during the test suite.
|
||||
(setenv "SHELL" sh)
|
||||
(setenv "CONFIG_SHELL" sh))))
|
||||
(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")))))
|
||||
;; Set these variables for all the `configure' runs
|
||||
;; that occur during the test suite.
|
||||
(setenv "SHELL" sh)
|
||||
(setenv "CONFIG_SHELL" sh)
|
||||
#t)))
|
||||
|
||||
#$@(if (%current-target-system)
|
||||
#~((add-after 'install 'patch-non-shebang-references
|
||||
(lambda* (#:key inputs #:allow-other-keys)
|
||||
;; `patch-shebangs' patches shebangs only, and the Perl
|
||||
;; scripts use a re-exec feature that references the
|
||||
;; build hosts' perl. Also, AUTOCONF and BASH store
|
||||
;; references hide in the scripts.
|
||||
(let ((autoconf
|
||||
(dirname (dirname
|
||||
(search-input-file inputs "bin/autoconf"))))
|
||||
(bash
|
||||
(dirname (dirname
|
||||
(search-input-file inputs "bin/bash"))))
|
||||
(perl
|
||||
(dirname (dirname
|
||||
(search-input-file inputs "bin/perl"))))
|
||||
(store-directory (%store-directory)))
|
||||
(substitute* (find-files (string-append #$output "/bin"))
|
||||
(((string-append store-directory "/[^/]*-autoconf-[^/]*"))
|
||||
autoconf)
|
||||
(((string-append store-directory "/[^/]*-bash-[^/]*"))
|
||||
bash)
|
||||
(((string-append store-directory "/[^/]*-perl-[^/]*"))
|
||||
perl))))))
|
||||
(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))
|
||||
|
||||
,@(if (%current-target-system)
|
||||
`((add-after 'install 'patch-non-shebang-references
|
||||
(lambda* (#:key build inputs outputs #:allow-other-keys)
|
||||
;; `patch-shebangs' patches shebangs only, and the Perl
|
||||
;; scripts use a re-exec feature that references the
|
||||
;; build hosts' perl. Also, AUTOCONF and BASH store
|
||||
;; references hide in the scripts.
|
||||
(let ((autoconf (assoc-ref inputs "autoconf"))
|
||||
(bash (assoc-ref inputs "bash"))
|
||||
(perl (assoc-ref inputs "perl"))
|
||||
(out (assoc-ref outputs "out"))
|
||||
(store-directory (%store-directory)))
|
||||
(substitute* (find-files (string-append out "/bin"))
|
||||
(((string-append store-directory "/[^/]*-autoconf-[^/]*"))
|
||||
autoconf)
|
||||
(((string-append store-directory "/[^/]*-bash-[^/]*"))
|
||||
bash)
|
||||
(((string-append store-directory "/[^/]*-perl-[^/]*"))
|
||||
perl))
|
||||
#t))))
|
||||
'())
|
||||
|
||||
;; Files like `install-sh', `mdate.sh', etc. must use
|
||||
;; #!/bin/sh, otherwise users could leak erroneous shebangs
|
||||
;; in the wild. See <http://bugs.gnu.org/14201> for an
|
||||
;; example.
|
||||
(add-after 'install 'unpatch-shebangs
|
||||
(lambda _
|
||||
(let ((dir (string-append #$output "/share")))
|
||||
(define (starts-with-shebang? file)
|
||||
(equal? (call-with-input-file file
|
||||
(lambda (p)
|
||||
(list (get-u8 p) (get-u8 p))))
|
||||
(map char->integer '(#\# #\!))))
|
||||
;; Files like `install-sh', `mdate.sh', etc. must use
|
||||
;; #!/bin/sh, otherwise users could leak erroneous shebangs
|
||||
;; in the wild. See <http://bugs.gnu.org/14201> for an
|
||||
;; example.
|
||||
(add-after 'install 'unpatch-shebangs
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(let* ((out (assoc-ref outputs "out"))
|
||||
(dir (string-append out "/share")))
|
||||
(define (starts-with-shebang? file)
|
||||
(equal? (call-with-input-file file
|
||||
(lambda (p)
|
||||
(list (get-u8 p) (get-u8 p))))
|
||||
(map char->integer '(#\# #\!))))
|
||||
|
||||
(for-each (lambda (file)
|
||||
(when (and (starts-with-shebang? file)
|
||||
(executable-file? file))
|
||||
(format #t "restoring shebang on `~a'~%"
|
||||
file)
|
||||
(substitute* file
|
||||
(("^#!.*/bin/sh")
|
||||
"#!/bin/sh")
|
||||
(("^#!.*/bin/env(.*)$" _ args)
|
||||
(string-append "#!/usr/bin/env"
|
||||
args)))))
|
||||
(find-files dir ".*"))))))))
|
||||
(for-each (lambda (file)
|
||||
(when (and (starts-with-shebang? file)
|
||||
(executable-file? file))
|
||||
(format #t "restoring shebang on `~a'~%"
|
||||
file)
|
||||
(substitute* file
|
||||
(("^#!.*/bin/sh")
|
||||
"#!/bin/sh")
|
||||
(("^#!.*/bin/env(.*)$" _ args)
|
||||
(string-append "#!/usr/bin/env"
|
||||
args)))))
|
||||
(find-files dir ".*"))
|
||||
#t))))))
|
||||
(home-page "https://www.gnu.org/software/automake/")
|
||||
(synopsis "Making GNU standards-compliant Makefiles")
|
||||
(description
|
||||
@@ -427,30 +434,42 @@ 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.5
|
||||
(package
|
||||
(inherit automake)
|
||||
(version "1.16.5")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/automake/automake-"
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0sdl32qxdy7m06iggmkkvf7j520rmmgbsjzbm7fgnxwxdp6mh7gh"))
|
||||
(patches
|
||||
(search-patches "automake-skip-amhello-tests.patch"))))))
|
||||
|
||||
(define-public libtool
|
||||
(package
|
||||
(name "libtool")
|
||||
(version "2.4.7")
|
||||
(version "2.4.6")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/libtool/libtool-"
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0pb3l4x37k6fj1lwnpzws55gi3pxl0hx56jm4bzmbrkw0mzj2zsg"))
|
||||
(patches (search-patches "libtool-skip-tests2.patch"
|
||||
"libtool-grep-compat.patch"))))
|
||||
"0vxj52zm709125gwv9qqlw02silj8bnjnh4y07arrz60r31ai1vw"))
|
||||
(patches (search-patches "libtool-skip-tests2.patch"))))
|
||||
(build-system gnu-build-system)
|
||||
(propagated-inputs (list m4))
|
||||
(native-inputs
|
||||
(list m4
|
||||
perl
|
||||
;; XXX: this shouldn't be necessary, but without it test
|
||||
;; 102 fails because it cannot find ltdl/libltdl.la.
|
||||
libltdl
|
||||
help2man ; because we modify ltmain.sh
|
||||
automake ; some tests rely on 'aclocal'
|
||||
autoconf-wrapper)) ; others on 'autom4te'
|
||||
(native-inputs `(("m4" ,m4)
|
||||
("perl" ,perl)
|
||||
;; XXX: this shouldn't be necessary, but without it test
|
||||
;; 102 fails because it cannot find ltdl/libltdl.la.
|
||||
("libltdl" ,libltdl)
|
||||
("help2man" ,help2man) ;because we modify ltmain.sh
|
||||
("automake" ,automake) ;some tests rely on 'aclocal'
|
||||
("autoconf" ,autoconf-wrapper))) ;others on 'autom4te'
|
||||
|
||||
(arguments
|
||||
`(;; Libltdl is provided as a separate package, so don't install it here.
|
||||
@@ -466,18 +485,18 @@ Makefile, simplifying the entire process for the developer.")
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-before 'check 'pre-check
|
||||
(lambda* (#:key inputs native-inputs parallel-tests? #:allow-other-keys)
|
||||
(lambda* (#:key inputs native-inputs #:allow-other-keys)
|
||||
;; Run the test suite in parallel, if possible.
|
||||
(setenv "TESTSUITEFLAGS"
|
||||
(string-append
|
||||
"-j"
|
||||
(if parallel-tests?
|
||||
(number->string (parallel-job-count))
|
||||
"1")))
|
||||
(number->string (parallel-job-count))))
|
||||
;; Patch references to /bin/sh.
|
||||
(let ((/bin/sh (search-input-file (or native-inputs inputs) "bin/sh")))
|
||||
(let ((bash (assoc-ref (or native-inputs inputs) "bash")))
|
||||
(substitute* "tests/testsuite"
|
||||
(("/bin/sh") /bin/sh)))))
|
||||
(("/bin/sh")
|
||||
(string-append bash "/bin/sh")))
|
||||
#t)))
|
||||
;; These files may be copied into source trees by libtoolize,
|
||||
;; therefore they must not point to store file names that would be
|
||||
;; leaked with tarballs generated by make dist.
|
||||
@@ -489,7 +508,8 @@ Makefile, simplifying the entire process for the developer.")
|
||||
(format #t "restoring shebang on `~a'~%" file)
|
||||
(substitute* file
|
||||
(("^#!.*/bin/sh") "#!/bin/sh")))
|
||||
(find-files dir))))))))
|
||||
(find-files dir ".*"))
|
||||
#t))))))
|
||||
|
||||
(synopsis "Generic shared library support tools")
|
||||
(description
|
||||
@@ -499,6 +519,18 @@ complexity of working with shared libraries across platforms.")
|
||||
(license gpl3+)
|
||||
(home-page "https://www.gnu.org/software/libtool/")))
|
||||
|
||||
(define-public libtool-2.4.7
|
||||
(package
|
||||
(inherit libtool)
|
||||
(version "2.4.7")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/libtool/libtool-"
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0pb3l4x37k6fj1lwnpzws55gi3pxl0hx56jm4bzmbrkw0mzj2zsg"))))))
|
||||
|
||||
(define-public config
|
||||
(let ((revision "1")
|
||||
(commit "c8ddc8472f8efcadafc1ef53ca1d863415fddd5f"))
|
||||
@@ -553,20 +585,20 @@ configuration in nearly all GNU packages (and many others).")
|
||||
;; Libtool's extensive test suite isn't run.
|
||||
(package
|
||||
(name "libltdl")
|
||||
(version "2.4.7")
|
||||
(version "2.4.6")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append "mirror://gnu/libtool/libtool-"
|
||||
version ".tar.xz"))
|
||||
(sha256
|
||||
(base32
|
||||
"0pb3l4x37k6fj1lwnpzws55gi3pxl0hx56jm4bzmbrkw0mzj2zsg"))))
|
||||
"0vxj52zm709125gwv9qqlw02silj8bnjnh4y07arrz60r31ai1vw"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
'(#:configure-flags '("--enable-ltdl-install") ;really install it
|
||||
#:phases (modify-phases %standard-phases
|
||||
(add-before 'configure 'change-directory
|
||||
(lambda _ (chdir "libltdl"))))))
|
||||
(lambda _ (chdir "libltdl") #t)))))
|
||||
|
||||
(synopsis "System-independent dlopen wrapper of GNU libtool")
|
||||
(description (package-description libtool))
|
||||
|
||||
@@ -76,13 +76,6 @@ The files in the list do not have extensions (.el, .elc)."
|
||||
(when (file-directory-p pkg-dir)
|
||||
(package-load-descriptor pkg-dir)))))))))))
|
||||
|
||||
;; If emacs built with tree-sitter, read the value of the environment variable
|
||||
;; to make tree-sitter grammars available in emacs out-of-the-box.
|
||||
(with-eval-after-load 'treesit
|
||||
(when-let ((grammar-path (getenv "TREE_SITTER_GRAMMAR_PATH")))
|
||||
(mapcar (lambda (x) (add-to-list 'treesit-extra-load-path x))
|
||||
(split-string grammar-path ":"))))
|
||||
|
||||
(provide 'guix-emacs)
|
||||
|
||||
;;; guix-emacs.el ends here
|
||||
|
||||
@@ -1645,7 +1645,7 @@ CONFIG_NET_FLOW_LIMIT=y
|
||||
#
|
||||
CONFIG_NET_PKTGEN=m
|
||||
CONFIG_NET_TCPPROBE=m
|
||||
CONFIG_NET_DROP_MONITOR=m
|
||||
# CONFIG_NET_DROP_MONITOR is not set
|
||||
CONFIG_HAMRADIO=y
|
||||
|
||||
#
|
||||
|
||||
@@ -1639,7 +1639,7 @@ CONFIG_NET_FLOW_LIMIT=y
|
||||
#
|
||||
CONFIG_NET_PKTGEN=m
|
||||
CONFIG_NET_TCPPROBE=m
|
||||
CONFIG_NET_DROP_MONITOR=m
|
||||
# CONFIG_NET_DROP_MONITOR is not set
|
||||
CONFIG_HAMRADIO=y
|
||||
|
||||
#
|
||||
|
||||
@@ -1747,7 +1747,7 @@ CONFIG_NET_FLOW_LIMIT=y
|
||||
# Network testing
|
||||
#
|
||||
CONFIG_NET_PKTGEN=m
|
||||
CONFIG_NET_DROP_MONITOR=m
|
||||
# CONFIG_NET_DROP_MONITOR is not set
|
||||
CONFIG_HAMRADIO=y
|
||||
|
||||
#
|
||||
|
||||
@@ -1753,7 +1753,7 @@ CONFIG_NET_FLOW_LIMIT=y
|
||||
# Network testing
|
||||
#
|
||||
CONFIG_NET_PKTGEN=m
|
||||
CONFIG_NET_DROP_MONITOR=m
|
||||
# CONFIG_NET_DROP_MONITOR is not set
|
||||
CONFIG_HAMRADIO=y
|
||||
|
||||
#
|
||||
|
||||
+2301
-4891
File diff suppressed because it is too large
Load Diff
+2400
-5327
File diff suppressed because it is too large
Load Diff
@@ -1745,7 +1745,7 @@ CONFIG_NET_FLOW_LIMIT=y
|
||||
# Network testing
|
||||
#
|
||||
CONFIG_NET_PKTGEN=m
|
||||
CONFIG_NET_DROP_MONITOR=m
|
||||
CONFIG_NET_DROP_MONITOR=y
|
||||
# end of Network testing
|
||||
# end of Networking options
|
||||
|
||||
|
||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user