Semi-regular llvm snapshots for ARMv7/Linux

Hi,

I am doing semi-regular llvm snapshots (with clang,compiler_rt,libcxx and libcxxabi) for ARMv7/Linux available at https://i10z.com/llvm/ . Which might be also useful to some of you.

Regards,
ismail

Hi Ismail,

That's certainly useful, thanks for the work!

How are you validating these snapshots? Just check-all or running the
test-suite? Is this stage 1, 2 or 3 of a self-hosting chain?

cheers,
--renato

Hi,

Sadly these are built on a x86-64 Linux host hence not validated via
test-suite. What I currently do is updating llvm snapshot for openSUSE and
then using that snapshot to build for ARMv7. So far doing only stage1
builds. Also using linaro-arm-linux-gnueabihf-4.9 toolchain (September 2014
release) for headers.

I see. Do you at least run check-all? I wouldn't trust any build that
doesn't at least passes the basic checks.

One thing you can do to minimise the risk is to only checkout
revisions that are known to be good by investigating the buildbots.
That won't guarantee anything, since you're cross-compiling and we're
not, but that should give you "some" peace of mind.

CC=arm-clang CXX=arm-clang++ cmake -DBUILD_SHARED_LIBS=ON

What revision is this? Release 3.5 or trunk or something else?

CFLAGS="-mfloat-abi=hard -march=armv7-a -mtune=cortex-a8 -mfpu=vfpv3-d16
-fuse-ld=gold"

These are sane options. :slight_smile:

cheers,
--renato

> Sadly these are built on a x86-64 Linux host hence not validated via
> test-suite. What I currently do is updating llvm snapshot for openSUSE
and
> then using that snapshot to build for ARMv7. So far doing only stage1
> builds. Also using linaro-arm-linux-gnueabihf-4.9 toolchain (September
2014
> release) for headers.

I see. Do you at least run check-all? I wouldn't trust any build that
doesn't at least passes the basic checks.

I could but the device is rather slow (BeagleBone Black).

One thing you can do to minimise the risk is to only checkout
revisions that are known to be good by investigating the buildbots.
That won't guarantee anything, since you're cross-compiling and we're
not, but that should give you "some" peace of mind.

Makes sense, I will implement this.

> CC=arm-clang CXX=arm-clang++ cmake -DBUILD_SHARED_LIBS=ON

What revision is this? Release 3.5 or trunk or something else?

Thats the latest trunk available from

https://build.opensuse.org/project/show?project=home%3Anamtrac%3Aclang

> CFLAGS="-mfloat-abi=hard -march=armv7-a -mtune=cortex-a8 -mfpu=vfpv3-d16
> -fuse-ld=gold"

These are sane options. :slight_smile:

Good to know :slight_smile:

Thanks!

Ok now I also publish “checked” builds available at https://i10z.com/llvm/checked/ . These are built on native ARM hardware and checked using

ninja check check-clang check-libcxx

libcxxabi has a failure and I’ll report it before enabling check for it.

But a big fat notice: This ARM hardware might go unavailable any time, so I’ll be publishing my usual cross builds too.

And finally now the non-checked builds check-out the latest-succesful revision based on the cortex-a9 buildbot (lab.llvm.org:8011/builders/clang-native-arm-cortex-a9/)

While you're at it, it'd be good to check all bots, not just that one.
Since we're already testing self-hosting, compiler-rt, libc++ and the
test-suite, if you only take the revisions that are green on all of
them, you should be reasonably safe.

clang-cmake-armv7-a15
clang-cmake-armv7-a15-selfhost
clang-cmake-armv7-a15-full
clang-native-arm-lnt
libcxx-libcxxabi-arm-linux

The last one has one last failure that I'm investigating. I'm
considering marking as XFAIL, since that's a grey area on ARM.

The Cortex-A9 bot is more erratic than the A15 ones, so you could get
a lot of false-negatives that would make it harder to find a stable
revision.

I have a small perl script that gets the status of all the bots,
attached. You can change it to not print HTML, but return true / false
based on the status of all the bots. Just pass all the bots above as
arguments and the script will do the rest. :slight_smile:

cheers,
--renato

bot-status (1.7 KB)

> And finally now the non-checked builds check-out the latest-succesful
> revision based on the cortex-a9 buildbot
> (lab.llvm.org:8011/builders/clang-native-arm-cortex-a9/)

While you're at it, it'd be good to check all bots, not just that one.
Since we're already testing self-hosting, compiler-rt, libc++ and the
test-suite, if you only take the revisions that are green on all of
them, you should be reasonably safe.

clang-cmake-armv7-a15
clang-cmake-armv7-a15-selfhost
clang-cmake-armv7-a15-full
clang-native-arm-lnt
libcxx-libcxxabi-arm-linux

The last one has one last failure that I'm investigating. I'm
considering marking as XFAIL, since that's a grey area on ARM.

The Cortex-A9 bot is more erratic than the A15 ones, so you could get
a lot of false-negatives that would make it harder to find a stable
revision.

OK

I have a small perl script that gets the status of all the bots,
attached. You can change it to not print HTML, but return true / false
based on the status of all the bots. Just pass all the bots above as
arguments and the script will do the rest. :slight_smile:

I was tempted to write one in Python, saved me work. Thanks!