From 272f7bb1f4d02d42fc10fd26f21f4ca4c6f4d85a Mon Sep 17 00:00:00 2001 From: Robert Scott Date: Tue, 24 Oct 2023 01:02:36 +0100 Subject: openrefine: init at 3.7.7 --- .../science/misc/openrefine/default.nix | 136 +++++++++++++++++++++ .../applications/science/misc/openrefine/update.sh | 20 +++ 2 files changed, 156 insertions(+) create mode 100644 pkgs/applications/science/misc/openrefine/default.nix create mode 100755 pkgs/applications/science/misc/openrefine/update.sh (limited to 'pkgs/applications/science') diff --git a/pkgs/applications/science/misc/openrefine/default.nix b/pkgs/applications/science/misc/openrefine/default.nix new file mode 100644 index 000000000000..fafdcb03ec03 --- /dev/null +++ b/pkgs/applications/science/misc/openrefine/default.nix @@ -0,0 +1,136 @@ +{ lib +, stdenv +, fetchFromGitHub +, buildNpmPackage +, curl +, jdk +, jq +, makeWrapper +, maven +, writeText +}: + +let + maven' = maven.override { + inherit jdk; + }; + + version = "3.7.7"; + src = fetchFromGitHub { + owner = "openrefine"; + repo = "openrefine"; + rev = version; + hash = "sha256-/Txx+r+eFizxaTV5u/nOJwum8nJW6jsR6kYA0YbRsJs="; + }; + + npmPkg = buildNpmPackage { + inherit src version; + + pname = "openrefine-npm"; + sourceRoot = "source/main/webapp"; + + npmDepsHash = "sha256-8GhcL4tohQ5u2HeYN6JyTMMobUOqAL8ETCLiP1SoDSk="; + + # package.json doesn't supply a version, which npm doesn't like - fix this. + # directly referencing jq because buildNpmPackage doesn't pass + # nativeBuildInputs through to fetchNpmDeps + postPatch = '' + NEW_PACKAGE_JSON=$(mktemp) + ${jq}/bin/jq '. + {version: $ENV.version}' package.json > $NEW_PACKAGE_JSON + cp $NEW_PACKAGE_JSON package.json + ''; + + dontNpmBuild = true; + installPhase = '' + mkdir -p $out + cp -r modules/core/3rdparty/* $out/ + ''; + }; + +in maven'.buildMavenPackage { + inherit src version; + + pname = "openrefine"; + + postPatch = '' + cp -r ${npmPkg} main/webapp/modules/core/3rdparty + ''; + mvnParameters = "-DskipTests=true -pl !packaging"; + mvnHash = "sha256-MqE+iloqzBav6E3/rf1LP5BlKhW/FBIt6+6U+S8UJWA="; + + nativeBuildInputs = [ makeWrapper ]; + + installPhase = let + gitProperties = writeText "git.properties" (builtins.toJSON { + "git.build.version" = version; + "git.branch" = "none"; + "git.build.time" = "1970-01-01T00:00:00+0000"; + "git.commit.id.abbrev" = "none"; + "git.commit.id.describe" = "none"; + }); + in '' + mkdir -p $out/lib/server/target/lib + cp -r server/target/lib/* $out/lib/server/target/lib/ + cp server/target/openrefine-*-server.jar $out/lib/server/target/lib/ + + mkdir -p $out/lib/webapp + cp -r main/webapp/{WEB-INF,modules} $out/lib/webapp/ + ( + cd extensions + for ext in * ; do + if [ -d "$ext/module" ] ; then + mkdir -p "$out/lib/webapp/extensions/$ext" + cp -r "$ext/module" "$out/lib/webapp/extensions/$ext/" + fi + done + ) + + cp ${gitProperties} $out/lib/webapp/WEB-INF/classes/git.properties + + mkdir -p $out/etc + cp refine.ini $out/etc/ + + mkdir -p $out/bin + cp refine $out/bin/ + ''; + + preFixup = '' + find $out -name '*.java' -delete + sed -i -E 's|^(butterfly\.modules\.path =).*extensions.*$|\1 '"$out/lib/webapp/extensions|" \ + $out/lib/webapp/WEB-INF/butterfly.properties + + sed -i 's|^cd `dirname \$0`$|cd '"$out/lib|" $out/bin/refine + + cat >> $out/etc/refine.ini <&1 | tail -n10 | grep 'got:' | cut -d: -f2- | xargs echo || true)" + +sed -E -i "s|${FAKEHASH_ESCAPED}|${MVNHASH_NEW}|g" "${FILE}" -- cgit 1.4.1