diff --git a/pkgs/applications/science/electronics/verilog/default.nix b/pkgs/applications/science/electronics/verilog/default.nix index 082d44ddc6e0..df1ce7b7235f 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"; @@ -15,11 +25,6 @@ stdenv.mkDerivation rec { enableParallelBuilding = true; - prePatch = '' - substituteInPlace configure.in \ - --replace "AC_CHECK_LIB(termcap, tputs)" "AC_CHECK_LIB(termcap, tputs)" - ''; - preConfigure = '' chmod +x $PWD/autoconf.sh $PWD/autoconf.sh @@ -29,11 +34,32 @@ 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"; - repositories.git = "https://github.com/steveicarus/iverilog.git"; homepage = "http://iverilog.icarus.com/"; - license = licenses.lgpl21; + license = with licenses; [ gpl2Plus lgpl21Plus] ; maintainers = with maintainers; [ winden ]; platforms = platforms.all; };