Commit Graph

1529 Commits

Author SHA1 Message Date
Ludovic Courtès c1a871a166
download: Load X.509 certificates only once.
Previously we'd load /etc/ssl/certs/*.pem (or similar) every time
'http-fetch' is called.

* guix/build/download.scm (make-credendials-with-ca-trust-files): Wrap
in 'mlambda'.
2022-03-03 23:57:00 +01:00
Ludovic Courtès b4acb39b6b
download: Remove obsolete bit from docstring.
This is a followup to f4cde9ac4a.

* guix/build/download.scm (open-connection-for-uri): Remove bit about
'close-connection' from the docstring.
2022-03-03 23:57:00 +01:00
zimoun 1f6ae9a8e0
build: julia-build-system: Fix corner-case for parallel tests.
* guix/build/julia-build-system.scm (check): Do not run parallel tests when
'--cores=1'.

Signed-off-by: Efraim Flashner <efraim@flashner.co.il>
2022-02-24 12:20:32 +02:00
Efraim Flashner 05d469ab9d
build: julia: Add 'julia-package-dependencies' as keyword.
* guix/build-system/julia.scm (link-depot): Accept julia-package-dependencies
keyword and use it for 'julia-create-package-toml' function.
(julia-create-package-toml): Use pattern matching.
(julia-build): Add 'julia-pacakge-dependencies'.
* guix/build/julia-build-system.scm (julia-build): Add
'#:julia-package-dependencies' keyword.

Signed-off-by: Efraim Flashner <efraim@flashner.co.il>
2022-02-24 12:20:31 +02:00
Maxim Cournoyer dde03913b3
build: Fix typo in file-size docstring.
* guix/build/store-copy.scm (file-size): Fix typo.
2022-02-07 16:22:37 -05:00
Julien Lepiller fb1a9c11e5
guix: maven: Fix java parser.
* guix/build/maven/java.scm (comment, comment-chr): Support more comment
styles.
2022-02-05 20:16:32 +01:00
Andrew Tropin f38697f5f8
build-system: emacs: Ensure that package descriptions are generated.
This patch addresses the second part of <https://bugs.gnu.org/48331>.
While existing -pkg.el files were previously installed, no such files
were generated for packages lacking them, resulting in packages not
being listed as installed and not being available towards
“describe-package”.

* guix/build/emacs-build-system.scm (find-root-library-file)
(ensure-package-description): New variables.
(%standard-phases): Add ‘ensure-package-description’.

Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
2022-01-29 08:45:06 +01:00
Maxim Cournoyer 0d41fe4855
Merge branch 'staging' into core-updates.
With "conflicts" resolved in (mostly in favor of master/staging):
	gnu/packages/admin.scm
	gnu/packages/gnuzilla.scm
	gnu/packages/gtk.scm
	gnu/packages/kerberos.scm
	gnu/packages/linux.scm
	guix/lint.scm
2022-01-25 23:48:37 -05:00
Reily Siegel 0f2df54f83
build-system/clojure: Support compiling Java.
* 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>
2022-01-24 10:38:14 +01:00
Reily Siegel 09b4d74bd3
build-system/clojure: Exit with non-zero if tests fail.
* guix/build/clojure-build-system.scm (check): Exit test process with a
non-zero exit code if tests fail.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-01-24 10:38:14 +01:00
Ludovic Courtès 97a6b4581a
compile: Really disable cross-module inlining and related features.
This is a followup to d87a1ba6b8.

* guix/build/compile.scm (strip-keyword-arguments): Rename to...
(clear-keyword-arguments): ... this, and set the value associated with
each of KEYWORDS to #f.
(optimizations-for-level): Adjust accordingly.
2022-01-23 23:03:33 +01:00
Maxim Cournoyer 276f40fdc3
Merge branch 'version-1.4.0'
With resolved conflicts in:
	gnu/packages/gnome.scm
	gnu/packages/openstack.scm
	gnu/packages/python-xyz.scm
2022-01-17 11:47:09 -05:00
Sarah Morgensen 0f71f55a60
build-system/gnu: Make gzip files writable before resetting timestamps.
guix/build/gnu-build-system.scm (reset-gzip-timestamps): Ensure gzip
files are writable before resetting their timestamps.

Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2022-01-10 11:44:47 -05:00
Brendan Tildesley 7f8a896c5f
utils: Fix wrap-script argument handling.
* guix/build/utils.scm (wrap-script):
Don't add (car cl) one too many times, cl its self contains it's car.
Split the aguments string with string-tokenize to avoid leaving an empty
string argument when there should be none. These two bugs seemed to
be partially cancelling each other out so that scripts still worked when
ran with no arguments.

* tests/build-utils.scm: Adjust wrap-script to above changes.
Add two tests to ensure the command line arguments appear identical to a
script and its wrapped version.

Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2022-01-10 11:44:29 -05:00
zimoun a2010ac21b
build: julia-build-system: Create 'Project.toml' file when missing.
* guix/build/julia-build-system.scm (link-depot): Create 'Project.toml' file
when missing using data provided by the user.
(julia-create-package-toml): Remove from export.
* doc/guix.texi (Build Systems): Update julia-build-system section.

Signed-off-by: Efraim Flashner <efraim@flashner.co.il>
2022-01-10 15:15:31 +02:00
Philip McGrath a62e6e3220
guix: node-build-system: Add 'delete-dependencies' helper function.
Many node packages currently skip the configure phase, because they lack
both dependencies and a convenient way to build without all of them, e.g.
for the purposes of bootstrapping.  This patch adds a big hammer to flatten
these nails.

* guix/build/node-build-system.scm (delete-dependencies): New variable.

Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
2022-01-09 02:07:12 +01:00
Philip McGrath df7d787ba4
guix: node-build-system: Add avoid-node-gyp-rebuild phase.
Packages with native addons currently try to write to store paths
when used as dependecies.  This patch adds a phase to replace that
behaviour with a no-op.

* guix/build/node-build-system.scm (avoid-node-gyp-rebuild): New
variable.
(%standard-phases): Add 'avoid-node-gyp-rebuild' after 'install'.

Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
2022-01-09 02:07:11 +01:00
Philip McGrath 2ef3fe9f35
guix: node-build-system: Add JSON utilities.
This commit adds several utility functions for non-destructive
transformation of the JSON representation used by (guix build json),
particularly for purely functional update of JSON objects.  They ought
to eventually be exported from their own module, but for now are kept
private to allow experimentation.

* guix/build/node-build-system.scm (assoc-ref*, jsobject-ref, alist-pop)
(alist-update, jsobject-update*, jsobject-union): New variables.
(with-atomic-json-file-replacement): New public variable.
(module-name, build, patch-dependencies): Use them.  Do not resort to
unsafe alist primitives from Guile core.

Co-authored-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
2022-01-09 02:07:11 +01:00
Philip McGrath 5add4af6fc
guix: node-build-system: Add delete-lockfiles phase.
Guix does not use any of these lock files to determine the package versions
used during the build, so they only serve to cause problems.

* guix/build/node-build-system.scm (delete-lockfiles): New variable.
(%standard-phases): Add 'delete-lockfiles' after 'patch-dependencies'.

Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
2022-01-09 02:07:10 +01:00
Ludovic Courtès d87a1ba6b8
compile: Disable cross-module inlining and related features.
This makes no difference on Guile <= 3.0.7.

* guix/build/compile.scm (strip-keyword-arguments): New procedure.
(optimizations-for-level): Use it to strip keywords related to
cross-module inlining.
2022-01-14 22:39:24 +01:00
Reily Siegel 4b770d3adf
build: clojure-utils: Don't try to compile Clojure.
* guix/build/clojure-utils.scm (%aot-include): Add "data-readers" to the
default list of files to exclude from ahead-of-time compilation.
2022-01-12 17:43:02 +01:00
Ryan Sundberg bfdeba11f8
linux-container: Handle CLONE_NEWCGROUP and use it by default.
Adds low-level support for launching Linux containers with cgroup namespaces.

* gnu/build/linux-container.scm (%namespaces): Add 'cgroup.
(namespaces->bit-mask): Handle it.
* guix/build/syscalls.scm (CLONE_NEWCGROUP): New variable.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-01-05 23:44:18 +01:00
Sarah Morgensen c90f73f816
build-system/go: Initialize build cache from input packages.
* guix/build/go-build-system.com (setup-go-environment): Set GOCACHE to
a location within the build directory.  Union "/var/cache/go/build"
input directories to initialize the cache.  Generate "trim.txt" within
the cache, with the current time.

Signed-off-by: Leo Famulari <leo@famulari.name>
2021-12-24 16:32:25 -05:00
Efraim Flashner 6ccf8ea81f
Merge branch 'master' into core-updates 2021-12-19 15:15:11 +02:00
Maxim Cournoyer 046a23e63a
build-system: emacs: Do not rely on input labels in the 'build' phase.
This commit repairs the Emacs build system for packages using the new
label-less "guix style".  Tested with emacs-libgit.

* guix/build/emacs-build-system.scm (build): Use search-input-file to locate
emacs.
2021-12-14 11:18:46 -05:00
Nicolas Goaziou 41e61e4fed
guix: Fix typo in last commit.
* guix/build/emacs-build-system.scm (make-autoloads): Fix typo.
2021-12-14 15:49:15 +01:00
Nicolas Goaziou 6717ce28d0
guix: Do not assume "emacs" label in make-autoloads.
* guix/build/emacs-build-system.scm (make-autoloads): Look for "emacs"
executable independently on the label.
2021-12-14 15:48:02 +01:00
Ricardo Wurmus 9bc0f45df5
Merge remote-tracking branch 'origin/master' into core-updates-frozen 2021-12-05 19:17:41 +01:00
Liliana Marie Prikler 98cec36957
build-system: emacs: Keep -pkg.el files.
Partly fixes <https://bugs.gnu.org/48331> -- package descriptions can now be
found in the install directory.

* guix/build/emacs-build-system.scm (%default-exclude): Remove "-pkg\\.el$".
2021-12-03 21:39:50 +01:00
zimoun 73f55957cf
build: julia-build-system: Correctly disable parallel tests.
* guix/build/julia-build-system.scm: Remove phases trailing #t.
[phases]{check}: Omit the --procs argument when parallel tests are to be
disabled.  Substract 1 from the number of parallel jobs otherwise.

Co-authored-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2021-11-27 01:22:33 -05:00
zimoun 905b090582
build: julia-build-system: Add support for parallel tests.
The tests are defined by the script 'test/runtests.jl' from packages and the
parallelism depends on the implementation of this script.  Therefore, 'julia'
is launched using local worker processes accordingly with 'parallel?'.

* guix/build/julia-build-system.scm (check): Set the JULIA_CPU_THREADS
environment variable and invoke julia with the '--procs' option.
* guix/build-system/julia.scm (julia-build)[parallel-tests?]: New argument.

Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2021-11-25 01:04:17 -05:00
Ludovic Courtès b15e543d30
Merge branch 'master' into core-updates-frozen 2021-11-23 11:29:38 +01:00
Josselin Poiret 0831dfab75
system: Add swap flags.
* gnu/system/file-systems.scm (swap-space)[priority, discard?]: Add
them.
* guix/build/syscalls.scm (SWAP_FLAG_PREFER, SWAP_FLAG_PRIO_MASK,
SWAP_FLAG_PRIO_SHIFT, SWAP_FLAG_DISCARD): Add them.
* gnu/build/file-systems.scm (swap-space->flags-bit-mask): Add it.
* gnu/services/base.scm (swap-service-type): Use it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-11-23 10:24:27 +01:00
Maxim Cournoyer 8444b44a8c
build: syscalls: Add a SET-CHILD-SUBREAPER! procedure.
* guix/build/syscalls.scm (PR_SET_CHILD_SUBREAPER): New variable.
(set-child-subreaper!): New procedure.
2021-11-20 08:57:00 -05:00
Ludovic Courtès 3a317f7476
Merge branch 'master' into core-updates-frozen 2021-11-17 23:43:14 +01:00
Jean-Baptiste Volatier 3af351a7de
build-system/julia: Enable Julia Pkg to find installed packages.
Julia's built-in package manager (Pkg) looks for packages in
JULIA_DEPOT_PATH/packages/PACKAGENAME/XXXX, where XXXX is a string
encoding package UUID and SHA1 of files.  The link-depot phase creates
a link at the correct location to allow Pkg to find packages that were
already installed by Guix.

* guix/build/julia-build-system.scm (link-depot): New phase.
(%package-path): Modified package path from packages/ to loadpath/.
(project.toml->uuid): New procedure, retrive package uuid from TOML file.
(precompile, check): Adjust to the change in paths.
(%standard-phases): Add link-depot phase.
(julia-build): Add julia-package-uuid keyword.
* guix/build-system/julia.scm (julia-build): Also use the
julia-package-uuid keyword.
* gnu/packages/julia-jll.scm (julia-bzip2-jll, julia-cairo-jll,
julia-compilersupportlibraries-jll, julia-expat-jll, julia-ffmpeg-jll,
julia-fontconfig-jll, julia-freetype2-jll, julia-fribidi-jll,
julia-gettext-jll, julia-glib-jll, julia-gr-jll, julia-gumbo-jll,
julia-imagemagick-jll, julia-jllwrappers-jll, julia-jpegturbo-jll,
julia-lame-jll, julia-libass-jll, julia-libfdk-aac-jll,
julia-libffi-jll, julia-libgcrypt-jll, julia-libglvnd-jll,
julia-libgpg-error-jll, juli-libiconv-jll, julia-libmount-jll,
julia-libpng-jll, julia-libsass-jll, julia-libtiff-jll,
julia-libuuid-jll, julia-libvorbis-jll, julia-lzo-jll,
julia-mbedtls-jll, julia-ogg-jll, julia-openspecfun-jll,
julia-openssl-jll, julia-opus-jll, julia-pcre-jll, julia-pixman-jll,
julia-qt5base-jll, julia-wayland-jll, julia-wayland-protocols-jll,
julia-x264-jll, julia-x265-jll, julia-xkbcommon-jll, julia-xml2-jll,
julia-xorg-libpthread-stubs-jll, julia-xorg-libx11-jll,
julia-xorg-libxau-jll, julia-xorg-libxcb-jll, julia-xorg-libxcursor-jll,
julia-xorg-libxdmcp-jll, julia-xorg-libxext-jll,
julia-xorg-libxfixes-jll, julia-xorg-libxi-jll,
julia-xorg-libxinerama-jll, julia-xorg-libxkbfile-jll,
julia-xorg-libxrandr-jll, julia-xorg-libxrender-jll,
julia-xorg-xcb-util-jll, julia-xorg-xcb-util-keysyms-jll,
julia-xorg-xcb-util-renderutil-jll, julia-xorg-xcb-util-wm-jll,
julia-xorg-xkbcomp-jll, julia-xorg-xkeyboard-config-jll,
julia-xorg-xtrans-jll, julia-xslt-jll, julia-zlib-jll, julia-zstd-jll)
[argument]: Adjust the order of the phases to the change in the
julia-build-system.
* gnu/packages/julia-xyz.scm (julia-bufferedstreams, julia-calculus,
julia-dataframes, julia-datavalues, julia-distances, julia-documenter,
julia-dualnumbers, julia-ellipsisnotation, julia-expronicon,
julia-fileio, julia-fixedpointnumbers, julia-functionwrappers,
julia-fuzzycompletions, julia-genericlinearalgebra, julia-genericschur,
julia-geometrybasics, julia-imagemagick, julia-infinity,
julia-matrixfactorizations, julia-media, julia-missings, julia-nnlib,
julia-optimtestproblems, julia-orderedcollections, julia-prettytables,
julia-pycall, julia-quadmath, julia-safetests, julia-stackviews)
[arguments]: Correct paths to reflect change of %package-path modify
order of phases as link-depot needs to run on an unmodified src
directory add package-name-uuid keyword argument to packages without
Project.toml file.
* gnu/packages/julia.scm (julia)[native-search-paths]: Correct paths to
reflect change of %package-path modify order of phases as link-depot
needs to run on an unmodified src directory.

Signed-off-by: Efraim Flashner <efraim@flashner.co.il>
2021-11-16 14:39:51 +02:00
Vagrant Cascadian 75cae188ad
build: wrap-qt-program: Fix typo.
* gnu/build/qt-utils.scm (wrap-qt-program): Fix spelling of "program".
2021-11-14 18:02:22 -08:00
Maxim Cournoyer dfcc96d8f4
build: meson: Replace the 'test-target' argument by 'test-options'.
This change is motivated by the need to disable the default 30 seconds timeout
that Meson uses (see: https://gitlab.gnome.org/GNOME/glib/-/issues/2522), and
also by desire to specify extra options to run the check phase without having
to override it.

* guix/build-system/meson.scm (meson-build) <test-target>: Replace argument
with...
<test-options>: ... this one.
* guix/build/meson-build-system.scm (check): Invoke 'meson test' instead of
'ninja test-target', as the former is configurable via options.
* doc/guix.texi (Build Systems) <meson-build-system>: Update doc.
2021-11-11 12:18:32 -05:00
Maxim Cournoyer e0d9c37982
build: glib-or-gtk: Generate the gdk-pixbuf-loaders cache file in a phase.
Adding a profile hook to do so covers most use cases, but it is still
necessary to have the gdk-pixbuf loaders cache file computed at build time, as
software may expect to find loaders support at that time.

* guix/build/glib-or-gtk-build-system.scm: Delete trailing #t.
(%gdk-pixbuf-loaders-cache-file-prefix): New variable.
(generate-gdk-pixbuf-loaders-cache): New procedure.
(generate-gdk-pixbuf-loaders-cache-file): Add procedure...
(%standard-phases): ... and register it as a build phase.
2021-11-11 12:18:19 -05:00
Maxim Cournoyer 889eebc185
build: glib-or-gtk-build-system: Fix indentation.
* guix/build/glib-or-gtk-build-system.scm (gtk-module-directories)
(wrap-all-programs): Fix indentation.
2021-11-11 12:18:13 -05:00
Maxim Cournoyer eb619cda36
build: glib-or-gtk-build-system: Simplify the wrap-all-programs phase.
* guix/build/glib-or-gtk-build-system.scm (wrap-all-programs)
<handle-output>: Precisely build the list of variable specifications, rather
than relying on a bunch of conditionals.
2021-11-11 12:18:12 -05:00
Brendan Tildesley 3dfe45c3f1
build: qt-utils: Don't wrap .X-real files.
* guix/build/qt-utils.scm (find-files-to-wrap): Exclude already wrapped
programs.  This is forbidden in wrap-program now due to a738a663a9.

Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2021-11-11 10:31:31 -05:00
Efraim Flashner bc5155b952
Merge remote-tracking branch 'origin/master' into core-updates-frozen 2021-10-31 14:49:47 +02:00
Ludovic Courtès 0a42998a50
syscalls: Gracefully handle failure to load libc's libutil.
In particular, libutil is not found when running code on a
statically-linked Guile.

Reported by mahmooz on #guix.

* guix/build/syscalls.scm (syscall->procedure): Add #:library parameter
and honor it.
(openpty, login-tty): Use 'syscall->procedure' instead of calling
'dynamic-link' directly.
2021-10-26 14:53:43 +02:00
Ludovic Courtès f87371bf3e
syscalls: Add 'openpty' and 'login-tty'.
* guix/build/syscalls.scm (openpty, login-pty): New procedures.
* tests/syscalls.scm ("openpty", "openpty + login-tty"): New tests.
2021-10-26 12:46:27 +02:00
Mathieu Othacehe e486b2b674
Merge remote-tracking branch 'signed/master' into core-updates 2021-10-18 14:37:26 +00:00
Efraim Flashner 0cd912186a
build-system/go: Fix building on host's secondary architecture.
Before when building for i686-linux on x86_64-linux GOARCH would be set
to amd64, not 386.

* guix/build-system/go.scm (go-build): Set goarch and goos to #f when
not cross-compiling.
* guix/build/go-build-system.scm (setup-go-environment): Set GOARCH
according to the calculated goarch or using GOHOSTARCH and GOOS
according to the calculated goos or using GOHOSTOS.
2021-10-18 14:53:17 +03:00
Julien Lepiller 0623138ffa
maint: Factorize po xref translation.
This ensures we use the same method in "make" as in "guix/self.scm".

* Makefile.am: Build guix/build/po.scm.
* build-aux/convert-xref.scm: New file.
* doc/local.mk (xref_command): Use it.
* guix/self.scm (translate-cross-references): Move it...
* guix/build/po.scm: Parse comments and flags separately to find fuzzy
flags.
(translate-cross-references): ...here.
(parse-tree->assoc): Ignore fuzzy entries.
2021-10-17 18:26:44 +02:00
Vivien Kraus 9a8c7808cc
build-system/minetest: Install config.txt and _config.txt.
* guix/build/minetest-build-system.scm (mod-install-plan):
Add "config.txt" and "_config.txt" to the list of installed files.

Signed-off-by: Tobias Geerinckx-Rice <me@tobias.gr>
2021-10-16 17:30:31 +02:00
Vivien Kraus b0248a52e0
build-system/minetest: Gather whole failing test output.
* guix/build/minetest-build-system.scm (check):
Gather the whole output when a test fails.

Signed-off-by: Tobias Geerinckx-Rice <me@tobias.gr>
2021-10-16 17:30:30 +02:00
Ludovic Courtès 5b81999c89
download: Print URL of the Disarchive spec being read.
* guix/build/download.scm (disarchive-fetch/any): Show URI of the
Disarchive spec.
2021-10-14 16:45:06 +02:00
Ludovic Courtès 689d529e74
download: Add missing autoload.
This is a followup to 6d02a994f9, which
left '%verify-swh-certificate?' unbound.

* guix/build/download.scm: Autoload for '%verify-swh-certificate'.
2021-10-14 15:44:51 +02:00
Mathieu Othacehe a1eca979fb
Merge remote-tracking branch 'origin/master' into core-updates-frozen. 2021-10-12 17:46:23 +00:00
Tobias Geerinckx-Rice a1679b74c9
Revert the #51061 patch series for now.
This reverts commits f63c79bf76
..f86f7e24b39928247729020df0134e2e1c4cde62 for more chillax reviewing.

See <https://issues.guix.gnu.org/51061#32>.
2021-10-08 23:31:34 +02:00
Lars-Dominik Braun b74ca403cb
build-system/haskell: Explain failure.
Provide human-readable failure message and explain how to fix it.

* guix/build/haskell-build-system.scm (register): Raise error if source
file does not exist.
2021-10-08 09:13:52 +02:00
Lars-Dominik Braun a01daed62c
build-system/haskell: Accept line breaks in config files.
Long id’s will break to the next line.

* guix/build/haskell-build-system.scm (grep): Remove.
(register): Modify regular expression to account for newlines between
key and value, fail if package id is empty.
2021-10-08 09:13:52 +02:00
Lars-Dominik Braun 7cdb65dc9c
build-system/haskell: Do not rely on compiler name.
We’ve been relying on the compiler name matching its package
subdir. Since we effectively only support GHC we can hard-code this and
avoid issues with “ghc-next”.

* guix/build/haskell-build-system.scm (make-ghc-package-database):
Use GHC_PACKAGE_PATH.
(register): Hard-code ghc prefix.
2021-10-08 09:13:51 +02:00
John Kehayias fe56213027
guix: haskell-build-system: Always pass -package-db option.
* guix/build/haskell-build-system.scm (run-setuphs): Pass -package-db option.

Signed-off-by: Ricardo Wurmus <rekado@elephly.net>
2021-10-08 09:13:46 +02:00
Hartmut Goebel 1660253c3c
build-system: Add 'rebar3-build-system'.
* guix/build-system/rebar3.scm, guix/build/rebar3-build-system.scm: New files.
* Makefile.am (MODULES): Add them.
2021-10-07 22:35:28 +02:00
Ludovic Courtès 6d02a994f9
download: Honor #:verify-certificate? for SWH downloads.
Previously, the SWH + Disarchive fallback could fail with:

  Trying to use Disarchive to assemble /gnu/store/…-ucsim-0.6-pre68.tar.gz...
  Assembling the directory ucsim-0.6-pre68
  Downloading /gnu/store/…-ucsim-0.6-pre68.tar.gz from Software Heritage...
  X.509 certificate of 'archive.softwareheritage.org' could not be verified:
    signer-not-found
    invalid

  Could not resolve directory reference

This will no longer be the case since 'guix perform-download'
passes #:verify-certificate? #f.

* guix/build/download.scm (disarchive-fetch/any): Parameterize
'%verify-swh-certificate?'.
2021-10-07 10:47:43 +02:00
Maxime Devos 77b98bf187
build/qt-utils: Allow overriding the shell interpreter used.
* guix/build/qt-utils.scm
  (wrap-qt-program*): Add #:sh argument and pass it to 'wrap-program'.
  (wrap-qt-program): Likewise, but pass it to 'wrap-qt-program*' instead.
  (wrap-all-qt-programs): Likewise, but pass it to 'wrap-qt-program' instead.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2021-10-02 11:00:06 +00:00
Maxime Devos 8a55fde935
build/minetest-build-system: Move png-file? to (guix build utils).
It's not really Minetest-specific.  It was only placed in
(guix build minetest-build-system) to avoid a world rebuild.

* guix/build/minetest-build-system.scm (%png-magic-bytes,png-file?):
  Move to ...
* guix/build/utils.scm (%png-magic-bytes,png-file?): ... here.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2021-10-02 11:00:02 +00:00
Mathieu Othacehe ba049bb2da
build: glib-or-gtk-build-system: Add gtk 4.0 support.
* guix/build/glib-or-gtk-build-system.scm (gtk-module-directories): Add gtk
4.0 support.
2021-10-02 10:54:21 +00:00
Tobias Geerinckx-Rice bdd190e3aa
build-system: linux-module: Don't explicitly return #t from phases.
* guix/build-system/linux-module.scm (configure): Remove explicit #t return value.
2021-10-01 21:27:35 +02:00
Tobias Geerinckx-Rice 834415c33a
build-system: linux-module: Build and install in parallel.
* guix/build-system/linux-module.scm (linux-module-build)
(guix/build-system/linux-module.scm): Accept the PARALLEL-BUILD? keyword
and pass it on to the builder.
* guix/build/linux-module-build-system.scm (build, install): Capture and
honour it.
2021-10-01 21:27:35 +02:00
Tobias Geerinckx-Rice a939011b58
build-system: linux-module: Normalise the ‘M’ source-directory.
"make modules_install" with an "M=" file name ending in "/." breaks at
least rtl8812au-aircrack-ng-linux-module.  In general, passing a more
human-generated-looking value seems prudent as these are more likely to
be tested upstream.

* guix/build/linux-module-build-system.scm (build, install): Call
CANONICALIZE-PATH on SOURCE-DIRECTORY instead of STRING-APPEND.

Reported by Maxim Cournoyer <maxim.cournoyer@gmail.com>.
as apteryx on #guix
2021-09-30 07:17:01 +02:00
Ludovic Courtès afe8c67ac1
union: Do not warn about "ld.so.cache" collisions.
This is a followup to f85efa86e7.

* guix/build/union.scm (%harmless-collisions): Add "ld.so.cache".
2021-09-25 18:52:05 +02:00
Liliana Marie Prikler 719bbcc15e
Update copyright assignments for Liliana Marie Prikler.
* doc/guix.texi: Update copyright name for Liliana Marie Prikler.
* gnu/packages/build-tools.scm: Update copyright name and email for Liliana
Marie Prikler.
* gnu/packages/convmv.scm: Likewise.
* gnu/packages/emacs-xyz.scm: Likewise.
* gnu/packages/emacs.scm: Likewise.
* gnu/packages/esolangs.scm: Likewise.
* gnu/packages/game-development.scm: Likewise.
* gnu/packages/games.scm: Likewise.
* gnu/packages/gnome-xyz.scm: Likewise.
* gnu/packages/gnome.scm: Likewise.
* gnu/packages/gstreamer.scm: Likewise.
* gnu/packages/guile-xyz.scm: Likewise.
* gnu/packages/minetest.scm: Likewise.
* gnu/packages/music.scm: Likewise.
* gnu/packages/patches/minetest-add-MINETEST_MOD_PATH.patch: Likewise.
* gnu/packages/patches/ppsspp-disable-upgrade-and-gold.patch: Likewise.
* gnu/packages/patches/webkitgtk-bind-all-fonts.patch: Likewise.
* gnu/packages/python-xyz.scm: Likewise.
* gnu/packages/unicode.scm: Likewise.
* gnu/packages/xorg.scm: Likewise.
* gnu/services/sound.scm: Likewise.
* guix/build-system/renpy.scm: Likewise.
* guix/build/emacs-utils.scm: Likewise.
* guix/build/renpy-build-system.scm: Likewise.
2021-09-25 09:34:36 +02:00
Tobias Geerinckx-Rice 348f0c61ef
syscalls: Deduplicate device number conversion.
* guix/cpio.scm (device-number, device->major+minor):
Move to, and subsequently import from, …
* guix/build/syscalls.scm (device-number, device-number->major+minor):
…here.  Note the slight name change.
(mounts): Replace 16-bit open code with a DEVICE-NUMBER call.
* gnu/build/linux-boot.scm (device-number):
Remove duplicate 16-bit implementation in favour of the one above.
(resume-if-hibernated): Reuse DEVICE-NUMBER->MAJOR+MINOR.
2021-09-23 18:17:16 +02:00
Ludovic Courtès 5871639bb1
download: Fall back to web.archive.org as a very last resort.
Suggested by Florian Pelz <pelzflorian@pelzflorian.de>.

* guix/build/download.scm (internet-archive-uri): New procedure.
(url-fetch): Append it to the list of URIs after
CONTENT-ADDRESSED-URIS.
2021-09-22 16:14:39 +02:00
Marius Bakke 5c3cb22c9b
Merge branch 'master' into core-updates-frozen
Conflicts:
	gnu/packages/bioinformatics.scm
	gnu/packages/chez.scm
	gnu/packages/docbook.scm
	gnu/packages/ebook.scm
	gnu/packages/gnome.scm
	gnu/packages/linux.scm
	gnu/packages/networking.scm
	gnu/packages/python-web.scm
	gnu/packages/python-xyz.scm
	gnu/packages/tex.scm
	gnu/packages/version-control.scm
	gnu/packages/xml.scm
	guix/build-system/dune.scm
	guix/build-system/go.scm
	guix/build-system/linux-module.scm
	guix/packages.scm
2021-09-17 01:25:52 +02:00
Liliana Marie Prikler c8e2358cca
build-system: linux-module: Support source-directory.
As with guile-build-system, the module to be build need not necessarily live
at the root of the build tree.

* guix/build/linux-module-build-system.scm (build, install): Add
source-directory argument and append it to "M" variable when invoking make.
* guix/build-system/linux-module.scm (linux-module-build): Add
source-directory argument.
2021-09-14 23:27:36 +02:00
Ludovic Courtès 3cb5ae8577
download: Disarchive mirrors can be URL-returning procedures.
As discussed at <https://issues.guix.gnu.org/47336#16>.

* guix/build/download.scm (url-fetch)[disarchive-uris]: Accept MIRROR as
a procedure.
* guix/download.scm (%disarchive-mirrors): Add comment.  This change can
only be made once a 'guix perform-download' that understands procedures
is widely deployed.
2021-09-14 11:50:58 +02:00
Efraim Flashner de4f5df95d
build/go: Support cross compiling.
* guix/build-system/go.scm (go-target): New procedure.
(go-build): Add goarch, goos keywords. Adjust bag depending if doing a
native or cross compile.
(go-cross-build): New procedure.
* guix/build/go-build-system.scm (setup-go-environment): Accept goarch,
goos keywords. Set go environment variables based on target architecture.
* doc/guix.texi (Build Systems): Mention new go-build-system keywords.
2021-09-13 15:33:30 +03:00
pukkamustard f8f94cc544
guix: dune-build-system: Put dune into a reproducible release mode.
* guix/build/dune-build-system.scm (build,check): Replace the profile parameter
with the appropriate release flags.
* guix/build-system/dune.scm: Remove the profile parameter.
* doc/guix.texi: Remove paragraph on profile parameter.

Signed-off-by: Julien Lepiller <julien@lepiller.eu>
2021-09-08 13:39:27 +02:00
Ludovic Courtès d9dfbf886d
Merge branch 'master' into core-updates-frozen 2021-09-07 14:19:08 +02:00
Marius Bakke b029be2ee0
Merge branch 'master' into core-updates-frozen
Conflicts:
	gnu/packages/bioinformatics.scm
	gnu/packages/cmake.scm
	gnu/packages/curl.scm
	gnu/packages/emacs-xyz.scm
	gnu/packages/gpodder.scm
	gnu/packages/music.scm
	gnu/packages/patches/glibc-bootstrap-system.patch
	gnu/packages/python-xyz.scm
	gnu/packages/shells.scm
	gnu/packages/statistics.scm
2021-07-29 22:34:57 +02:00
pukkamustard 33a1ec29fa
guix: dune-build-system: Add a profile parameter.
* guix/build-system/dune.scm: Add a profile parameter.
* guix/build/dune-build-system.scm (build): Use it.
* doc/guix.texi: Document it.
* gnu/packages/ocaml.scm: Remove profile being set from build flags.

Signed-off-by: Julien Lepiller <julien@lepiller.eu>
2021-08-20 23:51:11 +02:00
Maxime Devos 3df485152c
build-system: Add 'minetest-mod-build-system'.
* guix/build-system/minetest.scm: New module.
* guix/build/minetest-build-system.scm: Likewise.
* Makefile.am (MODULES): Add them.
* doc/guix.texi (Build Systems): Document 'minetest-mod-build-system'.

Signed-off-by: Leo Prikler <leo.prikler@student.tugraz.at>
2021-08-20 12:41:54 +02:00
Mathieu Othacehe 0236013cd0
build: utils: Trim leading slash from search-input-file input.
Make sure that both:

(search-input-file inputs "/bin/sh") and (search-input-file inputs "bin/sh")

are supported.

* guix/build/utils (search-input-file): Trim leading slash character from
FILE.
2021-07-25 19:13:10 +02:00
Thiago Jung Bauermann 04e80290bf
gnu: TeX Live: Use IniTeX to build a couple of packages
The package texlive-latex-base in TeX Live 2021 will depend on
texlive-latex-l3kernel and texlive-latex-l3packages. Therefore we need to
remove their build dependency on texlive-latex-base to avoid a circular
dependency.

l3kernel and l3packages don’t need LaTeX during build, just IniTeX.
So to make them use it, modify texlive-build-system to allow disabling
the #:texlive-latex-base and #:tex-format parameters, and also add
a #:tex-engine parameter.

We also need to add texlive-docstrip as a native input, which was
previously provided by texlive-latex-base.

* gnu/packages/tex.scm (texlive-latex-l3kernel,
texlive-latex-l3packages)[arguments]: Add ‘#:tex-engine’, ‘#:tex-format’
and ‘#:texlive-latex-base’ parameters.
[native-inputs]: Add ‘texlive-docstrip’.
* guix/build-system/texlive.scm (lower)[build-inputs]: Don’t add
‘texlive-latex-base’ if its keyword parameter is false.
(texlive-build): Add ‘tex-engine’ keyword parameter.
[builder]: If a ‘tex-engine’ parameter was passed, use it. Otherwise, use
‘tex-format’ as the engine.
* guix/build/texlive-build-system.scm (compile-with-latex): Add ‘engine’
parameter. If the ‘format’ parameter is false, add “-ini” option to the
command line.
(build): Add ‘tex-engine’ parameter. Pass it down to ‘compile-with-latex’.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-07-21 15:55:26 +02:00
Charles 385c485c65
build: Update uglifyjs for minify-build-system.
* guix/build-system/minify.scm (default-uglify-js): Update uglifyjs package used.
* guix/build/minify-build-system.scm (minify): Use updated uglifyjs command name.

Signed-off-by: Efraim Flashner <efraim@flashner.co.il>
2021-07-19 14:46:28 +03:00
Ludovic Courtès 0e47fcced4
Merge branch 'master' into core-updates 2021-07-18 19:50:01 +02:00
Maxim Cournoyer c170abba47
build: pack: Mute error output when checking if tar supports --sort.
* guix/build/pack.scm (tar-base-options) [tar-supports-sort?]: Redirect error
output to void.
2021-07-18 02:11:13 -04:00
Maxime Devos 8456581375
build-system/meson: Support cross-compilation.
For cross-compilation, meson needs to be passed a
‘cross file’ with information on the architecture,
CPU type, endianness and operating system, and the
name of the cross-compiler binaries.

The new module (guix build meson-configuration) has
some utilities for writing these cross files, used
by 'make-cross-file' in a G-exp.  The values for
the cross file are generated by 'make-machine-alist'
and 'make-binaries-alist'.

'make-machine-alist' and 'make-binaries-alist' live
on the host side, such that new architectures and operating
systems can be added without causing rebuilds for old
architectures.

All operating systems and targets supported by Guix are
theoretically supported, but only aarch64-linux-gnu,
powerpc64le-linux-gnu and arm-linux-gnueabihf have been
tested.  i686-linux-gnu has also been tested with a previous
version of this patch series but required some changes
to 'cross-base.scm'.

This has been tested with:

$ ./pre-inst-env guix build glib --target=TARGET

* guix/build/meson-configuration.scm
  (write-section-header): New procedure.
  (write-assignment): New procedure.
  (write-assignments): New procedure.
* guix/build-system/meson.scm
  (target-hurd?): New predicate.
  (make-machine-alist): New procedure.
  (make-binaries-alist): New procedure.
  (make-cross-file): New procedure.
  (meson-cross-build): New procedure.
  (lower)[build-inputs]: Add standard cross packages when cross-compiling.
  Do not include regular 'inputs' when cross-compiling.
  (lower)[host-inputs]: Include 'inputs' when cross-compiling.
  (lower)[target-inputs]: Add cross packages when cross-compiling.
  (lower)[build]: Call 'meson-cross-build' instead of 'cross-build'
  when cross-compiling.
  (lower)[target]: Set it.
  (lower)[private-keywords]: Do not remove #:target when cross-compiling.

Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2021-07-14 15:57:40 +02:00
Ludovic Courtès 7a9f4822c0
utils: Add 'search-input-directory'.
* guix/build/utils.scm (search-input-directory): New procedure.
* doc/guix.texi (Build Utilities): Document it next to
'search-input-file'.  Tweak wording.
2021-07-08 00:28:57 +02:00
Maxime Devos 198df03756
build-system/gnu: patch-shebangs: Also patch shebangs in "/libexec".
Shebangs in "/bin" and "/sbin" subdirectories are currently
patched by patch-shebangs. But shebangs in "/libexec" currently
aren't, even though they occasionally need to be. E.g. when using
wrap-program on an executable in "libexec" without an explicit #:sh
when cross-compiling.

* guix/build/gnu-build-system.scm (patch-shebangs):
  Add "/libexec" to 'bin-directories'.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-07-08 00:28:57 +02:00
Tobias Geerinckx-Rice 0dd136bc36
Revert "syscalls: 'terminal-dimension' ignores EPERM."
This reverts commit 17a102332a.
See <https://github.com/koverstreet/bcachefs/pull/277>.
2021-07-07 13:56:16 +02:00
Maxim Cournoyer d5c9cc6d9d
build: qt-utils: Wrappers set 'QTWEBENGINEPROCESS_PATH' if needed.
This reinstate commit the reverted fed28a9632,
now rebased on top of conflicting changes.

* guix/build/qt-utils.scm:  Remove extraneous newlines.
(variables-for-wrapping): Add comments.  Define a file type entry for each
variable definition, and use it to determine if we should look for directories
versus plain files.
<QTWEBENGINEPROCESS_PATH>: New environment variable.
(wrap-all-qt-programs): Remove trailing #t.
2021-07-02 16:50:10 -04:00
Ludovic Courtès 20cf23e4f8
build: qt-utils: Refactor the code to filter XDG_DATA_DIRS.
This partially reinstate the reverted
c5fd1b0bd3.

* guix/build/qt-utils.scm (variables-for-wrapping)[collect-sub-dirs]:
Add 'selectors' parameter and honor it.  Change caller to handle selectors.

Modified-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2021-07-02 16:50:10 -04:00
Jakub Kądziołka 86c9f5a5fa
guix: qt-utils: Don't include useless inputs in wrapped variables.
Include only those inputs into XDG_DATA_DIRS having
some subdirectory of /share which is typically used by Qt.

* guix/build/qt-utils.scm (variables-for-wrapping): Take the
  output directory as an argument for special handling. Check for
  subdirectories of /share used by Qt before including inputs in
  XDG_DATA_DIRS.
  (wrap-qt-program*): Pass the output directory to variables-for-wrapping.

Co-authored-by: Hartmut Goebel <h.goebel@crazy-compilers.com>
2021-07-02 16:50:09 -04:00
Jakub Kądziołka 76174aa991
build-system: qt: Exclude useless inputs from wrapped variables.
* guix/build-system/qt.scm (qt-build)[qt-wrap-excluded-inputs]: New argument.
* guix/build/qt-utils.scm (%qt-wrap-excluded-inputs): New variable.
  (wrap-qt-program*)[qt-wrap-excluded-inputs]: New argument. Filter excluded
  inputs.
  (wrap-qt-program)[qt-wrap-excluded-inputs]: New argument.
  (wrap-all-qt-programs)[qt-wrap-excluded-inputs]: New argument.

Co-authored-by: Hartmut Goebel <h.goebel@crazy-compilers.com>
2021-07-02 16:50:09 -04:00
Hartmut Goebel 30759c4aad
guix: qt-utils: Wrapped executables honor user's envvars.
Prior to this change, wrappers did set the specified environment variables to
a fixed value, overwriting any user settings. This inhibited propagating
e.g. XDG_DATA_DIRS from a profile to the application.

Now user environment variables are prefixed (if the variable defines some
"binary" search path, e.g. QT_PLUGIN_PATH) or suffixed (if the variable
defines some config or data search path, e.g. XDG_DATA_DIRS). The code could
also allow to overwrite, anyhow currently no variable is defined like this.

* guix/build/qt-utils.scm (variables-for-wrapping): For each env-var to
  be wrapped, specify whether it should prefix, suffix or overwrite the
  user's variable.
2021-07-02 16:50:09 -04:00
Hartmut Goebel 7e24e1e58d
guix: qt-build-system, qt-utils: Unify wrapping of qt-programs.
Unify (guix qt-build-system wrap-all-programs) and
(guix qt-utils wrap-qt-program), so both behave the same.
The functions now reside in qt-utils to make them easily available for
packages not using the qt-build-system.

* guix/build/qt-build-system.scm (variables-for-wrapping, wrap-all-programs):
  Move from here ...
* guix/build/qt-utils.scm (variables-for-wrapping, wrap-all-qt-programs):
  ... to here. Base the later on
  (wrap-qt-program*): New function, carved out from old wrap-all-programs.
  (wrap-qt-program): Base on wrap-qt-program*, change arguments in an
  incompatible way.
* gnu/packages/bittorrent.scm (qbittorrent)[arguments]<phases>{wrap-qt}:
  Adjust to new interface of wrap-qt-program.
* gnu/packages/finance.scm (electron-cash): Likewise.
* gnu/packages/geo.scm (qgis): Likewise.
* gnu/packages/password-utils.scm (qtpass): Likewise.
* gnu/packages/video.scm (openshot): Likewise.
* gnu/packages/web-browsers.scm (kristall): Likewise.
2021-07-02 16:50:09 -04:00
Maxim Cournoyer 1879b05f90
Revert "build-system/qt: Wrappers only include relevant directories to XDG_DATA_DIRS."
This reverts commit c5fd1b0bd3.  It will need to
be refactored on top of 2214b7b78d.
2021-07-02 16:50:09 -04:00
Maxim Cournoyer 15fd870c3f
Revert "build-system/qt: Wrappers set 'QTWEBENGINEPROCESS_PATH' if needed."
This reverts commit 06eb21856f.  It will need to
be refactored to fit on top of 2214b7b78d.
2021-07-02 16:50:09 -04:00
Maxim Cournoyer 3a94998f5e
Revert "build-system/qt: Fix wrapping with QTWEBENGINEPROCESS_PATH."
This reverts commit fed28a9632.  It will need to
be refactored to fit on top of 2214b7b78d.
2021-07-02 16:50:09 -04:00
Maxim Cournoyer 7708c0b5e3
pack: Factorize base tar options.
* guix/docker.scm (%tar-determinism-options): Move to a new module and rename
to `tar-base-options'.  Adjust references accordingly.
* guix/build/pack.scm: New file.
* Makefile.am (MODULES): Register it.
* guix/scripts/pack.scm (self-contained-tarball/builder): Use it.
2021-06-29 14:53:21 -04:00
Ludovic Courtès b36267b1d9
download: 'tls-wrap' retries handshake upon non-fatal errors.
Fixes <https://bugs.gnu.org/49223>.
Reported by Domagoj Stolfa <ds815@gmx.com>.

* guix/build/download.scm (tls-wrap): Retry up to 5 times when
'handshake' throws a non-fatal error.
2021-06-25 23:44:15 +02:00
Lars-Dominik Braun 9c93573d15
build: Make outputs of node-build-system reproducible.
package.json records two hashes of package.tgz, which change for each
build, resulting in non-reproducible builds.

* guix/build/node-build-system.scm (repack): Add reproducibility options
to tar command.
2021-06-24 14:10:29 +02:00
Tobias Geerinckx-Rice 9dea3f101f
Merge branch 'master' into core-updates
Conflicts:
	gnu/packages/cups.scm
	gnu/packages/python-web.scm
	gnu/packages/web.scm
	guix/build/maven/pom.scm
2021-06-23 18:45:21 +02:00
Ludovic Courtès b9a95420ab
profiles: Build union of inputs in the right order.
Fixes <https://bugs.gnu.org/49102>.
Reported by Mathieu Othacehe <othacehe@gnu.org>
and Tobias Geerinckx-Rice <me@tobias.gr>.

Fixes a regression introduced in
8cef92d063, whereby in case of file
collisions, the "wrong" one would take precedence.

* guix/build/profiles.scm (manifest-sexp->inputs+search-paths): Perform
a breadth-first traversal.  Reverse INPUTS and SEARCH-PATHS in the base
case.
* tests/profiles.scm ("profile-derivation, ordering & collisions"):
New test.
2021-06-22 17:55:05 +02:00
Julien Lepiller 7f902d368d
guix: java-utils: Look for actual jar files.
* guix/build/java-utils.scm (install-from-pom): Fix `find-files` to look
only for jar files.
2021-06-22 13:10:36 +02:00
Julien Lepiller cc09453862
guix: maven: Use a temporary file to fix pom files.
* guix/build/maven/pom.scm (fix-pom-dependencies): Actually use the
temporary file that was created.
2021-06-22 13:10:32 +02:00
Julien Lepiller 5bb3395c42
guix: maven: Look in local packages when searching for package version.
* guix/build/maven/pom.scm (fix-pom-dependencies): Also look at local
packages when looking for a package version.
2021-06-22 13:10:30 +02:00
Julien Lepiller 0db1393b73
guix: maven: Support fixing modules.
* guix/build/maven/pom.scm (fix-pom-dependencies): Support fixing
modules that do not exist.
* guix/build/maven-build-system.scm (fix-pom): Fix modules.
2021-06-22 13:10:28 +02:00
Julien Lepiller 9711970c99
guix: maven: Support fixing extensions.
* guix/build/maven/pom.scm (fix-pom-dependencies): Add support for fixing
extension versions.
2021-06-22 13:10:27 +02:00
Julien Lepiller 6ec2109ab6
guix: maven: Simplify finding local packages and modules.
* guix/build/maven-build-system (fix-pom): Fix a single pom file without
recursing
(fix-pom-files): Find local packages and all submodules, and fix them
all at once.
(add-local-package): Move to...
* guix/build/maven/pom.scm (add-local-package): ...here.
(pom-and-submodules, pom-local-packages): New procedures.
2021-06-22 13:10:24 +02:00
Julien Lepiller 573b43c116
guix: maven: Simplify finding version and group information.
* guix/build/maven/pom.scm (pom-version, pom-groupid): Do not use inputs
and local packages information anymore. Adapt file to new arguments.
* guix/build/maven-build-system.scm: Adapt to new arguments.
* guix/build/java-utils.scm: Adapt to new arguments.
2021-06-22 13:09:57 +02:00
Julien Lepiller 4c98db94b0
guix: java-utils: Factorize pom.xml generation.
* guix/build/java-utils.scm (generate-pom.xml): New procedure.
* gnu/packages/maven.scm (java-surefire-junit4): Use it.
* gnu/packages/java.scm (java-qdox, java-jsr250, java-jsr305)
(java-aopalliance, java-jboss-el-api-spec)
(java-jboss-interceptors-api-spec): Use it.
(java-qdox-M9): Ensure the generated pom file has the correct version.
2021-06-22 13:09:41 +02:00
Marius Bakke 6f9a80b331
Merge branch 'master' into core-updates
Note: this merge actually changes the 'curl' and 'python-attrs' derivations,
as part of solving caf4a7a277 and
12964df69a respectively.

4604d43c0e (gnu: gnutls@3.6.16: Fix cross-compilation.) was ignored because it
cannot currently be tested.

 Conflicts:
	gnu/local.mk
	gnu/packages/aidc.scm
	gnu/packages/boost.scm
	gnu/packages/curl.scm
	gnu/packages/nettle.scm
	gnu/packages/networking.scm
	gnu/packages/python-xyz.scm
	gnu/packages/tls.scm
2021-06-19 17:38:47 +02:00
Paul A. Patience 483f537081
doc, gnu, guix: Fix typos.
* doc/guix.texi: Fix various typos and reword a sentence.
* gnu/packages/cpp.scm (cpplint)[description]: Fix typo.
* gnu/packages/dns.scm (ldns): Fix typo in comment.
* gnu/packages/games.scm (yamagi-quake2): Fix typo in comment.
* gnu/packages/qt.scm (python-pyqtwebengine): Fix typo in comment.
* gnu/packages/rails.scm (ruby-autoprefixer-rails): Fix typo in comment.
* gnu/packages/syndication.scm (quiterss)[description]: Fix typo.
* gnu/packages/terminals.scm (kmscon): Fix typo in comment.
* gnu/packages/xml.scm (perl-xml-sax-base)[description]: Fix typo.
  (python-elementpath)[description]: Fix typo.
* guix/build/asdf-build-system.scm (output-translation): Fix typo in docstring.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-06-13 23:57:45 +02:00
Ludovic Courtès 8cef92d063
profiles: Move some of the work to the build side.
When running:

  guix environment --ad-hoc gnome --no-grafts --search-paths

this reduces wall-clock time by ~5%.  The number of object cache lookups
goes down from 96K to 89K.  (Note that 'gnome' is an interesting example
because it has many propagated inputs, which themselves have propagated
inputs too, which would lead to a long input list and a long manifest in
the 'profile-derivation' gexp.)

* guix/profiles.scm (profile-derivation)[inputs, search-paths]: Remove.
[extra-inputs]: New variable.
[builder]: Adjust call to 'build-profile'.
* guix/build/profiles.scm (manifest-sexp->inputs+search-paths): New
procedure.
(build-profile): Remove 'inputs' parameter; make 'manifest' the 2nd
positional parameter and add #:extra-inputs.  Call
'manifest-sexp->inputs+search-paths' to obtain 'inputs' and
'search-paths'.
2021-06-12 00:49:32 +02:00
Maxime Devos a62d17dc05
rakudo-build-system: Look up the interpreter in 'inputs'.
* guix/build/rakudo-build-system.scm (wrap): Pass
  the shell interpreter from 'inputs' to 'wrap-program' using
  'search-input-file'.

Partially-Fixes: <https://issues.guix.gnu.org/47869>
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-06-04 22:34:32 +02:00
Maxime Devos 2ac898d7f8
qt-build-system: Look up the interpreter in 'inputs'.
* guix/build/qt-build-system.scm (wrap-all-programs): Pass
  the shell interpreter from 'inputs' to 'wrap-program' using
  'search-input-file'.

Partially-Fixes: <https://issues.guix.gnu.org/47869>
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-06-04 22:34:32 +02:00
Maxime Devos 5b24cbee31
python-build-system: Look up the interpreter in 'inputs'.
* guix/build/python-build-system.scm (wrap): Pass the shell
  interpreter from 'inputs' to 'wrap-program' using 'search-input-file'.

Partially-Fixes: <https://issues.guix.gnu.org/47869>
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-06-04 22:34:31 +02:00
Maxime Devos 1dbc3b2b0c
glib-or-gtk-build-system: Look up the interpreter in 'inputs'.
* guix/build/glib-or-gtk-build-system.scm (wrap-all-programs): Pass
  the shell interpreter from 'inputs' to 'wrap-program' using
  'search-input-file'.

Partially-Fixes: <https://issues.guix.gnu.org/47869>
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-06-04 22:34:31 +02:00
Maxime Devos 5378edeab4
utils: Define ‘search-input-file’ procedure.
The procedure ‘which’ from (guix build utils)
is used for two different purposes:

  1. for finding the absolute file name of a binary
     that needs to run during the build process

  2. for finding the absolute file name of a binary,
     for the target system (as in --target=TARGET),
     e.g. for substituting sh->/gnu/store/.../bin/sh,
     python->/gnu/store/.../bin/python.

When compiling natively (target=#f in Guix parlance),
this is perfectly fine.

However, when cross-compiling, there is a problem.
"which" looks in $PATH for binaries.  That's good for purpose (1),
but incorrect for (2), as the $PATH contains binaries from native-inputs
instead of inputs.

This commit defines a ‘search-input-file’ procedure. It functions
like 'which', but instead of searching in $PATH, it searches in
the 'inputs' of the build phase, which must be passed to
‘search-input-file’ as an argument. Also, the file name must
include "bin/" or "sbin/" as appropriate.

* guix/build/utils.scm (search-input-file): New procedure.
* tests/build-utils.scm
  ("search-input-file: exception if not found")
  ("search-input-file: can find if existent"): Test it.
* doc/guix.texi (File Search): Document it.

Partially-Fixes: <https://issues.guix.gnu.org/47869>
Co-Authored-By: Ludovic Courtès <ludo@gnu.org>
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-06-04 22:34:26 +02:00
Maxime Devos 8b0899963f
utils: Allow overriding the shell interpreter in ‘wrap-program’.
Previously, when creating new wrappers, 'wrap-program' would search
for an interpreter to use in PATH. However, this is incorrect when
cross-compiling. Allow overriding the shell interpreter to use,
via an optional keyword argument #:sh.

In time, when all users of 'wrap-program' have been corrected,
this keyword argument can be made mandatory.

* guix/build/utils.scm (wrap-program): Introduce a #:sh keyword
  argument, defaulting to (which "sh"). Use this keyword argument.

Partially-Fixes: <https://issues.guix.gnu.org/47869>
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-06-04 22:31:38 +02:00
Marius Bakke f034264204
Merge branch 'master' into core-updates
Conflicts:
	gnu/local.mk
	gnu/packages/bioinformatics.scm
	gnu/packages/django.scm
	gnu/packages/gtk.scm
	gnu/packages/llvm.scm
	gnu/packages/python-web.scm
	gnu/packages/python.scm
	gnu/packages/tex.scm
	guix/build-system/asdf.scm
	guix/build/emacs-build-system.scm
	guix/profiles.scm
2021-05-09 21:29:46 +02:00
Guillaume Le Vaillant 2fa8fd4af5
build-system: asdf: Work around package-name->name+version bug.
This patch modifies how the name of the main Common Lisp system is extracted
from the full Guix package name to work around bug#48225 concerning the
'package-name->name+version' function.

Fixes <https://issues.guix.gnu.org/41437>.

* guix/build-system/asdf.scm (asdf-build): Fix 'systems' function.
* guix/build/asdf-build-system.scm (main-system-name): Fix it.
2021-05-08 13:42:38 +02:00
Timothy Sample 7262619d6f
download: Restore error reporting.
Normal error reporting was disrupted by the introduction of
Disarchive in commit fbc2a52a32.  In
particular, running 'guix download' would succeed with a partially
downloaded file.

* guix/build/download.scm (disarchive-fetch/any): Return '#f' when
Disarchive cannot be found, the specification cannot be found, or
Disarchive fails due to an error.
2021-05-05 23:20:36 -04:00
Leo Prikler 0f116d7f90
build-system: emacs: Clarify %install-dir.
The old comment is no longer adequate, see
<https://lists.gnu.org/archive/html/guix-patches/2021-05/msg00113.html>.

* guix/build/emacs-build-system.scm (%install-dir): Adjust comment to better
reflect usage of this variable.
2021-05-05 10:01:48 +02:00
Efraim Flashner d7653761d3
build-system/copy: Avoid use of 'set!'.
This fixes the copy-build-system on powerpc-linux.

* guix/build/copy-build-system.scm (install)[install]: Don't clobber
'target' variable and move variable assignation into the let statement.
2021-05-04 18:33:20 +03:00
Leo Prikler 79cfe30f3e
build-system: emacs: Use subdirectories again.
With this, Emacs libraries are installed in the ELPA_NAME-VERSION subdirectory
of site-lisp and potential subdirectories should no longer collide.

* guix/build/emacs-build-system.scm (add-source-to-load-path): Rename to...
(expand-load-path): ... this.  Also expand lone subdirectories of site-lisp.
(%standard-phases): Adjust accordingly.
(elpa-directory): New variable.  Export it publicly for use in other build
systems.
(build, patch-el-files, make-autoloads): Use ELPA name and version to
construct subdirectories of %install-dir.
(install): Install in subdirectory.
2021-05-01 15:56:37 +02:00
Timothy Sample fbc2a52a32
download: Use Disarchive as a last resort.
This is a fixed version of 66b14dccdd,
which was reverted in e74250c3c5.

* guix/download.scm (%disarchive-mirrors): New variable.
(%disarchive-mirror-file): New variable.
(built-in-download): Add 'disarchive-mirrors' keyword argument and
pass its value along to the 'builtin:download' derivation.
(url-fetch): Pass '%disarchive-mirror-file' to 'built-in-download'.
* guix/scripts/perform-download.scm (perform-download): Read
Disarchive mirrors from the environment and pass them to
'url-fetch'.
* guix/build/download.scm (disarchive-fetch/any): New procedure.
(url-fetch): Add 'disarchive-mirrors' keyword argument, use it to
make a list of URIs, and use the new procedure to fetch the file if
all other methods fail.
* build-aux/build-self.scm (build-program)[select?]: Exclude '(guix
build download)'.
* guix/self.scm (compiled-guix)[*core-modules*]: Add 'guile-json' to
the list of extensions.
2021-04-29 11:24:48 -04:00
Timothy Sample e74250c3c5
Revert "download: Use Disarchive as a last resort."
This reverts commit 66b14dccdd, which broke
'guix pull'.
2021-04-28 00:24:28 -04:00
Timothy Sample 66b14dccdd
download: Use Disarchive as a last resort.
* guix/download.scm (%disarchive-mirrors): New variable.
(%disarchive-mirror-file): New variable.
(built-in-download): Add 'disarchive-mirrors' keyword argument and
pass its value along to the 'builtin:download' derivation.
(url-fetch): Pass '%disarchive-mirror-file' to 'built-in-download'.
* guix/scripts/perform-download.scm (perform-download): Read
Disarchive mirrors from the environment and pass them to
'url-fetch'.
* guix/build/download.scm (disarchive-fetch/any): New procedure.
(url-fetch): Add 'disarchive-mirrors' keyword argument, use it to
make a list of URIs, and use the new procedure to fetch the file if
all other methods fail.
2021-04-27 21:27:02 -04:00
Brendan Tildesley a738a663a9
utils: wrap-program: Refuse to wrap .X-real files.
* guix/build/utils.scm (wrap-program): Error if wrap-program was
mistakenly passed a .X-real file. This prevents and forces us to fix
cases where a double wrapped ..X-real-real file is created, such as can
be seen with: "find /gnu/ -iname '.*-real-real'".

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-04-22 14:04:28 +02:00
Brendan Tildesley c90a509dd9
qt-build-system: Don't double wrap programs.
* guix/build/qt-build-system.scm (wrap-all-programs): Excluded wrapped
programs from the list of files to wrap if they exist to avoid double
wrapping.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-04-22 14:04:28 +02:00
Brendan Tildesley b6753aa1e1
rakudo-build-system: Don't double wrap programs.
* guix/build/rakudo-build-system.scm (wrap): Don't return any potential
already wrapped-programs in the list-of-files to wrap.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-04-22 14:04:27 +02:00
Brendan Tildesley ed42b2caba
glib-or-gtk-build-system: Don't double wrap programs.
* guix/build/glib-or-gtk-build-system.scm (wrap-all-programs): If a
package definition was modified to insert an additional wrap phase
before glib-or-gtk...'s wrap phase instead of after, glib-or-gtk...'s
wrap phase will double wrap the .X-real file from the earlier wrap
phase. Filtering out such wrapped programs means these .X-real files
should fix this and mean packagers don't have to worry about ensuring
their wrap phases are put afterwards.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-04-22 14:04:27 +02:00
Brendan Tildesley b2b799e2d8
utils: Rename 'wrapper?' to 'wrapped-program?'.
* guix/build/utils.scm (wrap-program): The wrapper? procedure is
incorrectly named as it actually checks to see if prog is the
original program that was moved, not the wrapper.
* guix/build/python-build-system: (wrap): Use renamed wrapped-program?.
* gnu/packages/ebook.scm (calibre)[arguments]: Likewise.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-04-22 14:04:27 +02:00
Dion Mendel 1010171280
gremlin: 'elf-dynamic-info' returns a file name rathern than a dynamic entry.
* guix/build/gremlin.scm (elf-dynamic-info): Return the dynamic entry
value, not the dynamic entry.
* tests/gremlin.scm ("elf-dynamic-info-soname"): New test.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-04-22 14:04:27 +02:00
Efraim Flashner fcc39864db
Merge remote-tracking branch 'origin/master' into core-updates
Conflicts:
	gnu/local.mk
	gnu/packages/boost.scm
	gnu/packages/chez.scm
	gnu/packages/compression.scm
	gnu/packages/crates-io.scm
	gnu/packages/docbook.scm
	gnu/packages/engineering.scm
	gnu/packages/gcc.scm
	gnu/packages/gl.scm
	gnu/packages/gtk.scm
	gnu/packages/nettle.scm
	gnu/packages/python-check.scm
	gnu/packages/python-xyz.scm
	gnu/packages/radio.scm
	gnu/packages/rust.scm
	gnu/packages/sqlite.scm
	guix/build-system/node.scm
2021-04-16 14:39:48 +03:00
Mark H Weaver 1bab9b9f17
grafts: Support rewriting UTF-16 and UTF-32 store references.
Partially fixes <https://bugs.gnu.org/33848>.

* guix/build/graft.scm (replace-store-references): Add support for
finding and rewriting UTF-16 and UTF-32 store references.
* tests/grafts.scm: Add tests.
2021-04-15 03:22:55 -04:00
Maxim Cournoyer fed28a9632
build-system/qt: Fix wrapping with QTWEBENGINEPROCESS_PATH.
This is a follow up commit to 06eb21856f, which added QTWEBENGINEPROCESS_PATH
to the list of wrapped variables.  Unfortunately it wouldn't be set, as its
value is a plain file rather than a directory, and the code only checked for
directories.

* guix/build/qt-build-system.scm (variables-for-wrapping): Define a file type
entry for each variable definition, and use it to determine if we should look
for directories versus plain files.
2021-04-10 00:55:18 -04:00
Ludovic Courtès 4863c4304e
build-system/gnu: Give #:bootstrap-scripts a valid default.
Commit 9cfc93be30 changed the default
value of #:bootstrap-scripts to #f, which is invalid (it must be a list
of strings).  That default value was used by build systems that inherit
phases from 'gnu-build-system', such as 'qt-build-system', which would
lead to wrong-type-arg errors in the 'boostrap' phase.

Reported by Raghav Gururajan <rg@raghavgururajan.name>.

* guix/build/gnu-build-system.scm (%bootstrap-scripts): New variable.
(bootstrap): Change #:bootstrap-scripts to default to it.
* guix/build-system/gnu.scm (%bootstrap-scripts): Change value.
(gnu-build): #:bootstrap-scripts defaults to %bootstrap-scripts.  Remove
call to 'sexp->gexp'.
(gnu-cross-build): Likewise.
2021-04-09 14:19:34 +02:00
Ludovic Courtès 06eb21856f
build-system/qt: Wrappers set 'QTWEBENGINEPROCESS_PATH' if needed.
Suggested by Maxim Cournoyer <maxim.cournoyer@gmail.com>.

* guix/build/qt-build-system.scm (variables-for-wrapping): Add
"QTWEBENGINEPROCESS_PATH".
2021-04-08 23:27:55 +02:00
Ludovic Courtès c5fd1b0bd3
build-system/qt: Wrappers only include relevant directories to XDG_DATA_DIRS.
Fixes <https://bugs.gnu.org/47569>.

Previously the wrapper's XDG_DATA_DIRS would contain any input that had
a /share sub-directory, which is usually all build-time inputs.

* guix/build/qt-build-system.scm (variables-for-wrapping)[collect-sub-dirs]:
Add 'selectors' parameter and honor it.  Change caller to handle
selectors.  Add selectors for /share.
2021-04-08 23:27:41 +02:00
Jelle Licht 23ea84cdf0
build-system: Rewrite node build system.
* guix/build/node-build-system.scm: Rewrite it.
* guix/build-system/node.scm: Adjust accordingly.
* gnu/packages/node-xyz.scm (node-semver): Likewise.

Co-authored-by: Timothy Sample <samplet@ngyro.com>
2021-04-02 18:04:22 +02:00
zimoun 9f7b599037
build-system/julia: Turn on deprecation warnings.
* guix/build/julia-build-system.scm (check): Set option '--depwarn=yes'.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-03-29 16:47:18 +02:00
Efraim Flashner 2aab587f84
Merge remote-tracking branch 'origin/master' into core-updates 2021-03-24 20:50:44 +02:00
Chris Marusich c29bfbfc78
syscalls: Fix RNDADDTOENTCNT on powerpc64le-linux.
This fixes the failing test add-to-entropy-count in tests/syscalls.scm on
powerpc64le-linux.

* guix/build/syscalls.scm (RNDADDTOENTCNT): When %host-type starts with
"powerpc64le", set this to #x80045201.  Otherwise, set it to #x40045201 as
before.
2021-03-23 23:19:58 -07:00
Chris Marusich b57de27d03
syscalls: Fix clone on powerpc64le-linux.
This makes the clone procedure work correctly and fixes some test failures on
powerpc64le-linux, including tests/containers.scm.

* guix/build/syscalls.scm (clone): Add an entry for ppc64le.
2021-03-23 23:19:57 -07:00
Ludovic Courtès 43937666ba
download: 'tls-wrap' treats premature TLS termination as EOF.
This is a backport of Guile commit
076276c4f580368b4106316a77752d69c8f1494a.

* guix/build/download.scm (tls-wrap)[read!]: Wrap 'get-bytevector-n!'
call in 'catch' and handle 'error/premature-termination' GnuTLS errors.
2021-03-19 21:44:36 +01:00
Chris Marusich 341dfe7eda
syscalls: mounts: Fix a matching bug.
On some systems, the columns in /proc/self/mountinfo look like this:

23 28 0:21 / /proc rw,nosuid,nodev,noexec,relatime shared:11 - proc proc rw

Before this change, the mounts procedure was written with the assumption that
the type and source could always be found in columns 8 and 9, respectively.
However, the proc(5) man page explains that there can be zero or more optional
fields starting at column 7 (e.g., "shared:11" above), so this assumption is
false in some situations.

* guix/build/syscalls.scm (mounts): Update the match pattern to use ellipsis
to match zero or more optional fields followed by a single hyphen.  Remove the
trailing ellipsis, since multiple ellipses are not allowed in the same level.
The proc(5) man page indicates that there are no additional columns, so it is
probably OK to match an exact number of columns at the end like this.
2021-03-15 21:22:43 -07:00
Efraim Flashner 78e7e178a3
build-system/cargo: Don't clobber packaged crates while building.
This fixes an issue where two packages share a common dependent.

* guix/build/cargo-build-system.scm (unpack-rust-crates): Only copy rust
crates into the target directory if there isn't one already there with
the same name.
2021-03-15 15:53:11 +02:00
Efraim Flashner 4d00185d66
build-system/cargo: Propagate crates across builds.
* guix/build-system/cargo.scm (cargo-build): Add cargo-package-flags,
install-source flags.
* guix/build/cargo-build-system.scm (unpack-rust-crates, package): New
procedures.
(install): Also install crate sources.
(%standard-phases): Add new phases.
* doc/guix.texi (Packaging-guidelines)[Rust Crates]: Adjust to changes
in the cargo-build-system.
2021-03-14 19:52:44 +02:00
Ludovic Courtès b168acae2a
download: 'tls-wrap' returns an unbuffered custom port.
Partly fixes <https://bugs.gnu.org/46967>.

* guix/build/download.scm (tls-wrap)[unbuffered]: New procedure.
Pass the result of 'make-custom-binary-input/output-port' to
'unbuffered'.
2021-03-11 23:19:52 +01:00
Ludovic Courtès 279d932b1c
download: 'tls-wrap' avoids intermediate buffer.
* guix/build/download.scm (tls-wrap)[read!]: Read straight into BV
instead of calling 'get-bytevector-some' and 'unget-bytevector'.
2021-03-11 23:19:52 +01:00
Ludovic Courtès 9a6ea2f8dc
syscalls: Define the ST_* constants and add 'statfs-flags->mount-flags'.
* guix/build/syscalls.scm (linux?): New variable.
(define-statfs-flags): New macro.
(ST_RDONLY, ST_NOSUID, ST_NODEV, ST_NOEXEC, ST_SYNCHRONOUS)
(ST_MANDLOCK, ST_WRITE, ST_APPEND, ST_IMMUTABLE, ST_NOATIME)
(ST_NODIRATIME, ST_RELATIME): New variables.
(statfs-flags->mount-flags): New procedure.
2021-03-10 23:21:33 +01:00
Christopher Baines a8448da0f4
Merge branch 'master' into core-updates 2021-03-06 00:18:30 +00:00
Ludovic Courtès 7e9d9f28e9
syscalls: Add 'mounts' and the <mount> record type.
* guix/build/syscalls.scm (<mount>): New record type.
(option-string->mount-flags, mount-flags)
(octal-decode, mounts): New procedures.
(mount-points): Rewrite in terms of 'mount'.
* tests/syscalls.scm ("mounts"): New test.
2021-02-25 11:29:35 +01:00
Ludovic Courtès 46bb1a41ae
syscalls: Define MS_RELATIME.
* guix/build/syscalls.scm (MS_RELATIME): New variable.
2021-02-25 11:29:35 +01:00
Leo Prikler a1fd8f01b2
guix: renpy-build-system: Quote data directory.
This prevents generated launchers and desktop files from inadvertently
crashing if the directory name contains a space.

* gnu/build/renpy-build-system.scm (install, install-desktop-file): Use ~s
to format data directory.
2021-02-24 00:37:37 +01:00
Ludovic Courtès e8fc373900
profiles: Fix typo in manifest comment.
* guix/build/profiles.scm (build-profile): Fix typo.
2021-02-22 23:42:08 +01:00
Danny Milosavljevic abd318ff4b
Merge branch 'master' into core-updates 2021-02-11 19:12:36 +01:00
Leo Prikler e1bdab4f0f
build-system: Add renpy-build-system.
* guix/build/renpy-build-system.scm: New file.
* guix/build-system/renpy.scm: New file.
* Makefile.am (MODULES): Add them here.
* doc/guix.texi (Build Systems): Document renpy-build-system.
2021-02-07 15:17:55 +01:00
Maxim Cournoyer 39e67ed697
build/gnu: Only make source checkout files writable.
This is a followup commit to 6129ebddbd.

It was suggested by Ludovic in #guix that it's probably safer to leave files
extracted from a tarball alone.  While at it, guard against possible
exceptions that can happen in the presence of dangling symbolic links, for
example.

* guix/build/gnu-build-system.scm (unpack): Wrap the make-file-writable call
in a false-if-exception handler.  Move the for-each loop under the
file-is-directory? cond branch.
2021-02-04 16:42:46 -05:00
Maxim Cournoyer 6129ebddbd
build/gnu: Ensure the files are writable after the unpack phase.
Fixes <https://issues.guix.gnu.org/43015>.

* guix/build/gnu-build-system.scm (unpack): Call 'make-file-writable' on every
source file.
2021-02-04 00:14:32 -05:00
Maxim Cournoyer 157b302011
build: python: Fix build phases ordering.
The wrap phase was happening before the installed site location was added to
GUIX_PYTHONPATH, causing wrapped commands to not find their own Python
libraries.

* guix/build/python-build-system.scm (%standard-phases): Explicit the
sequential ordering of phases using add-after directives, so that the wrap
phase occurs after the add-install-to-pythonpath and add-install-to-path
phases.
2021-02-03 16:50:35 -05:00
Christopher Baines e740cc6140
Merge branch 'master' into core-updates 2021-02-03 09:57:35 +00:00
Lars-Dominik Braun 09448c0994
build/python: Add a sanity check phase.
Add a new phase validating the usability of installed Python packages.

* gnu/packages/aux-files/python/sanity-check.py: New file.
* Makefile.am (AUX_FILES): Register it.
* guix/build-system/python.scm (sanity-check.py): New variable.
(lower): Add the script as an implicit input.
* guix/build/python-build-system.scm: Remove trailing #t.
(sanity-check): New phase.
(%standard-phases): Use it.
* tests/builders.scm: (make-python-dummy)
(dummy-ok, dummy-dummy-nosetuptools, dummy-fail-requirements)
(dummy-fail-import, dummy-fail-console-script): New variables.
("python-build-system: dummy-ok")
("python-build-system: dummy-dummy-nosetuptools")
("python-build-system: dummy-fail-requirements")
("python-build-system: dummy-fail-import")
("python-build-system: dummy-fail-console-script"): Add tests.
2021-02-01 11:53:43 -05:00
Maxim Cournoyer 8a15ecf0e3
build/python: Adjust wrap phase to use the new GUIX_PYTHONPATH.
* guix/build/python-build-system.scm (wrap): Adjust to use the new
GUIX_PYTHONPATH.  Remove trailing #t.
2021-02-01 11:53:43 -05:00
Maxim Cournoyer 15dcffecf2
build/python: Add the installation bin directory to PATH.
This also to reduce the need for boilerplate code found in check phase
overrides.

* guix/build/python-build-system.scm (add-install-to-path): New phase.
(%standard-phases): Order it before the check phase.
2021-02-01 11:53:43 -05:00
Maxim Cournoyer 91cf9d17f0
build/python: Always add the install prefix to the Guix PYTHONPATH.
This is to remove the need for common boilerplate code in check phase
overrides.

* guix/build/python-build-system.scm
(add-installed-pythonpath): Streamline.  This phase depends on the presence of
a "python" input; thus GUIX_PYTHONPATH is guaranteed to be defined.  Update doc.
(add-install-to-pythonpath): New phase.
(%standard-phases): Order it before the check phase.
2021-02-01 11:53:43 -05:00
Maxim Cournoyer 18e9979970
build/python: Replace PYTHONPATH by GUIX_PYTHONPATH.
* guix/build/python-build-system.scm (add-installed-pythonpath): Replace
"PYTHONPATH" by "GUIX_PYTHONPATH".
2021-02-01 11:53:43 -05:00
Maxim Cournoyer cb72f9a773
gnu: python: Replace PYTHONPATH by GUIX_PYTHONPATH.
Using PYTHONPATH as a mean to discover the Python packages had the following
issues:

        1. It is not versioned, so different versions of Python would clash if
        installed in a shared profile.

        2. It would interfere with the host Python site on foreign
        distributions, sometimes preventing a a user to login their GDM
        session (!).

        3. It would take precedence over user installed Python packages
        installed through pip.

        4. It would leak into Python virtualenvs, which are supposed to create
        isolated Python environments.

This changes fixes the above issues by making use of a sitecustomize.py
module.  The newly introduced GUIX_PYTHONPATH environment variable is read
from the environment, filtered for the current Python version of the
interpreter, and spliced in 'sys.path' just before Python's own site location,
which provides the expected behavior.

* gnu/packages/aux-files/python/sitecustomize.py: New file.
* Makefile.am: Register it.
* gnu/packages/python.scm (customize-site)
(guix-pythonpath-search-path): New procedures.
(python-2.7)[phases]{install-sitecustomize.py}: New phase.
[native-inputs]{sitecustomize.py}: New input.
[native-search-paths]: Replace PYTHONPATH with GUIX_PYTHONPATH.
(python-3.9)[native-search-paths]: Likewise.
[phases]{install-sitecustomize}: Override with correct version.
[native-search-paths]: Replace PYTHONPATH with GUIX_PYTHONPATH.
* gnu/packages/commencement.scm (python-boot0):
[phases]{install-sitecustomize}: Likewise.
[native-inputs]{sitecustomize.py}: New input.
[native-search-paths]: Replace PYTHONPATH with GUIX_PYTHONPATH.
* guix/build/python-build-system.scm (site-packages): Do not add a trailing
'/'.

squash! gnu: python: Replace PYTHONPATH by GUIX_PYTHONPATH.
2021-02-01 11:53:42 -05:00
Ludovic Courtès 9fd7b050e2
guix package: Add '--export-manifest'.
* guix/scripts/package.scm (export-manifest): New procedure.
(show-help, %options): Add '--export-manifest'.
(process-query): Honor it.
* guix/build/profiles.scm (build-profile): Mention it.
* tests/guix-package.sh: Test it.
* doc/guix.texi (Invoking guix package): Document it.
2021-02-01 17:32:35 +01:00
nixo ba093a6d27
build-system/julia: Don't rely on file name to set module name.
* guix/build/julia-build-system.scm (project.toml->name): New procedure.
  (precompile, check, julia-build): Accept new key argument #:julia-package-name.
* guix/build-system/julia.scm (julia-build): ... add it.
* doc/guix.texi (julia-build-system): Update julia-package-name accordingly.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-01-30 15:36:56 +01:00
nixo a23b384f3f
build-system/julia: Enable tests.
* guix/build-system/julia.scm (julia-build): Set tests? default to #t.
* guix/build/julia-build-system.scm (check): Respect tests? and fix julia
  invocation.
  (%standard-phases): Add check phase after install.
* doc/guix.texi (julia-build-system): Update accordingly.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-01-30 15:36:56 +01:00
Maxim Cournoyer 04a0b1e09a
gnu: texlive-bin: Enable the use of multiple TeX Live trees.
Attempting to compose multiple TeX Live trees (such as can happen when using a
texlive-union generated package) proved problematic; only the texmf.cnf
configuration file from the union would be honored, causing other TeX Live
components to be ignored.

This change does away with TeX Live unions, instead relying on the default
texmf.cnf configuration file provided by the texlive-bin package to honor
individual TeX Live trees referred to via the newly introduced GUIX_TEXMF
variable, and replacing the texlive-union procedure by texlive-updmap.cfg, to
explicit that generating the fonts map configuration is now its sole purpose.

* gnu/packages/tex.scm (texlive-bin)[phases]{customize-texmf}: New phase.
{postint}: Move the patching of the texmf.cnf file to the new above phase.
Patch the updmap.pl script to find its Perl modules.
[native-search-paths]: Rename the TEXMF variable to GUIX_TEXMF.  Remove the
TEXMFCNF variable.
* guix/profiles.scm (texlive-configuration): Remove procedure.
(%default-profile-hooks)[texlive-configuration]: Unregister hook.
(texlive-union): Alias to what has moved to...
(texlivke-updmap.cfg): ... here.  Update doc.  Do not provide a different
texmf.cnf configuration.
[inherit]: Do not inherit from texlive-base.
[build-system]: Switch to the copy-build-system.
[arguments]{install-plan}: New argument.
[phases]{regenerate-updmap.cfg}: New phase, which keeps only the fonts map
generating code from the previous builder code.
[inputs]: Remove bash, and move to ...
[propagated-inputs]: ... here.
[native-inputs]: Remove field, and move the source of the base updmap.cfg file
to...
[source]: ... here.
[synopsis]: Update.
[description]: Likewise.
[license]: Delete duplicates.
2021-01-29 13:35:47 -05:00
Maxim Cournoyer cfcead2e51
build-systems/gnu: Allow unpacking/repacking more kind of files.
Before this change, only plain directories, tar or zip archives were supported
as the source of a package for the GNU build system; anything else would cause
the unpack phase to fail.  Origins relying on snippets would suffer from the
same problem.

This change adds the support to use files of the following extensions: .gz,
.Z, .bz2, .lz, and .xz, even when they are not tarballs.  Files of unknown
extensions are treated as uncompressed files and supported as well.

* guix/packages.scm (patch-and-repack): Only add the compressor utility to the
PATH when the file is compressed.  Bind more inputs in the mlet, and use them
for decompressing single files.  Adjust the decompression and compression
routines.
[decompression-type]: Remove nested variable.
* guix/build/utils.scm (compressor, tarball?): New procedures.  Move
%xz-parallel-args to the new 'compression helpers' section.
* tests/packages.scm: Add tests.  Add missing copyright year for Jan.
* guix/build/gnu-build-system.scm (first-subdirectory): Return #f when no
sub-directory was found.
(unpack): Support more file types, including uncompressed plain files.
2021-01-26 22:48:35 -05:00
Maxim Cournoyer 47a6a938c3
utils: Add NIX_STORE_DIR as a candidate for the value of the store directory.
On the daemon side, nixStore gets set to the environment variable
NIX_STORE_DIR, else the environment variable NIX_STORE else the compile time
macro NIX_STORE_DIR (see the Settings::processEnvironment method in
nix/libstore/globals.cc).  When creating a build environment, it sets
NIX_STORE with the value computed as described above.  Hence, it's safer to
look for both NIX_STORE_DIR and NIX_STORE in (guix build utils), so that it
works in any context (build context or external context).

* guix/build/utils.scm (%store-directory): Consider both NIX_STORE_DIR and
NIX_STORE as environment variables.
2021-01-26 22:48:35 -05:00
Ludovic Courtès 9621809ce8
build-system/gnu: Really ignore the return value of phases.
This is a followup to 04baa011e9.

* guix/build/gnu-build-system.scm (gnu-build): Really ignore the return
value of PROC.  Wrap PROC call in 'with-throw-handler'.  Add
'end-of-phase' procedure and use it.
2021-01-15 14:06:13 +01:00
Maxim Cournoyer 01f0707207
Merge branch 'staging' into 'core-updates'.
Conflicts:

	gnu/local.mk
	gnu/packages/cmake.scm
	gnu/packages/curl.scm
	gnu/packages/gl.scm
	gnu/packages/glib.scm
	gnu/packages/guile.scm
	gnu/packages/node.scm
	gnu/packages/openldap.scm
	gnu/packages/package-management.scm
	gnu/packages/python-xyz.scm
	gnu/packages/python.scm
	gnu/packages/tls.scm
	gnu/packages/vpn.scm
	gnu/packages/xorg.scm
2021-01-13 23:45:53 -05:00
Maxim Cournoyer 0715793373
build-systems/emacs: No longer skip patching of files containing NULs.
This follows the fix to <https://bugs.gnu.org/30116>.

* guix/build/emacs-build-system.scm (patch-el-files)
[file-contains-nul-char]: Remove nested procedure.
[el-file]: Do no filter out files containing NUL characters.
2021-01-08 14:10:33 -05:00
Mark H Weaver 485ac28235
utils: Allow text substitution even in the presence of NUL characters.
Fixes <https://issues.guix.gnu.org/30116>.

Before this change, the presence of a NUL character on a line meant that
the (glibc) regexp engine used by Guile would either 1. stop scanning the
string or 2. crash with the error "string contains #\\nul character",
depending on the locale used.

This change works around this limitation by first replacing the NUL character
by an unused Unicode code point, doing the substitution, then reverting the
replacement.

* guix/build/utils.scm (unused-private-use-code-point)
(replace-char): New procedures.
(substitute): Make use of the above procedures to work around the NUL
character regexp engine limitation.
* tests/build-utils.scm: Add tests.

Co-authored-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2021-01-08 14:10:33 -05:00
Zhu Zihao 5f6216d551
build-system/cargo: Use argument "--no-track" in "cargo install".
* guix/build/cargo-build-system(install):
Add argument "--no-track" in "cargo install".
Remove stale hack.

Signed-off-by: Efraim Flashner <efraim@flashner.co.il>
2020-12-31 14:42:15 +02:00
Maxim Cournoyer 7f80cc8102
build-systems/gnu: Add compressor file extension to symbolic links.
Otherwise man and info readers are not able to read their content as they rely
on the file extension to detect if compression is used.

* guix/build/gnu-build-system.scm (compress-documentation)
[retarget-symlink]: Append the compressor file extension to the link file name.
2020-12-29 13:38:54 -05:00
Ricardo Wurmus 9cfc93be30
build-system/gnu: Allow overriding of bootstrap scripts.
* guix/build-system/gnu.scm (gnu-build, gnu-cross-build): Accept
bootstrap-scripts keyword argument and pass it to gnu-build.
(%bootstrap-scripts): New variable.
* guix/build/gnu-build-system.scm (%bootstrap-scripts): Remove variable.
(bootstrap): Remove default value for bootstrap-scripts argument.
2020-12-23 13:33:24 +01:00
Ludovic Courtès cd6c5ddfc8
guix system: 'init' copies, resets timestamps, and deduplicates at once.
Partly fixes <https://bugs.gnu.org/44760>.

* guix/build/store-copy.scm (copy-store-item): New procedure.
(populate-store): Use it instead of the inline 'copy-recursively' call.
* guix/scripts/system.scm (copy-item): Likewise.
Pass #:reset-timestamps? and #:deduplicate? to 'register-path'.
2020-12-15 17:32:11 +01:00
Ludovic Courtès 6a060ff27f
store-copy: 'populate-store' can optionally deduplicate files.
Until now deduplication was performed as an additional pass after
copying files, which involve re-traversing all the files that had just
been copied.

* guix/store/deduplication.scm (copy-file/deduplicate): New procedure.
* tests/store-deduplication.scm ("copy-file/deduplicate"): New test.
* guix/build/store-copy.scm (populate-store): Add #:deduplicate?
parameter and honor it.
* tests/gexp.scm ("gexp->derivation, store copy"): Pass #:deduplicate? #f
to 'populate-store'.
* gnu/build/image.scm (initialize-root-partition): Pass #:deduplicate?
to 'populate-store'.  Pass #:deduplicate? #f to 'register-closure'.
* gnu/build/vm.scm (root-partition-initializer): Likewise.
* gnu/build/install.scm (populate-single-profile-directory): Pass
 #:deduplicate? #f to 'populate-store'.
* gnu/build/linux-initrd.scm (build-initrd): Likewise.
* guix/scripts/pack.scm (self-contained-tarball)[import-module?]: New
procedure.
[build]: Pass it as an argument to 'source-module-closure'.
* guix/scripts/pack.scm (squashfs-image)[build]: Wrap in
'with-extensions'.
* gnu/system/linux-initrd.scm (expression->initrd)[import-module?]: New
procedure.
[builder]: Pass it to 'source-module-closure'.
* gnu/system/install.scm (cow-store-service-type)[import-module?]: New
procedure.  Pass it to 'source-module-closure'.
2020-12-15 17:32:10 +01:00
Ludovic Courtès 7b8d239ec2
store-copy: 'populate-store' resets timestamps.
Until now, 'populate-store' would reset permissions but not timestamps,
so callers would resort to going through an extra directory traversal to
reset timestamps.

* guix/build/store-copy.scm (reset-permissions): Remove.
(copy-recursively): New procedure.
(populate-store): Pass #:keep-permissions? to 'copy-recursively'.
Remove call to 'reset-permissions'.
* tests/gexp.scm ("gexp->derivation, store copy"): In BUILD-DRV, check
whether 'populate-store' canonicalizes permissions and timestamps.
* gnu/build/image.scm (initialize-root-partition): Pass #:reset-timestamps? #f
to 'register-closure'.
* gnu/build/vm.scm (root-partition-initializer): Likewise.
2020-12-15 17:32:10 +01:00
Ludovic Courtès cc6cb6e80a
utils: 'copy-recursively' keeps symlink mtime when #:keep-mtime? is true.
* guix/build/utils.scm (copy-recursively): In the "leaf" procedure, call
'set-file-time' also on symlinks.
2020-12-13 22:47:56 +01:00
Ludovic Courtès b1e2ec008a
utils: 'set-file-time' passes AT_SYMLINK_NOFOLLOW.
* guix/build/utils.scm (AT_SYMLINK_NOFOLLOW): New variable.
(set-file-time): Use it.
2020-12-13 22:47:56 +01:00
Efraim Flashner 72809abc9e
build/python: Fix cythonize check phase.
* guix/build/python-build-system.scm (ensure-no-cythonized-files): Use
format when printing the warning.
2020-12-13 22:20:19 +02:00
Efraim Flashner 7016f8db7c
build/python: Check for cythonized files.
* guix/build/python-build-system.scm (ensure-no-cythonized-files): New procedure.
(%standard-phases): Add it.
2020-12-09 08:51:54 +02:00
宋文武 968f541c36
build-system/gnu: Remove the source directory from search paths.
Fixes <https://issues.guix.gnu.org/44924>.

* guix/build/gnu-build-system.scm (set-paths): Delete 'source' from
'input-directories'.
2020-12-07 18:47:44 +08:00
raingloom 64f032d73f
build-system: Add chicken-build-system.
* guix/build-system/chicken.scm: New file.
* guix/build/chicken-build-system.scm: New file.
* Makefile.am: Add them.
* doc/guix.texi: Document it.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2020-12-03 16:18:33 +01:00
Ludovic Courtès f85efa86e7
build-system/gnu: Add 'make-dynamic-linker-cache' phase.
* guix/build/gnu-build-system.scm (make-dynamic-linker-cache): New
procedure.
(%standard-phases): Add it.
* guix/build-system/gnu.scm (gnu-build, gnu-cross-build): Add
 #:make-dynamic-linker-cache? and honor it.
2020-12-01 21:30:28 +01:00
Ludovic Courtès 53fd256e5b
gremlin: Add 'file-needed/recursive'.
* guix/build/gremlin.scm (file-needed/recursive): New procedure.
* tests/gremlin.scm ("file-needed/recursive"): New test.
2020-12-01 21:30:28 +01:00
Ludovic Courtès fad97a01df
gremlin: Fix typo in docstring.
* guix/build/gremlin.scm (file-runpath): Fix typo.
2020-12-01 21:30:28 +01:00
Christopher Baines ff01206345
Merge remote-tracking branch 'origin/master' into core-updates 2020-11-29 17:34:18 +00:00
Ludovic Courtès 4cebe82fa6
build-system/texlive: Phases no longer return a Boolean.
* guix/build/texlive-build-system.scm (configure): Remove trailing #t.
(build): Use 'for-each' instead of 'every'.
(install): Remove trailing #t.
2020-11-25 00:02:30 +01:00
Ludovic Courtès 49eadd270c
build-system/minify: Phases no longer return a Boolean.
* guix/build/minify-build-system.scm (minify): Use 'for-each' instead of
'every'.  Call 'close-pipe' and call error when it returns non-zero.
(build): Use 'for-each' instead of 'every'.
(install): Remove trailing #t.
2020-11-25 00:02:30 +01:00
Ludovic Courtès 04baa011e9
build-system/gnu: Ignore the result of phase procedures.
* guix/build/gnu-build-system.scm (set-SOURCE-DATE-EPOCH)
(set-paths, install-locale, unpack, bootstrap)
(patch-usr-bin-file, patch-source-shebangs)
(patch-generated-file-shebangs, check)
(patch-shebangs, strip, validate-runpath)
(validate-documentation-location, reset-gzip-timestamps)
(compress-documentation, delete-info-dir-file)
(patch-dot-desktop-files, install-license-files): Remove trailing #t.
(gnu-build): Use 'for-each' instead of 'every', ignore the result if
each phase procedure, and remove warning about non #t phase results.
2020-11-25 00:02:29 +01:00
Marius Bakke a485a98ca8
Merge branch 'master' into staging 2020-11-22 23:36:09 +01:00
Efraim Flashner 1ca0c34867
build-system/cargo: Set gettext environment variable when available.
* guix/build/cargo-build-system.scm (configure): When gettext is
available in the build environment set the GETTEXT_SYSTEM variable.
* gnu/packages/crates-io.scm (rust-gettext-rs-0.5, rust-gettext-rs-0.4,
rust-gettext-sys-0.19)[arguments]: Remove phase to help find system gettext.
2020-11-22 19:45:43 +02:00