Subject: Re: [PATCH v5 03/22] gnu: racket: Use Git origins for Racket packages.

From: Philip McGrath <[email-masked]>
Date: Sat, 26 Feb 2022 12:23:17 -0500

Hi,

On Saturday, February 26, 2022 9:26:29 AM EST Liliana Marie Prikler wrote:
> Am Samstag, dem 26.02.2022 um 09:20 -0500 schrieb Philip McGrath:
> > On Saturday, February 26, 2022 8:47:45 AM EST Liliana Marie Prikler
> > 
> > wrote:
> > > First, can we simplify "make-installation-layer.rkt" to "make-
> > > installation-layer"?  I don't think the file extension conveys much
> > > meaning here, or does it?
> > 
> > To me (I don't know about anyone else), the ".rtk" extension tells me
> > that I  have to pass the file as an argument to `racket`, i.e. that
> > the file is not a launcher from `raco exe` or a script with a shebang
> > that I could `invoke` directly.
> 
> I'm not talking about the generated file, but the procedure that
> generates it.  Special characters like dots and slash are still pretty
> special in Scheme, even if they're allowed as identifiers.
> 

Do you mean A, B, C, and/or D of these:
a
>           (replace 'configure
>             (lambda* (#:key inputs configure-flags #:allow-other-keys)
>               (let* ((racket (search-input-file inputs "bin/racket")))
>                 (apply invoke
>                        racket
>                        #$make-installation-layer.rkt ;; <--- A
>                        `(,@configure-flags
>                          ,(dirname (dirname racket))
>                          ,#$output))
>                 (invoke racket
>                         "--config" (string-append #$output "/etc/racket")
>                         "-l" "raco" "setup"
>                         "--no-user"))))
>
> [...]
> 
> (define make-installation-layer.rkt ;; <--- B
>   (scheme-file
>    "make-installation-layer.rkt" ;; <--- C
>    `(module
>      make-installation-layer racket/base ;; <--- D
>      (require racket/cmdline

or something else?

In particular, not to be dense, but B is not a function. 

One of the reasons I particularly like being able to use `.` in identifiers is 
to refer to files by name, without some ad-hoc encoding.

> > > I think some way to shorten those origins would do wonders in terms
> > > of the number of lines this patch adds.
> > 
> > At one point, I had abbreviated the origins as something like:
> > 
> >   (REPO-SPEC SHA256 [COMMIT])
> > 
> > [...]
> 
> I wouldn't do this inside of extract-package-source, but define a one
> or two liner for adding specifically packages hosted on racket's
> github.  WDYT?
> 
> > I wasn't sure about the trade-off between being slightly more cryptic
> > than explicit origins, but a lot shorter.
> 
> Note that the goal is not to code golf, but to be understandable.  When
> adding a bunch of origins as inputs, understandability suffers by
> induced scrolling.
> 

I've done this, and it was a very good idea. In particular, it helped find 
some places where I hadn't switched to using `%racket-commit` once the release 
was tagged.

Other than potentially doing something about "make-installation-layer.rkt", 
I'd plan to squash the WIP/FIXUP commits in
<https://gitlab.com/philip1/guix-patches/-/tree/racket-chez-refactor-hist-28>
and send it as v6.

-Philip