From c1e776599237c9f7bc6f2adb14eee66d9575c727 Mon Sep 17 00:00:00 2001 From: Anjandev Momi Date: Tue, 26 May 2020 20:01:03 -0700 Subject: [PATCH] guile: update to 3.0.10. Co-authored-by: Anjandev Momi Co-authored-by: =?UTF-8?q?=C3=89rico=20Rolim?= --- common/shlibs | 2 +- srcpkgs/guile/patches/cross.patch | 45 +++++++++++++ srcpkgs/guile/patches/revert-logand.patch | 78 +++++++++++++++++++++++ srcpkgs/guile/patches/test-hashing.patch | 35 ++++++++++ srcpkgs/guile/patches/zfs.patch | 22 +++++++ srcpkgs/guile/template | 35 ++++------ 6 files changed, 194 insertions(+), 23 deletions(-) create mode 100644 srcpkgs/guile/patches/cross.patch create mode 100644 srcpkgs/guile/patches/revert-logand.patch create mode 100644 srcpkgs/guile/patches/test-hashing.patch create mode 100644 srcpkgs/guile/patches/zfs.patch diff --git a/common/shlibs b/common/shlibs index a0d4b5f227b..4b9f7d09e34 100644 --- a/common/shlibs +++ b/common/shlibs @@ -1408,7 +1408,7 @@ libgda-xslt-5.0.so.4 libgda-5.2.9_4 libamtk-5.so.0 amtk-5.0.0_1 libdevhelp-3.so.6 devhelp-libs-3.30.0_1 libunistring.so.2 libunistring-0.9.4_1 -libguile-2.2.so.1 libguile-2.2.7_1 +libguile-3.0.so.1 libguile-3.0.10_1 libopts.so.25 libopts-5.18.4_6 libanjuta-3.so.0 anjuta-3.8.4_1 libgmlib.so.1 gmtk-1.0.8_1 diff --git a/srcpkgs/guile/patches/cross.patch b/srcpkgs/guile/patches/cross.patch new file mode 100644 index 00000000000..ffc0f00d200 --- /dev/null +++ b/srcpkgs/guile/patches/cross.patch @@ -0,0 +1,45 @@ +From c117f8edc471d3362043d88959d73c6a37e7e1e9 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Ludovic=20Court=C3=A8s?= +Date: Wed, 17 Jul 2024 00:00:00 +0200 +Subject: build: Fix in-tree cross-compilation build. +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Commit 57a889b7282dab303c4cdc49cccbbe22f961bd1c fixed out-of-tree +cross-compilation builds but broke in-tree cross-compilation builds. +With this change, we should have both. + +* libguile/Makefile.am (gen-scmconfig.$(OBJEXT)): Use ‘-iquote’ instead +of ‘-I’. +--- + libguile/Makefile.am | 9 ++++----- + 1 file changed, 4 insertions(+), 5 deletions(-) + +diff --git a/libguile/Makefile.am b/libguile/Makefile.am +index 8d8fa27..ce97aba 100644 +--- a/libguile/Makefile.am ++++ b/libguile/Makefile.am +@@ -62,15 +62,14 @@ gen_scmconfig_SOURCES = gen-scmconfig.c + ## Override default rule; this should be compiled for BUILD host. Note + ## that we don't add $(AM_CPPFLAGS) here, as we need to run this + ## program, but $(top_srcdir)/lib has a gnulib configured for the +-## target. Instead we manually add $(top_builddir) and the current +-## directory, in order to pick up the generated config.h and +-## gen-scmconfig.h. Nothing else from Guile is included by this code +-## generator. ++## target. Instead we manually add $(top_builddir) and $(builddir), in ++## order to pick up the generated config.h and gen-scmconfig.h. Nothing ++## else from Guile is included by this code generator. + gen-scmconfig.$(OBJEXT): gen-scmconfig.c + $(AM_V_GEN) \ + if [ "$(cross_compiling)" = "yes" ]; then \ + $(CC_FOR_BUILD) $(DEFS) $(DEFAULT_INCLUDES) -I$(top_builddir) \ +- -I. -c -o $@ $<; \ ++ -iquote$(builddir) -c -o $@ $<; \ + else \ + $(COMPILE) -c -o $@ $<; \ + fi +-- +cgit v1.1 + diff --git a/srcpkgs/guile/patches/revert-logand.patch b/srcpkgs/guile/patches/revert-logand.patch new file mode 100644 index 00000000000..1f7d80aef1b --- /dev/null +++ b/srcpkgs/guile/patches/revert-logand.patch @@ -0,0 +1,78 @@ +Revert of https://git.savannah.gnu.org/cgit/guile.git/commit/?id=d579848cb5d65440af5afd9c8968628665554c22 + +--- b/module/language/cps/specialize-numbers.scm ++++ a/module/language/cps/specialize-numbers.scm +@@ -284,23 +284,18 @@ + + (define significant-bits-handlers (make-hash-table)) + (define-syntax-rule (define-significant-bits-handler ++ ((primop label types out def ...) arg ...) +- ((primop label types out def ...) param arg ...) + body ...) + (hashq-set! significant-bits-handlers 'primop + (lambda (label types out param args defs) + (match args ((arg ...) (match defs ((def ...) body ...))))))) + ++(define-significant-bits-handler ((logand label types out res) a b) +-(define-significant-bits-handler ((logand label types out res) param a b) + (let ((sigbits (sigbits-intersect3 (inferred-sigbits types label a) + (inferred-sigbits types label b) + (intmap-ref out res (lambda (_) 0))))) + (intmap-add (intmap-add out a sigbits sigbits-union) + b sigbits sigbits-union))) +-(define-significant-bits-handler ((logand/immediate label types out res) param a) +- (let ((sigbits (sigbits-intersect3 (inferred-sigbits types label a) +- param +- (intmap-ref out res (lambda (_) 0))))) +- (intmap-add out a sigbits sigbits-union))) + + (define (significant-bits-handler primop) + (hashq-ref significant-bits-handlers primop)) +@@ -561,11 +556,11 @@ + (specialize-unop cps k src op param a + (unbox-u64 a) (box-u64 result)))) + ++ (('logand/immediate (? u64-result? ) param a) +- (('logand/immediate (? u64-result? ) param (? u64-operand? a)) + (specialize-unop cps k src 'ulogand/immediate + (logand param (1- (ash 1 64))) + a ++ (unbox-u64/truncate a) (box-u64 result))) +- (unbox-u64 a) (box-u64 result))) + + (((or 'add/immediate 'sub/immediate 'mul/immediate) + (? s64-result?) (? s64-parameter?) (? s64-operand? a)) +--- b/module/language/cps/type-fold.scm ++++ a/module/language/cps/type-fold.scm +@@ -692,9 +692,13 @@ + ((and (eqv? type1 &fixnum) (eqv? min1 max1) (power-of-two? min1) + (<= 0 min0)) + (with-cps cps ++ (letv mask) ++ (letk kmask ++ ($kargs ('mask) (mask) ++ ($continue k src ++ ($primcall 'logand #f (arg0 mask))))) + (build-term ++ ($continue kmask src ($const (1- min1)))))) +- ($continue k src +- ($primcall 'logand/immediate (1- min1) (arg0)))))) + (else + (with-cps cps #f)))) + +@@ -706,9 +710,13 @@ + (with-cps cps #f)) + ((and (eqv? type1 &fixnum) (eqv? min1 max1) (power-of-two? min1)) + (with-cps cps ++ (letv mask) ++ (letk kmask ++ ($kargs ('mask) (mask) ++ ($continue k src ++ ($primcall 'logand #f (arg0 mask))))) + (build-term ++ ($continue kmask src ($const (1- min1)))))) +- ($continue k src +- ($primcall 'logand/immediate (1- min1) (arg0)))))) + (else + (with-cps cps #f)))) + diff --git a/srcpkgs/guile/patches/test-hashing.patch b/srcpkgs/guile/patches/test-hashing.patch new file mode 100644 index 00000000000..0e4c65cc640 --- /dev/null +++ b/srcpkgs/guile/patches/test-hashing.patch @@ -0,0 +1,35 @@ +From ad1f56675be58fbb7bfee6fab166ff5bf0b36a11 Mon Sep 17 00:00:00 2001 +From: Rob Browning +Date: Mon, 1 Jul 2024 02:14:37 -0500 +Subject: test-hashing: support 32-bit + +* test-suite/standalone/test-hashing.c (test_hashing): add expected +value for 32-bit architectures. +--- + test-suite/standalone/test-hashing.c | 8 +++++++- + 1 file changed, 7 insertions(+), 1 deletion(-) + +diff --git a/test-suite/standalone/test-hashing.c b/test-suite/standalone/test-hashing.c +index 5982a0f..50e1329 100644 +--- a/test-suite/standalone/test-hashing.c ++++ b/test-suite/standalone/test-hashing.c +@@ -38,9 +38,15 @@ test_hashing () + + // Value determined by calling wide_string_hash on {0x3A0, 0x3B5, + // 0x3C1, 0x3AF} via a temporary test program. ++#if SIZEOF_UNSIGNED_LONG == 8 + const unsigned long expect = 4029223418961680680; +- const unsigned long actual = scm_to_ulong (scm_symbol_hash (sym)); ++#elif SIZEOF_UNSIGNED_LONG == 4 ++ const unsigned long expect = 938126682; ++#else ++#error "unsigned long not 4 or 8 bytes (need additonal test data)" ++#endif + ++ const unsigned long actual = scm_to_ulong (scm_symbol_hash (sym)); + if (actual != expect) + { + fprintf (stderr, "fail: unexpected utf-8 symbol hash (%lu != %lu)\n", +-- +cgit v1.1 + diff --git a/srcpkgs/guile/patches/zfs.patch b/srcpkgs/guile/patches/zfs.patch new file mode 100644 index 00000000000..114e1e8b47c --- /dev/null +++ b/srcpkgs/guile/patches/zfs.patch @@ -0,0 +1,22 @@ +These tests fail on ZFS, apparently. + +--- a/test-suite/tests/ports.test ++++ b/test-suite/tests/ports.test +@@ -207,7 +207,7 @@ + (throw 'unresolved))))) + (throw 'unresolved))) + +- (pass-if-equal "SEEK_DATA while in hole" ++ #;(pass-if-equal "SEEK_DATA while in hole" + 4096 + (if (defined? 'SEEK_DATA) + (call-with-input-file file +@@ -219,7 +219,7 @@ + (throw 'unresolved))))) + (throw 'unresolved))) + +- (pass-if-equal "SEEK_HOLE while in hole" ++ #;(pass-if-equal "SEEK_HOLE while in hole" + 10 + (if (defined? 'SEEK_HOLE) + (call-with-input-file file diff --git a/srcpkgs/guile/template b/srcpkgs/guile/template index 517b84e45bd..0e29d2c813f 100644 --- a/srcpkgs/guile/template +++ b/srcpkgs/guile/template @@ -1,42 +1,33 @@ # Template file for 'guile' pkgname=guile -version=2.2.7 -revision=3 +version=3.0.10 +revision=1 build_style=gnu-configure -configure_args="--disable-static --disable-error-on-warning" -hostmakedepends="pkg-config texinfo" +configure_args="--disable-static --disable-error-on-warning + --with-libgmp-prefix=${XBPS_CROSS_BASE}/usr + --with-libunistring-prefix=${XBPS_CROSS_BASE}/usr + --with-libreadline-prefix=${XBPS_CROSS_BASE}/usr" +hostmakedepends="automake pkg-config texinfo" makedepends="gc-devel gmp-devel libatomic_ops-devel libffi-devel libltdl-devel libunistring-devel readline-devel" short_desc="Portable, embeddable Scheme implementation written in C" -maintainer="Orphaned " +maintainer="Anjandev Momi " license="GPL-3.0-or-later, LGPL-3.0-or-later" homepage="http://www.gnu.org/software/guile" -distfiles="${GNU_SITE}/${pkgname}/${pkgname}-${version}.tar.gz" -checksum=44b4c5fbbe257ccdebea18420212c9b3e90c3c86a54920d8554039fc6769a007 -subpackages="libguile guile-devel" - -if [ "$XBPS_ENDIAN" != "$XBPS_TARGET_ENDIAN" ]; then - broken="opposite-endian host generates broken files" -fi - -if [ "$XBPS_TARGET_LIBC" = "glibc" ]; then - makedepends+=" libxcrypt-devel" -fi +distfiles="${GNU_SITE}/guile/guile-${version}.tar.gz" +checksum=2dbdbc97598b2faf31013564efb48e4fed44131d28e996c26abe8a5b23b56c2a if [ "$CROSS_BUILD" ]; then # Need host guile to cross compile + export GUILE_FOR_BUILD=/usr/bin/guile hostmakedepends+=" guile" fi -post_extract() { - # broken files causing crash - rm -rf prebuilt/32-bit-big-endian -} - libguile_package() { short_desc+=" - runtime library" pkg_install() { vmove "usr/lib/*.so.*" + vmove "usr/lib/guile/3.0/extensions/guile-readline.so.*" vmkdir usr/share/gdb/auto-load/usr/lib mv ${PKGDESTDIR}/usr/lib/*.scm ${PKGDESTDIR}/usr/share/gdb/auto-load/usr/lib } @@ -44,7 +35,7 @@ libguile_package() { guile-devel_package() { short_desc+=" - development files" - depends="gmp-devel gc-devel guile>=${version}_${revision} libatomic_ops-devel" + depends="gmp-devel gc-devel guile>=${version}_${revision}" pkg_install() { vmove usr/bin/guile-config vmove usr/include