[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Perl cross building support

On Sat, 09 Jun 2012 18:16:32 -0400
"P. J. McDermott" <pjm@nac.net> wrote:

> perl-base (from src:perl) is one of the packages that must be in the
> base build system (it's marked "Essential: yes" and there are four
> dependent Perl module packages marked "Priority: required").  So it will
> be one of the packages I have to make sure can be cross built.

Not necessarily. For bootstrapping a full Debian archive, yes, but for
an embedded distribution based on Debian, no. (Emdebian Crush did
this). It is entirely possible to have Debian without perl, Essential
doesn't have to mean anything for embedded purposes. Cross-building
perl isn't a blocker for anything other than bootstrapping - and it
could be argued that you don't need a full perl interpreter to
bootstrap, as long as you can cross-build enough of perl that any
circular dependencies are avoided.

Don't let Essential drag you into cross-building more than necessary.
Essential is NOT relevant for bootstrapping, it is a convenience macro,
that's all; a way of shortening the dependency chain.

> But when someone asked me a week ago about writing a program in Perl for
> my embedded distro project [1],

Unless this is for an architecture not currently supported by Debian,
then don't bother cross-building it - you aren't changing
*functionality* of the perl interpreter, so there is absolutely no
reason to cross-build it.

Don't cross-build stuff which is available already *unless* you
absolutely must have modified functionality.

> I realized that the Perl interpreter
> can't really be cross built (my goal in that project is to cross build
> every package).

That is a waste of effort. It is a pointless objective, as above.

Cross-building is a means to an end, not an objective in and of itself.
If the objective is a fully functional perl interpreter for an existing
Debian architecture which will run existing Debian perl code, then your
only option is to use the natively built perl interpreter. It's
completely pointless to waste time on anything else. All you'll do is
introduce changes in the cross-built interpreter which cause bugs which
can't be reproduced with the native interpreter.

>  As I understood Perl's strange custom build system [2]
> (with both the old [3] and new [4] cross compilation methods), it seemed
> like it requires some commands to be executed on the host (using GNU
> Autoconf terminology) system. 

That is quite common, there will always be times when the native
compiler must be available during a cross-build and many packages need
things like CC_FOR_BUILD to do this.

> (We don't need to have this one package holding us back from natively
> bootstrapping the rest of the archive.)  I just hope the other language
> interpreters don't have similarly strange build systems (or are at least
> bootstrappable)...

Almost certainly they do, amongst other packages. Perl is just one of
many, it's not just interpreters either. You might find the
EmdebianAudit useful for that. (wiki.d.o)

> Should I escalate the severity of #633884 from wishlist, since we need
> src:perl to cross build?

NO. Cross-building has never had a severity higher than wishlist in
Debian. Cross-building is not an objective for Wheezy, it isn't an
objective in and of itself anyway.

What we actually need is a cross-building system based on MultiArch in
Wheezy+1 (or possibly +2) - as long as your cross-build support is
independent of how the cross dependencies are installed (i.e. in the
paths for foreign arch libraries) then it will work. Ensure that your
support does not perpetuate a reliance on dpkg-cross because that is
going away. Most cross-builds will be fine - just ensure that there are
no hard-coded paths which look for /usr/$triplet/lib instead
of /usr/lib/$triplet.

However, that cross-build system is only required when the package has
to be built for a new architecture or to implement functional changes
not supported by the native version.

> And is it worth trying to get cross building support into wheezy's
> src:perl before the freeze?

Not a hope. It's far too late. Wheezy could freeze within days.


Neil Williams

Attachment: pgpb7hy8_Xhcw.pgp
Description: PGP signature

Reply to: