diff options
author | Anton Berezin <tobez@FreeBSD.org> | 2006-01-11 13:17:31 +0000 |
---|---|---|
committer | Anton Berezin <tobez@FreeBSD.org> | 2006-01-11 13:17:31 +0000 |
commit | d92f8ffc2f4a0304fa853e88dfb6a63a065ccf3e (patch) | |
tree | 3a7cebe3ea561c5e91f937e3665ab28eb86c360e /devel/p5-Coro | |
parent | 1f1a3ea8d04d5ff03590e0e001ad31993b9a08ee (diff) | |
download | ports-d92f8ffc2f4a0304fa853e88dfb6a63a065ccf3e.tar.gz ports-d92f8ffc2f4a0304fa853e88dfb6a63a065ccf3e.zip |
Notes
Diffstat (limited to 'devel/p5-Coro')
-rw-r--r-- | devel/p5-Coro/Makefile | 40 | ||||
-rw-r--r-- | devel/p5-Coro/distinfo | 6 | ||||
-rw-r--r-- | devel/p5-Coro/files/patch-Coro-Makefile.PL | 120 | ||||
-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.PL | 69 | ||||
-rw-r--r-- | devel/p5-Coro/files/patch-coro.c | 10 | ||||
-rw-r--r-- | devel/p5-Coro/pkg-plist | 1 |
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 |