1
0
forked from tribes/guix

Compare commits

..

6 Commits

Author SHA1 Message Date
Ludovic Courtès 48aa30ce73 build: Add 'doc/build.scm' to build on-line copies of the manual.
* doc/build.scm: New file.
* Makefile.am (EXTRA_DIST): Add it.
2019-07-12 15:03:48 +02:00
Ludovic Courtès adf577dcc4 doc: Update htmlxref.cnf.
* doc/htmlxref.cnf (G): Switch to https.
(geiser, guix.de, guix.es, hurd): New entries.
2019-05-04 22:39:59 +02:00
Ludovic Courtès 1a9fc8e228 doc: Warn about missing entries in htmlxref.cnf.
* doc/local.mk (AM_MAKEINFOHTMLFLAGS): New variable.
2019-05-04 22:39:56 +02:00
Ludovic Courtès 2921b6a611 doc: Adjust cross-references for GNU triplets.
* doc/guix.texi (Defining Packages): Reference to 'autoconf' instead of
obsolete 'configure' manual for triplets.
(Additional Build Options): Adjust 'autoconf' node name.
2019-05-04 22:39:52 +02:00
Ludovic Courtès 3aa11dfbed doc: Provide the actual URL to the VM image.
Fixes <https://bugs.gnu.org/35537>.
Reported by Andy Tai <atai@atai.org>.

* doc/guix.texi (Running Guix in a VM): Use @url and provide the actual
URL, without @var{system}.
2019-05-04 22:19:15 +02:00
Ludovic Courtès 542e7fb57f doc: Add note about <https://bugs.gnu.org/35541>.
* doc/guix.texi (Guided Graphical Installation): Add node about
<https://bugs.gnu.org/35541>.
(System Installation): Refer to it.
2019-05-04 22:16:53 +02:00
3549 changed files with 670228 additions and 2760851 deletions
-8
View File
@@ -1,8 +0,0 @@
[codespell]
skip = guix/d3.v3.js, *.po, doc/*info, doc/*.de.*, doc/*.es.*, doc/*.fr.*, doc/*.it.*, doc/*.ko.*, doc/*.pt_BR.*, doc/*.ru.*, doc/*.sk.*, doc/*.sv.*, doc/*.zh_CN.*
ignore-words-list = crate, debbugs, deriver
write-changes = true
# ask for confirmation, ask to choose from a list
interactive = 3
# Number of lines to show before and after for context
context = 1
+23 -627
View File
@@ -1,131 +1,18 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012-2023 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2013,2014 Mark H Weaver <mhw@netris.org>
;;; Copyright © 2014 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
;;; Copyright © 2015 David Thompson <davet@gnu.org>
;;; Copyright © 2016 Hartmut Goebel <h.goebel@crazy-compilers.com>
;;; Copyright © 2017 Alex Kost <alezost@gmail.com>
;;; Copyright © 2018-2020 Caleb Ristvedt <caleb.ristvedt@cune.org>
;;; Copyright © 2020-2023, 2025 Maxim Cournoyer <maxim@guixotic.coop>
;;; Copyright © 2020 Miguel Ángel Arruga Vivas <rosen644835@gmail.com>
;;; Copyright © 2020 Christine Lemmer-Webber <cwebber@dustycloud.org>
;;; Copyright © 2022 Liliana Marie Prikler <liliana.prikler@gmail.com>
;;; Copyright © 2022 Andrew Tropin <andrew@trop.in>
;;; Copyright © 2022 Brian Cully <bjc@kublai.com>
;;; Copyright © 2023 (unmatched-parenthesis <paren@disroot.org>
;;; Copyright © 2024 Christopher Baines <mail@cbaines.net>
;;; Copyright © 2024 Tomas Volf <~@wolfsden.cz>
;;; Copyright © 2024 Nicolas Graves <ngraves@ngraves.fr>
;;; Copyright © 2025 David Elsing <david.elsing@posteo.net>
;;; Copyright © 2025 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/>.
;; Per-directory local variables for GNU Emacs 23 and later.
((nil
. ((fill-column . 78)
(tab-width . 8)
(sentence-end-double-space . t)
;; For use with 'bug-reference-prog-mode'. Extra bug-reference
;; configuration should be done in your Emacs user configuration file;
;; refer to (info (guix) The Perfect Setup).
;; For use with 'bug-reference-prog-mode'.
(bug-reference-url-format . "http://bugs.gnu.org/%s")
(bug-reference-bug-regexp
. "\\(<https?://\\bugs\\.gnu\\.org/\\([0-9]+\\)>\\)")
(bug-reference-url-format . "https://issues.guix.gnu.org/%s")
(eval . (add-to-list 'completion-ignored-extensions ".go"))
;; Emacs-Guix
(eval . (setq-local guix-directory
(locate-dominating-file default-directory
".dir-locals.el")))
;; Magit
(eval . (with-eval-after-load 'git-commit
(add-to-list 'git-commit-trailers "Change-Id")))
;; TempEl
(eval . (with-eval-after-load
'tempel
(if (stringp tempel-path)
(setq tempel-path (list tempel-path)))
(let ((guix-tempel-snippets
(concat
(expand-file-name
"etc/snippets/tempel"
(locate-dominating-file default-directory
".dir-locals.el"))
"/*.eld")))
(unless (member guix-tempel-snippets tempel-path)
(add-to-list 'tempel-path guix-tempel-snippets)))))
;; YASnippet
(eval . (with-eval-after-load
'yasnippet
(let ((guix-yasnippets
(expand-file-name
"etc/snippets/yas"
(locate-dominating-file default-directory
".dir-locals.el"))))
(unless (member guix-yasnippets yas-snippet-dirs)
(add-to-list 'yas-snippet-dirs guix-yasnippets)
(yas-reload-all)))))
;; 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)
(geiser-insert-actual-lambda . nil)))
. "<https?://\\(debbugs\\|bugs\\)\\.gnu\\.org/\\([0-9]+\\)>")))
(c-mode . ((c-file-style . "gnu")))
(emacs-lisp-mode . ((indent-tabs-mode . nil)))
(texinfo-mode . ((indent-tabs-mode . nil)
(fill-column . 72)))
(scheme-mode
.
((indent-tabs-mode . nil)
;; Emacs 28 changed the behavior of 'lisp-fill-paragraph', which causes the
;; first line of package descriptions to extrude past 'fill-column', and
;; somehow that is deemed more correct upstream (see:
;; https://issues.guix.gnu.org/56197).
(eval . (progn
(require 'lisp-mode)
(defun emacs27-lisp-fill-paragraph (&optional justify)
(interactive "P")
(or (fill-comment-paragraph justify)
(let ((paragraph-start
(concat paragraph-start
"\\|\\s-*\\([(;\"]\\|\\s-:\\|`(\\|#'(\\)"))
(paragraph-separate
(concat paragraph-separate "\\|\\s-*\".*[,\\.]$"))
(fill-column (if (and (integerp emacs-lisp-docstring-fill-column)
(derived-mode-p 'emacs-lisp-mode))
emacs-lisp-docstring-fill-column
fill-column)))
(fill-paragraph justify))
;; Never return nil.
t))
(setq-local fill-paragraph-function #'emacs27-lisp-fill-paragraph)))
;; This notably allows '(' in Paredit to not insert a space when the
;; preceding symbol is one of these.
(eval . (modify-syntax-entry ?~ "'"))
(eval . (modify-syntax-entry ?$ "'"))
(eval . (modify-syntax-entry ?+ "'"))
(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))
@@ -134,21 +21,10 @@
(eval . (put 'test-equal 'scheme-indent-function 1))
(eval . (put 'test-eq 'scheme-indent-function 1))
(eval . (put 'call-with-input-string 'scheme-indent-function 1))
(eval . (put 'call-with-port 'scheme-indent-function 1))
(eval . (put 'guard 'scheme-indent-function 1))
(eval . (put 'lambda* 'scheme-indent-function 1))
(eval . (put 'peekable-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))
(eval . (put 'with-fluids 'scheme-indent-function 2))
;; TODO: Contribute these to Emacs' scheme-mode.
(eval . (put 'let-keywords 'scheme-indent-function 3))
;; 'modify-inputs' and its keywords.
(eval . (put 'modify-inputs 'scheme-indent-function 1))
(eval . (put 'replace 'scheme-indent-function 1))
(eval . (put 'match-record 'scheme-indent-function 2))
;; 'modify-phases' and its keywords.
(eval . (put 'modify-phases 'scheme-indent-function 1))
@@ -158,15 +34,17 @@
(eval . (put 'modify-services 'scheme-indent-function 1))
(eval . (put 'with-directory-excursion 'scheme-indent-function 1))
(eval . (put 'with-file-lock 'scheme-indent-function 1))
(eval . (put 'with-file-lock/no-wait 'scheme-indent-function 1))
(eval . (put 'with-profile-lock 'scheme-indent-function 1))
(eval . (put 'with-writable-file 'scheme-indent-function 2))
(eval . (put 'package/inherit 'scheme-indent-function 1))
(eval . (put 'package 'scheme-indent-function 0))
(eval . (put 'origin 'scheme-indent-function 0))
(eval . (put 'build-system 'scheme-indent-function 0))
(eval . (put 'bag 'scheme-indent-function 0))
(eval . (put 'graft 'scheme-indent-function 0))
(eval . (put 'operating-system 'scheme-indent-function 0))
(eval . (put 'file-system 'scheme-indent-function 0))
(eval . (put 'manifest-entry 'scheme-indent-function 0))
(eval . (put 'manifest-pattern 'scheme-indent-function 0))
(eval . (put 'substitute-keyword-arguments 'scheme-indent-function 1))
(eval . (put 'with-store 'scheme-indent-function 1))
(eval . (put 'with-store/non-blocking 'scheme-indent-function 1))
(eval . (put 'with-external-store 'scheme-indent-function 1))
(eval . (put 'with-error-handling 'scheme-indent-function 0))
(eval . (put 'with-mutex 'scheme-indent-function 1))
@@ -175,8 +53,6 @@
(eval . (put 'call-with-decompressed-port 'scheme-indent-function 2))
(eval . (put 'call-with-gzip-input-port 'scheme-indent-function 1))
(eval . (put 'call-with-gzip-output-port 'scheme-indent-function 1))
(eval . (put 'call-with-lzip-input-port 'scheme-indent-function 1))
(eval . (put 'call-with-lzip-output-port 'scheme-indent-function 1))
(eval . (put 'signature-case 'scheme-indent-function 1))
(eval . (put 'emacs-batch-eval 'scheme-indent-function 0))
(eval . (put 'emacs-batch-edit-file 'scheme-indent-function 1))
@@ -186,7 +62,6 @@
(eval . (put 'with-derivation-substitute 'scheme-indent-function 2))
(eval . (put 'with-status-report 'scheme-indent-function 1))
(eval . (put 'with-status-verbosity 'scheme-indent-function 1))
(eval . (put 'with-build-handler 'scheme-indent-function 1))
(eval . (put 'mlambda 'scheme-indent-function 1))
(eval . (put 'mlambdaq 'scheme-indent-function 1))
@@ -197,505 +72,26 @@
(eval . (put 'munless 'scheme-indent-function 1))
(eval . (put 'mlet* 'scheme-indent-function 2))
(eval . (put 'mlet 'scheme-indent-function 2))
(eval . (put 'state-parameterize 'scheme-indent-function 2))
(eval . (put 'store-parameterize 'scheme-indent-function 2))
(eval . (put 'run-with-store 'scheme-indent-function 1))
(eval . (put 'run-with-state 'scheme-indent-function 1))
(eval . (put 'wrap-program 'scheme-indent-function 1))
(eval . (put 'wrap-script 'scheme-indent-function 1))
(eval . (put 'with-imported-modules 'scheme-indent-function 1))
(eval . (put 'with-extensions 'scheme-indent-function 1))
(eval . (put 'with-parameters 'scheme-indent-function 1))
(eval . (put 'let-system 'scheme-indent-function 1))
(eval . (put 'with-build-variables 'scheme-indent-function 2))
(eval . (put 'with-database 'scheme-indent-function 2))
(eval . (put 'call-with-database 'scheme-indent-function 1))
(eval . (put 'call-with-transaction 'scheme-indent-function 1))
(eval . (put 'call-with-retrying-transaction 'scheme-indent-function 1))
(eval . (put 'call-with-transaction 'scheme-indent-function 2))
(eval . (put 'call-with-container 'scheme-indent-function 1))
(eval . (put 'container-excursion 'scheme-indent-function 1))
(eval . (put 'eventually 'scheme-indent-function 1))
(eval . (put 'call-with-progress-reporter 'scheme-indent-function 1))
(eval . (put 'with-repository 'scheme-indent-function 2))
(eval . (put 'with-temporary-git-repository 'scheme-indent-function 2))
(eval . (put 'with-served-git-repository 'scheme-indent-function 2))
(eval . (put 'with-environment-variables 'scheme-indent-function 1))
(eval . (put 'with-fresh-gnupg-setup 'scheme-indent-function 1))
(eval . (put 'with-paginated-output-port 'scheme-indent-function 1))
(eval . (put 'with-shepherd-action 'scheme-indent-function 3))
(eval . (put 'with-http-server 'scheme-indent-function 1))
;; Record constructors.
;; URIs for origin methods.
(eval . (put 'android-repo-reference 'scheme-indent-function 0))
(eval . (put 'bzr-reference 'scheme-indent-function 0))
(eval . (put 'cvs-reference 'scheme-indent-function 0))
(eval . (put 'git-checkout 'scheme-indent-function 0))
(eval . (put 'git-reference 'scheme-indent-function 0))
(eval . (put 'hg-reference 'scheme-indent-function 0))
(eval . (put 'svn-multi-reference 'scheme-indent-function 0))
(eval . (put 'svn-reference 'scheme-indent-function 0))
;; guix/
(eval . (put 'avahi-service 'scheme-indent-function 0))
(eval . (put 'bag 'scheme-indent-function 0))
(eval . (put 'build-status 'scheme-indent-function 0))
(eval . (put 'build-system 'scheme-indent-function 0))
(eval . (put 'channel 'scheme-indent-function 0))
(eval . (put 'gnu-package-descriptor 'scheme-indent-function 0))
(eval . (put 'graft 'scheme-indent-function 0))
(eval . (put 'lint-checker 'scheme-indent-function 0))
(eval . (put 'lint-warning 'scheme-indent-function 0))
(eval . (put 'manifest-entry 'scheme-indent-function 0))
(eval . (put 'manifest-pattern 'scheme-indent-function 0))
(eval . (put 'manifest-transaction 'scheme-indent-function 0))
(eval . (put 'node-type 'scheme-indent-function 0))
(eval . (put 'origin 'scheme-indent-function 0))
(eval . (put 'package 'scheme-indent-function 0))
(eval . (put 'platform 'scheme-indent-function 0))
(eval . (put 'profile 'scheme-indent-function 0))
(eval . (put 'progress-reporter 'scheme-indent-function 0))
(eval . (put 'search-path-specification 'scheme-indent-function 0))
(eval . (put 'upstream-input 'scheme-indent-function 0))
(eval . (put 'upstream-source 'scheme-indent-function 0))
(eval . (put 'upstream-updater 'scheme-indent-function 0))
;; gnu/
(eval . (put 'bootloader 'scheme-indent-function 0))
(eval . (put 'bootloader-configuration 'scheme-indent-function 0))
(eval . (put 'image 'scheme-indent-function 0))
(eval . (put 'image-type 'scheme-indent-function 0))
(eval . (put 'menu-entry 'scheme-indent-function 0))
(eval . (put 'partition 'scheme-indent-function 0))
;; gnu/machine
(eval . (put 'digital-ocean-configuration 'scheme-indent-function 0))
(eval . (put 'environment-type 'scheme-indent-function 0))
(eval . (put 'hetzner-configuration 'scheme-indent-function 0))
(eval . (put 'machine 'scheme-indent-function 0))
(eval . (put 'machine-ssh-configuration 'scheme-indent-function 0))
;; gnu/system
(eval . (put 'boot-parameters 'scheme-indent-function 0))
(eval . (put 'file-system 'scheme-indent-function 0))
(eval . (put 'file-system-mapping 'scheme-indent-function 0))
(eval . (put 'locale-definition 'scheme-indent-function 0))
(eval . (put 'mapped-device 'scheme-indent-function 0))
(eval . (put 'mapped-device-kind 'scheme-indent-function 0))
(eval . (put 'name-service 'scheme-indent-function 0))
(eval . (put 'name-service-switch 'scheme-indent-function 0))
(eval . (put 'operating-system 'scheme-indent-function 0))
(eval . (put 'pam-configuration 'scheme-indent-function 0))
(eval . (put 'pam-entry 'scheme-indent-function 0))
(eval . (put 'pam-extension 'scheme-indent-function 0))
(eval . (put 'pam-service 'scheme-indent-function 0))
(eval . (put 'privileged-program 'scheme-indent-function 0))
(eval . (put 'subid-range 'scheme-indent-function 0))
(eval . (put 'subids-configuration 'scheme-indent-function 0))
(eval . (put 'subids-extension 'scheme-indent-function 0))
(eval . (put 'swap-space 'scheme-indent-function 0))
(eval . (put 'user-account 'scheme-indent-function 0))
(eval . (put 'user-group 'scheme-indent-function 0))
(eval . (put 'virtual-machine 'scheme-indent-function 0))
;; gnu/home
(eval . (put 'home-bash-configuration 'scheme-indent-function 0))
(eval . (put 'home-bash-extension 'scheme-indent-function 0))
(eval . (put 'home-batsignal-configuration 'scheme-indent-function 0))
(eval . (put 'home-beets-configuration 'scheme-indent-function 0))
(eval . (put 'home-dbus-configuration 'scheme-indent-function 0))
(eval . (put 'home-dotfiles-configuration 'scheme-indent-function 0))
(eval . (put 'home-environment 'scheme-indent-function 0))
(eval . (put 'home-fish-configuration 'scheme-indent-function 0))
(eval . (put 'home-fish-extension 'scheme-indent-function 0))
(eval . (put 'home-gpg-agent-configuration 'scheme-indent-function 0))
(eval . (put 'home-inputrc-configuration 'scheme-indent-function 0))
(eval . (put 'home-kodi-configuration 'scheme-indent-function 0))
(eval . (put 'home-mcron-configuration 'scheme-indent-function 0))
(eval . (put 'home-msmtp-configuration 'scheme-indent-function 0))
(eval . (put 'home-openssh-configuration 'scheme-indent-function 0))
(eval . (put 'home-parcimonie-configuration 'scheme-indent-function 0))
(eval . (put 'home-pipewire-configuration 'scheme-indent-function 0))
(eval . (put 'home-redshift-configuration 'scheme-indent-function 0))
(eval . (put 'home-shell-profile-configuration 'scheme-indent-function 0))
(eval . (put 'home-shepherd-configuration 'scheme-indent-function 0))
(eval . (put 'home-ssh-agent-configuration 'scheme-indent-function 0))
(eval . (put 'home-unclutter-configuration 'scheme-indent-function 0))
(eval . (put 'home-xdg-base-directories-configuration 'scheme-indent-function 0))
(eval . (put 'home-xdg-mime-applications-configuration 'scheme-indent-function 0))
(eval . (put 'home-xdg-user-directories-configuration 'scheme-indent-function 0))
(eval . (put 'home-xmodmap-configuration 'scheme-indent-function 0))
(eval . (put 'home-znc-configuration 'scheme-indent-function 0))
(eval . (put 'home-zsh-configuration 'scheme-indent-function 0))
(eval . (put 'home-zsh-extension 'scheme-indent-function 0))
(eval . (put 'msmtp-account 'scheme-indent-function 0))
(eval . (put 'msmtp-configuration 'scheme-indent-function 0))
(eval . (put 'openssh-host 'scheme-indent-function 0))
(eval . (put 'point 'scheme-indent-function 0))
(eval . (put 'proxy-jump 'scheme-indent-function 0))
(eval . (put 'sway-bar 'scheme-indent-function 0))
(eval . (put 'sway-border-color 'scheme-indent-function 0))
(eval . (put 'sway-color 'scheme-indent-function 0))
(eval . (put 'sway-configuration 'scheme-indent-function 0))
(eval . (put 'sway-input 'scheme-indent-function 0))
(eval . (put 'sway-mode 'scheme-indent-function 0))
(eval . (put 'sway-output 'scheme-indent-function 0))
(eval . (put 'xdg-desktop-action 'scheme-indent-function 0))
(eval . (put 'xdg-desktop-entry 'scheme-indent-function 0))
;; gnu/services
(eval . (put 'agate-configuration 'scheme-indent-function 0))
(eval . (put 'agetty-configuration 'scheme-indent-function 0))
(eval . (put 'alsa-configuration 'scheme-indent-function 0))
(eval . (put 'anonip-configuration 'scheme-indent-function 0))
(eval . (put 'apcupsd-configuration 'scheme-indent-function 0))
(eval . (put 'apcupsd-event-handlers 'scheme-indent-function 0))
(eval . (put 'auditd-configuration 'scheme-indent-function 0))
(eval . (put 'autossh-configuration 'scheme-indent-function 0))
(eval . (put 'avahi-configuration 'scheme-indent-function 0))
(eval . (put 'backend-userroot-configuration 'scheme-indent-function 0))
(eval . (put 'bffe-configuration 'scheme-indent-function 0))
(eval . (put 'bitlbee-configuration 'scheme-indent-function 0))
(eval . (put 'bluetooth-configuration 'scheme-indent-function 0))
(eval . (put 'cachefilesd-configuration 'scheme-indent-function 0))
(eval . (put 'certbot-configuration 'scheme-indent-function 0))
(eval . (put 'cgit-configuration 'scheme-indent-function 0))
(eval . (put 'configuration-field 'scheme-indent-function 0))
(eval . (put 'connman-configuration 'scheme-indent-function 0))
(eval . (put 'connman-general-configuration 'scheme-indent-function 0))
(eval . (put 'containerd-configuration 'scheme-indent-function 0))
(eval . (put 'cuirass-configuration 'scheme-indent-function 0))
(eval . (put 'cuirass-remote-server-configuration 'scheme-indent-function 0))
(eval . (put 'cuirass-remote-worker-configuration 'scheme-indent-function 0))
(eval . (put 'cups-configuration 'scheme-indent-function 0))
(eval . (put 'darkstat-configuration 'scheme-indent-function 0))
(eval . (put 'dbus-configuration 'scheme-indent-function 0))
(eval . (put 'dconf-keyfile 'scheme-indent-function 0))
(eval . (put 'dconf-profile 'scheme-indent-function 0))
(eval . (put 'debootstrap-configuration 'scheme-indent-function 0))
(eval . (put 'dhcp-client-configuration 'scheme-indent-function 0))
(eval . (put 'dhcpcd-configuration 'scheme-indent-function 0))
(eval . (put 'dhcpd-configuration 'scheme-indent-function 0))
(eval . (put 'dicod-configuration 'scheme-indent-function 0))
(eval . (put 'dict-configuration 'scheme-indent-function 0))
(eval . (put 'directory-server-instance-configuration 'scheme-indent-function 0))
(eval . (put 'dnsmasq-configuration 'scheme-indent-function 0))
(eval . (put 'docker-configuration 'scheme-indent-function 0))
(eval . (put 'dovecot-configuration 'scheme-indent-function 0))
(eval . (put 'dropbear-configuration 'scheme-indent-function 0))
(eval . (put 'earlyoom-configuration 'scheme-indent-function 0))
(eval . (put 'elogind-configuration 'scheme-indent-function 0))
(eval . (put 'enlightenment-desktop-configuration 'scheme-indent-function 0))
(eval . (put 'exim-configuration 'scheme-indent-function 0))
(eval . (put 'ext-component-configuration 'scheme-indent-function 0))
(eval . (put 'fail2ban-configuration 'scheme-indent-function 0))
(eval . (put 'fail2ban-ignore-cache-configuration 'scheme-indent-function 0))
(eval . (put 'fail2ban-jail-action-configuration 'scheme-indent-function 0))
(eval . (put 'fail2ban-jail-configuration 'scheme-indent-function 0))
(eval . (put 'fail2ban-jail-filter-configuration 'scheme-indent-function 0))
(eval . (put 'fcgiwrap-configuration 'scheme-indent-function 0))
(eval . (put 'fifo-listener-configuration 'scheme-indent-function 0))
(eval . (put 'file-database-configuration 'scheme-indent-function 0))
(eval . (put 'files-configuration 'scheme-indent-function 0))
(eval . (put 'fprintd-configuration 'scheme-indent-function 0))
(eval . (put 'fstrim-configuration 'scheme-indent-function 0))
(eval . (put 'ganeti-cleaner-configuration 'scheme-indent-function 0))
(eval . (put 'ganeti-confd-configuration 'scheme-indent-function 0))
(eval . (put 'ganeti-configuration 'scheme-indent-function 0))
(eval . (put 'ganeti-kvmd-configuration 'scheme-indent-function 0))
(eval . (put 'ganeti-luxid-configuration 'scheme-indent-function 0))
(eval . (put 'ganeti-metad-configuration 'scheme-indent-function 0))
(eval . (put 'ganeti-mond-configuration 'scheme-indent-function 0))
(eval . (put 'ganeti-noded-configuration 'scheme-indent-function 0))
(eval . (put 'ganeti-os 'scheme-indent-function 0))
(eval . (put 'ganeti-os-variant 'scheme-indent-function 0))
(eval . (put 'ganeti-rapi-configuration 'scheme-indent-function 0))
(eval . (put 'ganeti-watcher-configuration 'scheme-indent-function 0))
(eval . (put 'ganeti-wconfd-configuration 'scheme-indent-function 0))
(eval . (put 'gdm-configuration 'scheme-indent-function 0))
(eval . (put 'geoclue-configuration 'scheme-indent-function 0))
(eval . (put 'getmail-configuration 'scheme-indent-function 0))
(eval . (put 'getmail-configuration-file 'scheme-indent-function 0))
(eval . (put 'getmail-destination-configuration 'scheme-indent-function 0))
(eval . (put 'getmail-options-configuration 'scheme-indent-function 0))
(eval . (put 'getmail-retriever-configuration 'scheme-indent-function 0))
(eval . (put 'git-daemon-configuration 'scheme-indent-function 0))
(eval . (put 'git-http-configuration 'scheme-indent-function 0))
(eval . (put 'gitile-configuration 'scheme-indent-function 0))
(eval . (put 'gitolite-configuration 'scheme-indent-function 0))
(eval . (put 'gitolite-git-configuration 'scheme-indent-function 0))
(eval . (put 'gitolite-rc-file 'scheme-indent-function 0))
(eval . (put 'gmnisrv-configuration 'scheme-indent-function 0))
(eval . (put 'gnome-desktop-configuration 'scheme-indent-function 0))
(eval . (put 'gnome-keyring-configuration 'scheme-indent-function 0))
(eval . (put 'gpm-configuration 'scheme-indent-function 0))
(eval . (put 'greetd-agreety-session 'scheme-indent-function 0))
(eval . (put 'greetd-configuration 'scheme-indent-function 0))
(eval . (put 'greetd-gtkgreet-sway-session 'scheme-indent-function 0))
(eval . (put 'greetd-terminal-configuration 'scheme-indent-function 0))
(eval . (put 'greetd-user-session 'scheme-indent-function 0))
(eval . (put 'greetd-wlgreet-configuration 'scheme-indent-function 0))
(eval . (put 'greetd-wlgreet-session 'scheme-indent-function 0))
(eval . (put 'greetd-wlgreet-sway-session 'scheme-indent-function 0))
(eval . (put 'gss-configuration 'scheme-indent-function 0))
(eval . (put 'guix-build-coordinator-agent-configuration 'scheme-indent-function 0))
(eval . (put 'guix-build-coordinator-agent-dynamic-auth 'scheme-indent-function 0))
(eval . (put 'guix-build-coordinator-agent-dynamic-auth-with-file 'scheme-indent-function 0))
(eval . (put 'guix-build-coordinator-agent-password-auth 'scheme-indent-function 0))
(eval . (put 'guix-build-coordinator-agent-password-file-auth 'scheme-indent-function 0))
(eval . (put 'guix-build-coordinator-configuration 'scheme-indent-function 0))
(eval . (put 'guix-configuration 'scheme-indent-function 0))
(eval . (put 'guix-data-service-configuration 'scheme-indent-function 0))
(eval . (put 'guix-extension 'scheme-indent-function 0))
(eval . (put 'guix-publish-configuration 'scheme-indent-function 0))
(eval . (put 'gvfs-configuration 'scheme-indent-function 0))
(eval . (put 'host 'scheme-indent-function 0))
(eval . (put 'hostapd-configuration 'scheme-indent-function 0))
(eval . (put 'hpcguix-web-configuration 'scheme-indent-function 0))
(eval . (put 'httpd-config-file 'scheme-indent-function 0))
(eval . (put 'httpd-configuration 'scheme-indent-function 0))
(eval . (put 'httpd-module 'scheme-indent-function 0))
(eval . (put 'httpd-virtualhost 'scheme-indent-function 0))
(eval . (put 'hurd-console-configuration 'scheme-indent-function 0))
(eval . (put 'hurd-getty-configuration 'scheme-indent-function 0))
(eval . (put 'hurd-vm-configuration 'scheme-indent-function 0))
(eval . (put 'idmap-configuration 'scheme-indent-function 0))
(eval . (put 'imap4d-configuration 'scheme-indent-function 0))
(eval . (put 'inet-listener-configuration 'scheme-indent-function 0))
(eval . (put 'inetd-configuration 'scheme-indent-function 0))
(eval . (put 'inetd-entry 'scheme-indent-function 0))
(eval . (put 'inputattach-configuration 'scheme-indent-function 0))
(eval . (put 'int-component-configuration 'scheme-indent-function 0))
(eval . (put 'ipfs-configuration 'scheme-indent-function 0))
(eval . (put 'iptables-configuration 'scheme-indent-function 0))
(eval . (put 'iwd-configuration 'scheme-indent-function 0))
(eval . (put 'iwd-general-settings 'scheme-indent-function 0))
(eval . (put 'iwd-network-settings 'scheme-indent-function 0))
(eval . (put 'iwd-scan-settings 'scheme-indent-function 0))
(eval . (put 'iwd-settings 'scheme-indent-function 0))
(eval . (put 'jami-account 'scheme-indent-function 0))
(eval . (put 'jami-configuration 'scheme-indent-function 0))
(eval . (put 'joycond-configuration 'scheme-indent-function 0))
(eval . (put 'keepalived-configuration 'scheme-indent-function 0))
(eval . (put 'kmscon-configuration 'scheme-indent-function 0))
(eval . (put 'knot-acl-configuration 'scheme-indent-function 0))
(eval . (put 'knot-configuration 'scheme-indent-function 0))
(eval . (put 'knot-key-configuration 'scheme-indent-function 0))
(eval . (put 'knot-keystore-configuration 'scheme-indent-function 0))
(eval . (put 'knot-policy-configuration 'scheme-indent-function 0))
(eval . (put 'knot-remote-configuration 'scheme-indent-function 0))
(eval . (put 'knot-resolver-configuration 'scheme-indent-function 0))
(eval . (put 'knot-zone-configuration 'scheme-indent-function 0))
(eval . (put 'krb5-configuration 'scheme-indent-function 0))
(eval . (put 'krb5-realm 'scheme-indent-function 0))
(eval . (put 'kwallet-configuration 'scheme-indent-function 0))
(eval . (put 'ladspa-configuration 'scheme-indent-function 0))
(eval . (put 'laminar-configuration 'scheme-indent-function 0))
(eval . (put 'libvirt-configuration 'scheme-indent-function 0))
(eval . (put 'lightdm-configuration 'scheme-indent-function 0))
(eval . (put 'lightdm-gtk-greeter-configuration 'scheme-indent-function 0))
(eval . (put 'lightdm-seat-configuration 'scheme-indent-function 0))
(eval . (put 'linux-builder-configuration 'scheme-indent-function 0))
(eval . (put 'lirc-configuration 'scheme-indent-function 0))
(eval . (put 'live-service 'scheme-indent-function 0))
(eval . (put 'localed-configuration 'scheme-indent-function 0))
(eval . (put 'location-access-control 'scheme-indent-function 0))
(eval . (put 'log-cleanup-configuration 'scheme-indent-function 0))
(eval . (put 'log-rotation 'scheme-indent-function 0))
(eval . (put 'log-rotation-configuration 'scheme-indent-function 0))
(eval . (put 'login-configuration 'scheme-indent-function 0))
(eval . (put 'lsh-configuration 'scheme-indent-function 0))
(eval . (put 'lxqt-desktop-configuration 'scheme-indent-function 0))
(eval . (put 'mailbox-configuration 'scheme-indent-function 0))
(eval . (put 'mate-desktop-configuration 'scheme-indent-function 0))
(eval . (put 'mcron-configuration 'scheme-indent-function 0))
(eval . (put 'memcached-configuration 'scheme-indent-function 0))
(eval . (put 'method-access-control 'scheme-indent-function 0))
(eval . (put 'mingetty-configuration 'scheme-indent-function 0))
(eval . (put 'mod-muc-configuration 'scheme-indent-function 0))
(eval . (put 'modem-manager-configuration 'scheme-indent-function 0))
(eval . (put 'mosquitto-configuration 'scheme-indent-function 0))
(eval . (put 'mpd-configuration 'scheme-indent-function 0))
(eval . (put 'mpd-output 'scheme-indent-function 0))
(eval . (put 'mpd-partition 'scheme-indent-function 0))
(eval . (put 'mpd-plugin 'scheme-indent-function 0))
(eval . (put 'mumble-server-configuration 'scheme-indent-function 0))
(eval . (put 'mumble-server-public-registration-configuration 'scheme-indent-function 0))
(eval . (put 'mumi-configuration 'scheme-indent-function 0))
(eval . (put 'mumi-package-configuration 'scheme-indent-function 0))
(eval . (put 'mympd-configuration 'scheme-indent-function 0))
(eval . (put 'mympd-ip-acl 'scheme-indent-function 0))
(eval . (put 'mysql-configuration 'scheme-indent-function 0))
(eval . (put 'namespace-configuration 'scheme-indent-function 0))
(eval . (put 'nar-herder-cached-compression-configuration 'scheme-indent-function 0))
(eval . (put 'nar-herder-configuration 'scheme-indent-function 0))
(eval . (put 'network-address 'scheme-indent-function 0))
(eval . (put 'network-link 'scheme-indent-function 0))
(eval . (put 'network-manager-configuration 'scheme-indent-function 0))
(eval . (put 'network-route 'scheme-indent-function 0))
(eval . (put 'nfs-configuration 'scheme-indent-function 0))
(eval . (put 'nftables-configuration 'scheme-indent-function 0))
(eval . (put 'nginx-configuration 'scheme-indent-function 0))
(eval . (put 'nginx-location-configuration 'scheme-indent-function 0))
(eval . (put 'nginx-log-format-configuration 'scheme-indent-function 0))
(eval . (put 'nginx-named-location-configuration 'scheme-indent-function 0))
(eval . (put 'nginx-server-configuration 'scheme-indent-function 0))
(eval . (put 'nginx-upstream-configuration 'scheme-indent-function 0))
(eval . (put 'ngircd-channel 'scheme-indent-function 0))
(eval . (put 'ngircd-configuration 'scheme-indent-function 0))
(eval . (put 'ngircd-global 'scheme-indent-function 0))
(eval . (put 'ngircd-limits 'scheme-indent-function 0))
(eval . (put 'ngircd-operator 'scheme-indent-function 0))
(eval . (put 'ngircd-options 'scheme-indent-function 0))
(eval . (put 'ngircd-server 'scheme-indent-function 0))
(eval . (put 'ngircd-ssl 'scheme-indent-function 0))
(eval . (put 'nix-configuration 'scheme-indent-function 0))
(eval . (put 'nscd-cache 'scheme-indent-function 0))
(eval . (put 'nscd-configuration 'scheme-indent-function 0))
(eval . (put 'nslcd-configuration 'scheme-indent-function 0))
(eval . (put 'ntp-configuration 'scheme-indent-function 0))
(eval . (put 'ntp-server 'scheme-indent-function 0))
(eval . (put 'oci-container-configuration 'scheme-indent-function 0))
(eval . (put 'oci-image 'scheme-indent-function 0))
(eval . (put 'opaque-cgit-configuration 'scheme-indent-function 0))
(eval . (put 'opaque-cups-configuration 'scheme-indent-function 0))
(eval . (put 'opaque-dovecot-configuration 'scheme-indent-function 0))
(eval . (put 'opaque-prosody-configuration 'scheme-indent-function 0))
(eval . (put 'opendht-configuration 'scheme-indent-function 0))
(eval . (put 'openntpd-configuration 'scheme-indent-function 0))
(eval . (put 'opensmtpd-configuration 'scheme-indent-function 0))
(eval . (put 'openssh-configuration 'scheme-indent-function 0))
(eval . (put 'openvpn-ccd-configuration 'scheme-indent-function 0))
(eval . (put 'openvpn-client-configuration 'scheme-indent-function 0))
(eval . (put 'openvpn-remote-configuration 'scheme-indent-function 0))
(eval . (put 'openvpn-server-configuration 'scheme-indent-function 0))
(eval . (put 'openvswitch-configuration 'scheme-indent-function 0))
(eval . (put 'operation-access-control 'scheme-indent-function 0))
(eval . (put 'package-database-configuration 'scheme-indent-function 0))
(eval . (put 'pagekite-configuration 'scheme-indent-function 0))
(eval . (put 'pam-krb5-configuration 'scheme-indent-function 0))
(eval . (put 'pam-mount-configuration 'scheme-indent-function 0))
(eval . (put 'pam-mount-volume 'scheme-indent-function 0))
(eval . (put 'passdb-configuration 'scheme-indent-function 0))
(eval . (put 'patchwork-configuration 'scheme-indent-function 0))
(eval . (put 'patchwork-database-configuration 'scheme-indent-function 0))
(eval . (put 'patchwork-settings-module 'scheme-indent-function 0))
(eval . (put 'pcscd-configuration 'scheme-indent-function 0))
(eval . (put 'php-fpm-configuration 'scheme-indent-function 0))
(eval . (put 'php-fpm-dynamic-process-manager-configuration 'scheme-indent-function 0))
(eval . (put 'php-fpm-on-demand-process-manager-configuration 'scheme-indent-function 0))
(eval . (put 'php-fpm-static-process-manager-configuration 'scheme-indent-function 0))
(eval . (put 'pipefs-configuration 'scheme-indent-function 0))
(eval . (put 'plasma-desktop-configuration 'scheme-indent-function 0))
(eval . (put 'plugin-configuration 'scheme-indent-function 0))
(eval . (put 'policy-configuration 'scheme-indent-function 0))
(eval . (put 'polkit-configuration 'scheme-indent-function 0))
(eval . (put 'postgresql-config-file 'scheme-indent-function 0))
(eval . (put 'postgresql-configuration 'scheme-indent-function 0))
(eval . (put 'postgresql-role 'scheme-indent-function 0))
(eval . (put 'pounce-configuration 'scheme-indent-function 0))
(eval . (put 'power-profiles-daemon-configuration 'scheme-indent-function 0))
(eval . (put 'powertop-configuration 'scheme-indent-function 0))
(eval . (put 'prometheus-node-exporter-configuration 'scheme-indent-function 0))
(eval . (put 'prosody-configuration 'scheme-indent-function 0))
(eval . (put 'protocol-configuration 'scheme-indent-function 0))
(eval . (put 'pulseaudio-configuration 'scheme-indent-function 0))
(eval . (put 'qemu-binfmt-configuration 'scheme-indent-function 0))
(eval . (put 'qemu-guest-agent-configuration 'scheme-indent-function 0))
(eval . (put 'quassel-configuration 'scheme-indent-function 0))
(eval . (put 'radicale-auth-configuration 'scheme-indent-function 0))
(eval . (put 'radicale-configuration 'scheme-indent-function 0))
(eval . (put 'radicale-encoding-configuration 'scheme-indent-function 0))
(eval . (put 'radicale-logging-configuration 'scheme-indent-function 0))
(eval . (put 'radicale-rights-configuration 'scheme-indent-function 0))
(eval . (put 'radicale-server-configuration 'scheme-indent-function 0))
(eval . (put 'radicale-storage-configuration 'scheme-indent-function 0))
(eval . (put 'rasdaemon-configuration 'scheme-indent-function 0))
(eval . (put 'readymedia-configuration 'scheme-indent-function 0))
(eval . (put 'readymedia-media-directory 'scheme-indent-function 0))
(eval . (put 'redis-configuration 'scheme-indent-function 0))
(eval . (put 'repository-cgit-configuration 'scheme-indent-function 0))
(eval . (put 'resize-file-system-configuration 'scheme-indent-function 0))
(eval . (put 'restic-backup-configuration 'scheme-indent-function 0))
(eval . (put 'restic-backup-job 'scheme-indent-function 0))
(eval . (put 'rngd-configuration 'scheme-indent-function 0))
(eval . (put 'rootless-podman-configuration 'scheme-indent-function 0))
(eval . (put 'rpcbind-configuration 'scheme-indent-function 0))
(eval . (put 'rshiny-configuration 'scheme-indent-function 0))
(eval . (put 'rspamd-configuration 'scheme-indent-function 0))
(eval . (put 'rsync-configuration 'scheme-indent-function 0))
(eval . (put 'rsync-module 'scheme-indent-function 0))
(eval . (put 'samba-configuration 'scheme-indent-function 0))
(eval . (put 'screen-locker-configuration 'scheme-indent-function 0))
(eval . (put 'sddm-configuration 'scheme-indent-function 0))
(eval . (put 'seatd-configuration 'scheme-indent-function 0))
(eval . (put 'service-configuration 'scheme-indent-function 0))
(eval . (put 'service-type 'scheme-indent-function 0))
(eval . (put 'shepherd-action 'scheme-indent-function 0))
(eval . (put 'shepherd-configuration 'scheme-indent-function 0))
(eval . (put 'shepherd-service 'scheme-indent-function 0))
(eval . (put 'slim-configuration 'scheme-indent-function 0))
(eval . (put 'snuik-configuration 'scheme-indent-function 0))
(eval . (put 'speakersafetyd-configuration 'scheme-indent-function 0))
(eval . (put 'spice-vdagent-configuration 'scheme-indent-function 0))
(eval . (put 'ssl-configuration 'scheme-indent-function 0))
(eval . (put 'static-networking 'scheme-indent-function 0))
(eval . (put 'strongswan-configuration 'scheme-indent-function 0))
(eval . (put 'sugar-desktop-configuration 'scheme-indent-function 0))
(eval . (put 'syncthing-config-file 'scheme-indent-function 0))
(eval . (put 'syncthing-configuration 'scheme-indent-function 0))
(eval . (put 'syncthing-device 'scheme-indent-function 0))
(eval . (put 'syncthing-folder 'scheme-indent-function 0))
(eval . (put 'syncthing-folder-device 'scheme-indent-function 0))
(eval . (put 'sysctl-configuration 'scheme-indent-function 0))
(eval . (put 'syslog-configuration 'scheme-indent-function 0))
(eval . (put 'system-log-configuration 'scheme-indent-function 0))
(eval . (put 'tailon-configuration 'scheme-indent-function 0))
(eval . (put 'tailon-configuration-file 'scheme-indent-function 0))
(eval . (put 'thermald-configuration 'scheme-indent-function 0))
(eval . (put 'tlp-configuration 'scheme-indent-function 0))
(eval . (put 'tor-configuration 'scheme-indent-function 0))
(eval . (put 'tor-onion-service-configuration 'scheme-indent-function 0))
(eval . (put 'tor-transport-plugin 'scheme-indent-function 0))
(eval . (put 'transmission-daemon-configuration 'scheme-indent-function 0))
(eval . (put 'udev-configuration 'scheme-indent-function 0))
(eval . (put 'udisks-configuration 'scheme-indent-function 0))
(eval . (put 'unattended-upgrade-configuration 'scheme-indent-function 0))
(eval . (put 'unbound-configuration 'scheme-indent-function 0))
(eval . (put 'unbound-remote 'scheme-indent-function 0))
(eval . (put 'unbound-server 'scheme-indent-function 0))
(eval . (put 'unbound-zone 'scheme-indent-function 0))
(eval . (put 'unix-listener-configuration 'scheme-indent-function 0))
(eval . (put 'upower-configuration 'scheme-indent-function 0))
(eval . (put 'usb-modeswitch-configuration 'scheme-indent-function 0))
(eval . (put 'userdb-configuration 'scheme-indent-function 0))
(eval . (put 'varnish-configuration 'scheme-indent-function 0))
(eval . (put 'virtlog-configuration 'scheme-indent-function 0))
(eval . (put 'virtual-build-machine 'scheme-indent-function 0))
(eval . (put 'virtualhost-configuration 'scheme-indent-function 0))
(eval . (put 'vnstat-configuration 'scheme-indent-function 0))
(eval . (put 'webssh-configuration 'scheme-indent-function 0))
(eval . (put 'wesnothd-configuration 'scheme-indent-function 0))
(eval . (put 'whoogle-configuration 'scheme-indent-function 0))
(eval . (put 'wireguard-configuration 'scheme-indent-function 0))
(eval . (put 'wireguard-peer 'scheme-indent-function 0))
(eval . (put 'wpa-supplicant-configuration 'scheme-indent-function 0))
(eval . (put 'wsdd-configuration 'scheme-indent-function 0))
(eval . (put 'xe-guest-utilities-configuration 'scheme-indent-function 0))
(eval . (put 'xen-guest-agent-configuration 'scheme-indent-function 0))
(eval . (put 'xfce-desktop-configuration 'scheme-indent-function 0))
(eval . (put 'xorg-configuration 'scheme-indent-function 0))
(eval . (put 'xvnc-configuration 'scheme-indent-function 0))
(eval . (put 'yggdrasil-configuration 'scheme-indent-function 0))
(eval . (put 'zabbix-agent-configuration 'scheme-indent-function 0))
(eval . (put 'zabbix-front-end-configuration 'scheme-indent-function 0))
(eval . (put 'zabbix-server-configuration 'scheme-indent-function 0))
(eval . (put 'zone-entry 'scheme-indent-function 0))
(eval . (put 'zone-file 'scheme-indent-function 0))
(eval . (put 'zram-device-configuration 'scheme-indent-function 0)))))
;; This notably allows '(' in Paredit to not insert a space when the
;; preceding symbol is one of these.
(eval . (modify-syntax-entry ?~ "'"))
(eval . (modify-syntax-entry ?$ "'"))
(eval . (modify-syntax-entry ?+ "'"))))
(emacs-lisp-mode . ((indent-tabs-mode . nil)))
(texinfo-mode . ((indent-tabs-mode . nil)
(fill-column . 72))))
-16
View File
@@ -1,16 +0,0 @@
root = true
[*.{c,h,cpp,hpp,el,scm,ac,am,m4,po}{,.in}]
end_of_line = lf
insert_final_newline = true
charset = utf-8
trim_trailing_whitespace = true
[*.{c,h,cpp,hpp,ac,am,m4,el,scm}{,.in}]
max_line_length = 80
[*.{c,h,cpp,hpp,ac,m4,el,scm}{,.in}]
indent_style = space
[*.{c,h,cpp,hpp}{,.in}]
indent_size = 4
-16
View File
@@ -1,16 +0,0 @@
---
name: 'Bug Reporting'
about: 'Please check whether the bug is already reported, on Codeberg or in the Guix issue tracker.'
title: ''
ref: ''
labels:
---
<!--
Describe the bug you encounter below.
Please provide the output of the command `guix describe`.
-->
`guix describe` outputs:
```text
```
-22
View File
@@ -1,22 +0,0 @@
# Force the use of templates.
blank_issues_enabled: false
contact_links:
- name: Guix Issue Tracker (will stop accepting new submittions on January 1st, 2026)
url: https://issues.guix.gnu.org/
about: Submit patches and bug reports via email.
- name: Help Mailing List (help-guix@gnu.org)
url: https://lists.gnu.org/mailman/listinfo/help-guix
about: Subscribe to the Help mailing list to get support from the GNU Guix community via email. You can post messages in English though we also accept other languages.
- name: Development Mailing List (guix-devel@gnu.org)
url: https://lists.gnu.org/mailman/listinfo/guix-devel
about: Discussion about the development of GNU Guix.
- name: Security Mailing List (guix-security@gnu.org)
url: https://lists.gnu.org/mailman/listinfo/guix-security
about: Report security issues in Guix itself or in the packages it provides. Posting here allows Guix developers to address the problem before it is widely publicized.
- name: Contact - GNU Guix
url: https://guix.gnu.org/en/contact/
about: Communication channels of GNU Guix.
-65
View File
@@ -1,65 +0,0 @@
---
name: 'Pull Request'
about: 'Pull request template'
title: ''
ref: ''
labels:
---
<!--
Below is a checklist for package-related patches.
For details please refer to [the manual](https://guix.gnu.org/manual/devel/en/html_node/Submitting-Patches.html).
Common issues in the contribution process are also documented in the
["Contributing" chapter](https://guix.gnu.org/manual/devel/en/html_node/Contributing.html)
of the manual.
Tick a box by changing it from [ ] to [x].
-->
- System(s) where you built it (successfully):
- [ ] x86_64-linux
- [ ] i686-linux
- [ ] aarch64-linux
- [ ] armhf-linux
- [ ] powerpc64le-linux
- [ ] riscv64-linux
- [ ] x86_64-gnu
- [ ] i586-gnu
- Package **update**
- Closure size increase.
```console
$ guix size PACKAGE | tail -n1 # before
total: ...
$ ./pre-inst-env guix size PACKAGE | tail -n1 # after
total: ...
```
- Build status of direct dependents (`./pre-inst-env guix build -k -P1 PACKAGE ...`):
```text
```
- Link to upstream release notes (if applicable):
```text
```
- Package **addition**
- [ ] The packages includes tests when available.
- [ ] Closure size given by `guix size`.
- [ ] Fixed errors reported by `guix lint` (`./pre-inst-env guix lint PACKAGE ...`).
- [ ] Verified cryptographic signature provided by upstream.
- [ ] The packages don't use bundled copies of software.
- [ ] Synopsis and description are written in conformance with [the guidelines](https://guix.gnu.org/manual/devel/en/html_node/Synopses-and-Descriptions.html).
- [ ] Commit messages follow [the "ChangeLog" style](https://www.gnu.org/prep/standards/html_node/Change-Logs.html).
- [ ] The change doesn't break `guix pull` (`guix pull --url=/path/to/your/checkout --profile=/tmp/guix.master --disable-authentication`).
- Successfully cross-compiled to the following target(s) (this is optional):
- [ ] x86_64-linux-gnu
- [ ] i686-linux-gnu
- [ ] aarch64-linux-gnu
- [ ] arm-linux-gnueabihf
- [ ] powerpc64le-linux-gnu
- [ ] riscv64-linux-gnu
- [ ] x86_64-pc-gnu
- [ ] i586-pc-gnu
-3
View File
@@ -1,3 +0,0 @@
*.scm diff=scheme
*.scm.in diff=scheme
*.texi diff=texinfo
+28 -40
View File
@@ -1,7 +1,6 @@
*.eps
*.go
*.log
*.mo
*.pdf
*.png
*.tar.xz
@@ -30,24 +29,22 @@
/doc/*.1
/doc/.dirstamp
/doc/contributing.*.texi
/doc/guix*.aux
/doc/guix*.cp
/doc/guix*.cps
/doc/guix*.fn
/doc/guix*.fns
/doc/guix*.html
/doc/guix*.info
/doc/guix*.info-[0-9]
/doc/guix*.info-[0-9][0-9]
/doc/guix*.ky
/doc/guix*.pg
/doc/guix*.toc
/doc/guix*.t2p
/doc/guix*.tp
/doc/guix*.vr
/doc/guix*.vrs
/doc/guix.*.aux
/doc/guix.*.cp
/doc/guix.*.cps
/doc/guix.*.fn
/doc/guix.*.fns
/doc/guix.*.html
/doc/guix.*.info
/doc/guix.*.info-[0-9]
/doc/guix.*.ky
/doc/guix.*.pg
/doc/guix.*.toc
/doc/guix.*.t2p
/doc/guix.*.tp
/doc/guix.*.vr
/doc/guix.*.vrs
/doc/guix.*.texi
/doc/guix-cookbook.*.texi
/doc/guix.aux
/doc/guix.cp
/doc/guix.cps
@@ -68,19 +65,12 @@
/doc/stamp-vti
/doc/version.texi
/doc/version-*.texi
/etc/apparmor.d/tunables/guix
/etc/committer.scm
/etc/gnu-store.mount
/etc/guix-daemon.cil
/etc/guix-daemon.conf
/etc/guix-daemon.service
/etc/guix-publish.conf
/etc/guix-publish.service
/etc/guix-gc.service
/etc/guix-gc.timer
/etc/init.d/guix-daemon
/etc/openrc/guix-daemon
/guix-*
/guix-daemon
/guix/config.scm
/libformat.a
/libstore.a
@@ -95,10 +85,18 @@
/m4/nls.m4
/m4/po.m4
/m4/progtest.m4
/nix-setuid-helper
/nix/AUTHORS
/nix/COPYING
/nix/config.h
/nix/config.h.in
/nix/nix-daemon/nix-daemon.cc
/nix/nix-setuid-helper/nix-setuid-helper.cc
/nix/scripts/authenticate
/nix/scripts/list-runtime-roots
/nix/scripts/offload
/nix/scripts/substitute
/po/doc/*.mo
/po/doc/*.pot
/po/guix/*.gmo
/po/guix/*.insert-header
/po/guix/*.mo
@@ -134,12 +132,10 @@
/po/packages/remove-potcdate.sin
/po/packages/stamp-po
/pre-inst-env
/release-*
/scripts/guix
/t-*/
/test-env
/test-tmp
/tests/**/*.trs
/tests/*.trs
GPATH
GRTAGS
GTAGS
@@ -147,17 +143,9 @@ Makefile
Makefile.in
config.cache
stamp-h[0-9]
.am[0-9]*/
.dirstamp
.deps
tmp
/doc/os-config-lightweight-desktop.texi
/nix/scripts/download
/.tarball-version
/etc/indent-code.el
/.version
/doc/stamp-*
/gnu/packages/bootstrap
/gnu/packages/aux-files/guile-guile-launcher.o
/guile
.DS_Store
.mumi/current-issue
/doc/stamp-[0-9]
-129
View File
@@ -1,129 +0,0 @@
;; This file, which is best viewed as -*- Scheme -*-, lists the OpenPGP keys
;; currently authorized to sign commits in this repository.
(authorizations
(version 0)
(;; primary: "D963 A5A3 8A80 3D52 4461 F914 7483 0A27 6C32 8EC2"
("2841 9AC6 5038 7440 C7E9 2FFA 2208 D209 58C1 DEB0"
(name "abcdw"))
("AD17 A21E F8AE D8F1 CC02 DBD9 F7D5 C9BF 765C 61E3"
(name "andreas"))
("27D5 86A4 F890 0854 329F F09F 1260 E464 82E6 3562"
(name "apteryx"))
("7F73 0343 F2F0 9F3C 77BF 79D3 2E25 EE8B 6180 2BB3"
(name "arunisaac"))
( ;; primary: "D0C2 EAC1 3310 822D 98DE B57C E9C5 A2D9 0898 A02F"
"01FD 85F4 1A7B 7F82 0583 06A5 935E BE07 36DC 857E"
(name "avp"))
( ;; primary: "34FF 38BC D151 25A6 E340 A0B5 3453 2F9F AFCA 8B8E"
"A3A4 B419 0074 087C A7DE 5698 BC45 CA67 E2F8 D007"
(name "bavier"))
("3E89 EEE7 458E 720D 9754 E0B2 5E28 A33B 0B84 F577"
(name "cbaines"))
("3CE4 6455 8A84 FDC6 9DB4 0CFB 090B 1199 3D9A EBB5"
(name "civodul"))
("838A FE0D 55DC 074E 360F 943A 84B6 9CE6 F3F6 B767"
(name "cnx"))
("CCB8 1842 F9D7 058E CD67 377A BF5C DF4D F6BF 6682"
(name "csantosb"))
("510A 8628 E2A7 7678 8F8C 709C 4BC0 2592 5FF8 F4D3"
(name "cwebber"))
(;; primary: "295A F991 6F46 F8A1 34B0 29DA 8086 3842 F0FE D83B"
"76CE C6B1 7274 B465 C02D B3D9 E71A 3554 2C30 BAA5"
(name "dannym"))
("8CCB A7F5 52B9 CBEA E1FB 2915 8328 C747 0FF1 D807"
(name "dthompson"))
("A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351"
(name "efraim"))
("5DBE 23D3 9053 6526 7F8C C76A FDB9 52BD 3F73 56D6"
(name "ekaitz"))
("50E1 7BE0 D210 C883 D675 3150 4A3D 07EF D05C 4045"
(name "fishinthecalculator"))
(;; primary: "D1BD 1EB7 B655 AECE 0BA7 8F94 4940 7E7E 89CA 9B07"
"0807 AC76 DFE8 4303 6D5F 5879 F51D 4A16 DCEE 6FA7"
(name "futurile"))
("E426 7CD1 FC3E E959 7F07 42F9 CC98 E9F0 4330 FD7F"
(name "gabber"))
(;; 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"))
("3D58 BE78 5C1B E400 E214 0755 43F4 B499 3A1F 9D20"
(name "htgoebel"))
( ;; primary: "FECD 9EBA FAAD 1831 7E05 DAC0 E55F 4198 D2A7 0CD7"
"6980 A9B9 5202 AA11 EB1D 8922 8499 AC88 F1A7 1CF2"
(name "ieure"))
(;; primary: "66A5 6D9C 9A98 BE7F 719A B401 2652 5665 AE72 7D37"
"0325 78A6 8298 94E7 2AA2 66F5 D415 BF25 3B51 5976"
(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"))
("ACC2 3BA0 59F7 CCF4 08F0 43AD 442A 84B8 C70E 2F87"
(name "lilyp"))
("6840 722E EEE4 D3A6 4EE5 3EAC 6AAC 1963 757F 47FF"
(name "lfam"))
("D919 0965 CE03 199E AF28 B3BE 7CEF 2984 7562 C516"
(name "mhw"))
("B845 5B7F FAD5 E8E9 5DEF 4296 637B 0B13 8065 B68A"
(name "monego"))
("4008 6A7E 0252 9B60 31FB 8607 8354 7635 3176 9CA6"
(name "mothacehe"))
(;; primary: "F5BC 5534 C36F 0087 B39D 36EF 1C9D C4FE B9DB 7C4B"
"F5DA 2032 4B87 3D0B 7A38 7672 0DB0 FF88 4F55 6D79"
(name "nckx"))
("ED0E F1C8 E126 BA83 1B48 5FE9 DA00 B4F0 48E9 2F2D"
(name "ngz"))
("514E 833A 8861 1207 4F98 F68A E447 3B6A 9C05 755D"
(name "nmeum"))
("002A AAA3 4208 F3F2 BBD7 CE14 EF6E B274 13CF EEF3"
(name "oom"))
("CEF4 CB91 4856 BA38 0A20 A7E2 3008 88CB 39C6 3817"
(name "pelzflorian"))
(;; primary: "7E9F 5BF6 1680 4367 127B 7A87 F9E6 9FB8 5A75 54F1"
"A420 7B56 C255 109F 2CB3 157E 4990 97AE 5EA8 15D9"
(name "podiki"))
("BCA6 89B6 3655 3801 C3C6 2150 197A 5888 235F ACAC"
(name "rekado"))
(;; From commit cc51c03ff867d4633505354819c6d88af88bf919 (March 2020).
;; See <https://lists.gnu.org/archive/html/guix-devel/2020-03/msg00070.html>.
"F556 FD94 FB8F 8B87 79E3 6832 CBD0 CD51 38C1 9AFC"
(name "roelj"))
(;; From commit 2cbede5935eb6a40173bbdf30a9ad22bf7574c22 (Jan. 2020). See
;; <https://lists.gnu.org/archive/html/guix-devel/2020-01/msg00499.html>.
"1EFB 0909 1F17 D28C CBF9 B13A 53D4 57B2 D636 EE82"
(name "roptat"))
(;; primary: "3AC5 5D0E 1DA7 AF44 3868 11EE 213D C372 0E7A 023C"
"6B51 071A 0FB1 52AD ED93 6360 0322 7982 69E4 71C3"
(name "Rutherther"))
("EAD1 89E4 799B 5E5E B20A 2A19 CDBC 0BD9 5943 A706"
(name "SameExpert"))
(;; primary: "D6B0 C593 DA8C 5EDC A44C 7A58 C336 91F7 1188 B004"
"A02C 2D82 0EF4 B25B A6B5 1D90 2AC6 A5EC 1C35 7C59"
(name "samplet"))
("9847 81DE 689C 21C2 6418 0867 76D7 27BF F62C D2B5"
(name "sharlatan"))
("F494 72F4 7A59 00D5 C235 F212 89F9 6D48 08F3 59C7"
(name "snape"))
("6580 7361 3BFC C5C7 E2E4 5D45 DC51 8FC8 7F97 16AA"
(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"))
("7EBE A494 60CE 5E2C 0875 7FDB 3B5A A993 E1A2 DFF0"
(name "z572"))
("705A 29B7 01EE 410E B6F9 236E 92F1 D22C 608E E7E5"
(name "zimoun"))))
-7
View File
@@ -1,7 +0,0 @@
;; This is a Guix channel.
(channel
(version 0)
(news-file "etc/news.scm")
(keyring-reference "keyring")
(url "https://git.guix.gnu.org/guix.git")) ;the primary URL
+19 -42
View File
@@ -6,7 +6,6 @@ Al McElrath <hello@yrns.org> <hello@atonesir.com>
Alex Sassmannshausen <alex@pompo.co> <alex.sassmannshausen@gmail.com>
Alexander I. Grafov <grafov@gmail.com>
Alírio Eyng <alirioeyng@gmail.com>
Amin Bandali <bandali@gnu.org> <mab@gnu.org>
Amirouche Boubekki <amirouche@hypermove.net>
Andreas Enge <andreas@enge.fr> <andreas.enge@inria.fr>
Andreas Enge <andreas@enge.fr> <privat@xobs-novena>
@@ -14,8 +13,6 @@ Andy Wingo <wingo@igalia.com> <wingo@pobox.com>
Ben Woodcroft <donttrustben@gmail.com>
Ben Woodcroft <donttrustben@gmail.com> <b.woodcroft@uq.edu.au>
Ben Woodcroft <donttrustben@gmail.com> <donttrustben near gmail.com>
Brett Gilio <brettg@gnu.org> <brettg@posteo.net>
Christine Lemmer-Webber <cwebber@dustycloud.org>
Claes Wallin (韋嘉誠) <claes.wallin@greatsinodevelopment.com>
Cyprien Nicolas <cyprien@nicolas.tf> <c.nicolas+gitorious@gmail.com>
Daniel Pimentel <d4n1@d4n1.org> <d4n1@member.fsf.org>
@@ -25,15 +22,10 @@ David Thompson <davet@gnu.org> <dthompson2@worcester.edu>
David Thompson <davet@gnu.org> <dthompson@member.fsf.org>
David Thompson <davet@gnu.org> <dthompson@vistahigherlearning.com>
Deck Pickard <deck.r.pickard@gmail.com> <nebu@kipple>
Eric Bavier <bavier@posteo.net> <ericbavier@gmail.com>
Eric Bavier <bavier@posteo.net> <bavier@member.fsf.org>
Eric Bavier <bavier@member.fsf.org> <ericbavier@gmail.com>
Eric Dvorsak <eric@dvorsak.fr> <yenda1@gmail.com>
Evgeny Pisemsky <mail@pisemsky.site> <evgeny@pisemsky.com>
George Clemmer <myglc2@gmail.com>
Giacomo Leidi <therewasa@fishinthecalculator.me> <goodoldpaul@autistici.org>
ison <ison@airmail.cc> <ison111@protonmail.com>
Ivan Vilata i Balaguer <ivan@selidor.net>
Jakob L. Kreuze <zerodaysfordays@sdf.org> <zerodaysfordays@sdf.lonestar.org>
Jeff Mickey <j@codemac.net> <jm@igneous.io>
John Darrington <jmd@gnu.org> <john@darrington.wattle.id.au>
John J. Foerch <jjfoerch@earthlink.net>
@@ -41,41 +33,30 @@ 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>
Kei Kebreau <kei@openmailbox.org> <kkebreau@posteo.net>
Leo Famulari <leo@famulari.name> <lfamular@gmail.com>
Liliana Marie Prikler <liliana.prikler@gmail.com>
Liliana Marie Prikler <liliana.prikler@gmail.com> Leo Prikler <leo.prikler@student.tugraz.at>
Ludovic Courtès <ludo@gnu.org> <ludovic.courtes@inria.fr>
Marek Benc <dusxmt@gmx.com> <merkur32@gmail.com>
Marius Bakke <marius@gnu.org> <mbakke@fastmail.com>
Marius Bakke <marius@gnu.org> <m.bakke@warwick.ac.uk>
Marius Bakke <marius@gnu.org> <marius.bakke@usit.uio.no>
Marius Bakke <marius@gnu.org> <mbakke@berlin.guixsd.org>
Marius Bakke <mbakke@fastmail.com> <m.bakke@warwick.ac.uk>
Mathieu Lirzin <mthl@gnu.org> <mthl@openmailbox.org>
Mathieu Lirzin <mthl@gnu.org> <mathieu.lirzin@openmailbox.org>
Mathieu Othacehe <m.othacehe@gmail.com>
Mathieu Othacehe <mathieu.othacehe@parrot.com>
Mathieu Othacehe <othacehe@gnu.org>
Matthew James Kraai <kraai@ftbfs.org>
Maxim Cournoyer <maxim@guixotic.coop> <maxim.cournoyer@gmail.com>
Nguyễn Gia Phong <cnx@loang.net> <mcsinyx@disroot.org>
Nikita Karetnikov <nikita@karetnikov.org> <nikita.karetnikov@gmail.com>
nikita <nikita@n0.is>
nikita <nikita@n0.is> ng0 <ng0@n0.is>
nikita <nikita@n0.is> Nils Gillmann <ng0@n0.is>
nikita <nikita@n0.is> Nils Gillmann <gillmann@infotropique.org>
nikita <nikita@n0.is> ng0 <ng0@crash.cx>
nikita <nikita@n0.is> <ng0@infotropique.org>
nikita <nikita@n0.is> <ng0@no-reply.infotropique.org>
nikita <nikita@n0.is> <ng0@no-reply.pragmatique.xyz>
nikita <nikita@n0.is> <ng0@pragmatique.xyz>
nikita <nikita@n0.is> <contact.ng0@cryptolab.net>
nikita <nikita@n0.is> <ng0@we.make.ritual.n0.is>
nikita <nikita@n0.is> <ngillmann@runbox.com>
nikita <nikita@n0.is> <niasterisk@grrlz.net>
nikita <nikita@n0.is> <ng@niasterisk.space>
nikita <nikita@n0.is> <ng0@libertad.pw>
ng0 <ng0@n0.is> Nils Gillmann <ng0@n0.is>
ng0 <ng0@n0.is> Nils Gillmann <gillmann@infotropique.org>
ng0 <ng0@n0.is> ng0 <ng0@crash.cx>
ng0 <ng0@n0.is> ng0 <ng0@crash.cx>
ng0 <ng0@n0.is> <ng0@infotropique.org>
ng0 <ng0@n0.is> <ng0@no-reply.infotropique.org>
ng0 <ng0@n0.is> <ng0@no-reply.pragmatique.xyz>
ng0 <ng0@n0.is> <ng0@pragmatique.xyz>
ng0 <ng0@n0.is> <contact.ng0@cryptolab.net>
ng0 <ng0@n0.is> <ng0@we.make.ritual.n0.is>
ng0 <ng0@n0.is> <ngillmann@runbox.com>
ng0 <ng0@n0.is> <niasterisk@grrlz.net>
ng0 <ng0@n0.is> <ng@niasterisk.space>
ng0 <ng0@n0.is> <ng0@libertad.pw>
Pierre Neidhardt <mail@ambrevar.xyz>
Pierre-Antoine Rouby <pierre-antoine.rouby@inria.fr>
Pjotr Prins <pjotr.guix@thebird.nl> <pjotr.public01@thebird.nl>
@@ -87,16 +68,12 @@ Raymond Nicholson <rain1@openmailbox.org>
Rene Saavedra <rennes@openmailbox.org>
Ricardo Wurmus <rekado@elephly.net>
Ricardo Wurmus <rekado@elephly.net> <ricardo.wurmus@mdc-berlin.de>
宋文武 <iyzsong@envs.net> <iyzsong@gmail.com>
宋文武 <iyzsong@envs.net> <iyzsong@member.fsf.org>
Sou Bunnbu (宋文武) <iyzsong@gmail.com>
Sou Bunnbu (宋文武) <iyzsong@gmail.com> <iyzsong@member.fsf.org>
Stefan Reichör <stefan@xsteve.at>
Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
Theodoros Foradis <theodoros.for@openmailbox.org> <theodoros@foradis.org>
Thomas Danckaert <thomas.danckaert@gmail.com> <post@thomasdanckaert.be>
Tobias Geerinckx-Rice <me@tobias.gr> <tobias.geerinckx.rice@gmail.com>
Tomas Volf <~@wolfsden.cz> <wolf@wolfsden.cz>
Tomáš Čech <sleep_walker@gnu.org> <sleep_walker@suse.cz>
Vincent Legoll <vincent.legoll@gmail.com> <vincent.legoll@idgrilles.fr>
Zheng Junjie <873216071@qq.com> Z572 <873216071@qq.com>
Zheng Junjie <873216071@qq.com> Zheng Junjie <zhengjunjie@iscas.ac.cn>
Zheng Junjie <873216071@qq.com> Zheng junjie <873216071@qq.com>
-3
View File
@@ -1,3 +0,0 @@
((debbugs-host . "debbugs.gnu.org")
(patch-email-address . "guix-patches@gnu.org")
(mumi-host . "issues.guix.gnu.org"))
-11
View File
@@ -1,11 +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
keep_change_id: True
+66 -91
View File
@@ -1,103 +1,78 @@
Important: to avoid polarizing/hurtful discussions in our public spaces, any
matter pertaining to our use of this Code of Conduct should be brought
privately to the Guix maintainers at guix-maintainers@gnu.org. Failure to do
so will be considered as a violation of this Code of Conduct.
Contributor Covenant Code of Conduct
Note: In the sequel, "project" refers to GNU Guix, and "project
maintainer(s)" refers to maintainer(s) of GNU Guix.
Our Pledge
We as members, contributors, and leaders pledge to make participation in our
community a harassment-free experience for everyone, regardless of age, body
size, visible or invisible disability, ethnicity, sex characteristics, gender
identity and expression, level of experience, education, socio-economic status,
nationality, personal appearance, race, caste, color, religion, or sexual
identity and orientation.
We pledge to act and interact in ways that contribute to an open, welcoming,
diverse, inclusive, and healthy community.
In the interest of fostering an open and welcoming environment, we as
contributors and maintainers pledge to making participation in our project and
our community a harassment-free experience for everyone, regardless of age, body
size, disability, ethnicity, gender identity and expression, level of experience,
education, socio-economic status, nationality, personal appearance, race,
religion, or sexual identity and orientation.
Our Standards
Examples of behavior that contributes to a positive environment for our
community include:
* Demonstrating empathy and kindness toward other people
* Being respectful of differing opinions, viewpoints, and experiences
* Giving and gracefully accepting constructive feedback
* Accepting responsibility and apologizing to those affected by our mistakes,
and learning from the experience
* Focusing on what is best not just for us as individuals, but for the overall
community
Examples of behavior that contributes to creating a positive environment
include:
Examples of unacceptable behavior include:
* The use of sexualized language or imagery, and sexual attention or advances of
any kind
* Trolling, insulting or derogatory comments, and personal or political attacks
* Using welcoming and inclusive language
* Being respectful of differing viewpoints and experiences
* Gracefully accepting constructive criticism
* Focusing on what is best for the community
* Showing empathy towards other community members
Examples of unacceptable behavior by participants include:
* The use of sexualized language or imagery and unwelcome sexual attention or
advances
* Trolling, insulting/derogatory comments, and personal or political attacks
* Public or private harassment
* Publishing others private information, such as a physical or email address,
without their explicit permission
* Publishing others private information, such as a physical or electronic
address, without explicit permission
* Other conduct which could reasonably be considered inappropriate in a
professional setting
Enforcement Responsibilities
Community leaders are responsible for clarifying and enforcing our standards of
acceptable behavior and will take appropriate and fair corrective action in
response to any behavior that they deem inappropriate, threatening, offensive,
or harmful.
Community leaders have the right and responsibility to remove, edit, or reject
comments, commits, code, wiki edits, issues, and other contributions that are
not aligned to this Code of Conduct, and will communicate reasons for moderation
decisions when appropriate.
Scope
This Code of Conduct applies within all community spaces, and also applies when
an individual is officially representing the community in public spaces.
Examples of representing our community include using an official e-mail address,
posting via an official social media account, or acting as an appointed
representative at an online or offline event.
Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported to the community leaders responsible for enforcement at
guix-maintainers@gnu.org.
All complaints will be reviewed and investigated promptly and fairly.
All community leaders are obligated to respect the privacy and security of the
reporter of any incident.
Enforcement Guidelines
Community leaders will follow these Community Impact Guidelines in determining
the consequences for any action they deem in violation of this Code of Conduct:
1. Correction
Community Impact: Use of inappropriate language or other behavior deemed
unprofessional or unwelcome in the community.
Consequence: A private, written warning from community leaders, providing
clarity around the nature of the violation and an explanation of why the
behavior was inappropriate. A public apology may be requested.
2. Warning
Community Impact: A violation through a single incident or series of
actions.
Consequence: A warning with consequences for continued behavior. No
interaction with the people involved, including unsolicited interaction with
those enforcing the Code of Conduct, for a specified period of time. This
includes avoiding interactions in community spaces as well as external channels
like social media. Violating these terms may lead to a temporary or permanent
ban.
3. Temporary Ban
Community Impact: A serious violation of community standards, including
sustained inappropriate behavior.
Consequence: A temporary ban from any sort of interaction or public
communication with the community for a specified period of time. No public or
private interaction with the people involved, including unsolicited interaction
with those enforcing the Code of Conduct, is allowed during this period.
Violating these terms may lead to a permanent ban.
4. Permanent Ban
Community Impact: Demonstrating a pattern of violation of community
standards, including sustained inappropriate behavior, harassment of an
individual, or aggression toward or disparagement of classes of individuals.
Consequence: A permanent ban from any sort of public interaction within the
community.
Attribution
This Code of Conduct is adapted from the Contributor Covenant,
version 2.1, available at
https://www.contributor-covenant.org/version/2/1/code_of_conduct.html.
Community Impact Guidelines were inspired by
Mozillas code of conduct enforcement ladder.
For answers to common questions about this code of conduct, see the FAQ at
https://www.contributor-covenant.org/faq. Translations are available at
https://www.contributor-covenant.org/translations.
Our Responsibilities
Project maintainers are responsible for clarifying the standards of acceptable
behavior and are expected to take appropriate and fair corrective action in
response to any instances of unacceptable behavior.
Project maintainers have the right and responsibility to remove, edit, or
reject comments, commits, code, wiki edits, issues, and other contributions
that are not aligned to this Code of Conduct, or to ban temporarily or
permanently any contributor for other behaviors that they deem inappropriate,
threatening, offensive, or harmful.
Scope
This Code of Conduct applies both within project spaces and in public spaces
when an individual is representing the project or its community. Examples of
representing a project or community include using an official project e-mail
address, posting via an official social media account, or acting as an appointed
representative at an online or offline event. Representation of a project may be
further defined and clarified by project maintainers.
Enforcement
Instances of abusive, harassing, or otherwise unacceptable behavior may be
reported by contacting the project team at guix-maintainers@gnu.org. All
complaints will be reviewed and investigated and will result in a response that
is deemed necessary and appropriate to the circumstances. The project team is
obligated to maintain confidentiality with regard to the reporter of an incident.
Further details of specific enforcement policies may be posted separately.
Project maintainers who do not follow or enforce the Code of Conduct in good
faith may face temporary or permanent repercussions as determined by other
members of the projects leadership.
Attribution
This Code of Conduct is adapted from the Contributor Covenant, version 1.4,
available at https://www.contributor-covenant.org/version/1/4/code-of-conduct.html
-497
View File
@@ -1,497 +0,0 @@
# This -*- conf -*- file was generated by './etc/teams.scm codeowners'.
#
# It describes the expected reviewers for a pull request based on the
# changed files. Unlike what the name of the file suggests they don't
# own the code (ownership is collective in this house!) but merely have
# a good understanding of that area of the codebase and therefore are
# usually suited as a reviewer.
gnu/packages/machine-learning\.scm @guix/ai
gnu/packages/audio\.scm @guix/audio
gnu/packages/fluidplug\.scm @guix/audio
gnu/packages/music\.scm @guix/audio
gnu/packages/xiph\.scm @guix/audio
gnu/packages/elixir(-.+|)\.scm$ @guix/beam
guix/build/mix-build-system\.scm @guix/beam
guix/build-system/mix\.scm @guix/beam
gnu/packages/erlang(-.+|)\.scm$ @guix/beam
guix/build/rebar-build-system\.scm @guix/beam
guix/build-system/rebar\.scm @guix/beam
guix/import/hexpm\.scm @guix/beam
guix/scripts/import/hexpm\.scm @guix/beam
gnu/packages/bioinformatics\.scm @guix/bioinformatics
gnu/packages/bootstrap\.scm @guix/bootstrap
gnu/packages/commencement\.scm @guix/bootstrap
gnu/packages/mes\.scm @guix/bootstrap
gnu/packages/assembly\.scm @guix/build-tools
gnu/packages/autogen\.scm @guix/build-tools
gnu/packages/autotools\.scm @guix/build-tools
gnu/packages/bison\.scm @guix/build-tools
gnu/packages/m4\.scm @guix/build-tools
gnu/packages/oyacc\.scm @guix/build-tools
gnu/packages/re2c\.scm @guix/build-tools
gnu/build-system/cmake\.scm @guix/cpp
gnu/build/cmake-build-system\.scm @guix/cpp
gnu/packages/c\.scm @guix/cpp
gnu/packages/cmake\.scm @guix/cpp
gnu/packages/cpp\.scm @guix/cpp
gnu/packages/ninja\.scm @guix/cpp
gnu/packages/valgrind\.scm @guix/cpp
etc/teams\.scm @guix/core
guix/avahi\.scm @guix/core
guix/base16\.scm @guix/core
guix/base32\.scm @guix/core
guix/base64\.scm @guix/core
guix/bzr-download\.scm @guix/core
guix/cache\.scm @guix/core
guix/channels\.scm @guix/core
guix/ci\.scm @guix/core
guix/colors\.scm @guix/core
guix/combinators\.scm @guix/core
guix/config\.scm @guix/core
guix/cpio\.scm @guix/core
guix/cpu\.scm @guix/core
guix/cve\.scm @guix/core
guix/cvs-download\.scm @guix/core
guix/deprecation\.scm @guix/core
guix/derivations\.scm @guix/core
guix/describe\.scm @guix/core
guix/diagnostics\.scm @guix/core
guix/discovery\.scm @guix/core
guix/docker\.scm @guix/core
guix/download\.scm @guix/core
guix/elf\.scm @guix/core
guix/ftp-client\.scm @guix/core
guix/gexp\.scm @guix/core
guix/git-authenticate\.scm @guix/core
guix/git-download\.scm @guix/core
guix/git\.scm @guix/core
guix/glob\.scm @guix/core
guix/gnu-maintenance\.scm @guix/core
guix/gnupg\.scm @guix/core
guix/grafts\.scm @guix/core
guix/graph\.scm @guix/core
guix/hash\.scm @guix/core
guix/hg-download\.scm @guix/core
guix/http-client\.scm @guix/core
guix/i18n\.scm @guix/core
guix/inferior\.scm @guix/core
guix/ipfs\.scm @guix/core
guix/least-authority\.scm @guix/core
guix/licenses\.scm @guix/core
guix/lint\.scm @guix/core
guix/man-db\.scm @guix/core
guix/memoization\.scm @guix/core
guix/modules\.scm @guix/core
guix/monad-repl\.scm @guix/core
guix/monads\.scm @guix/core
guix/narinfo\.scm @guix/core
guix/nar\.scm @guix/core
guix/openpgp\.scm @guix/core
guix/packages\.scm @guix/core
guix/pki\.scm @guix/core
guix/platform\.scm @guix/core
guix/profiles\.scm @guix/core
guix/profiling\.scm @guix/core
guix/progress\.scm @guix/core
guix/quirks\.scm @guix/core
guix/read-print\.scm @guix/core
guix/records\.scm @guix/core
guix/remote\.scm @guix/core
guix/remote-procedures\.scm @guix/core
guix/repl\.scm @guix/core
guix/search-paths\.scm @guix/core
guix/self\.scm @guix/core
guix/serialization\.scm @guix/core
guix/sets\.scm @guix/core
guix/ssh\.scm @guix/core
guix/status\.scm @guix/core
guix/store\.scm @guix/core
guix/substitutes\.scm @guix/core
guix/svn-download\.scm @guix/core
guix/swh\.scm @guix/core
guix/tests\.scm @guix/core
guix/transformations\.scm @guix/core
guix/ui\.scm @guix/core
guix/upstream\.scm @guix/core
guix/utils\.scm @guix/core
guix/workers\.scm @guix/core
guix/platforms/ @guix/core
guix/scripts/ @guix/core
guix/store/ @guix/core
nix/ @guix/core
gnu/packages/base\.scm @guix/core-packages
gnu/packages/bootstrap\.scm @guix/core-packages
gnu/packages/commencement\.scm @guix/core-packages
gnu/packages/cross-base\.scm @guix/core-packages
gnu/packages/gcc\.scm @guix/core-packages
gnu/packages/guile\.scm @guix/core-packages
gnu/packages/ld-wrapper\.in @guix/core-packages
gnu/packages/make-bootstrap\.scm @guix/core-packages
gnu/packages/multiprecision\.scm @guix/core-packages
guix/build/gnu-build-system\.scm @guix/core-packages
guix/build/utils\.scm @guix/core-packages
guix/build-system/gnu\.scm @guix/core-packages
gnu/packages/(.*-|)crypto\.scm$ @guix/crypto
gnu/packages/cryptsetup\.scm @guix/crypto
gnu/packages/cybersecurity\.scm @guix/crypto
gnu/packages/gnupg\.scm @guix/crypto
gnu/packages/nettle\.scm @guix/crypto
gnu/packages/password-utils\.scm @guix/crypto
gnu/packages/security-token\.scm @guix/crypto
gnu/packages/ssh\.scm @guix/crypto
gnu/packages/tls\.scm @guix/crypto
gnu/packages/vpn\.scm @guix/crypto
gnu/packages/debian\.scm @guix/debian
\.texi$ @guix/documentation
doc/build\.scm @guix/documentation
gnu/system/examples/bare-bones\.tmpl @guix/documentation
gnu/system/examples/lightweight-desktop\.tmpl @guix/documentation
gnu/system/examples/desktop\.tmpl @guix/documentation
gnu/packages/electronics\.scm @guix/electronics
gnu/packages/hdl\.scm @guix/electronics
gnu/packages/libftdi\.scm @guix/electronics
gnu/packages/engineering\.scm @guix/electronics
gnu/packages/flashing-tools\.scm @guix/electronics
gnu/packages/aux-files/emacs/guix-emacs\.el @guix/emacs
gnu/packages/aux-files/emacs/comp-integrity\.el @guix/emacs
gnu/packages/emacs(-.+|)\.scm$ @guix/emacs
gnu/packages/tree-sitter\.scm @guix/emacs
guix/build/emacs-build-system\.scm @guix/emacs
guix/build/emacs-utils\.scm @guix/emacs
guix/build-system/emacs\.scm @guix/emacs
guix/import/elpa\.scm @guix/emacs
guix/scripts/import/elpa\.scm @guix/emacs
tests/import/elpa\.scm @guix/emacs
gnu/packages/bootloaders\.scm @guix/embedded
gnu/packages/firmware\.scm @guix/embedded
gnu/packages/emulators\.scm @guix/games
gnu/packages/games\.scm @guix/games
gnu/packages/game-development\.scm @guix/games
gnu/packages/luanti\.scm @guix/games
gnu/packages/esolangs\.scm @guix/games
gnu/packages/motti\.scm @guix/games
gnu/services/games\.scm @guix/games
gnu/tests/games\.scm @guix/games
guix/build/luanti-build-system\.scm @guix/games
etc/teams/gnome @guix/gnome
gnu/packages/glib\.scm @guix/gnome
gnu/packages/gstreamer\.scm @guix/gnome
gnu/packages/gtk\.scm @guix/gnome
gnu/packages/gnome\.scm @guix/gnome
gnu/packages/gnome-circle\.scm @guix/gnome
gnu/packages/gnome-xyz\.scm @guix/gnome
gnu/packages/webkit\.scm @guix/gnome
gnu/services/desktop\.scm @guix/gnome
guix/build/glib-or-gtk-build-system\.scm @guix/gnome
guix/build/meson-build-system\.scm @guix/gnome
gnu/packages/configuration-management\.scm @guix/go
gnu/packages/golang(-.+|)\.scm$ @guix/go
gnu/packages/syncthing\.scm @guix/go
gnu/packages/terraform\.scm @guix/go
guix/build-system/go\.scm @guix/go
guix/build/go-build-system\.scm @guix/go
guix/import/go\.scm @guix/go
guix/scripts/import/go\.scm @guix/go
tests/import/go\.scm @guix/go
gnu/packages/guile\.scm @guix/guile
gnu/packages/guile-wm\.scm @guix/guile
gnu/packages/guile-xyz\.scm @guix/guile
guix/build-system/guile\.scm @guix/guile
guix/build/guile-build-system\.scm @guix/guile
gnu/packages/hare\.scm @guix/hare
gnu/packages/hare-apps\.scm @guix/hare
gnu/packages/hare-xyz\.scm @guix/hare
guix/build-system/hare\.scm @guix/hare
guix/build/hare-build-system\.scm @guix/hare
gnu/packages/dhall\.scm @guix/haskell
gnu/packages/haskell(-.+|)\.scm$ @guix/haskell
gnu/packages/purescript\.scm @guix/haskell
guix/build/haskell-build-system\.scm @guix/haskell
guix/build-system/haskell\.scm @guix/haskell
guix/import/cabal\.scm @guix/haskell
guix/import/hackage\.scm @guix/haskell
guix/import/stackage\.scm @guix/haskell
guix/scripts/import/hackage\.scm @guix/haskell
(gnu|guix/scripts)/home(\.scm$|/) @guix/home
tests/guix-home\.sh @guix/home
tests/home-import\.scm @guix/home
tests/home-services\.scm @guix/home
gnu/packages/fabric-management\.scm @guix/hpc
gnu/packages/mpi\.scm @guix/hpc
gnu/packages/oneapi\.scm @guix/hpc
gnu/packages/opencl\.scm @guix/hpc
gnu/packages/parallel\.scm @guix/hpc
gnu/packages/rocm\.scm @guix/hpc
gnu/packages/rocm-tools\.scm @guix/hpc
gnu/packages/rocm-libs\.scm @guix/hpc
gnu/packages/sycl\.scm @guix/hpc
gnu/packages/tbb\.scm @guix/hpc
gnu/packages/vulkan\.scm @guix/hpc
gnu/system/hurd\.scm @guix/hurd
gnu/system/images/hurd\.scm @guix/hurd
gnu/build/hurd-boot\.scm @guix/hurd
gnu/services/hurd\.scm @guix/hurd
gnu/packages/hurd\.scm @guix/hurd
gnu/installer(\.scm$|/) @guix/installer
gnu/packages/clojure\.scm @guix/java
gnu/packages/java(-.+|)\.scm$ @guix/java
gnu/packages/maven(-.+|)\.scm$ @guix/java
guix/build/ant-build-system\.scm @guix/java
guix/build/clojure-build-system\.scm @guix/java
guix/build/clojure-utils\.scm @guix/java
guix/build/java-utils\.scm @guix/java
guix/build/maven-build-system\.scm @guix/java
guix/build/maven/ @guix/java
guix/build-system/ant\.scm @guix/java
guix/build-system/clojure\.scm @guix/java
guix/build-system/maven\.scm @guix/java
gnu/packages/node-xyz\.scm @guix/javascript
gnu/packages/node\.scm @guix/javascript
guix/build-system/node\.scm @guix/javascript
guix/build/node-build-system\.scm @guix/javascript
guix/import/npm-binary\.scm @guix/javascript
guix/scripts/import/npm-binary\.scm @guix/javascript
gnu/packages/julia(-.+|)\.scm$ @guix/julia
guix/build/julia-build-system\.scm @guix/julia
guix/build-system/julia\.scm @guix/julia
gnu/packages/(kde)(-.+|)\.scm$ @guix/kde
gnu/build/linux-modules\.scm @guix/kernel
gnu/packages/aux-files/linux-libre.*$ @guix/kernel
gnu/packages/linux\.scm @guix/kernel
gnu/tests/linux-modules\.scm @guix/kernel
guix/build/linux-module-build-system\.scm @guix/kernel
guix/build-system/linux-module\.scm @guix/kernel
gnu/packages/lisp(-.+|)\.scm$ @guix/lisp
guix/build/asdf-build-system\.scm @guix/lisp
guix/build/lisp-utils\.scm @guix/lisp
guix/build-system/asdf\.scm @guix/lisp
gnu/packages/anthy\.scm @guix/localization
gnu/packages/fcitx5\.scm @guix/localization
gnu/packages/fonts\.scm @guix/localization
gnu/packages/ibus\.scm @guix/localization
gnu/packages/lua\.scm @guix/lua
gnu/packages/luanti\.scm @guix/lua
gnu/packages/lxqt\.scm @guix/lxqt
gnu/packages/mate\.scm @guix/mate
gnu/build/icecat-extension\.scm @guix/mozilla
gnu/packages/browser-extensions\.scm @guix/mozilla
gnu/packages/gnuzilla\.scm @guix/mozilla
gnu/packages/librewolf\.scm @guix/mozilla
gnu/packages/tor-browsers\.scm @guix/mozilla
gnu/packages/ocaml\.scm @guix/ocaml
gnu/packages/coq\.scm @guix/ocaml
guix/build/ocaml-build-system\.scm @guix/ocaml
guix/build/dune-build-system\.scm @guix/ocaml
guix/build-system/ocaml\.scm @guix/ocaml
guix/build-system/dune\.scm @guix/ocaml
guix/import/opam\.scm @guix/ocaml
guix/scripts/import/opam\.scm @guix/ocaml
tests/import/opam\.scm @guix/ocaml
gnu/packages/perl(-.+|)\.scm$ @guix/perl
guix/build/perl-build-system\.scm @guix/perl
guix/build/rakudo-build-system\.scm @guix/perl
guix/build-system/perl\.scm @guix/perl
guix/build-system/rakudo\.scm @guix/perl
guix/import/cpan\.scm @guix/perl
guix/scripts/import/cpan\.scm @guix/perl
gnu/packages/django\.scm @guix/python
gnu/packages/jupyter\.scm @guix/python
gnu/packages/python(-.+|)\.scm$ @guix/python
gnu/packages/sphinx\.scm @guix/python
gnu/packages/tryton\.scm @guix/python
guix/build-system/pyproject\.scm @guix/python
guix/build-system/python\.scm @guix/python
guix/build/pyproject-build-system\.scm @guix/python
guix/build/python-build-system\.scm @guix/python
guix/build/toml\.scm @guix/python
guix/import/pypi\.scm @guix/python
guix/scripts/import/pypi\.scm @guix/python
tests/import/pypi\.scm @guix/python
tests/toml\.scm @guix/python
gnu/packages/benchmark\.scm @guix/qa-packages
gnu/packages/check\.scm @guix/qa-packages
gnu/packages/ci\.scm @guix/qa-packages
gnu/packages/code\.scm @guix/qa-packages
gnu/packages/debug\.scm @guix/qa-packages
gnu/packages/dezyne\.scm @guix/qa-packages
gnu/packages/libunwind\.scm @guix/qa-packages
gnu/services/ci\.scm @guix/qa-packages
gnu/tests/ci\.scm @guix/qa-packages
gnu/packages/qt\.scm @guix/qt
guix/build-system/qt\.scm @guix/qt
guix/build/qt-build-system\.scm @guix/qt
guix/build/qt-utils\.scm @guix/qt
gnu/packages/bioconductor\.scm @guix/r
gnu/packages/cran\.scm @guix/r
guix/build/r-build-system\.scm @guix/r
guix/build-system/r\.scm @guix/r
guix/import/cran\.scm @guix/r
guix/scripts/import/cran\.scm @guix/r
tests/import/cran\.scm @guix/r
gnu/packages/chez\.scm @guix/racket
gnu/packages/racket\.scm @guix/racket
NEWS @guix/release
etc/manifests/release-minimal\.scm @guix/release
etc/manifests/release-desktop\.scm @guix/release
gnu/packages/diffoscope\.scm @guix/reproduciblebuilds
gnu/packages/(ruby)(-.+|)\.scm$ @guix/ruby
guix/build/ruby-build-system\.scm @guix/ruby
guix/build-system/ruby\.scm @guix/ruby
guix/import/gem\.scm @guix/ruby
guix/scripts/import/gem\.scm @guix/ruby
tests/import/gem\.scm @guix/ruby
gnu/packages/(crates|rust)(-.+|)\.scm$ @guix/rust
gnu/packages/sequoia\.scm @guix/rust
guix/build/cargo-build-system\.scm @guix/rust
guix/build/cargo-utils\.scm @guix/rust
guix/build-system/cargo\.scm @guix/rust
guix/import/crate\.scm @guix/rust
guix/import/crate/cargo-lock\.scm @guix/rust
guix/scripts/import/crate\.scm @guix/rust
tests/import/crate\.scm @guix/rust
gnu/packages/fortran(-.+|)\.scm$ @guix/science
gnu/packages/algebra\.scm @guix/science
gnu/packages/astronomy\.scm @guix/science
gnu/packages/chemistry\.scm @guix/science
gnu/packages/geo\.scm @guix/science
gnu/packages/graph\.scm @guix/science
gnu/packages/lean\.scm @guix/science
gnu/packages/maths\.scm @guix/science
gnu/packages/medical\.scm @guix/science
gnu/packages/physics\.scm @guix/science
gnu/packages/sagemath\.scm @guix/science
gnu/packages/statistics\.scm @guix/science
gnu/packages/sugar\.scm @guix/sugar
gnu/packages/admin\.scm @guix/sysadmin
gnu/packages/acl\.scm @guix/sysadmin
gnu/packages/adns\.scm @guix/sysadmin
gnu/packages/antivirus\.scm @guix/sysadmin
gnu/packages/apparmor\.scm @guix/sysadmin
gnu/packages/authentication\.scm @guix/sysadmin
gnu/packages/cluster\.scm @guix/sysadmin
gnu/packages/configuration-management\.scm @guix/sysadmin
gnu/packages/databases\.scm @guix/sysadmin
gnu/packages/distributed\.scm @guix/sysadmin
gnu/packages/dns\.scm @guix/sysadmin
gnu/packages/high-availability\.scm @guix/sysadmin
gnu/packages/kerberos\.scm @guix/sysadmin
gnu/packages/logging\.scm @guix/sysadmin
gnu/packages/monitoring\.scm @guix/sysadmin
gnu/packages/nfs\.scm @guix/sysadmin
gnu/packages/openldap\.scm @guix/sysadmin
gnu/packages/openstack\.scm @guix/sysadmin
gnu/packages/prometheus\.scm @guix/sysadmin
gnu/packages/rdesktop\.scm @guix/sysadmin
gnu/packages/samba\.scm @guix/sysadmin
gnu/packages/selinux\.scm @guix/sysadmin
gnu/packages/storage\.scm @guix/sysadmin
gnu/packages/task-runners\.scm @guix/sysadmin
gnu/packages/terraform\.scm @guix/sysadmin
gnu/packages/virtualization\.scm @guix/sysadmin
gnu/packages/vnc\.scm @guix/sysadmin
gnu/services/admin\.scm @guix/sysadmin
gnu/services/authentication\.scm @guix/sysadmin
gnu/services/databases\.scm @guix/sysadmin
gnu/services/dns\.scm @guix/sysadmin
gnu/services/high-availability\.scm @guix/sysadmin
gnu/services/kerberos\.scm @guix/sysadmin
gnu/services/monitoring\.scm @guix/sysadmin
gnu/services/nfs\.scm @guix/sysadmin
gnu/services/samba\.scm @guix/sysadmin
gnu/services/virtualization\.scm @guix/sysadmin
gnu/services/vnc\.scm @guix/sysadmin
gnu/tests/databases\.scm @guix/sysadmin
gnu/tests/dns\.scm @guix/sysadmin
gnu/tests/high-availability\.scm @guix/sysadmin
gnu/tests/monitoring\.scm @guix/sysadmin
gnu/tests/nfs\.scm @guix/sysadmin
gnu/tests/samba\.scm @guix/sysadmin
gnu/tests/virtualization\.scm @guix/sysadmin
gnu/tests/vnc\.scm @guix/sysadmin
gnu/build/jami-service\.scm @guix/telephony
gnu/packages/jami\.scm @guix/telephony
gnu/packages/linphone\.scm @guix/telephony
gnu/packages/telephony\.scm @guix/telephony
gnu/services/telephony\.scm @guix/telephony
gnu/tests/data/jami-dummy-account\.dat @guix/telephony
gnu/tests/telephony\.scm @guix/telephony
tests/services/telephony\.scm @guix/telephony
gnu/packages/tex\.scm @guix/tex
gnu/packages/texlive\.scm @guix/tex
guix/build/texlive-build-system\.scm @guix/tex
guix/build-system/texlive\.scm @guix/tex
guix/import/texlive\.scm @guix/tex
guix/scripts/import/texlive\.scm @guix/tex
tests/import/texlive\.scm @guix/tex
etc/news\.scm @guix/translations
po/ @guix/translations
gnu/packages/version-control\.scm @guix/vcs
gnu/services/version-control\.scm @guix/vcs
gnu/tests/version-control\.scm @guix/vcs
guix/build/bzr\.scm @guix/vcs
guix/build/cvs\.scm @guix/vcs
guix/build/git\.scm @guix/vcs
guix/build/hg\.scm @guix/vcs
guix/build/svn\.scm @guix/vcs
gnu/packages/xfce\.scm @guix/xfce
gnu/packages/zig\.scm @guix/zig
gnu/packages/zig-xyz\.scm @guix/zig
guix/build/zig-build-system\.scm @guix/zig
guix/build-system/zig\.scm @guix/zig
+56 -2
View File
@@ -13,8 +13,62 @@ Copyright © 2017 Arun Isaac <arunisaac@systemreboot.net>
* Contributing
See the manual for useful hacking information, either by running
See the manual for useful hacking informations, either by running
info -f doc/guix.info "Contributing"
or by checking the [[https://guix.gnu.org/manual/devel/en/html_node/Contributing.html][web copy of the manual]].
or by checking the [[http://www.gnu.org/software/guix/manual/guix.html#Contributing][web copy of the manual]].
* Commit Access
For frequent contributors, having write access to the repository is
convenient. When you deem it necessary, feel free to ask for it on the
mailing list. When you get commit access, please make sure to follow the
policy below (discussions of the policy can take place on guix-devel@gnu.org.)
Non-trivial patches should always be posted to guix-patches@gnu.org (trivial
patches include fixing typos, etc.). This mailing list fills the
patch-tracking database at [[https://bugs.gnu.org/guix-patches]]; see
"Contributing" in the manual for details.
For patches that just add a new package, and a simple one, its OK to commit,
if youre confident (which means you successfully built it in a chroot setup,
and have done a reasonable copyright and license auditing.) Likewise for
package upgrades, except upgrades that trigger a lot of rebuilds (for example,
upgrading GnuTLS or GLib.) We have a mailing list for commit notifications
(guix-commits@gnu.org), so people can notice. Before pushing your changes,
make sure to run git pull --rebase.
All commits that are pushed to the central repository on Savannah must be
signed with an OpenPGP key, and the public key should be uploaded to your user
account on Savannah and to public key servers, such as
pool.sks-keyservers.net. To configure Git to automatically sign commits,
run:
git config commit.gpgsign true
git config user.signingkey CABBA6EA1DC0FF33
You can prevent yourself from accidentally pushing unsigned commits to
Savannah by using the pre-push Git hook called located at etc/git/pre-push:
cp etc/git/pre-push .git/hooks/pre-push
When pushing a commit on behalf of somebody else, please add a Signed-off-by
line at the end of the commit log message (e.g. with git am --signoff).
This improves tracking of who did what.
For anything else, please post to guix-patches@gnu.org and leave time for a
review, without committing anything. If you didnt receive any reply
after two weeks, and if youre confident, its OK to commit.
That last part is subject to being adjusted, allowing individuals to commit
directly on non-controversial changes on parts theyre familiar with.
* Using emacs-debbugs
Bug reports and patches are tracked using debbugs. If you are on emacs, you
can use emacs-debbugs.
List all open bug reports on guix-patches with
C-u M-x debbugs-gnu <RET> <RET> guix-patches <RET> n y
+239 -770
View File
File diff suppressed because it is too large Load Diff
+7 -733
View File
@@ -2,11 +2,8 @@
#+TITLE: Guix NEWS history of user-visible changes
#+STARTUP: content hidestars
Copyright © 2013-2022 Ludovic Courtès <ludo@gnu.org>
Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
Copyright © 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
Copyright © 2021, 2022, 2024 Maxim Cournoyer <maxim@guixotic.coop>
Copyright © 2022 Mathieu Othacehe <othacehe@gnu.org>
Copyright © 2026 Noé Lopez <noelopez@free.fr>
Copying and distribution of this file, with or without modification,
are permitted in any medium without royalty provided the copyright
@@ -14,729 +11,6 @@ Copyright © 2026 Noé Lopez <noelopez@free.fr>
Please send Guix bug reports to bug-guix@gnu.org.
* Changes in 1.6.0 (since 1.5.0)
** Distribution
*** GNOME updated to version 48
*** New service for Fossil SCM
*** TeX Live updated to 2026.1
* Changes in 1.5.0 (since 1.4.0)
** Package management
*** New rpm format for the guix pack command
*** New appimage format for the guix pack command
*** New --max-layers and --file options for the guix pack command
*** New --roll-back and --expression options for the guix deploy command
*** New --with-version package transformation option
*** New --with-configure-flag package transformation option
*** New --nesting option to use Guix within guix shell containers
*** New --emulate-fhs option for guix shell containers
*** New --dependents and --development options for guix build
*** New --interactive and --list-types flags for guix repl
*** The root file-system of guix shell containers is now read-only
*** New --writable-root option for the guix shell command
*** Improved style rules for guix style
*** New guix locate command
*** guix refresh now honours the --key-server option
*** guix git authenticate now remembers introduction commit and signer
*** guix git authenticate now installs pre-push and post-merge git hooks
*** System reconfiguration now supports kexec for fast reboot
*** Hetzner Cloud is now supported by the guix deploy command
*** The Guix Daemon can now be run without root privileges
*** guix refresh can now target partial version
*** New guix import composer command
*** New guix import binary-npm command
*** New guix import nuget command
*** New graphml backend for guix graph
*** New cyclonedx-json backend for guix graph
*** AppArmor profiles are now available for guix and guix-daemon
** Distribution
*** nss-certs is now included in %base-packages
*** udev-service-type now supports hardware configuration files
*** gdm-service-type now uses Wayland by default
*** KDE Plasma 6.5 is now available with the new plasma-desktop-service-type
*** GNOME was updated to version 44 with a more modular desktop service
*** Declarative offloading with new build-machines field of operating-system
*** containerd-service-type is no longer included with the Docker service
*** privileged-programs replaces setuid-programs in operating-system
*** The postgresql field of postgresql-configuration is now mandatory
*** The Rottlog service was replaced by new log-rotation-service-type
*** The default system log has been changed to Shepherds system-log service
*** New recommended %base-home-services variable for Guix Home
*** UDisks now mounts removable devices in /run/media/$USER instead of /media
*** Syncthing service received incompatible changes
*** node-build-system received incompatible changes
*** New services for /etc/profile.d and /etc/bashrc.d
*** New build system for clasp-cl
*** New Rust packaging model
*** C.utf8 locale is now supported by glibc
*** Fully bootstrapped mono and zig are now available
*** 64bit Hurd (x86_64-gnu) now has experimental support
*** 12525 new packages
*** 8911 package updates
Noteworthy updates:
bash 5.2.37, binutils 2.44, clojure 1.12.0, cups 2.4.14, emacs 30.2,
gcc-toolchain 15.2.0, gdb 16.3, ghc 9.2.8, gimp 3.0.4, glibc 2.41,
gnome 46.10, gnupg 2.4.7, go 1.25.3, guile 3.0.9, icecat 140.6.0-gnu1,
icedtea 3.19.0, inkscape 1.3.2, julia 1.8.5, libreoffice 25.2.5.2,
linux-libre 6.17.12, lxde 0.99.3, mate 1.28.2, ocaml 5.3.0, octave 10.3.0,
openjdk 25, perl 5.36.0, python 3.11.14, racket 8.18, rust 1.85.1, r 4.5.2,
sbcl 2.5.8, shepherd 1.0.9, xfce 4.20.0, xorg-server 21.1.21
** Programming interfaces
*** (gnu system setuid) has been renamed to (gnu system privilege)
*** Moved to a new Rust packaging model and repackaged all Rust applications
*** Rust library packages have been moved to the guix-rust-past-crates channel
*** Most Python packages now use the pyproject-build-system
** Noteworthy bug fixes
*** Daemon vulnerability allowing store corruption has been fixed
*** Daemon vulnerability allowing takeover of build users has been fixed
*** Daemon privilege escalation vulnerabilities fixed
*** Daemon CVEs have been fixed
CVE-2024-27297, CVE-2024-52867, CVE-2025-46415, CVE-2025-46416, CVE-2025-59378
* Changes in 1.4.0 (since 1.3.0)
** Package management
*** New guix home command, for home environment management
*** New guix shell command, the successor to guix environment
*** New guix system edit command, to edit services
*** New deb format for the guix pack command
*** New guix import minetest command, to import Minetest extensions
*** New guix import elm command, to import Elm packages
*** New guix import egg command, to import CHICKEN egg packages
*** New guix import hexpm command, to import Erlang and Elixir packages
*** New 'guix style' command, to auto-format package definitions
*** guix import texlive rewritten to use the TLPDB as its source
*** guix import elpa now supports the non-GNU ELPA repository
*** guix import pypi can now import a specific version
*** guix import cran can now import a specific version
*** New updater (see guix refresh): generic-git
*** guix graph has a new --max-depth option
*** guix deploy has a new --execute option
*** guix shell has a new --emulate-fhs option
*** guix shell has a new --symlink option
*** --with-commit option now accepts strings returned by git describe
*** --with-source option now applied recursively
*** Align tabular data output by commands like guix package --list-available
*** Improved guix import go importer via a new PEG parser
*** Improved Software Heritage downloader
*** New 'web.archive.org download fall-back
*** Various performance enhancements
*** New --tune package transformation option
*** guix refresh -L option is repurposed to load-path modification
*** guix system image supersedes the docker-image sub-command
** Distribution
*** The installation script can now enable local substitute servers discovery
*** The installation script can now customize the Bash prompt for Guix
*** More control over boot-time file system checks and repairs
*** XFS file systems can be created by the installer and mounted by label/UUID
*** New interface for declaring swap space
*** GNOME is now at version 42
*** TeX Live is now at version 2021
*** Multiple TeX Live trees can now be used via GUIX_TEXMF
*** Python modules are searched in GUIX_PYTHONPATH instead of PYTHONPATH
*** Python is now faster thanks to being built with optimizations
*** The Rust bootstrap now starts from 1.54 instead of 1.19
*** Most Python 2 packages have been removed
*** Guix now makes use of parallel xz compression
*** Faster shared libraries discovery via a per-package dynamic linker cache
*** Package inputs can now be plain package lists
*** A package origin can now be a single file rather than an archive
*** New sanity-check phase to detect Python packaging problems at build time
*** Fetching sources can now fall-back to use Disarchive
*** Improved CI and infrastructure
*** Multiple cross-compilation tooling addition and fixes
*** Many Qt 6 modules are now packaged
*** Configuring setuid programs is now more flexible
*** Add support for the XFS file system
*** Add partial support for LUKS2 headers when using GRUB
*** GDM now supports Wayland
*** Guix System static networking support is improved
*** The installer final configuration is prettified
*** The installer external command handling is improved
*** The installer now has a crash dump upload mechanism
*** Emacs now supports native compilation
*** GRUB bootloader now supports chain-loading
*** The GNU Shepherd was upgraded to 0.9.3
*** The init RAM disk honors more arguments—e.g. root and rootflags
*** guix system image can now generate WSL images
*** The mcron task scheduler logs now contain the jobs exit statuses
*** Chromium extensions are now built in a deterministic fashion
*** The rsync service lets you specify individual “modules”
*** New services
anonip, bitmask, fail2ban, gitile, greetd, jami, lightdm, log-cleanup,
nar-herder, opendht, rasdaemon, samba, seatd, strongswan, wsdd
*** 5311 new packages
*** 6573 package updates
Noteworthy updates:
bash 5.1.8, binutils 2.37, clojure 1.11.1, cups 2.3.3op2, emacs 28.2,
enlightenment 0.25.4, gcc-toolchain 12.2.0, gdb 12.1, ghc 8.10.7,
gimp 2.10.32, glibc 2.33, gnome 42.4, gnupg 2.2.32, go 1.19.1, guile 3.0.8,
icecat 102.5.0-guix0-preview1, icedtea 3.19.0, inkscape 1.2.1, julia 1.6.7,
libreoffice 7.4.3.2, linux-libre 6.0.10, ocaml 4.14.0, octave 7.2.0,
openjdk 18, perl 5.34.0, python2 2.7.18, python 3.9.9, racket 8.7,
rust 1.60.0, r 4.2.2, sbcl 2.2.10, shepherd 0.9.3, xorg-server 21.1.4
** Programming interfaces
*** Package input fields can now be plain package lists
*** G-expressions can now be used in build phases
*** New modify-inputs macro to ease customizing a list of package inputs
*** New this-package-input and this-package-native-input macros
*** Build phases are no longer required to return a boolean
*** (guix records) now supports “field sanitizers”
*** Various improvements to the helpers in (gnu service configuration)
*** texlive-union is now deprecated in favor of texlive-updmap.cfg
*** New (guix cpu) module
*** New (guix least-authority) module
*** New (guix platform) module
*** New (guix read-print) module
It provides a comment-preserving reader and a comment-preserving
pretty-printer smarter than (ice-9 pretty-print).
*** New channel-build-system
This build system lets you build Guix instances from channel specifications,
similar to how 'guix time-machine' would do it, as regular packages.
*** New pyproject-build-system
This is an extension of python-build-system with support for PEP-517 and
pyproject.toml files. It may eventually get merged back into
python-build-system.
*** New elm-build-system
*** New rebar-build-system
** Noteworthy bug fixes
*** Fall back to Software Heritage when cloning a channel
(<https://issues.guix.gnu.org/44187>)
*** --with-patch can be used on packages with non-origin sources
(<https://issues.guix.gnu.org/49697>)
*** Fix pathological profile building performance in the presence of grafts
(<https://issues.guix.gnu.org/49439>)
*** Deduplication phase of the garbage collector is now faster
(<https://issues.guix.gnu.org/24937>)
*** File system flags are validated before system instantiation
(<https://issues.guix.gnu.org/51425>)
*** Fonts can now be discovered in any profile via XDG_DATA_DIRS
(<https://issues.guix.gnu.org/31403>)
*** Various Python reproducibility fixes
*** The installer now supports MSDOS disk labels on UEFI systems
(<https://issues.guix.gnu.org/47889>)
*** The installer can now properly mount FAT16 partitions
(<https://issues.guix.gnu.org/48419>)
*** The installer no longer crashes when deleting a free space partition
*** Emacs handles major upgrades better without a re-login
(<https://issues.guix.gnu.org/47458>)
*** The bootloader configuration now accepts multiple targets
(<https://issues.guix.gnu.org/40997>)
*** File system mount point is always created when create? is true
(<https://issues.guix.gnu.org/40158>)
*** Build the man database only if man-db is in the profile
*** gdk-pixbuf now discovers pixbuf loaders via a search path
(<https://issues.guix.gnu.org/50957>)
*** Gitolite home directory permissions are fixed
(https://issues.guix.gnu.org/56444)
*** The man-db database is indexed via man pages names
(https://issues.guix.gnu.org/38838)
*** chfn can now change the user's full name
(https://issues.guix.gnu.org/52539)
*** GNOME Settings Bluetooth panel is now working
(https://issues.guix.gnu.org/32166)
*** Inferiors are now caching store connections
(https://issues.guix.gnu.org/48007)
*** Retry downloads when a substitute has become unavailable
(https://issues.guix.gnu.org/57978)
*** The installer doesn't segfault when removing an extended partition
*** The installer doesn't ship an older Guix revision
(https://issues.guix.gnu.org/53210)
*** The installer cannot proceed without any non-root user accounts
(https://issues.guix.gnu.org/54666)
*** <operating-system> compiler truly honors the 'system' argument
(https://issues.guix.gnu.org/55951)
* Changes in 1.3.0 (since 1.2.0)
** Package management
*** POWER9 (powerpc64le-linux) is now supported as a technology preview
*** New --export-manifest and --export-channels options of guix package
*** New --profile option for guix environment
*** New --discover option of guix-daemon, for local substitute discovery
*** New --advertise option of guix publish
*** New --with-patch and --with-latest package transformation options
*** guix system image supersedes the disk-image and vm-image sub-commands
*** --verbosity=1 no longer displays download URLs
*** guix publish -C now supports zstd compression via Guile-zstd
*** guix-daemon now supports zstd substitutes, which decompress faster
*** New guix import go command, to import Go packages
*** guix import opam now supports Coq packages and has a --repo option
*** guix import crate now honors semantic versioning (“semver”)
*** guix import nix has been removed
*** New updaters (see guix refresh): sourceforge and generic-html
*** Substitute installation has been optimized
*** guix commands suggest alternative sub-commands or options upon typos
*** Offloading no longer requires guile to be in $PATH on build machines
*** GUIX_EXTENSIONS_PATH is honored when looking for extensions such as GWL
*** New --format option for guix processes
*** guix upgrade can now be passed several regexps
** Distribution
*** The Guix System demonstration VM now supports the SPICE protocol
*** The installation script can now run in a fully automated manner
*** qemu-binfmt-service-type now relies on statically-linked QEMU
*** sysctl-service-type enables Linux protected hardlinks/symlinks by default
*** %base-services now includes a default sysctl-service-type instance
*** Linux Logical Volume Manager (LVM) now supported, via lvm-device-mapping
*** guix system init has been optimized
*** guix system warns when users/groups appear more than once
*** guix system image -t rock64-raw produces images for Rock64 devices
*** herd discover guix-daemon on turns on substitute server discovery
*** Default initrd now supports bcachefs
*** CUPS service includes brlaser extension by default
*** “lp” group is no longer included in %base-groups
*** New --graph-backend option for guix system {extension,shepherd}-graph
*** New services
agate, cuirass-remote-worker, ipfs, keepalived, laminar, radicale, syncthing,
transmission-daemon, wireguard, xorg-server
*** 2009 new packages
*** 3100 package updates
Noteworthy updates:
emacs 27.2, gcc-toolchain 10.3.0, ghc 8.8.3, glibc 2.31, gnome 3.34.5,
gnupg 2.2.27, go 1.14.15, guile 3.0.5, icecat 78.10.0-guix0-preview1,
icedtea 3.7.0, inkscape 1.0.2, julia 1.5.3, libreoffice 6.4.7.2,
linux-libre 5.11.15, ocaml 4.11.1, octave 6.2.0, openjdk 14.0,
python 3.8.2, racket 8.0, rust 1.51.0, r 4.0.4, sbcl 2.1.3, xfce 4.16.0,
xorg-server 1.20.10
** Programming interfaces
*** New channel-with-substitutes-available procedure in (guix channels)
*** New modules (guix substitutes), (guix narinfo), and (guix avahi)
*** <image> records can be passed to guix system image
*** New (guix ipfs) module to interact with an IPFS gateway
** Noteworthy bug fixes
*** Risk of local privilege escalation via guix-daemon fixed
(<https://issues.guix.gnu.org/47229>, CVE-2021-27851)
*** Setuid programs on Guix System are no longer setgid root
(<https://issues.guix.gnu.org/46395>)
*** Risk of local privilege escalation during reconfigure fixed
(<https://issues.guix.gnu.org/47584>)
*** Grafting recognizes UTF-16 and UTF-32 store references
(<https://issues.guix.gnu.org/33848>)
*** (guix git) honors HTTP/HTTPS proxy settings for Git submodules
(<https://issues.guix.gnu.org/44593>)
*** Fix guix substitute crash when interleaving lzip and gzip
(<https://issues.guix.gnu.org/46967>)
*** Fix GnuTLS memory corruption when used from Guile
(<https://issues.guix.gnu.org/46330>)
*** Update GnuTLS to 3.6.15, addressing a time-dependent test failure
(<https://issues.guix.gnu.org/44559>)
*** Booted system is fully protected from garbage collection
(<https://issues.guix.gnu.org/46767>)
*** Add MSDOS disk label support on UEFI systems
(<https://issues.guix.gnu.org/47889>)
*** Installers kmscon no longer uses up 100% CPU
(<https://issues.guix.gnu.org/39341>)
*** Git checkouts can be updated to the remotes default HEAD
(<https://issues.guix.gnu.org/45187>)
*** guix pull correctly displays early builds and downloads
(<https://issues.guix.gnu.org/41930>)
*** Fix OpenRC init scripts for guix-daemon
(<https://issues.guix.gnu.org/46871>)
*** Activate system when switching generations
(<https://issues.guix.gnu.org/38884>)
*** guix environment -C preserves original mount flags
(<https://issues.guix.gnu.org/46292>)
*** Remove duplicates in profile transactions
(<https://issues.guix.gnu.org/23874>)
*** Fix sound problems with ALSA plugins on foreign distros
(<https://issues.guix.gnu.org/40832>)
** Native language support
*** Updated translations of the manual
The manual is fully translated into French and German, 90% translated into
Spanish, and has preliminary translations into Chinese, Brazilian Portuguese,
and Russian.
*** Update translations of the cookbook
The cookbook is fully translated in French and German and has a preliminary
translation into Korean.
*** Updated translations of messages
This version of Guix is fully translated in French, German, and Slovak; it has
good translation into Brazilian Portuguese and Spanish, and preliminary
translations in a dozen other languages.
*** Translations now hosted on Fedoras Weblate instance
Translations are now handled at
<https://translate.fedoraproject.org/projects/guix/guix/> (thanks, Fedora!).
You can join to help improve translations in your native language of messages,
documentation, package descriptions, and the web site.
* Changes in 1.2.0 (since 1.1.0)
** Package management
*** guix pull now cryptographically authenticates channels
*** guix describe -f channels now shows “channel introductions”
*** guix describe -f channels-sans-intro omits channel introductions
*** New guix git authenticate command, to authenticate Git checkouts
*** guix pull and guix system reconfigure detect attempts to downgrade
*** New --allow-downgrades option for guix pull and guix system
*** Guix build time reduced thanks to Guile 3.0.4s “baseline compiler”
*** New --with-debug-info package transformation option
*** New --with-c-toolchain package transformation option
*** New --without-tests package transformation option
*** --with-input & co. now also apply to implicit dependencies
*** Package transformation options are now recorded in profiles
*** New fakechroot “execution engine” for packs produced by guix pack -RR
*** New --cache-bypass-threshold option for guix publish
*** New --diff option for guix challenge, to compare substitutes
*** New --exclude option for guix lint, to exclude checkers
*** New check-for-collisions checker in guix lint
*** All of Guix and Guix System now runs on Guile 3.0
*** guix pull and --with-git-url now support authenticated SSH repos
*** guix pull now honors $http_proxy and $https_proxy
*** New --path option for guix graph, showing the shortest path
*** guix repl can now be passed a script to execute
*** guix help finally shows command descriptions
*** guix install etc. no longer list items to download by default
*** guix search etc. now automatically invoke the pager
*** New --hash option for guix hash
*** New --list-formats option for guix describe
*** New “Getting Started” section in the manual
** Distribution
*** Bootstrap binary seeds reduced to 60 MiB on x86_64/i686
*** New --target option for guix system, for cross-compilation
*** New --image-type option for guix system disk-image
*** New --label option for guix system disk-image
*** Guix System can now boot from a Btrfs subvolume
*** New hurd field of operating-system, for GNU/Hurd support
*** Guix System can be cross-compiled to GNU/Hurd with --target=i586-pc-gnu
*** New hurd-vm-service-type to spawn a GNU/Hurd VM on GNU/Linux
*** /etc/guix/acl on Guix System is now built from the OS configuration
*** rottlog-service-type is now part of %base-services
*** Linux-libre modules are now gzip-compressed
*** The efivarfs file system is now part of %base-file-systems
*** mcron job specs are now statically checked at OS build time
*** swap-devices field of operating-system can contains UUIDs and labels
*** Graphical installer uses UUIDs for unencrypted swap partitions
*** Graphical installer now supports NTFS file systems
*** File systems UUIDs and labels now recognized for F2FS and NTFS
*** Root file system can now be on NFS
*** New services
autossh, ganeti, gmnisrv, guix-build-coordinator,
guix-build-coordinator-agent, guix-build-coordinator-queue-builds, hostapd,
hurd-console, hurd-getty, hurd-vm, lxqt, rshiny, secret-service,
simulated-wifi, udev-rules, unattended-upgrade, webssh, zram
*** 1999 new packages
*** 3652 package updates
Noteworthy updates:
bash 5.0.16, binutils 2.34, cups 2.3.3, emacs 27.1, enlightenment 0.24.2,
gcc-toolchain 10.2.0, gdb 10.1, ghc 8.8.3, gimp 2.10.22, glibc 2.31,
gnome 3.34.2, gnupg 2.2.23, go 1.14.10, guile 3.0.4,
icecat 78.4.0-guix0-preview1, inkscape 1.0.1, julia 1.5.2,
libreoffice 6.4.6.2, linux-libre 5.9.3, mate 1.24.1, ocaml 4.09.0,
openjdk 14.0, perl 5.30.2, python2 2.7.17, python 3.8.2, racket 7.8,
rust 1.46.0, r 4.0.3, sbcl 2.0.10, shepherd 0.8.1, xfce 4.14.2,
xorg-server 1.20.8
** Programming interfaces
*** New maven-build-system, for packages built with Maven
*** haskell-build-system now always adds a “static” output
*** New (gnu image) module, to build system images
*** New (guix git-authenticate) module, for Git checkout authentication
*** New (guix openpgp) module with a minimal OpenPGP implementation
*** New (guix transformations) module, for package transformations
*** New (gnu services hurd) module providing GNU/Hurd services
*** (guix json) removed in favor of Guile-JSONs (json) module
*** (guix zlib) and (guix lzlib) removed in favor of Guile-{Zlib,Lzlib}
*** local-file warns about non-literal relative file names
*** Daemon now supports more hash algorithms: SHA3 and BLAKE2s
*** New <content-hash> record type for use in origin
*** New let-system for in (guix gexp), for system-dependent code
*** New lowerable <profile> record type in (guix profiles)
*** (gnu build secret-service) can share secrets with a guest OS
*** “Programming Interface” section of the manual greatly expounded
** Noteworthy bug fixes
*** guix pull now shows a progress bar while fetching from Git
(<https://bugs.gnu.org/39260>)
*** guix copy and guix deploy show a progress bar while copying
*** Bootloader messages are now localized
(<https://issues.guix.gnu.org/35394>)
*** guix system reconfigure now starts services not currently running
(<https://bugs.gnu.org/43720>)
*** Desktop environments now detect newly installed applications
(<https://bugs.gnu.org/35594>)
*** Offloading and copying small items is now much faster
(<https://issues.guix.gnu.org/43340>)
*** GCC switched back to C_INCLUDE_PATH & co. from CPATH
(<https://bugs.gnu.org/30756>)
*** Graphical installer no longer hangs while connecting to WiFi network
(<https://issues.guix.gnu.org/40682>)
*** GNU Aspell truly honors ASPELL_DICT_DIR (<https://bugs.gnu.org/29686>)
*** Fix overly aggressive memoization of “commencement” packages
(<https://bugs.gnu.org/40482>)
*** Duplicate /etc entries are now reported (<https://bugs.gnu.org/40729>)
*** guix pack -R wrapper correctly reports exit code
(<https://bugs.gnu.org/40816>)
*** Fix time travel to pre-Guile 3.0 revisions
(<https://bugs.gnu.org/41028>)
*** package-grafts returns grafts for all the relevant outputs
(<https://bugs.gnu.org/41796>)
*** guix pull and related commands authenticate Git checkouts
(<https://bugs.gnu.org/22883>)
*** Fix GNU libstdc++ misconfiguration in recent gcc-toolchain versions
(<https://bugs.gnu.org/42392>)
*** guix pack -R wraps propagated inputs as well
(<https://bugs.gnu.org/42510>)
*** guix pack -R wrapper leaves root available to child processes
(<https://bugs.gnu.org/44261>)
*** lib/guix/package.cache generated by guix pull is now bit-reproducible
(<https://bugs.gnu.org/42009>)
*** Graphical installer now properly detects disks containing an LVM partition
(<https://issues.guix.gnu.org/42683>)
*** Fix possible crash when copying store items over SSH
(<https://bugs.gnu.org/42740>)
*** gcc is now a “deprecated” alias for gcc-toolchain
(<https://bugs.gnu.org/43303>)
*** package-input-rewriting & co. no longer yield unnecessary rebuilds
(<https://bugs.gnu.org/42156>)
*** Offloading better normalizes build machine load
(<https://issues.guix.gnu.org/43773>)
*** guix build --check now honors --rounds
(<https://issues.guix.gnu.org/40144>)
*** guix-install.sh now installs shell completion files
(<https://bugs.gnu.org/43744>)
*** guix-install.sh now warns about lack of nscd
(<https://bugs.gnu.org/43744>)
** Native language support
*** Updated translations of the manual
The manual is fully translated into French, German, and Spanish, and has
preliminary translations into Chinese and Russian.
*** Updated translations of messages
This version of Guix is fully translated in French, German, and Spanish, and
partially translated in 11 other languages.
* Changes in 1.1.0 (since 1.0.1)
** Package management
*** New guix deploy command to deploy several machines at once
*** Channels can now provide news, viewed with guix pull --news
*** guix system reconfigure saves provenance data
*** New guix system describe command to view system provenance info
*** New /run/current-system/{channels,configuration}.scm files
*** New guix time-machine command
*** guix pack has a new --entry-point option
*** guix pack saves environment variables for docker and singularity
*** guix pack provides a meaningful repository name for docker
*** New --target option for guix system
*** --no-build-hook was renamed to --no-offload
*** --keep-failed now implies --no-offload
*** --dry-run no longer implies --no-grafts
*** guix import crate has a new --recursive option
*** guix import crate can import a specific package version
*** guix pull returns Guix on Guile 3.0
*** guix pull and --with-git-url can clone repositories over SSH
*** --with-commit now accepts tags
*** guix challenge has a new --diff option to show differences
*** guix weather has a new --display-missing option
*** Guix can now fetch lzip-compressed substitutes in addition to gzip
*** guix publish supports lzip compression via -C
*** guix lint -c archival queries Software Heritage
*** guix archive has a new -t option to list archive contents
*** guix describe and similar commands emit terminal hyperlinks
*** guix build now attempts to substitute missing .drv files
*** guix package etc. now lock the profile they operate on
*** guix pull honors /etc/guix/channels.scm when it exists
*** New guix show command, synonymous with guix package --show
*** The --manifest option can be repeated to combine manifests
*** Some commands previously lacking --load-path now support it
** Distribution
*** The set of pre-built bootstrap “binary seeds” has been halved
*** Graphical installer has better support for non-Latin keyboard layouts
*** Graphical installer allows users to choose an HTTP/HTTPS proxy
*** Graphical installer allows users to edit the system configuration
*** New kernel-loadable-modules field in operating-system
*** rottlog service is now part of %base-services
*** %base-services now includes /usr/bin/env as a “special file”
*** herd set-http-proxy guix-daemon URL can be used to set a proxy
*** qemu-binfmt service now supports riscv32 and riscv64
*** File system UUIDs and labels are now supported for JFS
*** New services
auditd, fontconfig-file-system, getmail, gnome-keyring, kernel-module-loader,
knot-resolver, mumi, nfs, nftables, nix, pagekite, pam-mount, patchwork,
polkit-wheel, provenance, pulseaudio, sane, singularity, usb-modeswitch
*** 3514 new packages
*** 3368 package updates
Noteworthy updates:
bash 5.0.7, binutils 2.32, cups 2.3.1, emacs 26.3, enlightenment 0.23.1,
gcc-toolchain 9.3.0, gdb 9.1, ghc 8.6.5, gimp 2.10.18, glibc 2.29,
gnome 3.32.2, gnupg 2.2.20, go 1.13.9, guile 2.2.7,
icecat 68.7.0-guix0-preview1, icedtea 3.7.0, julia 1.3.1,
libreoffice 6.4.2.2, linux-libre 5.4.31, mate 1.24.0, ocaml 4.09.0,
octave 5.2.0, openjdk 12.33, perl 5.30.0, python2 2.7.16, python 3.7.4,
racket 7.6, rust 1.39.0, r 3.6.3, sbcl 2.0.3, shepherd 0.7.0, xfce 4.14.0,
xorg-server 1.20.7
** Programming interfaces
*** New build systems
copy-build-system, julia-build-system, node-build-system, qt-build-system
*** New with-build-handler and map/accumulate-builds in (guix store)
*** (guix gexp) has a new with-parameters form
*** New (guix remote) module for remote evaluation of gexps
*** New eval/container procedure in (gnu system linux-container)
*** (guix inferior) now reifies exceptions as &inferior-exception
*** (guix cve) uses the new NIST-provided JSON files instead of XML
*** New (guix json) module to map JSON objects to Scheme records
*** New (gnu installer tests) module to drive the graphical installer
*** New (guix diagnostics) module for consistent diagnostic messages
*** “Checkers” now live in (guix lint)
** Notewothy bug fixes
*** Grafts leads to inefficient substitute info retrieval
(<https://issues.guix.gnu.org/issue/22990>)
*** Grafting prevents build plan from being displayed upfront
(https://issues.guix.gnu.org/issue/28310)
*** Changing the HTTP/FTP proxy used by the daemon is inconvenient
(<https://issues.guix.gnu.org/issue/25569>)
*** guix system disk-image successfully builds a bad image
(<https://issues.guix.gnu.org/issue/34276>)
*** Installer cannot be restarted after a failed install
(<https://issues.guix.gnu.org/issue/35543>)
*** Null pointer error when partitioning with the graphical installer
(<https://issues.guix.gnu.org/issue/35858>)
*** 'guix upgrade' misdiagnoses upgrades in the presence of propagated inputs
(<https://issues.guix.gnu.org/issue/35872>)
*** mcron randomly stops running jobs
(<https://issues.guix.gnu.org/issue/37237>)
*** Mistaken warning "guix pull was never run"
(<https://issues.guix.gnu.org/issue/38196>)
*** `guix pack --format=squashfs` fails on CentOS7
(<https://issues.guix.gnu.org/issue/40043>)
*** installer: No way to input Latin characters with non-Latin keyboard layouts
(<https://issues.guix.gnu.org/issue/40273>)
*** installer: Always add '%base-initrd-modules' to 'initrd-modules'
(<https://issues.guix.gnu.org/issue/36099>)
*** [MATE] shutdown and reboot not possible from UI
(<https://issues.guix.gnu.org/issue/40327>)
*** 'guix-daemon' honors %localstatedir, %sysconfdir, and %storedir
(<https://issues.guix.gnu.org/issue/35874>)
*** Fix GUIX_LOCPATH quoting in guix-daemon.service (systemd)
(<https://issues.guix.gnu.org/issue/36074>)
*** Include USB_ModeSwitch in %desktop-services
(<https://issues.guix.gnu.org/issue/35640>)
*** linux-container: Mount a new /dev/pts instance in the container
(<https://issues.guix.gnu.org/issue/36463>)
*** system: Write the timezone to /etc/timezone
(<https://issues.guix.gnu.org/issue/35746>)
*** linux-modules: Define and use a module name database
(<https://issues.guix.gnu.org/issue/34902>)
*** pack: Create /tmp in Docker images
(<https://issues.guix.gnu.org/issue/37161>)
*** guix system: Reinstalling the bootloader preserves extra menu entries
(<https://issues.guix.gnu.org/issue/36876>)
*** system: Add 'mount' and 'umount' to '%setuid-programs'
(<https://issues.guix.gnu.org/issue/37569>)
*** linux-libre: Try to aggressively gather entropy during boot
(<https://issues.guix.gnu.org/issue/37501>)
*** daemon: Make 'profiles/per-user' non-world-writable
(<https://issues.guix.gnu.org/issue/37744>)
*** linux-boot: Don't ignore options when mounting root file system
(<https://issues.guix.gnu.org/issue/37977>)
*** Files produced by syslogd are no longer world-readable
(<https://issues.guix.gnu.org/issue/40405>)
** Native language support
*** Updated translations of the manual
The manual is fully translated into Spanish, more than 85% complete in French
and German, and has preliminary translations into Russian and Chinese.
*** Updated translations of messages
This version of Guix is fully translated in Brazilian Portuguese, French,
German, and Spanish, and partially translated in 10 other languages.
* Changes in 1.0.1 (since 1.0.0)
** Package management
*** The https_proxy environment variable is now honored
** Distribution
*** guix system docker-image now produces images with an entry point
*** New --network option for guix system container
*** gcc package is now hidden; gcc-toolchain is what users want
*** mcron service now logs to /var/log/mcron.log
*** Dovecot: auth-verbose-passwords? renamed from auth-verbose-passwords
*** slim service now allows for multiple instances on different VTs
*** 70 new packages
*** 483 package updates
Noteworthy updates:
gdb 8.3, ghc 8.4.3, glibc 2.28, gnupg 2.2.15, go 1.12.1, guile 2.2.4,
icecat 60.6.2-guix1, icedtea 3.7.0, linux-libre 5.1.2, python 3.7.0,
rust 1.34.1, shepherd 0.6.1
** Programming interfaces
*** New (guix lzlib) module, to be used eventually for substitute compression
** Noteworthy bug fixes
*** Installer appends packages to %base-packages
(<https://bugs.gnu.org/35541>)
*** Installer allows for arbitrary-long passphrases and passwords
(<https://bugs.gnu.org/35716>)
*** network-manager-applet is provided as part of %desktop-services
(<https://bugs.gnu.org/35554>)
*** Installer can create Btrfs file systems
(<https://bugs.gnu.org/35655>)
*** Installer password entry visibility can be toggled
(<https://bugs.gnu.org/35540>)
*** guix-daemon.service file for systemd selects a valid UTF-8 locale
(<https://bugs.gnu.org/35671>)
*** gnome-tweak-tool starts correctly
(<https://bugs.gnu.org/35597>)
*** getlogin C function now works as expected
(<https://bugs.gnu.org/35553>)
*** Leading zeros are preserved when serializing FAT UUIDs
(<https://bugs.gnu.org/35582>)
*** guix search now searches output names
(<https://bugs.gnu.org/35588>)
*** guix environment in non ad-hoc mode honors package transformations
(<https://bugs.gnu.org/35618>)
*** guix refresh correctly determines the latest version for GitHub
(<https://bugs.gnu.org/35684>)
** Native language support
*** New preliminary translation of the manual to Russian
*** Updated translations: da, de, es, fr
* Changes in 1.0.0 (since 0.16.0)
** Package management
*** New -v/--verbosity option for all commands
@@ -2002,7 +1276,7 @@ zynaddsubfx@3.0.3, zziplib@0.13.69
*** guix pack now honors package transformation options
*** guix package --search no longer shows superseded packages
(<https://bugs.gnu.org/30566>)
*** guix offload test reports errors more nicely
*** guix offload test reports errors more nicely
(<https://bugs.gnu.org/28057>)
*** postgresql service is started through pg_ctl
(<https://bugs.gnu.org/29992>)
@@ -3425,7 +2699,7 @@ zimg@2.5, zlib@1.2.11, znc@1.6.5
*** Create home directories once file systems are mounted
(<http://bugs.gnu.org/21108>)
*** GNU R now builds bit-reproducibly (<https://bugs.gnu.org/25598>)
*** The daemons default settings are used unless overridden
*** The daemons default settings are used unless overriden
(<https://bugs.gnu.org/20217>)
*** guix system now supports the common build option --root
(<https://bugs.gnu.org/26271>)
@@ -5740,7 +5014,7 @@ Monad” in the manual.
*** X session is executed from a login shell (<http://bugs.gnu.org/19119>)
*** grub.cfg is now a garbage-collector root (<http://bugs.gnu.org/19160>)
*** Substituter progress report properly formatted
*** Substituter progress report properly formatted
(<http://bugs.gnu.org/19313>)
*** Document permissions for /gnu/store (<http://bugs.gnu.org/19316>)
*** Make sure config.go is newer than config.scm
@@ -5996,18 +5270,18 @@ This could cause problems with ancient Linux kernel.
*** download: Use the 'SERVER NAME' TLS extension when possible
(<http://bugs.gnu.org/18526>)
*** libdaemon: Add alternate source URLs (<http://bugs.gnu.org/18639>)
*** icu4c: Reinstate RUNPATH on shared libraries
*** icu4c: Reinstate RUNPATH on shared libraries
(<http://bugs.gnu.org/18695>)
*** nss-mdns: Add alternate source URLs (<http://bugs.gnu.org/18704>)
*** download: Add "Accept: */*" to the HTTP headers
(<http://bugs.gnu.org/18768>)
*** guix-register: Do not attempt to create NIX_STORE_DIR
*** guix-register: Do not attempt to create NIX_STORE_DIR
(<http://bugs.gnu.org/18689>)
*** Allow Linux-libre to find our 'modprobe' command
(<http://bugs.gnu.org/18525>)
*** man-pages: Build sequentially (<http://bugs.gnu.org/18701>)
*** Fix intermittent test failures involving GC (<http://bugs.gnu.org/18935>)
*** guix import: pypi: Gracefully handle non-existent packages
*** guix import: pypi: Gracefully handle non-existent packages
(<http://bugs.gnu.org/18831>)
*** Make sure the shared library has the '.so' extension
(<http://bugs.gnu.org/18521>)
+66 -36
View File
@@ -1,6 +1,6 @@
-*- mode: org -*-
[[https://www.gnu.org/software/guix/][GNU Guix]] (IPA: /ɡiːks/) is a purely functional package manager, and
[[https://www.gnu.org/software/guix/][GNU Guix]] (IPA: /ɡiːks/) is a purely functional package manager, and
associated free software distribution, for the [[https://www.gnu.org/gnu/gnu.html][GNU system]]. In addition
to standard package management features, Guix supports transactional
upgrades and roll-backs, unprivileged package management, per-user
@@ -10,20 +10,35 @@ It provides [[https://www.gnu.org/software/guile/][Guile]] Scheme APIs, includin
domain-specific languages (EDSLs) to describe how packages are to be
built and composed.
GNU Guix can be used on top of an already-installed GNU/Linux distribution, or
it can be used standalone (we call that “Guix System”).
A user-land free software distribution for GNU/Linux comes as part of
Guix.
Guix is based on the [[https://nixos.org/nix/][Nix]] package manager.
* Requirements
If you are building Guix from source, please see the manual for build
instructions and requirements, either by running:
GNU Guix currently depends on the following packages:
info -f doc/guix.info "Requirements"
- [[https://gnu.org/software/guile/][GNU Guile 2.2.x]]
- [[https://notabug.org/cwebber/guile-gcrypt][Guile-Gcrypt]] 0.1.0 or later
- [[https://www.gnu.org/software/make/][GNU Make]]
- [[https://www.gnutls.org][GnuTLS]] compiled with guile support enabled
- [[https://notabug.org/guile-sqlite3/guile-sqlite3][Guile-SQLite3]], version 0.1.0 or later
- [[https://gitlab.com/guile-git/guile-git][Guile-Git]]
- [[http://www.zlib.net/][zlib]]
- [[https://savannah.nongnu.org/projects/guile-json/][Guile-JSON]]
or by checking the [[https://guix.gnu.org/manual/en/html_node/Requirements.html][web copy of the manual]].
Unless `--disable-daemon' was passed, the following packages are needed:
- [[https://gnupg.org/][GNU libgcrypt]]
- [[https://sqlite.org/][SQLite 3]]
- [[https://gcc.gnu.org][GCC's g++]]
- optionally [[http://www.bzip.org][libbz2]]
When `--disable-daemon' was passed, you instead need the following:
- [[https://nixos.org/nix/][Nix]]
* Installation
@@ -31,16 +46,26 @@ See the manual for the installation instructions, either by running
info -f doc/guix.info "Installation"
or by checking the [[https://guix.gnu.org/manual/en/html_node/Installation.html][web copy of the manual]].
or by checking the [[https://www.gnu.org/software/guix/manual/guix.html#Installation][web copy of the manual]].
* Building from Git
For information on installation from a Git checkout, please see the section
"Building from Git" in the manual.
For information on building Guix from a Git checkout, please see the relevant
section in the manual, either by running
* Installing Guix from Guix
info -f doc/guix.info "Building from Git"
You can re-build and re-install Guix using a system that already runs Guix.
To do so:
or by checking the [[https://guix.gnu.org/manual/en/html_node/Building-from-Git.html][web_copy of the manual]].
- Start a shell with the development environment for Guix:
guix environment guix
- Re-run the 'configure' script passing it the option
'--localstatedir=/somewhere', where '/somewhere' is the 'localstatedir'
value of the currently installed Guix (failing to do that would lead the
new Guix to consider the store to be empty!).
- Run "make", "make check", and "make install".
* How It Works
@@ -50,19 +75,39 @@ the promise of a build; it is stored as a text file under
`derivation' primitive, as well as higher-level wrappers such as
`build-expression->derivation'.
Guix does remote procedure calls (RPCs) to the build daemon (the =guix-daemon=
command), which in turn performs builds and accesses to the store on its
behalf. The RPCs are implemented in the (guix store) module.
Guix does remote procedure calls (RPCs) to the Guix or Nix daemon (the
=guix-daemon= or =nix-daemon= command), which in turn performs builds
and accesses to the Nix store on its behalf. The RPCs are implemented
in the (guix store) module.
* Installing Guix as non-root
The Guix daemon allows software builds to be performed under alternate
user accounts, which are normally created specifically for this
purpose. For instance, you may have a pool of accounts in the
=guixbuild= group, and then you can instruct =guix-daemon= to use them
like this:
$ guix-daemon --build-users-group=guixbuild
However, unless it is run as root, =guix-daemon= cannot switch users.
In that case, it falls back to using a setuid-root helper program call
=nix-setuid-helper=. That program is not setuid-root by default when
you install it; instead you should run a command along these lines
(assuming Guix is installed under /usr/local):
# chown root.root /usr/local/libexec/nix-setuid-helper
# chmod 4755 /usr/local/libexec/nix-setuid-helper
* Contact
GNU Guix is hosted at https://codeberg.org/guix/guix/.
GNU Guix is hosted at https://savannah.gnu.org/projects/guix/.
Please email mailto:help-guix@gnu.org for questions. Bug reports should be
submitted via https://codeberg.org/guix/guix/issues/. Email
mailto:gnu-system-discuss@gnu.org for general issues regarding the GNU system.
Please email <bug-guix@gnu.org> for bug reports or questions regarding
Guix and its distribution; email <gnu-system-discuss@gnu.org> for
general issues regarding the GNU system.
Join #guix on irc.libera.chat.
Join #guix on irc.freenode.net.
* Guix & Nix
@@ -108,18 +153,3 @@ but exposes all the API as Scheme.
- The [[https://www.gnu.org/s/gsrc/][GNU Source Release Collection]] (GSRC) is a user-land software
distribution; unlike Guix, it relies on core tools available on the
host system
* Copyright Notices
GNU Guix is made available under the GNU GPL version 3 or later license, and
authors retain their copyright. For copyright notices, we adhere to the
guidance documented in (info "(maintain) Copyright Notices"), and explicitly
allow ranges instead of individual years. Here's an example of the preferred
style used for copyright notices in source file headers:
#+begin_comment
Copyright © 2019-2023, 2025 Your Name <your@email.com>
#+end_comment
Meaning there were copyright-able changes made for the years 2019, 2020, 2021,
2022, 2023 and 2025.
-1
View File
@@ -1 +0,0 @@
README
+1 -1
View File
@@ -23,7 +23,7 @@ There will be a few 0.x releases by then to give the new features more
exposure and testing.
You're welcome to discuss this road map on guix-devel@gnu.org or #guix on
the Libera Chat IRC network!
Freenode!
* Features scheduled for 1.0
+1 -1
View File
@@ -43,7 +43,7 @@ infrastructure help:
Alen Skondro <askondro@gmail.com>
Jan Synáček <jan.synacek@gmail.com>
Matthias Wachs <wachs@net.in.tum.de>
Christine Lemmer-Webber <cwebber@dustycloud.org>
Christopher Allan Webber <cwebber@dustycloud.org>
Philip Woods <elzairthesorcerer@gmail.com>
GNU Guix also includes non-software works. Thanks to the following
+2 -2
View File
@@ -95,7 +95,7 @@ See https://lists.gnu.org/archive/html/guix-devel/2018-12/msg00161.html.
*** Add more partitioning schemes
The actual schemes are taken from Debian Installer but some are not
implemented yet: like "Separate partitions for /home /var and /tmp".
*** Replace wait page "Partition formatting is in progress, please wait"
*** Replace wait page "Partition formating is in progress, please wait"
Create a new waiting page describing what's being done:
[ 20% ]
@@ -103,7 +103,7 @@ Running mkfs.ext4 on /dev/sda2 ...
[ 40% ]
Running mkfs.ext4 on /dev/sda3 ...
*** Add a confirmation page before formatting/partitioning
*** Add a confirmation page before formating/partitioning
** Desktop environments
*** Allow for no desktop environments
Propose to choose between "headless server" and "lightweight X11" in a new
+4 -18
View File
@@ -4,8 +4,9 @@
set -e -x
# Generate stubs for translations.
langs=`find po/doc -type f -name 'guix-manual*.po' \
| sed -e 's,.*/guix-manual\.,,;s,\.po$,,'`
langs=`find po/doc -type f -name '*.po' \
| sed -e 's,guix-manual\.,,' \
| xargs -n 1 -I{} basename {} .po`
for lang in ${langs}; do
if [ ! -e "doc/guix.${lang}.texi" ]; then
echo "@setfilename guix.${lang}.info" > "doc/guix.${lang}.texi"
@@ -14,20 +15,5 @@ for lang in ${langs}; do
touch "po/doc/guix-manual.${lang}.po"
fi
done
langs=`find po/doc -type f -name 'guix-cookbook*.po' \
| sed -e 's,.*/guix-cookbook\.,,;s,\.po$,,'`
for lang in ${langs}; do
if [ ! -e "doc/guix-cookbook.${lang}.texi" ]; then
echo "@setfilename guix-cookbook.${lang}.info" > "doc/guix-cookbook.${lang}.texi"
# Ensure .po file is newer.
touch "po/doc/guix-cookbook.${lang}.po"
fi
done
autoreconf -vfi
# Replace Automake's build-aux/mdate-sh with build-aux/mdate-from-git, our
# own, reproducible version.
chmod +w build-aux/mdate-sh
rm -f build-aux/mdate-sh
ln -s mdate-from-git.scm build-aux/mdate-sh
exec autoreconf -vfi
+249 -141
View File
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2016-2021, 2025 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -22,7 +22,7 @@
#:use-module (guix ui)
#:use-module (guix config)
#:use-module (guix modules)
#:use-module ((guix self) #:select (make-config.scm))
#:use-module (guix build-system gnu)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-19)
#:use-module (srfi srfi-34)
@@ -46,6 +46,149 @@
;;;
;;; Code:
;;;
;;; Generating (guix config).
;;;
;;; This is copied from (guix self) because we cannot assume (guix self) is
;;; available at this point.
;;;
(define %persona-variables
;; (guix config) variables that define Guix's persona.
'(%guix-package-name
%guix-version
%guix-bug-report-address
%guix-home-page-url))
(define %config-variables
;; (guix config) variables corresponding to Guix configuration.
(letrec-syntax ((variables (syntax-rules ()
((_)
'())
((_ variable rest ...)
(cons `(variable . ,variable)
(variables rest ...))))))
(variables %localstatedir %storedir %sysconfdir %system)))
(define* (make-config.scm #:key zlib gzip xz bzip2
(package-name "GNU Guix")
(package-version "0")
(bug-report-address "bug-guix@gnu.org")
(home-page-url "https://gnu.org/s/guix"))
;; Hack so that Geiser is not confused.
(define defmod 'define-module)
(scheme-file "config.scm"
#~(begin
(#$defmod (guix config)
#:export (%guix-package-name
%guix-version
%guix-bug-report-address
%guix-home-page-url
%store-directory
%state-directory
%store-database-directory
%config-directory
%libz
%gzip
%bzip2
%xz))
;; XXX: Work around <http://bugs.gnu.org/15602>.
(eval-when (expand load eval)
#$@(map (match-lambda
((name . value)
#~(define-public #$name #$value)))
%config-variables)
(define %store-directory
(or (and=> (getenv "NIX_STORE_DIR") canonicalize-path)
%storedir))
(define %state-directory
;; This must match `NIX_STATE_DIR' as defined in
;; `nix/local.mk'.
(or (getenv "GUIX_STATE_DIRECTORY")
(string-append %localstatedir "/guix")))
(define %store-database-directory
(or (getenv "GUIX_DATABASE_DIRECTORY")
(string-append %state-directory "/db")))
(define %config-directory
;; This must match `GUIX_CONFIGURATION_DIRECTORY' as
;; defined in `nix/local.mk'.
(or (getenv "GUIX_CONFIGURATION_DIRECTORY")
(string-append %sysconfdir "/guix")))
(define %guix-package-name #$package-name)
(define %guix-version #$package-version)
(define %guix-bug-report-address #$bug-report-address)
(define %guix-home-page-url #$home-page-url)
(define %gzip
#+(and gzip (file-append gzip "/bin/gzip")))
(define %bzip2
#+(and bzip2 (file-append bzip2 "/bin/bzip2")))
(define %xz
#+(and xz (file-append xz "/bin/xz")))
(define %libz
#+(and zlib
(file-append zlib "/lib/libz")))))))
;;;
;;; 'gexp->script'.
;;;
;;; This is our own variant of 'gexp->script' with an extra #:module-path
;;; parameter, which was unavailable in (guix gexp) until commit
;;; 1ae16033f34cebe802023922436883867010850f (March 2018.)
;;;
(define (load-path-expression modules path)
"Return as a monadic value a gexp that sets '%load-path' and
'%load-compiled-path' to point to MODULES, a list of module names. MODULES
are searched for in PATH."
(mlet %store-monad ((modules (imported-modules modules
#:module-path path))
(compiled (compiled-modules modules
#:module-path path)))
(return (gexp (eval-when (expand load eval)
(set! %load-path
(cons (ungexp modules) %load-path))
(set! %load-compiled-path
(cons (ungexp compiled)
%load-compiled-path)))))))
(define* (gexp->script name exp
#:key (guile (default-guile))
(module-path %load-path))
"Return an executable script NAME that runs EXP using GUILE, with EXP's
imported modules in its search path."
(mlet %store-monad ((set-load-path
(load-path-expression (gexp-modules exp)
module-path)))
(gexp->derivation name
(gexp
(call-with-output-file (ungexp output)
(lambda (port)
;; Note: that makes a long shebang. When the store
;; is /gnu/store, that fits within the 128-byte
;; limit imposed by Linux, but that may go beyond
;; when running tests.
(format port
"#!~a/bin/guile --no-auto-compile~%!#~%"
(ungexp guile))
(write '(ungexp set-load-path) port)
(write '(ungexp exp) port)
(chmod port #o555))))
#:module-path module-path)))
(define (date-version-string)
"Return the current date and hour in UTC timezone, for use as a poor
person's version identifier."
@@ -53,27 +196,61 @@ person's version identifier."
(date->string (current-date 0) "~Y~m~d.~H"))
(define guile-gcrypt
;; The 'guile-gcrypt' package from the host Guix.
;; The host Guix may or may not have 'guile-gcrypt', which was introduced in
;; August 2018. If it has it, it's at least version 0.1.0, which is good
;; enough. If it doesn't, specify our own package because the target Guix
;; requires it.
(match (find-best-packages-by-name "guile-gcrypt" #f)
(()
(package
(name "guile-gcrypt")
(version "0.1.0")
(home-page "https://notabug.org/cwebber/guile-gcrypt")
(source (origin
(method url-fetch)
(uri (string-append home-page "/archive/v" version ".tar.gz"))
(sha256
(base32
"1gir7ifknbmbvjlql5j6wzk7bkb5lnmq80q59ngz43hhpclrk5k3"))
(file-name (string-append name "-" version ".tar.gz"))))
(build-system gnu-build-system)
(arguments
;; The 'bootstrap' phase appeared in 'core-updates', which was merged
;; into 'master' ca. June 2018.
'(#:phases (modify-phases %standard-phases
(delete 'bootstrap)
(add-before 'configure 'bootstrap
(lambda _
(unless (zero? (system* "autoreconf" "-vfi"))
(error "autoreconf failed"))
#t)))))
(native-inputs
`(("pkg-config" ,(specification->package "pkg-config"))
("autoconf" ,(specification->package "autoconf"))
("automake" ,(specification->package "automake"))
("texinfo" ,(specification->package "texinfo"))))
(inputs
`(("guile" ,(specification->package "guile"))
("libgcrypt" ,(specification->package "libgcrypt"))))
(synopsis "Cryptography library for Guile using Libgcrypt")
(description
"Guile-Gcrypt provides a Guile 2.x interface to a subset of the
GNU Libgcrypt crytographic library. It provides modules for cryptographic
hash functions, message authentication codes (MAC), public-key cryptography,
strong randomness, and more. It is implemented using the foreign function
interface (FFI) of Guile.")
(license #f))) ;license:gpl3+
((package . _)
package)))
(define* (build-program source version
#:optional (guile-version (effective-version))
#:key (pull-version 0) (channel-metadata #f)
built-in-builders)
"Return a program that computes the derivation to build Guix from SOURCE.
If BUILT-IN-BUILDERS is provided, it should be a list of
strings and this will be used instead of the builtin builders provided by the
build daemon, from within the generated build program."
#:key (pull-version 0))
"Return a program that computes the derivation to build Guix from SOURCE."
(define select?
;; Select every module but (guix config) and non-Guix modules.
;; Also exclude (guix channels): it is autoloaded by (guix describe), but
;; only for peripheral functionality.
(match-lambda
(('guix 'config) #f)
(('guix 'channels) #f)
(('guix 'build 'download) #f) ;autoloaded by (guix download)
(('guix _ ...) #t)
(('gnu _ ...) #t)
(_ #f)))
@@ -111,9 +288,6 @@ build daemon, from within the generated build program."
#~(begin
(use-modules (ice-9 match))
;; To avoid lots of readlink calls
(fluid-set! %file-port-name-canonicalization #f)
(eval-when (expand load eval)
;; (gnu packages …) modules are going to be looked up
;; under SOURCE. (guix config) is looked up in FRONT.
@@ -146,9 +320,23 @@ build daemon, from within the generated build program."
(guix derivations)
(srfi srfi-1))
(define (spin system)
(define spin
(circular-list "-" "\\" "|" "/" "-" "\\" "|" "/"))
(format (current-error-port)
"Computing Guix derivation for '~a'... "
system)
(when (isatty? (current-error-port))
(let loop ((spin spin))
(display (string-append "\b" (car spin))
(current-error-port))
(force-output (current-error-port))
(sleep 1)
(loop (cdr spin)))))
(match (command-line)
((_ source system version protocol-version
build-output)
((_ source system version protocol-version)
;; The current input port normally wraps a file
;; descriptor connected to the daemon, or it is
;; connected to /dev/null. In the former case, reuse
@@ -157,67 +345,26 @@ build daemon, from within the generated build program."
;; case, attempt to open a new connection.
(let* ((proto (string->number protocol-version))
(store (if (integer? proto)
(port->connection
(duplicate-port
(current-input-port)
"w+0")
#:version proto
#:built-in-builders
'#$built-in-builders)
(open-connection
#:built-in-builders
'#$built-in-builders)))
(sock (socket AF_UNIX SOCK_STREAM 0)))
;; Connect to BUILD-OUTPUT and send it the raw
;; build output.
(connect sock AF_UNIX build-output)
(when (integer? proto)
;; port->connection doesn't setup buffering, so
;; do this here
(setvbuf (store-connection-socket store)
'block
%default-store-connection-buffer-size))
(port->connection (duplicate-port
(current-input-port)
"w+0")
#:version proto)
(open-connection))))
(call-with-new-thread
(lambda ()
(spin system)))
(display
(and=>
;; Silence autoload warnings and the likes.
(parameterize ((current-warning-port
(%make-void-port "w"))
(current-build-output-port sock))
(run-with-store store
(guix-derivation source version
#$guile-version
#:channel-metadata
'#$channel-metadata
#:pull-version
#$pull-version)
#:system system))
(run-with-store store
(guix-derivation source version
#$guile-version
#:pull-version
#$pull-version)
#:system system)
derivation-file-name))))))
#:module-path (list source))))
(define (proxy input output)
"Dump the contents of INPUT to OUTPUT until EOF is reached on INPUT.
Display a spinner when nothing happens."
(define spin
(circular-list "-" "\\" "|" "/" "-" "\\" "|" "/"))
(setvbuf input 'block 16384)
(let loop ((spin spin))
(match (select (list input) '() '() 1)
((() () ())
(when (isatty? (current-error-port))
(display (string-append "\b" (car spin))
(current-error-port))
(force-output (current-error-port)))
(loop (cdr spin)))
(((_) () ())
;; Read from INPUT as much as can be read without blocking.
(let ((bv (get-bytevector-some input)))
(unless (eof-object? bv)
(put-bytevector output bv)
(loop spin)))))))
(define (call-with-clean-environment thunk)
(let ((env (environ)))
(dynamic-wind
@@ -233,34 +380,25 @@ Display a spinner when nothing happens."
;; The procedure below is our return value.
(define* (build source
#:key verbose?
(version (date-version-string)) channel-metadata
system
#:key verbose? (version (date-version-string)) system
(pull-version 0)
;; For the standalone Guix, default to Guile 3.0. For old
;; For the standalone Guix, default to Guile 2.2. For old
;; versions of 'guix pull' (pre-0.15.0), we have to use the
;; same Guile as the current one.
(guile-version (if (> pull-version 0)
"3.0"
"2.2"
(effective-version)))
built-in-builders
#:allow-other-keys
#:rest rest)
"Return a derivation that unpacks SOURCE into STORE and compiles Scheme
files."
;; Avoid lots of readlink calls
(fluid-set! %file-port-name-canonicalization #f)
;; Build the build program and then use it as a trampoline to build from
;; SOURCE.
(mlet %store-monad ((build (build-program source version guile-version
#:channel-metadata channel-metadata
#:pull-version pull-version
#:built-in-builders
built-in-builders))
#:pull-version pull-version))
(system (if system (return system) (current-system)))
(home -> (getenv "HOME"))
;; Note: Use the deprecated names here because the
;; caller might be Guix <= 0.16.0.
@@ -268,79 +406,49 @@ files."
(major ((store-lift nix-server-major-version)))
(minor ((store-lift nix-server-minor-version))))
(mbegin %store-monad
;; Before 'with-build-handler' was implemented and used, we had to
;; explicitly call 'show-what-to-build*'.
(munless (module-defined? (resolve-module '(guix store))
'with-build-handler)
(show-what-to-build* (list build)))
(show-what-to-build* (list build))
(built-derivations (list build))
;; Use the port beneath the current store as the stdin of BUILD. This
;; way, we know 'open-pipe*' will not close it on 'exec'. If PORT is
;; not a file port (e.g., it's an SSH channel), then the subprocess's
;; stdin will actually be /dev/null.
(let* ((sock (socket AF_UNIX SOCK_STREAM 0))
(node (let ((file (string-append (or (getenv "TMPDIR") "/tmp")
"/guix-build-output-"
(number->string (getpid)))))
(bind sock AF_UNIX file)
(listen sock 1)
file))
(pipe (with-input-from-port port
(let* ((pipe (with-input-from-port port
(lambda ()
;; Make sure BUILD is not influenced by
;; $GUILE_LOAD_PATH & co.
(with-clean-environment
(setenv "GUILE_WARN_DEPRECATED" "no") ;be quiet and drive
(setenv "COLUMNS" "120") ;show wider backtraces
(when home
;; Inherit HOME so that 'xdg-directory' works.
(setenv "HOME" home))
(open-pipe* OPEN_READ
(derivation->output-path build)
source system version
(if (file-port? port)
(number->string
(logior major minor))
"none")
node))))))
(format (current-error-port) "Computing Guix derivation for '~a'... "
system)
;; Wait for a connection on SOCK and proxy build output so it can be
;; processed according to the settings currently in effect (build
;; traces, verbosity level, and so on).
(match (accept sock)
((port . _)
(close-port sock)
(delete-file node)
(proxy port (current-build-output-port))))
;; Now that the build output connection was closed, read the result, a
;; derivation file name, from PIPE.
(let ((str (get-string-all pipe))
(status (close-pipe pipe)))
(match str
((? eof-object?)
(error "build program failed" (list build status)))
((? derivation-path? drv)
(mbegin %store-monad
(return (newline (current-error-port)))
((store-lift add-temp-root) drv)
(return (read-derivation-from-file drv))))
("#f"
;; Unsupported PULL-VERSION.
(return #f))
((? string? str)
(raise (condition
(&message
(message (format #f "You found a bug: the program '~a'
"none"))))))
(str (get-string-all pipe))
(status (close-pipe pipe)))
(match str
((? eof-object?)
(error "build program failed" (list build status)))
((? derivation-path? drv)
(mbegin %store-monad
(return (newline (current-error-port)))
((store-lift add-temp-root) drv)
(return (read-derivation-from-file drv))))
("#f"
;; Unsupported PULL-VERSION.
(return #f))
((? string? str)
(raise (condition
(&message
(message (format #f "You found a bug: the program '~a'
failed to compute the derivation for Guix (version: ~s; system: ~s;
host version: ~s; pull-version: ~s).
Please report the COMPLETE output above to <~a>.~%"
(derivation->output-path build)
version system %guix-version pull-version
%guix-bug-report-address))))))))))))
Please report it by email to <~a>.~%"
(derivation->output-path build)
version system %guix-version pull-version
%guix-bug-report-address)))))))))))
;; This file is loaded by 'guix pull'; return it the build procedure.
build
+58
View File
@@ -0,0 +1,58 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
;;;
;;; Check whether important binaries are available.
;;;
(use-modules (guix store)
(guix grafts)
(guix packages)
(guix derivations)
(gnu packages emacs)
(gnu packages make-bootstrap)
(srfi srfi-1)
(srfi srfi-26)
(ice-9 format))
(with-store store
(parameterize ((%graft? #f))
(let* ((native (append-map (lambda (system)
(map (cut package-derivation store <> system)
(list %bootstrap-tarballs emacs)))
%hydra-supported-systems))
(cross (map (cut package-cross-derivation store
%bootstrap-tarballs <>)
'("mips64el-linux-gnu"
"arm-linux-gnueabihf")))
(total (append native cross)))
(set-build-options store
#:use-substitutes? #t
#:substitute-urls %default-substitute-urls)
(let* ((total (map derivation->output-path total))
(available (substitutable-paths store total))
(missing (lset-difference string=? total available)))
(if (null? missing)
(format (current-error-port)
"~a packages found substitutable on~{ ~a~}~%"
(length total) %hydra-supported-systems)
(format (current-error-port)
"~a packages are not substitutable:~%~{ ~a~%~}~%"
(length missing) missing))
(exit (null? missing))))))
-82
View File
@@ -1,82 +0,0 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2020 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
;;;
;;; Validate 'etc/news.scm'.
;;;
(use-modules (git)
(guix git)
(guix ui)
(guix channels)
(srfi srfi-26)
(ice-9 match))
;; XXX: These two things are currently private.
(define read-channel-news (@@ (guix channels) read-channel-news))
(define channel-news-entries (cut struct-ref <> 0))
(define (all-the-news directory)
"Return the <channel-news> read from DIRECTORY, a checkout of the 'guix'
channel."
(call-with-input-file (string-append directory "/etc/news.scm")
read-channel-news))
(define (validate-texinfo str type language)
"Parse STR as a Texinfo fragment and raise an error if that fails."
(catch #t
(lambda ()
(texi->plain-text str))
(lambda (key . args)
(print-exception (current-error-port) #f key args)
(report-error (G_ "the Texinfo snippet below is invalid (~a, ~a):~%")
type language)
(display str (current-error-port))
(exit 1))))
(define (validate-news-entry repository entry)
"Validate ENTRY, a <channel-news-entry>, making sure it refers to an
existent commit of REPOSITORY and contains only valid Texinfo."
(catch 'git-error
(lambda ()
(let ((commit (commit-lookup repository
(string->oid
(channel-news-entry-commit entry)))))
(for-each (match-lambda
((language . title)
(validate-texinfo title 'title language)))
(channel-news-entry-title entry))
(for-each (match-lambda
((language . body)
(validate-texinfo body 'body language)))
(channel-news-entry-body entry))))
(lambda (key error . rest)
(if (= GIT_ENOTFOUND (git-error-code error))
(leave (G_ "commit '~a' of entry '~a' does not exist~%")
(channel-news-entry-commit entry)
(channel-news-entry-title entry))
(apply throw key error rest)))))
(let* ((this-directory (dirname (current-filename)))
(top-directory (string-append this-directory "/.."))
(entries (channel-news-entries (all-the-news top-directory))))
(with-repository top-directory repository
(for-each (cut validate-news-entry repository <>)
entries)
(info (G_ "All ~a channel news entries are valid.~%")
(length entries))))
@@ -50,7 +50,7 @@
directory))
((_ . directory) directory))
(derivation->output-paths drv)))))
(%final-inputs system)))
%final-inputs))
(define (assert-valid-substitute substitute)
"Make sure SUBSTITUTE does not refer to any bootstrap inputs, and bail out
@@ -83,4 +83,5 @@ refer to the bootstrap tools."
(set-build-options store #:use-substitutes? #t)
(for-each (cut test-final-inputs store <>)
%cuirass-supported-systems)))
%hydra-supported-systems)))
+19 -59
View File
@@ -1,6 +1,6 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
;;; Copyright © 2016, 2017, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2016, 2017, 2019 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -79,14 +79,6 @@ to 'make'."
(current-processor-count))))
(loop tail)))))))))
(define (parallel-job-count*)
;; XXX: Work around memory requirements not sustainable on i686 above '-j4'
;; or so: <https://bugs.gnu.org/40522>.
(let ((count (parallel-job-count)))
(if (string-prefix? "i686" %host-type)
(min count 4)
count)))
(define (% completed total)
"Return the completion percentage of COMPLETED over TOTAL as an integer."
(inexact->exact (round (* 100. (/ completed total)))))
@@ -98,53 +90,21 @@ to 'make'."
(exit 1)))
(match (command-line)
((_ "--total" (= string->number grand-total)
"--completed" (= string->number processed)
. files)
;; GRAND-TOTAL is the total number of .scm files in the project; PROCESSED
;; is the total number of .scm files already compiled in previous
;; invocations of this script.
(catch #t
(lambda ()
(let* ((to-build (filter file-needs-compilation? files))
(processed (+ processed
(- (length files) (length to-build)))))
(compile-files srcdir (getcwd) to-build
#:workers (parallel-job-count*)
#:host host
#:report-load (lambda (file total completed)
(when file
(format #t "[~3d%] LOAD ~a~%"
(% (+ 1 completed
(* 2 processed))
(* 2 grand-total))
file)
(force-output)))
#:report-compilation (lambda (file total completed)
(when file
(format #t "[~3d%] GUILEC ~a~%"
(% (+ total completed 1
(* 2 processed))
(* 2 grand-total))
(scm->go file))
(force-output))))))
(lambda _
(primitive-exit 1))
(lambda args
;; Try to report the error in an intelligible way.
(let* ((stack (make-stack #t))
(frame (if (> (stack-length stack) 1)
(stack-ref stack 1) ;skip the 'throw' frame
(stack-ref stack 0)))
(ui (false-if-exception
(resolve-module '(guix ui))))
(report (and ui
(false-if-exception
(module-ref ui 'report-load-error)))))
(if report
(report (or (and=> (current-load-port) port-filename) "?.scm")
args frame)
(begin
(print-exception (current-error-port) frame
(car args) (cdr args))
(display-backtrace stack (current-error-port)))))))))
((_ . files)
(compile-files srcdir (getcwd)
(filter file-needs-compilation? files)
#:workers (parallel-job-count)
#:host host
#:report-load (lambda (file total completed)
(when file
(format #t "[~3d%] LOAD ~a~%"
(% (+ 1 completed) (* 2 total))
file)
(force-output)))
#:report-compilation (lambda (file total completed)
(when file
(format #t "[~3d%] GUILEC ~a~%"
(% (+ total completed 1)
(* 2 total))
(scm->go file))
(force-output))))))
-7
View File
@@ -20,9 +20,6 @@
(use-modules (srfi srfi-26))
;; Avoid lots of readlink calls
(fluid-set! %file-port-name-canonicalization #f)
;; Add ~/.config/guix/current to the search path.
(eval-when (expand load eval)
(and=> (or (getenv "XDG_CONFIG_HOME")
@@ -44,10 +41,6 @@
(match (command-line)
((program source)
;; The build procedure outputs to this port, so setup buffering to avoid
;; one char per syscall.
(setvbuf (current-error-port) 'line)
(with-error-handling
(with-store store
(let* ((script (string-append source "/build-aux/build-self.scm"))
-26
View File
@@ -1,26 +0,0 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2021 Julien Lepiller <julien@lepiller.eu>
;;;
;;; 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/>.
;; Translate cross-references in a translated .texi manual.
(use-modules (guix build po)
(ice-9 match))
(match (command-line)
((program texi pofile)
(translate-cross-references texi pofile)))
-108
View File
@@ -1,108 +0,0 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016-2018, 2020, 2022 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 Jan Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2021 Mathieu Othacehe <othacehe@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
;;; This program replicates the behavior of Cuirass's 'evaluate' process.
;;; It displays the evaluated jobs on the standard output.
(use-modules (guix channels)
(guix derivations)
(guix git-download)
(guix inferior)
(guix packages)
(guix store)
(guix ui)
((guix ui) #:select (build-notifier))
(ice-9 match)
(ice-9 pretty-print)
(ice-9 threads))
(define %top-srcdir
(and=> (assq-ref (current-source-location) 'filename)
(lambda (file)
(canonicalize-path
(string-append (dirname file) "/../..")))))
(match (command-line)
((command directory)
(let ((real-build-things build-things))
(with-store store
;; The evaluation of Guix itself requires building a "trampoline"
;; program, and possibly everything it depends on. Thus, allow builds
;; but print a notification.
(with-build-handler (build-notifier #:use-substitutes? #f)
;; Add %TOP-SRCDIR to the store with a proper Git predicate so we
;; work from a clean checkout.
(let ((source (add-to-store store "guix-source" #t
"sha256" %top-srcdir
#:select? (git-predicate %top-srcdir))))
(define instances
(list (checkout->channel-instance source)))
(define channels
(map channel-instance-channel instances))
(define derivation
;; Compute the derivation of Guix for COMMIT.
(run-with-store store
(channel-instances->derivation instances)))
;; TODO: Remove 'show-what-to-build' call when Cuirass' 'evaluate'
;; scripts uses 'with-build-handler'.
(show-what-to-build store (list derivation))
(build-derivations store (list derivation))
;; Evaluate jobs on a per-system basis for two reasons. It speeds
;; up the evaluation speed as the evaluations can be performed
;; concurrently. It also decreases the amount of memory needed per
;; evaluation process.
;;
;; Fork inferior processes upfront before we have created any
;; threads.
(let ((inferiors (map (lambda _
(open-inferior (derivation->output-path derivation)))
%cuirass-supported-systems)))
(n-par-for-each
(min (length %cuirass-supported-systems)
(current-processor-count))
(lambda (system inferior)
(with-store store
(let ((channels (map channel-instance->sexp instances)))
(inferior-eval '(use-modules (gnu ci)) inferior)
(let ((jobs
(inferior-eval-with-store
inferior store
`(lambda (store)
(cuirass-jobs store
'((subset . all)
(systems . ,(list system))
(channels . ,channels))))))
(file
(string-append directory "/jobs-" system ".scm")))
(close-inferior inferior)
(call-with-output-file file
(lambda (port)
(pretty-print jobs port)))))))
%cuirass-supported-systems
inferiors)))))))
(x
(format (current-error-port) "Wrong command: ~a~%." x)
(exit 1)))
+25
View File
@@ -0,0 +1,25 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017 Jan 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/>.
;;;
;;; This file defines build jobs for the Cuirass continuation integration
;;; tool.
;;;
(include "../hydra/gnu-system.scm")
(include "hydra-to-cuirass.scm")
+6
View File
@@ -0,0 +1,6 @@
;;;
;;; This file defines Cuirass build jobs to build Guix itself.
;;;
(include "../hydra/guix-modular.scm")
(include "hydra-to-cuirass.scm")
+47
View File
@@ -0,0 +1,47 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017 Jan 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/>.
;;;
;;; This file defines the conversion of Hydra build jobs to Cuirass build
;;; jobs. It is meant to be included in other files.
;;;
(use-modules ((guix licenses)
#:select (license? license-name license-uri license-comment)))
(define (cuirass-jobs store arguments)
"Return Cuirass jobs."
(map hydra-job->cuirass-job (hydra-jobs store arguments)))
(define (hydra-job->cuirass-job hydra-job)
(let ((name (car hydra-job))
(job ((cdr hydra-job))))
(lambda _ (acons #:job-name (symbol->string name)
(map symbol-alist-entry->keyword-alist-entry job)))))
(define (symbol-alist-entry->keyword-alist-entry entry)
(cons (symbol->keyword (car entry)) (entry->sexp-entry (cdr entry))))
(define (entry->sexp-entry o)
(match o
((? license?) `((name . (license-name o))
(uri . ,(license-uri o))
(comment . ,(license-comment o))))
((lst ...)
(map entry->sexp-entry lst))
(_ o)))
-80
View File
@@ -1,80 +0,0 @@
#!/bin/sh
if test "$#" -lt 1 || test "$#" -gt 2
then
echo "Usage: extract-syscall-ranges.sh FILENAME [abiname_regex]"
exit 1
fi
numbers_to_ranges()
{
if ! read number
then
printf '{}\n'
return
fi
low="$number"
high="$number"
while true
do
if read number
then
if test "$number" -eq "$((high + 1))"
then
high="$number"
else
break
fi
else
printf '{ {%d, %d} }\n' "$low" "$high"
return
fi
done
printf '{ {%d, %d}' "$low" "$high"
low="$number"
high="$number"
while true
do
if read number
then
if test "$number" -eq "$((high + 1))"
then
high="$number"
else
printf ', {%d, %d}' "$low" "$high"
low="$number"
high="$number"
fi
else
printf ', {%d, %d} }\n' "$low" "$high"
return
fi
done
}
if test "$#" -eq 2
then
abi_regex="$2"
getnumbers()
{
# delete comment lines and space-only lines
sed -e '/^[[:space:]]*#/d ; /^[[:space:]]*$/d' |
# filter to only include lines with target abi or "common"
grep -E "^[0-9]+[[:space:]]+(common|(${abi_regex}))[[:space:]]" |
# limit to only syscall number
sed -e 's/\([0-9]\+\).*/\1/g'
}
else
getnumbers()
{
# delete comment lines and space-only lines and limit to syscall number
sed -e '/^[[:space:]]*#/d ; /^[[:space:]]*$/d ; s/\([0-9]\+\).*/\1/g'
}
fi
getnumbers < "$1" |
sort -n |
uniq | # Yes, there are duplicate syscall entries...
numbers_to_ranges
+144
View File
@@ -0,0 +1,144 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 Jan 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/>.
;;; This program replicates the behavior of Hydra's 'hydra-eval-guile-job'.
;;; It evaluates the Hydra job defined by the program passed as its first
;;; arguments and outputs an sexp of the jobs on standard output.
(use-modules (guix store)
(guix git-download)
((guix build utils) #:select (with-directory-excursion))
(srfi srfi-19)
(ice-9 match)
(ice-9 pretty-print)
(ice-9 format))
(define %top-srcdir
(and=> (assq-ref (current-source-location) 'filename)
(lambda (file)
(canonicalize-path
(string-append (dirname file) "/../..")))))
(define %user-module
;; Hydra user module.
(let ((m (make-module)))
(beautify-user-module! m)
m))
(cond-expand
(guile-2.2
;; Guile 2.2.2 has a bug whereby 'time-monotonic' objects have seconds and
;; nanoseconds swapped (fixed in Guile commit 886ac3e). Work around it.
(define time-monotonic time-tai))
(else #t))
(define (call-with-time thunk kont)
"Call THUNK and pass KONT the elapsed time followed by THUNK's return
values."
(let* ((start (current-time time-monotonic))
(result (call-with-values thunk list))
(end (current-time time-monotonic)))
(apply kont (time-difference end start) result)))
(define (call-with-time-display thunk)
"Call THUNK and write to the current output port its duration."
(call-with-time thunk
(lambda (time . results)
(format #t "~,3f seconds~%"
(+ (time-second time)
(/ (time-nanosecond time) 1e9)))
(apply values results))))
(define (assert-valid-job job thing)
"Raise an error if THING is not an alist with a valid 'derivation' entry.
Otherwise return THING."
(unless (and (list? thing)
(and=> (assoc-ref thing 'derivation)
(lambda (value)
(and (string? value)
(string-suffix? ".drv" value)))))
(error "job did not produce a valid alist" job thing))
thing)
;; Without further ado...
(match (command-line)
((command file cuirass? ...)
;; Load FILE, a Scheme file that defines Hydra jobs.
(let ((port (current-output-port))
(real-build-things build-things))
(with-store store
;; Make sure we don't resort to substitutes.
(set-build-options store
#:use-substitutes? #f
#:substitute-urls '())
;; Grafts can trigger early builds. We do not want that to happen
;; during evaluation, so use a sledgehammer to catch such problems.
;; An exception, though, is the evaluation of Guix itself, which
;; requires building a "trampoline" program.
(set! build-things
(lambda (store . args)
(format (current-error-port)
"warning: building things during evaluation~%")
(format (current-error-port)
"'build-things' arguments: ~s~%" args)
(apply real-build-things store args)))
;; Add %TOP-SRCDIR to the store with a proper Git predicate so we work
;; from a clean checkout
(let ((source (add-to-store store "guix-source" #t
"sha256" %top-srcdir
#:select? (git-predicate %top-srcdir))))
(with-directory-excursion source
(save-module-excursion
(lambda ()
(set-current-module %user-module)
(format (current-error-port)
"loading '~a' relative to '~a'...~%"
file source)
(primitive-load file))))
;; Call the entry point of FILE and print the resulting job sexp.
(pretty-print
(match ((module-ref %user-module
(if (equal? cuirass? "cuirass")
'cuirass-jobs
'hydra-jobs))
store `((guix
. ((file-name . ,source)))))
(((names . thunks) ...)
(map (lambda (job thunk)
(format (current-error-port) "evaluating '~a'... " job)
(force-output (current-error-port))
(cons job
(assert-valid-job job
(call-with-time-display thunk))))
names thunks)))
port)))))
((command _ ...)
(format (current-error-port) "Usage: ~a FILE [cuirass]
Evaluate the Hydra or Cuirass jobs defined in FILE.~%"
command)
(exit 1)))
;;; Local Variables:
;;; eval: (put 'call-with-time 'scheme-indent-function 1)
;;; End:
+78
View File
@@ -0,0 +1,78 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017 Jan Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2018 Clément Lassieur <clement@lassieur.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
;;;
;;; This file defines build jobs for the Hydra continuation integration
;;; tool.
;;;
(use-modules (guix inferior) (guix channels)
(guix)
(guix ui)
(srfi srfi-1)
(ice-9 match))
;; XXX: Debugging hack: since `hydra-eval-guile-jobs' redirects the output
;; port to the bit bucket, let us write to the error port instead.
(setvbuf (current-error-port) _IOLBF)
(set-current-output-port (current-error-port))
(define (hydra-jobs store arguments)
"Return a list of jobs where each job is a NAME/THUNK pair."
(define checkout
;; Extract metadata about the 'guix' checkout. Its key in ARGUMENTS may
;; vary, so pick up the first one that's neither 'subset' nor 'systems'.
(any (match-lambda
((key . value)
(and (not (memq key '(systems subset)))
value)))
arguments))
(define commit
(assq-ref checkout 'revision))
(define source
(assq-ref checkout 'file-name))
(define instance
(checkout->channel-instance source #:commit commit))
(define derivation
;; Compute the derivation of Guix for COMMIT.
(run-with-store store
(channel-instances->derivation (list instance))))
(show-what-to-build store (list derivation))
(build-derivations store (list derivation))
;; Open an inferior for the just-built Guix.
(let ((inferior (open-inferior (derivation->output-path derivation))))
(inferior-eval '(use-modules (gnu ci) (ice-9 match)) inferior)
(map (match-lambda
((name . fields)
;; Hydra expects a thunk, so here it is.
(cons name (lambda () fields))))
(inferior-eval-with-store inferior store
`(lambda (store)
(map (match-lambda
((name . thunk)
(cons name (thunk))))
(hydra-jobs store ',arguments)))))))
+83
View File
@@ -0,0 +1,83 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
;;;
;;; This file defines a continuous integration job to build the same modular
;;; Guix as 'guix pull', which is defined in (guix self).
;;;
(use-modules (guix store)
(guix config)
(guix utils)
((guix packages) #:select (%hydra-supported-systems))
(guix derivations)
(guix monads)
((guix licenses) #:prefix license:)
(srfi srfi-1)
(ice-9 match))
;; XXX: Debugging hack: since `hydra-eval-guile-jobs' redirects the output
;; port to the bit bucket, let us write to the error port instead.
(setvbuf (current-error-port) _IOLBF)
(set-current-output-port (current-error-port))
(define* (build-job store source version system)
"Return a Hydra job a list building the modular Guix derivation from SOURCE
for SYSTEM. Use VERSION as the version identifier."
(lambda ()
(define build
(primitive-load (string-append source "/build-aux/build-self.scm")))
`((derivation . ,(derivation-file-name
(run-with-store store
(build source #:version version #:system system
#:pull-version 1
#:guile-version "2.2")))) ;the latest 2.2.x
(description . "Modular Guix")
(long-description
. "This is the modular Guix package as produced by 'guix pull'.")
(license . ,license:gpl3+)
(home-page . ,%guix-home-page-url)
(maintainers . (,%guix-bug-report-address)))))
(define (hydra-jobs store arguments)
"Return Hydra jobs."
(define systems
(match (assoc-ref arguments 'systems)
(#f %hydra-supported-systems)
((lst ...) lst)
((? string? str) (call-with-input-string str read))))
(define guix-checkout
(or (assq-ref arguments 'guix) ;Hydra on hydra
(assq-ref arguments 'guix-modular))) ;Cuirass on berlin
(define version
(or (assq-ref guix-checkout 'revision)
"0.unknown"))
(let ((file (assq-ref guix-checkout 'file-name)))
(format (current-error-port) "using checkout ~s (~s; arguments: ~s)~%"
guix-checkout file arguments)
(map (lambda (system)
(let ((name (string->symbol
(string-append "guix." system))))
`(,name
. ,(build-job store file version system))))
systems)))
+106
View File
@@ -0,0 +1,106 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2013, 2014, 2015, 2016, 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
;;;
;;; This file defines build jobs of Guix itself for the Hydra continuation
;;; integration tool.
;;;
;; Attempt to use our very own Guix modules.
(eval-when (expand load eval)
;; Ignore any available .go, and force recompilation. This is because our
;; checkout in the store has mtime set to the epoch, and thus .go files look
;; newer, even though they may not correspond.
(set! %fresh-auto-compile #t)
;; Display which files are loaded.
(set! %load-verbosely #t)
(and=> (assoc-ref (current-source-location) 'filename)
(lambda (file)
(let ((dir (string-append (dirname file) "/../..")))
(format (current-error-port) "prepending ~s to the load path~%"
dir)
(set! %load-path (cons dir %load-path))))))
(use-modules (guix store)
(guix packages)
(guix utils)
(guix grafts)
(guix derivations)
(guix build-system gnu)
(gnu packages package-management)
(srfi srfi-1)
(srfi srfi-26)
(ice-9 match))
;; XXX: Debugging hack: since `hydra-eval-guile-jobs' redirects the output
;; port to the bit bucket, let us write to the error port instead.
(setvbuf (current-error-port) _IOLBF)
(set-current-output-port (current-error-port))
(define* (package->alist store package system
#:optional (package-derivation package-derivation))
"Convert PACKAGE to an alist suitable for Hydra."
`((derivation . ,(derivation-file-name
(parameterize ((%graft? #f))
(package-derivation store package system
#:graft? #f))))
(description . ,(package-synopsis package))
(long-description . ,(package-description package))
(license . ,(package-license package))
(home-page . ,(package-home-page package))
(maintainers . ("bug-guix@gnu.org"))))
(define (hydra-jobs store arguments)
"Return Hydra jobs."
(define systems
(match (filter-map (match-lambda
(('system . value)
value)
(_ #f))
arguments)
((lst ..1)
lst)
(_
(list (%current-system)))))
(define guix-checkout
(assq-ref arguments 'guix))
(let ((file (assq-ref guix-checkout 'file-name)))
(format (current-error-port) "using checkout ~s (~s)~%"
guix-checkout file)
`((tarball . ,(cute package->alist store
(dist-package guix file)
(%current-system)))
,@(map (lambda (system)
(let ((name (string->symbol
(string-append "guix." system))))
`(,name
. ,(cute package->alist store
(package
(inherit guix)
(version "latest")
(source file))
system))))
%hydra-supported-systems))))
-78
View File
@@ -1,78 +0,0 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2025 Florian Pelz <pelzflorian@pelzflorian.de>
;;;
;;; 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/>.
;; Minify Gettext PO files when synced from
;; <https://codeberg.org/guix/translations/>,
;; keeping only actually translated messages.
;; Note: This does not work for PO files of the guix domain, which needed
;; support for plural forms in (@ (guix build po) read-po-file). The guix
;; domain's files are comparatively small and the read-po-file API would
;; have to be expanded to use records or such; it is not worth it.
(use-modules (guix build po)
(ice-9 match)
(ice-9 textual-ports))
(define (escape str)
"Escape msgid or msgstr. Replace by C-style escape sequences."
(let* ((in (open-input-string str))
(text (get-string-all in))
(escaped-text-as-list
(string-fold-right
(lambda (char result)
(cons (case char
((#\") "\\\"")
((#\\) "\\\\")
((#\linefeed) "\\n")
((#\return) "\\r")
((#\tab) "\\t")
(else (string char)))
result))
'()
text))
(escaped-text (apply string-append escaped-text-as-list)))
(display escaped-text)))
(match (command-line)
((program pofile)
(let ((input (open-input-file pofile)))
;; Just copy until an empty line.
(letrec ((copy
(lambda ()
(let ((next-line (get-line input)))
(display next-line)
(newline)
(when (> (string-length next-line) 0)
(copy))))))
(copy))
;; Then print only translated messages.
(for-each
(lambda (msg)
(match msg
((msgid . msgstr)
(display "msgid \"")
(escape msgid)
(display "\"")
(newline)
(display "msgstr \"")
(escape msgstr)
(display "\"")
(newline)
(newline))))
(read-po-file input)))))
-89
View File
@@ -1,89 +0,0 @@
#! /bin/sh
# -*-scheme-*-
export LANG=C LANGUAGE=C LC_TIME=C
export TZ=UTC0
exec guile --no-auto-compile -L $srcdir -C $srcdir -e '(mdate-from-git)' -s "$0" "$@"
!#
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; This program 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.
;;;
;;; This program is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;;;; Commentary:
;;;
;;; Usage: mdate-from-git.scm FILE
;;;
;;; This script is compatible with Automake's `mdate-sh' but uses the timestamp
;;; from Git instead of from the file system. Also, it can be appended to
;;; mdate-sh.
;;; As a special exception for Guix, it caters for doc/guix.LANG.texi files that
;;; are not stored in Git, by using po/doc/guix-manual.LANG.po for the Git
;;; timestamp. Test doing something like:
;;;
;;; build-aux/mdate-from-git.scm doc/guix.de.texi
;;;
;;;; Code:
(define-module (mdate-from-git)
#:use-module (ice-9 match)
#:use-module (ice-9 popen)
#:use-module (ice-9 rdelim)
#:use-module (ice-9 regex)
#:export (main))
(define (pipe-command command)
(let* ((port (apply open-pipe* OPEN_READ command))
(output (read-string port)))
(close-port port)
output))
(define (guix.LANG.texi->guix-manual.LANG.po file-name)
"Translated manuals doc/guix.LANG.texi are not tracked in Git and are
generated from po/doc/guix-manual.LANG.po. For such an untraced .TEXI file,
return its .PO counterpart."
(let ((m (string-match "doc/guix.([^.]+).texi" file-name)))
(if (not m) file-name
(let ((lang (match:substring m 1)))
(format #f "po/doc/guix-manual.~a.po" lang)))))
;;;
;;; Entry point.
;;;
(define (main args)
(match args
((script file-name)
(let* ((command `("git" "ls-files" "--error-unmatch" "--" ,file-name))
(tracked? (zero? (with-error-to-port (%make-void-port "w")
(lambda _
(with-output-to-port (%make-void-port "w")
(lambda _ (apply system* command)))))))
(file-name (if tracked? file-name
(guix.LANG.texi->guix-manual.LANG.po file-name)))
(command `("git" "log" "--pretty=format:%ct" "-n1" "--" ,file-name))
(timestamp (with-error-to-port (%make-void-port "w")
(lambda _ (pipe-command command))))
(source-date-epoch (or (getenv "SOURCE_DATE_EPOCH") "1"))
(timestamp (if (string-null? timestamp) source-date-epoch
timestamp))
(time (gmtime (string->number timestamp)))
(d-m-y (strftime "%-d %B %Y" time)))
(display d-m-y)))
(_
(format (current-error-port) "Usage: mdate-from-git.scm FILE\n")
(exit 2))))
+18 -9
View File
@@ -1,7 +1,7 @@
#!/bin/sh
# GNU Guix --- Functional package management for GNU
# Copyright © 2012, 2013, 2014, 2015, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
# Copyright © 2012, 2013, 2014, 2015, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
# Copyright © 2017 Eric Bavier <bavier@cray.com>
#
# This file is part of GNU Guix.
@@ -42,15 +42,24 @@ export GUILE_LOAD_COMPILED_PATH GUILE_LOAD_PATH
PATH="$abs_top_builddir/scripts:$abs_top_builddir:$PATH"
export PATH
# The daemon invokes 'guix'; tell it which one to use.
GUIX="$abs_top_builddir/scripts/guix"
export GUIX
# Daemon helpers.
# Sanity check.
if [ "$1" = "guix" ] && [ ! -f "$GUIX" ]; then
echo "$GUIX is not built. Please run 'make scripts/guix'."
exit 1
fi
NIX_ROOT_FINDER="$abs_top_builddir/nix/scripts/list-runtime-roots"
NIX_LIBEXEC_DIR="@abs_top_builddir@/nix/scripts" # for 'authenticate', etc.
export NIX_ROOT_FINDER NIX_LIBEXEC_DIR
NIX_BUILD_HOOK="$abs_top_builddir/nix/scripts/offload"
@BUILD_DAEMON_OFFLOAD_TRUE@export NIX_BUILD_HOOK
@BUILD_DAEMON_OFFLOAD_FALSE@# No offloading support.
@BUILD_DAEMON_OFFLOAD_FALSE@unset NIX_BUILD_HOOK
# The following variables need only be defined when compiling Guix
# modules, but we define them to be on the safe side in case of
# auto-compilation.
NIX_HASH="@NIX_HASH@"
export NIX_HASH
# Define $GUIX_UNINSTALLED to prevent `guix' from
# prepending @guilemoduledir@ to the Guile load paths.
+90
View File
@@ -0,0 +1,90 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2016, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
(define-module (run-system-tests)
#:use-module (gnu tests)
#:use-module (guix store)
#:use-module ((guix status) #:select (with-status-verbosity))
#:use-module (guix monads)
#:use-module (guix derivations)
#:use-module (guix ui)
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-34)
#:use-module (ice-9 match)
#:export (run-system-tests))
(define (built-derivations* drv)
(lambda (store)
(guard (c ((store-protocol-error? c)
(values #f store)))
(values (build-derivations store drv) store))))
(define (filterm mproc lst) ;XXX: move to (guix monads)
(with-monad %store-monad
(>>= (foldm %store-monad
(lambda (item result)
(mlet %store-monad ((keep? (mproc item)))
(return (if keep?
(cons item result)
result))))
'()
lst)
(lift1 reverse %store-monad))))
(define (run-system-tests . args)
(define tests
;; Honor the 'TESTS' environment variable so that one can select a subset
;; of tests to run in the usual way:
;;
;; make check-system TESTS=installed-os
(match (getenv "TESTS")
(#f
(all-system-tests))
((= string-tokenize (tests ...))
(filter (lambda (test)
(member (system-test-name test) tests))
(all-system-tests)))))
(format (current-error-port) "Running ~a system tests...~%"
(length tests))
(with-store store
(with-status-verbosity 2
(run-with-store store
(mlet* %store-monad ((drv (mapm %store-monad system-test-value tests))
(out -> (map derivation->output-path drv)))
(mbegin %store-monad
(show-what-to-build* drv)
(set-build-options* #:keep-going? #t #:keep-failed? #t
#:print-build-trace #t
#:print-extended-build-trace? #t
#:fallback? #t)
(built-derivations* drv)
(mlet %store-monad ((valid (filterm (store-lift valid-path?)
out))
(failed (filterm (store-lift
(negate valid-path?))
out)))
(format #t "TOTAL: ~a\n" (length drv))
(for-each (lambda (item)
(format #t "PASS: ~a~%" item))
valid)
(for-each (lambda (item)
(format #t "FAIL: ~a~%" item))
failed)
(exit (null? failed)))))))))
Executable → Regular
+58 -175
View File
@@ -1,13 +1,8 @@
#!/bin/sh
exec guile --no-auto-compile -e main -s "$0" "$@"
!#
;;;; test-driver.scm - Guile test driver for Automake testsuite harness
(define script-version "2026-03-21.02") ;UTC
(define script-version "2017-03-22.13") ;UTC
;;; Copyright © 2015, 2016 Mathieu Lirzin <mthl@gnu.org>
;;; Copyright © 2021 Maxim Cournoyer <maxim@guixotic.coop>
;;; Copyright © 2024 Tomas Volf <~@wolfsden.cz>
;;;
;;; This program is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
@@ -29,44 +24,27 @@ exec guile --no-auto-compile -e main -s "$0" "$@"
;;;
;;;; Code:
(use-modules (ice-9 format)
(ice-9 getopt-long)
(use-modules (ice-9 getopt-long)
(ice-9 pretty-print)
(ice-9 regex)
(srfi srfi-1)
(srfi srfi-19)
(srfi srfi-26)
(srfi srfi-64)
(srfi srfi-71))
(srfi srfi-64))
(define (show-help)
(display "Usage:
test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
[--expect-failure={yes|no}] [--color-tests={yes|no}]
[--select=REGEXP] [--exclude=REGEXP] [--errors-only={yes|no}]
[--enable-hard-errors={yes|no}] [--brief={yes|no}}]
[--show-duration={yes|no}] [--]
[--enable-hard-errors={yes|no}] [--brief={yes|no}}] [--]
TEST-SCRIPT [TEST-SCRIPT-ARGUMENTS]
The '--test-name' option is mandatory. The '--select' and '--exclude' options
allow selecting or excluding individual test cases via a regexp, respectively.
The '--errors-only' option can be set to \"yes\" to limit the logged test case
metadata to only those test cases that failed. When set to \"yes\", the
'--brief' option disables printing the individual test case result to the
console. When '--show-duration' is set to \"yes\", the time elapsed per test
case is shown.\n"))
The '--test-name', '--log-file' and '--trs-file' options are mandatory.\n"))
(define %options
'((test-name (value #t))
(log-file (value #t))
(trs-file (value #t))
(select (value #t))
(exclude (value #t))
(errors-only (value #t))
(color-tests (value #t))
(expect-failure (value #t)) ;XXX: not implemented yet
(enable-hard-errors (value #t)) ;not implemented in SRFI-64
(brief (value #t))
(show-duration (value #t))
(help (single-char #\h) (value #f))
(version (single-char #\V) (value #f))))
@@ -97,120 +75,56 @@ case is shown.\n"))
"") ;no color
result)))
(define* (test-result-kind* #:optional (runner (test-runner-current)))
;; TODO: Since Guile 3.0.11, the test-result-kind value of tests not
;; selected by specifiers is #f instead of 'skip, which seems like a bug.
;; Revert to use 'test-result-kind' after
;; <https://codeberg.org/guile/guile/issues/133> is resolved and made and
;; available in Guix.
(or (test-result-ref runner 'result-kind)
'skip))
(define (current-test-full-name runner)
"Get full name (test group path + name) of current test."
(format #f "~{~a~^/~}: ~a"
(test-runner-group-path runner)
(test-runner-test-name runner)))
;;;
;;; SRFI 64 custom test runner.
;;;
(define* (test-runner-gnu test-name #:key color? brief? errors-only?
show-duration?
(out-port (current-output-port))
(trs-port (%make-void-port "w"))
select exclude)
"Return a custom SRFI-64 test runner and a `finalize' procedure as multiple
values. TEST-NAME is a string specifying the file name of the current the
test. COLOR? specifies whether to use colors. When BRIEF? is true, the
individual test cases results are masked and only the summary is shown.
ERRORS-ONLY? reduces the amount of test case metadata logged to only that of
the failed test cases. OUT-PORT and TRS-PORT must be output ports. OUT-PORT
defaults to the current output port, while TRS-PORT defaults to a void port,
which means no TRS output is logged. SELECT and EXCLUDE may take a regular
expression to select or exclude individual test cases based on their names.
After the tests are finished running, the `finalize' procedure should be
called to do the final reporting."
(define test-cases-start-time (make-hash-table))
(define* (test-runner-gnu test-name #:key color? brief? out-port trs-port)
"Return an custom SRFI-64 test runner. TEST-NAME is a string specifying the
file name of the current the test. COLOR? specifies whether to use colors,
and BRIEF?, well, you know. OUT-PORT and TRS-PORT must be output ports. The
current output port is supposed to be redirected to a '.log' file."
(define (test-on-test-begin-gnu runner)
;; Procedure called at the start of an individual test case, before the
;; test expression (and expected value) are evaluated.
(let ((test-case-name (current-test-full-name runner))
(start-time (current-time time-monotonic)))
(hash-set! test-cases-start-time test-case-name start-time)))
(define (test-skipped? runner)
(eq? 'skip (test-result-kind* runner)))
(define (test-failed? runner)
(not (or (test-passed? runner)
(test-skipped? runner))))
(let ((result (cute assq-ref (test-result-alist runner) <>)))
(format #t "test-name: ~A~%" (result 'test-name))
(format #t "location: ~A~%"
(string-append (result 'source-file) ":"
(number->string (result 'source-line))))
(test-display "source" (result 'source-form) #:pretty? #t)))
(define (test-on-test-end-gnu runner)
;; Procedure called at the end of an individual test case, when the result
;; of the test is available.
(let* ((results (test-result-alist runner))
(result? (cut assq <> results))
(result (cut assq-ref results <>))
(test-case-name (current-test-full-name runner))
(start (hash-ref test-cases-start-time test-case-name))
(end (current-time time-monotonic))
(time-elapsed (time-difference end start))
(time-elapsed-seconds (+ (time-second time-elapsed)
(* 1e-9 (time-nanosecond time-elapsed)))))
(unless (or brief? (and errors-only? (test-skipped? runner)))
(result (cut assq-ref results <>)))
(unless brief?
;; Display the result of each test case on the console.
(format out-port "~a: ~a - ~a ~@[[~,3fs]~]~%"
(result->string (test-result-kind* runner) #:colorize? color?)
test-name test-case-name
(and show-duration? time-elapsed-seconds)))
(format out-port "~A: ~A - ~A~%"
(result->string (test-result-kind runner) #:colorize? color?)
test-name (test-runner-test-name runner)))
(when (result? 'expected-value)
(test-display "expected-value" (result 'expected-value)))
(when (result? 'expected-error)
(test-display "expected-error" (result 'expected-error) #:pretty? #t))
(when (result? 'actual-value)
(test-display "actual-value" (result 'actual-value)))
(when (result? 'actual-error)
(test-display "actual-error" (result 'actual-error) #:pretty? #t))
(format #t "result: ~a~%" (result->string (result 'result-kind)))
(newline)
(format trs-port ":test-result: ~A ~A~%"
(result->string (test-result-kind runner))
(test-runner-test-name runner))))
(unless (and errors-only? (not (test-failed? runner)))
(format #t "test-name: ~A~%" test-case-name)
(format #t "location: ~A~%"
(string-append (result 'source-file) ":"
(number->string (result 'source-line))))
(test-display "source" (result 'source-form) #:pretty? #t)
(when (result? 'expected-value)
(test-display "expected-value" (result 'expected-value)))
(when (result? 'expected-error)
(test-display "expected-error" (result 'expected-error) #:pretty? #t))
(when (result? 'actual-value)
(test-display "actual-value" (result 'actual-value)))
(when (result? 'actual-error)
(test-display "actual-error" (result 'actual-error) #:pretty? #t))
(format #t "result: ~a~%" (result->string (result 'result-kind)))
(newline))
(format trs-port ":test-result: ~A ~A [~,3fs]~%"
(result->string (test-result-kind* runner))
test-case-name time-elapsed-seconds)))
(define (finalize runner)
"Procedure to call after all tests finish to do the final reporting."
(define (test-on-group-end-gnu runner)
;; Procedure called by a 'test-end', including at the end of a test-group.
(let ((fail (or (positive? (test-runner-fail-count runner))
(positive? (test-runner-xpass-count runner))))
(skip (or (positive? (test-runner-skip-count runner))
(positive? (test-runner-xfail-count runner)))))
(format trs-port ":global-test-result: ~{~A~^,~}~%"
(filter-map (λ (proc str)
(let ((n (proc runner)))
(if (positive? n) str #f)))
(list test-runner-pass-count
test-runner-fail-count
test-runner-xpass-count
test-runner-xfail-count
test-runner-skip-count)
(list "PASS"
"FAIL"
"XPASS"
"XFAIL"
"SKIP")))
;; XXX: The global results need some refinements for XPASS.
(format trs-port ":global-test-result: ~A~%"
(if fail "FAIL" (if skip "SKIP" "PASS")))
(format trs-port ":recheck: ~A~%"
(if fail "yes" "no"))
(format trs-port ":copy-in-global-log: ~A~%"
@@ -220,26 +134,15 @@ called to do the final reporting."
(format out-port "~A: ~A~%"
(result->string (if fail 'fail (if skip 'skip 'pass))
#:colorize? color?)
test-name))))
test-name))
#f))
(let ((runner (test-runner-null)))
(test-runner-on-test-begin! runner test-on-test-begin-gnu)
(test-runner-on-test-end! runner test-on-test-end-gnu)
(test-runner-on-group-end! runner test-on-group-end-gnu)
(test-runner-on-bad-end-name! runner test-on-bad-end-name-simple)
(values runner
(λ () (finalize runner)))))
;;;
;;; SRFI 64 test specifiers.
;;;
(define (test-match-name* regexp)
"Return a test specifier that matches a test name against REGEXP."
(compose (cut string-match regexp <>) current-test-full-name))
(define (test-match-name*/negated regexp)
"Return a negated test specifier version of test-match-name*."
(compose not (test-match-name* regexp)))
runner))
;;;
@@ -251,46 +154,26 @@ called to do the final reporting."
(option (cut option-ref opts <> <>)))
(cond
((option 'help #f) (show-help))
((option 'version #f) (format #t "test-driver.scm ~A~%" script-version))
((option 'version #f) (format #t "test-driver.scm ~A" script-version))
(else
(let* ((log (and=> (option 'log-file #f) (cut open-file <> "w0")))
(trs (and=> (option 'trs-file #f) (cut open-file <> "wl")))
(out (duplicate-port (current-output-port) "wl"))
(test-name (option 'test-name #f))
(select (option 'select #f))
(exclude (option 'exclude #f))
(test-specifiers (filter-map
identity
(list (and=> select test-match-name*)
(and=> exclude test-match-name*/negated))))
(test-specifier (apply test-match-all test-specifiers))
(color-tests (if (assoc 'color-tests opts)
(option->boolean opts 'color-tests)
#t)))
(when log
(redirect-port log (current-output-port))
(redirect-port log (current-warning-port))
(redirect-port log (current-error-port)))
(let ((runner
finalize (test-runner-gnu
test-name
#:color? color-tests
#:brief? (option->boolean opts 'brief)
#:errors-only? (option->boolean opts 'errors-only)
#:show-duration? (option->boolean
opts 'show-duration)
#:out-port out #:trs-port trs)))
(test-apply runner test-specifier
(lambda _
(load-from-path test-name)))
(finalize))
(and=> log close-port)
(and=> trs close-port)
(let ((log (open-file (option 'log-file "") "w0"))
(trs (open-file (option 'trs-file "") "wl"))
(out (duplicate-port (current-output-port) "wl")))
(redirect-port log (current-output-port))
(redirect-port log (current-warning-port))
(redirect-port log (current-error-port))
(test-with-runner
(test-runner-gnu (option 'test-name #f)
#:color? (option->boolean opts 'color-tests)
#:brief? (option->boolean opts 'brief)
#:out-port out #:trs-port trs)
(load-from-path (option 'test-name #f)))
(close-port log)
(close-port trs)
(close-port out))))
(exit 0)))
;;; Local Variables:
;;; mode: scheme
;;; eval: (add-hook 'write-file-functions 'time-stamp)
;;; time-stamp-start: "(define script-version \""
;;; time-stamp-format: "%:y-%02m-%02d.%02H"
+13 -27
View File
@@ -1,7 +1,7 @@
#!/bin/sh
# GNU Guix --- Functional package management for GNU
# Copyright © 2012-2019, 2021, 2025 Ludovic Courtès <ludo@gnu.org>
# Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
#
# This file is part of GNU Guix.
#
@@ -50,8 +50,10 @@ then
# it or its parent directories. See <http://bugs.gnu.org/17935>.
NIX_STORE_DIR="`cd "@GUIX_TEST_ROOT@/store"; pwd -P`"
NIX_LOCALSTATE_DIR="@GUIX_TEST_ROOT@/var"
GUIX_LOG_DIRECTORY="@GUIX_TEST_ROOT@/var/log/guix"
GUIX_DATABASE_DIRECTORY="@GUIX_TEST_ROOT@/db"
NIX_ROOT_FINDER="@abs_top_builddir@/nix/scripts/list-runtime-roots"
# Choose a PID-dependent name to allow for parallel builds. Note
# that the directory name must be chosen so that the socket's file
@@ -73,9 +75,9 @@ then
# Copy the keys so that the secret key has the right permissions (the
# daemon errors out when this is not the case.)
mkdir -p "$GUIX_CONFIGURATION_DIRECTORY"
cp "@abs_top_srcdir@/tests/keys/openpgp/signing-key.sec" \
"@abs_top_srcdir@/tests/keys/openpgp/signing-key.pub" \
"$GUIX_CONFIGURATION_DIRECTORY"
cp "@abs_top_srcdir@/tests/signing-key.sec" \
"@abs_top_srcdir@/tests/signing-key.pub" \
"$GUIX_CONFIGURATION_DIRECTORY"
chmod 400 "$GUIX_CONFIGURATION_DIRECTORY/signing-key.sec"
fi
@@ -91,35 +93,19 @@ then
# Place for the substituter's cache.
XDG_CACHE_HOME="$GUIX_STATE_DIRECTORY/cache-$$"
# For the (guix import snix) tests.
NIXPKGS="@NIXPKGS@"
export NIX_IGNORE_SYMLINK_STORE NIX_STORE_DIR \
GUIX_LOG_DIRECTORY GUIX_STATE_DIRECTORY GUIX_DATABASE_DIRECTORY \
GUIX_BINARY_SUBSTITUTE_URL \
NIX_LOCALSTATE_DIR GUIX_LOG_DIRECTORY GUIX_STATE_DIRECTORY GUIX_DATABASE_DIRECTORY \
NIX_ROOT_FINDER GUIX_BINARY_SUBSTITUTE_URL \
GUIX_ALLOW_UNAUTHENTICATED_SUBSTITUTES \
GUIX_CONFIGURATION_DIRECTORY XDG_CACHE_HOME
# Create a fresh directory with restrictive permissions so that our test
# daemon's weak isolation can't be exploited by other users
rm -rf "$GUIX_STATE_DIRECTORY/daemon-socket"
mkdir -m 0700 "$GUIX_STATE_DIRECTORY/daemon-socket"
# If unprivileged user namespaces are not supported, pass
# '--disable-chroot'.
if [ -f /proc/self/ns/user ] \
&& { [ ! -f /proc/sys/kernel/unprivileged_userns_clone ] \
|| [ "$(cat /proc/sys/kernel/unprivileged_userns_clone)" -eq 1 ]; }
then
extra_options=""
else
extra_options="--disable-chroot"
echo "unprivileged user namespaces not supported; \
running 'guix-daemon $extra_options'" >&2
fi
GUIX_CONFIGURATION_DIRECTORY XDG_CACHE_HOME NIXPKGS
# Launch the daemon without chroot support because is may be
# unavailable, for instance if we're not running as root.
"@abs_top_builddir@/pre-inst-env" \
"@abs_top_builddir@/guix-daemon" \
$extra_options \
"@abs_top_builddir@/guix-daemon" --disable-chroot \
--substitute-urls="$GUIX_BINARY_SUBSTITUTE_URL" &
daemon_pid=$!
+8 -14
View File
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -95,7 +95,7 @@ paragraph."
(with-atomic-file-replacement news-file
(lambda (input output)
(rewrite-org-section input output
(make-regexp "^(\\*+).*new packages")
(make-regexp "^(\\*+) (.*) new packages")
(lambda (match port)
(let ((stars (match:substring match 1)))
(format port
@@ -105,7 +105,7 @@ paragraph."
(define (write-packages-updates news-file old new)
"Write to NEWS-FILE the list of packages upgraded between OLD and NEW."
(define important
'("gcc-toolchain" "glibc" "binutils" "gdb" ;toolchain
'("gcc" "glibc" "binutils" "gdb" ;toolchain
"shepherd" "linux-libre" "xorg-server" "cups" ;OS
"gnome" "xfce" "enlightenment" "lxde" "mate" ;desktop env.
"guile" "bash" "python" "python2" "perl" ;languages
@@ -141,7 +141,7 @@ paragraph."
(with-atomic-file-replacement news-file
(lambda (input output)
(rewrite-org-section input output
(make-regexp "^(\\*+).*package updates")
(make-regexp "^(\\*+) (.*) package updates")
(lambda (match port)
(let ((stars (match:substring match 1))
(lst (map (match-lambda
@@ -166,22 +166,16 @@ paragraph."
(string-append data-directory "/packages-"
version ".txt"))
(define (package<? p1 p2)
(string<? (package-full-name p1) (package-full-name p2)))
(let-values (((previous-version new-version)
(call-with-input-file news-file NEWS->versions)))
(format (current-error-port) "Updating NEWS for ~a to ~a...~%"
previous-version new-version)
(let* ((old (call-with-input-file (package-file previous-version)
read))
(all-packages/sorted (sort (fold-packages (lambda (p r)
(cons p r))
'())
package<?))
(new (map (lambda (p)
(cons (package-name p) (package-version p)))
all-packages/sorted)))
(new (fold-packages (lambda (p r)
(alist-cons (package-name p) (package-version p)
r))
'())))
(call-with-output-file (package-file new-version)
(lambda (port)
(pretty-print new port)))
+38 -108
View File
@@ -1,6 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2017-2018, 2025 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2020, 2025 Maxim Cournoyer <maxim@guixotic.coop>
;;; Copyright © 2017, 2018 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -25,25 +24,20 @@
;;; Code:
(use-modules (guix)
(guix ui)
(guix git-download)
(guix upstream)
(guix utils)
(guix base32)
(guix build utils)
(guix scripts hash)
(gnu packages package-management)
(ice-9 match)
(ice-9 popen)
(ice-9 regex)
(ice-9 textual-ports)
(srfi srfi-1)
(srfi srfi-2)
(srfi srfi-26))
(ice-9 match))
(define %top-srcdir
(string-append (current-source-directory) "/.."))
(define version-controlled?
(git-predicate %top-srcdir))
(define (package-definition-location)
"Return the source properties of the definition of the 'guix' package."
(call-with-input-file (location-file (package-location guix))
@@ -107,107 +101,43 @@ COMMIT."
(exp
(error "'guix' package definition is not as expected" exp)))))
(define (git-add-worktree directory commit)
"Create a new git worktree at DIRECTORY, detached on commit COMMIT."
(invoke "git" "worktree" "add" "--detach" directory commit))
(define (call-with-temporary-git-worktree commit proc)
"Execute PROC in the context of a temporary git worktree created from
COMMIT. PROC receives the temporary directory file name as an argument."
(call-with-temporary-directory
(lambda (tmp-directory)
(dynamic-wind
(lambda ()
#t)
(lambda ()
(git-add-worktree tmp-directory commit)
(proc tmp-directory))
(lambda ()
(invoke "git" "worktree" "remove" "--force" tmp-directory))))))
(define %guix-git-repo-push-url-regexp
"(git.guix.gnu.org|codeberg.org/guix|git@codeberg.org:guix)/guix(.git)? \\(push\\)")
(define (with-input-pipe-to-string prog . args)
(let* ((input-pipe (apply open-pipe* OPEN_READ prog args))
(output (get-string-all input-pipe))
(exit-val (status:exit-val (close-pipe input-pipe))))
(unless (zero? exit-val)
(error (format #f "Command ~s exited with non-zero exit status: ~s"
(string-join (cons prog args)) exit-val)))
(string-trim-both output)))
(define (find-origin-remote)
"Find the name of the git remote with the Guix git repo URL."
(and-let* ((remotes (string-split (with-input-pipe-to-string
"git" "remote" "-v")
#\newline))
(origin-entry (find (cut string-match
%guix-git-repo-push-url-regexp
<>)
remotes)))
(first (string-split origin-entry #\tab))))
(define (commit-already-pushed? remote commit)
"True if COMMIT is found in the REMOTE repository."
(not (string-null? (with-input-pipe-to-string
"git" "branch" "-r" "--contains" commit
(string-append remote "/master")))))
(define (keep-source-in-store store source)
"Add SOURCE to the store under the name that the 'guix' package expects."
;; Add SOURCE to the store, but this time under the real name used in the
;; 'origin'. This allows us to build the package without having to make a
;; real checkout; thus, it also works when working on a private branch.
(reload-module
(resolve-module '(gnu packages package-management)))
(let* ((source (add-to-store store
(origin-file-name (package-source guix))
#t "sha256" source
#:select? (git-predicate source)))
(root (store-path-package-name source)))
;; Add an indirect GC root for SOURCE in the current directory.
(false-if-exception (delete-file root))
(symlink source root)
(add-indirect-root store
(string-append (getcwd) "/" root))
(info (G_ "source code kept in ~a (GC root: ~a)~%")
source root)))
(define (main . args)
(match args
((commit version)
(with-directory-excursion %top-srcdir
(or (getenv "GUIX_ALLOW_ME_TO_USE_PRIVATE_COMMIT")
(let ((remote (find-origin-remote)))
(unless remote
(leave (G_ "Failed to find the origin git remote.~%")))
(commit-already-pushed? remote commit))
(leave (G_ "Commit ~a is not pushed upstream. Aborting.~%") commit))
(call-with-temporary-git-worktree commit
(lambda (tmp-directory)
(let* ((hash (nix-base32-string->bytevector
(string-trim-both
(with-output-to-string
(lambda ()
(guix-hash "-rx" tmp-directory))))))
(location (package-definition-location))
(old-hash (content-hash-value
(origin-hash (package-source guix)))))
(edit-expression location
(update-definition commit hash
#:old-hash old-hash
#:version version))
;; When GUIX_ALLOW_ME_TO_USE_PRIVATE_COMMIT is set, the sources are
;; added to the store. This is used as part of 'make release'.
(when (getenv "GUIX_ALLOW_ME_TO_USE_PRIVATE_COMMIT")
(with-store store
(keep-source-in-store store tmp-directory))))))))
(with-store store
(let* ((source (add-to-store store
"guix-checkout" ;dummy name
#t "sha256" %top-srcdir
#:select? version-controlled?))
(hash (query-path-hash store source))
(location (package-definition-location))
(old-hash (origin-sha256 (package-source guix))))
(edit-expression location
(update-definition commit hash
#:old-hash old-hash
#:version version))
;; Re-add SOURCE to the store, but this time under the real name used
;; in the 'origin'. This allows us to build the package without
;; having to make a real checkout; thus, it also works when working
;; on a private branch.
(reload-module
(resolve-module '(gnu packages package-management)))
(let* ((source (add-to-store store
(origin-file-name (package-source guix))
#t "sha256" source))
(root (store-path-package-name source)))
;; Add an indirect GC root for SOURCE in the current directory.
(false-if-exception (delete-file root))
(symlink source root)
(add-indirect-root store
(string-append (getcwd) "/" root))
(format #t "source code for commit ~a: ~a (GC root: ~a)~%"
commit source root)))))
((commit)
;; Automatically deduce the version and revision numbers.
(main commit #f))))
-90
View File
@@ -1,90 +0,0 @@
#! /bin/sh
# -*-scheme-*-
build_aux=$(dirname $0)
srcdir=$build_aux/..
export LC_ALL=en_US.UTF-8
export TZ=UTC0
exec guile --no-auto-compile -L $srcdir -C $srcdir -e main -s "$0" "$@"
!#
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; This program 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.
;;;
;;; This program is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;;;; Commentary:
;;;
;;; This script provides an xgettext wrapper to (re)set POT-Creation-Date from
;;; a Git timestamp. Test doing something like:
;;;
;;; build-aux/xgettext.scm --files-from=po/guix/POTFILES.in --default-domain=test
;;;
;;;; Code:
(use-modules (srfi srfi-1)
(srfi srfi-26)
(ice-9 curried-definitions)
(ice-9 match)
(ice-9 popen)
(ice-9 rdelim)
(guix build utils))
(define ((option? name) option)
(string-prefix? name option))
(define (get-option args name)
(let ((option (find (option? name) args)))
(and option
(substring option (string-length name)))))
(define (pipe-command command)
(let* ((port (apply open-pipe* OPEN_READ command))
(output (read-string port)))
(close-port port)
output))
;;;
;;; Entry point.
;;;
(define (main args)
(fluid-set! %default-port-encoding #f)
(let* ((files-from (get-option args "--files-from="))
(default-domain (get-option args "--default-domain="))
(directory (or (get-option args "--directory=") "."))
(xgettext (or (get-option args "--xgettext=") "xgettext"))
(xgettext-args (filter (negate (option? "--xgettext=")) args))
(command (match xgettext-args
((xgettext.scm args ...)
`(,xgettext ,@args))))
(result (apply system* command))
(status (/ result 256)))
(if (or (not (zero? status))
(not files-from))
(exit status)
(let* ((text (with-input-from-file files-from read-string))
(lines (string-split text #\newline))
(files (filter (negate (cute string-prefix? "#" <>)) lines))
(files (map (cute string-append directory "/" <>) files))
(git-command `("git" "log" "--pretty=format:%ci" "-n1" ,@files))
(timestamp (pipe-command git-command))
(source-date-epoch (or (getenv "SOURCE_DATE_EPOCH") "1"))
(timestamp (if (string-null? timestamp) source-date-epoch
timestamp))
(po-file (string-append default-domain ".po")))
(substitute* po-file
(("(\"POT-Creation-Date: )[^\\]*" all header)
(string-append header timestamp)))))))
+40 -37
View File
@@ -13,7 +13,7 @@ if test "x$guix_build_daemon" = "xyes"; then
GUIX_ASSERT_CXX11
AC_PROG_RANLIB
AC_CONFIG_HEADERS([nix/config.h])
AC_CONFIG_HEADER([nix/config.h])
dnl Use 64-bit file system calls so that we can support files > 2 GiB.
AC_SYS_LARGEFILE
@@ -34,37 +34,35 @@ if test "x$guix_build_daemon" = "xyes"; then
dnl Look for SQLite, a required dependency.
PKG_CHECK_MODULES([SQLITE3], [sqlite3 >= 3.6.19])
AC_DEFINE([NIX_VERSION], ["0.0.0"], [Fake Nix version number.])
AC_DEFINE_UNQUOTED([SYSTEM], ["$guix_system"],
[Guix host system type--i.e., platform and OS kernel tuple.])
case "$LIBGCRYPT_PREFIX" in
no)
LIBGCRYPT_CPPFLAGS=""
LIBGCRYPT_CFLAGS=""
;;
*)
LIBGCRYPT_CPPFLAGS="-I$LIBGCRYPT_PREFIX/include"
LIBGCRYPT_CFLAGS="-I$LIBGCRYPT_PREFIX/include"
;;
esac
case "$LIBGCRYPT_LIBDIR" in
no | "")
LIBGCRYPT_LIBS="-lgcrypt"
;;
*)
LIBGCRYPT_LDFLAGS="-L$LIBGCRYPT_LIBDIR"
LIBGCRYPT_LIBS="-L$LIBGCRYPT_LIBDIR -lgcrypt"
;;
esac
LIBGCRYPT_LIBS="-lgcrypt"
AC_SUBST([LIBGCRYPT_CPPFLAGS])
AC_SUBST([LIBGCRYPT_LDFLAGS])
AC_SUBST([LIBGCRYPT_CFLAGS])
AC_SUBST([LIBGCRYPT_LIBS])
save_CPPFLAGS="$CPPFLAGS"
save_CFLAGS="$CFLAGS"
save_LDFLAGS="$LDFLAGS"
save_LIBS="$LIBS"
CPPFLAGS="$CPPFLAGS $LIBGCRYPT_CPPFLAGS"
CFLAGS="$CFLAGS $LIBGCRYPT_CFLAGS"
LDFLAGS="$LDFLAGS $LIBGCRYPT_LDFLAGS"
LIBS="$LIBS $LIBGCRYPT_LIBS"
have_gcrypt=yes
AC_CHECK_LIB([gcrypt], [gcry_md_open], [:], [have_gcrypt=no])
@@ -72,14 +70,13 @@ if test "x$guix_build_daemon" = "xyes"; then
if test "x$have_gcrypt" != "xyes"; then
AC_MSG_ERROR([GNU libgcrypt not found; please install it.])
fi
CPPFLAGS="$save_CPPFLAGS"
CFLAGS="$save_CFLAGS"
LDFLAGS="$save_LDFLAGS"
LIBS="$save_LIBS"
dnl Chroot support.
AC_CHECK_FUNCS([chroot unshare])
AC_CHECK_HEADERS([sched.h sys/param.h sys/mount.h sys/syscall.h \
linux/close_range.h sys/prctl.h])
AC_CHECK_HEADERS([sched.h sys/param.h sys/mount.h sys/syscall.h])
if test "x$ac_cv_func_chroot" != "xyes"; then
AC_MSG_ERROR(['chroot' function missing, bailing out])
@@ -94,9 +91,19 @@ if test "x$guix_build_daemon" = "xyes"; then
dnl sched_setaffinity: to improve RPC locality.
dnl statvfs: to detect disk-full conditions.
dnl strsignal: for error reporting.
dnl statx: fine-grain 'stat' call, new in glibc 2.28.
AC_CHECK_FUNCS([lutimes lchown posix_fallocate sched_setaffinity \
statvfs nanosleep strsignal statx close_range])
statvfs nanosleep strsignal])
dnl Check whether the store optimiser can optimise symlinks.
AC_MSG_CHECKING([whether it is possible to create a link to a symlink])
ln -s bla tmp_link
if ln tmp_link tmp_link2 2> /dev/null; then
AC_MSG_RESULT(yes)
AC_DEFINE(CAN_LINK_SYMLINK, 1, [Whether link() works on symlinks.])
else
AC_MSG_RESULT(no)
fi
rm -f tmp_link tmp_link2
dnl Check for <locale>.
AC_LANG_PUSH(C++)
@@ -108,15 +115,17 @@ if test "x$guix_build_daemon" = "xyes"; then
dnl to do i686-linux builds on x86_64-linux machines.
AC_CHECK_HEADERS([sys/personality.h])
dnl Check for <linux/fs.h> (for immutable file support).
AC_CHECK_HEADERS([linux/fs.h])
dnl Determine the appropriate default list of substitute URLs (GnuTLS
dnl is required so we can default to 'https'.)
GUIX_SUBSTITUTE_URLS="https://bordeaux.guix.gnu.org https://ci.guix.gnu.org"
guix_substitute_urls="https://ci.guix.gnu.org"
AC_MSG_CHECKING([for default substitute URLs])
AC_MSG_RESULT([$GUIX_SUBSTITUTE_URLS])
AC_SUBST([GUIX_SUBSTITUTE_URLS])
AC_MSG_RESULT([$guix_substitute_urls])
AC_DEFINE_UNQUOTED([GUIX_SUBSTITUTE_URLS], ["$GUIX_SUBSTITUTE_URLS"],
AC_DEFINE_UNQUOTED([GUIX_SUBSTITUTE_URLS], ["$guix_substitute_urls"],
[Default list of substitute URLs used by 'guix-daemon'.])
dnl Check for Guile-SSH, which is required by 'guix offload'.
@@ -140,22 +149,16 @@ if test "x$guix_build_daemon" = "xyes"; then
GUIX_CHECK_LOCALSTATEDIR
case "x$host_os" in
x*linux*)
AC_CHECK_PROG([have_slirp4netns], [slirp4netns], [yes])
if test "x$have_slirp4netns" != "xyes"
then
AC_MSG_WARN([Slirp4netns not found; fixed-output chroot builds won't work without it.])
fi
;;
esac
AC_PATH_PROG([SLIRP4NETNS], [slirp4netns], [slirp4netns])
AC_DEFINE_UNQUOTED([SLIRP4NETNS], ["$SLIRP4NETNS"],
[Path to the slirp4netns program, if any.])
dnl needed for inspecting 64-bit system call arguments in seccomp's Berkeley
dnl Packet Filter VM, which only directly operates on 32-bit words.
AC_C_BIGENDIAN
AC_CONFIG_FILES([nix/scripts/list-runtime-roots],
[chmod +x nix/scripts/list-runtime-roots])
AC_CONFIG_FILES([nix/scripts/download],
[chmod +x nix/scripts/download])
AC_CONFIG_FILES([nix/scripts/substitute],
[chmod +x nix/scripts/substitute])
AC_CONFIG_FILES([nix/scripts/authenticate],
[chmod +x nix/scripts/authenticate])
AC_CONFIG_FILES([nix/scripts/offload],
[chmod +x nix/scripts/offload])
fi
AM_CONDITIONAL([HAVE_LIBBZ2], [test "x$HAVE_LIBBZ2" = "xyes"])
+75 -113
View File
@@ -1,31 +1,14 @@
# -*- Autoconf -*-
# Process this file with autoconf to produce a configure script.
#
# GNU Guix --- Functional package management for GNU
# Copyright © 2012-2021, 2022-2023, 2025 Ludovic Courtès <ludo@gnu.org>
# Copyright © 2013, 2016 Mark H Weaver <mhw@netris.org>
# Copyright © 2014-2016 Alex Kost <alezost@gmail.com>
# Copyright © 2014-2016 David Thompson <davet@gnu.org>
# Copyright © 2015-2016, 2018 Mathieu Lirzin <mthl@gnu.org>
# Copyright © 2015-2020 Mathieu Othacehe <m.othacehe@gmail.com>
# Copyright © 2016 Eric Le Bihan <eric.le.bihan.dev@free.fr>
# Copyright © 2016, 2018, 2020, 2022 Ricardo Wurmus <rekado@elephly.net>
# Copyright © 2017 Tobias Geerinckx-Rice <me@tobias.gr>
# Copyright © 2018 nikita <nikita@n0.is>
# Copyright © 2018, 2021 Julien Lepiller <julien@lepiller.eu>
# Copyright © 2017-2018 Eric Bavier <bavier@posteo.net>
# Copyright © 2020-2021, 2023-204 Maxim Cournoyer <maxim@guixotic.coop>
# Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
# Copyright © 2024 gemmaro <gemmaro.dev@gmail.com>
AC_PREREQ([2.69])
AC_PREREQ(2.68)
AC_INIT([GNU Guix],
[m4_esyscmd([build-aux/git-version-gen .tarball-version])],
[https://codeberg.org/guix/guix/issues/], [guix],
[bug-guix@gnu.org], [guix],
[https://www.gnu.org/software/guix/])
AC_CONFIG_AUX_DIR([build-aux])
AM_INIT_AUTOMAKE([1.14 gnu tar-ustar silent-rules subdir-objects \
AM_INIT_AUTOMAKE([1.14 gnu silent-rules subdir-objects \
color-tests parallel-tests -Woverride -Wno-portability])
# Enable silent rules by default.
@@ -38,58 +21,46 @@ dnl For the C++ code. This must be used early.
AC_USE_SYSTEM_EXTENSIONS
AM_GNU_GETTEXT([external])
AM_GNU_GETTEXT_VERSION([0.19.1])
AM_GNU_GETTEXT_VERSION([0.18.1])
GUIX_SYSTEM_TYPE
GUIX_ASSERT_SUPPORTED_SYSTEM
GUIX_CHANNEL_METADATA
AM_CONDITIONAL([CROSS_COMPILING], [test "x$cross_compiling" = "xyes"])
AC_ARG_WITH(store-dir,
AS_HELP_STRING([--with-store-dir=PATH],
AC_HELP_STRING([--with-store-dir=PATH],
[file name of the store (defaults to /gnu/store)]),
[storedir="$withval"],
[storedir="/gnu/store"])
AC_SUBST(storedir)
AC_ARG_WITH([bash-completion-dir],
AS_HELP_STRING([--with-bash-completion-dir=DIR],
AC_HELP_STRING([--with-bash-completion-dir=DIR],
[name of the Bash completion directory]),
[bashcompletiondir="$withval"],
[bashcompletiondir='${sysconfdir}/bash_completion.d'])
AC_SUBST([bashcompletiondir])
AC_ARG_WITH([zsh-completion-dir],
AS_HELP_STRING([--with-zsh-completion-dir=DIR],
AC_HELP_STRING([--with-zsh-completion-dir=DIR],
[name of the Zsh completion directory]),
[zshcompletiondir="$withval"],
[zshcompletiondir='${datadir}/zsh/site-functions'])
AC_SUBST([zshcompletiondir])
AC_ARG_WITH([fish-completion-dir],
AS_HELP_STRING([--with-fish-completion-dir=DIR],
AC_HELP_STRING([--with-fish-completion-dir=DIR],
[name of the Fish completion directory]),
[fishcompletiondir="$withval"],
[fishcompletiondir='${datadir}/fish/vendor_completions.d'])
AC_SUBST([fishcompletiondir])
AC_ARG_WITH([selinux-policy-dir],
AS_HELP_STRING([--with-selinux-policy-dir=DIR],
AC_HELP_STRING([--with-selinux-policy-dir=DIR],
[name of the SELinux policy directory]),
[selinux_policydir="$withval"],
[selinux_policydir='${datadir}/selinux/'])
AC_SUBST([selinux_policydir])
AC_ARG_WITH([apparmor-profile-dir],
AS_HELP_STRING([--with-apparmor-profile-dir=DIR],
[name of the AppArmor profile directory]),
[apparmor_profiledir="$withval"],
[apparmor_profiledir='${sysconfdir}/apparmor.d'])
AC_SUBST([apparmor_profiledir])
apparmor_profile_tunablesdir='${apparmor_profiledir}/tunables'
AC_SUBST([apparmor_profile_tunablesdir])
dnl Better be verbose.
AC_MSG_CHECKING([for the store directory])
AC_MSG_RESULT([$storedir])
@@ -99,16 +70,15 @@ AC_ARG_ENABLE([daemon],
[guix_build_daemon="$enableval"],
[guix_build_daemon="yes"])
dnl Prepare a version of $localstatedir & co. that does not contain references
dnl to shell variables. Also set some sane default directory variables for
dnl use with the Guix. This also causes localstatedir to be /var and
dnl sysconfdir to be /etc.
AC_PREFIX_DEFAULT()
guix_prefix="`eval echo $prefix | sed -e"s|NONE|$ac_default_prefix|g"`"
# Prepare a version of $localstatedir & co. that does not contain references
# to shell variables.
guix_prefix="`eval echo $prefix | sed -e"s|NONE|/usr/local|g"`"
guix_localstatedir="`eval echo $localstatedir | sed -e "s|NONE|$guix_prefix|g"`"
guix_sysconfdir="`eval echo $sysconfdir | sed -e "s|NONE|$guix_prefix|g"`"
guix_sbindir="`eval echo $sbindir | sed -e "s|NONE|$guix_prefix|g"`"
AC_SUBST([guix_localstatedir])
AC_SUBST([guix_sysconfdir])
AC_SUBST([guix_sbindir])
GUIX_CHECK_FILE_NAME_LIMITS([can_run_tests])
AM_CONDITIONAL([CAN_RUN_TESTS], [test "x$can_run_tests" = "xyes"])
@@ -123,19 +93,12 @@ m4_pattern_forbid([^GUIX_])
dnl Search for 'guile' and 'guild'. This macro defines
dnl 'GUILE_EFFECTIVE_VERSION'.
GUILE_PKG([3.0])
GUILE_PKG([2.2])
GUILE_PROGS
if test "x$GUILD" = "x"; then
AC_MSG_ERROR(['guild' binary not found; please check your Guile installation.])
AC_MSG_ERROR(['guild' binary not found; please check your guile-2.x installation.])
fi
dnl (guix ui), notably, requires 'default-optimization-level' added in 3.0.3.
dnl (guix serialization) requires 'bytevector-slice' added in 3.0.9.
PKG_CHECK_MODULES([GUILE], [guile-3.0 >= 3.0.9])
dnl Get CFLAGS and LDFLAGS for libguile.
GUILE_FLAGS
dnl Installation directories for .scm and .go files.
guilemoduledir="${datarootdir}/guile/site/$GUILE_EFFECTIVE_VERSION"
guileobjectdir="${libdir}/guile/$GUILE_EFFECTIVE_VERSION/site-ccache"
@@ -155,12 +118,9 @@ if test "x$have_guile_git" != "xyes"; then
AC_MSG_ERROR([Guile-Git is missing; please install it.])
fi
dnl Check Guile-Git version resp. required recently added symbol.
GUILE_MODULE_REQUIRED_EXPORT([(git)], [graph-descendant?])
dnl Check for Guile-JSON.
GUIX_CHECK_GUILE_JSON
if test "x$guix_cv_have_recent_guile_json" != "xyes"; then
GUILE_MODULE_AVAILABLE([have_guile_json], [(json)])
if test "x$have_guile_json" != "xyes"; then
AC_MSG_ERROR([Guile-JSON is missing; please install it.])
fi
@@ -170,46 +130,11 @@ if test "x$guix_cv_have_recent_guile_sqlite3" != "xyes"; then
AC_MSG_ERROR([A recent Guile-SQLite3 could not be found; please install it.])
fi
GUIX_CHECK_GUILE_GCRYPT
if test "x$guix_cv_have_recent_guile_gcrypt" != "xyes"; then
AC_MSG_ERROR([A recent Guile-Gcrypt could not be found; please install it.])
GUILE_MODULE_AVAILABLE([have_guile_gcrypt], [(gcrypt hash)])
if test "x$have_guile_gcrypt" != "xyes"; then
AC_MSG_ERROR([Guile-Gcrypt could not be found; please install it.])
fi
GUIX_CHECK_GUILE_GIT
if test "x$guix_cv_have_recent_guile_git" != "xyes"; then
AC_MSG_ERROR([A recent Guile-Git could not be found; please install it.])
fi
dnl Check for the optional Guile-Lib.
GUILE_MODULE_EXPORTS([have_guile_lib], [(htmlprag)], [%strict-tokenizer?])
AM_CONDITIONAL([HAVE_GUILE_LIB], [test "x$have_guile_lib" = "xyes"])
AM_COND_IF(HAVE_GUILE_LIB,,
[AC_MSG_WARN([The Guile-Lib requirement was not satisfied (>= 0.2.7);
Some features such as the Go importer will not be usable.])])
dnl Check for Guile-zlib.
GUIX_CHECK_GUILE_ZLIB
if test "x$guix_cv_have_recent_guile_zlib" != "xyes"; then
AC_MSG_ERROR([A recent Guile-zlib could not be found; please install it.])
fi
dnl Check for Guile-lzlib.
GUILE_MODULE_AVAILABLE([have_guile_lzlib], [(lzlib)])
if test "x$have_guile_lzlib" != "xyes"; then
AC_MSG_ERROR([Guile-lzlib is missing; please install it.])
fi
dnl Check for Guile-semver.
GUILE_MODULE_AVAILABLE([have_guile_semver], [(semver)])
if test "x$have_guile_semver" != "xyes"; then
AC_MSG_ERROR([Guile-semver is missing; please install it.])
fi
dnl Check for Guile-Avahi.
GUILE_MODULE_AVAILABLE([have_guile_avahi], [(avahi)])
AM_CONDITIONAL([HAVE_GUILE_AVAHI],
[test "x$have_guile_avahi" = "xyes"])
dnl Guile-newt is used by the graphical installer.
GUILE_MODULE_AVAILABLE([have_guile_newt], [(newt)])
@@ -228,6 +153,10 @@ AM_CONDITIONAL([ENABLE_INSTALLER],
dnl Make sure we have a full-fledged Guile.
GUIX_ASSERT_GUILE_FEATURES([regex posix socket net-db threads])
dnl Make sure we don't suffer from the bug in 'equal?' wrt. syntax objects
dnl found in 2.2.1. See <https://bugs.gnu.org/29903>.
GUIX_ASSERT_SYNTAX_OBJECT_EQUAL
AC_PROG_SED
dnl Decompressors, for use by the substituter and other modules.
@@ -238,12 +167,40 @@ AC_SUBST([GZIP])
AC_SUBST([BZIP2])
AC_SUBST([XZ])
dnl Git is now required for the "builtin:git-download" derivation builder.
AC_PATH_PROG([GIT], [git])
if test "x$GIT" = "x"; then
AC_MSG_ERROR([Git is missing; please install it.])
AC_ARG_WITH([nix-prefix],
[AS_HELP_STRING([--with-nix-prefix=DIR],
[search for Nix in DIR (for testing purposes and '--disable-daemon' builds)])],
[case "$withval" in
yes|no) ;;
*)
NIX_PREFIX="$withval"
PATH="$NIX_PREFIX/bin:$PATH"; export PATH
AC_SUBST([NIX_PREFIX])
;;
esac],
[])
AC_PATH_PROG([NIX_HASH], [nix-hash])
if test "x$guix_build_daemon$NIX_HASH" = "xno"; then
AC_MSG_ERROR([Nix programs not found; please install Nix or use `--with-nix-prefix'.])
fi
AC_ARG_WITH([nixpkgs],
[AS_HELP_STRING([--with-nixpkgs=DIR],
[search for Nixpkgs in DIR (for testing purposes only)])],
[case "$withval" in
yes|no) AC_MSG_ERROR([Please use `--with-nixpkgs=DIR'.]);;
*) NIXPKGS="$withval";;
esac],
[])
AC_MSG_CHECKING([for Nixpkgs source tree])
if test -f "$NIXPKGS/default.nix"; then
AC_MSG_RESULT([$NIXPKGS])
AC_SUBST([NIXPKGS])
else
AC_MSG_RESULT([not found])
fi
AC_SUBST([GIT])
LIBGCRYPT_LIBDIR="no"
LIBGCRYPT_PREFIX="no"
@@ -282,6 +239,17 @@ esac
AC_SUBST([LIBGCRYPT_PREFIX])
AC_SUBST([LIBGCRYPT_LIBDIR])
dnl Library name of zlib suitable for 'dynamic-link'.
GUIX_LIBZ_LIBDIR([libz_libdir])
if test "x$libz_libdir" = "x"; then
LIBZ="libz"
else
LIBZ="$libz_libdir/libz"
fi
AC_MSG_CHECKING([for zlib's shared library name])
AC_MSG_RESULT([$LIBZ])
AC_SUBST([LIBZ])
dnl Check for Guile-SSH, for the (guix ssh) module.
GUIX_CHECK_GUILE_SSH
AM_CONDITIONAL([HAVE_GUILE_SSH],
@@ -299,17 +267,12 @@ dnl Manual pages.
AM_MISSING_PROG([HELP2MAN], [help2man])
dnl Documentation translation.
AM_MISSING_PROG([PO4A], [po4a])
AM_MISSING_PROG([PO4A_TRANSLATE], [po4a-translate])
AM_MISSING_PROG([PO4A_UPDATEPO], [po4a-updatepo])
AC_MSG_CHECKING([if building from git])
if test -e .git; then
in_git_p=yes
else
in_git_p=no
fi
AC_MSG_RESULT([$in_git_p])
AM_CONDITIONAL([in_git_p],
[test "x$in_git_p" = "xyes"])
dnl Emacs (optional), for 'etc/indent-package.el'.
AC_PATH_PROG([EMACS], [emacs], [/usr/bin/emacs])
AC_SUBST([EMACS])
case "$storedir" in
/gnu/store)
@@ -324,12 +287,11 @@ AC_CONFIG_FILES([Makefile
po/guix/Makefile.in
po/packages/Makefile.in
etc/guix-daemon.cil
etc/apparmor.d/tunables/guix
guix/config.scm])
AC_CONFIG_FILES([etc/committer.scm], [chmod +x etc/committer.scm])
AC_CONFIG_FILES([test-env:build-aux/test-env.in], [chmod +x test-env])
AC_CONFIG_FILES([pre-inst-env:build-aux/pre-inst-env.in],
[chmod +x pre-inst-env])
AC_CONFIG_FILES([etc/indent-code.el], [chmod +x etc/indent-code.el])
AC_OUTPUT
View File
+141 -1117
View File
File diff suppressed because it is too large Load Diff
+219 -3001
View File
File diff suppressed because it is too large Load Diff
+5 -4
View File
@@ -6,7 +6,8 @@
;; Augment the package definition of GDB with the build tools
;; needed when developing GDB (and which are not needed when
;; simply installing it.)
(package
(inherit gdb)
(native-inputs (modify-inputs (package-native-inputs gdb)
(prepend autoconf-2.69 automake texinfo))))
(package (inherit gdb)
(native-inputs `(("autoconf" ,autoconf-2.64)
("automake" ,automake)
("texinfo" ,texinfo)
,@(package-native-inputs gdb))))
+2 -2
View File
@@ -6,7 +6,7 @@
@display
Copyright @copyright{} 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
@uref{https://fsf.org/}
@uref{http://fsf.org/}
Everyone is permitted to copy and distribute verbatim copies
of this license document, but changing it is not allowed.
@@ -414,7 +414,7 @@ The Free Software Foundation may publish new, revised versions
of the GNU Free Documentation License from time to time. Such new
versions will be similar in spirit to the present version, but may
differ in detail to address new problems or concerns. See
@uref{https://www.gnu.org/copyleft/}.
@uref{http://www.gnu.org/copyleft/}.
Each version of the License is given a distinguishing version number.
If the Document specifies that a particular numbered version of this
File diff suppressed because it is too large Load Diff
+5507 -37064
View File
File diff suppressed because it is too large Load Diff
-27
View File
@@ -1,27 +0,0 @@
(use-modules (gnu home)
(gnu home services)
(gnu home services shells)
(gnu services)
(gnu packages admin)
(guix gexp))
(home-environment
(packages (list htop))
(services
(append (list
(service home-bash-service-type
(home-bash-configuration
(guix-defaults? #t)
(variables
`(("HISTFILE" . "$XDG_CACHE_HOME/.bash_history")
("HISTSIZE" . "50000")))))
(simple-service 'test-config
home-xdg-configuration-files-service-type
(list `("test.conf"
,(plain-file "tmp-file.txt"
"the content of
~/.config/test.conf")))))
%base-home-services)))
+42 -162
View File
@@ -1,62 +1,10 @@
# htmlxref.cnf - reference file for free Texinfo manuals on the web.
# Modified by Ludovic Courtès <ludo@gnu.org> for the GNU Guix manual.
# Further modified by Tomas Volf <~@wolfsden.cz>.
htmlxrefversion=2026-02-23.07; # UTC
htmlxrefversion=2019-05-04.20; # UTC
# Override URLs of manuals provided by the Documentation Center.
DOCUMENTATION_CENTER = https://doc.guix.gnu.org
bash mono ${DOCUMENTATION_CENTER}/bash/latest/en/bash.html
bash node ${DOCUMENTATION_CENTER}/bash/latest/en/html_node
binutils mono ${DOCUMENTATION_CENTER}/binutils/latest/en/binutils.html
binutils node ${DOCUMENTATION_CENTER}/binutils/latest/en/html_node
cuirass mono ${DOCUMENTATION_CENTER}/cuirass/latest/en/cuirass.html
cuirass node ${DOCUMENTATION_CENTER}/cuirass/latest/en/html_node
emacs-guix mono ${DOCUMENTATION_CENTER}/emacs-guix/latest/en/emacs-guix.html
emacs-guix node ${DOCUMENTATION_CENTER}/emacs-guix/latest/en/html_node
fibers mono ${DOCUMENTATION_CENTER}/fibers/latest/en/fibers.html
fibers node ${DOCUMENTATION_CENTER}/fibers/latest/en/html_node
gash mono ${DOCUMENTATION_CENTER}/gash/latest/en/gash.html
gash node ${DOCUMENTATION_CENTER}/gash/latest/en/html_node
gcrypt mono ${DOCUMENTATION_CENTER}/gcrypt/latest/en/gcrypt.html
gcrypt node ${DOCUMENTATION_CENTER}/gcrypt/latest/en/html_node
gdb mono ${DOCUMENTATION_CENTER}/gdb/latest/en/gdb.html
gdb node ${DOCUMENTATION_CENTER}/gdb/latest/en/html_node
geiser mono ${DOCUMENTATION_CENTER}/geiser/latest/en/geiser.html
geiser node ${DOCUMENTATION_CENTER}/geiser/latest/en/html_node
grub mono ${DOCUMENTATION_CENTER}/grub/latest/en/grub.html
grub node ${DOCUMENTATION_CENTER}/grub/latest/en/html_node
guile-avahi mono ${DOCUMENTATION_CENTER}/guile-avahi/latest/en/guile-avahi.html
guile-avahi node ${DOCUMENTATION_CENTER}/guile-avahi/latest/en/html_node
guile-gcrypt mono ${DOCUMENTATION_CENTER}/guile-gcrypt/latest/en/guile-gcrypt.html
guile-gcrypt node ${DOCUMENTATION_CENTER}/guile-gcrypt/latest/en/html_node
guile-gnutls mono ${DOCUMENTATION_CENTER}/guile-gnutls/latest/en/guile-gnutls.html
guile-gnutls node ${DOCUMENTATION_CENTER}/guile-gnutls/latest/en/html_node
guile-library mono ${DOCUMENTATION_CENTER}/guile-library/latest/en/guile-library.html
guile-library node ${DOCUMENTATION_CENTER}/guile-library/latest/en/html_node
guile mono ${DOCUMENTATION_CENTER}/guile/latest/en/guile.html
guile-netlink mono ${DOCUMENTATION_CENTER}/guile-netlink/latest/en/guile-netlink.html
guile-netlink node ${DOCUMENTATION_CENTER}/guile-netlink/latest/en/html_node
guile node ${DOCUMENTATION_CENTER}/guile/latest/en/html_node
guile-ssh mono ${DOCUMENTATION_CENTER}/guile-ssh/latest/en/guile-ssh.html
guile-ssh node ${DOCUMENTATION_CENTER}/guile-ssh/latest/en/html_node
inetutils mono ${DOCUMENTATION_CENTER}/inetutils/latest/en/inetutils.html
inetutils node ${DOCUMENTATION_CENTER}/inetutils/latest/en/html_node
libc mono ${DOCUMENTATION_CENTER}/libc/latest/en/libc.html
libc node ${DOCUMENTATION_CENTER}/libc/latest/en/html_node
mes mono ${DOCUMENTATION_CENTER}/mes/latest/en/mes.html
mes node ${DOCUMENTATION_CENTER}/mes/latest/en/html_node
r5rs mono ${DOCUMENTATION_CENTER}/r5rs/latest/en/r5rs.html
r5rs node ${DOCUMENTATION_CENTER}/r5rs/latest/en/html_node
recutils mono ${DOCUMENTATION_CENTER}/recutils/latest/en/recutils.html
recutils node ${DOCUMENTATION_CENTER}/recutils/latest/en/html_node
shepherd mono ${DOCUMENTATION_CENTER}/shepherd/latest/en/shepherd.html
shepherd node ${DOCUMENTATION_CENTER}/shepherd/latest/en/html_node
# Copyright 2010-2020, 2022 Free Software Foundation, Inc.
#
# Copyright 2010, 2011, 2012, 2013, 2014, 2015, 2019 Free Software Foundation, Inc.
#
# Copying and distribution of this file, with or without modification,
# are permitted in any medium without royalty provided the copyright
# notice and this notice are preserved.
@@ -75,10 +23,10 @@ shepherd node ${DOCUMENTATION_CENTER}/shepherd/latest/en/html_node
# - follow the naming convention for nodes described at
# http://www.gnu.org/software/texinfo/manual/texinfo/html_node/HTML-Xref.html
# This is what makeinfo and texi2html implement.
#
#
# Unless the above criteria are met, it's not possible to generate
# reliable cross-manual references.
#
#
# For information on automatically generating all the useful formats for
# a manual to put on the web, see
# http://www.gnu.org/prep/maintain/html_node/Manuals-on-Web-Pages.html.
@@ -120,12 +68,12 @@ autogen node ${GS}/autoconf/manual/html_node/
automake mono ${GS}/automake/manual/automake.html
automake node ${GS}/automake/manual/html_node/
avl node http://adtinfo.org/libavl.html/
avl node http://www.stanford.edu/~blp/avl/libavl.html/
bash mono ${GS}/bash/manual/bash.html
bash node ${GS}/bash/manual/html_node/
BINUTILS = https://sourceware.org/binutils/docs
BINUTILS = http://sourceware.org/binutils/docs
binutils node ${BINUTILS}/binutils/
as node ${BINUTILS}/as/
bfd node ${BINUTILS}/bfd/
@@ -162,21 +110,13 @@ cpio node ${GS}/cpio/manual/html_node/
cssc node ${GS}/cssc/manual/
CUIRASS = ${GS}/guix/cuirass/manual
cuirass mono ${CUIRASS}/cuirass.html
cuirass node ${CUIRASS}/html_node/
CVS = ${GS}/trans-coord/manual
cvs mono ${CVS}/cvs/cvs.html
cvs node ${CVS}/cvs/html_node/
#cvs cannot be handled here; see http://ximbiot.com/cvs/manual.
ddd mono ${GS}/ddd/manual/html_mono/ddd.html
ddrescue mono ${GS}/ddrescue/manual/ddrescue_manual.html
dejagnu node ${GS}/dejagnu/manual/
DICO = https://puszcza.gnu.org.ua/software/dico/manual
DICO = http://puszcza.gnu.org.ua/software/dico/manual
dico mono ${DICO}/dico.html
dico chapter ${DICO}/html_chapter/
dico section ${DICO}/html_section/
@@ -185,9 +125,6 @@ dico node ${DICO}/html_node/
diffutils mono ${GS}/diffutils/manual/diffutils
diffutils node ${GS}/diffutils/manual/html_node/
dmd mono ${GS}/dmd/manual/dmd
dmd node ${GS}/dmd/manual/html_node/
ed mono ${GS}/ed/manual/ed_manual.html
EMACS = ${GS}/emacs/manual
@@ -230,9 +167,6 @@ emacs node ${EMACS}/html_node/emacs/
eshell mono ${EMACS}/html_mono/eshell.html
eshell node ${EMACS}/html_node/eshell/
#
eww mono ${EMACS}/html_mono/eww.html
eww node ${EMACS}/html_node/eww/
#
flymake mono ${EMACS}/html_mono/flymake.html
flymake node ${EMACS}/html_node/flymake/
#
@@ -242,9 +176,6 @@ emacs node ${EMACS}/html_node/emacs/
idlwave mono ${EMACS}/html_mono/idlwave.html
idlwave node ${EMACS}/html_node/idlwave/
#
info mono ${EMACS}/html_mono/info.html
info node ${EMACS}/html_node/info/
#
message mono ${EMACS}/html_mono/message.html
message node ${EMACS}/html_node/message/
#
@@ -303,7 +234,8 @@ find node ${GS}/findutils/manual/html_node/find_html
findutils mono ${GS}/findutils/manual/html_mono/find.html
findutils node ${GS}/findutils/manual/html_node/find_html
flex node https://westes.github.io/flex/manual/
FLEX = http://flex.sourceforge.net
flex node ${FLEX}/manual/
gama mono ${GS}/gama/manual/gama.html
gama node ${GS}/gama/manual/html_node/
@@ -317,13 +249,13 @@ gawk node ${GAWK}/html_node/
gcal mono ${GS}/gcal/manual/gcal.html
gcal node ${GS}/gcal/manual/html_node/
GCC = https://gcc.gnu.org/onlinedocs
GCC = http://gcc.gnu.org/onlinedocs
gcc node ${GCC}/gcc/
cpp node ${GCC}/cpp/
gcj node ${GCC}/gcj/
gfortran node ${GCC}/gfortran/
gnat_rm node ${GCC}/gnat_rm/
gnat_ugn node ${GCC}/gnat_ugn/
gnat_ugn_unw node ${GCC}/gnat_ugn_unw/
libgomp node ${GCC}/libgomp/
libstdc++ node ${GCC}/libstdc++/
#
@@ -333,7 +265,7 @@ gcc node ${GCC}/gcc/
gnat-style node ${GCC}/gnat-style/
libiberty node ${GCC}/libiberty/
GDB = https://sourceware.org/gdb/current/onlinedocs
GDB = http://sourceware.org/gdb/current/onlinedocs
gdb node ${GDB}/gdb/
stabs node ${GDB}/stabs/
@@ -343,23 +275,20 @@ gdbm chapter ${GDBM}/html_chapter/
gdbm section ${GDBM}/html_section/
gdbm node ${GDBM}/html_node/
# XXX: These are actually pages created by texi2html, so no quite following
# the expected naming scheme.
geiser chapter http://geiser.nongnu.org/
gettext mono ${GS}/gettext/manual/gettext.html
gettext node ${GS}/gettext/manual/html_node/
gforth node https://www.complang.tuwien.ac.at/forth/gforth/Docs-html/
# Also found at:
# https://mirrors.edge.kernel.org/pub/software/scm/git/docs/user-manual.html
# https://git.github.io/htmldocs/user-manual.html
git mono https://git-scm.com/docs/user-manual
gforth node http://www.complang.tuwien.ac.at/forth/gforth/Docs-html/
global mono ${GS}/global/manual/global.html
gmediaserver node ${GS}/gmediaserver/manual/
gmp node https://www.gmplib.org/manual/
gmp node http://www.gmplib.org/manual/
gnu-arch node ${GS}/gnu-arch/tutorial/
@@ -382,7 +311,7 @@ gnun node ${GNUN}/gnun/html_node/
web-trans mono ${GNUN}/web-trans/web-trans.html
web-trans node ${GNUN}/web-trans/html_node/
GNUPG = https://www.gnupg.org/documentation/manuals
GNUPG = http://www.gnupg.org/documentation/manuals
gnupg node ${GNUPG}/gnupg/
dirmngr node ${GNUPG}/dirmngr/
gcrypt node ${GNUPG}/gcrypt/
@@ -402,8 +331,8 @@ GNUSTANDARDS = ${G}/prep
standards mono ${GNUSTANDARDS}/standards/standards.html
standards node ${GNUSTANDARDS}/standards/html_node/
gnutls mono ${GS}/gnutls/manual/gnutls.html
gnutls node ${GS}/gnutls/manual/html_node/
gnutls mono http://gnutls.org/manual/gnutls.html
gnutls node http://gnutls.org/manual/html_node/
gnutls-guile mono http://gnutls.org/manual/gnutls-guile.html
gnutls-guile node http://gnutls.org/manual/gnutls-guile/
@@ -461,55 +390,17 @@ GUILE_GNOME = ${GS}/guile-gnome/docs
guile-gtk node ${GS}/guile-gtk/docs/guile-gtk/
guile-netlink mono https://git.lepiller.eu/guile-netlink/manual/manual.html
guile-rpc mono ${GS}/guile-rpc/manual/guile-rpc.html
guile-rpc node ${GS}/guile-rpc/manual/html_node/
GUIX_ROOT = https://guix.gnu.org
GUIX = ${GUIX_ROOT}/manual/devel
guix.de mono ${GUIX}/de/guix.de.html
guix.de node ${GUIX}/de/html_node/
guix.es mono ${GUIX}/es/guix.es.html
guix.es node ${GUIX}/es/html_node/
guix.fr mono ${GUIX}/fr/guix.fr.html
guix.fr node ${GUIX}/fr/html_node/
guix.it mono ${GUIX}/it/guix.it.html
guix.it node ${GUIX}/it/html_node/
guix.pt_BR mono ${GUIX}/pt-br/guix.pt_BR.html
guix.pt_BR node ${GUIX}/pt-br/html_node/
guix.ru mono ${GUIX}/ru/guix.ru.html
guix.ru node ${GUIX}/ru/html_node/
guix.zh_CN mono ${GUIX}/zh-cn/guix.zh_CN.html
guix.zh_CN node ${GUIX}/zh-cn/html_node/
guix mono ${GUIX}/en/guix.html
guix node ${GUIX}/en/html_node/
GUIX_COOKBOOK = ${GUIX_ROOT}/cookbook
guix-cookbook.de mono ${GUIX_COOKBOOK}/de/guix-cookbook.de.html
guix-cookbook.de node ${GUIX_COOKBOOK}/de/html_node/
guix-cookbook.es mono ${GUIX_COOKBOOK}/es/guix-cookbook.de.html
guix-cookbook.es node ${GUIX_COOKBOOK}/es/html_node/
guix-cookbook.fr mono ${GUIX_COOKBOOK}/fr/guix-cookbook.fr.html
guix-cookbook.fr node ${GUIX_COOKBOOK}/fr/html_node/
guix-cookbook.it mono ${GUIX_COOKBOOK}/it/guix-cookbook.it.html
guix-cookbook.it node ${GUIX_COOKBOOK}/it/html_node/
guix-cookbook.ko mono ${GUIX_COOKBOOK}/ko/guix-cookbook.ko.html
guix-cookbook.ko node ${GUIX_COOKBOOK}/ko/html_node/
guix-cookbook.pt_BR mono ${GUIX_COOKBOOK}/pt-br/guix-cookbook.pt_BR.html
guix-cookbook.pt_BR node ${GUIX_COOKBOOK}/pt-br/html_node/
guix-cookbook.ru mono ${GUIX_COOKBOOK}/ru/guix-cookbook.ru.html
guix-cookbook.ru node ${GUIX_COOKBOOK}/ru/html_node/
guix-cookbook.sk mono ${GUIX_COOKBOOK}/sk/guix-cookbook.sk.html
guix-cookbook.sk node ${GUIX_COOKBOOK}/sk/html_node/
guix-cookbook.sv mono ${GUIX_COOKBOOK}/sv/guix-cookbook.sv.html
guix-cookbook.sv node ${GUIX_COOKBOOK}/sv/html_node/
guix-cookbook.ta mono ${GUIX_COOKBOOK}/ta/guix-cookbook.ta.html
guix-cookbook.ta node ${GUIX_COOKBOOK}/ta/html_node/
guix-cookbook mono ${GUIX_COOKBOOK}/en/guix-cookbook.html
guix-cookbook node ${GUIX_COOKBOOK}/en/html_node/
guix-cookbook.zh_CN mono ${GUIX_COOKBOOK}/zh-cn/guix-cookbook.zh_CN.html
guix-cookbook.zh_CN node ${GUIX_COOKBOOK}/zh-cn/html_node/
guix.de mono ${GS}/guix/manual/de/guix.html
guix.de node ${GS}/guix/manual/de/html_node/
guix.es mono ${GS}/guix/manual/es/guix.html
guix.es node ${GS}/guix/manual/es/html_node/
guix.fr mono ${GS}/guix/manual/fr/guix.html
guix.fr node ${GS}/guix/manual/fr/html_node/
guix mono ${GS}/guix/manual/en/guix.html
guix node ${GS}/guix/manual/en/html_node/
gv mono ${GS}/gv/manual/gv.html
gv node ${GS}/gv/manual/html_node/
@@ -604,21 +495,15 @@ mcron node ${GS}/mcron/manual/html_node/
mdk mono ${GS}/mdk/manual/mdk.html
mdk node ${GS}/mdk/manual/html_node/
METAEXCHANGE = https://ftp.gwdg.de/pub/gnu2/iwfmdh/doc/texinfo
METAEXCHANGE = http://ftp.gwdg.de/pub/gnu2/iwfmdh/doc/texinfo
iwf_mh node ${METAEXCHANGE}/iwf_mh.html
scantest node ${METAEXCHANGE}/scantest.html
mes mono ${GS}/mes/manual/mes.html
mes node ${GS}/mes/manual/html_node/
MIT_SCHEME = ${GS}/mit-scheme/documentation/stable
mit-scheme-ref mono ${MIT_SCHEME}/mit-scheme-ref.html
MIT_SCHEME = ${GS}/mit-scheme/documentation
mit-scheme-ref node ${MIT_SCHEME}/mit-scheme-ref/
mit-scheme-user mono ${MIT_SCHEME}/mit-scheme-user.html
mit-scheme-user node ${MIT_SCHEME}/mit-scheme-user/
sos mono ${MIT_SCHEME}/mit-scheme-sos.html
sos node ${MIT_SCHEME}/mit-scheme-sos/
mit-scheme-imail mono ${MIT_SCHEME}/mit-scheme-imail.html
mit-scheme-imail node ${MIT_SCHEME}/mit-scheme-imail/
moe mono ${GS}/moe/manual/moe_manual.html
@@ -630,9 +515,9 @@ mpfr mono http://www.mpfr.org/mpfr-current/mpfr.html
mtools mono ${GS}/mtools/manual/mtools.html
myserver mono http://www.myserverproject.net/doc.php
myserver node http://www.myserverproject.net/documentation/
nano mono https://www.nano-editor.org/dist/latest/nano.html
nano mono http://www.nano-editor.org/dist/latest/nano.html
nettle chapter http://www.lysator.liu.se/~nisse/nettle/nettle.html
@@ -665,7 +550,7 @@ pspp node ${GS}/pspp/manual/html_node/
pyconfigure mono ${GS}/pyconfigure/manual/pyconfigure.html
pyconfigure node ${GS}/pyconfigure/manual/html_node/
R = https://cran.r-project.org/doc/manuals
R = http://cran.r-project.org/doc/manuals
R-intro mono ${R}/R-intro.html
R-lang mono ${R}/R-lang.html
R-exts mono ${R}/R-exts.html
@@ -676,7 +561,7 @@ R = https://cran.r-project.org/doc/manuals
rcs mono ${GS}/rcs/manual/rcs.html
rcs node ${GS}/rcs/manual/html_node/
READLINE = https://tiswww.cwru.edu/php/chet/readline
READLINE = http://cnswww.cns.cwru.edu/php/chet/readline
readline mono ${READLINE}/readline.html
rluserman mono ${READLINE}/rluserman.html
history mono ${READLINE}/history.html
@@ -728,15 +613,12 @@ sqltutor node ${GS}/sqltutor/manual/html_node/
src-highlite mono ${GS}/src-highlite/source-highlight.html
stow mono ${GS}/stow/manual/stow.html
stow node ${GS}/stow/manual/html_node/
swbis mono ${GS}/swbis/manual.html
tar mono ${GS}/tar/manual/tar.html
tar chapter ${GS}/tar/manual/html_chapter/
tar section ${GS}/tar/manual/html_section/
tar node ${GS}/tar/manual/html_node/
tar node ${GS}/autoconf/manual/html_node/
teseq mono ${GS}/teseq/teseq.html
teseq node ${GS}/teseq/html_node/
@@ -744,6 +626,9 @@ teseq node ${GS}/teseq/html_node/
TEXINFO = ${GS}/texinfo/manual
texinfo mono ${TEXINFO}/texinfo/texinfo.html
texinfo node ${TEXINFO}/texinfo/html_node/
#
info mono ${TEXINFO}/info/info.html
info node ${TEXINFO}/info/html_node/
#
info-stnd mono ${TEXINFO}/info-stnd/info-stnd.html
info-stnd node ${TEXINFO}/info-stnd/html_node/
@@ -771,7 +656,7 @@ xboard node ${GS}/xboard/manual/html_node/
# emacs-page
# Free TeX-related Texinfo manuals on tug.org.
T = https://tug.org/texinfohtml
T = http://tug.org/texinfohtml
dvipng mono ${T}/dvipng.html
dvips mono ${T}/dvips.html
@@ -781,14 +666,9 @@ latex2e mono ${T}/latex2e.html
tlbuild mono ${T}/tlbuild.html
web2c mono ${T}/web2c.html
ELPA = https://elpa.gnu.org
ELPA_DOC = ${ELPA}/packages/doc
debbugs-ug mono ${ELPA_DOC}/debbugs-ug.html
# Local Variables:
# eval: (add-hook 'write-file-functions 'time-stamp)
# eval: (add-hook 'write-file-hooks 'time-stamp)
# time-stamp-start: "htmlxrefversion="
# time-stamp-format: "%:y-%02m-%02d.%02H"
# time-stamp-time-zone: "UTC"
+26 -26
View File
@@ -1,7 +1,7 @@
# Obtained by running "nix-store --graph" on the first GCC derivation.
digraph G {
"/nix/store/x60397za40lx0n88f51a2csfdq5xvb19-gcc-bootstrap-0.drv" [label = "gcc-bootstrap-0.drv", fontname = "dejavu sans", shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/x60397za40lx0n88f51a2csfdq5xvb19-gcc-bootstrap-0.drv" [label = "gcc-bootstrap-0.drv", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/3iawic1z95112yfz5y9xdp66qbxxr8l1-tar" -> "/nix/store/x60397za40lx0n88f51a2csfdq5xvb19-gcc-bootstrap-0.drv" [color = "black"];
"/nix/store/4sv9xhcjap6byca130fzpzzjalb7iixv-glibc-bootstrap-0.drv" -> "/nix/store/x60397za40lx0n88f51a2csfdq5xvb19-gcc-bootstrap-0.drv" [color = "red"];
"/nix/store/8cc81w6m04csm52y247xj3gydrbz2niv-xz" -> "/nix/store/x60397za40lx0n88f51a2csfdq5xvb19-gcc-bootstrap-0.drv" [color = "green"];
@@ -11,8 +11,8 @@ digraph G {
"/nix/store/r3dsy5j2c16sv26raala6kahff7w18hb-gcc-bootstrap-0-guile-builder" -> "/nix/store/x60397za40lx0n88f51a2csfdq5xvb19-gcc-bootstrap-0.drv" [color = "black"];
"/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" -> "/nix/store/x60397za40lx0n88f51a2csfdq5xvb19-gcc-bootstrap-0.drv" [color = "red"];
"/nix/store/y4n7rzysx6qz3p0n91dw9qz5w93l6iqv-module-import-compiled.drv" -> "/nix/store/x60397za40lx0n88f51a2csfdq5xvb19-gcc-bootstrap-0.drv" [color = "green"];
"/nix/store/3iawic1z95112yfz5y9xdp66qbxxr8l1-tar" [label = "tar", fontname = "dejavu sans", shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/4sv9xhcjap6byca130fzpzzjalb7iixv-glibc-bootstrap-0.drv" [label = "glibc-bootstrap-0.drv", fontname = "dejavu sans", shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/3iawic1z95112yfz5y9xdp66qbxxr8l1-tar" [label = "tar", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/4sv9xhcjap6byca130fzpzzjalb7iixv-glibc-bootstrap-0.drv" [label = "glibc-bootstrap-0.drv", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/3iawic1z95112yfz5y9xdp66qbxxr8l1-tar" -> "/nix/store/4sv9xhcjap6byca130fzpzzjalb7iixv-glibc-bootstrap-0.drv" [color = "blue"];
"/nix/store/8cc81w6m04csm52y247xj3gydrbz2niv-xz" -> "/nix/store/4sv9xhcjap6byca130fzpzzjalb7iixv-glibc-bootstrap-0.drv" [color = "magenta"];
"/nix/store/8iivk9hpnps21yrbq3zzsxgzv9ixbhgh-glibc-bootstrap-0-guile-builder" -> "/nix/store/4sv9xhcjap6byca130fzpzzjalb7iixv-glibc-bootstrap-0.drv" [color = "burlywood"];
@@ -20,63 +20,63 @@ digraph G {
"/nix/store/wdwrkg02gn28bkpbxgdb2nv558v8s3ji-glibc-2.17.tar.xz.drv" -> "/nix/store/4sv9xhcjap6byca130fzpzzjalb7iixv-glibc-bootstrap-0.drv" [color = "red"];
"/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" -> "/nix/store/4sv9xhcjap6byca130fzpzzjalb7iixv-glibc-bootstrap-0.drv" [color = "green"];
"/nix/store/y4n7rzysx6qz3p0n91dw9qz5w93l6iqv-module-import-compiled.drv" -> "/nix/store/4sv9xhcjap6byca130fzpzzjalb7iixv-glibc-bootstrap-0.drv" [color = "blue"];
"/nix/store/8cc81w6m04csm52y247xj3gydrbz2niv-xz" [label = "xz", fontname = "dejavu sans", shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/8iivk9hpnps21yrbq3zzsxgzv9ixbhgh-glibc-bootstrap-0-guile-builder" [label = "glibc-bootstrap-0-guile-builder", fontname = "dejavu sans", shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/8cc81w6m04csm52y247xj3gydrbz2niv-xz" [label = "xz", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/8iivk9hpnps21yrbq3zzsxgzv9ixbhgh-glibc-bootstrap-0-guile-builder" [label = "glibc-bootstrap-0-guile-builder", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/3iawic1z95112yfz5y9xdp66qbxxr8l1-tar" -> "/nix/store/8iivk9hpnps21yrbq3zzsxgzv9ixbhgh-glibc-bootstrap-0-guile-builder" [color = "magenta"];
"/nix/store/8cc81w6m04csm52y247xj3gydrbz2niv-xz" -> "/nix/store/8iivk9hpnps21yrbq3zzsxgzv9ixbhgh-glibc-bootstrap-0-guile-builder" [color = "burlywood"];
"/nix/store/96yx6013dhggr3mpg5ayxv8dm9mv2ghv-module-import.drv" [label = "module-import.drv", fontname = "dejavu sans", shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/96yx6013dhggr3mpg5ayxv8dm9mv2ghv-module-import.drv" [label = "module-import.drv", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/9zrdfvnrpljryr82an2n1mj6bh2przhn-module-import-guile-builder" -> "/nix/store/96yx6013dhggr3mpg5ayxv8dm9mv2ghv-module-import.drv" [color = "black"];
"/nix/store/mj7amprgvl2rgash1nr0v64apik8vc7f-utils.scm" -> "/nix/store/96yx6013dhggr3mpg5ayxv8dm9mv2ghv-module-import.drv" [color = "red"];
"/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" -> "/nix/store/96yx6013dhggr3mpg5ayxv8dm9mv2ghv-module-import.drv" [color = "green"];
"/nix/store/9zrdfvnrpljryr82an2n1mj6bh2przhn-module-import-guile-builder" [label = "module-import-guile-builder", fontname = "dejavu sans", shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/9zrdfvnrpljryr82an2n1mj6bh2przhn-module-import-guile-builder" [label = "module-import-guile-builder", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/mj7amprgvl2rgash1nr0v64apik8vc7f-utils.scm" -> "/nix/store/9zrdfvnrpljryr82an2n1mj6bh2przhn-module-import-guile-builder" [color = "blue"];
"/nix/store/fl9cwcczfdv73vq5sr0c4rd5hqzrgvac-gcc-4.7.2.tar.xz.drv" [label = "gcc-4.7.2.tar.xz.drv", fontname = "dejavu sans", shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/fl9cwcczfdv73vq5sr0c4rd5hqzrgvac-gcc-4.7.2.tar.xz.drv" [label = "gcc-4.7.2.tar.xz.drv", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/6kslnirvm26fij7wpjqbw617ri4gf5x5-gcc-4.7.2.tar.xz-guile-builder" -> "/nix/store/fl9cwcczfdv73vq5sr0c4rd5hqzrgvac-gcc-4.7.2.tar.xz.drv" [color = "magenta"];
"/nix/store/kvk5wp8c9rzvvrmq5fv5r58l78q8i6ch-module-import.drv" -> "/nix/store/fl9cwcczfdv73vq5sr0c4rd5hqzrgvac-gcc-4.7.2.tar.xz.drv" [color = "burlywood"];
"/nix/store/pzv319p3q7raiad7nq7fcdw9rafzp14k-module-import-compiled.drv" -> "/nix/store/fl9cwcczfdv73vq5sr0c4rd5hqzrgvac-gcc-4.7.2.tar.xz.drv" [color = "black"];
"/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" -> "/nix/store/fl9cwcczfdv73vq5sr0c4rd5hqzrgvac-gcc-4.7.2.tar.xz.drv" [color = "red"];
"/nix/store/6kslnirvm26fij7wpjqbw617ri4gf5x5-gcc-4.7.2.tar.xz-guile-builder" [label = "gcc-4.7.2.tar.xz-guile-builder", fontname = "dejavu sans", shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/jaaqdl979wjirnbxz1jqsipg22nva5n4-bash" [label = "bash", fontname = "dejavu sans", shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/kvk5wp8c9rzvvrmq5fv5r58l78q8i6ch-module-import.drv" [label = "module-import.drv", fontname = "dejavu sans", shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/6kslnirvm26fij7wpjqbw617ri4gf5x5-gcc-4.7.2.tar.xz-guile-builder" [label = "gcc-4.7.2.tar.xz-guile-builder", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/jaaqdl979wjirnbxz1jqsipg22nva5n4-bash" [label = "bash", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/kvk5wp8c9rzvvrmq5fv5r58l78q8i6ch-module-import.drv" [label = "module-import.drv", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/abagrdbdndkd0y2dwk0nw1gw0g0rhl2z-ftp-client.scm" -> "/nix/store/kvk5wp8c9rzvvrmq5fv5r58l78q8i6ch-module-import.drv" [color = "green"];
"/nix/store/dwd2iwd1ban8a8rmx568dpgrbkkidfhw-download.scm" -> "/nix/store/kvk5wp8c9rzvvrmq5fv5r58l78q8i6ch-module-import.drv" [color = "blue"];
"/nix/store/mj7amprgvl2rgash1nr0v64apik8vc7f-utils.scm" -> "/nix/store/kvk5wp8c9rzvvrmq5fv5r58l78q8i6ch-module-import.drv" [color = "magenta"];
"/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" -> "/nix/store/kvk5wp8c9rzvvrmq5fv5r58l78q8i6ch-module-import.drv" [color = "burlywood"];
"/nix/store/yfixjx2gpvsi5dhkpdx5gj6gx0xdk1c8-module-import-guile-builder" -> "/nix/store/kvk5wp8c9rzvvrmq5fv5r58l78q8i6ch-module-import.drv" [color = "black"];
"/nix/store/abagrdbdndkd0y2dwk0nw1gw0g0rhl2z-ftp-client.scm" [label = "ftp-client.scm", fontname = "dejavu sans", shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/dwd2iwd1ban8a8rmx568dpgrbkkidfhw-download.scm" [label = "download.scm", fontname = "dejavu sans", shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/mj7amprgvl2rgash1nr0v64apik8vc7f-utils.scm" [label = "utils.scm", fontname = "dejavu sans", shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/pzv319p3q7raiad7nq7fcdw9rafzp14k-module-import-compiled.drv" [label = "module-import-compiled.drv", fontname = "dejavu sans", shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/abagrdbdndkd0y2dwk0nw1gw0g0rhl2z-ftp-client.scm" [label = "ftp-client.scm", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/dwd2iwd1ban8a8rmx568dpgrbkkidfhw-download.scm" [label = "download.scm", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/mj7amprgvl2rgash1nr0v64apik8vc7f-utils.scm" [label = "utils.scm", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/pzv319p3q7raiad7nq7fcdw9rafzp14k-module-import-compiled.drv" [label = "module-import-compiled.drv", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/98gzqlgpm4gxrpl5bzykpqbwrx8ckx8l-module-import-compiled-guile-builder" -> "/nix/store/pzv319p3q7raiad7nq7fcdw9rafzp14k-module-import-compiled.drv" [color = "red"];
"/nix/store/kvk5wp8c9rzvvrmq5fv5r58l78q8i6ch-module-import.drv" -> "/nix/store/pzv319p3q7raiad7nq7fcdw9rafzp14k-module-import-compiled.drv" [color = "green"];
"/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" -> "/nix/store/pzv319p3q7raiad7nq7fcdw9rafzp14k-module-import-compiled.drv" [color = "blue"];
"/nix/store/98gzqlgpm4gxrpl5bzykpqbwrx8ckx8l-module-import-compiled-guile-builder" [label = "module-import-compiled-guile-builder", fontname = "dejavu sans", shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/r3dsy5j2c16sv26raala6kahff7w18hb-gcc-bootstrap-0-guile-builder" [label = "gcc-bootstrap-0-guile-builder", fontname = "dejavu sans", shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/98gzqlgpm4gxrpl5bzykpqbwrx8ckx8l-module-import-compiled-guile-builder" [label = "module-import-compiled-guile-builder", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/r3dsy5j2c16sv26raala6kahff7w18hb-gcc-bootstrap-0-guile-builder" [label = "gcc-bootstrap-0-guile-builder", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/3iawic1z95112yfz5y9xdp66qbxxr8l1-tar" -> "/nix/store/r3dsy5j2c16sv26raala6kahff7w18hb-gcc-bootstrap-0-guile-builder" [color = "magenta"];
"/nix/store/8cc81w6m04csm52y247xj3gydrbz2niv-xz" -> "/nix/store/r3dsy5j2c16sv26raala6kahff7w18hb-gcc-bootstrap-0-guile-builder" [color = "burlywood"];
"/nix/store/jaaqdl979wjirnbxz1jqsipg22nva5n4-bash" -> "/nix/store/r3dsy5j2c16sv26raala6kahff7w18hb-gcc-bootstrap-0-guile-builder" [color = "black"];
"/nix/store/wdwrkg02gn28bkpbxgdb2nv558v8s3ji-glibc-2.17.tar.xz.drv" [label = "glibc-2.17.tar.xz.drv", fontname = "dejavu sans", shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/wdwrkg02gn28bkpbxgdb2nv558v8s3ji-glibc-2.17.tar.xz.drv" [label = "glibc-2.17.tar.xz.drv", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/kvk5wp8c9rzvvrmq5fv5r58l78q8i6ch-module-import.drv" -> "/nix/store/wdwrkg02gn28bkpbxgdb2nv558v8s3ji-glibc-2.17.tar.xz.drv" [color = "red"];
"/nix/store/pzv319p3q7raiad7nq7fcdw9rafzp14k-module-import-compiled.drv" -> "/nix/store/wdwrkg02gn28bkpbxgdb2nv558v8s3ji-glibc-2.17.tar.xz.drv" [color = "green"];
"/nix/store/q7as3jddipj4g6si8lawrdbkjg0zcjvg-glibc-2.17.tar.xz-guile-builder" -> "/nix/store/wdwrkg02gn28bkpbxgdb2nv558v8s3ji-glibc-2.17.tar.xz.drv" [color = "blue"];
"/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" -> "/nix/store/wdwrkg02gn28bkpbxgdb2nv558v8s3ji-glibc-2.17.tar.xz.drv" [color = "magenta"];
"/nix/store/q7as3jddipj4g6si8lawrdbkjg0zcjvg-glibc-2.17.tar.xz-guile-builder" [label = "glibc-2.17.tar.xz-guile-builder", fontname = "dejavu sans", shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" [label = "guile-bootstrap-2.0.drv", fontname = "dejavu sans", shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/q7as3jddipj4g6si8lawrdbkjg0zcjvg-glibc-2.17.tar.xz-guile-builder" [label = "glibc-2.17.tar.xz-guile-builder", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" [label = "guile-bootstrap-2.0.drv", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/bplka3yqdg8prqq3zdxza6wxlkjdhr2g-build-bootstrap-guile.sh" -> "/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" [color = "burlywood"];
"/nix/store/jaaqdl979wjirnbxz1jqsipg22nva5n4-bash" -> "/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" [color = "black"];
"/nix/store/bplka3yqdg8prqq3zdxza6wxlkjdhr2g-build-bootstrap-guile.sh" [label = "build-bootstrap-guile.sh", fontname = "dejavu sans", shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/bplka3yqdg8prqq3zdxza6wxlkjdhr2g-build-bootstrap-guile.sh" [label = "build-bootstrap-guile.sh", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/3iawic1z95112yfz5y9xdp66qbxxr8l1-tar" -> "/nix/store/bplka3yqdg8prqq3zdxza6wxlkjdhr2g-build-bootstrap-guile.sh" [color = "red"];
"/nix/store/4xv2y0m6zr2lgi8x8pcb3zxjqxsz69kj-mkdir" -> "/nix/store/bplka3yqdg8prqq3zdxza6wxlkjdhr2g-build-bootstrap-guile.sh" [color = "green"];
"/nix/store/8cc81w6m04csm52y247xj3gydrbz2niv-xz" -> "/nix/store/bplka3yqdg8prqq3zdxza6wxlkjdhr2g-build-bootstrap-guile.sh" [color = "blue"];
"/nix/store/c450lqvaaz3ngx9pfiiiw55rqq6ssfda-guile-2.0.7.tar.xz" -> "/nix/store/bplka3yqdg8prqq3zdxza6wxlkjdhr2g-build-bootstrap-guile.sh" [color = "magenta"];
"/nix/store/4xv2y0m6zr2lgi8x8pcb3zxjqxsz69kj-mkdir" [label = "mkdir", fontname = "dejavu sans", shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/c450lqvaaz3ngx9pfiiiw55rqq6ssfda-guile-2.0.7.tar.xz" [label = "guile-2.0.7.tar.xz", fontname = "dejavu sans", shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/y4n7rzysx6qz3p0n91dw9qz5w93l6iqv-module-import-compiled.drv" [label = "module-import-compiled.drv", fontname = "dejavu sans", shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/4xv2y0m6zr2lgi8x8pcb3zxjqxsz69kj-mkdir" [label = "mkdir", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/c450lqvaaz3ngx9pfiiiw55rqq6ssfda-guile-2.0.7.tar.xz" [label = "guile-2.0.7.tar.xz", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/y4n7rzysx6qz3p0n91dw9qz5w93l6iqv-module-import-compiled.drv" [label = "module-import-compiled.drv", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/8jiqjlb6zxjys16ca7s6jvxcc620c71k-module-import-compiled-guile-builder" -> "/nix/store/y4n7rzysx6qz3p0n91dw9qz5w93l6iqv-module-import-compiled.drv" [color = "burlywood"];
"/nix/store/96yx6013dhggr3mpg5ayxv8dm9mv2ghv-module-import.drv" -> "/nix/store/y4n7rzysx6qz3p0n91dw9qz5w93l6iqv-module-import-compiled.drv" [color = "black"];
"/nix/store/x9x1a86flhx15cams7235rfy5gc5cww1-guile-bootstrap-2.0.drv" -> "/nix/store/y4n7rzysx6qz3p0n91dw9qz5w93l6iqv-module-import-compiled.drv" [color = "red"];
"/nix/store/8jiqjlb6zxjys16ca7s6jvxcc620c71k-module-import-compiled-guile-builder" [label = "module-import-compiled-guile-builder", fontname = "dejavu sans", shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/yfixjx2gpvsi5dhkpdx5gj6gx0xdk1c8-module-import-guile-builder" [label = "module-import-guile-builder", fontname = "dejavu sans", shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/8jiqjlb6zxjys16ca7s6jvxcc620c71k-module-import-compiled-guile-builder" [label = "module-import-compiled-guile-builder", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/yfixjx2gpvsi5dhkpdx5gj6gx0xdk1c8-module-import-guile-builder" [label = "module-import-guile-builder", fontname = Helvetica, shape = box, style = filled, fillcolor = "#ffffff"];
"/nix/store/abagrdbdndkd0y2dwk0nw1gw0g0rhl2z-ftp-client.scm" -> "/nix/store/yfixjx2gpvsi5dhkpdx5gj6gx0xdk1c8-module-import-guile-builder" [color = "green"];
"/nix/store/dwd2iwd1ban8a8rmx568dpgrbkkidfhw-download.scm" -> "/nix/store/yfixjx2gpvsi5dhkpdx5gj6gx0xdk1c8-module-import-guile-builder" [color = "blue"];
"/nix/store/mj7amprgvl2rgash1nr0v64apik8vc7f-utils.scm" -> "/nix/store/yfixjx2gpvsi5dhkpdx5gj6gx0xdk1c8-module-import-guile-builder" [color = "magenta"];
+16 -16
View File
@@ -1,5 +1,5 @@
digraph "Guix bag" {
"/gnu/store/aymf6jlxxpwgr71rkiz24m646nqsyii6-glibc-intermediate-2.24.drv" [label = "glibc-intermediate-2.24", shape = box, fontname = "dejavu sans"];
"/gnu/store/aymf6jlxxpwgr71rkiz24m646nqsyii6-glibc-intermediate-2.24.drv" [label = "glibc-intermediate-2.24", shape = box, fontname = Helvetica];
"/gnu/store/aymf6jlxxpwgr71rkiz24m646nqsyii6-glibc-intermediate-2.24.drv" -> "/gnu/store/wx8ifbb7x22cl4998fyldsr24fcv18j3-texinfo-6.3.drv" [color = magenta];
"/gnu/store/aymf6jlxxpwgr71rkiz24m646nqsyii6-glibc-intermediate-2.24.drv" -> "/gnu/store/ccj3as3258l70lmphi48hs7n017wv75s-perl-boot0-5.24.0.drv" [color = magenta];
"/gnu/store/aymf6jlxxpwgr71rkiz24m646nqsyii6-glibc-intermediate-2.24.drv" -> "/gnu/store/w9adgzgdqkwz0w13zxf2fn363v9wcllc-gcc-cross-boot0-4.9.4.drv" [color = magenta];
@@ -16,7 +16,7 @@ digraph "Guix bag" {
"/gnu/store/aymf6jlxxpwgr71rkiz24m646nqsyii6-glibc-intermediate-2.24.drv" -> "/gnu/store/jxlg2pb4bhxjld9kimc0vgc1pvgifzag-gcc-bootstrap-0.drv" [color = magenta];
"/gnu/store/aymf6jlxxpwgr71rkiz24m646nqsyii6-glibc-intermediate-2.24.drv" -> "/gnu/store/pmvh852v0x1zbl4r37pcpdqnq6m3bwfk-bootstrap-binaries-0.drv" [color = magenta];
"/gnu/store/aymf6jlxxpwgr71rkiz24m646nqsyii6-glibc-intermediate-2.24.drv" -> "/gnu/store/5syba2bxhh8z79jhq83fzy8fxcx5xb4s-linux-libre-headers-4.4.18.drv" [color = magenta];
"/gnu/store/wx8ifbb7x22cl4998fyldsr24fcv18j3-texinfo-6.3.drv" [label = "texinfo-6.3", shape = box, fontname = "dejavu sans"];
"/gnu/store/wx8ifbb7x22cl4998fyldsr24fcv18j3-texinfo-6.3.drv" [label = "texinfo-6.3", shape = box, fontname = Helvetica];
"/gnu/store/wx8ifbb7x22cl4998fyldsr24fcv18j3-texinfo-6.3.drv" -> "/gnu/store/1jpld53g41rzv2bmjp6v9mckmyw75vs3-make-boot0-4.2.1.drv" [color = cyan3];
"/gnu/store/wx8ifbb7x22cl4998fyldsr24fcv18j3-texinfo-6.3.drv" -> "/gnu/store/zpphawi07xidhfs2dja3w7hmnfp99j02-diffutils-boot0-3.5.drv" [color = cyan3];
"/gnu/store/wx8ifbb7x22cl4998fyldsr24fcv18j3-texinfo-6.3.drv" -> "/gnu/store/m4900ip34w4rcgn5620iqdi1wv198d9s-findutils-boot0-4.6.0.drv" [color = cyan3];
@@ -27,25 +27,25 @@ digraph "Guix bag" {
"/gnu/store/wx8ifbb7x22cl4998fyldsr24fcv18j3-texinfo-6.3.drv" -> "/gnu/store/pmvh852v0x1zbl4r37pcpdqnq6m3bwfk-bootstrap-binaries-0.drv" [color = cyan3];
"/gnu/store/wx8ifbb7x22cl4998fyldsr24fcv18j3-texinfo-6.3.drv" -> "/gnu/store/pmvh852v0x1zbl4r37pcpdqnq6m3bwfk-bootstrap-binaries-0.drv" [color = cyan3];
"/gnu/store/wx8ifbb7x22cl4998fyldsr24fcv18j3-texinfo-6.3.drv" -> "/gnu/store/ccj3as3258l70lmphi48hs7n017wv75s-perl-boot0-5.24.0.drv" [color = cyan3];
"/gnu/store/1jpld53g41rzv2bmjp6v9mckmyw75vs3-make-boot0-4.2.1.drv" [label = "make-boot0-4.2.1", shape = box, fontname = "dejavu sans"];
"/gnu/store/1jpld53g41rzv2bmjp6v9mckmyw75vs3-make-boot0-4.2.1.drv" [label = "make-boot0-4.2.1", shape = box, fontname = Helvetica];
"/gnu/store/1jpld53g41rzv2bmjp6v9mckmyw75vs3-make-boot0-4.2.1.drv" -> "/gnu/store/wda0p45jlbzg6w9j8zxw2sd11n2a4pbv-glibc-bootstrap-0.drv" [color = dimgrey];
"/gnu/store/1jpld53g41rzv2bmjp6v9mckmyw75vs3-make-boot0-4.2.1.drv" -> "/gnu/store/jxlg2pb4bhxjld9kimc0vgc1pvgifzag-gcc-bootstrap-0.drv" [color = dimgrey];
"/gnu/store/1jpld53g41rzv2bmjp6v9mckmyw75vs3-make-boot0-4.2.1.drv" -> "/gnu/store/wv8sf8h4n9s5cdya223iy2wp3alr92x8-binutils-bootstrap-0.drv" [color = dimgrey];
"/gnu/store/1jpld53g41rzv2bmjp6v9mckmyw75vs3-make-boot0-4.2.1.drv" -> "/gnu/store/pmvh852v0x1zbl4r37pcpdqnq6m3bwfk-bootstrap-binaries-0.drv" [color = dimgrey];
"/gnu/store/1jpld53g41rzv2bmjp6v9mckmyw75vs3-make-boot0-4.2.1.drv" -> "/gnu/store/pmvh852v0x1zbl4r37pcpdqnq6m3bwfk-bootstrap-binaries-0.drv" [color = dimgrey];
"/gnu/store/wda0p45jlbzg6w9j8zxw2sd11n2a4pbv-glibc-bootstrap-0.drv" [label = "glibc-bootstrap-0", shape = box, fontname = "dejavu sans"];
"/gnu/store/jxlg2pb4bhxjld9kimc0vgc1pvgifzag-gcc-bootstrap-0.drv" [label = "gcc-bootstrap-0", shape = box, fontname = "dejavu sans"];
"/gnu/store/wda0p45jlbzg6w9j8zxw2sd11n2a4pbv-glibc-bootstrap-0.drv" [label = "glibc-bootstrap-0", shape = box, fontname = Helvetica];
"/gnu/store/jxlg2pb4bhxjld9kimc0vgc1pvgifzag-gcc-bootstrap-0.drv" [label = "gcc-bootstrap-0", shape = box, fontname = Helvetica];
"/gnu/store/jxlg2pb4bhxjld9kimc0vgc1pvgifzag-gcc-bootstrap-0.drv" -> "/gnu/store/wda0p45jlbzg6w9j8zxw2sd11n2a4pbv-glibc-bootstrap-0.drv" [color = darkseagreen];
"/gnu/store/wv8sf8h4n9s5cdya223iy2wp3alr92x8-binutils-bootstrap-0.drv" [label = "binutils-bootstrap-0", shape = box, fontname = "dejavu sans"];
"/gnu/store/pmvh852v0x1zbl4r37pcpdqnq6m3bwfk-bootstrap-binaries-0.drv" [label = "bootstrap-binaries-0", shape = box, fontname = "dejavu sans"];
"/gnu/store/zpphawi07xidhfs2dja3w7hmnfp99j02-diffutils-boot0-3.5.drv" [label = "diffutils-boot0-3.5", shape = box, fontname = "dejavu sans"];
"/gnu/store/wv8sf8h4n9s5cdya223iy2wp3alr92x8-binutils-bootstrap-0.drv" [label = "binutils-bootstrap-0", shape = box, fontname = Helvetica];
"/gnu/store/pmvh852v0x1zbl4r37pcpdqnq6m3bwfk-bootstrap-binaries-0.drv" [label = "bootstrap-binaries-0", shape = box, fontname = Helvetica];
"/gnu/store/zpphawi07xidhfs2dja3w7hmnfp99j02-diffutils-boot0-3.5.drv" [label = "diffutils-boot0-3.5", shape = box, fontname = Helvetica];
"/gnu/store/zpphawi07xidhfs2dja3w7hmnfp99j02-diffutils-boot0-3.5.drv" -> "/gnu/store/1jpld53g41rzv2bmjp6v9mckmyw75vs3-make-boot0-4.2.1.drv" [color = blue];
"/gnu/store/zpphawi07xidhfs2dja3w7hmnfp99j02-diffutils-boot0-3.5.drv" -> "/gnu/store/wda0p45jlbzg6w9j8zxw2sd11n2a4pbv-glibc-bootstrap-0.drv" [color = blue];
"/gnu/store/zpphawi07xidhfs2dja3w7hmnfp99j02-diffutils-boot0-3.5.drv" -> "/gnu/store/jxlg2pb4bhxjld9kimc0vgc1pvgifzag-gcc-bootstrap-0.drv" [color = blue];
"/gnu/store/zpphawi07xidhfs2dja3w7hmnfp99j02-diffutils-boot0-3.5.drv" -> "/gnu/store/wv8sf8h4n9s5cdya223iy2wp3alr92x8-binutils-bootstrap-0.drv" [color = blue];
"/gnu/store/zpphawi07xidhfs2dja3w7hmnfp99j02-diffutils-boot0-3.5.drv" -> "/gnu/store/pmvh852v0x1zbl4r37pcpdqnq6m3bwfk-bootstrap-binaries-0.drv" [color = blue];
"/gnu/store/zpphawi07xidhfs2dja3w7hmnfp99j02-diffutils-boot0-3.5.drv" -> "/gnu/store/pmvh852v0x1zbl4r37pcpdqnq6m3bwfk-bootstrap-binaries-0.drv" [color = blue];
"/gnu/store/m4900ip34w4rcgn5620iqdi1wv198d9s-findutils-boot0-4.6.0.drv" [label = "findutils-boot0-4.6.0", shape = box, fontname = "dejavu sans"];
"/gnu/store/m4900ip34w4rcgn5620iqdi1wv198d9s-findutils-boot0-4.6.0.drv" [label = "findutils-boot0-4.6.0", shape = box, fontname = Helvetica];
"/gnu/store/m4900ip34w4rcgn5620iqdi1wv198d9s-findutils-boot0-4.6.0.drv" -> "/gnu/store/1jpld53g41rzv2bmjp6v9mckmyw75vs3-make-boot0-4.2.1.drv" [color = blue];
"/gnu/store/m4900ip34w4rcgn5620iqdi1wv198d9s-findutils-boot0-4.6.0.drv" -> "/gnu/store/zpphawi07xidhfs2dja3w7hmnfp99j02-diffutils-boot0-3.5.drv" [color = blue];
"/gnu/store/m4900ip34w4rcgn5620iqdi1wv198d9s-findutils-boot0-4.6.0.drv" -> "/gnu/store/wda0p45jlbzg6w9j8zxw2sd11n2a4pbv-glibc-bootstrap-0.drv" [color = blue];
@@ -53,14 +53,14 @@ digraph "Guix bag" {
"/gnu/store/m4900ip34w4rcgn5620iqdi1wv198d9s-findutils-boot0-4.6.0.drv" -> "/gnu/store/wv8sf8h4n9s5cdya223iy2wp3alr92x8-binutils-bootstrap-0.drv" [color = blue];
"/gnu/store/m4900ip34w4rcgn5620iqdi1wv198d9s-findutils-boot0-4.6.0.drv" -> "/gnu/store/pmvh852v0x1zbl4r37pcpdqnq6m3bwfk-bootstrap-binaries-0.drv" [color = blue];
"/gnu/store/m4900ip34w4rcgn5620iqdi1wv198d9s-findutils-boot0-4.6.0.drv" -> "/gnu/store/pmvh852v0x1zbl4r37pcpdqnq6m3bwfk-bootstrap-binaries-0.drv" [color = blue];
"/gnu/store/nwzyr3xskw0ms8cndffsfvhvm5xz96pc-file-boot0-5.28.drv" [label = "file-boot0-5.28", shape = box, fontname = "dejavu sans"];
"/gnu/store/nwzyr3xskw0ms8cndffsfvhvm5xz96pc-file-boot0-5.28.drv" [label = "file-boot0-5.28", shape = box, fontname = Helvetica];
"/gnu/store/nwzyr3xskw0ms8cndffsfvhvm5xz96pc-file-boot0-5.28.drv" -> "/gnu/store/1jpld53g41rzv2bmjp6v9mckmyw75vs3-make-boot0-4.2.1.drv" [color = darkgoldenrod];
"/gnu/store/nwzyr3xskw0ms8cndffsfvhvm5xz96pc-file-boot0-5.28.drv" -> "/gnu/store/wda0p45jlbzg6w9j8zxw2sd11n2a4pbv-glibc-bootstrap-0.drv" [color = darkgoldenrod];
"/gnu/store/nwzyr3xskw0ms8cndffsfvhvm5xz96pc-file-boot0-5.28.drv" -> "/gnu/store/jxlg2pb4bhxjld9kimc0vgc1pvgifzag-gcc-bootstrap-0.drv" [color = darkgoldenrod];
"/gnu/store/nwzyr3xskw0ms8cndffsfvhvm5xz96pc-file-boot0-5.28.drv" -> "/gnu/store/wv8sf8h4n9s5cdya223iy2wp3alr92x8-binutils-bootstrap-0.drv" [color = darkgoldenrod];
"/gnu/store/nwzyr3xskw0ms8cndffsfvhvm5xz96pc-file-boot0-5.28.drv" -> "/gnu/store/pmvh852v0x1zbl4r37pcpdqnq6m3bwfk-bootstrap-binaries-0.drv" [color = darkgoldenrod];
"/gnu/store/nwzyr3xskw0ms8cndffsfvhvm5xz96pc-file-boot0-5.28.drv" -> "/gnu/store/pmvh852v0x1zbl4r37pcpdqnq6m3bwfk-bootstrap-binaries-0.drv" [color = darkgoldenrod];
"/gnu/store/ccj3as3258l70lmphi48hs7n017wv75s-perl-boot0-5.24.0.drv" [label = "perl-boot0-5.24.0", shape = box, fontname = "dejavu sans"];
"/gnu/store/ccj3as3258l70lmphi48hs7n017wv75s-perl-boot0-5.24.0.drv" [label = "perl-boot0-5.24.0", shape = box, fontname = Helvetica];
"/gnu/store/ccj3as3258l70lmphi48hs7n017wv75s-perl-boot0-5.24.0.drv" -> "/gnu/store/1jpld53g41rzv2bmjp6v9mckmyw75vs3-make-boot0-4.2.1.drv" [color = peachpuff4];
"/gnu/store/ccj3as3258l70lmphi48hs7n017wv75s-perl-boot0-5.24.0.drv" -> "/gnu/store/zpphawi07xidhfs2dja3w7hmnfp99j02-diffutils-boot0-3.5.drv" [color = peachpuff4];
"/gnu/store/ccj3as3258l70lmphi48hs7n017wv75s-perl-boot0-5.24.0.drv" -> "/gnu/store/m4900ip34w4rcgn5620iqdi1wv198d9s-findutils-boot0-4.6.0.drv" [color = peachpuff4];
@@ -70,7 +70,7 @@ digraph "Guix bag" {
"/gnu/store/ccj3as3258l70lmphi48hs7n017wv75s-perl-boot0-5.24.0.drv" -> "/gnu/store/wv8sf8h4n9s5cdya223iy2wp3alr92x8-binutils-bootstrap-0.drv" [color = peachpuff4];
"/gnu/store/ccj3as3258l70lmphi48hs7n017wv75s-perl-boot0-5.24.0.drv" -> "/gnu/store/pmvh852v0x1zbl4r37pcpdqnq6m3bwfk-bootstrap-binaries-0.drv" [color = peachpuff4];
"/gnu/store/ccj3as3258l70lmphi48hs7n017wv75s-perl-boot0-5.24.0.drv" -> "/gnu/store/pmvh852v0x1zbl4r37pcpdqnq6m3bwfk-bootstrap-binaries-0.drv" [color = peachpuff4];
"/gnu/store/w9adgzgdqkwz0w13zxf2fn363v9wcllc-gcc-cross-boot0-4.9.4.drv" [label = "gcc-cross-boot0-4.9.4", shape = box, fontname = "dejavu sans"];
"/gnu/store/w9adgzgdqkwz0w13zxf2fn363v9wcllc-gcc-cross-boot0-4.9.4.drv" [label = "gcc-cross-boot0-4.9.4", shape = box, fontname = Helvetica];
"/gnu/store/w9adgzgdqkwz0w13zxf2fn363v9wcllc-gcc-cross-boot0-4.9.4.drv" -> "/gnu/store/v1v7jp438hc5rpgriwpjp04x049vh0g4-binutils-cross-boot0-2.27.drv" [color = darkseagreen];
"/gnu/store/w9adgzgdqkwz0w13zxf2fn363v9wcllc-gcc-cross-boot0-4.9.4.drv" -> "/gnu/store/wda0p45jlbzg6w9j8zxw2sd11n2a4pbv-glibc-bootstrap-0.drv" [color = darkseagreen];
"/gnu/store/w9adgzgdqkwz0w13zxf2fn363v9wcllc-gcc-cross-boot0-4.9.4.drv" -> "/gnu/store/1jpld53g41rzv2bmjp6v9mckmyw75vs3-make-boot0-4.2.1.drv" [color = darkseagreen];
@@ -81,7 +81,7 @@ digraph "Guix bag" {
"/gnu/store/w9adgzgdqkwz0w13zxf2fn363v9wcllc-gcc-cross-boot0-4.9.4.drv" -> "/gnu/store/wv8sf8h4n9s5cdya223iy2wp3alr92x8-binutils-bootstrap-0.drv" [color = darkseagreen];
"/gnu/store/w9adgzgdqkwz0w13zxf2fn363v9wcllc-gcc-cross-boot0-4.9.4.drv" -> "/gnu/store/pmvh852v0x1zbl4r37pcpdqnq6m3bwfk-bootstrap-binaries-0.drv" [color = darkseagreen];
"/gnu/store/w9adgzgdqkwz0w13zxf2fn363v9wcllc-gcc-cross-boot0-4.9.4.drv" -> "/gnu/store/pmvh852v0x1zbl4r37pcpdqnq6m3bwfk-bootstrap-binaries-0.drv" [color = darkseagreen];
"/gnu/store/v1v7jp438hc5rpgriwpjp04x049vh0g4-binutils-cross-boot0-2.27.drv" [label = "binutils-cross-boot0-2.27", shape = box, fontname = "dejavu sans"];
"/gnu/store/v1v7jp438hc5rpgriwpjp04x049vh0g4-binutils-cross-boot0-2.27.drv" [label = "binutils-cross-boot0-2.27", shape = box, fontname = Helvetica];
"/gnu/store/v1v7jp438hc5rpgriwpjp04x049vh0g4-binutils-cross-boot0-2.27.drv" -> "/gnu/store/1jpld53g41rzv2bmjp6v9mckmyw75vs3-make-boot0-4.2.1.drv" [color = dimgrey];
"/gnu/store/v1v7jp438hc5rpgriwpjp04x049vh0g4-binutils-cross-boot0-2.27.drv" -> "/gnu/store/zpphawi07xidhfs2dja3w7hmnfp99j02-diffutils-boot0-3.5.drv" [color = dimgrey];
"/gnu/store/v1v7jp438hc5rpgriwpjp04x049vh0g4-binutils-cross-boot0-2.27.drv" -> "/gnu/store/m4900ip34w4rcgn5620iqdi1wv198d9s-findutils-boot0-4.6.0.drv" [color = dimgrey];
@@ -91,12 +91,12 @@ digraph "Guix bag" {
"/gnu/store/v1v7jp438hc5rpgriwpjp04x049vh0g4-binutils-cross-boot0-2.27.drv" -> "/gnu/store/wv8sf8h4n9s5cdya223iy2wp3alr92x8-binutils-bootstrap-0.drv" [color = dimgrey];
"/gnu/store/v1v7jp438hc5rpgriwpjp04x049vh0g4-binutils-cross-boot0-2.27.drv" -> "/gnu/store/pmvh852v0x1zbl4r37pcpdqnq6m3bwfk-bootstrap-binaries-0.drv" [color = dimgrey];
"/gnu/store/v1v7jp438hc5rpgriwpjp04x049vh0g4-binutils-cross-boot0-2.27.drv" -> "/gnu/store/pmvh852v0x1zbl4r37pcpdqnq6m3bwfk-bootstrap-binaries-0.drv" [color = dimgrey];
"/gnu/store/72snmrnjphwjxffknjhzm3xg38wd08al-ld-wrapper-x86_64-guix-linux-gnu-0.drv" [label = "ld-wrapper-x86_64-guix-linux-gnu-0", shape = box, fontname = "dejavu sans"];
"/gnu/store/72snmrnjphwjxffknjhzm3xg38wd08al-ld-wrapper-x86_64-guix-linux-gnu-0.drv" [label = "ld-wrapper-x86_64-guix-linux-gnu-0", shape = box, fontname = Helvetica];
"/gnu/store/72snmrnjphwjxffknjhzm3xg38wd08al-ld-wrapper-x86_64-guix-linux-gnu-0.drv" -> "/gnu/store/v1v7jp438hc5rpgriwpjp04x049vh0g4-binutils-cross-boot0-2.27.drv" [color = dimgrey];
"/gnu/store/72snmrnjphwjxffknjhzm3xg38wd08al-ld-wrapper-x86_64-guix-linux-gnu-0.drv" -> "/gnu/store/af19ma2vm3qhvh3rw6cdivyp98s18bj3-guile-bootstrap-2.0.drv" [color = dimgrey];
"/gnu/store/72snmrnjphwjxffknjhzm3xg38wd08al-ld-wrapper-x86_64-guix-linux-gnu-0.drv" -> "/gnu/store/pmvh852v0x1zbl4r37pcpdqnq6m3bwfk-bootstrap-binaries-0.drv" [color = dimgrey];
"/gnu/store/af19ma2vm3qhvh3rw6cdivyp98s18bj3-guile-bootstrap-2.0.drv" [label = "guile-bootstrap-2.0", shape = box, fontname = "dejavu sans"];
"/gnu/store/5syba2bxhh8z79jhq83fzy8fxcx5xb4s-linux-libre-headers-4.4.18.drv" [label = "linux-libre-headers-4.4.18", shape = box, fontname = "dejavu sans"];
"/gnu/store/af19ma2vm3qhvh3rw6cdivyp98s18bj3-guile-bootstrap-2.0.drv" [label = "guile-bootstrap-2.0", shape = box, fontname = Helvetica];
"/gnu/store/5syba2bxhh8z79jhq83fzy8fxcx5xb4s-linux-libre-headers-4.4.18.drv" [label = "linux-libre-headers-4.4.18", shape = box, fontname = Helvetica];
"/gnu/store/5syba2bxhh8z79jhq83fzy8fxcx5xb4s-linux-libre-headers-4.4.18.drv" -> "/gnu/store/ccj3as3258l70lmphi48hs7n017wv75s-perl-boot0-5.24.0.drv" [color = blue];
"/gnu/store/5syba2bxhh8z79jhq83fzy8fxcx5xb4s-linux-libre-headers-4.4.18.drv" -> "/gnu/store/1jpld53g41rzv2bmjp6v9mckmyw75vs3-make-boot0-4.2.1.drv" [color = blue];
"/gnu/store/5syba2bxhh8z79jhq83fzy8fxcx5xb4s-linux-libre-headers-4.4.18.drv" -> "/gnu/store/zpphawi07xidhfs2dja3w7hmnfp99j02-diffutils-boot0-3.5.drv" [color = blue];
+28 -28
View File
@@ -1,5 +1,5 @@
digraph "Guix bag-emerged" {
"/gnu/store/yv2r96w2dvbb0sjrf9f2imybpnyd616b-coreutils-8.25.drv" [label = "coreutils-8.25", shape = box, fontname = "dejavu sans"];
"/gnu/store/yv2r96w2dvbb0sjrf9f2imybpnyd616b-coreutils-8.25.drv" [label = "coreutils-8.25", shape = box, fontname = Helvetica];
"/gnu/store/yv2r96w2dvbb0sjrf9f2imybpnyd616b-coreutils-8.25.drv" -> "/gnu/store/jxcx1jcvzxb17dc69sfwb352vgwyr108-perl-5.24.0.drv" [color = cyan3];
"/gnu/store/yv2r96w2dvbb0sjrf9f2imybpnyd616b-coreutils-8.25.drv" -> "/gnu/store/7ijl8lybdx95kndajavdrpz05jdiwy9g-tar-1.29.drv" [color = cyan3];
"/gnu/store/yv2r96w2dvbb0sjrf9f2imybpnyd616b-coreutils-8.25.drv" -> "/gnu/store/0ykf3p023pzfcg2bw8ahjc7cvmc12zjq-gzip-1.8.drv" [color = cyan3];
@@ -23,7 +23,7 @@ digraph "Guix bag-emerged" {
"/gnu/store/yv2r96w2dvbb0sjrf9f2imybpnyd616b-coreutils-8.25.drv" -> "/gnu/store/ywmblv73pqa8lqqz368g46ysz65pnm0v-acl-2.2.52.drv" [color = cyan3];
"/gnu/store/yv2r96w2dvbb0sjrf9f2imybpnyd616b-coreutils-8.25.drv" -> "/gnu/store/7gqg2kmrm1bjgphnd70ps5c11gqml571-gmp-6.1.1.drv" [color = cyan3];
"/gnu/store/yv2r96w2dvbb0sjrf9f2imybpnyd616b-coreutils-8.25.drv" -> "/gnu/store/ijv3y5l1fbbzwb77lc867r1qbsf147i8-libcap-2.24.drv" [color = cyan3];
"/gnu/store/jxcx1jcvzxb17dc69sfwb352vgwyr108-perl-5.24.0.drv" [label = "perl-5.24.0", shape = box, fontname = "dejavu sans"];
"/gnu/store/jxcx1jcvzxb17dc69sfwb352vgwyr108-perl-5.24.0.drv" [label = "perl-5.24.0", shape = box, fontname = Helvetica];
"/gnu/store/jxcx1jcvzxb17dc69sfwb352vgwyr108-perl-5.24.0.drv" -> "/gnu/store/7ijl8lybdx95kndajavdrpz05jdiwy9g-tar-1.29.drv" [color = blue];
"/gnu/store/jxcx1jcvzxb17dc69sfwb352vgwyr108-perl-5.24.0.drv" -> "/gnu/store/0ykf3p023pzfcg2bw8ahjc7cvmc12zjq-gzip-1.8.drv" [color = blue];
"/gnu/store/jxcx1jcvzxb17dc69sfwb352vgwyr108-perl-5.24.0.drv" -> "/gnu/store/xx3hiqhqn0d94zz7b46hgggwsz3wjiiw-bzip2-1.0.6.drv" [color = blue];
@@ -43,26 +43,26 @@ digraph "Guix bag-emerged" {
"/gnu/store/jxcx1jcvzxb17dc69sfwb352vgwyr108-perl-5.24.0.drv" -> "/gnu/store/hv3dl3my12mq0gkwvckmnqccnckn39l0-gcc-4.9.4.drv" [color = blue];
"/gnu/store/jxcx1jcvzxb17dc69sfwb352vgwyr108-perl-5.24.0.drv" -> "/gnu/store/qbfynm50snyn31w2c3paiw2n6wvzksg8-glibc-2.24.drv" [color = blue];
"/gnu/store/jxcx1jcvzxb17dc69sfwb352vgwyr108-perl-5.24.0.drv" -> "/gnu/store/ir0lq2x7h64g2z5mlqvnlysjk2bc9xka-glibc-utf8-locales-2.24.drv" [color = blue];
"/gnu/store/7ijl8lybdx95kndajavdrpz05jdiwy9g-tar-1.29.drv" [label = "tar-1.29", shape = box, fontname = "dejavu sans"];
"/gnu/store/0ykf3p023pzfcg2bw8ahjc7cvmc12zjq-gzip-1.8.drv" [label = "gzip-1.8", shape = box, fontname = "dejavu sans"];
"/gnu/store/xx3hiqhqn0d94zz7b46hgggwsz3wjiiw-bzip2-1.0.6.drv" [label = "bzip2-1.0.6", shape = box, fontname = "dejavu sans"];
"/gnu/store/kz8rzasivw4aflsv4rll3m539xybf226-xz-5.2.2.drv" [label = "xz-5.2.2", shape = box, fontname = "dejavu sans"];
"/gnu/store/3pwrlsd23k2h104akxfj3cxhqcp973g9-file-5.28.drv" [label = "file-5.28", shape = box, fontname = "dejavu sans"];
"/gnu/store/f1ww5vh5abnvr8b24llipm5dl89s5lq2-diffutils-3.5.drv" [label = "diffutils-3.5", shape = box, fontname = "dejavu sans"];
"/gnu/store/0cbgdhhyh7hsgwq1x54n9vnq99rfjch9-patch-2.7.5.drv" [label = "patch-2.7.5", shape = box, fontname = "dejavu sans"];
"/gnu/store/8xjnm44dfwwxp90hxq6zhb6qvia7rb3l-sed-4.2.2.drv" [label = "sed-4.2.2", shape = box, fontname = "dejavu sans"];
"/gnu/store/54wjl6dp6rp47r67f4nyfqyv8nh456yc-findutils-4.6.0.drv" [label = "findutils-4.6.0", shape = box, fontname = "dejavu sans"];
"/gnu/store/k951w49yw74ikg19l4mmlwfrq9w7a7zd-gawk-4.1.4.drv" [label = "gawk-4.1.4", shape = box, fontname = "dejavu sans"];
"/gnu/store/n48xdjkvhlhj5mgdzy59n0dpb9vn0v78-grep-2.25.drv" [label = "grep-2.25", shape = box, fontname = "dejavu sans"];
"/gnu/store/i52csyja3036ns0zj6z85lkgz3wfyym7-coreutils-8.25.drv" [label = "coreutils-8.25", shape = box, fontname = "dejavu sans"];
"/gnu/store/nv4mnbz3mpd4gv80djk7762wyvxpccqk-make-4.2.1.drv" [label = "make-4.2.1", shape = box, fontname = "dejavu sans"];
"/gnu/store/2c60vlcvpj5dvmgklajkp7cpynhcqixr-bash-4.4.0.drv" [label = "bash-4.4.0", shape = box, fontname = "dejavu sans"];
"/gnu/store/zhc5c4s0xvzizpgpq2za6x84vxv57iy6-ld-wrapper-0.drv" [label = "ld-wrapper-0", shape = box, fontname = "dejavu sans"];
"/gnu/store/9k1js0kalh4s6q4hf0rgg2n0zdyrwi69-binutils-2.27.drv" [label = "binutils-2.27", shape = box, fontname = "dejavu sans"];
"/gnu/store/hv3dl3my12mq0gkwvckmnqccnckn39l0-gcc-4.9.4.drv" [label = "gcc-4.9.4", shape = box, fontname = "dejavu sans"];
"/gnu/store/qbfynm50snyn31w2c3paiw2n6wvzksg8-glibc-2.24.drv" [label = "glibc-2.24", shape = box, fontname = "dejavu sans"];
"/gnu/store/ir0lq2x7h64g2z5mlqvnlysjk2bc9xka-glibc-utf8-locales-2.24.drv" [label = "glibc-utf8-locales-2.24", shape = box, fontname = "dejavu sans"];
"/gnu/store/ywmblv73pqa8lqqz368g46ysz65pnm0v-acl-2.2.52.drv" [label = "acl-2.2.52", shape = box, fontname = "dejavu sans"];
"/gnu/store/7ijl8lybdx95kndajavdrpz05jdiwy9g-tar-1.29.drv" [label = "tar-1.29", shape = box, fontname = Helvetica];
"/gnu/store/0ykf3p023pzfcg2bw8ahjc7cvmc12zjq-gzip-1.8.drv" [label = "gzip-1.8", shape = box, fontname = Helvetica];
"/gnu/store/xx3hiqhqn0d94zz7b46hgggwsz3wjiiw-bzip2-1.0.6.drv" [label = "bzip2-1.0.6", shape = box, fontname = Helvetica];
"/gnu/store/kz8rzasivw4aflsv4rll3m539xybf226-xz-5.2.2.drv" [label = "xz-5.2.2", shape = box, fontname = Helvetica];
"/gnu/store/3pwrlsd23k2h104akxfj3cxhqcp973g9-file-5.28.drv" [label = "file-5.28", shape = box, fontname = Helvetica];
"/gnu/store/f1ww5vh5abnvr8b24llipm5dl89s5lq2-diffutils-3.5.drv" [label = "diffutils-3.5", shape = box, fontname = Helvetica];
"/gnu/store/0cbgdhhyh7hsgwq1x54n9vnq99rfjch9-patch-2.7.5.drv" [label = "patch-2.7.5", shape = box, fontname = Helvetica];
"/gnu/store/8xjnm44dfwwxp90hxq6zhb6qvia7rb3l-sed-4.2.2.drv" [label = "sed-4.2.2", shape = box, fontname = Helvetica];
"/gnu/store/54wjl6dp6rp47r67f4nyfqyv8nh456yc-findutils-4.6.0.drv" [label = "findutils-4.6.0", shape = box, fontname = Helvetica];
"/gnu/store/k951w49yw74ikg19l4mmlwfrq9w7a7zd-gawk-4.1.4.drv" [label = "gawk-4.1.4", shape = box, fontname = Helvetica];
"/gnu/store/n48xdjkvhlhj5mgdzy59n0dpb9vn0v78-grep-2.25.drv" [label = "grep-2.25", shape = box, fontname = Helvetica];
"/gnu/store/i52csyja3036ns0zj6z85lkgz3wfyym7-coreutils-8.25.drv" [label = "coreutils-8.25", shape = box, fontname = Helvetica];
"/gnu/store/nv4mnbz3mpd4gv80djk7762wyvxpccqk-make-4.2.1.drv" [label = "make-4.2.1", shape = box, fontname = Helvetica];
"/gnu/store/2c60vlcvpj5dvmgklajkp7cpynhcqixr-bash-4.4.0.drv" [label = "bash-4.4.0", shape = box, fontname = Helvetica];
"/gnu/store/zhc5c4s0xvzizpgpq2za6x84vxv57iy6-ld-wrapper-0.drv" [label = "ld-wrapper-0", shape = box, fontname = Helvetica];
"/gnu/store/9k1js0kalh4s6q4hf0rgg2n0zdyrwi69-binutils-2.27.drv" [label = "binutils-2.27", shape = box, fontname = Helvetica];
"/gnu/store/hv3dl3my12mq0gkwvckmnqccnckn39l0-gcc-4.9.4.drv" [label = "gcc-4.9.4", shape = box, fontname = Helvetica];
"/gnu/store/qbfynm50snyn31w2c3paiw2n6wvzksg8-glibc-2.24.drv" [label = "glibc-2.24", shape = box, fontname = Helvetica];
"/gnu/store/ir0lq2x7h64g2z5mlqvnlysjk2bc9xka-glibc-utf8-locales-2.24.drv" [label = "glibc-utf8-locales-2.24", shape = box, fontname = Helvetica];
"/gnu/store/ywmblv73pqa8lqqz368g46ysz65pnm0v-acl-2.2.52.drv" [label = "acl-2.2.52", shape = box, fontname = Helvetica];
"/gnu/store/ywmblv73pqa8lqqz368g46ysz65pnm0v-acl-2.2.52.drv" -> "/gnu/store/nw68wjvbw505klgpsavq7dk195wg8ffj-gettext-minimal-0.19.8.1.drv" [color = darkgoldenrod];
"/gnu/store/ywmblv73pqa8lqqz368g46ysz65pnm0v-acl-2.2.52.drv" -> "/gnu/store/jxcx1jcvzxb17dc69sfwb352vgwyr108-perl-5.24.0.drv" [color = darkgoldenrod];
"/gnu/store/ywmblv73pqa8lqqz368g46ysz65pnm0v-acl-2.2.52.drv" -> "/gnu/store/7ijl8lybdx95kndajavdrpz05jdiwy9g-tar-1.29.drv" [color = darkgoldenrod];
@@ -85,7 +85,7 @@ digraph "Guix bag-emerged" {
"/gnu/store/ywmblv73pqa8lqqz368g46ysz65pnm0v-acl-2.2.52.drv" -> "/gnu/store/qbfynm50snyn31w2c3paiw2n6wvzksg8-glibc-2.24.drv" [color = darkgoldenrod];
"/gnu/store/ywmblv73pqa8lqqz368g46ysz65pnm0v-acl-2.2.52.drv" -> "/gnu/store/ir0lq2x7h64g2z5mlqvnlysjk2bc9xka-glibc-utf8-locales-2.24.drv" [color = darkgoldenrod];
"/gnu/store/ywmblv73pqa8lqqz368g46ysz65pnm0v-acl-2.2.52.drv" -> "/gnu/store/gplx9i7c01f2r6qvm6d5w60iam73zmin-attr-2.4.47.drv" [color = darkgoldenrod];
"/gnu/store/nw68wjvbw505klgpsavq7dk195wg8ffj-gettext-minimal-0.19.8.1.drv" [label = "gettext-minimal-0.19.8.1", shape = box, fontname = "dejavu sans"];
"/gnu/store/nw68wjvbw505klgpsavq7dk195wg8ffj-gettext-minimal-0.19.8.1.drv" [label = "gettext-minimal-0.19.8.1", shape = box, fontname = Helvetica];
"/gnu/store/nw68wjvbw505klgpsavq7dk195wg8ffj-gettext-minimal-0.19.8.1.drv" -> "/gnu/store/7ijl8lybdx95kndajavdrpz05jdiwy9g-tar-1.29.drv" [color = dimgrey];
"/gnu/store/nw68wjvbw505klgpsavq7dk195wg8ffj-gettext-minimal-0.19.8.1.drv" -> "/gnu/store/0ykf3p023pzfcg2bw8ahjc7cvmc12zjq-gzip-1.8.drv" [color = dimgrey];
"/gnu/store/nw68wjvbw505klgpsavq7dk195wg8ffj-gettext-minimal-0.19.8.1.drv" -> "/gnu/store/xx3hiqhqn0d94zz7b46hgggwsz3wjiiw-bzip2-1.0.6.drv" [color = dimgrey];
@@ -106,7 +106,7 @@ digraph "Guix bag-emerged" {
"/gnu/store/nw68wjvbw505klgpsavq7dk195wg8ffj-gettext-minimal-0.19.8.1.drv" -> "/gnu/store/qbfynm50snyn31w2c3paiw2n6wvzksg8-glibc-2.24.drv" [color = dimgrey];
"/gnu/store/nw68wjvbw505klgpsavq7dk195wg8ffj-gettext-minimal-0.19.8.1.drv" -> "/gnu/store/ir0lq2x7h64g2z5mlqvnlysjk2bc9xka-glibc-utf8-locales-2.24.drv" [color = dimgrey];
"/gnu/store/nw68wjvbw505klgpsavq7dk195wg8ffj-gettext-minimal-0.19.8.1.drv" -> "/gnu/store/4dql1pzyivg87jwyfmmkwc6jll1vnizc-expat-2.2.0.drv" [color = dimgrey];
"/gnu/store/4dql1pzyivg87jwyfmmkwc6jll1vnizc-expat-2.2.0.drv" [label = "expat-2.2.0", shape = box, fontname = "dejavu sans"];
"/gnu/store/4dql1pzyivg87jwyfmmkwc6jll1vnizc-expat-2.2.0.drv" [label = "expat-2.2.0", shape = box, fontname = Helvetica];
"/gnu/store/4dql1pzyivg87jwyfmmkwc6jll1vnizc-expat-2.2.0.drv" -> "/gnu/store/7ijl8lybdx95kndajavdrpz05jdiwy9g-tar-1.29.drv" [color = darkviolet];
"/gnu/store/4dql1pzyivg87jwyfmmkwc6jll1vnizc-expat-2.2.0.drv" -> "/gnu/store/0ykf3p023pzfcg2bw8ahjc7cvmc12zjq-gzip-1.8.drv" [color = darkviolet];
"/gnu/store/4dql1pzyivg87jwyfmmkwc6jll1vnizc-expat-2.2.0.drv" -> "/gnu/store/xx3hiqhqn0d94zz7b46hgggwsz3wjiiw-bzip2-1.0.6.drv" [color = darkviolet];
@@ -126,7 +126,7 @@ digraph "Guix bag-emerged" {
"/gnu/store/4dql1pzyivg87jwyfmmkwc6jll1vnizc-expat-2.2.0.drv" -> "/gnu/store/hv3dl3my12mq0gkwvckmnqccnckn39l0-gcc-4.9.4.drv" [color = darkviolet];
"/gnu/store/4dql1pzyivg87jwyfmmkwc6jll1vnizc-expat-2.2.0.drv" -> "/gnu/store/qbfynm50snyn31w2c3paiw2n6wvzksg8-glibc-2.24.drv" [color = darkviolet];
"/gnu/store/4dql1pzyivg87jwyfmmkwc6jll1vnizc-expat-2.2.0.drv" -> "/gnu/store/ir0lq2x7h64g2z5mlqvnlysjk2bc9xka-glibc-utf8-locales-2.24.drv" [color = darkviolet];
"/gnu/store/gplx9i7c01f2r6qvm6d5w60iam73zmin-attr-2.4.47.drv" [label = "attr-2.4.47", shape = box, fontname = "dejavu sans"];
"/gnu/store/gplx9i7c01f2r6qvm6d5w60iam73zmin-attr-2.4.47.drv" [label = "attr-2.4.47", shape = box, fontname = Helvetica];
"/gnu/store/gplx9i7c01f2r6qvm6d5w60iam73zmin-attr-2.4.47.drv" -> "/gnu/store/nw68wjvbw505klgpsavq7dk195wg8ffj-gettext-minimal-0.19.8.1.drv" [color = peachpuff4];
"/gnu/store/gplx9i7c01f2r6qvm6d5w60iam73zmin-attr-2.4.47.drv" -> "/gnu/store/7ijl8lybdx95kndajavdrpz05jdiwy9g-tar-1.29.drv" [color = peachpuff4];
"/gnu/store/gplx9i7c01f2r6qvm6d5w60iam73zmin-attr-2.4.47.drv" -> "/gnu/store/0ykf3p023pzfcg2bw8ahjc7cvmc12zjq-gzip-1.8.drv" [color = peachpuff4];
@@ -148,7 +148,7 @@ digraph "Guix bag-emerged" {
"/gnu/store/gplx9i7c01f2r6qvm6d5w60iam73zmin-attr-2.4.47.drv" -> "/gnu/store/qbfynm50snyn31w2c3paiw2n6wvzksg8-glibc-2.24.drv" [color = peachpuff4];
"/gnu/store/gplx9i7c01f2r6qvm6d5w60iam73zmin-attr-2.4.47.drv" -> "/gnu/store/ir0lq2x7h64g2z5mlqvnlysjk2bc9xka-glibc-utf8-locales-2.24.drv" [color = peachpuff4];
"/gnu/store/gplx9i7c01f2r6qvm6d5w60iam73zmin-attr-2.4.47.drv" -> "/gnu/store/jxcx1jcvzxb17dc69sfwb352vgwyr108-perl-5.24.0.drv" [color = peachpuff4];
"/gnu/store/7gqg2kmrm1bjgphnd70ps5c11gqml571-gmp-6.1.1.drv" [label = "gmp-6.1.1", shape = box, fontname = "dejavu sans"];
"/gnu/store/7gqg2kmrm1bjgphnd70ps5c11gqml571-gmp-6.1.1.drv" [label = "gmp-6.1.1", shape = box, fontname = Helvetica];
"/gnu/store/7gqg2kmrm1bjgphnd70ps5c11gqml571-gmp-6.1.1.drv" -> "/gnu/store/d1n7i55s1zcwzi21pnsxhamk3b1zf61d-m4-1.4.17.drv" [color = darkgoldenrod];
"/gnu/store/7gqg2kmrm1bjgphnd70ps5c11gqml571-gmp-6.1.1.drv" -> "/gnu/store/7ijl8lybdx95kndajavdrpz05jdiwy9g-tar-1.29.drv" [color = darkgoldenrod];
"/gnu/store/7gqg2kmrm1bjgphnd70ps5c11gqml571-gmp-6.1.1.drv" -> "/gnu/store/0ykf3p023pzfcg2bw8ahjc7cvmc12zjq-gzip-1.8.drv" [color = darkgoldenrod];
@@ -169,7 +169,7 @@ digraph "Guix bag-emerged" {
"/gnu/store/7gqg2kmrm1bjgphnd70ps5c11gqml571-gmp-6.1.1.drv" -> "/gnu/store/hv3dl3my12mq0gkwvckmnqccnckn39l0-gcc-4.9.4.drv" [color = darkgoldenrod];
"/gnu/store/7gqg2kmrm1bjgphnd70ps5c11gqml571-gmp-6.1.1.drv" -> "/gnu/store/qbfynm50snyn31w2c3paiw2n6wvzksg8-glibc-2.24.drv" [color = darkgoldenrod];
"/gnu/store/7gqg2kmrm1bjgphnd70ps5c11gqml571-gmp-6.1.1.drv" -> "/gnu/store/ir0lq2x7h64g2z5mlqvnlysjk2bc9xka-glibc-utf8-locales-2.24.drv" [color = darkgoldenrod];
"/gnu/store/d1n7i55s1zcwzi21pnsxhamk3b1zf61d-m4-1.4.17.drv" [label = "m4-1.4.17", shape = box, fontname = "dejavu sans"];
"/gnu/store/d1n7i55s1zcwzi21pnsxhamk3b1zf61d-m4-1.4.17.drv" [label = "m4-1.4.17", shape = box, fontname = Helvetica];
"/gnu/store/d1n7i55s1zcwzi21pnsxhamk3b1zf61d-m4-1.4.17.drv" -> "/gnu/store/7ijl8lybdx95kndajavdrpz05jdiwy9g-tar-1.29.drv" [color = cyan3];
"/gnu/store/d1n7i55s1zcwzi21pnsxhamk3b1zf61d-m4-1.4.17.drv" -> "/gnu/store/0ykf3p023pzfcg2bw8ahjc7cvmc12zjq-gzip-1.8.drv" [color = cyan3];
"/gnu/store/d1n7i55s1zcwzi21pnsxhamk3b1zf61d-m4-1.4.17.drv" -> "/gnu/store/xx3hiqhqn0d94zz7b46hgggwsz3wjiiw-bzip2-1.0.6.drv" [color = cyan3];
@@ -189,7 +189,7 @@ digraph "Guix bag-emerged" {
"/gnu/store/d1n7i55s1zcwzi21pnsxhamk3b1zf61d-m4-1.4.17.drv" -> "/gnu/store/hv3dl3my12mq0gkwvckmnqccnckn39l0-gcc-4.9.4.drv" [color = cyan3];
"/gnu/store/d1n7i55s1zcwzi21pnsxhamk3b1zf61d-m4-1.4.17.drv" -> "/gnu/store/qbfynm50snyn31w2c3paiw2n6wvzksg8-glibc-2.24.drv" [color = cyan3];
"/gnu/store/d1n7i55s1zcwzi21pnsxhamk3b1zf61d-m4-1.4.17.drv" -> "/gnu/store/ir0lq2x7h64g2z5mlqvnlysjk2bc9xka-glibc-utf8-locales-2.24.drv" [color = cyan3];
"/gnu/store/ijv3y5l1fbbzwb77lc867r1qbsf147i8-libcap-2.24.drv" [label = "libcap-2.24", shape = box, fontname = "dejavu sans"];
"/gnu/store/ijv3y5l1fbbzwb77lc867r1qbsf147i8-libcap-2.24.drv" [label = "libcap-2.24", shape = box, fontname = Helvetica];
"/gnu/store/ijv3y5l1fbbzwb77lc867r1qbsf147i8-libcap-2.24.drv" -> "/gnu/store/jxcx1jcvzxb17dc69sfwb352vgwyr108-perl-5.24.0.drv" [color = blue];
"/gnu/store/ijv3y5l1fbbzwb77lc867r1qbsf147i8-libcap-2.24.drv" -> "/gnu/store/7ijl8lybdx95kndajavdrpz05jdiwy9g-tar-1.29.drv" [color = blue];
"/gnu/store/ijv3y5l1fbbzwb77lc867r1qbsf147i8-libcap-2.24.drv" -> "/gnu/store/0ykf3p023pzfcg2bw8ahjc7cvmc12zjq-gzip-1.8.drv" [color = blue];
+9 -9
View File
@@ -1,24 +1,24 @@
digraph "Guix package" {
"72851008" [label = "coreutils-8.25", shape = box, fontname = "dejavu sans"];
"72851008" [label = "coreutils-8.25", shape = box, fontname = Helvetica];
"72851008" -> "49728512" [color = darkseagreen];
"72851008" -> "74872512" [color = darkseagreen];
"72851008" -> "53180864" [color = darkseagreen];
"72851008" -> "75199232" [color = darkseagreen];
"49728512" [label = "perl-5.24.0", shape = box, fontname = "dejavu sans"];
"74872512" [label = "acl-2.2.52", shape = box, fontname = "dejavu sans"];
"49728512" [label = "perl-5.24.0", shape = box, fontname = Helvetica];
"74872512" [label = "acl-2.2.52", shape = box, fontname = Helvetica];
"74872512" -> "74873280" [color = red];
"74872512" -> "49728512" [color = red];
"74872512" -> "74872704" [color = red];
"74873280" [label = "gettext-minimal-0.19.8.1", shape = box, fontname = "dejavu sans"];
"74873280" [label = "gettext-minimal-0.19.8.1", shape = box, fontname = Helvetica];
"74873280" -> "41550784" [color = cyan3];
"41550784" [label = "expat-2.2.0", shape = box, fontname = "dejavu sans"];
"74872704" [label = "attr-2.4.47", shape = box, fontname = "dejavu sans"];
"41550784" [label = "expat-2.2.0", shape = box, fontname = Helvetica];
"74872704" [label = "attr-2.4.47", shape = box, fontname = Helvetica];
"74872704" -> "74873280" [color = cyan3];
"74872704" -> "49728512" [color = cyan3];
"53180864" [label = "gmp-6.1.1", shape = box, fontname = "dejavu sans"];
"53180864" [label = "gmp-6.1.1", shape = box, fontname = Helvetica];
"53180864" -> "50262784" [color = darkgoldenrod];
"50262784" [label = "m4-1.4.17", shape = box, fontname = "dejavu sans"];
"75199232" [label = "libcap-2.24", shape = box, fontname = "dejavu sans"];
"50262784" [label = "m4-1.4.17", shape = box, fontname = Helvetica];
"75199232" [label = "libcap-2.24", shape = box, fontname = Helvetica];
"75199232" -> "49728512" [color = blue];
"75199232" -> "74872704" [color = blue];
-79
View File
@@ -1,79 +0,0 @@
digraph "Guix package" {
"139803511371136" [label = "gcc-core-mesboot0@2.95.3", shape = box, fontname = "dejavu 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 = "dejavu 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 = "dejavu 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 = "dejavu 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 = "dejavu 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 = "dejavu 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 = "dejavu sans"];
"139803511373072" -> "139803507105968" [color = cyan3];
"139803507105968" [label = "bootar@1b", shape = box, fontname = "dejavu sans"];
"139803507105968" -> "139803749199472" [color = dimgrey];
"139803749199472" [label = "guile-bootstrap@2.0", shape = ellipse, fontname = "dejavu sans"];
"139803507105792" [label = "gash-boot@0.3.0", shape = box, fontname = "dejavu sans"];
"139803507105792" -> "139803507105968" [color = darkviolet];
"139803507105792" -> "139803749199472" [color = darkviolet];
"139803511373600" [label = "gash-utils-boot@0.2.0", shape = box, fontname = "dejavu sans"];
"139803511373600" -> "139803507105968" [color = red];
"139803511373600" -> "139803507105792" [color = red];
"139803511373600" -> "139803749199472" [color = red];
"139803511371488" [label = "patch-mesboot@2.5.9", shape = box, fontname = "dejavu 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 = "dejavu 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 = "dejavu 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];
}
+8 -8
View File
@@ -1,12 +1,12 @@
digraph "Service Type Dependencies" {
shepherd [shape = box, fontname = "dejavu sans"];
pam [shape = box, fontname = "dejavu sans"];
etc [shape = box, fontname = "dejavu sans"];
profile [shape = box, fontname = "dejavu sans"];
accounts [shape = box, fontname = "dejavu sans"];
activation [shape = box, fontname = "dejavu sans"];
boot [shape = box, fontname = "dejavu sans"];
system [shape = house, fontname = "dejavu sans"];
shepherd [shape = box, fontname = Helvetica];
pam [shape = box, fontname = Helvetica];
etc [shape = box, fontname = Helvetica];
profile [shape = box, fontname = Helvetica];
accounts [shape = box, fontname = Helvetica];
activation [shape = box, fontname = Helvetica];
boot [shape = box, fontname = Helvetica];
system [shape = house, fontname = Helvetica];
lshd -> shepherd;
lshd -> pam;
udev -> shepherd;
+27 -27
View File
@@ -1,7 +1,7 @@
digraph "Guix shepherd-service" {
"user-file-systems" [label = "user-file-systems", shape = box, fontname = "dejavu sans"];
"user-file-systems" [label = "user-file-systems", shape = box, fontname = Helvetica];
"user-processes" -> "user-file-systems" [color = cyan3];
"user-processes" [label = "user-processes", shape = box, fontname = "dejavu sans"];
"user-processes" [label = "user-processes", shape = box, fontname = Helvetica];
"nscd" -> "user-processes" [color = magenta];
"guix-daemon" -> "user-processes" [color = blue];
"urandom-seed" -> "user-processes" [color = dimgrey];
@@ -13,45 +13,45 @@ digraph "Guix shepherd-service" {
"term-tty2" -> "user-processes" [color = darkviolet];
"term-tty1" -> "user-processes" [color = peachpuff4];
"networking" -> "user-processes" [color = dimgrey];
"nscd" [label = "nscd", shape = box, fontname = "dejavu sans"];
"guix-daemon" [label = "guix-daemon", shape = box, fontname = "dejavu sans"];
"urandom-seed" [label = "urandom-seed", shape = box, fontname = "dejavu sans"];
"syslogd" [label = "syslogd", shape = box, fontname = "dejavu sans"];
"nscd" [label = "nscd", shape = box, fontname = Helvetica];
"guix-daemon" [label = "guix-daemon", shape = box, fontname = Helvetica];
"urandom-seed" [label = "urandom-seed", shape = box, fontname = Helvetica];
"syslogd" [label = "syslogd", shape = box, fontname = Helvetica];
"ssh-daemon" -> "syslogd" [color = darkgoldenrod];
"ssh-daemon" [label = "ssh-daemon", shape = box, fontname = "dejavu sans"];
"term-tty6" [label = "term-tty6", shape = box, fontname = "dejavu sans"];
"ssh-daemon" [label = "ssh-daemon", shape = box, fontname = Helvetica];
"term-tty6" [label = "term-tty6", shape = box, fontname = Helvetica];
"console-font-tty6" -> "term-tty6" [color = darkgoldenrod];
"console-font-tty6" [label = "console-font-tty6", shape = box, fontname = "dejavu sans"];
"term-tty5" [label = "term-tty5", shape = box, fontname = "dejavu sans"];
"console-font-tty6" [label = "console-font-tty6", shape = box, fontname = Helvetica];
"term-tty5" [label = "term-tty5", shape = box, fontname = Helvetica];
"console-font-tty5" -> "term-tty5" [color = dimgrey];
"console-font-tty5" [label = "console-font-tty5", shape = box, fontname = "dejavu sans"];
"term-tty4" [label = "term-tty4", shape = box, fontname = "dejavu sans"];
"console-font-tty5" [label = "console-font-tty5", shape = box, fontname = Helvetica];
"term-tty4" [label = "term-tty4", shape = box, fontname = Helvetica];
"console-font-tty4" -> "term-tty4" [color = darkviolet];
"console-font-tty4" [label = "console-font-tty4", shape = box, fontname = "dejavu sans"];
"term-tty3" [label = "term-tty3", shape = box, fontname = "dejavu sans"];
"console-font-tty4" [label = "console-font-tty4", shape = box, fontname = Helvetica];
"term-tty3" [label = "term-tty3", shape = box, fontname = Helvetica];
"console-font-tty3" -> "term-tty3" [color = peachpuff4];
"console-font-tty3" [label = "console-font-tty3", shape = box, fontname = "dejavu sans"];
"term-tty2" [label = "term-tty2", shape = box, fontname = "dejavu sans"];
"console-font-tty3" [label = "console-font-tty3", shape = box, fontname = Helvetica];
"term-tty2" [label = "term-tty2", shape = box, fontname = Helvetica];
"console-font-tty2" -> "term-tty2" [color = darkseagreen];
"console-font-tty2" [label = "console-font-tty2", shape = box, fontname = "dejavu sans"];
"term-tty1" [label = "term-tty1", shape = box, fontname = "dejavu sans"];
"console-font-tty2" [label = "console-font-tty2", shape = box, fontname = Helvetica];
"term-tty1" [label = "term-tty1", shape = box, fontname = Helvetica];
"console-font-tty1" -> "term-tty1" [color = cyan3];
"console-font-tty1" [label = "console-font-tty1", shape = box, fontname = "dejavu sans"];
"networking" [label = "networking", shape = box, fontname = "dejavu sans"];
"console-font-tty1" [label = "console-font-tty1", shape = box, fontname = Helvetica];
"networking" [label = "networking", shape = box, fontname = Helvetica];
"ssh-daemon" -> "networking" [color = darkgoldenrod];
"root-file-system" [label = "root-file-system", shape = box, fontname = "dejavu sans"];
"root-file-system" [label = "root-file-system", shape = box, fontname = Helvetica];
"file-system-/dev/pts" -> "root-file-system" [color = peachpuff4];
"file-system-/dev/shm" -> "root-file-system" [color = darkgoldenrod];
"file-system-/gnu/store" -> "root-file-system" [color = blue];
"user-processes" -> "root-file-system" [color = cyan3];
"udev" -> "root-file-system" [color = darkseagreen];
"file-system-/dev/pts" [label = "file-system-/dev/pts", shape = box, fontname = "dejavu sans"];
"file-system-/dev/pts" [label = "file-system-/dev/pts", shape = box, fontname = Helvetica];
"user-processes" -> "file-system-/dev/pts" [color = cyan3];
"file-system-/dev/shm" [label = "file-system-/dev/shm", shape = box, fontname = "dejavu sans"];
"file-system-/dev/shm" [label = "file-system-/dev/shm", shape = box, fontname = Helvetica];
"user-processes" -> "file-system-/dev/shm" [color = cyan3];
"file-system-/gnu/store" [label = "file-system-/gnu/store", shape = box, fontname = "dejavu sans"];
"file-system-/gnu/store" [label = "file-system-/gnu/store", shape = box, fontname = Helvetica];
"user-processes" -> "file-system-/gnu/store" [color = cyan3];
"udev" [label = "udev", shape = box, fontname = "dejavu sans"];
"udev" [label = "udev", shape = box, fontname = Helvetica];
"term-tty6" -> "udev" [color = magenta];
"term-tty5" -> "udev" [color = red];
"term-tty4" -> "udev" [color = darkgoldenrod];
@@ -59,13 +59,13 @@ digraph "Guix shepherd-service" {
"term-tty2" -> "udev" [color = darkviolet];
"term-tty1" -> "udev" [color = peachpuff4];
"networking" -> "udev" [color = dimgrey];
"host-name" [label = "host-name", shape = box, fontname = "dejavu sans"];
"host-name" [label = "host-name", shape = box, fontname = Helvetica];
"term-tty6" -> "host-name" [color = magenta];
"term-tty5" -> "host-name" [color = red];
"term-tty4" -> "host-name" [color = darkgoldenrod];
"term-tty3" -> "host-name" [color = dimgrey];
"term-tty2" -> "host-name" [color = darkviolet];
"term-tty1" -> "host-name" [color = peachpuff4];
"loopback" [label = "loopback", shape = box, fontname = "dejavu sans"];
"loopback" [label = "loopback", shape = box, fontname = Helvetica];
}
+58 -162
View File
@@ -1,13 +1,10 @@
# GNU Guix --- Functional package management for GNU
# Copyright © 2016 Eric Bavier <bavier@member.fsf.org>
# Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
# Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
# Copyright © 2013 Andreas Enge <andreas@enge.fr>
# Copyright © 2016 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
# Copyright © 2016, 2018 Mathieu Lirzin <mthl@gnu.org>
# Copyright © 2018, 2021 Julien Lepiller <julien@lepiller.eu>
# Copyright © 2019 Timothy Sample <samplet@ngyro.com>
# Copyright © 2024 Janneke Nieuwenhuizen <janneke@gnu.org>
# Copyright © 2024 gemmaro <gemmaro.dev@gmail.com>
# Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
#
# This file is part of GNU Guix.
#
@@ -24,39 +21,13 @@
# You should have received a copy of the GNU General Public License
# along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
# If adding a language, update the following variables, and info_TEXINFOS.
MANUAL_LANGUAGES = de es fr it pt_BR ru zh_CN
COOKBOOK_LANGUAGES = de es fr it ko pt_BR ru sk sv ta zh_CN
# Arg1: A list of languages codes.
# Arg2: The file name stem.
lang_to_texinfo = $(foreach lang,$(1),%D%/$(2).$(lang).texi)
# Automake does not understand GNU Make non-standard extensions,
# unfortunately, so we cannot use the above patsubst-based function here.
info_TEXINFOS = %D%/guix.texi \
%D%/guix.de.texi \
%D%/guix.es.texi \
%D%/guix.fr.texi \
%D%/guix.it.texi \
%D%/guix.pt_BR.texi \
%D%/guix.ru.texi \
%D%/guix.zh_CN.texi \
%D%/guix-cookbook.texi \
%D%/guix-cookbook.de.texi \
%D%/guix-cookbook.es.texi \
%D%/guix-cookbook.fr.texi \
%D%/guix-cookbook.it.texi \
%D%/guix-cookbook.ko.texi \
%D%/guix-cookbook.pt_BR.texi \
%D%/guix-cookbook.ru.texi \
%D%/guix-cookbook.sk.texi \
%D%/guix-cookbook.sv.texi \
%D%/guix-cookbook.ta.texi \
%D%/guix-cookbook.zh_CN.texi
%D%/guix.de.texi \
%D%/guix.zh_CN.texi
%C%_guix_TEXINFOS = \
$(OS_CONFIG_EXAMPLES_TEXI) \
%D%/contributing.texi \
%D%/fdl-1.3.texi
@@ -65,7 +36,6 @@ DOT_FILES = \
%D%/images/bootstrap-packages.dot \
%D%/images/coreutils-graph.dot \
%D%/images/coreutils-bag-graph.dot \
%D%/images/gcc-core-mesboot0-graph.dot \
%D%/images/service-graph.dot \
%D%/images/shepherd-graph.dot
@@ -79,70 +49,65 @@ EXTRA_DIST += \
$(DOT_VECTOR_GRAPHICS) \
%D%/images/coreutils-size-map.eps \
%D%/environment-gdb.scm \
%D%/package-hello.scm \
%D%/package-hello.json
%D%/package-hello.scm
OS_CONFIG_EXAMPLES_TEXI = \
%D%/os-config-bare-bones.texi \
%D%/os-config-desktop.texi \
%D%/os-config-lightweight-desktop.texi \
%D%/he-config-bare-bones.scm
%D%/os-config-lightweight-desktop.texi
TRANSLATED_INFO = \
$(call lang_to_texinfo,$(MANUAL_LANGUAGES),guix) \
$(call lang_to_texinfo,$(MANUAL_LANGUAGES),contributing) \
$(call lang_to_texinfo,$(COOKBOOK_LANGUAGES),guix-cookbook)
TRANSLATED_INFO = \
%D%/guix.de.texi \
%D%/guix.es.texi \
%D%/guix.fr.texi \
%D%/guix.zh_CN.texi \
%D%/contributing.de.texi \
%D%/contributing.es.texi \
%D%/contributing.fr.texi \
%D%/contributing.zh_CN.texi
# Bundle this file so that makeinfo finds it in out-of-source-tree builds.
BUILT_SOURCES += $(OS_CONFIG_EXAMPLES_TEXI) $(TRANSLATED_INFO)
EXTRA_DIST += $(OS_CONFIG_EXAMPLES_TEXI) $(TRANSLATED_INFO)
MAINTAINERCLEANFILES = $(OS_CONFIG_EXAMPLES_TEXI) $(TRANSLATED_INFO)
PO4A_PARAMS := -M UTF-8 -L UTF-8 #master and localized encoding
PO4A_PARAMS += -k 0 # produce an output even if the translation is not complete
PO4A_PARAMS += -f texinfo # texinfo format
# When a change to guix.texi occurs, it is not translated immediately.
# Because @pxref and @xref commands are references to sections by name, they
# Because @pxref and @xref commands are reference to a section by name, they
# should be translated. If a modification adds a reference to a section, this
# reference is not translated, which means it references a section that does not
# exist.
# This command loops through the translated files looking for references. For
# each of these references, it tries to find the translation and replaces the
# reference name, even in untranslated strings.
# The last sed is a multiline sed because some references span multiple lines.
define xref_command
$(top_srcdir)/pre-inst-env $(GUILE) --no-auto-compile \
"$(top_srcdir)/build-aux/convert-xref.scm" \
$@.tmp $<
cat "$@.tmp" | egrep '@p?x?ref' -A1 | sed 'N;s|--\n||g;P;D' | sed 's|^| |g' | \
tr -d '\012' | sed 's|\(@p\?x\?ref\)|\n\1|g' | egrep '@p?x?ref' | \
sed 's|^.*@p\?x\?ref{\([^,}]*\).*$$|\1|g' | sort | uniq | while read e; do \
line=$$(grep -n "^msgid \"$$e\"" "$<" | cut -f1 --delimiter=":") ;\
((line++)) ;\
if [ "$$line" != "1" ]; then \
translation=$$(head -n $$line "$<" | tail -1 | grep msgstr | sed 's|msgstr "\(.*\)"|\1|') ;\
if [ "$$translation" != "" ]; then \
sed "N;s@\(p\?x\?ref\){$$(echo $$e | sed 's| |[\\n ]|g')\(,\|}\)@\1{$$translation\2@g;P;D" -i "$@.tmp" ;\
fi ;\
fi ;\
done
endef
# If /dev/null is used for this POT file path, a warning will be issued
# because the path extension is not 'pot'.
dummy_pot = $(shell mktemp --suffix=.pot)
$(srcdir)/%D%/guix.%.texi: po/doc/guix-manual.%.po $(srcdir)/%D%/contributing.%.texi guix/build/po.go
-$(AM_V_PO4A)$(PO4A) --no-update \
--variable localized="$@.tmp" \
--variable master="%D%/guix.texi" \
--variable po="$<" \
--variable pot=$(dummy_pot) \
po/doc/po4a.cfg
$(srcdir)/%D%/guix.%.texi: po/doc/guix-manual.%.po $(srcdir)/%D%/contributing.%.texi
-$(AM_V_PO4A)$(PO4A_TRANSLATE) $(PO4A_PARAMS) -m "%D%/guix.texi" -p "$<" -l "$@.tmp"
-sed -i "s|guix\.info|$$(basename "$@" | sed 's|texi$$|info|')|" "$@.tmp"
-$(AM_V_POXREF)LC_ALL=en_US.UTF-8 $(xref_command)
-$(AM_V_POXREF)$(xref_command)
-mv "$@.tmp" "$@"
$(srcdir)/%D%/guix-cookbook.%.texi: po/doc/guix-cookbook.%.po guix/build/po.go
-$(AM_V_PO4A)$(PO4A) --no-update \
--variable localized="$@.tmp" \
--variable master="%D%/guix-cookbook.texi" \
--variable po="$<" \
--variable pot=$(dummy_pot) \
po/doc/po4a.cfg
-sed -i "s|guix-cookbook\.info|$$(basename "$@" | sed 's|texi$$|info|')|" "$@.tmp"
-$(AM_V_POXREF)LC_ALL=en_US.UTF-8 $(xref_command)
-mv "$@.tmp" "$@"
$(srcdir)/%D%/contributing.%.texi: po/doc/guix-manual.%.po guix/build/po.go
-$(AM_V_PO4A)$(PO4A) --no-update \
--variable localized="$@.tmp" \
--variable master="%D%/contributing.texi" \
--variable po="$<" \
--variable pot=$(dummy_pot) \
po/doc/po4a.cfg
-$(AM_V_POXREF)LC_ALL=en_US.UTF-8 $(xref_command)
$(srcdir)/%D%/contributing.%.texi: po/doc/guix-manual.%.po
-$(AM_V_PO4A)$(PO4A_TRANSLATE) $(PO4A_PARAMS) -m "%D%/contributing.texi" -p "$<" -l "$@.tmp"
-$(AM_V_POXREF)$(xref_command)
-mv "$@.tmp" "$@"
%D%/os-config-%.texi: gnu/system/examples/%.tmpl
@@ -168,25 +133,20 @@ DOT_OPTIONS = \
-Nfontsize=9 -Nheight=.1 -Nwidth=.1
.dot.png:
$(AM_V_DOT)$(DOT) -Tpng $(DOT_OPTIONS) < "$<" > "$(srcdir)/$@.tmp"
$(AM_V_at)mv "$(srcdir)/$@.tmp" "$(srcdir)/$@"
$(AM_V_DOT)$(DOT) -Tpng $(DOT_OPTIONS) < "$<" > "$(srcdir)/$@.tmp"; \
mv "$(srcdir)/$@.tmp" "$(srcdir)/$@"
.dot.pdf:
$(AM_V_DOT)set -e; export TZ=UTC0; \
$(DOT) -Tpdf $(DOT_OPTIONS) < "$<" > "$(srcdir)/$@.tmp"
$(AM_V_at)sed -ri \
-e 's,(/CreationDate \(D:).*\),\119700101000000),' \
"$(srcdir)/$@.tmp"
$(AM_V_at)mv "$(srcdir)/$@.tmp" "$(srcdir)/$@"
$(AM_V_DOT)$(DOT) -Tpdf $(DOT_OPTIONS) < "$<" > "$(srcdir)/$@.tmp"; \
mv "$(srcdir)/$@.tmp" "$(srcdir)/$@"
.dot.eps:
$(AM_V_DOT)$(DOT) -Teps $(DOT_OPTIONS) < "$<" > "$(srcdir)/$@.tmp"
$(AM_v_at)! grep -q %%CreationDate "$(srcdir)/$@.tmp"
$(AM_V_at)mv "$(srcdir)/$@.tmp" "$@"
$(AM_V_DOT)$(DOT) -Teps $(DOT_OPTIONS) < "$<" > "$(srcdir)/$@.tmp"; \
mv "$(srcdir)/$@.tmp" "$(srcdir)/$@"
.png.eps:
$(AM_V_GEN)convert "$<" "$@-tmp.eps"
$(AM_V_at)mv "$@-tmp.eps" "$@"
$(AM_V_GEN)convert "$<" "$@-tmp.eps"; \
mv "$@-tmp.eps" "$@"
# We cannot add new dependencies to `%D%/guix.pdf' & co. (info "(automake)
# Extending"). Using the `-local' rules is imperfect, because they may be
@@ -211,55 +171,29 @@ sub_commands_mans = \
$(srcdir)/%D%/guix-archive.1 \
$(srcdir)/%D%/guix-build.1 \
$(srcdir)/%D%/guix-challenge.1 \
$(srcdir)/%D%/guix-container.1 \
$(srcdir)/%D%/guix-deploy.1 \
$(srcdir)/%D%/guix-describe.1 \
$(srcdir)/%D%/guix-download.1 \
$(srcdir)/%D%/guix-edit.1 \
$(srcdir)/%D%/guix-environment.1 \
$(srcdir)/%D%/guix-gc.1 \
$(srcdir)/%D%/guix-git.1 \
$(srcdir)/%D%/guix-graph.1 \
$(srcdir)/%D%/guix-hash.1 \
$(srcdir)/%D%/guix-home.1 \
$(srcdir)/%D%/guix-import.1 \
$(srcdir)/%D%/guix-lint.1 \
$(srcdir)/%D%/guix-offload.1 \
$(srcdir)/%D%/guix-pack.1 \
$(srcdir)/%D%/guix-package.1 \
$(srcdir)/%D%/guix-processes.1 \
$(srcdir)/%D%/guix-publish.1 \
$(srcdir)/%D%/guix-pull.1 \
$(srcdir)/%D%/guix-refresh.1 \
$(srcdir)/%D%/guix-repl.1 \
$(srcdir)/%D%/guix-shell.1 \
$(srcdir)/%D%/guix-size.1 \
$(srcdir)/%D%/guix-style.1 \
$(srcdir)/%D%/guix-system.1 \
$(srcdir)/%D%/guix-time-machine.1 \
$(srcdir)/%D%/guix-weather.1
if HAVE_GUILE_SSH
sub_commands_mans += $(srcdir)/%D%/guix-copy.1
endif HAVE_GUILE_SSH
# Assume that cross-compiled commands cannot be executed.
if !CROSS_COMPILING
$(srcdir)/%D%/guix-system.1
dist_man1_MANS = \
$(srcdir)/%D%/guix.1 \
$(sub_commands_mans)
endif
gen_man = \
LANGUAGE= $(top_builddir)/pre-inst-env $(HELP2MAN) \
$(HELP2MANFLAGS)
HELP2MANFLAGS = --source=GNU --info-page=$(PACKAGE_TARNAME)
# help2man reproducibility
SOURCE_DATE_EPOCH = $(shell git show HEAD --format=%ct --no-patch 2>/dev/null || echo 1)
export SOURCE_DATE_EPOCH
$(srcdir)/%D%/guix.1: scripts/guix.in $(sub_commands_mans)
-$(AM_V_HELP2MAN)$(gen_man) --output="$@" `basename "$@" .1`
@@ -267,57 +201,19 @@ $(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
-@case '$?' in \
*$<*) $(AM_V_HELP2MAN:@%=%)$(gen_man) --output="$@" "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 $*";; \
*) : ;; \
esac
if BUILD_DAEMON
if !CROSS_COMPILING
dist_man1_MANS += $(srcdir)/%D%/guix-daemon.1
$(srcdir)/%D%/guix-daemon.1: guix-daemon$(EXEEXT)
$(srcdir)/%D%/guix-daemon.1: nix/nix-daemon/guix-daemon.cc
-$(AM_V_HELP2MAN)$(gen_man) --output="$@" `basename "$@" .1`
endif
endif
# Reproducible tarball
DIST_CONFIGURE_FLAGS = \
--localstatedir=/var \
--sysconfdir=/etc
# Delete all Autotools-generated files and rerun configure to ensure
# a clean cache and distributing reproducible versions.
auto-clean: maintainer-clean-vti doc-clean
rm -f ABOUT-NLS INSTALL
rm -f aclocal.m4 configure libtool Makefile.in
if test -e .git; then \
git clean -fdx -- '.am*' build-aux m4 po; \
else \
rm -rf .am*; \
$(MAKE) -C po/guix maintainer-clean; \
$(MAKE) -C po/packages maintainer-clean; \
fi
rm -f guile
rm -f guix-daemon nix/nix-daemon/guix_daemon-guix-daemon.o
# Automake fails if guix-cookbook-LANG.texi stubs are missing; running
# autoreconf -vif is not enough.
./bootstrap
# The dependency chain for the guix-cookbook-LANG.texi was cut on purpose;
# they must be deleted to ensure a rebuild.
rm -f $(filter-out %D%/guix.texi %D%/guix-cookbook.texi, $(info_TEXINFOS))
./configure $(DIST_CONFIGURE_FLAGS)
# Delete all generated doc files to ensure a clean cache and distributing
# reproducible versions.
doc-clean:
rm -f $(srcdir)/doc/*.1
rm -f $(srcdir)/doc/stamp*
rm -f $(DOT_FILES:%.dot=%.png)
rm -f $(DOT_VECTOR_GRAPHICS)
rm -f doc/images/coreutils-size-map.eps
-31
View File
@@ -1,31 +0,0 @@
[
{
"name": "myhello",
"version": "2.10",
"source": "mirror://gnu/hello/hello-2.10.tar.gz",
"build-system": "gnu",
"arguments": {
"tests?": false
},
"home-page": "https://www.gnu.org/software/hello/",
"synopsis": "Hello, GNU world: An example GNU package",
"description": "GNU Hello prints a greeting.",
"license": "GPL-3.0+",
"native-inputs": ["gettext"]
},
{
"name": "greeter",
"version": "1.0",
"source": "mirror://gnu/hello/hello-2.10.tar.gz",
"build-system": "gnu",
"arguments": {
"test-target": "foo",
"parallel-build?": false
},
"home-page": "https://example.com/",
"synopsis": "Greeter using GNU Hello",
"description": "This is a wrapper around GNU Hello.",
"license": "GPL-3.0+",
"inputs": ["myhello", "hello"]
}
]
-12
View File
@@ -1,12 +0,0 @@
abi <abi/4.0>,
include <tunables/global>
include <tunables/guix>
# Theres no point in confining the guix executable, since it can run
# any user code and so everything is expected. We just need to
# explicitly enable userns for systems with the
# kernel.apparmor_restrict_unprivileged_userns sysctl.
profile guix @{guix_storedir}/{*-guix-command,*-guix-*/bin/guix} flags=(unconfined) {
userns,
}
-88
View File
@@ -1,88 +0,0 @@
abi <abi/4.0>,
include <tunables/global>
include <tunables/guix>
profile guix-daemon @{guix_storedir}/*-{guix-daemon,guix}-*/bin/guix-daemon flags=(enforce,attach_disconnected.path=/disconnected) {
include <abstractions/base>
userns,
signal,
capability sys_admin,
capability net_admin,
capability sys_chroot,
capability setgid,
capability chown,
network dgram,
umount,
mount,
pivot_root,
# Paths inside build chroot
/real-root/ w,
/ w,
@{guix_localstatedir}/guix/** rwk,
/var/log/guix/** w,
owner @{PROC}/@{pid}/{fd/,environ} r,
owner @{PROC}/@{pid}/oom_score_adj w,
owner @{PROC}/@{pid}/uid_map rw,
owner @{PROC}/@{pid}/gid_map rw,
owner @{PROC}/@{pid}/setgroups w,
@{guix_storedir}/ r,
@{guix_storedir}/** rwlmk,
@{guix_storedir}/*/bin/guile cx -> guix-builder,
@{guix_storedir}/*-guix-command cx -> guix-helper,
@{guix_storedir}/*-guix-*/bin/guix cx -> guix-helper,
@{etc_rw}/nsswitch.conf r,
@{etc_rw}/passwd r,
@{etc_rw}/group r,
owner /tmp/** rwl,
owner /var/tmp/** rwl,
/usr/bin/newgidmap Ux,
# Site-specific additions and overrides. See local/README for details.
include if exists <local/guix-daemon>
profile guix-builder flags=(enforce,attach_disconnected.path=/disconnected) {
include <abstractions/base>
signal (receive),
@{guix_storedir}/** rwlmkux,
owner /tmp/** rwux,
@{PROC}/@{pid}/fd/ r,
/disconnected/** rw,
}
# This is for any time guix is called by the daemon as a helper:
# - guix download
# - guix discover
# - guix gc --list-busy
# - probably more?
profile guix-helper flags=(enforce,attach_disconnected.path=/disconnected) {
include <abstractions/base>
include <abstractions/nameservice>
signal (receive),
ptrace (read) peer=guix-daemon,
/disconnected/run/dbus/system_bus_socket rw,
dbus (send, receive),
@{guix_localstatedir}/guix/discover/ rw,
@{guix_localstatedir}/guix/discover/* rw,
@{guix_localstatedir}/guix/substitute/ rw,
@{guix_localstatedir}/guix/substitute/** rwk,
@{guix_sysconfdir}/guix/** r,
@{guix_storedir}/** rwlmix,
@{PROC}/ r,
owner @{PROC}/@{pid}/{fd/,environ} r,
}
}
-5
View File
@@ -1,5 +0,0 @@
@{guix_storedir} = @storedir@
@{guix_sysconfdir} = @guix_sysconfdir@
@{guix_localstatedir} = @guix_localstatedir@
include if exists <tunables/guix.d>
-484
View File
@@ -1,484 +0,0 @@
#!@GUILE@ \
--no-auto-compile -s
!#
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2020, 2021, 2022, 2023 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
;;; Copyright © 2021 Xinglu Chen <public@yoctocell.xyz>
;;; Copyright © 2022 Maxim Cournoyer <maxim@guixotic.coop>
;;;
;;; 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/>.
;;; Commentary:
;; This script stages and commits changes to package definitions.
;;; Code:
(use-modules ((sxml xpath) #:prefix xpath:)
(srfi srfi-1)
(srfi srfi-2)
(srfi srfi-9)
(srfi srfi-11)
(srfi srfi-26)
(ice-9 format)
(ice-9 popen)
(ice-9 match)
(ice-9 rdelim)
(ice-9 regex)
(ice-9 textual-ports)
(guix gexp))
(define* (break-string str #:optional (max-line-length 70))
"Break the string STR into lines that are no longer than MAX-LINE-LENGTH.
Return a single string."
(define (restore-line words)
(string-join (reverse words) " "))
(if (<= (string-length str) max-line-length)
str
(let ((words+lengths (map (lambda (word)
(cons word (string-length word)))
(string-tokenize str))))
(match (fold (match-lambda*
(((word . length)
(count current lines))
(let ((new-count (+ count length 1)))
(if (< new-count max-line-length)
(list new-count
(cons word current)
lines)
(list length
(list word)
(cons (restore-line current) lines))))))
'(0 () ())
words+lengths)
((_ last-words lines)
(string-join (reverse (cons (restore-line last-words) lines))
"\n"))))))
(define* (break-string-with-newlines str #:optional (max-line-length 70))
"Break the lines of string STR into lines that are no longer than
MAX-LINE-LENGTH. Return a single string."
(string-join (map (cut break-string <> max-line-length)
(string-split str #\newline))
"\n"))
(define (read-excursion port)
"Read an expression from PORT and reset the port position before returning
the expression."
(let ((start (ftell port))
(result (read port)))
(seek port start SEEK_SET)
result))
(define (lines+offsets-with-opening-parens port)
"Record all line numbers (and their offsets) where an opening parenthesis is
found in column 0. The resulting list is in reverse order."
(let loop ((acc '())
(number 0))
(let ((line (read-line port)))
(cond
((eof-object? line) acc)
((string-prefix? "(" line)
(loop (cons (cons number ;line number
(- (ftell port)
(string-length line) 1)) ;offset
acc)
(1+ number)))
(else (loop acc (1+ number)))))))
(define (surrounding-sexp port target-line-no)
"Return the top-level S-expression surrounding the change at line number
TARGET-LINE-NO in PORT."
(let* ((line-numbers+offsets
(lines+offsets-with-opening-parens port))
(closest-offset
(or (and=> (list-index (match-lambda
((line-number . offset)
(< line-number target-line-no)))
line-numbers+offsets)
(lambda (index)
(match (list-ref line-numbers+offsets index)
((line-number . offset) offset))))
(error "Could not find surrounding S-expression for line"
target-line-no))))
(seek port closest-offset SEEK_SET)
(read port)))
;;; Whether the hunk contains a newly added package (definition), a removed
;;; package (removal) or something else (#false).
(define hunk-types '(addition removal #false))
(define-record-type <hunk>
(make-hunk file-name
old-line-number
new-line-number
diff-lines
type)
hunk?
(file-name hunk-file-name)
;; Line number before the change
(old-line-number hunk-old-line-number)
;; Line number after the change
(new-line-number hunk-new-line-number)
;; The full diff to be used with "git apply --cached"
(diff-lines hunk-diff-lines)
;; Does this hunk add or remove a package?
(type hunk-type)) ;one of 'hunk-types'
(define* (hunk->patch hunk #:optional (port (current-output-port)))
(let ((file-name (hunk-file-name hunk)))
(format port
"diff --git a/~a b/~a~%--- a/~a~%+++ b/~a~%~a"
file-name file-name file-name file-name
(string-join (hunk-diff-lines hunk) ""))))
(define (diff-info)
"Read the diff and return a list of <hunk> values."
(let ((port (open-pipe* OPEN_READ
"git" "diff-files"
"--no-prefix"
;; Only include one context line to avoid lumping in
;; new definitions with changes to existing
;; definitions.
"--unified=1"
"--" "gnu")))
(define (extract-line-number line-tag)
(abs (string->number
(car (string-split line-tag #\,)))))
(define (read-hunk)
(let loop ((lines '())
(type #false))
(let ((line (read-line port 'concat)))
(cond
((eof-object? line)
(values (reverse lines) type))
((or (string-prefix? "@@ " line)
(string-prefix? "diff --git" line))
(unget-string port line)
(values (reverse lines) type))
(else
(loop (cons line lines)
(or type
(cond
((string-prefix? "+(define" line)
'addition)
((string-prefix? "-(define" line)
'removal)
(else #false)))))))))
(define info
(let loop ((acc '())
(file-name #f))
(let ((line (read-line port)))
(cond
((eof-object? line) acc)
((string-prefix? "--- " line)
(match (string-split line #\space)
((_ file-name)
(loop acc file-name))))
((string-prefix? "@@ " line)
(match (string-split line #\space)
((_ old-start new-start . _)
(let-values
(((diff-lines type) (read-hunk)))
(loop (cons (make-hunk file-name
(extract-line-number old-start)
(extract-line-number new-start)
(cons (string-append line "\n")
diff-lines)
type) acc)
file-name)))))
(else (loop acc file-name))))))
(close-pipe port)
info))
(define (lines-to-first-change hunk)
"Return the number of diff lines until the first change."
(1- (count (lambda (line)
((negate char-set-contains?)
(char-set #\+ #\-)
(string-ref line 0)))
(hunk-diff-lines hunk))))
(define %original-file-cache
(make-hash-table))
(define (read-original-file file-name)
"Return the contents of FILE-NAME prior to any changes."
(let* ((port (open-pipe* OPEN_READ
"git" "cat-file" "-p" (string-append
"HEAD:" file-name)))
(contents (get-string-all port)))
(close-pipe port)
contents))
(define (read-original-file* file-name)
"Caching variant of READ-ORIGINAL-FILE."
(or (hashv-ref %original-file-cache file-name)
(let ((value (read-original-file file-name)))
(hashv-set! %original-file-cache file-name value)
value)))
(define (old-sexp hunk)
"Using the diff information in HUNK return the unmodified S-expression
corresponding to the top-level definition containing the staged changes."
;; TODO: We can't seek with a pipe port...
(call-with-input-string (read-original-file* (hunk-file-name hunk))
(lambda (port)
(surrounding-sexp port
(+ (lines-to-first-change hunk)
(hunk-old-line-number hunk))))))
(define (new-sexp hunk)
"Using the diff information in HUNK return the modified S-expression
corresponding to the top-level definition containing the staged changes."
(call-with-input-file (hunk-file-name hunk)
(lambda (port)
(surrounding-sexp port
(+ (lines-to-first-change hunk)
(hunk-new-line-number hunk))))))
(define* (change-commit-message file-name old new #:optional (port (current-output-port)))
"Print ChangeLog commit message for changes between OLD and NEW."
(define (get-values expr field)
(match ((xpath:node-or
(xpath:sxpath `(*any* *any* package ,field quasiquote *))
;; For let binding
(xpath:sxpath `(*any* *any* (*any*) package ,field quasiquote *)))
(cons '*TOP* expr))
(()
;; New-style plain lists
(match ((xpath:node-or
(xpath:sxpath `(*any* *any* package ,field list *))
;; For let binding
(xpath:sxpath `(*any* *any* (*any*) package ,field list *)))
(cons '*TOP* expr))
((inner) inner)
(_ '())))
;; Old-style labelled inputs
((first . rest)
(map cadadr first))))
(define (listify items)
(match items
((one) one)
((one two)
(string-append one " and " two))
((one two . more)
(string-append (string-join (drop-right items 1) ", ")
", and " (first (take-right items 1))))))
(define variable-name
(second old))
(define version
(match ((xpath:node-or
(xpath:sxpath '(*any* *any* package version *any*))
;; For let binding
(xpath:sxpath '(*any* *any* (*any*) package version *any*)))
(cons '*TOP* new))
(() #f)
((version . rest) version)))
(if version
(format port
"gnu: ~a: Update to ~a.~%~%* ~a (~a): Update to ~a.~%"
variable-name version file-name variable-name version)
(format port
"gnu: ~a: Update.~%~%* ~a (~a): Update.~%"
variable-name file-name variable-name))
(for-each (lambda (field)
(let ((old-values (get-values old field))
(new-values (get-values new field)))
(or (equal? old-values new-values)
(let ((removed (lset-difference equal? old-values new-values))
(added (lset-difference equal? new-values old-values)))
(unless (and (null? added) (null? removed))
(format port
"[~a]: ~a~%" field
(break-string
;; A dependency can be a list of (pkg output).
(match (list (map object->string removed)
(map object->string added))
((() added)
(format #f "Add ~a."
(listify added)))
((removed ())
(format #f "Remove ~a."
(listify removed)))
((removed added)
(format #f "Remove ~a; add ~a."
(listify removed)
(listify added)))))))))))
'(inputs propagated-inputs native-inputs)))
(define* (add-commit-message file-name variable-name
#:optional (port (current-output-port)))
"Print ChangeLog commit message for a change to FILE-NAME adding a
definition."
(format port "gnu: Add ~a.~%~%* ~a (~a): New variable.~%"
variable-name file-name variable-name))
(define* (remove-commit-message file-name variable-name
#:optional (port (current-output-port)))
"Print ChangeLog commit message for a change to FILE-NAME removing a
definition."
(format port "gnu: Remove ~a.~%~%* ~a (~a): Delete variable.~%"
variable-name file-name variable-name))
(define* (custom-commit-message file-name variable-name message changelog
#:optional (port (current-output-port)))
"Print custom commit message for a change to VARIABLE-NAME in FILE-NAME, using
MESSAGE as the commit message and CHANGELOG as the body of the ChangeLog
entry. If CHANGELOG is #f, the commit message is reused. If CHANGELOG already
contains ': ', no colon is inserted between the location and body of the
ChangeLog entry."
(define (trim msg)
(string-trim-right (string-trim-both msg) (char-set #\.)))
(define (changelog-has-location? changelog)
(->bool (string-match "^[[:graph:]]+:[[:blank:]]" changelog)))
(let* ((message (trim message))
(changelog (if changelog (trim changelog) message))
(message/f (format #f "gnu: ~a: ~a." variable-name message))
(changelog/f (if (changelog-has-location? changelog)
(format #f "* ~a (~a)~a."
file-name variable-name changelog)
(format #f "* ~a (~a): ~a."
file-name variable-name changelog))))
(format port
"~a~%~%~a~%"
(break-string-with-newlines message/f 72)
(break-string-with-newlines changelog/f 72))))
(define (add-copyright-line line)
"Add the copyright line on LINE to the previous commit."
(let ((author (match:substring
(string-match "^\\+;;; Copyright ©[^[:alpha:]]+(.*)$" line)
1)))
(format
(current-output-port) "Amend and add copyright line for ~a~%" author)
(system* "git" "commit" "--amend" "--no-edit")))
(define (group-hunks-by-sexp hunks)
"Return a list of pairs associating all hunks with the S-expression they are
modifying."
(fold (lambda (sexp hunk acc)
(match acc
(((previous-sexp . hunks) . rest)
(if (equal? sexp previous-sexp)
(cons (cons previous-sexp
(cons hunk hunks))
rest)
(cons (cons sexp (list hunk))
acc)))
(_
(cons (cons sexp (list hunk))
acc))))
'()
(map new-sexp hunks)
hunks))
(define (new+old+hunks hunks)
(map (match-lambda
((new . hunks)
(cons* new (old-sexp (first hunks)) hunks)))
(group-hunks-by-sexp hunks)))
(define %delay 1000)
(define (main . args)
(define* (change-commit-message* file-name old new #:rest rest)
(let ((changelog #f))
(match args
((or (message changelog) (message))
(apply custom-commit-message
file-name (second old) message changelog rest))
(_
(apply change-commit-message file-name old new rest)))))
(read-disable 'positions)
(match (diff-info)
(()
(display "Nothing to be done.\n" (current-error-port)))
(hunks
(let-values (((definitions changes) (partition hunk-type hunks)))
;; Additions/removals.
(for-each
(lambda (hunk)
(and-let* ((define-line (find (cut string-match "(\\+|-)\\(define" <>)
(hunk-diff-lines hunk)))
(variable-name (and=> (string-tokenize define-line)
second))
(commit-message-proc (match (hunk-type hunk)
('addition add-commit-message)
('removal remove-commit-message))))
(commit-message-proc (hunk-file-name hunk) variable-name)
(let ((port (open-pipe* OPEN_WRITE
"git" "apply"
"--cached"
"--unidiff-zero")))
(hunk->patch hunk port)
(unless (eqv? 0 (status:exit-val (close-pipe port)))
(error "Cannot apply")))
(let ((port (open-pipe* OPEN_WRITE "git" "commit" "-F" "-")))
(commit-message-proc (hunk-file-name hunk) variable-name port)
(usleep %delay)
(unless (eqv? 0 (status:exit-val (close-pipe port)))
(error "Cannot commit"))))
(usleep %delay))
definitions)
;; Changes.
(for-each
(match-lambda
((new old . hunks)
(for-each (lambda (hunk)
(let ((port (open-pipe* OPEN_WRITE
"git" "apply"
"--cached"
"--unidiff-zero")))
(hunk->patch hunk port)
(unless (eqv? 0 (status:exit-val (close-pipe port)))
(error "Cannot apply")))
(usleep %delay))
hunks)
(define copyright-line
(any (lambda (line) (and=> (string-prefix? "+;;; Copyright ©" line)
(const line)))
(hunk-diff-lines (first hunks))))
(cond
(copyright-line
(add-copyright-line copyright-line))
(else
(let ((port (open-pipe* OPEN_WRITE "git" "commit" "-F" "-")))
(change-commit-message* (hunk-file-name (first hunks))
old new)
(change-commit-message* (hunk-file-name (first hunks))
old new
port)
(usleep %delay)
(unless (eqv? 0 (status:exit-val (close-pipe port)))
(error "Cannot commit")))))))
(new+old+hunks (match definitions
('() changes) ;reuse
(_
;; XXX: we recompute the hunks here because previous
;; insertions lead to offsets.
(let-values (((definitions changes)
(partition hunk-type (diff-info))))
changes)))))))))
(apply main (cdr (command-line)))
+79 -215
View File
@@ -1,6 +1,5 @@
# GNU Guix --- Functional package management for GNU
# Copyright © 2015-2022 Ludovic Courtès <ludo@gnu.org>
# Copyright © 2021 Tobias Geerinck-Rice <me@tobias.gr>
# Copyright © 2015, 2016, 2017, 2018, 2019 Ludovic Courtès <ludo@gnu.org>
#
# This file is part of GNU Guix.
#
@@ -20,21 +19,6 @@
# Bash completion for Guix commands.
declare _guix_available_packages
declare _guix_commands
_guix_complete_command ()
{
local word_at_point="${COMP_WORDS[$COMP_CWORD]}"
if [ -z "$_guix_commands" ]
then
# Cache the list of commands to speed things up.
_guix_commands="$(${COMP_WORDS[0]} --help 2> /dev/null \
| grep '^ ' \
| sed '-es/^ *\([a-z-]\+\).*$/\1/g')"
fi
COMPREPLY+=($(compgen -W "$_guix_commands" -- "$word_at_point"))
}
_guix_complete_subcommand ()
{
@@ -42,7 +26,7 @@ _guix_complete_subcommand ()
local subcommands="$(${COMP_WORDS[0]} $command --help 2> /dev/null \
| grep '^ [a-z]' \
| sed -e's/^ \+\([a-z-]\+\).*$/\1/g')"
COMPREPLY+=($(compgen -W "$subcommands" -- "${COMP_WORDS[$COMP_CWORD]}"))
COMPREPLY=($(compgen -W "$subcommands" -- "${COMP_WORDS[$COMP_CWORD]}"))
}
_guix_complete_available_package ()
@@ -55,7 +39,7 @@ _guix_complete_available_package ()
_guix_available_packages="$(${COMP_WORDS[0]} package -A 2> /dev/null \
| cut -f1)"
fi
COMPREPLY+=($(compgen -W "$_guix_available_packages" -- "$prefix"))
COMPREPLY=($(compgen -W "$_guix_available_packages" -- "$prefix"))
}
_guix_complete_installed_package ()
@@ -65,40 +49,36 @@ _guix_complete_installed_package ()
local prefix="$1"
local packages="$(${COMP_WORDS[0]} package -I "^$prefix" 2> /dev/null \
| cut -f1)"
COMPREPLY+=($(compgen -W "$packages" -- "$prefix"))
COMPREPLY=($(compgen -W "$packages" -- "$prefix"))
}
_guix_complete_option ()
{
local command="${COMP_WORDS[$1]}"
local subcommand="${COMP_WORDS[$(($1 + 1))]}"
if [ $1 -eq 0 ]
then
command=""
subcommand=""
elif _guix_is_option "$subcommand"
then
subcommand=""
fi
local options="$(${COMP_WORDS[0]} $command $subcommand --help 2> /dev/null \
local subcommand
case "${COMP_WORDS[2]}" in
-*) subcommand="";;
[a-z]*) subcommand="${COMP_WORDS[2]}";;
esac
local options="$(${COMP_WORDS[0]} ${COMP_WORDS[1]} $subcommand --help 2> /dev/null \
| grep '^ \+-' \
| sed -e's/^.*--\([a-zA-Z0-9_-]\+\)\(=\?\).*/--\1\2/g')"
compopt -o nospace
COMPREPLY+=($(compgen -W "$options" -- "$2"))
COMPREPLY=($(compgen -W "$options" -- "${COMP_WORDS[${#COMP_WORDS[*]} - 1]}"))
}
_guix_is_option ()
_guix_is_command ()
{
case "$1" in
-*)
true
;;
*)
false
;;
esac
local word
local result="false"
for word in ${COMP_WORDS[*]}
do
if [ "$word" = "$1" ]
then
result=true
break
fi
done
$result
}
_guix_is_removing ()
@@ -117,60 +97,22 @@ _guix_is_removing ()
$result
}
_guix_is_short_option ()
{
case "${COMP_WORDS[$COMP_CWORD - 1]}" in
--*) false;;
-*$1) true ;;
*) false ;;
esac
}
_guix_is_long_option ()
{
# Don't handle (non-GNU?) --long-option VALUE, as Guix doesn't either.
case "${COMP_WORDS[$COMP_CWORD]}" in
--$1=*) true ;;
*) false ;;
esac
}
_guix_is_dash_f ()
{
_guix_is_short_option f ||
_guix_is_long_option file ||
_guix_is_long_option install-from-file ||
_guix_is_long_option whole-file
}
_guix_is_dash_l ()
{
_guix_is_short_option l ||
_guix_is_long_option load
}
_guix_is_dash_L ()
{
_guix_is_short_option L ||
_guix_is_long_option load-path
[ "${COMP_WORDS[$COMP_CWORD - 1]}" = "-L" ] \
|| { case "${COMP_WORDS[$COMP_CWORD]}" in
--load-path=*) true;;
*) false;;
esac }
}
_guix_is_dash_m ()
{
_guix_is_short_option m ||
_guix_is_long_option manifest
}
_guix_is_dash_C ()
{
_guix_is_short_option C ||
_guix_is_long_option channels
}
_guix_is_dash_p ()
{
_guix_is_short_option p ||
_guix_is_long_option profile
[ "${COMP_WORDS[$COMP_CWORD - 1]}" = "-m" ] \
|| { case "${COMP_WORDS[$COMP_CWORD]}" in
--manifest=*) true;;
*) false;;
esac }
}
_guix_complete_file ()
@@ -180,69 +122,43 @@ _guix_complete_file ()
COMPREPLY=()
}
_guix_complete_available_package_or_store_file ()
{
_guix_complete_available_package "$@"
# The current _guix_complete_file implementation doesn't compose (append to
# COMPREPLY), so we suggest file names only if no package names matched.
if [[ -z "$COMPREPLY" ]]
then
_guix_complete_file # TODO: restrict to store files
fi
}
_guix_complete_pid ()
{
local pids="$(cd /proc; echo [0-9]*)"
COMPREPLY+=($(compgen -W "$pids" -- "$1"))
COMPREPLY=($(compgen -W "$pids" -- "$1"))
}
declare _guix_subcommands
_guix_complete ()
{
local word_count=${#COMP_WORDS[*]}
local word_at_point="${COMP_WORDS[$COMP_CWORD]}"
# Find the innermost command at point, e.g. "build" in the case of
# "guix time-machine OPTIONS -- build<Tab>" -- but "time-machine" if
# point is moved before "build".
local command_index=0
local command
local word_index=0
local word
local expect_command="true"
while [[ $((++word_index)) -le COMP_CWORD ]]
do
word="${COMP_WORDS[$word_index]}"
if $expect_command
then
command_index=$word_index
command="$word"
expect_command="false"
continue
fi
if [[ "$word" = "--" ]]
then
case "$command" in
environment|shell)
break
;;
time-machine)
expect_command="true"
;;
esac
fi
done
if [ "$COMP_CWORD" -gt 1 ]
then
case "$word_at_point" in
-*)
_guix_complete_option "$word_at_point"
return
;;
esac
fi
case $COMP_CWORD in
$command_index)
_guix_complete_command
_guix_complete_option 0 "$word_at_point"
1)
if [ -z "$_guix_subcommands" ]
then
# Cache the list of subcommands to speed things up.
_guix_subcommands="$(guix --help 2> /dev/null \
| grep '^ ' | cut -c 2-)"
fi
COMPREPLY=($(compgen -W "$_guix_subcommands" -- "$word_at_point"))
;;
*)
if [[ "$command" = "package" ]]
if _guix_is_command "package"
then
if _guix_is_dash_L || _guix_is_dash_m || _guix_is_dash_p || _guix_is_dash_f
if _guix_is_dash_L || _guix_is_dash_m
then
_guix_complete_file
elif _guix_is_removing
@@ -251,108 +167,56 @@ _guix_complete ()
else
_guix_complete_available_package "$word_at_point"
fi
elif [[ "$command" = "install" ]]
elif _guix_is_command "install"
then
if _guix_is_dash_L || _guix_is_dash_m || _guix_is_dash_p
then
_guix_complete_file
else
_guix_complete_available_package "$word_at_point"
fi
elif [[ "$command" = "upgrade" || "$command" = "remove" ]]
_guix_complete_available_package "$word_at_point"
elif _guix_is_command "remove"
then
if _guix_is_dash_L || _guix_is_dash_m || _guix_is_dash_p
then
_guix_complete_file
else
_guix_complete_installed_package "$word_at_point"
fi
elif [[ "$command" = "build" ]]
_guix_complete_installed_package "$word_at_point"
elif _guix_is_command "upgrade"
then
_guix_complete_installed_package "$word_at_point"
elif _guix_is_command "build"
then
if _guix_is_dash_L || _guix_is_dash_m || _guix_is_dash_f
if _guix_is_dash_L
then
_guix_complete_file
else
_guix_complete_available_package_or_store_file "$word_at_point"
fi
elif [[ "$command" = "environment" || "$command" = "shell" ]]
then
if _guix_is_dash_f && [[ "$command" = "shell" ]]
then
# The otherwise identical guix environment lacks the -f option.
_guix_complete_file
elif _guix_is_dash_L || _guix_is_dash_m || _guix_is_dash_p || _guix_is_dash_l
then
_guix_complete_file
elif _guix_is_option "$word_at_point"
then
_guix_complete_option "$command_index" "$word_at_point"
else
_guix_complete_available_package "$word_at_point"
fi
elif [[ "$command" = "download" || "$command" = "gc" || "$command" = "hash" ]]
fi
elif _guix_is_command "download"
then
_guix_complete_file
elif [[ "$command" = "size" ]]
_guix_complete_file
elif _guix_is_command "system"
then
_guix_complete_available_package_or_store_file "$word_at_point"
elif [[ "$command" = "system" || "$command" = "home" ]]
then
case $((COMP_CWORD - command_index)) in
1) _guix_complete_subcommand;;
case $COMP_CWORD in
2) _guix_complete_subcommand;;
*) _guix_complete_file;; # TODO: restrict to *.scm
esac
elif [[ "$command" = "pull" ]]
then
if _guix_is_dash_C || _guix_is_dash_p
then
_guix_complete_file
fi
elif [[ "$command" = "time-machine" ]]
then
if _guix_is_dash_C
then
_guix_complete_file
else
_guix_complete_option "$command_index" "$word_at_point"
fi
elif [[ "$command" = "container" ]]
elif _guix_is_command "container"
then
case $((COMP_CWORD - command_index)) in
1) _guix_complete_subcommand;;
2) _guix_complete_pid "$word_at_point";;
case $COMP_CWORD in
2) _guix_complete_subcommand;;
3) _guix_complete_pid "$word_at_point";;
*) _guix_complete_file;;
esac
elif [[ "$command" = "import" ]]
elif _guix_is_command "import"
then
_guix_complete_subcommand
elif [[ "$command" = "weather" ]]
elif _guix_is_command "hash" || _guix_is_command "gc"
then
_guix_complete_file
elif _guix_is_command "weather"
then
if _guix_is_dash_m
then
_guix_complete_file
else
_guix_complete_available_package "$word_at_point"
fi
elif [[ "$command" = "style" ]]
then
if _guix_is_dash_f
then
_guix_complete_file
else
_guix_complete_available_package "$word_at_point"
fi
else
_guix_complete_available_package "$word_at_point"
fi
;;
esac
if [[ -z "$COMPREPLY" && COMP_CWORD -gt command_index ]] &&
_guix_is_option "$word_at_point"
then
_guix_complete_option "$command_index" "$word_at_point"
fi
}
complete -F _guix_complete guix
File diff suppressed because it is too large Load Diff
+106 -313
View File
@@ -2,8 +2,6 @@
#
# GNU Guix --- Functional package management for GNU
# Copyright © 2016 Eric Le Bihan <eric.le.bihan.dev@free.fr>
# Copyright © 2021 Noah Evans <noah@nevans.me>
# Copyright © 2021 Brice Waegeneire <brice@waegenei.re>
#
# This file is part of GNU Guix.
#
@@ -58,7 +56,6 @@ _guix_list_available_packages()
if ( [[ ${+_guix_available_packages} -eq 0 ]] || _cache_invalid GUIX_AVAILABLE_PACKAGES ) \
&& ! _retrieve_cache GUIX_AVAILABLE_PACKAGES; then
_guix_available_packages=(${${(f)"$(guix package -A | cut -f1)"}})
_guix_available_packages=("${_guix_available_packages[@]// /}")
_store_cache GUIX_AVAILABLE_PACKAGES _guix_available_packages
fi
}
@@ -71,37 +68,34 @@ _guix_list_installed_packages()
(( $+functions[_guix_build] )) || _guix_build()
{
_arguments \
{-e,--expression=}'[build the package or derivation EXPR evaluates to]:EXPR' \
{-f,--file=}'[build the package or derivation that the code within FILE evaluates to]:FILE:_files' \
{-m,--manifest=}'[build the packages that the manifest given in FILE evaluates to]:FILE:_files' \
{-S,--source}'[build the packages source derivations]' \
'--sources=[build source derivations]:TYPE:(package all transitive)' \
{-s,--system=}'[attempt to build for SYSTEM (e.g. "i686-linux")]:SYSTEM' \
'--expression=[build the package matching EXPR]:EXPR' \
'--file=[build the package matching code evaluated from FILE]:FILE:_files' \
'--source[build the packages source derivations]' \
'--sources=[build source derivations]:TYPE:(all package transitive)' \
'--system=[attempt to build for SYSTEM (e.g. "i686-linux")]:SYSTEM' \
'--target=[cross-build for TRIPLET (e.g. "armel-linux-gnu")]:TRIPLET' \
{-d,--derivations}'[return the derivation paths of the given packages]' \
'--derivations[return the derivation paths of the given packages]' \
'--check[rebuild items to check for non-determinism issues]' \
'--repair[repair the specified items]' \
{-r,--root=}'[make FILE a symlink to the result, and register it as a GC root]:FILE:_files' \
{-v,--verbosity=}'[use the given verbosity LEVEL]:LEVEL' \
{-q,--quiet}'[do not show the build log]' \
'--root=[symlink result to FILE and register it as GC root]:FILE:_files' \
'--quiet[do not show the build log]' \
'--log-file[return the log file names for the given derivations]' \
{-L,--load-path=}'[prepend DIR to the package module search path]:DIR:_files -\' \
{-K,--keep-failed}'[keep build tree of failed builds]' \
{-k,--keep-going}'[keep going when some of the derivations fail]' \
{-n,--dry-run}'[do not build the derivations]' \
'--load-path=[prepend DIR to the package module search path]:DIR:_dirs' \
'--keep-failed[keep build tree of failed builds]' \
'--keep-going[keep going when some of the derivations fail]' \
'--dry-run[do not build the derivations]' \
'--fallback[fall back to building when the substituter fails]' \
'--no-substitutes[build instead of resorting to pre-built substitutes]' \
'--substitute-urls=[fetch substitute from URLS if they are authorized]:URLS:_urls' \
'--no-grafts[do not graft packages]' \
'--no-offload[do not attempt to offload builds]' \
'--no-build-hook[do not attempt to offload builds via the build hook]' \
'--max-silent-time=[mark the build as failed after SECONDS of silence]:SECONDS' \
'--timeout=[mark the build as failed after SECONDS of activity]:SECONDS' \
'--verbosity=[use the given verbosity LEVEL]:LEVEL' \
'--rounds=[build N times in a row to detect non-determinism]:N' \
{-c,--cores=}'[allow the use of up to N CPU cores for the build]:N' \
{-M,--max-jobs=}'[allow at most N build jobs]:N' \
'--debug=[produce debugging output at LEVEL]:LEVEL' \
'--help-transform[list package transformation options not shown here]' \
{-V,--version}'[display version information and exit]' \
'--cores=[allow the use of up to N CPU cores for the build]:N' \
'--max-jobs=[allow at most N build jobs]:N' \
'--with-source=[use SOURCE when building the corresponding package]:SOURCE' \
'--with-input=[replace dependency PACKAGE by REPLACEMENT]:PACKAGE=REPLACEMENT' \
'*:package:->packages'
if [[ "$state" = packages ]]; then
@@ -113,10 +107,7 @@ _guix_list_installed_packages()
(( $+functions[_guix_challenge] )) || _guix_challenge()
{
_arguments \
'--substitute-urls=[compare build results with those at URLS]:URLS:_urls' \
'--diff=[show differences according to MODE]:MODE' \
{-v,--verbose}'[show details about successful comparisons]' \
{-V,--version}'[display version information and exit]' \
'--substitute-urls=[fetch substitute from URLS if they are authorized]:URL:_urls' \
'*:package:->packages'
if [[ "$state" = packages ]]; then
@@ -135,11 +126,7 @@ _guix_list_installed_packages()
(( $+functions[_guix_download] )) || _guix_download()
{
_arguments \
{-f,--format=}'[write the hash in the given format]:FMT:(nix-base32 base16 base32 hex)' \
{-H,--hash=}'[use the given hash ALGORITHM]:ALGORITHM' \
'--no-check-certificate[do not validate the certificate of HTTPS servers ]' \
{-o,--output=}'[download to FILE]:FILE:_files' \
{-V,--version}'[display version information and exit]' \
'--format=[write the hash in the given format]:FMT:(nix-base32 base16 base32 hex)' \
'1:URL:_urls'
}
@@ -152,42 +139,32 @@ _guix_list_installed_packages()
(( $+functions[_guix_environment] )) || _guix_environment()
{
_arguments \
{-e,--expression=}'[create environment for the package that EXPR evaluates to]:EXPR' \
{-l,--load=}'[create environment for the package that the code within FILE evaluates to]:FILE:_files' \
{-m,--manifest=}'[create environment with the manifest from FILE]:FILE:_files' \
{-p,--profile=}'[create environment from profile at PATH]:PATH:_files -/' \
'--ad-hoc[include all specified packages in the environment instead of only their inputs]' \
'--expression=[create environment for the package evaluated from EXPR]:EXPR' \
'--load=[create environment for the package evaluated from FILE]:FILE:_files' \
'--ad-hoc[include all specified packages, not only their inputs]' \
'--pure[unset existing environment variables]' \
{-E,--preserve=}'[preserve environment variables that match REGEXP]:REGEXP' \
'--search-paths[display needed environment variable definitions]' \
{-s,--system=}'[attempt to build for SYSTEM (e.g. "i686-linux")]:SYSTEM' \
{-r,--root=}'[make FILE a symlink to the result, and register it as a GC root]:FILE:_files' \
{-C,--container}'[run command within an isolated container]' \
{-N,--network}'[allow containers to access the network]' \
{-P,--link-profile}'[link environment profile to ~/.guix-profile within an isolated container]' \
{-u,--user=}'[instead of copying the name and home of the current user into an isolated container, use the name USER with home directory /home/USER]:USER:_users' \
'--no-cwd[do not share current working directory with an isolated container]' \
'--share=[for containers, share writable host file system according to SPEC]:SPEC' \
'--expose=[for containers, expose read-only host file system according to SPEC]:SPEC' \
{-v,--verbosity=}'[use the given verbosity LEVEL]:LEVEL' \
'--system=[attempt to build for SYSTEM (e.g. "i686-linux")]:SYSTEM' \
'--container[run command within an isolated container]' \
'--network[allow containers to access the network]' \
'--share=[share writable host file system according to SPEC]:SPEC' \
'--expose=[expose read-only host file system according to SPEC]:SPEC' \
'--bootstrap[use bootstrap binaries to build the environment]' \
{-L,--load-path=}'[prepend DIR to the package module search path]:DIR:_files -/' \
{-K,--keep-failed}'[keep build tree of failed builds]' \
{-k,--keep-going}'[keep going when some of the derivations fail]' \
{-n,--dry-run}'[do not build the derivations]' \
'--load-path=[prepend DIR to the package module search path]:DIR:_dirs' \
'--keep-failed[keep build tree of failed builds]' \
'--keep-going[keep going when some of the derivations fail]' \
'--dry-run[do not build the derivations]' \
'--fallback[fall back to building when the substituter fails]' \
'--no-substitutes[build instead of resorting to pre-built substitutes]' \
'--substitute-urls=[fetch substitute from URLS if they are authorized]:URLS:_urls' \
'--no-grafts[do not graft packages]' \
'--no-offload[do not attempt to offload builds]' \
'--no-build-hook[do not attempt to offload builds via the build hook]' \
'--max-silent-time=[mark the build as failed after SECONDS of silence]:SECONDS' \
'--timeout=[mark the build as failed after SECONDS of activity]:SECONDS' \
'--verbosity=[use the given verbosity LEVEL]:LEVEL' \
'--rounds=[build N times in a row to detect non-determinism]:N' \
{-c,--cores=}'[allow the use of up to N CPU cores for the build]:N' \
{-M,--max-jobs=}'[allow at most N build jobs]:N' \
'--debug=[produce debugging output at LEVEL]:LEVEL' \
'--help-transform[list package transformation options not shown here]' \
{-V,--version}'[display version information and exit]' \
'--cores=[allow the use of up to N CPU cores for the build]:N' \
'--max-jobs=[allow at most N build jobs]:N' \
'*:package:->packages'
if [[ "$state" = packages ]]; then
@@ -200,39 +177,27 @@ _guix_list_installed_packages()
(( $+functions[_guix_gc] )) || _guix_gc()
{
_arguments \
{-C,--collect-garbage=}'[collect at least MIN bytes of garbage]:MIN' \
{-F,--free-space=}'[attempt to reach FREE available space in the store]:FREE' \
{-d,--delete-generations=}'[delete profile generations matching PATTERN]:PATTERN' \
{-D,--delete}'[attempt to delete PATHS]' \
'--list-roots[list the users GC roots]' \
'--list-busy[list store items used by running processes]' \
'--collect-garbage=[collect at least MIN bytes of garbage]:MIN' \
'--free-space=[attempt to reach FREE available space in the store]:FREE' \
'--delete[attempt to delete PATHS]' \
'--optimize[optimize the store by deduplicating identical files]' \
'--list-dead[list dead paths]' \
'--list-live[list live paths]' \
'--references[list the references of PATHS]' \
{-R,--requisites}'[list the requisites of PATHS]' \
'--requisites[list the requisites of PATHS]' \
'--referrers[list the referrers of PATHS]' \
'--derivers[list the derivers of PATHS]' \
'--verify=[verify the integrity of the store]:OPTS:(contents repair)' \
'--list-failures[list cached build failures]' \
'--clear-failures[remove PATHS from the set of cached failures]' \
{-V,--version}'[display version information and exit]:V' \
'1:PATH:_files -/'
'1:PATH:_dirs'
}
(( $+functions[_guix_graph] )) || _guix_graph()
{
_arguments \
{-b,--backend=}'[produce a graph with the given backend TYPE]:TYPE:->types' \
'--list-backends[list the available graph backends]' \
{-t,--type=}'[represent nodes of the given TYPE]:TYPE:->types' \
'--type=[represent nodes of the given TYPE]:TYPE:->types' \
'--list-types[list the available graph types]' \
'--path[display the shortest path between the given nodes]' \
{-e,--expression=}'[consider the package EXPR evaluates to]:EXPR' \
{-s,--system=}'[consider the graph for SYSTEM (e.g. "i686-linux")]:SYSTEM' \
{-L,--load-path=}'[prepend DIR to the package module search path]:DIR:_files -/' \
'--help-transform[list package transformation options not shown here]' \
{-V,--version}'[display version information and exit]' \
'--expression=[consider the package EXPR evaluates to]:EXPR' \
'1:PACKAGE:->packages'
case "$state" in
@@ -251,18 +216,14 @@ _guix_list_installed_packages()
(( $+functions[_guix_hash] )) || _guix_hash()
{
_arguments \
{-x,--exclude-vcs}'[exclude version control directories]' \
{-H,--hash=}'[use the given hash ALGORITHM]:ALGORITHM' \
{-f,--format=}'[write the hash in the given format]:FMT:(nix-base32 base16 base32 hex)' \
{-r,--recursive}'[compute the hash on FILE recursively]' \
{-V,--version}'[display version information and exit]' \
'--format=[write the hash in the given format]:FMT:(nix-base32 base16 base32 hex)' \
'--recursive[compute the hash on FILE recursively]'\
'1:FILE:_files'
}
(( $+functions[_guix_import] )) || _guix_import()
{
_arguments \
{-V,--version}'[display version information and exit]' \
'1:IMPORTER:->importer' \
'*:args:'
@@ -275,12 +236,8 @@ _guix_list_installed_packages()
(( $+functions[_guix_lint] )) || _guix_lint()
{
_arguments \
{-c,--checkers=}'[only run the specified checkers]:CHECKERS:->checkers' \
{-x,--exclude=}'[exclude the specified checkers]:CHECKERSS:->checkers' \
{-n,--no-network}'[only run checkers that do not access the network]' \
{-L,--load-path=}'[prepend DIR to the package module search path]:DIR:_files -/' \
{-l,--list-checkers}'[display the list of available lint checkers]' \
{-V,--version}'[display version information and exit]' \
'--checkers=[only run the specified checkers]:CHECKERS:->checkers' \
'--list-checkers[display the list of available lint checkers]' \
'1:PACKAGE:->packages'
case "$state" in
@@ -298,46 +255,42 @@ _guix_list_installed_packages()
(( $+functions[_guix_package] )) || _guix_package()
{
_arguments \
{-i,--install}'[install one or more packages]: :->install' \
{-e,--install-from-expression=}'[install the package EXP evaluates to]:EXP' \
{-f,--install-from-file=}'[install the package evaluated from FILE]:FILE:_files' \
{-r,--remove}'[remove one or more packages]: :->remove' \
{-u,--upgrade=}'[upgrade all the installed packages matching REGEXP]:REGEXP' \
{-m,--manifest=}'[create a new profile generation from FILE]:FILE:_files' \
'--install[install one or more packages]: :->install' \
'--install-from-expression=[install the package EXP evaluates to]:EXP' \
'--install-from-file=[install the package evaluated from FILE]:FILE:_files' \
'--remove[remove one or more packages]: :->remove' \
'--upgrade=[upgrade all the installed packages matching REGEXP]:REGEXP' \
'--manifest=[create a new profile generation from FILE]:FILE:_files' \
'--do-not-upgrade=[do not upgrade any packages matching REGEXP]:REGEXP' \
'--roll-back[roll back to the previous generation]' \
'--search-paths=[display needed environment variable definitions]:KINDS' \
{-l,--list-generations=}'[list generations matching PATTERN]:PATTERN' \
{-d,--delete-generations=}'[delete generations matching PATTERN]:PATTERN' \
{-S,--switch-generation=}'[switch to a generation matching PATTERN]:PATTERN' \
'--export-manifest[print a manifest for the chosen profile]' \
'--export-channels[print channels for the chosen profile]' \
{-p,--profile}'[use PROFILE instead of the default profile]:PROFILE:_files -/' \
'--list-profiles[list the profiles]' \
'--allow-collisions[do not treat collisions in the profile as an error]' \
'--list-generations=[list generations matching PATTERN]:PATTERN' \
'--delete-generations=[delete generations matching PATTERN]:PATTERN' \
'--switch-generation=[switch to a generation matching PATTERN]:PATTERN' \
'--profile=[use PROFILE instead of the default profile]:PROFILE' \
'--bootstrap[use the bootstrap Guile to build the profile]' \
{-s,--search=}'[search in synopsis and description using REGEXP]:REGEXP' \
{-I,--list-installed=}'[list installed packages matching REGEXP]:REGEXP' \
{-A,--list-available=}'[list available packages matching REGEXP]:REGEXP' \
'--verbose[produce verbose output]' \
'--search=[search in synopsis and description using REGEXP]:REGEXP' \
'--list-installed=[list installed packages matching REGEXP]:REGEXP' \
'--list-available=[list available packages matching REGEXP]:REGEXP' \
'--show=[show details about a package]: :->show' \
{-L,--load-path=}'[prepend DIR to the package module search path]:DIR:_files -/' \
{-K,--keep-failed}'[keep build tree of failed builds]' \
{-k,--keep-going}'[keep going when some of the derivations fail]' \
{-n,--dry-run}'[do not build the derivations]' \
'--load-path=[prepend DIR to the package module search path]:DIR:_dirs' \
'--keep-failed[keep build tree of failed builds]' \
'--keep-going[keep going when some of the derivations fail]' \
'--dry-run[do not build the derivations]' \
'--fallback[fall back to building when the substituter fails]' \
'--no-substitutes[build instead of resorting to pre-built substitutes]' \
'--substitute-urls=[fetch substitute from URLS if they are authorized]:URLS:_urls' \
'--no-grafts[do not graft packages]' \
'--no-offload[do not attempt to offload builds]' \
'--no-build-hook[do not attempt to offload builds via the build hook]' \
'--max-silent-time=[mark the build as failed after SECONDS of silence]:SECONDS' \
'--timeout=[mark the build as failed after SECONDS of activity]:SECONDS' \
'--verbosity=[use the given verbosity LEVEL]:LEVEL' \
'--rounds=[build N times in a row to detect non-determinism]:N' \
{-c,--cores=}'[allow the use of up to N CPU cores for the build]:N' \
{-M,--max-jobs=}'[allow at most N build jobs]:N' \
'--debug=[produce debugging output at LEVEL]' \
'--help-transform[list package transformation options not shown here]' \
{-v,--verbosity=}'[use the given verbosity LEVEL]' \
{-V,--version}'[display version information and exit]'
'--cores=[allow the use of up to N CPU cores for the build]:N' \
'--max-jobs=[allow at most N build jobs]:N' \
'--with-source=[use SOURCE when building the corresponding package]:SOURCE' \
'--with-input=[replace dependency PACKAGE by REPLACEMENT]:PACKAGE=REPLACEMENT'
case "$state" in
install|show)
@@ -351,165 +304,37 @@ _guix_list_installed_packages()
esac
}
(( $+functions[_guix_install] )) || _guix_install()
{
_arguments \
{-p,--profile=}'[use PROFILE instead of the users default profile]:PROFILE:_files -/' \
{-v,--verbosity=}'[use the given verbosity LEVEL]:LEVEL' \
{-L,--load-path=}'[prepend DIR to the package module search path]:DIR:_files -/' \
{-K,--keep-failed}'[keep build tree of failed builds]' \
{-k,--keep-going}'[keep going when some of the derivations fail]' \
{-n,--dry-run}'[do not build the derivations]' \
'--fallback[fall back to building when the substituter fails]' \
'--no-substitutes[build instead of resorting to pre-built substitutes]' \
'--substitute-urls=[fetch substitute from URLS if they are authorized]:URLS:_urls' \
'--no-grafts[do not graft packages]' \
'--no-offload[do not attempt to offload builds]' \
'--max-silent-time=[mark the build as failed after SECONDS of silence]:SECONDS' \
'--timeout=[mark the build as failed after SECONDS of activity]:SECONDS' \
'--rounds=[build N times in a row to detect non-determinism]:N' \
{-c,--cores=}'[allow the use of up to N CPU cores for the build]:N' \
{-M,--max-jobs=}'[allow at most N build jobs]:N' \
'--debug=[produce debugging output at LEVEL]:LEVEL' \
'--help-transform[list package transformation options not shown here]' \
{-V,--version}'[display version information and exit]' \
'*:package:->packages'
if [[ "$state" = packages ]]; then
_guix_list_available_packages
compadd -a -- _guix_available_packages
fi
}
(( $+functions[_guix_remove] )) || _guix_remove()
{
_arguments \
{-p,--profile=}'[use PROFILE instead of the users default profile]:PROFILE:_files -/' \
{-v,--verbosity=}'[use the given verbosity LEVEL]:LEVEL' \
{-L,--load-path=}'[prepend DIR to the package module search path]:DIR:_files -/' \
{-K,--keep-failed}'[keep build tree of failed builds]' \
{-k,--keep-going}'[keep going when some of the derivations fail]' \
{-n,--dry-run}'[do not build the derivations]' \
'--fallback[fall back to building when the substituter fails]' \
'--no-substitutes[build instead of resorting to pre-built substitutes]' \
'--substitute-urls=[fetch substitute from URLS if they are authorized]:URLS:_urls' \
'--no-grafts[do not graft packages]' \
'--no-offload[do not attempt to offload builds]' \
'--max-silent-time=[mark the build as failed after SECONDS of silence]:SECONDS' \
'--timeout=[mark the build as failed after SECONDS of activity]:SECONDS' \
'--rounds=[build N times in a row to detect non-determinism]:N' \
{-c,--cores=}'[allow the use of up to N CPU cores for the build]:N' \
{-M,--max-jobs=}'[allow at most N build jobs]:N' \
'--debug=[produce debugging output at LEVEL]:LEVEL' \
{-V,--version}'[display version information and exit]' \
'*:package:->packages'
if [[ "$state" = packages ]]; then
_guix_list_installed_packages
compadd -a -- _guix_installed_packages
fi
}
(( $+functions[_guix_upgrade] )) || _guix_upgrade()
{
_arguments \
{-p,--profile=}'[use PROFILE instead of the users default profile]:PROFILE:_files -/' \
{-v,--verbosity=}'[use the given verbosity LEVEL]:LEVEL' \
'--do-not-upgrade=[do not upgrade any packages matching REGEXP]:REGEXP' \
{-L,--load-path=}'[prepend DIR to the package module search path]:DIR:_files -/' \
{-K,--keep-failed}'[keep build tree of failed builds]' \
{-k,--keep-going}'[keep going when some of the derivations fail]' \
{-n,--dry-run}'[do not build the derivations]' \
'--fallback[fall back to building when the substituter fails]' \
'--no-substitutes[build instead of resorting to pre-built substitutes]' \
'--substitute-urls=[fetch substitute from URLS if they are authorized]:URLS:_urls' \
'--no-grafts[do not graft packages]' \
'--no-offload[do not attempt to offload builds]' \
'--max-silent-time=[mark the build as failed after SECONDS of silence]:SECONDS' \
'--timeout=[mark the build as failed after SECONDS of activity]:SECONDS' \
'--rounds=[build N times in a row to detect non-determinism]:N' \
{-c,--cores=}'[allow the use of up to N CPU cores for the build]:N' \
{-M,--max-jobs=}'[allow at most N build jobs]:N' \
'--debug=[produce debugging output at LEVEL]:LEVEL' \
'--help-transform[list package transformation options not shown here]' \
{-V,--version}'[display version information and exit]' \
'*:regexp'
}
(( $+functions[_guix_publish] )) || _guix_publish()
{
_arguments \
{-p,--port=}'[listen on PORT]:PORT' \
'--listen=[listen on the network interface for HOST]:HOST_hosts' \
{-u,--user=}'[change privileges to USER as soon as possible]:USER_users' \
{-a,--advertise}'[advertise on the local network]' \
{-C,--compression=}'[compress archives with METHOD at LEVEL]:METHOD' \
{-c,--cache=}'[cache published items to DIRECTORY]:DIRECTORY:_files -/' \
'--cache-bypass-threshold=[serve store items below SIZE even when not cached]:SIZE' \
'--workers=[use N workers to bake items]:N' \
'--port=[listen on PORT]:PORT:' \
'--listen=[listen on the network interface for HOST]:HOST:_hosts' \
'--user=[change privileges to USER as soon as possible]:USER:_users' \
'--compression=[compress archives at LEVEL]:LEVEL' \
'--ttl=[announce narinfos can be cached for TTL seconds]:TTL' \
'--negative-ttl=[announce missing narinfos can be cached for TTL seconds]:TTL' \
'--nar-path=[use PATH as the prefix for nar URLs]:PATH' \
'--public-key=[use FILE as the public key for signatures]:FILE:_files' \
'--private-key=[use FILE as the private key for signatures]:FILE:_files' \
{-r,--repl=}'[spawn REPL server on PORT]:PORT' \
{-V,--version}'[display version information and exit]' \
'--repl=[spawn REPL server on PORT]:PORT'
}
(( $+functions[_guix_pull] )) || _guix_pull()
{
_arguments \
{-C,--channels=}'[deploy the channels defined in FILE]:FILE:_files' \
'--url=[download from the Git repository at URL]:URL:_urls' \
'--commit=[download the specified COMMIT]:COMMIT' \
'--branch=[download the tip of the specified BRANCH]:BRANCH' \
'--allow-downgrades[allow downgrades to earlier channel revisions]' \
'--disable-authentication[disable channel authentication]' \
{-N,--news}'[display news compared to the previous generation]' \
{-l,--list-generations=}'[list generations matching PATTERN]:PATTERN' \
'--roll-back[roll back to the previous generation]' \
{-d,--delete-generations=}'[delete generations matching PATTERN]:PATTERN' \
{-S,--switch-generation=}'[switch to a generation matching PATTERN]:PATTERN' \
{-p,--profile=}'[use PROFILE instead of ~/.config/guix/current]:PROFILE:_files -/' \
{-v,--verbosity=}'[use the given verbosity LEVEL]:LEVEL' \
{-s,--system=}'[attempt to build for SYSTEM (e.g. "i686-linux")]:SYSTEM' \
'--bootstrap[use the bootstrap Guile to build the new Guix]' \
{-L,--load-path=}'[prepend DIR to the package module search path]:DIR:_files -/' \
{-K,--keep-failed}'[keep build tree of failed builds]' \
{-k,--keep-going}'[keep going when some of the derivations fail]' \
{-n,--dry-run}'[do not build the derivations]' \
'--fallback[fall back to building when the substituter fails]' \
'--no-substitutes[build instead of resorting to pre-built substitutes]' \
'--substitute-urls=[fetch substitute from URLS if they are authorized]:URLS:_urls' \
'--no-grafts[do not graft packages]' \
'--no-offload[do not attempt to offload builds]' \
'--max-silent-time=[mark the build as failed after SECONDS of silence]:SECONDS' \
'--timeout=[mark the build as failed after SECONDS of activity]:SECONDS' \
'--rounds=[build N times in a row to detect non-determinism]:N' \
{-c,--cores=}'[allow the use of up to N CPU cores for the build]:N' \
{-M,--max-jobs=}'[allow at most N build jobs]:N' \
'--debug=[produce debugging output at LEVEL]:LEVEL' \
{-V,--version}'[display version information and exit]'
'--verbose[produce verbose output]' \
'--url=[download the Guix tarball from URL]:URL:_urls' \
'--bootstrap[use the bootstrap Guile to build the new Guix]'
}
(( $+functions[_guix_refresh] )) || _guix_refresh()
{
_arguments \
{-e,--expression=}'[consider the package EXPR evaluates to]:EXPR' \
{-u,--update}'[update source files in place]' \
{-s,--select=}'[select all the packages in SUBSET, one of]:SUBSET:(core non-core)' \
{-m,--manifest=}'[select all the packages from the manifest in FILE]:FILE:_files' \
{-t,--type=}'[restrict to updates from the specified updaters]:UPDATER:-.updaters' \
{-L,--list-updaters}'[list available updaters and exit]' \
{-l,--list-dependent}'[list top-level dependent packages that would need to be rebuilt as a result of upgrading PACKAGE...]' \
{-r,--recursive}'[check the PACKAGE and its inputs for upgrades]' \
'--list-transitive[list all the packages that PACKAGE depends on]' \
'--keyring=[use FILE as the keyring of upstream OpenPGP keys]:FILE:_files' \
'--key-server=[use HOST as the OpenPGP key server]:HOST_hosts' \
'--expression=[consider the package EXPR evaluates to]:EXPR' \
'--update[update source files in place]' \
'--select=[select all the packages in SUBSET]:SUBSET:(core non-core)' \
'--type=[restrict to updates from the specified updaters]:UPDATER:->updaters' \
'--list-updaters[list available updaters and exit]' \
'--list-dependent[list top-level dependent packages]' \
'--key-server=[use HOST as the OpenPGP key server]:HOST:_hosts' \
'--gpg=[use COMMAND as the GnuPG 2.x command]:COMMAND' \
'--key-download=[handle missing OpenPGP keys according to POLICY:]:POLICY:(always auto interactive never)' \
'--load-path=[prepend DIR to the package module search path]:DIR:_files -/' \
{-V,--version}'[display version information and exit]' \
'--key-download=[policy to handle missing OpenPGP keys]:POLICY:(always interactive never)' \
'*:package:->packages'
case "$state" in
@@ -527,12 +352,9 @@ _guix_list_installed_packages()
(( $+functions[_guix_size] )) || _guix_size()
{
_arguments \
'--substitute-urls=[fetch substitute from URLS if they are authorized]:URLS:_urls' \
{-s,--system=}'[consider packages for SYSTEM (e.g. "i686-linux")]:SYSTEM' \
'--sort=[sort according to KEY]:KEY:(closure self)' \
{-m,--map-file=}'[write to FILE a graphical map of disk usage]:FILE:_files' \
{-L,--load-path=}'[prepend DIR to the package module search path]:DIR:_files -/' \
{-V,--version}'[display version information and exit]' \
'--substitute-urls=[fetch substitute from URLS if they are authorized]:URL:_urls' \
'-system=[consider packages for SYSTEM--e.g., "i686-linux"]:SYSTEM' \
'--map-file=[write to FILE a graphical map of disk usage]:FILE:_files' \
'*:package:->packages'
if [[ "$state" = packages ]]; then
@@ -544,42 +366,28 @@ _guix_list_installed_packages()
(( $+functions[_guix_system] )) || _guix_system()
{
_arguments \
{-L,--load-path=}'[prepend DIR to the package module search path]:DIR:_files -/' \
{-K,--keep-failed}'[keep build tree of failed builds]' \
{-k,--keep-going}'[keep going when some of the derivations fail]' \
{-n,--dry-run}'[do not build the derivations]' \
'--load-path=[prepend DIR to the package module search path]:DIR:_dirs' \
'--keep-failed[keep build tree of failed builds]' \
'--keep-going[keep going when some of the derivations fail]' \
'--dry-run[do not build the derivations]' \
'--fallback[fall back to building when the substituter fails]' \
'--no-substitutes[build instead of resorting to pre-built substitutes]' \
'--substitute-urls=[fetch substitute from URLS if they are authorized]:URLS:_urls' \
'--substitute-urls=[fetch substitute from URLS if they are authorized]:URL:_urls' \
'--no-grafts[do not graft packages]' \
'--no-offload[do not attempt to offload builds]' \
'--no-build-hook[do not attempt to offload builds via the build hook]' \
'--max-silent-time=[mark the build as failed after SECONDS of silence]:SECONDS' \
'--timeout=[mark the build as failed after SECONDS of activity]:SECONDS' \
'--verbosity=[use the given verbosity LEVEL]:LEVEL' \
'--rounds=[build N times in a row to detect non-determinism]:N' \
{-c,--cores=}'[allow the use of up to N CPU cores for the build]:N' \
{-M,--max-jobs=}'[allow at most N build jobs]:N' \
'--debug=[produce debugging output at LEVEL]:LEVEL' \
{-d,--derivation}'[return the derivation of the given system]' \
{-e,--expression=}'[consider the operating-system EXPR evaluates to instead of reading FILE, when applicable]:EXPR' \
'--allow-downgrades[for reconfigure, allow downgrades to earlier channel revisions]' \
'--on-error=[apply STRATEGY when an error occurs while reading FILE]:STRATEGY:(nothing-special backtrace debug)' \
'--list-image-types[list available image types]' \
{-t,--image-type=}'[for image, produce an image of TYPE]:TYPE' \
'--image-size=[for image, produce an image of SIZE]:SIZE' \
'--no-bootloader[for init, do not install a bootloader]' \
'--volatile[for image, make the root file system volatile]' \
'--label=[for image, label disk image with LABEL]:LABEL' \
'--save-provenance[save provenance information]' \
'--share=[for vm and container, share host file system with read/write access according to SPEC]:SPEC' \
'--expose=[for vm and container, expose host file system directory as read-only according to SPEC]:SPEC' \
{-N,--network}'[for container, allow containers to access the network]' \
{-r,--root=}'[for vm, image, container and build, make FILE a symlink to the result, and register it as a GC root]:FILE:_files' \
'--full-boot[for vm, make a full boot sequence]' \
'--skip-checks[skip file system and initrd module safety checks]' \
'--target=[cross-build for TRIPLET (e.g. "armel-linux-gnu")]:TRIPLET' \
{-v,--verbosity=}'[use the given verbosity LEVEL]:LEVEL' \
'--graph-backend=[use BACKEND for extension-graphs and shepherd-graph]:BACKEND' \
{-V,--version}'[display version information and exit]' \
'--cores=[allow the use of up to N CPU cores for the build]:N' \
'--max-jobs=[allow at most N build jobs]:N' \
'--derivation[return the derivation of the given system]' \
'--on-error=[apply STRATEGY when an error occurs while reading FILE]:STRATEGY' \
'--image-size=[for "vm-image", produce an image of SIZE]:SIZE' \
'--no-grub[for "init", do not install GRUB]' \
'--share=[for "vm", share host file system according to SPEC]:SPEC' \
'--expose=[for "vm", expose host file system according to SPEC]:SPEC' \
'--full-boot[for "vm", make a full boot sequence]' \
'1:action:->actions' \
'*:file:_files'
@@ -597,35 +405,20 @@ _guix_list_installed_packages()
"build:Build a given package"
"challenge:Challenge the substitutes for a package"
"container:Build and manipulate Linux containers"
"copy:Copy store items remotely over SSH"
"deploy:Deploy operating systems on a set of machines"
"describe:Describe the channel revisions currently used"
"download:Download the file at given URL and add it to the store"
"edit:Edit the definitions of a package"
"environment:Build an environment with a package and its dependencies"
"gc:Invoke the garbage collector"
"git:Operate on Git repositories"
"graph:Emit a DOT representation of the dependencies of a package"
"hash:Return the cryptographic hash of a file"
"import:Run an importer"
"install:Install packages"
"lint:Run a set of checkers on a package"
"offload:Set up and operate build offloading"
"pack:Create application bundles"
"package:Install, remove, or upgrade packages"
"processes:List currently running sessions"
"publish:Publish /gnu/store over HTTP."
"pull:Download and deploy the latest version of Guix"
"refresh:Update package definitions to match the latest version"
"remove:Remove packages"
"repl:Read-eval-print loop (REPL) for interactive programming"
"search:Search for packages"
"show:Show information about packages"
"size:Report the size of a package and its dependencies"
"system:Build the operating system"
"time-machine:Run commands from a different revision"
"upgrade:Upgrade packages"
"weather:Report on the availability of pre-built package binaries"
)
if (( CURRENT == 1 )); then
-34
View File
@@ -1,34 +0,0 @@
;;; copyright.el --- Insert a Guix copyright. -*- lexical-binding: t; -*-
;; Copyright © 2020 Oleg Pykhalov <go.wigust@gmail.com>
;; This file is part of GNU Guix.
;; GNU Guix is free software; you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.
;; GNU Guix is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;; GNU General Public License for more details.
;; You should have received a copy of the GNU General Public License
;; along with this program. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;; This package provides skeleton to insert a copyright with `guix-copyright'.
;;; Code:
(define-skeleton guix-copyright
"Insert a copyright by $USER notice at cursor."
"FULL_NAME <MAIL_ADDRESS>: "
comment-start
";; Copyright © " `(format-time-string "%Y") " "
(or (format "%s <%s>" user-full-name user-mail-address) str)
comment-end)
;;; copyright.el ends here
-123
View File
@@ -1,123 +0,0 @@
#!/bin/sh
# From Gerrit Code Review 3.11.1.
#
# Part of Gerrit Code Review (https://www.gerritcodereview.com/)
#
# Copyright (C) 2009 The Android Open Source Project
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
### Guix modifications start
COMMIT_MSG_MAGIC=VGhpcyBpcyB0aGUgY29tbWl0LW1zZyBob29rIG9mIEd1aXg=
top=$(git rev-parse --show-toplevel)
if test -d "$top/.git/hooks/commit-msg.d/"; then
for msg_hook in "$top/.git/hooks/commit-msg.d/"*; do
if ! sh "$msg_hook"; then
echo "error while running $msg_hook"
exit 1
fi
done
fi
### Guix modifications end
set -u
# avoid [[ which is not POSIX sh.
if test "$#" != 1 ; then
echo "$0 requires an argument."
exit 1
fi
if test ! -f "$1" ; then
echo "file does not exist: $1"
exit 1
fi
# Do not create a change id if requested
case "$(git config --get gerrit.createChangeId)" in
false)
exit 0
;;
always)
;;
*)
# Do not create a change id for squash/fixup commits.
if head -n1 "$1" | LC_ALL=C grep -q '^[a-z][a-z]*! '; then
exit 0
fi
;;
esac
if git rev-parse --verify HEAD >/dev/null 2>&1; then
refhash="$(git rev-parse HEAD)"
else
refhash="$(git hash-object -t tree /dev/null)"
fi
random=$({ git var GIT_COMMITTER_IDENT ; echo "$refhash" ; cat "$1"; } | git hash-object --stdin)
dest="$1.tmp.${random}"
trap 'rm -f "$dest" "$dest-2"' EXIT
if ! cat "$1" | sed -e '/>8/q' | git stripspace --strip-comments > "${dest}" ; then
echo "cannot strip comments from $1"
exit 1
fi
if test ! -s "${dest}" ; then
echo "file is empty: $1"
exit 1
fi
reviewurl="$(git config --get gerrit.reviewUrl)"
if test -n "${reviewurl}" ; then
token="Link"
value="${reviewurl%/}/id/I$random"
pattern=".*/id/I[0-9a-f]\{40\}"
else
token="Change-Id"
value="I$random"
pattern=".*"
fi
if git interpret-trailers --parse < "$1" | grep -q "^$token: $pattern$" ; then
exit 0
fi
# There must be a Signed-off-by trailer for the code below to work. Insert a
# sentinel at the end to make sure there is one.
# Avoid the --in-place option which only appeared in Git 2.8
if ! git interpret-trailers \
--trailer "Signed-off-by: SENTINEL" < "$1" > "$dest-2" ; then
echo "cannot insert Signed-off-by sentinel line in $1"
exit 1
fi
# Make sure the trailer appears before any Signed-off-by trailers by inserting
# it as if it was a Signed-off-by trailer and then use sed to remove the
# Signed-off-by prefix and the Signed-off-by sentinel line.
# Avoid the --in-place option which only appeared in Git 2.8
# Avoid the --where option which only appeared in Git 2.15
if ! git -c trailer.where=before interpret-trailers \
--trailer "Signed-off-by: $token: $value" < "$dest-2" |
sed -e "s/^Signed-off-by: \($token: \)/\1/" \
-e "/^Signed-off-by: SENTINEL/d" > "$dest" ; then
echo "cannot insert $token line in $1"
exit 1
fi
if ! mv "${dest}" "$1" ; then
echo "cannot mv ${dest} to $1"
exit 1
fi
-26
View File
@@ -1,26 +0,0 @@
[diff "scheme"]
xfuncname = "^(\\(define.*)$"
[diff "texinfo"]
xfuncname = "^@node[[:space:]]+([^,]+).*$"
[format]
forceinbodyfrom = true # help preserve commit authorship
thread = shallow
useAutoBase = whenAble
[pull]
rebase = true
[sendemail]
to = guix-patches@gnu.org
headerCmd = etc/teams.scm cc-members-header-cmd
thread = no
[b4]
attestation-check-dkim = off
attestation-policy = off
shazam-am-flags = --signoff --3way
linkmask = https://yhetil.org/guix/%s
linktrailermask = https://yhetil.org/guix/%s
midmask = https://yhetil.org/guix/%s
-9
View File
@@ -1,9 +0,0 @@
#!/bin/sh
# Authenticate the repo upon 'git pull' and similar.
if ! git config guix.authentication.introduction-commit; then
exec guix git authenticate 9edb3f66fd807b096b48283debdcddccfea34bad \
"BBB0 2DDF 2CEA F6A8 0D1D E643 A2A0 6DF2 A33A 54FA" \
-k origin/keyring
else
exec guix git authenticate
fi
+41 -53
View File
@@ -1,9 +1,7 @@
#!/bin/sh
# This hook script prevents the user from pushing to the project's Git repo if
# any of the new commits' OpenPGP signatures cannot be verified, if a commit is
# signed with an unauthorized key, or if the channel news file is malformed
# (which would break the build).
# This hook script prevents the user from pushing to Savannah if any of the new
# commits' OpenPGP signatures cannot be verified.
# Called by "git push" after it has checked the remote status, but before
# anything has been pushed. If this script exits with a non-zero status nothing
@@ -21,61 +19,51 @@
#
# <local ref> <local sha1> <remote ref> <remote sha1>
# This is the "empty hash" used by Git when pushing a branch deletion.
z40=0000000000000000000000000000000000000000
perform_checks() {
set -e
guix git authenticate
exec make check-channel-news
exit 127
}
# Only use the hook when pushing to Savannah.
case "$2" in
*git.sv.gnu.org*)
break
;;
*)
exit 0
;;
esac
main() {
while read local_ref local_hash remote_ref remote_hash
while read local_ref local_sha remote_ref remote_sha
do
# When deleting a remote branch, no commits are pushed to the remote,
# and thus there are no signatures or news updates to be verified.
if [ "$local_hash" != $z40 ]
then
# Skip the hook when performing a pull-request...
case "$remote_ref" in
refs/for/*)
exit 0
;;
# ... or when pushing a new PGP key to the keyring branch,
# as this branch doesn't share ancestry with the master
# branch and fails the 'guix git authenticate' check.
refs/heads/keyring)
exit 0
;;
esac
if [ "$local_sha" = $z40 ]
then
# Handle delete
:
else
if [ "$remote_sha" = $z40 ]
then
# We are pushing a new branch. To prevent wasting too
# much time for this relatively rare case, we examine
# all commits since the first signed commit, rather than
# the full history. This check *will* fail, and the user
# will need to temporarily disable the hook to push the
# new branch.
range="e3d0fcbf7e55e8cbe8d0a1c5a24d73f341d7243b..$local_sha"
else
# Update to existing branch, examine new commits
range="$remote_sha..$local_sha"
fi
# Only perform checks when pushing to upstream.
case "$2" in
*savannah.gnu.org*)
printf "ERROR: The repositories on Savannah are read-only mirrors of our repos at <https://codeberg.org/guix>.\n" 1>&2
exit 1
;;
*.gnu.org*)
perform_checks
;;
# HTTPS Git remote.
*codeberg.org/guix/*)
perform_checks
;;
# SSH Git remote.
*codeberg.org:guix/*)
perform_checks
;;
*)
exit 0
;;
esac
# Verify the signatures of all commits being pushed.
ret=0
for commit in $(git rev-list $range)
do
if ! git verify-commit $commit >/dev/null 2>&1
then
printf "%s failed signature check\n" $commit
ret=1
fi
done
exit $ret
fi
done
exit 0
}
main "$@"
-13
View File
@@ -1,13 +0,0 @@
[Unit]
Description=Read-only @storedir@ for GNU Guix
DefaultDependencies=no
ConditionPathExists=@storedir@
[Install]
WantedBy=multi-user.target
[Mount]
What=@storedir@
Where=@storedir@
Type=none
Options=bind,ro
+27 -256
View File
@@ -1,8 +1,6 @@
; -*- lisp -*-
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2018, 2022 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2020 Daniel Brooks <db48x@db48x.net>
;;; Copyright © 2020 Marius Bakke <marius@gnu.org>
;;; Copyright © 2018 Ricardo Wurmus <rekado@elephly.net>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -23,46 +21,27 @@
;; Intermediate Language (CIL). It refers to types that must be defined in
;; the system's base policy.
;; If you, like me, need advice about fixing an SELinux policy, I recommend
;; reading https://danwalsh.livejournal.com/55324.html
;; In particular, you can run semanage permissive -a guix_daemon.guix_daemon_t
;; to allow guix-daemon to do whatever it wants. SELinux will still check its
;; permissions, and when it doesn't have permission it will still send an
;; audit message to your system logs. This lets you know what permissions it
;; ought to have. Use ausearch --raw to find the permissions violations, then
;; pipe that to audit2allow to generate an updated policy. You'll still need
;; to translate that policy into CIL in order to update this file, but that's
;; fairly straight-forward. Annoying, but easy.
(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)
(roletype object_r guix_daemon_t)
(type guix_daemon_conf_t)
(roletype object_r guix_daemon_conf_t)
(typeattributeset file_type guix_daemon_conf_t)
(type guix_daemon_exec_t)
(roletype object_r guix_daemon_exec_t)
(typeattributeset file_type guix_daemon_exec_t)
(type guix_daemon_socket_t)
(roletype object_r guix_daemon_socket_t)
(typeattributeset file_type guix_daemon_socket_t)
(type guix_store_content_t)
(roletype object_r guix_store_content_t)
(typeattributeset file_type guix_store_content_t)
(type guix_profiles_t)
(roletype object_r guix_profiles_t)
(typeattributeset file_type guix_profiles_t)
;; These types are domains, thereby allowing process rules
(typeattributeset domain (guix_daemon_t guix_daemon_exec_t))
@@ -76,33 +55,6 @@
(typetransition guix_store_content_t guix_daemon_exec_t
process guix_daemon_t)
(roletype system_r guix_daemon_t)
;; allow init_t to read and execute guix files
(allow init_t
guix_profiles_t
(lnk_file (read)))
(allow init_t
guix_daemon_exec_t
(file (execute)))
(allow init_t
guix_daemon_t
(process (transition)))
(allow init_t
guix_store_content_t
(lnk_file (read)))
(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
passwd_file_t
(file (getattr open read)))
;; Permit communication with NSCD
(allow guix_daemon_t
nscd_var_run_t
@@ -119,46 +71,25 @@
(allow guix_daemon_t
nscd_t
(unix_stream_socket (connectto)))
(allow guix_daemon_t nscd_t
(nscd (getgrp gethost getpwd getserv shmemgrp shmemhost shmempwd shmemserv)))
;; permit downloading packages via HTTP(s)
(allow guix_daemon_t http_port_t
(tcp_socket (name_connect)))
(allow guix_daemon_t ftp_port_t
(tcp_socket (name_connect)))
(allow guix_daemon_t ephemeral_port_t
(tcp_socket (name_connect)))
;; Permit logging and temp file access
(allow guix_daemon_t
tmp_t
(lnk_file (create rename setattr unlink)))
(lnk_file (setattr unlink)))
(allow guix_daemon_t
tmp_t
(file (link
rename create execute execute_no_trans write
unlink setattr map relabelto relabelfrom)))
(allow guix_daemon_t
tmp_t
(fifo_file (open read write create getattr ioctl setattr unlink)))
(allow guix_daemon_t
tmp_t
(dir (create rename
rmdir relabelto relabelfrom reparent
(dir (create
rmdir
add_name remove_name
open read write
getattr setattr
search)))
(allow guix_daemon_t
tmp_t
(sock_file (create getattr setattr unlink write)))
(allow guix_daemon_t
var_log_t
(file (create getattr open write)))
(allow guix_daemon_t
var_log_t
(dir (getattr create write add_name)))
(dir (getattr write add_name)))
(allow guix_daemon_t
var_run_t
(lnk_file (read)))
@@ -169,29 +100,15 @@
;; Spawning processes, execute helpers
(allow guix_daemon_t
self
(process (fork execmem setrlimit setpgid setsched)))
(process (fork)))
(allow guix_daemon_t
guix_daemon_exec_t
(file (execute
execute_no_trans read write open entrypoint map
getattr link unlink)))
;; Needed to execute the 'newgidmap' helper.
(allow guix_daemon_t
bin_t
(file (execute execute_no_trans map)))
;; Remounting /gnu/store read-write.
(allow guix_daemon_t
fs_t
(filesystem (remount)))
(file (execute execute_no_trans read open)))
;; TODO: unknown
(allow guix_daemon_t
root_t
(dir (mounton)))
(allow init_t
guix_daemon.guix_store_content_t
(dir (mounton)))
(allow guix_daemon_t
fs_t
(filesystem (getattr)))
@@ -202,54 +119,38 @@
;; Build isolation
(allow guix_daemon_t
guix_store_content_t
(file (ioctl mounton)))
(file (mounton)))
(allow guix_store_content_t
fs_t
(filesystem (associate)))
(allow guix_daemon_t
guix_store_content_t
(dir (read mounton)))
(dir (mounton)))
(allow guix_daemon_t
guix_daemon_t
(capability (net_admin
fsetid fowner
chown setuid setgid
dac_override dac_read_search
sys_chroot
sys_admin)))
sys_chroot)))
(allow guix_daemon_t
fs_t
(filesystem (unmount)))
(allow guix_daemon_t
devpts_t
(dir (search)))
(allow guix_daemon_t
devpts_t
(filesystem (mount)))
(allow guix_daemon_t
devpts_t
(chr_file (ioctl open read write setattr getattr)))
(chr_file (setattr getattr)))
(allow guix_daemon_t
tmpfs_t
(filesystem (getattr mount)))
(filesystem (mount)))
(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)))
(dir (getattr)))
(allow guix_daemon_t
proc_t
(file (getattr open read)))
(allow guix_daemon_t
proc_t
(dir (read)))
(allow guix_daemon_t
proc_t
(filesystem (associate mount)))
(filesystem (mount)))
(allow guix_daemon_t
null_device_t
(chr_file (getattr open read write)))
@@ -278,7 +179,7 @@
search rename
add_name remove_name
open write
rmdir relabelfrom)))
rmdir)))
(allow guix_daemon_t
guix_store_content_t
(file (create
@@ -288,8 +189,7 @@
link unlink
map
rename
append
open read write relabelfrom)))
open read write)))
(allow guix_daemon_t
guix_store_content_t
(lnk_file (create
@@ -297,50 +197,30 @@
link unlink
read
rename)))
(allow guix_daemon_t
guix_store_content_t
(fifo_file (create getattr open read unlink write)))
(allow guix_daemon_t
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
(dir (search create
(dir (search
setattr getattr
add_name remove_name
open read write)))
(allow guix_daemon_t
guix_daemon_conf_t
(file (create rename
(file (create
lock
map
getattr setattr
unlink
open read write append)))
open read write)))
(allow guix_daemon_t
guix_daemon_conf_t
(lnk_file (create getattr rename unlink read)))
(allow guix_daemon_t net_conf_t
(file (getattr open read)))
(allow guix_daemon_t net_conf_t
(lnk_file (read)))
(allow guix_daemon_t NetworkManager_var_run_t
(dir (search)))
(lnk_file (create getattr rename unlink)))
;; Access to profiles
(allow guix_daemon_t
guix_profiles_t
(dir (search getattr setattr read write open create add_name)))
(dir (getattr setattr read open)))
(allow guix_daemon_t
guix_profiles_t
(lnk_file (read getattr)))
@@ -353,33 +233,8 @@
(allow guix_daemon_t
user_home_t
(dir (search)))
(allow guix_daemon_t
cache_home_t
(dir (search)))
(allow guix_daemon_t
cache_home_t
(lnk_file (getattr read)))
;; self upgrades
(allow guix_daemon_t
self
(dir (add_name write)))
(allow guix_daemon_t
self
(netlink_route_socket (bind create getattr nlmsg_read read write getopt)))
;; Allow use of user namespaces
(allow guix_daemon_t
self
(cap_userns (setgid sys_admin net_admin sys_chroot)))
(allow guix_daemon_t
self
(user_namespace (create)))
;; Socket operations
(allow guix_daemon_t
guix_daemon_socket_t
(sock_file (unlink write)))
(allow guix_daemon_t
init_t
(fd (use)))
@@ -391,103 +246,19 @@
(unix_stream_socket (listen)))
(allow guix_daemon_t
guix_daemon_conf_t
(sock_file (create unlink write)))
(sock_file (create unlink)))
(allow guix_daemon_t
self
(unix_stream_socket (create
read write
connect bind accept
getopt setopt)))
(allow guix_daemon_t
self
(tcp_socket (accept listen bind connect create setopt getopt getattr ioctl read write shutdown)))
(allow guix_daemon_t
unreserved_port_t
(tcp_socket (name_bind name_connect accept listen)))
(allow guix_daemon_t
self
(udp_socket (connect getattr bind getopt setopt read write)))
(allow guix_daemon_t
self
(fifo_file (write read)))
(allow guix_daemon_t
self
(udp_socket (ioctl create)))
(allow guix_daemon_t
self
(unix_stream_socket (connectto)))
(allow guix_daemon_t
self
(unix_dgram_socket (create bind connect sendto read write)))
;; For some esoteric build jobs (i.e. running PostgreSQL, etc).
(allow guix_daemon_t
self
(capability (kill)))
(allow guix_daemon_t
node_t
(tcp_socket (node_bind)))
(allow guix_daemon_t
node_t
(udp_socket (node_bind)))
(allow guix_daemon_t
port_t
(tcp_socket (name_connect)))
(allow guix_daemon_t
tmpfs_t
(file (map read write link getattr)))
(allow guix_daemon_t
usermodehelper_t
(file (read)))
(allow guix_daemon_t
hugetlbfs_t
(file (map read write)))
(allow guix_daemon_t
proc_net_t
(file (read)))
(allow guix_daemon_t
postgresql_port_t
(tcp_socket (name_connect name_bind)))
(allow guix_daemon_t
rtp_media_port_t
(udp_socket (name_bind)))
(allow guix_daemon_t
vnc_port_t
(tcp_socket (name_bind)))
;; 'guix gc' needs to go through /proc entries for all processes that are
;; running. Strictly speaking, it means guix-daemon needs access to all
;; process types in the SELinux policy. In practice, only processes from
;; programs in the /gnu/store are relevant for finding roots for garbage
;; collection. Since Guix currently doesn't install any SELinux policy for
;; its packages, we can assume that all the processes it needs to access run
;; as unconfined_t.
;;
;; FIXME: This doesn't stop 'guix gc' from generating a lot of unnecessary
;; AVC denied audit messages. Perhaps guix-daemon could test whether it has
;; access to the proc entry before trying to access it?
(allow guix_daemon_t
unconfined_t
(dir (search)))
(allow guix_daemon_t
unconfined_t
(file (read)))
(allow guix_daemon_t
unconfined_t
(lnk_file (read)))
;; I guess sometimes it needs random numbers
(allow guix_daemon_t
random_device_t
(chr_file (read)))
;; guix system vm
(allow guix_daemon_t
kvm_device_t
(chr_file (ioctl open read write)))
(allow guix_daemon_t
kernel_t
(system (ipc_info)))
;; Label file system
(filecon "@guix_sysconfdir@/guix(/.*)?"
@@ -504,11 +275,11 @@
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"
(filecon "@storedir@/.+-(guix-.+|profile)/libexec/guix-authenticate"
file (system_u object_r guix_daemon_exec_t (low low)))
(filecon "@storedir@/.+-(guix-.+|profile)/libexec/guix/(.*)?"
any (system_u object_r guix_daemon_exec_t (low low)))
(filecon "@guix_localstatedir@/guix/daemon-socket/socket"
any (system_u object_r guix_daemon_socket_t (low low))))
+1 -1
View File
@@ -7,4 +7,4 @@ start on runlevel [2345]
stop on runlevel [016]
exec @localstatedir@/guix/profiles/per-user/root/current-guix/bin/guix-daemon --build-users-group=guixbuild --discover=no --substitute-urls='@GUIX_SUBSTITUTE_URLS@'
exec @localstatedir@/guix/profiles/per-user/root/current-guix/bin/guix-daemon --build-users-group=guixbuild
+5 -44
View File
@@ -5,51 +5,12 @@
[Unit]
Description=Build daemon for GNU Guix
# Start before 'gnu-store.mount' to get a writable view of the store.
Before=gnu-store.mount
[Service]
ExecStart=@localstatedir@/guix/profiles/per-user/root/current-guix/bin/guix-daemon \
--discover=no \
--substitute-urls='@GUIX_SUBSTITUTE_URLS@'
Environment='GUIX_STATE_DIRECTORY=@localstatedir@/guix' 'GUIX_LOCPATH=@localstatedir@/guix/profiles/per-user/root/guix-profile/lib/locale' LC_ALL=en_US.utf8
# Stop the gnu-store.mount so that the daemon can capture the store as
# read-write in its private mount namespace.
# See <https://codeberg.org/guix/guix/issues/4744>.
ExecStartPre=-+systemctl stop gnu-store.mount
ExecStartPost=-+systemctl start gnu-store.mount --no-block
# Run under a dedicated unprivileged user account.
User=guix-daemon
# Bind-mount the store read-write in a private namespace, to counter the
# effect of 'gnu-store.mount'.
PrivateMounts=true
BindPaths=@storedir@
# Disable host file system mount propagation to keep service view of the
# store read-write after 'gnu-store.mount' makes it read-only system-wide.
MountFlags=private
# Mitigate race condition between guix-daemon and 'gnu-store.mount'.
# Dependent units will only start after daemon binary is started AND THUS
# the mount point is acquired in a private namespace.
Type=exec
# Provide the CAP_CHOWN capability so that guix-daemon can create and chown
# /var/guix/profiles/per-user/$USER and also chown failed build directories
# when using '--keep-failed'. Note that guix-daemon explicitly drops ambient
# capabilities before executing build processes so they don't inherit them.
AmbientCapabilities=CAP_CHOWN
StandardOutput=journal
StandardError=journal
# Work around a nasty systemd feature that kills the entire process tree
# (including the daemon!) if any child, such as cc1plus, runs out of memory.
OOMPolicy=continue
# Despite the name, this is rate-limited: a broken daemon will eventually fail.
Restart=always
ExecStart=@localstatedir@/guix/profiles/per-user/root/current-guix/bin/guix-daemon --build-users-group=guixbuild
Environment=GUIX_LOCPATH=@localstatedir@/guix/profiles/per-user/root/guix-profile/lib/locale
RemainAfterExit=yes
StandardOutput=syslog
StandardError=syslog
# See <https://lists.gnu.org/archive/html/guix-devel/2016-04/msg00608.html>.
# Some package builds (for example, go@1.8.1) may require even more than
-20
View File
@@ -1,20 +0,0 @@
# This is a "service unit file" for the systemd init system to perform a
# one-shot 'guix gc' operation. It is meant to be triggered by a timer.
# Drop it in /etc/systemd/system or similar together with 'guix-gc.timer'
# to set it up.
[Unit]
Description=Discard unused Guix store items
[Service]
Type=oneshot
# Customize the 'guix gc' arguments to fit your needs.
ExecStart=@localstatedir@/guix/profiles/per-user/root/current-guix/bin/guix gc -d 1m -F 10G
PrivateDevices=yes
PrivateNetwork=yes
PrivateUsers=no
ProtectKernelTunables=yes
ProtectKernelModules=yes
ProtectControlGroups=yes
MemoryDenyWriteExecute=yes
SystemCallFilter=@default @file-system @basic-io @system-service
-15
View File
@@ -1,15 +0,0 @@
# This is a "timer unit file" for the systemd init system to trigger
# 'guix-gc.service' periodically. Drop it in /etc/systemd/system or similar
# together with 'guix-gc.service' to set it up.
[Unit]
Description=Discard unused Guix store items
[Timer]
OnCalendar=weekly
AccuracySec=1h
Persistent=true
RandomizedDelaySec=6000
[Install]
WantedBy=timers.target
+141 -849
View File
File diff suppressed because it is too large Load Diff
+4 -9
View File
@@ -4,18 +4,13 @@
[Unit]
Description=Publish the GNU Guix store
Requires=guix-daemon.service
PartOf=guix-daemon.service
After=guix-daemon.service
[Service]
ExecStart=@localstatedir@/guix/profiles/per-user/root/current-guix/bin/guix publish --user=nobody --port=8181
Environment='GUIX_LOCPATH=@localstatedir@/guix/profiles/per-user/root/guix-profile/lib/locale' LC_ALL=en_US.utf8
StandardOutput=journal
StandardError=journal
# Despite the name, this is rate-limited: a broken daemon will eventually fail.
Restart=always
Environment=GUIX_LOCPATH=@localstatedir@/guix/profiles/per-user/root/guix-profile/lib/locale
RemainAfterExit=yes
StandardOutput=syslog
StandardError=syslog
# See <https://lists.gnu.org/archive/html/guix-devel/2016-04/msg00608.html>.
TasksMax=1024
-179
View File
@@ -1,179 +0,0 @@
;; List of "historical" committers---people once authorized committers before
;; the '.guix-authorizations' file was created.
;;
;; This file is provided for historical and auditing purposes. It is known
;; good starting at least at 'v1.0.0'.
;;
;; The format is the same as for '.guix-authorizations'. User names are those
;; found on <https://savannah.gnu.org/project/memberlist.php?group=guix> along
;; with the fingerprint of the signing (sub)key.
(authorizations
(version 0)
(("AD17 A21E F8AE D8F1 CC02 DBD9 F7D5 C9BF 765C 61E3"
(name "andreas"))
("2A39 3FFF 68F4 EF7A 3D29 12AF 6F51 20A0 22FB B2D5"
(name "ajgrf"))
("306F CB8F 2C01 C25D 29D3 0556 61EF 502E F602 52F2"
(name "alexvong1995"))
("4FB9 9F49 2B12 A365 7997 E664 8246 0C08 2A0E E98F"
(name "alezost"))
("50F3 3E2E 5B0C 3D90 0424 ABE8 9BDC F497 A4BB CC7F"
(name "ambrevar"))
("27D5 86A4 F890 0854 329F F09F 1260 E464 82E6 3562"
(name "apteryx"))
("7F73 0343 F2F0 9F3C 77BF 79D3 2E25 EE8B 6180 2BB3"
(name "arunisaac"))
(;; primary: "3B12 9196 AE30 0C3C 0E90 A26F A715 5567 3271 9948"
"9A2B 401E D001 0650 1584 BAAC 8BC4 F447 6E8A 8E00"
(name "atheia"))
(;; primary: "BE62 7373 8E61 6D6D 1B3A 08E8 A21A 0202 4881 6103"
"39B3 3C8D 9448 0D2D DCC2 A498 8B44 A0CD C7B9 56F2"
(name "bandali"))
(;; primary: "34FF 38BC D151 25A6 E340 A0B5 3453 2F9F AFCA 8B8E"
"A0C5 E352 2EF8 EF5C 64CD B7F0 FD73 CAC7 19D3 2566"
(name "bavier"))
("3774 8024 880F D3FF DCA2 C9AB 5893 6E0E 2F1B 5A4C"
(name "beffa"))
("BCF8 F737 2CED 080A 67EB 592D 2A6A D9F4 AAC2 0DF6"
(name "benwoodcroft"))
("45CC 63B8 5258 C9D5 5F34 B239 D37D 0EA7 CECC 3912"
(name "biscuolo"))
("7988 3B9F 7D6A 4DBF 3719 0367 2506 A96C CF63 0B21"
(name "boskovits"))
("DFC0 C7F7 9EE6 0CA7 AE55 5E19 6722 43C4 A03F 0EEE"
(name "brettgilio"))
(;; primary: "0401 7A2A 6D9A 0CCD C81D 8EC2 96AB 007F 1A7E D999"
"09CD D25B 5244 A376 78F6 EEA8 0CC5 2153 1979 91A5"
(name "carl"))
("3E89 EEE7 458E 720D 9754 E0B2 5E28 A33B 0B84 F577"
(name "cbaines"))
("3CE4 6455 8A84 FDC6 9DB4 0CFB 090B 1199 3D9A EBB5"
(name "civodul"))
("510A 8628 E2A7 7678 8F8C 709C 4BC0 2592 5FF8 F4D3"
(name "cwebber"))
(;; primary: "295A F991 6F46 F8A1 34B0 29DA 8086 3842 F0FE D83B"
"76CE C6B1 7274 B465 C02D B3D9 E71A 3554 2C30 BAA5"
(name "dannym"))
("B3C0 DB4D AD73 BA5D 285E 19AE 5143 0234 CEFD 87C3"
(name "davexunit"))
( ;FIXME: to be confirmed!
"8CCB A7F5 52B9 CBEA E1FB 2915 8328 C747 0FF1 D807"
(name "davexunit (2nd)"))
("53C4 1E6E 41AA FE55 335A CA5E 446A 2ED4 D940 BF14"
(name "daviwil"))
("6909 6DFD D702 8BED ACC5 884B C5E0 51C7 9C0B ECDB"
(name "dvc"))
("5F43 B681 0437 2F4B A898 A64B 33B9 E9FD E28D 2C23"
(name "dvc (old)"))
("A28B F40C 3E55 1372 662D 14F7 41AA E7DC CA3D 8351"
(name "efraim"))
("9157 41FE B22F A4E3 3B6E 8F8D F4C1 D391 7EAC EE93"
(name "efraim (old)"))
(;; primary: "2453 02B1 BAB1 F867 FDCA 96BC 8F3F 861F 82EB 7A9A"
"CBC5 9C66 EC27 B971 7940 6B3E 6BE8 208A DF21 FE3F"
(name "glv"))
("2219 43F4 9E9F 276F 9499 3382 BF28 6CB6 593E 5FFD"
(name "hoebjo"))
("B943 509D 633E 80DD 27FC 4EED 634A 8DFF D3F6 31DF"
(name "htgoebel"))
("7440 26BA 7CA3 C668 E940 1D53 0B43 1E98 3705 6942"
(name "ipetkov"))
(;; primary: "66A5 6D9C 9A98 BE7F 719A B401 2652 5665 AE72 7D37"
"0325 78A6 8298 94E7 2AA2 66F5 D415 BF25 3B51 5976"
(name "iyzsong"))
;; https://lists.gnu.org/archive/html/guix-devel/2018-04/msg00229.html
("DB34 CB51 D25C 9408 156F CDD6 A12F 8797 8D70 1B99"
(name "janneke (old)"))
("1A85 8392 E331 EAFD B8C2 7FFB F3C1 A0D9 C1D6 5273"
(name "janneke"))
(;; primary: "1BA4 08C5 8BF2 0EA7 3179 635A 865D C0A3 DED9 B5D0"
"E31D 9DDE EBA5 4A14 8A20 4550 DA45 97F9 47B4 1025"
(name "jlicht"))
("8797 A26D 0854 2EAB 0285 A290 8A67 719C 2DE8 27B3"
(name "jmd"))
("83B6 703A DCCA 3B69 4BCE 2DA6 E6A5 EE3C 1946 7A0D"
(name "kkebreau"))
("45E5 75FA 53EA 8BD6 1BCE 0B4E 3ADC 75F0 13D6 78F9"
(name "leungbk"))
(;; primary: "4F71 6F9A 8FA2 C80E F1B5 E1BA 5E35 F231 DE1A C5E0"
"B051 5948 F1E7 D3C1 B980 38A0 2646 FA30 BACA 7F08"
(name "lfam"))
("2AE3 1395 932B E642 FC0E D99C 9BED 6EDA 32E5 B0BC"
(name "lsl88"))
("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"
(name "mhw"))
("4008 6A7E 0252 9B60 31FB 8607 8354 7635 3176 9CA6"
(name "mothacehe"))
("F2A3 8D7E EB2B 6640 5761 070D 0ADE E100 9460 4D37"
(name "mthl"))
(;; primary: "F5BC 5534 C36F 0087 B39D 36EF 1C9D C4FE B9DB 7C4B"
"F5DA 2032 4B87 3D0B 7A38 7672 0DB0 FF88 4F55 6D79"
(name "nckx"))
(;; primary: "F5BC 5534 C36F 0087 B39D 36EF 1C9D C4FE B9DB 7C4B"
"7E8F AED0 0944 78EF 72E6 4D16 D889 B0F0 18C5 493C"
(name "nckx (revoked; not compromised)"))
("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"
(name "pelzflorian"))
(;; primary: "B68B DF22 73F9 DA0E 63C1 8A32 515B F416 9242 D600"
"C699 ED09 E51B CE89 FD1D A078 AAC7 E891 896B 568A"
(name "pgarlick"))
("3A86 380E 58A8 B942 8D39 60E1 327C 1EF3 8DF5 4C32"
(name "phant0mas"))
("74D6 A930 F44B 9B84 9EA5 5606 C166 AA49 5F7F 189C"
(name "reepca"))
("BCA6 89B6 3655 3801 C3C6 2150 197A 5888 235F ACAC"
(name "rekado"))
("0154 E1B9 1CC9 D9EF 7764 8DE7 F3A7 27DB 44FC CA36"
(name "rhelling"))
("17CB 2812 EB63 3DFF 2C7F 0452 C3EC 1DCA 8430 72E1"
(name "roelj (old)"))
(;; From commit cc51c03ff867d4633505354819c6d88af88bf919 (March 2020).
;; See <https://lists.gnu.org/archive/html/guix-devel/2020-03/msg00070.html>.
"F556 FD94 FB8F 8B87 79E3 6832 CBD0 CD51 38C1 9AFC"
(name "roelj"))
("B5FA E628 5B41 3728 B2A0 FAED 4311 1F45 2008 6A0C"
(name "roptat (old)"))
(;; From commit 2cbede5935eb6a40173bbdf30a9ad22bf7574c22 (Jan. 2020). See
;; <https://lists.gnu.org/archive/html/guix-devel/2020-01/msg00499.html>.
"1EFB 0909 1F17 D28C CBF9 B13A 53D4 57B2 D636 EE82"
(name "roptat"))
(;; primary: "D6B0 C593 DA8C 5EDC A44C 7A58 C336 91F7 1188 B004"
"A02C 2D82 0EF4 B25B A6B5 1D90 2AC6 A5EC 1C35 7C59"
(name "samplet"))
("77DD AD2D 97F5 31BB C0F3 C7FD DFB5 EB09 AA62 5423"
(name "sleep_walker"))
("F494 72F4 7A59 00D5 C235 F212 89F9 6D48 08F3 59C7"
(name "snape"))
("4E26 CCE9 578E 0828 9855 BDD4 1C79 95D2 D5A3 8336"
(name "steap"))
("9ADE 9ECF 2B19 C180 9C99 5CEA A1F4 CFCC 5283 6BAC"
(name "taylanub"))
;; https://lists.gnu.org/archive/html/guix-devel/2017-03/msg00826.html
(;; primary: "1DD1 681F E285 E07F 11DC 0C59 2E15 A6BC D77D 54FD"
"3D2C DA58 819C 08C2 A649 D43D 5C3B 064C 724A 5726"
(name "thomasd"))
("A5C5 92EA 606E 7106 A6A3 BC08 98B2 1575 91E1 2B08"
(name "thomasd (old)"))
("D712 1D73 A40A 7264 9E43 ED7D F284 6B1A 0D32 C442"
(name "toothbrush"))
("6580 7361 3BFC C5C7 E2E4 5D45 DC51 8FC8 7F97 16AA"
(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"))
("FF47 8FB2 64DE 32EC 2967 25A3 DDC0 F535 8812 F8F2"
(name "wingo"))))
+114
View File
@@ -0,0 +1,114 @@
#!@EMACS@ --script
;;; indent-code.el --- Run Emacs to indent a package definition.
;; Copyright © 2017 Alex Kost <alezost@gmail.com>
;; Copyright © 2017 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 this program. If not, see <http://www.gnu.org/licenses/>.
;;; Commentary:
;; This scripts indents the given file or package definition in the specified
;; file using Emacs.
;;; Code:
;; Load Scheme indentation rules from ".dir-locals.el".
(with-temp-buffer
(scheme-mode)
(let ((default-directory (file-name-as-directory load-file-name))
(enable-local-variables :all))
(hack-dir-local-variables)
(hack-local-variables-apply)))
;; Add indentation info for Scheme constructs that are not Guix-specific.
;; This is normally provided by Geiser but this file is for people who may not
;; be running Geiser, so we just copy it here (from 'geiser-syntax.el').
(defmacro guix-syntax--scheme-indent (&rest pairs)
`(progn ,@(mapcar (lambda (p)
`(put ',(car p) 'scheme-indent-function ',(cadr p)))
pairs)))
(guix-syntax--scheme-indent
(and-let* 1)
(case-lambda 0)
(catch defun)
(class defun)
(dynamic-wind 0)
(guard 1)
(let*-values 1)
(let-values 1)
(let/ec 1)
(letrec* 1)
(match 1)
(match-lambda 0)
(match-lambda* 0)
(match-let scheme-let-indent)
(match-let* 1)
(match-letrec 1)
(opt-lambda 1)
(parameterize 1)
(parameterize* 1)
(receive 2)
(require-extension 0)
(syntax-case 2)
(test-approximate 1)
(test-assert 1)
(test-eq 1)
(test-equal 1)
(test-eqv 1)
(test-group-with-cleanup 1)
(test-runner-on-bad-count! 1)
(test-runner-on-bad-end-name! 1)
(test-runner-on-final! 1)
(test-runner-on-group-begin! 1)
(test-runner-on-group-end! 1)
(test-runner-on-test-begin! 1)
(test-runner-on-test-end! 1)
(test-with-runner 1)
(unless 1)
(when 1)
(while 1)
(with-exception-handler 1)
(with-syntax 1))
(pcase command-line-args-left
(`(,file-name ,package-name)
;; Indent the definition of PACKAGE-NAME in FILE-NAME.
(find-file file-name)
(goto-char (point-min))
(if (re-search-forward (concat "^(define\\(-public\\) +"
package-name)
nil t)
(let ((indent-tabs-mode nil))
(beginning-of-defun)
(indent-sexp)
(save-buffer)
(message "Done!"))
(error "Package '%s' not found in '%s'"
package-name file-name)))
(`(,file-name)
;; Indent all of FILE-NAME.
(find-file file-name)
(let ((indent-tabs-mode nil))
(indent-region (point-min) (point-max))
(save-buffer)
(message "Done!")))
(x
(error "Usage: indent-code.el FILE [PACKAGE]")))
;;; indent-code.el ends here
-80
View File
@@ -1,80 +0,0 @@
#!/bin/bash
### BEGIN INIT INFO
# Provides: guix-daemon
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Guix build daemon
# Description: Provides a daemon that does builds for Guix
### END INIT INFO
set -e
mkdir -p "/var/run"
if [ ! -f "@localstatedir@/guix/profiles/per-user/root/current-guix/bin/guix-daemon" ]
then
exit 5
fi
case "$1" in
start)
if [ -f "/var/run/guix-daemon.pid" ]
then
if pgrep -F "/var/run/guix-daemon.pid" guix-daemon
then
exit 0
else
echo "guix-daemon has a stale pid file" >&2
exit 1
fi
else
daemonize \
-a \
-e "/var/log/guix-daemon-stderr.log" \
-o "/var/log/guix-daemon-stdout.log" \
-E GUIX_LOCPATH=@localstatedir@/guix/profiles/per-user/root/guix-profile/lib/locale \
-E LC_ALL=en_US.utf8 \
-p "/var/run/guix-daemon.pid" \
@localstatedir@/guix/profiles/per-user/root/current-guix/bin/guix-daemon \
--build-users-group=guixbuild --discover=no \
--substitute-urls='@GUIX_SUBSTITUTE_URLS@'
fi
;;
stop)
if [ -f "/var/run/guix-daemon.pid" ]
then
pkill -F "/var/run/guix-daemon.pid" guix-daemon || {
exit 1
}
rm -f "/var/run/guix-daemon.pid"
exit 0
else
exit 0
fi
;;
status)
if [ -f "/var/run/guix-daemon.pid" ]
then
if pgrep -F "/var/run/guix-daemon.pid" guix-daemon
then
echo "guix-daemon is running"
exit 0
else
echo "guix-daemon has a stale pid file"
exit 1
fi
else
echo "guix-daemon is not running"
exit 3
fi
;;
restart|force-reload)
"$0" stop
"$0" start
;;
*)
echo "Usage: $0 (start|stop|status|restart|force-reload)"
exit 3
;;
esac
-170
View File
@@ -1,170 +0,0 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2020-2022, 2024 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2023 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2025 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/>.
;;; This file returns a manifest containing packages which should all cross-compile.
;;; We use the packages included by default in an OS configuration since that is
;;; (probably) the most likely install method for some architectures.
(use-modules (gnu packages)
(guix packages)
(guix profiles)
(guix platform)
((gnu services xorg) #:select (%default-xorg-modules))
((gnu system) #:prefix gnu-system:
#:select (%base-packages %base-packages-linux))
(guix utils)
(guix gexp)
(srfi srfi-1)
(srfi srfi-26))
(define* (package->manifest-entry* package system
#:key target)
"Return a manifest entry for PACKAGE on SYSTEM, optionally cross-compiled to
TARGET."
(manifest-entry
(inherit (package->manifest-entry package))
(name (string-append (package-name package) "." system
(if target
(string-append "." target)
"'")))
(item (with-parameters ((%current-system system)
(%current-target-system target))
package))))
(define %base-packages
;; Packages that must be substitutable on all the platforms Guix supports.
;; Use the %base-packages from (gnu system) since they are included by default
;; in the packages field of the operating system configuration.
(cons* (specification->package "guix")
gnu-system:%base-packages))
(define %base-packages/hurd
;; Remove the packages from %base-packages-linux and some of the packages
;; from the other package sets.
(fold delete %base-packages
(append (map specification->package
'("e2fsprogs" "kbd" "iproute2" "iw" "wireless-tools"))
%base-packages-linux)))
(define %system-packages
;; Key packages proposed by the Guix System installer.
(map specification->package
'("openssh" "tor" "ntp" "gpm"
"connman" "network-manager" "wpa-supplicant" "isc-dhcp" "cups"
"linux-libre" "grub-hybrid")))
(define (%system-gui-packages target)
;; Key packages proposed by the Guix System installer.
(append (map specification->package
'(;; build system `python' does not support cross builds
;"gnome" "xfce" "mate" "openbox"
"awesome"
"i3-wm" "i3status" "dmenu" "st"
"ratpoison" "xterm"
;; build system `emacs' does not support cross builds
;"emacs-exwm" "emacs-desktop-environment"
"emacs"))
;; NOTE: %default-xorg-modules depends on system.
(parameterize
((%current-target-system target))
%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))
(map specification->package
'("coreutils" "grep" "sed" "findutils" "diffutils" "patch"
"gawk" "gettext" "gzip" "xz" "zstd"
"hello" "zlib"))))
(define %packages-to-cross-build-for-mingw
;; Many things don't build for MinGW. Restrict to what's known to work
;; to test that the cross-compiler itself works.
(map specification->package '("hello")))
;;;
;;; Manifests.
;;;
;; As per the Guix Survey of 2024 we only worry about cross compiling from
;; x86_64-linux (98% of users) and not from others (aarch64 with 19%).
(define %cross-manifest
(manifest
(append-map (lambda (target)
(map (cut package->manifest-entry* <> "x86_64-linux"
#:target target)
(if (target-mingw? target)
%packages-to-cross-build-for-mingw
%packages-to-cross-build)))
(fold delete (targets)
'(;; Disable cross-compilation to self:
"x86_64-linux-gnu"
;; mips64el commonly targets a different architecture
;; revision than we targeted in Guix.
"mips64el-linux-gnu"
;; Ignore bare-metal targets.
"avr"
"or1k-elf"
"xtensa-ath9k-elf")))))
(define %cross-system
(manifest
(cons*
;; Include a couple of extra kernels that are commonly used:
(package->manifest-entry* (@ (gnu packages linux)
linux-libre-arm64-generic)
"x86_64-linux"
#:target "aarch64-linux-gnu")
(package->manifest-entry* (@ (gnu packages linux)
linux-libre-arm-generic)
"x86_64-linux"
#:target "arm-linux-gnueabihf")
(package->manifest-entry* (@ (gnu packages linux)
linux-libre-riscv64-generic)
"x86_64-linux"
#:target "riscv64-linux-gnu")
(append-map (lambda (target)
(map (cut package->manifest-entry* <> "x86_64-linux"
#:target target)
(append %base-packages
%system-packages
;; With a graphical environment:
(if (or (target-x86-32? target)
(target-aarch64? target))
;; %system-gui-packages depends on the system.
(%system-gui-packages target)
'()))))
(fold delete (map platform-system->target (systems))
'(;; Disable cross-compilation to self:
"x86_64-linux-gnu"
;; Ignore obsolete systems, as in (gnu ci).
"mips64el-linux-gnu"
"powerpc-linux-gnu"))))))
;; Return the union of all the manifests.
(concatenate-manifests (list %cross-manifest
%cross-system))
-136
View File
@@ -1,136 +0,0 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2021-2024 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
;;; This file returns a manifest that builds a directory containing Disarchive
;;; metadata for all the tarballs packages refer to.
(use-modules (srfi srfi-1) (ice-9 match)
(guix packages) (guix gexp) (guix profiles)
(guix base16)
(gnu packages))
(include "source.scm")
(define (tarball-origin? origin)
(match (origin-actual-file-name origin)
(#f #f)
((? string? file)
;; As of version 0.4.0, Disarchive can only deal with raw tarballs,
;; gzip-compressed tarballs, and xz-compressed tarballs.
(and (origin-hash origin)
(or (string-suffix? ".tar.gz" file)
(string-suffix? ".tgz" file)
(string-suffix? ".tar.bz2" file)
(string-suffix? ".tbz2" file)
(string-suffix? ".tar.xz" file)
(string-suffix? ".tar" file))))))
(define (origin->disarchive origin)
"Return a directory containing Disarchive metadata for ORIGIN, a tarball, or
an empty directory if ORIGIN could not be disassembled."
(define file-name
(let ((hash (origin-hash origin)))
(string-append (symbol->string (content-hash-algorithm hash))
"/"
(bytevector->base16-string
(content-hash-value hash)))))
(define disarchive
(specification->package "disarchive"))
(define build
(with-imported-modules '((guix build utils))
#~(begin
(use-modules (guix build utils)
(srfi srfi-34))
(define tarball
#+(upstream-origin origin))
(define file-name
(string-append #$output "/" #$file-name))
(define profile
#+(profile (content (packages->manifest (list disarchive)))))
(mkdir-p (dirname file-name))
(setenv "PATH" (string-append profile "/bin"))
(setenv "GUILE_LOAD_PATH"
(string-append profile "/share/guile/site/"
(effective-version)))
(setenv "GUILE_LOAD_COMPILED_PATH"
(string-append profile "/lib/guile/" (effective-version)
"/site-ccache"))
(guard (c ((invoke-error? c)
;; Sometimes Disarchive fails with "could not find Gzip
;; compressor". When that happens, produce an empty
;; directory instead of failing.
(report-invoke-error c)
(delete-file file-name)))
(with-output-to-file file-name
(lambda ()
;; Disarchive records the tarball name in its output. Thus,
;; strip the hash from TARBALL.
(let ((short-name (strip-store-file-name tarball)))
(symlink tarball short-name)
(invoke "disarchive" "disassemble" short-name))))))))
(computed-file (match (origin-actual-file-name origin)
((? string? str) (string-append str ".dis"))
(#f "anonymous-tarball.dis"))
build))
;; The manifest containing Disarchive data.
(let* ((origins (all-origins))
(disarchives
(filter-map (lambda (origin)
(and (tarball-origin? origin)
;; Dismiss origins with (sha256 #f) such as that of
;; IceCat.
(and=> (origin-hash origin)
content-hash-value)
;; FIXME: Exclude the Chromium tarball because it's
;; huge and "disarchive disassemble" exceeds the
;; max-silent timeout.
(not (string-prefix?
"chromium-"
(origin-actual-file-name origin)))
(manifest-entry
(name
(string-append (origin-actual-file-name origin)
".dis"))
(version "0")
(item (origin->disarchive origin)))))
origins)))
(manifest
(cons (manifest-entry
(name "disarchive-collection")
(version (number->string (length origins)))
(item (directory-union "disarchive-collection"
(map manifest-entry-item disarchives)
#:copy? #t)))
;; Cuirass can distribute derivation builds to build machines if and
;; only if it has one "job" per derivation. Thus, add them here in
;; addition to "disarchive-collection".
disarchives)))
-83
View File
@@ -1,83 +0,0 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2020, 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/>.
;;; Commentary:
;;;
;;; This file defines a manifest with a selection of packages for Cuirass to
;;; build for GNU/Hurd.
;;;
;;; Code:
(use-modules (gnu)
(gnu system hurd)
(guix packages)
(guix utils)
(ice-9 match)
(srfi srfi-1))
(use-package-modules
autotools base bootloaders commencement compression file gawk gdb gettext gtk
guile guile-xyz hurd less m4 package-management python ssh
texinfo tls version-control)
(define (input->package input)
"Return the INPUT as package, or #f."
(match input
((label (and (? package?) package))
package)
((label (and (? package?) package . output))
(cons package output))
(_ #f)))
(define guix-dependencies
(filter-map input->package (package-direct-inputs guix)))
(define (package-without-tests p)
(package/inherit p
(arguments
(substitute-keyword-arguments (package-arguments p)
((#:tests? _ #f) #f)))))
(packages->manifest
(cons*
;; where it all starts
hello
;; development utililities
diffutils file findutils gawk grep gzip less m4 openssh-sans-x tar xz
;; development packages
autoconf automake libtool texinfo
gcc-toolchain gdb-minimal git-minimal gnu-make
gettext-minimal python-minimal
guile-3.0 guile-2.2 guile-2.0
guile-readline guile-colorized
guile-gnutls guile-fibers guile-json-4
;; ourselves!
(package-without-tests guix)
;; system
grub-minimal grub
;; system reconfigure
gdk-pixbuf
(append
guix-dependencies
%base-packages/hurd)))
-35
View File
@@ -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))
'())))
-167
View File
@@ -1,167 +0,0 @@
;;; GNU Guix --- Functional package management for GNU
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
;;; This file returns a manifest containing packages which are needed by the
;;; installer.
(use-modules (guix packages)
(gnu packages)
((gnu services xorg) #:select (%default-xorg-modules))
(guix profiles)
(guix utils)
(srfi srfi-1))
(define %desktop-packages
(append
%default-xorg-modules
(map specification->package
(list
;; etc-service
"net-base"
"tzdata"
;; boot-file-system-utilities-service
"e2fsprogs"
;; plasma-deskto-sservice-type
"plasma"
;; gnome-desktop-service
"gnome"
;; xfce-desktop-service
"xfce"
;; mate-desktop-service
"mate"
;; set-xorg-configuration-service
"font-alias"
"font-misc-misc"
"font-adobe75dpi"
"xorg-server"
;; screen-locker-service
"slock"
"xlockmore"
;; mtp-service
"libmtp"
;; sane-service
"sane"
"sane-backends"
;; mount-setuid-helpers-service
"nfs-utils"
"ntfs-3g"
;; guix-artwork-service
"guix-backgrounds"
"guix-icons"
;; vte-integration-service
"vte"
;; network-manager-applet-service
"network-manager-applet"
;; modem-manager-service
"modem-manager"
;; usb-modeswitch-service
"usb-modeswitch"
"usb-modeswitch-data"
;; avahi-service
"avahi"
;; udisks-service
"udisks"
;; cups-pk-helper-service
"cups-pk-helper"
;; colord-service
"colord"
;; geoclue-service
"geoclue"
;; polkit-service
"polkit"
;; elogind-service
"elogind"
;; dbus-service
;; ntp-service
"ntp"
;; alsa-service
"alsa-plugins"
;; mingetty-service
"mingetty"
;; etc-bashrc-d-service
"bash-completion"
;; udev-service
"eudev"
"lvm2"
"alsa-utils"
"crda"
;; sysctl-service
"procps"
;; special-files-service
"coreutils"
"grub-pc"
"less"
"mg"
"nano"
"nvi"
"man-db"
"info-reader"
"kbd"
"guile-readline"
"guile-colorized"
"pciutils"
"usbutils"
"util-linux-with-udev"
"kmod"
"isc-dhcp"
"iproute2"
"wget"
"nss-certs"
"iw"
"wireless-tools"
"psmisc"
"which"
"guile"
"findutils"
"grep"
"sed"
"diffutils"
"patch"
"gawk"
"tar"
"gzip"
"bzip2"
"lzip"
"xz"
"zstd"
;; packages
"sway"
"foot"
"wmenu"
"icewm"
"openbox"
"awesome"
"i3-wm"
"i3status"
"dmenu"
"st"
"ratpoison"
"xterm"
"emacs"
"emacs-exwm"
"emacs-desktop-environment"))))
(define %desktop-manifest
(manifest
;; Some of %SYSTEM-PACKAGES are currently unsupported on some
;; systems--e.g., GNOME on 32-bit, due to Rust. Filter them out.
(filter-map (lambda (package)
(and (supported-package? package (%current-system))
(package->manifest-entry package)))
(append %desktop-packages))))
%desktop-manifest
-123
View File
@@ -1,123 +0,0 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2020-2022, 2024 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
;;; Copyright © 2023 Andreas Enge <andreas@enge.fr>
;;; Copyright © 2025 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/>.
;;; This file returns a manifest containing packages which are needed by the
;;; installer.
(use-modules (guix packages)
(gnu packages)
((gnu system) #:select (%base-packages %base-firmware))
(guix profiles)
(guix utils)
(srfi srfi-1))
(define* (package->manifest-entry* package system
#:key target)
"Return a manifest entry for PACKAGE on SYSTEM, optionally cross-compiled to
TARGET."
(manifest-entry
(inherit (package->manifest-entry package))
(name (string-append (package-name package) "." system
(if target
(string-append "." target)
"'")))
(item (with-parameters ((%current-system system)
(%current-target-system target))
package))))
(define %system-packages
;; Key packages proposed by the Guix System installer.
(append (map specification->package
'("guix" "shepherd" "guile-static-initrd"
"openssh" "tor" "ntp" "gpm" "mingetty"
"connman" "network-manager" "wpa-supplicant" "isc-dhcp" "cups"
"linux-libre" "grub-hybrid"
;; privileged programs
"shadow" "sudo" "fuse" "inetutils" "util-linux"))
%base-firmware
%base-packages))
(define %bootloader-packages
;; The bootloaders offered by the Guix System installer.
(append
(map specification->package
'("grub-pc" "grub-minimal" "grub-efi"))
;; Add all the u-boot packages.
;; TODO: Filter by target.
(if (or (target-arm32?)
(target-aarch64?)
(target-riscv64?))
`(,@(fold-packages
(lambda (package lst)
(if (string-prefix? "u-boot-"
(package-name package))
(cons package lst)
lst))
(list)))
'())))
(define %filesystem-packages
;; The installer offers to create filesystems which are then needed.
;; See also: (gnu system linux-initrd)
(cons* (@ (gnu packages linux) e2fsck/static)
(@ (gnu packages disk) fatfsck/static)
(@ (gnu packages file-systems) bcachefs/static)
(@ (gnu packages linux) btrfs-progs/static)
(@ (gnu packages file-systems) jfs_fsck/static)
(@ (gnu packages linux) ntfsfix/static)
(@ (gnu packages linux) f2fs-fsck/static)
(@ (gnu packages linux) xfs_repair/static)
(map specification->package
'("lvm2-static"
"cryptsetup-static"
"mdadm-static"))))
;;;
;;; Manifests.
;;;
(define %system-manifest
(manifest
(append
;; The linux-libre-*-generic kernel is commonly used on some architectures.
(cond
((target-aarch64?)
(list (package->manifest-entry (@ (gnu packages linux)
linux-libre-arm64-generic))))
((target-riscv64?)
(list (package->manifest-entry (@ (gnu packages linux)
linux-libre-riscv64-generic))))
((target-arm32?)
(list (package->manifest-entry (@ (gnu packages linux)
linux-libre-arm-generic))))
(else '()))
;; Some of %SYSTEM-PACKAGES are currently unsupported on some
;; systems--e.g., GNOME on 32-bit, due to Rust. Filter them out.
(filter-map (lambda (package)
(and (supported-package? package (%current-system))
(package->manifest-entry package)))
(append %system-packages
%bootloader-packages
%filesystem-packages)))))
%system-manifest
-164
View File
@@ -1,164 +0,0 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2025 Noé Lopez <noelopez@free.fr>
;;;
;;; 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 manifest is a list of packages that user care about (collected via an
;;; online form). It corresponds to the “Important packages” of GCD 005.
(specifications->manifest
(list
"0ad"
"agda"
"alacritty"
"ardour"
"autoconf"
"automake"
"blender"
"borg"
"btrfs-progs"
"certbot"
"chez-scheme"
"clang-toolchain"
"cryptsetup"
"dillo"
"direnv"
"docker-cli"
"dovecot"
"emacs"
"emacs-exwm"
"emacs-pgtk"
"evince"
"fcitx5"
"file"
"fish"
"foot"
"fzf"
"gajim"
"gallery-dl"
"gcc-toolchain"
"getmail6"
"gettext"
"ghc-xmonad-contrib"
"gimp"
"git"
"gmp"
"gnome"
"gnupg"
"godot"
"gpaste"
"guile"
"guile-json"
"hatch"
"help2man"
"helvum"
"hexchat"
"hyprland"
"icecat"
"imagemagick"
"imapfilter"
"jami"
"k3b"
"kakoune"
"keepassxc"
"krita"
"ksoloti-patcher"
"libreoffice"
"librewolf"
"libsecret"
"libtool"
"libvirt"
"llama-cpp"
"mariadb"
"luanti"
"mpc"
"mpfr"
"mplayer"
"mpv"
"mullvadbrowser"
"neovim"
"nginx"
"niri"
"nix"
"node"
"notmuch"
"obs"
"offlineimap3"
"opencv"
"openmpi"
"opensmtpd"
"openssh"
"openttd"
"pandoc"
"password-store"
"pavucontrol"
"php"
"picard"
"pipewire"
"pkg-config"
"plasma"
"plasma-desktop"
"po4a"
"podman"
"postgresql"
"python"
"python-lxml"
"python-pycryptodome"
"qemu"
"ranger"
"retroarch"
;;"rocm"
"rofi"
"rspamd"
"rsync"
"screen"
"slurm"
"sqlite"
"sqlitebrowser"
"strace"
"strawberry"
"syncthing"
"taisei"
"telegram-desktop"
"texlive-babel"
"texlive-babel-english"
"texlive-babel-french"
"texlive-babel-german"
"texlive-collection-latex"
"texlive-collection-latexrecommended"
"texlive-collection-xetex"
"texlive-pdfjam"
"tmux"
"tuba"
"ungoogled-chromium"
"unison"
"unzip"
"uv"
"viewnior"
"virt-manager"
"waybar"
"wine"
"wine64"
"wireguard-tools"
"xmobar"
"xmonad"
"xournal"
"xournalpp"
"xpdf"
"yt-dlp"
"zig"
"zip"
"zsh"))
-55
View File
@@ -1,55 +0,0 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2021, 2024 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
;;; GNU Guix is free software; you can redistribute it and/or modify it
;;; under the terms of the GNU General Public License as published by
;;; the Free Software Foundation; either version 3 of the License, or (at
;;; your option) any later version.
;;;
;;; GNU Guix is distributed in the hope that it will be useful, but
;;; WITHOUT ANY WARRANTY; without even the implied warranty of
;;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
;;; GNU General Public License for more details.
;;;
;;; You should have received a copy of the GNU General Public License
;;; along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
;;; This file returns a manifest containing origins of all the packages. The
;;; main purpose is to allow continuous integration services to keep upstream
;;; source code around. It can also be passed to 'guix weather -m'.
(use-modules (srfi srfi-1) (srfi srfi-26)
(ice-9 match) (ice-9 vlist)
(guix packages) (guix profiles)
(gnu packages))
(define (upstream-origin source)
"Return SOURCE without any patches or snippet."
(origin (inherit source)
(snippet #f) (patches '())))
(define (all-origins)
"Return the list of origins referred to by all the packages."
(let loop ((packages (all-packages))
(origins '())
(visited vlist-null))
(match packages
((head . tail)
(let ((new (remove (cut vhash-assq <> visited)
(package-direct-sources head))))
(loop tail (append new origins)
(fold (cut vhash-consq <> #t <>)
visited new))))
(()
origins))))
;; Return a manifest containing all the origins.
(manifest (map (lambda (origin)
(manifest-entry
(name (or (origin-actual-file-name origin)
"origin"))
(version "0")
(item (upstream-origin origin))))
(all-origins)))

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