From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from mp10.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by ms0.migadu.com with LMTPS id KA6BNOR2CmJtTgAAgWs5BA (envelope-from ) for ; Mon, 14 Feb 2022 16:36:04 +0100 Received: from aspmx1.migadu.com ([2001:41d0:2:bcc0::]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)) by mp10.migadu.com with LMTPS id aPZLLeR2CmKrOQAAG6o9tA (envelope-from ) for ; Mon, 14 Feb 2022 16:36:04 +0100 Received: from lists.gnu.org (lists.gnu.org [209.51.188.17]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by aspmx1.migadu.com (Postfix) with ESMTPS id C518943892 for ; Mon, 14 Feb 2022 16:35:41 +0100 (CET) Received: from localhost ([::1]:56044 helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1nJdO8-0000RU-Bf for larch@yhetil.org; Mon, 14 Feb 2022 10:35:40 -0500 Received: from eggs.gnu.org ([209.51.188.92]:54166) by lists.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_256_GCM_SHA384:256) (Exim 4.90_1) (envelope-from ) id 1nJcd4-0002Hc-DJ for guix-patches@gnu.org; Mon, 14 Feb 2022 09:47:02 -0500 Received: from debbugs.gnu.org ([209.51.188.43]:46526) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1nJcd4-0003LG-31 for guix-patches@gnu.org; Mon, 14 Feb 2022 09:47:02 -0500 Received: from Debian-debbugs by debbugs.gnu.org with local (Exim 4.84_2) (envelope-from ) id 1nJcd4-0001TR-1V for guix-patches@gnu.org; Mon, 14 Feb 2022 09:47:02 -0500 X-Loop: help-debbugs@gnu.org Subject: [bug#53878] [PATCH 05/11] gnu: Add stex. Resent-From: Liliana Marie Prikler Original-Sender: "Debbugs-submit" Resent-CC: guix-patches@gnu.org Resent-Date: Mon, 14 Feb 2022 14:47:01 +0000 Resent-Message-ID: Resent-Sender: help-debbugs@gnu.org X-GNU-PR-Message: followup 53878 X-GNU-PR-Package: guix-patches X-GNU-PR-Keywords: patch To: Philip McGrath , 53878@debbugs.gnu.org Received: via spool by 53878-submit@debbugs.gnu.org id=B53878.16448500215628 (code B ref 53878); Mon, 14 Feb 2022 14:47:01 +0000 Received: (at 53878) by debbugs.gnu.org; 14 Feb 2022 14:47:01 +0000 Received: from localhost ([127.0.0.1]:40423 helo=debbugs.gnu.org) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nJcd0-0001RO-Vs for submit@debbugs.gnu.org; Mon, 14 Feb 2022 09:47:01 -0500 Received: from mailrelay.tugraz.at ([129.27.2.202]:29588) by debbugs.gnu.org with esmtp (Exim 4.84_2) (envelope-from ) id 1nJccv-0001Kn-Hi for 53878@debbugs.gnu.org; Mon, 14 Feb 2022 09:46:57 -0500 Received: from lprikler-laptop.ist.intra (gw.ist.tugraz.at [129.27.202.101]) by mailrelay.tugraz.at (Postfix) with ESMTPSA id 4Jy6Vv6nlLz3x8h; Mon, 14 Feb 2022 15:46:47 +0100 (CET) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=tugraz.at; s=mailrelay; t=1644850008; bh=bwdTFHz057hXg8tkXgg648FFX2kCCbz/HhHJVsCwJ0w=; h=Subject:From:To:Date:In-Reply-To:References; b=P1WgGnSJGnQAoBmYWx2T53+oxHryuLmAUE/zNYGbq+gZrFl+VTPUG0hhXuu/gYDev /PH6ZDKUqqiVJVwaxHlDk+WPrPLhRIiDmFEFY1MtW91qkl0kHepGQoRiIN3AZMSY4V w3JHymyVU3OhcWFcUmOtszGs8xAuxdRkEFzhk5Rs= Message-ID: From: Liliana Marie Prikler Date: Mon, 14 Feb 2022 15:46:47 +0100 In-Reply-To: <20220213215127.218952-6-philip@philipmcgrath.com> References: <20220213215127.218952-1-philip@philipmcgrath.com> <20220213215127.218952-6-philip@philipmcgrath.com> Content-Type: text/plain; charset="UTF-8" User-Agent: Evolution 3.42.1 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit X-TUG-Backscatter-control: waObeELIUl4ypBWmcn/8wQ X-Scanned-By: MIMEDefang 2.74 on 129.27.10.116 X-BeenThere: debbugs-submit@debbugs.gnu.org X-Mailman-Version: 2.1.18 Precedence: list X-BeenThere: guix-patches@gnu.org List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: guix-patches-bounces+larch=yhetil.org@gnu.org Sender: "Guix-patches" X-Migadu-Flow: FLOW_IN X-Migadu-Country: US ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=yhetil.org; s=key1; t=1644852942; h=from:from:sender:sender:reply-to:subject:subject:date:date: message-id:message-id:to:to:cc:mime-version:mime-version: content-type:content-type: content-transfer-encoding:content-transfer-encoding:resent-cc: resent-from:resent-sender:resent-message-id:in-reply-to:in-reply-to: references:references:list-id:list-help:list-unsubscribe: list-subscribe:list-post:dkim-signature; bh=bwdTFHz057hXg8tkXgg648FFX2kCCbz/HhHJVsCwJ0w=; b=hQlnll4pp/aOd+wG3CKM07YQmYeWxyFoXmekfyQGplm7347umIss0dsg54pmDMsloeXqb9 DkuV9gvivkhegeba+ucQLlXJpYElzA21KLrbl9Y1x9NqiZq165zN+XCgtjBIXHGKLdU7+z dD9OgOWcTSj4XTHGHwYskkZVYk0Q03cNhFHFoCYAL8d8m2KWsHnNc7OsN31cBmz9PElfoP c4vYho/hgtYGsgzwmNMHE3weqxua6cnbzAEuNYoeSXsUv0n8VD8FOrXWoJid6xZ5YK8OPc Cu2blaJrAMgZRjeI3mjjZ8+XIV+nmXYlbIhRPSlD6NYMfRMrPHQK0TaZzJQx0g== ARC-Seal: i=1; s=key1; d=yhetil.org; t=1644852942; a=rsa-sha256; cv=none; b=Z1pHKbAvAbdzS75VxX69itbRS/yHCO5VYc7RygwLceY1XD73OTV+0rwlDV1j6h07T/k9NL QN2hVW4bRgKdvw6/rLUMPJuuC7qE3RY3wHaF8ks3o4lpwMife1stj528vKQfkSQQyThpkz DH4y83Z9sHG12c61hI9iqW0sHq2AY/rKuiQ655p2PDWxbLZ+e4Omd3ahC1niQ/r6gmCy37 2NbCCyVKC0MbPbxtSZT5cfSMyj33gu/A74OgIVxAH8p8X+jg/Cn7Kcka5iAvGc3FTdIJmR K9cQoB/TBrE6ec/lk0WQGnEX/RKdDi1aau6/mWaMzYLDAt1FuIgQPqxLIQ9i4w== ARC-Authentication-Results: i=1; aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=tugraz.at header.s=mailrelay header.b=P1WgGnSJ; dmarc=fail reason="SPF not aligned (relaxed)" header.from=tugraz.at (policy=none); spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" X-Migadu-Spam-Score: -2.23 Authentication-Results: aspmx1.migadu.com; dkim=fail ("headers rsa verify failed") header.d=tugraz.at header.s=mailrelay header.b=P1WgGnSJ; dmarc=fail reason="SPF not aligned (relaxed)" header.from=tugraz.at (policy=none); spf=pass (aspmx1.migadu.com: domain of "guix-patches-bounces+larch=yhetil.org@gnu.org" designates 209.51.188.17 as permitted sender) smtp.mailfrom="guix-patches-bounces+larch=yhetil.org@gnu.org" X-Migadu-Queue-Id: C518943892 X-Spam-Score: -2.23 X-Migadu-Scanner: scn1.migadu.com X-TUID: rdWJbQigJJkl Am Sonntag, dem 13.02.2022 um 16:51 -0500 schrieb Philip McGrath: > * gnu/packages/chez-and-racket-bootstrap.scm (stex-bootstrap): New > variable. > (stex): Change from origin to package inheriting from 'stex- > bootstrap'. > (chez-scheme)[native-inputs]: Add 'stex-bootstrap'. Remove > labels. Remove dependencies of stex-bootstrap. > [inputs]: Remove labels. > [arguments]: Adapt to use 'stex-bootstrap', 'search-input-file', and > G-expressions. > (nanopass): Make it public as a temporary workaround for Racket. > * gnu/packages/racket.scm > (racket-bootstrap-chez-bootfiles)[native-inputs]: Update accordingly. This is again a large number of changes in one go. When it comes to writing good patches, less is more, especially in terms of being understandable. > +(define (unpack-nanopass+stex) > +  ;; delayed resolution of `nanopass` > +  #~(begin > +      (copy-recursively #$nanopass > +                        "nanopass" > +                        #:keep-mtime? #t) > +      (mkdir-p "stex") > +      (with-output-to-file "stex/Mf-stex" > +        (lambda () > +          ;; otherwise, it will try to download submodules > +          (display "# to placate ../configure"))))) > [...] > -       (snippet > -        ;; Remove bundled libraries. > -        (with-imported-modules '((guix build utils)) > -          #~(begin > -              (use-modules (guix build utils)) > -              (for-each (lambda (dir) > -                          (when (directory-exists? dir) > -                            (delete-file-recursively dir))) > -                        '("stex" > -                          "nanopass" > -                          "lz4" > -                          "zlib"))))))) > [...] > +              (snippet unbundle-chez-submodules))) Why? >      (build-system gnu-build-system) >      (inputs > -     `(("libuuid" ,util-linux "lib") > -       ("zlib" ,zlib) > -       ("lz4" ,lz4) > -       ;; for expeditor: > -       ("ncurses" ,ncurses) > -       ;; for X11 clipboard support in expeditor: > -       ;; > https://github.com/cisco/ChezScheme/issues/9#issuecomment-222057232 > -       ("libx11" ,libx11))) > -    (native-inputs > -     `(("nanopass" ,nanopass) ; source only > -       ;; for docs > -       ("stex" ,stex) > -       ("xorg-rgb" ,xorg-rgb) > -       ("texlive" ,(texlive-updmap.cfg (list texlive-dvips-l3backend > -                                             texlive-epsf > -                                             texlive-fonts-ec > -                                             texlive-oberdiek))) > -       ("ghostscript" ,ghostscript) > -       ("netpbm" ,netpbm))) > +     (list > +      `(,util-linux "lib") ;<-- libuuid > +      zlib > +      lz4 > +      ncurses ;<-- for expeditor > +      ;; for X11 clipboard support in expeditor: > +      ;; > https://github.com/cisco/ChezScheme/issues/9#issuecomment-222057232 > +      libx11)) > +    (native-inputs (list stex-bootstrap)) This is a lot of noise. Either first clean up the inputs and then add new ones or the other way round, but doing both in the same commit (especially with other stuff as well) is too much imo. >      (native-search-paths >       (list (search-path-specification >              (variable "CHEZSCHEMELIBDIRS") >              (files (list (string-append "lib/chez-scheme")))))) >      (outputs '("out" "doc")) >      (arguments > -     `(#:modules > -       ((guix build gnu-build-system) > +     (list > +      #:modules > +      '((guix build gnu-build-system) >          (guix build utils) >          (ice-9 ftw) >          (ice-9 match)) > -       #:test-target "test" > -       #:configure-flags > -       '("--threads") ;; TODO when we fix armhf, it doesn't support > --threads > -       #:phases > -       (modify-phases %standard-phases > -         ;; put these where configure expects them to be > -         (add-after 'unpack 'unpack-nanopass+stex > -           (lambda* (#:key native-inputs inputs #:allow-other-keys) > -             (for-each (lambda (dep) > -                         (define src > -                           (assoc-ref (or native-inputs inputs) > dep)) > -                         (copy-recursively src dep > -                                           #:keep-mtime? #t)) > -                       '("nanopass" "stex")))) > -         ;; NOTE: the custom Chez 'configure' script doesn't allow > -         ;; unrecognized flags, such as those automatically added > -         ;; by `gnu-build-system`. > -         (replace 'configure > -           (lambda* (#:key inputs outputs > -                           (configure-flags '()) > -                           #:allow-other-keys) > -             (let* ((zlib-static (assoc-ref inputs "zlib:static")) > -                    (lz4-static (assoc-ref inputs "lz4:static")) > -                    (out (assoc-ref outputs "out")) > -                    ;; add flags which are always required: > -                    (flags (cons* (string-append "--installprefix=" > out) > +      #:test-target "test" > +      ;; TODO when we fix armhf, it may not support --threads > +      #:configure-flags #~'("--threads") > +      #:phases > +      #~(modify-phases %standard-phases > +          (add-after 'unpack 'unpack-nanopass+stex > +            (lambda args > +              #$(unpack-nanopass+stex))) > +          ;; NOTE: the custom Chez 'configure' script doesn't allow > +          ;; unrecognized flags, such as those automatically added > +          ;; by `gnu-build-system`. > +          (replace 'configure > +            (lambda* (#:key inputs (configure-flags '()) #:allow- > other-keys) > +              ;; add flags which are always required: > +              (let ((flags (cons* (string-append "--installprefix=" > #$output) >                                    "ZLIB=-lz" >                                    "LZ4=-llz4" >                                    "--libkernel" > @@ -305,90 +276,59 @@ (define src >                                    ;; and letting Chez try causes an > error >                                    "--nogzip-man-pages" >                                    configure-flags))) > -               (format #t "configure flags: ~s~%" flags) > -               ;; Some makefiles (for tests) don't seem to propagate > CC > -               ;; properly, so we take it out of their hands: > -               (setenv "CC" ,(cc-for-target)) > -               (setenv "HOME" "/tmp") > -               (apply invoke > -                      "./configure" > -                      flags)))) > -         ;; The binary file name is called "scheme" as is the one > from MIT/GNU > -         ;; Scheme.  We add a symlink to use in case both are > installed. > -         (add-after 'install 'install-symlink > -           (lambda* (#:key outputs #:allow-other-keys) > -             (let* ((out (assoc-ref outputs "out")) > -                    (bin (string-append out "/bin")) > -                    (lib (string-append out "/lib")) > -                    (name "chez-scheme")) > -               (symlink (string-append bin "/scheme") > -                        (string-append bin "/" name)) > -               (map (lambda (file) > -                      (symlink file (string-append (dirname file) > -                                                   "/" name > ".boot"))) > -                    (find-files lib "scheme.boot"))))) > -         ;; Building explicitly lets us avoid using substitute* > -         ;; to re-write makefiles. > -         (add-after 'install-symlink 'prepare-stex > -           (lambda* (#:key native-inputs inputs outputs #:allow- > other-keys) > -             (let* ((stex+version > -                     (strip-store-file-name > -                      (assoc-ref (or native-inputs inputs) "stex"))) > -                    ;; Eventually we want to install stex as a real > -                    ;; package so it's reusable. For now: > -                    (stex-output "/tmp") > -                    (doc-dir (string-append stex-output > -                                            "/share/doc/" > -                                            stex+version))) > -               (with-directory-excursion "stex" > -                 (invoke "make" > -                         "install" > -                         (string-append "LIB=" > -                                        stex-output > -                                        "/lib/" > -                                        stex+version) > -                         (string-append "Scheme=" > -                                        (assoc-ref outputs "out") > -                                        "/bin/scheme")) > -                 (for-each (lambda (pth) > -                             (install-file pth doc-dir)) > -                           '("ReadMe" ; includes the license > -                             "doc/stex.html" > -                             "doc/stex.css" > -                             "doc/stex.pdf")))))) > -         ;; Building the documentation requires stex and a running > scheme. > -         ;; FIXME: this is probably wrong for cross-compilation > -         (add-after 'prepare-stex 'install-doc > -           (lambda* (#:key native-inputs inputs outputs #:allow- > other-keys) > -             (let* ((chez+version (strip-store-file-name > -                                   (assoc-ref outputs "out"))) > -                    (stex+version > -                     (strip-store-file-name > -                      (assoc-ref (or native-inputs inputs) "stex"))) > -                    (scheme (string-append (assoc-ref outputs "out") > -                                           "/bin/scheme")) > -                    ;; see note on stex-output in phase build-stex, > above: > -                    (stexlib (string-append "/tmp" > -                                            "/lib/" > -                                            stex+version)) > -                    (doc-dir (string-append (assoc-ref outputs > "doc") > -                                            "/share/doc/" > -                                            chez+version))) > -               (define* (stex-make #:optional (suffix "")) > -                 (invoke "make" > -                         "install" > -                         (string-append "Scheme=" scheme) > -                         (string-append "STEXLIB=" stexlib) > -                         (string-append "installdir=" doc-dir > suffix))) > -               (with-directory-excursion "csug" > -                 (stex-make "/csug")) > -               (with-directory-excursion "release_notes" > -                 (stex-make "/release_notes")) > -               (with-directory-excursion doc-dir > -                 (symlink "release_notes/release_notes.pdf" > -                          "release_notes.pdf") > -                 (symlink "csug/csug9_5.pdf" > -                          "csug.pdf")))))))) > +                (format #t "configure flags: ~s~%" flags) > +                ;; Some makefiles (for tests) don't seem to > propagate CC > +                ;; properly, so we take it out of their hands: > +                (setenv "CC" #$(cc-for-target)) > +                (setenv "HOME" "/tmp") > +                (apply invoke "./configure" flags)))) > +          ;; The binary file name is called "scheme" as is the one > from > +          ;; MIT/GNU Scheme.  We add a symlink to use in case both > are > +          ;; installed. > +          (add-after 'install 'install-symlink > +            (lambda* (#:key outputs #:allow-other-keys) > +              (let* ((scheme (search-input-file outputs > "/bin/scheme")) > +                     (bin-dir (dirname scheme))) > +                (symlink scheme > +                         (string-append bin-dir "/chez-scheme")) > +                (match (find-files (string-append bin-dir "/../lib") > +                                   "scheme.boot") > +                  ((scheme.boot) > +                   (symlink scheme.boot > +                            (string-append (dirname scheme.boot) > +                                           "/chez- > scheme.boot"))))))) > +          ;; Building the documentation requires stex and a running > scheme. > +          ;; FIXME: this is probably wrong for cross-compilation > +          (add-after 'install-symlink 'install-doc > +            (lambda* (#:key native-inputs inputs outputs > +                            #:allow-other-keys) > +              (match (assoc-ref outputs "doc") > +                (#f > +                 (format #t "not installing docs~%")) > +                (doc-prefix > +                 (let* ((chez+version (strip-store-file-name > #$output)) > +                        (scheme (search-input-file outputs > "/bin/scheme")) > +                        (stexlib (search-input-directory > +                                  (or native-inputs inputs) > +                                  "/lib/stex")) > +                        (doc-dir (string-append doc-prefix > +                                                "/share/doc/" > +                                                chez+version))) > +                   (define* (stex-make #:optional (suffix "")) > +                     (invoke "make" "install" > +                             (string-append "Scheme=" scheme) > +                             (string-append "STEXLIB=" stexlib) > +                             (string-append "installdir=" > +                                            doc-dir suffix))) > +                   (with-directory-excursion "csug" > +                     (stex-make "/csug")) > +                   (with-directory-excursion "release_notes" > +                     (stex-make "/release_notes")) > +                   (with-directory-excursion doc-dir > +                     (symlink "release_notes/release_notes.pdf" > +                              "release_notes.pdf") > +                     (symlink "csug/csug9_5.pdf" > +                              "csug.pdf")))))))))) Again mixing cosmetic changes with functional ones. >      ;; Chez Scheme does not have a  MIPS backend. >      ;; FIXME: Debian backports patches to get armhf working. >      ;; We should too. It is the Chez machine type arm32le > @@ -412,3 +352,145 @@ (define* (stex-make #:optional (suffix "")) >  generates native code for each target processor, with support for > x86, x86_64, >  and 32-bit PowerPC architectures.") >      (license license:asl2.0))) > + > +;; > +;; Chez's bootstrap dependencies: > +;; > + > +(define-public stex-bootstrap > +  ;; This commit includes a fix which we would otherwise want to use > as > +  ;; patch.  Let's revert to tagged releases as soon as one becomes > available. > +  (let ((commit "54051494434a197772bf6ca5b4e6cf6be55f39a5") > +        (revision "1")) > +    (hidden-package > +     (package > +       (name "stex") > +       ;; ^ Debian calls this "stex", not "chez-stex". It is a set > of > +       ;; command-line tools, and there isn't a Scheme API, let > alone a > +       ;; Chez-specific one, except perhaps that the Scheme examples > are > +       ;; assumed to be Chez-compatible. > +       (version (git-version "1.2.2" revision commit)) > +       (source > +        (origin > +          (method git-fetch) > +          (uri (git-reference > +                (url "https://github.com/dybvig/stex") > +                (commit commit))) > +          (sha256 > +           (base32 > "01jnvw8qw33gnpzwrakwhsr05h6b609lm180jnspcrb7lds2p23d")) > +          (file-name (git-file-name name version)) > +          (snippet > +           #~(for-each delete-file > +                       '("sbin/install" "doc/stex.pdf" > "doc/stex.html"))))) > +       (outputs '("out")) > +       (build-system copy-build-system) > +       ;; N.B. Upstream does not seem to support cross-compilation, > +       ;; though it would probably be easy to add. > +       (propagated-inputs > +        (list xorg-rgb > +              (texlive-updmap.cfg > +               (list texlive-dvips-l3backend > +                     texlive-hyperref > +                     texlive-bibtex > +                     texlive-epsf > +                     texlive-fonts-ec > +                     texlive-oberdiek)) > +              ghostscript > +              netpbm)) > +       ;; Debian uses a versionless path for STEXLIB, > +       ;; which is much more convienient. > +       (arguments > +        (list > +         #:install-plan #~`(("inputs" "lib/stex/") > +                            ("gifs" "lib/stex/") > +                            ("math" "lib/stex/") > +                            ("src" "lib/stex/") ;; can run without > compiling > +                            ("Mf-stex" "lib/stex/") > +                            ("Makefile.template" "lib/stex/")) > +         #:phases > +         #~(modify-phases %standard-phases > +             (add-before 'install 'patch-sources > +               (lambda* (#:key native-inputs inputs outputs #:allow- > other-keys) > +                 (define scheme > +                   (false-if-exception > +                    (search-input-file inputs "/bin/scheme"))) > +                 (when scheme > +                   (setenv "Scheme" scheme)) > +                 (substitute* '("Makefile.template" > +                                "doc/Makefile") > +                   (("STEXLIB=[^\n]*") > +                    (string-append "STEXLIB=" #$output "/lib/stex")) > +                   (("Scheme=[^\n]*") > +                    (string-append "Scheme=" (or scheme "scheme")))) > +                 (substitute* '("Mf-stex" > +                                "math/Makefile") > +                   (("/bin/rm") > +                    "rm")) > +                 (substitute* "Mf-stex" > +                   (("SHELL=bash") > +                    ;; avoid Solaris workaround > +                    "#SHELL=bash")))) > +             (add-after 'install 'maybe-compile > +               (lambda* (#:key native-inputs inputs outputs #:allow- > other-keys) > +                 (cond > +                  ((getenv "Scheme") > +                   => (lambda (scheme) > +                        (define makefile > +                          (string-append (getcwd) "/Makefile")) > +                        (define machine > +                          #$(nix-system->chez-machine > +                             (or (%current-target-system) > +                                 (%current-system)))) > +                        (with-directory-excursion > +                            (search-input-directory outputs > "/lib/stex") > +                          (invoke "make" > +                                  "-f" makefile > +                                  (string-append "Scheme=" scheme)) > +                          (for-each delete-file > +                                    (find-files machine "\\."))))) > +                  (else > +                   (format #t "not compiling~%"))))) > +             (add-after 'maybe-compile 'maybe-make-docs > +               (lambda* (#:key native-inputs inputs outputs #:allow- > other-keys) > +                 (cond > +                  ((assoc-ref outputs "doc") > +                   => (lambda (doc-prefix) > +                        (define doc-dir > +                          (string-append doc-prefix > "/share/doc/stex")) > +                        ;; the Makefile is referenced in the > documentation > +                        (copy-recursively "doc" doc-dir) > +                        (install-file "ReadMe" doc-dir) > +                        (with-directory-excursion "doc" > +                          (invoke "make") > +                          (install-file "stex.html" doc-dir) > +                          (install-file "stex.pdf" doc-dir)))) > +                  (else > +                   (format #t "not making docs~%")))))))) > +       (home-page "https://github.com/dybvig/stex") > +       (synopsis "LaTeX with embeded Scheme code and HTML > generation") > +       (description "The @code{stex} package extends LaTeX with a > handful of > +commands for including Scheme code (or pretty much any other kind of > code, as > +long as you don't plan to use the Scheme-specific transcript > support) in a > +document.  It provides the programs @code{scheme-prep} and > @code{html-prep} to > +convert @code{stex} documents to LaTeX and HTML, respectively, plus > makefile > +templates, style files, and other resources.  The @code{stex} system > is used > +to typeset @cite{The Scheme Programming Language} and the @cite{Chez > Scheme > +User's Guix}, among other documents.") > +       (license license:expat))))) > + > +(define-public stex > +  (package/inherit stex-bootstrap > +    (inputs (modify-inputs (package-inputs stex-bootstrap) > +              (prepend chez-scheme))) > +    (outputs '("out" "doc")) > +    (properties '()))) > + > +(define-public nanopass > +  (let ((version "1.9.2")) > +    (origin > +      (method git-fetch) > +      (uri (git-reference > +            (url > "https://github.com/nanopass/nanopass-framework-scheme") > +            (commit (string-append "v" version)))) > +      (sha256 (base32 > "16vjsik9rrzbabbhbxbaha51ppi3f9n8rk59pc6zdyffs0vziy4i")) > +      (file-name (git-file-name "nanopass" version))))) > diff --git a/gnu/packages/racket.scm b/gnu/packages/racket.scm > index 865fdff70f..d8338bcd6f 100644 > --- a/gnu/packages/racket.scm > +++ b/gnu/packages/racket.scm > @@ -333,9 +333,8 @@ (define-public racket-bootstrap-chez-bootfiles >        `(("racket" ,(if (%current-target-system) >                         racket-minimal >                         racket-minimal-bc-3m)) > -        ("stex" ,@(assoc-ref (package-native-inputs chez-scheme) > "stex")) > -        ("nanopass" ,@(assoc-ref (package-native-inputs chez-scheme) > -                                 "nanopass")))) > +        ("stex" ,(package-source stex)) > +        ("nanopass" ,nanopass))) >       (arguments >        `(#:phases >          (modify-phases %standard-phases Not quite sure on these hunks. Could be fine, could not be fine. Disentangling stex from chez and publicly exporting it is probably a good idea, though. Cheers