Commit 038d3c30 authored by dish's avatar dish
Browse files

open-pdf-sign: build from source

parent 0373ee68
Loading
Loading
Loading
Loading
+33 −13
Original line number Diff line number Diff line
{
  fetchurl,
  jre,
  lib,
  makeBinaryWrapper,
  nix-update-script,
  stdenv,
  fetchFromGitHub,
  maven,
}:

stdenv.mkDerivation (finalAttrs: {
maven.buildMavenPackage rec {
  version = "0.3.0";
  pname = "open-pdf-sign";

  src = fetchurl {
    url = "https://github.com/open-pdf-sign/open-pdf-sign/releases/download/v${finalAttrs.version}/open-pdf-sign.jar";
    hash = "sha256-tGTWKw/xLhC1B+uogTUmWHUtHNNdE3BLuxToWvrduXs=";
  src = fetchFromGitHub {
    owner = "open-pdf-sign";
    repo = "open-pdf-sign";
    tag = "v${version}";
    hash = "sha256-4PkTm9nsIsCrXaLJePDvGalO726BVKhbK2bpFzg9ec0=";
  };

  postPatch = ''
    # Get package version from CLI, not from git(which doesn't exist in the build environment)
    substituteInPlace pom.xml \
      --replace-fail 'hint="git"' 'hint="sysprop"' \

    sed -i '/dirtyQualifier/d' ./pom.xml
  '';

  mvnHash = "sha256-5DgCjqKPc/y4vDX8pl4Qnm1KsCOpCdUVNiihpvcCzBU=";

  # Disable test requires the network, we also set the version
  mvnParameters = lib.escapeShellArgs [
    "-Dtest=!SignerTest#testSignPdf"
    "-Dexternal.version=${version}"
  ];

  nativeBuildInputs = [
    makeBinaryWrapper
  ];

  buildCommand = ''
    install -Dm644 $src $out/lib/open-pdf-sign.jar
  installPhase = ''
    runHook preInstall

    mkdir -p $out/bin $out/share/open-pdf-sign
    mv target/openpdfsign-${version}-jar-with-dependencies.jar $out/share/open-pdf-sign/open-pdf-sign.jar

    mkdir -p $out/bin
    makeWrapper ${lib.getExe jre} $out/bin/open-pdf-sign \
      --add-flags "-jar $out/lib/open-pdf-sign.jar"
      --add-flags "-jar $out/share/open-pdf-sign/open-pdf-sign.jar"

    runHook postInstall
  '';

  passthru = {
@@ -37,8 +59,6 @@ stdenv.mkDerivation (finalAttrs: {
    homepage = "https://github.com/open-pdf-sign/open-pdf-sign";
    license = lib.licenses.asl20;
    maintainers = [ ];
    platforms = lib.platforms.unix;
    sourceProvenance = with lib.sourceTypes; [ binaryBytecode ];
    mainProgram = "open-pdf-sign";
  };
})
}