summaryrefslogtreecommitdiff
path: root/guix
Commit message (Collapse)AuthorAge
* build-system/meson: Support cross-compilation.Maxime Devos2021-07-14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* packages: Define this-package-input and this-package-native-input.Maxime Devos2021-07-14
| | | | | | | | | | | | | These macros are intended to be used in build phases. More precisely, (assoc-ref %build-inputs "input") can be replaced by #$(this-package-input "input") or #+(this-package-native-input "native-input") as appropriate. * guix/packages.scm (package-input, package-native-input): New (unexported) procedures. (this-package-input, this-package-native-input): New macros. Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
* utils: Define a target-x86-32? and target-x86-64? predicate.Maxime Devos2021-07-14
| | | | | | | * guix/utils.scm (target-x86-32?, target-x86-64?): New predicates. * tests/utils.scm ("target-x86-32?", "target-x86-64?"): New tests. Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
* utils: Give 'target-mingw?' a docstring.Maxime Devos2021-07-14
| | | | | | | | | | target-hurd? and target-linux? have docstrings, but target-mingw? doesn't. * guix/utils.scm (target-mingw?): Add a docstring. Reported-By: Mathieu Othacehe <othacehe@gnu.org> Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
* utils: Define 'target-hurd?' predicate.Maxime Devos2021-07-14
| | | | | | | | | | | | | | | | | | | | | | | It behaves similarily to the other target-...? procedures. The usage of hurd-triplet? / target-hurd? in libgc appears incorrect to me, as (%current-system) is normally never false. * gnu/packages/hurd.scm (hurd-triplet?): Move to ... * guix/util.scm (target-hurd?): ... here, let its argument default to (%current-target-system) or (%current-system), and write a docstring. * gnu/packages/hurd.scm (hurd-target?, hurd-system?): Use target-hurd? instead of hurd-triplet?. * gnu/packages/bdw-gc.scm (libgc): Likewise. * gnu/packages/cross-base.scm (cross-libc)[arguments]<#:configure-flags>: Likewise. (cross-libc)[arguments]<#:phases>: Likewise. (cross-libc)[arguments]<#:native-inputs>: Likewise. * gnu/packages/make-boostrap.scm (%glibc-stripped)[inputs]: Likewise. Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
* utils: Define 'target-linux?' predicate.Maxime Devos2021-07-14
| | | | | | | | | * guix/utils.scm (target-linux?): New predicate. * tests/utils.scm ("target-linux?"): Test it. ("target-mingw?"): Also test ‘target-mingw?’. Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
* import: elpa: Emit new-style package inputs.Ludovic Courtès2021-07-11
| | | | | | * guix/import/elpa.scm (elpa-package->sexp)[dependencies]: Turn into a list of symbols. [maybe-inputs]: Wrap in 'list' instead of 'quasiquote'.
* import: print: Emit new-style package inputs when possible.Ludovic Courtès2021-07-11
| | | | | | | | * guix/import/print.scm (redundant-input-labels?): New procedure. (package->code)[package-lists->code]: Rename to... [inputs->code]: ... this. When 'redundant-input-labels?' returns true, emit label-less inputs. Adjust callers to new name. * tests/print.scm (pkg-with-inputs): Adjust accordingly.
* import: cran: Emit new-style package inputs.Ludovic Courtès2021-07-11
| | | | | | | * guix/import/cran.scm (format-inputs): Emit symbols or 'specification->package' calls. (maybe-inputs): Wrap in 'list' instead of 'quasiquote'. * tests/cran.scm ("description->package"): Adjust accordingly.
* import: pypi: Emit new-style package inputs.Ludovic Courtès2021-07-11
| | | | | | | | * guix/import/pypi.scm (maybe-inputs): Wrap PACKAGE-INPUTS in 'list' instead of 'quasiquote'. (compute-inputs)[requirement->package-name/sort]: Return a list of symbols. * tests/pypi.scm ("pypi->guix-package, no wheel") ("pypi->guix-package, wheels"): Adjust accordingly.
* packages: 'hidden-package' inherits the original package location.Ludovic Courtès2021-07-11
| | | | * guix/packages.scm (hidden-package): Inherit 'location' from P.
* Add 'guix style'.Ludovic Courtès2021-07-11
| | | | | | | | | * guix/scripts/style.scm, tests/style.scm: New files. * Makefile.am (MODULES, SCM_TESTS): Add them. * po/guix/POTFILES.in: Add 'guix/scripts/style.scm'. * doc/guix.texi (Invoking guix style): New node. (package Reference): Reference it. (Invoking guix lint): Likewise.
* utils: 'edit-expression' copies part of the original source map.Ludovic Courtès2021-07-11
| | | | | | | * guix/utils.scm (source-location-key/stamp): New procedure. (go-to-location): Use it. (move-source-location-map!): New procedure. (edit-expression): Call it.
* utils: 'edit-expression' modifies the file only if necessary.Ludovic Courtès2021-07-11
| | | | * guix/utils.scm (edit-expression): Check whether STR* equals STR.
* utils: Add 'go-to-location' with source location caching.Ludovic Courtès2021-07-11
| | | | | | | | * guix/utils.scm (%source-location-map): New variable. (go-to-location): New procedure. (edit-expression): Use it instead of custom loop. * guix/packages.scm (package-field-location)[goto]: Remove. Use 'go-to-location' instead of 'goto'.
* utils: 'edit-expression' no longer leaks file ports.Ludovic Courtès2021-07-11
| | | | | * guix/utils.scm (edit-expression): Use 'call-with-input-file' to make sure IN gets closed.
* packages: Add 'modify-inputs'.Ludovic Courtès2021-07-11
| | | | | | | * guix/packages.scm (inputs-sans-labels, replace-input): New procedures. (prepend, replace, modify-inputs): New macros. * doc/guix.texi (Defining Package Variants): Document 'modify-inputs'. * dir-locals.el: Add 'modify-inputs' and its keywords.
* packages: Add 'lookup-package-input' & co.Ludovic Courtès2021-07-11
| | | | | | | * guix/packages.scm (lookup-input, lookup-package-input) (lookup-package-native-input, lookup-package-propagated-input) (lookup-package-direct-input): New procedures. * doc/guix.texi (package Reference): Document them.
* lint: Add 'input-labels' checker.Ludovic Courtès2021-07-11
| | | | | | | | * guix/lint.scm (check-input-labels): New procedure. (%local-checkers): Add 'input-labels' checker. * tests/lint.scm ("input labels: no warnings") ("input labels: one warning"): New tests. * doc/guix.texi (Invoking guix lint): Mention it.
* packages: Allow inputs to be plain package lists.Ludovic Courtès2021-07-11
| | | | | | | | | | | | | | | | | | | | | | | | | * guix/packages.scm (add-input-label, sanitize-inputs): New procedures. (<package>)[inputs, propagated-inputs, native-inputs]: Add 'sanitize' property. * doc/guix.texi (Defining Packages, package Reference): (Defining Package Variants): Adjust examples accordingly. * tests/packages.scm ("transaction-upgrade-entry, zero upgrades, propagated inputs") ("transaction-upgrade-entry, grafts") ("package-transitive-inputs") ("package-transitive-supported-systems") ("package-closure") ("supported-package?") ("package-derivation, inputs deduplicated") ("package-transitive-native-search-paths") ("package-grafts, indirect grafts") ("package-grafts, indirect grafts, propagated inputs") ("package-grafts, same replacement twice") ("package-grafts, dependency on several outputs") ("replacement also grafted") ("package->bag, sensitivity to %current-target-system") ("package->bag, propagated inputs") ("package->bag, sensitivity to %current-system") ("package-input-rewriting/spec, identity") ("package-input-rewriting, identity"): Use the label-less input style.
* records: Support field sanitizers.Ludovic Courtès2021-07-11
| | | | | | | | | | * guix/records.scm (make-syntactic-constructor): Add #:sanitizers. [field-sanitizer]: New procedure. [wrap-field-value]: Honor F's sanitizer. (define-record-type*)[field-sanitizer]: New procedure. Pass #:sanitizer to 'make-syntactic-constructor'. * tests/records.scm ("define-record-type* & sanitize") ("define-record-type* & sanitize & thunked"): New tests.
* utils: Add 'search-input-directory'.Ludovic Courtès2021-07-08
| | | | | | * guix/build/utils.scm (search-input-directory): New procedure. * doc/guix.texi (Build Utilities): Document it next to 'search-input-file'. Tweak wording.
* build-system/gnu: patch-shebangs: Also patch shebangs in "/libexec".Maxime Devos2021-07-08
| | | | | | | | | | | | | 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>
* build-system/trivial: Honor build inputs when cross-compiling.Ludovic Courtès2021-07-05
| | | | | | | | | Fixes a regression introduced in 7d873f194ca69d6096d28d7a224ab78e83e34fe1 whereby host inputs would be missing altogether from '%build-inputs', which broke cross-compilation. * guix/build-system/trivial.scm (trivial-cross-build): Append HOST-INPUTS to the 'with-build-variables' argument.
* tests: Unset NIX_STORE_DIR when running external tests.Ludovic Courtès2021-07-05
| | | | | | | | | This is a followup to cfcead2e515c0dae02127e5a76496463898be6b6 and 47a6a938c3c4d0bbe7b6a3c64ff75d7bfb2f24fb, which made (guix packages) dependent on the value of NIX_STORE_DIR. * guix/tests.scm (call-with-external-store): Unset NIX_STORE_DIR before calling PROC.
* build-system/gnu: Define '%build-inputs' when cross-compiling.Ludovic Courtès2021-07-05
| | | | | | | | Reported by Maxime Devos. * guix/build-system/gnu.scm (gnu-cross-build)[builder]: Define '%build-inputs' as it existed before 7d873f194ca69d6096d28d7a224ab78e83e34fe1.
* build-system/texlive: Change default format to pdftexThiago Jung Bauermann2021-07-05
| | | | | | | | | | | | | | LuaTeX has a bug where sometimes it corrupts the heap and aborts. This causes the build of texlive packages to fail at random. The problem is being tracked at https://issues.guix.gnu.org/48064. While a fix isn't found, switch the default TeX format (and consequently also the engine) to pdftex to avoid the issue. * guix/build-system/texlive.scm (texlive-build): Change default value of the ‘tex-format’ key parameter to “pdftex”. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* packages: 'package-derivation' honors 'system' again.Ludovic Courtès2021-07-01
| | | | | | | | | | | | | | | | | Fixes a regression introduced in 7d873f194ca69d6096d28d7a224ab78e83e34fe1. Starting from 7d873f194ca69d6096d28d7a224ab78e83e34fe1, running guix build -s aarch64-linux sed on an x86_64-linux machine would return an x86_64-linux machine, whereby only the top derivation of the graph would be aarch64-linux while all its dependencies would be x86_64-linux. * guix/packages.scm (expand-input): Add 'system' parameter and honor it. (bag->derivation, bag->cross-derivation): Pass SYSTEM to 'expand-input'. * tests/packages.scm ("package-derivation, different system"): New test.
* Merge branch 'master' into core-updatesTobias Geerinckx-Rice2021-06-23
|\ | | | | | | | | | | | | | | Conflicts: gnu/packages/cups.scm gnu/packages/python-web.scm gnu/packages/web.scm guix/build/maven/pom.scm
| * profiles: Build union of inputs in the right order.Ludovic Courtès2021-06-22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 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 8cef92d0633850d97c1a1d4521812268f56672be, 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.
| * guix: java-utils: Look for actual jar files.Julien Lepiller2021-06-22
| | | | | | | | | | * guix/build/java-utils.scm (install-from-pom): Fix `find-files` to look only for jar files.
| * guix: maven: Use a temporary file to fix pom files.Julien Lepiller2021-06-22
| | | | | | | | | | * guix/build/maven/pom.scm (fix-pom-dependencies): Actually use the temporary file that was created.
| * guix: maven: Look in local packages when searching for package version.Julien Lepiller2021-06-22
| | | | | | | | | | * guix/build/maven/pom.scm (fix-pom-dependencies): Also look at local packages when looking for a package version.
| * guix: maven: Support fixing modules.Julien Lepiller2021-06-22
| | | | | | | | | | | | * 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.
| * guix: maven: Support fixing extensions.Julien Lepiller2021-06-22
| | | | | | | | | | * guix/build/maven/pom.scm (fix-pom-dependencies): Add support for fixing extension versions.
| * guix: maven: Simplify finding local packages and modules.Julien Lepiller2021-06-22
| | | | | | | | | | | | | | | | | | | | * 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.
| * guix: maven: Simplify finding version and group information.Julien Lepiller2021-06-22
| | | | | | | | | | | | | | * 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.
| * guix: java-utils: Factorize pom.xml generation.Julien Lepiller2021-06-22
| | | | | | | | | | | | | | | | | | * 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.
| * import: egg: Edit egg->guix-package docstring.Tobias Geerinckx-Rice2021-06-21
| | | | | | | | * guix/import/egg.scm (egg->guix-package): Edit docstring.
| * import: launchpad: Fix typo.Brice Waegeneire2021-06-19
| | | | | | | | | | * guix/import/launchpad.scm (latest-release): Rename 'origin-github-uri' to 'origin-launchpad-uri'.
| * import: launchpad: Use repository to retrieve releases.Matthew James Kraai2021-06-19
| | | | | | | | | | | | | | | | * guix/import/launchpad.scm (latest-released-version): Use repository instead of package name. (latest-release): Pass repository to latest-released-version. Signed-off-by: Brice Waegeneire <brice@waegenei.re>
* | tests: Remove stale reference to %derivation-cache.Chris Marusich2021-06-22
| | | | | | | | | | | | * guix/tests.scm (call-with-external-store): Remove the stale reference to %derivation-cache. This was causing the tests to error out, since it was removed from (guix packages) in 7d873f194ca69d6096d28d7a224ab78e83e34fe1.
* | Merge branch 'master' into core-updatesMarius Bakke2021-06-19
|\| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Note: this merge actually changes the 'curl' and 'python-attrs' derivations, as part of solving caf4a7a2770ef4d05a6e18f40d602e51da749ddc and 12964df69a99de6190422c752fef65ef813f3b6b 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
| * profiles: Add "XAUTHORITY" to the precious variables.Ludovic Courtès2021-06-18
| | | | | | | | | | | | Suggested by Maxime Devos <maximedevos@telenet.be>. * guix/profiles.scm (%precious-variables): Add "XAUTHORITY".
| * profiles: Add 'load-profile'.Ludovic Courtès2021-06-18
| | | | | | | | | | | | | | | | | | * guix/profiles.scm (%precious-variables): New variable. (purify-environment, load-profile): New procedures. * guix/scripts/environment.scm (%precious-variables) (purify-environment, create-environment): Remove. (launch-environment): Call 'load-profile' instead of 'create-environment'. * tests/profiles.scm ("load-profile"): New test.
| * lint: check-patch-headers: Recognize Git diffs.Ludovic Courtès2021-06-18
| | | | | | | | * guix/lint.scm (check-patch-headers): Add "diff --git " prefix.
| * import: launchpad: Gracefully handle 404s from api.launchpad.net.Ludovic Courtès2021-06-18
| | | | | | | | | | | | | | | | Fixes <https://bugs.gnu.org/49031>. Reported by Emad Alblueshi <emad.albloushi@gmail.com>. * guix/import/launchpad.scm (latest-released-version): Gracefully handle 'json-fetch' returning #f.
| * Start enabling substitutes from bordeaux.guix.gnu.org.Christopher Baines2021-06-18
| | | | | | | | | | | | | | | | | | | | | | | | In addition to substitutes from ci.guix.gnu.org. There are more changes that can be made in the future, but these changes seem like a good start. * config-daemon.ac (guix_substitute_urls): Add https://bordeaux.guix.gnu.org. * guix/scripts/substitute.scm (%default-substitute-urls): Add http://bordeaux.guix.gnu.org. * guix/store.scm (%default-substitute-urls): Add bordeaux.guix.gnu.org. * doc/guix.texi: Adjust accordingly. * doc/contributing.texi: Adjust accordingly.
| * pack: Fix the system value passed to build-docker-image.Maxim Cournoyer2021-06-16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Before this change, the system value would be passed as x86_64 when using a i686-linux emulated system, e.g.: $ guix environment --system=i686-linux --ad-hoc guile -- \ guile -c '(display (utsname:machine (uname))) (newline)' x86_64 This change uses the Guile builtin %host-type variable, which doesn't have this problem: $ guix environment --system=i686-linux --ad-hoc guile -- \ guile -c '(display %host-type) (newline)' i686-unknown-linux-gnu * guix/scripts/pack.scm (docker-image)[#:system] Use %host-type as a fall-back when target is not defined. Co-authored-by: Ludovic Courtès <ludo@gnu.org>
| * hg-download: Make (guix swh) output visible.Ludovic Courtès2021-06-14
| | | | | | | | * guix/hg-download.scm (hg-fetch)[build]: Add 'setvbuf' calls.