mirror of
https://git.savannah.gnu.org/git/guix.git
synced 2026-07-11 06:14:05 +02:00
Compare commits
28 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 88c2e2349a | |||
| 3bf155b888 | |||
| a40cc32ae8 | |||
| 1691a4458c | |||
| e32c098f5d | |||
| 4ea1538dd7 | |||
| 10527dac08 | |||
| f492b57306 | |||
| 9b3c194c2d | |||
| bba1e723b0 | |||
| 47d554602c | |||
| aaf86bbe1f | |||
| 889fe96307 | |||
| efc8489651 | |||
| 989a3916dc | |||
| 8e2f32cee9 | |||
| b77b4c7c3a | |||
| d7d049fdcd | |||
| 495c50008b | |||
| 9b6703eabe | |||
| a8f9579348 | |||
| 2d4d26769d | |||
| 239bfe2ec1 | |||
| b1aef25453 | |||
| 047ae5c345 | |||
| 2cf16f2c31 | |||
| 09b984b77d | |||
| 6dbdb5fcf5 |
@@ -80,9 +80,28 @@ Please send Guix bug reports to bug-guix@gnu.org.
|
||||
*** The init RAM disk honors more arguments—e.g. ‘root’ and ‘rootflags’
|
||||
*** ‘guix system image’ can now generate WSL images
|
||||
*** The mcron task scheduler logs now contain the jobs exit statuses
|
||||
*** Chromium extensions are now built in a deterministic fashion
|
||||
*** The ‘rsync’ service lets you specify individual “modules”
|
||||
*** New services
|
||||
|
||||
anonip, bitmask, fail2ban, gitile, greetd, jami, lightdm, log-cleanup,
|
||||
nar-herder, opendht, rasdaemon, samba, seatd, strongswan, wsdd
|
||||
|
||||
*** 5311 new packages
|
||||
|
||||
*** 6573 package updates
|
||||
|
||||
Noteworthy updates:
|
||||
bash 5.1.8, binutils 2.37, clojure 1.11.1, cups 2.3.3op2, emacs 28.2,
|
||||
enlightenment 0.25.4, gcc-toolchain 12.2.0, gdb 12.1, ghc 8.10.7,
|
||||
gimp 2.10.32, glibc 2.33, gnome 42.4, gnupg 2.2.32, go 1.19.1, guile 3.0.8,
|
||||
icecat 102.5.0-guix0-preview1, icedtea 3.19.0, inkscape 1.2.1, julia 1.6.7,
|
||||
libreoffice 7.4.3.2, linux-libre 6.0.10, ocaml 4.14.0, octave 7.2.0,
|
||||
openjdk 18, perl 5.34.0, python2 2.7.18, python 3.9.9, racket 8.7,
|
||||
rust 1.60.0, r 4.2.2, sbcl 2.2.10, shepherd 0.9.3, xorg-server 21.1.4
|
||||
|
||||
** Programming interfaces
|
||||
*** Package input fields can now plain package lists
|
||||
*** Package input fields can now be plain package lists
|
||||
*** G-expressions can now be used in build phases
|
||||
*** New ‘modify-inputs’ macro to ease customizing a list of package inputs
|
||||
*** New ‘this-package-input’ and ‘this-package-native-input’ macros
|
||||
@@ -92,7 +111,7 @@ Please send Guix bug reports to bug-guix@gnu.org.
|
||||
*** ‘texlive-union’ is now deprecated in favor of ‘texlive-updmap.cfg’
|
||||
*** New (guix cpu) module
|
||||
*** New (guix least-authority) module
|
||||
*** New (guix plaform) module
|
||||
*** New (guix platform) module
|
||||
*** New (guix read-print) module
|
||||
|
||||
It provides a comment-preserving reader and a comment-preserving
|
||||
@@ -103,11 +122,14 @@ pretty-printer smarter than (ice-9 pretty-print).
|
||||
This build system lets you build Guix instances from channel specifications,
|
||||
similar to how 'guix time-machine' would do it, as regular packages.
|
||||
|
||||
*** New ‘pyproject-build-system’
|
||||
|
||||
This is an extension of ‘python-build-system’ with support for PEP-517 and
|
||||
‘pyproject.toml’ files. It may eventually get merged back into
|
||||
‘python-build-system’.
|
||||
|
||||
*** New ‘elm-build-system’
|
||||
*** New ‘rebar-build-system’
|
||||
*** New services
|
||||
anonip, bitmask, fail2ban, gitile, greetd, jami, lightdm, log-cleanup,
|
||||
nar-herder, opendht, rasdaemon, samba, seatd, strongswan, wsdd
|
||||
|
||||
** Noteworthy bug fixes
|
||||
*** Fall back to Software Heritage when cloning a channel
|
||||
|
||||
+214
-20
@@ -1,5 +1,5 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2019-2022 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2019-2025 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2020 Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
|
||||
;;; Copyright © 2022 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
;;;
|
||||
@@ -34,6 +34,7 @@
|
||||
(guix profiles)
|
||||
(guix utils)
|
||||
(git)
|
||||
(gnu packages)
|
||||
(gnu packages base)
|
||||
(gnu packages compression)
|
||||
(gnu packages gawk)
|
||||
@@ -52,8 +53,116 @@
|
||||
(define file-append*
|
||||
(@@ (guix self) file-append*))
|
||||
|
||||
(define translated-texi-manuals
|
||||
(@@ (guix self) translate-texi-manuals))
|
||||
(define (translated-texi-manuals source)
|
||||
"Return the translated texinfo manuals built from SOURCE."
|
||||
(define po4a
|
||||
(specification->package "po4a"))
|
||||
|
||||
(define gettext-minimal
|
||||
(specification->package "gettext-minimal"))
|
||||
|
||||
(define documentation
|
||||
(file-append* source "doc"))
|
||||
|
||||
(define documentation-po
|
||||
(file-append* source "po/doc"))
|
||||
|
||||
(define build
|
||||
(with-imported-modules '((guix build utils) (guix build po))
|
||||
#~(begin
|
||||
(use-modules (guix build utils) (guix build po)
|
||||
(ice-9 match) (ice-9 regex) (ice-9 textual-ports)
|
||||
(ice-9 vlist) (ice-9 threads)
|
||||
(srfi srfi-1))
|
||||
|
||||
(define (translate-tmp-texi po source output)
|
||||
"Translate Texinfo file SOURCE using messages from PO, and write
|
||||
the result to OUTPUT."
|
||||
(invoke #+(file-append po4a "/bin/po4a-translate")
|
||||
"-M" "UTF-8" "-L" "UTF-8" "-k" "0" "-f" "texinfo"
|
||||
"-m" source "-p" po "-l" output))
|
||||
|
||||
(define (canonicalize-whitespace str)
|
||||
;; Change whitespace (newlines, etc.) in STR to #\space.
|
||||
(string-map (lambda (chr)
|
||||
(if (char-set-contains? char-set:whitespace chr)
|
||||
#\space
|
||||
chr))
|
||||
str))
|
||||
|
||||
(define* (translate-texi prefix po lang
|
||||
#:key (extras '()))
|
||||
"Translate the manual for one language LANG using the PO file.
|
||||
PREFIX must be the prefix of the manual, 'guix' or 'guix-cookbook'. EXTRAS is
|
||||
a list of extra files, such as '(\"contributing\")."
|
||||
(for-each (lambda (file)
|
||||
(translate-tmp-texi po (string-append file ".texi")
|
||||
(string-append file "." lang
|
||||
".texi.tmp")))
|
||||
(cons prefix extras))
|
||||
|
||||
(for-each (lambda (file)
|
||||
(let* ((texi (string-append file "." lang ".texi"))
|
||||
(tmp (string-append texi ".tmp")))
|
||||
(copy-file tmp texi)
|
||||
(translate-cross-references texi po)))
|
||||
(cons prefix extras)))
|
||||
|
||||
(define (available-translations directory domain)
|
||||
;; Return the list of available translations under DIRECTORY for
|
||||
;; DOMAIN, a gettext domain such as "guix-manual". The result is
|
||||
;; a list of language/PO file pairs.
|
||||
(filter-map (lambda (po)
|
||||
(let ((base (basename po)))
|
||||
(and (string-prefix? (string-append domain ".")
|
||||
base)
|
||||
(match (string-split base #\.)
|
||||
((_ ... lang "po")
|
||||
(cons lang po))))))
|
||||
(find-files directory
|
||||
"\\.[a-z]{2}(_[A-Z]{2})?\\.po$")))
|
||||
|
||||
(define parallel-jobs
|
||||
;; Limit thread creation by 'n-par-for-each', mostly to put an
|
||||
;; upper bound on memory usage.
|
||||
(min (parallel-job-count) 4))
|
||||
|
||||
(mkdir #$output)
|
||||
(copy-recursively #$documentation "."
|
||||
#:log (%make-void-port "w"))
|
||||
|
||||
(for-each
|
||||
(lambda (file)
|
||||
(copy-file file (basename file)))
|
||||
(find-files #$documentation-po ".*.po$"))
|
||||
|
||||
(setenv "GUIX_LOCPATH"
|
||||
#+(file-append glibc-utf8-locales "/lib/locale"))
|
||||
(setenv "PATH" #+(file-append gettext-minimal "/bin"))
|
||||
(setenv "LC_ALL" "en_US.UTF-8")
|
||||
(setlocale LC_ALL "en_US.UTF-8")
|
||||
|
||||
(n-par-for-each parallel-jobs
|
||||
(match-lambda
|
||||
((language . po)
|
||||
(translate-texi "guix" po language
|
||||
#:extras '("contributing"))))
|
||||
(available-translations "." "guix-manual"))
|
||||
|
||||
(n-par-for-each parallel-jobs
|
||||
(match-lambda
|
||||
((language . po)
|
||||
(translate-texi "guix-cookbook" po language)))
|
||||
(available-translations "." "guix-cookbook"))
|
||||
|
||||
(for-each (lambda (file)
|
||||
(install-file file #$output))
|
||||
(append
|
||||
(find-files "." "contributing\\..*\\.texi$")
|
||||
(find-files "." "guix\\..*\\.texi$")
|
||||
(find-files "." "guix-cookbook\\..*\\.texi$"))))))
|
||||
|
||||
(computed-file "guix-translated-texinfo" build))
|
||||
|
||||
(define info-manual
|
||||
(@@ (guix self) info-manual))
|
||||
@@ -78,6 +187,10 @@
|
||||
%cookbook-languages
|
||||
%manual-languages))
|
||||
|
||||
(define %latest-guix-version
|
||||
;; Latest released version.
|
||||
"1.4.0")
|
||||
|
||||
(define (texinfo-manual-images source)
|
||||
"Return a directory containing all the images used by the user manual, taken
|
||||
from SOURCE, the root of the source tree."
|
||||
@@ -184,11 +297,16 @@ as well as images, OS examples, and translations."
|
||||
(define %web-site-url
|
||||
;; URL of the web site home page.
|
||||
(or (getenv "GUIX_WEB_SITE_URL")
|
||||
"/software/guix/"))
|
||||
"/"))
|
||||
|
||||
(define %manual-css-url
|
||||
;; URL of the main CSS file.
|
||||
(in-vicinity %web-site-url
|
||||
"themes/initial/css/manual.css"))
|
||||
|
||||
(define %makeinfo-html-options
|
||||
;; Options passed to 'makeinfo --html'.
|
||||
'("--css-ref=https://www.gnu.org/software/gnulib/manual.css"
|
||||
`(,(string-append "--css-ref=" %manual-css-url)
|
||||
"-c" "EXTRA_HEAD=<meta name=\"viewport\" \
|
||||
content=\"width=device-width, initial-scale=1\" />"))
|
||||
|
||||
@@ -284,6 +402,9 @@ actual file name."
|
||||
(loop rest))
|
||||
((('strong _ ...) _ ...)
|
||||
#t)
|
||||
((('span ('@ ('class "category")) ;raw Texinfo 6.8
|
||||
(? string-or-entity?) ...) rest ...)
|
||||
#t)
|
||||
((('span ('@ ('class "symbol-definition-category"))
|
||||
(? string-or-entity?) ...) rest ...)
|
||||
#t)
|
||||
@@ -507,10 +628,16 @@ its <pre class=\"lisp\"> blocks (as produced by 'makeinfo --html')."
|
||||
|
||||
;; Replace the ugly <strong> used for @deffn etc., which
|
||||
;; translate to <dt>, with more stylable markup.
|
||||
(('dt (@ ('id id)) category ... ('strong thing))
|
||||
(('dt ('@ ('id id)) ;raw Texinfo 6.8
|
||||
('span ('@ ('class "category")) category ...)
|
||||
('span ('strong thing)
|
||||
anchor))
|
||||
(highlight-definition id category thing '()))
|
||||
(('dt (@ ('id id)) category ... ('strong thing)
|
||||
(? space?) ('em args ...))
|
||||
(('dt (@ ('id id))
|
||||
('span ('@ ('class "category")) category ...)
|
||||
('span ('strong thing)
|
||||
(? space?) ('em args ...)
|
||||
anchor))
|
||||
(highlight-definition id category thing args))
|
||||
|
||||
((tag ('@ attributes ...) body ...)
|
||||
@@ -613,9 +740,10 @@ its <pre class=\"lisp\"> blocks (as produced by 'makeinfo --html')."
|
||||
|
||||
(define* (stylized-html source input
|
||||
#:key
|
||||
(latest-version %latest-guix-version)
|
||||
(languages %languages)
|
||||
(manual %manual)
|
||||
(manual-css-url "/static/base/css/manual.css"))
|
||||
(manual-css-url %manual-css-url))
|
||||
"Process all the HTML files in INPUT; add them MANUAL-CSS-URL as a <style>
|
||||
link, and add a menu to choose among LANGUAGES. Use the Guix PO files found
|
||||
in SOURCE."
|
||||
@@ -661,6 +789,14 @@ in SOURCE."
|
||||
(href ,url))
|
||||
,label)))
|
||||
|
||||
(define menu-item-separator
|
||||
;; Thin horizontal line to separate drop-down menu items.
|
||||
`(img (@ (class "hline")
|
||||
(src ,(in-vicinity
|
||||
#$%web-site-url
|
||||
"themes/initial/img/h-separator.png"))
|
||||
(alt ""))))
|
||||
|
||||
(define* (navigation-bar menus #:key split-node?)
|
||||
;; Return the navigation bar showing all of MENUS.
|
||||
`(header (@ (class "navbar"))
|
||||
@@ -707,7 +843,43 @@ in SOURCE."
|
||||
"https://translate.fedoraproject.org/projects/guix/documentation-cookbook/"
|
||||
"https://translate.fedoraproject.org/projects/guix/documentation-manual/")))))
|
||||
|
||||
(define (stylized-html sxml file)
|
||||
(define (version-menu-items language split-node?)
|
||||
;; Return the menu items to select the version of the manual of
|
||||
;; the type of medium (PDF, split-node, etc.).
|
||||
(define language-extension
|
||||
(if (string=? language "en")
|
||||
""
|
||||
(string-append "." language)))
|
||||
|
||||
(define pdf-link
|
||||
(string-append (if split-node? "../" "")
|
||||
#$manual language-extension ".pdf"))
|
||||
|
||||
(define version-links
|
||||
(list (menu-item #$latest-version
|
||||
(string-append
|
||||
"/manual/" #$latest-version
|
||||
"/" language
|
||||
(if split-node? "/html_node" "")))
|
||||
(menu-item "development"
|
||||
(string-append
|
||||
"/manual/devel/" language
|
||||
(if split-node? "/html_node" "")))
|
||||
menu-item-separator))
|
||||
|
||||
(append (if (string=? #$manual "guix")
|
||||
version-links
|
||||
'())
|
||||
(list (if split-node?
|
||||
(menu-item "single page"
|
||||
(string-append "../" #$manual
|
||||
language-extension
|
||||
".html"))
|
||||
(menu-item "multiple pages"
|
||||
"html_node"))
|
||||
(menu-item "PDF" pdf-link))))
|
||||
|
||||
(define (stylized-html sxml file language)
|
||||
;; Return SXML, which was read from FILE, with additional
|
||||
;; styling.
|
||||
(define split-node?
|
||||
@@ -730,9 +902,16 @@ in SOURCE."
|
||||
;; TODO: Add "Contribute" menu, to report
|
||||
;; errors, etc.
|
||||
(list (menu-dropdown
|
||||
#:label "Version"
|
||||
#:items
|
||||
(version-menu-items language
|
||||
split-node?))
|
||||
(menu-dropdown
|
||||
#:label
|
||||
`(img (@ (alt "Language")
|
||||
(src "/static/base/img/language-picker.svg")))
|
||||
(src #$(in-vicinity
|
||||
%web-site-url
|
||||
"themes/initial/img/language-picker.svg"))))
|
||||
#:items
|
||||
(language-menu-items file)))
|
||||
#:split-node? split-node?)
|
||||
@@ -744,13 +923,13 @@ in SOURCE."
|
||||
((? string? str)
|
||||
str))))
|
||||
|
||||
(define (process-html file)
|
||||
(define (process-html file language)
|
||||
;; Parse FILE and add links to translations. Install the result
|
||||
;; to #$output.
|
||||
(format (current-error-port) "processing ~a...~%" file)
|
||||
(let* ((shtml (parameterize ((%strict-tokenizer? #t))
|
||||
(call-with-input-file file html->shtml)))
|
||||
(processed (stylized-html shtml file))
|
||||
(processed (stylized-html shtml file language))
|
||||
(base (string-drop file (string-length #$input)))
|
||||
(target (string-append #$output base)))
|
||||
(mkdir-p (dirname target))
|
||||
@@ -758,6 +937,15 @@ in SOURCE."
|
||||
(lambda (port)
|
||||
(write-shtml-as-html processed port)))))
|
||||
|
||||
(define (input-file-language file)
|
||||
;; Return the language code of FILE, an input file, as a string
|
||||
;; like "sv" or "zh-cn".
|
||||
(match (string-tokenize (string-drop file
|
||||
(string-length #$input))
|
||||
(char-set-complement
|
||||
(char-set #\/)))
|
||||
((language _ ...) language)))
|
||||
|
||||
;; Install a UTF-8 locale so we can process UTF-8 files.
|
||||
(setenv "GUIX_LOCPATH"
|
||||
#+(file-append glibc-utf8-locales "/lib/locale"))
|
||||
@@ -768,7 +956,8 @@ in SOURCE."
|
||||
(n-par-for-each (parallel-job-count)
|
||||
(lambda (file)
|
||||
(if (string-suffix? ".html" file)
|
||||
(process-html file)
|
||||
(let ((language (input-file-language file)))
|
||||
(process-html file language))
|
||||
;; Copy FILE as is to #$output.
|
||||
(let* ((base (string-drop file (string-length #$input)))
|
||||
(target (string-append #$output base)))
|
||||
@@ -835,7 +1024,8 @@ makeinfo OPTIONS."
|
||||
(let* ((texi (language->texi-file-name language))
|
||||
(opts `("--html"
|
||||
"-c" ,(string-append "TOP_NODE_UP_URL=/manual/"
|
||||
language)
|
||||
#$%latest-guix-version
|
||||
"/" language)
|
||||
#$@options
|
||||
,texi)))
|
||||
(format #t "building HTML manual for language '~a'...~%"
|
||||
@@ -903,11 +1093,11 @@ makeinfo OPTIONS."
|
||||
sed
|
||||
tar
|
||||
texinfo
|
||||
texlive-base
|
||||
texlive-scheme-basic
|
||||
texlive-bin ;for GUIX_TEXMF
|
||||
texlive-epsf
|
||||
texlive-fonts-ec
|
||||
texlive-tex-texinfo)))))
|
||||
texlive-ec
|
||||
texlive-texinfo)))))
|
||||
|
||||
(define build
|
||||
(with-imported-modules '((guix build utils))
|
||||
@@ -1293,6 +1483,7 @@ commit date (an integer)."
|
||||
(setenv "PATH"
|
||||
(string-append #+tar "/bin:"
|
||||
#+xz "/bin:"
|
||||
#+zstd "/bin:"
|
||||
#+texinfo "/bin"))
|
||||
(invoke "tar" "xf" #$(package-source guile))
|
||||
(mkdir-p (string-append #$output "/en/html_node"))
|
||||
@@ -1356,7 +1547,9 @@ by 'html-identifier-indexes'."
|
||||
|
||||
|
||||
(let* ((root (canonicalize-path
|
||||
(string-append (current-source-directory) "/..")))
|
||||
(string-append (or (current-source-directory)
|
||||
(string-append (getcwd) "/doc"))
|
||||
"/..")))
|
||||
(commit date (latest-commit+date root))
|
||||
(version (or (getenv "GUIX_MANUAL_VERSION")
|
||||
(string-take commit 7)))
|
||||
@@ -1403,7 +1596,8 @@ by 'html-identifier-indexes'."
|
||||
(merge-index-alists guix-split-node-indexes guile-split-node-indexes))
|
||||
|
||||
(format (current-error-port)
|
||||
"building manual from work tree around commit ~a, ~a~%"
|
||||
"building manual from work tree (~a) around commit ~a, ~a~%"
|
||||
root
|
||||
commit
|
||||
(let* ((time (make-time time-utc 0 date))
|
||||
(date (time-utc->date time)))
|
||||
|
||||
@@ -1514,7 +1514,7 @@ that we can send the rest of the patches to.
|
||||
|
||||
@example
|
||||
$ git send-email outgoing/0000-cover-letter.patch -a \
|
||||
--to=guix-patches@@debbugs.gnu.org \
|
||||
--to=guix-patches@@gnu.org \
|
||||
$(etc/teams.scm cc-members ...)
|
||||
$ rm outgoing/0000-cover-letter.patch # we don't want to resend it!
|
||||
@end example
|
||||
|
||||
+11
-11
@@ -10,8 +10,8 @@
|
||||
@include version.texi
|
||||
|
||||
@c Identifier of the OpenPGP key used to sign tarballs and such.
|
||||
@set OPENPGP-SIGNING-KEY-ID 27D586A4F8900854329FF09F1260E46482E63562
|
||||
@set OPENPGP-SIGNING-KEY-URL https://sv.gnu.org/people/viewgpg.php?user_id=127547
|
||||
@set OPENPGP-SIGNING-KEY-ID 3CE464558A84FDC69DB40CFB090B11993D9AEBB5
|
||||
@set OPENPGP-SIGNING-KEY-URL https://sv.gnu.org/people/viewgpg.php?user_id=15145
|
||||
|
||||
@c Base URL for downloads.
|
||||
@set BASE-URL https://ftp.gnu.org/gnu/guix
|
||||
@@ -22,7 +22,7 @@
|
||||
@set SUBSTITUTE-URLS https://@value{SUBSTITUTE-SERVER-1} https://@value{SUBSTITUTE-SERVER-2}
|
||||
|
||||
@copying
|
||||
Copyright @copyright{} 2012-2022 Ludovic Courtès@*
|
||||
Copyright @copyright{} 2012-2022, 2025 Ludovic Courtès@*
|
||||
Copyright @copyright{} 2013, 2014, 2016 Andreas Enge@*
|
||||
Copyright @copyright{} 2013 Nikita Karetnikov@*
|
||||
Copyright @copyright{} 2014, 2015, 2016 Alex Kost@*
|
||||
@@ -642,7 +642,7 @@ to join! @xref{Contributing}, for information about how you can help.
|
||||
|
||||
@quotation Note
|
||||
We recommend the use of this
|
||||
@uref{https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh,
|
||||
@uref{https://guix.gnu.org/install.sh,
|
||||
shell installer script} to install Guix on top of a running GNU/Linux system,
|
||||
thereafter called a @dfn{foreign distro}.@footnote{This section is concerned
|
||||
with the installation of the package manager, which can be done on top of a
|
||||
@@ -691,14 +691,14 @@ GNU@tie{}tar and Xz.
|
||||
@c Note duplicated from the ``Installation'' node.
|
||||
@quotation Note
|
||||
We recommend the use of this
|
||||
@uref{https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh,
|
||||
@uref{https://guix.gnu.org/install.sh,
|
||||
shell installer script}. The script automates the download, installation, and
|
||||
initial configuration steps described below. It should be run as the root
|
||||
user. As root, you can thus run this:
|
||||
|
||||
@example
|
||||
cd /tmp
|
||||
wget https://git.savannah.gnu.org/cgit/guix.git/plain/etc/guix-install.sh
|
||||
wget -O guix-install.sh https://guix.gnu.org/install.sh
|
||||
chmod +x guix-install.sh
|
||||
./guix-install.sh
|
||||
@end example
|
||||
@@ -11706,8 +11706,7 @@ This is the declarative counterpart of @code{text-file}.
|
||||
@end deffn
|
||||
|
||||
@deffn {Scheme Procedure} computed-file @var{name} @var{gexp} @
|
||||
[#:local-build? #t]
|
||||
[#:options '()]
|
||||
[#:local-build? #t] [#:options '()]
|
||||
Return an object representing the store item @var{name}, a file or
|
||||
directory computed by @var{gexp}. When @var{local-build?} is true (the
|
||||
default), the derivation is built locally. @var{options} is a list of
|
||||
@@ -39224,7 +39223,7 @@ $ qemu-system-x86_64 \
|
||||
-nic user,model=virtio-net-pci \
|
||||
-enable-kvm -m 2048 \
|
||||
-device virtio-blk,drive=myhd \
|
||||
-drive if=none,file=/tmp/qemu-image,id=myhd
|
||||
-drive if=none,file=guix-system-vm-image-@value{VERSION}.x86_64-linux.qcow2,id=myhd
|
||||
@end example
|
||||
|
||||
Here is what each of these options means:
|
||||
@@ -39260,8 +39259,9 @@ better performance than if it were emulating a complete disk drive. See the
|
||||
QEMU and KVM documentation for more info.
|
||||
|
||||
@item -drive if=none,file=/tmp/qemu-image,id=myhd
|
||||
Use our QCOW image, the @file{/tmp/qemu-image} file, as the backing
|
||||
store of the ``myhd'' drive.
|
||||
Use our QCOW image, the
|
||||
@file{guix-system-vm-image-@value{VERSION}.x86_64-linux.qcow2} file, as
|
||||
the backing store of the ``myhd'' drive.
|
||||
@end table
|
||||
|
||||
The default @command{run-vm.sh} script that is returned by an invocation of
|
||||
|
||||
+10
-4
@@ -1,7 +1,7 @@
|
||||
# htmlxref.cnf - reference file for free Texinfo manuals on the web.
|
||||
# Modified by Ludovic Courtès <ludo@gnu.org> for the GNU Guix manual.
|
||||
|
||||
htmlxrefversion=2022-08-04.13; # UTC
|
||||
htmlxrefversion=2026-01-19.09; # UTC
|
||||
|
||||
# Copyright 2010-2020, 2022 Free Software Foundation, Inc.
|
||||
#
|
||||
@@ -409,17 +409,21 @@ 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
|
||||
GUIX = ${GUIX_ROOT}/manual/1.4.0
|
||||
guix.de mono ${GUIX}/de/guix.de.html
|
||||
guix.de node ${GUIX}/de/html_node/
|
||||
guix.es mono ${GUIX}/es/guix.es.html
|
||||
guix.es node ${GUIX}/es/html_node/
|
||||
guix.fr mono ${GUIX}/fr/guix.fr.html
|
||||
guix.fr node ${GUIX}/fr/html_node/
|
||||
guix.pt_BR mono ${GUIX}/pt-br/guix.pt_BR.html
|
||||
guix.pt_BR node ${GUIX}/pt-br/html_node/
|
||||
guix.ru mono ${GUIX}/ru/guix.ru.html
|
||||
guix.ru node ${GUIX}/ru/html_node/
|
||||
guix.zh_CN mono ${GUIX}/zh-cn/guix.zh_CN.html
|
||||
@@ -428,10 +432,12 @@ GUIX = ${GUIX_ROOT}/manual
|
||||
guix node ${GUIX}/en/html_node/
|
||||
|
||||
GUIX_COOKBOOK = ${GUIX_ROOT}/cookbook
|
||||
guix-cookbook.de mono ${GUIX_COOKBOOK}/de/guix-cookbook.html
|
||||
guix-cookbook.de mono ${GUIX_COOKBOOK}/de/guix-cookbook.de.html
|
||||
guix-cookbook.de node ${GUIX_COOKBOOK}/de/html_node/
|
||||
guix-cookbook.fr mono ${GUIX_COOKBOOK}/fr/guix-cookbook.html
|
||||
guix-cookbook.fr mono ${GUIX_COOKBOOK}/fr/guix-cookbook.fr.html
|
||||
guix-cookbook.fr node ${GUIX_COOKBOOK}/fr/html_node/
|
||||
guix-cookbook.sk mono ${GUIX_COOKBOOK}/sk/guix-cookbook.sk.html
|
||||
guix-cookbook.sk node ${GUIX_COOKBOOK}/sk/html_node/
|
||||
guix-cookbook mono ${GUIX_COOKBOOK}/en/guix-cookbook.html
|
||||
guix-cookbook node ${GUIX_COOKBOOK}/en/html_node/
|
||||
|
||||
|
||||
+24
-6
@@ -1,6 +1,6 @@
|
||||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2018, 2020 Mathieu Othacehe <m.othacehe@gmail.com>
|
||||
;;; Copyright © 2019, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2019, 2020, 2022 Ludovic Courtès <ludo@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
;;;
|
||||
@@ -114,6 +114,8 @@ it can interact with the rest of the system."
|
||||
;; Catch SIGINT and kill the container process.
|
||||
(sigaction SIGINT
|
||||
(lambda (signum)
|
||||
;: FIXME: Use of SIGKILL prevents the dynamic-wind exit handler of
|
||||
;; THUNK to run.
|
||||
(false-if-exception
|
||||
(kill pid SIGKILL))))
|
||||
|
||||
@@ -196,14 +198,16 @@ or #f. Return #t on success and #f on failure."
|
||||
;; the loaded cow-store locale files will prevent umounting.
|
||||
(install-locale locale)
|
||||
|
||||
;; Save the database, so that it can be restored once the
|
||||
;; cow-store is umounted.
|
||||
;; Stop the daemon and save the database, so that it can be
|
||||
;; restored once the cow-store is umounted.
|
||||
(stop-service 'guix-daemon)
|
||||
(copy-file database-file saved-database)
|
||||
|
||||
(installer-log-line "mounting copy-on-write store")
|
||||
(mount-cow-store (%installer-target-dir) backing-directory))
|
||||
(lambda ()
|
||||
;; We need to drag the guix-daemon to the container MNT
|
||||
;; namespace, so that it can operate on the cow-store.
|
||||
(stop-service 'guix-daemon)
|
||||
(start-service 'guix-daemon (list (number->string (getpid))))
|
||||
|
||||
(setvbuf (current-output-port) 'none)
|
||||
@@ -213,11 +217,25 @@ or #f. Return #t on success and #f on failure."
|
||||
|
||||
(set! ret (run-command install-command #:tty? #t)))
|
||||
(lambda ()
|
||||
;; Restart guix-daemon so that it does no keep the MNT namespace
|
||||
;; Stop guix-daemon so that it does no keep the MNT namespace
|
||||
;; alive.
|
||||
(restart-service 'guix-daemon)
|
||||
(stop-service 'guix-daemon)
|
||||
|
||||
;; Restore the database and restart it. As part of restoring the
|
||||
;; database, remove the WAL and shm files in case they were left
|
||||
;; behind after guix-daemon was stopped. Failing to do so,
|
||||
;; sqlite might behave as if transactions that appear in the WAL
|
||||
;; file were committed. (See <https://www.sqlite.org/wal.html>.)
|
||||
(installer-log-line "restoring store database from '~a'"
|
||||
saved-database)
|
||||
(copy-file saved-database database-file)
|
||||
(for-each (lambda (suffix)
|
||||
(false-if-exception
|
||||
(delete-file (string-append database-file suffix))))
|
||||
'("-wal" "-shm"))
|
||||
(start-service 'guix-daemon)
|
||||
|
||||
;; Finally umount the cow-store and exit the container.
|
||||
(installer-log-line "unmounting copy-on-write store")
|
||||
(unmount-cow-store (%installer-target-dir) backing-directory)
|
||||
(assert-exit ret))))))))
|
||||
|
||||
@@ -164,8 +164,8 @@
|
||||
;; Latest version of Guix, which may or may not correspond to a release.
|
||||
;; Note: the 'update-guix-package.scm' script expects this definition to
|
||||
;; start precisely like this.
|
||||
(let ((version "1.4.0rc1")
|
||||
(commit "020184fd39c6244e0336db3c608d3946b8d20490")
|
||||
(let ((version "1.4.0")
|
||||
(commit "8e2f32cee982d42a79e53fc1e9aa7b8ff0514714")
|
||||
(revision 0))
|
||||
(package
|
||||
(name "guix")
|
||||
@@ -182,7 +182,7 @@
|
||||
(commit commit)))
|
||||
(sha256
|
||||
(base32
|
||||
"1489fdxdb86shx6bnfs8kihhvw44xqiv6fkx3b67cyw1dakxh1m4"))
|
||||
"042mipw2bp9lc75m9g5q6rdifrp8483cmk57kwrdps0i3vd590dl"))
|
||||
(file-name (string-append "guix-" version "-checkout"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
|
||||
+10
-1
@@ -72,6 +72,7 @@
|
||||
#:select (dosfstools))
|
||||
#:use-module ((gnu packages file-systems)
|
||||
#:select (bcachefs-tools exfat-utils jfsutils zfs))
|
||||
#:use-module (gnu packages fonts)
|
||||
#:use-module (gnu packages terminals)
|
||||
#:use-module ((gnu packages wm) #:select (sway))
|
||||
#:use-module ((gnu build file-systems)
|
||||
@@ -2487,7 +2488,15 @@ notably to select, copy, and paste text. The default options use the
|
||||
(documentation "kmscon virtual terminal")
|
||||
(requirement '(user-processes udev dbus-system))
|
||||
(provision (list (symbol-append 'term- (string->symbol virtual-terminal))))
|
||||
(start #~(make-forkexec-constructor #$kmscon-command))
|
||||
(start #~(make-forkexec-constructor
|
||||
#$kmscon-command
|
||||
|
||||
;; The installer needs to be able to display glyphs from
|
||||
;; various scripts, so give it access to freefont.
|
||||
;; TODO: Make this configurable.
|
||||
#:environment-variables
|
||||
(list (string-append "XDG_DATA_DIRS="
|
||||
#$font-gnu-freefont "/share"))))
|
||||
(stop #~(make-kill-destructor)))))
|
||||
(description "Start the @command{kmscon} virtual terminal emulator for the
|
||||
Linux @dfn{kernel mode setting} (KMS).")))
|
||||
|
||||
+12
-1
@@ -284,13 +284,24 @@ templates under @file{/etc/configuration}.")))
|
||||
;; appropriate options. The GUI installer needs it when the machine does not
|
||||
;; support Kernel Mode Setting. Otherwise kmscon is missing /dev/fb0.
|
||||
(define (uvesafb-shepherd-service _)
|
||||
(define modprobe
|
||||
(program-file "modprobe-wrapper"
|
||||
#~(begin
|
||||
;; Use a wrapper because shepherd 0.9.3 won't let us
|
||||
;; pass environment variables to the child process:
|
||||
;; <https://issues.guix.gnu.org/60106>.
|
||||
(setenv "LINUX_MODULE_DIRECTORY"
|
||||
"/run/booted-system/kernel/lib/modules")
|
||||
(apply execl #$(file-append kmod "/bin/modprobe")
|
||||
"modprobe" (cdr (command-line))))))
|
||||
|
||||
(list (shepherd-service
|
||||
(documentation "Load the uvesafb kernel module if needed.")
|
||||
(provision '(maybe-uvesafb))
|
||||
(requirement '(file-systems))
|
||||
(start #~(lambda ()
|
||||
(or (file-exists? "/dev/fb0")
|
||||
(invoke #+(file-append kmod "/bin/modprobe")
|
||||
(invoke #+modprobe
|
||||
"uvesafb"
|
||||
(string-append "v86d=" #$v86d "/sbin/v86d")
|
||||
"mode_option=1024x768"))))
|
||||
|
||||
@@ -2576,7 +2576,7 @@ Path DerivationGoal::openLogFile()
|
||||
closeOnExec(fd);
|
||||
|
||||
if (!(fLogFile = fdopen(fd.borrow(), "w")))
|
||||
throw SysError(format("opening file `%1%'") % logFileName);
|
||||
throw SysError(format("opening log file `%1%'") % logFileName);
|
||||
|
||||
int err;
|
||||
if (!(bzLogFile = BZ2_bzWriteOpen(&err, fLogFile, 9, 0, 0)))
|
||||
|
||||
+1
-1
@@ -244,7 +244,7 @@ Hash hashFile(HashType ht, const Path & path)
|
||||
start(ht, ctx);
|
||||
|
||||
AutoCloseFD fd = open(path.c_str(), O_RDONLY);
|
||||
if (fd == -1) throw SysError(format("opening file `%1%'") % path);
|
||||
if (fd == -1) throw SysError(format("computing hash of file `%1%'") % path);
|
||||
|
||||
unsigned char buf[8192];
|
||||
ssize_t n;
|
||||
|
||||
+2
-2
@@ -264,7 +264,7 @@ string readFile(const Path & path, bool drain)
|
||||
{
|
||||
AutoCloseFD fd = open(path.c_str(), O_RDONLY);
|
||||
if (fd == -1)
|
||||
throw SysError(format("opening file `%1%'") % path);
|
||||
throw SysError(format("reading file `%1%'") % path);
|
||||
return drain ? drainFD(fd) : readFile(fd);
|
||||
}
|
||||
|
||||
@@ -273,7 +273,7 @@ void writeFile(const Path & path, const string & s)
|
||||
{
|
||||
AutoCloseFD fd = open(path.c_str(), O_WRONLY | O_TRUNC | O_CREAT, 0666);
|
||||
if (fd == -1)
|
||||
throw SysError(format("opening file '%1%'") % path);
|
||||
throw SysError(format("writing file '%1%'") % path);
|
||||
writeFull(fd, s);
|
||||
}
|
||||
|
||||
|
||||
@@ -13,7 +13,7 @@ msgstr ""
|
||||
"Project-Id-Version: guix-manual 1.2.0-pre3\n"
|
||||
"Report-Msgid-Bugs-To: bug-guix@gnu.org\n"
|
||||
"POT-Creation-Date: 2022-12-02 03:18+0000\n"
|
||||
"PO-Revision-Date: 2022-12-03 17:33+0000\n"
|
||||
"PO-Revision-Date: 2022-12-15 00:11+0100\n"
|
||||
"Last-Translator: Florian Pelz <pelzflorian@pelzflorian.de>\n"
|
||||
"Language-Team: German <https://translate.fedoraproject.org/projects/guix/documentation-manual/de/>\n"
|
||||
"Language: de\n"
|
||||
@@ -73899,7 +73899,7 @@ msgstr "-drive if=none,file=/tmp/qemu-image,id=myhd"
|
||||
|
||||
#. type: table
|
||||
#: guix-git/doc/guix.texi:39296
|
||||
msgid "Use our QCOW image, the @file{/tmp/qemu-image} file, as the backing store of the ``myhd'' drive."
|
||||
msgid "Use our QCOW image, the @file{guix-system-vm-image-@value{VERSION}.x86_64-linux.qcow2} file, as the backing store of the ``myhd'' drive."
|
||||
msgstr "Unser QCOW-Abbild in der Datei @file{/tmp/qemu-image} soll als Inhalt des „myhd“-Laufwerks herhalten."
|
||||
|
||||
#. type: Plain text
|
||||
|
||||
@@ -55,7 +55,7 @@ msgstr ""
|
||||
"Project-Id-Version: guix-manual 1.2.0-pre3\n"
|
||||
"Report-Msgid-Bugs-To: bug-guix@gnu.org\n"
|
||||
"POT-Creation-Date: 2022-12-02 03:18+0000\n"
|
||||
"PO-Revision-Date: 2022-11-04 11:27+0000\n"
|
||||
"PO-Revision-Date: 2022-12-15 00:11+0100\n"
|
||||
"Last-Translator: Julien Lepiller <fedora-account@lepiller.eu>\n"
|
||||
"Language-Team: Spanish <https://translate.fedoraproject.org/projects/guix/documentation-manual/es/>\n"
|
||||
"Language: es\n"
|
||||
@@ -77483,7 +77483,7 @@ msgstr "-drive if=none,file=/tmp/imagen-qemu,id=midisco"
|
||||
|
||||
#. type: table
|
||||
#: guix-git/doc/guix.texi:39296
|
||||
msgid "Use our QCOW image, the @file{/tmp/qemu-image} file, as the backing store of the ``myhd'' drive."
|
||||
msgid "Use our QCOW image, the @file{guix-system-vm-image-@value{VERSION}.x86_64-linux.qcow2} file, as the backing store of the ``myhd'' drive."
|
||||
msgstr "Usa nuestra imagen QCOW, el archivo @file{/tmp/imagen-qemu}, como almacenamiento físico para la unidad ``midisco''."
|
||||
|
||||
#. type: Plain text
|
||||
|
||||
@@ -46,7 +46,7 @@ msgstr ""
|
||||
"Project-Id-Version: guix-manual 1.2.0-pre3\n"
|
||||
"Report-Msgid-Bugs-To: bug-guix@gnu.org\n"
|
||||
"POT-Creation-Date: 2022-12-02 03:18+0000\n"
|
||||
"PO-Revision-Date: 2022-12-03 17:33+0000\n"
|
||||
"PO-Revision-Date: 2022-12-15 00:11+0100\n"
|
||||
"Last-Translator: Julien Lepiller <fedora-account@lepiller.eu>\n"
|
||||
"Language-Team: French <https://translate.fedoraproject.org/projects/guix/documentation-manual/fr/>\n"
|
||||
"Language: fr\n"
|
||||
@@ -74054,7 +74054,7 @@ msgstr "-drive if=none,file=/tmp/qemu-image,id=myhd"
|
||||
|
||||
#. type: table
|
||||
#: guix-git/doc/guix.texi:39296
|
||||
msgid "Use our QCOW image, the @file{/tmp/qemu-image} file, as the backing store of the ``myhd'' drive."
|
||||
msgid "Use our QCOW image, the @file{guix-system-vm-image-@value{VERSION}.x86_64-linux.qcow2} file, as the backing store of the ``myhd'' drive."
|
||||
msgstr "Utilise notre image QCOW, le fichier @file{/tmp/qemu-image}, comme stockage pour le lecteur « myhd »."
|
||||
|
||||
#. type: Plain text
|
||||
|
||||
@@ -10,7 +10,7 @@ msgstr ""
|
||||
"Project-Id-Version: guix manual checkout\n"
|
||||
"Report-Msgid-Bugs-To: bug-guix@gnu.org\n"
|
||||
"POT-Creation-Date: 2022-12-02 03:18+0000\n"
|
||||
"PO-Revision-Date: 2022-01-25 15:16+0000\n"
|
||||
"PO-Revision-Date: 2022-12-15 00:11+0100\n"
|
||||
"Last-Translator: Fábio Rodrigues Ribeiro <farribeiro@gmail.com>\n"
|
||||
"Language-Team: Portuguese (Brazil) <https://translate.fedoraproject.org/projects/guix/documentation-manual/pt_BR/>\n"
|
||||
"Language: pt_BR\n"
|
||||
@@ -71324,7 +71324,7 @@ msgstr ""
|
||||
|
||||
#. type: table
|
||||
#: guix-git/doc/guix.texi:39296
|
||||
msgid "Use our QCOW image, the @file{/tmp/qemu-image} file, as the backing store of the ``myhd'' drive."
|
||||
msgid "Use our QCOW image, the @file{guix-system-vm-image-@value{VERSION}.x86_64-linux.qcow2} file, as the backing store of the ``myhd'' drive."
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
|
||||
@@ -16,7 +16,7 @@ msgstr ""
|
||||
"Project-Id-Version: guix-manual 1.2.0-pre2\n"
|
||||
"Report-Msgid-Bugs-To: bug-guix@gnu.org\n"
|
||||
"POT-Creation-Date: 2022-12-02 03:18+0000\n"
|
||||
"PO-Revision-Date: 2021-12-11 23:16+0000\n"
|
||||
"PO-Revision-Date: 2022-12-15 00:11+0100\n"
|
||||
"Last-Translator: Nikolay Korotkiy <sikmir@disroot.org>\n"
|
||||
"Language-Team: Russian <https://translate.fedoraproject.org/projects/guix/documentation-manual/ru/>\n"
|
||||
"Language: ru\n"
|
||||
@@ -72867,7 +72867,7 @@ msgstr ""
|
||||
|
||||
#. type: table
|
||||
#: guix-git/doc/guix.texi:39296
|
||||
msgid "Use our QCOW image, the @file{/tmp/qemu-image} file, as the backing store of the ``myhd'' drive."
|
||||
msgid "Use our QCOW image, the @file{guix-system-vm-image-@value{VERSION}.x86_64-linux.qcow2} file, as the backing store of the ``myhd'' drive."
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
|
||||
@@ -16,7 +16,7 @@ msgstr ""
|
||||
"Project-Id-Version: guix-manual 1.0.1-pre1\n"
|
||||
"Report-Msgid-Bugs-To: bug-guix@gnu.org\n"
|
||||
"POT-Creation-Date: 2022-12-02 03:18+0000\n"
|
||||
"PO-Revision-Date: 2022-09-22 13:19+0000\n"
|
||||
"PO-Revision-Date: 2022-12-15 00:11+0100\n"
|
||||
"Last-Translator: Yang Yulin <yylteam@icloud.com>\n"
|
||||
"Language-Team: Chinese (Simplified) <https://translate.fedoraproject.org/projects/guix/documentation-manual/zh_CN/>\n"
|
||||
"Language: zh_CN\n"
|
||||
@@ -71148,7 +71148,7 @@ msgstr ""
|
||||
|
||||
#. type: table
|
||||
#: guix-git/doc/guix.texi:39296
|
||||
msgid "Use our QCOW image, the @file{/tmp/qemu-image} file, as the backing store of the ``myhd'' drive."
|
||||
msgid "Use our QCOW image, the @file{guix-system-vm-image-@value{VERSION}.x86_64-linux.qcow2} file, as the backing store of the ``myhd'' drive."
|
||||
msgstr ""
|
||||
|
||||
#. type: Plain text
|
||||
|
||||
Reference in New Issue
Block a user