diff --git a/pkgs/applications/science/logic/symbiyosys/default.nix b/pkgs/applications/science/logic/symbiyosys/default.nix index d6ff7a8b4a73..6b41a44a3583 100644 --- a/pkgs/applications/science/logic/symbiyosys/default.nix +++ b/pkgs/applications/science/logic/symbiyosys/default.nix @@ -1,4 +1,7 @@ -{ stdenv, fetchFromGitHub, yosys, bash, python3, yices }: +{ stdenv, fetchFromGitHub +, bash, python3, yosys +, yices, boolector, aiger, abc-verifier +}: stdenv.mkDerivation { pname = "symbiyosys"; @@ -11,9 +14,24 @@ stdenv.mkDerivation { sha256 = "1pwbirszc80r288x81nx032snniqgmc80i09bbha2i3zd0c3pj5h"; }; - buildInputs = [ python3 yosys ]; + buildInputs = [ python3 ]; + patchPhase = '' + patchShebangs . - propagatedBuildInputs = [ yices ]; + # Fix up Yosys imports + substituteInPlace sbysrc/sby.py \ + --replace "##yosys-sys-path##" \ + "sys.path += [p + \"/share/yosys/python3/\" for p in [\"$out\", \"${yosys}\"]]" + + # Fix various executable references + substituteInPlace sbysrc/sby_core.py \ + --replace '"/usr/bin/env", "bash"' '"${bash}/bin/bash"' \ + --replace ': "btormc"' ': "${boolector}/bin/btormc"' \ + --replace ': "yosys"' ': "${yosys}/bin/yosys"' \ + --replace ': "yosys-smtbmc"' ': "${yosys}/bin/yosys-smtbmc"' \ + --replace ': "yosys-abc"' ': "${abc-verifier}/bin/abc"' \ + --replace ': "aigbmc"' ': "${aiger}/bin/aigbmc"' \ + ''; buildPhase = "true"; installPhase = '' @@ -21,19 +39,13 @@ stdenv.mkDerivation { cp sbysrc/sby_*.py $out/share/yosys/python3/ cp sbysrc/sby.py $out/bin/sby - chmod +x $out/bin/sby - # Fix up shebang and Yosys imports - patchShebangs $out/bin/sby - substituteInPlace $out/bin/sby \ - --replace "##yosys-sys-path##" \ - "sys.path += [p + \"/share/yosys/python3/\" for p in [\"$out\", \"${yosys}\"]]" - substituteInPlace $out/share/yosys/python3/sby_core.py \ - --replace '"/usr/bin/env", "bash"' '"${bash}/bin/bash"' + chmod +x $out/bin/sby ''; + meta = { description = "Tooling for Yosys-based verification flows"; - homepage = https://symbiyosys.readthedocs.io/; + homepage = "https://symbiyosys.readthedocs.io/"; license = stdenv.lib.licenses.isc; maintainers = with stdenv.lib.maintainers; [ thoughtpolice emily ]; platforms = stdenv.lib.platforms.all;