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