ncurses5: Use v6 sources but compiled with --with-abi-version=5
So we don't have to dig out why ncurses5.9 stops compiling with newer compiler versions again and again. Inspired by: https://aur.archlinux.org/cgit/aur.git/tree/PKGBUILD?h=ncurses5-compat-libs
This commit is contained in:
parent
11e98eaae7
commit
3d24ae9b44
|
@ -11,23 +11,18 @@
|
||||||
}:
|
}:
|
||||||
|
|
||||||
stdenv.mkDerivation rec {
|
stdenv.mkDerivation rec {
|
||||||
version = if abiVersion == "5" then "5.9" else "6.0-20171125";
|
version = "6.0-20171125";
|
||||||
name = "ncurses-${version}";
|
name = "ncurses-${version}" + lib.optionalString (abiVersion == "5") "-abi5-compat";
|
||||||
|
|
||||||
src = fetchurl (if abiVersion == "5" then {
|
src = fetchurl {
|
||||||
url = "mirror://gnu/ncurses/${name}.tar.gz";
|
|
||||||
sha256 = "0fsn7xis81za62afan0vvm38bvgzg5wfmv1m86flqcj0nj7jjilh";
|
|
||||||
} else {
|
|
||||||
urls = [
|
urls = [
|
||||||
"ftp://ftp.invisible-island.net/ncurses/current/${name}.tgz"
|
"ftp://ftp.invisible-island.net/ncurses/current/ncurses-${version}.tgz"
|
||||||
"https://invisible-mirror.net/archives/ncurses/current/${name}.tgz"
|
"https://invisible-mirror.net/archives/ncurses/current/ncurses-${version}.tgz"
|
||||||
];
|
];
|
||||||
sha256 = "11adzj0k82nlgpfrflabvqn2m7fmhp2y6pd7ivmapynxqb9vvb92";
|
sha256 = "11adzj0k82nlgpfrflabvqn2m7fmhp2y6pd7ivmapynxqb9vvb92";
|
||||||
});
|
};
|
||||||
|
|
||||||
# Unnecessarily complicated in order to avoid mass-rebuilds
|
patches = lib.optional (!stdenv.cc.isClang) ./clang.patch;
|
||||||
patches = lib.optional (!stdenv.cc.isClang || abiVersion == "5") ./clang.patch
|
|
||||||
++ lib.optional (stdenv.cc.isGNU && abiVersion == "5") ./gcc-5.patch;
|
|
||||||
|
|
||||||
outputs = [ "out" "dev" "man" ];
|
outputs = [ "out" "dev" "man" ];
|
||||||
setOutputFlags = false; # some aren't supported
|
setOutputFlags = false; # some aren't supported
|
||||||
|
@ -37,7 +32,8 @@ stdenv.mkDerivation rec {
|
||||||
"--without-debug"
|
"--without-debug"
|
||||||
"--enable-pc-files"
|
"--enable-pc-files"
|
||||||
"--enable-symlinks"
|
"--enable-symlinks"
|
||||||
] ++ lib.optional unicode "--enable-widec";
|
] ++ lib.optional unicode "--enable-widec"
|
||||||
|
++ lib.optional (abiVersion == "5") "--with-abi-version=5";
|
||||||
|
|
||||||
# Only the C compiler, and explicitly not C++ compiler needs this flag on solaris:
|
# Only the C compiler, and explicitly not C++ compiler needs this flag on solaris:
|
||||||
CFLAGS = lib.optionalString stdenv.isSunOS "-D_XOPEN_SOURCE_EXTENDED";
|
CFLAGS = lib.optionalString stdenv.isSunOS "-D_XOPEN_SOURCE_EXTENDED";
|
||||||
|
|
|
@ -1,46 +0,0 @@
|
||||||
https://bugs.gentoo.org/545114
|
|
||||||
|
|
||||||
extracted from the upstream change (which had many unrelated commits in one)
|
|
||||||
|
|
||||||
From 97bb4678dc03e753290b39bbff30ba2825df9517 Mon Sep 17 00:00:00 2001
|
|
||||||
From: "Thomas E. Dickey" <dickey@invisible-island.net>
|
|
||||||
Date: Sun, 7 Dec 2014 03:10:09 +0000
|
|
||||||
Subject: [PATCH] ncurses 5.9 - patch 20141206
|
|
||||||
|
|
||||||
+ modify MKlib_gen.sh to work around change in development version of
|
|
||||||
gcc introduced here:
|
|
||||||
https://gcc.gnu.org/ml/gcc-patches/2014-06/msg02185.html
|
|
||||||
https://gcc.gnu.org/ml/gcc-patches/2014-07/msg00236.html
|
|
||||||
(reports by Marcus Shawcroft, Maohui Lei).
|
|
||||||
|
|
||||||
diff --git a/ncurses/base/MKlib_gen.sh b/ncurses/base/MKlib_gen.sh
|
|
||||||
index d8cc3c9..b91398c 100755
|
|
||||||
--- a/ncurses/base/MKlib_gen.sh
|
|
||||||
+++ b/ncurses/base/MKlib_gen.sh
|
|
||||||
@@ -474,11 +474,22 @@ sed -n -f $ED1 \
|
|
||||||
-e 's/gen_$//' \
|
|
||||||
-e 's/ / /g' >>$TMP
|
|
||||||
|
|
||||||
+cat >$ED1 <<EOF
|
|
||||||
+s/ / /g
|
|
||||||
+s/^ //
|
|
||||||
+s/ $//
|
|
||||||
+s/P_NCURSES_BOOL/NCURSES_BOOL/g
|
|
||||||
+EOF
|
|
||||||
+
|
|
||||||
+# A patch discussed here:
|
|
||||||
+# https://gcc.gnu.org/ml/gcc-patches/2014-06/msg02185.html
|
|
||||||
+# introduces spurious #line markers. Work around that by ignoring the system's
|
|
||||||
+# attempt to define "bool" and using our own symbol here.
|
|
||||||
+sed -e 's/bool/P_NCURSES_BOOL/g' $TMP > $ED2
|
|
||||||
+cat $ED2 >$TMP
|
|
||||||
+
|
|
||||||
$preprocessor $TMP 2>/dev/null \
|
|
||||||
-| sed \
|
|
||||||
- -e 's/ / /g' \
|
|
||||||
- -e 's/^ //' \
|
|
||||||
- -e 's/_Bool/NCURSES_BOOL/g' \
|
|
||||||
+| sed -f $ED1 \
|
|
||||||
| $AWK -f $AW2 \
|
|
||||||
| sed -f $ED3 \
|
|
||||||
| sed \
|
|
|
@ -10297,7 +10297,6 @@ with pkgs;
|
||||||
notify-sharp = callPackage ../development/libraries/notify-sharp { };
|
notify-sharp = callPackage ../development/libraries/notify-sharp { };
|
||||||
|
|
||||||
ncurses5 = callPackage ../development/libraries/ncurses {
|
ncurses5 = callPackage ../development/libraries/ncurses {
|
||||||
stdenv = if stdenv.cc.isGNU then overrideCC stdenv gcc6 else stdenv; # Hacky!
|
|
||||||
abiVersion = "5";
|
abiVersion = "5";
|
||||||
};
|
};
|
||||||
ncurses6 = callPackage ../development/libraries/ncurses {
|
ncurses6 = callPackage ../development/libraries/ncurses {
|
||||||
|
|
Loading…
Reference in a new issue