aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/pkgs/development/compilers/yosys/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/development/compilers/yosys/default.nix')
-rw-r--r--infra/libkookie/nixpkgs/pkgs/development/compilers/yosys/default.nix39
1 files changed, 31 insertions, 8 deletions
diff --git a/infra/libkookie/nixpkgs/pkgs/development/compilers/yosys/default.nix b/infra/libkookie/nixpkgs/pkgs/development/compilers/yosys/default.nix
index c3185ca4e0e6..b16d76304e47 100644
--- a/infra/libkookie/nixpkgs/pkgs/development/compilers/yosys/default.nix
+++ b/infra/libkookie/nixpkgs/pkgs/development/compilers/yosys/default.nix
@@ -14,15 +14,32 @@
, zlib
}:
+# NOTE: as of late 2020, yosys has switched to an automation robot that
+# automatically tags their repository Makefile with a new build number every
+# day when changes are committed. please MAKE SURE that the version number in
+# the 'version' field exactly matches the YOSYS_VER field in the Yosys
+# makefile!
+#
+# if a change in yosys isn't yet available under a build number like this (i.e.
+# it was very recently merged, within an hour), wait a few hours for the
+# automation robot to tag the new version, like so:
+#
+# https://github.com/YosysHQ/yosys/commit/71ca9a825309635511b64b3ec40e5e5e9b6ad49b
+#
+# note that while most nix packages for "unstable versions" use a date-based
+# version scheme, synchronizing the nix package version here with the unstable
+# yosys version number helps users report better bugs upstream, and is
+# ultimately less confusing than using dates.
+
stdenv.mkDerivation rec {
pname = "yosys";
- version = "2020.08.22";
+ version = "0.9+3715";
src = fetchFromGitHub {
owner = "YosysHQ";
repo = "yosys";
- rev = "12132b6850747aec99715fdfa3184fe3ebefa015";
- sha256 = "1v6x1y2f3r8vi7pnkgx374rrv02xgmg9yg23f61n7d1v2rd6y5cc";
+ rev = "d021f4b4003bb7a374038134c65edd3f67473a92";
+ sha256 = "0dgdpigqg8mwkry4233p6z6myjnrb1rq32873yhdfwvwqq230x51";
};
enableParallelBuilding = true;
@@ -55,11 +72,17 @@ stdenv.mkDerivation rec {
(cd misc && ${protobuf}/bin/protoc --cpp_out ../backends/protobuf/ ./yosys.proto)
if ! grep -q "ABCREV = ${shortAbcRev}" Makefile; then
- echo "yosys isn't compatible with the provided abc (${shortAbcRev}), failing."
+ echo "ERROR: yosys isn't compatible with the provided abc (${shortAbcRev}), failing."
+ exit 1
+ fi
+
+ if ! grep -q "YOSYS_VER := ${version}" Makefile; then
+ echo "ERROR: yosys version in Makefile isn't equivalent to version of the nix package (${version}), failing."
exit 1
fi
'';
+ checkTarget = "test";
doCheck = true;
checkInputs = [ verilog ];
@@ -68,10 +91,10 @@ stdenv.mkDerivation rec {
# they just assume that 'yosys-abc' is available -- but it's not installed
# when using ABCEXTERNAL
#
- # add a symlink to fake things so that both variants work the same way.
- postInstall = ''
- ln -sfv ${abc-verifier}/bin/abc $out/bin/yosys-abc
- '';
+ # add a symlink to fake things so that both variants work the same way. this
+ # is also needed at build time for the test suite.
+ postBuild = "ln -sfv ${abc-verifier}/bin/abc ./yosys-abc";
+ postInstall = "ln -sfv ${abc-verifier}/bin/abc $out/bin/yosys-abc";
meta = with stdenv.lib; {
description = "Open RTL synthesis framework and tools";