Mail archive
alpine-devel

Re: [alpine-devel] Porting Alpine scripts

From: Timo Teras <timo.teras_at_iki.fi>
Date: Tue, 26 Jul 2016 19:46:54 +0300

I'm working on fixing the abuild to be cross-build aware, and bundling
the bootstrap script as part of aports.git. I expect to publish all of
this work later today or tomorrow.

The abuild specific parts are pushed out to:
http://git.alpinelinux.org/cgit/abuild/log/?h=cross-build

On Tue, 26 Jul 2016 14:12:49 +0700
"Tuan M. Hoang" <tmhoang_at_flatglobe.org> wrote:

> (updated, please ignore previous email)
>
> > ---- On Sat, 23 Jul 2016 13:29:44 +0700 Timo Teras
> > <timo.teras_at_iki.fi> wrote ----
> > Could you share what target triplet you are using? And what CARCH?
> > I'll be happy to push these to abuild early, even if everything is
> > not working.
>
> Target triplet : s390x-alpine-linux-musl
> CARCH : s390x (but for linux-headers, it is s390)

Thanks. Added this to the cross-build branch of abuild.

> 1) Fortunately, I have successfully run crossbuild script targeting
> s390x with following :
>
> a) After running creat-cross script, my sysroot's lib directory looks
> like this:
>
> edge2:~/s390x/$ ls -al sysroot-s390x-alpine-linux-musl/lib
> total 12
> drwxr-sr-x 3 root edge 4096 Jul 26 12:54 .
> drwxr-sr-x 8 edge edge 4096 Jul 26 12:54 ..
> drwxr-sr-x 3 root edge 4096 Jul 26 12:54 apk
> lrwxrwxrwx 1 root root 25 Jul 26 12:54
> ld-musl-s390x.so.1 -> /lib/libc.musl-s390x.so.1 lrwxrwxrwx 1
> root root 18 Jul 26 12:54 libc.musl-s390x.so.1 ->
> ld-musl-s390x.so.1 lrwxrwxrwx 1 root root 25 Jul 26
> 12:54 libc.so.6 -> /lib/libc.musl-s390x.so.1 lrwxrwxrwx 1 root
> root 25 Jul 26 12:54 libcrypt.so.1
> -> /lib/libc.musl-s390x.so.1 lrwxrwxrwx 1 root root
> 25 Jul 26 12:54 libm.so.6 -> /lib/libc.musl-s390x.so.1 lrwxrwxrwx
> 1 root root 25 Jul 26 12:54 libpthread.so.0
> -> /lib/libc.musl-s390x.so.1 lrwxrwxrwx 1 root root
> 25 Jul 26 12:54 librt.so.1 -> /lib/libc.musl-s390x.so.1 lrwxrwxrwx
> 1 root root 25 Jul 26 12:54 libutil.so.1
> -> /lib/libc.musl-s390x.so.1
>
> Both ld-musl-s390x.so.1 and /lib/libc.musl-s390x.so.1 do not exist,
> so all of above are broken links. Then I have to do some thing like
> this:
>
> edge2:~/s390x$ abuild-apk
> --root /home/edge/s390x/sysroot-s390x-alpine-linux-musl
> add /home/edge/s390x/packages-s390x-alpine-linux-musl/main/s390x/musl-1.1.15-r0.apk
> (1/1) Replacing musl (1.1.15-r0 -> 1.1.15-r0) OK: 23 MiB in 6 packages
>
> And then new layout looks like:
>
> edge2:~/s390x/sysroot-s390x-alpine-linux-musl/lib$ ls -al
> total 3892
> drwxr-sr-x 3 root edge 4096 Jul 26 13:42 .
> drwxr-sr-x 8 edge edge 4096 Jul 26 12:54 ..
> drwxr-sr-x 3 root edge 4096 Jul 26 12:54 apk
> -rwxr-xr-x 1 root root 3972272 Jul 26 13:17
> ld-musl-s390x.so.1 lrwxrwxrwx 1 root root 18 Jul 26
> 13:42 libc.musl-s390x.so.1 -> ld-musl-s390x.so.1 lrwxrwxrwx 1
> root root 25 Jul 26 12:54 libc.so.6
> -> /lib/libc.musl-s390x.so.1 lrwxrwxrwx 1 root root
> 25 Jul 26 12:54 libcrypt.so.1 -> /lib/libc.musl-s390x.so.1
> lrwxrwxrwx 1 root root 25 Jul 26 12:54 libm.so.6
> -> /lib/libc.musl-s390x.so.1 lrwxrwxrwx 1 root root
> 25 Jul 26 12:54 libpthread.so.0 -> /lib/libc.musl-s390x.so.1
> lrwxrwxrwx 1 root root 25 Jul 26 12:54 librt.so.1
> -> /lib/libc.musl-s390x.so.1 lrwxrwxrwx 1 root root
> 25 Jul 26 12:54 libutil.so.1 -> /lib/libc.musl-s390x.so.1
>
> If I don't do so, later crossbuild process will fail. Please check
> https://github.com/tmh1999/alpine-bootstrap-s390x for my latest
> scripts/config.

Thanks, I believe this should be fixed in the new bootstrap.sh.

You seem to have some patches there. Would you like to send them as git
formatted commits, so you get your name as author of the commit?

> b) Then I run crossbuild script, and I need remove paxmark lines in
> gcc's APKBUILD as it returns an unknown error (while creat-cross
> script runs just fine). AFAIK, it is about security concerns, not
> system's functionality, so for now I guess it is okay.

Your kernel is probably built without XATTR support. paxmark requires
XATTR enabled kernel.

> 2) After 1b) is good, I try either to (*) install newly cross-built
> packages into the sysroot-s390x-alpine-linux-musl/ in the build
> machine or (**) install Alpine in a chroot in the target device using
> packages from packages-s390x-alpine-linux-musl/main/s390x/ , they
> both generate following error: http://pastebin.com/WDJyCaxT. Any
> chance this thing comes from removing paxmark in 1b) and create-cross
> build error in 1a) ? I try to pass --verbose to apk-build but cannot
> see any change. How did you manage to bootstrap on the real target
> device?

Add --no-scripts so it won't try to execute foreign binaries. Though,
if you want to build a boot image from that, additional fixups are
likely needed. I hope to rewamp the boot image creation scripts
(alpine-iso.git) as set of scripts bundled in aports.git/scripts after
cross build fixes.

> > > > Though, we are currently looking into improving the build
> > > > system a bit more to support cross-building better, including
> > > > supporting it directly from abuild command line and building
> > > > things automatically in chroot. This needs a bit of design,
> > > > but is on the way.
> > >
> > > That's really good to know. I would like to help in that
> > > process, or try it out and give feedback.
> >
> > I actually want first fix cross building to be supported properly.
> > So just doing "CHOST=aarch64 abuild -r" would to cross-compile
> > aarch64 version of package on any build system.
> >
> > I have first patch ready for this that makes all the
> > cross-compile script config entries built-in to abuild.
> >
> > The second patch is make abuild properly aware of subpkg's arch.
> > This is tricky since when make cross toolchain we are generating
> > packages for the host and the target. But I got this almost done.
> >
> > The above two will greatly simplify the bootstrap scripts, which
> > I'll probably dump to aports along with instructions. We've been
> > getting lot of questions for bootstrapping recently...
>
> Hum.. That looks quite complicated. Will definitely come back to this
> afterwards.

The abuild changes are complicated. The new bootstrap.sh is clean and
simplified. You'll love it :)

/Timo


---
Unsubscribe:  alpine-devel+unsubscribe_at_lists.alpinelinux.org
Help:         alpine-devel+help_at_lists.alpinelinux.org
---
Received on Tue Jul 26 2016 - 19:46:54 GMT