Merge pull request #306095 from K900/you-can-just-leave
Tarball job optimizations
This commit is contained in:
commit
8a30b52c56
@ -5,7 +5,7 @@ let
|
|||||||
|
|
||||||
trace = if builtins.getEnv "VERBOSE" == "1" then builtins.trace else (x: y: y);
|
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
|
# Add the ‘recurseForDerivations’ attribute to ensure that
|
||||||
# nix-instantiate recurses into nested attribute sets.
|
# nix-instantiate recurses into nested attribute sets.
|
||||||
|
@ -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
|
{ nixpkgs
|
||||||
, officialRelease
|
, officialRelease
|
||||||
, supportedSystems
|
|
||||||
, pkgs ? import nixpkgs.outPath {}
|
, pkgs ? import nixpkgs.outPath {}
|
||||||
, nix ? pkgs.nix
|
, nix ? pkgs.nix
|
||||||
, lib-tests ? import ../../lib/tests/release.nix { inherit pkgs; }
|
, lib-tests ? import ../../lib/tests/release.nix { inherit pkgs; }
|
||||||
@ -32,54 +27,50 @@ pkgs.releaseTools.sourceTarball {
|
|||||||
echo "git-revision is $(cat .git-revision)"
|
echo "git-revision is $(cat .git-revision)"
|
||||||
'';
|
'';
|
||||||
|
|
||||||
requiredSystemFeatures = [ "big-parallel" ]; # 1 thread but ~36G RAM (!) see #227945
|
dontUnpack = true;
|
||||||
|
|
||||||
dontBuild = false;
|
dontBuild = false;
|
||||||
|
|
||||||
doCheck = true;
|
doCheck = true;
|
||||||
|
|
||||||
checkPhase = ''
|
checkPhase = ''
|
||||||
set -o pipefail
|
echo "generating packages.json"
|
||||||
|
|
||||||
export NIX_STATE_DIR=$TMPDIR
|
(
|
||||||
export NIX_PATH=nixpkgs=$TMPDIR/barf.nix
|
echo -n '{"version":2,"packages":'
|
||||||
opts=(--option build-users-group "")
|
NIX_STATE_DIR=$TMPDIR NIX_PATH= nix-env -f $src -qa --meta --json --show-trace --arg config 'import ${./packages-config.nix}'
|
||||||
nix-store --init
|
echo -n '}'
|
||||||
|
) | sed "s|$src/||g" | jq -c > packages.json
|
||||||
|
|
||||||
echo "checking eval-release.nix"
|
# Arbitrary number. The index has ~115k packages as of April 2024.
|
||||||
nix-instantiate --eval --strict --show-trace ./maintainers/scripts/eval-release.nix > /dev/null
|
if [ $(jq -r '.packages | length' < packages.json) -lt 100000 ]; then
|
||||||
|
echo "ERROR: not enough packages in the search index, bailing out!"
|
||||||
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"
|
|
||||||
exit 1
|
exit 1
|
||||||
fi
|
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
|
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
|
echo "file json-br $packages" >> $out/nix-support/hydra-build-products
|
||||||
'';
|
'';
|
||||||
|
|
||||||
distPhase = ''
|
distPhase = ''
|
||||||
mkdir -p $out/tarballs
|
mkdir -p $out/tarballs
|
||||||
mkdir ../$releaseName
|
XZ_OPT="-T0" tar \
|
||||||
cp -prd . ../$releaseName
|
--create \
|
||||||
(cd .. && tar cfa $out/tarballs/$releaseName.tar.xz $releaseName) || false
|
--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 = [ ];
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
@ -18,7 +18,7 @@ in
|
|||||||
{
|
{
|
||||||
|
|
||||||
tarball = import ./make-tarball.nix {
|
tarball = import ./make-tarball.nix {
|
||||||
inherit nixpkgs supportedSystems;
|
inherit nixpkgs;
|
||||||
officialRelease = false;
|
officialRelease = false;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -78,7 +78,7 @@ let
|
|||||||
] (arch: elem "${arch}-darwin" supportedSystems);
|
] (arch: elem "${arch}-darwin" supportedSystems);
|
||||||
|
|
||||||
nonPackageJobs =
|
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; };
|
release-checks = import ./nixpkgs-basic-release-checks.nix { inherit pkgs nixpkgs supportedSystems; };
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user