summary refs log tree commit diff
diff options
context:
space:
mode:
authorSilvan Mosberger <infinisil@icloud.com>2017-06-30 00:03:21 +0200
committerSilvan Mosberger <infinisil@icloud.com>2017-07-16 23:38:05 +0200
commit75fde4130d4caa08561be31cb8e6058fcf71fb07 (patch)
tree8a7e9aed5b6e5a045f2ec65f5f1e19ee61d7b2b0
parent20d31d7f49513121dfb2484cccb4b246f050e682 (diff)
downloadnixpkgs-75fde4130d4caa08561be31cb8e6058fcf71fb07.tar
nixpkgs-75fde4130d4caa08561be31cb8e6058fcf71fb07.tar.gz
nixpkgs-75fde4130d4caa08561be31cb8e6058fcf71fb07.tar.bz2
nixpkgs-75fde4130d4caa08561be31cb8e6058fcf71fb07.tar.lz
nixpkgs-75fde4130d4caa08561be31cb8e6058fcf71fb07.tar.xz
nixpkgs-75fde4130d4caa08561be31cb8e6058fcf71fb07.tar.zst
nixpkgs-75fde4130d4caa08561be31cb8e6058fcf71fb07.zip
scyther: init at 1.1.3
-rw-r--r--pkgs/applications/science/programming/scyther/default.nix82
-rw-r--r--pkgs/top-level/all-packages.nix2
2 files changed, 84 insertions, 0 deletions
diff --git a/pkgs/applications/science/programming/scyther/default.nix b/pkgs/applications/science/programming/scyther/default.nix
new file mode 100644
index 00000000000..6e009067e4e
--- /dev/null
+++ b/pkgs/applications/science/programming/scyther/default.nix
@@ -0,0 +1,82 @@
+{ stdenv, lib, fetchFromGitHub, glibc, flex, bison, python27Packages, graphviz, cmake
+, includeGUI ? true
+, includeProtocols ? true
+}:
+let
+  version = "1.1.3";
+in
+stdenv.mkDerivation {
+  name = "scyther-${version}";
+  src = fetchFromGitHub {
+    rev = "v${version}";
+    sha256 = "0rb4ha5bnjxnwj4f3hciq7kyj96fhw14hqbwl5kr9cdw8q62mx0h";
+    owner = "cascremers";
+    repo = "scyther";
+  };
+
+  buildInputs = [
+    cmake
+    glibc.static
+    flex
+    bison
+  ] ++ lib.optional includeGUI [
+    python27Packages.wrapPython
+  ];
+
+  patchPhase = ''
+    # Since we're not in a git dir, the normal command this project uses to create this file wouldn't work
+    printf "%s\n" "#define TAGVERSION \"${version}\"" > src/version.h
+  '' + lib.optionalString includeGUI ''
+    file=gui/Scyther/Scyther.py
+    
+    # By default the scyther binary is looked for in the directory of the python script ($out/gui), but we want to have it look where our cli package is
+    substituteInPlace $file --replace "return getMyDir()" "return \"$out/bin\""
+
+    # Removes the Shebang from the file, as this would be wrapped wrongly
+    sed -i -e "1d" $file
+  '';
+
+  configurePhase = ''
+    (cd src && cmakeConfigurePhase)
+  '';
+
+  propagatedBuildInputs = lib.optional includeGUI [
+    python27Packages.wxPython
+    graphviz
+  ];
+  
+  dontUseCmakeBuildDir = true;
+  cmakeFlags = [ "-DCMAKE_C_FLAGS=-std=gnu89" ];
+
+  installPhase = ''
+    mkdir -p "$out/bin"
+    cp src/scyther-linux "$out/bin/scyther-cli"
+  '' + lib.optionalString includeGUI ''
+    mkdir -p "$out/gui"
+    cp -r gui/* "$out/gui"
+    ln -s ../gui/scyther-gui.py "$out/bin/scyther-gui"
+    ln -s ../bin/scyther-cli "$out/bin/scyther-linux"
+  '' + lib.optionalString includeProtocols (if includeGUI then ''
+      ln -s ./gui/Protocols "$out/protocols"
+    '' else ''
+      mkdir -p "$out/protocols"
+      cp -r gui/Protocols/* "$out/protocols"
+    '');
+
+  postFixup = lib.optionalString includeGUI ''
+    wrapPythonProgramsIn "$out/gui" "$out $pythonPath"
+  '';
+
+  doInstallCheck = includeGUI;
+  installCheckPhase = ''
+    "$out/gui/scyther.py" "$src/gui/Protocols/Demo/ns3.spdl"
+  '';
+
+  meta = with lib; {
+    description = "Scyther is a tool for the automatic verification of security protocols.";
+    homepage = https://www.cs.ox.ac.uk/people/cas.cremers/scyther/;
+    license = licenses.gpl2;
+    maintainers = with maintainers; [ infinisil ];
+    platforms = platforms.linux;
+  };
+}
diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix
index 593fb7d3a36..9c52320c83e 100644
--- a/pkgs/top-level/all-packages.nix
+++ b/pkgs/top-level/all-packages.nix
@@ -17852,6 +17852,8 @@ with pkgs;
 
   plm = callPackage ../applications/science/programming/plm { };
 
+  scyther = callPackage_i686 ../applications/science/programming/scyther { };
+
   ### SCIENCE/LOGIC
 
   abc-verifier = callPackage ../applications/science/logic/abc {};