Re: New language: Parrot Common Lisp
On Fri, Apr 22, 2005 at 07:59:57AM +0200, Uwe Voelker wrote: > >I'd like to announce the creation of the Parrot Common Lisp project, > > Let's port emacs to it :-) Erik Naggum, is that you? -- Lars Balker RasmussenConsult::Perl
Re: [PATCH] Re: Getting the grammar engine in (or a small task for the interested)
Andy Dougherty <[EMAIL PROTECTED]> writes: > --- parrot-orig/compilers/p6ge/p6ge_gen.c Fri Nov 19 08:53:40 2004 > +++ parrot-andy/compilers/p6ge/p6ge_gen.c Fri Nov 19 14:43:43 2004 > /* strcon(...) converts string values into PIR string constants */ > static char* > -strcon(const char* s, int len) > +strcon(const unsigned char* s, int len) > { Haven't looked at the code yet, but I'll just observe that Ansi/ISO C reserves the str[a-z].* namespace for its own use, which will cause noise with some compilers. Please use str_con or equivalent instead. -- Lars Balker Rasmussen Consult::Perl http://consult-perl.dk
Re: Oops, here's the full parrotunit
Piers Cawley <[EMAIL PROTECTED]> writes: > This time fer sure Since you're using a version of Gnus that supports it, you will want this in your .gnus: (setq mml-insert-mime-headers-always t) Gnus and ezmlm-idx don't play nice together without it (it's all ezmlm-idx's fault though, but good luck figuring out how and why). -- Lars Balker Rasmussen http://consult-perl.dk Consult::Perl
Re: [PATCH] The Return of the Priority DOD
Jeff Clites <[EMAIL PROTECTED]> writes: > It gets set in include/parrot/pobj.h, and is basically set to true if > your platform has some flavor of memalign(), which allows you to > allocate chunks of memory with arbitrary power-of-2 alignment. So all > the platforms being tested on the tinders probably have this. (Of > course, you can manually set ARENA_DOD_FLAGS to false in the source, > for testing.) Actually, at least FreeBSD doesn't have either of the memalign()'s parrot looks for, which is what Nicholas (and I) ran into. (If OpenBSD doesn't have one either, there's some clean-up to be done in parrot/config/init/hints/openbsd.pl :-) ) -- Lars Balker RasmussenConsult::Perl
gdbm_compat (Was: [PATCH] Re: Crash when joining multiple threads)
Matt Fowles <[EMAIL PROTECTED]> writes: > $ cat test.ldo > /usr/bin/ld: cannot find -lgdbm_compat > collect2: ld returned 1 exit status > > > Hope someone know more about this gdbm_compat thing then I do... > > I am running a relatively stock Debian testing box. Changing line 27 of config/inter/progs.pl to grep { $^O=~/VMS|MSWin/ || !/^-l(c|gdbm(_compat)?|dbm|ndbm|db)$/ } should help you along. I don't have a Debian box, but a friends "revision 5.0 version 8 subversion 2 (Debian unstable)" reveals: % perl -le 'use Config; print $Config{libs}' -lgdbm -lgdbm_compat -ldb -ldl -lm -lpthread -lc -lcrypt I have no idea why Debians perl is linked with gdbm_compat as well as gdbm. I suppose this is a patch :-) -- Lars Balker Rasmussen Consult::Perl
Re: This week's summary
The Perl 6 Summarizer <[EMAIL PROTECTED]> writes: > Me? I think Perl 6's design 'in the large' will be pretty much done once > Apocalypse 12 and its corresponding Exegesis are finished. Of course, > the devil is in the details, but I don't doubt that the hoped for > existence of a working Perl6::Rules by the end of April is going to > provide us with a great deal of the leverage we need to get a working > Perl 6 alpha ready for OSCON with something rather more solid ready by > the end of the year. Parrot continues to amaze and delight with its > progress; Dan tells me that he's about ready to roll out a large parrot > based application for his employers, so it's approaching the point where > people's salaries will depend on Parrot. I confess I wouldn't be > surprised if, by the end of the year, we haven't seen the full > implementation of at least one of the big non-Perl scripting languages > on top of Parrot. I'm confused, are you optimistic or pessimistic in that last sentence? -- Lars Balker Rasmussen Consult::Perl
Re: [PATCH?] Error in t/src/list.t on FreeBSD
Leopold Toetsch <[EMAIL PROTECTED]> writes: > All these (non-trivial) source tests, that create some resources should > use the scheme of t/src/basic_3. I've rewritten list.t and hash.t to use this scheme, generalizing the layout a bit in the process. I'm not sure about the reasoning for one of the interpreter setups in the old hash.t (marked with XXX), and whether it's needed now - seems to work fine without, but that may not be the point. I'll do the rest of them later, but I really should work on other stuff now :-) Cheers, -- Lars Balker Rasmussen Consult::Perl Index: t/src/exit.t === RCS file: /cvs/public/parrot/t/src/exit.t,v retrieving revision 1.5 diff -u -a -r1.5 exit.t --- t/src/exit.t 13 Dec 2003 15:01:19 - 1.5 +++ t/src/exit.t 5 Jan 2004 18:16:30 - @@ -10,6 +10,7 @@ printf("pre-exit\n"); Parrot_exit(0); printf("post-exit\n"); +return 0; } CODE pre-exit Index: t/src/hash.t === RCS file: /cvs/public/parrot/t/src/hash.t,v retrieving revision 1.10 diff -u -a -r1.10 hash.t --- t/src/hash.t 13 Dec 2003 15:01:19 - 1.10 +++ t/src/hash.t 5 Jan 2004 18:16:30 - @@ -3,63 +3,79 @@ use Parrot::Test tests => 10; -c_output_is(<<'CODE', <<'OUTPUT', "new_hash"); +my $main = <<'CODE'; +#include +#include -#include -#include "parrot/parrot.h" -#include "parrot/embed.h" +static opcode_t *the_test(Parrot_Interp, opcode_t *, opcode_t *); -int main(int argc, char* argv[]) { -Interp* interpreter; +int exit_value = 0; + +int main(int argc, char* argv[]) +{ +Parrot_Interp interpreter = Parrot_new(NULL); +if (!interpreter) { +return 1; +} +Parrot_init(interpreter); + +Parrot_run_native(interpreter, the_test); + +Parrot_exit(exit_value); +return exit_value; +} + +CODE + +c_output_is($main . <<'CODE', <<'OUTPUT', "new_hash"); + +static opcode_t* +the_test(struct Parrot_Interp *interpreter, + opcode_t *cur_op, opcode_t *start) +{ Hash *hash; STRING *key; HashEntry value; -interpreter = Parrot_new(NULL); - -if ( interpreter == NULL ) return 1; - -Parrot_init(interpreter); +UNUSED(cur_op); +UNUSED(start); new_hash(interpreter, &hash); if ( hash == NULL ) { - printf("hash creation failed\n"); - return 1; + PIO_eprintf(interpreter, "hash creation failed\n"); + exit_value = 1; + return NULL; } -printf("ok\n"); +PIO_eprintf(interpreter, "ok\n"); -return 0; +return NULL; } CODE ok OUTPUT -c_output_is(<<'CODE', <<'OUTPUT', "hash_put"); - -#include -#include "parrot/parrot.h" -#include "parrot/embed.h" +c_output_is($main . <<'CODE', <<'OUTPUT', "hash_put"); -int main(int argc, char* argv[]) { -Interp* interpreter; +static opcode_t* +the_test(struct Parrot_Interp *interpreter, + opcode_t *cur_op, opcode_t *start) +{ Hash *hash; STRING *key; HashEntry value; -interpreter = Parrot_new(NULL); - -if ( interpreter == NULL ) return 1; - -Parrot_init(interpreter); +UNUSED(cur_op); +UNUSED(start); new_hash(interpreter, &hash); if ( hash == NULL ) { - printf("hash creation failed\n"); - return 1; + PIO_eprintf(interpreter, "hash creation failed\n"); + exit_value = 1; + return NULL; } key = string_from_cstring(interpreter, "fortytwo", 0); @@ -67,39 +83,35 @@ value.val.int_val = 42; hash_put(interpreter, hash, key, &value); -printf("ok\n"); +PIO_eprintf(interpreter, "ok\n"); -return 0; +return NULL; } CODE ok OUTPUT -c_output_is(<<'CODE', <<'OUTPUT', "hash_get"); +c_output_is($main . <<'CODE', <<'OUTPUT', "hash_get"); -#include -#include "parrot/parrot.h" -#include "parrot/embed.h" - -int main(int argc, char* argv[]) { -Interp* interpreter; +static opcode_t* +the_test(struct Parrot_Interp *interpreter, + opcode_t *cur_op, opcode_t *start) +{ Hash *hash; STRING *key; HashEntry _value; HashEntry *value = &_value; -interpreter = Parrot_new(NULL); - -if ( interpreter == NULL ) return 1; - -Parrot_init(interpreter); +UNUSED(cur_op); +UNUSED(start); new_hash(interpreter, &hash); if ( hash == NULL ) { - printf("hash creation failed\n"); - return 1; + PIO_eprintf(interpreter, "hash creation failed\n"
[PATCH?] Error in t/src/list.t on FreeBSD
I was seeing an error in the second test in t/src/list.t on FreeBSD: set_integer_keyed() not implemented in class 'PerlInt' I tracked it down to two consecutive calls to pmc_new() returning the same pointer, which is generally not what you want. Copying the following line from imcc/main.c to just before the first pmc_new() in the second test in t/src/list.t fixed the problem. interpreter->DOD_block_level++; But I'm unsure if this is the right way to go about it, or rather, if the line above belongs in Parrot_init() or elsewhere. Cheers, -- Lars Balker Rasmussen Consult::Perl
Re: [perl #24333] [PATCH] pthreads configure on FreeBSD
Juergen Boemmels <[EMAIL PROTECTED]> writes: > Lars Balker Rasmussen (via RT) <[EMAIL PROTECTED]> writes: >> The pthreads library seems to be missing on the FreeBSD 4.8 and 5.0 >> machines I have access to. I don't know what, if any, FreeBSD'en >> should happen to have that library... >> >> There are two ways to link in the pthreads-stuff on FreeBSD - I have >> taken the method from the ports systems makefile to decide between them. > > I have another patch from Nick Kostirya <[EMAIL PROTECTED]> which > accidently dropped off-list. He tries to solve the same issue (and > uses a similar approach). But he changed ccflags. Can someone of the > FreeBSD guys enlighten me which of these two patches is the better > one? I can apply only one. I'm sure we can agree on something. > +if ($osreldate >= 500016) { > + # use KSE (libpthread) > + # See http://www.freebsd.org/kse/ > + if ( $libs !~ /-lpthreads/ ) { > + $libs .= ' -lpthreads'; > + } My 5.0 reports version 500043, but doesn't have libpthreads, so the above won't work for me. And the KSE-page mentions -lpthread? > +} else { > + # use libc_r > + $libs =~ s/-lpthreads//; > + > + my $ccflags = Configure::Data->get('ccflags'); > + if ( $ccflags !~ /-pthread/ ) { > +$ccflags .= ' -pthread'; > + } > + Configure::Data->set( > + ccflags => $ccflags, > + ) I suppose it's technically more correct to set -pthread in ccflags. -- Lars Balker Rasmussen Consult::Perl
Re: floor op
"Burnett, David" <[EMAIL PROTECTED]> writes: > I asked how to 'floor' in parrot on IRC last night, and this raised the > the idea of having a 'floor' op. I was then asked to email a reminder here > so here it is. I've implemented an op for floor on native numbers. Feel free to give it a whirl. (I'm not sure if floor(-0.0) is meant to return -0.0 or not, but it does.) > So I now I have a working my perlin noise (with turbulence) implementation > written in pure pasm :-) Cool! So, how does it perform? ;) -- Lars Balker Rasmussen Consult::Perl Index: math.ops === RCS file: /cvs/public/parrot/math.ops,v retrieving revision 1.8 diff -u -a -r1.8 math.ops --- math.ops 31 Jul 2003 19:39:11 - 1.8 +++ math.ops 3 Sep 2003 17:22:51 - @@ -390,6 +390,35 @@ +=item B(inout NUM) + +Set $1 to the largest integral value less than or equal to $1. + +=item B(out INT, in NUM) + +=item B(out NUM, in NUM) + +Set $1 to the largest integral value less than or equal to $2. + +=cut + +inline op floor(inout NUM) { + $1 = floor( $1 ); + goto NEXT(); +} + +inline op floor(out INT, in NUM) { + $1 = (INTVAL)floor($2); + goto NEXT(); +} + +inline op floor(out NUM, in NUM) { + $1 = floor($2); + goto NEXT(); +} + + + =item B(inout INT) =item B(inout NUM) Index: t/op/arithmetics.t === RCS file: /cvs/public/parrot/t/op/arithmetics.t,v retrieving revision 1.6 diff -u -a -r1.6 arithmetics.t --- t/op/arithmetics.t 8 Aug 2003 03:20:23 - 1.6 +++ t/op/arithmetics.t 3 Sep 2003 17:22:52 - @@ -1,6 +1,6 @@ #! perl -w -use Parrot::Test tests => 40; +use Parrot::Test tests => 41; use Test::More; my $fp_equality_macro = <<'ENDOFMACRO'; @@ -303,7 +303,80 @@ 123.456789 123.456789 OUTPUT - + +output_is(<<'CODE', <
Re: Warnocks Dilemma (was Maybe [PATCH] move some stuff out of io.h to io_privat.h)
Juergen Boemmels <[EMAIL PROTECTED]> writes: > I have the strange > feeling that its because nobody read my mail, because sometimes the > p6i mailinglist does not like mail with attachments. That's ezmlm-idx which doesn't like Gnus' minimalistic approach to Content-type in text-attachments. I've patched my Gnus to be slightly more verbose, which has fixed it for me (as seen in this message). Fixing ezmlm-idx is a bit more demanding... --- mml.el~ Tue Apr 29 02:52:48 2003 +++ mml.el Sun Aug 3 01:12:00 2003 @@ -54,6 +54,10 @@ :type '(repeat (symbol :tag "Parameter")) :group 'message) +(defvar mml-insert-mime-headers-always nil + "If non-nil, always put at least Content-Type: text/plain at the top +of MIME parts. It's necessary to work against a bug in ezmlm.") + (defvar mml-tweak-type-alist nil "A list of (TYPE . FUNCTION) for tweaking MML parts. TYPE is a string containing a regexp to match the MIME type. FUNCTION @@ -608,7 +612,8 @@ (when (or charset parameters flowed - (not (equal type mml-generate-default-type))) + (not (equal type mml-generate-default-type)) + mml-insert-mime-headers-always) (when (consp charset) (error "Can't encode a part with several charsets.")) -- Lars Balker Rasmussen Consult::Perl
Re: [PATCH] Add IMCC tests to make test (Revised)
Leopold Toetsch <[EMAIL PROTECTED]> writes: > Andy Bussey <[EMAIL PROTECTED]> wrote: >> Here's a revised patch to add the IMCC tests >> to 'make test' and 'make fulltest' - this time >> patched against root.in. > > Thanks, applied. t/syn/file.t relies on . being in path (in the 3 system("imcc...") calls), so "make test" fails for me (and for some of the tinderboxen, it seems). -- Lars Balker Rasmussen Consult::Perl
Re: [perl #23029] [PATCH] -Wpadded annoying
Lars Balker Rasmussen (via RT) <[EMAIL PROTECTED]> writes: > # New Ticket Created by Lars Balker Rasmussen > # Please include the string: [perl #23029] > # in the subject line of all future correspondence about this issue. > # http://rt.perl.org/rt2/Ticket/Display.html?id=23029 > > > > -Wpadded seems to be more trouble than it's worth at this stage, so I > suggest getting rid of it. It clashes with a FreeBSD header file, and > the amount of warnings on Solaris just explodes, hiding more > interesting stuff. Resubmitted... > -- attachment 1 -- > url: http://rt.perl.org/rt2/attach/61205/45206/2d805d/padded.patch > > Index: config/auto/gcc.pl > === > RCS file: /cvs/public/parrot/config/auto/gcc.pl,v > retrieving revision 1.6 > diff -u -a -r1.6 gcc.pl > --- config/auto/gcc.pl15 Jul 2003 18:08:34 - 1.6 > +++ config/auto/gcc.pl17 Jul 2003 20:37:13 - > @@ -74,7 +74,7 @@ > 2.7 => "", > 2.8 => "-Wsign-compare", > 2.95 => "", > - 3.0 => "-Wformat-nonliteral -Wformat-security -Wpacked -Wpadded > -Wdisabled-optimization", > + 3.0 => "-Wformat-nonliteral -Wformat-security -Wpacked > -Wdisabled-optimization", > # -Wsequence-point is part of -Wall > # -Wfloat-equal may not be what we want > # We shouldn't be using __packed__, but I doubt -Wpacked will harm us -- Lars Balker Rasmussen Consult::Perl
Re: [perl #23025] [PATCH] env.t doesn't test the env ops on solaris (and others)
Lars Balker Rasmussen (via RT) <[EMAIL PROTECTED]> writes: > # New Ticket Created by Lars Balker Rasmussen > # Please include the string: [perl #23025] > # in the subject line of all future correspondence about this issue. > # http://rt.perl.org/rt2/Ticket/Display.html?id=23025 > > > > There's no reason to test for the presence of setenv/unsetenv in libc > - these functions are emulated if not present. > > However, now the 4th test fails on Solaris (and most likely other OS's > witout setenv/unsetenv). This is because the test relies on a key > disappearing from %ENV when it's been unsetenv'ed - this doesn't > happen when using putenv("key=") as the current unsetenv emulation. > > I'm not sure what's the best portable way to handle this is. We'll postpone deciding on this one until later - I've attached a patch to env.t that tests the env-implementation on all platforms, and doesn't fail on Solaris. ? env.diff Index: t/pmc/env.t === RCS file: /cvs/public/parrot/t/pmc/env.t,v retrieving revision 1.4 diff -u -a -u -r1.4 env.t --- t/pmc/env.t 23 Jul 2003 18:18:56 - 1.4 +++ t/pmc/env.t 8 Aug 2003 15:42:06 - @@ -1,10 +1,9 @@ #! perl -w -use Parrot::Test tests => 4; +use Parrot::Test tests => 5; use Test::More; use Parrot::Config; -SKIP: { - skip("no setenv", 3) unless $PConfig{"setenv"}; + $ENV{"PARROT_TMP"} = "riding a ponie"; output_like(<<'CODE', <-- Lars Balker Rasmussen Consult::Perl
Re: [perl #23135] Build fails under Win32
"Vladimir Lipskiy" <[EMAIL PROTECTED]> writes: >> if (-e "jit/$cpuarch/core.jit" and not $osname == 'MSWin32'){ ITYM: >> if (-e "jit/$cpuarch/core.jit" and $osname ne 'MSWin32') { -- Lars Balker Rasmussen Consult::Perl
Re: [CVS ci] make: print filenames only
Josh Wilmes <[EMAIL PROTECTED]> writes: > I don't like the current state of things- it seems to be printing out the > full compilation commands occasionally, but mostly not. That's because not all makefiles use cc_flags.pl > I think that at this stage of development it's best to print out the full > commands being executed. I agree. Ideally, the best way to avoid warnings is to use -Werror ;-) -- Lars Balker Rasmussen Consult::Perl
Re: [perl #23115] powerpc linux support
"Arcady Goldmints" (via RT) <[EMAIL PROTECTED]> writes: > Contrary to popular belief, linux does run on things other than x86, > and people with powerpc machines do use OSs other than Darwin. It > seems, however, that the parrot configure system does not detect my > platform as JIT-capable, even though I have a strong suspicion that > it would work anyway. However, I don't understand the configure > system well enough to get it to let me use JIT. I may know the configure system enough to help you - but first, what does your "myconfig" file say? -- Lars Balker Rasmussen Consult::Perl
Re: [perl #23025] [PATCH] env.t doesn't test the env ops on solaris (and others)
Benjamin Goldberg <[EMAIL PROTECTED]> writes: > Lars Balker Rasmussen wrote: >> However, now the 4th test fails on Solaris (and most likely other OS's >> witout setenv/unsetenv). This is because the test relies on a key >> disappearing from %ENV when it's been unsetenv'ed - this doesn't >> happen when using putenv("key=") as the current unsetenv emulation. >> >> I'm not sure what's the best portable way to handle this is. > > a) Have config test for the existance of extern char **environ, or > possibly for extern char **_environ, and then emulate unsetenv by > mangling the contents of that variable. That's what perl5.8.0 (util.c:Perl_my_setenv) seems to prefer. But if PERL_USE_SAFE_PUTENV is defined it falls back to putenv("foo=") for clearing foo, which is what we do at the moment. So as far as I can tell, the perl5 semantics is that you can't rely on "delete $ENV{foo}" removing the key "foo" from %ENV... Dan? > b) Use a hash to keep track of which keys we have deleted from %ENV. > When we want to know if a key exists in %ENV, first try to getenv() it, > and if it's an empty string (""), see if it's mentioned in the hash of > things we deleted from %ENV: if so, *claim* that the key doesn't exist. Eek, that's just plain nasty :-) -- Lars Balker Rasmussen Consult::Perl
Re: [perl #23025] [PATCH] env.t doesn't test the env ops on solaris (and others)
Lars Balker Rasmussen (via RT) <[EMAIL PROTECTED]> writes: > There's no reason to test for the presence of setenv/unsetenv in libc > - these functions are emulated if not present. I'll just reiterate: Configures test for the presence of setenv and unsetenv should not cause env.t to to skip the env tests! They are entirely different layers of execution, and if the functions are not present, they are emulated. If the emulation doesn't work, we want to know about it, viz: > However, now the 4th test fails on Solaris (and most likely other OS's > witout setenv/unsetenv). This is because the test relies on a key > disappearing from %ENV when it's been unsetenv'ed - this doesn't > happen when using putenv("key=") as the current unsetenv emulation. > > I'm not sure what's the best portable way to handle this is.1 Any comments? -- Lars Balker Rasmussen Consult::Perl
Re: objects.t failures
Simon Glover <[EMAIL PROTECTED]> writes: > OK, I've committed it. I'll just confirm that FreeBSD/x86 now passes objects.t. -- Lars Balker Rasmussen Consult::Perl
[PATCH] core.ops split
Index: config/gen/makefiles.pl === RCS file: /cvs/public/parrot/config/gen/makefiles.pl,v retrieving revision 1.16 diff -u -a -r1.16 makefiles.pl --- config/gen/makefiles.pl 21 Jul 2003 20:16:12 - 1.16 +++ config/gen/makefiles.pl 23 Jul 2003 11:00:38 - @@ -13,8 +13,6 @@ commentType => '#'); genfile('config/gen/makefiles/classes.in', 'classes/Makefile', commentType => '#'); - genfile('config/gen/makefiles/docs.in', 'docs/Makefile', - commentType => '#'); genfile('config/gen/makefiles/languages.in', 'languages/Makefile', commentType => '#'); genfile('config/gen/makefiles/jako.in', 'languages/jako/Makefile', @@ -33,6 +31,34 @@ commentType => '#'); genfile('config/gen/makefiles/ook.in', 'languages/ook/Makefile', commentType => '#'); + + # set up docs/Makefile, partly based on the .ops in the root dir + + opendir ROOT, "." or die "opendir .: $!"; + my @ops = sort grep { -f $_ and /\.ops$/ } readdir ROOT; + closedir ROOT; + + my $pod = join " ", map { my $t = $_; $t =~ s/\.ops$/.pod/; "ops/$t" } @ops; + + Configure::Data->set(pod => $pod); + + genfile('config/gen/makefiles/docs.in', 'docs/Makefile', + commentType => '#'); + + Configure::Data->set(pod => undef); + + open MAKEFILE, ">> docs/Makefile" or die "open >> docs/Makefile: $!"; + + foreach my $ops (@ops) { + my $pod = $ops; + $pod =~ s/\.ops$/.pod/; + print MAKEFILE <<"EOM"; +ops/$pod: ../$ops + perldoc -u ../$ops > ops/$pod +EOM + } + + close MAKEFILE } 1; Index: config/gen/makefiles/docs.in === RCS file: /cvs/public/parrot/config/gen/makefiles/docs.in,v retrieving revision 1.5 diff -u -a -r1.5 docs.in --- config/gen/makefiles/docs.in 22 Jul 2003 21:04:14 - 1.5 +++ config/gen/makefiles/docs.in 23 Jul 2003 11:00:38 - @@ -1,11 +1,9 @@ PERL = ${perl} RM_F = ${rm_f} -OPS = bit.pod cmp.pod core.pod debug.pod dotgnu.pod io.pod math.pod \ - object.pod obscure.pod pmc.pod rx.pod set.pod stack.pod string.pod \ - sys.pod var.pod +POD = ${pod} -all: packfile-c.pod packfile-perl.pod +all: packfile-c.pod packfile-perl.pod $(POD) packfile-c.pod: ../packfile.c perldoc -u ../packfile.c > packfile-c.pod @@ -14,5 +12,5 @@ perldoc -u ../lib/Parrot/PackFile.pm > packfile-perl.pod clean: - $(RM_F) packfile-c.pod packfile-perl.pod + $(RM_F) packfile-c.pod packfile-perl.pod $(POD) Simon Glover <[EMAIL PROTECTED]> writes: > OK, I've just created a new ops subdirectory in the docs directory, and > changed the docs makefile so that each *.ops file creates a corresponding > *.pod file in there. Everything works OK for me, but I'd appreciate it > if people using non-Unix systems (or non-GNU make) could check that it > works for them. It's really hard to do portable makefile stuff that does name-mangling as well as work across directories. Your patch didn't work with BSD make nor nmake on win32, so Dan rolled the pod generation back yesterday. I've attached a patch to get the configure system to generate a VERY basic makefile for the pod generation phase that works with both BSD and GNU make, and I assume nmake. Cheers, -- Lars Balker Rasmussen Consult::Perl
Re: Making Parrot On Win32
"Jonathan Worthington" <[EMAIL PROTECTED]> writes: > However, the next stage doesn't work out using either perl make.pl or nmake. > > === With nmake === > C:\Perl\Parrot\parrot>nmake > > Microsoft (R) Program Maintenance Utility Version 6.00.8168.0 > Copyright (C) Microsoft Corp 1988-1998. All rights reserved. > > cl -nologo -O1 -MD -Zi -DNDEBUG -DWIN32 -D_CONSOLE -DNO_STRICT -I./include - > DHAS > _JIT -DI386 -Fointerpreter.obj -c interpreter.c > interpreter.c > cl -nologo -O1 -MD -Zi -DNDEBUG -DWIN32 -D_CONSOLE -DNO_STRICT -I./include - > DHAS > _JIT -DI386 -Foparrot.obj -c parrot.c > parrot.c > parrot.c(0) : fatal error C1033: cannot open program database > 'c:\perl\parrot\pa > rrot\vc60.pdb' This looks like the same problem Brent had about the same time as you - it should be fixed in the latest cvs. (Perls exec seems to run async on win32?) > And then I try perl make.pl:- I doubt make.pl works at the moment. Cheers, -- Lars Balker Rasmussen Consult::Perl
Re: [perl #23027] [PATCH] Per-c-file flag handling in make
? cflags.diff ? cflags.tar.gz ? coresplit.diff ? t.tar Index: config/gen/cflags/imcc.in === RCS file: /cvs/public/parrot/config/gen/cflags/imcc.in,v retrieving revision 1.2 diff -u -a -r1.2 imcc.in --- config/gen/cflags/imcc.in 22 Jul 2003 02:16:07 - 1.2 +++ config/gen/cflags/imcc.in 22 Jul 2003 12:20:17 - @@ -1,8 +1,11 @@ -# [ filename | {regex} ] -{removed options} +{added options} ... +# [ filename | {regex} ] -{removed options} +{added options} s/// ... # -# note, empty regex/options are just ignored +# Avoid using non-configure controlled +{} directly in this file, as +# it'll most likely break on other platforms. # -{.*} -{-Wwrite-strings -Wcast-qual -Wno-unused} +# Note, empty regex/options are just ignored. +# +{.*} -{-Wwrite-strings -Wcast-qual} s/-Wno-unused/-Wunused/ instructions.c -{-Wformat-nonliteral} # noisy debug.c-{-Wformat-nonliteral} # noisy Index: config/gen/cflags/root.in === RCS file: /cvs/public/parrot/config/gen/cflags/root.in,v retrieving revision 1.1 diff -u -a -r1.1 root.in --- config/gen/cflags/root.in 21 Jul 2003 20:16:17 - 1.1 +++ config/gen/cflags/root.in 22 Jul 2003 12:20:17 - @@ -1,6 +1,9 @@ -# [ filename | {regex} ] -{removed option} +{added option} ... +# [ filename | {regex} ] -{removed options} +{added options} s/// ... # -# note, empty regexen/options are just ignored +# Avoid using non-configure controlled +{} directly in this file, as +# it'll most likely break on other platforms. +# +# Note, empty regex/options are just ignored. # spf_render.c -{-Wformat-nonliteral} # noisy tsq.c -{${optimize}} # never optimize tsq.c! Index: tools/dev/cc_flags.pl === RCS file: /cvs/public/parrot/tools/dev/cc_flags.pl,v retrieving revision 1.1 diff -u -a -r1.1 cc_flags.pl --- tools/dev/cc_flags.pl 21 Jul 2003 20:16:26 - 1.1 +++ tools/dev/cc_flags.pl 22 Jul 2003 12:20:18 - @@ -25,16 +25,26 @@ die "syntax error in $cflags: line $., $_\n"; } -while (s/^([-+])\{(.*?)\}\s*//) { - next unless $2; - my ($sign, $options) = ($1, $2); - foreach my $option (split ' ', $options) { - push @options, [ $regex, $sign, $option ]; +for (;;) { + if (s/^([-+])\{(.*?)\}\s*//) { + next unless $2; + my ($sign, $options) = ($1, $2); + foreach my $option (split ' ', $options) { + push @options, [ $regex, $sign, $option ]; + } + } + elsif (s{s(.)(.*?)\1(.*?)\1([imsx]*)\s*}{}) { + my $mod = ""; + $mod = "(?$4)" if $4; + + push @options, [ $regex, 's', "$mod$2", $3 ]; + } + elsif (/\S/) { + die "syntax error in $cflags: line $., $_\n"; + } + else { + last; } -} - -if (/\S/) { - die "syntax error in $cflags: line $., $_\n"; } } @@ -45,8 +55,13 @@ if ($option->[1] eq '+') { splice @ARGV, 1, 0, $option->[2]; } - else { + elsif ($option->[1] eq '-') { @ARGV = grep { $_ ne $option->[2] } @ARGV; + } + else { + foreach my $arg (@ARGV) { + $arg =~ s/$option->[2]/$option->[3]/; + } } } }
Re: Small perl task for the interested
Josh Wilmes <[EMAIL PROTECTED]> wrote: >> .c$(O) : >> $(PERL) tools/dev/cc_flags.pl $(CC) $(CFLAGS) ${cc_o_out}$@ -c $< > > I would go a bit further, and create a tools/build/compile, tools/build/ > link_executable, tools/build/link_library, etc. > > Take all the flags out of the makefile altogether. Just a thought. It's a good idea, though the correct approach would be to return to only using a modified version of make.pl - but it's a lot more work than merely extending the current system. For now, I've focused only on the requirements Dan had. The suggestion by Benjamin Goldberg was already in the patch already committed. Modifying the link-step the way Benjamin suggests is trivial, although I suggest we wait until the need arises. Cheers, -- Lars Balker Rasmussen Consult::Perl
Re: Abbreviation
On Mon, Jul 21, 2003 at 10:28:26AM +0300, Vladimir Lipskiy wrote: > In /parrot/docs/jit.pod: > > "For moving registers from processor to parrot and vv, the > B functions have to be implemented." > > what does "vv" stand for? Vice versa, I presume. -- Lars Balker RasmussenConsult::Perl
Re: [WIP PATCH] core.ops split-up
"Brent Dax" <[EMAIL PROTECTED]> writes: > Anyway, a corrected patch that fixes the trans.t errors is up at > <http://filespace.brentdax.com/brentdax/coresplit.diff>. Uh, there's still no "+inline op sin" in that file? > If it doesn't > apply the first time, try splitting the patch into several files and > applying them individually--apparently some copies of patch have trouble > with such a big diff. On closer (and less sleepy-eyed) examination, the problem is Windows/Unix interoperability. The following fix on the patch makes it apply cleanly on my FreeBSD: perl -pi -e 's/\r//; s,^--- NUL,--- /dev/null,' coresplit.diff patch < coresplit.diff -- Lars Balker Rasmussen Consult::Perl
Re: [WIP PATCH] core.ops split-up
Benjamin Goldberg <[EMAIL PROTECTED]> writes: > (ChangeLog, Configure.pl, parrot.spec, and whatever else is really > needed to build and distribute parrot (make.pl?)). Nothing is currently using make.pl, and it's way out of date compared to the configure system - delete it? -- Lars Balker Rasmussen Consult::Perl
Re: [perl #23028] t/op/stacks fails on FreeBSD/i386
On Fri, Jul 18, 2003 at 12:04:39PM -0400, Simon Glover wrote: > OK, this should be fixed in CVS Yup. -- Lars Balker RasmussenConsult::Perl
config/inter/progs.pl weirdness
Found this pecularity in config/inter/progs.pl. The lines should probably just be removed (as well as lex/bison in @args and elsewhere), since $yacc/$lex are specifically handled above, but I wasn't sure what the intended purpose was. Anyway, giving --lex or --yacc arguments to Configure.pl will break the build-process with these. $cc_warn=$args{lex} if defined $args{lex}; $cc_warn=$args{yacc}if defined $args{yacc}; Cheers, -- Lars Balker Rasmussen Consult::Perl
Re: Small perl task for the interested
[EMAIL PROTECTED] (Dan Sugalski) writes: > We could really use the capability of specifying per-C-file flags in > the make procedure, something that can be built into Configure. Right > now we build without optimizations on, which is fine, but I'd like to > turn them on in the future. > > They can't be turned on unconditionally, since tsq.c *can't* have any > optimizations turned on for it. (That's the thread-safe queue module, > something that is annoyingly execution-order-dependent because it has > to operate safely as interrupt code potentially interrupting itself as > non-interrupt code) And, if Perl 5 is any guide (and I think it is) > there will be some platform/compiler combinations that won't be able > to compile one or more source modules with the highest optimization > level, but will be able to manage with a lower one. > > So... Configure.pl needs to be able to build a makefile that has > per-C-file flags, and those flags need to be overridable per-file at > configure time by the platform configuration module. I've taken this very simple approach to the problem. A perl-wrapper for the CC lines in makefiles/root.in .c$(O) : $(PERL) tools/dev/cc_flags.pl $(CC) $(CFLAGS) ${cc_o_out}$@ -c $< that takes a rules-based approach to removing or adding options to the command-line, based on the filename of the .c-file. This gives some overhead while building, but it keeps the complexity of the solution down a lot. Right now, the configure system has nothing to do with it, but it'd be fairly simple to make it write a file like following example: -- # File: CFLAGS # [ filename | {regex} ] -{removed option} +{added option} ... spf_render.c -{-Wformat-nonliteral} {^core} +{-O3} -- What're peoples opinion? Script: -- #!/usr/bin/perl -w use strict; if (open F, "CFLAGS") { my @options; while () { chomp; s/#.*//; next unless /\S/; my $regex; if (s/^\{(.+?)\}\s*//) { $regex = qr/$1/; } elsif (s/^(\S+)\s*//) { $regex = qr/^\Q$1\E$/; } else { die "syntax error in CFLAGS: line $., $_\n"; } while (s/^([-+])\{(.+?)\}\s*//) { push @options, [ $regex, $1, $2 ]; } if (/\S/) { die "syntax error in CFLAGS: line $., $_\n"; } } my ($cfile) = grep /\.c$/, @ARGV; foreach my $option (@options) { if ($cfile =~ $option->[0]) { if ($option->[1] eq '+') { splice @ARGV, 1, 0, $option->[2]; } else { @ARGV = grep { $_ ne $option->[2] } @ARGV; } } } } print "@ARGV\n"; exec @ARGV; __END__ Cheers, -- Lars Balker Rasmussen Consult::Perl
Re: [perl #22925] [PATCH] setenv/unsetenv functions
Leopold Toetsch <[EMAIL PROTECTED]> writes: > Lars Balker Rasmussen <[EMAIL PROTECTED]> wrote: >> Since parrot currently can't compile on Solaris due to the absense of >> setenv/unsetenv in the Solaris libc, I've added tests for the >> functions, as well as a putenv-based implementation. > > Shouldn't there be a test for putenv too, instead of using putenv in the > absence of setenv/unsetenv? > > ... else looks good. I suppose - but putenv() is defined by all relevant Unix standards. On platforms where neither putenv nor setenv are available, another implementation must be provided, just like win32 - but let's deal with that when we get there. At least more platforms are supported now :-) -- Lars Balker Rasmussen Consult::Perl
Re: [PATCH] portability problems on FreeBSD
Lars Balker Rasmussen <[EMAIL PROTECTED]> writes: > Whoa, that didn't work too well. Let's try again: > > gcc on FreeBSD (and I'd imagine others) complains over an fprintf > in exceptions.c. > > malloc.h is deprecated on FreeBSD 5, and will make various > configuration tests fail. The following patch tests for the validity > of malloc.h, and uses either malloc.h or stdlib.h in the tests. > > And finally, a couple of small patches to Makefile, so test_main gets > removed when cleaning, and fixed a mention of test_main.o. Not exactly my day... I apologize. Ask, why did the mail-list software remove the first MIME-boundary from the mail? The cc to myself started with a "--=-=-=", but it was gone from the mail-list message, leading to the text above being invisible (at least in gnus/mutt). Cheers, -- Lars Balker Rasmussen Consult::Perl
Re: [PATCH] portability problems on FreeBSD
Lars Balker Rasmussen <[EMAIL PROTECTED]> writes: > Whoa, that didn't work too well. Let's try again: > > gcc on FreeBSD (and I'd imagine others) complains over an fprintf > in exceptions.c. > > malloc.h is deprecated on FreeBSD 5, and will make various > configuration tests fail. The following patch tests for the validity > of malloc.h, and uses either malloc.h or stdlib.h in the tests. > > And finally, a couple of small patches to Makefile, so test_main gets > removed when cleaning, and fixed a mention of test_main.o. Not exactly my day... I apologize. Ask, why did the mail-list software remove the first MIME-boundary from the mail? The cc to myself started with a "--=-=-=", but it was gone from the mail-list message, leading to the text above being invisible (at least in gnus/mutt). Cheers, -- Lars Balker Rasmussen Consult::Perl
Re: [PATCH] portability problems on FreeBSD
Index: exceptions.c === RCS file: /cvs/public/parrot/exceptions.c,v retrieving revision 1.17 diff -u -a -r1.17 exceptions.c --- exceptions.c 10 Jul 2003 16:56:46 - 1.17 +++ exceptions.c 11 Jul 2003 13:29:01 - @@ -119,7 +119,7 @@ } while (1); m = string_to_cstring(interpreter, message); if (m && *m) { -fprintf(stderr, m); +fputs(m, stderr); if (m[strlen(m-1)] != '\n') fprintf(stderr, "%c", '\n'); } Index: config/auto/headers.pl === RCS file: /cvs/public/parrot/config/auto/headers.pl,v retrieving revision 1.7 diff -u -a -r1.7 headers.pl --- config/auto/headers.pl 26 Jun 2003 13:11:22 - 1.7 +++ config/auto/headers.pl 11 Jul 2003 13:47:39 - @@ -28,7 +28,7 @@ # some headers may not be probed-for by perl 5, or might not be # properly reflected in %Config (i_fcntl seems to be wrong on my machine, # for instance). -my @extra_headers = qw(fcntl.h setjmp.h pthread.h signal.h); +my @extra_headers = qw(malloc.h fcntl.h setjmp.h pthread.h signal.h); foreach my $header (@extra_headers) { my $flag = "i_$header"; Index: config/auto/memalign.pl === RCS file: /cvs/public/parrot/config/auto/memalign.pl,v retrieving revision 1.3 diff -u -a -r1.3 memalign.pl --- config/auto/memalign.pl 11 Jun 2003 20:26:47 - 1.3 +++ config/auto/memalign.pl 11 Jul 2003 13:47:39 - @@ -9,6 +9,13 @@ sub runstep { my $test = 0; +if (Configure::Data->get('i_malloc')) { + Configure::Data->set('malloc_header', 'malloc.h'); +} +else { + Configure::Data->set('malloc_header', 'stdlib.h'); +} + cc_gen('config/auto/memalign/test_c.in'); eval { cc_build(); }; unless ($@ || cc_run() !~ /ok/) { @@ -24,6 +31,8 @@ $test2 = 1; } cc_clean(); + +Configure::Data->set('malloc_header', undef); my $f = $test2 ? 'posix_memalign' : $test ? 'memalign' : ''; Index: config/auto/signal.pl === RCS file: /cvs/public/parrot/config/auto/signal.pl,v retrieving revision 1.2 diff -u -a -r1.2 signal.pl --- config/auto/signal.pl 11 Jul 2003 12:25:06 - 1.2 +++ config/auto/signal.pl 11 Jul 2003 13:47:39 - @@ -18,6 +18,14 @@ if (defined $miniparrot) { return; } + +if (Configure::Data->get('i_malloc')) { + Configure::Data->set('malloc_header', 'malloc.h'); +} +else { + Configure::Data->set('malloc_header', 'stdlib.h'); +} + cc_gen('config/auto/signal/test_1.in'); eval { cc_build(); }; unless ($@ || cc_run() !~ /ok/) { @@ -37,6 +45,8 @@ print " (sigaction)"; } cc_clean(); + +Configure::Data->set('malloc_header', undef); # now generate signal constants open O, ">runtime/parrot/include/signal.pasm" or die Index: config/auto/gc/test_c.in === RCS file: /cvs/public/parrot/config/auto/gc/test_c.in,v retrieving revision 1.1 diff -u -a -r1.1 test_c.in --- config/auto/gc/test_c.in 5 Oct 2002 09:40:35 - 1.1 +++ config/auto/gc/test_c.in 11 Jul 2003 13:47:39 - @@ -4,7 +4,7 @@ * This file is automatically generated by Configure * from gc.in. */ -#include +#include <${malloc_header}> #include int main(int argc, char **argv) { void *p = malloc(128); Index: config/auto/memalign/test_c.in === RCS file: /cvs/public/parrot/config/auto/memalign/test_c.in,v retrieving revision 1.3 diff -u -a -r1.3 test_c.in --- config/auto/memalign/test_c.in 19 Jun 2003 14:39:18 - 1.3 +++ config/auto/memalign/test_c.in 11 Jul 2003 13:47:39 - @@ -4,7 +4,7 @@ * This file is automatically generated by Configure * from test_c.in. */ -#include +#include <${malloc_header}> #include int main(int argc, char **argv) { Index: config/auto/memalign/test_c2.in === RCS file: /cvs/public/parrot/config/auto/memalign/test_c2.in,v retrieving revision 1.2 diff -u -a -r1.2 test_c2.in --- config/auto/memalign/test_c2.in 19 Jun 2003 14:39:18 - 1.2 +++ config/auto/memalign/test_c2.in 11 Jul 2003 13:47:39 - @@ -4,7 +4,7 @@ * This file is automatically generated by Configure * from test_c.in. */ -#include +#include <${malloc_header}> #include #include Index: config/auto/signal/test_1.in === RCS file: /cvs/public/parrot/config/auto/signal/test_1.in,v retrieving revision 1.2 diff -u -a -r1.2 test_1.in --- config/auto/signal/test_1.in 11 Jul 2003 12:25:10 - 1.2 +++ config/auto/signal/test_1.in 11 Jul 2003 13:47:39 - @@ -4,7 +4,7 @@ * This file is automatically generated by Configure * from test_
[PATCH] portability problems on FreeBSD
exceptions.patch Description: Binary data malloc.patch Description: Binary data Makefile.patch Description: Binary data