import: gem: Updater provides input list.
* guix/import/gem.scm (import-release): Add 'inputs' field. * tests/gem.scm ("package-latest-release"): New test.master
parent
e6f82fcd5f
commit
9e237fe0bd
|
@ -2,7 +2,7 @@
|
||||||
;;; Copyright © 2015 David Thompson <davet@gnu.org>
|
;;; Copyright © 2015 David Thompson <davet@gnu.org>
|
||||||
;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
|
;;; Copyright © 2016 Ben Woodcroft <donttrustben@gmail.com>
|
||||||
;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
|
;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
|
||||||
;;; Copyright © 2020, 2021 Ludovic Courtès <ludo@gnu.org>
|
;;; Copyright © 2020, 2021, 2023 Ludovic Courtès <ludo@gnu.org>
|
||||||
;;; Copyright © 2020 Martin Becze <mjbecze@riseup.net>
|
;;; Copyright © 2020 Martin Becze <mjbecze@riseup.net>
|
||||||
;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
|
;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
|
||||||
;;; Copyright © 2022 Taiju HIGASHI <higashi@taiju.info>
|
;;; Copyright © 2022 Taiju HIGASHI <higashi@taiju.info>
|
||||||
|
@ -176,12 +176,21 @@ package on RubyGems."
|
||||||
"Return an <upstream-source> for the latest release of PACKAGE."
|
"Return an <upstream-source> for the latest release of PACKAGE."
|
||||||
(let* ((gem-name (guix-package->gem-name package))
|
(let* ((gem-name (guix-package->gem-name package))
|
||||||
(gem (rubygems-fetch gem-name))
|
(gem (rubygems-fetch gem-name))
|
||||||
|
(inputs (map (lambda (dependency)
|
||||||
|
(let ((name (gem-dependency-name dependency)))
|
||||||
|
(upstream-input
|
||||||
|
(name name)
|
||||||
|
(downstream-name
|
||||||
|
(ruby-package-name name))
|
||||||
|
(type 'propagated))))
|
||||||
|
(gem-dependencies-runtime (gem-dependencies gem))))
|
||||||
(version (or version (gem-version gem)))
|
(version (or version (gem-version gem)))
|
||||||
(url (rubygems-uri gem-name version)))
|
(url (rubygems-uri gem-name version)))
|
||||||
(upstream-source
|
(upstream-source
|
||||||
(package (package-name package))
|
(package (package-name package))
|
||||||
(version version)
|
(version version)
|
||||||
(urls (list url)))))
|
(urls (list url))
|
||||||
|
(inputs inputs))))
|
||||||
|
|
||||||
(define %gem-updater
|
(define %gem-updater
|
||||||
(upstream-updater
|
(upstream-updater
|
||||||
|
|
|
@ -4,6 +4,7 @@
|
||||||
;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
|
;;; Copyright © 2018 Oleg Pykhalov <go.wigust@gmail.com>
|
||||||
;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
|
;;; Copyright © 2021 Sarah Morgensen <iskarian@mgsn.dev>
|
||||||
;;; Copyright © 2022 Taiju HIGASHI <higashi@taiju.info>
|
;;; Copyright © 2022 Taiju HIGASHI <higashi@taiju.info>
|
||||||
|
;;; Copyright © 2023 Ludovic Courtès <ludo@gnu.org>
|
||||||
;;;
|
;;;
|
||||||
;;; This file is part of GNU Guix.
|
;;; This file is part of GNU Guix.
|
||||||
;;;
|
;;;
|
||||||
|
@ -22,6 +23,9 @@
|
||||||
|
|
||||||
(define-module (test-gem)
|
(define-module (test-gem)
|
||||||
#:use-module (guix import gem)
|
#:use-module (guix import gem)
|
||||||
|
#:use-module (guix upstream)
|
||||||
|
#:use-module ((guix download) #:select (url-fetch))
|
||||||
|
#:use-module ((guix build-system ruby) #:select (rubygems-uri))
|
||||||
#:use-module (guix base32)
|
#:use-module (guix base32)
|
||||||
#:use-module (gcrypt hash)
|
#:use-module (gcrypt hash)
|
||||||
#:use-module (guix tests)
|
#:use-module (guix tests)
|
||||||
|
@ -253,4 +257,31 @@
|
||||||
(x
|
(x
|
||||||
(pk 'fail x #f)))))
|
(pk 'fail x #f)))))
|
||||||
|
|
||||||
|
(test-equal "package-latest-release"
|
||||||
|
(list '("https://rubygems.org/downloads/foo-1.0.0.gem")
|
||||||
|
(list (upstream-input
|
||||||
|
(name "bundler")
|
||||||
|
(downstream-name name)
|
||||||
|
(type 'propagated))
|
||||||
|
(upstream-input
|
||||||
|
(name "bar")
|
||||||
|
(downstream-name "ruby-bar")
|
||||||
|
(type 'propagated))))
|
||||||
|
(mock ((guix http-client) http-fetch
|
||||||
|
(lambda (url . rest)
|
||||||
|
(match url
|
||||||
|
("https://rubygems.org/api/v1/gems/foo.json"
|
||||||
|
(values (open-input-string test-foo-json)
|
||||||
|
(string-length test-foo-json)))
|
||||||
|
(_ (error "Unexpected URL: " url)))))
|
||||||
|
(let ((source (package-latest-release
|
||||||
|
(dummy-package "ruby-foo"
|
||||||
|
(version "0.1.2")
|
||||||
|
(source (dummy-origin
|
||||||
|
(method url-fetch)
|
||||||
|
(uri (rubygems-uri "foo"
|
||||||
|
version))))))))
|
||||||
|
(list (upstream-source-urls source)
|
||||||
|
(upstream-source-inputs source)))))
|
||||||
|
|
||||||
(test-end "gem")
|
(test-end "gem")
|
||||||
|
|
Reference in New Issue