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

From: Philip McGrath <[email-masked]>
Date: Sat, 26 Feb 2022 09:20:58 -0500

Hi,

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.

> 
> Second, can we find an abbreviation for
> 
> > +      (extract-package-source*
> > +       `((,(origin
> > +             (method git-fetch)
> > +             (uri (git-reference
> > +                   (url "https://github.com/racket/2d")
> > +                   (commit %racket-commit)))
> > +             (sha256 (base32
> > +                     
> > "1zzcz5qyjv7syi41vb8jkxjp1rqgj61zbsdrg0nlc4qy9qsafzgr"))
> > +             (file-name
> > +              (git-file-name "racket-2d" %racket-version)))
> > +          "2d" "2d-doc" "2d-lib")
> > +         (,(origin
> > +             (method git-fetch)
> > +             (uri (git-reference
> > +                   (url "https://github.com/racket/algol60")
> > +                   (commit %racket-commit)))
> > +             (sha256 (base32
> > +                     
> > "09kj6asypmc24n29w0izc9p0q8hpga2hpkchsypfwn5c8zpvihlx"))
> > +             (file-name
> > +              (git-file-name "racket-algol60" %racket-version)))
> > +          ("algol60" "."))
> > +         (,%racket-origin
> > +          ("base" "pkgs/base") ;; FIXME belongs in racket-minimal
> > +          ("racket-lib" "pkgs/racket-lib") ;; FIXME belongs in
> > racket-minimal
> > +          ("at-exp-lib" "pkgs/at-exp-lib")
> > +          ("compiler" "pkgs/compiler")
> > +          ("compiler-lib" "pkgs/compiler-lib")
> > +          ("net" "pkgs/net")
> > +          ("net-doc" "pkgs/net-doc")
> > +          ("net-lib" "pkgs/net-lib")
> > +          ("racket-doc" "pkgs/racket-doc")
> > +          ("racket-index" "pkgs/racket-index")
> > +          ("sandbox-lib" "pkgs/sandbox-lib")
> > +          ("zo-lib" "pkgs/zo-lib"))
> > +         (,(origin
> > +             (method git-fetch)
> > +             (uri (git-reference
> > +                   (url "https://github.com/racket/cext-lib")
> > +                   (commit %racket-commit)))
> > +             (sha256 (base32
> > +                     
> > "00w38jpv88fpl4pgj6ndnysvn0s21rjvj0xhznay80msan0vc341"))
> > +             (file-name (git-file-name "racket-cext-lib" %racket-
> > version)))
> > +          "cext-lib" "dynext-lib")
> > [...]
> 
> 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])

where REPO-SPEC is one of:

  (GITHUB-OWNER GITHUB-REPO)
  ; ^ e.g. for https://github.com/RenaissanceBug/racket-cookies
  GITHUB-REPO ; "racket" is owner

and COMMIT defaults to `%racket-commit`, but could be overridden for
<https://github.com/racket/srfi>.

I think I'd given SHA256 as a literal string, but it could be e.g.:

  (extract-package-source*
    `((("2d" ,(base32 "1zzcz5qyjv7syi41vb8jkxjp1rqgj61zbsdrg0nlc4qy9qsafzgr"))
       "2d" "2d-doc" "2d-lib")
      ...))

if that seems better.

I wasn't sure about the trade-off between being slightly more cryptic than 
explicit origins, but a lot shorter.

-Philip