Passing `-l$NIX_BUILD_CORES` improperly limits the overall system load.
For a build machine which is configured to run `$B` builds where each
build gets `total cores / B` cores (`$C`), passing `-l $C` to make will
improperly limit the load to `$C` instead of `$B * $C`.
This effect becomes quite pronounced on machines with 80 cores, with
40 simultaneous builds and a cores limit of 2. On a machine with this
configuration, Nix will run 40 builds and make will limit the overall
system load to approximately 2. A build machine with this many cores
can happily run with a load approaching 80.
A non-solution is to oversubscribe the machine, by picking a larger
`$C`. However, there is no way to divide the number of cores in a way
which fairly subdivides the available cores when `$B` is greater than
1.
There has been exploration of passing a jobserver in to the sandbox,
or sharing a jobserver between all the builds. This is one option, but
relatively complicated and only supports make. Lots of other software
uses its own implementation of `-j` and doesn't support either `-l` or
the Make jobserver.
For the case of an interactive user machine, the user should limit
overall system load using `$B`, `$C`, and optionally systemd's
cpu/network/io limiting features.
Making this change should significantly improve the utilization of our
build farm, and improve the throughput of Hydra.
* trace-cmd: 2.9.5 -> 2.9.6 (#148944)
And update meta.licenses
The lib part is under LGPL-2.1
And use SPDX 3.0 license identifier
Co-authored-by: Renaud <c0bw3b@users.noreply.github.com>
Relevant upstream changes:
- Sources were moved from trace-cmd repository to a new repository.
- Makefile for building documentation is broken. Therefore, we don't
build documentation. After upstream fixes it, we can build it again.
Besides updating trace-cmd, this commit also switches from bundled
libtraceevent and libtracefs to their external sources. Upstream
copied those libraries to separate repositories (see
https://lore.kernel.org/linux-trace-devel/20210325172357.6e059c31@gandalf.local.home/).
Another change relates to documentation building, which upstream
reworked. We disable HTML documentation - previous versions did not
provide it too.
Finally, we enable parallel build, which is simpler if `buildPhase` is
not overridden.
Besides updating the version, this commit decouples trace-cmd and
kernelshark source revisions. These two programs are developed in the
same repository but are released independently. Nixpkgs built the
previous versions of these programs from the same source commit, which
meant that at least one of the programs were not built from the
officially released version. Now we use the release tags of the
corresponding programs.
According to https://repology.org/repository/nix_unstable/problems, we have a
lot of packages that have http links that redirect to https as their homepage.
This commit updates all these packages to use the https links as their
homepage.
The following script was used to make these updates:
```
curl https://repology.org/api/v1/repository/nix_unstable/problems \
| jq '.[] | .problem' -r \
| rg 'Homepage link "(.+)" is a permanent redirect to "(.+)" and should be updated' --replace 's@$1@$2@' \
| sort | uniq > script.sed
find -name '*.nix' | xargs -P4 -- sed -f script.sed -i
```
In line with the Nixpkgs manual.
A mechanical change, done with this command:
find pkgs -name "*.nix" | \
while read f; do \
sed -e 's/description\s*=\s*"\([a-z]\)/description = "\u\1/' -i "$f"; \
done
I manually skipped some:
* Descriptions starting with an abbreviation, a user name or package name
* Frequently generated expressions (haskell-packages.nix)
Gets rid of this build error:
make -C /tmp/nix-build-trace-cmd-2.5.3.drv-0/trace-cmd/Documentation all
ASCIIDOC trace-cmd-hist.1.xsl
*********************************
** No docbook.xsl is installed **
** Can't make man pages **
*********************************
Makefile:59: recipe for target '/tmp/nix-build-trace-cmd-2.5.3.drv-0/trace-cmd/Documentation/trace-cmd-hist.1' failed