1{
2 buildPerlPackage,
3 bzip2,
4 fetchFromGitHub,
5 JSONXS,
6 lib,
7 nix-update-script,
8 pgbadger,
9 PodMarkdown,
10 shortenPerlShebang,
11 stdenv,
12 testers,
13 TextCSV_XS,
14 which,
15}:
16
17buildPerlPackage rec {
18 pname = "pgbadger";
19 version = "12.4";
20
21 src = fetchFromGitHub {
22 owner = "darold";
23 repo = "pgbadger";
24 tag = "v${version}";
25 hash = "sha256-an/BOkQsMkTXS0HywV1JWerS16HRbO1MHVleYhVqmBM=";
26 };
27
28 postPatch = ''
29 patchShebangs ./pgbadger
30 '';
31
32 # pgbadger has too many `-Idir` flags on its shebang line on Darwin,
33 # causing the build to fail when trying to generate the documentation.
34 # Rewrite the -I flags in `use lib` form.
35 preBuild = lib.optionalString stdenv.hostPlatform.isDarwin ''
36 shortenPerlShebang ./pgbadger
37 '';
38
39 outputs = [ "out" ];
40
41 PERL_MM_OPT = "INSTALL_BASE=${placeholder "out"}";
42
43 buildInputs = [
44 JSONXS
45 PodMarkdown
46 TextCSV_XS
47 ];
48
49 nativeBuildInputs = lib.optionals stdenv.hostPlatform.isDarwin [ shortenPerlShebang ];
50
51 nativeCheckInputs = [
52 bzip2
53 which
54 ];
55
56 passthru = {
57 tests.version = testers.testVersion {
58 inherit version;
59 command = "${lib.getExe pgbadger} --version";
60 package = pgbadger;
61 };
62 updateScript = nix-update-script { };
63 };
64
65 meta = {
66 homepage = "https://github.com/darold/pgbadger";
67 description = "Fast PostgreSQL Log Analyzer";
68 changelog = "https://github.com/darold/pgbadger/raw/v${version}/ChangeLog";
69 license = lib.licenses.postgresql;
70 teams = [ lib.teams.determinatesystems ];
71 mainProgram = "pgbadger";
72 };
73}