nixpkgs mirror (for testing)
github.com/NixOS/nixpkgs
nix
1{
2 lib,
3 fetchFromGitHub,
4 buildPerlPackage,
5 DBDmysql,
6 DBI,
7 IOSocketSSL,
8 TermReadKey,
9 go,
10 buildGoModule,
11 git,
12}:
13
14let
15 version = "3.7.0";
16
17 src = fetchFromGitHub {
18 owner = "percona";
19 repo = "percona-toolkit";
20 rev = "v${version}";
21 sha256 = "sha256-NpLUHIdGnuNJmSYBYErU7yzFkxKRFQVWJHJqJ2q4U5E=";
22
23 # needed for build script
24 leaveDotGit = true;
25 };
26
27 goDeps =
28 (buildGoModule {
29 pname = "Percona-Toolkit go-bindings";
30 inherit src version;
31
32 vendorHash = "sha256-HAaoVYK6av085zSG0ZRpbmUgEA2UEt7CGWF/834e+z4=";
33 }).goModules;
34in
35buildPerlPackage {
36 pname = "Percona-Toolkit";
37
38 inherit src version;
39
40 outputs = [ "out" ];
41
42 nativeBuildInputs = [
43 git
44 ];
45
46 buildInputs = [
47 DBDmysql
48 go
49 DBI
50 IOSocketSSL
51 TermReadKey
52 ];
53
54 postPatch = ''
55 cp -r --reflink=auto ${goDeps} vendor
56 chmod -R u+rw vendor
57 substituteInPlace src/go/Makefile \
58 --replace-fail "go get ./..." "echo 'Skipping go get due to offline build'"
59 '';
60
61 preBuild = ''
62 export HOME=$TMPDIR
63 '';
64
65 meta = {
66 description = "Collection of advanced command-line tools to perform a variety of MySQL and system tasks";
67 homepage = "https://www.percona.com/software/database-tools/percona-toolkit";
68 changelog = "https://docs.percona.com/percona-toolkit/release_notes.html";
69 license = with lib.licenses; [ gpl2Only ];
70 maintainers = with lib.maintainers; [ izorkin ];
71 };
72}