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

Re: cross-build-essential

On 2012-06-28 05:17, Goswin von Brederlow wrote:
> Wookey <wookey@wookware.org> writes:
>> 1) Some of the packages that cross-build-essential depends on
>> (cross-compiler
>> packages) are not yet in the archive, and won't be in wheezy. That
>> means that these packages will not be installable and thus will not
>> migrate from unstable until the cross-compiler packages do arrive.
>> That seems like a very good reason to keep cross-build-essential as a
>> separate source package for now, available from emdebian.org, along
>> with the toolchains. Anyone disagree?
> I wonder what the difference is between cross-build-essential and
> build-essential in terms of packages and wether we need a seperate
> package at all.
> Say I want to have the build-essential for i386 installed on amd64.
> I could install build-essential:i386, replacing gcc/g++:amd64 with
> gcc/g++:i386. Wouldn't that give me everything needed to cross-compile
> for i386?

In that case, yes, because you can run x86 code on an AMD64 or Intel 64
CPU.  Though you would indeed be replacing gcc-4.7:amd64 etc. with
gcc-4.7:i386 etc. as the packages aren't co-installable with themselves.

But you can't install gcc-4.7:armhf (for example) on an AMD64 or Intel
64 system and expect to be able to compile anything.  That's why we have
cross compiler packages [1], e.g. gcc-4.7-arm-linux-gnueabihf:amd64.

> That said wouldn't it make sense to have build-essential use
>   Depends: g++:<arch> (>= <ver>) | g++-cross-<arch> (>= <ver>)
> Since build-essential is architecture any it already pulls in the
> foreign libraries needed for that arch. Only difference would be that
> since g++:<foreign> conflicts with the g++:<native> frontends would
> choose g++-cross-<arch> instead.

The idea is that a user (or sbuild >= 0.63.0) can install
crossbuild-essential-<target> and have cross compilers etc. for a target
architecture pulled in automatically.  Installing the build-essential
binary package doesn't do this, nor should it.

To this end, the crossbuild-essential-<target> packages [2][3] depend on
(among other things like dpkg-cross and pkg-config-<triplet>)
gcc-4.7-<triplet> | c-compiler-<triplet> and g++-4.7-<triplet> |
c++-compiler-<triplet>.  (Note that the "-4.7" is temporary and should
be removed once cross compiler metapackages exist [4].)

[1]: http://emdebian.org/~thibg/repo/pool/main/g/gcc-4.7/
[2]: http://bootstrap.pehjota.net/build-essential/
[3]: http://bootstrap.pehjota.net/archive/pool/main/c/cross-build-essential/

P. J. McDermott                                        (_/@\_)    ,--.
http://www.pehjota.net/                           o    < o o >   / oo \
http://www.pehjota.net/contact.html                 o   \ `-/    | <> |.
                                                o o o    "~v    /_\--/_/

Reply to: