1{ lib, stdenv, fetchurl, unzip, makeWrapper, openjdk }:
2
3stdenv.mkDerivation rec {
4 pname = "pmd";
5 version = "6.55.0";
6
7 src = fetchurl {
8 url = "https://github.com/pmd/pmd/releases/download/pmd_releases/${version}/pmd-bin-${version}.zip";
9 hash = "sha256-Iaz5bUPLQNWRyszMHCCmb8eW6t32nqYYEllER7rHoR0=";
10 };
11
12 nativeBuildInputs = [ unzip makeWrapper ];
13
14 dontConfigure = true;
15 dontBuild = true;
16
17 installPhase = ''
18 runHook preInstall
19
20 install -Dm755 bin/run.sh $out/libexec/pmd
21 install -Dm644 lib/*.jar -t $out/lib/pmd
22
23 wrapProgram $out/libexec/pmd \
24 --prefix PATH : ${openjdk.jre}/bin \
25 --set LIB_DIR $out/lib/pmd
26
27 for app in pmd cpd cpdgui designer bgastviewer designerold ast-dump; do
28 makeWrapper $out/libexec/pmd $out/bin/$app --argv0 $app --add-flags $app
29 done
30
31 runHook postInstall
32 '';
33
34 meta = with lib; {
35 description = "An extensible cross-language static code analyzer";
36 homepage = "https://pmd.github.io/";
37 changelog = "https://pmd.github.io/pmd-${version}/pmd_release_notes.html";
38 platforms = platforms.unix;
39 license = with licenses; [ bsdOriginal asl20 ];
40 };
41}