about summary refs log tree commit diff
diff options
context:
space:
mode:
authoraszlig <aszlig@redmoonstudios.org>2016-01-28 17:37:24 +0100
committeraszlig <aszlig@redmoonstudios.org>2016-01-28 17:37:24 +0100
commit8a4bdf1ddefd1374bdb425003754619244c49074 (patch)
tree120e9adc24556ae325561cba39c900b3a6708566
parent3ffead673bc0a64e7691c86634be0738236a4af3 (diff)
pkgs/axbo: Re-package with open source code
So far I've used the proprietary download and patched it up to work on
NixOS. This now goes through the hurdles of trying to package it by
building it from source, although there are still some precompiled
dependencies used:

  commons-beanutils-1.8.3
  commons-digester3-3.2
  jcommon-1.0.20
  jfreechart-1.0.16
  swingx-all-1.6.4

In order to push this into upstream <nixpkgs> we first need to package
these.

Another issue which I didn't dig into is that the interface now looks
quite ugly. I'm not sure whether it is because of some packaging choices
or because we're now at version 3.x and it's supposed to look like this.

Nevertheless, the application works and it makes more sense to improve
the source package than the patched up binary package.

Signed-off-by: aszlig <aszlig@redmoonstudios.org>
-rw-r--r--pkgs/axbo/default.nix98
-rw-r--r--pkgs/librxtx-java/default.nix4
2 files changed, 37 insertions, 65 deletions
diff --git a/pkgs/axbo/default.nix b/pkgs/axbo/default.nix
index d83e891d..93f8ffad 100644
--- a/pkgs/axbo/default.nix
+++ b/pkgs/axbo/default.nix
@@ -1,77 +1,49 @@
-{ stdenv, fetchurl, oraclejre, librxtx_java, makeFontsConf, dejavu_fonts }:
+{ stdenv, fetchurl, fetchFromGitHub, jdk, jre, ant, makeWrapper
+, commonsLogging, librxtx_java
+}:
 
 stdenv.mkDerivation rec {
   name = "axbo-research-${version}";
-  version = "2.0.18";
+  version = "3.0.12";
 
-  src = fetchurl {
-    url = let
-      urlversion = stdenv.lib.replaceChars ["."] ["_"] version;
-    in "https://www.dropbox.com/s/shy0yqcyivonobi/aXbo_unix_${urlversion}.sh";
-    sha256 = "1zc3bpqfa5pdpl7masigvv98mi5phl04p80fyd2ink33xbmik70z";
+  src = fetchFromGitHub {
+    owner = "jansolo";
+    repo = "aXbo-research";
+    rev = "aXbo-research_${version}";
+    sha256 = "0p2my5bczmwnrs3c0l9wyq3gsc5vydw0nh9n8jkdp9vm77z0kgvd";
   };
 
-  buildInputs = [ oraclejre librxtx_java ];
+  sourceRoot = "${src.name}/aXbo-research";
 
-  unpackCmd = let
-    fontconfigFile = makeFontsConf {
-      fontDirectories = stdenv.lib.singleton dejavu_fonts;
-    };
-  in ''
-    datalen="$(sed -n 's/^.*totalDataLength=\([0-9]\+\).*$/\1/p' "$src")"
-    installer_offset="$(sed -n 's/^ *tail *-c *\([0-9]\+\).*$/\1/p' "$src")"
-
-    installer_dir="$(mktemp -d)"
-    mkdir -p "$installer_dir"
-    tail -c "$installer_offset" "$src" | tar xz -C "$installer_dir"
+  buildInputs = [ jdk ant makeWrapper ];
 
-    cat > "$installer_dir/responses" <<EOF
-    executeLauncherAction$Boolean=false
-    sys.programGroup.linkDir=/dev/null
-    sys.component.73$Boolean=true
-    sys.languageId=en
-    sys.installationDir=$(pwd)/${name}
-    sys.programGroup.enabled$Boolean=false
-    sys.programGroup.allUsers$Boolean=true
-    sys.programGroup.name=aXbo
-    EOF
-
-    cd "$installer_dir"
-    export FONTCONFIG_FILE="${fontconfigFile}"
-    java -client -Dinstall4j.jvmDir="${oraclejre}" \
-                 -Dexe4j.moduleName="$src" \
-                 -Dexe4j.totalDataLength="$datalen" \
-                 -Dinstall4j.cwd="$installer_dir" \
-                 -Djava.ext.dirs="${oraclejre}/lib/ext" \
-                 -Dsun.java2d.noddraw=true \
-                 -classpath i4jruntime.jar:user.jar \
-                 com.install4j.runtime.Launcher launch \
-                 com.install4j.runtime.installer.Installer \
-                 false false "" "" false true false "" true true \
-                 0 0 "" 20 20 Arial 0,0,0 8 500 'version 2.0.18' \
-                 20 40 Arial 0,0,0 8 500 \
-                 -1 -q -varfile "$installer_dir/responses"
-    cd -
-    rm -rf "$installer_dir"
+  buildPhase = ''
+    ant -Dplatforms.JDK_1.7.home="$JAVA_HOME" jar
   '';
 
-  installPhase = ''
-    mkdir -p "$out/libexec/lib" "$out/bin"
-    for jarfile in lib/*; do
-      case "''${jarfile##*/}" in
-        axbo.jar) cp -vt "$out/libexec" "$jarfile";;
-        RXTXcomm.jar) ln -s "${librxtx_java}/lib/java/RXTXcomm.jar" \
-                            "$out/libexec/lib";;
-        *.jar) cp -vt "$out/libexec/lib" "$jarfile";;
-      esac
+  extraJars = [
+    "commons-beanutils-1.8.3"
+    "commons-digester3-3.2"
+    "jcommon-1.0.20"
+    "jfreechart-1.0.16"
+    "swingx-all-1.6.4"
+  ];
+
+  installPhase = with stdenv.lib; let
+    classpath = makeSearchPath "share/java/\\*" [
+      "$out"
+      commonsLogging
+      librxtx_java
+    ];
+  in ''
+    for dep in $extraJars; do
+      install -vD -m 644 "lib/$dep.jar" "$out/share/java/$dep.jar"
     done
+    install -vD -m 644 dist/axbo.jar "$out/share/java/axbo.jar"
 
-    cat > "$out/bin/axbo-research" <<WRAPPER
-    #!${stdenv.shell}
-    ${oraclejre}/bin/java -Djava.library.path="${librxtx_java}/lib" \
-      -classpath "${librxtx_java}/lib/java/RXTXcomm.jar" \
-      -jar "$out/libexec/axbo.jar"
-    WRAPPER
-    chmod +x "$out/bin/axbo-research"
+    mkdir -p "$out/bin"
+    makeWrapper "${jre}/bin/java" "$out/bin/axbo-research" \
+      --add-flags "-Djava.library.path='${librxtx_java}/lib'" \
+      --add-flags "-cp ${classpath} com.dreikraft.axbo.Axbo"
   '';
 }
diff --git a/pkgs/librxtx-java/default.nix b/pkgs/librxtx-java/default.nix
index 861dc43b..14b0a9da 100644
--- a/pkgs/librxtx-java/default.nix
+++ b/pkgs/librxtx-java/default.nix
@@ -19,11 +19,11 @@ stdenv.mkDerivation rec {
   configureFlags = [ "--enable-liblock" ];
 
   makeFlags = [
-    "JHOME=$(out)/lib/java"
+    "JHOME=$(out)/share/java"
     "RXTX_PATH=$(out)/lib"
   ];
 
   preInstall = ''
-    mkdir -p "$out/lib/java"
+    mkdir -p "$out/lib" "$out/share/java"
   '';
 }