X-Git-Url: https://sipb.mit.edu/gitweb.cgi/ikiwiki.git/blobdiff_plain/0168cc3c8b12cb4d1eb11889a2d9774bdd68ec59..332e0b4e3cc8588f6a32e0f473b5d1349cda1b21:/doc/bugs/2.45_Compilation_error.mdwn diff --git a/doc/bugs/2.45_Compilation_error.mdwn b/doc/bugs/2.45_Compilation_error.mdwn index 82dbc3e45..141d71da8 100644 --- a/doc/bugs/2.45_Compilation_error.mdwn +++ b/doc/bugs/2.45_Compilation_error.mdwn @@ -40,4 +40,124 @@ I have perl 5.10.0. Ikiwiki 2.44 compiles fine. Compiling 2.45 fails after 'make >>>>> This is how perl finds IkiWiki.pm here. Note that I've run "make" first. -[[done]] +OK, this is what I'm getting: + + $ perl -Iblib/lib -V + @INC: + blib/lib + /usr/lib/perl5/site_perl/5.10.0 + /usr/share/perl5/site_perl/5.10.0 + /usr/lib/perl5/vendor_perl + /usr/share/perl5/vendor_perl + /usr/share/perl5/vendor_perl + /usr/lib/perl5/core_perl + /usr/share/perl5/core_perl + /usr/lib/perl5/current + /usr/lib/perl5/site_perl/current + +I ran the following in my current 2.45 source dir, where the `make` already succeded. If you need it, I can post the output +in the case where `make` fails. + + $ strace perl -Iblib/lib -e 'use IkiWiki' 2>&1 |grep IkiWiki.pm + stat64("blib/lib/IkiWiki.pmc", 0xbfa6167c) = -1 ENOENT (No such file or directory) + stat64("blib/lib/IkiWiki.pm", {st_mode=S_IFREG|0444, st_size=31901, ...}) = 0 + open("blib/lib/IkiWiki.pm", O_RDONLY|O_LARGEFILE) = 3 + +> I need to see it in the case where it's failing. --[[Joey]] + +I finally had some time to look into this again. + +I wiped ikiwiki off my system, and then installed version 2.41. I tried installing +2.46 and get the same error as above, so I'll be using 2.46 below. (BTW, the debian +page still lists 2.45 as current; I had to fiddle with the download link to get 2.46). + +After running `./Makefile.PL` I get: + + $ perl -Iblib/lib -V + [bunch of lines snipped] + @INC: + blib/lib + [bunch of paths snipped] + +Running the strace: + + $ strace perl -Iblib/lib -e 'use IkiWiki' 2>&1 |grep IkiWiki.pm + +I get a bunch of ENOENTs and then at the end: + + stat64("./IkiWiki.pmc", 0xbfa2fe5c) = -1 ENOENT (No such file or directory) + stat64("./IkiWiki.pm", {st_mode=S_IFREG|0644, st_size=31987, ...}) = 0 + open("./IkiWiki.pm", O_RDONLY|O_LARGEFILE) = 3 + +After running `make` (and having it fail as described above): + + $ strace perl -Iblib/lib -e 'use IkiWiki' 2>&1 |grep IkiWiki.pm + stat64("blib/lib/IkiWiki.pmc", 0xbfd7999c) = -1 ENOENT (No such file or directory) + stat64("blib/lib/IkiWiki.pm", {st_mode=S_IFREG|0444, st_size=31901, ...}) = 0 + open("blib/lib/IkiWiki.pm", O_RDONLY|O_LARGEFILE) = 3 + +I don't know what is going on, but I'll run any more tests you need me to. + +> No help. +> The only further thing I can think to try is `strace -f` the entire failing +> `make` run (or the ikiwiki command that's failing in it, if you can +> reproduce the failure at the command line). --[[Joey]] + +I have 2.46 installed and I can reproduce the bug reported against 2.49. The command that fails is: + + $ /usr/bin/perl -Iblib/lib ikiwiki.out -libdir . -setup docwiki.setup -refresh + docwiki.setup: Failed to load plugin IkiWiki::Plugin::inline: Too many arguments for IkiWiki::htmlize at IkiWiki/Plugin/inline.pm line 359, near "))" + Compilation failed in require at (eval 14) line 2. + BEGIN failed--compilation aborted at (eval 14) line 2. + BEGIN failed--compilation aborted at (eval 10) line 21. + +strace -f produces a 112K file. I don't know enough to be comfortable analyzing it. +However, lines like: + + stat64("/usr/local/share/perl5/site_perl/5.10.0/IkiWiki.pm", {st_mode=S_IFREG|0444, st_size=31982, ...}) = 0 + +make me think the make process is not completely independent of a previous +installation. Joey, should I email you the strace log file? + +> Email it (joey@ikiwiki.info), or post it to a website somewhere. +> --[[Joey]] + +> The relevant part of the file is: + + execve("/usr/bin/perl", ["/usr/bin/perl", "-Iblib/lib", "ikiwiki.out", "-libdir", ".", "-setup", "docwiki.setup", "-refresh"], [/* 55 vars */]) = 0 + [...] + stat64("blib/lib/5.10.0/i686-linux-thread-multi", 0xbfa72240) = -1 ENOENT (No such file or directory) + stat64("blib/lib/5.10.0", 0xbfa72240) = -1 ENOENT (No such file or directory) + stat64("blib/lib/i686-linux-thread-multi", 0xbfa72240) = -1 ENOENT (No such file or directory) + [...] + stat64("/usr/local/share/perl5/site_perl/5.10.0/IkiWiki.pmc", 0xbfa71e5c) = -1 ENOENT (No such file or directory) + stat64("/usr/local/share/perl5/site_perl/5.10.0/IkiWiki.pm", {st_mode=S_IFREG|0444, st_size=31982, ...}) = 0 + open("/usr/local/share/perl5/site_perl/5.10.0/IkiWiki.pm", O_RDONLY|O_LARGEFILE) = 4 + +> So it doesn't look for IkiWiki.pm in blib at all. But it clearly has been asked to look in blib, since it +> looks for the 3 directories in it. When I run the same thing locally, I get: + + execve("/usr/bin/perl", ["/usr/bin/perl", "-Iblib/lib", "ikiwiki.out", "-libdir", ".", "-setup", "docwiki.setup", "-refresh"], [/* 55 vars */]) = 0 + [...] + stat64("blib/lib/5.10.0/i486-linux-gnu-thread-multi", 0xbf84f320) = -1 ENOENT (No such file or directory) + stat64("blib/lib/5.10.0", 0xbf84f320) = -1 ENOENT (No such file or directory) + stat64("blib/lib/i486-linux-gnu-thread-multi", 0xbf84f320) = -1 ENOENT (No such file or directory) + [...] + stat64("blib/lib/IkiWiki.pmc", 0xbf84ef4c) = -1 ENOENT (No such file or directory) + stat64("blib/lib/IkiWiki.pm", {st_mode=S_IFREG|0444, st_size=32204, ...}) = 0 + open("blib/lib/IkiWiki.pm", O_RDONLY|O_LARGEFILE) = 6 + +> The thing I really don't understand is why, on the system where perl fails +> to look in blib when straced as above, we've already established it *does* +> look for it when `perl -Iblib/lib -e 'use IkiWiki'` is straced. +> +> The only differences between the two calls to perl seem to be: +> * One runs `perl`, and the other `/usr/bin/perl` -- are these really +> the same program? Does `perl -lblib/lib ikiwiki.out -libdir . -setup docwiki.setup -refresh` +> fail the same way as the `/usr/bin/perl` variant? +> * The `-libdir .`, which causes ikiwiki to modify `@INC`, adding "." to +> the front of it. +> +> I'm entirely at a loss as to why I cannot reproduce this with the same +> versions of perl and ikiwiki as the two people who reported it. There must +> be something unusual about your systems that we have not figured out yet. --[[Joey]]