develooper Front page | perl.perl5.porters | Postings from November 2004

Re: building ByteLoader

Thread Previous | Thread Next
From:
Nicholas Clark
Date:
November 24, 2004 04:40
Subject:
Re: building ByteLoader
Message ID:
20041124124017.GI6725@plum.flirble.org
On Wed, Nov 24, 2004 at 01:02:18PM +0200, gumbold wrote:
> It is cross-build on Linux for my mmu less system.
> Using stuff from Cross/
> miniperl built,link to perl-5.8.5 binary instead of created
> miniperl - done, DynaLoader also.

Is that text "built,link" output from something that ran? Or you're describing
the steps you took?

> Now ByteLoader telling this:
> 
> Can't locate loadable object for module File::Glob in @INC (@INC 
> contains: ../../lib ../../lib 
> /usr/lib/perl5/5.8.5/i386-linux-thread-multi /usr/lib/perl5/5.8.5 
> /usr/lib/perl5/site_perl/5.8.5/i386-linux-thread-multi 
> /usr/lib/perl5/site_perl/5.8.4/i386-linux-thread-multi 
> /usr/lib/perl5/site_perl/5.8.3/i386-linux-thread-multi 
> /usr/lib/perl5/site_perl/5.8.2/i386-linux-thread-multi 
> /usr/lib/perl5/site_perl/5.8.1/i386-linux-thread-multi 
> /usr/lib/perl5/site_perl/5.8.0/i386-linux-thread-multi 
> /usr/lib/perl5/site_perl/5.8.5 /usr/lib/perl5/site_perl/5.8.4 
> /usr/lib/perl5/site_perl/5.8.3 /usr/lib/perl5/site_perl/5.8.2 
> /usr/lib/perl5/site_perl/5.8.1 /usr/lib/perl5/site_perl/5.8.0 
> /usr/lib/perl5/site_perl 
> /usr/lib/perl5/vendor_perl/5.8.5/i386-linux-thread-multi 
> /usr/lib/perl5/vendor_perl/5.8.4/i386-linux-thread-multi 
> /usr/lib/perl5/vendor_perl/5.8.3/i386-linux-thread-multi 
> /usr/lib/perl5/vendor_perl/5.8.2/i386-linux-thread-multi 
> /usr/lib/perl5/vendor_perl/5.8.1/i386-linux-thread-multi 
> /usr/lib/perl5/vendor_perl/5.8.0/i386-linux-thread-multi 
> /usr/lib/perl5/vendor_perl/5.8.5 /usr/lib/perl5/vendor_perl/5.8.4 
> /usr/lib/perl5/vendor_perl/5.8.3 /usr/lib/perl5/vendor_perl/5.8.2 
> /usr/lib/perl5/vendor_perl/5.8.1 /usr/lib/perl5/vendor_perl/5.8.0 
> /usr/lib/perl5/vendor_perl .) at ../../lib/ExtUtils/Command.pm line 57
> Compilation failed in require at ../../lib/ExtUtils/Command.pm line 57.

I think that that will be due to this glob() builtin:

sub expand_wildcards
{
 @ARGV = map(/[$wild_regex]/o ? glob($_) : $_,@ARGV);
}

An explanation of the build process, and the implication:
For a real perl, the glob() builtin now calls out to the File::Glob module.

Because building the File::Glob module (and lots of the others, such as
ByteLoader) needs a perl, initially another perl, "miniperl", is built, which
doesn't have any dynamic linking, and also does glob() without an extension
module (by forking a csh()).

I don't really understand how Redvers got the cross compiling to work. But
for the normal (same platform build) initially "miniperl" is built, then
"perl" is built, then that "perl" is not used at all for the rest of the
build process. (because it expects extension modules that don't yet exist)
It's only used for "make test". And obviously, it's what gets installed.

So the error message means that the perl binary you're running to do the
cross build is the full perl ("perl"), not "miniperl" (the temporary
binary used within the build process). As I say, I don't understand the
details of how Redvers got the cross compile to work, but are you mistakenly
using or linking to a native built "perl" rather than a native built
"miniperl"?


Skipping building ByteLoader isn't going to help here, as the problem you
report is in the code used to make all extensions, not something ByteLoader
specific.

Nicholas Clark

Thread Previous | Thread Next


nntp.perl.org: Perl Programming lists via nntp and http.
Comments to Ask Bjørn Hansen at ask@perl.org | Group listing | About