diff options
author | he <he> | 2009-12-09 09:23:50 +0000 |
---|---|---|
committer | he <he> | 2009-12-09 09:23:50 +0000 |
commit | b3359b576ff2303027bd46a872eb611f2f2c6cd7 (patch) | |
tree | cc3ec2944961300b66aaaa2695d599c7b01813a5 /lang/parrot | |
parent | 4855e4486a267b051acbbc9ea9fd7be9d1da0bd9 (diff) | |
download | pkgsrc-b3359b576ff2303027bd46a872eb611f2f2c6cd7.tar.gz |
Update to version 1.7.0.
Pkgsrc changes:
o Adapt the patch to t/op/io.t to a change done upstream slightly
after 1.7.0 was released.
o Add a patch which fixes a problem exposed by one of the tests,
related to library cloning, which caused dlclose() to be called
twice with the same handle value, ref. Parrot ticket 1340.
Upstream changes:
New in 1.7.0
- Functionality
+ Parrot_capture_lex has been added to the PARROT_EXPORT API
+ PARROT_MAX_ARGS has been increased from 8 to 16 to allow for
ops that take mo re than 8 args
- Performance
+ The profiling runcore now caches metadata for improved performance
- Maintenance and cleanup
+ Expanded the Parrot debugger documentation
+ Parrot debugger now uses the new Parrot STRING API
+ Continue to port rest of internals to use the STRING API
- Deprecations
+ The JIT subsystem has been removed and is being written from
the ground up. More information can be found at
https://trac.parrot.org/parrot/wiki/JITRewrite
+ Implicit optional named parameters (eligible in 2.1)
+ Continuation-based ExceptionHandlers (eligible in 2.1)
+ Use of undocumented variables in class_init (eligible in 2.1)
+ Parrot_oo_get_namespace (eligible in 2.1)
- Bugfix
+ Improved line number tracking in IMCC
- Tests
+ Converted many more Perl 5 tests to PIR
+ Expanded test coverage of the CallSignature, Namespace, FixedPMCArray,
ResizeableIntegerArray and ExceptionHandler PMCs
Diffstat (limited to 'lang/parrot')
-rw-r--r-- | lang/parrot/Makefile | 5 | ||||
-rw-r--r-- | lang/parrot/PLIST | 5 | ||||
-rw-r--r-- | lang/parrot/distinfo | 11 | ||||
-rw-r--r-- | lang/parrot/patches/patch-ai | 30 | ||||
-rw-r--r-- | lang/parrot/patches/patch-ak | 109 |
5 files changed, 127 insertions, 33 deletions
diff --git a/lang/parrot/Makefile b/lang/parrot/Makefile index 3f29fc89aa9..a34d079b33c 100644 --- a/lang/parrot/Makefile +++ b/lang/parrot/Makefile @@ -1,8 +1,7 @@ -# $NetBSD: Makefile,v 1.23 2009/10/21 14:23:13 he Exp $ +# $NetBSD: Makefile,v 1.24 2009/12/09 09:23:50 he Exp $ # -VERSION= 1.6.0 -PKGREVISION= 1 +VERSION= 1.7.0 RTYPE= devel DISTNAME= parrot-${VERSION} CATEGORIES= lang diff --git a/lang/parrot/PLIST b/lang/parrot/PLIST index 66baae9fcd8..95b35181930 100644 --- a/lang/parrot/PLIST +++ b/lang/parrot/PLIST @@ -1,4 +1,4 @@ -@comment $NetBSD: PLIST,v 1.9 2009/09/20 10:57:04 he Exp $ +@comment $NetBSD: PLIST,v 1.10 2009/12/09 09:23:50 he Exp $ bin/parrot bin/parrot_config bin/parrot_debugger @@ -28,7 +28,6 @@ include/parrot/${PKGVERSION}/parrot/encoding.h include/parrot/${PKGVERSION}/parrot/enums.h include/parrot/${PKGVERSION}/parrot/events.h include/parrot/${PKGVERSION}/parrot/exceptions.h -include/parrot/${PKGVERSION}/parrot/exec.h include/parrot/${PKGVERSION}/parrot/exit.h include/parrot/${PKGVERSION}/parrot/extend.h include/parrot/${PKGVERSION}/parrot/extend_vtable.h @@ -64,7 +63,6 @@ include/parrot/${PKGVERSION}/parrot/oplib/core_ops_switch.h include/parrot/${PKGVERSION}/parrot/oplib/ops.h include/parrot/${PKGVERSION}/parrot/packfile.h include/parrot/${PKGVERSION}/parrot/parrot.h -include/parrot/${PKGVERSION}/parrot/pic.h include/parrot/${PKGVERSION}/parrot/platform.h include/parrot/${PKGVERSION}/parrot/platform_interface.h include/parrot/${PKGVERSION}/parrot/pmc.h @@ -293,7 +291,6 @@ share/doc/parrot/${PKGVERSION}/pod/ops/experimental.pod share/doc/parrot/${PKGVERSION}/pod/ops/io.pod share/doc/parrot/${PKGVERSION}/pod/ops/math.pod share/doc/parrot/${PKGVERSION}/pod/ops/object.pod -share/doc/parrot/${PKGVERSION}/pod/ops/pic.pod share/doc/parrot/${PKGVERSION}/pod/ops/pmc.pod share/doc/parrot/${PKGVERSION}/pod/ops/set.pod share/doc/parrot/${PKGVERSION}/pod/ops/string.pod diff --git a/lang/parrot/distinfo b/lang/parrot/distinfo index cf2e1c0a324..28e32e00885 100644 --- a/lang/parrot/distinfo +++ b/lang/parrot/distinfo @@ -1,11 +1,12 @@ -$NetBSD: distinfo,v 1.18 2009/10/22 11:31:44 he Exp $ +$NetBSD: distinfo,v 1.19 2009/12/09 09:23:50 he Exp $ -SHA1 (parrot-1.6.0.tar.gz) = 2258c3a0da32ed8c1ce55ee460e81a841d06a2c1 -RMD160 (parrot-1.6.0.tar.gz) = ca5907643a9e972971daac51afd1b95a30103fa5 -Size (parrot-1.6.0.tar.gz) = 3977952 bytes +SHA1 (parrot-1.7.0.tar.gz) = 68e4b330f879549f920497332754ebf651c7e82e +RMD160 (parrot-1.7.0.tar.gz) = 11831164b7c203ee83fb911b84c94873ea112fcc +Size (parrot-1.7.0.tar.gz) = 3810349 bytes SHA1 (patch-ad) = 9002a7ca55f8f960bea669e383431b3eeb83a878 SHA1 (patch-ae) = 72e4752112dab2f0b72ede5c45b77fd5b5554606 SHA1 (patch-af) = f2d67ac311aec9960a47b54eacdc8b72e83521eb SHA1 (patch-ag) = 7a43d15e4e6fb76d4c4619affee4c3c8e0dd3444 -SHA1 (patch-ai) = 7430f01b99ed95996e5c76c2ffdc8122084bb822 +SHA1 (patch-ai) = c4b610754c00bd5e2dcf2df7b730aa96bb69da5a SHA1 (patch-aj) = df1d64aa5a3b5f3ed7389a72a855baa14dc7df38 +SHA1 (patch-ak) = 2caa175c26fcf717f6377fadd04b74a7c9cf750d diff --git a/lang/parrot/patches/patch-ai b/lang/parrot/patches/patch-ai index eb5cff72092..e6cbbe115ce 100644 --- a/lang/parrot/patches/patch-ai +++ b/lang/parrot/patches/patch-ai @@ -1,11 +1,11 @@ -$NetBSD: patch-ai,v 1.1 2009/10/21 14:23:13 he Exp $ +$NetBSD: patch-ai,v 1.2 2009/12/09 09:23:51 he Exp $ -I beleive this test works for all relevant pkgsrc platforms. -It has been similarly transformed upstream after 1.7.0 was released. +Mirror a change committed just after the release: the open_pipe_for_writing +test should work everywhere. ---- t/op/io.t.orig 2008-12-18 06:19:20.000000000 +0100 +--- t/op/io.t.orig 2009-10-20 23:30:03.000000000 +0200 +++ t/op/io.t -@@ -51,28 +51,9 @@ Tests various io opcodes. +@@ -51,22 +51,6 @@ Tests various io opcodes. ok(1, 'open with null mode') .end @@ -15,7 +15,7 @@ It has been similarly transformed upstream after 1.7.0 was released. - .include 'sysinfo.pasm' - $S0 = sysinfo .SYSINFO_PARROT_OS - if $S0 == 'linux' goto tt661_ok -- if $S0 == 'MSWin32' goto tt661_ok +-# if $S0 == 'MSWin32' goto tt661_ok - if $S0 == 'darwin' goto tt661_ok - if $S0 == 'openbsd' goto tt661_ok - @@ -28,35 +28,23 @@ It has been similarly transformed upstream after 1.7.0 was released. .include 'iglobals.pasm' .sub 'open_pipe_for_reading' -- $I0 = tt661_todo_test() -- unless $I0 goto open_pipe_for_reading_todoed -- - .local pmc interp - interp = getinterp - -@@ -103,15 +84,9 @@ Tests various io opcodes. - open_pipe_for_reading_failed: - nok(1, 'open pipe for reading') - .return () -- -- open_pipe_for_reading_todoed: -- todo(1, 'Unimplemented in this platform, TT #661') +@@ -103,8 +87,6 @@ Tests various io opcodes. .end .sub 'open_pipe_for_writing' - $I0 = tt661_todo_test() - unless $I0 goto open_pipe_for_writing_todoed -- .local pmc interp interp = getinterp -@@ -144,9 +119,6 @@ Tests various io opcodes. +@@ -137,10 +119,6 @@ Tests various io opcodes. open_pipe_for_writing_failed: nok(1, 'open pipe for writing') .return () - - open_pipe_for_writing_todoed: - todo(1, 'Unimplemented in this platform, TT #661') +- .end # Local Variables: diff --git a/lang/parrot/patches/patch-ak b/lang/parrot/patches/patch-ak new file mode 100644 index 00000000000..ecba1e6f8f6 --- /dev/null +++ b/lang/parrot/patches/patch-ak @@ -0,0 +1,109 @@ +$NetBSD: patch-ak,v 1.1 2009/12/09 09:23:51 he Exp $ + +Prevent problem exposed by "library cloning", where the dlopen()-returned +handle is copied, causing dlclose() to be called twice with the same handle, +which in turn triggers a warning from ld.elf_so on NetBSD. Ref. +http://trac.parrot.org/parrot/ticket/1340. + +Index: config/gen/platform/generic/dl.c +=================================================================== +--- config/gen/platform/generic/dl.c (revision 42823) ++++ config/gen/platform/generic/dl.c (working copy) +@@ -22,11 +22,69 @@ + */ + + #ifdef PARROT_HAS_HEADER_DLFCN ++# include <stddef.h> ++# include <stdlib.h> + # include <dlfcn.h> + #endif + + #define PARROT_DLOPEN_FLAGS RTLD_LAZY + ++#ifdef PARROT_HAS_HEADER_DLFCN ++ ++struct handle_entry { ++ void *handle; ++ struct handle_entry *next; ++}; ++ ++struct handle_entry *handle_list = NULL; ++ ++static void ++push_handle_entry(void *handle) ++{ ++ struct handle_entry *e; ++ ++ e = malloc(sizeof(struct handle_entry)); ++ if (!e) { return; } ++ e->handle = handle; ++ e->next = handle_list; ++ handle_list = e; ++} ++ ++static void * ++find_handle_entry(void *handle) ++{ ++ struct handle_entry *e; ++ ++ for(e = handle_list; e; e = e->next) { ++ if (e->handle == handle) ++ return handle; ++ } ++ return NULL; ++} ++ ++static void ++remove_handle_entry(void *handle) ++{ ++ struct handle_entry *cur, *prev, *p; ++ ++ if (handle_list) { ++ if (handle_list->handle == handle) { ++ p = handle_list; ++ handle_list = p->next; ++ free(p); ++ } else { ++ for (cur = handle_list; cur; prev = cur, cur = cur->next) { ++ if (cur->handle == handle) { ++ prev->next = cur->next; ++ free(cur); ++ } ++ } ++ } ++ } ++} ++#endif /* PARROT_HAS_HEADER_DLFCN */ ++ ++ + /* + + =item C<void * Parrot_dlopen(const char *filename)> +@@ -39,7 +97,11 @@ + Parrot_dlopen(const char *filename) + { + #ifdef PARROT_HAS_HEADER_DLFCN +- return dlopen(filename, PARROT_DLOPEN_FLAGS); ++ void *h; ++ ++ h = dlopen(filename, PARROT_DLOPEN_FLAGS); ++ push_handle_entry(h); ++ return h; + #else + return 0; + #endif +@@ -93,7 +155,13 @@ + Parrot_dlclose(void *handle) + { + #ifdef PARROT_HAS_HEADER_DLFCN +- return dlclose(handle); ++ int rv; ++ ++ if (find_handle_entry(handle)) { ++ remove_handle_entry(handle); ++ rv = dlclose(handle); ++ return rv; ++ } + #else + return -1; + #endif |