summaryrefslogtreecommitdiff
path: root/guix
Commit message (Collapse)AuthorAge
...
| * 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’.
| * import: go: Fix match-error in 'go-package-description'Sarah Morgensen via Guix-patches via2021-06-28
| | | | | | | | | | | | | | * guix/import/go.scm (go-package-description): Make sure description* is always a list, so the result is properly matched. Signed-off-by: Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
| * download: 'tls-wrap' retries handshake upon non-fatal errors.Ludovic Courtès2021-06-25
| | | | | | | | | | | | | | | | Fixes <https://bugs.gnu.org/49223>. Reported by Domagoj Stolfa <ds815@gmx.com>. * guix/build/download.scm (tls-wrap): Retry up to 5 times when 'handshake' throws a non-fatal error.
| * guix substitute: Adjust comment about GnuTLS bug.Ludovic Courtès2021-06-25
| | | | | | | | | | * guix/scripts/substitute.scm (call-with-cached-connection): Adjust comment.
| * import: hackage: Support "common" field and importsPhilip Munksgaard2021-06-25
| | | | | | | | | | | | | | | | | | | | | | | | | | Fixes <https://issues.guix.gnu.org/48701>. * guix/import/cabal.scm (make-cabal-parser): Modify. (is-common): New variable. (lex-common): New procedure. (is-id): Modify. (eval-cabal): Modify. * tests/hackage.scm ("hackage->guix-package test cabal import") New test. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
| * reconfigure: Use 'formatted-message'.Ludovic Courtès2021-06-25
| | | | | | | | | | | | * guix/scripts/system/reconfigure.scm (ensure-forward-reconfigure): Use 'formatted-message'. * guix/scripts/deploy.scm (deploy-machine*): Handle it.
| * deploy: Leave on hard error.Ludovic Courtès2021-06-25
| | | | | | | | | | | | | | | | Previously, the error message would be displayed, followed by a backtrace ending in &non-continuable. * guix/scripts/deploy.scm (deploy-machine*): Call 'leave' rather than 'report-error' when C is a &message.
| * gnu: Add ausweisapp2.Sergey Trofimov2021-06-24
| | | | | | | | | | | | | | * gnu/packages/security-token.scm (ausweisapp2): New variable. * guix/licenses.scm (eupl1.2): New variable. Co-authored-by: Ludovic Courtès <ludo@gnu.org>
| * lint: 'github-url' checker gracefully handles networking errors.Ludovic Courtès2021-06-24
| | | | | | | | | | | | | | | | | | | | Fixes <https://bugs.gnu.org/49114>. Reported by Tobias Geerinckx-Rice <me@tobias.gr>. * guix/lint.scm (call-with-networking-fail-safe, with-networking-fail-safe): Move higher in the file. * guix/lint.scm (check-github-url): Wrap call to 'follow-redirects-to-github' in 'with-networking-fail-safe'.
| * lint: 'with-networking-fail-safe' handles 'gnutls-error' exceptions.Ludovic Courtès2021-06-24
| | | | | | | | * guix/lint.scm (call-with-networking-fail-safe): Add clause for 'gnutls-error'.
| * build: Make outputs of node-build-system reproducible.Lars-Dominik Braun2021-06-24
| | | | | | | | | | | | | | | | package.json records two hashes of package.tgz, which change for each build, resulting in non-reproducible builds. * guix/build/node-build-system.scm (repack): Add reproducibility options to tar command.
| * gexp: 'mixed-text-file' UTF-8-encodes its output.Andrew Tropin2021-06-23
| | | | | | | | | | | | * guix/gexp.scm (mixed-text-file)[build]: Call 'set-port-encoding!'. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
* | 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>