Kein gcc mehr in FreeBSDs Standardinstallation

Yamagi

Possessed With Psi Powers
Teammitglied
Wie sicher bekannt ist, arbeitet das FreeBSD Projekt seit einigen Jahren daran gcc als Systemcompiler durch Clang zu ersetzen. Im gleichen Schritt wird der GNU C++-Stack auf Basis von libstdc++ durch einen moderneren, vollständig C++11 implementierenden Stack ersetzt. Im vorerst letzten Schritt dieses Projekts wurde gcc nun auf allen Plattformen deaktiviert, die Clang als Standardcompiler nutzen. Diese sind:
- FreeBSD/amd64
- FreeBSD/ARM
- FreeBSD/i386
Andere Plattformen nutzen vorerst weiter gcc. FreeBSD/PowerPC64 ist kurz vor dem Punkt, dass der Standardcompiler geändert werden kann. FreeBSD/MIPS nähert sich ebenfalls mit großen Schritten. In beiden Fällen wird die Umstellung allerdings sehr wahrscheinlich erst nach dem Branch von FreeBSD 10.0 passieren. Die Sorgenkinder sind im Moment FreeBSD/SPARC64 und FreeBSD/IA64, denn beide Plattformen werden derzeit nur unzureichend oder gar nicht von Clang unterstützt. Hier wird noch über das weitere Vorgehen entschieden werden müssen.

gcc ist weiterhin im Code des Basissystems enthalten. Wer unbedingt einen gcc in diesem braucht, kann diesen in der /etc/src.conf wieder aktivieren und anschließend das System neu bauen. Allerdings ist der empfohlene Weg einen der lang/gcc* Ports zu installieren, da diese deutlich neuere Versionen beinhalten. Des Weiteren wird es in den nächsten Tagen einen Port des im Basissystem enthaltenen, stark gepatchten gcc 4.2.1 geben.

Code:
Hi Everyone,

As of r255321, we are no longer building gcc or libstdc++ as part of the default install on platforms where clang is cc.

If you are using gcc, you have two options:

1) Install one of the lang/gcc* ports (Warner has been working on separating out the patches to our GCC, so these should soon be patched to provide the same features as the one in base)

2) Put WITH_GCC=yes and WITH_GNUCXX=yes in your src.conf when you build world.

GCC will stay in the base system tree for at least the lifetime of the 10.x release, and possibly longer if it is still being actively used.  It will remain used by tinderboxes and make universe for some architectures, so if you commit code without testing with gcc people will know very soon...

Thanks to Warner for all of his recent work on disentangling the toolchain, to all of the people (Roman, Dimitry, Brooks, and others) who worked on getting clang integrated into FreeBSD and to everyone who tested it and filed bug reports.  As of today, PowerPC64 joins x86 and ARM as platforms where world+kernel can be successfully built (and work) with clang (although it isn't the default yet and needs more testing), and hopefully other architectures will follow soon.

Huge thanks to all of the ports people who have spent the last two weeks working on dealing with the fallout from iconv and ensuring that all of the ports work with clang and libc++.  I think over the last week, the number of failing / ignored ports has dropped by about a thousand a day on the no-gcc test box that Bapt has been running, which is a phenomenal achievement.  

David
 
Da hat man doch eigentlich eine schöne Lösung gefunden. Ich hoffe es treten nicht allzu viele Laufzeitprobleme auf. Unter OS X macht ein mit Clang gebautes Ruby gerne mal Stress und crashed irgendwo. Aber Ruby stresst auch bei GCC unter bestimmten Flags/Architekturen rum.

Aber dank Clang und LLVM wird ja auch der GCC immer besser. Und da LLVM ja noch diverse Sprachen vermissen lässt ist es gut für alle gewesen :)
 
Ja, es ist wirklich interessant wie sehr ein wenig Konkurrenz dem alten gcc in den Hintern getreten hat. Gerade was die Ausgabe betrifft. Ich sage nur deutlich lesbarere Fehlermeldungen, bald auch in Farbe.

Clang ist reif genug um das FreeBSD-Basissystem und die meisten Ports bauen zu können. Port-Maintainer können ihrem Port mit USE_GCC auch eine zu verwendende gcc-Version vorgeben, wenn er mit Clang nicht baut. Der Kram hatte nun an die 5 Jahre Vorlauf, wesentlich mehr testen kann man schlicht nicht.
 
Ich find's ja grundsätzlich toll und bin extremer LLVM-Fan. Nur gibt mir das ehrlich gesagt manchmal ein leicht mulmiges Gefühl, wenn vieles vor allem auf Linux/GCC getestet wird, aber man dann auf einem FreeBSD mit clang ist. Hört sich ein wenig an, als würde das Bug aufdecken damit schwerer sein/werden.
 
@Athaba

Mit GCC 4.2 dürfte auch schon länger keiner mehr testen, also dürfte das nicht das Problem sein. Da dürfte clang schon weitaus mehr kompatibel sein.
 
Ich finds super, das Einzige, was mich stört ist, dass der Bau von CLANG selbst viel länger braucht als der alte GCC im Base. Also muss ich beim buildworld länger warten.
 
Ja, es ist wirklich interessant wie sehr ein wenig Konkurrenz dem alten gcc in den Hintern getreten hat. Gerade was die Ausgabe betrifft. Ich sage nur deutlich lesbarere Fehlermeldungen, bald auch in Farbe.

Clang ist reif genug um das FreeBSD-Basissystem und die meisten Ports bauen zu können. Port-Maintainer können ihrem Port mit USE_GCC auch eine zu verwendende gcc-Version vorgeben, wenn er mit Clang nicht baut. Der Kram hatte nun an die 5 Jahre Vorlauf, wesentlich mehr testen kann man schlicht nicht.

Och, man kann noch viel mehr testen, testen kann man immer :D

warum der so wenig Konkurrenz hat? nu es ist nicht gerade einfach nen Compiler zu bauen das is ne hochkomplexe Sache, <compilergenerator> in der Informatik ne Wissenschaftliche Disziplin, gibt jo noch en Thread im Forum dazu ...

Ob das gut ist wird die Zeit zeigen, und die Bugreports, aber Clang is scho mal ein Schritt in die richtige Richtung dauert nur halt länger das Bauen (wird mehr ab gecheckt) macht aber nichts ...

cu bis denne ruy
 
Naja, aber wenn man dann später das Basissystem komplett mit Clang dann selbst mit Clang baut sollte es doch dann insgesamt wieder gleich schnell/schneller sein, oder? Das Hauptproblem ist halt, dass LLVM/clang eben in C++ geschrieben ist, was halt doch deutlich länger braucht, als C Code. Dafür ist halt clang bei C-Code deutlich fixer.
 
Ich finds super, das Einzige, was mich stört ist, dass der Bau von CLANG selbst viel länger braucht als der alte GCC im Base. Also muss ich beim buildworld länger warten.

Im FreeBSD stable/9 Zweig werden GCC und CLANG gebaut, das dauert dann erst recht länger, gleich zwei Compiler Suiten beim make buildworld zu bauen.
 
Ein paar Minuten kannst du mit "WITHOUT_GCC" in der src.conf sparen. Das hab ich schon länger drin.
 
Zurück
Oben