The ability to pin versions is handy when having to deal to packages that
bootstrap themselves through a chain of former versions. Not using pinned
versions in these case could introduce dependency cycles.
* guix/build-system/go.scm (guix)
(%go-version-rx): Rename to...
(%go-pseudo-version-rx): ... this. Simplify the regular expression, which in
turns makes it more robust.
* guix/build-system/go.scm (go-version->git-ref): Adjust following the above
rename.
(go-pseudo-version?): New predicate.
(go-module-latest-version): Rename to ...
(go-module-version-string): ... this. Rename goproxy-url argument to just
goproxy. Add a VERSION keyword argument, update docstring and adjust to have
it used.
(go-module-available-versions): New procedure.
(%go.mod-require-directive-rx): Document regexp.
(parse-go.mod): Harmonize the way dependencies are recorded to a list of lists
rather than a list of pairs, as done for other importers. Rewrite to directly pass
multiple values rather than a record object. Filter the replaced modules in a
functional style.
(go-module->guix-package): Add docstring.
[version, pin-versions?]: New arguments. Rename the GOPROXY-URL argument to
GOPROXY. Adjust to the new returned value of fetch-go.mod, which is a string.
Fail when the provided version doesn't exist. Return a list dependencies and
their versions when in pinned versions mode, else just the dependencies.
(go-module-recursive-import)[version, pin-versions?]: New arguments.
Honor the new arguments and guard against network errors.
* guix/scripts/import/go.scm (%default-options): Register a default value for
the goproxy argument.
(show-help): Document that a version can be specified. Remove the --version
argument and add a --pin-versions argument.
(%options)[version]: Remove option.
[pin-versions]: Add option.
(guix-import-go): Adjust so the version provided from the module name is
honored, along the new pin-versions? argument.
* tests/go.scm: Adjust and add new tests.
Commit 9cfc93be30c516fd6fa32915c61c06e03f23a011 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.
Fixes a bug whereby the "/gnu/store/.*qmlcachegen" string in the
'ktouch' phases would incorrectly be interpreted as a store item,
leading to an error while trying to build it:
$ ./pre-inst-env guix build ktouch -d --no-grafts
guix build: error: path ‘/gnu/store/.*qmlcachegen’ is not valid
Reported by Christopher Baines.
* guix/build-system/qt.scm (qt-build)[builder]: If PHASES is a pair,
pass it to 'sexp->gexp'.
Fixes a regression introduced in
9cfc93be30c516fd6fa32915c61c06e03f23a011.
* guix/build-system/android-ndk.scm (android-ndk-build): Pass
#:bootstrap-scripts to 'android-ndk-build'.
Regression introduced in 7d873f194ca69d6096d28d7a224ab78e83e34fe1.
* guix/build-system/android-ndk.scm (android-ndk-build): Call
'gexp-input-thing' on the item taken from INPUTS.
This brings back the '%build-inputs' and '%outputs' global variables,
which some packages such as 'serf' expect.
* guix/build-system/scons.scm (scons-build): Use 'with-build-variables'.
The meson-for-build package doesn't carry any special patch anymore; it
appears to be obsolete.
* gnu/packages/build-tools.scm (meson-for-build): Remove variable.
* guix/build-system/meson.scm (default-meson): Use meson.
* doc/guix.texi (Build Systems): Update doc.
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.
This is the case for macros (formats), for which the TeX Directory Structure
specifies to be located at the root of the source tree directly.
* guix/build-system/texlive.scm (texlive-ref): Make the ID parameter
optional. Update doc.
This is a follow-up to commit 9cfc93be30c516fd6fa32915c61c06e03f23a011.
* guix/build-system/gnu.scm (gnu-build, gnu-cross-build): Quote the list of
default 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.
* 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.
Fixes <https://bugs.gnu.org/43843>.
* guix/build-system/haskell.scm (haskell-build): Turn off PARALLEL-BUILD? by
default.
Signed-off-by: Marius Bakke <marius@gnu.org>
[Accidentally pushed patch v1, this commit contains the rest of the
changes. Revised commit message follows.]
Apart from debug information, one can also strip some symbols. This can
be a significant difference, the closure of gcc-toolchain@7 got reduced
by 15 MB in my tests.
As per [1], --strip-debug is included in --strip-unneeded, and
the debug files created also contain a copy of the information removed
by --strip-unneeded.
Linux From Scratch suggests that this option shouldn't be used on static
libraries [2], however other sources [3] indicate otherwise. Building a
toolchain with this patch succeeds, and the result works fine for
'gcc -static hello-world.c'.
[1]: https://stackoverflow.com/a/52555093
[2]: http://www.linuxfromscratch.org/lfs/view/9.1/chapter05/stripping.html
[3]: https://www.technovelty.org/linux/stripping-shared-libraries.html
* guix/build/gnu-build-system.scm (strip): Use --strip-unneeded.
* guix/build-system/gnu.scm (static-package, gnu-build, gnu-cross-build): Likewise.
* guix/build-system/asdf.scm (asdf-build): Remove the 'files' variable.
* guix/build/asd-build-system.scm (find-asd-files): New variable.
(build, check): Use it.
See <https://bugs.gnu.org/39309>.
* guix/build-system/haskell.scm (lower): Include the transitive
propagated inputs of 'extra-directories' inputs.
(haskell-build): Add the 'extra-directories' keyword and pass it through
to the builder.
* guix/build/haskell-build-system.scm (configure): Use it to select
which inputs get passed via 'extra-include-dirs' and 'extra-lib-dirs' to
Cabal.
* gnu/packages/haskell-xyz.scm (ghc-alsa-core, ghc-hmatrix,
ghc-hmatrix-gsl, ghc-hslua, ghc-iwlib, ghc-libyaml, ghc-ncurses,
ghc-openglraw, ghc-x11, ghc-x11-xft, ghc-zlib): Set 'extra-directories'.
* gnu/packages/haskell-crypto.scm (ghc-digest, ghc-hsopenssl): Likewise.
* guix/build-system/haskell.scm (lower): Add OUTPUTS keyword and add the
"static" output in the common case.
(haskell-build): Set the default value for the OUTPUTS keyword to include the
"static" output.
* guix/build/haskell-build-system.scm (install): Move static libraries to the
"static" output if it exists.
* guix/build-system/haskell.scm (haskell-build): Add keyword PARALLEL-BUILD?
and pass it on to the builder.
* guix/build/haskell-build-system.scm (build): Accept keyword PARALLEL-BUILD?
and pass the number of parallel jobs to GHC.
This allows compiling the module without the (gnu packages maven) module being
available.
* guix/build-system/maven.scm (%default-maven-plugins): Rename to
default-maven-plugins, and convert to a procedure.
* doc/guix.texi (maven-build-system): Update.