Mail archive
alpine-devel

Re: [alpine-devel] Porting Alpine scripts

From: Tuan M. Hoang <tmhoang_at_flatglobe.org>
Date: Tue, 26 Jul 2016 14:12:49 +0700

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

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.

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.


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?


> I just pushed few commits to abuild, that set CBUILD by default
> properly. It also fixes dependency installation for host/target to not
> run scripts, that would become error later on the build process too.
>
> Please try latest abuild git version if it helps.

I am using it now.

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



---
Unsubscribe:  alpine-devel+unsubscribe_at_lists.alpinelinux.org
Help:         alpine-devel+help_at_lists.alpinelinux.org
---
Received on Tue Jul 26 2016 - 14:12:49 GMT