Merge branch 'version-1.3.0'
commit
b7cbca221f
|
@ -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 @@ paragraph."
|
||||||
(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 @@ paragraph."
|
||||||
(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 @@ paragraph."
|
||||||
(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 @@ TARGET."
|
||||||
'("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 @@ TARGET."
|
||||||
(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 @@
|
||||||
;; 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 @@
|
||||||
(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 @@ Internet and from a wide variety of machine architectures.")
|
||||||
(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 @@ Internet and from a wide variety of machine architectures.")
|
||||||
"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 @@ Internet and from a wide variety of machine architectures.")
|
||||||
(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 @@ Internet and from a wide variety of machine architectures.")
|
||||||
("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 @@
|
||||||
(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 @@
|
||||||
#: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 @@ of PROVENANCE-SERVICE-TYPE to its services."
|
||||||
;; 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 @@ data format changes between libc versions."
|
||||||
(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 @@ lives in, or the empty list if this is not applicable."
|
||||||
(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 @@ text. The hyperlink links to a web view of COMMIT, when available."
|
||||||
(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
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
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
File diff suppressed because it is too large
Load Diff
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
Reference in New Issue