mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-11-07 07:26:13 -05:00
Merge branch 'version-1.3.0'
This commit is contained in:
commit
b7cbca221f
70 changed files with 176355 additions and 123506 deletions
8
.gitignore
vendored
8
.gitignore
vendored
|
@ -1,6 +1,7 @@
|
|||
*.eps
|
||||
*.go
|
||||
*.log
|
||||
*.mo
|
||||
*.pdf
|
||||
*.png
|
||||
*.tar.xz
|
||||
|
@ -75,7 +76,7 @@
|
|||
/etc/guix-publish.service
|
||||
/etc/init.d/guix-daemon
|
||||
/etc/openrc/guix-daemon
|
||||
/guix-daemon
|
||||
/guix-*
|
||||
/guix/config.scm
|
||||
/libformat.a
|
||||
/libstore.a
|
||||
|
@ -93,6 +94,7 @@
|
|||
/nix/config.h
|
||||
/nix/config.h.in
|
||||
/po/doc/*.mo
|
||||
/po/doc/*.pot
|
||||
/po/guix/*.gmo
|
||||
/po/guix/*.insert-header
|
||||
/po/guix/*.mo
|
||||
|
@ -128,6 +130,7 @@
|
|||
/po/packages/remove-potcdate.sin
|
||||
/po/packages/stamp-po
|
||||
/pre-inst-env
|
||||
/release-*
|
||||
/scripts/guix
|
||||
/test-env
|
||||
/test-tmp
|
||||
|
@ -145,8 +148,9 @@ stamp-h[0-9]
|
|||
tmp
|
||||
/doc/os-config-lightweight-desktop.texi
|
||||
/nix/scripts/download
|
||||
/.tarball-version
|
||||
/.version
|
||||
/doc/stamp-[0-9]*
|
||||
/doc/stamp-*
|
||||
/gnu/packages/bootstrap
|
||||
/gnu/packages/aux-files/guile-guile-launcher.o
|
||||
/guile
|
||||
|
|
42
Makefile.am
42
Makefile.am
|
@ -735,22 +735,22 @@ AM_DISTCHECK_CONFIGURE_FLAGS = \
|
|||
--enable-daemon \
|
||||
ac_cv_guix_test_root="$(GUIX_TEST_ROOT)"
|
||||
|
||||
# Name of the 'guix' package shipped in the binary tarball.
|
||||
GUIX_FOR_BINARY_TARBALL = guix
|
||||
|
||||
# The self-contained tarball.
|
||||
guix-binary.%.tar.xz:
|
||||
$(AM_V_GEN)GUIX_PACKAGE_PATH= \
|
||||
tarball=`$(top_builddir)/pre-inst-env guix pack -C xz \
|
||||
--fallback \
|
||||
-s "$*" --localstatedir --profile-name=current-guix \
|
||||
$(GUIX_FOR_BINARY_TARBALL)` ; \
|
||||
guix` ; \
|
||||
cp "$$tarball" "$@.tmp" ; mv "$@.tmp" "$@"
|
||||
|
||||
|
||||
# The dependency on doc-pot-update is to generate the .pot files, which are
|
||||
# not checked in.
|
||||
dist: doc-pot-update
|
||||
|
||||
dist-hook: gen-ChangeLog gen-AUTHORS gen-tarball-version
|
||||
dist-hook: assert-no-store-file-names
|
||||
dist-hook: doc-po-update
|
||||
|
||||
distcheck-hook: assert-binaries-available assert-final-inputs-self-contained
|
||||
|
||||
|
@ -831,21 +831,20 @@ system_flags = $(foreach system,$(1),-s $(system))
|
|||
|
||||
# The release process works in several phases:
|
||||
#
|
||||
# 0. We assume the developer created a 'vX.Y' tag.
|
||||
# 0. We assume the developer created a 'vX.Y.Z' tag.
|
||||
# 1. Build the source tarball.
|
||||
# 2. Update the 'guix' package so that it corresponds to the 'vX.Y' tag.
|
||||
# 2. Update the 'guix' package so that it corresponds to the 'vX.Y.Z' tag.
|
||||
# 3. Build the binary tarballs for that 'guix' package.
|
||||
# 4. Update the 'guix' package again.
|
||||
# 5. Build the installation images. The images will run 'guix'
|
||||
# corresponding to 'vX.Y' + 1 commit, and they will install 'vX.Y'.
|
||||
# 5. Build the installation and VM images. The images will run 'guix'
|
||||
# corresponding to 'vX.Y.Z' + 1 commit, and they will install 'vX.Y.Z'.
|
||||
#
|
||||
# This 'release' target takes care of everything and copies the resulting
|
||||
# files to $(releasedir).
|
||||
#
|
||||
# XXX: Depend on 'dist' rather than 'distcheck' to work around the Gettext
|
||||
# issue described at <https://savannah.gnu.org/bugs/index.php?51027>.
|
||||
release: dist-with-updated-version
|
||||
cd po; git checkout .
|
||||
release: dist-with-updated-version all
|
||||
@if ! git diff-index --quiet HEAD; then \
|
||||
echo "There are uncommitted changes; stopping." >&2 ; \
|
||||
exit 1 ; \
|
||||
|
@ -853,21 +852,24 @@ release: dist-with-updated-version
|
|||
$(MKDIR_P) "$(releasedir)"
|
||||
rm -f "$(releasedir)"/*
|
||||
mv $(SOURCE_TARBALLS) "$(releasedir)"
|
||||
# Bump the Guix package version and build it.
|
||||
GUIX_ALLOW_ME_TO_USE_PRIVATE_COMMIT=yes \
|
||||
$(top_builddir)/pre-inst-env "$(GUILE)" \
|
||||
$(top_srcdir)/build-aux/update-guix-package.scm \
|
||||
"`git rev-parse HEAD`" "$(PACKAGE_VERSION)"
|
||||
git add $(top_srcdir)/gnu/packages/package-management.scm
|
||||
git commit -m "gnu: guix: Update to $(PACKAGE_VERSION)."
|
||||
$(top_builddir)/pre-inst-env guix build $(GUIX_FOR_BINARY_TARBALL) \
|
||||
$(top_builddir)/pre-inst-env guix build guix \
|
||||
$(call system_flags,$(SUPPORTED_SYSTEMS)) \
|
||||
-v1 --no-grafts --fallback
|
||||
# Generate the binary release tarballs.
|
||||
rm -f $(BINARY_TARBALLS)
|
||||
$(MAKE) $(BINARY_TARBALLS)
|
||||
for system in $(SUPPORTED_SYSTEMS) ; do \
|
||||
mv "guix-binary.$$system.tar.xz" \
|
||||
"$(releasedir)/guix-binary-$(PACKAGE_VERSION).$$system.tar.xz" ; \
|
||||
done
|
||||
# Bump the Guix package version and build it (again).
|
||||
GUIX_ALLOW_ME_TO_USE_PRIVATE_COMMIT=yes \
|
||||
$(top_builddir)/pre-inst-env "$(GUILE)" \
|
||||
$(top_srcdir)/build-aux/update-guix-package.scm \
|
||||
|
@ -877,9 +879,10 @@ release: dist-with-updated-version
|
|||
$(top_builddir)/pre-inst-env guix build guix \
|
||||
$(call system_flags,$(GUIX_SYSTEM_SUPPORTED_SYSTEMS)) \
|
||||
-v1 --no-grafts --fallback
|
||||
# Generate the ISO installation images.
|
||||
for system in $(GUIX_SYSTEM_SUPPORTED_SYSTEMS) ; do \
|
||||
image=`$(top_builddir)/pre-inst-env \
|
||||
guix system disk-image -t iso9660 \
|
||||
guix system image -t iso9660 \
|
||||
--label="GUIX_$${system}_$(VERSION)" \
|
||||
--system=$$system --fallback \
|
||||
gnu/system/install.scm` ; \
|
||||
|
@ -887,13 +890,14 @@ release: dist-with-updated-version
|
|||
echo "failed to produced Guix installation image for $$system" >&2 ; \
|
||||
exit 1 ; \
|
||||
fi ; \
|
||||
xz < "$$image" > "$(releasedir)/$(GUIX_SYSTEM_IMAGE_BASE).$$system.iso.xz.tmp" ; \
|
||||
mv "$(releasedir)/$(GUIX_SYSTEM_IMAGE_BASE).$$system.iso.xz.tmp" \
|
||||
"$(releasedir)/$(GUIX_SYSTEM_IMAGE_BASE).$$system.iso.xz" ; \
|
||||
cp "$$image" "$(releasedir)/$(GUIX_SYSTEM_IMAGE_BASE).$$system.iso.tmp" ; \
|
||||
mv "$(releasedir)/$(GUIX_SYSTEM_IMAGE_BASE).$$system.iso.tmp" \
|
||||
"$(releasedir)/$(GUIX_SYSTEM_IMAGE_BASE).$$system.iso" ; \
|
||||
done
|
||||
# Generate the VM images.
|
||||
for system in $(GUIX_SYSTEM_VM_SYSTEMS) ; do \
|
||||
image=`$(top_builddir)/pre-inst-env \
|
||||
guix system vm-image $(GUIX_SYSTEM_VM_IMAGE_FLAGS) \
|
||||
guix system image -t qcow2 $(GUIX_SYSTEM_VM_IMAGE_FLAGS) \
|
||||
--save-provenance \
|
||||
--system=$$system --fallback \
|
||||
gnu/system/examples/vm-image.tmpl` ; \
|
||||
|
@ -901,9 +905,7 @@ release: dist-with-updated-version
|
|||
echo "failed to produced Guix VM image for $$system" >&2 ; \
|
||||
exit 1 ; \
|
||||
fi ; \
|
||||
xz < "$$image" > "$(releasedir)/$(GUIX_SYSTEM_VM_IMAGE_BASE).$$system.xz.tmp" ; \
|
||||
mv "$(releasedir)/$(GUIX_SYSTEM_VM_IMAGE_BASE).$$system.xz.tmp" \
|
||||
"$(releasedir)/$(GUIX_SYSTEM_VM_IMAGE_BASE).$$system.xz" ; \
|
||||
cp "$$image" "$(releasedir)/$(GUIX_SYSTEM_VM_IMAGE_BASE).$$system.qcow2"; \
|
||||
done
|
||||
@echo
|
||||
@echo "Congratulations! All the release files are now in $(releasedir)."
|
||||
|
|
133
NEWS
133
NEWS
|
@ -2,7 +2,7 @@
|
|||
#+TITLE: Guix NEWS – history of user-visible changes
|
||||
#+STARTUP: content hidestars
|
||||
|
||||
Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
|
||||
Copyright © 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
|
||||
|
||||
Copying and distribution of this file, with or without modification,
|
||||
|
@ -11,6 +11,137 @@ Copyright © 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
|
|||
|
||||
Please send Guix bug reports to bug-guix@gnu.org.
|
||||
|
||||
* 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 Volumne 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>)
|
||||
*** Installer’s kmscon no longer uses up 100% CPU
|
||||
(<https://issues.guix.gnu.org/39341>)
|
||||
*** Git checkouts can be updated to the remote’s 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 Fedora’s 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
|
||||
|
|
|
@ -95,7 +95,7 @@ (define (write-packages-added news-file old new)
|
|||
(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
|
||||
|
@ -141,7 +141,7 @@ (define important
|
|||
(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,16 +166,22 @@ (define (package-file version)
|
|||
(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))
|
||||
(new (fold-packages (lambda (p r)
|
||||
(alist-cons (package-name p) (package-version p)
|
||||
r))
|
||||
'())))
|
||||
(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)))
|
||||
(call-with-output-file (package-file new-version)
|
||||
(lambda (port)
|
||||
(pretty-print new port)))
|
||||
|
|
|
@ -21,7 +21,7 @@ dnl For the C++ code. This must be used early.
|
|||
AC_USE_SYSTEM_EXTENSIONS
|
||||
|
||||
AM_GNU_GETTEXT([external])
|
||||
AM_GNU_GETTEXT_VERSION([0.18.1])
|
||||
AM_GNU_GETTEXT_VERSION([0.19.1])
|
||||
|
||||
GUIX_SYSTEM_TYPE
|
||||
GUIX_ASSERT_SUPPORTED_SYSTEM
|
||||
|
@ -150,6 +150,13 @@ 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
|
||||
|
|
|
@ -10,8 +10,8 @@
|
|||
@include version.texi
|
||||
|
||||
@c Identifier of the OpenPGP key used to sign tarballs and such.
|
||||
@set OPENPGP-SIGNING-KEY-ID 3CE464558A84FDC69DB40CFB090B11993D9AEBB5
|
||||
@set OPENPGP-SIGNING-KEY-URL https://sv.gnu.org/people/viewgpg.php?user_id=15145
|
||||
@set OPENPGP-SIGNING-KEY-ID 27D586A4F8900854329FF09F1260E46482E63562
|
||||
@set OPENPGP-SIGNING-KEY-URL https://sv.gnu.org/people/viewgpg.php?user_id=127547
|
||||
|
||||
@c Base URL for downloads.
|
||||
@set BASE-URL https://ftp.gnu.org/gnu/guix
|
||||
|
@ -2100,7 +2100,7 @@ about their support in GNU/Linux.
|
|||
|
||||
An ISO-9660 installation image that can be written to a USB stick or
|
||||
burnt to a DVD can be downloaded from
|
||||
@indicateurl{@value{BASE-URL}/guix-system-install-@value{VERSION}.x86_64-linux.iso.xz},
|
||||
@indicateurl{@value{BASE-URL}/guix-system-install-@value{VERSION}.x86_64-linux.iso},
|
||||
where you can replace @code{x86_64-linux} with one of:
|
||||
|
||||
@table @code
|
||||
|
@ -2116,8 +2116,8 @@ Make sure to download the associated @file{.sig} file and to verify the
|
|||
authenticity of the image against it, along these lines:
|
||||
|
||||
@example
|
||||
$ wget @value{BASE-URL}/guix-system-install-@value{VERSION}.x86_64-linux.iso.xz.sig
|
||||
$ gpg --verify guix-system-install-@value{VERSION}.x86_64-linux.iso.xz.sig
|
||||
$ wget @value{BASE-URL}/guix-system-install-@value{VERSION}.x86_64-linux.iso.sig
|
||||
$ gpg --verify guix-system-install-@value{VERSION}.x86_64-linux.iso.sig
|
||||
@end example
|
||||
|
||||
If that command fails because you do not have the required public key,
|
||||
|
@ -2141,17 +2141,6 @@ It is meant to be copied @emph{as is} to a large-enough USB stick or DVD.
|
|||
|
||||
@unnumberedsubsec Copying to a USB Stick
|
||||
|
||||
To copy the image to a USB stick, follow these steps:
|
||||
|
||||
@enumerate
|
||||
@item
|
||||
Decompress the image using the @command{xz} command:
|
||||
|
||||
@example
|
||||
xz -d guix-system-install-@value{VERSION}.x86_64-linux.iso.xz
|
||||
@end example
|
||||
|
||||
@item
|
||||
Insert a USB stick of 1@tie{}GiB or more into your machine, and determine
|
||||
its device name. Assuming that the USB stick is known as @file{/dev/sdX},
|
||||
copy the image with:
|
||||
|
@ -2162,21 +2151,9 @@ sync
|
|||
@end example
|
||||
|
||||
Access to @file{/dev/sdX} usually requires root privileges.
|
||||
@end enumerate
|
||||
|
||||
@unnumberedsubsec Burning on a DVD
|
||||
|
||||
To copy the image to a DVD, follow these steps:
|
||||
|
||||
@enumerate
|
||||
@item
|
||||
Decompress the image using the @command{xz} command:
|
||||
|
||||
@example
|
||||
xz -d guix-system-install-@value{VERSION}.x86_64-linux.iso.xz
|
||||
@end example
|
||||
|
||||
@item
|
||||
Insert a blank DVD into your machine, and determine
|
||||
its device name. Assuming that the DVD drive is known as @file{/dev/srX},
|
||||
copy the image with:
|
||||
|
@ -2186,7 +2163,6 @@ growisofs -dvd-compat -Z /dev/srX=guix-system-install-@value{VERSION}.x86_64-lin
|
|||
@end example
|
||||
|
||||
Access to @file{/dev/srX} usually requires root privileges.
|
||||
@end enumerate
|
||||
|
||||
@unnumberedsubsec Booting
|
||||
|
||||
|
@ -33658,7 +33634,7 @@ Whether or not the droplet should be created with IPv6 networking.
|
|||
@cindex virtual machine
|
||||
To run Guix in a virtual machine (VM), one can use the pre-built Guix VM image
|
||||
distributed at
|
||||
@url{@value{BASE-URL}/guix-system-vm-image-@value{VERSION}.x86_64-linux.xz}.
|
||||
@url{@value{BASE-URL}/guix-system-vm-image-@value{VERSION}.x86_64-linux.qcow2}.
|
||||
This image is a compressed image in QCOW format. You will first need to
|
||||
decompress with @command{xz -d}, and then you can pass it to an emulator such
|
||||
as QEMU (see below for details).
|
||||
|
|
43
doc/local.mk
43
doc/local.mk
|
@ -4,7 +4,7 @@
|
|||
# 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 Julien Lepiller <julien@lepiller.eu>
|
||||
# Copyright © 2018, 2021 Julien Lepiller <julien@lepiller.eu>
|
||||
#
|
||||
# This file is part of GNU Guix.
|
||||
#
|
||||
|
@ -21,6 +21,16 @@
|
|||
# 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 fa fr it ko pt_BR ru sk zh_CN
|
||||
COOKBOOK_LANGUAGES = de fa fr ko zh_Hans
|
||||
|
||||
# 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 \
|
||||
|
@ -70,33 +80,10 @@ OS_CONFIG_EXAMPLES_TEXI = \
|
|||
%D%/os-config-desktop.texi \
|
||||
%D%/os-config-lightweight-desktop.texi
|
||||
|
||||
# Do not forget to update these, when updating info_TEXINFOS
|
||||
TRANSLATED_INFO = \
|
||||
%D%/guix.de.texi \
|
||||
%D%/guix.es.texi \
|
||||
%D%/guix.fa.texi \
|
||||
%D%/guix.fr.texi \
|
||||
%D%/guix.it.texi \
|
||||
%D%/guix.ko.texi \
|
||||
%D%/guix.pt_BR.texi \
|
||||
%D%/guix.ru.texi \
|
||||
%D%/guix.sk.texi \
|
||||
%D%/guix.zh_CN.texi \
|
||||
%D%/contributing.de.texi \
|
||||
%D%/contributing.es.texi \
|
||||
%D%/contributing.fa.texi \
|
||||
%D%/contributing.fr.texi \
|
||||
%D%/contributing.it.texi \
|
||||
%D%/contributing.ko.texi \
|
||||
%D%/contributing.pt_BR.texi \
|
||||
%D%/contributing.ru.texi \
|
||||
%D%/contributing.sk.texi \
|
||||
%D%/contributing.zh_CN.texi \
|
||||
%D%/guix-cookbook.de.texi \
|
||||
%D%/guix-cookbook.fa.texi \
|
||||
%D%/guix-cookbook.fr.texi \
|
||||
%D%/guix-cookbook.ko.texi \
|
||||
%D%/guix-cookbook.zh_Hans.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)
|
||||
|
||||
# Bundle this file so that makeinfo finds it in out-of-source-tree builds.
|
||||
BUILT_SOURCES += $(OS_CONFIG_EXAMPLES_TEXI) $(TRANSLATED_INFO)
|
||||
|
|
|
@ -9,6 +9,7 @@
|
|||
# Copyright © 2020 Daniel Brooks <db48x@db48x.net>
|
||||
# Copyright © 2021 Jakub Kądziołka <kuba@kadziolka.net>
|
||||
# Copyright © 2021 Chris Marusich <cmmarusich@gmail.com>
|
||||
# Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
#
|
||||
# This file is part of GNU Guix.
|
||||
#
|
||||
|
@ -71,11 +72,6 @@ declare -A GPG_SIGNING_KEYS
|
|||
GPG_SIGNING_KEYS[15145]=3CE464558A84FDC69DB40CFB090B11993D9AEBB5 # ludo
|
||||
GPG_SIGNING_KEYS[127547]=27D586A4F8900854329FF09F1260E46482E63562 # maxim
|
||||
|
||||
# This script needs to know where root's home directory is. However, we
|
||||
# cannot simply use the HOME environment variable, since there is no guarantee
|
||||
# that it points to root's home directory.
|
||||
ROOT_HOME="$(echo ~root)"
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
#+UTILITIES
|
||||
|
||||
|
@ -96,13 +92,25 @@ _debug()
|
|||
fi
|
||||
}
|
||||
|
||||
# Return true if user answered yes, false otherwise.
|
||||
# $1: The prompt question.
|
||||
prompt_yes_no() {
|
||||
while true; do
|
||||
read -rp "$1" yn
|
||||
case $yn in
|
||||
[Yy]*) return 0;;
|
||||
[Nn]*) return 1;;
|
||||
*) _msg "Please answer yes or no."
|
||||
esac
|
||||
done
|
||||
}
|
||||
|
||||
chk_require()
|
||||
{ # Check that every required command is available.
|
||||
declare -a warn
|
||||
local c
|
||||
|
||||
_debug "--- [ $FUNCNAME ] ---"
|
||||
_debug "--- [ ${FUNCNAME[0]} ] ---"
|
||||
|
||||
for c in "$@"; do
|
||||
command -v "$c" &>/dev/null || warn+=("$c")
|
||||
|
@ -117,7 +125,7 @@ chk_require()
|
|||
|
||||
chk_gpg_keyring()
|
||||
{ # Check whether the Guix release signing public key is present.
|
||||
_debug "--- [ $FUNCNAME ] ---"
|
||||
_debug "--- [ ${FUNCNAME[0]} ] ---"
|
||||
local user_id
|
||||
local gpg_key_id
|
||||
local exit_flag
|
||||
|
@ -127,26 +135,34 @@ chk_gpg_keyring()
|
|||
# Without --dry-run this command will create a ~/.gnupg owned by root on
|
||||
# systems where gpg has never been used, causing errors and confusion.
|
||||
if ! gpg --dry-run --list-keys "$gpg_key_id" >/dev/null 2>&1; then
|
||||
_err "${ERR}Missing OpenPGP public key ($gpg_key_id). Fetch it with this command:"
|
||||
echo " wget \"https://sv.gnu.org/people/viewgpg.php?user_id=$user_id\" -qO - | sudo -i gpg --import -"
|
||||
exit_flag=yes
|
||||
if prompt_yes_no "${INF}The following OpenPGP public key is \
|
||||
required to verify the Guix binary signature: $gpg_key_id.
|
||||
Would you like me to fetch it for you? (yes/no)"; then
|
||||
wget "https://sv.gnu.org/people/viewgpg.php?user_id=$user_id" \
|
||||
-qO - | gpg --import -
|
||||
else
|
||||
_err "${ERR}Missing OpenPGP public key ($gpg_key_id).
|
||||
Fetch it with this command:
|
||||
|
||||
wget \"https://sv.gnu.org/people/viewgpg.php?user_id=$user_id\" -qO - | \
|
||||
sudo -i gpg --import -"
|
||||
exit_flag=yes
|
||||
fi
|
||||
fi
|
||||
done
|
||||
test "$exit_flag" = yes && exit 1 || true
|
||||
if [ "$exit_flag" = yes ]; then
|
||||
exit 1
|
||||
fi
|
||||
}
|
||||
|
||||
chk_term()
|
||||
{ # Check for ANSI terminal for color printing.
|
||||
local ansi_term
|
||||
|
||||
if [ -t 2 ]; then
|
||||
if [ "${TERM+set}" = 'set' ]; then
|
||||
case "$TERM" in
|
||||
xterm*|rxvt*|urxvt*|linux*|vt*|eterm*|screen*)
|
||||
ansi_term=true
|
||||
;;
|
||||
*)
|
||||
ansi_term=false
|
||||
ERR="[ FAIL ] "
|
||||
PAS="[ PASS ] "
|
||||
;;
|
||||
|
@ -243,7 +259,7 @@ guix_get_bin_list()
|
|||
local latest_ver
|
||||
local default_ver
|
||||
|
||||
_debug "--- [ $FUNCNAME ] ---"
|
||||
_debug "--- [ ${FUNCNAME[0]} ] ---"
|
||||
|
||||
# Filter only version and architecture
|
||||
bin_ver_ls=("$(wget -qO- "$gnu_url" \
|
||||
|
@ -272,25 +288,25 @@ guix_get_bin()
|
|||
local url="$1"
|
||||
local bin_ver="$2"
|
||||
local dl_path="$3"
|
||||
local wget_args=()
|
||||
|
||||
_debug "--- [ $FUNCNAME ] ---"
|
||||
_debug "--- [ ${FUNCNAME[0]} ] ---"
|
||||
|
||||
_msg "${INF}Downloading Guix release archive"
|
||||
|
||||
wget --help | grep -q '\--show-progress' && \
|
||||
_PROGRESS_OPT="-q --show-progress" || _PROGRESS_OPT=""
|
||||
wget $_PROGRESS_OPT -P "$dl_path" "${url}/${bin_ver}.tar.xz" "${url}/${bin_ver}.tar.xz.sig"
|
||||
wget --help | grep -q '\--show-progress' \
|
||||
&& wget_args=("-q" "--show-progress")
|
||||
|
||||
if [[ "$?" -eq 0 ]]; then
|
||||
_msg "${PAS}download completed."
|
||||
if wget "${wget_args[@]}" -P "$dl_path" \
|
||||
"${url}/${bin_ver}.tar.xz" "${url}/${bin_ver}.tar.xz.sig"; then
|
||||
_msg "${PAS}download completed."
|
||||
else
|
||||
_err "${ERR}could not download ${url}/${bin_ver}.tar.xz."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
pushd "${dl_path}" >/dev/null
|
||||
gpg --verify "${bin_ver}.tar.xz.sig" >/dev/null 2>&1
|
||||
if [[ "$?" -eq 0 ]]; then
|
||||
if gpg --verify "${bin_ver}.tar.xz.sig" >/dev/null 2>&1; then
|
||||
_msg "${PAS}Signature is valid."
|
||||
popd >/dev/null
|
||||
else
|
||||
|
@ -304,45 +320,44 @@ sys_create_store()
|
|||
local pkg="$1"
|
||||
local tmp_path="$2"
|
||||
|
||||
_debug "--- [ $FUNCNAME ] ---"
|
||||
|
||||
cd "$tmp_path"
|
||||
tar --extract \
|
||||
--file "$pkg" &&
|
||||
_msg "${PAS}unpacked archive"
|
||||
_debug "--- [ ${FUNCNAME[0]} ] ---"
|
||||
|
||||
if [[ -e "/var/guix" || -e "/gnu" ]]; then
|
||||
_err "${ERR}A previous Guix installation was found. Refusing to overwrite."
|
||||
exit 1
|
||||
else
|
||||
_msg "${INF}Installing /var/guix and /gnu..."
|
||||
mv "${tmp_path}/var/guix" /var/
|
||||
mv "${tmp_path}/gnu" /
|
||||
fi
|
||||
|
||||
_msg "${INF}Linking the root user's profile"
|
||||
mkdir -p "${ROOT_HOME}/.config/guix"
|
||||
ln -sf /var/guix/profiles/per-user/root/current-guix \
|
||||
"${ROOT_HOME}/.config/guix/current"
|
||||
cd "$tmp_path"
|
||||
tar --extract --file "$pkg" && _msg "${PAS}unpacked archive"
|
||||
|
||||
GUIX_PROFILE="${ROOT_HOME}/.config/guix/current"
|
||||
_msg "${INF}Installing /var/guix and /gnu..."
|
||||
mv "${tmp_path}/var/guix" /var/
|
||||
mv "${tmp_path}/gnu" /
|
||||
|
||||
_msg "${INF}Linking the root user's profile"
|
||||
mkdir -p "~root/.config/guix"
|
||||
ln -sf /var/guix/profiles/per-user/root/current-guix \
|
||||
"~root/.config/guix/current"
|
||||
|
||||
GUIX_PROFILE="~root/.config/guix/current"
|
||||
# shellcheck disable=SC1090
|
||||
source "${GUIX_PROFILE}/etc/profile"
|
||||
_msg "${PAS}activated root profile at ${ROOT_HOME}/.config/guix/current"
|
||||
_msg "${PAS}activated root profile at ${GUIX_PROFILE}"
|
||||
}
|
||||
|
||||
sys_create_build_user()
|
||||
{ # Create the group and user accounts for build users.
|
||||
|
||||
_debug "--- [ $FUNCNAME ] ---"
|
||||
_debug "--- [ ${FUNCNAME[0]} ] ---"
|
||||
|
||||
if [ $(getent group guixbuild) ]; then
|
||||
if getent group guixbuild > /dev/null; then
|
||||
_msg "${INF}group guixbuild exists"
|
||||
else
|
||||
groupadd --system guixbuild
|
||||
_msg "${PAS}group <guixbuild> created"
|
||||
fi
|
||||
|
||||
if [ $(getent group kvm) ]; then
|
||||
if getent group kvm > /dev/null; then
|
||||
_msg "${INF}group kvm exists and build users will be added to it"
|
||||
local KVMGROUP=,kvm
|
||||
fi
|
||||
|
@ -371,7 +386,7 @@ sys_enable_guix_daemon()
|
|||
local local_bin
|
||||
local var_guix
|
||||
|
||||
_debug "--- [ $FUNCNAME ] ---"
|
||||
_debug "--- [ ${FUNCNAME[0]} ] ---"
|
||||
|
||||
info_path="/usr/local/share/info"
|
||||
local_bin="/usr/local/bin"
|
||||
|
@ -380,7 +395,7 @@ sys_enable_guix_daemon()
|
|||
case "$INIT_SYS" in
|
||||
upstart)
|
||||
{ initctl reload-configuration;
|
||||
cp "${ROOT_HOME}/.config/guix/current/lib/upstart/system/guix-daemon.conf" \
|
||||
cp "~root/.config/guix/current/lib/upstart/system/guix-daemon.conf" \
|
||||
/etc/init/ &&
|
||||
start guix-daemon; } &&
|
||||
_msg "${PAS}enabled Guix daemon via upstart"
|
||||
|
@ -389,15 +404,15 @@ sys_enable_guix_daemon()
|
|||
{ # systemd .mount units must be named after the target directory.
|
||||
# Here we assume a hard-coded name of /gnu/store.
|
||||
# XXX Work around <https://issues.guix.gnu.org/41356> until next release.
|
||||
if [ -f "${ROOT_HOME}/.config/guix/current/lib/systemd/system/gnu-store.mount" ]; then
|
||||
cp "${ROOT_HOME}/.config/guix/current/lib/systemd/system/gnu-store.mount" \
|
||||
if [ -f "~root/.config/guix/current/lib/systemd/system/gnu-store.mount" ]; then
|
||||
cp "~root/.config/guix/current/lib/systemd/system/gnu-store.mount" \
|
||||
/etc/systemd/system/;
|
||||
chmod 664 /etc/systemd/system/gnu-store.mount;
|
||||
systemctl daemon-reload &&
|
||||
systemctl enable gnu-store.mount;
|
||||
fi
|
||||
|
||||
cp "${ROOT_HOME}/.config/guix/current/lib/systemd/system/guix-daemon.service" \
|
||||
cp "~root/.config/guix/current/lib/systemd/system/guix-daemon.service" \
|
||||
/etc/systemd/system/;
|
||||
chmod 664 /etc/systemd/system/guix-daemon.service;
|
||||
|
||||
|
@ -418,7 +433,7 @@ sys_enable_guix_daemon()
|
|||
;;
|
||||
sysv-init)
|
||||
{ mkdir -p /etc/init.d;
|
||||
cp "${ROOT_HOME}/.config/guix/current/etc/init.d/guix-daemon" \
|
||||
cp "~root/.config/guix/current/etc/init.d/guix-daemon" \
|
||||
/etc/init.d/guix-daemon;
|
||||
chmod 775 /etc/init.d/guix-daemon;
|
||||
|
||||
|
@ -429,7 +444,7 @@ sys_enable_guix_daemon()
|
|||
;;
|
||||
openrc)
|
||||
{ mkdir -p /etc/init.d;
|
||||
cp "${ROOT_HOME}/.config/guix/current/etc/openrc/guix-daemon" \
|
||||
cp "~root/.config/guix/current/etc/openrc/guix-daemon" \
|
||||
/etc/init.d/guix-daemon;
|
||||
chmod 775 /etc/init.d/guix-daemon;
|
||||
|
||||
|
@ -439,7 +454,7 @@ sys_enable_guix_daemon()
|
|||
;;
|
||||
NA|*)
|
||||
_msg "${ERR}unsupported init system; run the daemon manually:"
|
||||
echo " ${ROOT_HOME}/.config/guix/current/bin/guix-daemon --build-users-group=guixbuild"
|
||||
echo " ~root/.config/guix/current/bin/guix-daemon --build-users-group=guixbuild"
|
||||
;;
|
||||
esac
|
||||
|
||||
|
@ -456,21 +471,18 @@ sys_enable_guix_daemon()
|
|||
|
||||
sys_authorize_build_farms()
|
||||
{ # authorize the public key of the build farm
|
||||
while true; do
|
||||
read -p "Permit downloading pre-built package binaries from the project's build farm? (yes/no) " yn
|
||||
case $yn in
|
||||
[Yy]*) guix archive --authorize < "${ROOT_HOME}/.config/guix/current/share/guix/ci.guix.gnu.org.pub" &&
|
||||
_msg "${PAS}Authorized public key for ci.guix.gnu.org";
|
||||
break;;
|
||||
[Nn]*) _msg "${INF}Skipped authorizing build farm public keys"
|
||||
break;;
|
||||
*) _msg "Please answer yes or no.";
|
||||
esac
|
||||
done
|
||||
if prompt_yes_no "Permit downloading pre-built package binaries from the \
|
||||
project's build farm? (yes/no) "; then
|
||||
guix archive --authorize \
|
||||
< "~root/.config/guix/current/share/guix/ci.guix.gnu.org.pub" \
|
||||
&& _msg "${PAS}Authorized public key for ci.guix.gnu.org"
|
||||
else
|
||||
_msg "${INF}Skipped authorizing build farm public keys"
|
||||
fi
|
||||
}
|
||||
|
||||
sys_create_init_profile()
|
||||
{ # Create /etc/profile.d/guix.sh for better desktop integration
|
||||
{ # Define for better desktop integration
|
||||
# This will not take effect until the next shell or desktop session!
|
||||
[ -d "/etc/profile.d" ] || mkdir /etc/profile.d # Just in case
|
||||
cat <<"EOF" > /etc/profile.d/guix.sh
|
||||
|
@ -544,7 +556,7 @@ This script installs GNU Guix on your system
|
|||
https://www.gnu.org/software/guix/
|
||||
EOF
|
||||
echo -n "Press return to continue..."
|
||||
read -r ANSWER
|
||||
read -r
|
||||
}
|
||||
|
||||
main()
|
||||
|
@ -574,7 +586,7 @@ main()
|
|||
if ! [[ $GUIX_BINARY_FILE_NAME =~ $ARCH_OS ]]; then
|
||||
_err "$ARCH_OS not in ${GUIX_BINARY_FILE_NAME}; aborting"
|
||||
fi
|
||||
_msg "Using manually provided binary ${GUIX_BINARY_FILE_NAME}"
|
||||
_msg "${INF}Using manually provided binary ${GUIX_BINARY_FILE_NAME}"
|
||||
GUIX_BINARY_FILE_NAME=$(realpath "$GUIX_BINARY_FILE_NAME")
|
||||
fi
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2020, 2021 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
|
@ -49,6 +49,14 @@ (define %base-packages
|
|||
'("bootstrap-tarballs" "gcc-toolchain" "nss-certs"
|
||||
"openssh" "emacs" "vim" "python" "guile" "guix")))
|
||||
|
||||
(define %base-packages/armhf
|
||||
;; XXX: Relax requirements for armhf-linux for lack of enough build power.
|
||||
(map (lambda (package)
|
||||
(if (string=? (package-name package) "emacs")
|
||||
(specification->package "emacs-no-x")
|
||||
package))
|
||||
%base-packages))
|
||||
|
||||
(define %base-packages/hurd
|
||||
;; XXX: For now we are less demanding of "i586-gnu".
|
||||
(map specification->package
|
||||
|
@ -100,9 +108,18 @@ (define %base-manifest
|
|||
(manifest
|
||||
(append-map (lambda (system)
|
||||
(map (cut package->manifest-entry* <> system)
|
||||
(if (string=? system "i586-gnu")
|
||||
%base-packages/hurd
|
||||
%base-packages)))
|
||||
(cond ((string=? system "i586-gnu")
|
||||
%base-packages/hurd)
|
||||
((string=? system "armhf-linux")
|
||||
;; FIXME: Drop special case when ci.guix.gnu.org
|
||||
;; has more ARMv7 build power.
|
||||
%base-packages/armhf)
|
||||
((string=? system "powerpc64le-linux")
|
||||
;; FIXME: Drop 'bootstrap-tarballs' until
|
||||
;; <https://bugs.gnu.org/48055> is fixed.
|
||||
(drop %base-packages 1))
|
||||
(else
|
||||
%base-packages))))
|
||||
%cuirass-supported-systems)))
|
||||
|
||||
(define %system-manifest
|
||||
|
|
|
@ -131,9 +131,9 @@ (define-public guix
|
|||
;; 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.2.0")
|
||||
(commit "4dff6ecde85eec473ab231cf75f51e98e8aca1e9")
|
||||
(revision 21))
|
||||
(let ((version "1.3.0")
|
||||
(commit "771b866c55e5f992df60f6c32f5fdd78b64e17f6")
|
||||
(revision 1))
|
||||
(package
|
||||
(name "guix")
|
||||
|
||||
|
@ -149,7 +149,7 @@ (define-public guix
|
|||
(commit commit)))
|
||||
(sha256
|
||||
(base32
|
||||
"1n16j7rb4n4pjmp8ck5g206rphmzxii2mbyz1nk4qk70zc3mwszq"))
|
||||
"0w8w05w6v3lc6478vfw67jzn0hbd9nsncpx9i9ch1lck53r8vs44"))
|
||||
(file-name (string-append "guix-" version "-checkout"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
|
|
|
@ -265,7 +265,7 @@ (define-public spice
|
|||
(define-public spice-vdagent
|
||||
(package
|
||||
(name "spice-vdagent")
|
||||
(version "0.20.0")
|
||||
(version "0.21.0")
|
||||
(source (origin
|
||||
(method url-fetch)
|
||||
(uri (string-append
|
||||
|
@ -273,11 +273,14 @@ (define-public spice-vdagent
|
|||
"spice-vdagent-" version ".tar.bz2"))
|
||||
(sha256
|
||||
(base32
|
||||
"0n9k2kna2gd1zi6jv45zsp2jlv439nz5l5jjijirxqaycwi74srf"))))
|
||||
"0n8jlc1pv6mkry161y656b1nk9hhhminjq6nymzmmyjl7k95ymzx"))))
|
||||
(build-system gnu-build-system)
|
||||
(arguments
|
||||
`(#:configure-flags
|
||||
'("--localstatedir=/var")
|
||||
;; The test-session-info test fails for unknown reasons (see:
|
||||
;; https://gitlab.freedesktop.org/spice/linux/vd_agent/-/issues/24).
|
||||
#:make-flags '("XFAIL_TESTS=tests/test-session-info")
|
||||
#:phases
|
||||
(modify-phases %standard-phases
|
||||
(add-after 'unpack 'patch-makefile.in
|
||||
|
@ -285,19 +288,27 @@ (define-public spice-vdagent
|
|||
(substitute* "Makefile.in"
|
||||
(((string-append "\\$\\(mkdir_p\\) \\$\\(DESTDIR\\)"
|
||||
"\\$\\(localstatedir\\)/run/spice-vdagentd"))
|
||||
"-$(mkdir_p) $(DESTDIR)$(localstatedir)/run/spice-vdagentd"))
|
||||
#t))
|
||||
"-$(mkdir_p) $(DESTDIR)$(localstatedir)/run/spice-vdagentd"))))
|
||||
(add-after 'unpack 'patch-spice-vdagent.desktop
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(substitute* "data/spice-vdagent.desktop"
|
||||
(("Exec=/usr/bin/spice-vdagent")
|
||||
(string-append "Exec=" (assoc-ref outputs "out")
|
||||
"/bin/spice-vdagent")))
|
||||
#t)))))
|
||||
"/bin/spice-vdagent")))))
|
||||
(add-after 'unpack 'fix-test-termination
|
||||
(lambda _
|
||||
;; The termination tests depend on finding the socket file name
|
||||
;; in the spice-vdagent command line it launched, but by default
|
||||
;; ps truncates its output, which causes the test to fail (see:
|
||||
;; https://gitlab.freedesktop.org/spice/linux/vd_agent/-/merge_requests/36).
|
||||
(substitute* "tests/test-termination.c"
|
||||
(("ps -ef")
|
||||
"ps -efww")))))))
|
||||
(inputs
|
||||
`(("alsa-lib" ,alsa-lib)
|
||||
("dbus" ,dbus)
|
||||
("glib" ,glib)
|
||||
("gtk+" ,gtk+)
|
||||
("libdrm" ,libdrm)
|
||||
("libpciaccess" ,libpciaccess)
|
||||
("libx11" ,libx11)
|
||||
|
@ -307,7 +318,8 @@ (define-public spice-vdagent
|
|||
("libxrandr" ,libxrandr)
|
||||
("spice-protocol" ,spice-protocol)))
|
||||
(native-inputs
|
||||
`(("pkg-config" ,pkg-config)))
|
||||
`(("pkg-config" ,pkg-config)
|
||||
("procps" ,procps))) ;tests use 'ps'
|
||||
(synopsis "Spice agent for Linux")
|
||||
(description "Spice-vdagent enables sharing the clipboard and guest display
|
||||
resolution scaling on graphical console window resize.")
|
||||
|
|
|
@ -34,41 +34,42 @@ (define-record-type* <spice-vdagent-configuration>
|
|||
(spice-vdagent spice-vdagent-configuration-spice-vdagent
|
||||
(default spice-vdagent)))
|
||||
|
||||
(define (spice-vdagent-activation config)
|
||||
"Return the activation gexp for CONFIG."
|
||||
#~(begin
|
||||
(use-modules (guix build utils))
|
||||
(mkdir-p "/var/run/spice-vdagentd")))
|
||||
|
||||
(define (spice-vdagent-shepherd-service config)
|
||||
"Return a <shepherd-service> for spice-vdagentd with CONFIG."
|
||||
(define spice-vdagent (spice-vdagent-configuration-spice-vdagent config))
|
||||
|
||||
(define spice-vdagentd-command
|
||||
(list
|
||||
(file-append spice-vdagent "/sbin/spice-vdagentd")
|
||||
"-x"))
|
||||
(file-append spice-vdagent "/sbin/spice-vdagentd")
|
||||
"-x"))
|
||||
|
||||
(list
|
||||
(shepherd-service
|
||||
(documentation "Spice vdagentd service")
|
||||
(requirement '(udev))
|
||||
(provision '(spice-vdagentd))
|
||||
(start #~(make-forkexec-constructor '#$spice-vdagentd-command))
|
||||
(stop #~(make-kill-destructor)))))
|
||||
(shepherd-service
|
||||
(documentation "Spice vdagentd service")
|
||||
(requirement '(dbus-system))
|
||||
(provision '(spice-vdagentd))
|
||||
(start #~(lambda args
|
||||
;; spice-vdagentd supports being activated upon the client
|
||||
;; connecting to its socket; when not using such feature, the
|
||||
;; socket should not exist before vdagentd creates it itself.
|
||||
(mkdir-p "/run/spice-vdagentd")
|
||||
(false-if-exception
|
||||
(delete-file "/run/spice-vdagentd/spice-vdagent-sock"))
|
||||
(fork+exec-command '#$spice-vdagentd-command)))
|
||||
(stop #~(make-kill-destructor)))))
|
||||
|
||||
(define spice-vdagent-profile
|
||||
(compose list spice-vdagent-configuration-spice-vdagent))
|
||||
|
||||
(define spice-vdagent-service-type
|
||||
(service-type (name 'spice-vdagent)
|
||||
(extensions
|
||||
(list (service-extension shepherd-root-service-type
|
||||
spice-vdagent-shepherd-service)
|
||||
(service-extension activation-service-type
|
||||
spice-vdagent-activation)
|
||||
(service-extension profile-service-type
|
||||
spice-vdagent-profile)))))
|
||||
(service-type
|
||||
(name 'spice-vdagent)
|
||||
(default-value (spice-vdagent-configuration))
|
||||
(extensions
|
||||
(list (service-extension shepherd-root-service-type
|
||||
spice-vdagent-shepherd-service)
|
||||
(service-extension profile-service-type
|
||||
spice-vdagent-profile)))))
|
||||
|
||||
(define* (spice-vdagent-service
|
||||
#:optional (config (spice-vdagent-configuration)))
|
||||
|
|
|
@ -63,6 +63,7 @@ (define-module (gnu system)
|
|||
#:use-module (gnu packages package-management)
|
||||
#:use-module (gnu packages pciutils)
|
||||
#:use-module (gnu packages texinfo)
|
||||
#:use-module (gnu packages wget)
|
||||
#:use-module (gnu packages zile)
|
||||
#:use-module (gnu services)
|
||||
#:use-module (gnu services shepherd)
|
||||
|
@ -790,6 +791,7 @@ (define %base-packages-networking
|
|||
;; Default set of networking packages.
|
||||
(list inetutils isc-dhcp
|
||||
iproute
|
||||
wget
|
||||
;; wireless-tools is deprecated in favor of iw, but it's still what
|
||||
;; many people are familiar with, so keep it around.
|
||||
iw wireless-tools))
|
||||
|
|
|
@ -5,7 +5,7 @@
|
|||
;;
|
||||
|
||||
(use-modules (gnu) (guix) (srfi srfi-1))
|
||||
(use-service-modules desktop networking ssh xorg)
|
||||
(use-service-modules desktop mcron networking spice ssh xorg)
|
||||
(use-package-modules bootloaders certs fonts nvi
|
||||
package-management wget xorg)
|
||||
|
||||
|
@ -24,6 +24,18 @@ Run '\x1b[1;37minfo guix\x1b[0m' to browse documentation.
|
|||
accounts.\x1b[0m
|
||||
"))
|
||||
|
||||
;;; XXX: Xfce does not implement what is needed for the SPICE dynamic
|
||||
;;; resolution to work (see:
|
||||
;;; https://gitlab.xfce.org/xfce/xfce4-settings/-/issues/142). Workaround it
|
||||
;;; by manually invoking xrandr every second.
|
||||
(define auto-update-resolution-crutch
|
||||
#~(job '(next-second)
|
||||
(lambda ()
|
||||
(setenv "DISPLAY" ":0.0")
|
||||
(setenv "XAUTHORITY" "/home/guest/.Xauthority")
|
||||
(execl (string-append #$xrandr "/bin/xrandr") "xrandr" "-s" "0"))
|
||||
#:user "guest"))
|
||||
|
||||
(operating-system
|
||||
(host-name "gnu")
|
||||
(timezone "Etc/UTC")
|
||||
|
@ -75,11 +87,23 @@ root ALL=(ALL) ALL
|
|||
(default-user "guest")
|
||||
(xorg-configuration
|
||||
(xorg-configuration
|
||||
;; The QXL virtual GPU driver is added to provide
|
||||
;; a better SPICE experience.
|
||||
(modules (cons xf86-video-qxl
|
||||
%default-xorg-modules))
|
||||
(keyboard-layout keyboard-layout)))))
|
||||
|
||||
;; Uncomment the line below to add an SSH server.
|
||||
;;(service openssh-service-type)
|
||||
|
||||
;; Add support for the SPICE protocol, which enables dynamic
|
||||
;; resizing of the guest screen resolution, clipboard
|
||||
;; integration with the host, etc.
|
||||
(service spice-vdagent-service-type)
|
||||
|
||||
(simple-service 'cron-jobs mcron-service-type
|
||||
(list auto-update-resolution-crutch))
|
||||
|
||||
;; Use the DHCP client service rather than NetworkManager.
|
||||
(service dhcp-client-service-type))
|
||||
|
||||
|
|
|
@ -1,5 +1,5 @@
|
|||
;;; GNU Guix --- Functional package management for GNU
|
||||
;;; Copyright © 2014, 2015, 2016, 2017, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2014, 2015, 2016, 2017, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
|
||||
;;; Copyright © 2018 Mark H Weaver <mhw@netris.org>
|
||||
;;;
|
||||
;;; This file is part of GNU Guix.
|
||||
|
@ -148,7 +148,7 @@ (define* (locale-directory locales
|
|||
(define %default-locale-libcs
|
||||
;; The libcs for which we build locales by default.
|
||||
;; List the previous and current libc to ease transition.
|
||||
(list glibc-2.29 glibc))
|
||||
(list glibc))
|
||||
|
||||
(define %default-locale-definitions
|
||||
;; Arbitrary set of locales that are built by default. They are here mostly
|
||||
|
|
|
@ -122,15 +122,24 @@ (define current-channels
|
|||
(mlambda ()
|
||||
"Return the list of channels currently available, including the 'guix'
|
||||
channel. Return the empty list if this information is missing."
|
||||
(define (build-time-metadata)
|
||||
(match (channel-metadata)
|
||||
(#f '())
|
||||
(sexp (or (and=> (sexp->channel sexp 'guix) list) '()))))
|
||||
|
||||
(match (current-profile-entries)
|
||||
(()
|
||||
;; As a fallback, if we're not running from a profile, use 'guix'
|
||||
;; channel metadata from (guix config).
|
||||
(match (channel-metadata)
|
||||
(#f '())
|
||||
(sexp (or (and=> (sexp->channel sexp 'guix) list) '()))))
|
||||
(build-time-metadata))
|
||||
(entries
|
||||
(filter-map manifest-entry-channel entries)))))
|
||||
(match (filter-map manifest-entry-channel entries)
|
||||
(()
|
||||
;; This profile lacks provenance metadata, so fall back to
|
||||
;; build-time metadata as returned by 'channel-metadata'.
|
||||
(build-time-metadata))
|
||||
(lst
|
||||
lst))))))
|
||||
|
||||
(define (package-path-entries)
|
||||
"Return two values: the list of package path entries to be added to the
|
||||
|
|
|
@ -301,4 +301,11 @@ (define-command (guix-describe . args)
|
|||
(channels
|
||||
(display-profile-info #f format channels))))
|
||||
(profile
|
||||
(display-profile-info (canonicalize-profile profile) format))))))
|
||||
;; For the current profile, resort to 'current-channels', which has a
|
||||
;; fallback to metadata from (guix config) in case PROFILE lacks it.
|
||||
(let ((channels (if (and (current-profile)
|
||||
(string=? profile (current-profile)))
|
||||
(current-channels)
|
||||
(profile-channels profile))))
|
||||
(display-profile-info (canonicalize-profile profile)
|
||||
format channels)))))))
|
||||
|
|
|
@ -7,7 +7,7 @@ msgstr ""
|
|||
"Project-Id-Version: guix manual checkout\n"
|
||||
"Report-Msgid-Bugs-To: bug-guix@gnu.org\n"
|
||||
"POT-Creation-Date: 2021-01-25 00:00+0100\n"
|
||||
"PO-Revision-Date: 2021-02-19 10:40+0000\n"
|
||||
"PO-Revision-Date: 2021-05-03 02:58+0000\n"
|
||||
"Last-Translator: Soheil Khanalipur <soheil@disroot.org>\n"
|
||||
"Language-Team: Persian <https://translate.fedoraproject.org/projects/guix/documentation-cookbook/fa/>\n"
|
||||
"Language: fa\n"
|
||||
|
@ -15,7 +15,7 @@ msgstr ""
|
|||
"Content-Type: text/plain; charset=UTF-8\n"
|
||||
"Content-Transfer-Encoding: 8bit\n"
|
||||
"Plural-Forms: nplurals=2; plural=n > 1;\n"
|
||||
"X-Generator: Weblate 4.4.2\n"
|
||||
"X-Generator: Weblate 4.6.1\n"
|
||||
|
||||
#. type: Plain text
|
||||
#: guix-git/doc/guix-cookbook.texi:7
|
||||
|
@ -154,7 +154,7 @@ msgstr ""
|
|||
#. type: menuentry
|
||||
#: guix-git/doc/guix-cookbook.texi:74
|
||||
msgid "Thanks!"
|
||||
msgstr "سپاس"
|
||||
msgstr "سِپاس!"
|
||||
|
||||
#. type: appendix
|
||||
#: guix-git/doc/guix-cookbook.texi:74 guix-git/doc/guix-cookbook.texi:2941
|
||||
|
|
File diff suppressed because it is too large
Load diff
|
@ -71,7 +71,7 @@ msgstr "GNU Guix 개발자"
|
|||
#: guix-git/doc/guix-cookbook.texi:48
|
||||
#, no-wrap
|
||||
msgid "Top"
|
||||
msgstr "Top"
|
||||
msgstr "정상"
|
||||
|
||||
#. type: Plain text
|
||||
#: guix-git/doc/guix-cookbook.texi:55
|
||||
|
|
21398
po/doc/guix-manual.de.po
21398
po/doc/guix-manual.de.po
File diff suppressed because it is too large
Load diff
22338
po/doc/guix-manual.es.po
22338
po/doc/guix-manual.es.po
File diff suppressed because it is too large
Load diff
21400
po/doc/guix-manual.fa.po
21400
po/doc/guix-manual.fa.po
File diff suppressed because it is too large
Load diff
21402
po/doc/guix-manual.fr.po
21402
po/doc/guix-manual.fr.po
File diff suppressed because it is too large
Load diff
21392
po/doc/guix-manual.it.po
21392
po/doc/guix-manual.it.po
File diff suppressed because it is too large
Load diff
21392
po/doc/guix-manual.ko.po
21392
po/doc/guix-manual.ko.po
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
22460
po/doc/guix-manual.ru.po
22460
po/doc/guix-manual.ru.po
File diff suppressed because it is too large
Load diff
21481
po/doc/guix-manual.sk.po
21481
po/doc/guix-manual.sk.po
File diff suppressed because it is too large
Load diff
File diff suppressed because it is too large
Load diff
|
@ -1,5 +1,6 @@
|
|||
# GNU Guix --- Functional package management for GNU
|
||||
# Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
|
||||
# Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||
#
|
||||
# This file is part of GNU Guix.
|
||||
#
|
||||
|
@ -16,7 +17,7 @@
|
|||
# You should have received a copy of the GNU General Public License
|
||||
# along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
DOC_PO_FILES= \
|
||||
DOC_PO_FILES = \
|
||||
%D%/guix-manual.es.po \
|
||||
%D%/guix-manual.de.po \
|
||||
%D%/guix-manual.fa.po \
|
||||
|
@ -28,11 +29,11 @@ DOC_PO_FILES= \
|
|||
%D%/guix-manual.sk.po \
|
||||
%D%/guix-manual.zh_CN.po
|
||||
|
||||
DOC_COOKBOOK_PO_FILES= \
|
||||
%D%/guix-cookbook.de.po \
|
||||
%D%/guix-cookbook.fa.po \
|
||||
%D%/guix-cookbook.fr.po \
|
||||
%D%/guix-cookbook.ko.po \
|
||||
DOC_COOKBOOK_PO_FILES = \
|
||||
%D%/guix-cookbook.de.po \
|
||||
%D%/guix-cookbook.fa.po \
|
||||
%D%/guix-cookbook.fr.po \
|
||||
%D%/guix-cookbook.ko.po \
|
||||
%D%/guix-cookbook.zh_Hans.po
|
||||
|
||||
EXTRA_DIST = \
|
||||
|
@ -41,77 +42,18 @@ EXTRA_DIST = \
|
|||
$(DOC_PO_FILES) \
|
||||
$(DOC_COOKBOOK_PO_FILES)
|
||||
|
||||
POT_OPTIONS = --package-name "guix manual" --package-version "$(VERSION)" \
|
||||
--copyright-holder "the authors of Guix (msgids)" \
|
||||
--msgid-bugs-address "bug-guix@gnu.org"
|
||||
POT_OPTIONS = \
|
||||
--package-name "guix manual" --package-version "$(VERSION)" \
|
||||
--copyright-holder "the authors of Guix (msgids)" \
|
||||
--msgid-bugs-address "bug-guix@gnu.org"
|
||||
|
||||
doc-po-update-%:
|
||||
@lang=`echo "$@" | sed -e's/^doc-po-update-//'` ; \
|
||||
output="$(srcdir)/po/doc/guix-manual.$$lang.po" ; \
|
||||
input="$(srcdir)/po/doc/guix-manual.pot" ; \
|
||||
if test -f "$$output"; then \
|
||||
test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
|
||||
echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $$output $$input"; \
|
||||
cd $(srcdir) \
|
||||
&& { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
|
||||
'' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
|
||||
$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) "$$output" "$$input";; \
|
||||
*) \
|
||||
$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} "$$output" "$$input";; \
|
||||
esac; \
|
||||
}; \
|
||||
touch "$$output"; \
|
||||
else \
|
||||
echo "File $$output does not exist. If you are a translator, you can create it with 'msginit'." 1>&2; \
|
||||
exit 1; \
|
||||
fi
|
||||
|
||||
doc-po-update-cookbook-%:
|
||||
@lang=`echo "$@" | sed -e's/^doc-po-update-cookbook-//'` ; \
|
||||
output="$(srcdir)/po/doc/guix-cookbook.$$lang.po" ; \
|
||||
input="$(srcdir)/po/doc/guix-cookbook.pot" ; \
|
||||
if test -f "$$output"; then \
|
||||
test "$(srcdir)" = . && cdcmd="" || cdcmd="cd $(srcdir) && "; \
|
||||
echo "$${cdcmd}$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} $$output $$input"; \
|
||||
cd $(srcdir) \
|
||||
&& { case `$(MSGMERGE_UPDATE) --version | sed 1q | sed -e 's,^[^0-9]*,,'` in \
|
||||
'' | 0.[0-9] | 0.[0-9].* | 0.1[0-7] | 0.1[0-7].*) \
|
||||
$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) "$$output" "$$input";; \
|
||||
*) \
|
||||
$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$${lang} "$$output" "$$input";; \
|
||||
esac; \
|
||||
}; \
|
||||
touch "$$output"; \
|
||||
else \
|
||||
echo "File $$output does not exist. If you are a translator, you can create it with 'msginit'." 1>&2; \
|
||||
exit 1; \
|
||||
fi
|
||||
|
||||
$(srcdir)/po/doc/%.pot-update: doc/%.texi
|
||||
%D%/%.pot: $(srcdir)/doc/%.texi
|
||||
$(AM_V_PO4A)$(PO4A_UPDATEPO) -M UTF-8 -f texinfo -m "$<" \
|
||||
-p "$$(echo $@ | sed 's|-update||')" $(POT_OPTIONS)
|
||||
@touch "$$(echo $@ | sed 's|-update||')"
|
||||
-p "$@" $(POT_OPTIONS) && \
|
||||
touch $@
|
||||
|
||||
TMP_POT_FILES = contributing.pot guix.pot
|
||||
%D%/guix-manual.pot: %D%/guix.pot %D%/contributing.pot
|
||||
msgcat $^ > $@
|
||||
|
||||
doc-pot-update:
|
||||
for f in $(TMP_POT_FILES); do \
|
||||
$(MAKE) $(srcdir)/po/doc/guix.pot-update; \
|
||||
$(MAKE) $(srcdir)/po/doc/contributing.pot-update; \
|
||||
done
|
||||
$(MAKE) $(srcdir)/po/doc/guix-cookbook.pot-update;
|
||||
msgcat $(addprefix $(srcdir)/po/doc/, $(TMP_POT_FILES)) > $(srcdir)/po/doc/guix-manual.pot
|
||||
rm -f $(addprefix $(srcdir)/po/doc/, $(TMP_POT_FILES))
|
||||
|
||||
doc-po-update: doc-pot-update
|
||||
for f in $(DOC_PO_FILES); do \
|
||||
lang="`echo "$$f" | $(SED) -es'|.*/guix-manual\.\(.*\)\.po$$|\1|g'`"; \
|
||||
$(MAKE) "doc-po-update-$$lang"; \
|
||||
done
|
||||
for f in $(DOC_COOKBOOK_PO_FILES); do \
|
||||
lang="`echo "$$f" | $(SED) -es'|.*/guix-cookbook\.\(.*\)\.po$$|\1|g'`"; \
|
||||
$(MAKE) "doc-po-update-cookbook-$$lang"; \
|
||||
done
|
||||
|
||||
|
||||
.PHONY: doc-po-update doc-pot-update
|
||||
doc-pot-update: %D%/guix-manual.pot %D%/guix-cookbook.pot
|
||||
.PHONY: doc-pot-update
|
||||
|
|
|
@ -12,9 +12,11 @@ hu
|
|||
it
|
||||
ko
|
||||
nl
|
||||
oc
|
||||
pl
|
||||
pt_BR
|
||||
ru
|
||||
si
|
||||
sk
|
||||
sr
|
||||
sv
|
||||
|
|
|
@ -26,3 +26,8 @@ EXTRA_LOCALE_CATEGORIES =
|
|||
# "make distcheck -j4".
|
||||
# See <https://lists.gnu.org/archive/html/bug-gettext/2014-08/msg00005.html>.
|
||||
DIST_DEPENDS_ON_UPDATE_PO = no
|
||||
|
||||
# Ignore the timestamp of the .pot file, as .po files are updated by
|
||||
# `make download-po` only. This ensures po files are not modified on the
|
||||
# first `make` invocation.
|
||||
PO_DEPENDS_ON_POT = no
|
||||
|
|
562
po/guix/cs.po
562
po/guix/cs.po
File diff suppressed because it is too large
Load diff
579
po/guix/da.po
579
po/guix/da.po
File diff suppressed because it is too large
Load diff
575
po/guix/de.po
575
po/guix/de.po
File diff suppressed because it is too large
Load diff
562
po/guix/eo.po
562
po/guix/eo.po
File diff suppressed because it is too large
Load diff
579
po/guix/es.po
579
po/guix/es.po
File diff suppressed because it is too large
Load diff
579
po/guix/fr.po
579
po/guix/fr.po
File diff suppressed because it is too large
Load diff
562
po/guix/hu.po
562
po/guix/hu.po
File diff suppressed because it is too large
Load diff
574
po/guix/it.po
574
po/guix/it.po
File diff suppressed because it is too large
Load diff
574
po/guix/ko.po
574
po/guix/ko.po
File diff suppressed because it is too large
Load diff
1241
po/guix/nl.po
1241
po/guix/nl.po
File diff suppressed because it is too large
Load diff
6628
po/guix/oc.po
Normal file
6628
po/guix/oc.po
Normal file
File diff suppressed because it is too large
Load diff
629
po/guix/pl.po
629
po/guix/pl.po
File diff suppressed because it is too large
Load diff
1907
po/guix/pt_BR.po
1907
po/guix/pt_BR.po
File diff suppressed because it is too large
Load diff
593
po/guix/ru.po
593
po/guix/ru.po
File diff suppressed because it is too large
Load diff
6628
po/guix/si.po
Normal file
6628
po/guix/si.po
Normal file
File diff suppressed because it is too large
Load diff
631
po/guix/sk.po
631
po/guix/sk.po
File diff suppressed because it is too large
Load diff
562
po/guix/sr.po
562
po/guix/sr.po
File diff suppressed because it is too large
Load diff
562
po/guix/sv.po
562
po/guix/sv.po
File diff suppressed because it is too large
Load diff
579
po/guix/ta.po
579
po/guix/ta.po
File diff suppressed because it is too large
Load diff
562
po/guix/vi.po
562
po/guix/vi.po
File diff suppressed because it is too large
Load diff
562
po/guix/zh_CN.po
562
po/guix/zh_CN.po
File diff suppressed because it is too large
Load diff
|
@ -10,6 +10,8 @@ fa
|
|||
fr
|
||||
hu
|
||||
ko
|
||||
nl
|
||||
oc
|
||||
pl
|
||||
pt_BR
|
||||
sk
|
||||
|
|
|
@ -22,3 +22,8 @@ EXTRA_LOCALE_CATEGORIES =
|
|||
# "make distcheck -j4".
|
||||
# See <https://lists.gnu.org/archive/html/bug-gettext/2014-08/msg00005.html>.
|
||||
DIST_DEPENDS_ON_UPDATE_PO = no
|
||||
|
||||
# Ignore the timestamp of the .pot file, as .po files are updated by
|
||||
# `make download-po` only. This ensures po files are not modified on the
|
||||
# first `make` invocation.
|
||||
PO_DEPENDS_ON_POT = no
|
||||
|
|
1140
po/packages/da.po
1140
po/packages/da.po
File diff suppressed because it is too large
Load diff
1140
po/packages/de.po
1140
po/packages/de.po
File diff suppressed because it is too large
Load diff
1140
po/packages/eo.po
1140
po/packages/eo.po
File diff suppressed because it is too large
Load diff
1140
po/packages/es.po
1140
po/packages/es.po
File diff suppressed because it is too large
Load diff
1140
po/packages/fr.po
1140
po/packages/fr.po
File diff suppressed because it is too large
Load diff
1140
po/packages/hu.po
1140
po/packages/hu.po
File diff suppressed because it is too large
Load diff
1140
po/packages/ko.po
1140
po/packages/ko.po
File diff suppressed because it is too large
Load diff
20927
po/packages/nl.po
Normal file
20927
po/packages/nl.po
Normal file
File diff suppressed because it is too large
Load diff
20916
po/packages/oc.po
Normal file
20916
po/packages/oc.po
Normal file
File diff suppressed because it is too large
Load diff
1140
po/packages/pl.po
1140
po/packages/pl.po
File diff suppressed because it is too large
Load diff
1140
po/packages/pt_BR.po
1140
po/packages/pt_BR.po
File diff suppressed because it is too large
Load diff
1148
po/packages/sk.po
1148
po/packages/sk.po
File diff suppressed because it is too large
Load diff
1140
po/packages/sr.po
1140
po/packages/sr.po
File diff suppressed because it is too large
Load diff
1140
po/packages/zh_CN.po
1140
po/packages/zh_CN.po
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue