diff --git a/pkgs/by-name/jn/jnr-posix/package.nix b/pkgs/by-name/jn/jnr-posix/package.nix new file mode 100644 index 000000000000..7cc3f67e083a --- /dev/null +++ b/pkgs/by-name/jn/jnr-posix/package.nix @@ -0,0 +1,82 @@ +{ stdenv +, lib +, fetchFromGitHub +, dpkg +, jdk +, makeWrapper +, maven +, which +}: +let + pname = "jnr-posix"; + version = "3.1.18"; + + src = fetchFromGitHub { + owner = "jnr"; + repo = "jnr-posix"; + rev = "jnr-posix-${version}"; + hash = "sha256-zx8I9rsu9Kjef+LatDA1WIuO7Vgo0/JM5nGi3pSWch4="; + }; + + deps = stdenv.mkDerivation { + name = "${pname}-${version}-deps"; + inherit src; + + nativeBuildInputs = [ jdk maven ]; + + buildPhase = '' + runHook preBuild + + mvn package -Dmaven.test.skip=true -Dmaven.repo.local=$out/.m2 -Dmaven.wagon.rto=5000 + + runHook postBuild + ''; + + # keep only *.{pom,jar,sha1,nbm} and delete all ephemeral files with lastModified timestamps inside + installPhase = '' + runHook preInstall + + find $out/.m2 -type f -regex '.+\(\.lastUpdated\|resolver-status\.properties\|_remote\.repositories\)' -delete + find $out/.m2 -type f -iname '*.pom' -exec sed -i -e 's/\r\+$//' {} \; + + runHook postInstall + ''; + + outputHashMode = "recursive"; + outputHash = "sha256-gOw0KUFyZEMONwLwlHSiV+ZZ7JQhjZwg708Q1IciUfo="; + + doCheck = false; + }; +in +stdenv.mkDerivation rec { + inherit version pname src; + + nativeBuildInputs = [ maven which ]; + + postPatch = '' + sed -i "s/\/usr\/bin\/id/$(which id | sed 's#/#\\/#g')/g" src/main/java/jnr/posix/JavaPOSIX.java + ''; + + buildPhase = '' + runHook preBuild + + mvn package --offline -Dmaven.test.skip=true -Dmaven.repo.local=$(cp -dpR ${deps}/.m2 ./ && chmod +w -R .m2 && pwd)/.m2 + + runHook postBuild + ''; + + installPhase = '' + runHook preInstall + + install -D target/${pname}-${version}.jar $out/share/java/${pname}-${version}.jar + + runHook postInstall + ''; + + meta = with lib; { + description = "jnr-posix is a lightweight cross-platform POSIX emulation layer for Java, written in Java and is part of the JNR project"; + homepage = "https://github.com/jnr/jnr-posix"; + license = with licenses; [ epl20 gpl2Only lgpl21Only ]; + maintainers = with lib.maintainers; [ rhysmdnz ]; + }; +}