summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAkinori Hattori <hattya@gentoo.org>2012-06-02 07:57:21 +0000
committerAkinori Hattori <hattya@gentoo.org>2012-06-02 07:57:21 +0000
commitc6064cf5f8fe201d2866c23fcc9bcea7b9890bc7 (patch)
tree38c4b94b74e3bdaecb624c68063e4ea909f55c8d /dev-scheme/gauche
parentRevbump to install new root servers list (bug 248247) (diff)
downloadgentoo-2-c6064cf5f8fe201d2866c23fcc9bcea7b9890bc7.tar.gz
gentoo-2-c6064cf5f8fe201d2866c23fcc9bcea7b9890bc7.tar.bz2
gentoo-2-c6064cf5f8fe201d2866c23fcc9bcea7b9890bc7.zip
new upstream release.
(Portage version: 2.1.10.49/cvs/Linux i686)
Diffstat (limited to 'dev-scheme/gauche')
-rw-r--r--dev-scheme/gauche/ChangeLog9
-rw-r--r--dev-scheme/gauche/files/gauche-0.9.3.2-Makefile.diff52
-rw-r--r--dev-scheme/gauche/files/gauche-0.9.3.3-gauche.threads.diff120
-rw-r--r--dev-scheme/gauche/gauche-0.9.3.3.ebuild (renamed from dev-scheme/gauche/gauche-0.9.3.2.ebuild)8
4 files changed, 132 insertions, 57 deletions
diff --git a/dev-scheme/gauche/ChangeLog b/dev-scheme/gauche/ChangeLog
index fb76b2370ecd..1884c3911f02 100644
--- a/dev-scheme/gauche/ChangeLog
+++ b/dev-scheme/gauche/ChangeLog
@@ -1,6 +1,13 @@
# ChangeLog for dev-scheme/gauche
# Copyright 1999-2012 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/dev-scheme/gauche/ChangeLog,v 1.36 2012/05/26 10:31:16 hattya Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-scheme/gauche/ChangeLog,v 1.37 2012/06/02 07:57:21 hattya Exp $
+
+*gauche-0.9.3.3 (02 Jun 2012)
+
+ 02 Jun 2012; Akinori Hattori <hattya@gentoo.org> -gauche-0.9.3.2.ebuild,
+ -files/gauche-0.9.3.2-Makefile.diff, +gauche-0.9.3.3.ebuild,
+ +files/gauche-0.9.3.3-gauche.threads.diff:
+ new upstream release.
26 May 2012; Akinori Hattori <hattya@gentoo.org> -gauche-0.9.1.ebuild,
-files/gauche-0.9.1-bzip2-info.diff, -files/gauche-0.9.1-list-queue.diff,
diff --git a/dev-scheme/gauche/files/gauche-0.9.3.2-Makefile.diff b/dev-scheme/gauche/files/gauche-0.9.3.2-Makefile.diff
deleted file mode 100644
index 399912b137ff..000000000000
--- a/dev-scheme/gauche/files/gauche-0.9.3.2-Makefile.diff
+++ /dev/null
@@ -1,52 +0,0 @@
-commit 809ed95496ff1d753f34161f28f549248124bb63
-Author: Shiro Kawai <shiro@acm.org>
-Date: Sat May 12 14:47:15 2012 -1000
-
- build fix when DESTDIR is used
-
---- a/src/Makefile.in
-+++ b/src/Makefile.in
-@@ -415,10 +415,12 @@ INSTALL_DIRS = $(DESTDIR)$(HEADER_INSTALL_DIR) \
- @CROSS_COMPILING_no@GAUCHE_INSTALL = ./gosh -ftest $(srcdir)/gauche-install.in
- @CROSS_COMPILING_yes@GAUCHE_INSTALL = gosh $(srcdir)/gauche-install.in
-
--install : install-core install-aux
-+install : all install-dirs install-aux install-core
-
--install-core : all relink
-+install-dirs :
- $(MKINSTDIR) $(INSTALL_DIRS)
-+
-+install-core : relink
- $(INSTALL) $(INSTALL_LIBS) $(DESTDIR)$(LIB_INSTALL_DIR)
- $(INSTALL) $(INSTALL_LIBS) $(DESTDIR)$(ARCH_INSTALL_DIR)
- $(INSTALL) -m 555 $(INSTALL_BINS) $(DESTDIR)$(BIN_INSTALL_DIR)
-@@ -429,7 +431,7 @@ install-core : all relink
- $(INSTALL) $(srcdir)/gauche-init.scm $(DESTDIR)$(SCM_INSTALL_DIR)
- $(POSTINSTALL)
-
--install-aux : install-core
-+install-aux :
- $(GAUCHE_INSTALL) -m 444 -S $(srcdir) $(INSTALL_HEADERS) $(DESTDIR)$(HEADER_INSTALL_DIR)
- $(GAUCHE_INSTALL) -m 444 -S $(srcdir) $(INSTALL_SUBHEADERS) $(DESTDIR)$(HEADER_INSTALL_DIR)/gauche
- $(GAUCHE_INSTALL) -m 444 -S $(srcdir) $(INSTALL_SCMS) $(DESTDIR)$(SCM_INSTALL_DIR)
-
-commit 0e669ec43bedce845d03c65a3bd1c233673e3fd6
-Author: Shiro Kawai <shiro@acm.org>
-Date: Sun May 13 22:42:22 2012 -1000
-
- Make sure install gauche-init.scm with mode 444
-
-diff --git a/src/Makefile.in b/src/Makefile.in
-index 485d2d0..7b74d53 100644
---- a/src/Makefile.in
-+++ b/src/Makefile.in
-@@ -428,7 +428,7 @@ install-core : relink
- @case `$(GAUCHE_CONFIG) --arch` in *-cygwin*|*-mingw*) \
- $(INSTALL) $(INSTALL_LIBS) $(DESTDIR)$(BIN_INSTALL_DIR);;\
- esac
-- $(INSTALL) $(srcdir)/gauche-init.scm $(DESTDIR)$(SCM_INSTALL_DIR)
-+ $(INSTALL) -m 444 $(srcdir)/gauche-init.scm $(DESTDIR)$(SCM_INSTALL_DIR)
- $(POSTINSTALL)
-
- install-aux :
diff --git a/dev-scheme/gauche/files/gauche-0.9.3.3-gauche.threads.diff b/dev-scheme/gauche/files/gauche-0.9.3.3-gauche.threads.diff
new file mode 100644
index 000000000000..a44ee75b8d1a
--- /dev/null
+++ b/dev-scheme/gauche/files/gauche-0.9.3.3-gauche.threads.diff
@@ -0,0 +1,120 @@
+commit 60d82dd56c15a533562cf28111af5d3365d5d354
+Author: Shiro Kawai <shiro@acm.org>
+Date: Thu May 31 15:23:22 2012 -1000
+
+ Fixed thread-terminate! bug that SEGVs when applied on non-running threads
+
+--- a/ext/threads/test.scm
++++ b/ext/threads/test.scm
+@@ -100,6 +100,18 @@
+ (thread-terminate! t1)
+ (thread-join! t1))))
+
++;; this SEGVs on 0.9.3.3. test code from @cryks.
++(test* "thread termination before running" 'terminated
++ (let1 t1 (make-thread (^[] #f))
++ (thread-terminate! t1)
++ (thread-state t1)))
++
++(test* "thread termination while being stopped" 'terminated
++ (let1 t1 (thread-start! (make-thread (^[] (let loop () (loop)))))
++ (thread-stop! t1)
++ (thread-terminate! t1)
++ (thread-state t1)))
++
+ ;;---------------------------------------------------------------------
+ (test-section "thread and error")
+
+--- a/ext/threads/threads.c
++++ b/ext/threads/threads.c
+@@ -432,36 +432,41 @@ ScmObj Scm_ThreadTerminate(ScmVM *target)
+ }
+
+ (void)SCM_INTERNAL_MUTEX_LOCK(target->vmlock);
+- do {
+- /* This ensures only the first call of thread-terminate! on a thread
+- is in effect. */
+- if (target->canceller == NULL) {
+- target->canceller = vm;
+-
+- /* First try */
+- target->stopRequest = SCM_VM_REQUEST_TERMINATE;
+- target->attentionRequest = TRUE;
+- if (wait_for_termination(target)) break;
+-
+- /* Second try */
++ if (target->state == SCM_VM_RUNNABLE || target->state == SCM_VM_STOPPED) {
++ do {
++ /* This ensures only the first call of thread-terminate! on a
++ thread is in effect. */
++ if (target->canceller == NULL) {
++ target->canceller = vm;
++
++ /* First try */
++ target->stopRequest = SCM_VM_REQUEST_TERMINATE;
++ target->attentionRequest = TRUE;
++ if (wait_for_termination(target)) break;
++
++ /* Second try */
++ SCM_ASSERT(target->thread);
+ #if defined(GAUCHE_USE_PTHREADS)
+ # if defined(GAUCHE_PTHREAD_SIGNAL)
+- pthread_kill(target->thread, GAUCHE_PTHREAD_SIGNAL);
++ pthread_kill(target->thread, GAUCHE_PTHREAD_SIGNAL);
+ # endif /*defined(GAUCHE_PTHREAD_SIGNAL)*/
+ #elif defined(GAUCHE_USE_WTHREADS)
+- /* TODO: implement signal mechanism using an event */
++ /* TODO: implement signal mechanism using an event */
+ #endif /* defined(GAUCHE_USE_WTHREADS) */
+- if (wait_for_termination(target)) break;
++ if (wait_for_termination(target)) break;
+
+- /* Last resort */
+- thread_cleanup_inner(target);
++ /* Last resort */
++ thread_cleanup_inner(target);
+ #if defined(GAUCHE_USE_PTHREADS)
+- pthread_cancel(target->thread);
++ pthread_cancel(target->thread);
+ #elif defined(GAUCHE_USE_WTHREADS)
+- TerminateThread(target->thread, 0);
++ TerminateThread(target->thread, 0);
+ #endif
+- }
+- } while (0);
++ }
++ } while (0);
++ }
++ /* target either is terminated or hasn't been run */
++ target->state = SCM_VM_TERMINATED;
+ (void)SCM_INTERNAL_MUTEX_UNLOCK(target->vmlock);
+ return SCM_UNDEFINED;
+ }
+--- a/test/control.scm
++++ b/test/control.scm
+@@ -72,7 +72,7 @@
+ ;;
+
+ (cond-expand
+- [gauche.sys.pthreads
++ [gauche.sys.threads
+ (test-section "control.thread-pool")
+ (use control.thread-pool)
+ (test-module 'control.thread-pool)
+@@ -173,7 +173,15 @@
+ (let1 xjob (add-job! pool work)
+ (terminate-all! pool :force-timeout 0.05)
+ (job-status xjob))))
+- ]
++
++ ;; This SEGVs on 0.9.3.3 (test code by @cryks)
++ (test* "thread pool termination" 'terminated
++ (let ([t (thread-start! (make-thread (cut undefined)))]
++ [pool (make-thread-pool 10)])
++ (terminate-all! pool)
++ (thread-terminate! t)
++ (thread-state t)))
++ ] ; gauche.sys.pthreads
+ [else])
+
+ (test-end)
diff --git a/dev-scheme/gauche/gauche-0.9.3.2.ebuild b/dev-scheme/gauche/gauche-0.9.3.3.ebuild
index fd458aa4ec7d..8a3062419fcd 100644
--- a/dev-scheme/gauche/gauche-0.9.3.2.ebuild
+++ b/dev-scheme/gauche/gauche-0.9.3.3.ebuild
@@ -1,10 +1,10 @@
# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
-# $Header: /var/cvsroot/gentoo-x86/dev-scheme/gauche/gauche-0.9.3.2.ebuild,v 1.1 2012/05/26 10:04:15 hattya Exp $
+# $Header: /var/cvsroot/gentoo-x86/dev-scheme/gauche/gauche-0.9.3.3.ebuild,v 1.1 2012/06/02 07:57:21 hattya Exp $
EAPI="4"
-inherit autotools eutils user
+inherit autotools eutils
MY_P="${P/g/G}"
@@ -28,7 +28,7 @@ src_prepare() {
epatch "${FILESDIR}"/${PN}-ext-ldflags.diff
epatch "${FILESDIR}"/${PN}-xz-info.diff
epatch "${FILESDIR}"/${PN}-rfc.tls.diff
- epatch "${FILESDIR}"/${P}-Makefile.diff
+ epatch "${FILESDIR}"/${P}-gauche.threads.diff
eautoconf
}
@@ -43,7 +43,7 @@ src_compile() {
}
src_test() {
- HOME="$(egethome ${EUID})" emake -j1 -s check
+ emake -j1 -s check
}
src_install() {