xcursor-pro: init at 2.0.2 (#335188)
[NixPkgs.git] / pkgs / by-name / pr / protege / package.nix
blob4ef2318e150d5554eadcbdc24935960df1ba075e
2   lib,
3   fetchFromGitHub,
4   copyDesktopItems,
5   iconConvTools,
6   makeDesktopItem,
7   makeWrapper,
8   jdk11,
9   maven,
12 maven.buildMavenPackage rec {
13   pname = "protege";
14   version = "5.6.4";
16   src = fetchFromGitHub {
17     owner = "protegeproject";
18     repo = "protege";
19     rev = version;
20     hash = "sha256-Q3MHa7nCeF31n7JPltcemFBc/sJwGA9Ev0ymjQhY/U0=";
21   };
23   mvnJdk = jdk11;
24   mvnHash = "sha256-kemP2gDv1CYuaoK0fwzBxdLTusarPasf2jCDQj/HPYE=";
26   patches = [
27     # Pin built-in Maven plugins to avoid checksum variations on Maven updates
28     ./enforce-plugin-versions.patch
29     # Avoid building platform-dependent builds which embed their own JREs
30     ./platform-independent-only.patch
31   ];
33   nativeBuildInputs = [
34     copyDesktopItems
35     iconConvTools
36     jdk11
37     makeWrapper
38   ];
40   installPhase = ''
41     runHook preInstall
43     mkdir -p $out/bin $out/share/protege
45     # Copy the application directory whole into the output, as it is used by the
46     # launcher script as a reference point to look for default configuration
47     mv protege-desktop/target/protege-${version}-platform-independent/Protege-${version} $out/Protege
49     # Place a wrapper for the launcher script into a default /bin location
50     makeWrapper $out/Protege/run.sh $out/bin/protege \
51       --set JAVA_HOME ${jdk11.home}
53     # Link all jars from within the standard /share/protege directory
54     ln -s -t $out/share/protege $out/Protege/bundles/*
56     # Generate and copy icons to where they can be found
57     icoFileToHiColorTheme $out/Protege/app/Protege.ico protege $out
59     runHook postInstall
60   '';
62   desktopItems = [
63     (makeDesktopItem {
64       name = pname;
65       desktopName = "Protege Desktop";
66       genericName = "Ontology Editor";
67       icon = "protege";
68       comment = meta.description;
69       categories = [ "Development" ];
70       exec = "protege";
71     })
72   ];
74   meta = {
75     homepage = "https://protege.stanford.edu/";
76     downloadPage = "https://protege.stanford.edu/software.php#desktop-protege";
77     description = "A free and open-source OWL 2 ontology editor";
78     longDescription = ''
79       Protégé Desktop is a feature rich ontology editing environment with full
80       support for the OWL 2 Web Ontology Language, and direct in-memory
81       connections to description logic reasoners.
82     '';
83     maintainers = with lib.maintainers; [ nessdoor ];
84     license = with lib.licenses; [ bsd2 ];
85     # TODO Protege is able to run on Darwin as well, but I (@nessdoor) had no
86     #      way of testing it nor any experience in packaging Darwin apps, so I
87     #      will leave the task to someone who has the right tools and knowledge.
88     platforms = lib.platforms.unix;
89     mainProgram = "protege";
90     sourceProvenance = with lib.sourceTypes; [
91       fromSource
92       binaryBytecode
93     ];
94   };