summaryrefslogtreecommitdiff
path: root/guix
AgeCommit message (Collapse)Author
2021-08-11transformations: 'with-patch' works on non-origin sources.Ludovic Courtès
Fixes <https://issues.guix.gnu.org/49697>. Reported by Philippe Swartvagher <philippe.swartvagher@inria.fr>. * guix/transformations.scm (patched-source): New procedure. (transform-package-patches)[package-with-extra-patches]: Use it when (package-source p) is not an origin. * tests/transformations.scm ("options->transformation, with-commit + with-patch"): New test.
2021-08-10store: Add 'map/accumulate-builds' cutoff to address pathological cases.Ludovic Courtès
Fixes <https://bugs.gnu.org/49439>. Reported by Ricardo Wurmus <rekado@elephly.net>. Previously, a command such as: guix environment pigx-scrnaseq could lead to unbounded memory growth and could even fail to complete when some items are missing from the store. This was because 'map/accumulate-builds' callees would keep making .drv build requests that were turned into <unresolved> nodes; in this case, there are often many identical build requests. Stopping accumulation earlier allows us to unlock the situation by proceeding with the first few build requests instead of spinning until we've accumulated all the build requests. * guix/store.scm (map/accumulate-builds): Define 'accumulation-cutoff'. Use a loop when iterating over LST and maintain a counter of unresolved nodes met so far; return when the counter exceeds ACCUMULATION-CUTOFF.
2021-08-10scripts: publish: Remove leftover comment.Mathieu Othacehe
* guix/scripts/publish.scm (render-narinfo/cached): Remove leftover comment.
2021-08-10scripts: publish: Remove unused argument.Mathieu Othacehe
2021-08-09inferior: 'cached-channel-instance' no longer calls 'show-what-to-build'.Ludovic Courtès
This allows the user of 'cached-channel-instance' to install the build handler of its choice. In particular, it allows "guix time-machine" to install a build notifier with the right options instead of using the defaults that 'cached-channel-instance' would pass to 'show-what-to-build*'. * guix/inferior.scm (cached-channel-instance): Remove call to 'show-what-to-build*'. (inferior-for-channels): Wrap body in 'with-build-handler'. * guix/scripts/time-machine.scm (guix-time-machine): Use 'with-build-handler'.
2021-08-09self: Use default config variable values for derivations.Ludovic Courtès
The value of %localstatedir, %storedir, and %sysconfdir is known to have no impact on the compilation of the Guix modules. Thus, explicitly build those modules against a (guix config) module that uses all the default values. That way, a Guix installation that uses different config values can still benefit from substitutes. Reported by Ricardo Wurmus. * guix/self.scm (%default-config-variables): New variable. (make-config.scm): Add #:config-variables and honor it. (compiled-guix)[*core-modules*]: Pass #:config-variables to 'make-config.scm'.
2021-07-27download: Remove defunct GNOME mirrors.Leo Famulari
* guix/download.scm (%mirrors): Remove defunct GNOME mirrors, and try the canonical site first.
2021-08-04import: Use PARSE-COMMAND-LINE for options.Sarah Morgensen
* guix/scripts/import/go.scm (guix-import-go)[parse-options]: Use PARSE-COMMAND-LINE instead of ARGS-FOLD*. * guix/scripts/import/egg.scm (guix-import-egg)[parse-options]: Likewise. * guix/scripts/import/gem.scm (guix-import-gem)[parse-options]: Likewise. * guix/scripts/import/gnu.scm (guix-import-gnu)[parse-options]: Likewise. * guix/scripts/import/cpan.scm (guix-import-cpan)[parse-options]: Likewise. * guix/scripts/import/cran.scm (guix-import-cran)[parse-options]: Likewise. * guix/scripts/import/elpa.scm (guix-import-elpa)[parse-options]: Likewise. * guix/scripts/import/json.scm (guix-import-json)[parse-options]: Likewise. * guix/scripts/import/opam.scm (guix-import-opam)[parse-options]: Likewise. * guix/scripts/import/pypi.scm (guix-import-pypi)[parse-options]: Likewise. * guix/scripts/import/crate.scm (guix-import-crate)[parse-options]: Likewise. * guix/scripts/import/texlive.scm (guix-import-texlive)[parse-options]: Likewise. * guix/scripts/import/hackage.scm (guix-import-hackage)[parse-options]: Likewise. * guix/scripts/import/stackage.scm (guix-import-stackage)[parse-options]: Likewise. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-08-02Reinstate "services: Add a service for Jami."Maxim Cournoyer
This reverts commit 4673f817938d9d2b1b40a072ab2e0c44a32ccc97, which reverted commit 69dcc24c9f0cdfea674eb690e7755d26a25ced2b with the fix detailed below. Thanks to Christopher Baines for reporting the failure and proposing a fix. * guix/self.scm (compiled-guix) [*system-test-modules*]: Add the test data files via the 'extra-files' argument. * gnu/local.mk (dist_patch_DATA): Move the tests/data/jami-dummy-account.dat file to... * gnu/local.mk (MODULES_NOT_COMPILED): ... here.
2021-08-02licenses: Remove 'cc-sampling-plus-1.0' export.Ludovic Courtès
This is a followup to 65e1d39f9fca8e560f3dedf01fa33cd251655eef. * guix/licenses.scm (cc-sampling-plus-1.0): Remove export.
2021-07-30licenses: Remove CC-Sampling+-1.0.Ron Nazarov
* guix/licenses.scm (cc-sampling-plus-1.0): Remove variable.
2021-07-27derivations: Make 'coalesce-duplicate-inputs' linear in the number of inputs.Ludovic Courtès
Partly fixes <https://issues.guix.gnu.org/49439>. Reported by Ricardo Wurmus <rekado@elephly.net>. When running the command: guix environment pigx-scrnaseq --search-paths --no-grafts this change reduces total heap allocations from 1.4GiB to 717MiB (49%) and wall-clock time from 7.5s to 5.7s (24%). Without '--no-grafts', heap allocations go from 2.1GiB to 1.4GiB (33%) and wall-clock time from 12.1s to 10.9s (10%). * guix/derivations.scm (coalesce-duplicate-inputs): Rewrite using a hash table to make it O(N) rather than O(N²).
2021-07-21utils: Do not request block buffering in pretty-print-table.Maxim Cournoyer
Re-testing 'guix package -A' using the default line buffering set in (guix ui), there doesn't seem to be a performance gain to use block buffering, so remove this extraneous side effect. * guix/utils.scm (pretty-print-table): Do not set buffering mode to block. Reported-by: Ludovic Courtès <ludo@gnu.org>
2021-07-19import/print: package->code: Fix license object.itd
* 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>
2021-07-19build: Update uglifyjs for minify-build-system.Charles
* 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>
2021-07-18build: pack: Mute error output when checking if tar supports --sort.Maxim Cournoyer
* guix/build/pack.scm (tar-base-options) [tar-supports-sort?]: Redirect error output to void.
2021-07-18pack: Streamline how files are included in tarballs.Maxim Cournoyer
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.
2021-07-18pack/deb: Add default section and priority fields to the control file.Maxim Cournoyer
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'.
2021-07-18pack: Allow embedding custom control files in deb packs.Maxim Cournoyer
* 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.
2021-07-18import: go: Fix indentation.Maxim Cournoyer
* guix/import/go.scm: Fix indentation.
2021-07-18import: go: Upgrade go.mod parser.Sarah Morgensen
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>
2021-07-17import: go: Handle multiple go-import meta tags.Sarah Morgensen via Guix-patches via
* 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>
2021-07-17import: go: Fix parsing of pkg.go.dev licenses after site update.Sarah Morgensen via Guix-patches via
* 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>
2021-07-16ci: Properly construct URLs.Hartmut Goebel
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.
2021-07-16substitutes: Properly construct URLs.Hartmut Goebel
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.
2021-07-16substitute: Fix handling of short option "-h".Hartmut Goebel
The short option was listed in the help-text, but not recognized.
2021-07-15ui: Improve output appearance when listing generations.Steve Sprang
* 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>
2021-07-15package: Improve output appearance when listing packages.Steve Sprang
* 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>
2021-07-15utils: Add a procedure for pretty printing tabular data.Steve Sprang
* 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>
2021-07-13lint: Check for leading whitespace in description.Brice Waegeneire
* guix/lint.scm (check-description-style): Check for leading whitespace. * tests/lint.scm: ("description: leading whitespace"): New test.
2021-07-09self: Remove stale comment about "mmap(PROT_NONE) failed" crash.Ludovic Courtès
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.
2021-07-09Revert "self: Build translated manuals with a single process."Ludovic Courtès
This reverts commit af2d6ec092c98ac5f32d8e9e182a141e1268805b, which the parent commit makes unnecessary.
2021-07-07self: Build translated manuals with a single process.Maxim Cournoyer
Works around <https://issues.guix.gnu.org/47428>. * guix/self.scm (translate-texi-manuals): Set parallel-job-count to 1.
2021-07-07Revert "syscalls: 'terminal-dimension' ignores EPERM."Tobias Geerinckx-Rice
This reverts commit 17a102332a253f0e3b1f511fa7bda2094264a77c. See <https://github.com/koverstreet/bcachefs/pull/277>.
2021-07-07lint: Lint usages of 'wrap-program' without a "bash" input.Maxime Devos
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>
2021-07-07lint: Define some procedures for analysing code in phases.Maxime Devos
* 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>
2021-07-05guix: docker: Ensure repository name length limits are met.Maxim Cournoyer
* guix/docker.scm (canonicalize-repository-name): Fix typo in doc. Capture repository name length limits and ensure they are met, by either truncating or padding the normalized name. Reported-by: Ludovic Courtès <ludo@gnu.org>
2021-07-05guix: opam: Allow for whitespace at the start of an opam file.Julien Lepiller
* guix/import/opam.scm (records): Accept whitespace at the beginning.
2021-07-05import: go: Replace tildes with hyphens in package names.Sarah Morgensen
Fixes <https://issues.guix.gnu.org/48111>. * guix/import/go.scm (go-module->guix-package-name): Replace tildes with hyphens. Signed-off-by: Leo Prikler <leo.prikler@student.tugraz.at>
2021-07-04status: Add missing newline after substitution completion message.Ludovic Courtès
* guix/status.scm (print-build-event): Add newline after "substitution of ~a complete" message.
2021-07-04ci: Add procedures to access jobs and builds.Ludovic Courtès
* guix/ci.scm (<job>): New record type. (evaluation-jobs, build, job-build): New procedures.
2021-07-04ci: Represent build status as a symbol.Ludovic Courtès
* guix/ci.scm (define-enumeration-mapping): New macro. (integer->build-status): New procedure. (<build>)[status]: Use it.
2021-07-04cpio: Fix device number calculation.Tobias Geerinckx-Rice
“dev_t in glibc is a 64-bit quantity, with 32-bit major and minor numbers.” — glibc's <bits/sysmacros.h> The "tests/cpio.scm" was failing because (guix cpio) treated it as a 16-bit quantity instead, leading to header mismatches with the GNU cpio reference output. * guix/cpio.scm (device-number, device->major+minor): Use all the bits.
2021-07-02build: qt-utils: Wrappers set 'QTWEBENGINEPROCESS_PATH' if needed.Maxim Cournoyer
This reinstate commit the reverted fed28a9632ba69225151757e44a5d70e9b0652a2, now rebased on top of conflicting changes. * guix/build/qt-utils.scm: Remove extraneous newlines. (variables-for-wrapping): Add comments. Define a file type entry for each variable definition, and use it to determine if we should look for directories versus plain files. <QTWEBENGINEPROCESS_PATH>: New environment variable. (wrap-all-qt-programs): Remove trailing #t.
2021-07-02build: qt-utils: Refactor the code to filter XDG_DATA_DIRS.Ludovic Courtès
This partially reinstate the reverted c5fd1b0bd362f8b8578a76a26a65ba5d00d48992. * guix/build/qt-utils.scm (variables-for-wrapping)[collect-sub-dirs]: Add 'selectors' parameter and honor it. Change caller to handle selectors. Modified-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
2021-07-02guix: qt-utils: Don't include useless inputs in wrapped variables.Jakub Kądziołka
Include only those inputs into XDG_DATA_DIRS having some subdirectory of /share which is typically used by Qt. * guix/build/qt-utils.scm (variables-for-wrapping): Take the output directory as an argument for special handling. Check for subdirectories of /share used by Qt before including inputs in XDG_DATA_DIRS. (wrap-qt-program*): Pass the output directory to variables-for-wrapping. Co-authored-by: Hartmut Goebel <h.goebel@crazy-compilers.com>
2021-07-02build-system: qt: Exclude useless inputs from wrapped variables.Jakub Kądziołka
* guix/build-system/qt.scm (qt-build)[qt-wrap-excluded-inputs]: New argument. * guix/build/qt-utils.scm (%qt-wrap-excluded-inputs): New variable. (wrap-qt-program*)[qt-wrap-excluded-inputs]: New argument. Filter excluded inputs. (wrap-qt-program)[qt-wrap-excluded-inputs]: New argument. (wrap-all-qt-programs)[qt-wrap-excluded-inputs]: New argument. Co-authored-by: Hartmut Goebel <h.goebel@crazy-compilers.com>
2021-07-02guix: qt-utils: Wrapped executables honor user's envvars.Hartmut Goebel
Prior to this change, wrappers did set the specified environment variables to a fixed value, overwriting any user settings. This inhibited propagating e.g. XDG_DATA_DIRS from a profile to the application. Now user environment variables are prefixed (if the variable defines some "binary" search path, e.g. QT_PLUGIN_PATH) or suffixed (if the variable defines some config or data search path, e.g. XDG_DATA_DIRS). The code could also allow to overwrite, anyhow currently no variable is defined like this. * guix/build/qt-utils.scm (variables-for-wrapping): For each env-var to be wrapped, specify whether it should prefix, suffix or overwrite the user's variable.
2021-07-02guix: qt-build-system, qt-utils: Unify wrapping of qt-programs.Hartmut Goebel
Unify (guix qt-build-system wrap-all-programs) and (guix qt-utils wrap-qt-program), so both behave the same. The functions now reside in qt-utils to make them easily available for packages not using the qt-build-system. * guix/build/qt-build-system.scm (variables-for-wrapping, wrap-all-programs): Move from here ... * guix/build/qt-utils.scm (variables-for-wrapping, wrap-all-qt-programs): ... to here. Base the later on (wrap-qt-program*): New function, carved out from old wrap-all-programs. (wrap-qt-program): Base on wrap-qt-program*, change arguments in an incompatible way. * gnu/packages/bittorrent.scm (qbittorrent)[arguments]<phases>{wrap-qt}: Adjust to new interface of wrap-qt-program. * gnu/packages/finance.scm (electron-cash): Likewise. * gnu/packages/geo.scm (qgis): Likewise. * gnu/packages/password-utils.scm (qtpass): Likewise. * gnu/packages/video.scm (openshot): Likewise. * gnu/packages/web-browsers.scm (kristall): Likewise.
2021-07-02Revert "build-system/qt: Wrappers only include relevant directories to ↵Maxim Cournoyer
XDG_DATA_DIRS." This reverts commit c5fd1b0bd362f8b8578a76a26a65ba5d00d48992. It will need to be refactored on top of 2214b7b78d34a0e4d574b743dbeb8457356f6cff.