about summary refs log tree commit diff
path: root/pkgs/by-name/li
diff options
context:
space:
mode:
authorVladimír Čunát <v@cunat.cz>2024-02-29 19:14:55 +0100
committerVladimír Čunát <v@cunat.cz>2024-02-29 19:14:55 +0100
commit5ec0e03492cc7da54a0364c739fb57849910c2d4 (patch)
tree10dd59f9974072be545a762d11c81bc8439b35fd /pkgs/by-name/li
parent5b2a4c0e7a39c94249c7a93808954bd9a2d4180e (diff)
parent305bb109a8d98e43aa0bfb3edd2b78f8b9906935 (diff)
downloadnixlib-5ec0e03492cc7da54a0364c739fb57849910c2d4.tar
nixlib-5ec0e03492cc7da54a0364c739fb57849910c2d4.tar.gz
nixlib-5ec0e03492cc7da54a0364c739fb57849910c2d4.tar.bz2
nixlib-5ec0e03492cc7da54a0364c739fb57849910c2d4.tar.lz
nixlib-5ec0e03492cc7da54a0364c739fb57849910c2d4.tar.xz
nixlib-5ec0e03492cc7da54a0364c739fb57849910c2d4.tar.zst
nixlib-5ec0e03492cc7da54a0364c739fb57849910c2d4.zip
Merge #278061: libedit: update and adopt
...into staging
Diffstat (limited to 'pkgs/by-name/li')
-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;
+  };
+})