| Age | Commit message (Collapse) | Author |
|
--list-updaters loops through all packages and all updaters to see whether they
match. The gnu-ftp updater used to use official-gnu-packages to fetch a list of
packages from web.cvs.savannah.gnu.org. official-gnu-packages only caches the
result if it succeeds; but does not cache upon a timout or 5xx status.
official-gnu-packages times out after a minute and is called for all 30k+
packages. refresh --list-updaters could therefore take 30000 minutes. Now
--list-updaters uses official-gnu-packages* (from lint.scm) that memoizes the
result also on failure, thereby limiting the time to 1 minute.
* guix/gnu-maintenance.scm: Add official-gnu-packages* from guix/lint.scm.
Call official-gnu-packages* from gnu-package?
* guix/lint.scm: Move official-gnu-packages* to guix/gnu-maintenance.scm
Change-Id: I5e2e094bfb1042b03db47e119ced0e94b49b417c
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
Merges: #4949
|
|
property.
* guix/gnu-maintenance.scm (package-release-file?): New procedure.
(tarball->version): Add optional parameter and honor it.
(import-html-release): Use ‘package-release-file?’ and pass second argument to
‘tarball->version’.
* tests/gnu-maintenance.scm ("latest-html-release, 'release-file-regexp' property")
("latest-html-release, invalid 'release-file-regexp' property"): New tests.
* doc/guix.texi (Invoking guix refresh): Document it.
Change-Id: Ia9328418fdd2faf118e4ec9d5fbde4a279e100ed
Reviewed-by: Maxim Cournoyer <maxim@guixotic.coop>
|
|
This reverts commit a7db92d9b389cbe565395523882c34c6eff2c21a, this time with
the more careful command, to avoid a world rebuild:
grep -rl --exclude-dir=build --exclude-dir=patches --exclude=ld-wrapper.in \
--exclude=sitecustomize.py --exclude=guix-emacs.el maxim.cournoyer@gmail.com |
xargs sed -i 's/maxim.cournoyer@gmail.com/maxim@guixotic.coop/g'
Change-Id: I0871f5cf9ace79e34e78e24154d0da6ea95a3a91
|
|
This reverts commit d0d87a744d724b7e7d5ac013c586039652087bb3. Oops! This
caused a world rebuild.
Change-Id: I25fff644b2b61d0ee93d69b457b04c72b5b74d15
|
|
The change was automated via:
git grep -l maxim.cournoyer@gmail.com |
xargs sed -i 's/maxim.cournoyer@gmail.com/maxim@guixotic.coop/g'
* .mailmap: New entry.
Change-Id: Iaa88b1e51c94159c49138fb43910badb990eb169
|
|
* guix/gnu-maintenance.scm (%savannah-base): Change URL and remove
outdated comment.
Change-Id: I03103ef2dd2cf9886f5b1eed12d70d5a298a85c1
|
|
The import-gnu-release could crash with a "Wrong type (expecting pair): ()"
error, as seen when attempting to recursively refresh a package, e.g.:
$ guix refresh -r xdg-desktop-portal-gnome
It would crash on attempting to refresh 'bash-static'.
* guix/gnu-maintenance.scm (import-gnu-release): Guard against a potentially
empty VERSIONS list.
Change-Id: Ib4edb4b721e6053b09ef144a1b16fe23b35649b0
|
|
The previous fix introduced in commit 8176277487 ("import: Avoid duplicate
trailing '/' in computed import URL.") regressed on the handling of *file*
source URIs:
$ guix refresh cairo --update
Starting download of /tmp/guix-file.xUKazf
From https://cairographics.org/cairo-1.18.4.tar.xz...
download failed "https://cairographics.org/cairo-1.18.4.tar.xz" 404 "Not Found"
* guix/gnu-maintenance.scm (import-html-release): Revert commit 8176277487,
instead adding a trailing slash only if it doesn't already exist.
Change-Id: I6e3889f14badd8843bbf6436ad62a1594f553afe
|
|
This fixes a few omissions in commit f13f076968 ("refresh: Add support for
partial target versions.").
* guix/gnu-maintenance.scm
(import-kernel.org-release): Add #:partial-version? argument.
* guix/gnu-maintenance.scm (import-savannah-release): Likewise.
(import-xorg-release): Likewise.
(import-kernel.org-release): Likewise.
(latest-sourceforge-release): Likewise (reporting an error). Use report-error
instead of error directly.
Change-Id: I188fa8fa7250a7165410b8d5c4870f428ea228af
|
|
Unlike for file names, duplicate slashes in URLs matter. For example
attempting to refresh 'qemu' would previously not find any result because it'd
try to find links from 'https://download.qemu.org//', which is unreachable.
* guix/gnu-maintenance.scm (import-html-release): Use canonicalize-url to join
BASE-URL and DIRECTORY, which handles trailing '/' correctly.
Change-Id: I108a542c4eede85c78a47f62921184273dc1ea01
|
|
* 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
|
|
This fixes updates of ‘curl’: <https://curl.se/download/> includes
<base href="…"> in its head and ignoring it would lead to incorrect
download URLs.
* guix/gnu-maintenance.scm (html-links): Keep track of <base href="…">
in ‘loop’. Rewrite relative links at the end.
Change-Id: I989da78df3431034c9a584f8e10cad87ae6dc920
|
|
Since ftp://ftp.gnupg.org no longer exists, another updater should be
used for packages with code fetched from mirror://gnupg.
* guix/gnu-maintenance.scm (gnupg-hosted?): New procedure.
(%gnu-ftp-updater): Exclude packages that match ‘gnupg-hosted?’.
* guix/download.scm (%mirrors): Remove ftp://ftp.gnupg.org.
Change-Id: I653877ad843da60281d3a234acc85743bee64856
|
|
Previously these updaters would fail upon networking error, causing the
whole process to abort:
$ guix refresh coreutils libgcrypt
guix refresh: error: connect*: Connection refused
* guix/gnu-maintenance.scm (import-release*, import-xorg-release): Wrap
in ‘false-if-networking-error’.
Change-Id: I8d309bf8662e2d46460585b4a1b7da0a4f2e8907
|
|
Previously, updaters using ‘import-html-release’ would throw to 'quit
when the HTML page isn’t found, aborting the whole process:
$ guix refresh coreutils libchop
guix refresh: error: https://de.freedif.org/savannah//libchop/: HTTP download failed: 404 ("Not Found")
* guix/gnu-maintenance.scm (url->links): Guard against ‘http-get-error?’
and return the empty list when it is raised.
Reviewed-by: Maxim Cournoyer <maxim.cournoyer@gmail.com>
Change-Id: I419ff96ddb424aa8c74d6bab3d66a5e85355c3dc
|
|
This reinstate commit a5b5df7f7fbbb98487b2e7a59941efee6492bc7f with a fix to
the inner expand-uri procedure.
|
|
This reverts commit a5b5df7f7fbbb98487b2e7a59941efee6492bc7f. Pushed too
early.
|
|
Fixes <https://issues.guix.gnu.org/58697>.
* guix/gnu-maintenance.scm (import-html-updatable-release): Update doc.
<expand-uri>: New nested procedure. Apply it to the origin URI.
Reported-by: kiasoc5 <kiasoc5@disroot.org>
|
|
Fixes <https://issues.guix.gnu.org/65773>.
* guix/gnu-maintenance.scm (rewrite-url): Do not error when there are no
candidates. This may well be possible, depending on the site.
|
|
Updating the simh package would fail with:
ice-9/boot-9.scm:1685:16: In procedure raise-exception: In procedure
string-prefix?: Wrong type argument in position 2 (expecting
string): ("http://simh.trailing-edge.com/sources/simhv312-4.zip"
"http://simh.trailing-edge.com/sources/archive/simhv312-4.zip")
This is because it expects a scalar value, but lists are allowed for URIs.
* guix/gnu-maintenance.scm (import-html-updatable-release): Check that URI is
a string before checking if it has the mirror:// prefix.
|
|
* guix/gnu-maintenance.scm (release-file?): Use positive logic in doc.
Add a special case for Qt source archives.
* tests/gnu-maintenance.scm ("release-file?"): Update test.
|
|
* guix/gnu-maintenance.scm (http-url?): Extract from html-updatable-package?,
modify to return the HTTP URL, and support the mirror:// scheme.
(%disallowed-hosting-sites): New variable, extracted from
html-updatable-package.
(html-updatable-package?): Rewrite a mirror:// URL to an HTTP or HTTPS one.
* guix/download.scm (%mirrors): Update comment.
|
|
Fixes <https://issues.guix.gnu.org/64015>.
Fixes <https://issues.guix.gnu.org/65304>.
Previously, the generic HTML updater would only look for the list of files
found at the parent of its current source URL, ignoring that the URL may embed
the version elsewhere in its path. This could cause 'guix refresh' to report
no updates available, while in fact there were, such as for 'libuv'.
* guix/gnu-maintenance.scm (strip-trailing-slash): New procedure.
(%version-rx): New variable.
(rewrite-url): New procedure.
(import-html-release): New rewrite-url? argument. When true, use the above
procedure.
(import-html-updatable-release): Call import-html-release with #:rewrite-url
set to #t.
* tests/gnu-maintenance.scm ("rewrite-url, to-version specified")
("rewrite-url, without to-version"): New tests.
|
|
* guix/gnu-maintenance.scm
(canonicalize-url): New procedure, extracted from...
(import-html-release): ... here. Use it. Rename inner PACKAGE variable to
NAME, to explicit it is a string and not a package object.
|
|
* guix/gnu-maintenance.scm (import-html-release): Add docstring to the
'file->signature/guess' and 'url->release' nested procedures.
|
|
This is in preparation for a new URL rewriting feature, which will need to
have the current version information available.
* guix/gnu-maintenance.scm (import-html-release): Update doc. Adjust default
value of the DIRECTORY argument. Bind PACKAGE in lexical scope so that its
value there is unchanged.
(import-savannah-release, import-kernel.org-release)
(import-html-updatable-release): Adjust accordingly.
|
|
* guix/gnu-maintenance.scm: Re-indent file.
|
|
* guix/gnu-maintenance.scm (url->links): New procedure.
(import-html-release): Use it.
|
|
* guix/gnu-maintenance.scm (import-kernel.org-release): Fix docstring.
|
|
It doesn't make sense to have it default to something like
"https://kernel.org/pub"; it should always be provided explicitly.
* guix/gnu-maintenance.scm (import-html-release) <#:base-url>: Turn keyword
argument into a positional argument. Update doc.
* guix/gnu-maintenance.scm (import-savannah-release): Adjust call accordingly.
(import-kernel.org-release): Likewise.
(import-html-updatable-release): Likewise.
|
|
Found while investigating <https://issues.guix.gnu.org/65304>.
* guix/gnu-maintenance.scm (html-updatable-package?): Tighten predicate.
Reviewed-by: Ludovic Courtès <ludo@gnu.org>
|
|
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.
|
|
Previously, in a networking-less environment such as 'guix shell -C -D
guix', 'guix refresh --list-updaters' would crash due to a
'gettaddrinfo-error' exception in these predicates.
* guix/gnu-maintenance.scm (%gnu-updater)[pred]: Wrap in
'false-if-networking-error'.
(%gnu-ftp-updater)[pred]: Likewise.
|
|
* guix/import/utils.scm (call-with-networking-exception-handler): New
procedure.
(false-if-networking-error): New macro.
* guix/gnu-maintenance.scm (import-html-updatable-release): Use it
instead of inline code.
|
|
* guix/gnu-maintenance.scm
(latest-ftp-release): Rename to … (import-ftp-release) … this,
add #:version argument.
If version is given, try to find the respective version.
(latest-html-release): Rename to … (import-html-release) … this,
add #:version argument.
If version is given, try to find the respective version.
(latest-gnu-release): Rename to … (import-gnu-release) … this,
add #:version argument. Refactor to first select archives for
respective package, the find the requested or latest version, then create
the upstream-source.
(latest-release): Rename to … (import-release) … this,
add #:version argument, pass on to … (import-ftp-release) … this.
(import-release*): Rename to … (import-release*) … this,
add #:version argument, pass on to … (latest-release) … this.
(latest-savannah-release): Rename to … (import-savannah-release) … this,
add keword-argument version, pass on to … (import-html-release) … this.
(latest-xorg-release): Rename to … (import-xorg-release) … this,
add keword-argument version, pass on to … (import-ftp-release) … this.
(latest-kernel.org-release): Rename to … (import-kernel.org-release) … this,
add #:version argument, pass on to … (import-html-release) … this.
(latest-html-updatable-release): Rename to … (import-html-updatable-release)
… this, add #:version argument, pass on to … (import-html-release) … this.
* guix/import/gnu.scm(gnu->guix-package): Adjust function call.
|
|
Due to the complicated directory structure at sourceforce,
enabling the sourceforge importer to update to a specific version
is very complicated to implement. Since only 2.0% of the
packages in guix are covered by this updater I dedided to not
implement this.
* guix/gnu-maintenance.scm (latest-sourceforge-release): Add #:version
argument. Issue error-message if version is given.
|
|
The next commits will make the functions, which are currently importing the
latest version of a package, change into importing the latest or a given
version of the package (for those updaters supporting specifying a version).
Thus the name ‘latest‘ is no longer appropriate.
* guix/upstream.scm (upstream-updater) Rename field [latest] to
[import]. (lookup-updater, package-latest-release) Adjust fieldname
accordingly.
* guix/gnu-maintenance.scm (%gnu-updater, %gnu-ftp-updater,
%savannah-updater, %sourceforge-updater, %xorg-updater,
%kernel.org-updater, %generic-html-updater),
guix/import/cpan.scm (%cpan-updater),
guix/import/cran.scm (%cran-updater, %bioconductor-updater),
guix/import/crate.scm (%crate-updater),
guix/import/egg.scm (%egg-updater),
guix/import/elpa.scm (%elpa-updater),
guix/import/gem.scm (%gem-updater),
guix/import/git.scm (%generic-git-updater),
guix/import/github.scm (%github-updater),
guix/import/gnome.scm (%gnome-updater),
guix/import/hackage.scm (%hackage-updater),
guix/import/hexpm.scm (%hexpm-updater),
guix/import/kde.scm (%kde-updater),
guix/import/launchpad.scm (%launchpad-updater),
guix/import/minetest.scm (%minetest-updater),
guix/import/opam.scm (%opam-updater),
guix/import/pypi.scm (%pypi-updater),
guix/import/stackage.scm (%stackage-updater),
tests/import-github.scm (found-sexp)
tests/transformations.scm ("options->transformation, with-latest"):
Adjust fieldname accordingly.
|
|
Previously "guix refresh xkbset" for example would crash with a
getaddrinfo-error because the domain name is invalid. Now it reports
failure to update.
Reported by Tyler Wolf <tyler@twolf.io>
in <https://issues.guix.gnu.org/59598>.
* guix/gnu-maintenance.scm (latest-html-updatable-release): Return #f
upon 'getaddrinfo-error' as well.
|
|
This ‘mirror’ is particularly problematic because it's the only one checked
by ‘guix refresh’.
* guix/gnu-maintenance.scm (%savannah-base): Substitute freedif.org.
* guix/download.scm (%mirrors): Likewise.
Reported by sash-kan on #guix.
|
|
* guix/gnu-maintenance.scm (%alpha-tarball-rx): Add "." before
"(alpha|beta|...)".
* tests/gnu-maintenance.scm ("release-file?"): Add test for Valgrind.
|
|
Fixes <https://issues.guix.gnu.org/59168>.
Previously 'guix build make --with-latest=make' would pick ".tar.lz",
rather than "tar.gz", because "tar.lz" happened to come first in the
<upstream-source> 'urls' field.
* guix/gnu-maintenance.scm (latest-gnu-release)[archive-type]
[better-tarball?]: New variables.
Sort TARBALLS according to BETTER-TARBALL?.
|
|
* guix/gnu-maintenance.scm (html-updatable-package?): Remove "gforge.inria.fr".
|
|
* guix/gnu-maintenance.scm (url-prefix-rewrite, adjusted-upstream-source):
Remove.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
|
|
As latest-html-release now produces mirror:// URIs where possible,
the additional post-processing is not necessary anymore.
As a test, revert the dtc package back to 1.6.0 and try updating 'gash',
the mirror:// URI remains.
* gnu-maintenance.scm (latest-kernel.org-release): Do not call
adjusted-upstream-source on the result.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
|
|
As latest-html-release now produces mirror:// URIs where possible,
the additional post-processing is not necessary anymore.
As a test, try updating 'gash', the mirror:// URI remains.
* gnu-maintenance.scm (latest-savannah-release): Do not call
adjusted-upstream-source on the result.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
|
|
Partially fixes <https://issues.guix.gnu.org/57477>.
I'm not aware of a package using both latest-html-release and mirrors, so it
has not been completely tested. However, updating "yt-dlp" appears to work
(except for git-fetch not being supported yet). The expression for the
signature-urls field had to be tweaked to not call uri-mirror-rewrite on #false.
* guix/gnu-maintenance.scm (latest-html-release)[url->research]{urls,signature-urls}:
Call uri-mirror-rewrite on the URLs.
Co-authored-by: Ludovic Courtès <ludo@gnu.org>
|
|
Partially fixes <https://issues.guix.gnu.org/57477>.
As a test, try updating gnupg. Before the patch, a ftp:// URL was produced,
now the mirror:// is preserved.
* guix/gnu-maintenance.scm (latest-ftp-release)[file->source]{urls,signature-urls}:
Call uri-mirror-rewrite on the URLs.
Signed-off-by: Ludovic Courtès <ludo@gnu.org>
|
|
It will be useful for fixing <https://issues.guix.gnu.org/57477>.
* guix/lint.scm (check-mirror-url): Extract mirror://-constructing code to ...
* guix/gnu-maintenance.scm (uri-mirror-rewrite): ... here, tweaking the API
and implementation in anticipation of future users.
Co-authored-by: Ludovic Courtès <ludo@gnu.org>
|
|
This makes "./pre-inst-env guix refresh -u" download the release tarball from
the right place -- previously, it downloaded from
https://www.libreoffice.org//download.documentfoundation.org/libreoffice/src/7.4.0/libreoffice-7.4.0.3.tar.xz?idx=1
whereas it should download from
https://download.documentfoundation.org/libreoffice/src/7.4.0/libreoffice-7.4.0.3.tar.xz?idx=1
instead.
* guix/gnu-maintenance.scm (latest-html-release)[url-release]: Adjust
computation in the case of an absolute URI-reference without a scheme.
* tests/gnu-maintenance.scm ("latest-html-release, scheme-less URIs"):
Test it.
Signed-off-by: Christopher Baines <mail@cbaines.net>
|
|
Fixes a regression introduced in
84f8bae0f85de081bbc55aa54ad6a50981a06a43, whereby the URL computed for
the new ffmpeg (for instance) would be:
https://ffmpeg.org/ffmpeg-4.4.tar.xz
instead of:
https://ffmpeg.org/releases/ffmpeg-4.4.tar.xz
Reported by Maxim Cournoyer.
* guix/gnu-maintenance.scm (latest-html-release)[url->release]: Adjust
computation in the case of a URI-reference with a relative path.
|