1{
2 lib,
3 stdenv,
4 fetchurl,
5 fetchFromGitHub,
6 installShellFiles,
7 makeWrapper,
8 sbcl,
9 sqlite,
10 freetds,
11 libzip,
12 curl,
13 git,
14 cacert,
15 openssl,
16 sphinx,
17}:
18stdenv.mkDerivation (finalAttrs: {
19 pname = "pgloader";
20 version = "3.6.9";
21
22 srcs = [
23 (fetchurl {
24 url = "https://github.com/dimitri/pgloader/releases/download/v3.6.9/pgloader-bundle-3.6.9.tgz";
25 sha256 = "sha256-pdCcRmoJnrfVnkhbT0WqLrRbCtOEmRgGRsXK+3uByeA=";
26 })
27 # needed because bundle does not contain docs / man pages
28 (fetchFromGitHub {
29 owner = "dimitri";
30 repo = "pgloader";
31 rev = "v${finalAttrs.version}";
32 hash = "sha256-lqvfWayaJbZ9xx4CgFfY1g0TKwFEd5IWf+RLLXQddw4=";
33 })
34 ];
35
36 sourceRoot = ".";
37
38 nativeBuildInputs = [
39 git
40 makeWrapper
41 installShellFiles
42 ];
43
44 buildInputs = [
45 sbcl
46 cacert
47 sqlite
48 sphinx
49 freetds
50 libzip
51 curl
52 openssl
53 ];
54
55 LD_LIBRARY_PATH = lib.makeLibraryPath [
56 sqlite
57 libzip
58 curl
59 git
60 openssl
61 freetds
62 ];
63
64 buildPhase = ''
65 export PATH=$PATH:$out/bin
66 export HOME=$TMPDIR
67
68 pushd pgloader-bundle-${finalAttrs.version}
69 make pgloader
70 popd
71
72 pushd source/docs
73 make man
74 popd
75 '';
76
77 dontStrip = true;
78 enableParallelBuilding = false;
79
80 installPhase = ''
81 install -Dm755 pgloader-bundle-${finalAttrs.version}/bin/pgloader "$out/bin/pgloader"
82 wrapProgram $out/bin/pgloader --prefix LD_LIBRARY_PATH : "${finalAttrs.LD_LIBRARY_PATH}"
83 mkdir -p $out/bin $out/man/man1
84 installManPage source/docs/_build/man/*.1
85 '';
86
87 meta = with lib; {
88 homepage = "https://pgloader.io/";
89 description = "Loads data into PostgreSQL and allows you to implement Continuous Migration from your current database to PostgreSQL";
90 mainProgram = "pgloader";
91 maintainers = with maintainers; [ mguentner ];
92 license = licenses.postgresql;
93 platforms = platforms.all;
94 };
95})