These have a hug log that will hit “log limit exceeded” on Hydra. This commit skips the biggest offenders - qaDrv and qaDrvAggresive, giving smaller logs. https://hydra.nixos.org/build/94487387
		
			
				
	
	
		
			80 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			2.9 KiB
		
	
	
	
		
			Nix
		
	
	
	
	
	
{ nixpkgs, pkgs }:
 | 
						|
 | 
						|
with pkgs;
 | 
						|
 | 
						|
runCommand "nixpkgs-metrics"
 | 
						|
  { nativeBuildInputs = with pkgs.lib; map getBin [ nix time jq ];
 | 
						|
    requiredSystemFeatures = [ "benchmark" ];
 | 
						|
  }
 | 
						|
  ''
 | 
						|
    export NIX_DB_DIR=$TMPDIR
 | 
						|
    export NIX_STATE_DIR=$TMPDIR
 | 
						|
    nix-store --init
 | 
						|
 | 
						|
    mkdir -p $out/nix-support
 | 
						|
    touch $out/nix-support/hydra-build-products
 | 
						|
 | 
						|
    run() {
 | 
						|
      local name="$1"
 | 
						|
      shift
 | 
						|
 | 
						|
      echo "running $@"
 | 
						|
 | 
						|
      case "$name" in
 | 
						|
        # Redirect stdout to /dev/null to avoid hitting "Output Limit
 | 
						|
        # Exceeded" on Hydra.
 | 
						|
        nix-env.qaDrv|nix-env.qaDrvAggressive)
 | 
						|
          NIX_SHOW_STATS=1 time -o stats-time "$@" 2>stats-nix >/dev/null ;;
 | 
						|
        *)
 | 
						|
          NIX_SHOW_STATS=1 time -o stats-time "$@" 2>stats-nix ;;
 | 
						|
      esac
 | 
						|
 | 
						|
      sed '/^warning:/d' -i stats-nix
 | 
						|
 | 
						|
      cat stats-nix; echo; cat stats-time; echo
 | 
						|
 | 
						|
      x=$(jq '.cpuTime' < stats-nix)
 | 
						|
      [[ -n $x ]] || exit 1
 | 
						|
      echo "$name.time $x s" >> $out/nix-support/hydra-metrics
 | 
						|
 | 
						|
      x=$(sed -e 's/.* \([0-9]\+\)maxresident.*/\1/ ; t ; d' < stats-time)
 | 
						|
      [[ -n $x ]] || exit 1
 | 
						|
      echo "$name.maxresident $x KiB" >> $out/nix-support/hydra-metrics
 | 
						|
 | 
						|
      # nix-2.2 also outputs .symbols.bytes but that wasn't summed originally
 | 
						|
      # https://github.com/NixOS/nix/pull/2392/files#diff-8e6ba8c21672fc1a5f6f606e1e101c74L1762
 | 
						|
      x=$(jq '[.envs,.list,.values,.sets] | map(.bytes) | add' < stats-nix)
 | 
						|
      [[ -n $x ]] || exit 1
 | 
						|
      echo "$name.allocations $x B" >> $out/nix-support/hydra-metrics
 | 
						|
 | 
						|
      x=$(jq '.values.number' < stats-nix)
 | 
						|
      [[ -n $x ]] || exit 1
 | 
						|
      echo "$name.values $x" >> $out/nix-support/hydra-metrics
 | 
						|
    }
 | 
						|
 | 
						|
    run nixos.smallContainer nix-instantiate --dry-run ${nixpkgs}/nixos/release.nix \
 | 
						|
      -A closures.smallContainer.x86_64-linux --show-trace
 | 
						|
    run nixos.kde nix-instantiate --dry-run ${nixpkgs}/nixos/release.nix \
 | 
						|
      -A closures.kde.x86_64-linux --show-trace
 | 
						|
    run nixos.lapp nix-instantiate --dry-run ${nixpkgs}/nixos/release.nix \
 | 
						|
      -A closures.lapp.x86_64-linux --show-trace
 | 
						|
    run nix-env.qa nix-env -f ${nixpkgs} -qa
 | 
						|
    run nix-env.qaDrv nix-env -f ${nixpkgs} -qa --drv-path --meta --xml
 | 
						|
 | 
						|
    # It's slightly unclear which of the set to track: qaCount, qaCountDrv, qaCountBroken.
 | 
						|
    num=$(nix-env -f ${nixpkgs} -qa | wc -l)
 | 
						|
    echo "nix-env.qaCount $num" >> $out/nix-support/hydra-metrics
 | 
						|
    qaCountDrv=$(nix-env -f ${nixpkgs} -qa --drv-path | wc -l)
 | 
						|
    num=$((num - $qaCountDrv))
 | 
						|
    echo "nix-env.qaCountBroken $num" >> $out/nix-support/hydra-metrics
 | 
						|
 | 
						|
    # TODO: this has been ignored for some time
 | 
						|
    # GC Warning: Bad initial heap size 128k - ignoring it.
 | 
						|
    #export GC_INITIAL_HEAP_SIZE=128k
 | 
						|
    run nix-env.qaAggressive nix-env -f ${nixpkgs} -qa
 | 
						|
    run nix-env.qaDrvAggressive nix-env -f ${nixpkgs} -qa --drv-path --meta --xml
 | 
						|
 | 
						|
    lines=$(find ${nixpkgs} -name "*.nix" -type f | xargs cat | wc -l)
 | 
						|
    echo "loc $lines" >> $out/nix-support/hydra-metrics
 | 
						|
  ''
 |