Reported by Tobias Geerinckx-Rice <me@tobias.gr>
in <https://issues.guix.gnu.org/50892>.
* guix/pki.scm (public-keys->acl): Add call to 'delete-duplicates'.
* tests/pki.scm ("public-keys->acl deduplication"): New test.
* guix/store/deduplication.scm (dump-file/deduplicate): Use 'sendfile'
instead of 'dump-port'.
* tests/store-deduplication.scm ("copy-file/deduplicate, below %deduplication-minimum-size"):
New test.
Previously, if the name service switch was dysfunctional, as can happen
on foreign distros lacking nscd, "guix shell -C" would crash with a
backtrace on the uncaught 'getpwuid' exception. To address that, catch
the exception and deal with it gracefully.
Reported by remsd1 on #guix.
* guix/scripts/environment.scm (launch-environment/container): Wrap
'getpwuid' call in 'false-if-exception'.
This allows 'match-record' to be more efficient (field offsets are
computed at compilation time) and to report unknown fields at
macro-expansion time.
* guix/records.scm (map-fields): New macro.
(define-record-type*)[rtd-identifier]: New procedure.
Define TYPE as a macro and use a separate identifier for the RTD.
(lookup-field, match-record-inner): New macros.
(match-record): Rewrite in terms of 'match-error-inner'.
* tests/records.scm ("match-record, simple")
("match-record, unknown field"): New tests.
* gnu/services/cuirass.scm (cuirass-shepherd-service): Rename 'log-file'
local variable to 'main-log-file'.
* gnu/services/getmail.scm (serialize-getmail-configuration-file): Move
after <getmail-configuration-file> definition.
Previously, if the name service switch was dysfunctional, as can happen
on foreign distros lacking nscd, "guix shell -C" would crash with a
backtrace on the uncaught 'getpwuid' exception. To address that, catch
the exception and deal with it gracefully.
Reported by remsd1 on #guix.
* guix/scripts/environment.scm (launch-environment/container): Wrap
'getpwuid' call in 'false-if-exception'.
Previously "guix refresh xkbset" for example would crash with a
getaddrinfo-error because the domain name is invalid. Now it reports
failure to update.
Reported by Tyler Wolf <tyler@twolf.io>
in <https://issues.guix.gnu.org/59598>.
* guix/gnu-maintenance.scm (latest-html-updatable-release): Return #f
upon 'getaddrinfo-error' as well.
* gnu/packages/linux.scm (linux-libre-5.15-source)
(linux-libre-5.10-source): Do not apply linux-libre-infodocs-target.patch.
(make-linux-libre): Remove BUILD-DOC? argument, and
adjust patches conditional.
(make-linux-libre*): Likewise. Remove build-doc? validation.
[arguments]: Move documentation related phases to the new
linux-libre-documentation.
[native-inputs]: Move the documentation related native inputs to
linux-libre-documentation.
(linux-libre-documentation): New variable.
* guix/build-system/linux-module.scm
(make-linux-module-builder) [arguments]: Do not delete build-doc and
install-doc phases, which no longer exist for linux-libre.
Computing derivations for these systems (i686-gnu and riscv32-linux) fails
with an error like the following:
could not find bootstrap binary 'tar' for system
* gnu/packages/mes.scm (mescc-tools)[supported-systems]: Remove riscv32-linux.
* guix/packages.scm (%hurd-system): Remove i686-gnu.
Signed-off-by: Christopher Baines <mail@cbaines.net>
This addition has become necessary since commit
54003af85c, which makes use
of #:declarative? in modules produced by 'make-config.scm'.
Reported by zimoun <zimon.toutoune@gmail.com>.
* guix/modules.scm (extract-dependencies): Recognize #:declarative?,
which was introduced in Guile 3.0.8.
This addition has become necessary since commit
54003af85c, which makes use
of #:declarative? in modules produced by 'make-config.scm'.
Reported by zimoun <zimon.toutoune@gmail.com>.
* guix/modules.scm (extract-dependencies): Recognize #:declarative?,
which was introduced in Guile 3.0.8.
This is a re-implementation of 3c8b6fd94c
done in a way that works for both glibc >= 2.34 and earlier versions.
* guix/build/syscalls.scm (syscall->procedure): When LIBRARY is true,
fall back to global symbols if (dynamic-link library) fails.
(cherry picked from commit 3f6c32a88f)
This reverts commit 748ec62882. It broke the
linux-libre-module-builder like so:
builder for
`/gnu/store/293jxydym9z7ck7afmrjqhiw3xpfs4i1-linux-libre-module-builder-6.0.10.drv'
failed to produce output path
`/gnu/store/ghmp1q5w6r1s9364rz53jd42152wgz2v-linux-libre-module-builder-6.0.10-doc'
for reasons difficult to understand.
This allows 'match-record' to be more efficient (field offsets are
computed at compilation time) and to report unknown fields at
macro-expansion time.
* guix/records.scm (map-fields): New macro.
(define-record-type*)[rtd-identifier]: New procedure.
Define TYPE as a macro and use a separate identifier for the RTD.
(lookup-field, match-record-inner): New macros.
(match-record): Rewrite in terms of 'match-error-inner'.
* tests/records.scm ("match-record, simple")
("match-record, unknown field"): New tests.
* gnu/services/cuirass.scm (cuirass-shepherd-service): Rename 'log-file'
local variable to 'main-log-file'.
* gnu/services/getmail.scm (serialize-getmail-configuration-file): Move
after <getmail-configuration-file> definition.
* guix/build/kconfig.scm: New file.
* Makefile.am: Register it.
* gnu/packages/bootloaders.scm (make-u-boot-package)
(make-u-boot-sunxi64-package): Add DEFCONFIGS and CONFIGS arguments. Remove
dead code.
(u-boot-am335x-boneblack, u-boot-pinebook)
(u-boot-novena,u-boot-rockpro64-rk3399): Simplify packages by using the new
keyword arguments.
Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Modified-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
The kernel Linux is installed in the system profile, which means the manual
was not easily discoverable. Move it to the "doc" output, so that users can
install the Linux documentation explicitly in their user profile without
pulling the whole Linux package.
* gnu/packages/linux.scm (make-linux-libre*) [outputs]: Conditionally add a
"doc" output.
[phases] {install-doc}: Install the info manual to the doc output, an create a
"linux" symlink to it for convenience.
* guix/build-system/linux-module.scm (make-linux-module-builder): Delete the
"doc" output, if present.
This is a followup commit to aaf1f18b80, itself
a followup to 82c43b276d (gnu:
linux-libre: Enable building info doc).
* guix/build-system/linux-module.scm
(make-linux-module-builder) [phases]: Also delete inherited 'install-doc phase.
Reported-by: John Kehayias <john.kehayias@protonmail.com>
This is a followup commit to 82c43b276d (gnu:
linux-libre: Enable building info doc).
* guix/build-system/linux-module.scm
(make-linux-module-builder) [phases]: Delete inherited 'build-doc phase.
Reported-by: John Kehayias <john.kehayias@protonmail.com>
When offloading to a single machine, the previous default value would
lead 'guix offload' to wait possibly for several minutes between
subsequent builds until normalized load would finally go below 0.6.
Increasing it mitigates that.
* guix/scripts/offload.scm (<build-machine>)[overload-threshold]: Bump
to 0.8.
* doc/guix.texi (Daemon Offload Setup): Likewise.
Fixes <https://issues.guix.gnu.org/59447>.
Reported by Mathieu Othacehe <othacehe@gnu.org>.
Previously, if a machine had a buggy 'guix repl', 'guix offload' would
crash with a backtrace instead of just ignoring the machine.
* guix/scripts/offload.scm (remote-inferior*): New procedure.
(check-machine-availability)[if-true]: New procedure.
Use 'remote-inferior*' and 'if-true'.
(check-machine-status): Use 'remote-inferior*'.
* doc/guix.texi (Defining Package Variants): Document the "prepend" clause of
modify-inputs first.
* guix/packages.scm (modify-inputs): use "prepend" in the docstring.
Signed-off-by: Christopher Baines <mail@cbaines.net>
Fixes <https://issues.guix.gnu.org/59185>.
* guix/build/syscalls.scm (MS_REC): New variable.
* gnu/build/file-systems.scm (mount-flags->bit-mask): Set MS_REC bit when
bind-mounting.
Previously, service descriptions appeared in both guix.pot and
packages.pot, but only translations of packages.pot were used.
Now, translations are only done with guix.pot.
This is better, because translators are more likely to translate
guix.pot, and is also easier, because files in gnu/{home/,}services
need to be in po/guix/POTFILES.in anyway and po/guix/Makevars
already acts on the 'description' keyword because of lint checkers.
* guix/scripts/home.scm (service-type-description-string):
Use translations from guix.pot.
* guix/scripts/system/search.scm (service-type-description-string)
(service-type->recutils): Likewise.
* po/packages/POTFILES.in: Move files in gnu/services to ...
* po/guix/POTFILES.in: ... here.
Previously, '+' was supported only via special cases for deprecated
GNU identifiers like 'GPL-N+'. This commit adds support
for other uses of '+', such as 'AFL-2.0+' and 'LPPL-1.0+'.
Strictly speaking, '+' is an operator, not part of the SPDX license
identifier, but it is useful to handle it here.
* guix/import/utils.scm (spdx-string->license): Support '+' operator.
* tests/import-utils.scm ("spdx-string->license"): Test it.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
SPDX specifies that license identifiers (unlike the 'AND', 'OR', and
'WITH' operators) are matched case-insensitively.
* guix/import/utils.scm (%spdx-license-identifiers): New variable.
(spdx-string->license): Search in '%spdx-license-identifiers' using
'string-ci=?'.
* tests/import-utils.scm ("spdx-string->license"): New test.
Co-authored-by: Ludovic Courtès <ludo@gnu.org>
The result of 'spdx-string->license' is a symbol, not a license object.
* guix/import/utils.scm (spdx-string->license): Fix docstring.
(license->symbol): Mention 'license:' prefix in docstring.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This ‘mirror’ is particularly problematic because it's the only one checked
by ‘guix refresh’.
* guix/gnu-maintenance.scm (%savannah-base): Substitute freedif.org.
* guix/download.scm (%mirrors): Likewise.
Reported by sash-kan on #guix.
* guix/scripts/pack.scm (%options): Extract symlink parsing logic to...
(symlink-spec-option-parser): ... here.
(self-contained-tarball/builder): Add a comment mentioning why a relative file
name is used for the link target.
* guix/scripts/environment.scm (show-environment-options-help): Document new
--symlink option.
(%default-options): Add default value for symlinks.
(%options): Register new symlink option.
(launch-environment/container): Add #:symlinks argument and extend doc, and
create symlinks using evaluate-populate-directive.
(guix-environment*): Pass symlinks arguments to launch-environment/container.
* doc/guix.texi (Invoking guix shell): Document it.
* tests/guix-shell.sh: Add a --symlink (negative) test.
* tests/guix-environment-container.sh: Add tests.
Fixes <https://issues.guix.gnu.org/58927>.
Reported by Maxime Devos <maximedevos@telenet.be>
and Marius Bakke <marius@gnu.org>.
Starting from 076e825dc5, "guix --version"
would print "0" as the version number, due to '%guix-version' being
inlined in (guix ui) when compiling '*core-modules*' in (guix self).
* guix/self.scm (make-config.scm): Pass #:declarative? #f.
* guix/gnu-maintenance.scm (%alpha-tarball-rx): Add "." before
"(alpha|beta|...)".
* tests/gnu-maintenance.scm ("release-file?"): Add test for Valgrind.
Fixes <https://issues.guix.gnu.org/59168>.
Previously 'guix build make --with-latest=make' would pick ".tar.lz",
rather than "tar.gz", because "tar.lz" happened to come first in the
<upstream-source> 'urls' field.
* guix/gnu-maintenance.scm (latest-gnu-release)[archive-type]
[better-tarball?]: New variables.
Sort TARBALLS according to BETTER-TARBALL?.
Fixes <https://issues.guix.gnu.org/55968>.
Reported by Maxime Devos <maximedevos@telenet.be>.
* guix/grafts.scm (%graft-with-utf8-locale?): New parameter.
(graft-derivation/shallow)[glibc-locales, set-utf8-locale]: New
variables.
[build]: Use 'set-utf8-locale'.
* tests/gexp.scm, tests/grafts.scm, tests/packages.scm: Set
'%graft-with-utf8-locale?' to #f.
* guix/build/ant-build-system.scm (strip-jar-timestamps): Use MKDTEMP from
Guile core rather than MKDTEMP!.
* guix/build/java-utils.scm (install-jar-file-with-pom): Likewise.
Previously, we'd get this error:
$ guix build --target=aarch64-linux-gnu r-minimal -d --no-grafts
guix build: error: path ‘/gnu/store/[^-]+-glibc-[^-]+-static’ is not valid
This is because the sexp would be passed as an input of the surrounding
gexp in 'gnu-cross-build', and thus
"/gnu/store/[^-]+-glibc-[^-]+-static" would be interpreted as a source
file name, as in this example:
scheme@(guix gexp)> #~(foo #$(list 'whatever "/gnu/store/[^-]+-glibc-[^-]+-static"))
$11 = #<gexp (foo #<gexp-input (whatever "/gnu/store/[^-]+-glibc-[^-]+-static"):out>) 7f098badec30>
scheme@(guix gexp)> (gexp-inputs $11)
$12 = (#<gexp-input "/gnu/store/[^-]+-glibc-[^-]+-static":out>)
Fixes <https://issues.guix.gnu.org/59073>.
Reported by Christopher Baines <mail@cbaines.net>.
* guix/build-system/gnu.scm (gnu-cross-build): When PHASES is a pair,
pass it through 'sexp->gexp'.
Otherwise computing cross-compilation derivations for packages (e.g. xpadneo)
using the #:source-directory argument fails with this error:
Unrecognized keyword: #:source-directory
* guix/build-system/linux-module.scm (linux-module-build-cross): Support
#:source-directory.
Fixes <https://issues.guix.gnu.org/58861>.
Previously the order of the options giving to 'guix shell' could mean that the
'glibc-for-fhs' package included with the '--emulate-fhs' option would not
appear in the container. For example, using the development option with a
package using the 'gnu-build-system', e.g. 'guix shell -CFD hello', would
include the regular 'glibc' package. The option ordered mattered: 'guix shell
-CD hello -F' would include the expected 'glibc-for-fhs'. We fix this by
having 'glibc-for-fhs' added to the package list just before calling
'options-with-caching' so the option order given by the user does not matter.
* guix/scripts/shell.scm (%options): Move the '--emulate-fhs' (expression
. ...) component from here...
(parse-args): ... to here.
* tests/guix-environment-container.sh: Add a test to check that
'glibc-for-fhs' is in the container even when 'glibc' is included in the 'guix
shell' package list.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
The current reference to Intel's Appendix H appears too obscure and confusing.
* guix/ui.scm (package->recutils)[output->recutils]: Replace “see Appendix H”
with “[description missing]”.
The current code says "out" contains "everything else", even if there's no
other output to contain anything.
* guix/ui.scm (package->recutils)[default-output-synopses]: New variable.
[output->recutils]: Take default synopses as argument.
["outputs"]: Distinguish single and multiple outputs.
* guix/build-system/scons.scm (scons-build): Only call sexp->gexp on
scons-flags when scons-flags is a pair.
Signed-off-by: Christopher Baines <mail@cbaines.net>
Relates to <https://issues.guix.gnu.org/58821>.
Revert 4fef1e850e, which silenced useful
information such as the following warning:
install-info: warning: no info dir entry in
`/gnu/store/...-rottlog-0.72.2/share/info/rottlog.info.gz'
Rationale: profile hooks output is now hidden by default, and can be made
visible via the --verbosity option.
This is an experimental build system based on python-build-system
that implements PEP 517-compliant builds.
* doc/guix.texi (Build Systems): Add pyproject-build-system section.
* doc/contributing.texi (Python Modules): Mention pyproject.toml and the
PYTHON-TOOLCHAIN package, as well as differences to python-build-system.
* guix/build-system/pyproject.scm,
guix/build/pyproject-build-system.scm,
gnu/packages/aux-files/python/sanity-check-next.py,
gnu/packages/python-commencement.scm: New files.
* Makefile.am (MODULES): Register the new build systems.
* gnu/local.mk (GNU_SYSTEM_MODULES): Add python-commencement.scm.
* gnu/packages/python.scm (python-sans-pip, python-sans-pip-wrapper): New
variables.
Co-authored-by: Marius Bakke <marius@gnu.org>
Fixes <https://issues.guix.gnu.org/58419>.
* guix/grafts.scm (graft-derivation/shallow): Rewrite using gexps and
remove 'store' parameter.
(graft-derivation/shallow*): New variable.
(cumulative-grafts): Use it instead of 'graft-derivation/shallow'.
These modules would use (guix grafts) just to access '%graft?' and
related bindings, which are now in (guix store).
* gnu/ci.scm,
guix/gexp.scm,
guix/lint.scm,
guix/scripts.scm,
guix/scripts/archive.scm,
guix/scripts/build.scm,
guix/scripts/challenge.scm,
guix/scripts/deploy.scm,
guix/scripts/environment.scm,
guix/scripts/home.scm,
guix/scripts/pack.scm,
guix/scripts/package.scm,
guix/scripts/pull.scm,
guix/scripts/size.scm,
guix/scripts/system.scm,
guix/scripts/weather.scm,
tests/builders.scm,
tests/channels.scm,
tests/cpan.scm,
tests/derivations.scm,
tests/gexp.scm,
tests/graph.scm,
tests/guix-daemon.sh,
tests/monads.scm,
tests/pack.scm,
tests/packages.scm,
tests/profiles.scm,
tests/system.scm: Remove #:use-module (guix grafts).
The goal is to allow (guix grafts) to use (guix gexp) without
introducing a cycle between these two modules.
* guix/grafts.scm (%graft?, call-without-grafting, without-grafting)
(set-grafting, grafting?): Move to...
* guix/store.scm: ... here.
This is consistent with what 'gnu-build' does and makes sure origins
aren't getting lowered with #:graft? #t in one case and not in the
other.
This is a followup to df46bef48e and
dada5e86ed.
* guix/build-system/python.scm (python-build): Pass #:graft? #f.
This is a followup to 2383e14518.
* guix/lint.scm (svn-reference-uri-with-userinfo): Accept REF being
an <svn-multi-reference> record.
(check-source): Handle 'svn-multi-reference?' origins like
'svn-reference?' origins.
Fixes <https://issues.guix.gnu.org/58663>.
This is a followup to b665dd4a99 and
dcb640f02b, allowing "nodiratime" to be
preserved for bind mounts.
* guix/build/syscalls.scm (MS_NODIRATIME): New variable.
(option-string->mount-flags): Recognize it.
(statfs-flags->mount-flags): Likewise.
Fixes <https://issues.guix.gnu.org/58567>.
Reported by Marius Bakke <marius@gnu.org>.
This is a followup to df46bef48e.
* guix/build-system/qt.scm (qt-build, qt-cross-build): Pass #:graft? #f
to 'gexp->derivation'.
* guix/svn-download.scm (svn-multi-fetch)[build]: Check for environment
variables instead of splicing REF fields.
Pass #:script-name and #:env-vars to 'gexp->derivation'.
This ensures a single "svn-download" script is created in the store for
all the origins that use 'svn-fetch'.
* guix/svn-download.scm (svn-fetch)[build]: Check for environment
variables instead of splicing REF fields.
Pass #:script-name and #:env-vars to 'gexp->derivation'.
Previously the 'commit' field would always be interpreted as a commit
ID. This change adds flexibility, allowing for things like:
guix time-machine --commit=v1.2.0 -- describe
* guix/channels.scm (channel-reference): Use 'tag-or-commit' rather than 'commit'.
* guix/inferior.scm (channel-full-commit): Likewise.
* doc/guix.texi (Invoking guix pull): Document it.
(Invoking guix time-machine): Likewise.
Previously, starting with commit
efa578ecae, 'update-cached-checkout' would
return the OID of the annotated tag the tag points to. With this change
it returns the OID of the commit object in all cases.
* guix/git.scm (resolve-reference): In the 'tag' case, call
'tag-target-id' and 'tag-lookup' when OID designates an annotated tag.
* tests/git.scm ("update-cached-checkout, tag"): New test.
These typos were found and reported through weblate.
* gnu/packages/audio.scm (wildmidi)[description]: Fix typo.
* gnu/packages/games.scm (cgoban)[description]: Fix typo.
* gnu/services/version-control.scm (gitolite-service-type)[description]:
Fix typo.
* gnu/installer/newt/substitutes.scm (run-substitutes-page): Remove full
stop at end of title.
* gnu/machine/ssh.scm (machine-ssh-configuration-system): Move
punctuation outside of quotes.
* guix/scripts/home.scm (process-action): Remove trailing space before
newline.
* guix/scripts/system.scm (show-help): Fix typo.
* guix/scripts/environment.scm (with-store/maybe): Fix typo.
Fixes a regression introduced in
602527ab97 that broke
'tests/guix-build-branch.sh'.
* guix/git.scm (resolve-reference): Revert change from
602527ab97.
* guix/build/emacs-utils.scm (emacs-substitute-variables): Fix the regexp
matching variable name.
With end-of-word regexp ("\>"), the previous regexp may match the prefix of
a variable only, effectively deleting the rest of its name.
For example,
(emacs-substitute-variables "file.el"
("foo" ...))
could match (defvar foo-bar ...) and replace it with (defvar foo ...).
Previously, using 'guix shell -CF coreutils' twice (such that the
profile is cache) would result in:
guix shell: error: '--profile' cannot be used with package options
This patch fixes it by moving argument handling to (guix scripts shell),
before 'options-with-caching' is called.
* guix/scripts/environment.scm (show-environment-options-help)
(%options): Remove '--emulate-fhs'.
(guix-environment*): Pass OPTS as-is to 'options/resolve-packages'.
* guix/scripts/shell.scm (show-help, %options): Add '--emulate-fhs'.
Add the (expression . ...) component to RESULT right from the argument
handler.
* tests/guix-environment-container.sh: Change '--emulate-fhs' tests to
use 'guix shell' instead of 'guix environment'.
* guix/scripts/environment.scm (show-environment-options-help, %options): Add
'--emulate-fhs'.
(setup-fhs): New procedure. Setup for the Filesystem Hierarchy Standard (FHS)
container. Defines and uses FHS-SYMLINKS and LINK-CONTENTS to create FHS
expected directories and creates /etc/ld.so.conf.
(launch-environment): Add 'emulate-fhs?' key and implement it to set $PATH and
generate /etc/ld.so.cache before calling COMMAND.
(launch-environment/container): Add 'emulate-fhs?' and 'setup-hook' keys and
implement them. Define and use FHS-MAPPINGS, to set up additional bind mounts
in the container to follow FHS expectations.
(guix-environment*): Add glibc-for-fhs to the container packages when
'emulate-fhs?' key is in OPTS.
* doc/guix.texi (Invoking guix shell): Document '--emulate-fhs'.
(Invoking guix environment): Document '--emulate-fhs'.
* tests/guix-environment-container.sh: Add tests for '--emulate-fhs'.
Co-authored-by: Ludovic Courtès <ludo@gnu.org>
* guix/git.scm (commit-id?): New procedure, copied from (guix swh).
(resolve-reference): Use it instead of inline code.
* guix/inferior.scm (channel-full-commit): Likewise.
Starting from commit 371a83b764, 'guix
import crate -r' (or similar) would no longer print a blank line in
between definitions. This patch fixes it.
Reported by jgart <jgart@dismail.de>.
* guix/scripts/import.scm (guix-import): Add second 'newline' call.
This is written in such a way that the type check turns into a no-op at
macro-expansion time for trivial cases:
> ,optimize (validate-license gpl3+)
$18 = gpl3+
> ,optimize (validate-license (list gpl3+ gpl2+))
$19 = (list gpl3+ gpl2+)
* guix/packages.scm (valid-license-value?, validate-license): New
macros.
(<package>)[license]: Add 'sanitize' option.
(&package-license-error): New error condition type.
* tests/packages.scm ("license type checking"): New test.
* guix/import/utils.scm (beautify-description): Remove single quote wrapping;
escape @; exclude common abbreviations and titles from double-spacing; detect
more sentence fragments.
Fixes <https://issues.guix.gnu.org/58040>.
Reported by Maxime Devos <maximedevos@telenet.be>.
* guix/read-print.scm (%special-forms): Set 'match-lambda*' parameter
count to 1.
The '--with-source' option is the first one that was implemented, and
it's the only one that would operate only on leaf packages rather than
traversing the dependency graph. This change makes it consistent with
the rest of the transformation options.
* guix/transformations.scm (evaluate-source-replacement-specs): New
procedure.
(transform-package-source): Rewrite using it.
* tests/transformations.scm ("options->transformation, with-source, no
matches"): Rewrite since we no longer get a warning.
("options->transformation, with-source, in depth"): New test.
* doc/guix.texi (Package Transformation Options): Adjust examples.
* guix/import/print.scm (package->code): Quasiquote properties.
* tests/print.scm (pkg-with-properties, pkg-with-properties-source):
New variables.
("package with properties"): New test
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* guix/import/utils.scm (alist->package): Process properties field in input
data and include it in the generated package.
* tests/import-utils.scm ("alist->package with properties"): New test.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Fixes <https://issues.guix.gnu.org/57978>
Reported by Attila Lendvai <attila@lendvai.name>.
Previously, if a narinfo was available but its corresponding nar was
missing (for instance because the narinfo was cached and the server
became unreachable in the meantime), 'guix substitute --substitute'
would try to download the nar from its preferred location and abort when
that fails. This change forces one retry with each of the URLs.
* guix/scripts/substitute.scm (download-nar): Do not catch
'http-get-error?' exceptions.
(system-error?, network-error?, process-substitution/fallback): New
procedures.
(process-substitution): Call 'process-substitution/fallback' upon
'network-error?'.
* tests/substitute.scm ("substitute, first URL has narinfo but lacks nar, second URL unauthorized")
("substitute, first URL has narinfo but nar is 404, both URLs authorized")
("substitute, first URL has narinfo but nar is 404, one URL authorized")
("substitute, narinfo is available but nar is missing"): New tests.
* guix/import/cran.scm (string->license): Add more match clauses.
(string->licenses): Split license conjunctions at "|" and apply
string->license on each license.
(description->package): Use string->licenses.
As latest-html-release now produces mirror:// URIs where possible,
the additional post-processing is not necessary anymore.
As a test, revert the dtc package back to 1.6.0 and try updating 'gash',
the mirror:// URI remains.
* gnu-maintenance.scm (latest-kernel.org-release): Do not call
adjusted-upstream-source on the result.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Add the mirror from (guix gnu-maintenance) to make the simplified
linux.org updater (of a later commit) work.
* download.scm (%mirrors)[kernel.org]: Add mirrors.edge.kernel.org mirror.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
As latest-html-release now produces mirror:// URIs where possible,
the additional post-processing is not necessary anymore.
As a test, try updating 'gash', the mirror:// URI remains.
* gnu-maintenance.scm (latest-savannah-release): Do not call
adjusted-upstream-source on the result.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
The URI scheme used for nongnu.freemirror.org needs to be consistent
between (guix download) and (guix gnu-maintenance) to make the simplified
savannah-updater (of a later commit) work. While we're at it, switch the
other mirrors to https as well.
http://download.savannah.gnu.org/releases-noredirect/ is left unmodified
because it 404s
* download.scm (%mirrors)[savannah]: Switch from http to https where possible.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Partially fixes <https://issues.guix.gnu.org/57477>.
I'm not aware of a package using both latest-html-release and mirrors, so it
has not been completely tested. However, updating "yt-dlp" appears to work
(except for git-fetch not being supported yet). The expression for the
signature-urls field had to be tweaked to not call uri-mirror-rewrite on #false.
* guix/gnu-maintenance.scm (latest-html-release)[url->research]{urls,signature-urls}:
Call uri-mirror-rewrite on the URLs.
Co-authored-by: Ludovic Courtès <ludo@gnu.org>
Partially fixes <https://issues.guix.gnu.org/57477>.
As a test, try updating gnupg. Before the patch, a ftp:// URL was produced,
now the mirror:// is preserved.
* guix/gnu-maintenance.scm (latest-ftp-release)[file->source]{urls,signature-urls}:
Call uri-mirror-rewrite on the URLs.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
It will be useful for fixing <https://issues.guix.gnu.org/57477>.
* guix/lint.scm (check-mirror-url): Extract mirror://-constructing code to ...
* guix/gnu-maintenance.scm (uri-mirror-rewrite): ... here, tweaking the API
and implementation in anticipation of future users.
Co-authored-by: Ludovic Courtès <ludo@gnu.org>
Previously, #:imported-modules was ignored, causing cross-compilation
failures. This bug seems seems to have been introduced in
e37dcf63dc.
After this commit, there remain other cross-compilation problems,
e.g. <https://issues.guix.gnu.org/51981> fixes one of them.
* guix/build-system/go.scm (go-cross-build)[builder]: Wrap in
with-imported-modules.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Move the compression record to a dedicated module so that it can be used
outside (guix scripts pack) module.
* guix/scripts/pack.scm (<compressor>, %compressors, lookup-compressor): Move
it to ...
* gnu/compression.scm: ... this new file.
* gnu/ci.scm: Adapt it.
* local.mk (GNU_SYSTEM_MODULES): Add it.
* guix/scripts/home/import.scm (manifest+configuration-files->code):
Insert calls to 'comment' and 'vertical-space'.
(import-manifest): Use 'pretty-print-with-comments/splice' instead of a
loop on 'pretty-print'.
* tests/home-import.scm (remove-recursively): New procedure.
(eval-test-with-home-environment): Use it.
Previously (home-environment (services ...)) would not be considered a
"newline form". This fixes it.
* guix/read-print.scm (newline-form?): Use 'vhash-foldq*' instead of
'vhash-assq' and iterate over candidates.
* tests/read-print.scm: Add test.
* guix/import/gem.scm: (rubygems-fetch, gem->guix-package)
(gem-recursive-import): Fix to fetch the specified version of the gem.
* guix/scripts/import/gem.scm (show-help): Update the help message.
(guix-import-gem): Modify so the version number to be passed to subsequent
procedures.
* tests/gem.scm: Add tests.
* doc/guix.texi (Invoking guix import): Document.
Signed-off-by: Christopher Baines <mail@cbaines.net>
Before this change, we'd get:
$ guix refresh gedit
updating from version 40.1 to version 43.alpha...
This is because the new GNOME version scheme introduced in 2021 with GNOME 40
was not treated correctly. Also, no longer ignore odd numbered minor
versions, as this appears to be a declining practice in GNOME.
* guix/import/gnome.scm (latest-gnome-release)
<pre-release-text?>: New predicate.
<even-minor-version?>: Rename to...
<release-version?>: ...this. Return #f in case the version corresponds to a
development release.
* guix/import/gnome.scm (latest-gnome-release): Adjust accordingly.
* guix/build/emacs-utils.scm (emacs-generate-autoloads): Use
'loaddefs-generate' to create autoloads instead of
'update-directory-autoloads' if we are using a new enough Emacs
Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
* guix/build/emacs-build-system.scm (add-install-to-native-load-path):
New variable.
(build): Replace ‘emacs-byte-compile-directory’ with ‘emacs-compile-directory’.
Delete already compiled files in the working directory prior to compilation.
(%standard-phases): Add ‘add-install-to-native-load-path’ after
‘expand-load-path’.
Commit 7df4d3465d and others changed
'mount', 'umount', & co. so they would call 'syscall->procedure' at each
call. This change reverts to the previous behavior, where
'syscall->procedure' is called once.
* guix/build/syscalls.scm (mount, umount, reboot, load-linux-module):
Call 'syscall->procedure' only once.
Reported by Maxim Cournoyer.
This is a followup to 61b63e7fa7.
* guix/import/gnome.scm (latest-gnome-release)[even-minor-version?]:
Reject VERSION is the minor or micro part is not an integer.