Unverified Commit 9f029d2d authored by Wolfgang Walther's avatar Wolfgang Walther Committed by GitHub
Browse files

gnucap: fix overriding with overrideAttrs (#417562)

parents ab841a95 b1a2ad32
Loading
Loading
Loading
Loading
+55 −56
Original line number Diff line number Diff line
{
  callPackage,
  fetchFromSavannah,
  gnucap,
  gnucap-full,
  installShellFiles,
  lib,
  readline,
@@ -12,36 +10,20 @@
  writeScript,
}:

let
  version = "20240220";
  meta = with lib; {
    description = "Gnu Circuit Analysis Package";
    longDescription = ''
      Gnucap is a modern general purpose circuit simulator with several advantages over Spice derivatives.
      It performs nonlinear dc and transient analyses, fourier analysis, and ac analysis.
    '';
    homepage = "http://www.gnucap.org/";
    changelog = "https://git.savannah.gnu.org/gitweb/?p=gnucap.git;a=blob;f=NEWS";
    license = licenses.gpl3Only;
    platforms = platforms.all;
    broken = stdenv.hostPlatform.isDarwin; # Relies on LD_LIBRARY_PATH
    maintainers = [ maintainers.raboof ];
    mainProgram = "gnucap";
  };
in
stdenv.mkDerivation {
stdenv.mkDerivation (finalAttrs: {
  pname = "gnucap";
  inherit version;
  version = "20240220";

  src = fetchFromSavannah {
    repo = "gnucap";
    rev = version;
    rev = finalAttrs.version;
    hash = "sha256-aZMiNKwI6eQZAxlF/+GoJhKczohgGwZ0/Wgpv3+AhYY=";
  };

  nativeBuildInputs = [
    installShellFiles
  ];

  buildInputs = [
    readline
    termcap
@@ -53,20 +35,21 @@ stdenv.mkDerivation {
    installManPage man/*
  '';

  passthru.tests = {
  passthru = {
    tests = {
      verilog = runCommand "gnucap-verilog-test" { } ''
      echo "attach mgsim" | ${gnucap-full}/bin/gnucap -a msgsim > $out
        echo "attach mgsim" | ${
          finalAttrs.finalPackage.withPlugins (p: [ p.verilog ])
        }/bin/gnucap -a msgsim > $out
        cat $out | grep "verilog: already installed"
      '';
    };

  inherit meta;
}
// {
    plugins = callPackage ./plugins.nix { };
    withPlugins =
      p:
      let
        gnucap = finalAttrs.finalPackage;
        selectedPlugins = p gnucap.plugins;
        wrapper = writeScript "gnucap" ''
          export GNUCAP_PLUGPATH=${gnucap}/lib/gnucap
@@ -77,8 +60,8 @@ stdenv.mkDerivation {
        '';
      in
      stdenv.mkDerivation {
      pname = "gnucap-with-plugins";
      inherit version;
        pname = "${finalAttrs.pname}-with-plugins";
        inherit (finalAttrs) version;

        propagatedBuildInputs = selectedPlugins;

@@ -89,6 +72,22 @@ stdenv.mkDerivation {
          cp ${wrapper} $out/bin/gnucap
        '';

      inherit meta;
        inherit (finalAttrs) meta;
      };
  };

  meta = {
    description = "Gnu Circuit Analysis Package";
    longDescription = ''
      Gnucap is a modern general purpose circuit simulator with several advantages over Spice derivatives.
      It performs nonlinear dc and transient analyses, fourier analysis, and ac analysis.
    '';
    homepage = "http://www.gnucap.org/";
    changelog = "https://git.savannah.gnu.org/gitweb/?p=gnucap.git;a=blob;f=NEWS";
    license = lib.licenses.gpl3Only;
    platforms = lib.platforms.all;
    broken = stdenv.hostPlatform.isDarwin; # Relies on LD_LIBRARY_PATH
    maintainers = [ lib.maintainers.raboof ];
    mainProgram = "gnucap";
  };
}
})