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