Fixes <https://issues.guix.gnu.org/60947>.
Fixes a bug whereby packages referred via 'ungexp' in package arguments
would be "double-grafted": 'gexp->derivation' would first replace those
references by references to the grafted package, only to repeat the
grafting process on the result.
Build systems such as 'gnu', 'cmake', and 'pyproject' were already doing
this. Only the rest of them is affected.
* guix/build-system/cargo.scm (cargo-build): Pass #:graft? #f to
'gexp->derivation'.
* guix/build-system/copy.scm (copy-build): Likewise.
* guix/build-system/dune.scm (dune-build): Likewise.
* guix/build-system/font.scm (font-build): Likewise.
* guix/build-system/guile.scm (guile-build): Likewise.
(guile-cross-build): Likewise.
* guix/build-system/ocaml.scm (ocaml-build): Likewise.
* guix/build-system/ruby.scm (ruby-build): Likewise.
* guix/build-system/scons.scm (scons-build): Likewise.
* guix/build-system/texlive.scm (texlive-build): Likewise.
* guix/build-system/waf.scm (waf-build): Likewise.
* 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.
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.
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>
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.
* 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>
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>
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.
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'.
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>
This is a followup to cf60a0a906.
Reported by Mathieu Othacehe <othacehe@gnu.org>.
* guix/build-system/channel.scm (build-channels): Add 'string?' case.
* guix/build-system/channel.scm (latest-channel-instances*): New
variable.
(build-channels): New procedure, with code formerly in
'channel-build-system', augmented with clauses for when SOURCE is a
channel instance or a channel.
* doc/guix.texi (Build Systems): Adjust accordingly.
* gnu/ci.scm (channel-build-system, channel-source->package): Remove.
* gnu/packages/package-management.scm (channel-source->package): New
procedure, moved from (gnu ci).
* guix/build-system/channel.scm: New file, with code moved from (gnu ci).
* doc/guix.texi (Build Systems): Document it.
* guix/build-system/perl.scm: Add info on cross-compilation.
(lower)[private-keywords]: Remove #:target when cross-compiling.
(lower)[target]: Set.
(host-inputs)[perl]: New entry.
(host-inputs)[(standard-packages)]: Move to ...
(build-inputs)[(standard-packages)]: ... here when cross-compiling.
(build-inputs)[standard-cross-packages]: Add when cross-compiling.
(target-inputs): New entry when cross-compiling.
(build): Use perl-cross-build when cross-compiling.
(perl-cross-build): New procedure.
Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
The 'asd-operation' parameter can be used to specify the ASDF operation to use
in the build phase. It's default value is "load-system".
* guix/build-system/asdf.scm (package-with-build-system, asdf-build): Add
'asd-operation' parameter.
* guix/build/asdf-buid-system.scm (build): Add 'asd-operation' parameter and
use it.
* guix/build/lisp-utils.scm (compile-systems): Add 'asd-operation' parameter
and use it.
This approach has many benefits:
- It simplifies the build system.
- The package definitions are easier to write.
- It fixes a bug with systems that call asdf:clear-system which would cause
the load to fail. See for instance test systems using Prove.
* guix/build-system/asdf.scm (package-with-build-system): Remove 'asd-files'
and replace 'test-asd-file' by 'asd-test-systems'.
(lower): Same.
* guix/build/asdf-build-system.scm (source-asd-file): Remove since ASDF does
it better than us.
(find-asd-files): Same.
(build): Remove unused asd-files argument.
(check): Remove asd-files argument and replace asd-systems by
asd-test-systems.
* guix/build/lisp-utils.scm (compile-systems): Call to ASDF to find the
systems.
(test-system): Same.
Signed-off-by: Guillaume Le Vaillant <glv@posteo.net>
* guix/build-system/qt.scm (qt-build)[qtbase]: Specify a default value. Lower
it using ungexp-native.
(qt-cross-build): Likewise.
Reported-by: Maxime Devos <maximedevos@telenet.be> and others.
* guix/build-system/qt.scm (default-qtbase): New variable.
(lower) <#:qtbase>: Add argument...
[build-inputs]: ... and propagate it here.
(qt-build): Add qtbase argument.
(qt-cross-build): Likewise.
* guix/build/qt-utils.scm (%default-qt-major-version): New variable.
(variables-for-wrapping): Add qt-major-version argument, and use it to format
the various path prefixes. Wrap QT environment variables exactly.
(wrap-qt-program*): Add qt-major-version argument, and pass it to
variables-for-wrapping.
(wrap-qt-program): Add qt-major-version argument, and pass it to
wrap-qt-program*.
(wrap-all-qt-programs): Add qtbase argument, and extract the major version
from it, passing it to wrap-qt-program*.
* guix/build-system/dub.scm (default-ld-gold-wrapper): New procedure.
(lower): Add a LD-GOLD-WRAPPER to the keyword arguments, and to the
resulting bag's…
[build-inputs]: …build inputs.
Signed-off-by: Tobias Geerinckx-Rice <me@tobias.gr>
hex.pm is a package repository for Erlang and Elixir.
* guix/scripts/import.scm (importers): Add "hexpm".
* guix/scripts/import/hexpm.scm, guix/import/hexpm.scm,
guix/hexpm-download.scm: New files.
* guix/import/utils.scm (source-spec->object): Add "hexpm-fetch" to list of
fetch methods.
* guix/upstream.scm (package-update/hexpm-fetch): New function.
(%method-updates) Add it.
* Makefile.am: Add them.
* guix/build-system/elm.scm (default-elm-core): New variable.
(default-elm-json): Likewise
(lower): Use them as implicit inputs when applicable.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Conceptually, "standard packages" (GCC, Coreutils, etc.) are "build
inputs". In the absence of cross-compilation support, this change has
no effect, except for things like '--tune' that expect the compiler to
be among the build inputs.
* guix/build-system/ocaml.scm (lower): Move (standard-packages) from
'host-inputs' to 'build-inputs'.
This ensures package derivations are not a function of the value
of (%guile-for-build).
* guix/build-system/texlive.scm (texlive-build): Explicitly pass
#:guile-for-build to 'gexp->derivation'.
* gnu/packages/commencement.scm (%final-inputs-riscv64): New variable.
* guix/build-system/gnu.scm (standard-inputs): Use %final-inputs-riscv64
when targeting riscv64-linux.
* guix/build/clojure-build-system.scm (compile-java): New variable.
(build): Copy classes compiled from Java and optionally Java sources to
the final jar.
(%standard-phases): Add compile-java phase before build.
* guix/build/clojure-utils.scm (%java-source-dirs): New variable.
(%java-compile-dir): New variable.
* guix/build-system/clojure.scm (clojure-build): Include %java-source-dirs and
%java-compile-dir.
(builder): Include %java-source-dirs and %java-compile-dir.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>