summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'dev-scheme')
-rw-r--r--dev-scheme/guile/files/guile-2.2.7-fix-buggy-gnulib.patch85
-rw-r--r--dev-scheme/guile/guile-2.2.7-r2.ebuild90
2 files changed, 175 insertions, 0 deletions
diff --git a/dev-scheme/guile/files/guile-2.2.7-fix-buggy-gnulib.patch b/dev-scheme/guile/files/guile-2.2.7-fix-buggy-gnulib.patch
new file mode 100644
index 000000000000..20f04c3b095c
--- /dev/null
+++ b/dev-scheme/guile/files/guile-2.2.7-fix-buggy-gnulib.patch
@@ -0,0 +1,85 @@
+From 76d84a62e84d4206d41ffed16b8baa5af2d1e62f Mon Sep 17 00:00:00 2001
+From: Eli Schwartz <eschwartz93@gmail.com>
+Date: Sun, 26 May 2024 13:02:54 -0400
+Subject: [PATCH 1/2] fix invalid bash code causing the wrong type of failure
+
+test $var = no
+
+fails if $var is only ever defined after this line. gnulib is brilliant
+software and naturally does exactly this, because it is highly logical
+to only define code after you try to use it.
+
+Probably. It's hard to tell because the actual code that gets run is:
+
+func_gl_gnulib_m4code_5264294aa0a5557541b53c8c741f7f31
+
+since the other sparkling aspect of gnulib's innovative brilliance is
+the realization that *of course* the most robust way to design software
+is to use checksums as *replacements* for function names.
+
+Or, "that time Eli got jiatanned by gnulib".
+
+The quoting was silently "fixed" upstream in:
+https://github.com/coreutils/gnulib/commit/db1ee11e2168af7137db53289a92e306d2277b0b
+
+It is the same "fix" we do here, thus restoring dash <--> bash
+compatibility and preventing:
+
+```
+ * QA Notice: Abnormal configure code
+ *
+ * ./configure: 38012: test: =: unexpected operator
+```
+
+although it seems to me gnulib is just more generally broken.
+---
+ m4/timegm.m4 | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/m4/timegm.m4 b/m4/timegm.m4
+index 510e25a..34e5347 100644
+--- a/m4/timegm.m4
++++ b/m4/timegm.m4
+@@ -11,7 +11,7 @@ AC_DEFUN([gl_FUNC_TIMEGM],
+ REPLACE_TIMEGM=0
+ AC_CHECK_FUNCS_ONCE([timegm])
+ if test $ac_cv_func_timegm = yes; then
+- if test $gl_cv_func_working_mktime = no; then
++ if test "$gl_cv_func_working_mktime" = no; then
+ # Assume that timegm is buggy if mktime is.
+ REPLACE_TIMEGM=1
+ fi
+--
+2.44.1
+
+
+From fa98775e2a0bc6e33de851a8bd399635b977d0e6 Mon Sep 17 00:00:00 2001
+From: Eli Schwartz <eschwartz93@gmail.com>
+Date: Sun, 26 May 2024 13:07:25 -0400
+Subject: [PATCH 2/2] gnulib: backport fix for Modern C in round.m4
+
+https://github.com/coreutils/gnulib/commit/f12a7bbb4acaaa72f48e452e04da2a4dd749a664
+
+Fixes undefined exit() by switching it to merely return. That's the
+upstream fix, so use it although arguably one could simply #include the
+headers for functions that are used...
+---
+ m4/round.m4 | 2 +-
+ 1 file changed, 1 insertion(+), 1 deletion(-)
+
+diff --git a/m4/round.m4 b/m4/round.m4
+index 45b7df4..d4ef7f2 100644
+--- a/m4/round.m4
++++ b/m4/round.m4
+@@ -57,7 +57,7 @@ int main()
+ * (double) (1U << ((DBL_MANT_DIG + 3) / 5))
+ * (double) (1U << ((DBL_MANT_DIG + 4) / 5));
+ volatile double x = 0.5 - 0.5 / TWO_MANT_DIG;
+- exit (x < 0.5 && round (x) != 0.0);
++ return (x < 0.5 && round (x) != 0.0);
+ }]])], [gl_cv_func_round_works=yes], [gl_cv_func_round_works=no],
+ [case "$host_os" in
+ netbsd* | aix*) gl_cv_func_round_works="guessing no";;
+--
+2.44.1
+
diff --git a/dev-scheme/guile/guile-2.2.7-r2.ebuild b/dev-scheme/guile/guile-2.2.7-r2.ebuild
new file mode 100644
index 000000000000..e11937c153c9
--- /dev/null
+++ b/dev-scheme/guile/guile-2.2.7-r2.ebuild
@@ -0,0 +1,90 @@
+# Copyright 1999-2024 Gentoo Authors
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=7
+
+inherit autotools
+
+MAJOR="2.2"
+DESCRIPTION="GNU Ubiquitous Intelligent Language for Extensions"
+HOMEPAGE="https://www.gnu.org/software/guile/"
+SRC_URI="mirror://gnu/guile/${P}.tar.xz"
+
+LICENSE="LGPL-3+"
+SLOT="12/2.2-1" # libguile-2.2.so.1 => 2.2-1
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos"
+IUSE="debug debug-malloc +deprecated +networking +nls +regex +threads" # upstream recommended +networking +nls
+REQUIRED_USE="regex" # workaround for bug 596322
+RESTRICT="strip"
+
+RDEPEND="
+ >=dev-libs/boehm-gc-7.0:=[threads?]
+ dev-libs/gmp:=
+ dev-libs/libffi:=
+ dev-libs/libltdl:=
+ dev-libs/libunistring:0=
+ sys-libs/ncurses:0=
+ sys-libs/readline:0=
+ virtual/libcrypt:="
+DEPEND="${RDEPEND}"
+BDEPEND="
+ virtual/pkgconfig
+ dev-build/libtool
+ sys-devel/gettext"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-2.2.3-gentoo-sandbox.patch"
+ "${FILESDIR}/${PN}-2.2.7-stack-up.patch"
+ # Modern C bug in round.m4
+ # /bin/sh bug in timegm.m4
+ "${FILESDIR}"/${PN}-2.2.7-fix-buggy-gnulib.patch
+)
+
+# guile generates ELF files without use of C or machine code
+# It's a portage's false positive. bug #677600
+QA_PREBUILT='*[.]go'
+
+DOCS=( GUILE-VERSION HACKING README )
+
+src_prepare() {
+ default
+ eautoreconf
+}
+
+src_configure() {
+ # see bug #676468
+ mv prebuilt/32-bit-big-endian{,.broken} || die
+
+ 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
+
+ # 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
+
+ find "${D}" -name '*.la' -delete || die
+}