GNU bug report logs - #52284
Partially unifying packages and inferior packages

Previous Next

Package: guix;

Reported by: Maxime Devos <maximedevos <at> telenet.be>

Date: Sat, 4 Dec 2021 21:08:02 UTC

Severity: normal

To reply to this bug, email your comments to 52284 AT debbugs.gnu.org.

Toggle the display of automated, internal messages from the tracker.

View this report as an mbox folder, status mbox, maintainer mbox


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):

From: Maxime Devos <maximedevos <at> telenet.be>
To: bug-guix <at> gnu.org
Subject: Partially unifying packages and inferior packages
Date: Sat, 04 Dec 2021 21:01:42 +0000
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):

From: Ludovic Courtès <ludo <at> gnu.org>
To: Maxime Devos <maximedevos <at> telenet.be>
Cc: guix-devel <at> gnu.org, 52284 <at> debbugs.gnu.org
Subject: Re: bug#52284: Partially unifying packages and inferior packages
Date: Mon, 06 Dec 2021 14:14:33 +0100
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.