summaryrefslogtreecommitdiff
path: root/guix/import
AgeCommit message (Collapse)Author
2022-10-05import/utils: beautify-description: Update to pass tests.Ricardo Wurmus
* guix/import/utils.scm (beautify-description): Remove single quote wrapping; escape @; exclude common abbreviations and titles from double-spacing; detect more sentence fragments.
2022-09-29import: print: Quasiquote propertiesitd
* guix/import/print.scm (package->code): Quasiquote properties. * tests/print.scm (pkg-with-properties, pkg-with-properties-source): New variables. ("package with properties"): New test Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-09-29import/utils: alist->package: Include properties.itd
* guix/import/utils.scm (alist->package): Process properties field in input data and include it in the generated package. * tests/import-utils.scm ("alist->package with properties"): New test. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-09-28import/cran: Process more complex license strings.Ricardo Wurmus
* guix/import/cran.scm (string->license): Add more match clauses. (string->licenses): Split license conjunctions at "|" and apply string->license on each license. (description->package): Use string->licenses.
2022-09-28import/cran: Use beautify-synopsis.Ricardo Wurmus
* guix/import/cran.scm (description->package): Use beautify-synopsis.
2022-09-28import/utils: Add beautify-synopsis.Ricardo Wurmus
* guix/import/utils.scm (beautify-synopsis): New procedure.
2022-09-28import/cran: Transform external package names to Guix names.Ricardo Wurmus
* guix/import/cran.scm (transform-sysname): New procedure. (description->package): Use it on inputs that are derived from "sysdepends".
2022-09-28import/cran: Add more strings to invalid-packages.Ricardo Wurmus
* guix/import/cran.scm (invalid-packages): Add none, windows, and xcode.
2022-09-20import/cran: description->package: Use COND and computed booleans.Ricardo Wurmus
* guix/import/cran.scm (description->package): Use COND with previously computed booleans instead of using CASE on REPOSITORY.
2022-09-20import/cran: download: Accept optional REF argument.Ricardo Wurmus
* guix/import/cran.scm (download): Accept REF argument for git downloads.
2022-09-17import: gem: Support importing a specific version of a gem.Taiju HIGASHI
* guix/import/gem.scm: (rubygems-fetch, gem->guix-package) (gem-recursive-import): Fix to fetch the specified version of the gem. * guix/scripts/import/gem.scm (show-help): Update the help message. (guix-import-gem): Modify so the version number to be passed to subsequent procedures. * tests/gem.scm: Add tests. * doc/guix.texi (Invoking guix import): Document. Signed-off-by: Christopher Baines <mail@cbaines.net>
2022-09-13import: gnome: Improve version handling logic.Maxim Cournoyer
Before this change, we'd get: $ guix refresh gedit updating from version 40.1 to version 43.alpha... This is because the new GNOME version scheme introduced in 2021 with GNOME 40 was not treated correctly. Also, no longer ignore odd numbered minor versions, as this appears to be a declining practice in GNOME. * guix/import/gnome.scm (latest-gnome-release) <pre-release-text?>: New predicate. <even-minor-version?>: Rename to... <release-version?>: ...this. Return #f in case the version corresponds to a development release. * guix/import/gnome.scm (latest-gnome-release): Adjust accordingly.
2022-09-08import: gnome: Reject version strings such as "43.alpha".Ludovic Courtès
Reported by Maxim Cournoyer. This is a followup to 61b63e7fa73be8828af2b36d196c3676c974e119. * guix/import/gnome.scm (latest-gnome-release)[even-minor-version?]: Reject VERSION is the minor or micro part is not an integer.
2022-09-06import: gnome: Do not require even minor for two-number version strings.Ludovic Courtès
That way, "guix refresh gnome-keyring" will properly return "42.1" instead of "42.0". Reported by Maxim Cournoyer. * guix/import/gnome.scm (latest-gnome-release)[even-minor-version?]: Tweak for GNOME applications.
2022-08-25import/utils: beautify-description: Add case for "Implements".Ricardo Wurmus
* guix/import/utils.scm (beautify-description): Add case to transform sentences beginning with "Implements".
2022-07-19import: Enable recursive import for texlive packages.Ricardo Wurmus
* guix/import/texlive.scm (tlpdb->package): Add VERSION argument; include explicit version field in output. (texlive->guix-package): Set default value for VERSION argument; adjust call of tlpdb->package. (texlive-recursive-import): Accept REPO and VERSION keyword arguments. * guix/import/utils.scm (package->definition): Add a clause to deal with output from tlpdb->package. * guix/scripts/import/texlive.scm (%options): Add "recursive" option. (guix-import-texlive): Honor "recursive" option. * doc/guix.texi (Using TeX and LaTeX): Mention "recursive" option.
2022-07-15import: pypi: Fix coding style.Hartmut Goebel
I missed this remark from the review when pushing the last change. * guix/import/pypi.scm(python->package-name): Replace the trailing '#t'-case by a 'else'.
2022-07-15import: pypi: Add special treatment for Tryton package names,Hartmut Goebel
Trytond modules are Python packages, and treated like this in guix. Anyhow, since they are add-ons for the “Trytond“ application, their guix package name do not get the "python-" prefix like other Python modules, (see also https://issues.guix.gnu.org/46057#1). This change disables adding the "python-" prefix to the guix package name for Trytond modules when importing and updating, thus inhibiting irritating messages like in this example: $ guix refresh -u trytond-party … trytond-party: consider adding this propagated input: python-trytond-country trytond-party: consider removing this propagated input: trytond-country Handling this special case seems appropriate since (as of now) there are about 165 packages for Trytond and the number is growing. * guix/import/pypi.scm(python->package-name): Don't add "python-" prefix for trytond packages.
2022-07-15import: egg: Fix updater.Hartmut Goebel
'egg-source-url' did not return the URL, but the quoted expression. This did break the updater, which expects the URL as a string. * guix/import/egg.scm(egg-source-url): Remove. (egg->guix-package)[egg-content]: Use quoted expression directly. (latest-release): Call egg-uri instead of egg-source-url.
2022-07-11import: github: Use correct URL scheme.Hartmut Goebel
This effects packages hosted at github with source-uri like …/releases/download/REPO-VERSION/REPO-VERSION.EXT. E.g. ‘guix refresh udisks’ would fail to find the new release of ‘udisks’ before this change. * guix/import/github.scm(updated-url): For one one of the cases add missing 'prefix' and set new version.
2022-06-15import: Add hex.pm importer.Hartmut Goebel
hex.pm is a package repository for Erlang and Elixir. * guix/scripts/import.scm (importers): Add "hexpm". * guix/scripts/import/hexpm.scm, guix/import/hexpm.scm, guix/hexpm-download.scm: New files. * guix/import/utils.scm (source-spec->object): Add "hexpm-fetch" to list of fetch methods. * guix/upstream.scm (package-update/hexpm-fetch): New function. (%method-updates) Add it. * Makefile.am: Add them.
2022-06-06import: hackage: Filter upper/mixed case dependencies too.Lars-Dominik Braun
* guix/import/hackage.scm (filter-dependencies): Convert OWN-NAMES to lowercase before filtering. (hackage-module->sexp): Remove #f from OWN-NAMES, which is used for unnamed (default) libraries. * tests/hackage.scm (test-cabal-internal-library-ignored): Add mismatched uppercase letters.
2022-06-06import: hackage: Filter internal libraries from inputs and native-inputs.Lars-Dominik Braun
Fixes <https://issues.guix.gnu.org/54760>. * guix/import/hackage.scm (filter-dependencies): Support multiple OWN-NAMES. (hackage-module->sexp): Filter OWN-NAMES from HACKAGE-DEPENDENCIES and HACKAGE-NATIVE-DEPENDENCIES. * tests/hackage.scm (test-cabal-internal-library-ignored): New variable. ("hackage->guix-package test internal libraries are ignored"): New testcase.
2022-06-06import: cabal: Support library namesLars-Dominik Braun
* guix/import/cabal.scm (make-cabal-parser): Add name to section. (is-lib): Add optional name to regular expression. (lex-rx-res): Support selecting different substring. (lex-lib): Match 2nd substring from IS-LIB. (lex-line): Adapt to changes for lex-lib. (cabal-library): Add name field and export CABAL-LIBRARY-NAME. (eval): Remove special case for 'library, which is not required any more. (make-cabal-section): Move special case for LIBRARY. * tests/hackage.scm (test-read-cabal-library-name): New variable. ("read-cabal test 1"): Adapt testcase to changed internal structure. ("read-cabal test: library name"): New testcase.
2022-06-06import: cabal: Allow curly bracket before else statement.Lars-Dominik Braun
* guix/import/cabal.scm (is-else): Turn into procedure. (lex-line): Move IS-ELSE… (lex-word): …here. * tests/hackage.scm (test-cabal-elif-brackets): Extend testcase.
2022-06-06import: cabal: Allow properties without space between key and value.Lars-Dominik Braun
* guix/import/cabal.scm (lex-word): Add colon to delimiters. * tests/hackage.scm (test-cabal-property-no-space): New variable. ("hackage->guix-package test properties without space"): New test.
2022-06-06import: cabal: Allow curly brackets in more positions.Lars-Dominik Braun
* guix/import/cabal.scm (is-layout-property): Do not expect end of line. (lex-layout-property): Check for newline. (lex-property): Stop reading on closing curly bracket. * tests/hackage.scm (test-read-cabal-2): New variable. ("read-cabal test: if brackets on the same line"): New test.
2022-06-06import: cabal: Support elif statement.Lars-Dominik Braun
Fixes <https://issues.guix.gnu.org/54752>. * guix/import/cabal.scm (make-cabal-parser): Replace if-then-else grammar case with elif-else, modify if-then accordingly. (is-elif): New procedure. (lex-elif): Likewise. (is-id): Add elif keyword. (lex-word): Add test for elif. * tests/hackage.scm (test-cabal-if): New variale. (test-cabal-else): Likewise. (test-cabal-elif): Likewise. (test-cabal-elif-brackets): Likewise. (match-ghc-elif): Likewise. ("hackage->guix-package test lonely if statement", "hackage->guix-package test else statement", "hackage->guix-package test elif statement", "hackage->guix-package test elif statement with brackets"): New tests.
2022-05-29import: minetest: Fix typo.Tobias Geerinckx-Rice
* guix/import/minetest.scm (important-dependencies): Fix ‘choosen’ typo.
2022-05-28guix: Upgrade to Bioconductor 3.15.Ricardo Wurmus
* guix/build-system/r.scm (bioconductor-uri): Bump Bioconductor version to 3.15. * guix/import/cran.scm (%bioconductor-version): Same.
2022-05-23licenses: Add Expat No Attribution license.Kyle Meyer
* guix/licenses.scm (expat-0): New variable. * guix/import/utils.scm (spdx-string->license): Add MIT-0. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-05-23import: utils: Update list of SPDX licenses.Nicolas Graves
* guix/import/utils.scm (spdx-string->license): Update. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-05-22import: Add Elm importer.Philip McGrath
* guix/import/elm.scm, guix/scripts/import/elm.scm: New files. * Makefile.am (MODULES): Add them. * guix/scripts/import.scm (importers): Add "elm". * doc/guix.texi (Invoking guix import): Document Elm importer. * doc/contributing.texi (Elm Packages): Mention it. * tests/elm.scm ("(guix import elm)"): New test group. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-05-22import: json: Accept '#:http-fetch' in 'json-fetch'.Philip McGrath
For example, supplying 'http-fetch/cached' would enable caching. * guix/import/json.scm (json-fetch): Add '#:http-fetch' argument. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-04-11import: opam: Factor out source import.Julien Lepiller
This also ensures a package can be imported even when it does not specify a URL. * guix/import/opam.scm (opam->guix-source): New procedure. (opam->guix-package): Use it. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-04-11import: opam: Accept tabulations.Julien Lepiller
* guix/import/opam.scm (SP, SP2): Accept tabulation as whitespace. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-04-04import: pypi: Use new style for the conditional unzip input.Maxim Cournoyer
* guix/import/pypi.scm (make-pypi-sexp)<unzip>: Use new style.
2022-03-07import: hackage: Use SRFI-71 instead of SRFI-11.Ludovic Courtès
* guix/import/hackage.scm (read-cabal-and-hash) (hackage-fetch-and-hash, hackage-fetch) (hackage->guix-package): Use 'let' and 'let*' instead of 'let-values' and 'let*-values'.
2022-03-07import: hackage: Avoid pointless use of 'compose'.Ludovic Courtès
* guix/import/hackage.scm (hackage-module->sexp): Unroll pointless calls to 'compose'. (hackage->guix-package): Likewise.
2022-03-07import: cran: Return multiple values for unknown packages.zimoun
Partly fixes <https://bugs.gnu.org/44115>. * guix/import/pypi.scm (cran->guix-package): Return 'values'. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-03-07import: elpa: Return multiple values for unknown packages.zimoun
Partly fixes <https://bugs.gnu.org/44115>. * guix/import/elpa.scm (elpa->guix-package): Return values. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-03-07import: hackage: Return multiple values for unknown packages.zimoun
Partly fixes <https://bugs.gnu.org/44115>. * guix/import/hackage.scm (hackage->guix-package): Return 'values'. Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-03-07import: pypi: Return multiple values for unknown packages.zimoun
Partly fixes <https://bugs.gnu.org/44115>. * guix/import/pypi.scm (pypi->guix-package): Return two values when PROJECT is false. Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2022-03-07import: pypi: Gracefully handle missing project home page.Ludovic Courtès
Fixes <https://issues.guix.gnu.org/54259>. Reported by Ricardo Wurmus <rekado@elephly.net>. * guix/import/pypi.scm (pypi->guix-package): Upon 'missing-source-error?', raise '&fix-hint' only if 'project-info-home-page' returns a non-empty string.
2022-03-06import: github: Reuse HTTP connection for the /tags URL fallback.Ludovic Courtès
* guix/import/github.scm (fetch-releases-or-tags): Call 'open-connection-for-uri' and reuse the same connection for the two 'http-fetch' calls. * .dir-locals.el (scheme-mode): Add 'call-with-port'.
2022-03-06import: github: Gracefully handle rate limit exhaustion.Ludovic Courtès
Previously, 'guix refresh' would literally crash when the rate limit was reached due to the call to 'error'. With this change, the updater notices when the rate limit is reached and it turns itself into a no-op until the rate limit has been reset. When running "guix refresh" (with no arguments), the 'github' updater gets used until the rate limit has been reached, after which "guix refresh" automatically picks up the next valid updater, typically 'generic-git'. * guix/import/github.scm (fetch-releases-or-tags): Use 'http-fetch' directly instead of 'json-fetch' to let 'http-get-error?' exceptions through. Handle 403 errors with an 'X-RateLimit-Remaining' header. (%rate-limit-reset-time): New variable. (update-rate-limit-reset-time!, request-rate-limit-reached?): New procedures. (latest-released-version): Remove calls to 'error'.
2022-02-08import: utils: Harden beautify-description.Alice BRENON
* guix/import/utils.scm (beautify-description): Handle non-string arguments. [use-modules]: Explicitly import G_ from (guix i18n) and make (guix ui) import explicit. * guix/import/opam.scm: [use-modules] Make imports explicit for module (guix import utils). Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2022-02-02import: pypi: Display a hint upon "no source release" errors.Ludovic Courtès
Fixes <https://issues.guix.gnu.org/49083>. * guix/import/pypi.scm (pypi->guix-package): Upon 'missing-source-error?', raise a compound condition with a hint.
2022-01-26import: pypi: Convert hyphens to underscores in PyPI URLs if needed.Vivien Kraus
* guix/import/pypi.scm (find-project-url): New function. (make-pypi-sexp): Use find-project-url. * tests/pypi.scm (foo-json): New procedure. (test-json-1, test-json-2): Define in terms of it. ("find-project-url, with numpy", "find-project-url, uWSGI"): ("find-project-url, flake8-array-spacing") ("find-project-url, foo/goo"): New tests. Co-authored-by: Ludovic Courtès <ludo@gnu.org>
2022-01-20import/texlive: Add helper to check installed files.Ricardo Wurmus
* guix/import/texlive.scm (files-differ?): New procedure.