summaryrefslogtreecommitdiffstats
path: root/pkgs/tools/text/gawk
diff options
context:
space:
mode:
authortomberek <tomberek@users.noreply.github.com>2019-12-07 20:07:33 -0500
committerDmitry Kalinkin <dmitry.kalinkin@gmail.com>2019-12-07 20:07:33 -0500
commit774ad67ce07df0a376803b7b809cfa9de6a06dad (patch)
treed7e0f5bb068e4f3816b16678a8b0e90da8f56e82 /pkgs/tools/text/gawk
parent9dc8e77e4e54416551eb3d71df121d14b5ca708a (diff)
gawkextlib: init at unstable-2019-11-21 (#51721)
Co-Authored-By: Dmitry Kalinkin <dmitry.kalinkin@gmail.com>
Diffstat (limited to 'pkgs/tools/text/gawk')
-rw-r--r--pkgs/tools/text/gawk/gawk-with-extensions.nix12
-rw-r--r--pkgs/tools/text/gawk/gawkextlib.nix149
-rw-r--r--pkgs/tools/text/gawk/setup-hook.sh6
3 files changed, 167 insertions, 0 deletions
diff --git a/pkgs/tools/text/gawk/gawk-with-extensions.nix b/pkgs/tools/text/gawk/gawk-with-extensions.nix
new file mode 100644
index 000000000000..751e5181bb58
--- /dev/null
+++ b/pkgs/tools/text/gawk/gawk-with-extensions.nix
@@ -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
+''
diff --git a/pkgs/tools/text/gawk/gawkextlib.nix b/pkgs/tools/text/gawk/gawkextlib.nix
new file mode 100644
index 000000000000..e15b2d4e257d
--- /dev/null
+++ b/pkgs/tools/text/gawk/gawkextlib.nix
@@ -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;
+})
diff --git a/pkgs/tools/text/gawk/setup-hook.sh b/pkgs/tools/text/gawk/setup-hook.sh
new file mode 100644
index 000000000000..d568cb8c7dd9
--- /dev/null
+++ b/pkgs/tools/text/gawk/setup-hook.sh
@@ -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"