After answering this in several individual emails over a year or so, I figure I'll stick it somewhere googleable. If you're attempting to install Pod::Simple and get something like the following error:
Can't locate Pod/Simple.pm in @INC (@INC contains: [...]) at
/usr/local/lib/perl5/5.8.8/Pod/Man.pm line 35.
BEGIN failed--compilation aborted at/usr/local/lib/perl5/5.8.8/Pod/Man.pm line 35.
Compilation failed in require at/usr/local/lib/perl5/5.8.8/ExtUtils/Command/MM.pm line 92.
*** Error code 2
make: Fatal error: Command failed for target `manifypods'
You've ended up with a version of Pod::Man installed that has a dependency on Pod::Simple, without first installing Pod::Simple. (That shouldn't be possible, since Pod::Man has a check for Pod::Simple in the install process, but that doesn't guarantee it can never happen, especially with a vendor install of Perl.)
So, the thing to do is run the install for Pod::Simple twice. (The first time through you won't get the manpage entries for the modules, but otherwise it'll install fine. The second time through you'll get the manpage entries too.) The first time you'll need to edit the Makefile manually. Find the line that looks like:
# --- MakeMaker top_targets section:
all:: pure_all manifypods
and change it to:
all
:: pure_all
Then run 'make', 'make test', and 'make install'. Once you've done that go back and run:
make clean
perl Makefile.PL
make
make test
make install
Once you have Pod::Simple installed, you won't get that error from Pod::Man anymore, so manifypods should work for everything else you're installing too.
I'm working on the final typesetting for the mod_perl 2 User's Guide. My brain is filled with style conventions, and index items, and installation options, Oh My! In the process, I've nearly tripled the size of chromatic's Pod::PseudoPod::LaTeX (a subclass of my Pod::PseudoPod), carrying it from the styles needed for a novel (text and headings), to the styles needed for a full-powered technical book.
I have to say, I'm really loving LaTeX. It has a package for everything. A bit like Perl, really. Also like Perl in its lovably quirky nature.
On behalf of the Parrot team, I'm proud to announce Parrot 0.4.13 "Clifton." Parrot is a virtual machine aimed at running all dynamic languages.
Parrot 0.4.13 can be obtained via CPAN (soon), or follow the download instructions.
Parrot 0.4.13 News:
- Languages:
+ Updated Lisp, Lua, PHP ("Plumhead"), Python ("Pynie"), ABC,
WMLScript, and Tcl ("ParTcl").
+ Perl 6 passes all of the sanity tests.
+ PGE supports latest Perl 6 grammar syntax. Perl 6, Python
("Pynie"), and ABC parsers updated to match.
+ Updated PHP ("Plumhead") to Antlr 3.0.
+ Lua added the beginnings of a PGE/TGE based compiler (not yet
replacing the Perl/Yapp compiler).
+ Lisp updated for current features, added a test suite.
- Core Implementation:
+ Filled in features and backward compatibility for PDD 15 objects.
New object metamodel passes 85% of old test suite.
+ GCC API symbols are visible externally only when explicitly exported.
+ Added generated GCC compiler attributes to increase warnings, and
cleaned up resulting warnings.
+ Code cleanup efforts and fixed memory leaks by the cage cleaners,
resulting in notable speed increases.
- Misc:
+ Updated Parrot distribution to Artistic License 2.0, from dual
Artistic 1/GPL license.
+ SDL examples brought up-to-date with current features.
For those who would like to develop on Parrot, or help develop Parrot itself, we recommend using Subversion or SVK on our source code repository to get the latest and best Parrot code. The next scheduled release is July 17, 2007.
Thanks to all our contributors for making this possible, and our sponsors for supporting this project.
Enjoy!
I converted Punie over to using PAST-pm's way of representing conditionals. I tried out altering Punie's parsing of conditionals to match Perl 6's, but it turns out parsing else/elsif blocks recursively results in simpler parse->past transformation rules than the iterative way Perl6 is parsing them. So, I kept Punie's existing parse rules.
I had to set the 'pasttype' attribute in the PAST::Op node for '=' to 'assign' rather than setting the 'pirop' attribute to 'assign'. This stops the PIR generator from trying to assign 3 values to a string. It's an oddish work-around, possibly a bug in the past->post transformation, I'll come back and look at it later.
I had to set Punie variables to vivify as undef, by setting the 'viviself' attribute on PAST::Var nodes to '.Undef'.
I changed all the builtin operator names to have 'infix:' on the front. This is the Perl 6 way of naming operators, and I haven't decided if I want to keep it. I'll come back to it later.
And finally, I had to set '&&' operators to a 'pasttype' of 'if', and '||' operators to a 'pasttype' of 'unless'.
With those changes, all Punie test pass, so I'm checking it in. The next step is some refactoring and cleanup.
I'm in the process of porting Punie to the new Partridge (PAST-pm) toolchain. Tonight I got single and double quoted strings to work, thanks to Patrick's solution of leaving off the 'ctype' attribute from the PAST::Val node, and by retrieving the full matched string including surrounding quotes instead of the bare string contents (so it can pass through exactly as parsed).
I also switched comma ops over from the custom parse I was using before to a standard operator-precedence parse, and fixed up the AST transforms to handle the restructured parse tree. With these two changes, all of Punie's t/io_print.t is now passing.
The remaining failing test files are t/base_cond.t, t/base_if.t, and t/comp_cmdopt.t. All of these depend on conditionals, so there's a good chance that updating Punie to use the new toolchain's way of producing conditionals will be the final step of the port.
On the first day of Christmas my true love sent to me,
A Partridge with a parse tree,On the second day of Chritmas my true love sent to me,
Two ASTs,
And a Partridge with a parse tree,On the third day of Chritmas my true love sent to me,
Three POST nodes,
Two ASTs,
And a Partridge with a parse tree,On the forth day of Chritmas my true love sent to me,
Four bytes of bytecode,
Three POST nodes,
Two ASTs,
And a Partridge with a parse tree,On the fifth day of Chritmas my true love sent to me,
FIVE LANGUAGES COMPILING!
Four bytes of bytecode,
Three POST nodes,
Two ASTs,
And a Partridge with a parse tree,On the sixth day of Chritmas my true love sent to me,
Six versions of Perl,
FIVE LANGUAGES COMPILING!
Four bytes of bytecode,
Three POST nodes,
Two ASTs,
And a Partridge with a parse tree.
Okay, I'm not even going to try to catch up with all the Parrot stuff I've done since I last posted. The mailing list archives pretty much cover it.
On Friday I visited Jerry Gay and his wife Bethany. Jerry and I spent some time hacking on Parrot, and I made a good bit of progress on converting Punie over to Patrick's new PAST, POST, and HLLCompiler module. Over the weekend I've pushed the port to the point where it's generating valid PIR for many of Punie's basic low-level constructs. Some of the larger pieces are going to need a serious conceptual refactor: the top-level structure of the AST, conditionals, comma lists, etc. The new PAST has ways of handling them, they're just very different than Punie's current implementation.
On a related note, here's why the new compiler toolchain should be called "Partridge":
partridge
p......ge
...t...ge
par[s]..e
pa.tri[ck]
Obvious, isn't it?
This is Allison's other journal. Not a replacement, just an addition.
Oh yeah, I've got quite a bit of Parrot stuff to catch up on here.
My past month hasn't been entirely absorbed by troubleshooting failing hardware and setting up new hardware. Despite working on a different box pretty much every week, I've made significant progress on TGE. I still have more refactors planned, but I'll be spending the next couple of weeks working on Punie, to see how far I can push it before my YAPC::NA talk.
Yesterday I added scalar variables and the assignment operator to Punie. Today I added the comparison operators ==, !=, <, >, <=, >=, eq, ne, lt, gt, le, and ge. I'm impressed by how much easier and faster it is to develop Punie after all the TGE improvements.
Today is a milestone for Punie: it passed its first complete test file from the Perl 1 test suite.