gawkextlib: init at unstable-2019-11-21 (#51721)

Co-Authored-By: Dmitry Kalinkin <dmitry.kalinkin@gmail.com>
This commit is contained in:
tomberek 2019-12-07 20:07:33 -05:00 committed by Dmitry Kalinkin
parent 9dc8e77e4e
commit 774ad67ce0
4 changed files with 172 additions and 0 deletions

View file

@ -0,0 +1,12 @@
{ runCommand, gawk, extensions, makeWrapper }:
runCommand "gawk-with-extensions" {
buildInputs = [ makeWrapper gawk ] ++ extensions;
} ''
mkdir -p $out/bin
for i in ${gawk}/bin/*; do
name="$(basename "$i")"
makeWrapper $i $out/bin/$name \
--prefix AWKLIBPATH : "${gawk}/lib/gawk:''${AWKLIBPATH:-}"
done
''

View file

@ -0,0 +1,149 @@
{ stdenv, recurseIntoAttrs, fetchgit, writeText, pkgconfig, autoreconfHook
, autoconf, automake, libiconv, libtool, texinfo, gettext, gawk, rapidjson, gd
, shapelib, libharu, lmdb, gmp, glibcLocales, mpfr, more, postgresql, hiredis
, expat, tre, makeWrapper }:
let
buildExtension = stdenv.lib.makeOverridable
({ name, gawkextlib, extraBuildInputs ? [ ], doCheck ? true }:
let is_extension = !isNull gawkextlib;
in stdenv.mkDerivation rec {
pname = "gawkextlib-${name}";
version = "unstable-2019-11-21";
src = fetchgit {
url = "git://git.code.sf.net/p/gawkextlib/code";
rev = "f70f10da2804e4fd0a0bac57736e9c1cf21e345d";
sha256 = "0r8fz89n3l4dfszs1980yqj0ah95430lj0y1lb7blfkwxa6c2xik";
};
postPatch = ''
cd ${name}
'';
nativeBuildInputs = [
autoconf
automake
libtool
autoreconfHook
pkgconfig
texinfo
gettext
];
buildInputs = [ gawk ] ++ extraBuildInputs;
propagatedBuildInputs = stdenv.lib.optional is_extension gawkextlib;
setupHook = if is_extension then ./setup-hook.sh else null;
inherit gawk;
inherit doCheck;
checkInputs = [ more ];
meta = with stdenv.lib; {
homepage = "https://sourceforge.net/projects/gawkextlib/";
description = "Dynamically loaded extension libraries for GNU AWK";
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 ];
};
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;
})

View file

@ -0,0 +1,6 @@
local oldOpts="-u"
shopt -qo nounset || oldOpts="+u"
set +u
. @gawk@/etc/profile.d/gawk.sh
gawklibpath_append @out@/lib/gawk
set "$oldOpts"

View file

@ -3399,6 +3399,11 @@ in
inherit (darwin) locale;
};
gawk-with-extensions = callPackage ../tools/text/gawk/gawk-with-extensions.nix {
extensions = gawkextlib.full;
};
gawkextlib = callPackage ../tools/text/gawk/gawkextlib.nix {};
gawkInteractive = appendToName "interactive"
(gawk.override { interactive = true; });