diff --git a/pkgs/development/web/protege-distribution/default.nix b/pkgs/development/web/protege-distribution/default.nix index 49d28cb17ee8..3b885e651510 100644 --- a/pkgs/development/web/protege-distribution/default.nix +++ b/pkgs/development/web/protege-distribution/default.nix @@ -1,4 +1,8 @@ -{ lib, stdenv, fetchurl, unzip, jre8, copyDesktopItems, makeDesktopItem }: +{ lib, stdenv, fetchurl, unzip, jre8 +, copyDesktopItems +, makeDesktopItem +, iconConvTools +}: stdenv.mkDerivation rec { pname = "protege-distribution"; @@ -9,23 +13,21 @@ stdenv.mkDerivation rec { sha256 = "092x22wyisdnhccx817mqq15sxqdfc7iz4whr4mbvzrd9di6ipjq"; }; - nativeBuildInputs = [ unzip copyDesktopItems ]; + nativeBuildInputs = [ unzip copyDesktopItems iconConvTools ]; + + patches = [ + # Replace logic for searching the install directory with a static cd into $out + ./static-path.patch + # Disable console logging, maintaining only file-based logging + ./disable-console-log.patch + ]; postPatch = '' - # Delete all those commands meant to change directory to the source directory - sed -i -e '3,9d' run.sh - - # Change directory to where the application is stored to avoid heavy patching - # of searchpaths - sed -i -e "2a\ - cd $out/protege" run.sh - - # Set the correct Java executable (Protege is a JRE 8 application) + # Resolve @out@ (introduced by "static-path.patch") to $out, and set the + # correct Java executable (Protege is a JRE 8 application) substituteInPlace run.sh \ - --replace "java -X" "exec ${jre8.outPath}/bin/java -X" \ - - # Silence console logs, since these are not shown in graphical environments - sed -i -e '4,8d;21d' conf/logback.xml + --subst-var-by out $out \ + --replace "java -X" "exec ${jre8.outPath}/bin/java -X" ''; dontConfigure = true; @@ -42,8 +44,8 @@ stdenv.mkDerivation rec { # Move launch script into /bin, giving it a recognizable name install -D run.sh $out/bin/run-protege - # Copy icon to where it can be found - install -D app/Protege.ico $out/share/icons/hicolor/128x128/apps/protege.ico + # Generate and copy icons to where they can be found + icoFileToHiColorTheme app/Protege.ico protege $out # Move everything else under protege/ mkdir $out/protege @@ -56,8 +58,9 @@ stdenv.mkDerivation rec { (makeDesktopItem { name = "Protege"; desktopName = "Protege Desktop"; - icon = "protege.ico"; + icon = "protege"; comment = "OWL2 ontology editor"; + categories = "Development"; exec = "run-protege"; }) ]; diff --git a/pkgs/development/web/protege-distribution/disable-console-log.patch b/pkgs/development/web/protege-distribution/disable-console-log.patch new file mode 100644 index 000000000000..edd6277ffa3a --- /dev/null +++ b/pkgs/development/web/protege-distribution/disable-console-log.patch @@ -0,0 +1,28 @@ +--- a/conf/logback.xml 2021-06-25 00:49:10.446416341 +0900 ++++ b/conf/logback.xml 2021-06-25 00:50:32.889120465 +0900 +@@ -1,13 +1,6 @@ + + + +- +- +- %highlight(%msg) %n +- +- +- +- + + ${user.home}/.Protege/logs/protege.log + true +@@ -18,9 +11,8 @@ + + + +- + + + + +- +\ No newline at end of file ++ diff --git a/pkgs/development/web/protege-distribution/static-path.patch b/pkgs/development/web/protege-distribution/static-path.patch new file mode 100644 index 000000000000..66762f70ca9f --- /dev/null +++ b/pkgs/development/web/protege-distribution/static-path.patch @@ -0,0 +1,16 @@ +--- a/run.sh 2021-06-24 22:30:20.764897745 +0900 ++++ b/run.sh 2021-06-24 22:29:47.211210142 +0900 +@@ -1,12 +1,6 @@ + #!/usr/bin/env bash + +-SOURCE="${BASH_SOURCE[0]}" +-while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink +- DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" +- SOURCE="$(readlink "$SOURCE")" +- [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located +-done +-cd "$( cd -P "$( dirname "$SOURCE" )" && pwd )" ++cd @out@/protege + + java -Xmx500M -Xms200M \ + -Xss16M \