On 08/15/2017 10:14 PM, Bruno Haible wrote:
It does not make sense for a _distributor_ of software to replace its
build system. The main users of the build system are the maintainers;
it's them who decide about the build system.
As a distributor, you have to accept the build system of a package;
everything else is a maintenance nightmare. But why does it matter whether
it takes 15 minutes? Gettext releases don't come out more frequently than
once a month, and you surely don't have to build it for 30*24*4 = 2880
platforms?
I built a GCC 7.2.0 from source yesterday, which took ca. 8 hours, and
even that is acceptable!
Yocto is not a distribution, and it does not provide any pre-built
binaries or images. It is a toolkit for creating Linux-based
distributions aimed at embedded use cases. What this means is that
anyone who wants to create such a distribution and produce images and
packages that can be placed on their target devices needs to configure
exactly what gets built and how, and then perform the build on their
development machine iteratively, until they are happy with the outcome.
So we aggressively parallelize and cache everything: when multiple
software packages can be built at the same time, they are. Build
artifacts are placed into a disk cache, and reused whenever possible.
However, if a setting that influences how something gets build is
changed, that triggers a rebuild of all dependencies.
Which brings us to gettext. It is on a critical path for almost anything
(in the dependency tree it comes shortly after building the
cross-compilation C toolchain, including cross-gcc, and is needed for
almost anything else). So watching how it takes several minutes to
configure itself, while nothing else can proceed in the build is not a
good use of time, and we would like to solve this bottleneck. Similarly,
we run automated builds (for multiple common architectures and
scenarios) several times a day to establish that new changes don't cause
breakage, and want to make those faster as well.
For what its worth we can build a complete Linux system, including the
gcc cross toolchain used during the build in around 1-1.5 hours
depending on the build hardware used.
Thanks.
Alex