all messages for Guix-related lists mirrored at yhetil.org
 help / color / mirror / code / Atom feed
From: Philip McGrath <philip@philipmcgrath.com>
To: 53878@debbugs.gnu.org,
	Liliana Marie Prikler <liliana.prikler@gmail.com>,
	zimoun <zimon.toutoune@gmail.com>
Cc: "Philip McGrath" <philip@philipmcgrath.com>,
	"Ludovic Courtès" <ludo@gnu.org>,
	"Maxime Devos" <maximedevos@telenet.be>,
	raingloom <raingloom@riseup.net>,
	"Liliana Marie Prikler" <liliana.prikler@ist.tugraz.at>,
	"Attila Lendvai" <attila@lendvai.name>,
	"Malte Gerdes" <malte.f.gerdes@gmail.com>
Subject: [bug#53878] [PATCH v6 10/24] gnu: racket-minimal: Separate from the Racket VM.
Date: Sat, 26 Feb 2022 21:34:36 -0500	[thread overview]
Message-ID: <20220227023450.1877215-11-philip@philipmcgrath.com> (raw)
In-Reply-To: <20220227023450.1877215-1-philip@philipmcgrath.com>

For consistency with other Racket distributions, 'racket-minimal' should
have the "racket-lib" Racket package installed: see
<https://github.com/racket/racket/issues/3851#issuecomment-942368947>.

Happily, this gives us a clean boundary between the core Racket VM and
compiler, with all of the bootstrapping involved, and building Racket
packages and installation layers, which can be handled in a nice,
uniform way and eventually turned into a 'racket-build-system'.
Building the VM layer as an "in-place" installation should help us use
it with other Racket tools.

* gnu/packages/racket.scm (racket-vm-common-configure-flags): Add
"--enable-origtree". Adapt "--enable-racket=" for "opt/racket-vm/"
prefix.
(racket-minimal-bc-cgc): Rename to ...
(racket-vm-cgc): ... this new variable.
[inputs]: Move 'openssl' and 'sqlite' to new 'racket-minimal'.
[arguments]<#:strip-directories>: Use "opt/racket-vm/" prefix.
<#:phases>: Wrap 'configure', 'patch-shebangs', 'validate-runpath',
'make-dynamic-linker-cache', and 'patch-dot-desktop-files' to use
"opt/racket-vm/" prefix. Adapt 'initialize-config.rktd' for removal of
'openssl' and 'sqlite'.
[description]: Tweak.
(racket-minimal-bc-3m): Rename to ...
(racket-vm-bc): ... this new variable.
[synopsis, description]: Tweak.
(racket-vm-cs): New variable, adapted from the old 'racket-minimal'.
(chez-scheme-for-racket-bootstrap-bootfiles)[arguments]<#:phhases>:
Adapt to the "opt/racket-vm/" prefix.
(racket-minimal): Rewrite like 'racket' using 'racket-vm-cs'.
(racket): Inherit from 'racket-minimal'.
[inputs]: Add 'racket-vm-cs'. Move "racket-lib" and "base" to
'racket-minimal'.
[arguments]<#:make-flags, #:configure-flags>: Override from
'racket-minimal'.
(configure-layer.rkt): Adapt to support in-place VM build with possible
intermediate layer.
---
 gnu/packages/racket.scm | 597 ++++++++++++++++++++++++++--------------
 1 file changed, 385 insertions(+), 212 deletions(-)

diff --git a/gnu/packages/racket.scm b/gnu/packages/racket.scm
index 4f5f0c1df2..3271e78d45 100644
--- a/gnu/packages/racket.scm
+++ b/gnu/packages/racket.scm
@@ -54,7 +54,91 @@ (define-module (gnu packages racket)
 
 ;; Commentary:
 ;;
-;; Here's how bootstrapping minimal Racket works:
+;; Anatomy of Racket:
+;; ------------------
+;;
+;; The main Racket Git repository (<https://github.com/racket/racket>) is
+;; organized broadly like this:
+;;
+;;     .
+;;     ├── Makefile
+;;     ├── pkgs/
+;;     └── racket/
+;;         ├── collects/
+;;         └── src/
+;;             ├── configure
+;;             ├── Makefile.in
+;;             ├── bc/
+;;             ├── cs/
+;;             ├── ChezScheme/
+;;             └── ...
+;;
+;; The 'racket/src/' directory contains the source of the runtime system, core
+;; compiler, and primitives for the major Racket implementations: this layer
+;; is called the ``Racket VM''. It is basically a normal autotools
+;; project. (Even when Racket VM implementations use components implemented in
+;; Racket, they are compiled in special modes to produce VM primitives.)
+;; (There are or have been experimental Racket VM implementations elsewhere,
+;; e.g. <https://github.com/pycket/pycket>.)
+;;
+;; The 'racket/collects/' directory contains ``built in'' Racket libraries
+;; that are not part of any package, including the implementation of
+;; 'racket/base': in particular, it must contain enough to implement `raco pkg
+;; install'. It is theoretically possible to use the Racket VM layer without
+;; the main collections, but it is not stable or useful.
+;;
+;; The 'pkgs/' directory contains Racket packages that are especially closely
+;; tied to the implementation of the Racket VM, including 'compiler-lib',
+;; 'racket-doc', and 'racket-test'. Some of these packages depend on Racket
+;; packages that are developed in other Git repositories, predominantly but
+;; not exclusively under the 'racket' GitHub organization. Conversely, not all
+;; of the packages developed in the main Git repository are part of the main
+;; Racket distribution.  (Additionally, components of the Racket VM that are
+;; implemented in Racket can be installed as packages, mostly for ease of
+;; development.)
+;;
+;; The top-level 'Makefile' is more like a directory of scripts: it has
+;; convienience targets for developing Racket, and it cooperates with the
+;; 'distro-build' package to assemble custom Racket distributions. It is not
+;; part of Racket source distributions: the root of a source distribution is
+;; basically 'racket/src' with some extra package sources and configuration
+;; added.
+;;
+;; A ''minimal Racket'' installation includes two packages: 'base', which is a
+;; sort of bridge between the current ``built-in'' collections and the package
+;; system's model of dependencies, and 'racket-lib', which, for installations
+;; that can not rely on a system package manager, pulls in the SQLite and
+;; OpenSSL shared libraries as platform-specific dependencies for use by the
+;; ``built-in'' collections.
+;;
+;; The main Racket distribution consists of installing the 'main-distribution'
+;; package and all of its dependencies.
+;;
+;; The default mode when building Racket (or installing it with the released
+;; installers) is an ``in-place build'', which produces a self-contained,
+;; relocatable, roughly FHS-like directory. (Racket also supports
+;; ``Unix-style'' installations, which rearrange the parts of an in-place
+;; build into Racket-specific subdirectories and generally tries to work for
+;; installation into an FHS-based system.) Certain tools, e.g. 'distro-build'
+;; and 'raco cross', are able to work with an in-place Racket build.
+;;
+;; This file defines the packages 'racket-vm-cgc', 'racket-vm-bc', and
+;; 'racket-vm-cs'. All three are in-place builds of 'racket/src/' and
+;; 'racket/collects/' and are installed to 'opt/racket-vm/' in the store
+;; output. The function 'racket-vm-for-system' returns the recomended Racket
+;; VM package for a given system.
+;;
+;; The file 'racket.scm' builds on these packages to define 'racket-minimal'
+;; and 'racket' packages. These use Racket's support for ``layered
+;; installations'', which allow an immutable base layer to be extended with
+;; additional packages. They use the layer configuration directly provide
+;; ready-to-install FHS-like trees, rather than relying on the built in
+;; ``Unix-style install'' mechanism.
+;;
+;; Bootstrapping Racket:
+;; ---------------------
+;;
+;; Here's how bootstrapping Racket works:
 ;;
 ;;   - Racket BC [CGC] can be built with only a C compiler (except for
 ;;     one caveat discussed below).
@@ -72,6 +156,10 @@ (define-module (gnu packages racket)
 ;;
 ;; So, we build CGC to build 3M to build bootfiles and CS.
 ;;
+;; (Note: since the CGC variant is basically only for bootstrapping, we
+;; often use "BC" to mean "3M", consistent with `(banner)` and the
+;; suffixes used on executables when more than one variant co-exists.)
+;;
 ;; One remaining bootstrapping limitation is that Racket's reader, module
 ;; system, and macro expander are implemented in Racket. For Racket CS,
 ;; they are compiled to R6RS libraries as discussed above. This note from the
@@ -145,14 +233,15 @@ (define (racket-vm-common-configure-flags)
           '()))
       ,@(cond
          ((false-if-exception
-           (search-input-file %build-inputs "/bin/racket"))
+           (search-input-file %build-inputs "/opt/racket-vm/bin/racket"))
           => (lambda (racket)
                (list (string-append "--enable-racket=" racket))))
          (else
           '()))
       ,(string-append "CPPFLAGS=-DGUIX_RKTIO_PATCH_BIN_SH="
                       #$(file-append bash-minimal "/bin/sh"))
-      "--disable-strip"))
+      "--disable-strip"
+      "--enable-origtree"))
 
 (define (make-unpack-nanopass+stex)
   ;; Adapted from chez-scheme.
@@ -173,31 +262,25 @@ (define (make-unpack-nanopass+stex)
           (display "# to placate ../configure")))))
 
 
-(define-public racket-minimal-bc-cgc
+(define-public racket-vm-cgc
   ;; Eventually, it may make sense for some vm packages to not be hidden,
   ;; but this one is especially likely to remain hidden.
   (hidden-package
    (package
-     (name "racket-minimal-bc-cgc")
+     (name "racket-vm-cgc")
      (version %racket-version)
      (source %racket-origin)
-     (inputs
-      (list
-       ;; common to all racket-minimal variants:
-       openssl
-       sqlite
-       bash-minimal ;; <- for `system`
-       ncurses ;; <- for #%terminal
-       ;; only for BC variants:
-       libffi))
+     (inputs (list ncurses ;; <- common to all variants (for #%terminal)
+                   bash-minimal ;; <- common to all variants (for `system`)
+                   libffi)) ;; <- only for BC variants
      (native-inputs (list libtool)) ;; <- only for BC variants
      (outputs '("out" "debug"))
      (build-system gnu-build-system)
      (arguments
       (list
        #:configure-flags
-       #~(cons* "--enable-cgcdefault"
-                #$(racket-vm-common-configure-flags))
+       #~(cons "--enable-cgcdefault"
+               #$(racket-vm-common-configure-flags))
        ;; Tests are in packages like racket-test-core and
        ;; main-distribution-test that aren't part of the main
        ;; distribution.
@@ -208,51 +291,72 @@ (define-public racket-minimal-bc-cgc
                    (ice-9 regex)
                    (guix build gnu-build-system)
                    (guix build utils))
+       #:strip-directories #~'("opt/racket-vm/bin"
+                               "opt/racket-vm/lib")
        #:phases
-       #~(modify-phases %standard-phases
-           (add-before 'configure 'initialize-config.rktd
-             (lambda* (#:key inputs #:allow-other-keys)
-               (define (write-racket-hash alist)
-                 ;; inside must use dotted pair notation
-                 (display "#hash(")
-                 (for-each (match-lambda
-                             ((k . v)
-                              (format #t "(~s . ~s)" k v)))
-                           alist)
-                 (display ")\n"))
-               (define maybe-release-catalog
-                 (let ((v #$(package-version this-package)))
-                   (if (string-match "^[0-9]+\\.[0-9]+($|\\.[0-8][0-9]*$)"
-                                     v)
-                       `(,(string-append
-                           "https://download.racket-lang.org/releases/"
-                           v
-                           "/catalog/"))
-                       '())))
-               (mkdir-p "racket/etc")
-               (with-output-to-file "racket/etc/config.rktd"
-                 (lambda ()
-                   (write-racket-hash
-                    `((lib-search-dirs
-                       . (#f #$(file-append (this-package-input "openssl") "/lib")
-                             #$(file-append (this-package-input "sqlite") "/lib")))
-                      (build-stamp . "")
-                      (catalogs ,@maybe-release-catalog
-                                #f)))))))
-           (add-before 'configure 'chdir
-             (lambda _
-               (chdir "racket/src")))
-           (add-after 'install 'remove-pkgs-directory
-             ;; If the configured pkgs-dir exists, "pkgs.rktd" does not
-             ;; exist, and a lock file does not exist, commands like
-             ;; `raco pkg show` will try to create a lock file and fail
-             ;; due to the read-only store.
-             ;; Arguably this may be a bug in `pkg/private/lock`:
-             ;; see <https://github.com/racket/racket/issues/3851>.
-             ;; As a workaround, remove the directory.
-             (lambda args
-               ;; rmdir because we want an error if it isn't empty
-               (rmdir (string-append #$output "/share/racket/pkgs")))))))
+       #~(let ()
+           (define* ((wrap-racket-vm-outputs phase) . args)
+             (apply
+              phase
+              (let loop ((args args))
+                (match args
+                  ((#:outputs outputs . args)
+                   `(#:outputs
+                     ,(let loop ((outputs outputs))
+                        (match outputs
+                          ((("out" . out) . outputs)
+                           `(("out" . ,(string-append out "/opt/racket-vm/"))
+                             ,@outputs))
+                          ((other . outputs)
+                           (cons other (loop outputs)))))
+                     ,@args))
+                  ((arg . args)
+                   (cons arg (loop args)))))))
+           (modify-phases %standard-phases
+             (add-before 'configure 'initialize-config.rktd
+               (lambda* (#:key inputs #:allow-other-keys)
+                 (define (write-racket-hash alist)
+                   ;; inside must use dotted pair notation
+                   (display "#hash(")
+                   (for-each (match-lambda
+                               ((k . v)
+                                (format #t "(~s . ~s)" k v)))
+                             alist)
+                   (display ")\n"))
+                 (define maybe-release-catalog
+                   (let ((v #$(package-version this-package)))
+                     (if (string-match "^[0-9]+\\.[0-9]+($|\\.[0-8][0-9]*$)"
+                                       v)
+                         `(,(string-append
+                             "https://download.racket-lang.org/releases/"
+                             v
+                             "/catalog/"))
+                         '())))
+                 (mkdir-p "racket/etc")
+                 (with-output-to-file "racket/etc/config.rktd"
+                   (lambda ()
+                     (write-racket-hash
+                      `((build-stamp . "")
+                        (catalogs ,@maybe-release-catalog
+                                  #f)))))))
+             (add-before 'configure 'chdir
+               (lambda _
+                 (chdir "racket/src")))
+             (replace 'configure
+               (wrap-racket-vm-outputs
+                (assoc-ref %standard-phases 'configure)))
+             (replace 'patch-shebangs
+               (wrap-racket-vm-outputs
+                (assoc-ref %standard-phases 'patch-shebangs)))
+             (replace 'validate-runpath
+               (wrap-racket-vm-outputs
+                (assoc-ref %standard-phases 'validate-runpath)))
+             (replace 'make-dynamic-linker-cache
+               (wrap-racket-vm-outputs
+                (assoc-ref %standard-phases 'make-dynamic-linker-cache)))
+             (replace 'patch-dot-desktop-files
+               (wrap-racket-vm-outputs
+                (assoc-ref %standard-phases 'patch-dot-desktop-files)))))))
      (home-page "https://racket-lang.org")
      (synopsis "Old Racket implementation used for bootstrapping")
      (description "This variant of the Racket BC (``before Chez'' or
@@ -262,32 +366,33 @@ (define maybe-release-catalog
 scheme) by the 3M variant, which in turn was succeeded in version 8.0 by the
 Racket CS implementation.
 
-Racket BC [CGC] is primarily used for bootstrapping Racket BC [3M].  It may
+Racket CGC is primarily used for bootstrapping Racket BC [3M].  It may
 also be used for embedding applications without the annotations needed in C
 code to use the 3M garbage collector.")
      ;; https://download.racket-lang.org/license.html
      ;; The LGPL components are only used by Racket BC.
      (license (list license:lgpl3+ license:asl2.0 license:expat)))))
 
-(define-public racket-minimal-bc-3m
+(define-public racket-vm-bc
   (package
-    (inherit racket-minimal-bc-cgc)
-    (name "racket-minimal-bc-3m")
+    (inherit racket-vm-cgc)
+    (name "racket-vm-bc")
     (native-inputs
-     (modify-inputs (package-native-inputs racket-minimal-bc-cgc)
-       (prepend racket-minimal-bc-cgc)))
+     (modify-inputs (package-native-inputs racket-vm-cgc)
+       (prepend racket-vm-cgc)))
     (arguments
-     (substitute-keyword-arguments (package-arguments racket-minimal-bc-cgc)
+     (substitute-keyword-arguments (package-arguments racket-vm-cgc)
        ((#:configure-flags _ '())
         #~(cons "--enable-bconly"
                 #$(racket-vm-common-configure-flags)))))
-    (synopsis "Minimal Racket with the BC [3M] runtime system")
+    (synopsis "Racket BC [3M] implementation")
     (description "The Racket BC (``before Chez'' or ``bytecode'')
 implementation was the default before Racket 8.0.  It uses a compiler written
 in C targeting architecture-independent bytecode, plus a JIT compiler on most
 platforms.  Racket BC has a different C API and supports a slightly different
 set of architectures than the current default runtime system, Racket CS (based
-on ``Chez Scheme'').
+on ``Chez Scheme'').  It is the recommended implementation for architectures
+that Racket CS doesn't support.
 
 This package is the normal implementation of Racket BC with a precise garbage
 collector, 3M (``Moving Memory Manager'').")
@@ -295,23 +400,23 @@ (define-public racket-minimal-bc-3m
     ;; The LGPL components are only used by Racket BC.
     (license (list license:lgpl3+ license:asl2.0 license:expat))))
 
-(define-public racket-minimal
+(define-public racket-vm-cs
   (package
-    (inherit racket-minimal-bc-3m)
-    (name "racket-minimal")
+    (inherit racket-vm-bc)
+    (name "racket-vm-cs")
     (inputs
-     (modify-inputs (package-inputs racket-minimal-bc-cgc)
+     (modify-inputs (package-inputs racket-vm-cgc)
        (prepend zlib lz4)
        (delete "libffi")))
     (native-inputs
-     (modify-inputs (package-native-inputs racket-minimal-bc-cgc)
+     (modify-inputs (package-native-inputs racket-vm-cgc)
        (delete "libtool")
        (prepend chez-scheme-for-racket-bootstrap-bootfiles
-                racket-minimal-bc-3m)))
+                racket-vm-bc)))
     (arguments
-     (substitute-keyword-arguments (package-arguments racket-minimal-bc-3m)
-       ((#:phases bc-phases)
-        #~(modify-phases #$bc-phases
+     (substitute-keyword-arguments (package-arguments racket-vm-cgc)
+       ((#:phases those-phases #~%standard-phases)
+        #~(modify-phases #$those-phases
             (add-after 'unpack 'unpack-nanopass+stex
               (lambda args
                 (with-directory-excursion "racket/src/ChezScheme"
@@ -328,17 +433,14 @@ (define-public racket-minimal
                  "--enable-libz"
                  "--enable-lz4"
                  #$(racket-vm-common-configure-flags)))))
-    (synopsis "Racket without bundled packages such as DrRacket")
-    (description
-     "Racket is a general-purpose programming language in the Scheme family,
-with a large set of libraries and a compiler based on Chez Scheme.  Racket is
-also a platform for language-oriented programming, from small domain-specific
-languages to complete language implementations.
+    (synopsis "Racket CS implementation")
+    (description "The Racket CS implementation, which uses ``Chez Scheme'' as
+its core compiler and runtime system, has been the default Racket VM
+implemetation since Racket 8.0.  It performs better than the Racket BC
+implementation for most programs.
 
-The ``minimal Racket'' distribution includes just enough of Racket for you to
-use @command{raco pkg} to install more.  Bundled packages, such as the
-DrRacket IDE, are not included.")
-    (properties `())
+Using the Racket VM packages directly is not recommended: instead, install the
+@code{racket-minimal} or @code{racket} packages.")
     ;; https://download.racket-lang.org/license.html
     ;; The LGPL components are only used by Racket BC.
     (license (list license:asl2.0 license:expat))))
@@ -353,7 +455,7 @@ (define-public chez-scheme-for-racket-bootstrap-bootfiles
     ;; When updating, remember to also update %racket-version in racket.scm.
     (source %racket-origin)
     (inputs `())
-    (native-inputs (list racket-minimal-bc-3m))
+    (native-inputs (list racket-vm-bc))
     (build-system copy-build-system)
     ;; TODO: cross compilation
     (arguments
@@ -371,7 +473,7 @@ (define-public chez-scheme-for-racket-bootstrap-bootfiles
           (add-before 'install 'build
             (lambda* (#:key native-inputs inputs #:allow-other-keys)
               (invoke (search-input-file (or native-inputs inputs)
-                                         "/bin/racket")
+                                         "/opt/racket-vm/bin/racket")
                       "rktboot/main.rkt"))))))
     (home-page "https://github.com/racket/ChezScheme")
     ;; ^ This is downstream of https://github.com/racket/racket,
@@ -452,10 +554,116 @@ (define (simple-racket-origin repo hash spec0 . spec*)
          spec0
          spec*))
 
+(define-public racket-minimal
+  (package
+    (name "racket-minimal")
+    (version %racket-version)
+    (source #f)
+    ;; For cross-compilation, Matthew Flatt recommends reusing
+    ;; as much of `raco cross` as possible. So, put that off until
+    ;; we have a build system for Racket packages.
+    (inputs
+     (list openssl
+           sqlite
+           racket-vm-cs ;; TODO (racket-vm-for-system)
+           (racket-packages-origin
+            "base" %racket-origin
+            '("base" "pkgs/base")
+            '("racket-lib" "pkgs/racket-lib"))))
+    (build-system gnu-build-system)
+    (arguments
+     ;; Here and for the `racket` package, we're using #:configure-flags
+     ;; to pass flags for `configure-layer.rkt` and #:make-flags
+     ;; to pass arguments for `raco pkg install`.
+     (list
+      #:configure-flags
+      #~`("--tethered"
+          "--extra-foreign-lib-search-dirs"
+          ,(format
+            #f "~s"
+            (list #$(file-append (this-package-input "openssl") "/lib")
+                  #$(file-append (this-package-input "sqlite") "/lib"))))
+      #:make-flags #~`("racket-lib")
+      #:tests? #f ;; packaged separately
+      #:modules '((guix build gnu-build-system)
+                  (guix build utils)
+                  (guix build union)
+                  (ice-9 match))
+      #:imported-modules `((guix build union)
+                           ,@%gnu-build-system-modules)
+      #:phases
+      #~(modify-phases %standard-phases
+          (delete 'unpack)
+          (replace 'configure
+            (lambda* (#:key inputs configure-flags #:allow-other-keys)
+              (let* ((vm-dir (search-input-directory inputs "opt/racket-vm"))
+                     (racket (string-append vm-dir "/bin/racket")))
+                (apply invoke
+                       racket
+                       #$configure-layer.rkt
+                       `(,@(cond
+                            ((false-if-exception
+                              (search-input-file
+                               inputs "etc/racket/config.rktd"))
+                             => (lambda (file)
+                                  `("--parent"
+                                    ,(dirname (dirname (dirname file))))))
+                            (else
+                             '()))
+                         ,@configure-flags
+                         ,vm-dir
+                         ,#$output))
+                (invoke racket
+                        "--config" (string-append #$output "/etc/racket")
+                        "-l" "raco" "setup"
+                        "--no-user"))))
+          (replace 'build
+            (lambda* (#:key inputs #:allow-other-keys)
+              ;; We use "share/racket/pkgs" for sources to distinguish them
+              ;; from the "lib/racket/pkgs" of a potential parent layer.
+              (union-build (string-append #$output "/lib/racket/pkgs")
+                           (search-path-as-list '("share/racket/pkgs")
+                                                (map cdr inputs))
+                           #:create-all-directories? #t)))
+          (replace 'install
+            (lambda* (#:key inputs make-flags #:allow-other-keys)
+              (let ((racket
+                     (search-input-file inputs "/opt/racket-vm/bin/racket")))
+                (unless (null? make-flags)
+                  (invoke racket
+                          "-l-"
+                          "pkg/dirs-catalog"
+                          "--link"
+                          "local-catalog"
+                          (string-append #$output "/lib/racket/pkgs"))
+                  (apply invoke
+                         racket
+                         "--config" (string-append #$output "/etc/racket")
+                         "-l" "raco"
+                         "pkg" "install"
+                         "--installation"
+                         "--auto"
+                         "--catalog" "local-catalog"
+                         make-flags))))))))
+    (home-page "https://racket-lang.org")
+    (synopsis "Racket without bundled packages such as DrRacket")
+    (description
+     "Racket is a general-purpose programming language in the Scheme family,
+with a large set of libraries and a compiler based on Chez Scheme.  Racket is
+also a platform for language-oriented programming, from small domain-specific
+languages to complete language implementations.
+
+The ``minimal Racket'' distribution includes just enough of Racket for you to
+use @command{raco pkg} to install more.  Bundled packages, such as the
+DrRacket IDE, are not included.")
+    ;; https://download.racket-lang.org/license.html
+    ;; The LGPL components are only used by Racket BC.
+    (license (list license:asl2.0 license:expat))))
+
 (define-public racket
   (package
+    (inherit racket-minimal)
     (name "racket")
-    (version %racket-version)
     (source #f)
     (inputs
      (list
@@ -474,6 +682,7 @@ (define-public racket
       unixodbc
       libedit ;; TODO reconsider in light of expeditor and readline-gpl
       racket-minimal ;; <-- TODO non-tethered layer
+      racket-vm-cs ;; TODO (racket-vm-for-system)
       (simple-racket-origin
        "2d" (base32 "1zzcz5qyjv7syi41vb8jkxjp1rqgj61zbsdrg0nlc4qy9qsafzgr")
        "2d" "2d-doc" "2d-lib")
@@ -482,8 +691,6 @@ (define-public racket
        '("algol60" "."))
       (racket-packages-origin
        "racket" %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")
@@ -808,91 +1015,39 @@ (define-public racket
        "xrepl" "xrepl-doc" "xrepl-lib")))
     (build-system gnu-build-system)
     (arguments
-     ;; We're using #:configure-flags to pass flags for
-     ;; `configure-layer.rkt` and #:make-flags to pass arguments for
-     ;; `raco pkg install`.
-     (list
-      #:configure-flags
-      #~`("--extra-foreign-lib-search-dirs"
-          ,(format #f "~s"
-                   '(#$@(map (lambda (name)
-                               (cond
-                                ((this-package-input name)
-                                 => (cut file-append <> "/lib"))
-                                (else
-                                 (raise-exception
-                                  (make-exception
-                                   (make-assertion-failure)
-                                   (make-exception-with-message
-                                    "missing input to the 'racket' package")
-                                   (make-exception-with-irritants
-                                    (list name)))))))
-                             '("cairo"
-                               "fontconfig-minimal" ;; aka fontconfig
-                               "glib"
-                               "glu"
-                               "gmp"
-                               "gtk+"
-                               "libjpeg-turbo"
-                               "libpng"
-                               "libx11"
-                               "mesa"
-                               "mpfr"
-                               "pango"
-                               "unixodbc"
-                               "libedit")))))
-      #:make-flags #~`("main-distribution")
-      #:tests? #f ;; packaged separately
-      #:modules '((guix build gnu-build-system)
-                  (guix build utils)
-                  (guix build union)
-                  (ice-9 match))
-      #:imported-modules `((guix build union)
-                           ,@%gnu-build-system-modules)
-      #:phases
-      #~(modify-phases %standard-phases
-          (delete 'unpack)
-          (replace 'configure
-            (lambda* (#:key inputs configure-flags #:allow-other-keys)
-              (let* ((racket (search-input-file inputs "bin/racket")))
-                (apply invoke
-                       racket
-                       #$configure-layer.rkt
-                       `(,@configure-flags
-                         ,(dirname (dirname racket))
-                         ,#$output))
-                (invoke racket
-                        "--config" (string-append #$output "/etc/racket")
-                        "-l" "raco" "setup"
-                        "--no-user"))))
-          (replace 'build
-            (lambda* (#:key inputs #:allow-other-keys)
-              ;; We use "share/racket/pkgs" for sources to distinguish them
-              ;; from the "lib/racket/pkgs" of a potential parent layer.
-              (union-build (string-append #$output "/lib/racket/pkgs")
-                           (search-path-as-list '("share/racket/pkgs")
-                                                (map cdr inputs))
-                           #:create-all-directories? #t)))
-          (replace 'install
-            (lambda* (#:key inputs make-flags #:allow-other-keys)
-              (let ((racket (search-input-file inputs "/bin/racket")))
-                (unless (null? make-flags)
-                  (invoke racket
-                          "-l-"
-                          "pkg/dirs-catalog"
-                          "--link"
-                          "local-catalog"
-                          (string-append #$output "/lib/racket/pkgs"))
-                  (apply invoke
-                         racket
-                         "--config" (string-append #$output "/etc/racket")
-                         "-l" "raco"
-                         "pkg" "install"
-                         "--installation"
-                         "--auto"
-                         "--catalog" "local-catalog"
-                         make-flags))))))))
-    (home-page "https://racket-lang.org")
+     (substitute-keyword-arguments (package-arguments racket-minimal)
+       ((#:make-flags _ '())
+        #~`("main-distribution"))
+       ((#:configure-flags _ '())
+        #~`("--tethered"
+            "--extra-foreign-lib-search-dirs"
+            ,(format #f "~s"
+                     '(#$@(map (lambda (name)
+                                 (cond
+                                  ((this-package-input name)
+                                   => (cut file-append <> "/lib"))
+                                  (else
+                                   (raise-exception
+                                    (make-exception
+                                     (make-assertion-failure)
+                                     (make-exception-with-message
+                                      "missing input to the 'racket' package")
+                                     (make-exception-with-irritants
+                                      (list name)))))))
+                               '("cairo"
+                                 "fontconfig-minimal" ;; aka fontconfig
+                                 "glib"
+                                 "glu"
+                                 "gmp"
+                                 "gtk+"
+                                 "libjpeg-turbo"
+                                 "libpng"
+                                 "libx11"
+                                 "mesa"
+                                 "mpfr"
+                                 "pango"
+                                 "unixodbc"
+                                 "libedit"))))))))
     (synopsis "Programmable programming language in the Scheme family")
     (description
      "Racket is a general-purpose programming language in the Scheme family,
@@ -902,10 +1057,7 @@ (define-public racket
 
 The main Racket distribution comes with many bundled packages, including the
 DrRacket IDE, libraries for GUI and web programming, and implementations of
-languages such as Typed Racket, R5RS and R6RS Scheme, Algol 60, and Datalog.")
-    ;; https://download.racket-lang.org/license.html
-    ;; The LGPL components are only used by Racket BC.
-    (license (list license:asl2.0 license:expat))))
+languages such as Typed Racket, R5RS and R6RS Scheme, Algol 60, and Datalog.")))
 
 (define configure-layer.rkt
   (scheme-file
@@ -918,41 +1070,53 @@ (define configure-layer.rkt
               racket/port
               racket/list
               racket/pretty)
-     (define config-file-pth
-       "etc/racket/config.rktd")
      (define (build-path-string . args)
        (path->string (apply build-path args)))
      (define rx:racket
        ;; Guile's reader doesn't support #rx"racket"
        (regexp "racket"))
+     (define tethered? #f)
+     (define parent #f)
      (define extra-foreign-lib-search-dirs '())
-     (define-values [parent-layer prefix]
+     (define-values [vm-dir prefix]
        (command-line
         #:once-each
+        [("--tethered") "create a tethered layer"
+         (set! tethered? #t)]
+        [("--parent") dir "path of parent layer, if any"
+         (set! parent dir)]
         [("--extra-foreign-lib-search-dirs") dir-list
          "foreign library directories, as a list of strings in `read` syntax"
          (set! extra-foreign-lib-search-dirs
                (call-with-input-string dir-list read))]
-        #:args (parent-layer prefix)
-        (values parent-layer prefix)))
+        #:args (vm-dir prefix)
+        (values vm-dir prefix)))
      (let* ([config
              (for/fold
-              ([config (file->value (build-path parent-layer
-                                                config-file-pth))])
-              ([spec (in-list
-                      '((lib-dir lib-search-dirs "lib/racket")
-                        (share-dir share-search-dirs "share/racket")
-                        (links-file
-                         links-search-files
-                         "share/racket/links.rktd")
-                        (pkgs-dir pkgs-search-dirs "share/racket/pkgs")
-                        (bin-dir bin-search-dirs "bin")
-                        (man-dir man-search-dirs "share/man")
-                        (doc-dir doc-search-dirs "share/doc/racket")
-                        (include-dir
-                         include-search-dirs
-                         "include/racket")))])
-              (match-define (list main-key search-key pth) spec)
+              ([config (file->value
+                        (if parent
+                            (build-path parent "etc/racket/config.rktd")
+                            (build-path vm-dir "etc/config.rktd")))])
+              ([spec
+                (in-list
+                 '((lib-dir lib-search-dirs "lib/racket" "lib")
+                   (share-dir share-search-dirs "share/racket" "share")
+                   (links-file links-search-files
+                               "lib/racket/links.rktd"
+                               "share/links.rktd")
+                   (pkgs-dir pkgs-search-dirs "lib/racket/pkgs" "share/pkgs")
+                   ;; Partial workaround for:
+                   ;; https://github.com/racket/racket/issues/4133
+                   #;(bin-dir bin-search-dirs "bin" "bin")
+                   (bin-dir bin-search-dirs
+                            "lib/racket/bogus-untethered-bin"
+                            "bin")
+                   (man-dir man-search-dirs "share/man" "share/man")
+                   (doc-dir doc-search-dirs "share/doc/racket" "doc")
+                   (include-dir include-search-dirs
+                                "include/racket"
+                                "include")))])
+              (match-define (list main-key search-key pth vm-pth) spec)
               (hash-set*
                config
                main-key
@@ -961,7 +1125,10 @@ (define-values [parent-layer prefix]
                (list* #f
                       (hash-ref config
                                 main-key
-                                (build-path-string parent-layer pth))
+                                (lambda ()
+                                  (if parent
+                                      (build-path-string parent pth)
+                                      (build-path-string vm-dir vm-pth))))
                       (filter values (hash-ref config search-key null)))))]
             [config
              (hash-update config
@@ -995,15 +1162,21 @@ (define-values [rkt old-foreign-dirs]
                                          ;; workaround Guile reader/printer:
                                          ['|3m| "-bc"]
                                          [_ ""])))]
-            [bin-dir
-             (hash-ref config 'bin-dir)]
             [config
-             (hash-set* config
-                        'config-tethered-apps-dir (hash-ref config 'apps-dir)
-                        'config-tethered-console-bin-dir bin-dir
-                        'config-tethered-gui-bin-dir bin-dir)]
-            [new-config-pth
-             (build-path prefix config-file-pth)])
+             (cond
+              [tethered?
+               ;; Partial workaround for:
+               ;; https://github.com/racket/racket/issues/4133
+               #;(define bin-dir (hash-ref config 'bin-dir))
+               (define bin-dir (build-path-string prefix "bin"))
+               (hash-set* config
+                          'config-tethered-apps-dir (hash-ref config 'apps-dir)
+                          'config-tethered-console-bin-dir bin-dir
+                          'config-tethered-gui-bin-dir bin-dir)]
+              [else
+               config])])
+       (define new-config-pth
+         (build-path prefix "etc/racket/config.rktd"))
        (make-parent-directory* new-config-pth)
        (call-with-output-file*
         new-config-pth
-- 
2.32.0





  parent reply	other threads:[~2022-02-27  2:39 UTC|newest]

Thread overview: 214+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-02-08 15:13 [bug#53878] [RFC PATCH 0/9] Update Racket to 8.4. Adjust Chez Scheme packages Philip McGrath
2022-02-08 15:18 ` [bug#53878] [RFC PATCH 1/9] gnu: chez-scheme: Move to (gnu packages chez-and-racket-bootstrap) Philip McGrath
2022-02-08 15:18   ` [bug#53878] [RFC PATCH 2/9] gnu: chez-scheme: Use "lib/chez-scheme" for search path Philip McGrath
2022-02-08 15:18   ` [bug#53878] [RFC PATCH 3/9] gnu: chez-scheme: Use shared zlib and lz4 Philip McGrath
2022-02-08 15:18   ` [bug#53878] [RFC PATCH 4/9] gnu: chez-and-racket-bootstrap: Add utilities for Chez machine types Philip McGrath
2022-02-08 15:18   ` [bug#53878] [RFC PATCH 5/9] gnu: Add stex Philip McGrath
2022-02-08 15:18   ` [bug#53878] [RFC PATCH 6/9] gnu: Add chez-nanopass Philip McGrath
2022-02-08 15:18   ` [bug#53878] [RFC PATCH 7/9] gnu: chez-scheme: Explicitly package bootstrap bootfiles Philip McGrath
2022-02-08 15:18   ` [bug#53878] [RFC PATCH 8/9] gnu: Add chez-scheme-racket-variant Philip McGrath
2022-02-09 13:42     ` Liliana Marie Prikler
2022-02-10  1:30       ` Philip McGrath
2022-02-10  7:08         ` Liliana Marie Prikler
2022-02-13 21:51           ` [bug#53878] [PATCH 00/11] Update Racket to 8.4. Adjust Chez Scheme packages Philip McGrath
2022-02-13 21:51             ` [bug#53878] [PATCH 01/11] gnu: chez-scheme: Move to (gnu packages chez-and-racket-bootstrap) Philip McGrath
2022-02-13 21:51             ` [bug#53878] [PATCH 02/11] gnu: chez-scheme: Use "lib/chez-scheme" for search path Philip McGrath
2022-02-13 21:51             ` [bug#53878] [PATCH 03/11] gnu: chez-scheme: Use shared zlib and lz4 Philip McGrath
2022-02-13 21:51             ` [bug#53878] [PATCH 04/11] gnu: chez-and-racket-bootstrap: Add utilities for Chez machine types Philip McGrath
2022-02-14 14:34               ` Liliana Marie Prikler
2022-02-16 22:54                 ` Philip McGrath
2022-02-17  7:24                   ` Liliana Marie Prikler
2022-02-17  7:37                     ` Philip McGrath
2022-02-13 21:51             ` [bug#53878] [PATCH 05/11] gnu: Add stex Philip McGrath
2022-02-14 14:46               ` Liliana Marie Prikler
     [not found]                 ` <72f7937e-7476-a48c-56af-8f68834d4359@philipmcgrath.com>
2022-02-16 20:46                   ` Philip McGrath
2022-02-13 21:51             ` [bug#53878] [PATCH 06/11] gnu: Add chez-nanopass Philip McGrath
2022-02-13 21:51             ` [bug#53878] [PATCH 07/11] gnu: chez-scheme: Explicitly package bootstrap bootfiles Philip McGrath
2022-02-14 14:54               ` Liliana Marie Prikler
2022-02-16 21:13                 ` Philip McGrath
2022-02-17  7:10                   ` Liliana Marie Prikler
2022-02-17  8:06                     ` Philip McGrath
2022-02-17  8:19                       ` Liliana Marie Prikler
2022-02-17  8:40                         ` Philip McGrath
2022-02-17  8:46                           ` Liliana Marie Prikler
2022-02-17 20:50                             ` [bug#53878] [PATCH v2 00/15] Update Racket to 8.4. Adjust Chez Scheme packages Philip McGrath
2022-02-17 20:50                               ` [bug#53878] [PATCH v2 01/15] gnu: chez-scheme: Move to (gnu packages chez-and-racket-bootstrap) Philip McGrath
2022-02-18  6:57                                 ` Liliana Marie Prikler
2022-02-18 22:12                                   ` Philip McGrath
2022-02-17 20:50                               ` [bug#53878] [PATCH v2 02/15] gnu: chez-scheme: Use "lib/chez-scheme" for search path Philip McGrath
2022-02-17 20:50                               ` [bug#53878] [PATCH v2 03/15] gnu: chez-scheme: Use shared zlib and lz4 Philip McGrath
2022-02-17 20:50                               ` [bug#53878] [PATCH v2 04/15] gnu: chez-and-racket-bootstrap: Add utilities for Chez machine types Philip McGrath
2022-02-18  6:49                                 ` Liliana Marie Prikler
2022-02-18 22:32                                   ` Philip McGrath
2022-02-17 20:50                               ` [bug#53878] [PATCH v2 05/15] gnu: chez-scheme: Use new package style Philip McGrath
2022-02-18  7:15                                 ` Liliana Marie Prikler
2022-02-18 22:43                                   ` Philip McGrath
2022-02-17 20:50                               ` [bug#53878] [PATCH v2 06/15] gnu: Add stex Philip McGrath
2022-02-17 20:50                               ` [bug#53878] [PATCH v2 07/15] gnu: Add chez-nanopass Philip McGrath
2022-02-17 20:50                               ` [bug#53878] [PATCH v2 08/15] gnu: chez-scheme: Explicitly package bootstrap bootfiles Philip McGrath
2022-02-18  7:08                                 ` Liliana Marie Prikler
2022-02-18 23:20                                   ` Philip McGrath
2022-02-19 14:46                                     ` Liliana Marie Prikler
2022-02-17 20:50                               ` [bug#53878] [PATCH v2 09/15] gnu: Add racket-vm-cgc Philip McGrath
2022-02-18  7:21                                 ` Liliana Marie Prikler
2022-02-18 23:40                                   ` Philip McGrath
2022-02-17 20:50                               ` [bug#53878] [PATCH v2 10/15] gnu: Add racket-vm-bc Philip McGrath
2022-02-17 20:50                               ` [bug#53878] [PATCH v2 11/15] gnu: Add chez-scheme-for-racket Philip McGrath
2022-02-17 20:50                               ` [bug#53878] [PATCH v2 12/15] gnu: Add racket-vm-cs Philip McGrath
2022-02-17 20:50                               ` [bug#53878] [PATCH v2 13/15] gnu: chez-mit: Support chez-scheme-for-racket Philip McGrath
2022-02-17 20:50                               ` [bug#53878] [PATCH v2 14/15] gnu: chez-and-racket-bootstrap: Add 'chez-scheme-for-system' Philip McGrath
2022-02-17 20:50                               ` [bug#53878] [PATCH v2 15/15] gnu: racket: Update to 8.4 Philip McGrath
2022-02-18  7:38                                 ` Liliana Marie Prikler
2022-02-19  2:07                                   ` Philip McGrath
2022-02-13 21:51             ` [bug#53878] [PATCH 08/11] gnu: Add chez-scheme-for-racket Philip McGrath
2022-02-14 15:18               ` Liliana Marie Prikler
2022-02-16 19:58                 ` Philip McGrath
2022-02-13 21:51             ` [bug#53878] [PATCH 09/11] gnu: chez-mit: Support chez-scheme-for-racket Philip McGrath
2022-02-13 21:51             ` [bug#53878] [PATCH 10/11] gnu: chez-and-racket-bootstrap: Add 'chez-scheme-for-system' Philip McGrath
2022-02-13 21:51             ` [bug#53878] [PATCH 11/11] gnu: racket: Update to 8.4 Philip McGrath
2022-02-14 15:28               ` Liliana Marie Prikler
2022-02-16 20:16                 ` Philip McGrath
2022-02-08 15:18   ` [bug#53878] [RFC PATCH 9/9] gnu: racket: Update to 8.3.900 Philip McGrath
2022-02-19  6:42 ` [bug#53878] [PATCH v3 00/15] Update Racket to 8.4. Adjust Chez Scheme packages Philip McGrath
2022-02-19  6:42   ` [bug#53878] [PATCH v3 01/15] gnu: chez-scheme: Move to (gnu packages chez-and-racket-bootstrap) Philip McGrath
2022-02-19  6:42   ` [bug#53878] [PATCH v3 02/15] gnu: chez-scheme: Use "lib/chez-scheme" for search path Philip McGrath
2022-02-19  6:42   ` [bug#53878] [PATCH v3 03/15] gnu: chez-scheme: Use shared zlib and lz4 Philip McGrath
2022-02-19  6:42   ` [bug#53878] [PATCH v3 04/15] gnu: chez-and-racket-bootstrap: Add utilities for Chez machine types Philip McGrath
2022-02-19  6:42   ` [bug#53878] [PATCH v3 05/15] gnu: chez-scheme: Use new package style Philip McGrath
2022-02-19  6:42   ` [bug#53878] [PATCH v3 06/15] gnu: Add stex Philip McGrath
2022-02-19  6:42   ` [bug#53878] [PATCH v3 07/15] gnu: Add chez-nanopass Philip McGrath
2022-02-19  6:42   ` [bug#53878] [PATCH v3 08/15] gnu: chez-scheme: Explicitly package bootstrap bootfiles Philip McGrath
2022-02-19  6:42   ` [bug#53878] [PATCH v3 09/15] gnu: Add racket-vm-cgc Philip McGrath
2022-02-19 20:46     ` Liliana Marie Prikler
     [not found]       ` <2223439.vW7IG60toP@bastet>
2022-02-20  9:03         ` Liliana Marie Prikler
2022-02-20 14:09           ` Philip McGrath
2022-02-20 16:48             ` Liliana Marie Prikler
2022-02-20 17:52               ` Philip McGrath
2022-02-20 18:13                 ` Liliana Marie Prikler
2022-02-23 18:55                   ` Philip McGrath
2022-02-23 20:31                     ` Liliana Marie Prikler
2022-02-24 15:09                       ` zimoun
2022-02-19  6:42   ` [bug#53878] [PATCH v3 10/15] gnu: Add racket-vm-bc Philip McGrath
2022-02-19  6:42   ` [bug#53878] [PATCH v3 11/15] gnu: Add chez-scheme-for-racket Philip McGrath
2022-02-19  6:42   ` [bug#53878] [PATCH v3 12/15] gnu: Add racket-vm-cs Philip McGrath
2022-02-19  6:42   ` [bug#53878] [PATCH v3 13/15] gnu: chez-mit: Support chez-scheme-for-racket Philip McGrath
2022-02-19  6:42   ` [bug#53878] [PATCH v3 14/15] gnu: chez-and-racket-bootstrap: Add 'chez-scheme-for-system' Philip McGrath
2022-02-19 20:00     ` Liliana Marie Prikler
2022-02-19  6:42   ` [bug#53878] [PATCH v3 15/15] gnu: racket: Update to 8.4 Philip McGrath
2022-02-19 22:34 ` [bug#53878] Fwd: Re: [PATCH v3 14/15] gnu: chez-and-racket-bootstrap: Add 'chez-scheme-for-system' Philip McGrath
2022-02-19 22:35 ` [bug#53878] Fwd: Re: [PATCH v3 09/15] gnu: Add racket-vm-cgc Philip McGrath
2022-02-19 23:24   ` Philip McGrath
2022-02-20  6:05 ` [bug#53878] [PATCH v4 00/15] Update Racket to 8.4. Adjust Chez Scheme packages Philip McGrath
2022-02-20  6:05   ` [bug#53878] [PATCH v4 01/15] gnu: chez-scheme: Move to (gnu packages chez-and-racket-bootstrap) Philip McGrath
2022-02-20  6:05   ` [bug#53878] [PATCH v4 02/15] gnu: chez-scheme: Use "lib/chez-scheme" for search path Philip McGrath
2022-02-20  6:05   ` [bug#53878] [PATCH v4 03/15] gnu: chez-scheme: Use shared zlib and lz4 Philip McGrath
2022-02-20  6:05   ` [bug#53878] [PATCH v4 04/15] gnu: chez-and-racket-bootstrap: Add utilities for Chez machine types Philip McGrath
2022-02-20  6:06   ` [bug#53878] [PATCH v4 05/15] gnu: chez-scheme: Use new package style Philip McGrath
2022-02-20  6:06   ` [bug#53878] [PATCH v4 06/15] gnu: Add stex Philip McGrath
2022-02-20  6:06   ` [bug#53878] [PATCH v4 07/15] gnu: Add chez-nanopass Philip McGrath
2022-02-20  6:06   ` [bug#53878] [PATCH v4 08/15] gnu: chez-scheme: Explicitly package bootstrap bootfiles Philip McGrath
2022-02-20  6:06   ` [bug#53878] [PATCH v4 09/15] gnu: Add racket-vm-cgc Philip McGrath
2022-02-20  6:06   ` [bug#53878] [PATCH v4 10/15] gnu: Add racket-vm-bc Philip McGrath
2022-02-20  6:06   ` [bug#53878] [PATCH v4 11/15] gnu: Add chez-scheme-for-racket Philip McGrath
2022-02-20  6:06   ` [bug#53878] [PATCH v4 12/15] gnu: Add racket-vm-cs Philip McGrath
2022-02-20  6:06   ` [bug#53878] [PATCH v4 13/15] gnu: chez-mit: Support chez-scheme-for-racket Philip McGrath
2022-02-20  6:06   ` [bug#53878] [PATCH v4 14/15] gnu: chez-and-racket-bootstrap: Add 'chez-scheme-for-system' Philip McGrath
2022-02-20  6:06   ` [bug#53878] [PATCH v4 15/15] gnu: racket: Update to 8.4 Philip McGrath
2022-02-20 10:16     ` Liliana Marie Prikler
2022-02-20 14:09       ` Philip McGrath
2022-02-26 13:02   ` [bug#53878] [PATCH v5 00/22] Update Racket to 8.4. Adjust Chez Scheme packages Philip McGrath
2022-02-26 13:02     ` [bug#53878] [PATCH v5 01/22] gnu: Use license prefix in (gnu packages racket) Philip McGrath
2022-02-26 13:02     ` [bug#53878] [PATCH v5 02/22] gnu: racket: Update to 8.4 Philip McGrath
2022-02-26 13:36       ` Liliana Marie Prikler
2022-02-26 13:02     ` [bug#53878] [PATCH v5 03/22] gnu: racket: Use Git origins for Racket packages Philip McGrath
2022-02-26 13:47       ` Liliana Marie Prikler
2022-02-26 14:20         ` Philip McGrath
2022-02-26 14:26           ` Liliana Marie Prikler
2022-02-26 17:23             ` Philip McGrath
2022-02-26 18:30               ` Liliana Marie Prikler
2022-02-26 19:55                 ` Philip McGrath
2022-02-26 21:09                   ` Liliana Marie Prikler
2022-02-26 13:02     ` [bug#53878] [PATCH v5 04/22] gnu: racket-minimal: Use new package style Philip McGrath
2022-02-26 14:14       ` Liliana Marie Prikler
2022-02-26 14:22         ` Philip McGrath
2022-06-13  7:35       ` Maxime Devos
2022-02-26 13:02     ` [bug#53878] [PATCH v5 05/22] gnu: racket-minimal: Don't configure non-existant catalogs Philip McGrath
2022-02-26 13:02     ` [bug#53878] [PATCH v5 06/22] gnu: racket-minimal: Change inheritance to follow bootstrapping Philip McGrath
2022-02-26 14:19       ` Liliana Marie Prikler
2022-02-26 15:16         ` Philip McGrath
2022-02-26 15:19           ` Liliana Marie Prikler
2022-02-26 13:02     ` [bug#53878] [PATCH v5 07/22] gnu: racket-minimal: Add "debug" output Philip McGrath
2022-02-26 13:02     ` [bug#53878] [PATCH v5 08/22] gnu: make-installation-layer.rkt: Adjust indentation Philip McGrath
2022-02-26 13:02     ` [bug#53878] [PATCH v5 09/22] gnu: racket-minimal: Separate from the Racket VM Philip McGrath
2022-02-26 13:02     ` [bug#53878] [PATCH v5 10/22] gnu: racket: Move Chez bootfiles to (gnu packages chez) Philip McGrath
2022-02-26 14:31       ` Liliana Marie Prikler
2022-02-26 13:02     ` [bug#53878] [PATCH v5 11/22] gnu: chez: Add utilities for Chez machine types Philip McGrath
2022-02-26 13:02     ` [bug#53878] [PATCH v5 12/22] gnu: racket: Add 'racket-vm-for-system' Philip McGrath
2022-02-26 13:02     ` [bug#53878] [PATCH v5 13/22] gnu: chez-scheme: Use "lib/chez-scheme" for search path Philip McGrath
2022-02-26 14:34       ` Liliana Marie Prikler
2022-02-26 13:02     ` [bug#53878] [PATCH v5 14/22] gnu: chez-scheme: Use shared zlib and lz4 Philip McGrath
2022-02-26 13:02     ` [bug#53878] [PATCH v5 15/22] gnu: chez-scheme: Use new package style Philip McGrath
2022-02-26 13:02     ` [bug#53878] [PATCH v5 16/22] gnu: Add stex Philip McGrath
2022-02-26 13:02     ` [bug#53878] [PATCH v5 17/22] gnu: Add chez-nanopass Philip McGrath
2022-02-26 13:02     ` [bug#53878] [PATCH v5 18/22] gnu: chez-scheme: Explicitly package bootstrap bootfiles Philip McGrath
2022-02-26 13:02     ` [bug#53878] [PATCH v5 19/22] gnu: chez-mit: Support chez-scheme-for-racket Philip McGrath
2022-02-26 13:02     ` [bug#53878] [PATCH v5 20/22] gnu: Add chez-scheme-for-racket Philip McGrath
2022-02-26 13:02     ` [bug#53878] [PATCH v5 21/22] gnu: chez: Add 'chez-scheme-for-system' Philip McGrath
2022-02-26 13:02     ` [bug#53878] [PATCH v5 22/22] gnu: racket-vm-cs: Build with "--enable-scheme" Philip McGrath
2022-02-26 15:08     ` [bug#53878] [PATCH v5 00/22] Update Racket to 8.4. Adjust Chez Scheme packages Liliana Marie Prikler
2022-02-26 15:36       ` Philip McGrath
2022-02-26 16:14         ` Liliana Marie Prikler
2022-02-26 17:31           ` Philip McGrath
2022-02-27  2:34   ` [bug#53878] [PATCH v6 00/24] " Philip McGrath
2022-02-27  2:34     ` [bug#53878] [PATCH v6 01/24] gnu: Use license prefix in (gnu packages racket) Philip McGrath
2022-02-27  2:34     ` [bug#53878] [PATCH v6 02/24] gnu: racket: Update to 8.4 Philip McGrath
2022-02-27  2:34     ` [bug#53878] [PATCH v6 03/24] gnu: racket: Use Git origins for Racket packages Philip McGrath
2022-02-27  8:42       ` Liliana Marie Prikler
2022-02-27  2:34     ` [bug#53878] [PATCH v6 04/24] gnu: racket-minimal: Use new package style Philip McGrath
2022-02-27  2:34     ` [bug#53878] [PATCH v6 05/24] gnu: racket-minimal: Don't configure non-existant catalogs Philip McGrath
2022-02-27  2:34     ` [bug#53878] [PATCH v6 06/24] gnu: racket-minimal: Change inheritance to follow bootstrapping Philip McGrath
2022-02-27  2:34     ` [bug#53878] [PATCH v6 07/24] gnu: racket-minimal: Adjust indentation Philip McGrath
2022-02-27  2:34     ` [bug#53878] [PATCH v6 08/24] gnu: racket-minimal: Add "debug" output Philip McGrath
2022-02-27  2:34     ` [bug#53878] [PATCH v6 09/24] gnu: configure-layer.rkt: Adjust indentation Philip McGrath
2022-02-27  2:34     ` Philip McGrath [this message]
2022-02-27  2:34     ` [bug#53878] [PATCH v6 11/24] gnu: racket: Move Chez bootfiles to (gnu packages chez) Philip McGrath
2022-02-27  2:34     ` [bug#53878] [PATCH v6 12/24] gnu: chez: Add utilities for Chez machine types Philip McGrath
2022-02-27  2:34     ` [bug#53878] [PATCH v6 13/24] gnu: racket: Add 'racket-vm-for-system' Philip McGrath
2022-02-27  2:34     ` [bug#53878] [PATCH v6 14/24] gnu: chez-scheme: Use new style for Chez packages Philip McGrath
2022-02-27  2:34     ` [bug#53878] [PATCH v6 15/24] gnu: chez-scheme: Use "lib/chez-scheme" for search path Philip McGrath
2022-02-27  8:48       ` Liliana Marie Prikler
2022-02-27  2:34     ` [bug#53878] [PATCH v6 16/24] gnu: chez-scheme: Use shared zlib and lz4 Philip McGrath
2022-02-27  2:34     ` [bug#53878] [PATCH v6 17/24] gnu: chez-scheme: Use new package style Philip McGrath
2022-02-27  2:34     ` [bug#53878] [PATCH v6 18/24] gnu: Add stex Philip McGrath
2022-02-27  2:34     ` [bug#53878] [PATCH v6 19/24] gnu: Add chez-nanopass Philip McGrath
2022-02-27  2:34     ` [bug#53878] [PATCH v6 20/24] gnu: chez-scheme: Explicitly package bootstrap bootfiles Philip McGrath
2022-02-27  2:34     ` [bug#53878] [PATCH v6 21/24] gnu: chez-mit: Support chez-scheme-for-racket Philip McGrath
2022-02-27  2:34     ` [bug#53878] [PATCH v6 22/24] gnu: Add chez-scheme-for-racket Philip McGrath
2022-02-27  2:34     ` [bug#53878] [PATCH v6 23/24] gnu: chez: Add 'chez-scheme-for-system' Philip McGrath
2022-02-27  2:34     ` [bug#53878] [PATCH v6 24/24] gnu: racket-vm-cs: Build with "--enable-scheme" Philip McGrath
2022-02-27 21:28   ` [bug#53878] [PATCH v7 00/24] Update Racket to 8.4. Adjust Chez Scheme packages Philip McGrath
2022-02-27 21:28     ` [bug#53878] [PATCH v7 01/24] gnu: Use license prefix in (gnu packages racket) Philip McGrath
2022-02-27 21:28     ` [bug#53878] [PATCH v7 02/24] gnu: racket: Update to 8.4 Philip McGrath
2022-02-27 21:28     ` [bug#53878] [PATCH v7 03/24] gnu: racket: Use Git origins for Racket packages Philip McGrath
2022-02-27 21:29     ` [bug#53878] [PATCH v7 04/24] gnu: racket-minimal: Use new package style Philip McGrath
2022-02-27 21:29     ` [bug#53878] [PATCH v7 05/24] gnu: racket-minimal: Don't configure non-existant catalogs Philip McGrath
2022-02-27 21:29     ` [bug#53878] [PATCH v7 06/24] gnu: racket-minimal: Change inheritance to follow bootstrapping Philip McGrath
2022-02-27 21:29     ` [bug#53878] [PATCH v7 07/24] gnu: racket-minimal: Adjust indentation Philip McGrath
2022-02-27 21:29     ` [bug#53878] [PATCH v7 08/24] gnu: racket-minimal: Add "debug" output Philip McGrath
2022-02-27 21:29     ` [bug#53878] [PATCH v7 09/24] gnu: configure-layer.rkt: Adjust indentation Philip McGrath
2022-02-27 21:29     ` [bug#53878] [PATCH v7 10/24] gnu: racket-minimal: Separate from the Racket VM Philip McGrath
2022-02-27 21:29     ` [bug#53878] [PATCH v7 11/24] gnu: racket: Move Chez bootfiles to (gnu packages chez) Philip McGrath
2022-02-27 21:29     ` [bug#53878] [PATCH v7 12/24] gnu: chez: Add utilities for Chez machine types Philip McGrath
2022-02-27 21:29     ` [bug#53878] [PATCH v7 13/24] gnu: racket: Add 'racket-vm-for-system' Philip McGrath
2022-02-27 21:29     ` [bug#53878] [PATCH v7 14/24] gnu: chez-scheme: Use new style for Chez packages Philip McGrath
2022-02-27 21:29     ` [bug#53878] [PATCH v7 15/24] gnu: chez-scheme: Use "lib/chez-scheme" for search path Philip McGrath
2022-02-27 21:29     ` [bug#53878] [PATCH v7 16/24] gnu: chez-scheme: Use shared zlib and lz4 Philip McGrath
2022-02-27 21:29     ` [bug#53878] [PATCH v7 17/24] gnu: chez-scheme: Use new package style Philip McGrath
2022-02-27 21:29     ` [bug#53878] [PATCH v7 18/24] gnu: Add stex Philip McGrath
2022-02-27 21:29     ` [bug#53878] [PATCH v7 19/24] gnu: Add chez-nanopass Philip McGrath
2022-02-27 21:29     ` [bug#53878] [PATCH v7 20/24] gnu: chez-scheme: Explicitly package bootstrap bootfiles Philip McGrath
2022-02-27 21:29     ` [bug#53878] [PATCH v7 21/24] gnu: chez-mit: Support chez-scheme-for-racket Philip McGrath
2022-02-27 21:29     ` [bug#53878] [PATCH v7 22/24] gnu: Add chez-scheme-for-racket Philip McGrath
2022-02-27 21:29     ` [bug#53878] [PATCH v7 23/24] gnu: chez: Add 'chez-scheme-for-system' Philip McGrath
2022-02-27 21:29     ` [bug#53878] [PATCH v7 24/24] gnu: racket-vm-cs: Build with "--enable-scheme" Philip McGrath
2022-03-04 22:59     ` bug#53878: [PATCH v7 00/24] Update Racket to 8.4. Adjust Chez Scheme packages Liliana Marie Prikler

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220227023450.1877215-11-philip@philipmcgrath.com \
    --to=philip@philipmcgrath.com \
    --cc=53878@debbugs.gnu.org \
    --cc=attila@lendvai.name \
    --cc=liliana.prikler@gmail.com \
    --cc=liliana.prikler@ist.tugraz.at \
    --cc=ludo@gnu.org \
    --cc=malte.f.gerdes@gmail.com \
    --cc=maximedevos@telenet.be \
    --cc=raingloom@riseup.net \
    --cc=zimon.toutoune@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this external index

	https://git.savannah.gnu.org/cgit/guix.git

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.