From 6ab1bed5eb1da8f16fe25e1eb438315abe60e95e Mon Sep 17 00:00:00 2001 From: TomaSajt <62384384+TomaSajt@users.noreply.github.com> Date: Sun, 10 Mar 2024 12:49:45 +0100 Subject: [PATCH] DisnixWebService: make deterministic and clean up --- .../disnix/DisnixWebService/default.nix | 45 ++++++++++++++----- 1 file changed, 33 insertions(+), 12 deletions(-) diff --git a/pkgs/tools/package-management/disnix/DisnixWebService/default.nix b/pkgs/tools/package-management/disnix/DisnixWebService/default.nix index 38aa1c2e261d..752af3a43225 100644 --- a/pkgs/tools/package-management/disnix/DisnixWebService/default.nix +++ b/pkgs/tools/package-management/disnix/DisnixWebService/default.nix @@ -1,13 +1,13 @@ -{lib, stdenv, fetchFromGitHub, fetchpatch, apacheAnt, jdk, axis2, dbus_java }: +{ lib, stdenv, fetchFromGitHub, fetchpatch, ant, jdk, xmlstarlet, axis2, dbus_java }: -stdenv.mkDerivation rec { +stdenv.mkDerivation (finalAttrs: { pname = "DisnixWebService"; version = "0.10.1"; src = fetchFromGitHub { owner = "svanderburg"; repo = "DisnixWebService"; - rev = "refs/tags/DisnixWebService-${version}"; + rev = "DisnixWebService-${finalAttrs.version}"; hash = "sha256-zcYr2Ytx4pevSthTQLpnQ330wDxN9dWsZA20jbO6PxQ="; }; @@ -20,26 +20,47 @@ stdenv.mkDerivation rec { }) ]; - buildInputs = [ apacheAnt jdk ]; - PREFIX = "\${env.out}"; - AXIS2_LIB = "${axis2}/lib"; - AXIS2_WEBAPP = "${axis2}/webapps/axis2"; - DBUS_JAVA_LIB = "${dbus_java}/share/java"; + nativeBuildInputs = [ + ant + jdk + xmlstarlet + ]; + + env = { + PREFIX = "\${env.out}"; + AXIS2_LIB = "${axis2}/lib"; + AXIS2_WEBAPP = "${axis2}/webapps/axis2"; + DBUS_JAVA_LIB = "${dbus_java}/share/java"; + }; + prePatch = '' + # add modificationtime="0" to the and tasks to achieve reproducibility + xmlstarlet ed -L -a "//jar|//war" -t attr -n "modificationtime" -v "0" build.xml + sed -i -e "s|#JAVA_HOME=|JAVA_HOME=${jdk}|" \ -e "s|#AXIS2_LIB=|AXIS2_LIB=${axis2}/lib|" \ scripts/disnix-soap-client ''; - buildPhase = "ant"; - installPhase = "ant install"; + + buildPhase = '' + runHook preBuild + ant + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + ant install + runHook postIntall + ''; meta = { description = "A SOAP interface and client for Disnix"; mainProgram = "disnix-soap-client"; homepage = "https://github.com/svanderburg/DisnixWebService"; - changelog = "https://github.com/svanderburg/DisnixWebService/blob/DisnixWebService-${version}/NEWS.txt"; + changelog = "https://github.com/svanderburg/DisnixWebService/blob/${finalAttrs.src.rev}/NEWS.txt"; license = lib.licenses.mit; maintainers = [ lib.maintainers.sander ]; platforms = lib.platforms.linux; }; -} +})