diff --git a/guile-2.0.14-gc_pkgconfig_private.patch b/guile-3.0-gc_pkgconfig_private.patch similarity index 65% rename from guile-2.0.14-gc_pkgconfig_private.patch rename to guile-3.0-gc_pkgconfig_private.patch index d8ee03197cbe3adebaba3a54027d120e86425b6d..66207e47f29ccb696d9e51cbd35eafd6b0129ec0 100644 --- a/guile-2.0.14-gc_pkgconfig_private.patch +++ b/guile-3.0-gc_pkgconfig_private.patch @@ -1,7 +1,6 @@ -diff -up guile-2.2.7/meta/guile-2.2.pc.in.pkgconfig_private guile-2.2.7/meta/guile-2.2.pc.in ---- guile-2.2.7/meta/guile-2.2.pc.in.pkgconfig_private 2016-12-14 18:03:33.000000000 -0600 -+++ guile-2.0.7/meta/guile-2.2.pc.in 2018-02-20 11:53:56.344379283 -0600 -@@ -21,9 +21,9 @@ guile=${bindir}/@guile@ +--- guile-3.0.10/meta/guile-3.0.pc.in.orig 2024-08-15 08:33:17.790872400 +0800 ++++ guile-3.0.10/meta/guile-3.0.pc.in 2024-08-15 09:17:08.397603400 +0800 +@@ -22,9 +22,9 @@ Name: GNU Guile Description: GNU's Ubiquitous Intelligent Language for Extension Version: @GUILE_VERSION@ diff --git a/guile-2.2.7.tar.xz b/guile-3.0.10.tar.xz similarity index 35% rename from guile-2.2.7.tar.xz rename to guile-3.0.10.tar.xz index 49552e7624abe980cd89eb4d8bc7c6259b8f9cd3..2a0a1fb3530a1584c11a92ec326cb079c479cbd6 100644 Binary files a/guile-2.2.7.tar.xz and b/guile-3.0.10.tar.xz differ diff --git a/guile-3.0.7-chroot.patch b/guile-3.0.7-chroot.patch new file mode 100644 index 0000000000000000000000000000000000000000..110bf1e7008072f11e9306bd7a9349895b3bdd2d --- /dev/null +++ b/guile-3.0.7-chroot.patch @@ -0,0 +1,22 @@ +commit ab9588774461715d0664b8662790b36e8389307d +Author: Tomas Korbar +Date: Thu Jul 22 10:26:24 2021 +0200 + + Make chroot call more secure + +diff --git a/libguile/posix.c b/libguile/posix.c +index 31c4ab1..1054440 100644 +--- a/libguile/posix.c ++++ b/libguile/posix.c +@@ -2033,7 +2033,10 @@ SCM_DEFINE (scm_chroot, "chroot", 1, 0, 0, + #define FUNC_NAME s_scm_chroot + { + int rv; +- ++ WITH_STRING (path, c_path, ++ rv = chdir (c_path)); ++ if (rv == -1) ++ SCM_SYSERROR; + WITH_STRING (path, c_path, + rv = chroot (c_path)); + if (rv == -1) diff --git a/disable-out-of-memory-test.patch b/guile-3.0.7-disable-oom-test.patch similarity index 100% rename from disable-out-of-memory-test.patch rename to guile-3.0.7-disable-oom-test.patch diff --git a/guile-3.0.7-disable-stackoverflow-test.patch b/guile-3.0.7-disable-stackoverflow-test.patch new file mode 100644 index 0000000000000000000000000000000000000000..dc94bae94f6a9eed9abc6edf3129dcba78927ccd --- /dev/null +++ b/guile-3.0.7-disable-stackoverflow-test.patch @@ -0,0 +1,19 @@ +commit 276b240f1694f929ce4b91bcd1827ec31e5ea1fe +Author: Tomas Korbar +Date: Thu Jul 22 12:02:10 2021 +0200 + + Disable stack overflow test + +diff --git a/test-suite/standalone/test-stack-overflow b/test-suite/standalone/test-stack-overflow +index dd54249..45a96be 100755 +--- a/test-suite/standalone/test-stack-overflow ++++ b/test-suite/standalone/test-stack-overflow +@@ -3,6 +3,8 @@ guild compile "$0" + exec guile -q -s "$0" "$@" + !# + ++(exit 77) ++ + (unless (defined? 'setrlimit) + ;; Without an rlimit, this test can take down your system, as it + ;; consumes all of your memory in stack space. That doesn't seem like diff --git a/guile-3.0.7-headers.patch b/guile-3.0.7-headers.patch new file mode 100644 index 0000000000000000000000000000000000000000..7550fef203a3136b6428817af1cb60e9e7a319e0 --- /dev/null +++ b/guile-3.0.7-headers.patch @@ -0,0 +1,30 @@ +commit 69de79cfa71749de8e0e4dcab17b4ab36208e5fc +Author: Tomas Korbar +Date: Fri Jul 16 09:32:38 2021 +0200 + + Fix header problem + +diff --git a/lib/libc-config.h b/lib/libc-config.h +index f14013f..884272b 100644 +--- a/lib/libc-config.h ++++ b/lib/libc-config.h +@@ -71,11 +71,6 @@ + # endif + #endif + +-#ifndef __attribute_nonnull__ +-/* either does not exist, or is too old for Gnulib. +- Prepare to include , which is Gnulib's version of a +- more-recent glibc . */ +- + /* Define _FEATURES_H so that does not include . */ + # ifndef _FEATURES_H + # define _FEATURES_H 1 +@@ -171,7 +166,6 @@ + # endif + # endif + +-#endif /* defined __glibc_likely */ + + + /* A substitute for glibc , good enough for Gnulib. */ diff --git a/guile-configure.patch b/guile-configure.patch deleted file mode 100644 index e5b94368fcad419c9ea7e919b546e95e59acfe8f..0000000000000000000000000000000000000000 --- a/guile-configure.patch +++ /dev/null @@ -1,21 +0,0 @@ -diff -Nrup a/m4/mathfunc.m4 b/m4/mathfunc.m4 ---- a/m4/mathfunc.m4 2016-12-14 17:03:33.000000000 -0700 -+++ b/m4/mathfunc.m4 2020-01-06 19:48:46.684158282 -0700 -@@ -60,7 +60,7 @@ AC_DEFUN([gl_MATHFUNC], - #endif - #include - $4 -- $2 (*funcptr) $3 = ]func[; -+ __attribute__ ((used)) $2 (*funcptr) $3 = ]func[; - int i_ret; - float f_ret; - double d_ret; -@@ -85,7 +85,7 @@ AC_DEFUN([gl_MATHFUNC], - #endif - #include - $4 -- $2 (*funcptr) $3 = ]func[; -+ __attribute__ ((used)) $2 (*funcptr) $3 = ]func[; - int i_ret; - float f_ret; - double d_ret; diff --git a/guile-multilib.patch b/guile-multilib.patch deleted file mode 100644 index 4baf3098b5cf3ec38924e2da09de15e5bfddf4c4..0000000000000000000000000000000000000000 --- a/guile-multilib.patch +++ /dev/null @@ -1,47 +0,0 @@ -diff -up guile-2.0.9/libguile/Makefile.in.multilib guile-2.0.9/libguile/Makefile.in ---- guile-2.0.9/libguile/Makefile.in.multilib 2013-04-10 01:31:59.000000000 +0200 -+++ guile-2.0.9/libguile/Makefile.in 2013-07-16 16:59:59.490527131 +0200 -@@ -3283,6 +3283,11 @@ install-nodist_modincludeHEADERS: $(nodi - while read files; do \ - echo " $(INSTALL_HEADER) $$files '$(DESTDIR)$(modincludedir)'"; \ - $(INSTALL_HEADER) $$files "$(DESTDIR)$(modincludedir)" || exit $$?; \ -+ for f in $$files; do if [ "$$f" = "scmconfig.h" ]; then \ -+ grep -q "SCM_SIZEOF_LONG 4" "$(DESTDIR)$(modincludedir)/$$f" && g=32 || g=64; \ -+ mv "$(DESTDIR)$(modincludedir)/$$f" "$(DESTDIR)$(modincludedir)/scmconfig-$$g.h"; \ -+ $(INSTALL_HEADER) "$${d}scmconfig-multilib.h" "$(DESTDIR)$(modincludedir)/$$f"; \ -+ fi; done \ - done - - uninstall-nodist_modincludeHEADERS: -diff -up guile-2.0.9/libguile/scmconfig-multilib.h.multilib guile-2.0.9/libguile/scmconfig-multilib.h ---- guile-2.0.9/libguile/scmconfig-multilib.h.multilib 2013-07-16 17:02:26.045733704 +0200 -+++ guile-2.0.9/libguile/scmconfig-multilib.h 2013-07-16 17:01:51.623685971 +0200 -@@ -0,0 +1,7 @@ -+/* multilib clean wrapper */ -+#include -+#if __WORDSIZE == 32 -+#include "libguile/scmconfig-32.h" -+#else -+#include "libguile/scmconfig-64.h" -+#endif -diff -up guile-2.0.9/meta/guile-config.in.multilib guile-2.0.9/meta/guile-config.in ---- guile-2.0.9/meta/guile-config.in.multilib 2012-07-02 11:28:14.000000000 +0200 -+++ guile-2.0.9/meta/guile-config.in 2013-07-16 17:09:25.650324597 +0200 -@@ -1,7 +1,6 @@ - #!/bin/sh --PKG_CONFIG_PATH="@pkgconfigdir@:$PKG_CONFIG_PATH" - GUILE_AUTO_COMPILE=0 --export PKG_CONFIG_PATH GUILE_AUTO_COMPILE -+export GUILE_AUTO_COMPILE - - exec "@installed_guile@" -e main -s $0 "$@" - !# -@@ -31,7 +30,7 @@ exec "@installed_guile@" -e main -s $0 " - (ice-9 rdelim)) - - --(define %pkg-config-program "@PKG_CONFIG@") -+(define %pkg-config-program "pkg-config") - - ;;;; main function, command-line processing - diff --git a/guile-threadstest.patch b/guile-threadstest.patch deleted file mode 100644 index 969960157bde29b2e95c1a3165a4a66ef52e8436..0000000000000000000000000000000000000000 --- a/guile-threadstest.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff --git a/test-suite/tests/threads.test b/test-suite/tests/threads.test -index efdf36d..ff5ba2d 100644 ---- a/test-suite/tests/threads.test -+++ b/test-suite/tests/threads.test -@@ -382,6 +382,7 @@ - - (pass-if "mutex with owner not retained (bug #27450)" - (let ((g (make-guardian))) -+ (throw 'unresolved) - (g (let ((m (make-mutex))) (lock-mutex m) m)) - - ;; Avoid false references to M on the stack. diff --git a/guile.spec b/guile.spec index d675eb81cbefb9d27b2618ec73aebadbbfc15531..6af9d25eaefdd438d97ca4993eeee7cd3a719b39 100644 --- a/guile.spec +++ b/guile.spec @@ -1,29 +1,24 @@ Name: guile -Version: 2.2.7 -Release: 6 +Version: 3.0.10 +%global mver 3.0 +Release: 1 Epoch: 5 Summary: GNU's Ubiquitous Intelligent Language for Extension -License: LGPLv3+ +License: LGPL-3.0-or-later and MIT and Public Domain and GPL-3.0-or-later URL: https://www.gnu.org/software/guile/ Source: https://ftp.gnu.org/gnu/guile/%{name}-%{version}.tar.xz - -%global g_version 2.2 - -#Patch from fedora -#https://src.fedoraproject.org/rpms/guile22/blob/f38/f/guile-multilb.patch -Patch1: guile-multilib.patch -#https://src.fedoraproject.org/rpms/guile22/blob/f38/f/guile-threadstest.patch -Patch3: guile-threadstest.patch -#https://src.fedoraproject.org/rpms/guile22/blob/f38/f/disable-out-of-memory-test.patch -Patch4: disable-out-of-memory-test.patch -#https://src.fedoraproject.org/rpms/guile22/blob/f38/f/guile-configure.patch -Patch5: guile-configure.patch -#https://src.fedoraproject.org/rpms/guile/blob/rawhide/f/guile-2.0.14-gc_pkgconfig_private.patch -Patch6000: guile-2.0.14-gc_pkgconfig_private.patch - -BuildRequires: gcc libtool gmp-devel readline-devel gc-devel libffi-devel -BuildRequires: gettext-devel libunistring-devel libtool-ltdl-devel -Requires: coreutils +Patch0: guile-3.0.7-headers.patch +Patch1: guile-3.0.7-disable-oom-test.patch +Patch2: guile-3.0.7-chroot.patch +Patch3: guile-3.0.7-disable-stackoverflow-test.patch +Patch4: guile-3.0-gc_pkgconfig_private.patch +BuildRequires: gcc make +BuildRequires: autoconf automake libtool gettext-devel +BuildRequires: pkgconfig(bdw-gc) >= 7.2 +BuildRequires: pkgconfig(gmp) >= 4.1 +BuildRequires: pkgconfig(libffi) +BuildRequires: pkgconfig(readline) +BuildRequires: libunistring-devel %description This is Guile, a portable, embeddable Scheme implementation written in @@ -32,7 +27,8 @@ linked in as a library when building extensible programs. %package devel Summary: Development files and Header files for %{name} -Requires: guile = %{epoch}:%{version}-%{release} gmp-devel gc-devel pkgconfig +Requires: guile = %{epoch}:%{version}-%{release} +Requires: gmp-devel %description devel The %{name}-devel package contains libraries and header files for @@ -45,76 +41,95 @@ developing applications that use %{name}. %build autoreconf -fiv -%configure --disable-error-on-warning -sed -i 's|" $sys_lib_dlsearch_path "|" $sys_lib_dlsearch_path %{_libdir} "|' libtool +%configure --disable-static --disable-error-on-warning %make_build %install %make_install -install -d %{buildroot}%{_datadir}/guile/site/%{g_version} -%delete_la_and_a +%delete_la rm -f %{buildroot}%{_infodir}/dir -bzip2 NEWS - -for i in %{buildroot}%{_infodir}/goops.info; do - iconv -f iso8859-1 -t utf-8 < $i > $i.utf8 && mv -f ${i}{.utf8,} -done -touch %{buildroot}%{_datadir}/guile/site/%{g_version}/slibcat +# Our gdb doesn't support guile yet +rm -f %{buildroot}%{_libdir}/libguile*gdb.scm -ln -s guile %{buildroot}%{_bindir}/guile2 -ln -s guile-tools %{buildroot}%{_bindir}/guile-tools2 +mkdir -p %{buildroot}%{_datadir}/guile/site/%{mver} +touch %{buildroot}%{_datadir}/guile/site/%{mver}/slibcat -find %{buildroot}%{_datadir} -name '*.scm' -exec touch -r "%{_specdir}/guile.spec" '{}' \; -find %{buildroot}%{_libdir} -name '*.go' -exec touch -r "%{_specdir}/guile.spec" '{}' \; +# Adjust mtimes so they are all identical on all architectures. +# When guile.x86_64 and guile.i686 are installed at the same time on an x86_64 system, +# the *.scm files' timestamps change, as they normally reside in /usr/share/guile/. +# Their corresponding compiled *.go file go to /usr/lib64/, or /usr/lib/, depending on the arch. +# The mismatch in timestamps between *.scm and *.go files makes guile to compile itself +# everytime it's run. The following code adjusts the files so that their timestamps are the same +# for every file, but unique between builds. +# See https://bugzilla.redhat.com/show_bug.cgi?id=1208760. +find %{buildroot}%{_datadir} -name '*.scm' -exec touch -r "%{_specdir}/%{name}.spec" '{}' \; +find %{buildroot}%{_libdir} -name '*.go' -exec touch -r "%{_specdir}/%{name}.spec" '{}' \; %check -make check || true - -%ldconfig_scriptlets +%make_build check %triggerin -- slib >= 3b4-1 +rm -f %{_datadir}/guile/site/%{mver}/slibcat export SCHEME_LIBRARY_PATH=%{_datadir}/slib/ - -%{_bindir}/guile --fresh-auto-compile --no-auto-compile -c \ + +# Build SLIB catalog +%{_bindir}/guile%{mver} --fresh-auto-compile --no-auto-compile -c \ "(use-modules (ice-9 slib)) (require 'new-catalog)" &> /dev/null || \ - rm -f %{_datadir}/guile/site/%{g_version}/slibcat + rm -f %{_datadir}/guile/site/%{mver}/slibcat : + + %triggerun -- slib >= 3b4-1 if [ "$2" = 0 ]; then - rm -f %{_datadir}/guile/site/%{g_version}/slibcat + rm -f %{_datadir}/guile/site/%{mver}/slibcat fi %files %doc AUTHORS %license COPYING COPYING.LESSER LICENSE -%{_datadir}/guile/%{g_version}/* -%dir %{_datadir}/guile/site/%{g_version} %{_bindir}/guild %{_bindir}/guile -%{_bindir}/guile2 -%{_bindir}/guile-tools* +%{_bindir}/guile-tools +%{_libdir}/libguile-%{mver}.so.1* %{_libdir}/guile -%{_libdir}/libguile-%{g_version}.so.* -%{_infodir}/guile.info*.gz -%{_infodir}/r5rs.info.gz -%ghost %{_datadir}/guile/site/%{g_version}/slibcat -%exclude %{_libdir}/libguile*gdb.scm +%dir %{_datadir}/guile +%dir %{_datadir}/guile/site +%dir %{_datadir}/guile/%{mver} +%dir %{_datadir}/guile/site/%{mver} +%{_datadir}/guile/%{mver}/ice-9 +%{_datadir}/guile/%{mver}/language +%{_datadir}/guile/%{mver}/oop +%{_datadir}/guile/%{mver}/rnrs +%{_datadir}/guile/%{mver}/scripts +%{_datadir}/guile/%{mver}/srfi +%{_datadir}/guile/%{mver}/sxml +%{_datadir}/guile/%{mver}/system +%{_datadir}/guile/%{mver}/texinfo +%{_datadir}/guile/%{mver}/web +%{_datadir}/guile/%{mver}/guile-procedures.txt +%{_datadir}/guile/%{mver}/*.scm +%{_datadir}/guile/%{mver}/scheme/*.scm +%dir %{_datadir}/guile/%{mver}/scheme +%ghost %{_datadir}/guile/site/%{mver}/slibcat %files devel %{_bindir}/guile-config %{_bindir}/guile-snarf -%{_includedir}/guile/%{g_version}/libguile/*.h -%{_includedir}/guile/%{g_version}/*.h -%{_libdir}/pkgconfig/guile-%{g_version}.pc -%{_libdir}/libguile-%{g_version}.so -%{_datadir}/aclocal/guile.m4 +%{_datadir}/aclocal/* +%{_libdir}/libguile-%{mver}.so +%{_libdir}/pkgconfig/*.pc +%{_includedir}/guile %files help -%doc HACKING NEWS.bz2 README THANKS -%{_mandir}/man1/guile.1.gz +%doc HACKING NEWS README THANKS +%{_mandir}/man1/* +%{_infodir}/* %changelog +* Sat Aug 24 2024 Funda Wang - 5:3.0.10-1 +- update to 3.0.10 + * Mon Aug 19 2024 zhangpan - 5:2.2.7-6 - backport patch from upstream