mirror of
https://git.in.rschanz.org/ryan77627/guix.git
synced 2024-12-24 05:18:07 -05:00
gnu: chez-scheme: Update to 10.0.0.
* gnu/packages/patches/chez-scheme-bin-sh.patch: Refresh patch. * gnu/packages/patches/chez-scheme-backport-configure.patch: New file. * gnu/local.mk (dist_patch_DATA): Add it. * gnu/packages/chez.scm (chez-scheme): Update to 10.0.0. Inherit from 'chez-scheme-for-racket'. [source]<patches>: Use "chez-scheme-backport-configure.patch". <snippet>: Also unbundle Zuo. [native-inputs, native-search-paths, outputs, arguments] [supported-systems]: Inherit from 'chez-scheme-for-racket'. [inputs]: Likewise, replacing the bootfile package and adding libx11. [description]: Update based on the User's Guide, release notes, man page, and README file. (chez-scheme-bootstrap-bootfiles)[supported-systems]: All systems are now supported. (chez-scheme-for-system): Return 'chez-scheme', since it now supports all systems. Change-Id: I287ff66f385f20e69c1411abcc94f19dd45870c5 Signed-off-by: Ludovic Courtès <ludo@gnu.org>
This commit is contained in:
parent
522cbed9b2
commit
abd2ed839d
4 changed files with 512 additions and 193 deletions
|
@ -1022,6 +1022,7 @@ dist_patch_DATA = \
|
|||
%D%/packages/patches/ccextractor-add-missing-header.patch \
|
||||
%D%/packages/patches/ccextractor-autoconf-tesseract.patch \
|
||||
%D%/packages/patches/ccextractor-fix-ocr.patch \
|
||||
%D%/packages/patches/chez-scheme-backport-configure.patch \
|
||||
%D%/packages/patches/chez-scheme-bin-sh.patch \
|
||||
%D%/packages/patches/circos-remove-findbin.patch \
|
||||
%D%/packages/patches/cdparanoia-fpic.patch \
|
||||
|
|
|
@ -69,21 +69,9 @@ (define-module (gnu packages chez)
|
|||
;; Code:
|
||||
|
||||
(define* (chez-scheme-for-system #:optional
|
||||
(system (or (%current-target-system)
|
||||
(%current-system))))
|
||||
"Return 'chez-scheme' if it fully supports SYSTEM, including support for
|
||||
bootstrapping and native threads. Otherwise, return
|
||||
'chez-scheme-for-racket'."
|
||||
(if (and=> (chez-upstream-features-for-system system)
|
||||
(lambda (features)
|
||||
(every (cut memq <> features)
|
||||
'(threads
|
||||
;; We can cross-compile for platforms without
|
||||
;; bootstrap bootfiles, but we can't self-host
|
||||
;; on them short of adding more binary seeds.
|
||||
bootstrap-bootfiles))))
|
||||
chez-scheme
|
||||
chez-scheme-for-racket))
|
||||
system)
|
||||
"Returns 'chez-scheme'."
|
||||
chez-scheme)
|
||||
|
||||
(define* (target-chez-arch #:optional (system
|
||||
(or (%current-target-system)
|
||||
|
@ -506,10 +494,11 @@ (define-public chez-scheme-for-racket
|
|||
|
||||
(define-public chez-scheme
|
||||
(package
|
||||
(inherit chez-scheme-for-racket)
|
||||
(name "chez-scheme")
|
||||
;; The version should match `(scheme-version-number)`.
|
||||
;; The version should match `(scheme-version-number #t)`.
|
||||
;; See s/cmacros.ss c. line 360.
|
||||
(version "9.5.8")
|
||||
(version "10.0.0")
|
||||
(source (origin
|
||||
(method git-fetch)
|
||||
(uri (git-reference
|
||||
|
@ -517,9 +506,10 @@ (define-public chez-scheme
|
|||
(commit (string-append "v" version))))
|
||||
(sha256
|
||||
(base32
|
||||
"0xchqq8cm0ka5wgpn18sjs0hh15rc3nb7xrjqbbc9al3asq0d7gc"))
|
||||
"1q66vafhiwk617z51qkm1v64r3bxqhhf5lzrmsa4l9d5yhvlyk09"))
|
||||
(file-name (git-file-name name version))
|
||||
(patches (search-patches "chez-scheme-bin-sh.patch"))
|
||||
(patches (search-patches "chez-scheme-backport-configure.patch"
|
||||
"chez-scheme-bin-sh.patch"))
|
||||
(snippet #~(begin
|
||||
(use-modules (guix build utils))
|
||||
;; TODO: consider putting this in a (guix ...) or
|
||||
|
@ -528,165 +518,30 @@ (define-public chez-scheme
|
|||
(for-each (lambda (dir)
|
||||
(when (directory-exists? dir)
|
||||
(delete-file-recursively dir)))
|
||||
'("stex"
|
||||
'("lz4"
|
||||
"nanopass"
|
||||
"lz4"
|
||||
"zlib"))))))
|
||||
"stex"
|
||||
"zlib"
|
||||
"zuo"))))))
|
||||
(build-system gnu-build-system)
|
||||
(inputs
|
||||
(list
|
||||
chez-scheme-bootstrap-bootfiles
|
||||
`(,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 chez-nanopass-bootstrap
|
||||
stex-bootstrap))
|
||||
(native-search-paths
|
||||
(list (search-path-specification
|
||||
(variable "CHEZSCHEMELIBDIRS")
|
||||
(files '("lib/chez-scheme")))))
|
||||
(outputs '("out" "doc"))
|
||||
(arguments
|
||||
(list
|
||||
#:modules
|
||||
'((guix build gnu-build-system)
|
||||
(guix build utils)
|
||||
(ice-9 ftw)
|
||||
(ice-9 match))
|
||||
#:test-target "test"
|
||||
#:configure-flags
|
||||
#~`(,(string-append "--installprefix=" #$output)
|
||||
#$@(if (and=> (chez-upstream-features-for-system)
|
||||
(cut memq 'threads <>))
|
||||
#~("--threads")
|
||||
#~())
|
||||
"ZLIB=-lz"
|
||||
"LZ4=-llz4"
|
||||
"--libkernel"
|
||||
;; Guix will do 'compress-man-pages',
|
||||
;; and letting Chez try causes an error
|
||||
"--nogzip-man-pages")
|
||||
#:phases
|
||||
#~(modify-phases %standard-phases
|
||||
(add-after 'unpack 'unpack-nanopass+stex
|
||||
(lambda args
|
||||
(begin
|
||||
(copy-recursively
|
||||
(dirname (search-input-file %build-inputs
|
||||
"lib/chez-scheme/nanopass.ss"))
|
||||
"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"))))))
|
||||
(add-after 'unpack-nanopass+stex 'unpack-bootfiles
|
||||
(lambda* (#:key native-inputs inputs #:allow-other-keys)
|
||||
(when (directory-exists? "boot")
|
||||
(delete-file-recursively "boot"))
|
||||
(copy-recursively
|
||||
(search-input-directory inputs
|
||||
"lib/chez-scheme-bootfiles")
|
||||
"boot")))
|
||||
;; NOTE: The custom Chez 'configure' script doesn't allow
|
||||
;; unrecognized flags, such as those automatically added
|
||||
;; by `gnu-build-system`. This replacement phase uses only
|
||||
;; the explicitly provided `#:configure-flags`.
|
||||
(replace 'configure
|
||||
(lambda* (#:key inputs (configure-flags '()) out-of-source?
|
||||
#:allow-other-keys)
|
||||
(let* ((abs-srcdir (getcwd))
|
||||
(srcdir (if out-of-source?
|
||||
(string-append "../" (basename abs-srcdir))
|
||||
".")))
|
||||
(format #t "source directory: ~s (relative from build: ~s)~%"
|
||||
abs-srcdir srcdir)
|
||||
(if out-of-source?
|
||||
(begin
|
||||
(mkdir "../build")
|
||||
(chdir "../build")))
|
||||
(format #t "build directory: ~s~%" (getcwd))
|
||||
(format #t "configure flags: ~s~%" configure-flags)
|
||||
(apply invoke
|
||||
(string-append srcdir "/configure")
|
||||
configure-flags))))
|
||||
(add-after 'configure 'configure-environment-variables
|
||||
(lambda args
|
||||
;; Some makefiles (for tests) don't seem to propagate CC
|
||||
;; properly, so we take it out of their hands:
|
||||
(setenv "CC" #$(cc-for-target))
|
||||
;; Likewise, some tests have needed HOME to be set:
|
||||
(setenv "HOME" "/tmp")))
|
||||
;; 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.
|
||||
(add-after 'install-symlink 'install-docs
|
||||
(lambda* (#:key native-inputs inputs outputs #:allow-other-keys)
|
||||
(let* ((doc-prefix (or (assoc-ref outputs "doc")
|
||||
(assoc-ref outputs "out")))
|
||||
(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")))))
|
||||
(add-after 'install-docs 'link-doc-pdfs
|
||||
;; otherwise, it's hard to notice them in a forest of HTML files
|
||||
(lambda* (#:key outputs #:allow-other-keys)
|
||||
(with-directory-excursion
|
||||
(string-append (or (assoc-ref outputs "doc")
|
||||
(assoc-ref outputs "out"))
|
||||
"/share/doc/"
|
||||
(strip-store-file-name #$output))
|
||||
(symlink "release_notes/release_notes.pdf"
|
||||
"release_notes.pdf")
|
||||
(match (find-files "csug"
|
||||
"csug.*\\.pdf$" ;; embeded version number
|
||||
#:fail-on-error? #t)
|
||||
((pth)
|
||||
(symlink pth
|
||||
"csug.pdf")))))))))
|
||||
(supported-systems
|
||||
(delete
|
||||
"armhf-linux" ;; XXX reportedly broken, needs checking
|
||||
(filter chez-upstream-features-for-system
|
||||
%supported-systems)))
|
||||
(modify-inputs (package-inputs chez-scheme-for-racket)
|
||||
(replace "chez-scheme-for-racket-bootstrap-bootfiles"
|
||||
chez-scheme-bootstrap-bootfiles)
|
||||
;; for X11 clipboard support in expeditor:
|
||||
;; https://github.com/cisco/ChezScheme/issues/9#issuecomment-222057232
|
||||
(prepend libx11)))
|
||||
;; replace unpack phase?
|
||||
(home-page "https://cisco.github.io/ChezScheme/")
|
||||
(synopsis "R6RS Scheme compiler and run-time")
|
||||
(description
|
||||
"Chez Scheme is a compiler and run-time system for the language of the
|
||||
Revised^6 Report on Scheme (R6RS), with numerous extensions. The compiler
|
||||
generates native code for each target processor, with support for x86, x86_64,
|
||||
and 32-bit PowerPC architectures.")
|
||||
"Chez Scheme is both a programming language and a high-performance
|
||||
implementation of that language. The language is a superset of R6RS Scheme
|
||||
with numerous extensions, including native threads, non-blocking I/O, local
|
||||
modules, and much more. Chez Scheme compiles source expressions incrementally
|
||||
to machine code, providing the speed of compiled code in an interactive
|
||||
system. The system is intended to be as reliable and efficient as possible,
|
||||
with reliability taking precedence over efficiency if necessary.")
|
||||
(license asl2.0)))
|
||||
|
||||
;;
|
||||
|
@ -785,11 +640,6 @@ (define-public chez-scheme-bootstrap-bootfiles
|
|||
(arguments
|
||||
(list #:install-plan
|
||||
#~`(("boot/" "lib/chez-scheme-bootfiles"))))
|
||||
(supported-systems
|
||||
(filter (lambda (system)
|
||||
(and=> (chez-upstream-features-for-system system)
|
||||
(cut memq 'bootstrap-bootfiles <>)))
|
||||
%supported-systems))
|
||||
(synopsis "Chez Scheme bootfiles (binary seed)")
|
||||
(description
|
||||
"Chez Scheme is a self-hosting compiler: building it requires
|
||||
|
|
463
gnu/packages/patches/chez-scheme-backport-configure.patch
Normal file
463
gnu/packages/patches/chez-scheme-backport-configure.patch
Normal file
|
@ -0,0 +1,463 @@
|
|||
From 24ab36374f2e366b6c939fffe8c129c8b0ae3b9c Mon Sep 17 00:00:00 2001
|
||||
From: Philip McGrath <philip@philipmcgrath.com>
|
||||
Date: Wed, 28 Feb 2024 19:41:22 -0500
|
||||
Subject: [PATCH 1/2] Repairs and improvements for building with external
|
||||
dependencies (#807)
|
||||
|
||||
* configure: fix zlib and lz4 submodule checks
|
||||
|
||||
Conditionals to skip the submodule checks were using the wrong
|
||||
variable names, so the checks were always skipped. The correct
|
||||
behavior is to perform the check unless given `ZLIB=<zlib>` or
|
||||
`LZ4=<lz4>`, as applicable.
|
||||
|
||||
* configure: support `ZUO=<zuo>`
|
||||
|
||||
Supplying `ZUO=<zuo>` skips the submodule check in `configure`
|
||||
and configures the generated makefile not to build or remove Zuo.
|
||||
|
||||
* configure: support `STEXLIB=<stex>`
|
||||
|
||||
For compatibility with older scripts, when not explicitly configured,
|
||||
continue to honor the `STEXLIB` environment variable at build time.
|
||||
|
||||
(cherry picked from commit b8838c3280ef10e115236d2f7ac9ae857f83e268)
|
||||
---
|
||||
BUILDING | 5 +++--
|
||||
build.zuo | 13 +++++++++----
|
||||
configure | 40 +++++++++++++++++++++++++++++++++-------
|
||||
makefiles/Makefile.in | 6 ++----
|
||||
4 files changed, 47 insertions(+), 17 deletions(-)
|
||||
|
||||
diff --git a/BUILDING b/BUILDING
|
||||
index 7b3dc9c8..9e9a268b 100644
|
||||
--- a/BUILDING
|
||||
+++ b/BUILDING
|
||||
@@ -149,7 +149,8 @@ information on the supported options.
|
||||
The generated makefile mostly just ensures that a `zuo` executable is
|
||||
built in a `bin` directory, and then it defers the actual build work
|
||||
to `zuo`, which uses the "main.zuo" file. If you have `zuo` installed,
|
||||
-you can use `zuo` directly instead of `make`. In general, instead of
|
||||
+you can use `zuo` directly instead of `make`: in that case, you may
|
||||
+wish to use `./configure ZUO=<zuo>`. In general, instead of
|
||||
the command `make X` to build target `X` as described below, you can
|
||||
use `zuo . X` (or `bin/zuo . X` after `bin/zuo` is built).
|
||||
|
||||
@@ -333,7 +334,7 @@ The makefile supports several targets:
|
||||
* `make clean`
|
||||
|
||||
Removes all built elements from the workarea, and then removes
|
||||
- `bin/zuo`.
|
||||
+ `bin/zuo` (unless configured with `ZUO=<zuo>`).
|
||||
|
||||
|
||||
WINDOWS VIA COMMAND PROMPT
|
||||
diff --git a/build.zuo b/build.zuo
|
||||
index c21d2caa..c5896396 100644
|
||||
--- a/build.zuo
|
||||
+++ b/build.zuo
|
||||
@@ -224,10 +224,15 @@
|
||||
token))
|
||||
|
||||
(define stexlib
|
||||
- (let ((found (assoc "STEXLIB" (hash-ref (runtime-env) 'env))))
|
||||
- (if found
|
||||
- (cdr found)
|
||||
- (at-source "stex"))))
|
||||
+ (let ([configured (hash-ref config 'STEXLIB "")]
|
||||
+ [env (assoc "STEXLIB" (hash-ref (runtime-env) 'env))])
|
||||
+ (cond
|
||||
+ [(not (equal? "" configured))
|
||||
+ configured]
|
||||
+ [env
|
||||
+ (cdr env)]
|
||||
+ [else
|
||||
+ (at-source "stex")])))
|
||||
(define stex-sources
|
||||
(source-tree stexlib))
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index 2b4b594e..782dd09b 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -93,6 +93,7 @@ default_warning_flags="-Wpointer-arith -Wall -Wextra -Wno-implicit-fallthrough"
|
||||
CFLAGS_ADD=
|
||||
zlibLib=
|
||||
LZ4Lib=
|
||||
+STEXLIB=
|
||||
Kernel=KernelLib
|
||||
buildKernelOnly=no
|
||||
enableFrompb=yes
|
||||
@@ -103,6 +104,7 @@ moreBootFiles=
|
||||
preloadBootFiles=
|
||||
alwaysUseBootFile=
|
||||
skipSubmoduleUpdate=
|
||||
+zuoExternal=
|
||||
|
||||
CONFIG_UNAME=`uname`
|
||||
|
||||
@@ -446,6 +448,12 @@ while [ $# != 0 ] ; do
|
||||
LZ4=*)
|
||||
LZ4Lib=`echo $1 | sed -e 's/^LZ4=//'`
|
||||
;;
|
||||
+ STEXLIB=*)
|
||||
+ STEXLIB=`echo $1 | sed -e 's/^STEXLIB=//'`
|
||||
+ ;;
|
||||
+ ZUO=*)
|
||||
+ zuoExternal=`echo $1 | sed -e 's/^ZUO=//'`
|
||||
+ ;;
|
||||
*)
|
||||
echo "option '$1' unrecognized or missing an argument; try $0 --help"
|
||||
exit 1
|
||||
@@ -672,6 +680,8 @@ if [ "$help" = "yes" ]; then
|
||||
echo " STRIP=<strip> executable stripper"
|
||||
echo " ZLIB=<lib> link to <lib> instead of own zlib"
|
||||
echo " LZ4=<lib> link to <lib> instead of own LZ4"
|
||||
+ echo " STEXLIB=<stex> build docs with <stex> instead of own stex"
|
||||
+ echo " ZUO=<zuo> build with <zuo> instead of own Zuo"
|
||||
echo ""
|
||||
echo "Available machine types: $machs"
|
||||
echo ""
|
||||
@@ -889,28 +899,39 @@ submod_instructions () {
|
||||
exit 1
|
||||
}
|
||||
|
||||
-if [ ! -f "$srcdir"/zuo/configure ] ; then
|
||||
- submod_instructions 'Source in "zuo" is missing'
|
||||
+if [ "${zuoExternal}" = "" ] ; then
|
||||
+ if [ ! -f "$srcdir"/zuo/configure ] ; then
|
||||
+ submod_instructions 'Source in "zuo" is missing'
|
||||
+ fi
|
||||
+ ZUO="bin/zuo"
|
||||
+ RM_ZUO="rm -f bin/zuo"
|
||||
+ ZUO_TARGET="bin/zuo"
|
||||
+else
|
||||
+ ZUO="${zuoExternal}"
|
||||
+ RM_ZUO="@echo 'Not cleaning external ${zuoExternal}'"
|
||||
+ ZUO_TARGET="DoNotBuildZuo"
|
||||
fi
|
||||
|
||||
if [ ! -f "$srcdir"/nanopass/nanopass.ss ] ; then
|
||||
submod_instructions 'Source in "nanopass" is missing'
|
||||
fi
|
||||
|
||||
-if [ "${zlibDep}" != "" ] ; then
|
||||
+if [ "${zlibLib}" = "" ] ; then
|
||||
if [ ! -f "$srcdir"/zlib/configure ] ; then
|
||||
submod_instructions 'Source in "zlib" is missing'
|
||||
fi
|
||||
fi
|
||||
|
||||
-if [ "${LZ4Dep}" != "" ] ; then
|
||||
+if [ "${LZ4Lib}" = "" ] ; then
|
||||
if [ ! -f "$srcdir"/lz4/lib/Makefile ] ; then
|
||||
submod_instructions 'Source in "lz4" is missing'
|
||||
fi
|
||||
fi
|
||||
|
||||
-if [ ! -f "$srcdir"/stex/Mf-stex ] ; then
|
||||
- submod_instructions 'Source in "stex" is missing'
|
||||
+if [ "${STEXLIB}" = "" ] ; then
|
||||
+ if [ ! -f "$srcdir"/stex/Mf-stex ] ; then
|
||||
+ submod_instructions 'Source in "stex" is missing'
|
||||
+ fi
|
||||
fi
|
||||
|
||||
# more compile and link flags for c/Mf-unix and mats/Mf-unix
|
||||
@@ -1083,7 +1104,7 @@ cp "$srcdir"/makefiles/buildmain.zuo main.zuo
|
||||
# Some idea, but in the workarea, so it refers to "workarea.zuo" here:
|
||||
cp "$srcdir"/makefiles/workmain.zuo $w/main.zuo
|
||||
|
||||
-# The content of "$w/Makefile" records configuration decisions,
|
||||
+# The content of "$w/Mf-config" records configuration decisions,
|
||||
# and the Zuo build script takes it from there
|
||||
cat > $w/Mf-config << END
|
||||
srcdir=$srcdir
|
||||
@@ -1119,6 +1140,7 @@ cursesLib=$cursesLib
|
||||
ncursesLib=$ncursesLib
|
||||
zlibLib=$zlibLib
|
||||
LZ4Lib=$LZ4Lib
|
||||
+STEXLIB=$STEXLIB
|
||||
warningFlags=$warningFlags
|
||||
Kernel=$Kernel
|
||||
installscriptname=$installscriptname
|
||||
@@ -1130,6 +1152,10 @@ preloadBootFiles=$preloadBootFiles
|
||||
alwaysUseBootFile=$alwaysUseBootFile
|
||||
relativeBootFiles=$relativeBootFiles
|
||||
|
||||
+ZUO=$ZUO
|
||||
+RM_ZUO=$RM_ZUO
|
||||
+ZUO_TARGET=$ZUO_TARGET
|
||||
+
|
||||
InstallBin=$installbin
|
||||
InstallLib=$installlib
|
||||
InstallMan=$installman/man1
|
||||
diff --git a/makefiles/Makefile.in b/makefiles/Makefile.in
|
||||
index 3b95f065..0e3d307d 100644
|
||||
--- a/makefiles/Makefile.in
|
||||
+++ b/makefiles/Makefile.in
|
||||
@@ -3,8 +3,6 @@ workarea=$(w)
|
||||
|
||||
include $(workarea)/Mf-config
|
||||
|
||||
-ZUO=bin/zuo
|
||||
-
|
||||
.PHONY: build
|
||||
build: $(ZUO)
|
||||
+ $(ZUO) $(workarea) MAKE="$(MAKE)"
|
||||
@@ -144,9 +142,9 @@ pkg: $(ZUO)
|
||||
.PHONY: clean
|
||||
clean: $(ZUO)
|
||||
+ $(ZUO) $(workarea) clean MAKE="$(MAKE)"
|
||||
- rm -f bin/zuo
|
||||
+ $(RM_ZUO)
|
||||
|
||||
# Using `+` here means that $(ZUO) gets built even if `-n`/`--dry-run` is provided to `make`
|
||||
-$(ZUO): $(srcdir)/zuo/zuo.c
|
||||
+$(ZUO_TARGET): $(srcdir)/zuo/zuo.c
|
||||
+ mkdir -p bin
|
||||
+ $(CC_FOR_BUILD) -DZUO_LIB_PATH='"'"../zuo/lib"'"' -o $(ZUO) $(srcdir)/zuo/zuo.c
|
||||
|
||||
base-commit: 253230f7dfbb4fe777277d6bbf93f39f9567f086
|
||||
--
|
||||
2.41.0
|
||||
|
||||
|
||||
From 665bccc1c074131e790879adc1436f8059801171 Mon Sep 17 00:00:00 2001
|
||||
From: Matthew Flatt <mflatt@racket-lang.org>
|
||||
Date: Sun, 17 Mar 2024 09:06:30 -0600
|
||||
Subject: [PATCH 2/2] adjust `configure ZUO=<command>` support (#816)
|
||||
|
||||
Continuing from b8838c3280, adjust the generated makefile so the
|
||||
supplied `<command>` is not a makefile dependency. That way, `ZUO=zuo`
|
||||
works if `zuo` is installed and the current build directory is not the
|
||||
source directory. (The `zuo` executable is a dependency in a real and
|
||||
relevant sense, but not in the sense of dependencies that we normally
|
||||
track in makefiles.)
|
||||
|
||||
Also adapt the makefile for the case that `ZUO=...` is not supplied
|
||||
and the build directory is not the source directory, in which case
|
||||
`ZUO_LIB_PATH` needs to be relative to the source directory.
|
||||
|
||||
Using `make ZUO=zuo` can also work, but in that case, `bin/zuo` is
|
||||
still built as a dependency. It's possible that some portable makefile
|
||||
magic could overcome that limitation, but it doesn't seem important.
|
||||
|
||||
(cherry picked from commit d327968f37cdf669d15a9ad6d356bbf92c502bb9)
|
||||
---
|
||||
configure | 3 ++
|
||||
makefiles/Makefile.in | 66 +++++++++++++++++++++----------------------
|
||||
2 files changed, 36 insertions(+), 33 deletions(-)
|
||||
|
||||
diff --git a/configure b/configure
|
||||
index 782dd09b..9adae37a 100755
|
||||
--- a/configure
|
||||
+++ b/configure
|
||||
@@ -904,10 +904,12 @@ if [ "${zuoExternal}" = "" ] ; then
|
||||
submod_instructions 'Source in "zuo" is missing'
|
||||
fi
|
||||
ZUO="bin/zuo"
|
||||
+ ZUO_DEP="${ZUO}"
|
||||
RM_ZUO="rm -f bin/zuo"
|
||||
ZUO_TARGET="bin/zuo"
|
||||
else
|
||||
ZUO="${zuoExternal}"
|
||||
+ ZUO_DEP=""
|
||||
RM_ZUO="@echo 'Not cleaning external ${zuoExternal}'"
|
||||
ZUO_TARGET="DoNotBuildZuo"
|
||||
fi
|
||||
@@ -1153,6 +1155,7 @@ alwaysUseBootFile=$alwaysUseBootFile
|
||||
relativeBootFiles=$relativeBootFiles
|
||||
|
||||
ZUO=$ZUO
|
||||
+ZUO_DEP=$ZUO_DEP
|
||||
RM_ZUO=$RM_ZUO
|
||||
ZUO_TARGET=$ZUO_TARGET
|
||||
|
||||
diff --git a/makefiles/Makefile.in b/makefiles/Makefile.in
|
||||
index 0e3d307d..fc8605a0 100644
|
||||
--- a/makefiles/Makefile.in
|
||||
+++ b/makefiles/Makefile.in
|
||||
@@ -4,55 +4,55 @@ workarea=$(w)
|
||||
include $(workarea)/Mf-config
|
||||
|
||||
.PHONY: build
|
||||
-build: $(ZUO)
|
||||
+build: $(ZUO_DEP)
|
||||
+ $(ZUO) $(workarea) MAKE="$(MAKE)"
|
||||
|
||||
.PHONY: run
|
||||
-run: $(ZUO)
|
||||
+run: $(ZUO_DEP)
|
||||
+ $(ZUO) $(workarea) run
|
||||
|
||||
.PHONY: kernel
|
||||
-kernel: $(ZUO)
|
||||
+kernel: $(ZUO_DEP)
|
||||
+ $(ZUO) $(workarea) kernel MAKE="$(MAKE)"
|
||||
|
||||
.PHONY: install
|
||||
-install: $(ZUO)
|
||||
+install: $(ZUO_DEP)
|
||||
$(ZUO) $(workarea) install MAKE="$(MAKE)"
|
||||
|
||||
.PHONY: uninstall
|
||||
-uninstall: $(ZUO)
|
||||
+uninstall: $(ZUO_DEP)
|
||||
+ $(ZUO) $(workarea) uninstall MAKE="$(MAKE)"
|
||||
|
||||
.PHONY: test-one
|
||||
-test-one: $(ZUO)
|
||||
+test-one: $(ZUO_DEP)
|
||||
+ $(ZUO) $(workarea) test-one MAKE="$(MAKE)"
|
||||
|
||||
.PHONY: test-some-fast
|
||||
-test-some-fast: $(ZUO)
|
||||
+test-some-fast: $(ZUO_DEP)
|
||||
+ $(ZUO) $(workarea) test-some-fast MAKE="$(MAKE)"
|
||||
|
||||
.PHONY: test-some
|
||||
-test-some: $(ZUO)
|
||||
+test-some: $(ZUO_DEP)
|
||||
+ $(ZUO) $(workarea) test-some MAKE="$(MAKE)"
|
||||
|
||||
.PHONY: test
|
||||
-test: $(ZUO)
|
||||
+test: $(ZUO_DEP)
|
||||
+ $(ZUO) $(workarea) test MAKE="$(MAKE)"
|
||||
|
||||
.PHONY: test-more
|
||||
-test-more: $(ZUO)
|
||||
+test-more: $(ZUO_DEP)
|
||||
+ $(ZUO) $(workarea) test-more MAKE="$(MAKE)"
|
||||
|
||||
.PHONY: coverage
|
||||
-coverage: $(ZUO)
|
||||
+coverage: $(ZUO_DEP)
|
||||
+ $(ZUO) $(workarea) coverage MAKE="$(MAKE)"
|
||||
|
||||
.PHONY: bootfiles
|
||||
-bootfiles: $(ZUO)
|
||||
+bootfiles: $(ZUO_DEP)
|
||||
+ $(ZUO) $(workarea) bootfiles MAKE="$(MAKE)"
|
||||
|
||||
.PHONY: reset
|
||||
-reset: $(ZUO)
|
||||
+reset: $(ZUO_DEP)
|
||||
+ $(ZUO) $(workarea) reset MAKE="$(MAKE)"
|
||||
|
||||
# Supply XM=<machine> to build boot files for <machine>
|
||||
@@ -61,90 +61,90 @@ boot:
|
||||
+ $(ZUO) $(workarea) boot "$(XM)" MAKE="$(MAKE)"
|
||||
|
||||
# `<machine>.boot` as alias for `boot XM=<machine>`
|
||||
-%.boot: $(ZUO)
|
||||
+%.boot: $(ZUO_DEP)
|
||||
+ $(ZUO) $(workarea) boot $* MAKE="$(MAKE)"
|
||||
|
||||
.PHONY: auto.boot
|
||||
-auto.boot: $(ZUO)
|
||||
+auto.boot: $(ZUO_DEP)
|
||||
+ $(ZUO) $(workarea) boot MAKE="$(MAKE)"
|
||||
|
||||
SCHEME=scheme
|
||||
|
||||
.PHONY: cross.boot
|
||||
-cross.boot: $(ZUO)
|
||||
+cross.boot: $(ZUO_DEP)
|
||||
+ $(ZUO) $(workarea) boot SCHEME="$(SCHEME)" MAKE="$(MAKE)"
|
||||
|
||||
.PHONY: re.boot
|
||||
-re.boot: $(ZUO)
|
||||
+re.boot: $(ZUO_DEP)
|
||||
+ $(ZUO) $(workarea) reboot SCHEME="$(SCHEME)"
|
||||
|
||||
# Supply XM=<machine> to build boot files for <machine>
|
||||
# with o=3 d=0 for the cross compiler, and only after
|
||||
# building the kernel for the configured machine
|
||||
.PHONY: bootquick
|
||||
-bootquick: $(ZUO)
|
||||
+bootquick: $(ZUO_DEP)
|
||||
+ $(ZUO) $(workarea) bootquick "$(XM)" MAKE="$(MAKE)"
|
||||
|
||||
# `<machine>.bootquick` as alias for `boot XM=<machine>`
|
||||
-%.bootquick: $(ZUO)
|
||||
+%.bootquick: $(ZUO_DEP)
|
||||
+ $(ZUO) $(workarea) bootquick $* MAKE="$(MAKE)"
|
||||
|
||||
-auto.bootquick: $(ZUO)
|
||||
+auto.bootquick: $(ZUO_DEP)
|
||||
+ $(ZUO) $(workarea) bootquick MAKE="$(MAKE)"
|
||||
|
||||
# Supply XM=<machine>-<tag>.bootpbchunk to repackage boot files for
|
||||
# <machine> with pbchunk sources, including additional
|
||||
# boot files
|
||||
.PHONY: bootpbchunk
|
||||
-bootpbchunk: $(ZUO)
|
||||
+bootpbchunk: $(ZUO_DEP)
|
||||
+ $(ZUO) $(workarea) bootpbchunk "$(XM)" $(ARGS) MAKE="$(MAKE)"
|
||||
|
||||
# `<machine>.bootpbchunk` as alias for `pbchunk XM=<machine>`
|
||||
-%.bootpbchunk: $(ZUO)
|
||||
+%.bootpbchunk: $(ZUO_DEP)
|
||||
+ $(ZUO) $(workarea) bootpbchunk $* $(ARGS) MAKE="$(MAKE)"
|
||||
|
||||
.PHONY: docs
|
||||
-docs: build $(ZUO)
|
||||
+docs: build $(ZUO_DEP)
|
||||
+ $(ZUO) $(workarea) docs MAKE="$(MAKE)"
|
||||
|
||||
.PHONY: csug
|
||||
-csug: build $(ZUO)
|
||||
+csug: build $(ZUO_DEP)
|
||||
+ $(ZUO) $(workarea) csug MAKE="$(MAKE)"
|
||||
|
||||
.PHONY: release_notes
|
||||
-release_notes: build $(ZUO)
|
||||
+release_notes: build $(ZUO_DEP)
|
||||
+ $(ZUO) $(workarea) release_notes MAKE="$(MAKE)"
|
||||
|
||||
.PHONY: install-docs
|
||||
-install-docs: build $(ZUO)
|
||||
+install-docs: build $(ZUO_DEP)
|
||||
+ $(ZUO) $(workarea) install-docs MAKE="$(MAKE)"
|
||||
|
||||
.PHONY: install-csug
|
||||
-install-csug: build $(ZUO)
|
||||
+install-csug: build $(ZUO_DEP)
|
||||
+ $(ZUO) $(workarea) install-csug MAKE="$(MAKE)"
|
||||
|
||||
.PHONY: install-release_notes
|
||||
-install-release_notes: build $(ZUO)
|
||||
+install-release_notes: build $(ZUO_DEP)
|
||||
+ $(ZUO) $(workarea) install-release_notes MAKE="$(MAKE)"
|
||||
|
||||
.PHONY: bintar
|
||||
-bintar: $(ZUO)
|
||||
+bintar: $(ZUO_DEP)
|
||||
+ $(ZUO) $(workarea) bintar MAKE="$(MAKE)"
|
||||
|
||||
.PHONY: rpm
|
||||
-rpm: $(ZUO)
|
||||
+rpm: $(ZUO_DEP)
|
||||
+ $(ZUO) $(workarea) rpm MAKE="$(MAKE)"
|
||||
|
||||
.PHONY: pkg
|
||||
-pkg: $(ZUO)
|
||||
+pkg: $(ZUO_DEP)
|
||||
+ $(ZUO) $(workarea) pkg MAKE="$(MAKE)"
|
||||
|
||||
.PHONY: clean
|
||||
-clean: $(ZUO)
|
||||
+clean: $(ZUO_DEP)
|
||||
+ $(ZUO) $(workarea) clean MAKE="$(MAKE)"
|
||||
$(RM_ZUO)
|
||||
|
||||
# Using `+` here means that $(ZUO) gets built even if `-n`/`--dry-run` is provided to `make`
|
||||
$(ZUO_TARGET): $(srcdir)/zuo/zuo.c
|
||||
+ mkdir -p bin
|
||||
- + $(CC_FOR_BUILD) -DZUO_LIB_PATH='"'"../zuo/lib"'"' -o $(ZUO) $(srcdir)/zuo/zuo.c
|
||||
+ + $(CC_FOR_BUILD) -DZUO_LIB_PATH='"'"$(upsrcdir)/zuo/lib"'"' -o $(ZUO) $(srcdir)/zuo/zuo.c
|
||||
--
|
||||
2.41.0
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
From 3c838e6a0c3214d95bf02048cddccfd1b69a679f Mon Sep 17 00:00:00 2001
|
||||
From b8428ad25b437acf4bd8210b14db207b71fe44c3 Mon Sep 17 00:00:00 2001
|
||||
From: Philip McGrath <philip@philipmcgrath.com>
|
||||
Date: Thu, 19 May 2022 13:41:56 -0400
|
||||
Date: Wed, 24 Aug 2022 19:55:14 -0400
|
||||
Subject: [PATCH] patch s_process for "/bin/sh" on Guix
|
||||
|
||||
If:
|
||||
|
@ -14,22 +14,27 @@ then `s_process` will call `execl` with the file specified by
|
|||
`_PATH_BSHELL` instead of "/bin/sh".
|
||||
|
||||
Checking that the path specified by `_PATH_BSHELL` exists safeguards
|
||||
against obscure errors if attempting to use stand-alone executables
|
||||
built by the patched Racket in non-Guix envoronments.
|
||||
against obscure errors if attempting to use the patched Chez Scheme
|
||||
or executables it builds in non-Guix envoronments.
|
||||
|
||||
This patch does not change the behavior of `s_system`, which relies
|
||||
on `system` from the C library.
|
||||
---
|
||||
|
||||
Notes:
|
||||
See also racket-chez-scheme-bin-sh.patch, racket-rktio-bin-sh.patch,
|
||||
and zuo-bin-sh.patch.
|
||||
|
||||
c/prim5.c | 21 ++++++++++++++++++++-
|
||||
1 file changed, 20 insertions(+), 1 deletion(-)
|
||||
|
||||
diff --git a/c/prim5.c b/c/prim5.c
|
||||
index 5a07893..bc2736c 100644
|
||||
index 90b087f1..284f063f 100644
|
||||
--- a/c/prim5.c
|
||||
+++ b/c/prim5.c
|
||||
@@ -23,6 +23,12 @@
|
||||
#include <ctype.h>
|
||||
#include <math.h>
|
||||
@@ -27,6 +27,12 @@
|
||||
#include <sys/resource.h>
|
||||
#endif
|
||||
|
||||
+/* BEGIN PATCH for Guix */
|
||||
+#ifndef WIN32
|
||||
|
@ -39,8 +44,8 @@ index 5a07893..bc2736c 100644
|
|||
+
|
||||
/* locally defined functions */
|
||||
static INT s_errno(void);
|
||||
static iptr s_addr_in_heap(uptr x);
|
||||
@@ -746,6 +752,17 @@ static ptr s_process(char *s, IBOOL stderrp) {
|
||||
static IBOOL s_addr_in_heap(uptr x);
|
||||
@@ -875,6 +881,17 @@ static ptr s_process(char *s, IBOOL stderrp) {
|
||||
|
||||
INT tofds[2], fromfds[2], errfds[2];
|
||||
struct sigaction act, oint_act;
|
||||
|
@ -58,10 +63,10 @@ index 5a07893..bc2736c 100644
|
|||
|
||||
if (pipe(tofds)) S_error("process","cannot open pipes");
|
||||
if (pipe(fromfds)) {
|
||||
@@ -771,7 +788,9 @@ static ptr s_process(char *s, IBOOL stderrp) {
|
||||
CLOSE(1); if (dup(fromfds[1]) != 1) _exit(1);
|
||||
CLOSE(2); if (dup(stderrp ? errfds[1] : 1) != 2) _exit(1);
|
||||
{INT i; for (i = 3; i < NOFILE; i++) (void)CLOSE(i);}
|
||||
@@ -911,7 +928,9 @@ static ptr s_process(char *s, IBOOL stderrp) {
|
||||
}
|
||||
}
|
||||
#endif /* __GNU__ Hurd */
|
||||
- execl("/bin/sh", "/bin/sh", "-c", s, NULL);
|
||||
+ /* BEGIN PATCH for Guix */
|
||||
+ execl(guix_sh, guix_sh, "-c", s, NULL);
|
||||
|
@ -70,7 +75,7 @@ index 5a07893..bc2736c 100644
|
|||
/*NOTREACHED*/
|
||||
} else {
|
||||
|
||||
base-commit: 9df56e7b25bc523663eac3da24be33afc5f76c84
|
||||
base-commit: 253230f7dfbb4fe777277d6bbf93f39f9567f086
|
||||
--
|
||||
2.32.0
|
||||
2.41.0
|
||||
|
||||
|
|
Loading…
Reference in a new issue