aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/pkgs/applications/science/logic/key/default.nix
diff options
context:
space:
mode:
Diffstat (limited to 'infra/libkookie/nixpkgs/pkgs/applications/science/logic/key/default.nix')
-rw-r--r--infra/libkookie/nixpkgs/pkgs/applications/science/logic/key/default.nix74
1 files changed, 74 insertions, 0 deletions
diff --git a/infra/libkookie/nixpkgs/pkgs/applications/science/logic/key/default.nix b/infra/libkookie/nixpkgs/pkgs/applications/science/logic/key/default.nix
new file mode 100644
index 000000000000..b08c4d84d1fc
--- /dev/null
+++ b/infra/libkookie/nixpkgs/pkgs/applications/science/logic/key/default.nix
@@ -0,0 +1,74 @@
+{ stdenv
+, fetchurl
+, unzip
+, jdk
+, ant
+, jre
+, makeWrapper
+, runCommand
+, key
+}:
+
+# get this from the download URL when changing version
+let gitRevision = "7d3deab0763c88edee4f7a08e604661e0dbdd450";
+
+in stdenv.mkDerivation rec {
+ pname = "key";
+ version = "2.6.3";
+
+ src = fetchurl {
+ url = "https://formal.iti.kit.edu/key/releases/${version}/key-src-${version}_${gitRevision}.zip";
+ sha256 = "1dr5jmrqs0iy76wdsfiv5hx929i24yzm1xypzqqvx7afc7apyawy";
+ };
+
+ sourceRoot = "key";
+
+ nativeBuildInputs = [
+ unzip
+ jdk
+ ant
+ makeWrapper
+ ];
+
+ buildPhase = ''
+ ant -buildfile scripts/build.xml \
+ -Dgit.revision=${gitRevision} \
+ compileAll deployAll
+ '';
+
+ postCheck = ''
+ ant -buildfile scripts/build.xml \
+ -Dgit.revision=${gitRevision} \
+ compileAllTests runAllTests test-deploy-all
+ '';
+
+ installPhase = ''
+ mkdir -p $out/share/java
+ # Wrong version in the code. On next version change 2.5 to ${version}:
+ unzip deployment/key-2.5_${gitRevision}.zip -d $out/share/java
+ mkdir -p $out/bin
+ makeWrapper ${jre}/bin/java $out/bin/KeY \
+ --add-flags "-cp $out/share/java/KeY.jar de.uka.ilkd.key.core.Main"
+ '';
+
+ passthru.tests.check-version = runCommand "key-help" {} ''
+ ${key}/bin/KeY --help | grep 2.5 # Wrong version in the code. On next version change to ${version}
+ touch $out
+ '';
+
+ meta = with stdenv.lib; {
+ description = "Java formal verification tool";
+ homepage = "https://www.key-project.org"; # also https://formal.iti.kit.edu/key/
+ longDescription = ''
+ The KeY System is a formal software development tool that aims to
+ integrate design, implementation, formal specification, and formal
+ verification of object-oriented software as seamlessly as possible.
+ At the core of the system is a novel theorem prover for the first-order
+ Dynamic Logic for Java with a user-friendly graphical interface.
+ '';
+ license = licenses.gpl2;
+ maintainers = with maintainers; [ fgaz ];
+ platforms = platforms.all;
+ };
+}
+