X-Git-Url: https://scripts.mit.edu/gitweb/www/ikiwiki.git/blobdiff_plain/a7ece50826e68ef6fff2c541f4fa51ed25cba263..3a76a58e1e162a01c2d3aec37ad5bb59019e6c00:/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 e2c39ebdb..f95ef2d3d 100644 --- a/doc/bugs/2.45_Compilation_error.mdwn +++ b/doc/bugs/2.45_Compilation_error.mdwn @@ -8,3 +8,94 @@ I have perl 5.10.0. Ikiwiki 2.44 compiles fine. Compiling 2.45 fails after 'make BEGIN failed--compilation aborted at (eval 23) line 2. BEGIN failed--compilation aborted at (eval 10) line 21. make: *** [extra_build] Error 255 + +> I can't reproduce this. It looks like your IkiWiki.pm is out of sync with +> your IkiWiki/Plugin/shortcut.pm. The ones distributed in 2.45 are in +> sync. Or your perl is failing to use the right version of Ikiwiki.pm, +> perhaps using a previously installed version. But the -Iblib/lib +> instructs perl to look in that directory first, and the Makefile +> puts Ikiwiki.pm there. --[[Joey]] + +>> I removed all traces of the previous installation, and now 2.45 compiles. +>> I don't know why it was picking up the old version of Ikiwiki.pm, but now it +>> works. Please close this bug, and thanks for the help. + +>>> Where were the files from the old installation? I still don't +>>> understand why they would be seen, since -Iblib/lib is passed to perl. +>>> --[[Joey]] + +>>>> They were under /usr/local/{bin,lib,share}. I can try to provide more info, +>>>> or try to reproduce it, if you need me to. + +>>>>> Well, here are some things to try. + + perl -Iblib/lib -V + +>>>>> This should have blib/lib first in the listed @INC + + joey@kodama:~/src/ikiwiki>strace perl -Iblib/lib -e 'use IkiWiki' 2>&1 |grep IkiWiki.pm + stat64("blib/lib/IkiWiki.pmc", 0xbfa1594c) = -1 ENOENT (No such file or directory) + stat64("blib/lib/IkiWiki.pm", {st_mode=S_IFREG|0444, st_size=31982, ...}) = 0 + open("blib/lib/IkiWiki.pm", O_RDONLY|O_LARGEFILE) = 5 + +>>>>> This is how perl finds IkiWiki.pm here. Note that I've run "make" first. + +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. + +[[done]]