diff --git a/pkgs/applications/science/electronics/verilog/default.nix b/pkgs/applications/science/electronics/verilog/default.nix index 37f7ca70a46..df1ce7b7235 100644 --- a/pkgs/applications/science/electronics/verilog/default.nix +++ b/pkgs/applications/science/electronics/verilog/default.nix @@ -1,7 +1,17 @@ { stdenv, fetchFromGitHub, autoconf, gperf, flex, bison, readline, ncurses , bzip2, zlib +# Test inputs +, perl }: +let + iverilog-test = fetchFromGitHub { + owner = "steveicarus"; + repo = "ivtest"; + rev = "6882cb8ec08926c4e356c6092f0c5f8c23328d5c"; + sha256 = "04sj5nqzwls1y760kgnd9c2whkcrr8kvj9lisd5rvk0w580kjb2x"; + }; +in stdenv.mkDerivation rec { pname = "iverilog"; version = "unstable-2020-08-24"; @@ -24,6 +34,28 @@ stdenv.mkDerivation rec { buildInputs = [ readline ncurses bzip2 zlib ]; + # tests from .travis.yml + doCheck = true; # runs ``make check`` + # most tests pass, but some that rely on exact text of floating-point numbers fail on aarch64. + doInstallCheck = !stdenv.isAarch64; + installCheckInputs = [ perl ]; + + installCheckPhase = '' + # copy tests to allow writing results + export TESTDIR=$(mktemp -d) + cp -r ${iverilog-test}/* $TESTDIR + + pushd $TESTDIR + + # Run & check tests + PATH=$out/bin:$PATH perl vvp_reg.pl + # Check the tests, will error if unexpected tests fail. Some failures MIGHT be normal. + diff regression_report-devel.txt regression_report.txt + PATH=$out/bin:$PATH perl vpi_reg.pl + + popd + ''; + meta = with stdenv.lib; { description = "Icarus Verilog compiler"; homepage = "http://iverilog.icarus.com/";