Build-bot host compiler upgrades and C++11!

Greetings, starting a new thread and CC-ing all the folks I could think of that are likely running bots for LLVM. If I’ve missed any, sorry, please add them.

As lots of folks have been mentioning, it’s time to switch LLVM (and most subprojects) to use C++11. The first step is establishing a new baseline of compiler versions that are supported[1]:

MSVC 2012
GCC 4.7
Clang 3.1

If you are helping to keep our build bot infrastructure running and up-to-date, please check the host compiler versions and reply here if you’re going to have trouble upgrading. My rough plan based on chatting with some folks is to submit checks to cmake and configure on Monday to produce an error on older toolchains without some flag to force old toolchain support.

So reply to this thread if you need more time, or if all your bots are ready-to-go! Thanks a bunch!
-Chandler

[1]: Most of these compilers were available in the middle (June) of 2012, and based on the planned 3.5 release time frame of the middle of 2014, that will mean a roughly two year spread of compiler releases. MSVC 2012 was later, but the community seems comfortable with requiring the upgrade. Also, these versions include very significant improvements that make adopting C++11 features much more viable. This was discussed at some length on the mailing list, and I’m not really trying to re-open debate here, just reminding folks. =]

OK.

The polly testers & LNT builders as well as the clang-x86_64-darwin12-nt-O3 builder are running either on gcc 4.7.2 or on Apple LLVM version 4.2 (clang-425.0.28) (based on LLVM 3.2svn).

Tobias

I'd only ask that you 1) either by default it doesn't error on unknown compiler and or 2) there's an override to prevent the "check" from happening at all (or not causing cmake to fail)

I'd only ask that you 1) either by default it doesn't error on unknown
compiler and or 2) there's an override to prevent the "check" from
happening at all (or not causing cmake to fail)

Sorry my wording wasn't sufficiently clear, both of these were always
planned for exactly the reason you list.

---------
This will allow compilers which are compatible, but not in the specific
list above to keep working without issues.

I don't know how easy it would be to test for it, but you may also want to
create a documented policy on minimum libc++ and libstdc++ versions which
are supported. Since clang 3.1 may be on a system which has some
older/newer version and that could impact the c++11 support as well.

Yea, documenting the support for libc++ on Linux may be tough, but it
should be easy to cover the rest: libstdc++ should have the same version
requirements as GCC, and libc++ on OS X with any sufficiently new version
of clang should be good. Still important to document.

FYI, this is happening now-ish!

Hi Chandler,

I’m still migrating our bots, there were some complications. Can it wait until next week?

cheers,
–renato

I’ve already submitted the changes. I’ll sync up with you on IRC and work out how best to proceed.

This change broke the gcc compile farm bots. On the compile farm, gcc is normally around version 4.4. However, gcc 4.8.2 is available in the non-default directory /opt/cfarm/gcc-latest/bin

Maybe we can adapt the buildbots to find it there.

@Duncan, do you have time to do so?

Cheers,
Tobias

Just as an FYI, I saw this and chatted with Duncan tonight about fixing.
He's looking into it, but may need to delegate it to others.

I brought two clang bots back to life, and will look into the others later.

Ciao, Duncan.

Same here, all three chromebooks are alive and kicking!

cheers,
--renato

This also broke the qualcomm buildbot. I copied Rick who is in charge of it.

Tobias

And the OpenBSD bot. I copied Brad, who is in charge of it.

Cheers,
Tobias

Thanks to both of you for the quick updates!!! So far, the fallout seems small enough to leave this in and bring the rest of the bots back online when their admins can. Especially with the arm bots and main linux ones restored, I’m not too worried about regressions creeping in.

In the case of Ubuntu - I thought an older version of clang was available in the repo. Why didn't they just switch the build bot to use that instead of forcing gcc-4.8.2?

One of the reasons I've gone to all the trouble of upgrading my three bots
is that I have a self-hosting bot that already tests clang. If I moved them
to clang, we'd probably regress when compiling with GCC. It's rare, but can
happen.

Another issue is the libstdc++ that Chandler is also moving forward because
of many bugs in C++11 and C++03 libraries.

In the end, if we need to upgrade the libraries, why not upgrade the whole
distribution? It's a lot easier, too. :wink:

cheers,
--renato