|« Changes Firefox 29 beta2 to beta3||MozillaReleases account on Twitter »|
Rebuild of Debian using Clang 3.4
Using the AWS donation, David Suarez and myself have been able to rebuild the whole archive with Clang 3.4.
The rebuild has been done January 10th but, with my new job, I did not find the time to publish the result.
Releases after releases, the results are getting better and better.
Currently, 2193 packages in the archive are failing to build from source.
That is roughly the same number of build failures as with the precedent rebuild with Clang 3.3.
However, this is good news for two reasons:
* the number of new packages in Debian increased (18854 at time of the 3.3 release, 21204 for the 3.4)
* clang 3.4 has more checks and error detections.
I also started to update clang to make it closer to gcc. For example, I transformed wrong usage of -O (> 6) error to be treated as regular warning.
However, a critical bug has emerged during this release. When using -D_FORTIFY_SOURCE=2 (which is the case of many Debian packages), the binaries produced freeze (infinity loop in the ASM). This has been reported upstream as bug 16821 and concerns about 150 packages (including Firefox, gcc, LLVM, etc). Hopefully, this will be fixed in 3.5 (this is unlikely for 3.4.1).
About the new build failures, now, Clang triggers an error (or warning + -Werror) on:
* Wrong usage of the default argument (should be done in the definition)
* Usage of C++11 feature without the appropriate argument
* Unused static const declaration
* Recursive template instantiation exceeded
* Defitinion of a builtin function
* Read-only variable is not assignable
By the way, I proposed a Google Summer of Code Project to work faster on a support of Debian built by Clang. As requirements, I asked students to fix some bugs, they already did a great job.
Are you only building x86 or other arch too ?
We are building, for now, just for amd64. There are still so much work to do. It would be a mistake to try tackling every issues at the same time.