diff options
author | Hartmut Goebel <h.goebel@crazy-compilers.com> | 2022-06-29 12:29:08 +0200 |
---|---|---|
committer | Hartmut Goebel <h.goebel@crazy-compilers.com> | 2022-06-30 11:30:16 +0200 |
commit | 0c338d426261fd21fa40821f4c49ce8c9d0c54be (patch) | |
tree | 0e846bc8347ce7c9c4de16655736729bd32ff305 | |
parent | 2807d9e4ed8dee913dcc25b059167a9c9d0d0fa6 (diff) | |
download | guix-0c338d426261fd21fa40821f4c49ce8c9d0c54be.tar.gz |
kde:
* guix/import/kde.scm(latest-kde-release): kw-arg version, this argument overrules the version from projekt-info. Rework the code to not sort the relevant files, but just find the latest version. [find-latest-archive-version]: New function.
-rw-r--r-- | guix/import/kde.scm | 56 |
1 files changed, 33 insertions, 23 deletions
diff --git a/guix/import/kde.scm b/guix/import/kde.scm index 6873418d62..8b501ec03d 100644 --- a/guix/import/kde.scm +++ b/guix/import/kde.scm @@ -28,6 +28,7 @@ #:use-module (ice-9 match) #:use-module (ice-9 rdelim) #:use-module (ice-9 regex) + #:use-module (srfi srfi-1) #:use-module (srfi srfi-11) #:use-module (web uri) @@ -149,38 +150,47 @@ Output: (string-join (map version->pattern directory-parts) "/") "/")))) -(define (latest-kde-release package) +(define* (latest-kde-release package #:key (version #f)) "Return the latest release of PACKAGE, a KDE package, or #f if it could not be determined." + + (define (find-latest-archive-version archives) + (fold (lambda (file1 file2) + (if (and file2 + (version>? (tarball-sans-extension (basename file2)) + (tarball-sans-extension (basename file1)))) + file2 + file1)) + #f + archives)) + (let* ((uri (string->uri (origin-uri (package-source package)))) (path-rx (uri->kde-path-pattern uri)) (name (package-upstream-name package)) (files (download.kde.org-files)) + ;; select archives for this package (relevant (filter (lambda (file) (and (regexp-exec path-rx file) (release-file? name (basename file)))) - files))) - (match (sort relevant (lambda (file1 file2) - (version>? (tarball-sans-extension - (basename file1)) - (tarball-sans-extension - (basename file2))))) - ((and tarballs (reference _ ...)) - (let* ((version (tarball->version reference)) - (tarballs (filter (lambda (file) - (string=? (tarball-sans-extension - (basename file)) - (tarball-sans-extension - (basename reference)))) - tarballs))) - (upstream-source - (package name) - (version version) - (urls (map (lambda (file) - (string-append "mirror://kde/" file)) - tarballs))))) - (() - #f)))) + files)) + ;; find latest version + (version (or version + (and (not (null? relevant)) + (tarball->version (find-latest-archive-version relevant))))) + ;; find archives matching this version + (archives (filter (lambda (file) + (string=? version (tarball->version file))) + relevant))) + (match archives + (() #f) + (_ + (upstream-source + (package name) + (version version) + (urls (map (lambda (file) + (string-append "mirror://kde/" file)) + archives))))))) + (define %kde-updater (upstream-updater |