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
|
*.eps
|
||||||
*.go
|
*.go
|
||||||
*.log
|
*.log
|
||||||
|
*.mo
|
||||||
*.pdf
|
*.pdf
|
||||||
*.png
|
*.png
|
||||||
*.tar.xz
|
*.tar.xz
|
||||||
|
@ -75,7 +76,7 @@
|
||||||
/etc/guix-publish.service
|
/etc/guix-publish.service
|
||||||
/etc/init.d/guix-daemon
|
/etc/init.d/guix-daemon
|
||||||
/etc/openrc/guix-daemon
|
/etc/openrc/guix-daemon
|
||||||
/guix-daemon
|
/guix-*
|
||||||
/guix/config.scm
|
/guix/config.scm
|
||||||
/libformat.a
|
/libformat.a
|
||||||
/libstore.a
|
/libstore.a
|
||||||
|
@ -93,6 +94,7 @@
|
||||||
/nix/config.h
|
/nix/config.h
|
||||||
/nix/config.h.in
|
/nix/config.h.in
|
||||||
/po/doc/*.mo
|
/po/doc/*.mo
|
||||||
|
/po/doc/*.pot
|
||||||
/po/guix/*.gmo
|
/po/guix/*.gmo
|
||||||
/po/guix/*.insert-header
|
/po/guix/*.insert-header
|
||||||
/po/guix/*.mo
|
/po/guix/*.mo
|
||||||
|
@ -128,6 +130,7 @@
|
||||||
/po/packages/remove-potcdate.sin
|
/po/packages/remove-potcdate.sin
|
||||||
/po/packages/stamp-po
|
/po/packages/stamp-po
|
||||||
/pre-inst-env
|
/pre-inst-env
|
||||||
|
/release-*
|
||||||
/scripts/guix
|
/scripts/guix
|
||||||
/test-env
|
/test-env
|
||||||
/test-tmp
|
/test-tmp
|
||||||
|
@ -145,8 +148,9 @@ stamp-h[0-9]
|
||||||
tmp
|
tmp
|
||||||
/doc/os-config-lightweight-desktop.texi
|
/doc/os-config-lightweight-desktop.texi
|
||||||
/nix/scripts/download
|
/nix/scripts/download
|
||||||
|
/.tarball-version
|
||||||
/.version
|
/.version
|
||||||
/doc/stamp-[0-9]*
|
/doc/stamp-*
|
||||||
/gnu/packages/bootstrap
|
/gnu/packages/bootstrap
|
||||||
/gnu/packages/aux-files/guile-guile-launcher.o
|
/gnu/packages/aux-files/guile-guile-launcher.o
|
||||||
/guile
|
/guile
|
||||||
|
|
42
Makefile.am
42
Makefile.am
|
@ -735,22 +735,22 @@ AM_DISTCHECK_CONFIGURE_FLAGS = \
|
||||||
--enable-daemon \
|
--enable-daemon \
|
||||||
ac_cv_guix_test_root="$(GUIX_TEST_ROOT)"
|
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.
|
# The self-contained tarball.
|
||||||
guix-binary.%.tar.xz:
|
guix-binary.%.tar.xz:
|
||||||
$(AM_V_GEN)GUIX_PACKAGE_PATH= \
|
$(AM_V_GEN)GUIX_PACKAGE_PATH= \
|
||||||
tarball=`$(top_builddir)/pre-inst-env guix pack -C xz \
|
tarball=`$(top_builddir)/pre-inst-env guix pack -C xz \
|
||||||
--fallback \
|
--fallback \
|
||||||
-s "$*" --localstatedir --profile-name=current-guix \
|
-s "$*" --localstatedir --profile-name=current-guix \
|
||||||
$(GUIX_FOR_BINARY_TARBALL)` ; \
|
guix` ; \
|
||||||
cp "$$tarball" "$@.tmp" ; mv "$@.tmp" "$@"
|
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: gen-ChangeLog gen-AUTHORS gen-tarball-version
|
||||||
dist-hook: assert-no-store-file-names
|
dist-hook: assert-no-store-file-names
|
||||||
dist-hook: doc-po-update
|
|
||||||
|
|
||||||
distcheck-hook: assert-binaries-available assert-final-inputs-self-contained
|
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:
|
# 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.
|
# 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.
|
# 3. Build the binary tarballs for that 'guix' package.
|
||||||
# 4. Update the 'guix' package again.
|
# 4. Update the 'guix' package again.
|
||||||
# 5. Build the installation images. The images will run 'guix'
|
# 5. Build the installation and VM images. The images will run 'guix'
|
||||||
# corresponding to 'vX.Y' + 1 commit, and they will install 'vX.Y'.
|
# 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
|
# This 'release' target takes care of everything and copies the resulting
|
||||||
# files to $(releasedir).
|
# files to $(releasedir).
|
||||||
#
|
#
|
||||||
# XXX: Depend on 'dist' rather than 'distcheck' to work around the Gettext
|
# XXX: Depend on 'dist' rather than 'distcheck' to work around the Gettext
|
||||||
# issue described at <https://savannah.gnu.org/bugs/index.php?51027>.
|
# issue described at <https://savannah.gnu.org/bugs/index.php?51027>.
|
||||||
release: dist-with-updated-version
|
release: dist-with-updated-version all
|
||||||
cd po; git checkout .
|
|
||||||
@if ! git diff-index --quiet HEAD; then \
|
@if ! git diff-index --quiet HEAD; then \
|
||||||
echo "There are uncommitted changes; stopping." >&2 ; \
|
echo "There are uncommitted changes; stopping." >&2 ; \
|
||||||
exit 1 ; \
|
exit 1 ; \
|
||||||
|
@ -853,21 +852,24 @@ release: dist-with-updated-version
|
||||||
$(MKDIR_P) "$(releasedir)"
|
$(MKDIR_P) "$(releasedir)"
|
||||||
rm -f "$(releasedir)"/*
|
rm -f "$(releasedir)"/*
|
||||||
mv $(SOURCE_TARBALLS) "$(releasedir)"
|
mv $(SOURCE_TARBALLS) "$(releasedir)"
|
||||||
|
# Bump the Guix package version and build it.
|
||||||
GUIX_ALLOW_ME_TO_USE_PRIVATE_COMMIT=yes \
|
GUIX_ALLOW_ME_TO_USE_PRIVATE_COMMIT=yes \
|
||||||
$(top_builddir)/pre-inst-env "$(GUILE)" \
|
$(top_builddir)/pre-inst-env "$(GUILE)" \
|
||||||
$(top_srcdir)/build-aux/update-guix-package.scm \
|
$(top_srcdir)/build-aux/update-guix-package.scm \
|
||||||
"`git rev-parse HEAD`" "$(PACKAGE_VERSION)"
|
"`git rev-parse HEAD`" "$(PACKAGE_VERSION)"
|
||||||
git add $(top_srcdir)/gnu/packages/package-management.scm
|
git add $(top_srcdir)/gnu/packages/package-management.scm
|
||||||
git commit -m "gnu: guix: Update to $(PACKAGE_VERSION)."
|
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)) \
|
$(call system_flags,$(SUPPORTED_SYSTEMS)) \
|
||||||
-v1 --no-grafts --fallback
|
-v1 --no-grafts --fallback
|
||||||
|
# Generate the binary release tarballs.
|
||||||
rm -f $(BINARY_TARBALLS)
|
rm -f $(BINARY_TARBALLS)
|
||||||
$(MAKE) $(BINARY_TARBALLS)
|
$(MAKE) $(BINARY_TARBALLS)
|
||||||
for system in $(SUPPORTED_SYSTEMS) ; do \
|
for system in $(SUPPORTED_SYSTEMS) ; do \
|
||||||
mv "guix-binary.$$system.tar.xz" \
|
mv "guix-binary.$$system.tar.xz" \
|
||||||
"$(releasedir)/guix-binary-$(PACKAGE_VERSION).$$system.tar.xz" ; \
|
"$(releasedir)/guix-binary-$(PACKAGE_VERSION).$$system.tar.xz" ; \
|
||||||
done
|
done
|
||||||
|
# Bump the Guix package version and build it (again).
|
||||||
GUIX_ALLOW_ME_TO_USE_PRIVATE_COMMIT=yes \
|
GUIX_ALLOW_ME_TO_USE_PRIVATE_COMMIT=yes \
|
||||||
$(top_builddir)/pre-inst-env "$(GUILE)" \
|
$(top_builddir)/pre-inst-env "$(GUILE)" \
|
||||||
$(top_srcdir)/build-aux/update-guix-package.scm \
|
$(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 \
|
$(top_builddir)/pre-inst-env guix build guix \
|
||||||
$(call system_flags,$(GUIX_SYSTEM_SUPPORTED_SYSTEMS)) \
|
$(call system_flags,$(GUIX_SYSTEM_SUPPORTED_SYSTEMS)) \
|
||||||
-v1 --no-grafts --fallback
|
-v1 --no-grafts --fallback
|
||||||
|
# Generate the ISO installation images.
|
||||||
for system in $(GUIX_SYSTEM_SUPPORTED_SYSTEMS) ; do \
|
for system in $(GUIX_SYSTEM_SUPPORTED_SYSTEMS) ; do \
|
||||||
image=`$(top_builddir)/pre-inst-env \
|
image=`$(top_builddir)/pre-inst-env \
|
||||||
guix system disk-image -t iso9660 \
|
guix system image -t iso9660 \
|
||||||
--label="GUIX_$${system}_$(VERSION)" \
|
--label="GUIX_$${system}_$(VERSION)" \
|
||||||
--system=$$system --fallback \
|
--system=$$system --fallback \
|
||||||
gnu/system/install.scm` ; \
|
gnu/system/install.scm` ; \
|
||||||
|
@ -887,13 +890,14 @@ release: dist-with-updated-version
|
||||||
echo "failed to produced Guix installation image for $$system" >&2 ; \
|
echo "failed to produced Guix installation image for $$system" >&2 ; \
|
||||||
exit 1 ; \
|
exit 1 ; \
|
||||||
fi ; \
|
fi ; \
|
||||||
xz < "$$image" > "$(releasedir)/$(GUIX_SYSTEM_IMAGE_BASE).$$system.iso.xz.tmp" ; \
|
cp "$$image" "$(releasedir)/$(GUIX_SYSTEM_IMAGE_BASE).$$system.iso.tmp" ; \
|
||||||
mv "$(releasedir)/$(GUIX_SYSTEM_IMAGE_BASE).$$system.iso.xz.tmp" \
|
mv "$(releasedir)/$(GUIX_SYSTEM_IMAGE_BASE).$$system.iso.tmp" \
|
||||||
"$(releasedir)/$(GUIX_SYSTEM_IMAGE_BASE).$$system.iso.xz" ; \
|
"$(releasedir)/$(GUIX_SYSTEM_IMAGE_BASE).$$system.iso" ; \
|
||||||
done
|
done
|
||||||
|
# Generate the VM images.
|
||||||
for system in $(GUIX_SYSTEM_VM_SYSTEMS) ; do \
|
for system in $(GUIX_SYSTEM_VM_SYSTEMS) ; do \
|
||||||
image=`$(top_builddir)/pre-inst-env \
|
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 \
|
--save-provenance \
|
||||||
--system=$$system --fallback \
|
--system=$$system --fallback \
|
||||||
gnu/system/examples/vm-image.tmpl` ; \
|
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 ; \
|
echo "failed to produced Guix VM image for $$system" >&2 ; \
|
||||||
exit 1 ; \
|
exit 1 ; \
|
||||||
fi ; \
|
fi ; \
|
||||||
xz < "$$image" > "$(releasedir)/$(GUIX_SYSTEM_VM_IMAGE_BASE).$$system.xz.tmp" ; \
|
cp "$$image" "$(releasedir)/$(GUIX_SYSTEM_VM_IMAGE_BASE).$$system.qcow2"; \
|
||||||
mv "$(releasedir)/$(GUIX_SYSTEM_VM_IMAGE_BASE).$$system.xz.tmp" \
|
|
||||||
"$(releasedir)/$(GUIX_SYSTEM_VM_IMAGE_BASE).$$system.xz" ; \
|
|
||||||
done
|
done
|
||||||
@echo
|
@echo
|
||||||
@echo "Congratulations! All the release files are now in $(releasedir)."
|
@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
|
#+TITLE: Guix NEWS – history of user-visible changes
|
||||||
#+STARTUP: content hidestars
|
#+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>
|
Copyright © 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
|
||||||
|
|
||||||
Copying and distribution of this file, with or without modification,
|
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.
|
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)
|
* Changes in 1.2.0 (since 1.1.0)
|
||||||
|
|
||||||
** Package management
|
** Package management
|
||||||
|
|
|
@ -95,7 +95,7 @@ (define (write-packages-added news-file old new)
|
||||||
(with-atomic-file-replacement news-file
|
(with-atomic-file-replacement news-file
|
||||||
(lambda (input output)
|
(lambda (input output)
|
||||||
(rewrite-org-section input output
|
(rewrite-org-section input output
|
||||||
(make-regexp "^(\\*+) (.*) new packages")
|
(make-regexp "^(\\*+).*new packages")
|
||||||
(lambda (match port)
|
(lambda (match port)
|
||||||
(let ((stars (match:substring match 1)))
|
(let ((stars (match:substring match 1)))
|
||||||
(format port
|
(format port
|
||||||
|
@ -141,7 +141,7 @@ (define important
|
||||||
(with-atomic-file-replacement news-file
|
(with-atomic-file-replacement news-file
|
||||||
(lambda (input output)
|
(lambda (input output)
|
||||||
(rewrite-org-section input output
|
(rewrite-org-section input output
|
||||||
(make-regexp "^(\\*+) (.*) package updates")
|
(make-regexp "^(\\*+).*package updates")
|
||||||
(lambda (match port)
|
(lambda (match port)
|
||||||
(let ((stars (match:substring match 1))
|
(let ((stars (match:substring match 1))
|
||||||
(lst (map (match-lambda
|
(lst (map (match-lambda
|
||||||
|
@ -166,16 +166,22 @@ (define (package-file version)
|
||||||
(string-append data-directory "/packages-"
|
(string-append data-directory "/packages-"
|
||||||
version ".txt"))
|
version ".txt"))
|
||||||
|
|
||||||
|
(define (package<? p1 p2)
|
||||||
|
(string<? (package-full-name p1) (package-full-name p2)))
|
||||||
|
|
||||||
(let-values (((previous-version new-version)
|
(let-values (((previous-version new-version)
|
||||||
(call-with-input-file news-file NEWS->versions)))
|
(call-with-input-file news-file NEWS->versions)))
|
||||||
(format (current-error-port) "Updating NEWS for ~a to ~a...~%"
|
(format (current-error-port) "Updating NEWS for ~a to ~a...~%"
|
||||||
previous-version new-version)
|
previous-version new-version)
|
||||||
(let* ((old (call-with-input-file (package-file previous-version)
|
(let* ((old (call-with-input-file (package-file previous-version)
|
||||||
read))
|
read))
|
||||||
(new (fold-packages (lambda (p r)
|
(all-packages/sorted (sort (fold-packages (lambda (p r)
|
||||||
(alist-cons (package-name p) (package-version p)
|
(cons p r))
|
||||||
r))
|
'())
|
||||||
'())))
|
package<?))
|
||||||
|
(new (map (lambda (p)
|
||||||
|
(cons (package-name p) (package-version p)))
|
||||||
|
all-packages/sorted)))
|
||||||
(call-with-output-file (package-file new-version)
|
(call-with-output-file (package-file new-version)
|
||||||
(lambda (port)
|
(lambda (port)
|
||||||
(pretty-print new port)))
|
(pretty-print new port)))
|
||||||
|
|
|
@ -21,7 +21,7 @@ dnl For the C++ code. This must be used early.
|
||||||
AC_USE_SYSTEM_EXTENSIONS
|
AC_USE_SYSTEM_EXTENSIONS
|
||||||
|
|
||||||
AM_GNU_GETTEXT([external])
|
AM_GNU_GETTEXT([external])
|
||||||
AM_GNU_GETTEXT_VERSION([0.18.1])
|
AM_GNU_GETTEXT_VERSION([0.19.1])
|
||||||
|
|
||||||
GUIX_SYSTEM_TYPE
|
GUIX_SYSTEM_TYPE
|
||||||
GUIX_ASSERT_SUPPORTED_SYSTEM
|
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.])
|
AC_MSG_ERROR([A recent Guile-Git could not be found; please install it.])
|
||||||
fi
|
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.
|
dnl Check for Guile-zlib.
|
||||||
GUIX_CHECK_GUILE_ZLIB
|
GUIX_CHECK_GUILE_ZLIB
|
||||||
if test "x$guix_cv_have_recent_guile_zlib" != "xyes"; then
|
if test "x$guix_cv_have_recent_guile_zlib" != "xyes"; then
|
||||||
|
|
|
@ -10,8 +10,8 @@
|
||||||
@include version.texi
|
@include version.texi
|
||||||
|
|
||||||
@c Identifier of the OpenPGP key used to sign tarballs and such.
|
@c Identifier of the OpenPGP key used to sign tarballs and such.
|
||||||
@set OPENPGP-SIGNING-KEY-ID 3CE464558A84FDC69DB40CFB090B11993D9AEBB5
|
@set OPENPGP-SIGNING-KEY-ID 27D586A4F8900854329FF09F1260E46482E63562
|
||||||
@set OPENPGP-SIGNING-KEY-URL https://sv.gnu.org/people/viewgpg.php?user_id=15145
|
@set OPENPGP-SIGNING-KEY-URL https://sv.gnu.org/people/viewgpg.php?user_id=127547
|
||||||
|
|
||||||
@c Base URL for downloads.
|
@c Base URL for downloads.
|
||||||
@set BASE-URL https://ftp.gnu.org/gnu/guix
|
@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
|
An ISO-9660 installation image that can be written to a USB stick or
|
||||||
burnt to a DVD can be downloaded from
|
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:
|
where you can replace @code{x86_64-linux} with one of:
|
||||||
|
|
||||||
@table @code
|
@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:
|
authenticity of the image against it, along these lines:
|
||||||
|
|
||||||
@example
|
@example
|
||||||
$ wget @value{BASE-URL}/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.xz.sig
|
$ gpg --verify guix-system-install-@value{VERSION}.x86_64-linux.iso.sig
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
If that command fails because you do not have the required public key,
|
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
|
@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
|
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},
|
its device name. Assuming that the USB stick is known as @file{/dev/sdX},
|
||||||
copy the image with:
|
copy the image with:
|
||||||
|
@ -2162,21 +2151,9 @@ sync
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
Access to @file{/dev/sdX} usually requires root privileges.
|
Access to @file{/dev/sdX} usually requires root privileges.
|
||||||
@end enumerate
|
|
||||||
|
|
||||||
@unnumberedsubsec Burning on a DVD
|
@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
|
Insert a blank DVD into your machine, and determine
|
||||||
its device name. Assuming that the DVD drive is known as @file{/dev/srX},
|
its device name. Assuming that the DVD drive is known as @file{/dev/srX},
|
||||||
copy the image with:
|
copy the image with:
|
||||||
|
@ -2186,7 +2163,6 @@ growisofs -dvd-compat -Z /dev/srX=guix-system-install-@value{VERSION}.x86_64-lin
|
||||||
@end example
|
@end example
|
||||||
|
|
||||||
Access to @file{/dev/srX} usually requires root privileges.
|
Access to @file{/dev/srX} usually requires root privileges.
|
||||||
@end enumerate
|
|
||||||
|
|
||||||
@unnumberedsubsec Booting
|
@unnumberedsubsec Booting
|
||||||
|
|
||||||
|
@ -33658,7 +33634,7 @@ Whether or not the droplet should be created with IPv6 networking.
|
||||||
@cindex virtual machine
|
@cindex virtual machine
|
||||||
To run Guix in a virtual machine (VM), one can use the pre-built Guix VM image
|
To run Guix in a virtual machine (VM), one can use the pre-built Guix VM image
|
||||||
distributed at
|
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
|
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
|
decompress with @command{xz -d}, and then you can pass it to an emulator such
|
||||||
as QEMU (see below for details).
|
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 © 2013 Andreas Enge <andreas@enge.fr>
|
||||||
# Copyright © 2016 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
|
# Copyright © 2016 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
|
||||||
# Copyright © 2016, 2018 Mathieu Lirzin <mthl@gnu.org>
|
# 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.
|
# This file is part of GNU Guix.
|
||||||
#
|
#
|
||||||
|
@ -21,6 +21,16 @@
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
# 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 \
|
info_TEXINFOS = %D%/guix.texi \
|
||||||
%D%/guix.de.texi \
|
%D%/guix.de.texi \
|
||||||
%D%/guix.es.texi \
|
%D%/guix.es.texi \
|
||||||
|
@ -70,33 +80,10 @@ OS_CONFIG_EXAMPLES_TEXI = \
|
||||||
%D%/os-config-desktop.texi \
|
%D%/os-config-desktop.texi \
|
||||||
%D%/os-config-lightweight-desktop.texi
|
%D%/os-config-lightweight-desktop.texi
|
||||||
|
|
||||||
# Do not forget to update these, when updating info_TEXINFOS
|
TRANSLATED_INFO = \
|
||||||
TRANSLATED_INFO = \
|
$(call lang_to_texinfo,$(MANUAL_LANGUAGES),guix) \
|
||||||
%D%/guix.de.texi \
|
$(call lang_to_texinfo,$(MANUAL_LANGUAGES),contributing) \
|
||||||
%D%/guix.es.texi \
|
$(call lang_to_texinfo,$(COOKBOOK_LANGUAGES),guix-cookbook)
|
||||||
%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
|
|
||||||
|
|
||||||
# Bundle this file so that makeinfo finds it in out-of-source-tree builds.
|
# Bundle this file so that makeinfo finds it in out-of-source-tree builds.
|
||||||
BUILT_SOURCES += $(OS_CONFIG_EXAMPLES_TEXI) $(TRANSLATED_INFO)
|
BUILT_SOURCES += $(OS_CONFIG_EXAMPLES_TEXI) $(TRANSLATED_INFO)
|
||||||
|
|
|
@ -9,6 +9,7 @@
|
||||||
# Copyright © 2020 Daniel Brooks <db48x@db48x.net>
|
# Copyright © 2020 Daniel Brooks <db48x@db48x.net>
|
||||||
# Copyright © 2021 Jakub Kądziołka <kuba@kadziolka.net>
|
# Copyright © 2021 Jakub Kądziołka <kuba@kadziolka.net>
|
||||||
# Copyright © 2021 Chris Marusich <cmmarusich@gmail.com>
|
# Copyright © 2021 Chris Marusich <cmmarusich@gmail.com>
|
||||||
|
# Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||||
#
|
#
|
||||||
# This file is part of GNU Guix.
|
# 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[15145]=3CE464558A84FDC69DB40CFB090B11993D9AEBB5 # ludo
|
||||||
GPG_SIGNING_KEYS[127547]=27D586A4F8900854329FF09F1260E46482E63562 # maxim
|
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
|
#+UTILITIES
|
||||||
|
|
||||||
|
@ -96,13 +92,25 @@ _debug()
|
||||||
fi
|
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()
|
chk_require()
|
||||||
{ # Check that every required command is available.
|
{ # Check that every required command is available.
|
||||||
declare -a warn
|
declare -a warn
|
||||||
local c
|
local c
|
||||||
|
|
||||||
_debug "--- [ $FUNCNAME ] ---"
|
_debug "--- [ ${FUNCNAME[0]} ] ---"
|
||||||
|
|
||||||
for c in "$@"; do
|
for c in "$@"; do
|
||||||
command -v "$c" &>/dev/null || warn+=("$c")
|
command -v "$c" &>/dev/null || warn+=("$c")
|
||||||
|
@ -117,7 +125,7 @@ chk_require()
|
||||||
|
|
||||||
chk_gpg_keyring()
|
chk_gpg_keyring()
|
||||||
{ # Check whether the Guix release signing public key is present.
|
{ # Check whether the Guix release signing public key is present.
|
||||||
_debug "--- [ $FUNCNAME ] ---"
|
_debug "--- [ ${FUNCNAME[0]} ] ---"
|
||||||
local user_id
|
local user_id
|
||||||
local gpg_key_id
|
local gpg_key_id
|
||||||
local exit_flag
|
local exit_flag
|
||||||
|
@ -127,26 +135,34 @@ chk_gpg_keyring()
|
||||||
# Without --dry-run this command will create a ~/.gnupg owned by root on
|
# Without --dry-run this command will create a ~/.gnupg owned by root on
|
||||||
# systems where gpg has never been used, causing errors and confusion.
|
# 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
|
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:"
|
if prompt_yes_no "${INF}The following OpenPGP public key is \
|
||||||
echo " wget \"https://sv.gnu.org/people/viewgpg.php?user_id=$user_id\" -qO - | sudo -i gpg --import -"
|
required to verify the Guix binary signature: $gpg_key_id.
|
||||||
exit_flag=yes
|
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
|
fi
|
||||||
done
|
done
|
||||||
test "$exit_flag" = yes && exit 1 || true
|
if [ "$exit_flag" = yes ]; then
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
chk_term()
|
chk_term()
|
||||||
{ # Check for ANSI terminal for color printing.
|
{ # Check for ANSI terminal for color printing.
|
||||||
local ansi_term
|
|
||||||
|
|
||||||
if [ -t 2 ]; then
|
if [ -t 2 ]; then
|
||||||
if [ "${TERM+set}" = 'set' ]; then
|
if [ "${TERM+set}" = 'set' ]; then
|
||||||
case "$TERM" in
|
case "$TERM" in
|
||||||
xterm*|rxvt*|urxvt*|linux*|vt*|eterm*|screen*)
|
xterm*|rxvt*|urxvt*|linux*|vt*|eterm*|screen*)
|
||||||
ansi_term=true
|
|
||||||
;;
|
;;
|
||||||
*)
|
*)
|
||||||
ansi_term=false
|
|
||||||
ERR="[ FAIL ] "
|
ERR="[ FAIL ] "
|
||||||
PAS="[ PASS ] "
|
PAS="[ PASS ] "
|
||||||
;;
|
;;
|
||||||
|
@ -243,7 +259,7 @@ guix_get_bin_list()
|
||||||
local latest_ver
|
local latest_ver
|
||||||
local default_ver
|
local default_ver
|
||||||
|
|
||||||
_debug "--- [ $FUNCNAME ] ---"
|
_debug "--- [ ${FUNCNAME[0]} ] ---"
|
||||||
|
|
||||||
# Filter only version and architecture
|
# Filter only version and architecture
|
||||||
bin_ver_ls=("$(wget -qO- "$gnu_url" \
|
bin_ver_ls=("$(wget -qO- "$gnu_url" \
|
||||||
|
@ -272,25 +288,25 @@ guix_get_bin()
|
||||||
local url="$1"
|
local url="$1"
|
||||||
local bin_ver="$2"
|
local bin_ver="$2"
|
||||||
local dl_path="$3"
|
local dl_path="$3"
|
||||||
|
local wget_args=()
|
||||||
|
|
||||||
_debug "--- [ $FUNCNAME ] ---"
|
_debug "--- [ ${FUNCNAME[0]} ] ---"
|
||||||
|
|
||||||
_msg "${INF}Downloading Guix release archive"
|
_msg "${INF}Downloading Guix release archive"
|
||||||
|
|
||||||
wget --help | grep -q '\--show-progress' && \
|
wget --help | grep -q '\--show-progress' \
|
||||||
_PROGRESS_OPT="-q --show-progress" || _PROGRESS_OPT=""
|
&& wget_args=("-q" "--show-progress")
|
||||||
wget $_PROGRESS_OPT -P "$dl_path" "${url}/${bin_ver}.tar.xz" "${url}/${bin_ver}.tar.xz.sig"
|
|
||||||
|
|
||||||
if [[ "$?" -eq 0 ]]; then
|
if wget "${wget_args[@]}" -P "$dl_path" \
|
||||||
_msg "${PAS}download completed."
|
"${url}/${bin_ver}.tar.xz" "${url}/${bin_ver}.tar.xz.sig"; then
|
||||||
|
_msg "${PAS}download completed."
|
||||||
else
|
else
|
||||||
_err "${ERR}could not download ${url}/${bin_ver}.tar.xz."
|
_err "${ERR}could not download ${url}/${bin_ver}.tar.xz."
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
fi
|
||||||
|
|
||||||
pushd "${dl_path}" >/dev/null
|
pushd "${dl_path}" >/dev/null
|
||||||
gpg --verify "${bin_ver}.tar.xz.sig" >/dev/null 2>&1
|
if gpg --verify "${bin_ver}.tar.xz.sig" >/dev/null 2>&1; then
|
||||||
if [[ "$?" -eq 0 ]]; then
|
|
||||||
_msg "${PAS}Signature is valid."
|
_msg "${PAS}Signature is valid."
|
||||||
popd >/dev/null
|
popd >/dev/null
|
||||||
else
|
else
|
||||||
|
@ -304,45 +320,44 @@ sys_create_store()
|
||||||
local pkg="$1"
|
local pkg="$1"
|
||||||
local tmp_path="$2"
|
local tmp_path="$2"
|
||||||
|
|
||||||
_debug "--- [ $FUNCNAME ] ---"
|
_debug "--- [ ${FUNCNAME[0]} ] ---"
|
||||||
|
|
||||||
cd "$tmp_path"
|
|
||||||
tar --extract \
|
|
||||||
--file "$pkg" &&
|
|
||||||
_msg "${PAS}unpacked archive"
|
|
||||||
|
|
||||||
if [[ -e "/var/guix" || -e "/gnu" ]]; then
|
if [[ -e "/var/guix" || -e "/gnu" ]]; then
|
||||||
_err "${ERR}A previous Guix installation was found. Refusing to overwrite."
|
_err "${ERR}A previous Guix installation was found. Refusing to overwrite."
|
||||||
exit 1
|
exit 1
|
||||||
else
|
|
||||||
_msg "${INF}Installing /var/guix and /gnu..."
|
|
||||||
mv "${tmp_path}/var/guix" /var/
|
|
||||||
mv "${tmp_path}/gnu" /
|
|
||||||
fi
|
fi
|
||||||
|
|
||||||
_msg "${INF}Linking the root user's profile"
|
cd "$tmp_path"
|
||||||
mkdir -p "${ROOT_HOME}/.config/guix"
|
tar --extract --file "$pkg" && _msg "${PAS}unpacked archive"
|
||||||
ln -sf /var/guix/profiles/per-user/root/current-guix \
|
|
||||||
"${ROOT_HOME}/.config/guix/current"
|
|
||||||
|
|
||||||
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"
|
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()
|
sys_create_build_user()
|
||||||
{ # Create the group and user accounts for build users.
|
{ # 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"
|
_msg "${INF}group guixbuild exists"
|
||||||
else
|
else
|
||||||
groupadd --system guixbuild
|
groupadd --system guixbuild
|
||||||
_msg "${PAS}group <guixbuild> created"
|
_msg "${PAS}group <guixbuild> created"
|
||||||
fi
|
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"
|
_msg "${INF}group kvm exists and build users will be added to it"
|
||||||
local KVMGROUP=,kvm
|
local KVMGROUP=,kvm
|
||||||
fi
|
fi
|
||||||
|
@ -371,7 +386,7 @@ sys_enable_guix_daemon()
|
||||||
local local_bin
|
local local_bin
|
||||||
local var_guix
|
local var_guix
|
||||||
|
|
||||||
_debug "--- [ $FUNCNAME ] ---"
|
_debug "--- [ ${FUNCNAME[0]} ] ---"
|
||||||
|
|
||||||
info_path="/usr/local/share/info"
|
info_path="/usr/local/share/info"
|
||||||
local_bin="/usr/local/bin"
|
local_bin="/usr/local/bin"
|
||||||
|
@ -380,7 +395,7 @@ sys_enable_guix_daemon()
|
||||||
case "$INIT_SYS" in
|
case "$INIT_SYS" in
|
||||||
upstart)
|
upstart)
|
||||||
{ initctl reload-configuration;
|
{ 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/ &&
|
/etc/init/ &&
|
||||||
start guix-daemon; } &&
|
start guix-daemon; } &&
|
||||||
_msg "${PAS}enabled Guix daemon via upstart"
|
_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.
|
{ # systemd .mount units must be named after the target directory.
|
||||||
# Here we assume a hard-coded name of /gnu/store.
|
# Here we assume a hard-coded name of /gnu/store.
|
||||||
# XXX Work around <https://issues.guix.gnu.org/41356> until next release.
|
# 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
|
if [ -f "~root/.config/guix/current/lib/systemd/system/gnu-store.mount" ]; then
|
||||||
cp "${ROOT_HOME}/.config/guix/current/lib/systemd/system/gnu-store.mount" \
|
cp "~root/.config/guix/current/lib/systemd/system/gnu-store.mount" \
|
||||||
/etc/systemd/system/;
|
/etc/systemd/system/;
|
||||||
chmod 664 /etc/systemd/system/gnu-store.mount;
|
chmod 664 /etc/systemd/system/gnu-store.mount;
|
||||||
systemctl daemon-reload &&
|
systemctl daemon-reload &&
|
||||||
systemctl enable gnu-store.mount;
|
systemctl enable gnu-store.mount;
|
||||||
fi
|
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/;
|
/etc/systemd/system/;
|
||||||
chmod 664 /etc/systemd/system/guix-daemon.service;
|
chmod 664 /etc/systemd/system/guix-daemon.service;
|
||||||
|
|
||||||
|
@ -418,7 +433,7 @@ sys_enable_guix_daemon()
|
||||||
;;
|
;;
|
||||||
sysv-init)
|
sysv-init)
|
||||||
{ mkdir -p /etc/init.d;
|
{ 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;
|
/etc/init.d/guix-daemon;
|
||||||
chmod 775 /etc/init.d/guix-daemon;
|
chmod 775 /etc/init.d/guix-daemon;
|
||||||
|
|
||||||
|
@ -429,7 +444,7 @@ sys_enable_guix_daemon()
|
||||||
;;
|
;;
|
||||||
openrc)
|
openrc)
|
||||||
{ mkdir -p /etc/init.d;
|
{ 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;
|
/etc/init.d/guix-daemon;
|
||||||
chmod 775 /etc/init.d/guix-daemon;
|
chmod 775 /etc/init.d/guix-daemon;
|
||||||
|
|
||||||
|
@ -439,7 +454,7 @@ sys_enable_guix_daemon()
|
||||||
;;
|
;;
|
||||||
NA|*)
|
NA|*)
|
||||||
_msg "${ERR}unsupported init system; run the daemon manually:"
|
_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
|
esac
|
||||||
|
|
||||||
|
@ -456,21 +471,18 @@ sys_enable_guix_daemon()
|
||||||
|
|
||||||
sys_authorize_build_farms()
|
sys_authorize_build_farms()
|
||||||
{ # authorize the public key of the build farm
|
{ # authorize the public key of the build farm
|
||||||
while true; do
|
if prompt_yes_no "Permit downloading pre-built package binaries from the \
|
||||||
read -p "Permit downloading pre-built package binaries from the project's build farm? (yes/no) " yn
|
project's build farm? (yes/no) "; then
|
||||||
case $yn in
|
guix archive --authorize \
|
||||||
[Yy]*) guix archive --authorize < "${ROOT_HOME}/.config/guix/current/share/guix/ci.guix.gnu.org.pub" &&
|
< "~root/.config/guix/current/share/guix/ci.guix.gnu.org.pub" \
|
||||||
_msg "${PAS}Authorized public key for ci.guix.gnu.org";
|
&& _msg "${PAS}Authorized public key for ci.guix.gnu.org"
|
||||||
break;;
|
else
|
||||||
[Nn]*) _msg "${INF}Skipped authorizing build farm public keys"
|
_msg "${INF}Skipped authorizing build farm public keys"
|
||||||
break;;
|
fi
|
||||||
*) _msg "Please answer yes or no.";
|
|
||||||
esac
|
|
||||||
done
|
|
||||||
}
|
}
|
||||||
|
|
||||||
sys_create_init_profile()
|
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!
|
# This will not take effect until the next shell or desktop session!
|
||||||
[ -d "/etc/profile.d" ] || mkdir /etc/profile.d # Just in case
|
[ -d "/etc/profile.d" ] || mkdir /etc/profile.d # Just in case
|
||||||
cat <<"EOF" > /etc/profile.d/guix.sh
|
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/
|
https://www.gnu.org/software/guix/
|
||||||
EOF
|
EOF
|
||||||
echo -n "Press return to continue..."
|
echo -n "Press return to continue..."
|
||||||
read -r ANSWER
|
read -r
|
||||||
}
|
}
|
||||||
|
|
||||||
main()
|
main()
|
||||||
|
@ -574,7 +586,7 @@ main()
|
||||||
if ! [[ $GUIX_BINARY_FILE_NAME =~ $ARCH_OS ]]; then
|
if ! [[ $GUIX_BINARY_FILE_NAME =~ $ARCH_OS ]]; then
|
||||||
_err "$ARCH_OS not in ${GUIX_BINARY_FILE_NAME}; aborting"
|
_err "$ARCH_OS not in ${GUIX_BINARY_FILE_NAME}; aborting"
|
||||||
fi
|
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")
|
GUIX_BINARY_FILE_NAME=$(realpath "$GUIX_BINARY_FILE_NAME")
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
;;; GNU Guix --- Functional package management for GNU
|
;;; 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>
|
;;; Copyright © 2020 Jan (janneke) Nieuwenhuizen <janneke@gnu.org>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
|
@ -49,6 +49,14 @@ (define %base-packages
|
||||||
'("bootstrap-tarballs" "gcc-toolchain" "nss-certs"
|
'("bootstrap-tarballs" "gcc-toolchain" "nss-certs"
|
||||||
"openssh" "emacs" "vim" "python" "guile" "guix")))
|
"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
|
(define %base-packages/hurd
|
||||||
;; XXX: For now we are less demanding of "i586-gnu".
|
;; XXX: For now we are less demanding of "i586-gnu".
|
||||||
(map specification->package
|
(map specification->package
|
||||||
|
@ -100,9 +108,18 @@ (define %base-manifest
|
||||||
(manifest
|
(manifest
|
||||||
(append-map (lambda (system)
|
(append-map (lambda (system)
|
||||||
(map (cut package->manifest-entry* <> system)
|
(map (cut package->manifest-entry* <> system)
|
||||||
(if (string=? system "i586-gnu")
|
(cond ((string=? system "i586-gnu")
|
||||||
%base-packages/hurd
|
%base-packages/hurd)
|
||||||
%base-packages)))
|
((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)))
|
%cuirass-supported-systems)))
|
||||||
|
|
||||||
(define %system-manifest
|
(define %system-manifest
|
||||||
|
|
|
@ -131,9 +131,9 @@ (define-public guix
|
||||||
;; Latest version of Guix, which may or may not correspond to a release.
|
;; Latest version of Guix, which may or may not correspond to a release.
|
||||||
;; Note: the 'update-guix-package.scm' script expects this definition to
|
;; Note: the 'update-guix-package.scm' script expects this definition to
|
||||||
;; start precisely like this.
|
;; start precisely like this.
|
||||||
(let ((version "1.2.0")
|
(let ((version "1.3.0")
|
||||||
(commit "4dff6ecde85eec473ab231cf75f51e98e8aca1e9")
|
(commit "771b866c55e5f992df60f6c32f5fdd78b64e17f6")
|
||||||
(revision 21))
|
(revision 1))
|
||||||
(package
|
(package
|
||||||
(name "guix")
|
(name "guix")
|
||||||
|
|
||||||
|
@ -149,7 +149,7 @@ (define-public guix
|
||||||
(commit commit)))
|
(commit commit)))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"1n16j7rb4n4pjmp8ck5g206rphmzxii2mbyz1nk4qk70zc3mwszq"))
|
"0w8w05w6v3lc6478vfw67jzn0hbd9nsncpx9i9ch1lck53r8vs44"))
|
||||||
(file-name (string-append "guix-" version "-checkout"))))
|
(file-name (string-append "guix-" version "-checkout"))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(arguments
|
(arguments
|
||||||
|
|
|
@ -265,7 +265,7 @@ (define-public spice
|
||||||
(define-public spice-vdagent
|
(define-public spice-vdagent
|
||||||
(package
|
(package
|
||||||
(name "spice-vdagent")
|
(name "spice-vdagent")
|
||||||
(version "0.20.0")
|
(version "0.21.0")
|
||||||
(source (origin
|
(source (origin
|
||||||
(method url-fetch)
|
(method url-fetch)
|
||||||
(uri (string-append
|
(uri (string-append
|
||||||
|
@ -273,11 +273,14 @@ (define-public spice-vdagent
|
||||||
"spice-vdagent-" version ".tar.bz2"))
|
"spice-vdagent-" version ".tar.bz2"))
|
||||||
(sha256
|
(sha256
|
||||||
(base32
|
(base32
|
||||||
"0n9k2kna2gd1zi6jv45zsp2jlv439nz5l5jjijirxqaycwi74srf"))))
|
"0n8jlc1pv6mkry161y656b1nk9hhhminjq6nymzmmyjl7k95ymzx"))))
|
||||||
(build-system gnu-build-system)
|
(build-system gnu-build-system)
|
||||||
(arguments
|
(arguments
|
||||||
`(#:configure-flags
|
`(#:configure-flags
|
||||||
'("--localstatedir=/var")
|
'("--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
|
#:phases
|
||||||
(modify-phases %standard-phases
|
(modify-phases %standard-phases
|
||||||
(add-after 'unpack 'patch-makefile.in
|
(add-after 'unpack 'patch-makefile.in
|
||||||
|
@ -285,19 +288,27 @@ (define-public spice-vdagent
|
||||||
(substitute* "Makefile.in"
|
(substitute* "Makefile.in"
|
||||||
(((string-append "\\$\\(mkdir_p\\) \\$\\(DESTDIR\\)"
|
(((string-append "\\$\\(mkdir_p\\) \\$\\(DESTDIR\\)"
|
||||||
"\\$\\(localstatedir\\)/run/spice-vdagentd"))
|
"\\$\\(localstatedir\\)/run/spice-vdagentd"))
|
||||||
"-$(mkdir_p) $(DESTDIR)$(localstatedir)/run/spice-vdagentd"))
|
"-$(mkdir_p) $(DESTDIR)$(localstatedir)/run/spice-vdagentd"))))
|
||||||
#t))
|
|
||||||
(add-after 'unpack 'patch-spice-vdagent.desktop
|
(add-after 'unpack 'patch-spice-vdagent.desktop
|
||||||
(lambda* (#:key outputs #:allow-other-keys)
|
(lambda* (#:key outputs #:allow-other-keys)
|
||||||
(substitute* "data/spice-vdagent.desktop"
|
(substitute* "data/spice-vdagent.desktop"
|
||||||
(("Exec=/usr/bin/spice-vdagent")
|
(("Exec=/usr/bin/spice-vdagent")
|
||||||
(string-append "Exec=" (assoc-ref outputs "out")
|
(string-append "Exec=" (assoc-ref outputs "out")
|
||||||
"/bin/spice-vdagent")))
|
"/bin/spice-vdagent")))))
|
||||||
#t)))))
|
(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
|
(inputs
|
||||||
`(("alsa-lib" ,alsa-lib)
|
`(("alsa-lib" ,alsa-lib)
|
||||||
("dbus" ,dbus)
|
("dbus" ,dbus)
|
||||||
("glib" ,glib)
|
("glib" ,glib)
|
||||||
|
("gtk+" ,gtk+)
|
||||||
("libdrm" ,libdrm)
|
("libdrm" ,libdrm)
|
||||||
("libpciaccess" ,libpciaccess)
|
("libpciaccess" ,libpciaccess)
|
||||||
("libx11" ,libx11)
|
("libx11" ,libx11)
|
||||||
|
@ -307,7 +318,8 @@ (define-public spice-vdagent
|
||||||
("libxrandr" ,libxrandr)
|
("libxrandr" ,libxrandr)
|
||||||
("spice-protocol" ,spice-protocol)))
|
("spice-protocol" ,spice-protocol)))
|
||||||
(native-inputs
|
(native-inputs
|
||||||
`(("pkg-config" ,pkg-config)))
|
`(("pkg-config" ,pkg-config)
|
||||||
|
("procps" ,procps))) ;tests use 'ps'
|
||||||
(synopsis "Spice agent for Linux")
|
(synopsis "Spice agent for Linux")
|
||||||
(description "Spice-vdagent enables sharing the clipboard and guest display
|
(description "Spice-vdagent enables sharing the clipboard and guest display
|
||||||
resolution scaling on graphical console window resize.")
|
resolution scaling on graphical console window resize.")
|
||||||
|
|
|
@ -34,41 +34,42 @@ (define-record-type* <spice-vdagent-configuration>
|
||||||
(spice-vdagent spice-vdagent-configuration-spice-vdagent
|
(spice-vdagent spice-vdagent-configuration-spice-vdagent
|
||||||
(default 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)
|
(define (spice-vdagent-shepherd-service config)
|
||||||
"Return a <shepherd-service> for spice-vdagentd with CONFIG."
|
"Return a <shepherd-service> for spice-vdagentd with CONFIG."
|
||||||
(define spice-vdagent (spice-vdagent-configuration-spice-vdagent config))
|
(define spice-vdagent (spice-vdagent-configuration-spice-vdagent config))
|
||||||
|
|
||||||
(define spice-vdagentd-command
|
(define spice-vdagentd-command
|
||||||
(list
|
(list
|
||||||
(file-append spice-vdagent "/sbin/spice-vdagentd")
|
(file-append spice-vdagent "/sbin/spice-vdagentd")
|
||||||
"-x"))
|
"-x"))
|
||||||
|
|
||||||
(list
|
(list
|
||||||
(shepherd-service
|
(shepherd-service
|
||||||
(documentation "Spice vdagentd service")
|
(documentation "Spice vdagentd service")
|
||||||
(requirement '(udev))
|
(requirement '(dbus-system))
|
||||||
(provision '(spice-vdagentd))
|
(provision '(spice-vdagentd))
|
||||||
(start #~(make-forkexec-constructor '#$spice-vdagentd-command))
|
(start #~(lambda args
|
||||||
(stop #~(make-kill-destructor)))))
|
;; 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
|
(define spice-vdagent-profile
|
||||||
(compose list spice-vdagent-configuration-spice-vdagent))
|
(compose list spice-vdagent-configuration-spice-vdagent))
|
||||||
|
|
||||||
(define spice-vdagent-service-type
|
(define spice-vdagent-service-type
|
||||||
(service-type (name 'spice-vdagent)
|
(service-type
|
||||||
(extensions
|
(name 'spice-vdagent)
|
||||||
(list (service-extension shepherd-root-service-type
|
(default-value (spice-vdagent-configuration))
|
||||||
spice-vdagent-shepherd-service)
|
(extensions
|
||||||
(service-extension activation-service-type
|
(list (service-extension shepherd-root-service-type
|
||||||
spice-vdagent-activation)
|
spice-vdagent-shepherd-service)
|
||||||
(service-extension profile-service-type
|
(service-extension profile-service-type
|
||||||
spice-vdagent-profile)))))
|
spice-vdagent-profile)))))
|
||||||
|
|
||||||
(define* (spice-vdagent-service
|
(define* (spice-vdagent-service
|
||||||
#:optional (config (spice-vdagent-configuration)))
|
#:optional (config (spice-vdagent-configuration)))
|
||||||
|
|
|
@ -63,6 +63,7 @@ (define-module (gnu system)
|
||||||
#:use-module (gnu packages package-management)
|
#:use-module (gnu packages package-management)
|
||||||
#:use-module (gnu packages pciutils)
|
#:use-module (gnu packages pciutils)
|
||||||
#:use-module (gnu packages texinfo)
|
#:use-module (gnu packages texinfo)
|
||||||
|
#:use-module (gnu packages wget)
|
||||||
#:use-module (gnu packages zile)
|
#:use-module (gnu packages zile)
|
||||||
#:use-module (gnu services)
|
#:use-module (gnu services)
|
||||||
#:use-module (gnu services shepherd)
|
#:use-module (gnu services shepherd)
|
||||||
|
@ -790,6 +791,7 @@ (define %base-packages-networking
|
||||||
;; Default set of networking packages.
|
;; Default set of networking packages.
|
||||||
(list inetutils isc-dhcp
|
(list inetutils isc-dhcp
|
||||||
iproute
|
iproute
|
||||||
|
wget
|
||||||
;; wireless-tools is deprecated in favor of iw, but it's still what
|
;; wireless-tools is deprecated in favor of iw, but it's still what
|
||||||
;; many people are familiar with, so keep it around.
|
;; many people are familiar with, so keep it around.
|
||||||
iw wireless-tools))
|
iw wireless-tools))
|
||||||
|
|
|
@ -5,7 +5,7 @@
|
||||||
;;
|
;;
|
||||||
|
|
||||||
(use-modules (gnu) (guix) (srfi srfi-1))
|
(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
|
(use-package-modules bootloaders certs fonts nvi
|
||||||
package-management wget xorg)
|
package-management wget xorg)
|
||||||
|
|
||||||
|
@ -24,6 +24,18 @@ Run '\x1b[1;37minfo guix\x1b[0m' to browse documentation.
|
||||||
accounts.\x1b[0m
|
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
|
(operating-system
|
||||||
(host-name "gnu")
|
(host-name "gnu")
|
||||||
(timezone "Etc/UTC")
|
(timezone "Etc/UTC")
|
||||||
|
@ -75,11 +87,23 @@ root ALL=(ALL) ALL
|
||||||
(default-user "guest")
|
(default-user "guest")
|
||||||
(xorg-configuration
|
(xorg-configuration
|
||||||
(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)))))
|
(keyboard-layout keyboard-layout)))))
|
||||||
|
|
||||||
;; Uncomment the line below to add an SSH server.
|
;; Uncomment the line below to add an SSH server.
|
||||||
;;(service openssh-service-type)
|
;;(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.
|
;; Use the DHCP client service rather than NetworkManager.
|
||||||
(service dhcp-client-service-type))
|
(service dhcp-client-service-type))
|
||||||
|
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
;;; GNU Guix --- Functional package management for GNU
|
;;; 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>
|
;;; Copyright © 2018 Mark H Weaver <mhw@netris.org>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
|
@ -148,7 +148,7 @@ (define* (locale-directory locales
|
||||||
(define %default-locale-libcs
|
(define %default-locale-libcs
|
||||||
;; The libcs for which we build locales by default.
|
;; The libcs for which we build locales by default.
|
||||||
;; List the previous and current libc to ease transition.
|
;; List the previous and current libc to ease transition.
|
||||||
(list glibc-2.29 glibc))
|
(list glibc))
|
||||||
|
|
||||||
(define %default-locale-definitions
|
(define %default-locale-definitions
|
||||||
;; Arbitrary set of locales that are built by default. They are here mostly
|
;; Arbitrary set of locales that are built by default. They are here mostly
|
||||||
|
|
|
@ -122,15 +122,24 @@ (define current-channels
|
||||||
(mlambda ()
|
(mlambda ()
|
||||||
"Return the list of channels currently available, including the 'guix'
|
"Return the list of channels currently available, including the 'guix'
|
||||||
channel. Return the empty list if this information is missing."
|
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)
|
(match (current-profile-entries)
|
||||||
(()
|
(()
|
||||||
;; As a fallback, if we're not running from a profile, use 'guix'
|
;; As a fallback, if we're not running from a profile, use 'guix'
|
||||||
;; channel metadata from (guix config).
|
;; channel metadata from (guix config).
|
||||||
(match (channel-metadata)
|
(build-time-metadata))
|
||||||
(#f '())
|
|
||||||
(sexp (or (and=> (sexp->channel sexp 'guix) list) '()))))
|
|
||||||
(entries
|
(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)
|
(define (package-path-entries)
|
||||||
"Return two values: the list of package path entries to be added to the
|
"Return two values: the list of package path entries to be added to the
|
||||||
|
|
|
@ -301,4 +301,11 @@ (define-command (guix-describe . args)
|
||||||
(channels
|
(channels
|
||||||
(display-profile-info #f format channels))))
|
(display-profile-info #f format channels))))
|
||||||
(profile
|
(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"
|
"Project-Id-Version: guix manual checkout\n"
|
||||||
"Report-Msgid-Bugs-To: bug-guix@gnu.org\n"
|
"Report-Msgid-Bugs-To: bug-guix@gnu.org\n"
|
||||||
"POT-Creation-Date: 2021-01-25 00:00+0100\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"
|
"Last-Translator: Soheil Khanalipur <soheil@disroot.org>\n"
|
||||||
"Language-Team: Persian <https://translate.fedoraproject.org/projects/guix/documentation-cookbook/fa/>\n"
|
"Language-Team: Persian <https://translate.fedoraproject.org/projects/guix/documentation-cookbook/fa/>\n"
|
||||||
"Language: fa\n"
|
"Language: fa\n"
|
||||||
|
@ -15,7 +15,7 @@ msgstr ""
|
||||||
"Content-Type: text/plain; charset=UTF-8\n"
|
"Content-Type: text/plain; charset=UTF-8\n"
|
||||||
"Content-Transfer-Encoding: 8bit\n"
|
"Content-Transfer-Encoding: 8bit\n"
|
||||||
"Plural-Forms: nplurals=2; plural=n > 1;\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
|
#. type: Plain text
|
||||||
#: guix-git/doc/guix-cookbook.texi:7
|
#: guix-git/doc/guix-cookbook.texi:7
|
||||||
|
@ -154,7 +154,7 @@ msgstr ""
|
||||||
#. type: menuentry
|
#. type: menuentry
|
||||||
#: guix-git/doc/guix-cookbook.texi:74
|
#: guix-git/doc/guix-cookbook.texi:74
|
||||||
msgid "Thanks!"
|
msgid "Thanks!"
|
||||||
msgstr "سپاس"
|
msgstr "سِپاس!"
|
||||||
|
|
||||||
#. type: appendix
|
#. type: appendix
|
||||||
#: guix-git/doc/guix-cookbook.texi:74 guix-git/doc/guix-cookbook.texi:2941
|
#: 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
|
#: guix-git/doc/guix-cookbook.texi:48
|
||||||
#, no-wrap
|
#, no-wrap
|
||||||
msgid "Top"
|
msgid "Top"
|
||||||
msgstr "Top"
|
msgstr "정상"
|
||||||
|
|
||||||
#. type: Plain text
|
#. type: Plain text
|
||||||
#: guix-git/doc/guix-cookbook.texi:55
|
#: 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
|
# GNU Guix --- Functional package management for GNU
|
||||||
# Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
|
# Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
|
||||||
|
# Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
|
||||||
#
|
#
|
||||||
# This file is part of GNU Guix.
|
# This file is part of GNU Guix.
|
||||||
#
|
#
|
||||||
|
@ -16,7 +17,7 @@
|
||||||
# You should have received a copy of the GNU General Public License
|
# You should have received a copy of the GNU General Public License
|
||||||
# along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
|
# 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.es.po \
|
||||||
%D%/guix-manual.de.po \
|
%D%/guix-manual.de.po \
|
||||||
%D%/guix-manual.fa.po \
|
%D%/guix-manual.fa.po \
|
||||||
|
@ -28,11 +29,11 @@ DOC_PO_FILES= \
|
||||||
%D%/guix-manual.sk.po \
|
%D%/guix-manual.sk.po \
|
||||||
%D%/guix-manual.zh_CN.po
|
%D%/guix-manual.zh_CN.po
|
||||||
|
|
||||||
DOC_COOKBOOK_PO_FILES= \
|
DOC_COOKBOOK_PO_FILES = \
|
||||||
%D%/guix-cookbook.de.po \
|
%D%/guix-cookbook.de.po \
|
||||||
%D%/guix-cookbook.fa.po \
|
%D%/guix-cookbook.fa.po \
|
||||||
%D%/guix-cookbook.fr.po \
|
%D%/guix-cookbook.fr.po \
|
||||||
%D%/guix-cookbook.ko.po \
|
%D%/guix-cookbook.ko.po \
|
||||||
%D%/guix-cookbook.zh_Hans.po
|
%D%/guix-cookbook.zh_Hans.po
|
||||||
|
|
||||||
EXTRA_DIST = \
|
EXTRA_DIST = \
|
||||||
|
@ -41,77 +42,18 @@ EXTRA_DIST = \
|
||||||
$(DOC_PO_FILES) \
|
$(DOC_PO_FILES) \
|
||||||
$(DOC_COOKBOOK_PO_FILES)
|
$(DOC_COOKBOOK_PO_FILES)
|
||||||
|
|
||||||
POT_OPTIONS = --package-name "guix manual" --package-version "$(VERSION)" \
|
POT_OPTIONS = \
|
||||||
--copyright-holder "the authors of Guix (msgids)" \
|
--package-name "guix manual" --package-version "$(VERSION)" \
|
||||||
--msgid-bugs-address "bug-guix@gnu.org"
|
--copyright-holder "the authors of Guix (msgids)" \
|
||||||
|
--msgid-bugs-address "bug-guix@gnu.org"
|
||||||
|
|
||||||
doc-po-update-%:
|
%D%/%.pot: $(srcdir)/doc/%.texi
|
||||||
@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
|
|
||||||
$(AM_V_PO4A)$(PO4A_UPDATEPO) -M UTF-8 -f texinfo -m "$<" \
|
$(AM_V_PO4A)$(PO4A_UPDATEPO) -M UTF-8 -f texinfo -m "$<" \
|
||||||
-p "$$(echo $@ | sed 's|-update||')" $(POT_OPTIONS)
|
-p "$@" $(POT_OPTIONS) && \
|
||||||
@touch "$$(echo $@ | sed 's|-update||')"
|
touch $@
|
||||||
|
|
||||||
TMP_POT_FILES = contributing.pot guix.pot
|
%D%/guix-manual.pot: %D%/guix.pot %D%/contributing.pot
|
||||||
|
msgcat $^ > $@
|
||||||
|
|
||||||
doc-pot-update:
|
doc-pot-update: %D%/guix-manual.pot %D%/guix-cookbook.pot
|
||||||
for f in $(TMP_POT_FILES); do \
|
.PHONY: doc-pot-update
|
||||||
$(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
|
|
||||||
|
|
|
@ -12,9 +12,11 @@ hu
|
||||||
it
|
it
|
||||||
ko
|
ko
|
||||||
nl
|
nl
|
||||||
|
oc
|
||||||
pl
|
pl
|
||||||
pt_BR
|
pt_BR
|
||||||
ru
|
ru
|
||||||
|
si
|
||||||
sk
|
sk
|
||||||
sr
|
sr
|
||||||
sv
|
sv
|
||||||
|
|
|
@ -26,3 +26,8 @@ EXTRA_LOCALE_CATEGORIES =
|
||||||
# "make distcheck -j4".
|
# "make distcheck -j4".
|
||||||
# See <https://lists.gnu.org/archive/html/bug-gettext/2014-08/msg00005.html>.
|
# See <https://lists.gnu.org/archive/html/bug-gettext/2014-08/msg00005.html>.
|
||||||
DIST_DEPENDS_ON_UPDATE_PO = no
|
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
|
fr
|
||||||
hu
|
hu
|
||||||
ko
|
ko
|
||||||
|
nl
|
||||||
|
oc
|
||||||
pl
|
pl
|
||||||
pt_BR
|
pt_BR
|
||||||
sk
|
sk
|
||||||
|
|
|
@ -22,3 +22,8 @@ EXTRA_LOCALE_CATEGORIES =
|
||||||
# "make distcheck -j4".
|
# "make distcheck -j4".
|
||||||
# See <https://lists.gnu.org/archive/html/bug-gettext/2014-08/msg00005.html>.
|
# See <https://lists.gnu.org/archive/html/bug-gettext/2014-08/msg00005.html>.
|
||||||
DIST_DEPENDS_ON_UPDATE_PO = no
|
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