about summary refs log tree commit diff
path: root/pkgs/by-name
diff options
context:
space:
mode:
Diffstat (limited to 'pkgs/by-name')
-rw-r--r--pkgs/by-name/li/libedit/01-cygwin.patch25
-rw-r--r--pkgs/by-name/li/libedit/package.nix56
2 files changed, 81 insertions, 0 deletions
diff --git a/pkgs/by-name/li/libedit/01-cygwin.patch b/pkgs/by-name/li/libedit/01-cygwin.patch
new file mode 100644
index 000000000000..33bd39ed61e5
--- /dev/null
+++ b/pkgs/by-name/li/libedit/01-cygwin.patch
@@ -0,0 +1,25 @@
+--- libedit-20120311-3.0/src/chartype.h	2012-03-11 10:54:58.000000000 +0100
++++ libedit-20120311-3.0/src/chartype.h	2012-05-03 19:00:20.651847423 +0200
+@@ -56,9 +56,11 @@
+ /* Oh for a <uchar.h> with char32_t and __STDC_UTF_32__ in it...
+  * ref: ISO/IEC DTR 19769
+  */
++#ifndef __CYGWIN__
+ #if WCHAR_MAX < INT32_MAX
+ #warning Build environment does not support non-BMP characters
+ #endif
++#endif
+ 
+ #ifndef HAVE_WCSDUP
+ wchar_t *wcsdup(const wchar_t *s);
+--- libedit-20120311-3.0/src/editline/readline.h	2011-02-26 23:42:59.000000000 +0100
++++ libedit-20120311-3.0/src/editline/readline.h	2012-05-03 19:00:49.211244803 +0200
+@@ -75,7 +75,7 @@ typedef KEYMAP_ENTRY *Keymap;
+ 
+ #ifndef CTRL
+ #include <sys/ioctl.h>
+-#if !defined(__sun) && !defined(__hpux) && !defined(_AIX)
++#if !defined(__sun) && !defined(__hpux) && !defined(_AIX) && !defined(__CYGWIN__)
+ #include <sys/ttydefaults.h>
+ #endif
+ #ifndef CTRL
diff --git a/pkgs/by-name/li/libedit/package.nix b/pkgs/by-name/li/libedit/package.nix
new file mode 100644
index 000000000000..aeb79811d6e7
--- /dev/null
+++ b/pkgs/by-name/li/libedit/package.nix
@@ -0,0 +1,56 @@
+{ lib
+, stdenv
+, fetchurl
+, ncurses
+}:
+
+stdenv.mkDerivation (finalAttrs: {
+  pname = "libedit";
+  version = "20230828-3.1";
+
+  src = fetchurl {
+    url = "https://thrysoee.dk/editline/libedit-${finalAttrs.version}.tar.gz";
+    hash = "sha256-TugYK25WkpDn0fRPD3jayHFrNfZWt2Uo9pnGnJiBTa0=";
+  };
+
+  outputs = [ "out" "dev" "man" ];
+
+  patches = [
+    ./01-cygwin.patch
+  ];
+
+  propagatedBuildInputs = [
+    ncurses
+  ];
+
+  # GCC automatically include `stdc-predefs.h` while Clang does not do this by
+  # default. While Musl is ISO 10646 compliant, it does not define
+  # __STDC_ISO_10646__.
+  # This definition is in `stdc-predefs.h` -- that's why libedit builds just
+  # fine with GCC and Musl.
+  # There is a DR to fix this issue with Clang which is not merged yet.
+  # https://reviews.llvm.org/D137043
+  env.NIX_CFLAGS_COMPILE =
+    lib.optionalString (stdenv.targetPlatform.isMusl && stdenv.cc.isClang)
+      "-D__STDC_ISO_10646__=201103L";
+
+  postFixup = ''
+    find $out/lib -type f | \
+      grep '\.\(la\|pc\)''$' | \
+      xargs sed -i -e 's,-lncurses[a-z]*,-L${ncurses.out}/lib -lncursesw,g'
+  '';
+
+  meta = {
+    homepage = "http://www.thrysoee.dk/editline/";
+    description = "A port of the NetBSD Editline library (libedit)";
+    longDescription = ''
+       This is an autotool- and libtoolized port of the NetBSD Editline library
+       (libedit). This Berkeley-style licensed command line editor library
+       provides generic line editing, history, and tokenization functions,
+       similar to those found in GNU Readline.
+    '';
+    license = with lib.licenses; [ bsd3 ];
+    maintainers = with lib.maintainers; [ AndersonTorres ];
+    platforms = lib.platforms.all;
+  };
+})