nixos-riscv/pkgs/spec-cpu/tools.nix

107 lines
2.5 KiB
Nix
Raw Normal View History

2024-10-07 09:23:28 +02:00
{
stdenv
, libarchive
, xz
, gnutar
, gfortran
, coreutils
, requireFile
, autoPatchelfHook
, libxcrypt-legacy
, glibc
, lib
}:
stdenv.mkDerivation rec {
pname = "spec-cpu-tools";
version = "1.1.7";
src = requireFile {
name = "cpu2017-1.1.7.iso";
sha256 = "02630819h64dyy57wkj33fhwwqgbw6mqc5awh1zm48pkvvl0l600";
message = ''
Missing SPEC CPU 2017 1.1.7.
Add it to the store with:
$ nix-prefetch-url file:/path/to/cpu2017-1.1.7.iso
/nix/store/mk4hr8xwd62akp7iw5khq638ssba8qz0-cpu2017-1.1.7.iso
Notice that the name must match exactly "cpu2017-1.1.7.iso".
'';
};
unpackPhase = ''
set -x
mkdir iso
bsdtar -C iso -xf $src
chmod +w -R iso
#for f in iso/install_archives/benchball/*; do
# bsdtar -xf $f
#done
#mkdir src
#bsdtar -C src -xf iso/install_archives/benchball/cpu2017-1.1.7.base.tar.xz
#bsdtar -C src -xf iso/install_archives/benchball/519.lbm_r-1.000503.tar.xz
sourceRoot="$PWD/iso"
set +x
'';
# We need a working specxz binary
configurePhase = ''
patchShebangs install.sh
set -x
# Replace "spec*" tools by symlinks to working binaries
pushd tools/bin/linux-x86_64
ln -fs ${xz}/bin/xz specxz
ln -fs ${gnutar}/bin/tar spectar
patchelf \
--set-interpreter "$(cat $NIX_CC/nix-support/dynamic-linker)" \
specsha512sum
ls -l spec*
./specxz -h
./spectar --help
ldd ./specsha512sum
./specsha512sum --help
popd
# sha512sum requires -e, not provided by coreutils
export SPEC="$sourceRoot"
# Don't run the tests
sed -i 's/^.*shrc will.*$/exit 0/g' install.sh
set +x
'';
installPhase = ''
bash -x install.sh -f -d $out -u linux-x86_64
'';
preFixup = ''
# Fix temporary directory creation
sed -i '/^sub get_tmp_directory/a\ return tempdir(CLEANUP => 1);' \
$out/bin/common/util_common.pl
sed -i '/my $dir = jp($top, $config->resultdir, $subdir);/c\ my $dir = ::get_tmp_directory($config, 1);' \
$out/bin/harness/log.pl
'';
# Missing libdb-4.7.so
autoPatchelfIgnoreMissingDeps = true;
nativeBuildInputs = [ libxcrypt-legacy libarchive autoPatchelfHook ];
#buildInputs = [ libxcrypt-legacy ];
enableParallelBuilding = false;
hardeningDisable = [ "all" ];
dontStrip = true;
meta.broken = (stdenv.buildPlatform.config != "x86_64-unknown-linux-gnu") ||
(stdenv.hostPlatform.config != "x86_64-unknown-linux-gnu") ||
(stdenv.targetPlatform.config != "riscv64-unknown-linux-gnu");
}