From 2fc66e5916f324c374ebe7e87557d67488c0b3a4 Mon Sep 17 00:00:00 2001 From: Cyprien Nicolas Date: Sun, 7 Jul 2019 16:31:31 +0200 Subject: [PATCH] dev-scheme/guile: Add 2.2.6 SLOT=2.2 + patches Closes #598986, 590904, 629004 Signed-off-by: Cyprien Nicolas --- dev-scheme/guile/Manifest | 1 + .../files/guile-2.2.6-configure-ldflags.patch | 13 +++ .../guile-2.2.6-tests-00-repl-server.patch | 91 +++++++++++++++++++ dev-scheme/guile/guile-2.2.6.ebuild | 90 ++++++++++++++++++ 4 files changed, 195 insertions(+) create mode 100644 dev-scheme/guile/files/guile-2.2.6-configure-ldflags.patch create mode 100644 dev-scheme/guile/files/guile-2.2.6-tests-00-repl-server.patch create mode 100644 dev-scheme/guile/guile-2.2.6.ebuild diff --git a/dev-scheme/guile/Manifest b/dev-scheme/guile/Manifest index 09b99954521..6643907074b 100644 --- a/dev-scheme/guile/Manifest +++ b/dev-scheme/guile/Manifest @@ -3,3 +3,4 @@ DIST guile-2.0.13.tar.gz 7808173 BLAKE2B e1d59356173b54595512c0322ac596ccf46f566 DIST guile-2.0.14.tar.gz 7823099 BLAKE2B e7fa5a4ca19dc4adfcc151350b0ed4e211b8470b0d12f65451697a818c3139a4a5992a019bd213114748230cb15ec755d1af70d42b901230854915c0ee7b05de SHA512 d69c9bdf589fedcc227f3203012f6ed11c327cef3a0147d8e016fe276abecdb4272625efe1d0c7aa68219fe8f29bbced44089a4b479e4eafe01976c6b2b83633 DIST guile-2.2.3.tar.gz 17266587 BLAKE2B 68751b881bca53e7ab04038483aa8c5a689978d1017e4c944a8142e301e2e13d5ffd2aba73f7b0aa27efd84d068558b96a88452d1e0b79dc04db1921e22a621d SHA512 31df17d28177badf63e1eb0d0d64e6a4d2abe64d4d5e69d8ff33a24dfb10abd25109ea9abfa86f5ff303b43665eb5b8127927f683f3b16139c5b3dc99f06f6fd DIST guile-2.2.4.tar.gz 18094974 BLAKE2B 36e9219bbe675b7ad8a73607a3acddae244a71cac1aff8dac77433da76ecb9f073df723ca3d22a15cf769b2fe5a981aa968bd0983020b3926f08f0b497bdf80e SHA512 a200b83a02ef23c8256d9bfb14a141bb6dbca01279a0587bfb672060429c49093088e4b765b7ee5c85cd587a1aeed77d9438d300d3e67cdd6cebbb794d88171e +DIST guile-2.2.6.tar.gz 18132818 BLAKE2B 9c2f7737d74d9e56bd9e3f42f287f6b48d9e381dff44ca3ad176ad64adf9b0d200c0b8d34a41e34b15ecf24fa28ddccaa9b033cead25583ff9984b5b7c09ced5 SHA512 6a9264c2e10def5e69a0e755fb28a5f09b98bc202660d742b0ee144d4f486b049dcbce8bcece79c3af9421d43df6eca36adf82798520f75b09303f5e8c2092af diff --git a/dev-scheme/guile/files/guile-2.2.6-configure-ldflags.patch b/dev-scheme/guile/files/guile-2.2.6-configure-ldflags.patch new file mode 100644 index 00000000000..c368f98a29d --- /dev/null +++ b/dev-scheme/guile/files/guile-2.2.6-configure-ldflags.patch @@ -0,0 +1,13 @@ +diff --git a/configure.ac b/configure.ac +index 9073deba0..92966ce34 100644 +--- a/configure.ac ++++ b/configure.ac +@@ -1688,7 +1688,7 @@ do + done + + GUILE_CFLAGS="$GUILE_CFLAGS $PTHREAD_CFLAGS" +-GUILE_LIBS="$LDFLAGS $LIBS" ++GUILE_LIBS="$LIBS" + + AC_SUBST(GUILE_LIBS) + AC_SUBST(GUILE_CFLAGS) diff --git a/dev-scheme/guile/files/guile-2.2.6-tests-00-repl-server.patch b/dev-scheme/guile/files/guile-2.2.6-tests-00-repl-server.patch new file mode 100644 index 00000000000..37c7e29821d --- /dev/null +++ b/dev-scheme/guile/files/guile-2.2.6-tests-00-repl-server.patch @@ -0,0 +1,91 @@ +--- guile-2.2.6/test-suite/tests/00-repl-server.test.old 2017-04-14 23:26:40.000000000 +0200 ++++ guile-2.2.6/test-suite/tests/00-repl-server.test 2019-07-07 15:14:59.681831790 +0200 +@@ -105,47 +105,48 @@ + ;;; Since we call 'primitive-fork', these tests must run before any + ;;; tests that create threads. + +-(with-test-prefix "repl-server" ++(if (provided? 'socket) ++ (with-test-prefix "repl-server" + +- (pass-if-equal "simple expression" +- "scheme@(repl-server)> $1 = 42\n" +- (with-repl-server socket +- (read-until-prompt socket %last-line-before-prompt) +- +- ;; Wait until 'repl-reader' in boot-9 has written the prompt. +- ;; Otherwise, if we write too quickly, 'repl-reader' checks for +- ;; 'char-ready?' and doesn't print the prompt. +- (match (select (list socket) '() (list socket) 3) +- (((_) () ()) +- (display "(+ 40 2)\n(quit)\n" socket) +- (read-string socket))))) +- +- (pass-if "HTTP inter-protocol attack" ;CVE-2016-8606 +- (with-repl-server socket +- ;; Avoid SIGPIPE when the server closes the connection. +- (sigaction SIGPIPE SIG_IGN) +- +- (read-until-prompt socket %last-line-before-prompt) +- +- ;; Simulate an HTTP inter-protocol attack. +- (write-request (build-request (string->uri "http://localhost")) +- socket) +- +- ;; Make sure the server reacts by closing the connection. If it +- ;; fails to do that, this test hangs. +- (catch 'system-error +- (lambda () +- (let loop ((n 0)) +- (display "(+ 40 2)\n(quit)\n" socket) ;trigger EPIPE +- (read-string socket) +- (if (> n 5) +- #f ;failure +- (begin +- (sleep 1) +- (loop (+ 1 n)))))) +- (lambda args +- (->bool (memv (system-error-errno args) +- (list ECONNRESET EPIPE ECONNABORTED)))))))) ++ (pass-if-equal "simple expression" ++ "scheme@(repl-server)> $1 = 42\n" ++ (with-repl-server socket ++ (read-until-prompt socket %last-line-before-prompt) ++ ++ ;; Wait until 'repl-reader' in boot-9 has written the prompt. ++ ;; Otherwise, if we write too quickly, 'repl-reader' checks for ++ ;; 'char-ready?' and doesn't print the prompt. ++ (match (select (list socket) '() (list socket) 3) ++ (((_) () ()) ++ (display "(+ 40 2)\n(quit)\n" socket) ++ (read-string socket))))) ++ ++ (pass-if "HTTP inter-protocol attack" ;CVE-2016-8606 ++ (with-repl-server socket ++ ;; Avoid SIGPIPE when the server closes the connection. ++ (sigaction SIGPIPE SIG_IGN) ++ ++ (read-until-prompt socket %last-line-before-prompt) ++ ++ ;; Simulate an HTTP inter-protocol attack. ++ (write-request (build-request (string->uri "http://localhost")) ++ socket) ++ ++ ;; Make sure the server reacts by closing the connection. If it ++ ;; fails to do that, this test hangs. ++ (catch 'system-error ++ (lambda () ++ (let loop ((n 0)) ++ (display "(+ 40 2)\n(quit)\n" socket) ;trigger EPIPE ++ (read-string socket) ++ (if (> n 5) ++ #f ;failure ++ (begin ++ (sleep 1) ++ (loop (+ 1 n)))))) ++ (lambda args ++ (->bool (memv (system-error-errno args) ++ (list ECONNRESET EPIPE ECONNABORTED))))))))) + + ;;; Local Variables: + ;;; eval: (put 'with-repl-server 'scheme-indent-function 1) diff --git a/dev-scheme/guile/guile-2.2.6.ebuild b/dev-scheme/guile/guile-2.2.6.ebuild new file mode 100644 index 00000000000..09bb768ec46 --- /dev/null +++ b/dev-scheme/guile/guile-2.2.6.ebuild @@ -0,0 +1,90 @@ +# Copyright 1999-2019 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +inherit autotools flag-o-matic + +MAJOR="2.2" +DESCRIPTION="GNU Ubiquitous Intelligent Language for Extensions" +HOMEPAGE="https://www.gnu.org/software/guile/" +SRC_URI="mirror://gnu/guile/${P}.tar.gz" + +LICENSE="LGPL-3+" +SLOT="2.2/2.2-1" # libguile-2.2.so.1 => 2.2-1 +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sh ~sparc ~x86 ~ppc-aix ~amd64-fbsd ~x86-fbsd ~amd64-linux ~x86-linux ~ppc-macos ~x64-macos ~x86-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-scheme/guile-2.2:12 + >=dev-libs/boehm-gc-7.0:=[threads?] + dev-libs/gmp:= + virtual/libffi:= + dev-libs/libltdl:= + dev-libs/libunistring:0= + sys-libs/ncurses:0= + sys-libs/readline:0=" +DEPEND="${RDEPEND}" +BDEPEND=" + virtual/pkgconfig + sys-devel/libtool + sys-devel/gettext" + +PATCHES=( + "${FILESDIR}/${PN}-2.2.3-gentoo-sandbox.patch" + "${FILESDIR}/${P}-configure-ldflags.patch" # bug 590904 + "${FILESDIR}/${P}-tests-00-repl-server.patch" # bug 629004 +) +DOCS=( GUILE-VERSION HACKING README ) + +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 \ + --program-suffix="-${MAJOR}" \ + --infodir="${EPREFIX}"/usr/share/info/guile-${MAJOR} \ + --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 + + # The guile.m4 macro files conflicts with other slots + mv "${ED}"/usr/share/aclocal/guile.m4 "${ED}"/usr/share/aclocal/guile-${MAJOR}.m4 || die "rename of guile.m4 failed" + + # 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 +} -- 2.21.0