Skip to content
Snippets Groups Projects
Unverified Commit 4eb69bf0 authored by Hartmut Goebel's avatar Hartmut Goebel
Browse files

import: KDE updater finds packages even in sub-directory.

Fixes <http://issues.guix.gnu.org/issue/30345> and
finally fixes <http://issues.guix.gnu.org/issue/25020>.

Formerly packages living in a path like
/stable/frameworks/5.60/portingAids/kross-5.60.0.tar.xz
have not been found.

* guix/import/kde.scm (uri->kde-path-pattern): New procedure.
  (latest-kde-release): Use pattern to search for file.
parent d1dce0c3
No related branches found
No related tags found
No related merge requests found
......@@ -117,15 +117,47 @@ (define (cache-miss uri)
(close-port port)
files))
(define (uri->kde-path-pattern uri)
"Build a regexp from the package's URI suitable for matching the package
path version-agnostic.
Example:
Input:
mirror://kde//stable/frameworks/5.55/portingAids/kross-5.55.0.zip
Output:
//stable/frameworks/[^/]+/portingAids/
"
(define version-regexp
;; regexp for matching versions as used in the ld-lR file
(make-regexp
(string-join '("^([0-9]+\\.)+[0-9]+-?" ;; 5.12.90, 4.2.0-preview
"^[0-9]+$" ;; 20031002
".*-([0-9]+\\.)+[0-9]+$") ;; kdepim-4.6.1
"|")))
(define (version->pattern part)
;; If a path element might be a version, replace it by a catch-all part
(if (regexp-exec version-regexp part)
"[^/]+"
part))
(let* ((path (uri-path uri))
(directory-parts (string-split (dirname path) #\/)))
(make-regexp
(string-append
(string-join (map version->pattern directory-parts) "/")
"/"))))
(define (latest-kde-release package)
"Return the latest release of PACKAGE, a KDE package, or #f if it could
not be determined."
(let* ((uri (string->uri (origin-uri (package-source package))))
(directory (dirname (dirname (uri-path uri))))
(path-rx (uri->kde-path-pattern uri))
(name (package-upstream-name package))
(files (download.kde.org-files))
(relevant (filter (lambda (file)
(and (string-prefix? directory file)
(and (regexp-exec path-rx file)
(release-file? name (basename file))))
files)))
(match (sort relevant (lambda (file1 file2)
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment