Merge pull request #306095 from K900/you-can-just-leave

Tarball job optimizations
This commit is contained in:
Martin Weinelt 2024-04-24 14:01:55 +02:00 committed by GitHub
commit 8a30b52c56
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
4 changed files with 30 additions and 39 deletions

View File

@ -5,7 +5,7 @@ let
trace = if builtins.getEnv "VERBOSE" == "1" then builtins.trace else (x: y: y);
rel = removeAttrs (import ../../pkgs/top-level/release.nix { }) [ "tarball" "unstable" "xbursttools" ];
rel = removeAttrs (import ../../pkgs/top-level/release.nix { }) [ "tarball" "unstable" ];
# Add the recurseForDerivations attribute to ensure that
# nix-instantiate recurses into nested attribute sets.

View File

@ -1,10 +1,5 @@
/* Hydra job to build a tarball for Nixpkgs from a Git checkout. It
also builds the documentation and tests whether the Nix expressions
evaluate correctly. */
{ nixpkgs
, officialRelease
, supportedSystems
, pkgs ? import nixpkgs.outPath {}
, nix ? pkgs.nix
, lib-tests ? import ../../lib/tests/release.nix { inherit pkgs; }
@ -32,54 +27,50 @@ pkgs.releaseTools.sourceTarball {
echo "git-revision is $(cat .git-revision)"
'';
requiredSystemFeatures = [ "big-parallel" ]; # 1 thread but ~36G RAM (!) see #227945
dontUnpack = true;
dontBuild = false;
doCheck = true;
checkPhase = ''
set -o pipefail
echo "generating packages.json"
export NIX_STATE_DIR=$TMPDIR
export NIX_PATH=nixpkgs=$TMPDIR/barf.nix
opts=(--option build-users-group "")
nix-store --init
(
echo -n '{"version":2,"packages":'
NIX_STATE_DIR=$TMPDIR NIX_PATH= nix-env -f $src -qa --meta --json --show-trace --arg config 'import ${./packages-config.nix}'
echo -n '}'
) | sed "s|$src/||g" | jq -c > packages.json
echo "checking eval-release.nix"
nix-instantiate --eval --strict --show-trace ./maintainers/scripts/eval-release.nix > /dev/null
echo "checking find-tarballs.nix"
nix-instantiate --readonly-mode --eval --strict --show-trace --json \
./maintainers/scripts/find-tarballs.nix \
--arg expr 'import ./maintainers/scripts/all-tarballs.nix' > $TMPDIR/tarballs.json
nrUrls=$(jq -r '.[].url' < $TMPDIR/tarballs.json | wc -l)
echo "found $nrUrls URLs"
if [ "$nrUrls" -lt 10000 ]; then
echo "suspiciously low number of URLs"
# Arbitrary number. The index has ~115k packages as of April 2024.
if [ $(jq -r '.packages | length' < packages.json) -lt 100000 ]; then
echo "ERROR: not enough packages in the search index, bailing out!"
exit 1
fi
echo "generating packages.json"
mkdir -p $out/nix-support
echo -n '{"version":2,"packages":' > tmp
nix-env -f . -I nixpkgs=$src -qa --meta --json --show-trace --arg config 'import ${./packages-config.nix}' "''${opts[@]}" >> tmp
echo -n '}' >> tmp
packages=$out/packages.json.br
< tmp sed "s|$(pwd)/||g" | jq -c | brotli -9 > $packages
rm tmp
mkdir -p $out/nix-support
brotli -9 < packages.json > $packages
echo "file json-br $packages" >> $out/nix-support/hydra-build-products
'';
distPhase = ''
mkdir -p $out/tarballs
mkdir ../$releaseName
cp -prd . ../$releaseName
(cd .. && tar cfa $out/tarballs/$releaseName.tar.xz $releaseName) || false
XZ_OPT="-T0" tar \
--create \
--xz \
--file=$out/tarballs/$releaseName.tar.xz \
--absolute-names \
--transform="s|^$src|$releaseName|g" \
--transform="s|^$(pwd)|$releaseName|g" \
--owner=0 \
--group=0 \
--numeric-owner \
--format=gnu \
--sort=name \
--mtime="@$SOURCE_DATE_EPOCH" \
--mode=ug+w \
$src $(pwd)/{.version-suffix,.git-revision}
'';
meta = {
maintainers = [ ];
};
}

View File

@ -18,7 +18,7 @@ in
{
tarball = import ./make-tarball.nix {
inherit nixpkgs supportedSystems;
inherit nixpkgs;
officialRelease = false;
};

View File

@ -78,7 +78,7 @@ let
] (arch: elem "${arch}-darwin" supportedSystems);
nonPackageJobs =
{ tarball = import ./make-tarball.nix { inherit pkgs nixpkgs officialRelease supportedSystems; };
{ tarball = import ./make-tarball.nix { inherit pkgs nixpkgs officialRelease; };
release-checks = import ./nixpkgs-basic-release-checks.nix { inherit pkgs nixpkgs supportedSystems; };