diff --git a/sys-libs/ncurses/Manifest b/sys-libs/ncurses/Manifest
index 61cb703..92a0d98 100644
--- a/sys-libs/ncurses/Manifest
+++ b/sys-libs/ncurses/Manifest
@@ -1 +1 @@
-DIST ncurses-6.2.tar.gz 3425862 BLAKE2B 6680cd7a369a4cb8234442a70869c283f0db6db9d7da1da2a7a5c519eb862a2c9b9411957d99f9ebb5089cad00b42e1ca6bc0784327461113df2eeaec695913c SHA512 4c1333dcc30e858e8a9525d4b9aefb60000cfc727bc4a1062bace06ffc4639ad9f6e54f6bdda0e3a0e5ea14de995f96b52b3327d9ec633608792c99a1e8d840d
+DIST ncurses-5.9.tar.gz 2826473 SHA256 9046298fb440324c9d4135ecea7879ffed8546dd1b58e59430ea07a4633f563b SHA512 d7c5e54b6d4d8b9211f0006ca8786f7609d180cc1aaebf4f25e7e35e12959779cf66447359a602daed625621ca32b0d910d67aef3eb8b6fdc3c373819a88faa1 WHIRLPOOL 069e98c6392ce9aca960c72a20f1a502387d33a4b237aaeaa95548024ce4d47b129eafbe0288d21c590e725fe71aaca21cacb300f11a660b7234cb39a777672a
diff --git a/sys-libs/ncurses/files/ncurses-5.8-gfbsd.patch b/sys-libs/ncurses/files/ncurses-5.8-gfbsd.patch
new file mode 100644
index 0000000..0200a14
--- /dev/null
+++ b/sys-libs/ncurses/files/ncurses-5.8-gfbsd.patch
@@ -0,0 +1,24 @@
+we'll hijack the freebsd* case that comes later
+
+--- ncurses-5.6/aclocal.m4
++++ ncurses-5.6/aclocal.m4
+@@ -3806,7 +3806,7 @@
+ 		fi
+ 		cf_cv_rm_so_locs=yes
+ 		;;
+-	linux*|gnu*|k*bsd*-gnu) #(vi
++	linux*|gnu*|k*bsd*-gnu|freebsd*|dragonfly*) #(vi
+ 		if test "$DFT_LWR_MODEL" = "shared" ; then
+ 			LOCAL_LDFLAGS="-Wl,-rpath,\$(LOCAL_LIBDIR)"
+ 			LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
+--- ncurses-5.6/configure
++++ ncurses-5.6/configure
+@@ -3806,7 +3806,7 @@
+ 		fi
+ 		cf_cv_rm_so_locs=yes
+ 		;;
+-	linux*|gnu*|k*bsd*-gnu) #(vi
++	linux*|gnu*|k*bsd*-gnu|freebsd*|dragonfly*) #(vi
+ 		if test "$DFT_LWR_MODEL" = "shared" ; then
+ 			LOCAL_LDFLAGS="-Wl,-rpath,\$(LOCAL_LIBDIR)"
+ 			LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
diff --git a/sys-libs/ncurses/files/ncurses-5.9-fix-clang-build.patch b/sys-libs/ncurses/files/ncurses-5.9-fix-clang-build.patch
new file mode 100644
index 0000000..0c6ca7a
--- /dev/null
+++ b/sys-libs/ncurses/files/ncurses-5.9-fix-clang-build.patch
@@ -0,0 +1,44 @@
+diff --git a/ncurses-5.9/c++/cursesf.h b/ncurses-5.9/c++/cursesf.h
+index 70a30c3..db38063 100644
+--- a/ncurses-5.9/c++/cursesf.h
++++ b/ncurses-5.9/c++/cursesf.h
+@@ -677,7 +677,7 @@ protected:
+   }
+ 
+ public:
+-  NCursesUserForm (NCursesFormField Fields[],
++  NCursesUserForm (NCursesFormField* Fields[],
+ 		   const T* p_UserData = STATIC_CAST(T*)(0),
+ 		   bool with_frame=FALSE,
+ 		   bool autoDelete_Fields=FALSE)
+@@ -686,7 +686,7 @@ public:
+ 	set_user (const_cast<void *>(p_UserData));
+   };
+ 
+-  NCursesUserForm (NCursesFormField Fields[],
++  NCursesUserForm (NCursesFormField* Fields[],
+ 		   int nlines,
+ 		   int ncols,
+ 		   int begin_y = 0,
+diff --git a/ncurses-5.9/c++/cursesm.h b/ncurses-5.9/c++/cursesm.h
+index d9c2273..2d5b79a 100644
+--- a/ncurses-5.9/c++/cursesm.h
++++ b/ncurses-5.9/c++/cursesm.h
+@@ -635,7 +635,7 @@ protected:
+   }
+ 
+ public:
+-  NCursesUserMenu (NCursesMenuItem Items[],
++  NCursesUserMenu (NCursesMenuItem* Items[],
+ 		   const T* p_UserData = STATIC_CAST(T*)(0),
+ 		   bool with_frame=FALSE,
+ 		   bool autoDelete_Items=FALSE)
+@@ -644,7 +644,7 @@ public:
+ 	set_user (const_cast<void *>(p_UserData));
+   };
+ 
+-  NCursesUserMenu (NCursesMenuItem Items[],
++  NCursesUserMenu (NCursesMenuItem* Items[],
+ 		   int nlines,
+ 		   int ncols,
+ 		   int begin_y = 0,
diff --git a/sys-libs/ncurses/files/ncurses-5.9-no-I-usr-include.patch b/sys-libs/ncurses/files/ncurses-5.9-no-I-usr-include.patch
new file mode 100644
index 0000000..5c968e7
--- /dev/null
+++ b/sys-libs/ncurses/files/ncurses-5.9-no-I-usr-include.patch
@@ -0,0 +1,45 @@
+https://bugs.gentoo.org/522586
+
+delete the -I$includedir paths that get added to CPPFLAGS.  these are never
+needed when building natively or cross-compiling and really get in the way
+in both cases (upgrades/cross-compiling/etc...).
+
+extracted from the upstream change:
+http://ncurses.scripts.mit.edu/?p=ncurses.git;a=commitdiff;h=9ee3995474454b7d956885e0fe5c8cac2ae25d42#patch5
+
+--- a/configure
++++ b/configure
+@@ -18596,33 +18596,11 @@ CPPFLAGS="$CPPFLAGS -I. -I../include"
+ if test "$srcdir" != "."; then
+ 	CPPFLAGS="$CPPFLAGS -I\${srcdir}/../include"
+ fi
+-if test "$GCC" != yes; then
+-	CPPFLAGS="$CPPFLAGS -I\${includedir}"
+-elif test "$includedir" != "/usr/include"; then
+-	if test "$includedir" = '${prefix}/include' ; then
+-		if test $prefix != /usr ; then
+-			CPPFLAGS="$CPPFLAGS -I\${includedir}"
+-		fi
+-	else
+-		CPPFLAGS="$CPPFLAGS -I\${includedir}"
+-	fi
+-fi
+ 
+ ACPPFLAGS="-I. -I../include -I../../include $ACPPFLAGS"
+ if test "$srcdir" != "."; then
+ 	ACPPFLAGS="-I\${srcdir}/../../include $ACPPFLAGS"
+ fi
+-if test "$GCC" != yes; then
+-	ACPPFLAGS="$ACPPFLAGS -I\${includedir}"
+-elif test "$includedir" != "/usr/include"; then
+-	if test "$includedir" = '${prefix}/include' ; then
+-		if test $prefix != /usr ; then
+-			ACPPFLAGS="$ACPPFLAGS -I\${includedir}"
+-		fi
+-	else
+-		ACPPFLAGS="$ACPPFLAGS -I\${includedir}"
+-	fi
+-fi
+ 
+ ### Build up pieces for makefile rules
+ echo "$as_me:18628: checking default library suffix" >&5
diff --git a/sys-libs/ncurses/files/ncurses-5.9-pkg-config.patch b/sys-libs/ncurses/files/ncurses-5.9-pkg-config.patch
new file mode 100644
index 0000000..7c3c04a
--- /dev/null
+++ b/sys-libs/ncurses/files/ncurses-5.9-pkg-config.patch
@@ -0,0 +1,26 @@
+disable the $PATH search for the PKG_CONFIG tool.  it isn't needed and just
+gets in the way when setting to a value that might not yet exist.
+
+disable the existence test for the PKG_CONFIG_LIBDIR dir.  it breaks when you
+cross-compile for an ABI that doesn't exist in the root dir (--build).
+
+--- a/configure
++++ b/configure
+@@ -3582,7 +3582,7 @@ fi
+ esac
+ 
+ test -z "$PKG_CONFIG" && PKG_CONFIG=none
+-if test "$PKG_CONFIG" != none ; then
++if false ; then
+ 
+ if test "x$prefix" != xNONE; then
+   cf_path_syntax="$prefix"
+@@ -3626,7 +3626,7 @@ echo $ECHO_N "checking if we should install .pc files for $PKG_CONFIG... $ECHO_C
+ 		PKG_CONFIG_LIBDIR=`echo "$PKG_CONFIG" | sed -e 's,/[^/]*/[^/]*$,,'`/lib/pkgconfig
+ 	fi
+ 	PKG_CONFIG_LIBDIR=`echo "$PKG_CONFIG_LIBDIR" | sed -e 's/^://' -e 's/:.*//'`
+-	if test -n "$PKG_CONFIG_LIBDIR" && test -d "$PKG_CONFIG_LIBDIR" ; then
++	if test -n "$PKG_CONFIG_LIBDIR" ; then
+ 
+ # Check whether --enable-pc-files or --disable-pc-files was given.
+ if test "${enable_pc_files+set}" = set; then
diff --git a/sys-libs/ncurses/files/ncurses-5.9-rxvt-unicode-9.15.patch b/sys-libs/ncurses/files/ncurses-5.9-rxvt-unicode-9.15.patch
new file mode 100644
index 0000000..b6d1924
--- /dev/null
+++ b/sys-libs/ncurses/files/ncurses-5.9-rxvt-unicode-9.15.patch
@@ -0,0 +1,191 @@
+Add rxvt-unicode terminfo, required by rxvt-unicode to function properly.
+
+Providing this in ncurses makes it widely available, much better than having to
+install rxvt-unicode everywhere.
+
+http://bugs.gentoo.org/show_bug.cgi?id=192083
+
+This patch uses the updated rxvt-unicode-9.15 terminfo
+which includes 256 color support and fixes Gentoo bug 383871
+
+http://bugs.gentoo.org/show_bug.cgi?id=383871
+
+--- misc/terminfo.src
++++ misc/terminfo.src
+@@ -4208,6 +4208,176 @@
+ rxvt-16color|xterm with 16 colors like aixterm,
+ 	ncv#32, use=ibm+16color, use=rxvt,
+ 
++# From: Thomas Dickey <dickey@clark.net> 04 Oct 1997
++# Updated: Özgür Kesim <kesim@math.fu-berlin.de> 02 Nov 1997
++# Updated: Marc Lehmann <schmorp@schmorp.de>, 17 Feb 2005
++# Updated: Marc Lehmann <schmorp@schmorp.de>, 04 Nov 2008: change init/reset sequences
++rxvt-unicode|rxvt-unicode terminal (X Window System),
++	am,
++	bce,
++	eo,
++	km,
++	msgr,
++	xenl,
++	hs,
++	cols#80,
++	it#8,
++	lines#24,
++	acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~-A.B+C\,D0EhFiG,
++	bel=^G,
++	blink=\E[5m,
++	bold=\E[1m,
++	civis=\E[?25l,
++	clear=\E[H\E[2J,
++	cnorm=\E[?25h,
++	cr=^M,
++	csr=\E[%i%p1%d;%p2%dr,
++	cub=\E[%p1%dD,
++	cub1=^H,
++	cud=\E[%p1%dB,
++	cud1=^J,
++	cuf=\E[%p1%dC,
++	cuf1=\E[C,
++	cup=\E[%i%p1%d;%p2%dH,
++	cuu=\E[%p1%dA,
++	cuu1=\E[A,
++	cvvis=\E[?25h,
++	dch=\E[%p1%dP,
++	dch1=\E[P,
++	dl=\E[%p1%dM,
++	dl1=\E[M,
++	ed=\E[J,
++	el=\E[K,
++	el1=\E[1K,
++	flash=\E[?5h$<20/>\E[?5l,
++	home=\E[H,
++	hpa=\E[%i%p1%dG,
++	ht=^I,
++	hts=\EH,
++	ich=\E[%p1%d@,
++	ich1=\E[@,
++	il=\E[%p1%dL,
++	il1=\E[L,
++	ind=^J,
++	is1=\E[\041p,
++	is2=\E[r\E[m\E[2J\E[?7;25h\E[?1;3;4;5;6;9;66;1000;1001;1049l\E[4l,
++	kDC=\E[3$,
++	kIC=\E[2$,
++	kEND=\E[8$,
++	kHOM=\E[7$,
++	kLFT=\E[d,
++	kNXT=\E[6$,
++	kPRV=\E[5$,
++	kRIT=\E[c,
++	kbs=\177,
++	ka1=\EOw,
++	ka3=\EOy,
++	kb2=\EOu,
++	kc1=\EOq,
++	kc3=\EOs,
++	kcbt=\E[Z,
++	kcub1=\E[D,
++	kcud1=\E[B,
++	kcuf1=\E[C,
++	kcuu1=\E[A,
++	kdch1=\E[3~,
++	kel=\E[8\^,
++	kend=\E[8~,
++	kent=\EOM,
++	kf1=\E[11~,
++	kf10=\E[21~,
++	kf11=\E[23~,
++	kf12=\E[24~,
++	kf13=\E[25~,
++	kf14=\E[26~,
++	kf15=\E[28~,
++	kf16=\E[29~,
++	kf17=\E[31~,
++	kf18=\E[32~,
++	kf19=\E[33~,
++	kf2=\E[12~,
++	kf20=\E[34~,
++	kf3=\E[13~,
++	kf4=\E[14~,
++	kf5=\E[15~,
++	kf6=\E[17~,
++	kf7=\E[18~,
++	kf8=\E[19~,
++	kf9=\E[20~,
++	kfnd=\E[1~,
++	khome=\E[7~,
++	kich1=\E[2~,
++	kmous=\E[M,
++	knp=\E[6~,
++	kpp=\E[5~,
++	kslt=\E[4~,
++	rc=\E8,
++	rev=\E[7m,
++	ri=\EM,
++	rmso=\E[27m,
++	rmul=\E[24m,
++	rs1=\Ec,
++	rs2=\E[r\E[m\E[?7;25h\E[?1;3;4;5;6;9;66;1000;1001;1049l\E[4l,
++	sgr0=\E[m\E(B,
++	enacs=,
++	smacs=\E(0,
++	rmacs=\E(B,
++	smso=\E[7m,
++	smul=\E[4m,
++	tbc=\E[3g,
++	vpa=\E[%i%p1%dd,
++	colors#88,
++	pairs#7744,
++	btns#5,
++	lm#0,
++	ccc,
++	npc,
++	mc5i,
++	ncv#0,
++	mir,
++	xon,
++	bw,
++	ech=\E[%p1%dX,
++	mc0=\E[i,
++	mc4=\E[4i,
++	mc5=\E[5i,
++	sitm=\E[3m,
++	ritm=\E[23m,
++	smam=\E[?7h,
++	rmam=\E[?7l,
++	smir=\E[4h,
++	rmir=\E[4l,
++	smcup=\E[?1049h,
++	rmcup=\E[r\E[?1049l,
++	smkx=\E=,
++	rmkx=\E>,
++	indn=\E[%p1%dS,
++	rin=\E[%p1%dT,
++	sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\E(0%e\E(B%;,
++	op=\E[39;49m,
++	setaf=\E[38;5;%p1%dm,
++	setab=\E[48;5;%p1%dm,
++	setf=%?%p1%{7}%>%t\E[38;5;%p1%dm%e\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m%;,
++	setb=%?%p1%{7}%>%t\E[48;5;%p1%dm%e\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m%;,
++	initc=\E]4;%p1%d;rgb\:%p2%{65535}%*%{1000}%/%4.4X/%p3%{65535}%*%{1000}%/%4.4X/%p4%{65535}%*%{1000}%/%4.4X\E\\,
++	sc=\E7,
++	s0ds=\E(B,
++	s1ds=\E(0,
++	s2ds=\E*B,
++	s3ds=\E+B,
++	u6=\E[%i%d;%dR,
++	u7=\E[6n,
++	u8=\E[?1;2c,
++	u9=\E[c,
++	tsl=\E]2;,
++	fsl=\007,
++	dsl=\E]2;\007,
++
++rxvt-unicode-256color|rxvt-unicode terminal with 256 colors (X Window System),
++	colors#256,
++	pairs#32767,
++	use=rxvt-unicode,
++
+ # mrxvt 0.5.4
+ #
+ # mrxvt is based on rxvt 2.7.11, but has by default XTERM_FKEYS defined, which
diff --git a/sys-libs/ncurses/files/ncurses-6.0-cppflags-cross.patch b/sys-libs/ncurses/files/ncurses-6.0-cppflags-cross.patch
deleted file mode 100644
index decdc26..0000000
--- a/sys-libs/ncurses/files/ncurses-6.0-cppflags-cross.patch
+++ /dev/null
@@ -1,35 +0,0 @@
-https://bugs.gentoo.org/601426
-https://lists.gnu.org/archive/html/bug-ncurses/2015-02/msg00012.html
-
-From: John Vogel
-Subject: [PATCH] c++ binding missed when cross compiling
-Date: Mon, 16 Feb 2015 01:01:48 -0500
-
-The configure script hard codes the include dir to the prefix'ed include dir,
-when checking if c++ compiler works. This breaks the compiler's built-in search
-path. I've included two patches. The first works on the configure.in file, which
-requires your autoconf stuff to test and I'm not ready to meddle with at the
-moment. The other works directly on the configure file. I've tested the second
-one; it should mirror what the first patch tries to achieve and works for me.
-
---- a/configure
-+++ b/configure
-@@ -2938,10 +2938,6 @@
- 		echo "$as_me:2938: checking if $CXX works" >&5
- echo $ECHO_N "checking if $CXX works... $ECHO_C" >&6
- 
--		save_CPPFLAGS="$CPPFLAGS"
--		eval cf_includedir=${includedir}
--		CPPFLAGS="$CPPFLAGS -I${cf_includedir}"
--
- cat >conftest.$ac_ext <<_ACEOF
- #line 2946 "configure"
- #include "confdefs.h"
-@@ -2978,7 +2974,6 @@
- cf_cxx_works=no
- fi
- rm -f conftest.$ac_objext conftest.$ac_ext
--		CPPFLAGS="$save_CPPFLAGS"
- 
- 		echo "$as_me:2983: result: $cf_cxx_works" >&5
- echo "${ECHO_T}$cf_cxx_works" >&6
diff --git a/sys-libs/ncurses/files/ncurses-6.0-gfbsd.patch b/sys-libs/ncurses/files/ncurses-6.0-gfbsd.patch
new file mode 100644
index 0000000..1403a29
--- /dev/null
+++ b/sys-libs/ncurses/files/ncurses-6.0-gfbsd.patch
@@ -0,0 +1,24 @@
+we'll hijack the freebsd* case that comes later
+
+--- ncurses-6.0/aclocal.m4
++++ ncurses-6.0/aclocal.m4
+@@ -5711,7 +5711,7 @@
+ 		fi
+ 		cf_cv_rm_so_locs=yes
+ 		;;
+-	(linux*|gnu*|k*bsd*-gnu)
++	(linux*|gnu*|k*bsd*-gnu|freebsd*|dragonfly*)
+ 		if test "$DFT_LWR_MODEL" = "shared" ; then
+ 			LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)"
+ 			LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
+--- ncurses-6.0/configure
++++ ncurses-6.0/configure
+@@ -6188,7 +6188,7 @@
+ 		fi
+ 		cf_cv_rm_so_locs=yes
+ 		;;
+-	(linux*|gnu*|k*bsd*-gnu)
++	(linux*|gnu*|k*bsd*-gnu|freebsd*|dragonfly*)
+ 		if test "$DFT_LWR_MODEL" = "shared" ; then
+ 			LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)"
+ 			LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
diff --git a/sys-libs/ncurses/files/ncurses-6.2-no_user_ldflags_in_libs.patch b/sys-libs/ncurses/files/ncurses-6.2-no_user_ldflags_in_libs.patch
deleted file mode 100644
index 66345b5..0000000
--- a/sys-libs/ncurses/files/ncurses-6.2-no_user_ldflags_in_libs.patch
+++ /dev/null
@@ -1,40 +0,0 @@
-From be554be06475b36da2f69aabfd873ad55f7ef95c Mon Sep 17 00:00:00 2001
-From: Lars Wendler <polynomial-c@gentoo.org>
-Date: Thu, 13 Feb 2020 11:51:09 +0100
-Subject: [PATCH] Don't bleed user LDFLAGS into Libs
-
-Signed-off-by: Lars Wendler <polynomial-c@gentoo.org>
----
- misc/gen-pkgconfig.in  | 2 +-
- misc/ncurses-config.in | 2 +-
- 2 files changed, 2 insertions(+), 2 deletions(-)
-
-diff --git a/misc/gen-pkgconfig.in b/misc/gen-pkgconfig.in
-index 8f00b824..009d2156 100644
---- a/misc/gen-pkgconfig.in
-+++ b/misc/gen-pkgconfig.in
-@@ -80,7 +80,7 @@ if [ "$includedir" != "/usr/include" ]; then
- fi
- 
- lib_flags=
--for opt in -L$libdir @LDFLAGS@ @EXTRA_LDFLAGS@ @LIBS@
-+for opt in -L$libdir @LIBS@
- do
- 	case $opt in
- 	-l*) # LIBS is handled specially below
-diff --git a/misc/ncurses-config.in b/misc/ncurses-config.in
-index 7f8ba697..2f1915cd 100644
---- a/misc/ncurses-config.in
-+++ b/misc/ncurses-config.in
-@@ -101,7 +101,7 @@ fi
- # There is no portable way to find the list of standard library directories. 
- # Require a POSIX shell anyway, to keep this simple.
- lib_flags=
--for opt in -L$libdir @LDFLAGS@ @EXTRA_LDFLAGS@ $LIBS
-+for opt in -L$libdir $LIBS
- do
- 	case $opt in
- 	-specs*) # ignore linker specs-files which were used to build library
--- 
-2.25.0
-
diff --git a/sys-libs/ncurses/ncurses-5.9-r7.ebuild b/sys-libs/ncurses/ncurses-5.9-r7.ebuild
new file mode 100644
index 0000000..04faeda
--- /dev/null
+++ b/sys-libs/ncurses/ncurses-5.9-r7.ebuild
@@ -0,0 +1,235 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="5"
+
+inherit eutils flag-o-matic toolchain-funcs multilib-minimal
+
+MY_PV=${PV:0:3}
+PV_SNAP=${PV:4}
+MY_P=${PN}-${MY_PV}
+DESCRIPTION="console display library"
+HOMEPAGE="https://www.gnu.org/software/ncurses/ http://dickey.his.com/ncurses/"
+SRC_URI="mirror://gnu/ncurses/${MY_P}.tar.gz"
+
+LICENSE="MIT"
+# The subslot reflects the SONAME.
+SLOT="0/5"
+KEYWORDS="*"
+IUSE="ada +cxx debug doc gpm minimal profile static-libs tinfo trace unicode"
+
+DEPEND="gpm? ( sys-libs/gpm )"
+#	berkdb? ( sys-libs/db )"
+# Block the older ncurses that installed all files w/SLOT=5. #557472
+RDEPEND="${DEPEND}
+	!<=sys-libs/ncurses-5.9-r4:5
+	!<x11-terms/rxvt-unicode-9.06-r3
+	abi_x86_32? (
+		!<=app-emulation/emul-linux-x86-baselibs-20130224-r12
+		!app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)]
+	)"
+# Put the MULTILIB_USEDEP on gpm in PDEPEND only to avoid circular deps.
+# We can move it to DEPEND and drop the --with-gpm=libgpm.so.1 from the econf
+# line below once we can assume multilib gpm is available everywhere.
+PDEPEND="gpm? ( sys-libs/gpm[${MULTILIB_USEDEP}] )"
+
+S=${WORKDIR}/${MY_P}
+HOSTTIC_DIR=${WORKDIR}/${P}-host
+
+src_prepare() {
+	[[ -n ${PV_SNAP} ]] && epatch "${WORKDIR}"/${MY_P}-${PV_SNAP}-patch.sh
+	epatch "${FILESDIR}"/${PN}-5.8-gfbsd.patch
+	epatch "${FILESDIR}"/${PN}-5.7-nongnu.patch
+	epatch "${FILESDIR}"/${PN}-5.9-rxvt-unicode-9.15.patch #192083 #383871
+	epatch "${FILESDIR}"/${PN}-5.9-fix-clang-build.patch #417763
+	epatch "${FILESDIR}"/${PN}-5.9-pkg-config.patch
+	epatch "${FILESDIR}"/${P}-no-I-usr-include.patch #522586
+	epatch "${FILESDIR}"/${P}-gcc-5.patch #545114
+}
+
+src_configure() {
+	unset TERMINFO #115036
+	tc-export_build_env BUILD_{CC,CPP}
+	BUILD_CPPFLAGS+=" -D_GNU_SOURCE" #214642
+
+	# when cross-compiling, we need to build up our own tic
+	# because people often don't keep matching host/target
+	# ncurses versions #249363
+	if tc-is-cross-compiler && ! ROOT=/ has_version ~sys-libs/${P} ; then
+		CHOST=${CBUILD} \
+		CFLAGS=${BUILD_CFLAGS} \
+		CXXFLAGS=${BUILD_CXXFLAGS} \
+		CPPFLAGS=${BUILD_CPPFLAGS} \
+		LDFLAGS="${BUILD_LDFLAGS} -static" \
+		BUILD_DIR="${HOSTTIC_DIR}" do_configure cross --without-shared --with-normal
+	fi
+	multilib-minimal_src_configure
+}
+
+multilib_src_configure() {
+	do_configure narrowc
+	use unicode && do_configure widec --enable-widec --includedir="${EPREFIX}"/usr/include/ncursesw
+}
+
+do_configure() {
+	ECONF_SOURCE=${S}
+
+	mkdir "${BUILD_DIR}"-$1
+	cd "${BUILD_DIR}"-$1 || die
+	shift
+
+	local conf=(
+		# We need the basic terminfo files in /etc, bug #37026.  We will
+		# add '--with-terminfo-dirs' and then populate /etc/terminfo in
+		# src_install() ...
+		--with-terminfo-dirs="${EPREFIX}/etc/terminfo:${EPREFIX}/usr/share/terminfo"
+
+		# Disabled until #245417 is sorted out.
+		#$(use_with berkdb hashed-db)
+
+		# ncurses is dumb and doesn't install .pc files unless pkg-config
+		# is also installed.  Force the tests to go our way.  Note that it
+		# doesn't actually use pkg-config ... it just looks for set vars.
+		--enable-pc-files
+		--with-pkg-config="$(tc-getPKG_CONFIG)"
+		# This path is used to control where the .pc files are installed.
+		PKG_CONFIG_LIBDIR="${EPREFIX}/usr/$(get_libdir)/pkgconfig"
+
+		# Now the rest of the various standard flags.
+		--with-shared
+		--without-hashed-db
+		$(use_with ada)
+		$(use_with cxx)
+		$(use_with cxx cxx-binding)
+		$(use_with debug)
+		$(use_with profile)
+		# The configure script uses ldd to parse the linked output which
+		# is flaky for cross-compiling/multilib/ldd versions/etc...
+		$(use_with gpm gpm libgpm.so.1)
+		--disable-termcap
+		--enable-symlinks
+		--with-rcs-ids
+		--with-manpage-format=normal
+		--enable-const
+		--enable-colorfgbg
+		--enable-echo
+		$(use_enable !ada warnings)
+		$(use_with debug assertions)
+		$(use_enable !debug leaks)
+		$(use_with debug expanded)
+		$(use_with !debug macros)
+		$(use_with trace)
+		$(use_with tinfo termlib)
+
+		# The chtype/mmask-t settings below are to retain ABI compat
+		# with ncurses-5.4 so dont change em !
+		--with-chtype=long
+		--with-mmask-t=long
+		--disable-ext-colors
+		--disable-ext-mouse
+		--without-pthread
+		--without-reentrant
+	)
+
+	# Force bash until upstream rebuilds the configure script with a newer
+	# version of autotools. #545532
+	CONFIG_SHELL=/bin/bash econf "${conf[@]}" "$@"
+}
+
+src_compile() {
+	# when cross-compiling, we need to build up our own tic
+	# because people often don't keep matching host/target
+	# ncurses versions #249363
+	if tc-is-cross-compiler && ! ROOT=/ has_version ~sys-libs/${P} ; then
+		make_flags="-C progs tic"
+		BUILD_DIR="${HOSTTIC_DIR}" do_compile cross
+	fi
+
+	multilib-minimal_src_compile
+}
+
+multilib_src_compile() {
+	make_flags=""
+	multilib_is_native_abi || make_flags="PROGS= "
+	do_compile narrowc
+	use unicode && do_compile widec
+}
+
+do_compile() {
+	cd "${BUILD_DIR}"-$1 || die
+
+	# A little hack to fix parallel builds ... they break when
+	# generating sources so if we generate the sources first (in
+	# non-parallel), we can then build the rest of the package
+	# in parallel.  This is not really a perf hit since the source
+	# generation is quite small.
+	emake -j1 sources
+	# For some reason, sources depends on pc-files which depends on
+	# compiled libraries which depends on sources which ...
+	# Manually delete the pc-files file so the install step will
+	# create the .pc files we want.
+	rm -f misc/pc-files
+	emake ${make_flags}
+}
+
+multilib_src_install() {
+	# use the cross-compiled tic (if need be) #249363
+	export PATH="${HOSTTIC_DIR}-cross/progs:${PATH}"
+
+	# install unicode version second so that the binaries in /usr/bin
+	# support both wide and narrow
+	cd "${BUILD_DIR}"-narrowc || die
+	emake DESTDIR="${D}" install
+	if use unicode ; then
+		cd "${BUILD_DIR}"-widec || die
+		emake DESTDIR="${D}" install
+	fi
+
+	# Move libncurses{,w} into /lib
+	multilib_is_native_abi && gen_usr_ldscript -a \
+		ncurses \
+		$(usex unicode 'ncursesw' '') \
+		$(use tinfo && usex unicode 'tinfow' '') \
+		$(usev tinfo)
+	if ! tc-is-static-only ; then
+		ln -sf libncurses$(get_libname) "${ED}"/usr/$(get_libdir)/libcurses$(get_libname) || die
+	fi
+	use static-libs || find "${ED}"/usr/ -name '*.a' -a '!' -name '*curses++*.a' -delete
+
+	# Build fails to create this ...
+	dosym ../share/terminfo /usr/$(get_libdir)/terminfo
+}
+
+multilib_src_install_all() {
+#	if ! use berkdb ; then
+		# We need the basic terminfo files in /etc, bug #37026
+		einfo "Installing basic terminfo files in /etc..."
+		for x in ansi console dumb linux rxvt rxvt-unicode \
+				screen{,-256color,.xterm-256color} \
+				vt{52,100,102,200,220} \
+				xterm xterm-{,256}color
+		do
+			local termfile=$(find "${ED}"/usr/share/terminfo/ -name "${x}" 2>/dev/null)
+			local basedir=$(basename $(dirname "${termfile}"))
+
+			if [[ -n ${termfile} ]] ; then
+				dodir /etc/terminfo/${basedir}
+				mv ${termfile} "${ED}"/etc/terminfo/${basedir}/
+				dosym ../../../../etc/terminfo/${basedir}/${x} \
+					/usr/share/terminfo/${basedir}/${x}
+			fi
+		done
+#	fi
+
+	echo "CONFIG_PROTECT_MASK=\"/etc/terminfo\"" > "${T}"/50ncurses
+	doenvd "${T}"/50ncurses
+
+	use minimal && rm -r "${ED}"/usr/share/terminfo*
+	# Because ncurses5-config --terminfo returns the directory we keep it
+	keepdir /usr/share/terminfo #245374
+
+	cd "${S}"
+	dodoc ANNOUNCE MANIFEST NEWS README* TO-DO doc/*.doc
+	use doc && dohtml -r doc/html/
+}
diff --git a/sys-libs/ncurses/ncurses-5.9-r99.ebuild b/sys-libs/ncurses/ncurses-5.9-r99.ebuild
new file mode 100644
index 0000000..6661f0e
--- /dev/null
+++ b/sys-libs/ncurses/ncurses-5.9-r99.ebuild
@@ -0,0 +1,21 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+# Bridge the old SLOT=5[/5] ebuild to the new SLOT=0/5 since the slotmove
+# functionality does not handle implicit subslots correctly. #558856
+
+EAPI="5"
+
+inherit multilib-build
+
+DESCRIPTION="transitional package"
+HOMEPAGE="https://www.gnu.org/software/ncurses/ http://dickey.his.com/ncurses/"
+
+LICENSE="metapackage"
+SLOT="5/5"
+KEYWORDS="*"
+IUSE="ada +cxx gpm static-libs tinfo unicode"
+
+DEPEND="sys-libs/ncurses:0/5[ada?,cxx?,gpm?,static-libs?,tinfo?,unicode?,${MULTILIB_USEDEP}]"
+RDEPEND="${DEPEND}"
diff --git a/sys-libs/ncurses/ncurses-6.2-r1.ebuild b/sys-libs/ncurses/ncurses-6.2-r1.ebuild
deleted file mode 100644
index 5a933fe..0000000
--- a/sys-libs/ncurses/ncurses-6.2-r1.ebuild
+++ /dev/null
@@ -1,316 +0,0 @@
-# Copyright 1999-2020 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI=7
-
-inherit flag-o-matic toolchain-funcs multilib-minimal preserve-libs usr-ldscript
-
-MY_PV="${PV:0:3}"
-MY_P="${PN}-${MY_PV}"
-DESCRIPTION="console display library"
-HOMEPAGE="https://www.gnu.org/software/ncurses/ https://invisible-island.net/ncurses/"
-SRC_URI="mirror://gnu/ncurses/${MY_P}.tar.gz"
-
-if [[ "${PV}" == *_p* ]] ; then
-	SRC_URI+=" ftp://ftp.invisible-island.net/${PN}/${PV/_p*}/${P/_p/-}-patch.sh.bz2
-		https://invisible-mirror.net/archives/${PN}/${PV/_p*}/${P/_p/-}-patch.sh.bz2"
-fi
-
-LICENSE="MIT"
-# The subslot reflects the SONAME.
-SLOT="0/6"
-KEYWORDS="*"
-IUSE="ada +cxx debug doc gpm minimal profile static-libs test threads tinfo trace unicode"
-RESTRICT="!test? ( test )"
-
-DEPEND="gpm? ( sys-libs/gpm[${MULTILIB_USEDEP}] )"
-#	berkdb? ( sys-libs/db )"
-# Block the older ncurses that installed all files w/SLOT=5. #557472
-RDEPEND="${DEPEND}
-	!<=sys-libs/ncurses-5.9-r4:5
-	!<sys-libs/slang-2.3.2_pre23
-	!<x11-terms/rxvt-unicode-9.06-r3
-	!<x11-terms/st-0.6-r1"
-
-S="${WORKDIR}/${MY_P}"
-
-PATCHES=(
-	"${FILESDIR}/${PN}-5.7-nongnu.patch"
-	"${FILESDIR}/${PN}-6.0-rxvt-unicode-9.15.patch" #192083 #383871
-	"${FILESDIR}/${PN}-6.0-pkg-config.patch"
-	"${FILESDIR}/${PN}-5.9-gcc-5.patch" #545114
-	"${FILESDIR}/${PN}-6.0-ticlib.patch" #557360
-	"${FILESDIR}/${PN}-6.0-cppflags-cross.patch" #601426
-	"${FILESDIR}/${PN}-6.2-no_user_ldflags_in_libs.patch"
-)
-
-src_prepare() {
-	if [[ "${PV}" == *_p* ]] ; then
-		eapply "${WORKDIR}"/${P/_p/-}-patch.sh
-	fi
-	default
-}
-
-src_configure() {
-	unset TERMINFO #115036
-	tc-export_build_env BUILD_{CC,CPP}
-	BUILD_CPPFLAGS+=" -D_GNU_SOURCE" #214642
-
-	# Build the various variants of ncurses -- narrow, wide, and threaded. #510440
-	# Order matters here -- we want unicode/thread versions to come last so that the
-	# binaries in /usr/bin support both wide and narrow.
-	# The naming is also important as we use these directly with filenames and when
-	# checking configure flags.
-	NCURSES_TARGETS=(
-		ncurses
-		$(usex unicode 'ncursesw' '')
-		$(usex threads 'ncursest' '')
-		$(use unicode && usex threads 'ncursestw' '')
-	)
-
-	# When installing ncurses, we have to use a compatible version of tic.
-	# This comes up when cross-compiling, doing multilib builds, upgrading,
-	# or installing for the first time.  Build a local copy of tic whenever
-	# the host version isn't available. #249363 #557598
-	if ! has_version -b "~sys-libs/${P}:0" ; then
-		local lbuildflags="-static"
-
-		# some toolchains don't quite support static linking
-		local dbuildflags="-Wl,-rpath,${WORKDIR}/lib"
-		case ${CHOST} in
-			*-darwin*)  dbuildflags=     ;;
-			*-aix*)     dbuildflags=     ;;
-		esac
-		echo "int main() {}" | \
-			$(tc-getCC) -o x -x c - ${lbuildflags} -pipe >& /dev/null \
-			|| lbuildflags="${dbuildflags}"
-
-		# We can't re-use the multilib BUILD_DIR because we run outside of it.
-		BUILD_DIR="${WORKDIR}" \
-		CHOST=${CBUILD} \
-		CFLAGS=${BUILD_CFLAGS} \
-		CXXFLAGS=${BUILD_CXXFLAGS} \
-		CPPFLAGS=${BUILD_CPPFLAGS} \
-		LDFLAGS="${BUILD_LDFLAGS} ${lbuildflags}" \
-		do_configure cross --without-shared --with-normal
-	fi
-	multilib-minimal_src_configure
-}
-
-multilib_src_configure() {
-	local t
-	for t in "${NCURSES_TARGETS[@]}" ; do
-		do_configure "${t}"
-	done
-}
-
-do_configure() {
-	local target=$1
-	shift
-
-	mkdir "${BUILD_DIR}/${target}" || die
-	cd "${BUILD_DIR}/${target}" || die
-
-	local conf=(
-		# We need the basic terminfo files in /etc, bug #37026.  We will
-		# add '--with-terminfo-dirs' and then populate /etc/terminfo in
-		# src_install() ...
-		--with-terminfo-dirs="${EPREFIX}/etc/terminfo:${EPREFIX}/usr/share/terminfo"
-
-		# Disabled until #245417 is sorted out.
-		#$(use_with berkdb hashed-db)
-
-		# Enable installation of .pc files.
-		--enable-pc-files
-		# This path is used to control where the .pc files are installed.
-		--with-pkg-config-libdir="${EPREFIX}/usr/$(get_libdir)/pkgconfig"
-
-		# Now the rest of the various standard flags.
-		--with-shared
-		--without-hashed-db
-		$(use_with ada)
-		$(use_with cxx)
-		$(use_with cxx cxx-binding)
-		--with-cxx-shared
-		$(use_with debug)
-		$(use_with profile)
-		# The configure script uses ldd to parse the linked output which
-		# is flaky for cross-compiling/multilib/ldd versions/etc...
-		$(use_with gpm gpm libgpm.so.1)
-		# Required for building  on mingw-w64, and possibly other windows
-		# platforms, bug #639670
-		$(use_enable kernel_Winnt term-driver)
-		--disable-termcap
-		--enable-symlinks
-		--with-rcs-ids
-		--with-manpage-format=normal
-		--enable-const
-		--enable-colorfgbg
-		--enable-hard-tabs
-		--enable-echo
-		$(use_enable !ada warnings)
-		$(use_with debug assertions)
-		$(use_enable !debug leaks)
-		$(use_with debug expanded)
-		$(use_with !debug macros)
-		$(multilib_native_with progs)
-		$(use_with test tests)
-		$(use_with trace)
-		$(use_with tinfo termlib)
-		--disable-stripping
-	)
-
-	if [[ ${target} == ncurses*w ]] ; then
-		conf+=( --enable-widec )
-	else
-		conf+=( --disable-widec )
-	fi
-	if [[ ${target} == ncursest* ]] ; then
-		conf+=( --with-{pthread,reentrant} )
-	else
-		conf+=( --without-{pthread,reentrant} )
-	fi
-	# Make sure each variant goes in a unique location.
-	if [[ ${target} == "ncurses" ]] ; then
-		# "ncurses" variant goes into "${EPREFIX}"/usr/include
-		# It is needed on Prefix because the configure script appends
-		# "ncurses" to "${prefix}/include" if "${prefix}" is not /usr.
-		conf+=( --enable-overwrite )
-	else
-		conf+=( --includedir="${EPREFIX}"/usr/include/${target} )
-	fi
-	# See comments in src_configure.
-	if [[ ${target} != "cross" ]] ; then
-		local cross_path="${WORKDIR}/cross"
-		[[ -d ${cross_path} ]] && export TIC_PATH="${cross_path}/progs/tic"
-	fi
-
-	# Force bash until upstream rebuilds the configure script with a newer
-	# version of autotools. #545532
-	CONFIG_SHELL=${EPREFIX}/bin/bash \
-	ECONF_SOURCE="${S}" \
-	econf "${conf[@]}" "$@"
-}
-
-src_compile() {
-	# See comments in src_configure.
-	if ! has_version -b "~sys-libs/${P}:0" ; then
-		BUILD_DIR="${WORKDIR}" \
-		do_compile cross -C progs tic
-	fi
-
-	multilib-minimal_src_compile
-}
-
-multilib_src_compile() {
-	local t
-	for t in "${NCURSES_TARGETS[@]}" ; do
-		do_compile "${t}"
-	done
-}
-
-do_compile() {
-	local target=$1
-	shift
-
-	cd "${BUILD_DIR}/${target}" || die
-
-	# A little hack to fix parallel builds ... they break when
-	# generating sources so if we generate the sources first (in
-	# non-parallel), we can then build the rest of the package
-	# in parallel.  This is not really a perf hit since the source
-	# generation is quite small.
-	emake -j1 sources
-	# For some reason, sources depends on pc-files which depends on
-	# compiled libraries which depends on sources which ...
-	# Manually delete the pc-files file so the install step will
-	# create the .pc files we want.
-	rm -f misc/pc-files || die
-	emake "$@"
-}
-
-multilib_src_install() {
-	local target
-	for target in "${NCURSES_TARGETS[@]}" ; do
-		emake -C "${BUILD_DIR}/${target}" DESTDIR="${D}" install
-	done
-
-	# Move main libraries into /.
-	if multilib_is_native_abi ; then
-		gen_usr_ldscript -a \
-			"${NCURSES_TARGETS[@]}" \
-			$(use tinfo && usex unicode 'tinfow' '') \
-			$(usev tinfo)
-	fi
-	if ! tc-is-static-only ; then
-		# Provide a link for -lcurses.
-		ln -sf libncurses$(get_libname) "${ED}"/usr/$(get_libdir)/libcurses$(get_libname) || die
-	fi
-	# don't delete '*.dll.a', needed for linking #631468
-	if ! use static-libs; then
-		find "${ED}"/usr/ -name '*.a' ! -name '*.dll.a' -delete || die
-	fi
-
-	# Build fails to create this ...
-	# -FIXME-
-	# Ugly hackaround for riscv having two parts libdir (#689240)
-	# Replace this hack with an official solution once we have one...
-	# -FIXME-
-	dosym $(sed 's@[^/]\+@..@g' <<< $(get_libdir))/share/terminfo \
-		/usr/$(get_libdir)/terminfo
-}
-
-multilib_src_install_all() {
-#	if ! use berkdb ; then
-		# We need the basic terminfo files in /etc for embedded/recovery. #37026
-		einfo "Installing basic terminfo files in /etc..."
-		local terms=(
-			# Dumb/simple values that show up when using the in-kernel VT.
-			ansi console dumb linux
-			vt{52,100,102,200,220}
-			# [u]rxvt users used to be pretty common.  Probably should drop this
-			# since upstream is dead and people are moving away from it.
-			rxvt{,-unicode}{,-256color}
-			# xterm users are common, as is terminals re-using/spoofing it.
-			xterm xterm-{,256}color
-			# screen is common (and reused by tmux).
-			screen{,-256color}
-			screen.xterm-256color
-		)
-		local x
-		for x in "${terms[@]}"; do
-			local termfile=$(find "${ED}"/usr/share/terminfo/ -name "${x}" 2>/dev/null)
-			local basedir=$(basename "$(dirname "${termfile}")")
-
-			if [[ -n ${termfile} ]] ; then
-				dodir "/etc/terminfo/${basedir}"
-				mv "${termfile}" "${ED}/etc/terminfo/${basedir}/" || die
-				dosym "../../../../etc/terminfo/${basedir}/${x}" \
-					"/usr/share/terminfo/${basedir}/${x}"
-			fi
-		done
-#	fi
-
-	echo "CONFIG_PROTECT_MASK=\"/etc/terminfo\"" | newenvd - 50ncurses
-
-	use minimal && rm -r "${ED}"/usr/share/terminfo*
-	# Because ncurses5-config --terminfo returns the directory we keep it
-	keepdir /usr/share/terminfo #245374
-
-	cd "${S}" || die
-	dodoc ANNOUNCE MANIFEST NEWS README* TO-DO doc/*.doc
-	if use doc ; then
-		docinto html
-		dodoc -r doc/html/
-	fi
-}
-
-pkg_preinst() {
-	preserve_old_lib /$(get_libdir)/libncurses.so.5
-	use unicode && preserve_old_lib /$(get_libdir)/libncursesw.so.5
-}
-
-pkg_postinst() {
-	preserve_old_lib_notify /$(get_libdir)/libncurses.so.5
-	use unicode && preserve_old_lib_notify /$(get_libdir)/libncursesw.so.5
-}
