Unverified Commit bac33585 authored by Weijia Wang's avatar Weijia Wang Committed by GitHub
Browse files

Merge pull request #238709 from wegank/digital-mavenfod

digital: convert to mavenfod
parents 787c2685 06f73278
Loading
Loading
Loading
Loading
+9 −34
Original line number Diff line number Diff line
{ lib, stdenv, fetchFromGitHub, makeDesktopItem, copyDesktopItems, makeWrapper
, jre, maven, git
{ lib, javaPackages, fetchFromGitHub, makeDesktopItem, copyDesktopItems, makeWrapper
, jre, maven
}:

let
@@ -25,54 +25,29 @@ let
  # provide that version number manually as a property.
  # (see https://github.com/hneemann/Digital/issues/289#issuecomment-513721481)
  # Also use the commit date as a build and output timestamp.
  mvnOptions = "-Pno-git-rev -Dgit.commit.id.describe=${version} -Dproject.build.outputTimestamp=${buildDate} -DbuildTimestamp=${buildDate}";
  mvnParameters = "-Pno-git-rev -Dgit.commit.id.describe=${version} -Dproject.build.outputTimestamp=${buildDate} -DbuildTimestamp=${buildDate}";
in
stdenv.mkDerivation rec {
javaPackages.mavenfod rec {
  pname = "digital";
  inherit version jre;

  src = fetchFromGitHub {
    owner = "hneemann";
    repo = "Digital";
    rev = "932791eb6486d04f2ea938d83bcdb71b56d3a3f6";
    sha256 = "cDykYlcFvDLFBy9UnX07iCR2LCq28SNU+h9vRT/AoJM=";
    rev = "v${version}";
    hash = "sha256-cDykYlcFvDLFBy9UnX07iCR2LCq28SNU+h9vRT/AoJM=";
  };

  # Fetching maven dependencies from "central" needs the network at build phase,
  # we do that in this extra derivation that explicitly specifies its
  # outputHash to ensure determinism.
  mavenDeps = stdenv.mkDerivation {
    name = "${pname}-${version}-maven-deps";
    inherit src nativeBuildInputs version;
    dontFixup = true;
    buildPhase = ''
      mvn package ${mvnOptions} -Dmaven.repo.local=$out
    '';
    # keep only *.{pom,jar,sha1,nbm} and delete all ephemeral files with
    # lastModified timestamps inside
    installPhase = ''
      find $out -type f \
        -name \*.lastUpdated -or \
        -name resolver-status.properties -or \
        -name _remote.repositories \
        -delete
    '';
    outputHashAlgo = "sha256";
    outputHashMode = "recursive";
    outputHash = "1Cgw+5V2E/RENMRMm368+2yvY7y6v9gTlo+LRgrCXcE=";
  };
  inherit mvnParameters;
  mvnHash = "sha256-tc4mrXeyeI973IsNA9CcYJXEtTj91DcpCSmVYBYytt8=";

  nativeBuildInputs = [ copyDesktopItems maven makeWrapper ];

  buildPhase = ''
    mvn package --offline ${mvnOptions} -Dmaven.repo.local=${mavenDeps}
  '';

  installPhase = ''
    mkdir -p $out/bin
    mkdir -p $out/share/java

    classpath=$(find ${mavenDeps} -name "*.jar" -printf ':%h/%f');
    classpath=$(find $mvnDeps/.m2 -name "*.jar" -printf ':%h/%f');
    install -Dm644 target/Digital.jar $out/share/java

    makeWrapper ${jre}/bin/java $out/bin/${pname} \