about summary refs log tree commit diff
path: root/nixpkgs/pkgs/tools/misc/idutils
diff options
context:
space:
mode:
Diffstat (limited to 'nixpkgs/pkgs/tools/misc/idutils')
-rw-r--r--nixpkgs/pkgs/tools/misc/idutils/default.nix61
-rw-r--r--nixpkgs/pkgs/tools/misc/idutils/nix-mapping.patch12
2 files changed, 73 insertions, 0 deletions
diff --git a/nixpkgs/pkgs/tools/misc/idutils/default.nix b/nixpkgs/pkgs/tools/misc/idutils/default.nix
new file mode 100644
index 000000000000..cbdf1b761049
--- /dev/null
+++ b/nixpkgs/pkgs/tools/misc/idutils/default.nix
@@ -0,0 +1,61 @@
+{ fetchurl, lib, stdenv, emacs, gnulib, autoconf, bison, automake, gettext, gperf, texinfo, perl, rsync, darwin }:
+
+stdenv.mkDerivation rec {
+  pname = "idutils";
+  version = "4.6";
+
+  src = fetchurl {
+    url = "mirror://gnu/idutils/idutils-${version}.tar.xz";
+    sha256 = "1hmai3422iaqnp34kkzxdnywl7n7pvlxp11vrw66ybxn9wxg90c1";
+  };
+
+  preConfigure = ''
+    # replace embedded gnulib tests with those from gnulib package
+    bash -O extglob -c "cd gnulib-tests; rm -r !(Makefile.am)"
+    substituteInPlace ./configure.ac --replace "AC_PREREQ(2.61)" "AC_PREREQ(2.64)"
+    ./bootstrap --force --gnulib-srcdir=${gnulib} --skip-po --bootstrap-sync --no-git
+    '';
+
+  buildInputs = lib.optionals stdenv.isLinux [
+    emacs
+  ] ++ lib.optionals stdenv.isDarwin [
+    darwin.apple_sdk.frameworks.CoreServices
+  ];
+
+  nativeBuildInputs = [ gnulib autoconf bison automake gettext gperf texinfo perl rsync ];
+
+  doCheck = !stdenv.isDarwin;
+
+  patches = [ ./nix-mapping.patch ];
+
+  meta = with lib; {
+    description = "Text searching utility";
+
+    longDescription = ''
+      An "ID database" is a binary file containing a list of file
+      names, a list of tokens, and a sparse matrix indicating which
+      tokens appear in which files.
+
+      With this database and some tools to query it, many
+      text-searching tasks become simpler and faster.  For example,
+      you can list all files that reference a particular `\#include'
+      file throughout a huge source hierarchy, search for all the
+      memos containing references to a project, or automatically
+      invoke an editor on all files containing references to some
+      function or variable.  Anyone with a large software project to
+      maintain, or a large set of text files to organize, can benefit
+      from the ID utilities.
+
+      Although the name `ID' is short for `identifier', the ID
+      utilities handle more than just identifiers; they also treat
+      other kinds of tokens, most notably numeric constants, and the
+      contents of certain character strings.
+    '';
+
+    homepage = "https://www.gnu.org/software/idutils/";
+    license = licenses.gpl3Plus;
+
+    maintainers = with maintainers; [ gfrascadorio ];
+    platforms = lib.platforms.all;
+  };
+}
diff --git a/nixpkgs/pkgs/tools/misc/idutils/nix-mapping.patch b/nixpkgs/pkgs/tools/misc/idutils/nix-mapping.patch
new file mode 100644
index 000000000000..6f92ffa07b52
--- /dev/null
+++ b/nixpkgs/pkgs/tools/misc/idutils/nix-mapping.patch
@@ -0,0 +1,12 @@
+Recognize `.nix' files as text files.
+
+--- idutils-4.5/libidu/id-lang.map	2009-05-17 16:38:42.000000000 +0200
++++ idutils-4.5/libidu/id-lang.map	2010-07-04 15:52:48.000000000 +0200
+@@ -88,6 +88,7 @@ GNUmakefile		make
+ *.doc			text
+ *.txt			text
+ *.org			text
++*.nix			text
+ 
+ *.m4			m4
+ *.ac			m4