aboutsummaryrefslogtreecommitdiff
path: root/devel/p5-Coro
diff options
context:
space:
mode:
authorAnton Berezin <tobez@FreeBSD.org>2006-01-11 13:17:31 +0000
committerAnton Berezin <tobez@FreeBSD.org>2006-01-11 13:17:31 +0000
commitd92f8ffc2f4a0304fa853e88dfb6a63a065ccf3e (patch)
tree3a7cebe3ea561c5e91f937e3665ab28eb86c360e /devel/p5-Coro
parent1f1a3ea8d04d5ff03590e0e001ad31993b9a08ee (diff)
downloadports-d92f8ffc2f4a0304fa853e88dfb6a63a065ccf3e.tar.gz
ports-d92f8ffc2f4a0304fa853e88dfb6a63a065ccf3e.zip
Notes
Diffstat (limited to 'devel/p5-Coro')
-rw-r--r--devel/p5-Coro/Makefile40
-rw-r--r--devel/p5-Coro/distinfo6
-rw-r--r--devel/p5-Coro/files/patch-Coro-Makefile.PL120
-rw-r--r--devel/p5-Coro/files/patch-Coro-State.xs (renamed from devel/p5-Coro/files/patch-Coro:State.xs)0
-rw-r--r--devel/p5-Coro/files/patch-Coro:Makefile.PL69
-rw-r--r--devel/p5-Coro/files/patch-coro.c10
-rw-r--r--devel/p5-Coro/pkg-plist1
7 files changed, 155 insertions, 91 deletions
diff --git a/devel/p5-Coro/Makefile b/devel/p5-Coro/Makefile
index 97eb0836b40d..3c712af27d72 100644
--- a/devel/p5-Coro/Makefile
+++ b/devel/p5-Coro/Makefile
@@ -6,7 +6,8 @@
#
PORTNAME= Coro
-PORTVERSION= 1.11
+PORTVERSION= 1.7
+PORTEPOCH= 1
CATEGORIES= devel
MASTER_SITES= ${MASTER_SITE_PERL_CPAN}
MASTER_SITE_SUBDIR= Coro
@@ -15,7 +16,7 @@ PKGNAMEPREFIX= p5-
MAINTAINER= perl@FreeBSD.org
COMMENT= Coro - coroutine process abstraction for perl
-BUILD_DEPENDS= ${SITE_PERL}/${PERL_ARCH}/Event.pm:${PORTSDIR}/devel/p5-Event \
+BUILD_DEPENDS= p5-Event>=0.89:${PORTSDIR}/devel/p5-Event \
${SITE_PERL}/${PERL_ARCH}/Scalar/Util.pm:${PORTSDIR}/lang/p5-Scalar-List-Utils
RUN_DEPENDS= ${BUILD_DEPENDS}
@@ -37,24 +38,25 @@ post-install:
.include <bsd.port.pre.mk>
.if ${PERL_LEVEL} < 500600
-IGNORE= "This port requires perl 5.6 or newer"
+IGNORE= requires perl 5.6.0 or later. Install lang/perl5.8 and try again
.endif
-MAN3= Coro.3 \
- Coro::Channel.3 \
- Coro::Cont.3 \
- Coro::Event.3 \
- Coro::Handle.3 \
- Coro::MakeMaker.3 \
- Coro::RWLock.3 \
- Coro::Select.3 \
- Coro::Semaphore.3 \
- Coro::SemaphoreSet.3 \
- Coro::Signal.3 \
- Coro::Socket.3 \
- Coro::Specific.3 \
- Coro::State.3 \
- Coro::Timer.3 \
- Coro::Util.3
+MAN3= Coro.3 \
+ Coro::AIO.3 \
+ Coro::Channel.3 \
+ Coro::Cont.3 \
+ Coro::Event.3 \
+ Coro::Handle.3 \
+ Coro::MakeMaker.3 \
+ Coro::RWLock.3 \
+ Coro::Select.3 \
+ Coro::Semaphore.3 \
+ Coro::SemaphoreSet.3 \
+ Coro::Signal.3 \
+ Coro::Socket.3 \
+ Coro::Specific.3 \
+ Coro::State.3 \
+ Coro::Timer.3 \
+ Coro::Util.3
.include <bsd.port.post.mk>
diff --git a/devel/p5-Coro/distinfo b/devel/p5-Coro/distinfo
index a63375ace7cf..27afdbe77972 100644
--- a/devel/p5-Coro/distinfo
+++ b/devel/p5-Coro/distinfo
@@ -1,3 +1,3 @@
-MD5 (Coro-1.11.tar.gz) = 6890d4641d62ff26eed9e9a849f4e45f
-SHA256 (Coro-1.11.tar.gz) = 72dbb6e778d44aaa3244c37e5cd5250d2b6ad4d959d4dee1d7ae427badb82a8b
-SIZE (Coro-1.11.tar.gz) = 54062
+MD5 (Coro-1.7.tar.gz) = 7f38a6641e18321a320ee1503a63d289
+SHA256 (Coro-1.7.tar.gz) = 9bfad7938046ea415b10cf3da996930fc6b87ac25bd7df555bd8509d361e9ee4
+SIZE (Coro-1.7.tar.gz) = 55794
diff --git a/devel/p5-Coro/files/patch-Coro-Makefile.PL b/devel/p5-Coro/files/patch-Coro-Makefile.PL
new file mode 100644
index 000000000000..288bd360b5dc
--- /dev/null
+++ b/devel/p5-Coro/files/patch-Coro-Makefile.PL
@@ -0,0 +1,120 @@
+--- Coro/Makefile.PL.orig Wed Jan 11 13:20:06 2006
++++ Coro/Makefile.PL Wed Jan 11 13:22:18 2006
+@@ -31,77 +31,8 @@ if ($^O =~ /win32/i or $^O =~ /cygwin/ o
+ $iface = "s";
+ }
+
+-print <<EOF;
+-
+-*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
+-
+-C context sharing: This option makes it possible to share the C stack and
+-context between many coroutines, resulting in large memory savings and
+-slight speed gains, at the cost of potential (but mostly theoretical)
+-segfaults. On my Linux/x86 machine this decreased the size of a new
+-coroutine from 9k to 5k, but the savings are much more apparent on
+-machines without mmap or good memory management.
+-
+-The algorithm relies on the non-fact that the same machine stack pointer
+-indicates the same function call nesting level, which usually works good
+-enough (no known cases of it failing are known) but might fail in theory.
+-
+-The default (enabled) has been in use on productions servers for some
+-time now, without any problem reports, so you are encouraged to use the
+-default.
+-
+-EOF
+-
+-if (prompt ("Do you want to enable C context sharing (y/n)", "y") !~ /^\s*n/i) {
+- print "\nC context sharing enabled.\n\n";
++$iface = "u";
+ $DEFINE .= " -DCORO_LAZY_STACK";
+-}
+-
+-if ($iface) {
+- print <<EOF;
+-
+-*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
+-
+-Coro can use a number of methods to implement coroutines at the C
+-level. The default chosen is based on your current confguration and is
+-correct in most cases, but you still can chose between these alternatives:
+-
+-u The unix 'ucontext.h' functions are relatively new and not implemented
+- or well-tested in older unices. They allow very fast coroutine creation
+- and reasonably fast switching, and, most importantly, are very stable.
+-
+-s If the ucontext functions are not working or you don't want
+- to use them for other reasons you can try a workaround using
+- setjmp/longjmp/sigaltstack (also standard unix functions). Coroutine
+- creation is rather slow, but switching is very fast as well (often much
+- faster than with the ucontext functions). Unfortunately, glibc-2.1 and
+- below don't even feature a working sigaltstack.
+-
+-l GNU/Linux. Very old GNU/Linux systems (glibc-2.1 and below) need
+- this hack. Since it is very linux-specific it is also quite fast and
+- recommended even for newer versions; when it works, that is (currently
+- x86 and a few others only. If it compiles, it's usually ok).
+-
+-i IRIX. For some reason, SGI really does not like to follow the single
+- unix specification (does that surprise you?), so this workaround might
+- be needed (it's fast), although [s] and [u] should also work now.
+-
+-w Microsoft Windows. Try this on Microsoft Windows, although, as there is
+- no standard on how to do this under windows, this might work only on
+- cygwin or specific versions of msvc. Your problem.
+-
+-For most systems, the default chosen should be OK. If you experience
+-problems then you should experiment with this setting and/or turn off
+-optimizations (make OPTIMIZE=-O0).
+-
+-EOF
+-
+-retry:
+-
+- my $r = prompt "Use which implementation,\n" .
+- "<s>etjmp/longjump, <u>context, <i>rix, <l>inux or <w>indows?",
+- $iface;
+- $iface = lc $1 if $r =~ /(\S)/;
+
+ if ($iface eq "u") {
+ $DEFINE .= " -DCORO_UCONTEXT";
+@@ -122,37 +53,9 @@ retry:
+ print "\nUsing windows-specific implementation\n\n";
+ } else {
+ print "\nUnknown implementation \"$iface\"\n";
+- goto retry;
+ }
+-} else {
+- print "\nUsing microsoft compatible coroutines\n\n";
+-}
+-
+-print <<EOF;
+-
+-*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
+-
+-Per-context stack size factor: Depending on your settings, Coro tries to
+-share the C stack as much as possible, but sometimes it needs to allocate
+-a new one. This setting controls the maximum size that gets allocated,
+-and should not be set too high, as memory and address space still is
+-wasted even if it's not fully used. The value entered will be multiplied
+-by sizeof(long), which is usually 4 on 32-bit systems, and 8 on 64-bit
+-systems.
+-
+-A setting of 16384 (the default) therefore corresponds to a 64k..128k
+-stack, which usually is ample space (you might even want to try 8192 or
+-lower if your program creates many coroutines).
+-
+-Some perls (mostly threaded ones and perl compiled under linux 2.6) and
+-some programs (inefficient regexes can use a lot of stack space) may
+-need much, much more: If Coro segfaults with weird backtraces (e.g. in a
+-function prologue) or in t/10_bugs.t, you might want to increase this to
+-65536 or more.
+-
+-EOF
+
+-my $stacksize = prompt ("C stack size factor", "16384");
++my $stacksize = 65536;
+ $DEFINE .= " -DSTACKSIZE=$stacksize";
+
+ print "using a stacksize of $stacksize * sizeof(long)\n";
diff --git a/devel/p5-Coro/files/patch-Coro:State.xs b/devel/p5-Coro/files/patch-Coro-State.xs
index 130972c623f3..130972c623f3 100644
--- a/devel/p5-Coro/files/patch-Coro:State.xs
+++ b/devel/p5-Coro/files/patch-Coro-State.xs
diff --git a/devel/p5-Coro/files/patch-Coro:Makefile.PL b/devel/p5-Coro/files/patch-Coro:Makefile.PL
deleted file mode 100644
index f35ea3f00d68..000000000000
--- a/devel/p5-Coro/files/patch-Coro:Makefile.PL
+++ /dev/null
@@ -1,69 +0,0 @@
-$FreeBSD$
-
---- Coro/Makefile.PL.orig Tue Aug 10 03:53:02 2004
-+++ Coro/Makefile.PL Tue Aug 10 16:14:57 2004
-@@ -31,62 +31,15 @@
- $iface = "s";
- }
-
--print <<EOF;
--
--Version 0.12 introduced C context sharing. This makes it possible to share
--the C stack and context between many coroutines, resulting in memory
--savings and slight speed gains, at the cost of potential (but mostly
--theoretical) segfaults. On my Linux/x86 machine this decreased the size
--of a new coroutine from 9k to 5k, but the savings are much more apparent
--on machines without mmap or good memory management. This algorithm relies
--on the non-fact that the same machine stack pointer indicates the same
--function call nesting level, which usually works good enough but might
--fail...
--
--The default (enabled) has been in-use on productions servers for some time
--now, without any problem reports so far.
--
--EOF
--
--if (prompt ("Do you want to enable C context sharing (y/n)", "y") !~ /^\s*n/i) {
-+if (1 || prompt ("Do you want to enable C context sharing (y/n)", "y") !~ /^\s*n/i) {
- print "\nExperimental context sharing enabled.\n\n";
- $DEFINE .= " -DCORO_LAZY_STACK";
- }
-
- if ($iface) {
-- print <<EOF;
--
--Coro can use various ways to implement coroutines at the C level:
--
--u The unix ucontext functions are newer and not implemented in older
-- unices (or broken libc's like glibc-2.2.2 and below). They allow very
-- fast coroutine creation and fast switching, and, most importantly, are
-- very stable.
--
--s If the ucontext functions are not working or you don't want
-- to use them for other reasons you can try a workaround using
-- setjmp/longjmp/sigaltstack (also standard unix functions). Coroutine
-- creation is rather slow, but switching is very fast as well (often much
-- faster than with the ucontext functions). Unfortunately, glibc-2.1 and
-- below don't even feature a working sigaltstack.
--
--l Older GNU/Linux systems (glibc-2.1 and below) need this hack. Since it is
-- very linux-specific it is also quite fast for newer versions; when it
-- works, that is (currently x86 only)...
--
--i IRIX. For some reason, SGI really does not like to follow the unix
-- standard (does that surprise you?), so this workaround might be needed
-- (it's fast), although s and u should also work now.
--
--For most systems, the default chosen should be OK. If you experience
--problems then you should experiment with this setting and/or turn off
--optimizations (make OPTIMIZE=-O0).
--
--EOF
--
- retry:
-
-- my $r = prompt "Use which implementation,\n" .
-+ my $r = 's' || prompt "Use which implementation,\n" .
- "<s>etjmp/longjump, <u>context, <i>rix or <l>inux?",
- $iface;
- $iface = lc $1 if $r =~ /(\S)/;
diff --git a/devel/p5-Coro/files/patch-coro.c b/devel/p5-Coro/files/patch-coro.c
new file mode 100644
index 000000000000..03965b06a47b
--- /dev/null
+++ b/devel/p5-Coro/files/patch-coro.c
@@ -0,0 +1,10 @@
+--- Coro/libcoro/coro.c.orig Wed Jan 11 13:16:29 2006
++++ Coro/libcoro/coro.c Wed Jan 11 13:16:57 2006
+@@ -30,6 +30,7 @@
+ * go to Ralf S. Engelschall <rse@engelschall.com>.
+ */
+
++#include <sys/types.h>
+ #include "coro.h"
+
+ #if !defined(STACK_ADJUST_PTR)
diff --git a/devel/p5-Coro/pkg-plist b/devel/p5-Coro/pkg-plist
index 006a17f10d89..eef1d9e4c9de 100644
--- a/devel/p5-Coro/pkg-plist
+++ b/devel/p5-Coro/pkg-plist
@@ -5,6 +5,7 @@
%%SITE_PERL%%/%%PERL_ARCH%%/auto/Coro/State/State.bs
%%SITE_PERL%%/%%PERL_ARCH%%/auto/Coro/.packlist
%%SITE_PERL%%/%%PERL_ARCH%%/Coro.pm
+%%SITE_PERL%%/%%PERL_ARCH%%/Coro/AIO.pm
%%SITE_PERL%%/%%PERL_ARCH%%/Coro/Cont.pm
%%SITE_PERL%%/%%PERL_ARCH%%/Coro/State.pm
%%SITE_PERL%%/%%PERL_ARCH%%/Coro/Channel.pm