chezscheme-racket: Import Chez Scheme (Racket fork) 9.5.5.5
authorJohann Rudloff <johann@sinyax.net>
Sun, 5 Dec 2021 20:30:08 +0000 (21:30 +0100)
committerJohann Rudloff <johann@sinyax.net>
Thu, 9 Dec 2021 18:08:40 +0000 (19:08 +0100)
Chez Scheme is both a programming language and an implementation of
that language, with supporting tools and documentation.
This variant of Chez Scheme is extended to support the implementation
of [Racket](https://racket-lang.org/).

Major additions to Chez Scheme in the Racket variant:

 * AArch64 support

 * pb (Portable bytecode) support, which is mainly useful for
   bootstrapping a build on any supported platform

 * Unboxed floating-point arithmetic and flvectors

 * Type reconstruction during optimization (especially for safe code)

 * Continuation attachments

 * Parallel garbage collection, in-place garbage collection for
   old-generation objects (instead of always copying), and
   reachability-based memory accounting

 * Ordered finalization, immobile (but collectable) objects, and
   weak/ephemeron generic hash tables

chezscheme-racket/DESCR [new file with mode: 0644]
chezscheme-racket/Makefile [new file with mode: 0644]
chezscheme-racket/PLIST [new file with mode: 0644]
chezscheme-racket/distinfo [new file with mode: 0644]
chezscheme-racket/patches/patch-src_ChezScheme_c_expeditor.c [new file with mode: 0644]
chezscheme-racket/patches/patch-src_ChezScheme_configure [new file with mode: 0644]

diff --git a/chezscheme-racket/DESCR b/chezscheme-racket/DESCR
new file mode 100644 (file)
index 0000000..34b5651
--- /dev/null
@@ -0,0 +1,24 @@
+Chez Scheme is both a programming language and an implementation of
+that language, with supporting tools and documentation.
+This variant of Chez Scheme is extended to support the implementation
+of [Racket](https://racket-lang.org/).
+
+Major additions to Chez Scheme in the Racket variant:
+
+ * AArch64 support
+
+ * pb (Portable bytecode) support, which is mainly useful for
+   bootstrapping a build on any supported platform
+
+ * Unboxed floating-point arithmetic and flvectors
+
+ * Type reconstruction during optimization (especially for safe code)
+
+ * Continuation attachments
+
+ * Parallel garbage collection, in-place garbage collection for
+   old-generation objects (instead of always copying), and
+   reachability-based memory accounting
+
+ * Ordered finalization, immobile (but collectable) objects, and
+   weak/ephemeron generic hash tables
diff --git a/chezscheme-racket/Makefile b/chezscheme-racket/Makefile
new file mode 100644 (file)
index 0000000..3a06ddc
--- /dev/null
@@ -0,0 +1,74 @@
+# $NetBSD$
+
+DISTNAME=      racket-minimal-8.3-src
+PKGNAME=       chezscheme-racket-9.5.5.5
+CATEGORIES=    lang
+MASTER_SITES=  https://download.racket-lang.org/releases/8.3/installers/
+EXTRACT_SUFX=  .tgz
+
+MAINTAINER=    pkgsrc-users@NetBSD.org
+HOMEPAGE=      https://download.racket-lang.org/installers/8.3/
+COMMENT=       Racket's fork of Chez Scheme
+LICENSE=       apache-2.0
+
+WRKSRC=                ${WRKDIR}/racket-8.3
+HAS_CONFIGURE= yes
+USE_TOOLS+=    gmake pkg-config
+USE_LANGUAGES= c
+
+CONFLICTS=     chezscheme-[0-9]*
+
+CONFIGURE_DIRS=        src/ChezScheme
+BUILD_DIRS=    src/ChezScheme
+BUILD_TARGET=  build
+
+CHECK_PORTABILITY_SKIP=        src/cs/c/configure
+
+.include "../../mk/bsd.prefs.mk"
+
+# For now, we always build with threads support
+PLIST_SUBST+=          CHEZ_THREADED=t
+
+.if ${MACHINE_ARCH} == i386
+PLIST_SUBST+=          CHEZ_ARCH=i3
+.elif ${MACHINE_ARCH} == x86_64
+PLIST_SUBST+=          CHEZ_ARCH=a6
+.elif ${MACHINE_ARCH} == aarch64
+PLIST_SUBST+=          CHEZ_ARCH=arm64
+.endif
+
+.if ${OPSYS} == NetBSD
+PLIST_SUBST+=          CHEZ_OS=nb
+.elif ${OPSYS} == FreeBSD
+PLIST_SUBST+=          CHEZ_OS=fb
+.elif ${OPSYS} == OpenBSD
+PLIST_SUBST+=          CHEZ_OS=ob
+.elif ${OPSYS} == Linux
+PLIST_SUBST+=          CHEZ_OS=le
+.elif ${OPSYS} == Darwin
+PLIST_SUBST+=          CHEZ_OS=osx
+.endif
+
+post-extract:
+       rm -rf ${WRKSRC}/src/bc ${WRKSRC}/src/cs
+
+pre-configure:
+       cd ${WRKSRC}/src/ChezScheme && \
+               ./configure --pb ZLIB=-lz \
+               LZ4="`pkg-config --libs liblz4`" && \
+               gmake auto.bootquick
+
+do-configure:
+       cd ${WRKSRC}/src/ChezScheme && \
+               ./configure \
+                       ZLIB=-lz \
+                       LZ4="`pkg-config --libs liblz4`" \
+                       --threads \
+                       --disable-x11 \
+                       --installprefix=${PREFIX} \
+                       --installman=${PREFIX}/${PKGMANDIR} \
+                       --temproot=${DESTDIR}
+
+.include "../../archivers/lz4/buildlink3.mk"
+.include "../../devel/ncurses/buildlink3.mk"
+.include "../../mk/bsd.pkg.mk"
diff --git a/chezscheme-racket/PLIST b/chezscheme-racket/PLIST
new file mode 100644 (file)
index 0000000..918e762
--- /dev/null
@@ -0,0 +1,41 @@
+@comment $NetBSD$
+bin/petite
+bin/scheme
+bin/scheme-script
+lib/csv9.5.5.5/examples/Makefile
+lib/csv9.5.5.5/examples/compat.ss
+lib/csv9.5.5.5/examples/crepl.c
+lib/csv9.5.5.5/examples/csocket.c
+lib/csv9.5.5.5/examples/def.ss
+lib/csv9.5.5.5/examples/edit.ss
+lib/csv9.5.5.5/examples/ez-grammar-test.ss
+lib/csv9.5.5.5/examples/ez-grammar.ss
+lib/csv9.5.5.5/examples/fact.ss
+lib/csv9.5.5.5/examples/fatfib.ss
+lib/csv9.5.5.5/examples/fft.ss
+lib/csv9.5.5.5/examples/fib.ss
+lib/csv9.5.5.5/examples/foreign.ss
+lib/csv9.5.5.5/examples/freq.ss
+lib/csv9.5.5.5/examples/interpret.ss
+lib/csv9.5.5.5/examples/m4.ss
+lib/csv9.5.5.5/examples/macro.ss
+lib/csv9.5.5.5/examples/matrix.ss
+lib/csv9.5.5.5/examples/object.ss
+lib/csv9.5.5.5/examples/power.ss
+lib/csv9.5.5.5/examples/queue.ss
+lib/csv9.5.5.5/examples/rabbit.ss
+lib/csv9.5.5.5/examples/rsa.ss
+lib/csv9.5.5.5/examples/scons.ss
+lib/csv9.5.5.5/examples/setof.ss
+lib/csv9.5.5.5/examples/socket.ss
+lib/csv9.5.5.5/examples/template.ss
+lib/csv9.5.5.5/examples/unify.ss
+lib/csv9.5.5.5/${CHEZ_THREADED}${CHEZ_ARCH}${CHEZ_OS}/libkernel.a
+lib/csv9.5.5.5/${CHEZ_THREADED}${CHEZ_ARCH}${CHEZ_OS}/main.o
+lib/csv9.5.5.5/${CHEZ_THREADED}${CHEZ_ARCH}${CHEZ_OS}/petite.boot
+lib/csv9.5.5.5/${CHEZ_THREADED}${CHEZ_ARCH}${CHEZ_OS}/revision
+lib/csv9.5.5.5/${CHEZ_THREADED}${CHEZ_ARCH}${CHEZ_OS}/scheme-script.boot
+lib/csv9.5.5.5/${CHEZ_THREADED}${CHEZ_ARCH}${CHEZ_OS}/scheme.boot
+lib/csv9.5.5.5/${CHEZ_THREADED}${CHEZ_ARCH}${CHEZ_OS}/scheme.h
+man/man1/petite.1
+man/man1/scheme.1
diff --git a/chezscheme-racket/distinfo b/chezscheme-racket/distinfo
new file mode 100644 (file)
index 0000000..6751885
--- /dev/null
@@ -0,0 +1,8 @@
+$NetBSD$
+
+SHA1 (racket-minimal-8.3-src.tgz) = 2f2940e098ad409b35488dfcf59ae4bff2f2c9cb
+RMD160 (racket-minimal-8.3-src.tgz) = b6321a309e42e6505a960ed762cc76ea8877cf48
+SHA512 (racket-minimal-8.3-src.tgz) = 374c1a294e9b48155de6b809eb0bd756fb3779101bbce1aee08765ac52a68f9f3c707c97d193e0a32550154909e7fcf47c1ecf2955b90e3612afeb9796a22891
+Size (racket-minimal-8.3-src.tgz) = 14988873 bytes
+SHA1 (patch-src_ChezScheme_c_expeditor.c) = 0794347286bb7dcd12526118ef76ae77461c9828
+SHA1 (patch-src_ChezScheme_configure) = 6f9ce9d2f1a0f7ff9a3c4a56e8d7a57e91b5c5df
diff --git a/chezscheme-racket/patches/patch-src_ChezScheme_c_expeditor.c b/chezscheme-racket/patches/patch-src_ChezScheme_c_expeditor.c
new file mode 100644 (file)
index 0000000..ceca631
--- /dev/null
@@ -0,0 +1,16 @@
+$NetBSD$
+
+* The special case for NetBSD is not required, but prevents term.h from being
+  found
+
+--- src/ChezScheme/c/expeditor.c.orig  2021-10-24 04:17:58.000000000 +0000
++++ src/ChezScheme/c/expeditor.c
+@@ -541,7 +541,7 @@ static void s_ee_write_char(wchar_t c) {
+ # include </usr/include/term.h>
+ #elif defined(NETBSD)
+ # include <ncurses.h>
+-# include <ncurses/term.h>
++# include <term.h>
+ #else
+ # include <curses.h>
+ # include <term.h>
diff --git a/chezscheme-racket/patches/patch-src_ChezScheme_configure b/chezscheme-racket/patches/patch-src_ChezScheme_configure
new file mode 100644 (file)
index 0000000..ef6cd7d
--- /dev/null
@@ -0,0 +1,15 @@
+$NetBSD$
+
+* /usr/sbin is usually not in the $PATH, use absolute path for paxctl
+
+--- src/ChezScheme/configure.orig      2021-10-24 04:17:58.000000000 +0000
++++ src/ChezScheme/configure
+@@ -710,7 +710,7 @@ esac
+ # post-link-executable step for c/Mf-unix
+ case "${flagsmuni}" in
+     *nb)
+-        exePostStep='paxctl +m ${Scheme}'
++        exePostStep='/usr/sbin/paxctl +m ${Scheme}'
+         ;;
+ esac