summaryrefslogtreecommitdiff
path: root/guix/lint.scm
AgeCommit message (Expand)Author
2021-06-08lint: Check for trailing whitespace in synopsis....* guix/lint.scm (check-synopsis-style): Check for trailing whitespace. * tests/lint.scm ("synopsis: contains trailing whitespace"): New test. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Xinglu Chen
2021-06-06lint: tests-true: Check if tests are enabled when cross-compiling....* guix/lint.scm (check-tests-true): New linter. (%local-checkers)[tests-true]: Add it. * tests/lint.scm ("tests-true: #:tests? must not be set to #t") ("tests-true: absent #:tests? is acceptable") ("tests-true: #:tests? #f is acceptable") ("tests-true: #:tests? #t acceptable when compiling natively"): Test it. Signed-off-by: Mathieu Othacehe <othacehe@gnu.org> Maxime Devos
2021-06-01ui, lint: Simplify exception handling in Guile 3 style....* guix/lint.scm (check-derivation)[try]: Remove "catch #t" wrapping. * guix/ui.scm (call-with-error-handling): Remove "catch 'system-error" and move 'system-error handling to the &exception-with-kind-and-args clause. Ludovic Courtès
2021-06-01maint: Require Guile 3.0....* configure.ac: Require Guile 3.0. * doc/guix.texi (Requirements): Adjust accordingly. * gnu/packages/package-management.scm (guile2.2-guix): Remove. * guix/lint.scm (exception-with-kind-and-args?): Remove 'cond-expand'. * guix/scripts/deploy.scm (deploy-machine*): Likewise. * guix/store.scm (call-with-store): Likewise. * guix/swh.scm (http-get*, http-post*): Likewise. * guix/ui.scm (without-compiler-optimizations, guard*) (call-with-error-handling): Likewise. Ludovic Courtès
2021-05-22lint: archival: Lookup content in Disarchive database....* guix/lint.scm (lookup-disarchive-spec): New procedure. (check-archival): When 'lookup-content' returns #f, call 'lookup-disarchive-spec'. Call 'lookup-directory' on the result of 'lookup-directory'. * guix/download.scm (%disarchive-mirrors): Make public. * tests/lint.scm ("archival: missing content"): Set '%disarchive-mirrors'. ("archival: content unavailable but disarchive available"): New test. Ludovic Courtès
2021-04-16lint: Warn about underscores in package names....As per section '16.4.2 Package Naming' in the manual, use hyphens instead of underscores in package names. * guix/lint.scm (check-name): Check whether the package name contains underscores. * tests/lint.scm ("name: use underscore in package name"): New test. Signed-off-by: Ludovic Courtès <ludo@gnu.org> Xinglu Chen
2021-04-06lint: refresh: Warn about missing or dysfunctional updaters....This feedback should help us improve updaters. * guix/lint.scm (check-for-updates): Return a warning when PACKAGE lacks an updater or when the updater returns #f. Ludovic Courtès
2021-04-01lint: Warn about single-character package names....A common-sense exception is made for R. * guix/lint.scm (check-name): New procedure. (%local-checkers): Add it. Tobias Geerinckx-Rice via Bug reports for GNU Guix
2021-03-26lint: archival: Gracefully handle packages with a #f hash value....Fixes <https://bugs.gnu.org/47293>. Reported by Luis Felipe. * guix/lint.scm (check-archival): Check whether 'content-hash-value' returns true. Ludovic Courtès
2021-01-07upstream: Make the 'updaters' parameter optional....* guix/upstream.scm (lookup-updater, package-latest-release) (package-latest-release*, package-update): Make 'updaters' an optional parameter. * guix/lint.scm (check-for-updates): Remove second argument to 'package-latest-release*'. Ludovic Courtès
2020-11-21lint: Add 'check-haskell-stackage' checker....* guix/lint.scm (check-haskell-stackage): New procedure. (%network-dependent-checkers): Add 'haskell-stackage' checker. * guix/import/hackage.scm (%hackage-url): New variable. (hackage-source-url, hackage-cabal-url): Use it in place of a hard-coded string. * guix/import/stackage.scm (%stackage-url): Make it a parameter. (stackage-lts-info-fetch): Update accordingly. * tests/lint.scm ("hackage-stackage"): New test. Timothy Sample
2020-11-21lint: Add 'patch-headers' checker....* guix/lint.scm (check-patch-headers): New procedure. (%local-checkers): Add 'patch-headers' checker. * tests/lint.scm ("patch headers: no warnings") ("patch headers: missing comment", "patch headers: empty") ("patch headers: patch not found"): New tests. Ludovic Courtès
2020-11-12lint: patch-file-names: Simplify 'search-patch' error handling....* guix/lint.scm (check-patch-file-names): Remove 'message-condition?' guard, which is useless since d51bfe242fbe6f3f8f71d723e8fe0c7bbe711ba1. Remove call to 'format' in the 'formatted-message?' case. Ludovic Courtès
2020-10-12lint: cve: Set a connection timeout....This (notably) works around the fact that nvd.nist.gov is currently inaccessible over IPv6. * guix/cve.scm (fetch-vulnerabilities): Add #:timeout and pass it to 'http-fetch/cached'. (current-vulnerabilities): Add #:timeout and pass it to 'fetch-vulnerabilities'. * guix/lint.scm (current-vulnerabilities*): Pass #:timeout to 'current-vulnerabilities'. Ludovic Courtès
2020-08-23lint: formatting: Gracefully handle relative file names....Fixes <https://bugs.gnu.org/42543>. Reported by Jack Hill <jackhill@jackhill.us>. * guix/lint.scm (check-formatting): Always return a list (previously we would return #f when 'search-path' returns #f). Check whether LOCATION's file is a relative file name. Return a warning if not. * tests/guix-lint.sh: Add test. Ludovic Courtès
2020-08-23lint: Avoid calls to 'package-field-location' with #f as the field....* guix/lint.scm (%make-warning): Call 'package-field-location' only when FIELD is true. Ludovic Courtès
2020-08-01guix: lint: Ignore unsupported source URL’s....* guix/lint.scm (check-source): Add match case for #f. Signed-off-by: Mathieu Othacehe <othacehe@gnu.org> Lars-Dominik Braun
2020-07-25Use 'formatted-message' instead of '&message' where appropriate....* gnu.scm (%try-use-modules): Use 'formatted-message' instead of '&message'. * gnu/machine/digital-ocean.scm (maybe-raise-unsupported-configuration-error): Likewise. * gnu/machine/ssh.scm (machine-check-file-system-availability): Likewise. (machine-check-building-for-appropriate-system): Likewise. (deploy-managed-host): Likewise. (maybe-raise-unsupported-configuration-error): Likewise. * gnu/packages.scm (search-patch): Likewise. * gnu/services.scm (%service-with-default-value): Likewise. (files->etc-directory): Likewise. (fold-services): Likewise. * gnu/system.scm (locale-name->definition*): Likewise. * gnu/system/mapped-devices.scm (check-device-initrd-modules): Likewise. (check-luks-device): Likewise. * guix/channels.scm (latest-channel-instance): Likewise. * guix/cve.scm (json->cve-items): Likewise. * guix/git-authenticate.scm (commit-signing-key): Likewise. (commit-authorized-keys): Likewise. (authenticate-commit): Likewise. (verify-introductory-commit): Likewise. * guix/remote.scm (remote-pipe-for-gexp): Likewise. * guix/scripts/graph.scm (assert-package): Likewise. * guix/scripts/offload.scm (private-key-from-file*): Likewise. * guix/ssh.scm (authenticate-server*): Likewise. (open-ssh-session): Likewise. (remote-inferior): Likewise. * guix/ui.scm (matching-generations): Likewise. * guix/upstream.scm (package-update): Likewise. * tests/channels.scm ("latest-channel-instances, missing introduction for 'guix'"): Catch 'formatted-message?'. ("authenticate-channel, wrong first commit signer"): Likewise. * tests/lint.scm ("patches: not found"): Adjust message string. * tests/packages.scm ("patch not found yields a run-time error"): Catch 'formatted-message?'. * guix/lint.scm (check-patch-file-names): Handle 'formatted-message?'. (check-derivation): Ditto. Ludovic Courtès
2020-07-21lint: source: Always return a list....Fixes a regression introduced in c10526672e515f07c92dc447bbc592808f67238e. Previously we would return *unspecified* for a package whose source is not an origin. * guix/lint.scm (check-source): Add alternate 'if' branch. Ludovic Courtès
2020-07-12lint: source: Validate URLs of Git references....Until now the 'source' checker would look at URL for 'url-fetch' origins but not for 'git-fetch' origins. * guix/lint.scm (check-source): Add case for 'git-reference?'. * tests/lint.scm ("source, git-reference: 301 -> 200"): New test. Ludovic Courtès
2020-07-03lint: Do not assume that a package's source is an origin....* guix/lint.scm (check-source-file-name): Ensure ORIGIN is an origin. (check-patch-file-names)[patches]: Likewise. (check-source): Likewise. Ludovic Courtès
2020-06-30lint: Adjust 'swh-error exception handler....* guix/lint.scm (check-archival): Change first clause to match only 'swh-error keys. Ludovic Courtès
2020-06-14lint: Add 'check-for-collisions' checker....Suggested by Edouard Klein <edk@beaver-labs.com>. * guix/profiles.scm (check-for-collisions): Export. * guix/lint.scm (check-profile-collisions): New procedure. (%local-checkers): Add 'profile-collisions' checker. * tests/lint.scm ("profile-collisions: no warnings") ("profile-collisions: propagated inputs collide") ("profile-collisions: propagated inputs collide, store items"): New tests. * doc/guix.texi (Invoking guix lint): Document it. Ludovic Courtès
2020-06-12lint: check-patch-file-names: Use origin-actual-file-name....This avoids crashes for the patch-file-names checker where a <origin> is used for a patch, but without a value for the file-name field. This is currently the case with the bash package. * guix/lint.scm (check-patch-file-names): Change origin-file-name to origin-actual-file-name. Christopher Baines
2020-06-11guix: lint: Support origins in check-patch-file-names....* guix/lint.scm (check-patch-file-names)[starts-with-package-name?]: New procedure, extracted from the existing logic. Using it, add a clause to the match-lambda to handle origin records. Chris Marusich
2020-05-22lint: archival: Use 'origin-hash'....* guix/lint.scm (check-archival): Use 'origin-hash' instead of 'origin-sha256', removing hard-coded "sha256". Ludovic Courtès
2020-04-10lint: 'check-patch-file-names' restricts to shorter file names....* guix/lint.scm (check-patch-file-names): Increase MARGIN. Ludovic Courtès
2020-04-10lint: Check for inappropriate inputs in propagated-inputs too....* guix/lint.scm (check-inputs-should-be-native): Also check the propagated inputs of the package. Efraim Flashner
2020-04-07lint: 'm4' is a native input....* guix/lint.scm (check-inputs-should-be-native): Add "m4". Marius Bakke
2020-03-24lint: Add a #:store argument to check-derivation...This can then be used to avoid opening up a store connection each time a package needs checking. * guix/lint.scm (check-derivation): Add a #:store argument, and pull the handling of the store connection out of the try function. Christopher Baines
2020-03-24lint: Mark the derivation checker as requiring a store connection....* guix/lint.scm (%local-checkers): Mark the derivation checker as requiring a store connection. Christopher Baines
2020-03-24lint: Add a requires-store? field to the checker record....This can then be used to mark checkers that require a store connection, which will enable passing a connection in, avoiding the overhead of establishing a connection inside the check function when it's run for lots of different packages. * guix/lint.scm (<lint-checker>): Add requires-store? to the record type. Christopher Baines
2020-03-19guix: lint: Ad scdoc as a suggested native input....* guix/lint.scm (check-inputs-should-be-native): Add scdoc. Signed-off-by: Danny Milosavljevic <dannym@scratchpost.org> Brendan Tildesley
2020-01-17lint: vulnerabilities: Avoid 'mock' in test....* guix/lint.scm (check-vulnerabilities): Add 'package-vulnerabilities' optional parameter. * tests/lint.scm ("cve: one vulnerability"): Use it instead of 'mock'. Ludovic Courtès
2020-01-17lint: derivation: Adjust exception handling for Guile 3....This makes sure the "derivation: invalid arguments" test passes on Guile 3.0.0. Without this change, the lint warning would only include the format string instead of the key and arguments. * guix/lint.scm (exception-with-kind-and-args?): New procedure. (check-derivation): Use it. Ludovic Courtès
2020-01-12lint: Check for more packages which should be native....* guix/lint.scm (check-inputs-should-be-native): Add gtk-doc. Danny Milosavljevic
2020-01-09lint: Check for more packages which should be native....* guix/lint.scm (check-inputs-should-be-native): Add autoconf, automake, bison, dejagnu, desktop-file-utils, doxygen, flex, gettext, gobject-introspection, googletest-source, groff, help2man, libtool, swig, qmake, qttools, texinfo, xorg-server-for-tests, yelp-tools. Danny Milosavljevic
2020-01-06Adjust module autoloads....In Guile < 2.9.7, autoloading a module would give you access to all its bindings. In future versions, autoloading a module gives access only to the listed bindings, as per #:select (see <https://bugs.gnu.org/38895>). This commit adjusts autoloads to the new semantics, allowing Guix to be built with Guile 2.9.7/2.9.8. * guix/build/download.scm <top level>: Remove call to 'module-autoload!'. (load-gnutls): New procedure. (tls-wrap): Call it. * guix/git.scm <top level>: Remove call to 'module-autoload!'. (load-git-submodules): New procedure. (update-submodules): Call it instead of 'resolve-interface'. * gnu/bootloader/grub.scm: Replace #:autoload with #:use-module. * gnu/packages.scm: Likewise. * gnu/packages/ssh.scm: Likewise. * gnu/packages/tex.scm: Likewise. * gnu/services/cuirass.scm: Likewise. * gnu/services/mcron.scm: Likewise. * guix/lint.scm: Augment list of bindings in #:autoload. * guix/scripts/build.scm: Likewise. * guix/scripts/gc.scm: Likewise. * guix/scripts/pack.scm: Likewise. * guix/scripts/publish.scm: Likewise. * guix/scripts/pull.scm: Likewise. * guix/utils.scm: Remove unnecessary #:autoload clauses; replace one of them with #:use-module. Ludovic Courtès
2020-01-03download: Do not leak file descriptors on TLS ports....Fixes <https://bugs.gnu.org/20145>. * guix/build/download.scm (%tls-ports, register-tls-record-port): Remove. (tls-wrap): Remove call to 'register-tls-record-port'. Return a custom binary input/output port instead. This is a backport of what Guile 2.2's (web client) module has been doing. (close-connection): Define as an alias for 'close-port'. * guix/http-client.scm (http-fetch): Remove #:keep-alive? parameter, which was ignored and unused. Pass #:keep-alive? #f to 'http-get'. * guix/lint.scm (probe-uri): Use 'close-port' instead of 'close-connection'. * guix/scripts/substitute.scm (http-multiple-get): Likewise. Ludovic Courtès
2019-12-02lint: archival: Gracefully handle network failures....* guix/lint.scm (check-archival): Wrap re-throw in 'with-networking-fail-safe'. Ludovic Courtès
2019-11-28lint: Check for more packages which should be native....* guix/lint.scm (check-inputs-should-be-native): Add yasm, nasm, fasm. Efraim Flashner
2019-10-23lint: Re-enable CVE checker....This reverts d7fcd9c565812919109ae88049f5d8bf4c56f9bd. * guix/lint.scm (%network-dependent-checkers): Re-enable 'cve checker. Ludovic Courtès
2019-10-18lint: Comment out 'cve' checker....* guix/lint.scm (%network-dependent-checkers): Comment out 'cve' checker. Ludovic Courtès
2019-09-23lint: Fix typo....* guix/lint: Fix spelling of "mentioning". Vagrant Cascadian
2019-09-02lint: Add 'archival' checker....* guix/lint.scm (check-archival): New procedure. (%network-dependent-checkers): Add 'archival' checker. * tests/lint.scm ("archival: missing content") ("archival: content available") ("archival: missing revision") ("archival: revision available") ("archival: rate limit reached"): New tests. * doc/guix.texi (Invoking guix lint): Document it. Ludovic Courtès
2019-08-31lint: Gracefully handle errors from 'connect' & co....* guix/lint.scm (call-with-networking-fail-safe): Add case for 'system-error' as typically raised by 'connect' & co. Ludovic Courtès
2019-08-30lint: formatting: Reporters return #f or a warning....* guix/lint.scm (report-tabulations, report-trailing-white-space) (report-long-line, report-lone-parentheses): Return #f instead of *unspecified* when there are no warnings. (report-formatting-issues): Use 'filter-map' instead of 'map' + 'filter'. Ludovic Courtès
2019-08-28lint: Correct use of 'with-networking-fail-safe'....Fixes <https://bugs.gnu.org/37160>. Reported by Jonathan Brielmaier <jonathan.brielmaier@web.de>. * guix/lint.scm (check-for-updates): Make sure the first argument to 'with-networking-fail-safe' is the whole error message. Ludovic Courtès
2019-07-20lint: source: Stop as soon as a valid URL is found....This restores the behavior of 'guix lint' prior to commit 50fc2384feb3bb2677d074f8f0deb5ae3c56b4d8. * guix/lint.scm (check-source)[warnings-for-uris]: Rewrite to stop as soon as one of URIS is valid. Ludovic Courtès
2019-07-20lint: Remove unused imports....* guix/lint.scm: Remove now unused (gnu packages) and (guix monads) imports. Ludovic Courtès