base16-schemes: unstable-2024-06-21 -> unstable-2024-11-12 (#356361)
[NixPkgs.git] / pkgs / tools / text / gawk / gawkextlib.nix
blobeaf7799a4860eb91bcf92d2ae7f3edd2b44cf1a7
1 { lib, stdenv, recurseIntoAttrs, fetchgit, pkg-config, autoreconfHook
2 , autoconf, automake, libiconv, libtool, texinfo, gettext, gawk, rapidjson, gd
3 , libharu, lmdb, gmp, glibcLocales, mpfr, more, postgresql, hiredis
4 , expat, tre }:
6 let
7   buildExtension = lib.makeOverridable
8     ({ name, gawkextlib, extraBuildInputs ? [ ], doCheck ? true, patches ? [ ] }:
9       let is_extension = gawkextlib != null;
10       in stdenv.mkDerivation rec {
11         pname = "gawkextlib-${name}";
12         version = "unstable-2022-10-20";
14         src = fetchgit {
15           url = "git://git.code.sf.net/p/gawkextlib/code";
16           rev = "f6c75b4ac1e0cd8d70c2f6c7a8d58b4d94cfde97";
17           sha256 = "sha256-0p3CrQ3TBl7UcveZytK/9rkAzn69RRM2GwY2eCeqlkg=";
18         };
20         inherit patches;
22         postPatch = ''
23           cd ${name}
24         '';
26         nativeBuildInputs = [
27           autoconf
28           automake
29           libtool
30           autoreconfHook
31           pkg-config
32           texinfo
33           gettext
34         ];
36         buildInputs = [ gawk ] ++ extraBuildInputs;
37         propagatedBuildInputs = lib.optional is_extension gawkextlib;
39         setupHook = if is_extension then ./setup-hook.sh else null;
40         inherit gawk;
42         inherit doCheck;
43         nativeCheckInputs = [ more ];
45         meta = with lib; {
46           homepage = "https://sourceforge.net/projects/gawkextlib/";
47           description = "Dynamically loaded extension libraries for GNU AWK";
48           mainProgram = "xmlgawk";
49           longDescription = ''
50             The gawkextlib project provides several extension libraries for
51             gawk (GNU AWK), as well as libgawkextlib containing some APIs that
52             are useful for building gawk extension libraries. These libraries
53             enable gawk to process XML data, interact with a PostgreSQL
54             database, use the GD graphics library, and perform unlimited
55             precision MPFR calculations.
56           '';
57           license = licenses.gpl3Plus;
58           platforms = platforms.unix;
59           maintainers = with maintainers; [ tomberek ];
60         };
61       });
62   gawkextlib = buildExtension {
63     gawkextlib = null;
64     name = "lib";
65   };
66   libs = {
67     abort = buildExtension {
68       inherit gawkextlib;
69       name = "abort";
70     };
71     aregex = buildExtension {
72       inherit gawkextlib;
73       name = "aregex";
74       extraBuildInputs = [ tre ];
75     };
76     csv = buildExtension {
77       inherit gawkextlib;
78       name = "csv";
79     };
80     errno = buildExtension {
81       inherit gawkextlib;
82       name = "errno";
83     };
84     gd = buildExtension {
85       inherit gawkextlib;
86       name = "gd";
87       extraBuildInputs = [ gd ];
88     };
89     haru = buildExtension {
90       inherit gawkextlib;
91       name = "haru";
92       extraBuildInputs = [ libharu ];
93       patches = [
94         # Renames references to two identifiers with typos that libharu fixed in 2.4.4
95         # https://github.com/libharu/libharu/commit/88271b73c68c521a49a15e3555ef00395aa40810
96         ./fix-typos-corrected-in-libharu-2.4.4.patch
97       ];
98     };
99     json = buildExtension {
100       inherit gawkextlib;
101       name = "json";
102       extraBuildInputs = [ rapidjson ];
103     };
104     lmdb = buildExtension {
105       inherit gawkextlib;
106       name = "lmdb";
107       extraBuildInputs = [ lmdb ];
108       #  mdb_env_open(env, /dev/null)
109       #! No such device
110       #  mdb_env_open(env, /dev/null)
111       #! Operation not supported by device
112       doCheck = !stdenv.hostPlatform.isDarwin;
113     };
114     mbs = buildExtension {
115       inherit gawkextlib;
116       name = "mbs";
117       extraBuildInputs = [ glibcLocales ];
118       #! "spät": length: 5, mbs_length: 6, wcswidth: 4
119       doCheck = !stdenv.hostPlatform.isDarwin;
120     };
121     mpfr = buildExtension {
122       inherit gawkextlib;
123       name = "mpfr";
124       extraBuildInputs = [ gmp mpfr ];
125     };
126     nl_langinfo = buildExtension {
127       inherit gawkextlib;
128       name = "nl_langinfo";
129     };
130     pgsql = buildExtension {
131       inherit gawkextlib;
132       name = "pgsql";
133       extraBuildInputs = [ postgresql ];
134     };
135     redis = buildExtension {
136       inherit gawkextlib;
137       name = "redis";
138       extraBuildInputs = [ hiredis ];
139     };
140     select = buildExtension {
141       inherit gawkextlib;
142       name = "select";
143     };
144     timex = buildExtension {
145       inherit gawkextlib;
146       name = "timex";
147     };
148     xml = buildExtension {
149       inherit gawkextlib;
150       name = "xml";
151       extraBuildInputs = [ expat libiconv ];
152     };
153   };
154 in recurseIntoAttrs (libs // {
155   inherit gawkextlib buildExtension;
156   full = builtins.attrValues libs;