95 lines
2.4 KiB
Nix
95 lines
2.4 KiB
Nix
{ lib, stdenv
|
|
, fetchFromGitHub
|
|
, jdk
|
|
, gradle_8
|
|
, jre
|
|
, makeWrapper
|
|
, makeDesktopItem
|
|
, copyDesktopItems
|
|
, testers
|
|
, git
|
|
, key
|
|
}:
|
|
|
|
let
|
|
gradle = gradle_8;
|
|
|
|
in stdenv.mkDerivation rec {
|
|
pname = "key";
|
|
version = "2.12.2";
|
|
src = fetchFromGitHub {
|
|
owner = "KeYProject";
|
|
repo = "key";
|
|
rev = "refs/tags/KeY-${version}";
|
|
hash = "sha256-veqaWyWEiTot2cAjvyPG+Ra8/pqS4i6w6iR+qhozIM4=";
|
|
};
|
|
|
|
nativeBuildInputs = [
|
|
jdk
|
|
gradle
|
|
makeWrapper
|
|
copyDesktopItems
|
|
git
|
|
];
|
|
|
|
desktopItems = [
|
|
(makeDesktopItem {
|
|
name = "KeY";
|
|
exec = meta.mainProgram;
|
|
icon = "key";
|
|
comment = meta.description;
|
|
desktopName = "KeY";
|
|
genericName = "KeY";
|
|
categories = [ "Science" ];
|
|
})
|
|
];
|
|
|
|
mitmCache = gradle.fetchDeps {
|
|
inherit pname;
|
|
data = ./deps.json;
|
|
};
|
|
|
|
__darwinAllowLocalNetworking = true;
|
|
|
|
# tests are broken on darwin
|
|
# TODO: on update to 2.12.3+, restore to !stdenv.hostPlatform.isDarwin;
|
|
# (currently some tests are failing)
|
|
doCheck = false;
|
|
|
|
installPhase = ''
|
|
runHook preInstall
|
|
|
|
mkdir -p $out/share/java
|
|
cp key.ui/build/libs/key-*-exe.jar $out/share/java/KeY.jar
|
|
mkdir -p $out/bin
|
|
mkdir -p $out/share/icons/hicolor/256x256/apps
|
|
cp key.ui/src/main/resources/de/uka/ilkd/key/gui/images/key-color-icon-square.png $out/share/icons/hicolor/256x256/apps/key.png
|
|
makeWrapper ${lib.getExe jre} $out/bin/KeY \
|
|
--add-flags "-cp $out/share/java/KeY.jar de.uka.ilkd.key.core.Main"
|
|
|
|
runHook postInstall
|
|
'';
|
|
|
|
passthru.tests.version =
|
|
testers.testVersion {
|
|
package = key;
|
|
command = "KeY --help";
|
|
};
|
|
|
|
meta = {
|
|
description = "Java formal verification tool";
|
|
homepage = "https://www.key-project.org"; # also https://formal.iti.kit.edu/key/
|
|
changelog = "https://keyproject.github.io/key-docs/changelog/";
|
|
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 = lib.licenses.gpl2Only;
|
|
maintainers = with lib.maintainers; [ fgaz fliegendewurst ];
|
|
mainProgram = "KeY";
|
|
platforms = jdk.meta.platforms;
|
|
};
|
|
}
|