summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCyprien Nicolas (fulax) <gentoo@fulax.fr>2019-06-23 17:58:55 +0200
committerCyprien Nicolas (fulax) <gentoo@fulax.fr>2019-06-23 17:58:55 +0200
commit48f0e9ff67868013bcf43f044b297425ae451117 (patch)
tree3c90677f076884418551fbd35a54f7a53e5abc98 /dev-scheme
parentdev-scheme/guile-lib: Add patch for slotted guile, bump to 0.2.6.1 (diff)
downloadlisp-48f0e9ff67868013bcf43f044b297425ae451117.tar.gz
lisp-48f0e9ff67868013bcf43f044b297425ae451117.tar.bz2
lisp-48f0e9ff67868013bcf43f044b297425ae451117.zip
dev-scheme/guile: append -fno-fast-math to cflags, bug #598986
Package-Manager: Portage-2.3.66, Repoman-2.3.11
Diffstat (limited to 'dev-scheme')
-rw-r--r--dev-scheme/guile/Manifest12
-rw-r--r--dev-scheme/guile/files/guile-2-snarf.patch47
-rw-r--r--dev-scheme/guile/files/guile-2.0.14-darwin.patch38
-rw-r--r--dev-scheme/guile/files/guile-2.0.14-ia64-fix-crash-thread-context-switch.patch63
-rw-r--r--dev-scheme/guile/files/guile-2.0.14-tests-repl-server.patch25
-rw-r--r--dev-scheme/guile/guile-2.0.14-r4.ebuild89
-rw-r--r--dev-scheme/guile/guile-2.2.5.ebuild2
-rw-r--r--dev-scheme/guile/guile-2.9.2.ebuild2
-rw-r--r--dev-scheme/guile/guile-9999.ebuild2
9 files changed, 277 insertions, 3 deletions
diff --git a/dev-scheme/guile/Manifest b/dev-scheme/guile/Manifest
index 2c9c7f93..c102031f 100644
--- a/dev-scheme/guile/Manifest
+++ b/dev-scheme/guile/Manifest
@@ -1,7 +1,13 @@
+AUX guile-2-snarf.patch 1274 BLAKE2B e9efdd1e14560579131ecff748add4f97de730678e6f766681be72f95bf99ab36edd8bc7279701084d13f3fa762968af814760bcf9b8778c73c956c282bb3c93 SHA512 49d015b08d0bcf5d27aa43d4a595b2ccb4366dffe0f5d159162c8c7747fb9fdbe84056a737f3c81a6e39281d91109bfa4aa98c85dd0e757c17ab668a1dd46f24
+AUX guile-2.0.14-darwin.patch 1026 BLAKE2B 9193732cfb74931f7bf8e9b55c5c9dd2621ef6271c8d18190e0ed94d90decde85272f271bbbe7d3c4dd0dd509e51fae3f7f0af42872a0b9ebb87396c9e69a9d2 SHA512 151d19f171656105d87336f81dd8c34273d07a3e88aa03ac5ca8d640c79ab317a90ef06097858bf627e4666fba747faea45237c73e7bc6462d19d8f0d1904d53
+AUX guile-2.0.14-ia64-fix-crash-thread-context-switch.patch 2426 BLAKE2B 5b2073a3780794e9466d8e5434ab98a91a821408ab792abbfaf61d09c95e113b99746b0da850115b4534bda00b1313cef5bb9b08c90c8bf9a04c81b1eb78faa3 SHA512 082f98ac4ee2f40dd3762006bf5c43022088b2286c9a8d63ae9e234d3c8527f3afcfba8076e0c8578e7fbed257294db6ce1a4513661b89f821579dc121d449ae
+AUX guile-2.0.14-tests-repl-server.patch 964 BLAKE2B 08ee4f7399b108c7bc30314b28b7e53e632a74e5d00e1a3d149c0771cbd2bbd91942a8e7a6c68680b5f2ace5648780b81466bdb9bbec48607753cddcb03298ac SHA512 e5a67524011e69fdd14c8feb70b42b1860fcce0dd889cf0defab48f7508391e14e0da24065cac040beeaeade445d5dd36f71d75d2fe4fae22cd14aff74b66898
AUX guile-2.2.3-gentoo-sandbox.patch 361 BLAKE2B 997d4cec108f302f34b42c59c78d420c858f964b8587bed523d95fadedbf9981dd9c196934299413db9c23e940a4b88e798e4fff65cdea1507968494338313ba SHA512 450f44cbd2b3f0c7c02963c35e58e8d0e4a7192239993215b69713d8a1109692ab1e153efe685c27681069477a56e7bc52b34ebd8717a2c8695be8c6b8abe673
+DIST guile-2.0.14.tar.gz 7823099 BLAKE2B e7fa5a4ca19dc4adfcc151350b0ed4e211b8470b0d12f65451697a818c3139a4a5992a019bd213114748230cb15ec755d1af70d42b901230854915c0ee7b05de SHA512 d69c9bdf589fedcc227f3203012f6ed11c327cef3a0147d8e016fe276abecdb4272625efe1d0c7aa68219fe8f29bbced44089a4b479e4eafe01976c6b2b83633
DIST guile-2.2.5.tar.gz 18126413 BLAKE2B 9b52402417ba62236c101b283cc4c1a1cac19d93c96b1df814ab357cb6e1aef2ef086e2181719d747f468841a5dd1c5146c062984280808ac64a5c7dfde85dba SHA512 1c07a6d16e00953d416bd8db5b1e9574c62751f745c203de5a910b9688cf93756fe2303ab084d9e9949bff11e6e14909304ecd1ef671be2a06c7c3f292f6380c
DIST guile-2.9.2.tar.gz 21564297 BLAKE2B 23ef2f2036bffe908d2aa6f9c9528d4883a58e9223d30bc8bb9c0159a7c6ca12b2580b6d1c698fba99265731d6fa4b00db141ef64351347348aa9c6d6641c5c3 SHA512 91dfb47bfaa20a53e961cec4f4ea29a81a2da5e5118726c003379e3202a5e5dad6c5dd6f0f4d9e17119c9431f59c0ae61ed2142628b2221029831e7e99d5587b
-EBUILD guile-2.2.5.ebuild 2453 BLAKE2B c3cad7c92ff8fc9e7234617466d32c717677aeee5f7ffbb2c35aed1a0d2e1dab87607e53caae27bebd01ee57667257b5bc543eb7269c70a65db929850ae23135 SHA512 34a9dd0095541de56aa82c44d28aad3f25e3960015fa7944230b9264495faa8e53febb1c4ba4e261679558854f1dd518e14a0f7da9b7ffb39d8c6de783ba9b61
-EBUILD guile-2.9.2.ebuild 2386 BLAKE2B 6a5cc1773c52301d334985739d58ee85318cdf05262a8c7f5e8bf2d946a5b244742a4b72464f32190569d425c72829e57c9ea67e46a1cddaff81e851a3117aed SHA512 5ad352b874fae0dfd52ee728141962456ba45a86924454a8b15e46c1bd80f68a04368739de393203f16903cd02a089a6b7db48cf742b5ba0f49a4e5e86d4a26e
-EBUILD guile-9999.ebuild 2313 BLAKE2B 81f3e627fbce2fca9d133203a7f004a2bf07e6832a82059791663e627a7271d13126509df1a423c8a61ff71055f9abf4781a100189ec42ec2af5df9510aac732 SHA512 ffed3103570111bae217e41dc760097a0558a0cbce63249b8537e3de1c85b76c508c97c0ac7bd57acf866416aac94d166fcdd64629982c84aab5ad5cac65d9ba
+EBUILD guile-2.0.14-r4.ebuild 2352 BLAKE2B 5ffa28dddf88b6e55f40e8b917767be9a4714719a6a2f380c01842f3cba08d296163f68a53332ef3846acaea1377cbfad62d817da8b0f66fec730f9e86aff366 SHA512 2aafc7934658b7d7e3e8df632890affa409e3aabf5d782e98da1812f2cc58870a4e80a4c726c2980df3d862d91a35c20c90978008fa2e1ede23422bc285f0e30
+EBUILD guile-2.2.5.ebuild 2519 BLAKE2B 2c7cb0deeb7b534b009d5e4f191c26c43173c1f6d92e7001c6ad01c463bd9f5f657fc97ed2ee60c3997c48cbbf68e8daf5431538554b9b089933331726fc7701 SHA512 518aa88e02a930f7bb283e9c56fe84810c06f591e0dfd8cdaaa4e804b6ef5bb4b706a10887bd9863987b2099f0cafe3b4c2e8c88bdb8630f6d28ecd74fc24ef8
+EBUILD guile-2.9.2.ebuild 2452 BLAKE2B beef273c96d341df0cf5642d37f6ff0686aa79e9371553101322e73ee9e35ce8bd6eb5078fdb9c74d5de386539818e8d9e308a192b7e8c64d7b603ee9f0aec49 SHA512 6df90f4a9b5dd135894c913b4e608d1abfb974b9e790023c243ab7d52c408b7eb7c8ea3966ca6778401bac7fc15b9c1c6b9b4f4bfc2f0bf4755c74aa5b772d73
+EBUILD guile-9999.ebuild 2379 BLAKE2B e064e9946f66f4e4b24e5f5fc2f56042eb1eb9d373e722e8d98e4eb0a3439a7111e610581831792797c319fcd4e19557cc1725d37de5462629b348bd5bdbe6d5 SHA512 4c8c25472d129ad3a6323bb77a665427041f24189c58d5c8dedad8a3b5a4d35b828d837268173887c182db9313ec04780aefce20a3e6e155f7989a6bbc8f7ed0
MISC metadata.xml 853 BLAKE2B 14e193fda4ff6397d2ab6aedaeab4320883da005e869491072deb1a38a0afab199692466dd7321cf0e6ca79c3f198f64efbb3a611dcd653ce514cc81d78a78e1 SHA512 958758b1ff1a2fc0a4fe9931b74fa38450b52a2081738f2dfc3b6310433ab01ed68752e256ecb9c4f23db7a22d14e0e72da1f99208be012550c62e308b349667
diff --git a/dev-scheme/guile/files/guile-2-snarf.patch b/dev-scheme/guile/files/guile-2-snarf.patch
new file mode 100644
index 00000000..c6ab5cd4
--- /dev/null
+++ b/dev-scheme/guile/files/guile-2-snarf.patch
@@ -0,0 +1,47 @@
+From f775ab3654357fcaad294b95efb0b1c16de1eda8 Mon Sep 17 00:00:00 2001
+From: Sergei Trofimovich <slyfox@gentoo.org>
+Date: Sun, 19 Feb 2017 22:58:40 +0000
+Subject: guile-snarf: skip -g* arguments to avoid build failure
+
+* libguile/guile-snarf.in: skip -g* arguments to avoid failure on
+ -ggdb3.
+
+Bug: https://bugs.gentoo.org/608190
+Bug: http://debbugs.gnu.org/cgi/bugreport.cgi?bug=25803
+Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
+---
+ libguile/guile-snarf.in | 16 ++++++++++++++--
+ 1 file changed, 14 insertions(+), 2 deletions(-)
+
+diff --git a/libguile/guile-snarf.in b/libguile/guile-snarf.in
+index 47bbc04..22dc1d3 100644
+--- a/libguile/guile-snarf.in
++++ b/libguile/guile-snarf.in
+@@ -95,10 +95,22 @@ if [ x"$CPP" = x ] ; then cpp="@CPP@" ; else cpp="$CPP" ; fi
+
+ trap "rm -rf $tempdir" 0 1 2 15
+
++# filter out -g* flags from commandline
++# as some flags like -ggdb3 cause CPP
++
++cpp_args=""
++for arg in "$@"
++do
++ case "$arg" in
++ -g*) ;; # skip debug flag
++ *) cpp_args="$cpp_args $arg" ;;
++ esac
++done
++
+ if [ ! "$outfile" = "-" ] ; then
+- modern_snarf "$@" > $outfile
++ modern_snarf $cpp_args > $outfile
+ else
+- modern_snarf "$@"
++ modern_snarf $cpp_args
+ fi
+
+ # zonk outfile if errors occurred
+--
+cgit v1.0-41-gc330
+
diff --git a/dev-scheme/guile/files/guile-2.0.14-darwin.patch b/dev-scheme/guile/files/guile-2.0.14-darwin.patch
new file mode 100644
index 00000000..17741ae3
--- /dev/null
+++ b/dev-scheme/guile/files/guile-2.0.14-darwin.patch
@@ -0,0 +1,38 @@
+fix compilation on Darwin
+
+https://debbugs.gnu.org/cgi/bugreport.cgi?bug=24862#23
+https://bugs.gentoo.org/show_bug.cgi?id=612338
+
+--- guile-2.0.14/libguile/filesys.c
++++ guile-2.0.14/libguile/filesys.c
+@@ -1486,6 +1486,9 @@
+ mode_bits = scm_i_mode_bits (mode);
+ }
+
++#ifdef __APPLE__
++ open_flags &= O_APPEND|O_SHLOCK|O_EXLOCK|O_CLOEXEC;
++#endif
+ SCM_SYSCALL (rv = mkostemp (c_tmpl, open_flags));
+ if (rv == -1)
+ SCM_SYSERROR;
+--- guile-2.0.14/libguile/stime.c
++++ guile-2.0.14/libguile/stime.c
+@@ -830,6 +830,10 @@
+
+ #ifdef HAVE_POSIX_CPUTIME
+ {
++#ifdef __APPLE__
++ if (clock_gettime (CLOCK_PROCESS_CPUTIME_ID, &posix_run_time_base) == 0)
++ get_internal_run_time = get_internal_run_time_posix_timer;
++#else
+ clockid_t dummy;
+
+ /* Only use the _POSIX_CPUTIME clock if it's going to work across
+@@ -839,6 +843,7 @@
+ get_internal_run_time = get_internal_run_time_posix_timer;
+ else
+ errno = 0;
++#endif
+ }
+ #endif /* HAVE_POSIX_CPUTIME */
+ #endif /* HAVE_CLOCKTIME */
diff --git a/dev-scheme/guile/files/guile-2.0.14-ia64-fix-crash-thread-context-switch.patch b/dev-scheme/guile/files/guile-2.0.14-ia64-fix-crash-thread-context-switch.patch
new file mode 100644
index 00000000..c2f136dd
--- /dev/null
+++ b/dev-scheme/guile/files/guile-2.0.14-ia64-fix-crash-thread-context-switch.patch
@@ -0,0 +1,63 @@
+From f92888853439a8ded221f3423865c78de2a96a14 Mon Sep 17 00:00:00 2001
+From: Sergei Trofimovich <slyfox@gentoo.org>
+Date: Sun, 5 Nov 2017 09:30:45 +0000
+Subject: ia64: Fix crash in thread context switch.
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+Fixes <https://bugs.gnu.org/29151> and <https://bugs.gentoo.org/613986>.
+
+Backtrace looks like that:
+
+ Program terminated with signal SIGSEGV, Segmentation fault.
+ #0 0x200000000014a5c0 in scm_ia64_longjmp (JB=0x6000000000817020, VAL=1) at continuations.c:372
+ 372 t->pending_rbs_continuation->backing_store,
+ [Current thread is 1 (Thread 0x2000000000049340 (LWP 8190))]
+ (gdb) bt
+ #0 0x200000000014a5c0 in scm_ia64_longjmp (JB=0x6000000000817020, VAL=1) at continuations.c:372
+ #1 0x2000000000148e00 in scm_c_abort (vm=0x60000000000edea0, tag=0x6000000000795ba0, n=0, argv=0x60000fffff7f0ce0, cookie=-1) at control.c:239
+ #2 0x2000000000149070 in scm_at_abort (tag=0x6000000000795ba0, args=0x304) at control.c:258
+ (gdb) print t
+ $2 = (scm_i_thread *) 0x6000000000068000
+ (gdb) print t->pending_rbs_continuation
+ $3 = (scm_t_contregs *) 0xffeb
+
+The problem here is the value of 't->pending_rbs_continuation' pointer.
+It's supposed to poin to a register stack pointer or be NULL if not yet
+backed up.
+
+The problem is it is never initialized to NULL at creation time and
+contained garbage on stack. Sometimes people are lucky and have zeros
+on stack and guile works. But sometimes there is something and guile
+crashes.
+
+The fix is trivial: initialize 'pending_rbs_continuation = NULL'
+at thread registration time (the same way other threads are registered).
+
+Reported-by: Matt Turner
+
+* libguile/threads.c (guilify_self_1): Initialize pending_rbs_continuation
+to avoid crash on ia64.
+
+Signed-off-by: Sergei Trofimovich <slyfox@gentoo.org>
+Signed-off-by: Ludovic Courtès <ludo@gnu.org>
+---
+ libguile/threads.c | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/libguile/threads.c b/libguile/threads.c
+index 9ceb5b8..770f62c 100644
+--- a/libguile/threads.c
++++ b/libguile/threads.c
+@@ -395,6 +395,7 @@ guilify_self_1 (struct GC_stack_base *base, int needs_unregister)
+ t.base = base->mem_base;
+ #ifdef __ia64__
+ t.register_backing_store_base = base->reg_base;
++ t.pending_rbs_continuation = 0;
+ #endif
+ t.continuation_root = SCM_EOL;
+ t.continuation_base = t.base;
+--
+cgit v1.0-41-gc330
+
diff --git a/dev-scheme/guile/files/guile-2.0.14-tests-repl-server.patch b/dev-scheme/guile/files/guile-2.0.14-tests-repl-server.patch
new file mode 100644
index 00000000..15c78a46
--- /dev/null
+++ b/dev-scheme/guile/files/guile-2.0.14-tests-repl-server.patch
@@ -0,0 +1,25 @@
+--- guile-2.2.5/test-suite/tests/00-repl-server.test.old 2017-04-14 23:26:40.000000000 +0200
++++ guile-2.2.5/test-suite/tests/00-repl-server.test 2019-06-23 12:16:10.624115938 +0200
+@@ -27,7 +27,7 @@
+ (define (call-with-repl-server proc)
+ "Set up a REPL server in a separate process and call PROC with a
+ socket connected to that server."
+- (let ((sockaddr (make-socket-address AF_UNIX "/tmp/repl-server"))
++ (let ((sockaddr (make-test-socket-address))
+ (client-socket (socket AF_UNIX SOCK_STREAM 0)))
+ (false-if-exception
+ (delete-file (sockaddr:path sockaddr)))
+@@ -86,6 +86,13 @@
+ (lambda (client-socket)
+ body ...)))
+
++(define (make-test-socket-address)
++ (catch 'unbound-variable
++ (lambda ()
++ (make-socket-address AF_UNIX "/tmp/repl-server"))
++ (lambda (key . args)
++ (throw 'unresolved))))
++
+ (define (read-until-prompt port str)
+ "Read from PORT until STR has been read or the end-of-file was
+ reached."
diff --git a/dev-scheme/guile/guile-2.0.14-r4.ebuild b/dev-scheme/guile/guile-2.0.14-r4.ebuild
new file mode 100644
index 00000000..f68b2613
--- /dev/null
+++ b/dev-scheme/guile/guile-2.0.14-r4.ebuild
@@ -0,0 +1,89 @@
+# Copyright 1999-2019 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=6
+inherit flag-o-matic autotools ltprune
+
+DESCRIPTION="GNU Ubiquitous Intelligent Language for Extensions"
+HOMEPAGE="https://www.gnu.org/software/guile/"
+SRC_URI="mirror://gnu/guile/${P}.tar.gz"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~ppc-aix ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-macos"
+LICENSE="LGPL-3+"
+IUSE="debug debug-malloc +deprecated +networking +nls +regex +threads" # upstream recommended +networking +nls
+# emacs useflag removal not working
+
+# workaround for bug 596322
+REQUIRED_USE="regex"
+
+RDEPEND="
+ >=dev-libs/boehm-gc-7.0:=[threads?]
+ dev-libs/gmp:=
+ virtual/libffi:=
+ dev-libs/libltdl:=
+ dev-libs/libunistring:0=
+ sys-devel/libtool
+ sys-libs/ncurses:0=
+ sys-libs/readline:0="
+DEPEND="${RDEPEND}
+ virtual/pkgconfig
+ sys-apps/texinfo
+ sys-devel/gettext"
+
+SLOT="12/22" # subslot is soname version
+MAJOR="2.0"
+
+DOCS=( GUILE-VERSION HACKING README )
+
+PATCHES=(
+ "${FILESDIR}/${PN}-2-snarf.patch"
+ "${FILESDIR}/${P}-darwin.patch"
+ "${FILESDIR}/${P}-ia64-fix-crash-thread-context-switch.patch"
+ "${FILESDIR}/${P}-tests-repl-server.patch"
+)
+
+src_prepare() {
+ default
+ eautoreconf
+}
+
+src_configure() {
+ # see bug #178499
+ filter-flags -ftree-vectorize
+ # see bug #598986
+ append-cflags $(test-flags-CC -fno-fast-math)
+
+ econf \
+ --disable-error-on-warning \
+ --disable-rpath \
+ --disable-static \
+ --enable-posix \
+ --without-libgmp-prefix \
+ --without-libiconv-prefix \
+ --without-libintl-prefix \
+ --without-libltdl-prefix \
+ --without-libreadline-prefix \
+ --without-libunistring-prefix \
+ $(use_enable debug guile-debug) \
+ $(use_enable debug-malloc) \
+ $(use_enable deprecated) \
+ $(use_enable networking) \
+ $(use_enable nls) \
+ $(use_enable regex) \
+ $(use_with threads)
+}
+
+src_install() {
+ default
+ prune_libtool_files
+
+ # From Novell
+ # https://bugzilla.novell.com/show_bug.cgi?id=874028#c0
+ dodir /usr/share/gdb/auto-load/$(get_libdir)
+ mv "${ED}"/usr/$(get_libdir)/libguile-*-gdb.scm "${ED}"/usr/share/gdb/auto-load/$(get_libdir) || die
+
+ # necessary for registering slib, see bug 206896
+ keepdir /usr/share/guile/site
+
+ # Dark magic necessary for some deps
+ dosym libguile-2.0.so /usr/$(get_libdir)/libguile.so
+}
diff --git a/dev-scheme/guile/guile-2.2.5.ebuild b/dev-scheme/guile/guile-2.2.5.ebuild
index 2e0088b0..23095046 100644
--- a/dev-scheme/guile/guile-2.2.5.ebuild
+++ b/dev-scheme/guile/guile-2.2.5.ebuild
@@ -38,6 +38,8 @@ DOCS=( GUILE-VERSION HACKING README )
src_configure() {
# see bug #178499
filter-flags -ftree-vectorize
+ # see bug #598986
+ append-cflags $(test-flags-CC -fno-fast-math)
econf \
--program-suffix="-${MAJOR}" \
diff --git a/dev-scheme/guile/guile-2.9.2.ebuild b/dev-scheme/guile/guile-2.9.2.ebuild
index f15a1db5..852109f4 100644
--- a/dev-scheme/guile/guile-2.9.2.ebuild
+++ b/dev-scheme/guile/guile-2.9.2.ebuild
@@ -37,6 +37,8 @@ DOCS=( GUILE-VERSION HACKING README )
src_configure() {
# see bug #178499
filter-flags -ftree-vectorize
+ # see bug #598986
+ append-cflags $(test-flags-CC -fno-fast-math)
econf \
--program-suffix="-${MAJOR}" \
diff --git a/dev-scheme/guile/guile-9999.ebuild b/dev-scheme/guile/guile-9999.ebuild
index 8feb94b2..f571ceed 100644
--- a/dev-scheme/guile/guile-9999.ebuild
+++ b/dev-scheme/guile/guile-9999.ebuild
@@ -44,6 +44,8 @@ src_prepare() {
src_configure() {
# see bug #178499
filter-flags -ftree-vectorize
+ # see bug #598986
+ append-cflags $(test-flags-CC -fno-fast-math)
econf \
--program-suffix="-${MAJOR}" \