Mail archive
alpine-devel

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

From: Timo Teras <timo.teras_at_iki.fi>
Date: Fri, 18 Oct 2013 13:16:15 +0300

On Fri, 18 Oct 2013 10:52:25 +0200
"Leslie P. Polzer | PORT ZERO" <polzer_at_port-zero.com> wrote:

> I'm new to Alpine. I've been around GNU/Linux for about 15 years
> now as user and developer. During this time I have been working
> on various open source projects and have been a community contributor
> to Linux From Scratch and ArchLinux.

Nice. Welcome!

> First let me say that you've done an incredible job! I especially
> like the package management system, but there's many more excellent
> features that I wouldn't really know where to start. :)

Thanks :)

> I've come to understand that Alpine 2.7 will be the first version
> to feature an ARM port, based on musl as libc. Timo Teräs' efforts
> in the past weeks (as per Redmine) also show this. Is this official?

Yes, I am currently doing ARM port. It is undecided if we want to do a
release of it, since it's quite experimental at this point.

> In that case I would like to ask why musl is being used. It certainly
> is a great alternative to uclibc, but it appears that the ARM port
> is linked to it. I'm seeking to understand the reasoning behind this.

musl is a lot cleaner, smaller faster and more standards compliant in
many cases. It is also easier to bootstrap to new targets compared to
uclibc/glibc.

Though, uclibc is likely more glibc compatible. We have also quite some
uclibc specific bugs open that are not fixable without doing invasive
uclibc patching. E.g. openjdk7 will not run on standard uclibc. You can
also note that we carry about 40 patches to uclibc already because it
is not maintained as well as glibc/musl. We also have had to fix
ourselves numerous bugs in it, and many of them have been upstreamed.

In the long run we are currently planning to drop uclibc, and replace
it with musl in the primary builds for Alpine 3.0. In case we do not
get everything done for next release date, we might still do
Alpine 2.8 based on uclibc.

> 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

Currently, about 85-90% of edge/main are built against musl for x86 and
armhf (armv6+vfp target in toolchain). x86_64 is not done yet, but I
expect to do it soon. The remaining 10% of main and testing aports
probably need some patching to build.

The repository for these binary packages is at:
http://nl.alpinelinux.org/alpine/edge-musl/main/
http://nl.alpinelinux.org/alpine/edge-musl/testing/

They are updated sporadically (not synchronized to git like the primary
uclibc builds).

x86 musl build does not have any boot images, but you can do chroot apk
install of it.

For armhf we don't really support any boards yet. But for testing, I've
created a Raspberry Pi image. It's available at:
http://dev.alpinelinux.org/~tteras/alpine-edge-131010-armhf.rpi.tar.gz

I also have Wandboard Quad images but those I have not yet published. I
use Wandboard Quad to native compile the arm binaries.

- Timo


---
Unsubscribe:  alpine-devel+unsubscribe_at_lists.alpinelinux.org
Help:         alpine-devel+help_at_lists.alpinelinux.org
---
Received on Fri Oct 18 2013 - 13:16:15 UTC