Rebuild of Debian using Clang 3.4

Mars 21st, 2014

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)
16 occurrences

* Usage of C++11 feature without the appropriate argument
7 occurrences

* Unused static const declaration
5 occurrences

* Recursive template instantiation exceeded
4 occurrences

* Defitinion of a builtin function
3 occurrences

* Read-only variable is not assignable
2 occurrences

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.

MozillaReleases account on Twitter

Mars 21st, 2014

Lately, we, the release team at Mozilla, have started to use again the MozillaReleases account on Twitter.

We are publishing news about the releases, new features, interesting bugs, etc.

If you have suggestions (more technical, more bug reports, etc), don't hesitate to share them in the comments.

scan-build on the llvm toolchain runs nightly

Mars 15th, 2014

Just a small blog post to LLVM developers that the automatic scan-build reports on LLVM+Clang+LLDB+compiler-rt are now run using LLVM nightly.

That brings few advantages:
* New checks quickly available for the LLVM developer community
* Quick feedbacks for scan-build developers on the whole code base
* Automatic testing of the packages generated

Testing Firefox ESR 24.4.0

Mars 12th, 2014

Next week, March 18th, in parallel of the new major release of Firefox, we will be publishing our next stable release (24.4.0).

For those who are not familiar with ESR (Extended Support Release), Mozilla maintains a specific version of Firefox for about a year. In these releases, we only backport high-risk/high-impact security vulnerabilities.
This version is mainly used by companies which don't want to update their versions of Firefox every 6 weeks but also some Linux distributions which needs to be maintained for a while.

We published the pre release of Firefox ESR 24.4.0 for testing. No need to go a full qualification but testing of internal websites are welcome.
Please file bugs for any critical regressions you find and make sure to set the need-info? flag on release-mgmt@mozilla.com so that we have visibility into the issue.
Alternatively, you can directly email release-mgmt@mozilla.com or the enterprise list.

Pre release ESR binaries:

Some updates on llvm.org/apt/

Février 22nd, 2014

I made some changes on http://llvm.org/apt/ for the last 2 months.

  • Added trusty, Ubuntu 14.04, as a new supported distribution (on the request of Michael Larabel, Phoronix)
  • Support both the stable and development version. Currently, that means that the release_34 branch and the trunk are built. So, for example, clang-3.4 and clang-3.5 can be installed.
    release_34 are only built when a new commit is submitted in this branch. trunk is built twice a day.
  • Add a new package llvm-{3.4,3.5}-tools which contains various tools to build software/packages on top of llvm. Contributed by Martin Nowack in the context of Klee.
  • Since a C++ 11 compiler is now mandatory, I had to force the usage of a backported gcc/g++ 4.8 (thanks Doko).
    This is the case for Ubuntu Precise (12.04), Quantal (12.10) and raring (13.04).
    The thing is that it triggers a dependency on the libstdc++ 4.8 causing the PPA to be mandatory.
    deb http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu $DISTRIBUTION main

    For now, because of the lack of backport of gcc 4.8, I am not providing support for Debian stable (wheezy).