summaryrefslogtreecommitdiff
path: root/guix
Commit message (Collapse)AuthorAge
* pack/deb: Add default section and priority fields to the control file.Maxim Cournoyer2021-07-18
| | | | | | | | 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'.
* pack: Allow embedding custom control files in deb packs.Maxim Cournoyer2021-07-18
| | | | | | | | | | | | | | | | | * 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.
* import: go: Fix indentation.Maxim Cournoyer2021-07-18
| | | | * guix/import/go.scm: Fix indentation.
* import: go: Upgrade go.mod parser.Sarah Morgensen2021-07-18
| | | | | | | | | | | | | | | | | | | | | | | | | 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>
* import: go: Handle multiple go-import meta tags.Sarah Morgensen via Guix-patches via2021-07-17
| | | | | | | | * 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>
* import: go: Fix parsing of pkg.go.dev licenses after site update.Sarah Morgensen via Guix-patches via2021-07-17
| | | | | | | * 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>
* ci: Properly construct URLs.Hartmut Goebel2021-07-16
| | | | | | | | | | | | | | | | | 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.
* substitutes: Properly construct URLs.Hartmut Goebel2021-07-16
| | | | | | | | | 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.
* substitute: Fix handling of short option "-h".Hartmut Goebel2021-07-16
| | | | The short option was listed in the help-text, but not recognized.
* ui: Improve output appearance when listing generations.Steve Sprang2021-07-15
| | | | | | | | * 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>
* package: Improve output appearance when listing packages.Steve Sprang2021-07-15
| | | | | | | | * 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>
* utils: Add a procedure for pretty printing tabular data.Steve Sprang2021-07-15
| | | | | | | * 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>
* lint: Check for leading whitespace in description.Brice Waegeneire2021-07-13
| | | | | * guix/lint.scm (check-description-style): Check for leading whitespace. * tests/lint.scm: ("description: leading whitespace"): New test.
* self: Remove stale comment about "mmap(PROT_NONE) failed" crash.Ludovic Courtès2021-07-09
| | | | | | | | 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.
* Revert "self: Build translated manuals with a single process."Ludovic Courtès2021-07-09
| | | | | This reverts commit af2d6ec092c98ac5f32d8e9e182a141e1268805b, which the parent commit makes unnecessary.
* self: Build translated manuals with a single process.Maxim Cournoyer2021-07-07
| | | | | | Works around <https://issues.guix.gnu.org/47428>. * guix/self.scm (translate-texi-manuals): Set parallel-job-count to 1.
* Revert "syscalls: 'terminal-dimension' ignores EPERM."Tobias Geerinckx-Rice2021-07-07
| | | | | This reverts commit 17a102332a253f0e3b1f511fa7bda2094264a77c. See <https://github.com/koverstreet/bcachefs/pull/277>.
* lint: Lint usages of 'wrap-program' without a "bash" input.Maxime Devos2021-07-07
| | | | | | | | | | | | | | | | | | | | | | | | | | | 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>
* lint: Define some procedures for analysing code in phases.Maxime Devos2021-07-07
| | | | | | | | | | | | | | | * 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>
* guix: docker: Ensure repository name length limits are met.Maxim Cournoyer2021-07-05
| | | | | | | | * 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>
* guix: opam: Allow for whitespace at the start of an opam file.Julien Lepiller2021-07-05
| | | | * guix/import/opam.scm (records): Accept whitespace at the beginning.
* import: go: Replace tildes with hyphens in package names.Sarah Morgensen2021-07-05
| | | | | | | | | 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>
* status: Add missing newline after substitution completion message.Ludovic Courtès2021-07-04
| | | | | * guix/status.scm (print-build-event): Add newline after "substitution of ~a complete" message.
* ci: Add procedures to access jobs and builds.Ludovic Courtès2021-07-04
| | | | | * guix/ci.scm (<job>): New record type. (evaluation-jobs, build, job-build): New procedures.
* ci: Represent build status as a symbol.Ludovic Courtès2021-07-04
| | | | | | * guix/ci.scm (define-enumeration-mapping): New macro. (integer->build-status): New procedure. (<build>)[status]: Use it.
* cpio: Fix device number calculation.Tobias Geerinckx-Rice2021-07-04
| | | | | | | | | | | “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.
* build: qt-utils: Wrappers set 'QTWEBENGINEPROCESS_PATH' if needed.Maxim Cournoyer2021-07-02
| | | | | | | | | | | | 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.
* build: qt-utils: Refactor the code to filter XDG_DATA_DIRS.Ludovic Courtès2021-07-02
| | | | | | | | | | 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>
* guix: qt-utils: Don't include useless inputs in wrapped variables.Jakub Kądziołka2021-07-02
| | | | | | | | | | | | | 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>
* build-system: qt: Exclude useless inputs from wrapped variables.Jakub Kądziołka2021-07-02
| | | | | | | | | | | * 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>
* guix: qt-utils: Wrapped executables honor user's envvars.Hartmut Goebel2021-07-02
| | | | | | | | | | | | | | | 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.
* guix: qt-build-system, qt-utils: Unify wrapping of qt-programs.Hartmut Goebel2021-07-02
| | | | | | | | | | | | | | | | | | | | | | 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.
* Revert "build-system/qt: Wrappers only include relevant directories to ↵Maxim Cournoyer2021-07-02
| | | | | | | XDG_DATA_DIRS." This reverts commit c5fd1b0bd362f8b8578a76a26a65ba5d00d48992. It will need to be refactored on top of 2214b7b78d34a0e4d574b743dbeb8457356f6cff.
* Revert "build-system/qt: Wrappers set 'QTWEBENGINEPROCESS_PATH' if needed."Maxim Cournoyer2021-07-02
| | | | | This reverts commit 06eb21856f9535ab62d0becc92b4146e0620654e. It will need to be refactored to fit on top of 2214b7b78d34a0e4d574b743dbeb8457356f6cff.
* Revert "build-system/qt: Fix wrapping with QTWEBENGINEPROCESS_PATH."Maxim Cournoyer2021-07-02
| | | | | This reverts commit fed28a9632ba69225151757e44a5d70e9b0652a2. It will need to be refactored to fit on top of 2214b7b78d34a0e4d574b743dbeb8457356f6cff.
* lint: Verify if #:tests? is respected in the 'check' phase.Maxime Devos2021-06-30
| | | | | | | | | | | | | | | | | | | | | | | There have been a few patches to the mailing list lately not respecting this, and this linter detects 630 package definitions that could be modified to support the --without-tests package transformation. * guix/lint.scm (check-optional-tests): New linter. (%local-checkers)[optional-tests]: Add it. * tests/lint.scm (package-with-phase-changes): New procedure. ("optional-tests: no check phase") ("optional-tests: check hase respects #:tests?") ("optional-tests: check phase ignores #:tests?") ("optional-tests: do not crash when #:phases is invalid") ("optional-tests: allow G-exps (no warning)") ("optional-tests: allow G-exps (warning)") ("optional-tests: complicated 'check' phase") ("optional-tests: 'check' phase is not first phase"): New tests. Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
* guix: gexp: Define gexp->approximate-sexp.Maxime Devos2021-06-30
| | | | | | | | | | | | | It will be used in the 'optional-tests' linter. * guix/gexp.scm (gexp->approximate-sexp): New procedure. * tests/gexp.scm ("no references", "unquoted gexp", "unquoted gexp (native)") ("spliced gexp", "unspliced gexp, approximated") ("unquoted gexp, approximated"): Test it. * doc/gexp.scm ("G-Expressions"): Document it. Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
* pack: Add support for the deb format.Maxim Cournoyer2021-06-29
| | | | | | | | | | | * .dir-locals.el (scheme-mode)[gexp->derivation]: Define indentation rule. * guix/scripts/pack.scm (debian-archive): New procedure. (%formats): Register the new deb format. (show-formats): Add it to the usage string. * tests/pack.scm (%ar-bootstrap): New variable. (deb archive with symlinks): New test. * doc/guix.texi (Invoking guix pack): Document it. * NEWS: Add news entry.
* pack: Prevent duplicate files in tar archives.Maxim Cournoyer2021-06-29
| | | | | | | | | | | | | | Tar translate duplicate files in the archive into hard links. These can cause problems, as not every tool support them; for example dpkg doesn't. * gnu/system/file-systems.scm (reduce-directories): New procedure. (file-prefix?): Lift the restriction on file prefix. The procedure can be useful for comparing relative file names. Adjust doc. (file-name-depth): New procedure, extracted from ... (btrfs-store-subvolume-file-name): ... here. * guix/scripts/pack.scm (self-contained-tarball/builder): Use reduce-directories. * tests/file-systems.scm ("reduce-directories"): New test.
* pack: Improve naming of the packs store file names.Maxim Cournoyer2021-06-29
| | | | | | | | | | | Instead of just naming them by their pack type, add information from the package(s) they contain to make it easier to differentiate them. * guix/scripts/pack.scm (define-with-source): New macro. (manifest->friendly-name): Extract procedure from ... (docker-image): ... here, now defined via the above macro. Adjust REPOSITORY argument value accordingly. (guix-pack): Derive NAME using MANIFEST->FRIENDLY-NAME.
* pack: Fix typo.Maxim Cournoyer2021-06-29
| | | | * guix/scripts/pack.scm (self-contained-tarball/builder): Fix typo.
* pack: Factorize base tar options.Maxim Cournoyer2021-06-29
| | | | | | | | * guix/docker.scm (%tar-determinism-options): Move to a new module and rename to `tar-base-options'. Adjust references accordingly. * guix/build/pack.scm: New file. * Makefile.am (MODULES): Register it. * guix/scripts/pack.scm (self-contained-tarball/builder): Use it.
* pack: Extract builder code from self-contained-tarball.Maxim Cournoyer2021-06-29
| | | | | | | | | This is made to allow reusing it for the debian-archive pack format, added in a subsequent commit. * guix/scripts/pack.scm (self-contained-tarball/builder): New procedure, containing the build code extracted from self-contained-tarball. (self-contained-tarball): Use the above procedure.
* weather: Handle zero requested store items gracefully.Maxime Devos2021-06-29
| | | | | | | | | | | | | | This can happen if the weather information of a package is requested for an unsupported system. For example, try "guix weather icecat --system=aarch64-linux". * guix/scripts/weather.scm (report-server-coverage): Do not divide by zero when zero store items are requested from a server. Fixes: <https://issues.guix.gnu.org/49263> Reported-By: Jack Hill <jackhill@jackhill.us> Signed-off-by: Mathieu Othacehe <othacehe@gnu.org>
* Revert "guix build: Autoload (gnu packages)."Ludovic Courtès2021-06-29
| | | | | | This reverts commit fd62b4cf88578ebd8f42ccda94831a254425a329, which would lead 'GUIX_PACKAGE_PATH' to be ignored for instance when using 'guix build -f file.scm', as shown by 'tests/guix-build.sh'.
* guix build: Autoload (gnu packages).Ludovic Courtès2021-06-29
| | | | * guix/scripts/build.scm: Autoload (gnu packages).
* pull: Use SRFI-71 instead of SRFI-11.Ludovic Courtès2021-06-29
| | | | * guix/scripts/pull.scm (display-new/upgraded-packages): Use SRFI-71 'let'.
* pull: Autoload (gnu ...) modules.Ludovic Courtès2021-06-29
| | | | | | This reduces startup time for 'guix pull --help' and similar. * guix/scripts/pull.scm: Autoload (gnu ...) modules.
* ui: Have 'guix help' stat less.Ludovic Courtès2021-06-29
| | | | | | | | | | | | | | This reduces the number of syscalls for: env -i $(type -P strace) -c $(type -P guix) help from 4.3K to 2.2K, thereby reducing startup time. Reported by Julien Lepiller. * guix/ui.scm (run-guix-command): Move %FILE-PORT-NAME-CANONICALIZATION to... (run-guix): ... here.
* guix: Delete duplicates from emacs-load-path.Leo Prikler2021-06-28
| | | | | | | | | | | It has been reported in IRC, that directories may show up multiple times in subdirs.el, probably a result of propagation. This can for instance be seen by ‘guix environment --ad-hoc emacs emacs-guix’, which will generate multiple references to dash. With this patch only one reference per package is generated. * guix/profiles.scm (emacs-subdirs): wrap subdirs added to ‘normal-top-level-add-to-load-path’ in ‘delete-duplictes’.