nixpkgs mirror (for testing) github.com/NixOS/nixpkgs
nix
at python-updates 93 lines 2.3 kB view raw
1{ 2 callPackage, 3 fetchgit, 4 installShellFiles, 5 lib, 6 readline, 7 runCommand, 8 stdenv, 9 termcap, 10 writeScript, 11}: 12 13stdenv.mkDerivation (finalAttrs: { 14 pname = "gnucap"; 15 version = "20240220"; 16 17 src = fetchgit { 18 url = "https://https.git.savannah.gnu.org/git/gnucap.git"; 19 tag = finalAttrs.version; 20 hash = "sha256-aZMiNKwI6eQZAxlF/+GoJhKczohgGwZ0/Wgpv3+AhYY="; 21 }; 22 23 nativeBuildInputs = [ 24 installShellFiles 25 ]; 26 27 buildInputs = [ 28 readline 29 termcap 30 ]; 31 32 doCheck = true; 33 34 postInstall = '' 35 installManPage man/* 36 ''; 37 38 passthru = { 39 tests = { 40 verilog = runCommand "gnucap-verilog-test" { } '' 41 echo "attach mgsim" | ${ 42 finalAttrs.finalPackage.withPlugins (p: [ p.verilog ]) 43 }/bin/gnucap -a msgsim > $out 44 cat $out | grep "verilog: already installed" 45 ''; 46 }; 47 48 plugins = callPackage ./plugins.nix { }; 49 withPlugins = 50 p: 51 let 52 gnucap = finalAttrs.finalPackage; 53 selectedPlugins = p gnucap.plugins; 54 wrapper = writeScript "gnucap" '' 55 export GNUCAP_PLUGPATH=${gnucap}/lib/gnucap 56 for plugin in ${builtins.concatStringsSep " " selectedPlugins}; do 57 export GNUCAP_PLUGPATH=$plugin/lib/gnucap:$GNUCAP_PLUGPATH 58 done 59 ${lib.getExe gnucap} 60 ''; 61 in 62 stdenv.mkDerivation { 63 pname = "${finalAttrs.pname}-with-plugins"; 64 inherit (finalAttrs) version; 65 66 propagatedBuildInputs = selectedPlugins; 67 68 dontUnpack = true; 69 70 installPhase = '' 71 mkdir -p $out/bin 72 cp ${wrapper} $out/bin/gnucap 73 ''; 74 75 inherit (finalAttrs) meta; 76 }; 77 }; 78 79 meta = { 80 description = "Gnu Circuit Analysis Package"; 81 longDescription = '' 82 Gnucap is a modern general purpose circuit simulator with several advantages over Spice derivatives. 83 It performs nonlinear dc and transient analyses, fourier analysis, and ac analysis. 84 ''; 85 homepage = "http://www.gnucap.org/"; 86 changelog = "https://gitweb.git.savannah.gnu.org/gitweb/?p=gnucap.git;a=blob;f=NEWS"; 87 license = lib.licenses.gpl3Only; 88 platforms = lib.platforms.all; 89 broken = stdenv.hostPlatform.isDarwin; # Relies on LD_LIBRARY_PATH 90 maintainers = [ lib.maintainers.raboof ]; 91 mainProgram = "gnucap"; 92 }; 93})