Mail archive
alpine-devel

Re: [alpine-devel] Porting Alpine scripts

From: Tuan M. Hoang <tmhoang_at_flatglobe.org>
Date: Fri, 29 Jul 2016 12:32:18 +0700

 ---- On Tue, 26 Jul 2016 23:46:54 +0700 Timo Teras <timo.teras_at_iki.fi> wrote ----
> 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
>

The scripts/bootstrap.sh + new abuild (cross-build branch) commits look much cleaner.

> On Tue, 26 Jul 2016 14:12:49 +0700
> "Tuan M. Hoang" <tmhoang_at_flatglobe.org> wrote:
>
> > (updated, please ignore previous email)
> >
> > 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.

I still have this problem with newbootstrap.sh and do the above workaround. Trying to find the cause of this.

> 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?

I would love to. But for now musl commits might not be clean since I need to fetch musl.tar.gz from my github repo (which I packaged from : https://github.com/koorogi/musl/tree/s390x ). In order to have it as clean as current musl APKBUILD, we need to wait until s390x is officially merged, which takes quite a time. Other commits are cool and I will submit in 1 day or 2. Need to read the Alpine contribution guide first.

> > 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.

Hum... I cannot find any resources/guideline on the Internet. Would you might shed some light on this ?

> > 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.

Confirmed.

> > > > > 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
>

I am trying to read abuild source code and understand its mechanism. Love to get along.
Cheers,



---
Unsubscribe:  alpine-devel+unsubscribe_at_lists.alpinelinux.org
Help:         alpine-devel+help_at_lists.alpinelinux.org
---
Received on Fri Jul 29 2016 - 12:32:18 UTC