Subject: [bug#57050] [PATCH v3 12/14] gnu: chez-scheme-for-racket: Suport all systems.

From: "Philip McGrath" <[email-masked]>
Date: Thu, 25 Aug 2022 16:17:14 -0400

On Thu, Aug 25, 2022, at 6:50 AM, Efraim Flashner wrote:
> On Thu, Aug 25, 2022 at 11:24:31AM +0200, Liliana Marie Prikler wrote:
>> Should be "Support all systems".
>> 

Thanks.

>> Am Donnerstag, dem 25.08.2022 um 04:54 -0400 schrieb Philip McGrath:
>> > +(define* (nix-system->pbarch-machine-type #:optional
>> > +                                          (system
>> > +                                           (or (%current-target-
>> > system)
>> > +                                               (%current-system)))
>> > +                                          #:key (threads? #t))
>> > +  "Return a string naming the pseudo–machine type used by Racket's
>> > variant of
>> > +Chez Scheme to represent the appropriate ``pbarch'' backend for
>> > SYSTEM: that
>> > +is, the ``portable bytecode'' backend specialized for SYSTEM's word
>> > size and
>> > +endianness.  The result will name the threaded machine type unless
>> > THREADS? is
>> > +provided and is #f."
>> > +  (string-append (if threads?
>> > +                     "t"
>> > +                     "")
>> > +                 "pb"
>> > +                 (if (target-64bit? system)
>> > +                     "64"
>> > +                     "32")
>> > +                 ;; missing (guix utils) predicate target-little-
>> > endian?
>> > +                 (if (target-ppc32? system)
>> > +                     "b"
>> > +                     "l")))
>> > +
>> Don't we already have a function that does something similar?  Can't we
>> add a #:portable-bytecode? keyword to that one?
>
> I'm not aware of a function that checks for endianness. The only other
> place I know of is (guix build-system meson), but there the logic is
> hand-written.
>

I also don't know of any function we could readily adapt. Thanks for the pointer to (guix build-system meson): I see 'target-ppc32?' is the only big-endian case there as well.

>> > @@ -543,10 +577,7 @@ (define-public chez-scheme-for-racket
>> >                (add-after 'unpack 'chdir
>> >                  (lambda args
>> >                    (chdir "racket/src/ChezScheme"))))))))
>> > -    ;; TODO: How to build pbarch/pbchunks for other systems?
>> > -    ;; See https://racket.discourse.group/t/950
>> > -    (supported-systems (filter racket-cs-native-supported-system?
>> > -                               %supported-systems))
>> > +    (supported-systems %supported-systems)
>> I don't think this needs to be specified, does it?
>> 
>> See the definition in guix/packages.scm:
>>   (supported-systems package-supported-systems    ; list of strings
>>                      (default %supported-systems))
>
> Unless this package inherits from somewhere else then by default
> supported-systems is all systems. (Regardless if all dependencies are
> supported. To see more look at the difference between
> (package-supported-systems "pandoc") and
> (package-transitive-supported-systems "pandoc"))
>
>

'chez-scheme-for-racket' and 'chez-scheme-for-racket-bootstrap-bootfiles' inherit from 
'chez-scheme' and 'chez-scheme-bootstrap-bootfiles', respectively, so we need to override the inherited value.

-Philip