commit:     b031eefc4323d44e065e23611efb8400ebaa0416
Author:     Akinori Hattori <hattya <AT> gentoo <DOT> org>
AuthorDate: Sun Nov 27 07:34:58 2016 +0000
Commit:     Akinori Hattori <hattya <AT> gentoo <DOT> org>
CommitDate: Sun Nov 27 07:34:58 2016 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=b031eefc

dev-scheme/gauche: new upstream release

Package-Manager: portage-2.3.0

 dev-scheme/gauche/Manifest                         |   1 +
 dev-scheme/gauche/files/gauche-0.9.5-bsd.patch     |  25 +++++
 .../gauche/files/gauche-0.9.5-libressl.patch       |  19 ++++
 dev-scheme/gauche/files/gauche-0.9.5-main.patch    | 116 +++++++++++++++++++++
 dev-scheme/gauche/files/gauche-0.9.5-unicode.patch |  19 ++++
 dev-scheme/gauche/files/gauche-ext-ldflags.patch   |  11 ++
 dev-scheme/gauche/files/gauche-gauche.m4.patch     |  18 ++++
 dev-scheme/gauche/files/gauche-rfc.tls.patch       |  12 +++
 dev-scheme/gauche/files/gauche-rpath.patch         |  10 ++
 dev-scheme/gauche/files/gauche-xz-info.patch       |  31 ++++++
 dev-scheme/gauche/gauche-0.9.5.ebuild              |  59 +++++++++++
 11 files changed, 321 insertions(+)

diff --git a/dev-scheme/gauche/Manifest b/dev-scheme/gauche/Manifest
index 18a8e5c..1a47c40 100644
--- a/dev-scheme/gauche/Manifest
+++ b/dev-scheme/gauche/Manifest
@@ -1,2 +1,3 @@
 DIST Gauche-0.9.3.3.tgz 5042189 SHA256 
3d8b70075faa0f7a24f8d112cc102ee3e1066680cdd19d324d59f33fab79caac SHA512 
5743781d88454d579d853a50c5c7651c52bdcea8b7b2130408e1c7761cee73edfdebaf258342e837ef7d5a3886e08bbb33b2862d1e19585f519ada5cb7475d1c
 WHIRLPOOL 
7b11d62dc3917c3559897833da1248a3f54644159465df0d628fc5b761773ff59740231f57a7add62f2d0b03952f4f18daaf1be7598940d3b0a4719db2c767ab
 DIST Gauche-0.9.4.tgz 5601987 SHA256 
7b18bcd70beaced1e004594be46c8cff95795318f6f5830dd2a8a700410fc149 SHA512 
815e719d78950a31c238fd7879e09f40d6b3a83a3ebf9d5f7cd3cc7ada081e5f20fbc6b432900e3455bc59e5e60014bf77605b8c9c5f27def53f89284b9cfca3
 WHIRLPOOL 
354ef81913c6f617589590299f616a50dc1e1313e00d61f0918c9b6c20c0358878cd505f3fb02efa4615730380a6db6bd790e241871fde6cd6e11a662efb113c
+DIST Gauche-0.9.5.tgz 6458675 SHA256 
4c8a53213de112708bbda5fa9648c21497d43ebf809ed5b32b15f21266b4e73c SHA512 
6d853d734c7a56a86f0015b1bfef378803d6acc1e0405ed841eab5afc08d1edef736d85df10c86d75fd5fb6b2def684bb1f2095a019133b9f497192f5511197a
 WHIRLPOOL 
b29a81a920fac514866dd4a4e2911f2336d37b84ef3b9b3f50a5386f01dacea05580799ff7941e58ba4e29a9eac9289ca5037cd1b49d28a1b05e5bb2a892a907

diff --git a/dev-scheme/gauche/files/gauche-0.9.5-bsd.patch 
b/dev-scheme/gauche/files/gauche-0.9.5-bsd.patch
new file mode 100644
index 00000000..615020d
--- /dev/null
+++ b/dev-scheme/gauche/files/gauche-0.9.5-bsd.patch
@@ -0,0 +1,25 @@
+commit da2ea76503e8f1784d0f0be26435d4c8e0d1b12f
+Author: Shiro Kawai <sh...@acm.org>
+Date:   Sat Oct 15 11:44:28 2016 -1000
+
+    Avoid preprocessor symbols redefinition on OpenBSD
+
+    https://sourceforge.net/p/gauche/mailman/message/35429549/
+
+diff --git a/ext/net/gauche-net.h b/ext/net/gauche-net.h
+index d4f1dcd..decba64 100644
+--- a/ext/net/gauche-net.h
++++ b/ext/net/gauche-net.h
+@@ -362,8 +362,12 @@ extern ScmObj Scm_GetAddrinfo(const char *nodename,
+                               struct addrinfo *hints);
+ extern ScmObj Scm_GetNameinfo(ScmSockAddr *addr, int flags);
+ 
++#ifndef NI_MAXHOST
+ #define NI_MAXHOST  1025
++#endif
++#ifndef NI_MAXSERV
+ #define NI_MAXSERV    32
++#endif
+ 
+ #endif /* HAVE_IPV6 */
+ 

diff --git a/dev-scheme/gauche/files/gauche-0.9.5-libressl.patch 
b/dev-scheme/gauche/files/gauche-0.9.5-libressl.patch
new file mode 100644
index 00000000..7b4c839
--- /dev/null
+++ b/dev-scheme/gauche/files/gauche-0.9.5-libressl.patch
@@ -0,0 +1,19 @@
+commit c26a4836e767807dd8c98d280c4d9e742b759edd
+Author: Shiro Kawai <sh...@acm.org>
+Date:   Sun Oct 9 02:04:19 2016 -1000
+
+    rfc.tls - Detect LibreSSL as well
+
+diff --git a/ext/tls/test.scm b/ext/tls/test.scm
+index 63a1d04..efbfbca 100644
+--- a/ext/tls/test.scm
++++ b/ext/tls/test.scm
+@@ -37,7 +37,7 @@
+      [(not gauche.os.windows)
+       (guard (e [(<process-abnormal-exit> e)
+                  (no-openssl "couldn't run openssl command")])
+-        (if-let1 m ($ #/OpenSSL\s+([\d\.]+\w*)/
++        (if-let1 m ($ #/(?:OpenSSL|LibreSSL)\s+([\d\.]+\w*)/
+                       $ process-output->string `(,openssl-cmd "version"))
+           (let1 vers (m 1)
+             (unless (version>=? vers "1.0.1")

diff --git a/dev-scheme/gauche/files/gauche-0.9.5-main.patch 
b/dev-scheme/gauche/files/gauche-0.9.5-main.patch
new file mode 100644
index 00000000..20f7070
--- /dev/null
+++ b/dev-scheme/gauche/files/gauche-0.9.5-main.patch
@@ -0,0 +1,116 @@
+commit 97196adb9dab30e7ab610daf4cc486bfc01ed403
+Author: Shiro Kawai <sh...@acm.org>
+Date:   Mon Oct 17 11:00:44 2016 -1000
+
+    Fix main.c to call 'main' proc properly
+
+    https://github.com/shirok/Gauche/issues/244
+
+diff --git a/src/core.c b/src/core.c
+index 923d116..fc01211 100644
+--- a/src/core.c
++++ b/src/core.c
+@@ -653,9 +653,14 @@ void Scm_SimpleMain(int argc, const char *argv[],
+     ScmModule *user = Scm_UserModule();
+     ScmObj mainproc = Scm_GlobalVariableRef(user, 
SCM_SYMBOL(SCM_INTERN("main")), 0);
+     if (SCM_PROCEDUREP(mainproc)) {
+-        ScmObj r = Scm_ApplyRec1(mainproc, args);
+-        if (SCM_INTP(r)) Scm_Exit(SCM_INT_VALUE(r));
+-        else             Scm_Exit(70);
++        static ScmObj run_main_proc = SCM_UNDEFINED;
++        SCM_BIND_PROC(run_main_proc, "run-main", Scm_GaucheInternalModule());
++        SCM_ASSERT(SCM_PROCEDUREP(run_main_proc));
++
++        ScmEvalPacket epak;
++        int r = Scm_Apply(run_main_proc, SCM_LIST2(mainproc, args), &epak);
++        SCM_ASSERT(r == 1 && SCM_INTP(epak.results[0]));
++        Scm_Exit(SCM_INT_VALUE(epak.results[0]));
+     } else {
+         Scm_Exit(70);
+     }
+diff --git a/src/libeval.scm b/src/libeval.scm
+index 2a2c1fc..279fd7f 100644
+--- a/src/libeval.scm
++++ b/src/libeval.scm
+@@ -370,6 +370,17 @@
+        (loop1)))))
+ 
+ ;;;
++;;; Kick 'main' procedure
++;;;   Returns an integer suitable for the exit code.
++;;;   This is mainly to display proper stack trace in case 'main'
++;;;   raises an error.
++(select-module gauche.internal)
++(define (run-main main args)
++  (guard (e [else (report-error e) 70])
++    (let1 r (main args)
++      (if (fixnum? r) r 70))))
++
++;;;
+ ;;; Macros
+ ;;;
+ 
+diff --git a/src/main.c b/src/main.c
+index 46223a6..55660c9 100644
+--- a/src/main.c
++++ b/src/main.c
+@@ -502,22 +502,14 @@ int execute_script(const char *scriptfile, ScmObj args)
+                                          SCM_BINDING_STAY_IN_MODULE);
+     }
+     if (SCM_PROCEDUREP(mainproc)) {
+-#if 0 /* Temporarily turned off due to the bug that loses stack traces. */
++        static ScmObj run_main_proc = SCM_UNDEFINED;
++        SCM_BIND_PROC(run_main_proc, "run-main", Scm_GaucheInternalModule());
++        SCM_ASSERT(SCM_PROCEDUREP(run_main_proc));
++        
+         ScmEvalPacket epak;
+-        int r = Scm_Apply(mainproc, SCM_LIST1(args), &epak);
+-        if (r > 0) {
+-            ScmObj res = epak.results[0];
+-            if (SCM_INTP(res)) return SCM_INT_VALUE(res);
+-            else return 70;  /* EX_SOFTWARE, see SRFI-22. */
+-        } else {
+-            Scm_ReportError(epak.exception);
+-            return 70;  /* EX_SOFTWARE, see SRFI-22. */
+-        }
+-#else
+-        ScmObj r = Scm_ApplyRec1(mainproc, args);
+-        if (SCM_INTP(r)) return SCM_INT_VALUE(r);
+-        else             return 70;
+-#endif
++        int r = Scm_Apply(run_main_proc, SCM_LIST2(mainproc, args), &epak);
++        SCM_ASSERT(r == 1 && SCM_INTP(epak.results[0]));
++        return SCM_INT_VALUE(epak.results[0]);
+     }
+     return 0;
+ }
+diff --git a/test/scripts.scm b/test/scripts.scm
+index 44bb44b..4e6777b 100644
+--- a/test/scripts.scm
++++ b/test/scripts.scm
+@@ -58,6 +58,25 @@
+              (process-output->string '("./gosh" "-ftest" "test.o")))
+          (delete-files "test.o")))
+ 
++;; This caused assertion failure in 0.9.5, because 'main' was called
++;; via Scm_ApplyRec without base VM running.
++;; See https://github.com/shirok/Gauche/issues/244
++(test* "proper error handling of 'main'" "ok"
++       (unwind-protect
++           (begin
++             (delete-files "test.o")
++             (with-output-to-file "test.o"
++               (^[]
++                 (write
++                  '(use gauche.partcont))
++                 (write
++                  '(define (main args)
++                     (reset (shift k (call-with-input-file "gauche.h" k)))
++                     (print 'ok)
++                     0))))
++             (process-output->string '("./gosh" "-ftest" "test.o")))
++         (delete-files "test.o")))
++
+ ;;=======================================================================
+ (test-section "gauche-config")
+ 

diff --git a/dev-scheme/gauche/files/gauche-0.9.5-unicode.patch 
b/dev-scheme/gauche/files/gauche-0.9.5-unicode.patch
new file mode 100644
index 00000000..a87ca5d
--- /dev/null
+++ b/dev-scheme/gauche/files/gauche-0.9.5-unicode.patch
@@ -0,0 +1,19 @@
+commit d31eb5c02b65514e695b45c0c01cbd45a36bac4a
+Author: OOHASHI Daichi <dico.leque.comic...@gmail.com>
+Date:   Thu Oct 20 10:48:17 2016 +0900
+
+    (char-general-category #\x20000) should be Lo
+
+diff --git a/src/gauche/char_utf_8.h b/src/gauche/char_utf_8.h
+index 082e764..5f92d13 100644
+--- a/src/gauche/char_utf_8.h
++++ b/src/gauche/char_utf_8.h
+@@ -294,7 +294,7 @@ static inline unsigned char 
Scm__LookupCharCategory(ScmChar ch)
+ {
+     if (ch == SCM_CHAR_INVALID || ch >= 0x10ffff) {
+         return SCM_CHAR_CATEGORY_Cn;
+-    } else if (ch <= 0x20000) {
++    } else if (ch < 0x20000) {
+         return ucs_general_category_00000[ch];
+     } else {
+         return ucs_general_category_20000(ch);

diff --git a/dev-scheme/gauche/files/gauche-ext-ldflags.patch 
b/dev-scheme/gauche/files/gauche-ext-ldflags.patch
new file mode 100644
index 00000000..b4aedef
--- /dev/null
+++ b/dev-scheme/gauche/files/gauche-ext-ldflags.patch
@@ -0,0 +1,11 @@
+--- a/ext/Makefile.ext.in
++++ b/ext/Makefile.ext.in
+@@ -22,7 +22,7 @@
+ LIBS         = $(XLIBS) @LIBS@ 
+ CFLAGS       = @CFLAGS@ @SHLIB_SO_CFLAGS@ $(XCFLAGS)
+ CPPFLAGS     = @CPPFLAGS@ $(XCPPFLAGS)
+-LDFLAGS      = $(LOCAL_LFLAGS) $(XLDFLAGS) @SHLIB_SO_LDFLAGS@
++LDFLAGS      = $(LOCAL_LFLAGS) $(XLDFLAGS) @LDFLAGS@ @SHLIB_SO_LDFLAGS@
+ 
+ # These are set by configure
+ DEFS     = @DEFS@

diff --git a/dev-scheme/gauche/files/gauche-gauche.m4.patch 
b/dev-scheme/gauche/files/gauche-gauche.m4.patch
new file mode 100644
index 00000000..1b9947c
--- /dev/null
+++ b/dev-scheme/gauche/files/gauche-gauche.m4.patch
@@ -0,0 +1,18 @@
+--- a/m4/gauche.m4
++++ b/m4/gauche.m4
+@@ -103,13 +103,10 @@
+   AS_CASE(["$target"],
+         [i686-*], [I686OPT="-DUSE_I686_PREFETCH"])
+   AS_CASE(["$CC"],
+-        [gcc*], [ dnl some systems may have gcc-2.95, gcc-3, etc.
++        [*gcc*], [ dnl some systems may have gcc-2.95, gcc-3, etc.
+                 AS_CASE(["$target"],
+                         [*mingw*], [],
+-                                   [GCCOPT="-fomit-frame-pointer"])
+-                AS_CASE(["$target"],
+-                        [i586-*], [GCCOPT="$GCCOPT -march=i586"],
+-                        [i686-*], [GCCOPT="$GCCOPT -march=i686"])])])
++                                   [GCCOPT="-fomit-frame-pointer"])])])
+ OPTFLAGS="$GCCOPT $I686OPT"
+ AC_SUBST(OPTFLAGS)
+ ])

diff --git a/dev-scheme/gauche/files/gauche-rfc.tls.patch 
b/dev-scheme/gauche/files/gauche-rfc.tls.patch
new file mode 100644
index 00000000..1e5ef71
--- /dev/null
+++ b/dev-scheme/gauche/files/gauche-rfc.tls.patch
@@ -0,0 +1,12 @@
+--- a/ext/tls/ssltest-mod.scm
++++ b/ext/tls/ssltest-mod.scm
+@@ -53,7 +53,8 @@
+      ($ format #t "~a\n" $ regexp-replace-all* line
+         #/\.\.\/ssl\// srcpath-replace
+         #/openssl /    kicker-replace
+-        #/system/      "safe_system")))
++        #/system/      "safe_system"
++        #/(s_server) / "\\1 -4 ")))
+ 
+   (p "#include <errno.h>"
+      "int safe_system(const char *commands)"

diff --git a/dev-scheme/gauche/files/gauche-rpath.patch 
b/dev-scheme/gauche/files/gauche-rpath.patch
new file mode 100644
index 00000000..8774bac
--- /dev/null
+++ b/dev-scheme/gauche/files/gauche-rpath.patch
@@ -0,0 +1,10 @@
+--- a/configure.ac
++++ b/configure.ac
+@@ -709,7 +709,6 @@
+   fi
+   if test "$RPATH_FLAG" != ""; then
+     RPATH_TMP=$RPATH_FLAG'`pwd`'
+-    RPATH_REAL=$RPATH_FLAG'$(LIB_INSTALL_DIR)'
+   fi
+ fi
+ AC_SUBST(RPATH_FLAG)

diff --git a/dev-scheme/gauche/files/gauche-xz-info.patch 
b/dev-scheme/gauche/files/gauche-xz-info.patch
new file mode 100644
index 00000000..e55f536
--- /dev/null
+++ b/dev-scheme/gauche/files/gauche-xz-info.patch
@@ -0,0 +1,31 @@
+--- a/lib/gauche/interactive/info.scm
++++ b/lib/gauche/interactive/info.scm
+@@ -137,7 +137,8 @@
+                             :paths paths
+                             :pred (^p (or (file-is-readable? p)
+                                           (file-is-readable? #"~|p|.gz")
+-                                          (file-is-readable? #"~|p|.bz2"))))
++                                          (file-is-readable? #"~|p|.bz2")
++                                          (file-is-readable? #"~|p|.xz"))))
+         (errorf "couldn't find info file ~s in paths: ~s" *info-file* paths))
+     ))
+ 
+--- a/lib/text/info.scm
++++ b/lib/text/info.scm
+@@ -64,6 +64,7 @@
+ 
+ ;; Find bzip2 location
+ (define bzip2  (find-file-in-paths "bzip2"))
++(define xz     (find-file-in-paths "xz"))
+ 
+ ;; Read an info file FILE, and returns a list of strings splitted by ^_ 
(#\u001f)
+ ;; If FILE is not found, look for compressed one.
+@@ -78,6 +79,8 @@
+                      (close-input-port zp)))))]
+           [(and bzip2 (file-exists? #"~|file|.bz2"))
+            (with-input-from-process #"~bzip2 -c -d ~|file|.bz2" thunk)]
++          [(and xz (file-exists? #"~|file|.xz"))
++           (with-input-from-process #"~xz -c -d ~|file|.xz" thunk)]
+           [else (error "can't find info file" file)]))
+   (with-input-from-info
+    (lambda ()

diff --git a/dev-scheme/gauche/gauche-0.9.5.ebuild 
b/dev-scheme/gauche/gauche-0.9.5.ebuild
new file mode 100644
index 00000000..2e6fe55
--- /dev/null
+++ b/dev-scheme/gauche/gauche-0.9.5.ebuild
@@ -0,0 +1,59 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="6"
+
+inherit autotools eutils
+
+MY_P="${P^g}"
+
+DESCRIPTION="A Unix system friendly Scheme Interpreter"
+HOMEPAGE="http://practical-scheme.net/gauche/";
+SRC_URI="mirror://sourceforge/${PN}/${MY_P}.tgz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~alpha ~amd64 ~ia64 ~ppc ~ppc64 ~sparc ~x86 ~amd64-linux ~x86-linux 
~x86-macos"
+IUSE="ipv6 libressl test"
+
+RDEPEND="sys-libs/gdbm"
+DEPEND="${RDEPEND}
+       test? (
+               !libressl? ( dev-libs/openssl:0 )
+               libressl? ( dev-libs/libressl )
+       )"
+S="${WORKDIR}/${MY_P}"
+
+src_prepare() {
+       epatch "${FILESDIR}"/${PN}-rpath.patch
+       epatch "${FILESDIR}"/${PN}-gauche.m4.patch
+       epatch "${FILESDIR}"/${PN}-ext-ldflags.patch
+       epatch "${FILESDIR}"/${PN}-xz-info.patch
+       epatch "${FILESDIR}"/${PN}-rfc.tls.patch
+       epatch "${FILESDIR}"/${P}-libressl.patch
+       epatch "${FILESDIR}"/${P}-bsd.patch
+       epatch "${FILESDIR}"/${P}-main.patch
+       epatch "${FILESDIR}"/${P}-unicode.patch
+       eapply_user
+
+       use ipv6 && sed -i "s/ -4//" ext/tls/ssltest-mod.scm
+
+       eautoconf
+}
+
+src_configure() {
+       econf \
+               $(use_enable ipv6) \
+               --with-libatomic-ops=no \
+               --with-slib="${EPREFIX}"/usr/share/slib
+}
+
+src_test() {
+       emake -j1 -s check
+}
+
+src_install() {
+       emake DESTDIR="${D}" install-pkg install-doc
+       dodoc AUTHORS ChangeLog HACKING README
+}

Reply via email to