summaryrefslogtreecommitdiff
path: root/dev-scheme/gauche
diff options
context:
space:
mode:
Diffstat (limited to 'dev-scheme/gauche')
-rw-r--r--dev-scheme/gauche/Manifest24
-rw-r--r--dev-scheme/gauche/files/gauche-0.9-ext-ldflags.patch11
-rw-r--r--dev-scheme/gauche/files/gauche-0.9-gauche.m4.patch19
-rw-r--r--dev-scheme/gauche/files/gauche-0.9-rfc.tls.patch12
-rw-r--r--dev-scheme/gauche/files/gauche-0.9-rpath.patch10
-rw-r--r--dev-scheme/gauche/files/gauche-0.9-xz-info.patch31
-rw-r--r--dev-scheme/gauche/files/gauche-0.9.3.3-file.util.patch21
-rw-r--r--dev-scheme/gauche/files/gauche-0.9.3.3-gauche.threads.patch120
-rw-r--r--dev-scheme/gauche/files/gauche-0.9.5-bsd.patch25
-rw-r--r--dev-scheme/gauche/files/gauche-0.9.5-libressl.patch19
-rw-r--r--dev-scheme/gauche/files/gauche-0.9.5-unicode.patch19
-rw-r--r--dev-scheme/gauche/files/gauche-ext-ldflags.patch11
-rw-r--r--dev-scheme/gauche/files/gauche-gauche.m4.patch18
-rw-r--r--dev-scheme/gauche/files/gauche-rfc.tls.patch12
-rw-r--r--dev-scheme/gauche/files/gauche-rpath.patch10
-rw-r--r--dev-scheme/gauche/files/gauche-xz-info.patch31
-rw-r--r--dev-scheme/gauche/gauche-0.9.3.3.ebuild52
-rw-r--r--dev-scheme/gauche/gauche-0.9.4-r1.ebuild56
-rw-r--r--dev-scheme/gauche/gauche-0.9.5.ebuild60
-rw-r--r--dev-scheme/gauche/metadata.xml22
20 files changed, 583 insertions, 0 deletions
diff --git a/dev-scheme/gauche/Manifest b/dev-scheme/gauche/Manifest
new file mode 100644
index 000000000000..7a606b7464ae
--- /dev/null
+++ b/dev-scheme/gauche/Manifest
@@ -0,0 +1,24 @@
+AUX gauche-0.9-ext-ldflags.patch 411 SHA256 5bdf2f32f12a6f06580a7d476121f7cbafcf87f162f8304db93b981278833255 SHA512 237733fac1f8120927f0e1d4170f9545d124eaef3877dd796f95e099191a954b923a7648fd26d99d47a9a489a659aad154cc109842045d90a19d79c18f442da0 WHIRLPOOL a5bd6e51b6c6246538eeb097ca396488130ae97ed6112b3be8a930affc5e57d1244640575da4f8e619c446947cb5bb2f8bc4c65c816282e1491d90f4014ae7b3
+AUX gauche-0.9-gauche.m4.patch 528 SHA256 0778d4cc8cf9ca55544e127106fad7c5d76392bd6514f2662f6a3e2afa1d0419 SHA512 c8bd47b2769d27200272adc0475c890adaa09e66a187a54e8c16462ffca69a156976264642a6db5bd4ee53f3278c488f526ffb7cd26f56041c7e646d5d9ed2d7 WHIRLPOOL f8f871501a7ca70121ed74c81e41f08815c5c4a5cee9abcffe50a9df34045c04dc19e24cc7d001258357c8fae354b8dbfa03fbab158e107224588140e4830f45
+AUX gauche-0.9-rfc.tls.patch 537 SHA256 baaa00cf3c21894812c498822863a48b61347ae19b0cb8934810c2ab8145ea56 SHA512 9a3d4954ce582afcf544baef751311c8a9216f2122c87b7e2bb8aa2afa8f4c398d8d59ca86687d05c17e368f08fb8264e1441fb3ba474e04ebf78ea20acf81e7 WHIRLPOOL 0b65d128692391d82a26fb9a77f14f03953d9e97ee8309e5995e3e5b7756b230fbde95e32b760aa9448285f18b930c124de2f217fc1c30407e0676bdcef0b0a6
+AUX gauche-0.9-rpath.patch 242 SHA256 ee0e3d895322c90fff79a2d0016163c3db35e8912ad177daa5191762bbf6b5bd SHA512 46cc19db79ce7652b200ba6aec46c42d58ca7bb8ad0a0f884fa0999c14cfd9c8d42aae83c05f442091bc435f6ecf5010521e022af90be4e180c51da81145f08d WHIRLPOOL 89c2dbbc87de9ec49307a7a4acae87934d7b044660399035daa8d67162679c07770437a34370e11025f30abbdc22d466e1612d153575650968ad02572d64ae02
+AUX gauche-0.9-xz-info.patch 1438 SHA256 88c5cdd2428aed394702bf7a18543a8e4b63df33ffa305216870ff8fc6fca536 SHA512 c425a2e70376920fcc4bf8e7ce904db6f625eeeacc58a199b2f9513c98281ef84186887a28c2f8bd7c7e60461fb9fce3a10066a24914420d2a08029736c6c199 WHIRLPOOL 11680ea240db6bff7eff7840532f49621b986ac73601f8d6ad96c2a3042bb91828ba879a9b87705b904a9d0f6af32159b1fa4adc25b40eb3d50cd3ed3f531995
+AUX gauche-0.9.3.3-file.util.patch 701 SHA256 9646ecd262412dab6773f38b5c3393499bfbdac175d0b3f07ff131b0e4159481 SHA512 0b64093cc949394dc5e3d77c8c4cadda068ebb2010bd1f67d04ec65be2f13ac6f3a334abf93afdd41ccdda7e5f1d303dd44b368531985d9732f289df38979f49 WHIRLPOOL e5e920b35bd5de6b4f5591f851028bed1355de3d4d557362cda3411bf265ae35319b854a9d4a8a39e0dd26140bc399d93bef2cfd93ec4316cbb582badbef7895
+AUX gauche-0.9.3.3-gauche.threads.patch 4111 SHA256 4c80da4f3b3142df77542c681ea38a682f724d71ab944c15a58a1344014e60d1 SHA512 a3f4a72686759328a6cc958505806dd2aa782ba05859fd4d02933d17129952fa7a19440c84e2be454275643709282fa202d943b85431bac03d0953682e0aa24f WHIRLPOOL 853e94cdc91047f147b7b4a04b1ac82b2f71a785905f622d473fddd948d4f611a3e10fed6299d50058d95be1f5f0bc86ae714344f329c6914424b6f6aae65e54
+AUX gauche-0.9.5-bsd.patch 714 SHA256 72deaeed7db445c7dc01693c24fdadd2b66d5e19c0125a829f718efc23da8fa9 SHA512 416aa04f7f3aee310fd0e2c8073caa247e0fa84bb32f32ccadd125a17d26d4410554e2a6643493a3dbaa034fe07b54ae44f0f053238ea909b317551541431bac WHIRLPOOL 32ff072b1d3c5da6b98cc43ece2c2229ee45be61c5e967537f545d044c059266aa4fc11ff915648bd14cb04463c6dd9ed0e425e89b78ba4ca2308e6f57031434
+AUX gauche-0.9.5-libressl.patch 707 SHA256 cb4abb7bf9ff7574f4045b95d6e36710f6f74ecd7fc8ec19bf02d9866825781a SHA512 98941e03fa4f96e26d6c0ff85f3e16bcd69aa5c77140e42de86556bfba87b83f340dd6be7e2f23e2d92433e46198cd500ed488546493cdb91c9e8ff13b457fa7 WHIRLPOOL f01783e3fa9391b06f49f6ea46cfbc8714725b38626e5b19d728893cd976230b82b0f2e3bd6f7edf1a3624842921f2308f05c71c2b2b151df301ad9113351b46
+AUX gauche-0.9.5-unicode.patch 700 SHA256 838e7e04a6cb6e4520ca6816f9e16b40a74bc18fb05fbbf4047d99799201485d SHA512 4c58e2c6fcb5b58f8c130fec7af4c0af187f54c186d6e54ee1787cb8dd4baab51f9dfd776d1d8adbd86da0be0e813f6a82322e7ec22eafda2c626637f14097f8 WHIRLPOOL 6908c80e6588e44d5c901f9f0f58d6da7376e5a9a82d2e3e1619b7679d0313f044f69d20de8f28db73efb615e52a3b8d7f17d7b6b01c88a83e2d2218330ef03a
+AUX gauche-ext-ldflags.patch 384 SHA256 c1eadeeb4d8a5275028e1617286d33bb1052bf682dc3ae36c8c8add1a29e0dc5 SHA512 e38f1c7bc2fa6a1f5f56e20f9818d7f52e98ba8c3e101b642441421f5194bc4223c862e20d3d731da632642dc44545974483459727bb184d9da9b9742504f34d WHIRLPOOL e97498eea96f43a3e16042301ec57c0455f88a4078cc11f55fc3d0de38b7855dbb8ea5c86a72edc702c1cfd2bbdef393fe9dd49993b9a22c3d23d85c955e807b
+AUX gauche-gauche.m4.patch 592 SHA256 4214c72840831e4c42117ec8b6e8c31954e47b60e77d5e64c00c1dcedaf77407 SHA512 5082265340c6011d653f20de3a89f1eed1a48b896d521bb42aff1f748cafd3c60953c3b723ab9b053dcd941ed6b61f00f9f69a25f16db74d987228db2318ac68 WHIRLPOOL 870c826c956f64b399395e098b6ee145d1dc8dba40762b8e649068a1d431e4e2481f64ecf3363da37f37979ec793c4626778cb6e46920aeee250faf2fb0ac4f0
+AUX gauche-rfc.tls.patch 401 SHA256 23a73e4b6b791efc872716ab9f6ea3f60b1df671160347c39b9242b4b2879b49 SHA512 5b2baafa052208c1843e7d05789bf8a10c63fbb48de66ca7e8b7450a5cb23c1c5641c34a8ff8ee525aa073de21b1f970ba4c310b2678dc1f81293e51c22de321 WHIRLPOOL af32a9d3f8f5b725eea3368ad0e4dc6406b53ab4efc69af22573f5df000b5e359277e6be0724476f1c94a054407a64f5e81f1d0066f93ff22c8281d159c8d305
+AUX gauche-rpath.patch 215 SHA256 548f6847a8ac544cf89b920c23324b66e3a7e459262b176da98dc101d756338c SHA512 1bda4c2e0bb3928d040eb07d56a9eb0aebd68e52bd0756160ef3eec46ba8c1869b8a37dbb798a712a59918d6bf77e7ca74ec38a4e2e30bb6417f967b5cdc8da6 WHIRLPOOL 1fd7d2a5835c7886d657723e306b6b754079eb91f7eac8849816c8ed9b62a99daa495808617e0a9e30b382ba622eb52949f4c4817af59c589cd7b907d822319e
+AUX gauche-xz-info.patch 1322 SHA256 b784cc3fe460e5f27b10cdf0ca25ed8e104966be4034d7b8de3f89a273c9e55e SHA512 22b6a37ea23bcba7e4ea4d09f26b069225cc36ef32dc0fbc865cfa4052765d0363811f693d6cc5cc8f3fdf355b93eec7c58934d18b2cb8079cadfd3b0cd4ffa4 WHIRLPOOL ccec99bb98c7fb4a6d621546a0150ee3c071e28c2e44fe47dcd05fcfacc5a8713ee89f5bb288749bc20b11aa9c72c2ae832e42c0faf5a3304bf7277ea363235d
+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
+EBUILD gauche-0.9.3.3.ebuild 1104 SHA256 a1d06c31f2414e01196caab87dba9cf36f7dba806a614362991df208450f0c3e SHA512 21599f83cabb6e31a819c59b04dc615347049418a516fefb1ae0ac6a8db95df92afb2ad227f58ad069675743880cac6a661a283f518a432da6c7e171eb711202 WHIRLPOOL dcb109c7715c8c4a537e69f7556f131637eced6f31f79851ce32dcd791d6086725af53019d835378129c55fdb12c53a8df5d8b69eab2ede6ae1a7206cc42534c
+EBUILD gauche-0.9.4-r1.ebuild 1181 SHA256 417225d3a548616a1e6c41dfceddad224c747f85df41c492399a16fbf503b94d SHA512 0d7014d7c7ad24a313af3a6f27e8123019d115852477c1fa56612323eabc4c17be70fb021261ea7013e911d78fa76a4258b9e96101e485ba52bf83d50f097b19 WHIRLPOOL c6f59cc9d2ccc0521cc330f8e4aeb9e75dbdee5a323f90f56e5423d607ca254675955f128e0c5530362da71145c78591b793192cc4b6cb51760844c51f7e9138
+EBUILD gauche-0.9.5.ebuild 1251 SHA256 a1f27043157c8fd2f8c930247ac01694f4fb761be50fe05975c63bdecee25f17 SHA512 b4cc7e1bc78a8e6fc4790cc47b687afeecd96e932fa290dceffa1b8312197615de3d3971f18ddef3f1e0ebf4ae8b1ec7baa9d729a630b4419ec67b58f1e73395 WHIRLPOOL 3583bf07922dae9f6d2aca605a6a8b4fb486290707a60a07b941708568cc73b4afe5a8735141261a838b9ad935298bee5bbc26050f131ae35bf7518c39d98844
+MISC ChangeLog 5054 SHA256 a4d55d25cfe208f20288082b29be2069455ccb5a9df215351bc2bee6e891938f SHA512 640e3ee1ff68935e4db001a1df3e957e73328efcf1f249843670d851cb56b1bf9b0fce5db410c2b29e8b52a1652a57d5d6df91408853d6e57689fd2ba1fdcb6f WHIRLPOOL 81126a0353d3a980d71d72d475e0d57aabdc7c4b91296a87e83c565242e3817df05ada6744e8685fa6f340826621539e2807b6bf4c88f490a6f09a7a8a390501
+MISC ChangeLog-2015 13904 SHA256 110623b81c71cfc8fd18d06981cb3a40a95fa6b4fe2a81d5b592b14e21e23b69 SHA512 4066caec514d2a73bf89835cb3335b29a042ef1800525fe839216def3a1a49cdb575ac096ad7e310e325da95a3009a5af20299c5371c16922c78191d475f407f WHIRLPOOL ccb74790ba763feb1b841b3d2cb5244f91c94434dc7809baf3ff31cd26e310077a2b1eaa39a79f407efe020d28ee337360f18766cf2baca99672eb0113467829
+MISC metadata.xml 798 SHA256 29d61185c544361784f7f841d3ba565965d7b10973d854c8ba66ed03935b838e SHA512 763371a0b45718700fe237089d53d75260767ccd40974dc9da78df1562c47ec7a6967174fa23969916e4eb5d192a3a1d39bc4f3724fa436ccb39afb17c5192db WHIRLPOOL f07cfc57a4054d46b2c308492271d795c90739d511c6f4b5d87117fe91e6bb23a21935d4e7e665dc4259d069e8f2be09f69a3c3163ba925e429ab2707ad4a653
diff --git a/dev-scheme/gauche/files/gauche-0.9-ext-ldflags.patch b/dev-scheme/gauche/files/gauche-0.9-ext-ldflags.patch
new file mode 100644
index 000000000000..a9de4114d2bf
--- /dev/null
+++ b/dev-scheme/gauche/files/gauche-0.9-ext-ldflags.patch
@@ -0,0 +1,11 @@
+--- Gauche-0.9.1.orig/ext/Makefile.ext.in
++++ Gauche-0.9.1/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-0.9-gauche.m4.patch b/dev-scheme/gauche/files/gauche-0.9-gauche.m4.patch
new file mode 100644
index 000000000000..8c4d3180836a
--- /dev/null
+++ b/dev-scheme/gauche/files/gauche-0.9-gauche.m4.patch
@@ -0,0 +1,19 @@
+--- Gauche-0.9.4.orig/m4/gauche.m4
++++ Gauche-0.9.4/m4/gauche.m4
+@@ -103,15 +103,11 @@
+ i686-*) I686OPT="-DUSE_I686_PREFETCH";;
+ esac
+ case "$CC" in
+- gcc*) # some systems may have gcc-2.95, gcc-3, etc.
++ *gcc*) # some systems may have gcc-2.95, gcc-3, etc.
+ case "$target" in
+ *mingw*) ;;
+ *) GCCOPT="-fomit-frame-pointer";;
+ esac
+- case "$target" in
+- i586-*) GCCOPT="$GCCOPT -march=i586";;
+- i686-*) GCCOPT="$GCCOPT -march=i686";;
+- esac
+ ;;
+ esac
+ OPTFLAGS="$GCCOPT $I686OPT"
diff --git a/dev-scheme/gauche/files/gauche-0.9-rfc.tls.patch b/dev-scheme/gauche/files/gauche-0.9-rfc.tls.patch
new file mode 100644
index 000000000000..0bce39ad9929
--- /dev/null
+++ b/dev-scheme/gauche/files/gauche-0.9-rfc.tls.patch
@@ -0,0 +1,12 @@
+--- Gauche-0.9.3.2.orig/ext/tls/Makefile.in
++++ Gauche-0.9.3.2/ext/tls/Makefile.in
+@@ -77,6 +77,9 @@
+ @sed -e "s@\.\./ssl/@../../$(srcdir)/axTLS/ssl/@g" \
+ -e "s/system/safe_system/g" \
+ -e "s@openssl @sh ../../$(srcdir)/kick_openssl @g" \
++ -e "/do_reneg = 1;/i#if 0" \
++ -e "/do_reneg = 0;/a#endif" \
++ -e "/SSL_server_test(/,/)/s/ -tls1//" \
+ $(srcdir)/axTLS/ssl/test/ssltest.c >> $(SSLTEST_GENERATED)
+ @cat $(srcdir)/system-fix.c >> $(SSLTEST_GENERATED)
+
diff --git a/dev-scheme/gauche/files/gauche-0.9-rpath.patch b/dev-scheme/gauche/files/gauche-0.9-rpath.patch
new file mode 100644
index 000000000000..ca76cb831234
--- /dev/null
+++ b/dev-scheme/gauche/files/gauche-0.9-rpath.patch
@@ -0,0 +1,10 @@
+--- Gauche-0.9.1.orig/configure.ac
++++ Gauche-0.9.1/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-0.9-xz-info.patch b/dev-scheme/gauche/files/gauche-0.9-xz-info.patch
new file mode 100644
index 000000000000..809879c4cbd8
--- /dev/null
+++ b/dev-scheme/gauche/files/gauche-0.9-xz-info.patch
@@ -0,0 +1,31 @@
+--- Gauche-0.9.1.orig/lib/gauche/interactive/info.scm
++++ Gauche-0.9.1/lib/gauche/interactive/info.scm
+@@ -84,7 +84,8 @@
+ :pred (lambda (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))
+ ))
+
+--- Gauche-0.9.1.orig/lib/text/info.scm
++++ Gauche-0.9.1/lib/text/info.scm
+@@ -63,6 +63,7 @@
+ ;; Find gunzip location
+ (define gunzip (find-file-in-paths "gunzip"))
+ (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 ^_ (#\x1f)
+ ;; If FILE is not found, look for compressed one.
+@@ -74,6 +75,8 @@
+ (with-input-from-process #`",gunzip -c ,file" thunk)]
+ [(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/files/gauche-0.9.3.3-file.util.patch b/dev-scheme/gauche/files/gauche-0.9.3.3-file.util.patch
new file mode 100644
index 000000000000..1e4cd5d19521
--- /dev/null
+++ b/dev-scheme/gauche/files/gauche-0.9.3.3-file.util.patch
@@ -0,0 +1,21 @@
+commit 15fb279dccb83d66d7e866a0e6f4e3f9ff64fd8d
+Author: Shiro Kawai <shiro@acm.org>
+Date: Thu Nov 29 23:17:55 2012 -1000
+
+ Fix file.util test
+
+ The current test may fail when a size of a directory happens to
+ 100. Patch from NIIBE Yutaka.
+
+--- a/ext/file/test.scm
++++ b/ext/file/test.scm
+@@ -290,7 +290,8 @@
+ (reverse
+ (directory-fold "test.out"
+ (^[path result]
+- (if (= (file-size path) 100)
++ (if (and (file-is-regular? path)
++ (= (file-size path) 100))
+ (cons path result)
+ result))
+ '()
diff --git a/dev-scheme/gauche/files/gauche-0.9.3.3-gauche.threads.patch b/dev-scheme/gauche/files/gauche-0.9.3.3-gauche.threads.patch
new file mode 100644
index 000000000000..a44ee75b8d1a
--- /dev/null
+++ b/dev-scheme/gauche/files/gauche-0.9.3.3-gauche.threads.patch
@@ -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/files/gauche-0.9.5-bsd.patch b/dev-scheme/gauche/files/gauche-0.9.5-bsd.patch
new file mode 100644
index 000000000000..615020df8dfe
--- /dev/null
+++ b/dev-scheme/gauche/files/gauche-0.9.5-bsd.patch
@@ -0,0 +1,25 @@
+commit da2ea76503e8f1784d0f0be26435d4c8e0d1b12f
+Author: Shiro Kawai <shiro@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 000000000000..7b4c839dccb8
--- /dev/null
+++ b/dev-scheme/gauche/files/gauche-0.9.5-libressl.patch
@@ -0,0 +1,19 @@
+commit c26a4836e767807dd8c98d280c4d9e742b759edd
+Author: Shiro Kawai <shiro@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-unicode.patch b/dev-scheme/gauche/files/gauche-0.9.5-unicode.patch
new file mode 100644
index 000000000000..a87ca5d7c39c
--- /dev/null
+++ b/dev-scheme/gauche/files/gauche-0.9.5-unicode.patch
@@ -0,0 +1,19 @@
+commit d31eb5c02b65514e695b45c0c01cbd45a36bac4a
+Author: OOHASHI Daichi <dico.leque.comicron@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 000000000000..b4aedef2a316
--- /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 000000000000..1b9947cf5798
--- /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 000000000000..1e5ef71b6c91
--- /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 000000000000..8774bac7be13
--- /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 000000000000..e55f53606005
--- /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.3.3.ebuild b/dev-scheme/gauche/gauche-0.9.3.3.ebuild
new file mode 100644
index 000000000000..011ca66086e3
--- /dev/null
+++ b/dev-scheme/gauche/gauche-0.9.3.3.ebuild
@@ -0,0 +1,52 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+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 test"
+
+RDEPEND="sys-libs/gdbm"
+DEPEND="${RDEPEND}
+ test? ( dev-libs/openssl )"
+S="${WORKDIR}/${MY_P}"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-0.9-rpath.patch
+ "${FILESDIR}"/${PN}-0.9-gauche.m4.patch
+ "${FILESDIR}"/${PN}-0.9-ext-ldflags.patch
+ "${FILESDIR}"/${PN}-0.9-xz-info.patch
+ "${FILESDIR}"/${PN}-0.9-rfc.tls.patch
+ "${FILESDIR}"/${P}-gauche.threads.patch
+ "${FILESDIR}"/${P}-file.util.patch
+)
+
+src_prepare() {
+ default
+ eautoconf
+}
+
+src_configure() {
+ econf \
+ $(use_enable ipv6) \
+ --with-slib="${EPREFIX}"/usr/share/slib
+}
+
+src_test() {
+ emake -j1 -s check
+}
+
+src_install() {
+ emake -j1 DESTDIR="${D}" install-pkg install-doc
+ dodoc AUTHORS ChangeLog HACKING README
+}
diff --git a/dev-scheme/gauche/gauche-0.9.4-r1.ebuild b/dev-scheme/gauche/gauche-0.9.4-r1.ebuild
new file mode 100644
index 000000000000..4cdcd5cc5d74
--- /dev/null
+++ b/dev-scheme/gauche/gauche-0.9.4-r1.ebuild
@@ -0,0 +1,56 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+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}"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-0.9-rpath.patch
+ "${FILESDIR}"/${PN}-0.9-gauche.m4.patch
+ "${FILESDIR}"/${PN}-0.9-ext-ldflags.patch
+ "${FILESDIR}"/${PN}-0.9-xz-info.patch
+ "${FILESDIR}"/${PN}-0.9-rfc.tls.patch
+)
+
+src_prepare() {
+ mv gc/src/*.[Ss] gc || die
+ sed -i "/^EXTRA_libgc_la_SOURCES/s|src/||g" gc/Makefile.am
+
+ default
+ eautoconf
+}
+
+src_configure() {
+ econf \
+ $(use_enable ipv6) \
+ --with-slib="${EPREFIX}"/usr/share/slib
+}
+
+src_test() {
+ emake -j1 -s check
+}
+
+src_install() {
+ emake -j1 DESTDIR="${D}" install-pkg install-doc
+ dodoc AUTHORS ChangeLog HACKING README
+}
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 000000000000..e30ab60aee5c
--- /dev/null
+++ b/dev-scheme/gauche/gauche-0.9.5.ebuild
@@ -0,0 +1,60 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+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}"
+
+PATCHES=(
+ "${FILESDIR}"/${PN}-rpath.patch
+ "${FILESDIR}"/${PN}-gauche.m4.patch
+ "${FILESDIR}"/${PN}-ext-ldflags.patch
+ "${FILESDIR}"/${PN}-xz-info.patch
+ "${FILESDIR}"/${PN}-rfc.tls.patch
+ "${FILESDIR}"/${P}-libressl.patch
+ "${FILESDIR}"/${P}-bsd.patch
+ "${FILESDIR}"/${P}-unicode.patch
+)
+
+src_prepare() {
+ default
+
+ 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
+}
diff --git a/dev-scheme/gauche/metadata.xml b/dev-scheme/gauche/metadata.xml
new file mode 100644
index 000000000000..f4a4c8740c58
--- /dev/null
+++ b/dev-scheme/gauche/metadata.xml
@@ -0,0 +1,22 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>hattya@gentoo.org</email>
+ </maintainer>
+ <maintainer type="project">
+ <email>scheme@gentoo.org</email>
+ <name>Gentoo Scheme Project</name>
+ </maintainer>
+ <longdescription>
+ Gauche is an R5RS Scheme implementation developed to be a handy script
+ interpreter, which allows programmers and system administrators to write
+ small to large scripts for their daily chores. Quick startup, built-in
+ system interface, native multilingual support are some of my goals.
+
+ Gauche runs on several Unix-like platforms.
+ </longdescription>
+ <upstream>
+ <remote-id type="sourceforge">gauche</remote-id>
+ </upstream>
+</pkgmetadata>