Commit Graph

31 Commits

Author SHA1 Message Date
Ludovic Courtès
6ec81c31c0
swh: Support downloads of bare Git repositories.
* guix/swh.scm (swh-download-archive): New procedure.
(swh-download-directory): Rewrite in terms of 'swh-download-archive'.
(swh-download): Add #:archive-type and honor it.  Use
'swh-download-archive' instead of 'swh-download-directory'.
2021-09-18 23:08:32 +02:00
Ludovic Courtès
60b42bec84
swh: 'swh-download' reports revision lookup failures.
* guix/swh.scm (swh-download): Log lookup failures.
2021-09-10 17:30:54 +02:00
Ludovic Courtès
ff613c2b68
swh: Adjust to new vault API.
Previously the path to query the vault or request cooking of a directory
was /api/1/vault/directory/ID.  It is now deprecated in favor if
/api/1/vault/flat/SWHID.  This commit adjusts code accordingly and also
prepares for 'git-bare' support.

* guix/swh.scm (vault-url): New procedure.
(query-vault, request-cooking): Make 'kind' optional, and add #:archive-type.
Use 'vault-url'.
(vault-fetch): Make 'kind' optional and add #:archive-type.  Adjust
'query-vault' and 'request-cooking' calls accordingly.
2021-09-10 17:30:54 +02:00
Ludovic Courtès
fb32a38db1
swh: Adjust <vault-reply> to latest API changes.
Fixes uses of 'swh-download' as reported at
<https://lists.gnu.org/archive/html/guix-devel/2021-09/msg00115.html>.
Reported by zimoun.

* guix/swh.scm (<vault-reply>)[object-id, object-type]: Remove.  These
two fields are no longer provided in JSON replies.
[swhid]: New field.
2021-09-09 11:18:06 +02:00
Ludovic Courtès
153fd217b6
swh: Add 'lookup-snapshot-branch'.
* guix/swh.scm (<snapshot>)[id]: New field.
(snapshot-url, lookup-snapshot-branch): New procedures.
2021-09-06 22:58:12 +02:00
Ludovic Courtès
63ed618e33
swh: <revisions> accept null 'date' fields.
* guix/swh.scm (maybe-null): New procedure.
(<revision>)[date]: Use it.
2021-09-06 22:58:12 +02:00
Ludovic Courtès
b452c3b37a
swh: Export <snapshot> accessors.
* guix/swh.scm: Export <snapshot> accessors.
2021-09-06 22:58:12 +02:00
Xinglu Chen
c4ff492879
swh: Support lookup of Hg tags.
* guix/swh.scm (lookup-origin-revision): Support lookup of Hg tags, not just
Git tags.

Signed-off-by: Ludovic Courtès <ludo@gnu.org>
2021-06-14 18:35:18 +02:00
Ludovic Courtès
82d8ab01f5
maint: 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.
2021-06-01 23:26:07 +02:00
Ludovic Courtès
46eac03e72
swh: 'lookup-origin-revision' ignores partial visits.
* guix/swh.scm (lookup-origin-revision): Filter out visits with a status
different from 'full.
2021-05-14 23:25:09 +02:00
Ludovic Courtès
e069611866
swh: Adjust for compatibility with Guile 2.2's (web client).
Guile <= 2.2.7 did not support #:verify-certificate? so work around it.

* guix/swh.scm (http-get*, http-post*) [! guile-3]: Add variant for
Guile 2.2.
2021-05-05 16:56:43 +02:00
Timothy Sample
4f59ef3edb
swh: Add a directory download procedure.
* guix/swh.scm (swh-directory-download): New procedure (with
implementation extracted from 'swh-download').
(swh-download): Use it to download the revision directory.
2021-04-27 21:26:50 -04:00
Ludovic Courtès
3d43b7aef3
import, swh: Adjust to Guile-JSON 4.5.x unspecified value handling.
* guix/import/cpan.scm (<cpan-release>)[home-page]: Add 'unspecified?'
case.
* guix/import/gem.scm (<gem>)[licenses]: Likewise.
(json->gem-dependency-list): Likewise.
* guix/swh.scm (<directory-entry>)[checksums]: Likewise.
2021-01-21 00:14:38 +01:00
Ludovic Courtès
b5eb901ab5
Remove (guix json) and require Guile-JSON 4.3.0+.
This is a followup to 4071879c86.

* guix/json.scm: Remove.
* Makefile.am (MODULES): Adjust accordingly.
* m4/guix.m4 (GUIX_CHECK_GUILE_JSON): Check for 'define-json-mapping'.
* doc/guix.texi (Requirements): Require Guile-JSON 4.3.0+.
* guix/ci.scm, guix/cve.scm, guix/import/cpan.scm,
guix/import/crate.scm, guix/swh.scm: Remove (guix json) import.
* guix/import/gem.scm, guix/import/pypi.scm: Likewise, and import (json).
* guix/self.scm (specification->package): Switch to GUILE-JSON-4.
* guix/git-download.scm (git-fetch): Likewise.
2020-09-08 00:47:35 +02:00
Ludovic Courtès
722ad41c44
swh: Allow callers to disable X.509 certificate verification.
* guix/swh.scm (%verify-swh-certificate?): New parameter.
(http-get*, http-post*): New procedures.
(request-rate-limit-reached?): Use 'http-post*' instead of 'http-post'.
(update-rate-limit-reset-time!): Likewise.
(request-cooking): Likewise.
(call): Method defaults to 'http-get*' instead of 'http-get'.  Pass
 #:verify-certificate? to METHOD.
(vault-fetch): Likewise.
2020-07-10 00:11:00 +02:00
Ludovic Courtès
cc6dd2981c
swh: Adjust for Guile-JSON 4.0 null handling.
* guix/swh.scm (string*): Add clause for 'null.
2020-06-30 00:18:28 +02:00
Jakub Kądziołka
6a3911b88f
swh: Handle absolute URLs being returned by the API.
* guix/swh.scm (swh-url): Don't prepend (%swh-base-url) if a domain is
  already present.

This fixes the "guix lint: warning: while connecting to Software Heritage:
host lookup failure: Name or service not known" error message.
2020-02-23 12:30:18 +01:00
Ludovic Courtès
3d2f29382d
swh: Remove 'id' field from <origin>.
The "id" field has been removed upstream:

  https://sympa.inria.fr/sympa/arc/swh-devel/2020-02/msg00005.html

* guix/swh.scm (<origin>)[id]: Remove.
2020-02-11 12:33:35 +01:00
Björn Höfling
e507d30c48
guix: swh: Fix again example URI in comment for <origin>.
This is a follow up to
6afea7489b

* guix/swh.scm(<origin>): Write 'https' instead of 'ttps' for the URL.
2019-12-26 00:19:39 +01:00
Björn Höfling
6afea7489b
guix: swh: Fix example URI in comment for <origin>.
This is a one-character follow-up to
356a79becc

Reported by Jonathan Brielmaier <jonathan.brielmaier@web.de>.

* guix/swh.scm(<origin>): Remove a slash from example URI witin a comment.
2019-12-18 22:39:28 +01:00
Björn Höfling
356a79becc
swh: Fix API call for getting origin.
When using the archival linter, git origins already in the archive where
not recognized due to an API change and where repeatedly asked for archival.
This is fixed here.

* guix/swh.scm (lookup-origin): Fix API URI for getting origin.
(<origin>): Fix comment with API URI example.
2019-12-17 23:29:32 +01:00
Ludovic Courtès
76073d29e1
Add (guix json).
* guix/swh.scm (define-json-reader, define-json-mapping): Move to...
* guix/json.scm: ... here.  New file.
* Makefile.am (MODULES): Add it.
2019-09-04 13:02:27 +02:00
Ludovic Courtès
d370cc7319
swh: Make 'commit-id?' public.
* guix/swh.scm (commit-id?): Make public.
2019-09-02 15:25:01 +02:00
Ludovic Courtès
ba1c1853a7
swh: Add hooks for rate limiting handling.
* guix/swh.scm (%allow-request?, %save-rate-limit-reset-time)
(%general-rate-limit-reset-time): New variables.
(request-rate-limit-reached?, update-rate-limit-reset-time!): New
procedures.
(call): Call '%allow-request?'.  Change 'swh-error' protocol to pass
METHOD in addition to URL.
* tests/swh.scm ("rate limit reached")
("%allow-request? and request-rate-limit-reached?"): New tests.
2019-09-02 15:25:01 +02:00
Ludovic Courtès
8146c48632
swh: Correctly handle visits without a snapshot.
As discussed at
<https://sympa.inria.fr/sympa/arc/swh-devel/2019-08/msg00016.html>.

* guix/swh.scm (string*): New procedure.
(<visit>)[snapshot-url]: Pass 'string*' as the conversion procedure.
[status]: Pass 'string->symbol' as the conversion procedure.
(visit-snapshot): Return #f when 'visit-snapshot-url' returns #f.
(lookup-origin-revision): Filter to visits for which
'visit-snapshot-url' is true.
2019-08-28 18:52:51 +02:00
Ludovic Courtès
b8815c5ec4
swh: 'swh-download' prints debugging info.
* guix/git-download.scm (git-fetch): Print a message before calling
'swh-download'.
* guix/swh.scm (swh-download): Add #:log-port.  Write debugging messages
to LOG-PORT.
2019-08-28 18:52:51 +02:00
Ludovic Courtès
90c98b5a89
swh: 'swh-download' checks return value of 'vault-fetch'.
Reported by Björn Höfling <bjoern.hoefling@bjoernhoefling.de>
in <https://bugs.gnu.org/36931>.

* guix/swh.scm (swh-download): Check whether 'vault-fetch' return false
before calling 'dump-port'.
2019-08-23 18:41:49 +02:00
Ludovic Courtès
81c3dc3224
maint: Switch to Guile-JSON 3.x.
Guile-JSON 3.x is incompatible with Guile-JSON 1.x, which we relied on
until now: it maps JSON dictionaries to alists (instead of hash tables),
and JSON arrays to vectors (instead of lists).  This commit is about
adjusting all the existing code to this new mapping.

* m4/guix.m4 (GUIX_CHECK_GUILE_JSON): New macro.
* configure.ac: Use it.
* doc/guix.texi (Requirements): Mention the Guile-JSON version.
* guix/git-download.scm (git-fetch)[guile-json]: Use GUILE-JSON-3.
* guix/import/cpan.scm (string->license): Expect vectors instead of
lists.
(module->dist-name): Use 'json-fetch' instead of 'json-fetch-alist'.
(cpan-fetch): Likewise.
* guix/import/crate.scm (crate-fetch): Likewise, and call 'vector->list'
for DEPS.
* guix/import/gem.scm (rubygems-fetch): Likewise.
* guix/import/json.scm (json-fetch-alist): Remove.
* guix/import/pypi.scm (pypi-fetch): Use 'json-fetch' instead of
'json-fetch-alist'.
(latest-source-release, latest-wheel-release): Call 'vector->list' on
RELEASES.
* guix/import/stackage.scm (stackage-lts-info-fetch): Use 'json-fetch'
instead of 'json-fetch-alist'.
(lts-package-version): Use 'vector->list'.
* guix/import/utils.scm (hash-table->alist): Remove.
(alist->package): Pass 'vector->list' on the inputs fields, and default
to the empty vector.
* guix/scripts/import/json.scm (guix-import-json): Remove call to
'hash-table->alist'.
* guix/swh.scm (define-json-reader): Expect pair? or null? instead of
hash-table?.
[extract-field]: Use 'assoc-ref' instead of 'hash-ref'.
(json->branches): Use 'map' instead of 'hash-map->list'.
(json->checksums): Likewise.
(json->directory-entries, origin-visits): Call 'vector->list' on the
result of 'json->scm'.
* tests/import-utils.scm ("alist->package with dependencies"): New test.
* gnu/installer.scm (build-compiled-file)[builder]: Use GUILE-JSON-3.
* gnu/installer.scm (installer-program)[installer-builder]: Likewise.
* gnu/installer/locale.scm (iso639->iso639-languages): Use 'assoc-ref'
instead of 'hash-ref', and pass vectors through 'vector->list'.
(iso3166->iso3166-territories): Likewise.
* gnu/system/vm.scm (system-docker-image)[build]: Use GUILE-JSON-3.
* guix/docker.scm (manifest, config): Adjust for Guile-JSON 3.
* guix/scripts/pack.scm (docker-image)[build]: Use GUILE-JSON-3.
* guix/import/github.scm (fetch-releases-or-tags): Update docstring.
(latest-released-version): Use 'assoc-ref' instead of 'hash-ref'.  Pass
the result of 'fetch-releases-or-tags' to 'vector->list'.
* guix/import/launchpad.scm (latest-released-version): Likewise.
2019-07-25 00:16:41 +02:00
Ludovic Courtès
96f1cbeff8
swh: Add basic tests.
* guix/swh.scm (%swh-base-url): Turn into a parameter and export it.
* tests/swh.scm: New file.
* Makefile.am (SCM_TESTS): Add it.
2019-07-22 11:53:39 +02:00
Ludovic Courtès
ee6b3bb60d
swh: Export 'save-origin' and related bindings.
* guix/swh.scm: Export bindings related to 'save-origin'.
2018-11-27 12:12:33 +01:00
Ludovic Courtès
de2bfe9029
Add (guix swh).
* guix/swh.scm: New file.
* Makefile.am (MODULES): Add it.
2018-11-26 11:10:20 +01:00