Mozilla switched to clang 3.8.0 for their cross-compilation toolchain a while ago. We should do the same. This has the benefit that we can get away from using some random commit having signed tarballs instead.
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Child items 0
Show closed items
No child items are currently assigned. Use child items to break down this issue into smaller parts.
Linked items 0
Link issues together to show that they're related.
Learn more.
Okay, here is my plan. clang 3.8.0 requires GCC 4.8 which our current host system does not have. So, we actually have two options to fix that:
We build a recent enough GCC (or clang for that matter) first and then build our clang. That could be tricky and time-consuming given a non-standard location of that GCC and its related libs (https://btorpey.github.io/blog/2015/01/02/building-clang/ has a fancy tutorial for that).
We could just use Debian Jessie (which comes with GCC 4.9) instead of Debian Wheezy. I tried that today and it worked as expected.
I think I'll do 2) and spend a bit time on getting rid of the old macOS toolchain which allows us to get rid of i386 VMs in the macOS build process. I am almost done with a respective patch for #10369 (moved) which is the bulk of that work. Then we only need to adapt the PT descriptor (i.e. we need to switch to using clang instead of GCC).
It seems moving to the new toolchain has reproducibility problems as a result. :( I just bumped the Debian distro to Jessie and put clang together according to https://bugzilla.mozilla.org/show_bug.cgi?id=1273981 and the resulting dmgs don't match anymore. Using the old clang compiler does not have the same problems.
It seems moving to the new toolchain has reproducibility problems as a result. :( I just bumped the Debian distro to Jessie and put clang together according to https://bugzilla.mozilla.org/show_bug.cgi?id=1273981 and the resulting dmgs don't match anymore. Using the old clang compiler does not have the same problems.
We could just use the clang part for compiling the remaining utils and tor (and not include libcxx nor libcxxabi which should not be needed anyway) to make sure the issue is inside clang.
Assuming this is indeed in clang, because the investigation done in 1) - 3) shows that, we could do some bisecting finding the problematic commit.