evcc: 0.131.4 -> 0.131.5
[NixPkgs.git] / pkgs / by-name / fi / firrtl / package.nix
blob3f005243d60740dfcf5b7e98b7ad7c7562cbfb18
1 { lib, stdenv, jre, setJavaClassPath, coursier, makeWrapper }:
3 stdenv.mkDerivation rec {
4   pname = "firrtl";
5   version = "1.5.3";
6   scalaVersion = "2.13"; # pin, for determinism
8   deps = stdenv.mkDerivation {
9     pname = "${pname}-deps";
10     inherit version;
11     nativeBuildInputs = [ coursier ];
12     buildCommand = ''
13       export COURSIER_CACHE=$(pwd)
14       cs fetch edu.berkeley.cs:${pname}_${scalaVersion}:${version} > deps
15       mkdir -p $out/share/java
16       cp $(< deps) $out/share/java
17     '';
18     outputHashMode = "recursive";
19     outputHash = "sha256-xy3zdJZk6Q2HbEn5tRQ9Z0AjyXEteXepoWDaATjiUUw=";
20   };
22   nativeBuildInputs = [ makeWrapper setJavaClassPath ];
23   buildInputs = [ deps ];
25   dontUnpack = true;
27   installPhase = ''
28     runHook preInstall
30     makeWrapper ${jre}/bin/java $out/bin/${pname} \
31       --add-flags "-cp $CLASSPATH firrtl.stage.FirrtlMain"
33     runHook postInstall
34   '';
36   doInstallCheck = true;
37   installCheckPhase = ''
38     $out/bin/firrtl --firrtl-source "${''
39         circuit test:
40           module test:
41             input a: UInt<8>
42             input b: UInt<8>
43             output o: UInt
44             o <= add(a, not(b))
45       ''}" -o test.v
46     cat test.v
47     grep -qFe "module test" -e "endmodule" test.v
48   '';
50   meta = with lib; {
51     description = "Flexible Intermediate Representation for RTL";
52     mainProgram = "firrtl";
53     longDescription = ''
54       Firrtl is an intermediate representation (IR) for digital circuits
55       designed as a platform for writing circuit-level transformations.
56     '';
57     homepage = "https://www.chisel-lang.org/firrtl/";
58     license = licenses.asl20;
59     maintainers =  [ ];
60   };