1{
2 lib,
3 stdenv,
4 fetchFromGitHub,
5 nix-update-script,
6 autoreconfHook,
7 libpq,
8 openssl,
9 withLibiodbc ? false,
10 libiodbc,
11 withUnixODBC ? true,
12 unixODBC,
13}:
14
15assert lib.xor withLibiodbc withUnixODBC;
16
17stdenv.mkDerivation rec {
18 pname = "psqlodbc";
19 version = "${builtins.replaceStrings [ "_" ] [ "." ] (lib.strings.removePrefix "REL-" src.tag)}";
20
21 src = fetchFromGitHub {
22 owner = "postgresql-interfaces";
23 repo = "psqlodbc";
24 tag = "REL-17_00_0006";
25 hash = "sha256-iu1PWkfOyWtMmy7/8W+acu8v+e8nUPkCIHtVNZ8HzRg=";
26 };
27
28 buildInputs = [
29 libpq
30 openssl
31 ]
32 ++ lib.optional withLibiodbc libiodbc
33 ++ lib.optional withUnixODBC unixODBC;
34
35 nativeBuildInputs = [
36 autoreconfHook
37 ];
38
39 strictDeps = true;
40
41 passthru = {
42 updateScript = nix-update-script { };
43 }
44 // lib.optionalAttrs withUnixODBC {
45 fancyName = "PostgreSQL";
46 driver = "lib/psqlodbcw.so";
47 };
48
49 configureFlags = [
50 "CPPFLAGS=-DSQLCOLATTRIBUTE_SQLLEN" # needed for cross
51 "--with-libpq=${lib.getDev libpq}"
52 ]
53 ++ lib.optional withLibiodbc "--with-iodbc=${libiodbc}"
54 ++ lib.optional withUnixODBC "--with-unixodbc=${unixODBC}";
55
56 meta = with lib; {
57 homepage = "https://odbc.postgresql.org/";
58 description = "ODBC driver for PostgreSQL";
59 license = licenses.lgpl2;
60 platforms = platforms.unix;
61 teams = libpq.meta.teams;
62 };
63}