Sylvestre Ledru: Some clang rebuild results (8.0.1, 9.0.1 & 10rc2)
Raw logs are published on github: https://github.com/opencollab/clang.debian.net/tree/master/logs Since my last blog post on the subject (August 2017), Clang is more and more present in the tech ecosystem. It is now the compiler used to build Firefox and Chrome upstream binaries on all the supported architectures/operating systems. More architectures are supported, it has a new linker (lld), a new hybrid IR (MLIR), a lot of checkers in clang-tidy, cross-language linking with Rust, etc.
Results
Now, about Debian results, we rebuilt using 8.0.1, 9.0.1 and 10.0rc2. Results are pretty similar to what we had with previous versions: between 4 to 5% of packages are failing when gcc is replaced by clang.
Even if most of the software are still using gcc as compiler, we can see that clang has a positive effect on code quality. With many different kinds of errors and warnings found clang over the years, we noticed a steady decline of the number of errors. For example, the number of incorrect C/C++ main declarations has been decreasing years after years:
Errors found
The biggest offender is still the qmake changes which doesn't allow the used workaround (replacing /usr/bin/gcc by /usr/bin/clang) - about 250 errors. Most of these packages would probably compile fine with clang. More on the Qt bug tracker. The workaround proposed in the bug isn't applicable for us as we use the dropped-in replacement of the compiler.
The second error is still some differences in symbol generation. Unlike gcc, it seems that clang doesn't generate some symbols (or adds some). As a bunch of Debian packages are checking the list of symbols in the library (for ABI management), the build fails on purpose. For example, with libcec, the symbol _ZN10P8PLATFORM14CConditionImplD1Ev@Base 3.1.0 isn't generated anymore. I am not expecting this to be a big deal: the generated libraries probably works most of the time. More on C++ symbol management in Debian.
I reported this bug upstream a while back: https://bugs.llvm.org/show_bug.cgi?id=30441
Current status
As previously said in a blog post, I don't think there is a strong intensive to go away from gcc for most of the Linux distributions. The big reason for BSD was the license (even if the move to the Apache 2 license wasn't received positively by some of them).
While the LLVM/clang ecosystem clearly won the tooling battle, as a C/C++ compiler, gcc is still an excellent compiler which supports more architecture and more languages.
In term of new warnings and checks, as the clang community moved the efforts in clang-tidy (which requires more complex tooling), out of the box, gcc provides a better experience (as example, see the Firefox meta bug to build with -Werror with the default warnings using gcc 9, gcc 10 and clang trunk for example).
Next steps
I see some potential next steps to decrease the number of failure:
- Workaround the Qt/Qmake issue
- Fix the objective-c header include issues (
echo "#include <objc/objc.h>" > foo.m && clang -c foo.m is currently failing)
- Identify why clang generates more/less symbols that gcc in the library and try to fix that
- Rebuild the archive with clang-7 - Seems that I have some data problem
Many thanks to Lucas Nussbaum for the rebuilds.
The biggest offender is still the qmake changes which doesn't allow the used workaround (replacing /usr/bin/gcc by /usr/bin/clang) - about 250 errors. Most of these packages would probably compile fine with clang. More on the Qt bug tracker. The workaround proposed in the bug isn't applicable for us as we use the dropped-in replacement of the compiler.
The second error is still some differences in symbol generation. Unlike gcc, it seems that clang doesn't generate some symbols (or adds some). As a bunch of Debian packages are checking the list of symbols in the library (for ABI management), the build fails on purpose. For example, with libcec, the symbol
_ZN10P8PLATFORM14CConditionImplD1Ev@Base 3.1.0 isn't generated anymore. I am not expecting this to be a big deal: the generated libraries probably works most of the time. More on C++ symbol management in Debian.I reported this bug upstream a while back: https://bugs.llvm.org/show_bug.cgi?id=30441
Current status
As previously said in a blog post, I don't think there is a strong intensive to go away from gcc for most of the Linux distributions. The big reason for BSD was the license (even if the move to the Apache 2 license wasn't received positively by some of them).
While the LLVM/clang ecosystem clearly won the tooling battle, as a C/C++ compiler, gcc is still an excellent compiler which supports more architecture and more languages.
In term of new warnings and checks, as the clang community moved the efforts in clang-tidy (which requires more complex tooling), out of the box, gcc provides a better experience (as example, see the Firefox meta bug to build with -Werror with the default warnings using gcc 9, gcc 10 and clang trunk for example).
Next steps
I see some potential next steps to decrease the number of failure:
- Workaround the Qt/Qmake issue
- Fix the objective-c header include issues (
echo "#include <objc/objc.h>" > foo.m && clang -c foo.m is currently failing)
- Identify why clang generates more/less symbols that gcc in the library and try to fix that
- Rebuild the archive with clang-7 - Seems that I have some data problem
Many thanks to Lucas Nussbaum for the rebuilds.
I see some potential next steps to decrease the number of failure:
- Workaround the Qt/Qmake issue
- Fix the objective-c header include issues (
echo "#include <objc/objc.h>" > foo.m && clang -c foo.mis currently failing) - Identify why clang generates more/less symbols that gcc in the library and try to fix that
- Rebuild the archive with clang-7 - Seems that I have some data problem
Many thanks to Lucas Nussbaum for the rebuilds.
I have somewhere in the basement a DEC Vax workstation, but in the end it was a bigger fun to run an emulated Vax 11/780 (size of two refrigerators) in Beagle Bone Black (size of a big matchbox). For this I used the Dockerfiles available in
Hey folks,
This is a quick blog post to tell you Bandcamp is
From time to time, we get questions in Debian about our official channels of
communication and questions about the Debian status of who may own similarly
named websites.
The main Debian website
Control freaks. You may have called people like this. Or you may have been called one
yourself. Maybe you got angry. Or, on the contrary, you felt like being a
control freak is a feature, because who would notice all these little details
that are not exactly perfect if not you? This post is an attempt to deconstruct
the term.
Etymological considerations
Control - from latin contra- rotulus - refers to the
copy of an account register as a means of verification of the original
register. So control is about keeping track, not making mistakes, i.e. it's
about doing a perfect calculation. The meaning of control in our society is
linked to authority, or to policing like in crowd control. What English
calls an inspector, is a Kontrolleur in German or
contr leur in French. The word is also linked to manufacturing, as in
quality control. We also talk about being in control, which
is linked to the desire of being autonomous, to be able to act on one's own
account. Being in control can also designate a need to preserve one's own
integrity: if I have integrity (in the sense of feeling whole), I can
self-determine, which is the most fundamental requirement for having one's own
identity.
Freak - refers to someone who does not fit the norm. Calling someone a
freak is per se problematic, because it blames a person for being
atypical, abnormal. Freak is a word that, while pointing a finger at
difference, at the same time denies people the right to be different and
diverse. People can reappropriate such words to make it clear that not fitting
the norm is a wanted expression of their diversity we can see that if
we follow the history of the word 
It has been close to a year now that I've incorporated my new company, 
Example of rule matching returned in GitHub checks
Some people like to make bots talk to each other.
GitHub service status is not always green.
If you have to choose one year when you won't fly, this year, 2020, is the one to choose. Why? Because CORSIA. What the heck is CORSIA?
What does it have to do with *this* Year? The first phase of CORSIA will start next year, so the emissions are frozen to year 2020 levels. Due to certain recent events, lots of flights have already been cancelled - which means the reference year aviation emissions are already a lot less than the aviation industry was expecting. By avoiding flying this year, the aviation emissions are going to be frozen at an even lower level. This will increase cost of co2 offsetting for airlines, and the joke is going to be on them. So consider skipping business travel and taking your holiday trip this year with something else than a plane. Wouldn't recommend a cruise ship, tho...
I have a
Welcome to gambaru.de. Here is my monthly report (+ the first week in March) that covers what I have been doing for Debian. If you re interested in Java, Games and LTS topics, this might be interesting for you.
Debian Games
Liberation Mono
Fira Mono