Mail archive
alpine-devel

Cross-building (was: Re: [alpine-devel] musl and ARM in 2.7 (and an introduction))

From: Leslie P. Polzer | PORT ZERO <polzer_at_port-zero.com>
Date: Fri, 25 Oct 2013 14:30:48 +0200

On 10/18/2013 12:16 PM, Timo Teras wrote:

>> Also, is there an established way already of building Alpine based
>> on musl and/or cross-compiling for ARM? It doesn't seem to be a big
>> deal, but I'd like to know the efforts that have already been put
>> into this so I'm not duplicating any work.
>
> We've patched aports so that a minimal bootstrap system can be cross
> compiled. All changes are in git already. And some minor notes + links
> to the scripts I used to bootstrap musl builders are at my wiki wall:
> http://wiki.alpinelinux.org/wiki/User:Fabled

That helped! I had to clear out some roadblocks, after which I now have
a successful and reproducible bootstrap crossbuild of i486-alpine-linux-musl
(without KERNEL_PKG and DEBUG_PKG so far; I simply haven't tried).

The problems I encountered, working with your scripts on current edge:

In createcross-toolchain.sh:

* I instructed abuild to clean up the musl build before installing
  headers. This is necessary to prevent the patches from being applied
  multiple times by the "prepare" step if you call the script more
  than once.

In abuild-crossbuild-x86.conf:

* CBUILD is no longer being set in /etc/abuild.conf (this was changed
  pretty recently). This prevented gmp from being built correctly
  (I think it just used the host setting for the build).
  More packages might be affected by this.

In crossbuild-alpine-bootstrap.sh:

* Set up the proper pkgconfig environment for the cross root.
  Without this the relevant .pc files cannot be found. The first
  package that broke in the ordered crossbuild because of this
  was apk-tools.

* Added installation of all packages after they have been built.
  This is a necessary step since later packages require files from
  earlier ones. Also attempt to install $PKG-dev. Some packages need
  special casing here since their -dev packages have a different
  name. Maybe this should be fixed in the packages themselves.
  The packages affected are gmp5 (gmp-dev) and mpfr3 (mpfr-dev).

* Non-essential: also added per-package logging to cut down on the output.

I'm attaching a rough diff against your x86 conf files and the two
scripts. Please let me know how you want to proceed with integrating
these changes.

I wonder how we can test packages for their sanity properly after
we have built them. The usual way is running the testsuite (make check)
after compilation. Obviously this won't work when cross-compiling to
a different machine architecture. Any ideas?

  Leslie

-- 
Dipl.Ing.(BA) Leslie P. Polzer | CTO - PORT ZERO
UG (haftungsbeschr├Ąnkt)
Softwareentwicklung & IT Engineering
Adalbertstra├če 7/8
10999 Berlin
Tel.: +49 (0)30 - 69 200 907 - 0
Fax: +49 (0)30 - 69 200 907 - 9
http://www.port-zero.com




---
Unsubscribe:  alpine-devel+unsubscribe_at_lists.alpinelinux.org
Help:         alpine-devel+help_at_lists.alpinelinux.org
---
Received on Fri Oct 25 2013 - 14:30:48 UTC