I have perl-5.8.0-r9 and apache-1.3.27-r1 When I run the program "apachelogserverstatus" I get the following error Can't locate gnu/stubs.ph in @INC (did you run h2ph?) (@INC contains: /usr/lib/perl5/5.8.0/i686-linux /usr/lib/perl5/5.8.0 /usr/lib/perl5/site_perl/5.8.0/i686-linux /usr/lib/perl5/site_perl/5.8.0 /usr/lib/perl5/site_perl /usr/lib/perl5/vendor_perl/5.8.0/i686-linux /usr/lib/perl5/vendor_perl/5.8.0 /usr/lib/perl5/vendor_perl .) at /usr/lib/perl5/site_perl/5.8.0/i686-linux/features.ph line 156. Compilation failed in require at /usr/lib/perl5/site_perl/5.8.0/i686-linux/sys/socket.ph line 5. Compilation failed in require at /usr/sbin/apachelogserverstatus line 72. "gnu/stubs.h" is in "/usr/include". From the ebuild file, only "/usr/include" and "/usr/include/sys" are converted. I converted the missing file by hand but then I get the same error for "bits/types.ph". I stopped after the next error (missing "stddef.ph") because this one is in "/usr/include/linux" instead of just "/usr/include" (which would have been fine to me if the error was about "linux/stddef.ph" instead of just "stddef.ph", I didn't want to merge "include" and "include/linux" into one perl directory without knowing if it's good or not)
updating the perl builds with htph -r -l to take care of this. For the time being (unless you really want to re-install perl) please do the following: cd /usr/include; h2ph -r -l
fixed with h2ph -r -l - if it's not, let me know, because that means h2ph is broken
Started fine but ten failed on "/usr/include/asm/string-486.h" (from sys-kernel/linux-headers): ./asm/string-486.h -> ./asm/string-486.ph Cannot parse: "repnz; scasb Also, I guess it's a typo in the post but there must be a period at the end of the h2ph command ("h2ph -r -l .")
typo was caught and fixed a few minutes later :) failing is actually "normal" accroding the the perl folks...
I would not have worried much it did the other files but it stopped there. So apachelogserverstatus still fails to run for instance.
When in doubt, brute force the sucker. (now in -r12) cd /usr/include; find ./ -name "*.h" -exec h2ph -r -l {} \;
find ./ -name "*.h" | xargs -n 1 -P 2 h2ph -l It runs two processes in parallel instead of one. And the recursive parameter isn't necessary anymore. And also, to be a pain in the ass, it still doesn't fix the problem with stddef. With C application it works fine because, I guess, "/usr/include/linux" is in the default header path along with "/usr/include". While for perl application, only the equivalent of "/usr/include" is in it. So while perl could probably find "linux/stddef.h" but not "stddef.h". But I guess it should be another bug.