Age | Commit message (Expand) | Author |
2021-07-20 | import: opam: Emit new-style package inputs....* guix/import/opam.scm (opam->guix-package): Wrap INPUTS and
NATIVE-INPUTS in 'list' instead of 'quasiquote'.
(dependency-list->inputs): Return a list of symbols.
* tests/opam.scm ("opam->guix-package"): Adjust accordingly.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
| Sarah Morgensen |
2021-07-20 | import: gem: Emit new-style package inputs....* guix/import/gem.scm (make-gem-sexp): Wrap inputs in 'list' instead of
'quasiquote'.
* tests/gem.scm ("gem->guix-package")
("gem-recursive-import"): Adjust accordingly.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
| Sarah Morgensen |
2021-07-20 | import: egg: Emit new-style package inputs....* guix/import/egg.scm (egg->guix-package): Generate dependency list from
a list of symbols.
[egg-parse-dependency]: Return a list of symbols.
[maybe-inputs]: Wrap INPUTS in 'list' instead of 'quasiquote'.
* tests/egg.scm (match-chicken-foo): Adjust accordingly.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
| Sarah Morgensen |
2021-07-19 | import/print: package->code: Fix license object....* guix/import/print.scm (package->code)<license->code>: Update generated
licence object to match record constructor.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
| itd |
2021-07-19 | 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>
| Charles |
2021-07-18 | Merge branch 'master' into core-updates | Ludovic Courtès |
2021-07-18 | 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.
| Maxim Cournoyer |
2021-07-18 | pack: Streamline how files are included in tarballs....Thanks to Guillem Jover <guillem@debian.org> on the OFTC's #debian-dpkg
channel for helping with troubleshooting.
Letting GNU Tar recursively walk the complete files hierarchy side-steps the
risks associated with providing a list of file names:
1. Duplicated files in the archive (recorded as hard links by GNU Tar)
2. Missing parent directories.
The above would cause dpkg to malfunction, for example by aborting early and
skipping triggers when there were missing parent directories.
* guix/scripts/pack.scm (self-contained-tarball/builder): Do not call
POPULATE-SINGLE-PROFILE-DIRECTORY, which creates extraneous files such as
/root. Instead, call POPULATE-STORE and INSTALL-DATABASE-AND-GC-ROOTS
individually to more precisely generate the file system. Replace the list of
files by the current directory, "." and streamline the way options are passed.
* gnu/system/file-systems.scm (reduce-directories): Remove procedure.
* tests/file-systems.scm ("reduce-directories"): Remove test.
| Maxim Cournoyer |
2021-07-18 | pack/deb: Add default section and priority fields to the control file....These fields, while optional per dpkg, are required by other tools such as
reprepro, commonly used to generate apt repositories.
* guix/scripts/pack.scm (debian-archive): Set the control file section field
to 'misc' and the priority field to 'optional'.
| Maxim Cournoyer |
2021-07-18 | pack: Allow embedding custom control files in deb packs....* guix/scripts/pack.scm (self-contained-tarball/builder)
[extra-options]: New argument.
(self-contained-tarball, squashfs-image, docker-image)
(debian-archive): Likewise. Remove two TODO comments. Document
EXTRA-OPTIONS. Use the custom control files when provided.
(%deb-format-options): New variable.
(show-deb-format-options, show-deb-format-options/detailed): New procedures.
(%options): Register new options.
(show-help): Augment with new usage.
(guix-pack): Validate and propagate new argument values.
* doc/guix.texi (Invoking guix pack)[deb]: Document how to list advanced
options. Add an example.
* tests/pack.scm (deb archive...): Provide extra-options to the debian-archive
procedure, and validate that the provided files are embedded in the pack.
| Maxim Cournoyer |
2021-07-18 | import: go: Fix indentation....* guix/import/go.scm: Fix indentation.
| Maxim Cournoyer |
2021-07-18 | import: go: Upgrade go.mod parser....Upgrade the go.mod parser to handle the full go.mod spec, and to gracefully
handle unexpected/malformed syntax. Restructure parser usage, making the
parse tree available for other uses.
guix/import/go.scm (parse-go.mod): Parse using (ice-9 peg) instead of
regex matching for more robustness. Return a list of directives.
(go.mod-directives): New procedure.
(go.mod-requirements): Likewise.
(go-module->guix-package): Use it.
(%go.mod-replace-directive-rx): Remove unused variable.
tests/go.scm (testing-parse-mod): Adjust accordingly.
(go.mod-requirements)
(fixture-go-mod-unparseable)
(fixture-go-mod-retract)
(fixture-go-mod-strings): New variables.
("parse-go.mod: simple")
("parse-go.mod: comments and unparseable lines")
("parse-go.mod: retract")
("parse-go.mod: raw strings and quoted strings")
("parse-go.mod: complete"): New tests.
Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
| Sarah Morgensen |
2021-07-17 | import: go: Handle multiple go-import meta tags....* guix/import/go.scm (fetch-module-meta-data): Parse all go-import meta
tags and return the first 'module-meta' with a matching import prefix.
[go-import->module-meta]: Extract parsing into new procedure.
Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
| Sarah Morgensen via Guix-patches via |
2021-07-17 | import: go: Fix parsing of pkg.go.dev licenses after site update....* guix/import/go.scm (go-package-licenses): Find license names in
'h2 // div // *text*' elements rather than 'h2 // *text*' elements.
Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
| Sarah Morgensen via Guix-patches via |
2021-07-16 | ci: Properly construct URLs....Implement a new function "api-url", which constructs URLs using relative URI
and "resolve-uri-reference" (which implements the algorithm specified in RFC
3986 section 5.2.2) for building the URL, instead of just appending
strings. This avoids issued if the server-url ends with a slash.
Since "api-url" uses URI-objects, it makes sense to also construct the
query-part of the URL here. For this "api-url" accepts optional
key-value-pairs.
New function "json-api-fetch" is a wrapper using "api-url".
* guix/ci.scm (api-url): New function. (build): Use it.
(json-api-fetch): New function. (queued-builds, latest-builds,
evaluation, latest-evaluations, evaluation-jobs: Use it.
| Hartmut Goebel |
2021-07-16 | substitutes: Properly construct URLs....Use relative URIs and "resolve-uri-reference" (which implements the algorithm
specified in RFC 3986 section 5.2.2) for building the URL, instead of just
appending strings. This avoids issued if the cache-url ends with a slash.
* guix/substitutes.scm (narinfo-request): Use resolve-uri-reference for
constructing the url.
| Hartmut Goebel |
2021-07-16 | substitute: Fix handling of short option "-h"....The short option was listed in the help-text, but not recognized.
| Hartmut Goebel |
2021-07-15 | ui: Improve output appearance when listing generations....* guix/ui.scm (display-profile-content-diff): Use pretty-print-table to format
output.
(display-profile-content): Likewise.
Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
| Steve Sprang |
2021-07-15 | package: Improve output appearance when listing packages....* guix/scripts/package.scm (process-query): Use pretty-print-table when
listing installed and available packages.
Modified-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
| Steve Sprang |
2021-07-15 | utils: Add a procedure for pretty printing tabular data....* guix/utils.scm (pretty-print-table): New procedure.
Co-authored-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
| Steve Sprang |
2021-07-14 | 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>
| Maxime Devos |
2021-07-14 | packages: Define this-package-input and this-package-native-input....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>
| Maxime Devos |
2021-07-14 | utils: Define a target-x86-32? and target-x86-64? predicate....* 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>
| Maxime Devos |
2021-07-14 | utils: Give 'target-mingw?' a docstring....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>
| Maxime Devos |
2021-07-14 | utils: Define 'target-hurd?' predicate....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>
| Maxime Devos |
2021-07-14 | utils: Define 'target-linux?' predicate....* 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>
| Maxime Devos |
2021-07-13 | lint: Check for leading whitespace in description....* guix/lint.scm (check-description-style): Check for leading whitespace.
* tests/lint.scm: ("description: leading whitespace"): New test.
| Brice Waegeneire |
2021-07-11 | import: elpa: Emit new-style package inputs....* guix/import/elpa.scm (elpa-package->sexp)[dependencies]: Turn into a
list of symbols.
[maybe-inputs]: Wrap in 'list' instead of 'quasiquote'.
| Ludovic Courtès |
2021-07-11 | import: print: Emit new-style package inputs when possible....* 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.
| Ludovic Courtès |
2021-07-11 | import: cran: Emit new-style package inputs....* 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.
| Ludovic Courtès |
2021-07-11 | import: pypi: Emit new-style package inputs....* 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.
| Ludovic Courtès |
2021-07-11 | packages: 'hidden-package' inherits the original package location....* guix/packages.scm (hidden-package): Inherit 'location' from P.
| Ludovic Courtès |
2021-07-11 | Add 'guix style'....* 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.
| Ludovic Courtès |
2021-07-11 | utils: 'edit-expression' copies part of the original source map....* guix/utils.scm (source-location-key/stamp): New procedure.
(go-to-location): Use it.
(move-source-location-map!): New procedure.
(edit-expression): Call it.
| Ludovic Courtès |
2021-07-11 | utils: 'edit-expression' modifies the file only if necessary....* guix/utils.scm (edit-expression): Check whether STR* equals STR.
| Ludovic Courtès |
2021-07-11 | utils: Add 'go-to-location' with source location caching....* 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'.
| Ludovic Courtès |
2021-07-11 | utils: 'edit-expression' no longer leaks file ports....* guix/utils.scm (edit-expression): Use 'call-with-input-file' to make
sure IN gets closed.
| Ludovic Courtès |
2021-07-11 | packages: Add 'modify-inputs'....* 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.
| Ludovic Courtès |
2021-07-11 | packages: Add 'lookup-package-input' & co....* 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.
| Ludovic Courtès |
2021-07-11 | lint: Add 'input-labels' checker....* 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.
| Ludovic Courtès |
2021-07-11 | packages: Allow inputs to be plain package lists....* 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.
| Ludovic Courtès |
2021-07-11 | records: Support field sanitizers....* 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.
| Ludovic Courtès |
2021-07-09 | self: Remove stale comment about "mmap(PROT_NONE) failed" crash....This crash was fixed by 0aef94e7bcbd272720f14c5343f74da5201ef90a, itself
a followup to 47d48f0c43c13c0b43bc3e37b6239efd4bf2f74c.
* guix/self.scm (translate-texi-manuals)[build]: Remove reference to the
PROT_NONE bug.
| Ludovic Courtès |
2021-07-09 | Revert "self: Build translated manuals with a single process."...This reverts commit af2d6ec092c98ac5f32d8e9e182a141e1268805b, which the
parent commit makes unnecessary.
| Ludovic Courtès |
2021-07-08 | 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.
| Ludovic Courtès |
2021-07-08 | 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>
| Maxime Devos |
2021-07-07 | self: Build translated manuals with a single process....Works around <https://issues.guix.gnu.org/47428>.
* guix/self.scm (translate-texi-manuals): Set parallel-job-count to 1.
| Maxim Cournoyer |
2021-07-07 | Revert "syscalls: 'terminal-dimension' ignores EPERM."...This reverts commit 17a102332a253f0e3b1f511fa7bda2094264a77c.
See <https://github.com/koverstreet/bcachefs/pull/277>.
| Tobias Geerinckx-Rice |
2021-07-07 | lint: Lint usages of 'wrap-program' without a "bash" input....When using 'wrap-program', "bash" (or "bash-minimal") should be
in inputs. Otherwise, when cross-compiling, 'wrap-program' will use
a native bash instead of the cross bash and the 'patch-shebangs' won't
be able to correct this.
Tobias Geerinckx-Rice is added to the copyright lines because
a part of the "straw-viewer" package definition is included.
This linter detects 365 problematic package definitions at time
of writing.
* guix/lint.scm
(report-wrap-program-error): New procedure.
(check-wrapper-inputs): New linter.
(%local-checkers)[wrapper-inputs]: Add the new linter.
("explicit #:sh argument to 'wrap-program' is acceptable")
("'check-wrapper-inputs' detects 'wrap-program' without \"bash\" in inputs")
("'check-wrapper-inputs' detects 'wrap-qt-program' without \"bash\" in inputs")
("\"bash\" in 'inputs' satisfies 'check-wrapper-inputs'")
("\"bash-minimal\" in 'inputs' satisfies 'check-wrapper-inputs'")
("'cut' doesn't hide bad usages of 'wrap-program'")
("bogus phase specifications don't crash the linter"): New tests.
Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
| Maxime Devos |
2021-07-07 | lint: Define some procedures for analysing code in phases....* guix/lint.scm
(check-optional-tests): Extract logic for extracting the phases from a
package to ...
(find-phase-deltas): ... here, and ...
(report-bogus-phase-deltas): ... here.
(check-optional-tests)[check-check-procedure]: Extract code for extracting
the procedure body to ...
(find-procedure-body) ... here.
(find-phase-procedure): New procedure.
(report-bogus-phase-procedure): New procedure.
Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
| Maxime Devos |