1
0
forked from tribes/guix

Compare commits

...

59 Commits

Author SHA1 Message Date
Mathieu Othacehe aa34d4d28d ci: Update to the last version.
* gnu/ci.scm: Update to the master version.
2021-06-14 08:58:41 +02:00
Leo Famulari 6110751b53 nls: Mention Libera Chat in the translations.
* po/doc/guix-manual.de.po, po/doc/guix-manual.es.po, po/doc/guix-manual.fa.po,
po/doc/guix-manual.fr.po, po/doc/guix-manual.it.po, po/doc/guix-manual.ko.po,
po/doc/guix-manual.pt_BR.po, po/doc/guix-manual.ru.po, po/doc/guix-manual.sk.po,
po/doc/guix-manual.zh_CN.po: Point users to Libera Chat.
2021-05-20 16:57:35 -04:00
Tobias Geerinckx-Rice a8509d8d43 The #guix channel is hosted by Libera Chat.
* README (Contact): Update network name.
* ROADMAP: Likewise.
* doc/contributing.texi (Contributing): Likewise.
* doc/guix.texi (After System Installation): Likewise.
2021-05-20 16:57:28 -04:00
Leo Famulari 0961807915 doc: Clarify further the distinction between the web-based manuals.
As discussed on #guix IRC, several of us struggle to reliably choose the
right option based on the old labels:

https://logs.guix.gnu.org/guix/2021-04-20.log#182137

* doc/build.scm (html-manual-indexes): Try to distinguish between the
two options more clearly.
2021-05-12 15:00:06 -04:00
Maxim Cournoyer fb5d04d363 gnu: guix: Update to 771b866. 2021-05-11 16:27:17 -04:00
Maxim Cournoyer 771b866c55 gnu: guix: Update to 1.3.0. 2021-05-11 14:15:04 -04:00
Maxim Cournoyer a0178d34f5 nls: Update translations. 2021-05-11 09:17:00 -04:00
Maxim Cournoyer 21fcced608 nls: Update translations. 2021-05-10 22:34:43 -04:00
Maxim Cournoyer abff6f0fac .gitignore: Ignore .mo files.
* .gitignore: Ignore files matching the *.mo pattern.
2021-05-10 22:33:08 -04:00
Maxim Cournoyer 63d26e81ee nls: New nl and oc translations for the 'packages' component.
* po/packages/nl.po: New file.
* po/packages/oc.po: Likewise.
* po/packages/LINGUAS: Register them.
2021-05-10 22:27:53 -04:00
Maxim Cournoyer b507a0e38c nls: New oc and si translations for the 'guix' component.
* po/guix/oc.po: New file.
* po/guix/si.po: Likewise.
* po/guix/LINGUAS: Register them.
2021-05-10 22:25:36 -04:00
Maxim Cournoyer 80dc6ad4a8 Update NEWS. 2021-05-10 13:48:30 -04:00
Maxim Cournoyer ed2d4d52dd maint: update-NEWS: Sort packages prior writing to the data file.
* build-aux/update-NEWS.scm (main): Sort packages.
2021-05-10 13:48:02 -04:00
Leo Famulari 7418a20074 Update NEWS. 2021-05-10 11:21:02 -04:00
Maxim Cournoyer 945ad48cd8 system: vm-image.tmpl: Add a crutch to allow refreshing the resolution.
Inspired by
https://github.com/jollheef/appvm/commit/1270b2e209bc002e69bbe6351ad5b04b7facfcc8.
The price to pay is about 5% of a CPU core usage in the guest in the worst
scenario.

* gnu/system/examples/vm-image.tmpl
(auto-update-resolution-crutch): New mcron job.
[services]: Extend the mcron-service with it.
2021-05-10 10:18:19 -04:00
Ludovic Courtès 3a0fcaa0fe Update NEWS. 2021-05-10 11:42:03 +02:00
Ludovic Courtès 8a154c2915 describe: Gracefully handle profiles that lack provenance info.
Fixes <https://bugs.gnu.org/48313>.

Previously, 'current-channels' would return the empty list when
'current-profile' is true but the profile lacks provenance info.

* guix/describe.scm (current-channels)[build-time-metadata]: New
procedure.  Call it when 'manifest-entry-channel' returns #f for all of
ENTRIES.
* guix/scripts/describe.scm (guix-describe): When PROFILE is true, pass
third argument to 'display-profile-info'.
2021-05-09 23:46:46 +02:00
Ludovic Courtès 9562a2eb61 diagnostics, ui: Adjust to 'read-error' and 'syntax-error' in Guile 3.0.6.
* guix/diagnostics.scm (source-properties->location): Add clause for
vectors.
* guix/ui.scm (report-load-error): Tweak 'read-error' handling for 3.0.6.
* tests/guix-package.sh: Relax regexp for the "unbound variable"
diagnostic check.
* tests/guix-system.sh: Adjust "missing closing paren" check for 3.0.6.
* tests/records.scm (location-alist): New procedure.
("define-record-type* & wrong field specifier")
("define-record-type* & wrong field specifier, identifier")
("define-record-type* & duplicate initializers"): Use it.
2021-05-09 23:45:36 +02:00
Maxim Cournoyer dde0291476 gnu: guix: Update to 566982b. 2021-05-08 00:33:14 -04:00
Maxim Cournoyer 566982bc71 gnu: guix: Update to 1.3.0rc2. 2021-05-08 00:29:22 -04:00
Maxim Cournoyer 7a65beff0f system: Add wget to %base-packages-networking.
Fixes <https://issues.guix.gnu.org/43530>.

Wget is typically included with most GNU/Linux distributions.  It adds about
~3 MiB to the system size.

* gnu/system.scm (%base-packages-networking): Add the wget package.
2021-05-07 17:20:41 -04:00
Maxim Cournoyer 3ab48ed6cd gnu: system: Add SPICE capability to the VM image.
* gnu/system/examples/vm-image.tmpl (services)
[spice-vdagent-service-type]: Add service.
[slim-service-type] <xorg-configuration>: Add the xf86-video-qxl module.
2021-05-06 16:51:49 -04:00
Maxim Cournoyer b39c4e18f2 services: spice-vdagent: Clear the socket file prior to starting.
This fixes the following issue where spice-vdagent would fail to start if the
spice-vdagent-sock socket file already existed:

  spice-vdagentd: Fatal could not create the server socket
  /run/spice-vdagentd/spice-vdagent-sock: Error binding to address: Address
  already in use

The requirement is also modified to depend on dbus-system, a cue taken from
upstream's own systemd service file (see 'data/spice-vdagentd.service' in the
sources).

* gnu/services/spice.scm (spice-vdagent-activation): Delete procedure.
(spice-vdagent-shepherd-service): Fix indentation.
[requirement]: Replace udev by dbus-system.
[start]: Ensure the spice-vdagentd run-time directory exists and that the
spice-vdagent-sock socket file does *not* exist before forking the daemon.
2021-05-06 16:51:49 -04:00
Maxim Cournoyer a33afba4f1 gnu: spice-vdagent: Update to 0.21.0 and enable GTK+ support.
* gnu/packages/spice.scm (spice-vdagent): Update to 0.21.0.
Remove trailing #t.
[make-flags]: New argument.
[phases]{fix-test-termination}: New phase.
[inputs]: Add gtk+.
[native-inputs]{procps}: New input.
2021-05-06 16:51:49 -04:00
Ludovic Courtès 626e619590 swh: Adjust for compatibility with Guile 2.2's (web client).
Guile <= 2.2.7 did not support #:verify-certificate? so work around it.

* guix/swh.scm (http-get*, http-post*) [! guile-3]: Add variant for
Guile 2.2.
2021-05-05 23:44:48 +02:00
Ludovic Courtès 76c4646beb gnu: guile2.2-guix: Add missing dependencies.
Reported by Maxime Devos <maximedevos@telenet.be>.

* gnu/packages/package-management.scm (guile2.2-guix)[inputs]
[propagated-inputs]: Add GUILE2.2-LIB, GUILE2.2-ZLIB, and
GUILE2.2-LZLIB.
2021-05-05 23:44:39 +02:00
Ludovic Courtès ca3780835f gnu: guile-lzlib: Add Guile 2.2 variant.
* gnu/packages/guile.scm (guile2.2-lzlib): New variable.
2021-05-05 23:44:33 +02:00
Ludovic Courtès 3a3e62cc56 gnu: guile-zlib: Add Guile 2.2 variant.
* gnu/packages/guile.scm (guile2.2-zlib): New variable.
2021-05-05 23:44:28 +02:00
Maxim Cournoyer 6b0704339d services: Fix the spice-vdagent service.
* gnu/services/spice.scm (spice-vdagent-activation): Update runtime directory
from /var/run/spice-vdagentd to /run/spice-vdagentd.
(spice-vdagent-service-type): Specify a default value and fix indentation.
2021-05-05 16:31:06 -04:00
Maxim Cournoyer b1b41a23f4 build: Do not compress the (already compressed) VM qcow2 images.
The qcow2 format supports compression, and the qcow2 type supported by 'guix
system image' produces compressed qcow2 images.

* Makefile.am (release): Do not re-compress the qcow2 VM images with xz.
* doc/guix.texi (Running Guix in a VM): Adjust VM image URL.
2021-05-05 16:31:06 -04:00
Maxim Cournoyer 6e71e71952 maint: Remove a workaround in Makefile.am.
This workaround was made obsolete by commit a23789bbbd, which prevented the PO
files from being spuriously updated upon running 'make'.

* Makefile.am (release) <git checkout>: Remove command.
2021-05-05 16:31:06 -04:00
Maxim Cournoyer 214b77b5e7 .gitignore: Ignore .tarball-ignore.
This file can be useful to fix a version string when experimenting with 'make
release'.

* .gitignore: Add a pattern to ignore .tarball-version.
2021-05-05 16:31:05 -04:00
Maxim Cournoyer ace6723946 doc: Update the OpenPGP key used to sign the release.
It was discussed on guix-devel that the manual only needs to have correct
instructions for the latest release.

* doc/guix.texi (OPENPGP-SIGNING-KEY-ID): Update to my public OpenPGP key.
(OPENPGP-SIGNING-KEY-URL): Adjust URL.
2021-05-05 11:26:26 -04:00
Maxim Cournoyer f40b0fa8e6 Revert "doc: Update to cover for an additional OpenPGP signing key."
This reverts commit b9fb13b284.  Per discussions
simply updating OPENPGP-SIGNING-KEY-ID and OPENPGP-SIGNING-KEY-URL will be
enough.
2021-05-05 11:25:24 -04:00
Maxim Cournoyer 74009c4cf0 guix-install.sh: Exit early if Guix is already installed.
* etc/guix-install.sh (sys_create_store): Move the check & exit before The
Guix binary archive is unpacked.  Re-indent tar extraction command.
2021-05-05 11:01:07 -04:00
Maxim Cournoyer 5b0ce3393b guix-install.sh: Propose automatically fetching OpenPGP keys.
Via, for example, yes | ./guix-install.sh.

* etc/guix-install.sh (prompt_yes_no): New procedure.
(chk_gpg_keyring, sys_authorize_build_farms): Use it.
2021-05-05 11:01:07 -04:00
Maxim Cournoyer e61fe664a4 guix-install.sh: Please the shellcheck linter.
* etc/guix-install.sh <FUNCNAME>: Explicitly refer to the first item of the
FUNCNAME array.
(ROOT_HOME): Replace variable by ~root directly; manually expanding it via
echo was not necessary.
(chk_gpg_keyring): Use an if branch for the exit to avoid a warning about
expression precedence.
(chk_term) <ansi_term>: Remove unused variable.
(guix_get_bin) <wget, gpg>: Test the commands directly.  Use an array for the
wget arguments, which can then be properly expanded.
(sys_create_store): Disable SC1090 for the source command, as we don't care
about following the sourced script.
<_msg>: Reuse the GUIX_PROFILE variable in the message.
(sys_create_build_user) <getent>: Test the command directly.
2021-05-05 11:01:06 -04:00
Ludovic Courtès af66a9510f gnu: guix: Phases refer to #:system, #:target, and #:native-inputs.
* gnu/packages/package-management.scm (guix)[arguments]: In
'copy-bootstrap-guile' and 'wrap-program' phases, refer to #:system,
 #:native-inputs, and #:target instead of unquoting (%current-system)
and (%current-target-system).
2021-05-05 12:08:28 +02:00
Ludovic Courtès c47f3fc135 gnu: guix: Avoid Bash wrapper.
The Bash wrapper created by 'wrap-program' creates an extra
indirection and may annoyingly emit locale warnings:

  /gnu/store/…-bash-minimal-5.0.16/bin/bash: warning: setlocale: LC_ALL: cannot change locale (wtf)

This warning would typically show up when running Guix, as produced by
'guix pack guix', on a foreign distro, annihilating efforts made in
1d4ab335b2 and
8a973abc6f.

* gnu/packages/package-management.scm (guix)[arguments]: In
'wrap-program' phase, remove 'string-join' call for PATH and GOPATH.
Replace 'wrap-program' call with a 'substitute*' form.  Remove (when
target ...) form.
[inputs]: Remove "bash-minimal" added in commit
38b9af7c92 and no longer needed.
2021-05-05 12:08:17 +02:00
Ludovic Courtès 72b7ea416b gnu: guix: Add run-time dependency on Guile-Lib.
This is a followup to 02e2e093e8, which
added Guile-Lib as an input but did not add it to the wrapper's search
path.

* gnu/packages/package-management.scm (guix)[arguments]: In
'wrap-program' phase, add GUILE-LIB to DEPS.
2021-05-05 12:08:13 +02:00
Ludovic Courtès b37ab28401 Update NEWS. 2021-05-04 16:57:05 +02:00
Ludovic Courtès 2e4808465d locale: Remove glibc 2.29 from '%default-locale-libcs'.
Having 2.29 is most likely no longer justified.  Removing it reduces the
closure size returned by:

  guix size $(guix system build gnu/system/install.scm)

from 1.6G to 1.5G.

* gnu/system/locale.scm (%default-locale-libcs): Remove GLIBC-2.29.
2021-05-04 14:19:11 +02:00
Maxim Cournoyer 0f583f60f8 doc: Update to cover for an additional OpenPGP signing key.
The upcoming 1.3.0 release will be signed with my OpenPGP key; subsequent
releases may also be.

* doc/guix.texi (OPENPGP-SIGNING-KEY-ID, OPENPGP-SIGNING-KEY-URL): Rename to...
(OPENPGP-SIGNING-KEY-ID-1, OPENPGP-SIGNING-KEY-URL-1): ... these,
respectively.
(OPENPGP-SIGNING-KEY-ID-2, OPENPGP-SIGNING-KEY-URL-2): New variables.
(Binary Installation): Adjust to cover for the new key.
(USB Stick and DVD Installation): Likewise.
(Invoking guix refresh): Adjust accordingly.
2021-05-03 23:14:13 -04:00
Ludovic Courtès 82c0f34c7e maint: Do not xz-compress ISO images.
The xz-compressed image is 23% smaller than the original ISO image (with
built-in zlib compression), but the extra decompression step is
unconventional and often a hindrance for users.  See discussion at
<https://lists.gnu.org/archive/html/guix-devel/2021-04/msg00497.html>.

* Makefile.am (release): Do not compress ISO images.
* doc/guix.texi (USB Stick and DVD Installation): Remove ".xz" suffix
from URL and file name.
(Copying to a USB Stick, Burning on a DVD): Remove introductory words,
@enumerate, and first item.

Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2021-05-03 22:41:36 -04:00
Julien Lepiller 66072a00d7 nls: Guard against the list of translated Texinfo files becoming stale.
This change is so that the list of translated Texinfo files remain in sync
with the list of supported (translated) languages.

* doc/local.mk (MANUAL_LANGUAGES, COOKBOOK_LANGUAGES): New variables.
(lang_to_texinfos): New function.
(TRANSLATED_INFO): Use it to construct the list of files.

Modified-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2021-05-03 22:41:35 -04:00
Maxim Cournoyer 10cf742cbc doc: Update the URL of the system VM image.
This is a follow up to commit ebf5d77eab, which added the qcow2 file extension
to the VM image file name.

* doc/guix.texi (Running Guix in a VM): Update URL.
2021-05-03 09:49:53 -04:00
Maxim Cournoyer f13049f3a8 nls: Remove the doc-po-update target.
As discussed with Julien Lepiller on IRC, updating the PO files is not useful.
This change removes the target and associated rules that allowed updating
them.  This has the benefit of not having the PO files updated automatically
when generating the .pot files, which was causing spurious changes under the
po sub-directory.

* po/doc/local.mk (make-update-po-files-rule): Remove function and its uses.
(doc-po-update): Remove target.
2021-05-03 09:29:45 -04:00
Maxim Cournoyer f995f710e8 build: Replace the doc-po-update prerequisite by doc-pot-update.
What is really required for the dist target is the presence of the
auto-generated .pot files; updating the PO files is not necessary nor
desirable (it causes spurious changes in the tree).

* Makefile.am (dist) <doc-po-update>: Replace prerequisite with...
<doc-pot-update>: ... this one.
2021-05-03 09:29:44 -04:00
Julien Lepiller a23789bbbd nls: Do not update po files on first make invocation.
We need to update the minimal gettext version to take advantage of new
features.  Before this patch, the first make invocation would modify
po/guix and po/packages po files, and we advised to run `git checkout
po` to clean the changes.

* configure.ac (AM_GNU_GETTEXT_VERSION): Update to 0.19.1.
* po/guix/Makevars: Set PO_DEPENDS_ON_POT to no.
* po/packages/Makevars: Set PO_DEPENDS_ON_POT to no.

Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2021-05-03 09:29:44 -04:00
Julien Lepiller 283d4960a4 Makefile: Reimplement download-po target.
The weblate API rate limit is very close to the number of files we need
to download.  The previous implementation did not add new translations.

* Makefile.am (download-po): Update target.
(make-download-po-rule, make-check-po-rule): Remove functions.
2021-05-03 09:29:44 -04:00
Brendan Tildesley ce5026b9f4 gnu: xfce4-settings: Add gsettings-desktop-schemas.
* gnu/packages/xfce.scm (xfce4-settings):[propagated-inputs]: Add
gsettings-desktop-schemas. This makes it appear in the system profile
via the xfce service. This fixes a bug where changing icon theme causes
xfce4-appearance-settings to crash with the error:

GLib-GIO-ERROR **: 15:41:45.828: Settings schema 'org.gnome.desktop.interface' is not installed
Trace/breakpoint trap

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-05-01 17:41:09 +02:00
Ludovic Courtès 78789cb6e2 gnu: openjdk: Disallow references to the JDK used for build.
This ensures JDKs don't unintentionally keep references to the one used
to build them, as reported at <https://issues.guix.gnu.org/31719#7> and
fixed by 97a43db8b4.

* gnu/packages/java.scm (icedtea-8)[arguments]: Add #:disallowed-references.
(openjdk9)[arguments]: Likewise.
(openjdk10)[arguments]: Likewise.
(openjdk11)[arguments]: Likewise.
2021-05-01 17:12:28 +02:00
Ludovic Courtès 668384d160 gnu: openjdk: Avoid non-top-level 'use-modules'.
* gnu/packages/java.scm (icedtea-8, openjdk9, openjdk11)[arguments]:
Replace non-top-level 'use-modules' by '@'.
2021-05-01 17:12:24 +02:00
Carlo Zancanaro 522a48a228 gnu: openjdk: Fix library substitution when libraries aren't found.
* gnu/packages/java.scm (icedtea-8, openjdk9, openjdk11)[arguments]:
Change 'find-library' to always return a string.  Change 'find-library'
callers to use 'string-append' rather than 'format'.  Starting from
97a43db8b4, 'find-library' could return #f
and JNI substitutions would emit a literal "#f".

Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2021-05-01 17:12:21 +02:00
Carlo Zancanaro 92b02d0c18 gnu: openjdk: Clean up runtime dependencies between Java versions.
* gnu/packages/java.scm (icedtea-8, openjdk9, openjdk11): Do not consider
icedtea/openjdk input paths when rewriting JNI libraries.

Signed-off-by: Andreas Enge <andreas@enge.fr>
2021-05-01 17:12:15 +02:00
Maxim Cournoyer 185709221d guix-install.sh: Add support for more than one signing key.
The forthcoming 1.3.0 release will be signed with my personal GnuPG key; the
installation script need to tell users how fetch it.

* etc/guix-install.sh (OPENPGP_SIGNING_KEY_ID): Remove variable.
(GPG_SIGNING_KEYS): New associative array.
(chk_gpg_keyring): Process all the keys contained in the above array.
(main) <GUIX_BINARY_FILE_NAME>: Double quote variable.
2021-05-01 01:03:18 -04:00
Maxim Cournoyer 0084f0054f build: Correct a mistake in the guix-manual.pot rule.
This is a follow-up to commit 0d353b06ec.

* po/doc/local.mk: Fix function name in comment.
(%D%/guix-manual.pot): Refer to *all* the prerequisites via the $^ special
variable rather than $<, which only refers to the first one.

Reported-by: Julien Lepiller <julien@lepiller.eu>
2021-04-30 18:03:10 -04:00
Maxim Cournoyer 9bf205e5a0 gnu: guix: Update to 6fd7f16. 2021-04-29 21:18:56 -04:00
Maxim Cournoyer 6fd7f161d7 gnu: guix: Update to 1.3.0rc1. 2021-04-29 17:38:02 -04:00
83 changed files with 176590 additions and 123638 deletions
+2
View File
@@ -1,6 +1,7 @@
*.eps
*.go
*.log
*.mo
*.pdf
*.png
*.tar.xz
@@ -147,6 +148,7 @@ stamp-h[0-9]
tmp
/doc/os-config-lightweight-desktop.texi
/nix/scripts/download
/.tarball-version
/.version
/doc/stamp-*
/gnu/packages/bootstrap
+30 -77
View File
@@ -740,9 +740,9 @@ guix-binary.%.tar.xz:
cp "$$tarball" "$@.tmp" ; mv "$@.tmp" "$@"
# The dependency on doc-po-update is to generate the .pot files, which are not
# checked in.
dist: doc-po-update
# The dependency on doc-pot-update is to generate the .pot files, which are
# not checked in.
dist: doc-pot-update
dist-hook: gen-ChangeLog gen-AUTHORS gen-tarball-version
dist-hook: assert-no-store-file-names
@@ -840,7 +840,6 @@ system_flags = $(foreach system,$(1),-s $(system))
# XXX: Depend on 'dist' rather than 'distcheck' to work around the Gettext
# issue described at <https://savannah.gnu.org/bugs/index.php?51027>.
release: dist-with-updated-version all
cd po; git checkout .
@if ! git diff-index --quiet HEAD; then \
echo "There are uncommitted changes; stopping." >&2 ; \
exit 1 ; \
@@ -886,9 +885,9 @@ release: dist-with-updated-version all
echo "failed to produced Guix installation image for $$system" >&2 ; \
exit 1 ; \
fi ; \
xz < "$$image" > "$(releasedir)/$(GUIX_SYSTEM_IMAGE_BASE).$$system.iso.xz.tmp" ; \
mv "$(releasedir)/$(GUIX_SYSTEM_IMAGE_BASE).$$system.iso.xz.tmp" \
"$(releasedir)/$(GUIX_SYSTEM_IMAGE_BASE).$$system.iso.xz" ; \
cp "$$image" "$(releasedir)/$(GUIX_SYSTEM_IMAGE_BASE).$$system.iso.tmp" ; \
mv "$(releasedir)/$(GUIX_SYSTEM_IMAGE_BASE).$$system.iso.tmp" \
"$(releasedir)/$(GUIX_SYSTEM_IMAGE_BASE).$$system.iso" ; \
done
# Generate the VM images.
for system in $(GUIX_SYSTEM_VM_SYSTEMS) ; do \
@@ -901,9 +900,7 @@ release: dist-with-updated-version all
echo "failed to produced Guix VM image for $$system" >&2 ; \
exit 1 ; \
fi ; \
xz < "$$image" > "$(releasedir)/$(GUIX_SYSTEM_VM_IMAGE_BASE).$$system.qcow2.xz.tmp" ; \
mv "$(releasedir)/$(GUIX_SYSTEM_VM_IMAGE_BASE).$$system.qcow2.xz.tmp" \
"$(releasedir)/$(GUIX_SYSTEM_VM_IMAGE_BASE).$$system.qcow2.xz" ; \
cp "$$image" "$(releasedir)/$(GUIX_SYSTEM_VM_IMAGE_BASE).$$system.qcow2"; \
done
@echo
@echo "Congratulations! All the release files are now in $(releasedir)."
@@ -971,76 +968,32 @@ cuirass-jobs: $(GOBJECTS)
# Downloading up-to-date PO files.
# make-download-po-rule DOMAIN DIRECTORY [FILE-NAME-PREFIX]
define make-download-po-rule
WEBLATE_REPO = https://framagit.org/tyreunom/guix-translations
download-po.$(1):
if [ -f "$(top_srcdir)/$(2)/LINGUAS" ]; then \
LINGUAS="`grep -v '^[[:blank:]]*#' < $(top_srcdir)/$(2)/LINGUAS`" ; \
else \
LINGUAS="`(cd $(top_srcdir)/$(2); \
for i in *.po; do echo $$$$i; done) | cut -d . -f 2`" ; \
fi ; \
for lang in $$$$LINGUAS; do \
if wget -nv -O "$(top_srcdir)/$(2)/$(3)$$$$lang.po.tmp" \
"https://translate.fedoraproject.org/api/translations/guix/$(1)/$$$$lang/file/" ; \
then \
msgfilter --no-wrap -i "$(top_srcdir)/$(2)/$(3)$$$$lang.po.tmp" \
cat > "$(top_srcdir)/$(2)/$(3)$$$$lang.po.tmp2" ; \
rm "$(top_srcdir)/$(2)/$(3)$$$$lang.po.tmp" ; \
mv "$(top_srcdir)/$(2)/$(3)$$$$lang.po"{.tmp2,} ; \
else \
rm "$(top_srcdir)/$(2)/$(3)$$$$lang.po.tmp" ; \
fi ; \
done
.PHONY: download-po.$(1)
endef
# Checking po files for issues. This is useful to run after downloading new
# po files.
# make-check-po-rule DOMAIN DIRECTORY [FILE-NAME-PREFIX]
define make-check-po-rule
check-po.$(1):
if [ -f "$(top_srcdir)/$(2)/LINGUAS" ]; then \
LINGUAS="`grep -v '^[[:blank:]]*#' < $(top_srcdir)/$(2)/LINGUAS`" ; \
else \
LINGUAS="`(cd $(top_srcdir)/$(2); \
for i in *.po; do echo $$$$i; done) | cut -d . -f 2`" ; \
fi ; \
for lang in $$$$LINGUAS; do \
if [ -f "$(top_srcdir)/$(2)/$(3)$$$$lang.po" ]; \
then \
if ! msgfmt -c "$(top_srcdir)/$(2)/$(3)$$$$lang.po" ; \
then \
exit 1 ; \
fi ; \
fi ; \
done
.PHONY: check-po.$(1)
endef
$(eval $(call make-download-po-rule,documentation-cookbook,po/doc,guix-cookbook.))
$(eval $(call make-download-po-rule,documentation-manual,po/doc,guix-manual.))
$(eval $(call make-download-po-rule,guix,po/guix))
$(eval $(call make-download-po-rule,packages,po/packages))
$(eval $(call make-check-po-rule,documentation-cookbook,po/doc,guix-cookbook.))
$(eval $(call make-check-po-rule,documentation-manual,po/doc,guix-manual.))
$(eval $(call make-check-po-rule,guix,po/guix))
$(eval $(call make-check-po-rule,packages,po/packages))
download-po: $(foreach domain,guix packages documentation-manual documentation-cookbook,download-po.$(domain))
# Shallow clone the Git repository behind Weblate and copy files from it if
# they contain at least one translation, and they are well-formed (Scheme
# format only), warn otherwise. Copied files are converted to a canonical
# form.
download-po:
dir=$$(mktemp -d); \
git clone --depth 1 "$(WEBLATE_REPO)" "$$dir/translations"; \
for domain in po/doc po/guix po/packages; do \
for po in "$$dir/translations/$$domain"/*.po; do \
translated=$$(LANG=en_US.UTF-8 msgfmt --statistics "$$po" 2>&1 | cut -f1 -d' '); \
target=$$(basename "$$po"); \
target="$$domain/$$target"; \
if msgfmt -c "$$po" && [ "$$translated" != "0" ]; then \
msgfilter --no-wrap -i "$$po" cat > "$$po".tmp; \
mv "$$po".tmp "$$target"; \
echo "copied $$target."; \
else \
echo "WARN: $$target ($$translated translated messages) was not added/updated."; \
fi; \
done; \
done; \
rm -rf "$$dir"
.PHONY: download-po
check-po: $(foreach domain,guix packages documentation-manual documentation-cookbook,check-po.$(domain))
.PHONY: check-po
## -------------- ##
## Silent rules. ##
## -------------- ##
+132 -1
View File
@@ -2,7 +2,7 @@
#+TITLE: Guix NEWS history of user-visible changes
#+STARTUP: content hidestars
Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
Copyright © 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
Copyright © 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
Copying and distribution of this file, with or without modification,
@@ -11,6 +11,137 @@ Copyright © 2016, 2017, 2018 Ricardo Wurmus <rekado@elephly.net>
Please send Guix bug reports to bug-guix@gnu.org.
* Changes in 1.3.0 (since 1.2.0)
** Package management
*** POWER9 (powerpc64le-linux) is now supported as a technology preview
*** New --export-manifest and --export-channels options of guix package
*** New --profile option for guix environment
*** New --discover option of guix-daemon, for local substitute discovery
*** New --advertise option of guix publish
*** New --with-patch and --with-latest package transformation options
*** guix system image supersedes the disk-image and vm-image sub-commands
*** --verbosity=1 no longer displays download URLs
*** guix publish -C now supports zstd compression via Guile-zstd
*** guix-daemon now supports zstd substitutes, which decompress faster
*** New guix import go command, to import Go packages
*** guix import opam now supports Coq packages and has a --repo option
*** guix import crate now honors semantic versioning (“semver”)
*** guix import nix has been removed
*** New updaters (see guix refresh): sourceforge and generic-html
*** Substitute installation has been optimized
*** guix commands suggest alternative sub-commands or options upon typos
*** Offloading no longer requires guile to be in $PATH on build machines
*** GUIX_EXTENSIONS_PATH is honored when looking for extensions such as GWL
*** New --format option for guix processes
*** guix upgrade can now be passed several regexps
** Distribution
*** The Guix System demonstration VM now supports the SPICE protocol
*** The installation script can now run in a fully automated manner
*** qemu-binfmt-service-type now relies on statically-linked QEMU
*** sysctl-service-type enables Linux protected hardlinks/symlinks by default
*** %base-services now includes a default sysctl-service-type instance
*** Linux Logical Volumne Manager (LVM) now supported, via lvm-device-mapping
*** guix system init has been optimized
*** guix system warns when users/groups appear more than once
*** guix system image -t rock64-raw produces images for Rock64 devices
*** herd discover guix-daemon on turns on substitute server discovery
*** Default initrd now supports bcachefs
*** CUPS service includes brlaser extension by default
*** “lp” group is no longer included in %base-groups
*** New --graph-backend option for guix system {extension,shepherd}-graph
*** New services
agate, cuirass-remote-worker, ipfs, keepalived, laminar, radicale, syncthing,
transmission-daemon, wireguard, xorg-server
*** 2009 new packages
*** 3100 package updates
Noteworthy updates:
emacs 27.2, gcc-toolchain 10.3.0, ghc 8.8.3, glibc 2.31, gnome 3.34.5,
gnupg 2.2.27, go 1.14.15, guile 3.0.5, icecat 78.10.0-guix0-preview1,
icedtea 3.7.0, inkscape 1.0.2, julia 1.5.3, libreoffice 6.4.7.2,
linux-libre 5.11.15, ocaml 4.11.1, octave 6.2.0, openjdk 14.0,
python 3.8.2, racket 8.0, rust 1.51.0, r 4.0.4, sbcl 2.1.3, xfce 4.16.0,
xorg-server 1.20.10
** Programming interfaces
*** New channel-with-substitutes-available procedure in (guix channels)
*** New modules (guix substitutes), (guix narinfo), and (guix avahi)
*** <image> records can be passed to guix system image
*** New (guix ipfs) module to interact with an IPFS gateway
** Noteworthy bug fixes
*** Risk of local privilege escalation via guix-daemon fixed
(<https://issues.guix.gnu.org/47229>, CVE-2021-27851)
*** Setuid programs on Guix System are no longer setgid root
(<https://issues.guix.gnu.org/46395>)
*** Risk of local privilege escalation during reconfigure fixed
(<https://issues.guix.gnu.org/47584>)
*** Grafting recognizes UTF-16 and UTF-32 store references
(<https://issues.guix.gnu.org/33848>)
*** (guix git) honors HTTP/HTTPS proxy settings for Git submodules
(<https://issues.guix.gnu.org/44593>)
*** Fix guix substitute crash when interleaving lzip and gzip
(<https://issues.guix.gnu.org/46967>)
*** Fix GnuTLS memory corruption when used from Guile
(<https://issues.guix.gnu.org/46330>)
*** Update GnuTLS to 3.6.15, addressing a time-dependent test failure
(<https://issues.guix.gnu.org/44559>)
*** Booted system is fully protected from garbage collection
(<https://issues.guix.gnu.org/46767>)
*** Add MSDOS disk label support on UEFI systems
(<https://issues.guix.gnu.org/47889>)
*** Installers kmscon no longer uses up 100% CPU
(<https://issues.guix.gnu.org/39341>)
*** Git checkouts can be updated to the remotes default HEAD
(<https://issues.guix.gnu.org/45187>)
*** guix pull correctly displays early builds and downloads
(<https://issues.guix.gnu.org/41930>)
*** Fix OpenRC init scripts for guix-daemon
(<https://issues.guix.gnu.org/46871>)
*** Activate system when switching generations
(<https://issues.guix.gnu.org/38884>)
*** guix environment -C preserves original mount flags
(<https://issues.guix.gnu.org/46292>)
*** Remove duplicates in profile transactions
(<https://issues.guix.gnu.org/23874>)
*** Fix sound problems with ALSA plugins on foreign distros
(<https://issues.guix.gnu.org/40832>)
** Native language support
*** Updated translations of the manual
The manual is fully translated into French and German, 90% translated into
Spanish, and has preliminary translations into Chinese, Brazilian Portuguese,
and Russian.
*** Update translations of the cookbook
The cookbook is fully translated in French and German and has a preliminary
translation into Korean.
*** Updated translations of messages
This version of Guix is fully translated in French, German, and Slovak; it has
good translation into Brazilian Portuguese and Spanish, and preliminary
translations in a dozen other languages.
*** Translations now hosted on Fedoras Weblate instance
Translations are now handled at
<https://translate.fedoraproject.org/projects/guix/guix/> (thanks, Fedora!).
You can join to help improve translations in your native language of messages,
documentation, package descriptions, and the web site.
* Changes in 1.2.0 (since 1.1.0)
** Package management
+1 -1
View File
@@ -62,7 +62,7 @@ Please email <help-guix@gnu.org> for questions and <bug-guix@gnu.org> for bug
reports; email <gnu-system-discuss@gnu.org> for general issues regarding the
GNU system.
Join #guix on irc.freenode.net.
Join #guix on irc.libera.chat.
* Guix & Nix
+1 -1
View File
@@ -23,7 +23,7 @@ There will be a few 0.x releases by then to give the new features more
exposure and testing.
You're welcome to discuss this road map on guix-devel@gnu.org or #guix on
Freenode!
the Libera Chat IRC network!
* Features scheduled for 1.0
+10 -4
View File
@@ -166,16 +166,22 @@ paragraph."
(string-append data-directory "/packages-"
version ".txt"))
(define (package<? p1 p2)
(string<? (package-full-name p1) (package-full-name p2)))
(let-values (((previous-version new-version)
(call-with-input-file news-file NEWS->versions)))
(format (current-error-port) "Updating NEWS for ~a to ~a...~%"
previous-version new-version)
(let* ((old (call-with-input-file (package-file previous-version)
read))
(new (fold-packages (lambda (p r)
(alist-cons (package-name p) (package-version p)
r))
'())))
(all-packages/sorted (sort (fold-packages (lambda (p r)
(cons p r))
'())
package<?))
(new (map (lambda (p)
(cons (package-name p) (package-version p)))
all-packages/sorted)))
(call-with-output-file (package-file new-version)
(lambda (port)
(pretty-print new port)))
+1 -1
View File
@@ -21,7 +21,7 @@ dnl For the C++ code. This must be used early.
AC_USE_SYSTEM_EXTENSIONS
AM_GNU_GETTEXT([external])
AM_GNU_GETTEXT_VERSION([0.18.1])
AM_GNU_GETTEXT_VERSION([0.19.1])
GUIX_SYSTEM_TYPE
GUIX_ASSERT_SUPPORTED_SYSTEM
+1 -1
View File
@@ -948,7 +948,7 @@ from SOURCE."
(div
(ul
(li (a (@ (href "html_node"))
"HTML, with one page per node"))
"HTML, with a separate page per node"))
(li (a (@ (href
,(string-append
#$manual
+1 -1
View File
@@ -3,7 +3,7 @@
This project is a cooperative effort, and we need your help to make it
grow! Please get in touch with us on @email{guix-devel@@gnu.org} and
@code{#guix} on the Freenode IRC network. We welcome ideas, bug
@code{#guix} on the Libera Chat IRC network. We welcome ideas, bug
reports, patches, and anything that may be helpful to the project. We
particularly welcome help on packaging (@pxref{Packaging Guidelines}).
+7 -31
View File
@@ -10,8 +10,8 @@
@include version.texi
@c Identifier of the OpenPGP key used to sign tarballs and such.
@set OPENPGP-SIGNING-KEY-ID 3CE464558A84FDC69DB40CFB090B11993D9AEBB5
@set OPENPGP-SIGNING-KEY-URL https://sv.gnu.org/people/viewgpg.php?user_id=15145
@set OPENPGP-SIGNING-KEY-ID 27D586A4F8900854329FF09F1260E46482E63562
@set OPENPGP-SIGNING-KEY-URL https://sv.gnu.org/people/viewgpg.php?user_id=127547
@c Base URL for downloads.
@set BASE-URL https://ftp.gnu.org/gnu/guix
@@ -2099,7 +2099,7 @@ about their support in GNU/Linux.
An ISO-9660 installation image that can be written to a USB stick or
burnt to a DVD can be downloaded from
@indicateurl{@value{BASE-URL}/guix-system-install-@value{VERSION}.x86_64-linux.iso.xz},
@indicateurl{@value{BASE-URL}/guix-system-install-@value{VERSION}.x86_64-linux.iso},
where you can replace @code{x86_64-linux} with one of:
@table @code
@@ -2115,8 +2115,8 @@ Make sure to download the associated @file{.sig} file and to verify the
authenticity of the image against it, along these lines:
@example
$ wget @value{BASE-URL}/guix-system-install-@value{VERSION}.x86_64-linux.iso.xz.sig
$ gpg --verify guix-system-install-@value{VERSION}.x86_64-linux.iso.xz.sig
$ wget @value{BASE-URL}/guix-system-install-@value{VERSION}.x86_64-linux.iso.sig
$ gpg --verify guix-system-install-@value{VERSION}.x86_64-linux.iso.sig
@end example
If that command fails because you do not have the required public key,
@@ -2140,17 +2140,6 @@ It is meant to be copied @emph{as is} to a large-enough USB stick or DVD.
@unnumberedsubsec Copying to a USB Stick
To copy the image to a USB stick, follow these steps:
@enumerate
@item
Decompress the image using the @command{xz} command:
@example
xz -d guix-system-install-@value{VERSION}.x86_64-linux.iso.xz
@end example
@item
Insert a USB stick of 1@tie{}GiB or more into your machine, and determine
its device name. Assuming that the USB stick is known as @file{/dev/sdX},
copy the image with:
@@ -2161,21 +2150,9 @@ sync
@end example
Access to @file{/dev/sdX} usually requires root privileges.
@end enumerate
@unnumberedsubsec Burning on a DVD
To copy the image to a DVD, follow these steps:
@enumerate
@item
Decompress the image using the @command{xz} command:
@example
xz -d guix-system-install-@value{VERSION}.x86_64-linux.iso.xz
@end example
@item
Insert a blank DVD into your machine, and determine
its device name. Assuming that the DVD drive is known as @file{/dev/srX},
copy the image with:
@@ -2185,7 +2162,6 @@ growisofs -dvd-compat -Z /dev/srX=guix-system-install-@value{VERSION}.x86_64-lin
@end example
Access to @file{/dev/srX} usually requires root privileges.
@end enumerate
@unnumberedsubsec Booting
@@ -2651,7 +2627,7 @@ root's login shell, you'll need to @command{guix pull} separately.
@end quotation
Now, @pxref{Getting Started}, and
join us on @code{#guix} on the Freenode IRC network or on
join us on @code{#guix} on the Libera Chat IRC network or on
@email{guix-devel@@gnu.org} to share your experience!
@@ -33515,7 +33491,7 @@ Whether or not the droplet should be created with IPv6 networking.
@cindex virtual machine
To run Guix in a virtual machine (VM), one can use the pre-built Guix VM image
distributed at
@url{@value{BASE-URL}/guix-system-vm-image-@value{VERSION}.x86_64-linux.xz}.
@url{@value{BASE-URL}/guix-system-vm-image-@value{VERSION}.x86_64-linux.qcow2}.
This image is a compressed image in QCOW format. You will first need to
decompress with @command{xz -d}, and then you can pass it to an emulator such
as QEMU (see below for details).
+15 -13
View File
@@ -4,7 +4,7 @@
# Copyright © 2013 Andreas Enge <andreas@enge.fr>
# Copyright © 2016 Taylan Ulrich Bayırlı/Kammer <taylanbayirli@gmail.com>
# Copyright © 2016, 2018 Mathieu Lirzin <mthl@gnu.org>
# Copyright © 2018 Julien Lepiller <julien@lepiller.eu>
# Copyright © 2018, 2021 Julien Lepiller <julien@lepiller.eu>
#
# This file is part of GNU Guix.
#
@@ -21,6 +21,16 @@
# You should have received a copy of the GNU General Public License
# along with GNU Guix. If not, see <http://www.gnu.org/licenses/>.
# If adding a language, update the following variables, and info_TEXINFOS.
MANUAL_LANGUAGES = de es fa fr it ko pt_BR ru sk zh_CN
COOKBOOK_LANGUAGES = de fa fr ko zh_Hans
# Arg1: A list of languages codes.
# Arg2: The file name stem.
lang_to_texinfo = $(foreach lang,$(1),%D%/$(2).$(lang).texi)
# Automake does not understand GNU Make non-standard extensions,
# unfortunately, so we cannot use the above patsubst-based function here.
info_TEXINFOS = %D%/guix.texi \
%D%/guix.de.texi \
%D%/guix.es.texi \
@@ -70,18 +80,10 @@ OS_CONFIG_EXAMPLES_TEXI = \
%D%/os-config-desktop.texi \
%D%/os-config-lightweight-desktop.texi
TRANSLATED_INFO = \
%D%/guix.de.texi \
%D%/guix.es.texi \
%D%/guix.fr.texi \
%D%/guix.ru.texi \
%D%/guix.zh_CN.texi \
%D%/contributing.de.texi \
%D%/contributing.es.texi \
%D%/contributing.fr.texi \
%D%/contributing.ru.texi \
%D%/contributing.zh_CN.texi \
%D%/guix-cookbook.de.texi
TRANSLATED_INFO = \
$(call lang_to_texinfo,$(MANUAL_LANGUAGES),guix) \
$(call lang_to_texinfo,$(MANUAL_LANGUAGES),contributing) \
$(call lang_to_texinfo,$(COOKBOOK_LANGUAGES),guix-cookbook)
# Bundle this file so that makeinfo finds it in out-of-source-tree builds.
BUILT_SOURCES += $(OS_CONFIG_EXAMPLES_TEXI) $(TRANSLATED_INFO)
+92 -68
View File
@@ -9,6 +9,7 @@
# Copyright © 2020 Daniel Brooks <db48x@db48x.net>
# Copyright © 2021 Jakub Kądziołka <kuba@kadziolka.net>
# Copyright © 2021 Chris Marusich <cmmarusich@gmail.com>
# Copyright © 2021 Maxim Cournoyer <maxim.cournoyer@gmail.com>
#
# This file is part of GNU Guix.
#
@@ -64,12 +65,12 @@ INF="[ INFO ] "
DEBUG=0
GNU_URL="https://ftp.gnu.org/gnu/guix/"
#GNU_URL="https://alpha.gnu.org/gnu/guix/"
OPENPGP_SIGNING_KEY_ID="3CE464558A84FDC69DB40CFB090B11993D9AEBB5"
# 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)"
# The following associative array holds set of GPG keys used to sign the
# releases, keyed by their corresponding Savannah user ID.
declare -A GPG_SIGNING_KEYS
GPG_SIGNING_KEYS[15145]=3CE464558A84FDC69DB40CFB090B11993D9AEBB5 # ludo
GPG_SIGNING_KEYS[127547]=27D586A4F8900854329FF09F1260E46482E63562 # maxim
# ------------------------------------------------------------------------------
#+UTILITIES
@@ -91,13 +92,25 @@ _debug()
fi
}
# Return true if user answered yes, false otherwise.
# $1: The prompt question.
prompt_yes_no() {
while true; do
read -rp "$1" yn
case $yn in
[Yy]*) return 0;;
[Nn]*) return 1;;
*) _msg "Please answer yes or no."
esac
done
}
chk_require()
{ # Check that every required command is available.
declare -a warn
local c
_debug "--- [ $FUNCNAME ] ---"
_debug "--- [ ${FUNCNAME[0]} ] ---"
for c in "$@"; do
command -v "$c" &>/dev/null || warn+=("$c")
@@ -112,29 +125,44 @@ chk_require()
chk_gpg_keyring()
{ # Check whether the Guix release signing public key is present.
_debug "--- [ $FUNCNAME ] ---"
_debug "--- [ ${FUNCNAME[0]} ] ---"
local user_id
local gpg_key_id
local exit_flag
# Without --dry-run this command will create a ~/.gnupg owned by root on
# systems where gpg has never been used, causing errors and confusion.
gpg --dry-run --list-keys ${OPENPGP_SIGNING_KEY_ID} >/dev/null 2>&1 || (
_err "${ERR}Missing OpenPGP public key. Fetch it with this command:"
echo " wget 'https://sv.gnu.org/people/viewgpg.php?user_id=15145' -qO - | sudo -i gpg --import -"
for user_id in "${!GPG_SIGNING_KEYS[@]}"; do
gpg_key_id=${GPG_SIGNING_KEYS[$user_id]}
# Without --dry-run this command will create a ~/.gnupg owned by root on
# systems where gpg has never been used, causing errors and confusion.
if ! gpg --dry-run --list-keys "$gpg_key_id" >/dev/null 2>&1; then
if prompt_yes_no "${INF}The following OpenPGP public key is \
required to verify the Guix binary signature: $gpg_key_id.
Would you like me to fetch it for you? (yes/no)"; then
wget "https://sv.gnu.org/people/viewgpg.php?user_id=$user_id" \
-qO - | gpg --import -
else
_err "${ERR}Missing OpenPGP public key ($gpg_key_id).
Fetch it with this command:
wget \"https://sv.gnu.org/people/viewgpg.php?user_id=$user_id\" -qO - | \
sudo -i gpg --import -"
exit_flag=yes
fi
fi
done
if [ "$exit_flag" = yes ]; then
exit 1
)
fi
}
chk_term()
{ # Check for ANSI terminal for color printing.
local ansi_term
if [ -t 2 ]; then
if [ "${TERM+set}" = 'set' ]; then
case "$TERM" in
xterm*|rxvt*|urxvt*|linux*|vt*|eterm*|screen*)
ansi_term=true
;;
*)
ansi_term=false
ERR="[ FAIL ] "
PAS="[ PASS ] "
;;
@@ -231,7 +259,7 @@ guix_get_bin_list()
local latest_ver
local default_ver
_debug "--- [ $FUNCNAME ] ---"
_debug "--- [ ${FUNCNAME[0]} ] ---"
# Filter only version and architecture
bin_ver_ls=("$(wget -qO- "$gnu_url" \
@@ -260,25 +288,25 @@ guix_get_bin()
local url="$1"
local bin_ver="$2"
local dl_path="$3"
local wget_args=()
_debug "--- [ $FUNCNAME ] ---"
_debug "--- [ ${FUNCNAME[0]} ] ---"
_msg "${INF}Downloading Guix release archive"
wget --help | grep -q '\--show-progress' && \
_PROGRESS_OPT="-q --show-progress" || _PROGRESS_OPT=""
wget $_PROGRESS_OPT -P "$dl_path" "${url}/${bin_ver}.tar.xz" "${url}/${bin_ver}.tar.xz.sig"
wget --help | grep -q '\--show-progress' \
&& wget_args=("-q" "--show-progress")
if [[ "$?" -eq 0 ]]; then
_msg "${PAS}download completed."
if wget "${wget_args[@]}" -P "$dl_path" \
"${url}/${bin_ver}.tar.xz" "${url}/${bin_ver}.tar.xz.sig"; then
_msg "${PAS}download completed."
else
_err "${ERR}could not download ${url}/${bin_ver}.tar.xz."
exit 1
fi
pushd "${dl_path}" >/dev/null
gpg --verify "${bin_ver}.tar.xz.sig" >/dev/null 2>&1
if [[ "$?" -eq 0 ]]; then
if gpg --verify "${bin_ver}.tar.xz.sig" >/dev/null 2>&1; then
_msg "${PAS}Signature is valid."
popd >/dev/null
else
@@ -292,45 +320,44 @@ sys_create_store()
local pkg="$1"
local tmp_path="$2"
_debug "--- [ $FUNCNAME ] ---"
cd "$tmp_path"
tar --extract \
--file "$pkg" &&
_msg "${PAS}unpacked archive"
_debug "--- [ ${FUNCNAME[0]} ] ---"
if [[ -e "/var/guix" || -e "/gnu" ]]; then
_err "${ERR}A previous Guix installation was found. Refusing to overwrite."
exit 1
else
_msg "${INF}Installing /var/guix and /gnu..."
mv "${tmp_path}/var/guix" /var/
mv "${tmp_path}/gnu" /
fi
_msg "${INF}Linking the root user's profile"
mkdir -p "${ROOT_HOME}/.config/guix"
ln -sf /var/guix/profiles/per-user/root/current-guix \
"${ROOT_HOME}/.config/guix/current"
cd "$tmp_path"
tar --extract --file "$pkg" && _msg "${PAS}unpacked archive"
GUIX_PROFILE="${ROOT_HOME}/.config/guix/current"
_msg "${INF}Installing /var/guix and /gnu..."
mv "${tmp_path}/var/guix" /var/
mv "${tmp_path}/gnu" /
_msg "${INF}Linking the root user's profile"
mkdir -p "~root/.config/guix"
ln -sf /var/guix/profiles/per-user/root/current-guix \
"~root/.config/guix/current"
GUIX_PROFILE="~root/.config/guix/current"
# shellcheck disable=SC1090
source "${GUIX_PROFILE}/etc/profile"
_msg "${PAS}activated root profile at ${ROOT_HOME}/.config/guix/current"
_msg "${PAS}activated root profile at ${GUIX_PROFILE}"
}
sys_create_build_user()
{ # Create the group and user accounts for build users.
_debug "--- [ $FUNCNAME ] ---"
_debug "--- [ ${FUNCNAME[0]} ] ---"
if [ $(getent group guixbuild) ]; then
if getent group guixbuild > /dev/null; then
_msg "${INF}group guixbuild exists"
else
groupadd --system guixbuild
_msg "${PAS}group <guixbuild> created"
fi
if [ $(getent group kvm) ]; then
if getent group kvm > /dev/null; then
_msg "${INF}group kvm exists and build users will be added to it"
local KVMGROUP=,kvm
fi
@@ -359,7 +386,7 @@ sys_enable_guix_daemon()
local local_bin
local var_guix
_debug "--- [ $FUNCNAME ] ---"
_debug "--- [ ${FUNCNAME[0]} ] ---"
info_path="/usr/local/share/info"
local_bin="/usr/local/bin"
@@ -368,7 +395,7 @@ sys_enable_guix_daemon()
case "$INIT_SYS" in
upstart)
{ initctl reload-configuration;
cp "${ROOT_HOME}/.config/guix/current/lib/upstart/system/guix-daemon.conf" \
cp "~root/.config/guix/current/lib/upstart/system/guix-daemon.conf" \
/etc/init/ &&
start guix-daemon; } &&
_msg "${PAS}enabled Guix daemon via upstart"
@@ -377,15 +404,15 @@ sys_enable_guix_daemon()
{ # systemd .mount units must be named after the target directory.
# Here we assume a hard-coded name of /gnu/store.
# XXX Work around <https://issues.guix.gnu.org/41356> until next release.
if [ -f "${ROOT_HOME}/.config/guix/current/lib/systemd/system/gnu-store.mount" ]; then
cp "${ROOT_HOME}/.config/guix/current/lib/systemd/system/gnu-store.mount" \
if [ -f "~root/.config/guix/current/lib/systemd/system/gnu-store.mount" ]; then
cp "~root/.config/guix/current/lib/systemd/system/gnu-store.mount" \
/etc/systemd/system/;
chmod 664 /etc/systemd/system/gnu-store.mount;
systemctl daemon-reload &&
systemctl enable gnu-store.mount;
fi
cp "${ROOT_HOME}/.config/guix/current/lib/systemd/system/guix-daemon.service" \
cp "~root/.config/guix/current/lib/systemd/system/guix-daemon.service" \
/etc/systemd/system/;
chmod 664 /etc/systemd/system/guix-daemon.service;
@@ -406,7 +433,7 @@ sys_enable_guix_daemon()
;;
sysv-init)
{ mkdir -p /etc/init.d;
cp "${ROOT_HOME}/.config/guix/current/etc/init.d/guix-daemon" \
cp "~root/.config/guix/current/etc/init.d/guix-daemon" \
/etc/init.d/guix-daemon;
chmod 775 /etc/init.d/guix-daemon;
@@ -417,7 +444,7 @@ sys_enable_guix_daemon()
;;
openrc)
{ mkdir -p /etc/init.d;
cp "${ROOT_HOME}/.config/guix/current/etc/openrc/guix-daemon" \
cp "~root/.config/guix/current/etc/openrc/guix-daemon" \
/etc/init.d/guix-daemon;
chmod 775 /etc/init.d/guix-daemon;
@@ -427,7 +454,7 @@ sys_enable_guix_daemon()
;;
NA|*)
_msg "${ERR}unsupported init system; run the daemon manually:"
echo " ${ROOT_HOME}/.config/guix/current/bin/guix-daemon --build-users-group=guixbuild"
echo " ~root/.config/guix/current/bin/guix-daemon --build-users-group=guixbuild"
;;
esac
@@ -444,21 +471,18 @@ sys_enable_guix_daemon()
sys_authorize_build_farms()
{ # authorize the public key of the build farm
while true; do
read -p "Permit downloading pre-built package binaries from the project's build farm? (yes/no) " yn
case $yn in
[Yy]*) guix archive --authorize < "${ROOT_HOME}/.config/guix/current/share/guix/ci.guix.gnu.org.pub" &&
_msg "${PAS}Authorized public key for ci.guix.gnu.org";
break;;
[Nn]*) _msg "${INF}Skipped authorizing build farm public keys"
break;;
*) _msg "Please answer yes or no.";
esac
done
if prompt_yes_no "Permit downloading pre-built package binaries from the \
project's build farm? (yes/no) "; then
guix archive --authorize \
< "~root/.config/guix/current/share/guix/ci.guix.gnu.org.pub" \
&& _msg "${PAS}Authorized public key for ci.guix.gnu.org"
else
_msg "${INF}Skipped authorizing build farm public keys"
fi
}
sys_create_init_profile()
{ # Create /etc/profile.d/guix.sh for better desktop integration
{ # Define for better desktop integration
# This will not take effect until the next shell or desktop session!
[ -d "/etc/profile.d" ] || mkdir /etc/profile.d # Just in case
cat <<"EOF" > /etc/profile.d/guix.sh
@@ -532,7 +556,7 @@ This script installs GNU Guix on your system
https://www.gnu.org/software/guix/
EOF
echo -n "Press return to continue..."
read -r ANSWER
read -r
}
main()
@@ -562,8 +586,8 @@ main()
if ! [[ $GUIX_BINARY_FILE_NAME =~ $ARCH_OS ]]; then
_err "$ARCH_OS not in ${GUIX_BINARY_FILE_NAME}; aborting"
fi
_msg "Using manually provided binary ${GUIX_BINARY_FILE_NAME}"
GUIX_BINARY_FILE_NAME=$(realpath $GUIX_BINARY_FILE_NAME)
_msg "${INF}Using manually provided binary ${GUIX_BINARY_FILE_NAME}"
GUIX_BINARY_FILE_NAME=$(realpath "$GUIX_BINARY_FILE_NAME")
fi
sys_create_store "${GUIX_BINARY_FILE_NAME}" "${tmp_path}"
+60 -34
View File
@@ -66,9 +66,14 @@
#:use-module (srfi srfi-1)
#:use-module (srfi srfi-26)
#:use-module (ice-9 match)
#:export (%core-packages
#:export (derivation->job
image->job
%core-packages
%cross-targets
channel-source->package
arguments->systems
cuirass-jobs))
;;; Commentary:
@@ -87,6 +92,9 @@ MAX-SILENT-TIME and TIMEOUT are build options passed to the daemon when
building the derivation."
`((#:job-name . ,name)
(#:derivation . ,(derivation-file-name drv))
(#:inputs . ,(map (compose derivation-file-name
derivation-input-derivation)
(derivation-inputs drv)))
(#:outputs . ,(filter-map
(lambda (res)
(match res
@@ -232,43 +240,48 @@ SYSTEM."
(define (hours hours)
(* 3600 hours))
(define* (image->job store image
#:key name system)
"Return the job for IMAGE on SYSTEM. If NAME is passed, use it as job name,
otherwise use the IMAGE name."
(let* ((image-name (or name
(symbol->string (image-name image))))
(name (string-append image-name "." system))
(drv (run-with-store store
(mbegin %store-monad
(set-guile-for-build (default-guile))
(lower-object (system-image image))))))
(parameterize ((%graft? #f))
(derivation->job name drv))))
(define (image-jobs store system)
"Return a list of jobs that build images for SYSTEM."
(define (->job name drv)
(let ((name (string-append name "." system)))
(parameterize ((%graft? #f))
(derivation->job name drv))))
(define (build-image image)
(run-with-store store
(mbegin %store-monad
(set-guile-for-build (default-guile))
(lower-object (system-image image)))))
(define MiB
(expt 2 20))
(if (member system %guix-system-supported-systems)
`(,(->job "usb-image"
(build-image
(image
(inherit efi-disk-image)
(operating-system installation-os))))
,(->job "iso9660-image"
(build-image
(image
(inherit (image-with-label
iso9660-image
(string-append "GUIX_" system "_"
(if (> (string-length %guix-version) 7)
(substring %guix-version 0 7)
%guix-version))))
(operating-system installation-os))))
`(,(image->job store
(image
(inherit efi-disk-image)
(operating-system installation-os))
#:name "usb-image"
#:system system)
,(image->job
store
(image
(inherit (image-with-label
iso9660-image
(string-append "GUIX_" system "_"
(if (> (string-length %guix-version) 7)
(substring %guix-version 0 7)
%guix-version))))
(operating-system installation-os))
#:name "iso9660-image"
#:system system)
;; Only cross-compile Guix System images from x86_64-linux for now.
,@(if (string=? system "x86_64-linux")
(map (lambda (image)
(->job (symbol->string (image-name image))
(build-image image)))
(map (cut image->job store <>
#:system system)
%guix-system-images)
'()))
'()))
@@ -435,6 +448,13 @@ valid."
load-manifest)
manifests))))
(define (arguments->systems arguments)
"Return the systems list from ARGUMENTS."
(match (assoc-ref arguments 'systems)
(#f %cuirass-supported-systems)
((lst ...) lst)
((? string? str) (call-with-input-string str read))))
;;;
;;; Cuirass entry point.
@@ -446,10 +466,7 @@ valid."
(assoc-ref arguments 'subset))
(define systems
(match (assoc-ref arguments 'systems)
(#f %cuirass-supported-systems)
((lst ...) lst)
((? string? str) (call-with-input-string str read))))
(arguments->systems arguments))
(define channels
(let ((channels (assq-ref arguments 'channels)))
@@ -514,6 +531,15 @@ valid."
('tarball
;; Build Guix tarball only.
(tarball-jobs store system))
(('custom . modules)
;; Build custom modules jobs only.
(append-map
(lambda (module)
(let ((proc (module-ref
(resolve-interface module)
'cuirass-jobs)))
(proc store arguments)))
modules))
(('channels . channels)
;; Build only the packages from CHANNELS.
(let ((all (all-packages)))
+6
View File
@@ -856,6 +856,9 @@ Guile's foreign function interface.")
(home-page "https://notabug.org/guile-zlib/guile-zlib")
(license license:gpl3+)))
(define-public guile2.2-zlib
(package-for-guile-2.2 guile-zlib))
(define-public guile-lzlib
(package
(name "guile-lzlib")
@@ -892,6 +895,9 @@ pure Scheme by using Guile's foreign function interface.")
(home-page "https://notabug.org/guile-lzlib/guile-lzlib")
(license license:gpl3+)))
(define-public guile2.2-lzlib
(package-for-guile-2.2 guile-lzlib))
(define-public guile-zstd
(package
(name "guile-zstd")
+61 -23
View File
@@ -2,7 +2,7 @@
;;; Copyright © 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ricardo Wurmus <rekado@elephly.net>
;;; Copyright © 2016 Leo Famulari <leo@famulari.name>
;;; Copyright © 2016, 2017 Roel Janssen <roel@gnu.org>
;;; Copyright © 2017, 2019 Carlo Zancanaro <carlo@zancanaro.id.au>
;;; Copyright © 2017, 2019, 2021 Carlo Zancanaro <carlo@zancanaro.id.au>
;;; Copyright © 2017-2020 Julien Lepiller <julien@lepiller.eu>
;;; Copyright © 2017 Thomas Danckaert <post@thomasdanckaert.be>
;;; Copyright © 2016, 2017, 2018 Alex Vong <alexvong1995@gmail.com>
@@ -1749,6 +1749,9 @@ IcedTea build harness.")
((guix build ant-build-system)
(guix build syscalls)
,@%gnu-build-system-modules)
#:disallowed-references ((,icedtea-7 "jdk"))
,@(substitute-keyword-arguments (package-arguments icedtea-7)
((#:modules modules)
`((guix build utils)
@@ -1792,12 +1795,21 @@ new Date();"))
(add-after 'unpack 'patch-jni-libs
;; Hardcode dynamically loaded libraries.
(lambda _
(let* ((library-path (search-path-as-string->list
(getenv "LIBRARY_PATH")))
(define remove
(@ (srfi srfi-1) remove))
(define (icedtea-or-openjdk? path)
(or (string-contains path "openjdk")
(string-contains path "icedtea")))
(let* ((library-path (remove icedtea-or-openjdk?
(search-path-as-string->list
(getenv "LIBRARY_PATH"))))
(find-library (lambda (name)
(search-path
library-path
(string-append "lib" name ".so")))))
(or (search-path
library-path
(string-append "lib" name ".so"))
(string-append "lib" name ".so")))))
(for-each
(lambda (file)
(catch 'decoding-error
@@ -1805,9 +1817,9 @@ new Date();"))
(substitute* file
(("VERSIONED_JNI_LIB_NAME\\(\"(.*)\", \"(.*)\"\\)"
_ name version)
(format #f "\"~a\"" (find-library name)))
(string-append "\"" (find-library name) "\""))
(("JNI_LIB_NAME\\(\"(.*)\"\\)" _ name)
(format #f "\"~a\"" (find-library name)))))
(string-append "\"" (find-library name) "\""))))
(lambda _
;; Those are safe to skip.
(format (current-error-port)
@@ -1893,6 +1905,9 @@ new Date();"))
#:imported-modules
((guix build syscalls)
,@%gnu-build-system-modules)
#:disallowed-references (,icedtea-8 (,icedtea-8 "jdk"))
#:phases
(modify-phases %standard-phases
(add-after 'patch-source-shebangs 'fix-java-shebangs
@@ -1931,12 +1946,21 @@ new Date();"))
(add-after 'unpack 'patch-jni-libs
;; Hardcode dynamically loaded libraries.
(lambda _
(let* ((library-path (search-path-as-string->list
(getenv "LIBRARY_PATH")))
(define remove
(@ (srfi srfi-1) remove))
(define (icedtea-or-openjdk? path)
(or (string-contains path "openjdk")
(string-contains path "icedtea")))
(let* ((library-path (remove icedtea-or-openjdk?
(search-path-as-string->list
(getenv "LIBRARY_PATH"))))
(find-library (lambda (name)
(search-path
library-path
(string-append "lib" name ".so")))))
(or (search-path
library-path
(string-append "lib" name ".so"))
(string-append "lib" name ".so")))))
(for-each
(lambda (file)
(catch 'decoding-error
@@ -1944,9 +1968,9 @@ new Date();"))
(substitute* file
(("VERSIONED_JNI_LIB_NAME\\(\"(.*)\", \"(.*)\"\\)"
_ name version)
(format #f "\"~a\"" (find-library name)))
(string-append "\"" (find-library name) "\""))
(("JNI_LIB_NAME\\(\"(.*)\"\\)" _ name)
(format #f "\"~a\"" (find-library name)))))
(string-append "\"" (find-library name) "\""))))
(lambda _
;; Those are safe to skip.
(format (current-error-port)
@@ -2079,7 +2103,9 @@ new Date();"))
"--with-libjpeg=system"
"--with-native-debug-symbols=zipped"
(string-append "--prefix=" (assoc-ref outputs "out")))
#t))))))
#t))))
((#:disallowed-references _ '())
`(,openjdk9 (,openjdk9 "jdk")))))
(native-inputs
`(("openjdk9" ,openjdk9)
("openjdk9:jdk" ,openjdk9 "jdk")
@@ -2109,6 +2135,9 @@ new Date();"))
(arguments
`(#:imported-modules ((guix build syscalls)
,@%gnu-build-system-modules)
#:disallowed-references (,openjdk10 (,openjdk10 "jdk"))
#:tests? #f; requires jtreg
;; TODO package jtreg
#:configure-flags
@@ -2139,12 +2168,21 @@ new Date();"))
(add-after 'unpack 'patch-jni-libs
;; Hardcode dynamically loaded libraries.
(lambda _
(let* ((library-path (search-path-as-string->list
(getenv "LIBRARY_PATH")))
(define remove
(@ (srfi srfi-1) remove))
(define (icedtea-or-openjdk? path)
(or (string-contains path "openjdk")
(string-contains path "icedtea")))
(let* ((library-path (remove icedtea-or-openjdk?
(search-path-as-string->list
(getenv "LIBRARY_PATH"))))
(find-library (lambda (name)
(search-path
library-path
(string-append "lib" name ".so")))))
(or (search-path
library-path
(string-append "lib" name ".so"))
(string-append "lib" name ".so")))))
(for-each
(lambda (file)
(catch 'decoding-error
@@ -2152,9 +2190,9 @@ new Date();"))
(substitute* file
(("VERSIONED_JNI_LIB_NAME\\(\"(.*)\", \"(.*)\"\\)"
_ name version)
(format #f "\"~a\"" (find-library name)))
(string-append "\"" (find-library name) "\""))
(("JNI_LIB_NAME\\(\"(.*)\"\\)" _ name)
(format #f "\"~a\"" (find-library name)))))
(string-append "\"" (find-library name) "\""))))
(lambda _
;; Those are safe to skip.
(format (current-error-port)
+51 -43
View File
@@ -131,9 +131,9 @@
;; Latest version of Guix, which may or may not correspond to a release.
;; Note: the 'update-guix-package.scm' script expects this definition to
;; start precisely like this.
(let ((version "1.2.0")
(commit "4dff6ecde85eec473ab231cf75f51e98e8aca1e9")
(revision 21))
(let ((version "1.3.0")
(commit "771b866c55e5f992df60f6c32f5fdd78b64e17f6")
(revision 1))
(package
(name "guix")
@@ -149,7 +149,7 @@
(commit commit)))
(sha256
(base32
"1n16j7rb4n4pjmp8ck5g206rphmzxii2mbyz1nk4qk70zc3mwszq"))
"0w8w05w6v3lc6478vfw67jzn0hbd9nsncpx9i9ch1lck53r8vs44"))
(file-name (string-append "guix-" version "-checkout"))))
(build-system gnu-build-system)
(arguments
@@ -261,11 +261,9 @@ $(prefix)/etc/openrc\n")))
(intern (assoc-ref inputs "boot-guile") #f)
;; On x86_64 some tests need the i686 Guile.
,@(if (and (not (%current-target-system))
(string=? (%current-system)
"x86_64-linux"))
'((intern (assoc-ref inputs "boot-guile/i686") #f))
'())
(when (and (not target)
(string=? system "x86_64-linux"))
(intern (assoc-ref inputs "boot-guile/i686") #f))
;; Copy the bootstrap executables.
(for-each (lambda (input)
@@ -299,9 +297,8 @@ $(prefix)/etc/openrc\n")))
;; Make sure the 'guix' command finds GnuTLS,
;; Guile-JSON, and Guile-Git automatically.
(let* ((out (assoc-ref outputs "out"))
(guile ,@(if (%current-target-system)
'((assoc-ref native-inputs "guile"))
'((assoc-ref inputs "guile"))))
(guile (assoc-ref (or native-inputs inputs)
"guile"))
(avahi (assoc-ref inputs "guile-avahi"))
(gcrypt (assoc-ref inputs "guile-gcrypt"))
(guile-lib (assoc-ref inputs "guile-lib"))
@@ -317,40 +314,45 @@ $(prefix)/etc/openrc\n")))
(gnutls (assoc-ref inputs "gnutls"))
(locales (assoc-ref inputs "glibc-utf8-locales"))
(deps (list gcrypt json sqlite gnutls git
bs ssh zlib lzlib zstd))
(deps* ,@(if (%current-target-system)
'(deps)
'((cons avahi deps))))
bs ssh zlib lzlib zstd guile-lib))
(deps* (if avahi (cons avahi deps) deps))
(effective
(read-line
(open-pipe* OPEN_READ
(string-append guile "/bin/guile")
"-c" "(display (effective-version))")))
(path (string-join
(map (cut string-append <>
"/share/guile/site/"
effective)
(delete #f deps*))
":"))
(gopath (string-join
(map (cut string-append <>
"/lib/guile/" effective
"/site-ccache")
(delete #f deps*))
":"))
(path (map (cut string-append <>
"/share/guile/site/"
effective)
(delete #f deps*)))
(gopath (map (cut string-append <>
"/lib/guile/" effective
"/site-ccache")
(delete #f deps*)))
(locpath (string-append locales "/lib/locale")))
(wrap-program (string-append out "/bin/guix")
`("GUILE_LOAD_PATH" ":" prefix (,path))
`("GUILE_LOAD_COMPILED_PATH" ":" prefix (,gopath))
`("GUIX_LOCPATH" ":" suffix (,locpath)))
(when target
;; XXX Touching wrap-program rebuilds world
(let ((bash (assoc-ref inputs "bash")))
(substitute* (string-append out "/bin/guix")
(("^#!.*/bash") (string-append "#! " bash "/bin/bash")))))
#t)))
;; Modify 'guix' directly instead of using
;; 'wrap-program'. This avoids the indirection
;; through Bash, which in turn avoids getting Bash's
;; own locale warnings.
(substitute* (string-append out "/bin/guix")
(("!#")
(string-append
"!#\n\n"
(object->string
`(set! %load-path (append ',path %load-path)))
"\n"
(object->string
`(set! %load-compiled-path
(append ',gopath %load-compiled-path)))
"\n"
(object->string
`(let ((path (getenv "GUIX_LOCPATH")))
(setenv "GUIX_LOCPATH"
(if path
(string-append path ":" ,locpath)
,locpath))))
"\n\n"))))))
;; The 'guix' executable has 'OUT/libexec/guix/guile' as
;; its shebang; that should remain unchanged, thus remove
@@ -405,8 +407,7 @@ $(prefix)/etc/openrc\n")))
`(("boot-guile/i686" ,(bootstrap-guile-origin "i686-linux")))
'())
,@(if (%current-target-system)
`(("bash" ,bash-minimal)
("xz" ,xz))
`(("xz" ,xz))
'())
;; Tests also rely on these bootstrap executables.
@@ -523,12 +524,16 @@ the Nix package manager.")
("gnutls" ,guile2.2-gnutls)
("guile-gcrypt" ,guile2.2-gcrypt)
("guile-json" ,guile2.2-json)
("guile-lib" ,guile2.2-lib)
("guile-sqlite3" ,guile2.2-sqlite3)
("guile-ssh" ,guile2.2-ssh)
("guile-git" ,guile2.2-git)
("guile-zlib" ,guile2.2-zlib)
("guile-lzlib" ,guile2.2-lzlib)
,@(fold alist-delete (package-native-inputs guix)
'("guile" "gnutls" "guile-gcrypt" "guile-json"
"guile-sqlite3" "guile-ssh" "guile-git"))))
"guile-lib" "guile-sqlite3" "guile-ssh" "guile-git"
"guile-zlib" "guile-lzlib"))))
(inputs
`(("guile" ,guile-2.2)
,@(alist-delete "guile" (package-inputs guix))))
@@ -536,9 +541,12 @@ the Nix package manager.")
`(("gnutls" ,gnutls)
("guile-gcrypt" ,guile2.2-gcrypt)
("guile-json" ,guile2.2-json)
("guile-lib" ,guile2.2-lib)
("guile-sqlite3" ,guile2.2-sqlite3)
("guile-ssh" ,guile2.2-ssh)
("guile-git" ,guile2.2-git)))))
("guile-git" ,guile2.2-git)
("guile-zlib" ,guile2.2-zlib)
("guile-lzlib" ,guile2.2-lzlib)))))
(define-public guile3.0-guix
(deprecated-package "guile3.0-guix" guix))
+19 -7
View File
@@ -261,7 +261,7 @@ Internet and from a wide variety of machine architectures.")
(define-public spice-vdagent
(package
(name "spice-vdagent")
(version "0.20.0")
(version "0.21.0")
(source (origin
(method url-fetch)
(uri (string-append
@@ -269,11 +269,14 @@ Internet and from a wide variety of machine architectures.")
"spice-vdagent-" version ".tar.bz2"))
(sha256
(base32
"0n9k2kna2gd1zi6jv45zsp2jlv439nz5l5jjijirxqaycwi74srf"))))
"0n8jlc1pv6mkry161y656b1nk9hhhminjq6nymzmmyjl7k95ymzx"))))
(build-system gnu-build-system)
(arguments
`(#:configure-flags
'("--localstatedir=/var")
;; The test-session-info test fails for unknown reasons (see:
;; https://gitlab.freedesktop.org/spice/linux/vd_agent/-/issues/24).
#:make-flags '("XFAIL_TESTS=tests/test-session-info")
#:phases
(modify-phases %standard-phases
(add-after 'unpack 'patch-makefile.in
@@ -281,19 +284,27 @@ Internet and from a wide variety of machine architectures.")
(substitute* "Makefile.in"
(((string-append "\\$\\(mkdir_p\\) \\$\\(DESTDIR\\)"
"\\$\\(localstatedir\\)/run/spice-vdagentd"))
"-$(mkdir_p) $(DESTDIR)$(localstatedir)/run/spice-vdagentd"))
#t))
"-$(mkdir_p) $(DESTDIR)$(localstatedir)/run/spice-vdagentd"))))
(add-after 'unpack 'patch-spice-vdagent.desktop
(lambda* (#:key outputs #:allow-other-keys)
(substitute* "data/spice-vdagent.desktop"
(("Exec=/usr/bin/spice-vdagent")
(string-append "Exec=" (assoc-ref outputs "out")
"/bin/spice-vdagent")))
#t)))))
"/bin/spice-vdagent")))))
(add-after 'unpack 'fix-test-termination
(lambda _
;; The termination tests depend on finding the socket file name
;; in the spice-vdagent command line it launched, but by default
;; ps truncates its output, which causes the test to fail (see:
;; https://gitlab.freedesktop.org/spice/linux/vd_agent/-/merge_requests/36).
(substitute* "tests/test-termination.c"
(("ps -ef")
"ps -efww")))))))
(inputs
`(("alsa-lib" ,alsa-lib)
("dbus" ,dbus)
("glib" ,glib)
("gtk+" ,gtk+)
("libdrm" ,libdrm)
("libpciaccess" ,libpciaccess)
("libx11" ,libx11)
@@ -303,7 +314,8 @@ Internet and from a wide variety of machine architectures.")
("libxrandr" ,libxrandr)
("spice-protocol" ,spice-protocol)))
(native-inputs
`(("pkg-config" ,pkg-config)))
`(("pkg-config" ,pkg-config)
("procps" ,procps))) ;tests use 'ps'
(synopsis "Spice agent for Linux")
(description "Spice-vdagent enables sharing the clipboard and guest display
resolution scaling on graphical console window resize.")
+4
View File
@@ -756,6 +756,10 @@ allows you to shut down the computer from Xfce.")
("upower" ,upower) ;; TODO needs upower-glib
("python" ,python) ;; for xfce4-compose-mail
("xf86-input-libinput" ,xf86-input-libinput)))
(propagated-inputs
;; Some operations, such as changing icon themes, require these schemas
;; to be in the search path.
`(("gsettings-desktop-schemas" ,gsettings-desktop-schemas)))
(home-page "https://www.xfce.org/")
(synopsis "Xfce settings manager")
(description
+23 -22
View File
@@ -34,41 +34,42 @@
(spice-vdagent spice-vdagent-configuration-spice-vdagent
(default spice-vdagent)))
(define (spice-vdagent-activation config)
"Return the activation gexp for CONFIG."
#~(begin
(use-modules (guix build utils))
(mkdir-p "/var/run/spice-vdagentd")))
(define (spice-vdagent-shepherd-service config)
"Return a <shepherd-service> for spice-vdagentd with CONFIG."
(define spice-vdagent (spice-vdagent-configuration-spice-vdagent config))
(define spice-vdagentd-command
(list
(file-append spice-vdagent "/sbin/spice-vdagentd")
"-x"))
(file-append spice-vdagent "/sbin/spice-vdagentd")
"-x"))
(list
(shepherd-service
(documentation "Spice vdagentd service")
(requirement '(udev))
(provision '(spice-vdagentd))
(start #~(make-forkexec-constructor '#$spice-vdagentd-command))
(stop #~(make-kill-destructor)))))
(shepherd-service
(documentation "Spice vdagentd service")
(requirement '(dbus-system))
(provision '(spice-vdagentd))
(start #~(lambda args
;; spice-vdagentd supports being activated upon the client
;; connecting to its socket; when not using such feature, the
;; socket should not exist before vdagentd creates it itself.
(mkdir-p "/run/spice-vdagentd")
(false-if-exception
(delete-file "/run/spice-vdagentd/spice-vdagent-sock"))
(fork+exec-command '#$spice-vdagentd-command)))
(stop #~(make-kill-destructor)))))
(define spice-vdagent-profile
(compose list spice-vdagent-configuration-spice-vdagent))
(define spice-vdagent-service-type
(service-type (name 'spice-vdagent)
(extensions
(list (service-extension shepherd-root-service-type
spice-vdagent-shepherd-service)
(service-extension activation-service-type
spice-vdagent-activation)
(service-extension profile-service-type
spice-vdagent-profile)))))
(service-type
(name 'spice-vdagent)
(default-value (spice-vdagent-configuration))
(extensions
(list (service-extension shepherd-root-service-type
spice-vdagent-shepherd-service)
(service-extension profile-service-type
spice-vdagent-profile)))))
(define* (spice-vdagent-service
#:optional (config (spice-vdagent-configuration)))
+2
View File
@@ -62,6 +62,7 @@
#:use-module (gnu packages package-management)
#:use-module (gnu packages pciutils)
#:use-module (gnu packages texinfo)
#:use-module (gnu packages wget)
#:use-module (gnu packages zile)
#:use-module (gnu services)
#:use-module (gnu services shepherd)
@@ -806,6 +807,7 @@ of PROVENANCE-SERVICE-TYPE to its services."
;; Default set of networking packages.
(list inetutils isc-dhcp
iproute
wget
;; wireless-tools is deprecated in favor of iw, but it's still what
;; many people are familiar with, so keep it around.
iw wireless-tools))
+25 -1
View File
@@ -5,7 +5,7 @@
;;
(use-modules (gnu) (guix) (srfi srfi-1))
(use-service-modules desktop networking ssh xorg)
(use-service-modules desktop mcron networking spice ssh xorg)
(use-package-modules bootloaders certs fonts nvi
package-management wget xorg)
@@ -24,6 +24,18 @@ Run '\x1b[1;37minfo guix\x1b[0m' to browse documentation.
accounts.\x1b[0m
"))
;;; XXX: Xfce does not implement what is needed for the SPICE dynamic
;;; resolution to work (see:
;;; https://gitlab.xfce.org/xfce/xfce4-settings/-/issues/142). Workaround it
;;; by manually invoking xrandr every second.
(define auto-update-resolution-crutch
#~(job '(next-second)
(lambda ()
(setenv "DISPLAY" ":0.0")
(setenv "XAUTHORITY" "/home/guest/.Xauthority")
(execl (string-append #$xrandr "/bin/xrandr") "xrandr" "-s" "0"))
#:user "guest"))
(operating-system
(host-name "gnu")
(timezone "Etc/UTC")
@@ -75,11 +87,23 @@ root ALL=(ALL) ALL
(default-user "guest")
(xorg-configuration
(xorg-configuration
;; The QXL virtual GPU driver is added to provide
;; a better SPICE experience.
(modules (cons xf86-video-qxl
%default-xorg-modules))
(keyboard-layout keyboard-layout)))))
;; Uncomment the line below to add an SSH server.
;;(service openssh-service-type)
;; Add support for the SPICE protocol, which enables dynamic
;; resizing of the guest screen resolution, clipboard
;; integration with the host, etc.
(service spice-vdagent-service-type)
(simple-service 'cron-jobs mcron-service-type
(list auto-update-resolution-crutch))
;; Use the DHCP client service rather than NetworkManager.
(service dhcp-client-service-type))
+2 -2
View File
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2014, 2015, 2016, 2017, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2014, 2015, 2016, 2017, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2018 Mark H Weaver <mhw@netris.org>
;;;
;;; This file is part of GNU Guix.
@@ -148,7 +148,7 @@ data format changes between libc versions."
(define %default-locale-libcs
;; The libcs for which we build locales by default.
;; List the previous and current libc to ease transition.
(list glibc-2.29 glibc))
(list glibc))
(define %default-locale-definitions
;; Arbitrary set of locales that are built by default. They are here mostly
+13 -4
View File
@@ -122,15 +122,24 @@ lives in, or the empty list if this is not applicable."
(mlambda ()
"Return the list of channels currently available, including the 'guix'
channel. Return the empty list if this information is missing."
(define (build-time-metadata)
(match (channel-metadata)
(#f '())
(sexp (or (and=> (sexp->channel sexp 'guix) list) '()))))
(match (current-profile-entries)
(()
;; As a fallback, if we're not running from a profile, use 'guix'
;; channel metadata from (guix config).
(match (channel-metadata)
(#f '())
(sexp (or (and=> (sexp->channel sexp 'guix) list) '()))))
(build-time-metadata))
(entries
(filter-map manifest-entry-channel entries)))))
(match (filter-map manifest-entry-channel entries)
(()
;; This profile lacks provenance metadata, so fall back to
;; build-time metadata as returned by 'channel-metadata'.
(build-time-metadata))
(lst
lst))))))
(define (package-path-entries)
"Return two values: the list of package path entries to be added to the
+5 -1
View File
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2017, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -233,6 +233,10 @@ etc."
(make-location file (+ line 1) col)))
(#f
#f)
(#(file line column)
;; Guile >= 3.0.6 uses vectors instead of alists internally, which can be
;; seen in the arguments to 'syntax-error' exceptions.
(location file (+ 1 line) column))
(_
(let ((file (assq-ref loc 'filename))
(line (assq-ref loc 'line))
+8 -1
View File
@@ -301,4 +301,11 @@ text. The hyperlink links to a web view of COMMIT, when available."
(channels
(display-profile-info #f format channels))))
(profile
(display-profile-info (canonicalize-profile profile) format))))))
;; For the current profile, resort to 'current-channels', which has a
;; fallback to metadata from (guix config) in case PROFILE lacks it.
(let ((channels (if (and (current-profile)
(string=? profile (current-profile)))
(current-channels)
(profile-channels profile))))
(display-profile-info (canonicalize-profile profile)
format channels)))))))
+14 -6
View File
@@ -147,12 +147,20 @@
url
(string-append url "/")))
;; XXX: Work around a bug in Guile 3.0.2 where #:verify-certificate? would
;; be ignored (<https://bugs.gnu.org/40486>).
(define* (http-get* uri #:rest rest)
(apply http-request uri #:method 'GET rest))
(define* (http-post* uri #:rest rest)
(apply http-request uri #:method 'POST rest))
(cond-expand
(guile-3
;; XXX: Work around a bug in Guile 3.0.2 where #:verify-certificate? would
;; be ignored (<https://bugs.gnu.org/40486>).
(define* (http-get* uri #:rest rest)
(apply http-request uri #:method 'GET rest))
(define* (http-post* uri #:rest rest)
(apply http-request uri #:method 'POST rest)))
(else ;Guile 2.2
;; Guile 2.2 did not have #:verify-certificate? so ignore it.
(define* (http-get* uri #:key verify-certificate? streaming?)
(http-request uri #:method 'GET #:streaming? streaming?))
(define* (http-post* uri #:key verify-certificate? streaming?)
(http-request uri #:method 'POST #:streaming? streaming?))))
(define %date-regexp
;; Match strings like "2014-11-17T22:09:38+01:00" or
+6 -4
View File
@@ -376,12 +376,14 @@ ARGS is the list of arguments received by the 'throw' handler."
(('system-error . rest)
(let ((err (system-error-errno args)))
(report-error (G_ "failed to load '~a': ~a~%") file (strerror err))))
(('read-error "scm_i_lreadparen" message _ ...)
(('read-error _ message args ...)
;; Guile's missing-paren messages are obscure so we make them more
;; intelligible here.
(if (string-suffix? "end of file" message)
(let ((location (string-drop-right message
(string-length "end of file"))))
(if (or (string-suffix? "end of file" message) ;Guile < 3.0.6
(and (string-contains message "unexpected end of input")
(member '(#\)) args)))
(let ((location (string-take message
(+ 2 (string-contains message ": ")))))
(format (current-error-port) (G_ "~amissing closing parenthesis~%")
location))
(apply throw args)))
+3 -3
View File
@@ -7,7 +7,7 @@ msgstr ""
"Project-Id-Version: guix manual checkout\n"
"Report-Msgid-Bugs-To: bug-guix@gnu.org\n"
"POT-Creation-Date: 2021-01-25 00:00+0100\n"
"PO-Revision-Date: 2021-02-19 10:40+0000\n"
"PO-Revision-Date: 2021-05-03 02:58+0000\n"
"Last-Translator: Soheil Khanalipur <soheil@disroot.org>\n"
"Language-Team: Persian <https://translate.fedoraproject.org/projects/guix/documentation-cookbook/fa/>\n"
"Language: fa\n"
@@ -15,7 +15,7 @@ msgstr ""
"Content-Type: text/plain; charset=UTF-8\n"
"Content-Transfer-Encoding: 8bit\n"
"Plural-Forms: nplurals=2; plural=n > 1;\n"
"X-Generator: Weblate 4.4.2\n"
"X-Generator: Weblate 4.6.1\n"
#. type: Plain text
#: guix-git/doc/guix-cookbook.texi:7
@@ -154,7 +154,7 @@ msgstr ""
#. type: menuentry
#: guix-git/doc/guix-cookbook.texi:74
msgid "Thanks!"
msgstr "سپاس"
msgstr "سِپاس!"
#. type: appendix
#: guix-git/doc/guix-cookbook.texi:74 guix-git/doc/guix-cookbook.texi:2941
+463 -145
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -71,7 +71,7 @@ msgstr "GNU Guix 개발자"
#: guix-git/doc/guix-cookbook.texi:48
#, no-wrap
msgid "Top"
msgstr "Top"
msgstr "정상"
#. type: Plain text
#: guix-git/doc/guix-cookbook.texi:55
+10690 -10716
View File
File diff suppressed because it is too large Load Diff
+10785 -11561
View File
File diff suppressed because it is too large Load Diff
+10670 -10734
View File
File diff suppressed because it is too large Load Diff
+10691 -10719
View File
File diff suppressed because it is too large Load Diff
+10666 -10730
View File
File diff suppressed because it is too large Load Diff
+10667 -10731
View File
File diff suppressed because it is too large Load Diff
+10665 -10728
View File
File diff suppressed because it is too large Load Diff
+10679 -11789
View File
File diff suppressed because it is too large Load Diff
+10713 -10774
View File
File diff suppressed because it is too large Load Diff
+10678 -11461
View File
File diff suppressed because it is too large Load Diff
+2 -21
View File
@@ -47,32 +47,13 @@ POT_OPTIONS = \
--copyright-holder "the authors of Guix (msgids)" \
--msgid-bugs-address "bug-guix@gnu.org"
# make-download-po-files-rule PO_FILES POT_FILE_INPUT
define make-update-po-files-rule
$(1): $(2)
@if ! [ -f "$$@" ]; then \
echo "File $$po_file does not exist. If you are a translator, \
you can create it with 'msginit'." 1>&2; \
exit 1; \
fi && \
lang=$$$$(echo $$@ | $(SED) -E 's|.*\.([^.]*)\.po$$$$|\1|') && \
echo $(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) \
--lang=$$$${lang} "$$@" "$$<" && \
$(MSGMERGE_UPDATE) $(MSGMERGE_OPTIONS) --lang=$$$${lang} "$$@" "$$<"
endef
%D%/%.pot: $(srcdir)/doc/%.texi
$(AM_V_PO4A)$(PO4A_UPDATEPO) -M UTF-8 -f texinfo -m "$<" \
-p "$@" $(POT_OPTIONS) && \
touch $@
%D%/guix-manual.pot: %D%/guix.pot %D%/contributing.pot
msgcat $< > $@
$(eval $(call make-update-po-files-rule,$(DOC_PO_FILES),%D%/guix-manual.pot))
$(eval $(call make-update-po-files-rule,\
$(DOC_COOKBOOK_PO_FILES),%D%/guix-cookbook.pot))
msgcat $^ > $@
doc-pot-update: %D%/guix-manual.pot %D%/guix-cookbook.pot
doc-po-update: $(DOC_PO_FILES) $(DOC_COOKBOOK_PO_FILES)
.PHONY: doc-pot-update doc-po-update
.PHONY: doc-pot-update
+2
View File
@@ -12,9 +12,11 @@ hu
it
ko
nl
oc
pl
pt_BR
ru
si
sk
sr
sv
+5
View File
@@ -26,3 +26,8 @@ EXTRA_LOCALE_CATEGORIES =
# "make distcheck -j4".
# See <https://lists.gnu.org/archive/html/bug-gettext/2014-08/msg00005.html>.
DIST_DEPENDS_ON_UPDATE_PO = no
# Ignore the timestamp of the .pot file, as .po files are updated by
# `make download-po` only. This ensures po files are not modified on the
# first `make` invocation.
PO_DEPENDS_ON_POT = no
+283 -279
View File
File diff suppressed because it is too large Load Diff
+294 -285
View File
File diff suppressed because it is too large Load Diff
+292 -283
View File
File diff suppressed because it is too large Load Diff
+283 -279
View File
File diff suppressed because it is too large Load Diff
+294 -285
View File
File diff suppressed because it is too large Load Diff
+295 -284
View File
File diff suppressed because it is too large Load Diff
+283 -279
View File
File diff suppressed because it is too large Load Diff
+289 -285
View File
File diff suppressed because it is too large Load Diff
+289 -285
View File
File diff suppressed because it is too large Load Diff
+701 -540
View File
File diff suppressed because it is too large Load Diff
+6628
View File
File diff suppressed because it is too large Load Diff
+317 -312
View File
File diff suppressed because it is too large Load Diff
+811 -1096
View File
File diff suppressed because it is too large Load Diff
+298 -295
View File
File diff suppressed because it is too large Load Diff
+6628
View File
File diff suppressed because it is too large Load Diff
+321 -310
View File
File diff suppressed because it is too large Load Diff
+283 -279
View File
File diff suppressed because it is too large Load Diff
+283 -279
View File
File diff suppressed because it is too large Load Diff
+294 -285
View File
File diff suppressed because it is too large Load Diff
+283 -279
View File
File diff suppressed because it is too large Load Diff
+283 -279
View File
File diff suppressed because it is too large Load Diff
+2
View File
@@ -10,6 +10,8 @@ fa
fr
hu
ko
nl
oc
pl
pt_BR
sk
+5
View File
@@ -22,3 +22,8 @@ EXTRA_LOCALE_CATEGORIES =
# "make distcheck -j4".
# See <https://lists.gnu.org/archive/html/bug-gettext/2014-08/msg00005.html>.
DIST_DEPENDS_ON_UPDATE_PO = no
# Ignore the timestamp of the .pot file, as .po files are updated by
# `make download-po` only. This ensures po files are not modified on the
# first `make` invocation.
PO_DEPENDS_ON_POT = no
+584 -556
View File
File diff suppressed because it is too large Load Diff
+584 -556
View File
File diff suppressed because it is too large Load Diff
+584 -556
View File
File diff suppressed because it is too large Load Diff
+584 -556
View File
File diff suppressed because it is too large Load Diff
+584 -556
View File
File diff suppressed because it is too large Load Diff
+584 -556
View File
File diff suppressed because it is too large Load Diff
+584 -556
View File
File diff suppressed because it is too large Load Diff
+20927
View File
File diff suppressed because it is too large Load Diff
+20916
View File
File diff suppressed because it is too large Load Diff
+584 -556
View File
File diff suppressed because it is too large Load Diff
+584 -556
View File
File diff suppressed because it is too large Load Diff
+590 -558
View File
File diff suppressed because it is too large Load Diff
+584 -556
View File
File diff suppressed because it is too large Load Diff
+584 -556
View File
File diff suppressed because it is too large Load Diff
+1 -1
View File
@@ -459,7 +459,7 @@ if guix package --bootstrap -n -m "$module_dir/manifest.scm" \
then false
else
cat "$module_dir/stderr"
grep "manifest.scm:[1-3]:.*wonderful-package.*: unbound variable" \
grep "manifest.scm:[1-4]:.*wonderful-package.*: unbound variable" \
"$module_dir/stderr"
fi
+7 -1
View File
@@ -51,6 +51,7 @@ then
# This must not succeed.
exit 1
else
cat "$errorfile"
grep "$tmpfile:2:3:.*missing.* initializers" "$errorfile"
fi
@@ -66,7 +67,12 @@ then
# This must not succeed.
exit 1
else
grep "$tmpfile:4:1: missing closing paren" "$errorfile"
cat "$errorfile"
# Guile 3.0.6 gets line/column numbers for 'read-error' wrong
# (zero-indexed): <https://bugs.gnu.org/48089>.
grep "$tmpfile:4:1: missing closing paren" "$errorfile" || \
grep "$tmpfile:3:0: missing closing paren" "$errorfile"
fi
+14 -4
View File
@@ -1,5 +1,5 @@
;;; GNU Guix --- Functional package management for GNU
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2018, 2019, 2020 Ludovic Courtès <ludo@gnu.org>
;;; Copyright © 2012, 2013, 2014, 2015, 2016, 2018, 2019, 2020, 2021 Ludovic Courtès <ludo@gnu.org>
;;;
;;; This file is part of GNU Guix.
;;;
@@ -29,6 +29,16 @@
(module-use! module (resolve-interface '(guix records)))
module))
(define (location-alist loc)
;; Return a location alist. In Guile < 3.0.6, LOC is always an alist, but
;; starting with 3.0.6, LOC is a vector (at least when it comes from
;; 'syntax-error' exceptions), hence this conversion.
(match loc
(#(file line column)
`((line . ,line) (column . ,column)
(filename . ,file)))
(_ loc)))
(test-begin "records")
@@ -298,7 +308,7 @@
(pk 'expected-loc
`((line . ,(- (assq-ref loc 'line) 1))
,@(alist-delete 'line loc)))
(pk 'actual-loc location)))))))
(pk 'actual-loc (location-alist location))))))))
(test-assert "define-record-type* & wrong field specifier, identifier"
(let ((exp '(begin
@@ -325,7 +335,7 @@
(pk 'expected-loc
`((line . ,(- (assq-ref loc 'line) 2))
,@(alist-delete 'line loc)))
(pk 'actual-loc location)))))))
(pk 'actual-loc (location-alist location))))))))
(test-assert "define-record-type* & missing initializers"
(catch 'syntax-error
@@ -396,7 +406,7 @@
(pk 'expected-loc
`((line . ,(- (assq-ref loc 'line) 1))
,@(alist-delete 'line loc)))
(pk 'actual-loc location)))))))
(pk 'actual-loc (location-alist location))))))))
(test-assert "ABI checks"
(let ((module (test-module)))