1
0
forked from tribes/guix
Commit Graph

169 Commits

Author SHA1 Message Date
Ricardo Wurmus 7a68ab3a73 import/cran: Use SPAWN instead of SYSTEM*.
With SYSTEM* we see a file descriptor leak.  See the discussion at
<https://codeberg.org/guix-science/guix-cran-scripts/issues/5>.  There is no
such leak when using SPAWN.

* guix/import/cran.scm (fetch-description-from-tarball, source->dependencies):
Use SPAWN instead of SYSTEM*.

Change-Id: Idb13f775317e6d5d426f8675e169f0ebbe246fe2
2026-03-31 18:44:30 +02:00
Ricardo Wurmus d2c5f0fd59 import/cran: Uniquify inputs.
* guix/import/cran.scm (cran-package-inputs): Deduplicate inputs from
different sources.

Change-Id: I4547c9645f2722b451e003db2b87a77f6f4d304d
2026-03-07 11:57:24 +01:00
Ricardo Wurmus 647958d69a import/cran: Use sets instead of lset-union.
* guix/import/cran.scm (cran-package-propagated-inputs): Replace lset-union
with actual sets, because the former does not remove duplicates of its
arguments.

Change-Id: I84c57c2426aef656bdd20e30e65b510e27603a64
2026-03-07 11:57:24 +01:00
Ricardo Wurmus ee0a9f27b9 import/cran: Fix import of packages in single quotes.
* guix/import/cran.scm (import-pattern): Also match on single quotes.
(needed-vignettes-inputs-in-directory): Use EXTRACT-IMPORTS.
* tests/import/cran.scm: Add test.

Change-Id: Ie69027992519bd8d886860346f4a359514d8e822
2026-03-07 11:57:24 +01:00
John Dawson 7572a7b9bb import/cran: Prevent overwriting the definition of %standard-phases.
* guix/import/cran.scm (maybe-arguments): Do not overwrite %STANDARD-PHASES
with the definition from MINIFY-BUILD-SYSTEM.

Change-Id: I6e4cd64575ea029665db0d3b3aecdea38c41fe9d
2026-01-29 20:03:18 +01:00
Ricardo Wurmus 1a97739bda guix: Update Bioconductor version to 3.22.
* guix/build-system/r.scm (bioconductor-uri): Update to 3.22.
* guix/import/cran.scm (%bioconductor-version): Set to 3.22.

Change-Id: I53c6b0d1ddc37faad90492103b7d02c210f945d7
2025-11-29 12:20:15 +01:00
Ricardo Wurmus b215cb2027 import/cran: Detect library references in "check_installed".
* guix/import/cran.scm (import-pattern): Add case for "check_installed".
* tests/import/cran.scm: Add test.

Change-Id: Id69371158eecaeb371056e6954a3109687346c22
2025-11-29 12:19:09 +01:00
Ricardo Wurmus ad87b718ed import/cran: Reduce false positives in extracting imports.
* tests/import/cran.scm: Add tests for extract-imports.
* guix/import/cran.scm (extract-imports): New procedure, extracted from...
(needed-test-inputs-in-directory): ...this procedure, which now uses it.
(import-pattern): Update regex pattern.

Change-Id: I07ac3f685ff08a0fa7da3c25cf1f63fbca18b95f
2025-11-29 12:19:08 +01:00
Ricardo Wurmus 24dd164ead import/cran: Record more invalid package names.
* guix/import/cran.scm (invalid-packages): Add more bogus names.

Change-Id: I279996db792ed1677bd596fc7a6b5c1886a0ead4
2025-05-13 14:50:05 +02:00
Ricardo Wurmus 3071ef9397 guix: Update to Bioconductor 3.21.
* guix/build-system/r.scm (bioconductor-uri): Update version in URI to 3.21.
* guix/import/cran.scm (%bioconductor-version): Update to 3.21.

Change-Id: I216576d42d013a00310cc2230e89567ffb1487a2
2025-05-12 08:53:55 +02:00
Maxim Cournoyer f13f076968 refresh: Add support for partial target versions.
* guix/import/utils.scm (find-version): New procedure.
* guix/scripts/refresh.scm (<update-spec>) [partial?]: New field.
(update-spec-partial?): New accessor.
(update-spec): Add a PARTIAL? optional argument.
(update-specification->update-spec) <update-spec>: Call with its new PARTIAL?
optional argument when FALLBACK-VERSION is provided, i.e. when
'--target-version' was used.
(update-package): Remove the PACKAGE and VERSION positional arguments, and
replace them with UPDATE-SPEC.  Update doc.  Call `package-update' with its
new #:partial-version? argument.
(check-for-package-update) <package-latest-release>: Pass the new
 #:partial-version? argument to it.
(guix-refresh) <update-package>: Adjust call accordingly.
(show-help): Udate doc.
* guix/upstream.scm (package-latest-release): Add #:partial-version? argument,
and apply it to the importer call.
(package-update): Add #:partial-version?> argument.  Update doc.  Pass it to
the `package-latest-release' call.
* guix/gnu-maintenance.scm (rewrite-url): Add #:partial-version? argument.
Update doc.  Crawl URL for newer compatible versions when provided.
(import-html-release): Add #:partial-version? argument, and pass it to the
`rewrite-url' call.  Use `find-version' to find the best version.
(import-release, import-ftp-release, import-gnu-release)
(import-release*): Add #:partial-version? argument and honor it.
(import-html-updatable-release): Add #:partial-version? argument, and pass it
to the `import-html-release' call.
* guix/import/gnome.scm (import-gnome-release)
<#:partial-version?>: Add new argument and honor it.
* guix/import/texlive.scm (latest-texlive-tag): Rename to...
(texlive-tags): ... this, and have it return all tags.
(texlive->guix-package): Adjust accordingly.
(latest-release): Add a #:partial-version? argument.  Update doc.
* guix/import/stackage.scm (latest-lts-release): New #:partial-version?
argument.
* guix/import/pypi.scm (import-release): New #:partial-version? argument; pass
it to `pypi-package->upstream-source'.
* guix/import/opam.scm (latest-release): New #:partial-version? argument.
* guix/import/minetest.scm (latest-minetest-release): New #:partial-version?
argument.
(pypi-package->upstream-source): New #:partial-version? argument.  Update doc.
* guix/import/launchpad.scm (latest-released-version): Rename to...
(release-versions): ... this, making it return all versions.
(import-release) <#:partial-version?>: New argument.
* guix/import/kde.scm (import-kde-release)
<#:partial-version?>: New argument.  Update doc.  Refactor to honor argument.
* guix/import/hexpm.scm (lookup-hexpm): Update doc.
(hexpm-latest-release): Rename to...
(hexpm-releases): ... this; return all release strings.
(hexpm->guix-package): Adjust accordingly.
(import-release): Add and honor a #:partial-version? argument.  Update doc.
* guix/import/hackage.scm (import-release): New #:partial-version? argument.
* guix/import/cpan.scm (latest-release): New #:partial-version? argument.
* guix/import/crate.scm (max-crate-version-of-semver): Improve doc.
(import-release): Add a #:partial-version? argument and honor it.
* guix/import/egg.scm (find-latest-version): Rename to...
(get-versions): ... this, returning all versions.
(egg-metadata): Adjust accordingly.
(egg->guix-package): Likewise.
(import-release): Add a new #:partial-version? argument and honor it.
* guix/import/elpa.scm (latest-release):  New #:partial-version? argument.
* guix/import/gem.scm (get-versions): New procedure.
(import-release): Add a new #:partial-version? argument and honor it.
* guix/import/git.scm (version-mapping): Update doc; streamline a bit.
(latest-tag): Rename to...
(get-tags): ... this, dropping the #:version keyword and returning the complete
tags alist.  Update doc.
(latest-git-tag-version): Rename to...
(get-package-tags): ... this, returning the complete tags alist of the
package.  Update doc.
(import-git-release): Add a new #:partial-version? argument and honor it.
Update doc.
* guix/import/github.scm (latest-released-version): Rename to...
(get-package-tags): ... this, returning all tags.  Update doc.
(import-release): Add a new #:partial-version? argument and honor it.
* guix/import/cran.scm (latest-cran-release)
(latest-bioconductor-release): Add #:partial-version? argument.
* guix/import/composer.scm (latest-version): Delete procedure.
(composer-fetch): Add #:partial-version? keyword and honor it.  Update doc.
(import-release): Likewise.
* guix/import/test.scm (import-release): Add #:partial-version? argument.
* tests/guix-refresh.sh: Add test.
* tests/gem.scm (test-foo-versions-json): New variable.
(package-latest-release): Mock new URL.
* tests/import-git.scm (latest-git-tag-version): New procedure.
* tests/gnu-maintenance.scm (libuv-dist-html)
(libuv-dist-1.46.0-html, libuv-dist-1.44.2-html)
(libuv-html-data): New variables.
(mock-http-fetch/cached): New procedure.
("rewrite-url, without to-version"): Rewrite using the above.
("rewrite-url, partial to-version"): New test.
* doc/guix.texi <"Invoking guix refresh">: Update doc.

Series-to: 75871@debbugs.gnu.org
Change-Id: I092a58b57ac42e54a2fa55e7761e8c6993af8ad4
2025-02-28 13:36:44 +09:00
Herman Rimm a805c60151 import: utils: Rename guix-name to downstream-package-name.
* guix/import/cran.scm (cran-guix-name): Adjust.
* guix/import/crate.scm (crate-name->package-name): Adjust.
* guix/import/elpa.scm (elpa-guix-name): Adjust.
* guix/import/npm-binary.scm (npm-name->name): Adjust.
* guix/import/utils.scm (downstream-package-name): Add procedure.
[description]: Use definite article, uppercase 'name' argument.
(guix-name): Deprecate.

Change-Id: I374892be18fbeaae1bc051b8d0c79ca4c33ed8c4
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2024-12-30 13:49:57 +01:00
Ricardo Wurmus 8c97926a01 import/cran: Enhance import pattern.
* guix/import/cran.scm (import-pattern): Comment; capture direct namespace
imports as well as silent imports.

Change-Id: Ia54035d6f230d695aa950adb3e691cbce4f2d416
2024-12-03 17:00:01 +01:00
Ricardo Wurmus 1261bf83b8 import/cran: Also add set-HOME phase when R.cache exists.
* guix/import/cran.scm (phases-for-inputs): Add "R.cache" to the list.

Change-Id: Ia65beb7cd535de10b024d108a97db0169045fe1f
2024-12-03 17:00:01 +01:00
Ricardo Wurmus ddb2a9572e import/cran: Recurse for all R packages.
* guix/import/cran.scm (description->package): Return all R packages, not just
all propagated inputs.

Change-Id: Id1c6ded681e25e29dcef8f8aed1a6be47b36c4a0
2024-12-03 16:59:56 +01:00
Ricardo Wurmus f0a93b18b4 import/cran: Restore memoization for download procedure.
Fixes <https://issues.guix.gnu.org/44256>.

* guix/import/cran.scm (cran-package-inputs): Avoid passing "#:method #f", so
that there is only one memoization key in the default case.
(fetch-description): Use the full list returned by BIOCONDUCTOR-URI.

Change-Id: I532812b14f4e4d9542bfb9248555be1b09f7d92f
2024-12-03 16:59:56 +01:00
Ricardo Wurmus eac2074a6d import/cran: Detect test and vignette inputs.
* guix/import/cran.scm (import-pattern): New variable.
(needed-test-inputs-in-directory, needed-vignettes-inputs-in-directory): New
procedures.
(source-dir->dependencies): Add native inputs from result of
NEEDED-TEST-INPUTS-IN-DIRECTORY and NEEDED-VIGNETTES-INPUTS-IN-DIRECTORY.
(cran-package-inputs): Clean up and delete duplicates from source-derived
inputs.

Change-Id: Id139c144fc6e866e4aaf8f05201b0d2687744fb6
2024-12-03 16:59:54 +01:00
Ricardo Wurmus 4a06a1aca3 import/cran: Set HOME when R.rsp is among inputs.
* guix/import/cran.scm (phases-for-inputs): Also add 'set-HOME phase when
R.rsp is among the inputs.

Change-Id: Ib00d981cc623da8ec487086913570f937a76aeb5
2024-12-03 16:59:54 +01:00
Ricardo Wurmus d72df9bebb guix: Update to Bioconductor 3.20.
* guix/build-system/r.scm (bioconductor-uri): Update URL.
* guix/import/cran.scm (%bioconductor-version): Update.

Change-Id: I66a02957991bcfe15dcf56806244e56222c3f1c3
2024-12-03 16:57:22 +01:00
Ricardo Wurmus 69ac9b72ce import/cran: Do not crash when license field is missing.
* guix/import/cran.scm (description->package): Do not process license as
string when it's missing.

Change-Id: I415fa6be17631f83c2aa7a213683fdf90a868e96
2024-11-04 10:26:23 +01:00
Ricardo Wurmus 9cf0f71463 import/cran: Use CRAN mirrors.
* guix/import/cran.scm (%cran-url): Use mirror URL instead of primary project
domain name.

Change-Id: I23a51147d785d6cb645f953ca5ce0ff72f8bd367
2024-05-09 00:02:39 +02:00
Ricardo Wurmus 53555dac1c guix: Update Bioconductor version to 3.19.
* guix/build-system/r.scm (bioconductor-uri): Use 3.19 URL.
* guix/import/cran.scm (%bioconductor-version): Set to 3.19.

Change-Id: I7a2c4dfcdb2c4cdfef581f823d87e73acc163549
2024-05-08 12:53:14 +02:00
Ricardo Wurmus 3e0a1469b8 import/cran: Add one more invalid package.
* guix/import/cran.scm (invalid-packages): Add "use_c17".

Change-Id: Ie3b6455d4eff97811057cd82dca460367a4583e5
2024-03-06 09:42:04 +01:00
Ricardo Wurmus 7a01cc001d import/cran: Use downstream name when using specifications.
Reported by Alexander Blume at
<https://github.com/BIMSBbioinfo/guix.install/issues/4>.

* guix/import/cran.scm (format-inputs): Use UPSTREAM-INPUT-DOWNSTREAM-NAME
when %INPUT-STYLE is set to 'SPECIFICATION.

Change-Id: I2f0963af197896aafd613b253d8712e41a716e52
2024-02-20 10:32:24 +01:00
Ricardo Wurmus 389c6082a4 import/cran: Set HOME when ExperimentHub is among the inputs.
* guix/import/cran.scm (phases-for-inputs): Add 'set-HOME phase when
ExperimentHub is among inputs.

Change-Id: Ie3a2443934704eed8694a76a651b806209722421
2024-01-22 13:54:44 +01:00
Ricardo Wurmus 29353820f2 import/cran: Also update annotation and experiment packages.
* guix/import/cran.scm (latest-bioconductor-release): Determine package type
and pass it to LATEST-BIOCONDUCTOR-PACKAGE-VERSION and BIOCONDUCTOR-URI.
(%bioconductor-updater): Compose all bioconductor predicates.

Change-Id: Icef3ae05e28ed0f2796d9abf90e51821d2dfcc4c
2024-01-22 13:54:44 +01:00
Ricardo Wurmus 2d83a25450 import/cran: Generate rudimentary ARGUMENTS field.
* guix/import/cran.scm (phases-for-inputs, maybe-arguments): New procedures.
(description->package): Splice in result of MAYBE-ARGUMENTS.

Change-Id: I578e1903f37c91bf865f0be49b04187ec372ed05
2024-01-21 11:08:13 +01:00
Ricardo Wurmus d7baeddebe import/cran: Add transformation for "packaging".
* guix/import/cran.scm (transform-sysname): Add case for "python-packaging".

Change-Id: I0d125fb3858c009a8527d60f56754b9b9c90b409
2024-01-18 16:01:54 +01:00
Ricardo Wurmus b94047cf81 import/cran: Accept optional alternative download procedure.
This is useful for cached mass imports.

* guix/import/cran.scm (fetch-description-from-tarball): Accept optional
download keyword.
(fetch-description): Accept optional replacement-download argument.

Change-Id: Ic917074656ac34a24c8e7eea3d3e0528fc5180b3
2024-01-17 22:59:11 +01:00
Ricardo Wurmus 01bf69177d import/cran: Add more invalid package names and translations.
These were encountered in a mass import of Bioconductor packages.

* guix/import/cran.scm (invalid-packages): Add "rtools".
(transform-sysname): Add aliases for Python and bioinformatics packages.

Change-Id: I97e13cee10c2ee85d4b9296d91afccbdbcec4946
2024-01-16 22:36:39 +01:00
Ricardo Wurmus 171ac4fa4f import/cran: Add more invalid package names and translations.
* guix/import/cran.scm (invalid-packages): Add "build-essential".
(transform-sysname): Add aliases for openssl, libxml2, and zlib.

Change-Id: Ia142ebc388dbcd47caf3b2c5165bc21227bc1832
2024-01-16 19:40:50 +01:00
Ricardo Wurmus 513994aead import/cran: Restore format-inputs.
This fixes a regression introduced in commit
e6223017d9 causing the selected input style to
be ignored.

* guix/import/cran.scm (format-inputs): New procedure.
(maybe-inputs): Use it.

Change-Id: I0d36f972fcb9888ed2be4ec9360bbcab13c25c5d
2024-01-01 14:35:15 +01:00
Ricardo Wurmus 31ccfe9c91 import/cran: Add invalid package.
* guix/import/cran.scm (invalid-packages): Add libR.

Change-Id: I1e06b44785051dfc4fb85ba06062aa8c8e003495
2024-01-01 14:35:13 +01:00
Ricardo Wurmus ee93015b54 import/cran: Export a few more variables and procedures.
This allows users of this module to provide e.g. caching alternatives to the
download and fetch procedures.

* guix/import/cran.scm (%bioconductor-version, download, fetch-description):
Make these variables public.

Change-Id: I9ce14db9be9b8b3314b06fa9eb50a4e24c5dd718
2023-12-19 14:12:59 +01:00
Ricardo Wurmus 7a14f9365a guix: Upgrade to Bioconductor 3.18.
* guix/build-system/r.scm (bioconductor-uri): Bump Bioconductor version to
3.18.
* guix/import/cran.scm (%bioconductor-version): Same.

Change-Id: Ic3fc2e6ab6b5f6f6e55662f81baee67391158c5b
2023-11-03 22:49:10 +01:00
Ricardo Wurmus febe08ee8a import/cran: Add one more package name transformation.
* guix/import/cran.scm (transform-sysname): Add entry for "zlib-devel".
2023-07-12 14:29:02 +02:00
Ricardo Wurmus 4699de59ff import/cran: Add another clause for ASL 2.0.
* guix/import/cran.scm (string->license): Add clause for >= 2.0.
2023-06-14 14:09:35 +02:00
Ricardo Wurmus a025d8fee6 import/cran: Ensure current package is not among inputs.
* guix/import/cran.scm (cran-package-inputs): Remove the current package from
the result.
2023-06-05 18:55:11 +02:00
Ricardo Wurmus c2f0ce73a7 import/cran: string->license: Add another case for GPLv3+.
* guix/import/cran.scm (string->license): Translate "GPL (>=3)" to gpl3+.
2023-06-02 12:52:22 +02:00
Ricardo Wurmus cbbb619ddb import/cran: Libraries should not use CRAN-GUIX-NAME.
* guix/import/cran.scm (source-dir->dependencies): Do not use CRAN-GUIX-NAME
when processing result of NEEDED-LIBRARIES-IN-DIRECTORY.
2023-06-02 12:49:25 +02:00
Ricardo Wurmus 67183e25ad import/cran: Also search Makevars file for libraries.
* guix/import/cran.scm (needed-libraries-in-directory): Look at Makevars in
addition to Makevars.in for libraries.
2023-06-02 12:48:42 +02:00
Ludovic Courtès e6223017d9 upstream: Replace 'input-changes' field by 'inputs'.
Returning the expected list of inputs rather than changes relative to
the current package definition is less ambiguous and offers more
possibilities for further processing.

* guix/upstream.scm (<upstream-source>)[input-changes]: Remove.
[inputs]: New field.
(<upstream-input>): New record type.
* guix/upstream.scm (upstream-input-type-predicate)
(input-type-filter, upstream-source-regular-inputs)
(upstream-source-native-inputs, upstream-source-propagated-inputs): New
procedures.
(changed-inputs): Expect an <upstream-source> as its second argument.
Adjust accordingly.
* guix/import/pypi.scm (distribution-sha256): New procedure.
(maybe-inputs): Expect a list of <upstream-input>.
(compute-inputs): Rewrite to return a list of <upstream-input>.
(pypi-package-inputs, pypi-package->upstream-source): New procedures.
(make-pypi-sexp): Use it.
* guix/import/stackage.scm (latest-lts-release): Define 'cabal'.
Replace 'input-changes' field by 'inputs'.
* guix/scripts/refresh.scm (update-package): Use 'changed-inputs'
instead of 'upstream-source-input-changes'.
* tests/cran.scm ("description->package"): Adjust order of inputs.
* tests/pypi.scm (default-sha256, default-sha256/base32): New variables.
(foo-json): Add 'digests' entry.
("pypi->guix-package, no wheel"): Check HASH against DEFAULT-SHA256/BASE32.
("pypi->guix-package, wheels"): Likewise.
("pypi->guix-package, no usable requirement file."): Likewise.
("pypi->guix-package, package name contains \"-\" followed by digits"):
Likewise.
("package-latest-release"): New test.
* tests/upstream.scm (test-package-sexp): Remove.
("changed-inputs returns no changes"): Rewrite to use <upstream-source>.
(test-new-package-sexp): Remove.
("changed-inputs returns changes to plain input list"): Rewrite.
("changed-inputs returns changes to all plain input lists"): Likewise.
("changed-inputs returns changes to labelled input list")
("changed-inputs returns changes to all labelled input lists"): Remove.
* guix/import/cran.scm (maybe-inputs): Expect PACKAGE-INPUTS to be a
list of <upstream-input>.
(source-dir->dependencies): Return a list of <upstream-input>.
(vignette-builders): Likewise.
(uri-helper, cran-package-source-url)
(cran-package-propagated-inputs, cran-package-inputs): New procedures.
(description->package): Use them instead of local definitions.
(latest-cran-release): Replace 'input-changes' field by 'inputs'.
(latest-bioconductor-release): Likewise.
(format-inputs): Remove.
* guix/import/hackage.scm (cabal-package-inputs): New procedure.
(hackage-module->sexp): Use it.
[maybe-inputs]: Expect a list of <upstream-input>.
2023-05-31 23:25:24 +02:00
Ricardo Wurmus 90f67705f5 import/cran: Translate from xml2 to libxml2.
* guix/import/cran.scm (transform-sysname): Add translation from xml2 to
libxml2.
2023-04-29 20:09:30 +02:00
Ricardo Wurmus 2f53d9cce9 import/cran: Add "unix" to list of invalid packages.
* guix/import/cran.scm (invalid-packages): Add "unix".
2023-04-29 20:09:30 +02:00
Ricardo Wurmus ec52655ce6 guix: Upgrade to Bioconductor 3.16.
* guix/build-system/r.scm (bioconductor-uri): Bump Bioconductor version to
3.17.
* guix/import/cran.scm (%bioconductor-version): Same.
2023-04-29 20:09:30 +02:00
Ludovic Courtès ae587c2ef0 guix: Strip #:use-module lists.
This was obtained by setting up this environment:

  guix shell -D guix --with-input=guile@3.0.9=guile-next \
    --with-commit=guile-next=e2ed33ef0445c867fe56c247054aa67e834861f2
    -- make -j5

then adding 'unused-module' to (@@ (guix build compiler) %warnings),
building, and checking all the "unused module" warnings and removing
those that were definitely unused.
2023-03-13 15:08:33 +01:00
Ricardo Wurmus 8525c26499 import/cran: Remove directory-needs-zlib? in favor of needed-libraries-in-directory.
* guix/import/cran.scm (directory-needs-zlib?): Remove procedure.
(source-dir->dependencies): Use needed-libraries-in-directory instead of
directory-needs-zlib?.
2023-02-18 19:56:30 +01:00
Ricardo Wurmus 049cff91ac import/cran: Add generic way to detect needed libraries.
* guix/import/cran.scm (needed-libraries-in-directory): New procedure.
(libraries-pattern, packages-for-matches): New variables.
2023-02-18 19:56:30 +01:00
Ricardo Wurmus 271c0bfcf2 import/cran: Process all vignette builders.
* guix/import/cran.scm (needs-knitr?): Remove procedure.
(vignette-builders): New procedure.
(description->package): Use vignette-builders instead of needs-knitr?.
2023-02-18 19:56:30 +01:00
Ricardo Wurmus c0507e9f1e import/cran: Add name mapping for libjpeg.
* guix/import/cran.scm (transform-sysname): Add mapping from libjpeg to
libjpeg-turbo.
2023-02-18 19:56:29 +01:00