Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 14461 - not all includes are converted to ph file in perl
Summary: not all includes are converted to ph file in perl
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: [OLD] Core system (show other bugs)
Hardware: All All
: High major (vote)
Assignee: Gentoo Perl team
URL:
Whiteboard:
Keywords:
Depends on:
Blocks:
 
Reported: 2003-01-23 16:50 UTC by Nahor
Modified: 2003-10-06 09:59 UTC (History)
1 user (show)

See Also:
Package list:
Runtime testing required: ---


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Nahor 2003-01-23 16:50:11 UTC
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)
Comment 1 Michael Cummings (RETIRED) gentoo-dev 2003-08-22 05:19:13 UTC
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

Comment 2 Michael Cummings (RETIRED) gentoo-dev 2003-08-22 05:27:19 UTC
fixed with h2ph -r -l - if it's not, let me know, because that means h2ph is broken
Comment 3 Nahor 2003-08-22 08:42:16 UTC
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 .")
Comment 4 Michael Cummings (RETIRED) gentoo-dev 2003-08-22 09:03:35 UTC
typo was caught and fixed a few minutes later :)

failing is actually "normal" accroding the the perl folks...
Comment 5 Nahor 2003-08-22 09:08:21 UTC
I would not have worried much it did the other files but it stopped there. So apachelogserverstatus still fails to run for instance.
Comment 6 Michael Cummings (RETIRED) gentoo-dev 2003-10-06 05:32:51 UTC
When in doubt, brute force the sucker. (now in -r12)

cd /usr/include; find ./ -name "*.h" -exec h2ph -r -l {} \;
Comment 7 Nahor 2003-10-06 09:59:54 UTC
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.