summaryrefslogtreecommitdiff
path: root/guix/build
AgeCommit message (Collapse)Author
2022-11-07syscalls: Adjust for lack of 'libutil.so' on glibc >= 2.34.Ludovic Courtès
This is a re-implementation of 3c8b6fd94ceb1e898216929e8768fb518dbf1de9 done in a way that works for both glibc >= 2.34 and earlier versions. * guix/build/syscalls.scm (syscall->procedure): When LIBRARY is true, fall back to global symbols if (dynamic-link library) fails.
2022-11-07Revert "syscalls: Adjust for glibc 2.34 and later."Ludovic Courtès
This reverts commit 3c8b6fd94ceb1e898216929e8768fb518dbf1de9, which would break bindings on glibc < 2.34 where those symbols are in "libutil.so".
2022-10-09build-system/gnu: Fix patch-dot-desktop-files regexp.Brendan Tildesley
When patching .desktop files, Exec= values beginning with "/", (or spaces or newline characters) will result in BINARY matching the empty string. Changing "*", meaning 0 or more, to "+", meaning 1 or more, ensures it will match a basename of at least length 1, or nothing. * guix/build/gnu-build-system.scm (patch-dot-desktop-files): Substitute ‘+’ for ‘*’. Signed-off-by: Tobias Geerinckx-Rice <me@tobias.gr>
2022-09-27Merge branch 'staging' into core-updatesMaxim Cournoyer
Conflicts resolved in: gnu/local.mk gnu/packages/cran.scm gnu/packages/gnome.scm gnu/packages/gtk.scm gnu/packages/icu4c.scm gnu/packages/java.scm gnu/packages/machine-learning.scm gnu/packages/tex.scm
2022-09-26debug-link: Clarify what CRC is.jgart
* guix/build/debug-link.scm: Clarify "CRC"; update bug URL. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-09-15Merge branch 'staging' into core-updatesMaxim Cournoyer
Conflicts resolved in: gnu/local.mk gnu/packages/cmake.scm gnu/packages/glib.scm gnu/packages/gnome.scm gnu/packages/gtk.scm gnu/packages/sdl.scm pango-next, vala-next and librsvg-bootstrap were removed in the process.
2022-09-11build-system: emacs: Use new function for autoloads generationMorgan Smith
* guix/build/emacs-utils.scm (emacs-generate-autoloads): Use 'loaddefs-generate' to create autoloads instead of 'update-directory-autoloads' if we are using a new enough Emacs Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
2022-09-11build-system: emacs: Use native compilation.Liliana Marie Prikler
* guix/build/emacs-build-system.scm (add-install-to-native-load-path): New variable. (build): Replace ‘emacs-byte-compile-directory’ with ‘emacs-compile-directory’. Delete already compiled files in the working directory prior to compilation. (%standard-phases): Add ‘add-install-to-native-load-path’ after ‘expand-load-path’.
2022-09-11guix: emacs-utils: Add emacs-compile-directory.Liliana Marie Prikler
* guix/build/emacs-utils.scm (emacs-compile-directory): New variable.
2022-09-08syscalls: Adjust for glibc 2.34 and later.Marius Bakke
* guix/build/syscalls.scm (openpty, login-tty): Remove #:library argument, as these functions have been moved to libc.so.
2022-09-08Merge branch 'staging' into core-updatesMarius Bakke
2022-09-08syscalls: Avoid repeated calls to 'syscall->procedure'.Ludovic Courtès
Commit 7df4d3465d305271d4fdf4e6f886a248d63b82c4 and others changed 'mount', 'umount', & co. so they would call 'syscall->procedure' at each call. This change reverts to the previous behavior, where 'syscall->procedure' is called once. * guix/build/syscalls.scm (mount, umount, reboot, load-linux-module): Call 'syscall->procedure' only once.
2022-09-07profiles: Implicitly set GUIX_EXTENSIONS_PATH.(unmatched-parenthesis
* guix/build/profiles.scm (manifest-sexp->inputs+search-paths): Always return a search path for GUIX_EXTENSIONS_PATH. * guix/search-paths.scm ($GUIX_EXTENSIONS_PATH): New variable. This allows Guix to find extensions without any need for users to set GUIX_EXTENSIONS_PATH manually. Signed-off-by: Efraim Flashner <efraim@flashner.co.il>
2022-09-02guix: build: Factor out default collision-resolver.Attila Lendvai
This prepares the stage for new collision resolvers without changing the underlying semantics too much. * guix/build/union.scm (resolve+warn-if-harmful): New variable. (warn-about-collision): Rename to... (resolve-collision/default): ... this. Implement in terms of resolve+warn-if-harmful. (union-build): Adjust accordingly. * guix/gexp.scm (directory-union): Likewise. Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
2022-09-02guix: build: Avoid using magic literals in the code for hash length.Attila Lendvai
* guix/build/utils.scm (%store-hash-string-length): New constant. (store-path-prefix-length): Factor out the calculation of the total store prefix length. * guix/build/graft.scm (hash-length): Use it. Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
2022-09-02guix: build: Promote local define-inline to a define-constant util.Attila Lendvai
* guix/build/utils.scm: Moved/renamed define-inline from grafts.scm to an exported define-constant util. Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
2022-08-11Merge branch 'staging' into core-updatesMarius Bakke
2022-08-10gnu: system: file-systems: Add shared flag.Oleg Pykhalov
* gnu/build/file-systems.scm (mount-flags->bit-mask, mount-file-system): Handle shared flag. * gnu/system/file-systems.scm (invalid-file-system-flags): Add shared to known flags. * guix/build/syscalls.scm (MS_SHARED): New variable. * doc/guix.texi (File Systems): Document shared flag.
2022-08-04build: qt-utils: Fix another regression.Maxim Cournoyer
This fixes another regression introduced with 1f466ed6be932526fc69e72ffd50390691d0d382, which affected the packages bitmask, hime, hime, nimf and vorta. The fix is to provide a default qt-major-version when #:qtbase is missing, such as when borrowing the qt-wrap phase in a package not using the Qt build system. * guix/build/qt-utils.scm (wrap-all-qt-programs)[qt-major-version]: Fall-back to %default-qt-major-version when #:qtbase is #f. Reported-by: John Kehayias <john.kehayias@protonmail.com> and others.
2022-08-03download: Do not wrap TLS port on GnuTLS >= 3.7.7.Ludovic Courtès
The custom input/output port wrapping the TLS session record port would introduce overhead, and it would also prevent its uses in a non-blocking context--e.g., with Fibers. The port close mechanism added in GnuTLS 3.7.7 allows us to get rid of that wrapper. * guix/build/download.scm (wrap-record-port-for-gnutls<3.7.7): New procedure, with code formerly in 'tls-wrap'. (tls-wrap): Check for 'set-session-record-port-close!' and use it when available; otherwise call 'wrap-record-port-for-gnutls<3.7.7'.
2022-08-03build-system: asdf: Add asd-operation parameter.Guillaume Le Vaillant
The 'asd-operation' parameter can be used to specify the ASDF operation to use in the build phase. It's default value is "load-system". * guix/build-system/asdf.scm (package-with-build-system, asdf-build): Add 'asd-operation' parameter. * guix/build/asdf-buid-system.scm (build): Add 'asd-operation' parameter and use it. * guix/build/lisp-utils.scm (compile-systems): Add 'asd-operation' parameter and use it.
2022-08-03build-system: asdf: Let ASDF locate the .asd files.Pierre Neidhardt
This approach has many benefits: - It simplifies the build system. - The package definitions are easier to write. - It fixes a bug with systems that call asdf:clear-system which would cause the load to fail. See for instance test systems using Prove. * guix/build-system/asdf.scm (package-with-build-system): Remove 'asd-files' and replace 'test-asd-file' by 'asd-test-systems'. (lower): Same. * guix/build/asdf-build-system.scm (source-asd-file): Remove since ASDF does it better than us. (find-asd-files): Same. (build): Remove unused asd-files argument. (check): Remove asd-files argument and replace asd-systems by asd-test-systems. * guix/build/lisp-utils.scm (compile-systems): Call to ASDF to find the systems. (test-system): Same. Signed-off-by: Guillaume Le Vaillant <glv@posteo.net>
2022-08-03guix: build: Switch from asdf:compile-system to asdf:load-system.Pierre Neidhardt
According to the ASDF manual: This will make sure all the files in the system are compiled, but not necessarily load any of them in the current image; on most systems, it will _not_ load all compiled files in the current image. This function exists for symmetry with 'load-system' but is not recommended unless you are writing build scripts and know what you're doing. * guix/build/lisp-utils.scm (compile-systems): Switch from asdf:compile-system to asdf:load-system. Signed-off-by: Guillaume Le Vaillant <glv@posteo.net>
2022-08-01download: 'url-fetch' closes its HTTP/HTTPS port.Ludovic Courtès
* guix/build/download.scm (url-fetch)[fetch]: In the http/https case, close PORT before returning.
2022-07-31build: qt: Add qtbase argument and wrap Qt environment variables exactly.Maxim Cournoyer
* guix/build-system/qt.scm (default-qtbase): New variable. (lower) <#:qtbase>: Add argument... [build-inputs]: ... and propagate it here. (qt-build): Add qtbase argument. (qt-cross-build): Likewise. * guix/build/qt-utils.scm (%default-qt-major-version): New variable. (variables-for-wrapping): Add qt-major-version argument, and use it to format the various path prefixes. Wrap QT environment variables exactly. (wrap-qt-program*): Add qt-major-version argument, and pass it to variables-for-wrapping. (wrap-qt-program): Add qt-major-version argument, and pass it to wrap-qt-program*. (wrap-all-qt-programs): Add qtbase argument, and extract the major version from it, passing it to wrap-qt-program*.
2022-07-27Merge branch 'staging' into core-updatesMarius Bakke
2022-07-22Merge branch 'staging' into core-updatesMarius Bakke
2022-07-23gnu: clojure: Update to 1.11.1.r0man
This patch updates Clojure to 1.11.1. It also adds the 'reset-class-timestamps phase to the Clojure build system. This phase makes sure the timestamp of compiled class files is set to a later point in time than the timestamp of the corresponding Clojure source files. If the timestamps of the class and source files are the same, the Clojure compiler will compile the sources again which can lead to issues. This problem has been discussed here [1]. The suggested solution was to keep/adjust the timestamps of the class files. [1] https://www.mail-archive.com/clojure@googlegroups.com/msg99928.html * gnu/packages/clojure.scm (clojure): Update to 1.11.1 and update all of LIBRARIES accordingly. [arguments]: In 'unpack-library-sources' phase, copy from "core-specs-alpha-src" and "spec-alpha-src" as well. Add phases 'closure-spec-skip-macros', 'clojure-spec-compile', 'maven-classpath-properties', and 'reset-class-timestamps'. * guix/build/clojure-build-system.scm (regular-jar-file?) (reset-class-timestamps): New procedures. (%standard-phases): Add 'reset-class-timestamps' phase. Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2022-07-08profiles: Support the creation of profiles with version 3 manifests.Ludovic Courtès
* guix/profiles.scm (%manifest-format-version): New variable. (manifest->gexp): Add optional 'format-version' parameter. [optional, entry->gexp]: Honor it. (profile-derivation): Add #:format-version parameter and honor it. (<profile>)[format-version]: New field. (profile-compiler): Honor it. * guix/build/profiles.scm (manifest-sexp->inputs+search-paths): Support both versions 3 and 4. Remove unused 'properties' variable. * tests/profiles.scm ("profile-derivation format version 3"): New test.
2022-07-01profiles: Do not repeat entries in 'manifest' file.Ludovic Courtès
Fixes <https://issues.guix.gnu.org/55499>. Reported by Ricardo Wurmus <rekado@elephly.net>. With this change, the manifest file created for: guix install r r-seurat r-cistopic r-monocle3 r-cicero-monocle3 r-assertthat goes from 5.7M to 176K. Likewise, on this profile, wall-clock time of: GUIX_PROFILING=gc guix package -I goes from 0.7s to 0.1s, with heap usage going from 55M to 9M. * guix/profiles.scm (manifest->gexp)[optional]: New procedure. [entry->gexp]: Turn into a monadic procedure. Return a 'repeated' sexp if ENTRY was already visited before. Adjust caller accordingly. Bump manifest version. (sexp->manifest)[sexp->manifest-entry]: Turn into a monadic procedure. Add case for 'repeated' nodes. Add each entry to the current state vhash. Add clause for version 4 manifests. [sexp->manifest-entry/v3]: New procedure, with former 'sexp->manifest-entry' code. * tests/profiles.scm ("deduplication of repeated entries"): New test. * guix/build/profiles.scm (manifest-sexp->inputs+search-paths)[let-fields]: New macro. Use it. Expect version 4. Add clause for 'repeated' nodes.
2022-06-27Merge branch 'master' into core-updatesMarius Bakke
2022-06-25utils: Make switch-symlinks robust against interruption.Arun Isaac
* guix/build/utils.scm (switch-symlinks): Delete pivot link if it already exists. Co-authored-by: Maxime Devos <maximedevos@telenet.be>
2022-06-25utils: Move switch-symlinks to (guix build utils).Arun Isaac
* guix/utils.scm (switch-symlinks): Move to ... * guix/build/utils.scm (switch-symlinks): ... here. * guix/profiles.scm, guix/scripts/home.scm, guix/scripts/package.scm: Import switch-symlinks from (guix build utils). * guix/scripts/system/reconfigure.scm (switch-system-program): Import (guix build utils) in G-expression.
2022-06-22python-build-system: Fix typo in module-level comment paragraph.jgart
* guix/build/python-build-system.scm: Fix typo in comment paragraph. Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2022-06-22Merge branch master into core-updatesLudovic Courtès
2022-06-19build-system/dub: Don't expect ‘.dub/dub.json’.(
This file is no longer produced by our version of Dub. * guix/build/dub-build-system.scm (build, check): Remove obsolete substitutions. Signed-off-by: Tobias Geerinckx-Rice <me@tobias.gr>
2022-06-19build-system/dub: Fix configure docstring indentation.(
* guix/build/dub-build-system.scm (configure): Reflow docstring. Signed-off-by: Tobias Geerinckx-Rice <me@tobias.gr>
2022-06-19build-system/dub: Don't explicitly return #t from phases.(
* guix/build/dub-build-system.scm (configure, build, check, install): Remove trailing #t. Signed-off-by: Tobias Geerinckx-Rice <me@tobias.gr>
2022-06-21build-system: chicken: Add version information to eggs if missing.Michal Atlas
Chicken eggs do not always contain version information, yet dependant packages often rely on this information being present. Thus, add a version field if it is missing. * guix/build/chicken-build-system.scm (stamp-egg-version): New variable. (%standard-phases): Add ‘stamp-egg-version’. Signed-off-by: Liliana Marie Prikler <liliana.prikler@gmail.com>
2022-06-17guix: emacs-utils: Add emacs-header-parse.Fredrik Salomonsson
* guix/build/emacs-utils.scm (emacs-header-parse): New procedure. * tests/build-emacs-utils.scm ("emacs-header-parse: fetch version", "emacs-header-parse: fetch keywords", "emacs-header-parse: fetch nonexistent author"): New tests. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-06-17guix: emacs-utils: Add emacs-batch-script.Fredrik Salomonsson
* guix/build/emacs-utils.scm (emacs-batch-script): New procedure. * tests/build-emacs-utils.scm: New file. * Makefile.am (TESTS): Add `tests/build-emacs-utils.scm'. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-06-17guix: Modernize renpy-build-system.Liliana Marie Prikler
* guix/build-system/renpy.scm (build): Drop trailing #t. (install, install-desktop-file): Likewise. Also add inputs and use search-input-file for /bin/sh and /bin/renpy.
2022-06-15build-system: Add 'rebar-build-system'.Hartmut Goebel
* guix/build-system/rebar.scm, guix/build/rebar-build-system.scm: New files. * Makefile.am (MODULES): Add them. * doc/guix.texi (Build Systems): Update rebar-build-system section.
2022-06-08Merge branch 'master' into core-updatesLudovic Courtès
2022-05-31gnu: bazaar: Obsolete with breezy.Maxim Cournoyer
* gnu/packages/version-control.scm (bazaar): Deprecate package. * guix/build/bzr.scm (bzr-fetch): Adjust to use breezy; delete trailing #t. * guix/bzr-download.scm (bzr-package): Replace bazaar by breezy.
2022-05-18python-build-system: Change let* to let in `site-packages'.jgart
* guix/build/python-build-system.scm (site-packages): Change let* to let for readability and since let* is unused. Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2022-05-16build: font-build-system: Do not return #t from phases.Arun Isaac
* guix/build/font-build-system.scm (unpack, install): Do not return #t from phases.
2022-05-16build: font-build-system: Install web fonts.Arun Isaac
* guix/build/font-build-system.scm (install): Install woff and woff2 web font files.
2022-05-22guix: Add elm-build-system.Philip McGrath
* gnu/packages/patches/elm-offline-package-registry.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. * gnu/packages/elm.scm (elm): Use it. * guix/build-system/elm.scm, guix/build/elm-build-system.scm, tests/elm.scm: New files. * Makefile.scm (MODULES, SCM_TESTS): Add them. * doc/guix.texi (Build Systems): Document 'elm-build-system'. * doc/contributing.texi (Elm Packages): New section. Document naming conventions and utilities. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-04-04build: emacs-utils: Add a (as-display) subform to `emacs-substitute-variables'.Maxim Cournoyer
* guix/build/emacs-utils.scm (as-display): New variable. (replacement-helper): New syntax helper. (emacs-substitute-sexps): Use it and update doc. (emacs-substitute-variables): Add an optional 'modifier' datum to the replacement specification, and document it.