GNU bug report logs -
#52284
Partially unifying packages and inferior packages
Previous Next
To reply to this bug, email your comments to 52284 AT debbugs.gnu.org.
Toggle the display of automated, internal messages from the tracker.
Report forwarded
to
guix-devel <at> gnu.org, bug-guix <at> gnu.org
:
bug#52284
; Package
guix
.
(Sat, 04 Dec 2021 21:08:02 GMT)
Full text and
rfc822 format available.
Acknowledgement sent
to
Maxime Devos <maximedevos <at> telenet.be>
:
New bug report received and forwarded. Copy sent to
guix-devel <at> gnu.org, bug-guix <at> gnu.org
.
(Sat, 04 Dec 2021 21:08:02 GMT)
Full text and
rfc822 format available.
Message #5 received at submit <at> debbugs.gnu.org (full text, mbox):
X-Debbugs-CC: guix-devel <at> gnu.org
Hi guix,
There have been some bug reports with as root cause that inferior packages aren't
packages. I think that root cause is a bug. To resolve this, there was some talk on
using GOOP classes, or define-gexp-compiler-style polymorphism for package-native-inputs
etc., but these come with a complexity and time cost.
At the end of this e-mail, there is some untested code for turning an inferior
package into an equivalent package. If it's properly integrated into (guix inferior),
we could mostly do away with the inferior-package?/package? distinction,
by letting lookup-inferior-package and the like return ‘proper’ packages, albeit
with a weird build system and ignoring inheritance.
To be clear, I won't be working on this, but the idea seemed to nice to not send it.
Greetings,
Maxime
(define inferior-package-build-system
(build-system
(name 'inferior)
(description "Build things via an inferior")
(lower lower)))
(define* (lower name #:key inferior-package system target #:allow-other-keys)
(bag ;; TODO(?): package transformations using bags won't work!
(name name) ; ignored
(system system) ; ignored
(target target) ; ignored
(arguments '()) ; ignored
(build (lambda _
(inferior-package->derivation inferior-package system #:target target)))))
(define (inferior-inputs->inputs inferior-inputs)
(map (match-lamda
((label inf . rest)
`(,label ,(inferior-package->package inf) ,@rest)))
inferior-inputs))
(define (inferior-package->package inf)
;; TODO: somehow make sure no inheritance happens on this package
(package
(name (inferior-package-name inf))
(version (inferior-package-version inf))
(replacement (and=> (inferior-package-replacement inf) inferior-package->package))
(source #f) ; TODO
(build-system inferior-package-build-system)
(arguments `(#:inferior-package ,inf))
(synopsis (inferior-package-synopsis inf))
(description (inferior-package-description inf))
(home-page (inferior-package-home-page inf))
(location (inferior-package-location inf))
(inputs (map inferior-inputs->inputs (inferior-package-inputs inf)))
(native-inputs (map inferior-inputs->inputs (inferior-package-native-inputs inf)))
(propagated-inputs (map inferior-inputs->inputs (inferior-package-propagated-inputs inf)))
(transitive-propagated-inputs (map inferior-inputs->inputs (inferior-package-transitive-propagated-inputs inf)))
(native-search-paths (propagated-package-native-search-paths inf))
(search-paths (propagated-package-search-paths inf))
(license #f)) ; TODO
Information forwarded
to
bug-guix <at> gnu.org
:
bug#52284
; Package
guix
.
(Mon, 06 Dec 2021 13:15:02 GMT)
Full text and
rfc822 format available.
Message #8 received at 52284 <at> debbugs.gnu.org (full text, mbox):
Hi,
Maxime Devos <maximedevos <at> telenet.be> skribis:
> (define (inferior-package->package inf)
> ;; TODO: somehow make sure no inheritance happens on this package
> (package
> (name (inferior-package-name inf))
> (version (inferior-package-version inf))
> (replacement (and=> (inferior-package-replacement inf) inferior-package->package))
> (source #f) ; TODO
> (build-system inferior-package-build-system)
> (arguments `(#:inferior-package ,inf))
> (synopsis (inferior-package-synopsis inf))
> (description (inferior-package-description inf))
> (home-page (inferior-package-home-page inf))
> (location (inferior-package-location inf))
> (inputs (map inferior-inputs->inputs (inferior-package-inputs inf)))
> (native-inputs (map inferior-inputs->inputs (inferior-package-native-inputs inf)))
> (propagated-inputs (map inferior-inputs->inputs (inferior-package-propagated-inputs inf)))
> (transitive-propagated-inputs (map inferior-inputs->inputs (inferior-package-transitive-propagated-inputs inf)))
> (native-search-paths (propagated-package-native-search-paths inf))
> (search-paths (propagated-package-search-paths inf))
> (license #f)) ; TODO
That’s a clever hack!
Longer-term, I think it would be nice(r) to use a type hierarchy somehow
so <inferior-package> instances can truly be used anywhere a <package>
is expected.
Thanks,
Ludo’.
This bug report was last modified 3 years and 192 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.