200 lines
4.5 KiB
Nix
200 lines
4.5 KiB
Nix
|
{
|
||
|
lib,
|
||
|
stdenv,
|
||
|
recurseIntoAttrs,
|
||
|
fetchgit,
|
||
|
pkg-config,
|
||
|
autoreconfHook,
|
||
|
autoconf,
|
||
|
automake,
|
||
|
libiconv,
|
||
|
libtool,
|
||
|
texinfo,
|
||
|
gettext,
|
||
|
gawk,
|
||
|
rapidjson,
|
||
|
gd,
|
||
|
libharu,
|
||
|
lmdb,
|
||
|
gmp,
|
||
|
glibcLocales,
|
||
|
mpfr,
|
||
|
more,
|
||
|
postgresql,
|
||
|
hiredis,
|
||
|
expat,
|
||
|
tre,
|
||
|
}:
|
||
|
|
||
|
let
|
||
|
buildExtension = lib.makeOverridable (
|
||
|
{
|
||
|
name,
|
||
|
gawkextlib,
|
||
|
extraBuildInputs ? [ ],
|
||
|
doCheck ? true,
|
||
|
patches ? [ ],
|
||
|
}:
|
||
|
let
|
||
|
is_extension = gawkextlib != null;
|
||
|
in
|
||
|
stdenv.mkDerivation rec {
|
||
|
pname = "gawkextlib-${name}";
|
||
|
version = "unstable-2022-10-20";
|
||
|
|
||
|
src = fetchgit {
|
||
|
url = "git://git.code.sf.net/p/gawkextlib/code";
|
||
|
rev = "f6c75b4ac1e0cd8d70c2f6c7a8d58b4d94cfde97";
|
||
|
sha256 = "sha256-0p3CrQ3TBl7UcveZytK/9rkAzn69RRM2GwY2eCeqlkg=";
|
||
|
};
|
||
|
|
||
|
inherit patches;
|
||
|
|
||
|
postPatch = ''
|
||
|
cd ${name}
|
||
|
'';
|
||
|
|
||
|
nativeBuildInputs = [
|
||
|
autoconf
|
||
|
automake
|
||
|
libtool
|
||
|
autoreconfHook
|
||
|
pkg-config
|
||
|
texinfo
|
||
|
gettext
|
||
|
];
|
||
|
|
||
|
buildInputs = [ gawk ] ++ extraBuildInputs;
|
||
|
propagatedBuildInputs = lib.optional is_extension gawkextlib;
|
||
|
|
||
|
setupHook = if is_extension then ./setup-hook.sh else null;
|
||
|
inherit gawk;
|
||
|
|
||
|
inherit doCheck;
|
||
|
nativeCheckInputs = [ more ];
|
||
|
|
||
|
meta = with lib; {
|
||
|
homepage = "https://sourceforge.net/projects/gawkextlib/";
|
||
|
description = "Dynamically loaded extension libraries for GNU AWK";
|
||
|
mainProgram = "xmlgawk";
|
||
|
longDescription = ''
|
||
|
The gawkextlib project provides several extension libraries for
|
||
|
gawk (GNU AWK), as well as libgawkextlib containing some APIs that
|
||
|
are useful for building gawk extension libraries. These libraries
|
||
|
enable gawk to process XML data, interact with a PostgreSQL
|
||
|
database, use the GD graphics library, and perform unlimited
|
||
|
precision MPFR calculations.
|
||
|
'';
|
||
|
license = licenses.gpl3Plus;
|
||
|
platforms = platforms.unix;
|
||
|
maintainers = with maintainers; [ tomberek ];
|
||
|
};
|
||
|
}
|
||
|
);
|
||
|
gawkextlib = buildExtension {
|
||
|
gawkextlib = null;
|
||
|
name = "lib";
|
||
|
};
|
||
|
libs = {
|
||
|
abort = buildExtension {
|
||
|
inherit gawkextlib;
|
||
|
name = "abort";
|
||
|
};
|
||
|
aregex = buildExtension {
|
||
|
inherit gawkextlib;
|
||
|
name = "aregex";
|
||
|
extraBuildInputs = [ tre ];
|
||
|
};
|
||
|
csv = buildExtension {
|
||
|
inherit gawkextlib;
|
||
|
name = "csv";
|
||
|
};
|
||
|
errno = buildExtension {
|
||
|
inherit gawkextlib;
|
||
|
name = "errno";
|
||
|
};
|
||
|
gd = buildExtension {
|
||
|
inherit gawkextlib;
|
||
|
name = "gd";
|
||
|
extraBuildInputs = [ gd ];
|
||
|
};
|
||
|
haru = buildExtension {
|
||
|
inherit gawkextlib;
|
||
|
name = "haru";
|
||
|
extraBuildInputs = [ libharu ];
|
||
|
patches = [
|
||
|
# Renames references to two identifiers with typos that libharu fixed in 2.4.4
|
||
|
# https://github.com/libharu/libharu/commit/88271b73c68c521a49a15e3555ef00395aa40810
|
||
|
./fix-typos-corrected-in-libharu-2.4.4.patch
|
||
|
];
|
||
|
};
|
||
|
json = buildExtension {
|
||
|
inherit gawkextlib;
|
||
|
name = "json";
|
||
|
extraBuildInputs = [ rapidjson ];
|
||
|
};
|
||
|
lmdb = buildExtension {
|
||
|
inherit gawkextlib;
|
||
|
name = "lmdb";
|
||
|
extraBuildInputs = [ lmdb ];
|
||
|
# mdb_env_open(env, /dev/null)
|
||
|
#! No such device
|
||
|
# mdb_env_open(env, /dev/null)
|
||
|
#! Operation not supported by device
|
||
|
doCheck = !stdenv.isDarwin;
|
||
|
};
|
||
|
mbs = buildExtension {
|
||
|
inherit gawkextlib;
|
||
|
name = "mbs";
|
||
|
extraBuildInputs = [ glibcLocales ];
|
||
|
#! "spät": length: 5, mbs_length: 6, wcswidth: 4
|
||
|
doCheck = !stdenv.isDarwin;
|
||
|
};
|
||
|
mpfr = buildExtension {
|
||
|
inherit gawkextlib;
|
||
|
name = "mpfr";
|
||
|
extraBuildInputs = [
|
||
|
gmp
|
||
|
mpfr
|
||
|
];
|
||
|
};
|
||
|
nl_langinfo = buildExtension {
|
||
|
inherit gawkextlib;
|
||
|
name = "nl_langinfo";
|
||
|
};
|
||
|
pgsql = buildExtension {
|
||
|
inherit gawkextlib;
|
||
|
name = "pgsql";
|
||
|
extraBuildInputs = [ postgresql ];
|
||
|
};
|
||
|
redis = buildExtension {
|
||
|
inherit gawkextlib;
|
||
|
name = "redis";
|
||
|
extraBuildInputs = [ hiredis ];
|
||
|
};
|
||
|
select = buildExtension {
|
||
|
inherit gawkextlib;
|
||
|
name = "select";
|
||
|
};
|
||
|
timex = buildExtension {
|
||
|
inherit gawkextlib;
|
||
|
name = "timex";
|
||
|
};
|
||
|
xml = buildExtension {
|
||
|
inherit gawkextlib;
|
||
|
name = "xml";
|
||
|
extraBuildInputs = [
|
||
|
expat
|
||
|
libiconv
|
||
|
];
|
||
|
};
|
||
|
};
|
||
|
in
|
||
|
recurseIntoAttrs (
|
||
|
libs
|
||
|
// {
|
||
|
inherit gawkextlib buildExtension;
|
||
|
full = builtins.attrValues libs;
|
||
|
}
|
||
|
)
|