summaryrefslogtreecommitdiff
path: root/guix/build
AgeCommit message (Collapse)Author
2024-01-07build-system/zig: Add cross-compilation support.Ekaitz Zarraga
* guix/build/zig-build-system.scm (zig-cross-build): New function (lower): Add cross-compilation support * guix/build-system/zig.scm (build): Add --target flag with target input (check): Disable with cross compilation Change-Id: I5f42ff897bfe00c92c6576900221a15ef210d669 Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2023-12-18build-system: Add ‘composer-build-system’.Nicolas Graves
* guix/build-system/composer.scm: New file. * guix/build/composer-build-system.scm: New file. * gnu/packages/aux-files/findclass.php: New file. * Makefile.am: Add them. * doc/guix.texi (Build Systems): Document it. Co-authored-by: Julien Lepiller <julien@lepiller.eu> Signed-off-by: Ludovic Courtès <ludo@gnu.org> Change-Id: Ie6a05b42ff04d3ad774a0a20278a77e4820bb8f6
2023-12-17build-system: Add mix-build-system.Pierre-Henry Fröhring
* guix/build-system/mix.scm: New file. * guix/build/mix-build-system.scm: New file. Change-Id: I8066d00f7ada4a384621bf541e679bc512e93435 Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
2023-12-13syscalls: Define riscv64 syscall ID for clone.MarcoFalke
* guix/build/syscalls.scm (clone): Add an entry for riscv64. This allows the use of --container on riscv64. Change-Id: I12b3cb5e2aa248266d006b6e456082f4ddc70e62 Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2023-11-28build: cargo: Use correct config file for cargo config.Efraim Flashner
* guix/build/cargo-build-system.scm (configure): Use .cargo/config as the config file. Add a note. Change-Id: Ice006c11184d4c8e1bdb765c3998b06ad299e55b
2023-11-28build/cargo-build-system: Enable cross-compiling.Efraim Flashner
* guix/build-system/cargo.scm (default-rust): Accept an argument. (default-rust-sysroot, cargo-cross-build): New procedures. (lower): Accept a rust-sysroot. [private-kewords]: Add rust-sysroot. Remove target if cross-compiling. [bag]: Allow cross-compiling. In host-inputs only have inputs when cross-compiling, move crate sources to here, remove standard-packages. In build-inputs add the inputs when not cross-compiling, add the standard-cross-packages when cross-compiling, add the standard-packages to here. Add target-inputs with the standard-cross-packages and rust-sysroot when cross-compiling. * guix/build/cargo-build-system.scm (configure): Accept target argument. When cross-compiling set some environment variables. Adjust the .config/cargo.toml to have configure options for cross-compiling. Change-Id: I388d1e1f48943e45ff01f55af8efc0746f383b4a
2023-11-28build: cargo-build-system: Pack crates reproducibly.Efraim Flashner
This fixes reproducibility in rust crates from the package phase, again, see <https://issues.guix.gnu.org/50015>. Reported by: Christopher Baines (in person). * guix/build/cargo-build-system.scm (package): When repacking the crate tarball use standard reproducibility flags. Change-Id: Ifb1440a023226bf0718e99ce9f95ef981e510cbc
2023-11-25syscalls: Add fallback case for ‘terminal-string-width’.Ludovic Courtès
This makes ‘terminal-string-width’ synonymous with ‘string-length’ when running one a statically-linked Guile, as is the case in some unit tests, instead of throwing ENOSYS. * guix/build/syscalls.scm (terminal-string-width): Use ‘dynamic-func’ and ‘pointer->procedure’ instead of ‘syscall->procedure’. Return ‘string-length’ when one of the ‘dynamic-func’ calls fails. Change-Id: Icf55c9e7c34b46fac91b665fb4a2ecb02160f22e
2023-11-15build-system/guile: Add target-guile-scm+go procedure.Tomas Volf
The paths to .scm and .go files can be constructed given a guile version and a base directory. However it is few lines of code that needs to be copy&pasted. This new procedure returns both of them reducing the maintenance cost. * guix/build/guile-build-system.scm (target-guile-scm+go): New procedure. Change-Id: I58615f2cfe0ec1e58d3fbb47b738ed5dce1bb252 Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2023-11-11guix: syscalls: Add terminal-string-width.Julien Lepiller
* guix/build/syscalls.scm (terminal-width): New procedure. * tests/syscalls.scm: Add tests. Change-Id: I6c2caa9fbaffb1e8f4b8933103399be970d5a8f3
2023-11-11build: minetest-build-system: Match name more strictly.Tristan Cottam
Some Minetest mods, such as the hitherto unpackaged minetest-ambience, have trailing garbage space (e.g. carriage returns) in their name line, that would otherwise end up as part of the mod's directory name. * guix/build/minetest-build-system.scm (name-regexp): Only match graphical characters in the name sub-match. Change-Id: I95f4c201724991a10efba5c859bfef99779ea495 Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
2023-11-09guix: ant: Optionally build with java modules.Julien Lepiller
Modules were introduced in Java 9 and are not supported by the default icedtea compiler, so this feature is disabled by default. * guix/build-system/ant.scm (ant-build): Add use-java-modules? parameter. * guix/build/ant-build-system.scm (default-build.xml) (configure): Use it. Change-Id: I3b99238e4cd262332fa5c818be1af5477c7374fd
2023-11-08build-system: Add vim-build-system.Jonathan Scoresby
* guix/build-system/vim.scm, * guix/build/vim-build-system.scm: New modules. * Makefile.am (MODULES): Register new files. * doc/guix.texi: Document it. Co-authored-by: Efraim Flashner <efraim@flashner.co.il> Signed-off-by: Efraim Flashner <efraim@flashner.co.il>
2023-11-07git-download: Add support for Git Large File Storage (LFS).Maxim Cournoyer
* guix/build/git.scm (git-fetch) [lfs?]: New argument, doc and setup code. (git-fetch-with-fallback) [lfs?]: New argument. Pass it to git-fetch. * guix/git-download.scm (git-lfs-package): New procedure. (git-fetch/in-band*): New procedure, made of the logic of git-fetch/in-band, with new git-lfs specifics, with the following changes: New #:git-lfs argument. <inputs>: Remove labels. Conditionally add git-lfs. <build>: Read "git lfs?" environment variable and pass its value to the #:lfs? argument of git-fetch-with-fallback. Use INPUTS directly; update comment. <gexp->derivation>: Add "git lfs?" to #:env-vars. (git-fetch/in-band): Express in terms of git-fetch/in-band*. (git-fetch/lfs): New procedure. * doc/guix.texi (origin Reference): Document it. Change-Id: I5b233b8642a7bdb8737b9d9b740e7254a89ccb25 Reviewed-by: Ludovic Courtès <ludo@gnu.org>
2023-10-23syscalls: Consistently use existing linux? definition.Sören Tempel
Instead of duplicating this existing logic across the source file. This will make it easier to add additional linux targets (e.g. linux-musl) in the future. * guix/build/syscalls.scm (readdir*, write-socket-address!) (read-socket-address): Use linux? constant. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Change-Id: I833c1d1630dcb8319584de1ea918cb22696f0058
2023-10-23syscalls: Add support for musl libc.Sören Tempel
This commit allows using Guix on a foreign distro which uses musl libc, for example, Alpine Linux. Usage of musl libc is detected via a new musl-libc? variable using the Guile %host-type. Using the new musl-libc? variable, we can now implement musl-specific quirks. The two compatibility problems I encountered in this regard are that musl dose not export a readdir64 and statfs64 symbol. On musl, these two functions are implemented as CPP macros that expand to readdir/statfs. To workaround that, a case-distinction was added. The existing linux? variable has been modified to return true if the %host-system contains "linux-" in order to ensure it is true for both linux-gnu as well as linux-musl host systems. The patch has been tested on Alpine Linux and is already used for the downstream Guix package shipped in Alpine Linux's package repository. * guix/build/syscalls.scm (musl-libc?): New variable. (linux?): Truth value on any linux system. (statfs, readdir-procedure): Support musl libc. Signed-off-by: Sören Tempel <soeren@soeren-tempel.net> Signed-off-by: Ludovic Courtès <ludo@gnu.org> Change-Id: Icc4101a062381240f977f4550344bde696513c52
2023-10-21Merge remote-tracking branch 'origin/rust-team'Efraim Flashner
2023-10-21build-system: Add zig-build-system.Ekaitz Zarraga
* guix/build-system/zig.scm: New file. * guix/build/zig-build-system.scm: New file. * Makefile.am: Add them. * doc/guix.texi: Document it. * etc/snippets/yas/scheme-mode/guix-package (build-system): Add zig-build-system. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2023-10-18build: cargo-build-system: Find more pregenerated files.Efraim Flashner
* guix/build/cargo-build-system.scm (check-for-pregenerated-files): Also search for MacOS dynamic libraries.
2023-10-18build: cargo-build-system: Strip enough prefix in package.Efraim Flashner
* guix/build/cargo-build-system.scm (package): When using the source as the packaged crate also strip the 'rust-' prefix.
2023-10-18build: cargo-build-system: Reset timestamps in crates.Efraim Flashner
This fixes reproducibility in rust crates from the package phase, see <https://issues.guix.gnu.org/50015>. * guix/build/cargo-build-system.scm (package): After running 'cargo package' on the source unpack the tarball, reset the timestamps and repack it.
2023-10-18build: cargo-build-system: Check for pregenerated files.Efraim Flashner
* guix/build/cargo-build-system.scm (check-for-pregenerated-files): New procedure. (%standard-phases): Add 'check-for-pregenerated-files phase between 'unpack and 'unpack-rust-crates.
2023-10-06build-system/minify: Use esbuild.Ricardo Wurmus
* guix/build-system/minify.scm (default-uglify-js): Replace this procedure... (default-esbuild): ...with this new procedure. (lower): Use it, and add "esbuild" to build inputs. * guix/build/minify-build-system.scm (minify): Invoke esbuild instead of setting up a pipe to uglifyjs. * gnu/packages/cran.scm (r-shiny)[native-inputs]: Replace node-uglify-js with esbuild. * gnu/packages/statistics.scm (r-dt)[native-inputs]: Same.
2023-10-04guix: meson-configuration: Fix boolean assigment.Jean-Pierre De Jesus DIAZ
* guix/build/meson-configuration.scm (write-assigment): Print true for #t and false for #f. Previously it was inverting the values. Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
2023-09-26git-download: Move fallback code to (guix build git).Ludovic Courtès
* guix/build/git.scm (git-fetch-with-fallback): New procedure, with code taken from… * guix/git-download.scm (git-fetch): … here. [modules]: Remove modules that are no longer directly used in ‘build’. [build]: Use ‘git-fetch-with-fallback’.
2023-09-07build: emacs-utils: Adjust ‘emacs-compile-directory’ for Emacs 29.Hilton Chain
* guix/build/emacs-utils.scm (emacs-compile-directory): After native compilation, write the bytecode file with ‘comp-write-bytecode-file’. Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
2023-08-26Merge branch 'master' into emacs-teamLiliana Marie Prikler
2023-08-19guix: emacs-utils: Add ert-number-tests.Liliana Marie Prikler
* guix/build/utils.scm (ert-number-tests): New variable.
2023-08-02build: qt-utils: Wrap QML2_IMPORT_PATH with 'prefix' location.Zheng Junjie
Some qml files have optional or circular dependencies, use 'prefix' instead of '=' to get those dependencies from environment/profile. * guix/build/qt-utils.scm (variables-for-wrapping): Use 'prefix' for QML2_IMPORT_PATH. Signed-off-by: 宋文武 <iyzsong@member.fsf.org>
2023-07-28download-nar: Improve output.Christopher Baines
Report errors that occur, output the "Downloading from " line before starting to report progress and end the output with a newline.
2023-07-18pack: Move common build code to (guix build pack).Maxim Cournoyer
The rationale is to reduce the number of derivations built per pack to ideally one, to minimize storage requirements. The number of derivations had gone up with 68380db4 ("pack: Extract populate-profile-root from self-contained-tarball/builder.") as a side effect to improving code reuse. * guix/scripts/pack.scm (guix): Add commentary comment. (populate-profile-root, self-contained-tarball/builder): Extract to... * guix/build/pack.scm (populate-profile-root): ... this, and... (build-self-contained-tarball): ... that, adjusting for use on the build side. (assert-utf8-locale): New procedure. (self-contained-tarball, debian-archive, rpm-archive): Adjust accordingly. Reviewed-by: Ludovic Courtès <ludo@gnu.org>
2023-07-18guix: texlive-build-system: Add #:link-scripts argument.Nicolas Goaziou
* doc/guix.texi (Build Systems): Document argument. * guix/build-system/texlive.scm (texlive-build): Add #:LINK-SCRIPTS argument. * guix/build/texlive-build-system.scm (link-scripts): (patch-shell-scripts): New function. (%standard-phases): Add new functions as phases.
2023-07-18guix: texlive-build-system: Generate TeX formats.Nicolas Goaziou
* guix/build-system/texlive.scm (texlive-build): Add #:CREATE-FORMATS argument. * doc/guix.texi (Build Systems): Document it. * guix/build/texlive-build-system.scm (texlive-input?): New function. (generate-font-metrics): Use new function above. (create-formats): New function. (%standard-phases): Add function above to phases.
2023-07-18guix: texlive-build-system: Handle doc-only packages gracefully.Nicolas Goaziou
* guix/build/texlive-build-system.scm (install): Always create #$output, even if it is empty.
2023-07-18guix: texlive-build-system: Generate font metrics.Nicolas Goaziou
* guix/build/texlive-build-system.scm (install-as-runfiles): (generate-font-metrics): New function. (build): Use INSTALL-AS-RUNFILES. (%standard-phases): Add new phase.
2023-07-18guix: texlive-build-system: Improvements on non-trivial packages.Nicolas Goaziou
* guix/build/texlive-build-system.scm (build): Ignore temporary build files when moving runfiles around. Remove ".drv" source files prior to compiling files. Remove need for #:TEX-DIRECTORY keyword. Handle ".ins" and ".dtx" files in different directories. (install): Install docfiles in "doc" output when available. * guix/build-system/texlive.scm (texlive-build): Remove #:TEX-DIRECTORY. * doc/guix.texi (Build Systems): Remove reference to #:TEX-DIRECTORY in TEXLIVE-BUILD-SYSTEM documentation. Also mention it now tries to compile ".dtx" files when there is no ".ins" file.
2023-07-05guix: git: Set initial branch name for git-fetch.Efraim Flashner
This removes the 'hint' about choosing a branch name when creating a new git repository. * guix/build/git.scm (git-fetch): When running 'git init' add an initial branch name.
2023-06-22guix: node-build-system: Delete from peerDependencies too.Lars-Dominik Braun
The current version of npm in Guix installs peerDependencies by default, whereas previously it would just warn about missing/wrong packages. Fixes <https://issues.guix.gnu.org/issue/64203>. * guix/build/node-build-system.scm (delete-dependencies): Remove supplied dependencies from peerDependencies field too.
2023-06-11svn-download: Do not expand keywords.Timothy Sample
Subversion keyword expansion is potentially non-reproducible as some of them expand time strings relative to the local time zone: https://issues.guix.gnu.org/43442#18 In practice this is not a problem in Guix since Subversion checkouts happen in an isolated environment using the "default timezone" (UTC). However, Software Heritage disables keyword expansion for this very reason. By following suit, we make sure content can be retrieved from there. * guix/build/svn.scm (svn-fecth): Pass "--ignore-keywords" to Subversion. * guix/build-system/texlive.scm (%texlive-date): New variable. * gnu/packages/java.scm (java-geronimo-xbean-reflect) (java-geronimo-genesis-2.1): Update the source hash. * gnu/packages/machine-learning.scm (ghmm): Likewise. * gnu/packages/video.scm (libsmpeg, libsmpeg-with-sdl1): Likewise. * gnu/packages/tex.scm (texlive-bin): Update the hash of the "texlive-scripts" input, and a add a new phase that imitates Subversion keyword expansion for scripts that need it. (texlive-latex-base): Update the hash of the "texlive-luatexconfig" native input. (texlive-hyphen-base, texlive-dvipdfmx, texlive-dvips, texlive-cm) (texlive-tex-plain, texlive-kpathsea, texlive-latexconfig) (texlive-tetex, texlive-pdftex, texlive-xetex): Update the source hash. Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2023-06-04build-system: New agda-build-system.Josselin Poiret
* guix/build-system/agda.scm: New file. * guix/build/agda-build-system.scm: New file. * Makefile.am (MODULES): Register them. * doc/guix.texi (Build Systems): Add documentation for agda-build-system.
2023-05-07gnu: rust: Update to 1.67.Efraim Flashner
* gnu/packages/rust.scm (rust): Update to 1.67. [arguments]: Add a phase to skip tests requiring mercurial. Extend the custom 'patch-process-tests phase. (rust-1.64)[arguments]: Adjust 'patch-cargo-checksums phase to patch another file. * guix/build/cargo-build-system.scm (package): Adjust to remove Cargo.toml.orig file if it exists.
2023-05-07build: cargo-build-system: Don't try to package when skipping build.Efraim Flashner
* guix/build/cargo-build-system.scm (package): If the package isn't going to be built then use the source instead.
2023-05-06build-system: node: Use `--install-links' with `npm install'.Jelle Licht
Later versions of npm need to explicitly install a copy of local dependencies, instead of only a symlink. * guix/build/node-build-system.scm (configure): Add `--install-links' to npm install invocation. (install): Ditto.
2023-04-14Merge branch 'master' into core-updates.Maxim Cournoyer
Conflicts: gnu/local.mk gnu/packages/build-tools.scm gnu/packages/certs.scm gnu/packages/check.scm gnu/packages/compression.scm gnu/packages/cups.scm gnu/packages/fontutils.scm gnu/packages/gnuzilla.scm gnu/packages/guile.scm gnu/packages/ibus.scm gnu/packages/image-processing.scm gnu/packages/linux.scm gnu/packages/music.scm gnu/packages/nss.scm gnu/packages/pdf.scm gnu/packages/python-xyz.scm gnu/packages/qt.scm gnu/packages/ruby.scm gnu/packages/shells.scm gnu/packages/tex.scm gnu/packages/video.scm gnu/packages/vulkan.scm gnu/packages/web.scm gnu/packages/webkit.scm gnu/packages/wm.scm
2023-04-14build/glib-or-gtk: Avoid duplicate entries in gdk-pixbuf loaders cache.Maxim Cournoyer
* guix/build/glib-or-gtk-build-system.scm (generate-gdk-pixbuf-loaders-cache): Delete duplicate directories passed as input.
2023-04-12po: Do not auto-translate cross-references to other manuals.Florian Pelz
Reported by Gottfried at <https://lists.gnu.org/archive/html/help-guix/2023-04/msg00000.html>. * guix/build/po.scm (xref-regexp): Dispatch on the number of arguments. Ensure there is no info-manual argument or it is empty. (translate-cross-references): Adapt to changed regexp. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2023-04-09build: meson: Explicitly invoke "meson setup" instead of just "meson".Maxim Cournoyer
* guix/build/meson-build-system.scm (configure): Invoke the setup command to avoid a deprecation warning.
2023-04-09build: meson: Honor bindir, libdir and includedir.Maxim Cournoyer
This brings our meson-build-system closer to our gnu-build-system in terms of using different installation prefixes based on the presence of outputs such as "bin", "lib" or "include". * guix/build/meson-build-system.scm (configure): Add --bindir, --libdir and --includedir according to the presence of the "bin", "lib" and "include" outputs, as done in gnu-build-system.
2023-03-28Merge remote-tracking branch 'origin/master' into stagingMaxim Cournoyer
2023-03-28build: qt-utils: Revert setting QT_PLUGIN_PATH exactly.Maxim Cournoyer
Fixes <https://issues.guix.gnu.org/57742>. The documentation of Qt states that it is a supported use case to mix Qt 5 and Qt 6 plugins in QT_PLUGIN_PATH [0]. This reverts the change to QT_PLUGIN_PATH introduced in 1f466ed6be9 ("build: qt: Add qtbase argument and wrap Qt environment variables exactly."). [0] https://doc.qt.io/qt-6.2/deployment-plugins.html#loading-and-verifying-plugins-dynamically * guix/build/qt-utils.scm (variables-for-wrapping): Wrap QT_PLUGIN_PATH using the prefix method.