diff --git a/sys-libs/ncurses/Manifest b/sys-libs/ncurses/Manifest
index 92a0d98..61cb703 100644
--- a/sys-libs/ncurses/Manifest
+++ b/sys-libs/ncurses/Manifest
@@ -1 +1 @@
-DIST ncurses-5.9.tar.gz 2826473 SHA256 9046298fb440324c9d4135ecea7879ffed8546dd1b58e59430ea07a4633f563b SHA512 d7c5e54b6d4d8b9211f0006ca8786f7609d180cc1aaebf4f25e7e35e12959779cf66447359a602daed625621ca32b0d910d67aef3eb8b6fdc3c373819a88faa1 WHIRLPOOL 069e98c6392ce9aca960c72a20f1a502387d33a4b237aaeaa95548024ce4d47b129eafbe0288d21c590e725fe71aaca21cacb300f11a660b7234cb39a777672a
+DIST ncurses-6.2.tar.gz 3425862 BLAKE2B 6680cd7a369a4cb8234442a70869c283f0db6db9d7da1da2a7a5c519eb862a2c9b9411957d99f9ebb5089cad00b42e1ca6bc0784327461113df2eeaec695913c SHA512 4c1333dcc30e858e8a9525d4b9aefb60000cfc727bc4a1062bace06ffc4639ad9f6e54f6bdda0e3a0e5ea14de995f96b52b3327d9ec633608792c99a1e8d840d
diff --git a/sys-libs/ncurses/files/ncurses-5.8-gfbsd.patch b/sys-libs/ncurses/files/ncurses-5.8-gfbsd.patch
deleted file mode 100644
index 0200a14..0000000
--- a/sys-libs/ncurses/files/ncurses-5.8-gfbsd.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-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
deleted file mode 100644
index 0c6ca7a..0000000
--- a/sys-libs/ncurses/files/ncurses-5.9-fix-clang-build.patch
+++ /dev/null
@@ -1,44 +0,0 @@
-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
deleted file mode 100644
index 5c968e7..0000000
--- a/sys-libs/ncurses/files/ncurses-5.9-no-I-usr-include.patch
+++ /dev/null
@@ -1,45 +0,0 @@
-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
deleted file mode 100644
index 7c3c04a..0000000
--- a/sys-libs/ncurses/files/ncurses-5.9-pkg-config.patch
+++ /dev/null
@@ -1,26 +0,0 @@
-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
deleted file mode 100644
index b6d1924..0000000
--- a/sys-libs/ncurses/files/ncurses-5.9-rxvt-unicode-9.15.patch
+++ /dev/null
@@ -1,191 +0,0 @@
-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
new file mode 100644
index 0000000..decdc26
--- /dev/null
+++ b/sys-libs/ncurses/files/ncurses-6.0-cppflags-cross.patch
@@ -0,0 +1,35 @@
+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
deleted file mode 100644
index 1403a29..0000000
--- a/sys-libs/ncurses/files/ncurses-6.0-gfbsd.patch
+++ /dev/null
@@ -1,24 +0,0 @@
-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
new file mode 100644
index 0000000..66345b5
--- /dev/null
+++ b/sys-libs/ncurses/files/ncurses-6.2-no_user_ldflags_in_libs.patch
@@ -0,0 +1,40 @@
+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
deleted file mode 100644
index 04faeda..0000000
--- a/sys-libs/ncurses/ncurses-5.9-r7.ebuild
+++ /dev/null
@@ -1,235 +0,0 @@
-# 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
deleted file mode 100644
index 6661f0e..0000000
--- a/sys-libs/ncurses/ncurses-5.9-r99.ebuild
+++ /dev/null
@@ -1,21 +0,0 @@
-# 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
new file mode 100644
index 0000000..5a933fe
--- /dev/null
+++ b/sys-libs/ncurses/ncurses-6.2-r1.ebuild
@@ -0,0 +1,316 @@
+# 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
+}
