diff --git a/README.md b/README.md new file mode 100644 index 0000000..73ab5fe --- /dev/null +++ b/README.md @@ -0,0 +1,9 @@ +# bigloo + +[Bigloo](https://www-sop.inria.fr/mimosa/fp/Bigloo) is a Scheme implementation +devoted to one goal: enabling a Scheme based programming style where C(++) is +usually required. Bigloo attempts to make Scheme practical by offering +features usually presented by traditional programming languages but not +offered by Scheme and functional programming. Bigloo compiles Scheme modules. +It delivers small and fast standalone binary executables. Bigloo enables full +connections between Scheme and C programs. diff --git a/bigloo-div-by-zero.patch b/bigloo-div-by-zero.patch deleted file mode 100644 index 7cea43b..0000000 --- a/bigloo-div-by-zero.patch +++ /dev/null @@ -1,17 +0,0 @@ ---- recette/error.scm.orig 2021-03-22 11:57:58.000000000 -0600 -+++ recette/error.scm 2021-03-22 18:44:15.398794536 -0600 -@@ -307,14 +307,6 @@ - (loop (-fx i 1))) - i)) - 0) -- (test "with-handler.11" -- (cons -- (bind-exit (exit) -- (with-handler (lambda (e) (exit 'a)) -- (/fx 1 0))) -- (with-handler (lambda (e) 'b) -- (/fx 1 0))) -- '(a . b)) - (test "with-handler.1-eval" - (eval '(with-handler - (lambda (e) e) diff --git a/bigloo-javac.patch b/bigloo-javac.patch index a1d9ef9..d39f6b4 100644 --- a/bigloo-javac.patch +++ b/bigloo-javac.patch @@ -1,5 +1,5 @@ ---- api/ssl/src/Makefile.orig 2021-03-22 11:57:58.000000000 -0600 -+++ api/ssl/src/Makefile 2021-03-22 13:27:37.299383342 -0600 +--- api/ssl/src/Makefile.orig 2021-12-02 23:37:12.000000000 -0700 ++++ api/ssl/src/Makefile 2021-12-28 15:36:07.461590750 -0700 @@ -192,19 +192,8 @@ jvm-extra: $(JAVA_CLASSES_SRC) $(BOOTLIB #*---------------------------------------------------------------------*/ #* Java auconfiguration */ @@ -22,8 +22,8 @@ $(JAVA_SRC_DIR)/ssl_client_socket.java: \ $(JAVA_SRC_DIR)/ssl_client_socket$(JDK).java ---- bde/jas/produce.scm.orig 2021-03-22 11:59:17.000000000 -0600 -+++ bde/jas/produce.scm 2021-03-22 13:27:37.300383341 -0600 +--- bde/jas/produce.scm.orig 2021-12-02 23:38:25.000000000 -0700 ++++ bde/jas/produce.scm 2021-12-28 15:36:07.461590750 -0700 @@ -24,8 +24,8 @@ fields methods attributes ) (outshort outchan #xCAFE) @@ -35,8 +35,8 @@ (produce-pool outchan pool-size (reverse pool)) (outshort outchan flags) (outshort outchan me) ---- comptime/Jas/produce.scm.orig 2021-03-22 11:57:58.000000000 -0600 -+++ comptime/Jas/produce.scm 2021-03-22 13:27:37.300383341 -0600 +--- comptime/Jas/produce.scm.orig 2021-12-02 23:37:12.000000000 -0700 ++++ comptime/Jas/produce.scm 2021-12-28 15:36:07.461590750 -0700 @@ -24,8 +24,8 @@ fields methods attributes ) (outshort outchan #xCAFE) @@ -48,9 +48,9 @@ (produce-pool outchan pool-size (reverse pool)) (outshort outchan flags) (outshort outchan me) ---- configure.orig 2021-03-22 11:57:58.000000000 -0600 -+++ configure 2021-03-22 13:27:39.036380709 -0600 -@@ -109,7 +109,7 @@ zip=zip +--- configure.orig 2021-12-02 23:37:12.000000000 -0700 ++++ configure 2021-12-28 15:36:07.462590750 -0700 +@@ -111,7 +111,7 @@ zip=zip jar="jar cmf" zflags= javac=javac @@ -59,7 +59,7 @@ java=java jflags= jvflags=-noverify -@@ -3256,7 +3256,7 @@ if [ $action = "all" -o $action = "biglo +@@ -3382,7 +3382,7 @@ if [ $action = "all" -o $action = "biglo --jflags=$jflags \ --jvflags=$jvflags \ --javac=$javac \ @@ -68,7 +68,7 @@ --cpsep="$cpsep"` || exit 1 if [ $jtest != 0 ]; then -@@ -4636,7 +4636,7 @@ if [ $action = "all" -o $action = "Makef +@@ -4792,7 +4792,7 @@ if [ $action = "all" -o $action = "Makef if [ "$java_configured" = "no" ]; then $autoconfdir/javatest --java=$java --jflags=$jflags --jvflags=$jvflags \ @@ -77,8 +77,8 @@ if [ $? != 0 ]; then $echo "*** ERROR:configure:Can't configure JVM back-end" ---- jigloo/jigloo.java.orig 2021-03-22 11:57:58.000000000 -0600 -+++ jigloo/jigloo.java 2021-03-22 13:27:39.037380707 -0600 +--- jigloo/jigloo.java.orig 2021-12-02 23:37:12.000000000 -0700 ++++ jigloo/jigloo.java 2021-12-28 15:36:07.462590750 -0700 @@ -21,7 +21,7 @@ public abstract class jigloo { static PrintStream out = System.out; static int verbose = 0; @@ -127,16 +127,16 @@ } ---- jigloo/Makefile.orig 2021-03-22 11:57:58.000000000 -0600 -+++ jigloo/Makefile 2021-03-22 13:27:39.038380706 -0600 +--- jigloo/Makefile.orig 2021-12-02 23:37:12.000000000 -0700 ++++ jigloo/Makefile 2021-12-28 15:36:07.463590750 -0700 @@ -133,4 +133,4 @@ pop: #* .java --> .class */ #*---------------------------------------------------------------------*/ .java.class: - @ $(JAVAC) $*.java + @ $(JAVAC) $(JCFLAGS) $*.java ---- runtime/Jlib/cnst.java.orig 2021-03-22 11:57:58.000000000 -0600 -+++ runtime/Jlib/cnst.java 2021-03-22 13:27:39.038380706 -0600 +--- runtime/Jlib/cnst.java.orig 2021-12-02 23:37:12.000000000 -0700 ++++ runtime/Jlib/cnst.java 2021-12-28 15:36:07.463590750 -0700 @@ -6,7 +6,7 @@ public class cnst extends obj { public final int value; @@ -161,8 +161,8 @@ final cnst result = new cnst( value ); ---- runtime/Jlib/dlopen.java.orig 2021-03-22 11:57:58.000000000 -0600 -+++ runtime/Jlib/dlopen.java 2021-03-22 13:27:39.970379293 -0600 +--- runtime/Jlib/dlopen.java.orig 2021-12-02 23:37:12.000000000 -0700 ++++ runtime/Jlib/dlopen.java 2021-12-28 15:36:07.463590750 -0700 @@ -22,7 +22,7 @@ import java.lang.reflect.*; public abstract class dlopen { private static final String NO_ERROR_YET = "No error (yet)"; @@ -181,9 +181,9 @@ return res; } else { return foreign.BUNSPEC; ---- runtime/Jlib/foreign.java.orig 2021-03-22 11:57:58.000000000 -0600 -+++ runtime/Jlib/foreign.java 2021-03-22 13:41:14.652144132 -0600 -@@ -5095,7 +5095,7 @@ public final class foreign +--- runtime/Jlib/foreign.java.orig 2021-12-02 23:37:12.000000000 -0700 ++++ runtime/Jlib/foreign.java 2021-12-28 15:36:07.464590751 -0700 +@@ -5105,7 +5105,7 @@ public final class foreign throw v; } @@ -192,8 +192,8 @@ public static void notify_exception( Throwable e ) throws Throwable { if( e instanceof ClassCastException ) { ---- runtime/Jlib/JDK16.java.orig 2021-03-22 11:57:58.000000000 -0600 -+++ runtime/Jlib/JDK16.java 2021-03-22 13:27:40.891377897 -0600 +--- runtime/Jlib/JDK16.java.orig 2021-12-02 23:37:12.000000000 -0700 ++++ runtime/Jlib/JDK16.java 2021-12-28 15:36:07.464590751 -0700 @@ -19,7 +19,7 @@ import java.lang.reflect.*; public class JDK16 extends JDK { @@ -203,8 +203,8 @@ return c.getDeclaredMethod( new String( m ) ); } ---- runtime/Jlib/JDK.java.orig 2021-03-22 11:57:58.000000000 -0600 -+++ runtime/Jlib/JDK.java 2021-03-22 13:27:40.892377895 -0600 +--- runtime/Jlib/JDK.java.orig 2021-12-02 23:37:12.000000000 -0700 ++++ runtime/Jlib/JDK.java 2021-12-28 15:36:07.464590751 -0700 @@ -49,8 +49,8 @@ public abstract class JDK { private static JDK getImpl(String classname) { @@ -234,8 +234,8 @@ throws Exception; public abstract Object invokeImpl(Method m) throws Exception; ---- runtime/Jlib/output_pipe_port.java.orig 2021-03-22 11:57:58.000000000 -0600 -+++ runtime/Jlib/output_pipe_port.java 2021-03-22 13:27:40.892377895 -0600 +--- runtime/Jlib/output_pipe_port.java.orig 2021-12-02 23:37:12.000000000 -0700 ++++ runtime/Jlib/output_pipe_port.java 2021-12-28 15:36:07.464590751 -0700 @@ -42,7 +42,7 @@ public class output_pipe_port extends ou static String[] tokenizer( byte[] s ) { @@ -254,8 +254,8 @@ } static String[] make_cmd( byte[] s ) { ---- runtime/Jlib/process.java.orig 2021-03-22 11:57:58.000000000 -0600 -+++ runtime/Jlib/process.java 2021-03-22 13:27:40.893377894 -0600 +--- runtime/Jlib/process.java.orig 2021-12-02 23:37:12.000000000 -0700 ++++ runtime/Jlib/process.java 2021-12-28 15:36:07.464590751 -0700 @@ -12,6 +12,7 @@ package bigloo; import java.io.IOException; @@ -311,25 +311,38 @@ } catch (InterruptedException _i) { ---- runtime/Jlib/weakptr.java.orig 2021-03-22 11:57:58.000000000 -0600 -+++ runtime/Jlib/weakptr.java 2021-03-22 13:27:40.894377892 -0600 -@@ -4,10 +4,10 @@ import java.lang.ref.WeakReference; +--- runtime/Jlib/weakptr.java.orig 2021-12-28 15:36:07.465590751 -0700 ++++ runtime/Jlib/weakptr.java 2021-12-28 15:37:33.100617825 -0700 +@@ -4,12 +4,12 @@ import java.lang.ref.WeakReference; public class weakptr extends obj { +- public WeakReference data; - public WeakReference ref; ++ public WeakReference data; + public WeakReference ref; - public weakptr(final Object data){ -- ref = new WeakReference(data); -+ ref = new WeakReference(data); + public weakptr(final Object d, final Object r){ +- data = new WeakReference(d); +- ref = new WeakReference(r); ++ data = new WeakReference(d); ++ ref = new WeakReference(r); } public Object getData(){ -@@ -16,7 +16,7 @@ public class weakptr extends obj { +@@ -18,7 +18,7 @@ public class weakptr extends obj { } public void setData(Object o){ +- data = new WeakReference(o); ++ data = new WeakReference(o); + } + + public Object getRef(){ +@@ -27,7 +27,7 @@ public class weakptr extends obj { + } + + public void setRef(Object o){ - ref = new WeakReference(o); + ref = new WeakReference(o); } diff --git a/bigloo-lto-type.patch b/bigloo-lto-type.patch index ffe7c43..7cf0eb1 100644 --- a/bigloo-lto-type.patch +++ b/bigloo-lto-type.patch @@ -1,5 +1,16 @@ ---- runtime/Include/bigloo_pair.h.orig 2020-05-12 00:35:36.000000000 -0600 -+++ runtime/Include/bigloo_pair.h 2020-10-13 17:39:33.656637491 -0600 +--- runtime/Clib/cbignum.c.orig 2021-12-02 23:37:12.000000000 -0700 ++++ runtime/Clib/cbignum.c 2021-12-28 15:55:07.070170009 -0700 +@@ -1134,7 +1134,7 @@ bgl_bignum_mask(obj_t x, long n) { + /* bgl_bignum_and ... */ + /*---------------------------------------------------------------------*/ + BGL_RUNTIME_DEF obj_t +-bgl_bignum_and(obj_t x, long y) { ++bgl_bignum_and(obj_t x, obj_t y) { + obj_t obj; + mpz_t rop; + +--- runtime/Include/bigloo_pair.h.orig 2021-12-02 23:37:12.000000000 -0700 ++++ runtime/Include/bigloo_pair.h 2021-12-28 15:54:39.031147480 -0700 @@ -60,7 +60,7 @@ struct bgl_epair { obj_t car; obj_t cdr; diff --git a/bigloo.spec b/bigloo.spec index e10ea8b..134a429 100644 --- a/bigloo.spec +++ b/bigloo.spec @@ -1,12 +1,26 @@ # The hardened build breaks bigloo's plugin architecture. %undefine _hardened_build +# With LTO enabled, we get errors of this form while building BDE: +# lib/alloc.c:1138:1: error: variable '____make_va_procedure' redeclared as function +# 1138 | WRAPPER( make_va_procedure, PROCEDURE_TYPE_NUM, (obj_t (*e)(), int a, int s), ((void *(*)())e, a, s) ) +# | ^ +# lib/init.c:103:9: note: previously declared here +# 103 | void *(*____make_va_procedure)( void *(*)(), int, int ); +# | ^ +# +# The WRAPPER macro uses its first argument to create the name of a function. +# Hence, in this case, the function has name "make_va_procedure" and the +# variable has name "____make_va_procedure", yet LTO thinks they are the same +# symbol. Until this can be resolved, disable LTO. +%global _lto_cflags %{nil} + # Bigloo uses the terminology "release" for what Fedora calls version, # and "version" for a sub-version revision. # patch_suffix is defined to be empty when patch_ver is not defined, # so that when updating, the Source and %%setup lines do not have to be # changed, only the Version and patch_ver -#%%global patch_ver 2 +%global patch_ver 2 %global patch_suffix %{?patch_ver:-%{patch_ver}} # prerelease @@ -22,12 +36,12 @@ %global bundledgc 8.0.4 Name: bigloo -Version: 4.4b -Release: 4%{?patch_ver:.%{patch_ver}}%{?prerel:.%{prerel}}%{?dist} +Version: 4.4c +Release: 1%{?patch_ver:.%{patch_ver}}%{?prerel:.%{prerel}}%{?dist} Summary: A compiler for the Scheme programming language License: GPLv2+ -URL: http://www-sop.inria.fr/mimosa/fp/Bigloo +URL: https://www-sop.inria.fr/mimosa/fp/Bigloo Source0: ftp://ftp-sop.inria.fr/indes/fp/Bigloo/%{name}-%{version}%{?patch_suffix}%{?ver_suffix}.tar.gz # Not yet sent upstream: fix some bugs in the Emacs interface, and also # modernizes the code somewhat. @@ -50,10 +64,6 @@ Patch7: %{name}-javac.patch Patch8: %{name}-return.patch # Fix signal numbers in the Java code Patch9: %{name}-java-signum.patch -# GCC can sometimes replace the entire test with direct failure due to -# detecting division by zero. Skip this test until we can figure out how to -# make GCC be a little less clever. -Patch10: %{name}-div-by-zero.patch BuildRequires: emacs BuildRequires: gcc @@ -257,15 +267,10 @@ rm -f bmacs-xemacs.el xemacs-etags.el %{_emacs_bytecompile} bmacs.el bmacs-config.el bmacs-gnu-emacs.el popd -# FIXME: there is some kind of problem on s390x involving Java mutexes. -# It almost looks like they are nonatomic. Disable s390x tests until we -# can diagnose the problem. -%ifnarch s390x %check ulimit -s unlimited export TZ=$(date +%%Z) make test -%endif %files @@ -290,6 +295,12 @@ make test %changelog +* Wed Dec 29 2021 Jerry James - 4.4c-1.2 +- Version 4.4c-2 +- Drop obsolete -div-by-zero patch +- Disable LTO again due to symbol collision errors +- Reenable tests on s390x + * Tue Nov 9 2021 Jerry James - 4.4b-4 - Drop XEmacs support diff --git a/sources b/sources index c27d097..f041e07 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (bigloo-4.4b.tar.gz) = 08b6fcb3cf985f9d24f4e60d32e0aa77a5be234111d19f8cdd3e3fb37989172524ea95d1b0dffb567c1b5d9e4c20dc1ae3c1591581e31cb62d5f5b85c721b381 +SHA512 (bigloo-4.4c-2.tar.gz) = bc072994165e6acdc5be3dfe490e0a648b46396e8639a3374dbf3cb7770323dcb33ed89c3aaf4a5fbc7e5d3517759a0e0dc0c589dd6fbd652dffed72e5fcdd9f