Gentoo Archives: gentoo-commits

From: "Michał Górny" <mgorny@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] repo/gentoo:master commit in: sys-libs/ncurses-compat/, profiles/prefix/windows/, profiles/base/, ...
Date: Tue, 01 Oct 2019 19:14:18
Message-Id: 1569957224.98f0fc212d58518dbe50e962b56a32cf809b0999.mgorny@gentoo
1 commit: 98f0fc212d58518dbe50e962b56a32cf809b0999
2 Author: Michał Górny <mgorny <AT> gentoo <DOT> org>
3 AuthorDate: Sun Sep 22 19:59:34 2019 +0000
4 Commit: Michał Górny <mgorny <AT> gentoo <DOT> org>
5 CommitDate: Tue Oct 1 19:13:44 2019 +0000
6 URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=98f0fc21
7
8 sys-libs/ncurses-compat: Split ABI compat version out of ncurses
9
10 Split the :5 SONAME compatibility slot of sys-libs/ncurses into its own
11 package. This is mostly meant to resolve outstanding problem with
12 missing slot on dependencies, ncurses being the most common offender.
13 By moving the compatibility into separate package, we no longer have
14 to worry about people mistakenly not specifying the correct slot.
15
16 Signed-off-by: Michał Górny <mgorny <AT> gentoo.org>
17
18 profiles/base/package.use.force | 1 +
19 profiles/prefix/windows/package.use.mask | 3 +-
20 sys-libs/ncurses-compat/Manifest | 1 +
21 .../ncurses-compat/files/ncurses-5.7-nongnu.patch | 11 ++
22 .../ncurses-compat/files/ncurses-5.8-gfbsd.patch | 24 +++
23 .../files/ncurses-5.9-fix-clang-build.patch | 44 +++++
24 .../ncurses-compat/files/ncurses-5.9-gcc-5.patch | 46 +++++
25 .../files/ncurses-5.9-no-I-usr-include.patch | 45 +++++
26 .../files/ncurses-5.9-pkg-config.patch | 26 +++
27 .../files/ncurses-5.9-rxvt-unicode-9.15.patch | 191 ++++++++++++++++++++
28 sys-libs/ncurses-compat/metadata.xml | 18 ++
29 sys-libs/ncurses-compat/ncurses-compat-5.9.ebuild | 199 +++++++++++++++++++++
30 12 files changed, 608 insertions(+), 1 deletion(-)
31
32 diff --git a/profiles/base/package.use.force b/profiles/base/package.use.force
33 index 732de2ed84d..e64b86353b9 100644
34 --- a/profiles/base/package.use.force
35 +++ b/profiles/base/package.use.force
36 @@ -23,6 +23,7 @@ sys-libs/glibc static-libs
37 # affected. On the other hand, disabling USE=tinfo is capable of
38 # breaking installed packages.
39 sys-libs/ncurses tinfo
40 +sys-libs/ncurses-compat tinfo
41
42 # Mart Raudsepp <leio@g.o> (2018-12-14)
43 # Security is not optional if available for the architecture/kernel.
44
45 diff --git a/profiles/prefix/windows/package.use.mask b/profiles/prefix/windows/package.use.mask
46 index 8aa55bffc31..a7308f8b5f2 100644
47 --- a/profiles/prefix/windows/package.use.mask
48 +++ b/profiles/prefix/windows/package.use.mask
49 @@ -1,6 +1,7 @@
50 -# Copyright 1999-2019 Gentoo Foundation
51 +# Copyright 1999-2019 Gentoo Authors
52 # Distributed under the terms of the GNU General Public License v2
53
54 # Michael Haubenwallner <haubi@g.o> (2019-07-31)
55 # KERNEL=Winnt needs term-driver, which conflicts with termlib
56 sys-libs/ncurses tinfo
57 +sys-libs/ncurses-compat tinfo
58
59 diff --git a/sys-libs/ncurses-compat/Manifest b/sys-libs/ncurses-compat/Manifest
60 new file mode 100644
61 index 00000000000..db2086cf89e
62 --- /dev/null
63 +++ b/sys-libs/ncurses-compat/Manifest
64 @@ -0,0 +1 @@
65 +DIST ncurses-5.9.tar.gz 2826473 BLAKE2B 91101b049a5eb6a2674fb86b5eba56515207f490dc7a6348f3194bbc50649717a26aff7a0df64f67ca318b5f244455cd57e760c65b9e551f6ec65b8c035a6ae1 SHA512 d7c5e54b6d4d8b9211f0006ca8786f7609d180cc1aaebf4f25e7e35e12959779cf66447359a602daed625621ca32b0d910d67aef3eb8b6fdc3c373819a88faa1
66
67 diff --git a/sys-libs/ncurses-compat/files/ncurses-5.7-nongnu.patch b/sys-libs/ncurses-compat/files/ncurses-5.7-nongnu.patch
68 new file mode 100644
69 index 00000000000..3f4a4052000
70 --- /dev/null
71 +++ b/sys-libs/ncurses-compat/files/ncurses-5.7-nongnu.patch
72 @@ -0,0 +1,11 @@
73 +--- ncurses-5.7/ncurses/curses.priv.h
74 ++++ ncurses-5.7/ncurses/curses.priv.h
75 +@@ -1452,6 +1452,8 @@ extern NCURSES_EXPORT(void) _nc_expanded
76 +
77 + /* charable.c */
78 + #if USE_WIDEC_SUPPORT
79 ++#include <wchar.h>
80 ++
81 + extern NCURSES_EXPORT(bool) _nc_is_charable(wchar_t);
82 + extern NCURSES_EXPORT(int) _nc_to_char(wint_t);
83 + extern NCURSES_EXPORT(wint_t) _nc_to_widechar(int);
84
85 diff --git a/sys-libs/ncurses-compat/files/ncurses-5.8-gfbsd.patch b/sys-libs/ncurses-compat/files/ncurses-5.8-gfbsd.patch
86 new file mode 100644
87 index 00000000000..0200a14462a
88 --- /dev/null
89 +++ b/sys-libs/ncurses-compat/files/ncurses-5.8-gfbsd.patch
90 @@ -0,0 +1,24 @@
91 +we'll hijack the freebsd* case that comes later
92 +
93 +--- ncurses-5.6/aclocal.m4
94 ++++ ncurses-5.6/aclocal.m4
95 +@@ -3806,7 +3806,7 @@
96 + fi
97 + cf_cv_rm_so_locs=yes
98 + ;;
99 +- linux*|gnu*|k*bsd*-gnu) #(vi
100 ++ linux*|gnu*|k*bsd*-gnu|freebsd*|dragonfly*) #(vi
101 + if test "$DFT_LWR_MODEL" = "shared" ; then
102 + LOCAL_LDFLAGS="-Wl,-rpath,\$(LOCAL_LIBDIR)"
103 + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
104 +--- ncurses-5.6/configure
105 ++++ ncurses-5.6/configure
106 +@@ -3806,7 +3806,7 @@
107 + fi
108 + cf_cv_rm_so_locs=yes
109 + ;;
110 +- linux*|gnu*|k*bsd*-gnu) #(vi
111 ++ linux*|gnu*|k*bsd*-gnu|freebsd*|dragonfly*) #(vi
112 + if test "$DFT_LWR_MODEL" = "shared" ; then
113 + LOCAL_LDFLAGS="-Wl,-rpath,\$(LOCAL_LIBDIR)"
114 + LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
115
116 diff --git a/sys-libs/ncurses-compat/files/ncurses-5.9-fix-clang-build.patch b/sys-libs/ncurses-compat/files/ncurses-5.9-fix-clang-build.patch
117 new file mode 100644
118 index 00000000000..0c6ca7acc4f
119 --- /dev/null
120 +++ b/sys-libs/ncurses-compat/files/ncurses-5.9-fix-clang-build.patch
121 @@ -0,0 +1,44 @@
122 +diff --git a/ncurses-5.9/c++/cursesf.h b/ncurses-5.9/c++/cursesf.h
123 +index 70a30c3..db38063 100644
124 +--- a/ncurses-5.9/c++/cursesf.h
125 ++++ b/ncurses-5.9/c++/cursesf.h
126 +@@ -677,7 +677,7 @@ protected:
127 + }
128 +
129 + public:
130 +- NCursesUserForm (NCursesFormField Fields[],
131 ++ NCursesUserForm (NCursesFormField* Fields[],
132 + const T* p_UserData = STATIC_CAST(T*)(0),
133 + bool with_frame=FALSE,
134 + bool autoDelete_Fields=FALSE)
135 +@@ -686,7 +686,7 @@ public:
136 + set_user (const_cast<void *>(p_UserData));
137 + };
138 +
139 +- NCursesUserForm (NCursesFormField Fields[],
140 ++ NCursesUserForm (NCursesFormField* Fields[],
141 + int nlines,
142 + int ncols,
143 + int begin_y = 0,
144 +diff --git a/ncurses-5.9/c++/cursesm.h b/ncurses-5.9/c++/cursesm.h
145 +index d9c2273..2d5b79a 100644
146 +--- a/ncurses-5.9/c++/cursesm.h
147 ++++ b/ncurses-5.9/c++/cursesm.h
148 +@@ -635,7 +635,7 @@ protected:
149 + }
150 +
151 + public:
152 +- NCursesUserMenu (NCursesMenuItem Items[],
153 ++ NCursesUserMenu (NCursesMenuItem* Items[],
154 + const T* p_UserData = STATIC_CAST(T*)(0),
155 + bool with_frame=FALSE,
156 + bool autoDelete_Items=FALSE)
157 +@@ -644,7 +644,7 @@ public:
158 + set_user (const_cast<void *>(p_UserData));
159 + };
160 +
161 +- NCursesUserMenu (NCursesMenuItem Items[],
162 ++ NCursesUserMenu (NCursesMenuItem* Items[],
163 + int nlines,
164 + int ncols,
165 + int begin_y = 0,
166
167 diff --git a/sys-libs/ncurses-compat/files/ncurses-5.9-gcc-5.patch b/sys-libs/ncurses-compat/files/ncurses-5.9-gcc-5.patch
168 new file mode 100644
169 index 00000000000..2448229b88e
170 --- /dev/null
171 +++ b/sys-libs/ncurses-compat/files/ncurses-5.9-gcc-5.patch
172 @@ -0,0 +1,46 @@
173 +https://bugs.gentoo.org/545114
174 +
175 +extracted from the upstream change (which had many unrelated commits in one)
176 +
177 +From 97bb4678dc03e753290b39bbff30ba2825df9517 Mon Sep 17 00:00:00 2001
178 +From: "Thomas E. Dickey" <dickey@××××××××××××××××.net>
179 +Date: Sun, 7 Dec 2014 03:10:09 +0000
180 +Subject: [PATCH] ncurses 5.9 - patch 20141206
181 +
182 ++ modify MKlib_gen.sh to work around change in development version of
183 + gcc introduced here:
184 + https://gcc.gnu.org/ml/gcc-patches/2014-06/msg02185.html
185 + https://gcc.gnu.org/ml/gcc-patches/2014-07/msg00236.html
186 + (reports by Marcus Shawcroft, Maohui Lei).
187 +
188 +diff --git a/ncurses/base/MKlib_gen.sh b/ncurses/base/MKlib_gen.sh
189 +index d8cc3c9..b91398c 100755
190 +--- a/ncurses/base/MKlib_gen.sh
191 ++++ b/ncurses/base/MKlib_gen.sh
192 +@@ -474,11 +474,22 @@ sed -n -f $ED1 \
193 + -e 's/gen_$//' \
194 + -e 's/ / /g' >>$TMP
195 +
196 ++cat >$ED1 <<EOF
197 ++s/ / /g
198 ++s/^ //
199 ++s/ $//
200 ++s/P_NCURSES_BOOL/NCURSES_BOOL/g
201 ++EOF
202 ++
203 ++# A patch discussed here:
204 ++# https://gcc.gnu.org/ml/gcc-patches/2014-06/msg02185.html
205 ++# introduces spurious #line markers. Work around that by ignoring the system's
206 ++# attempt to define "bool" and using our own symbol here.
207 ++sed -e 's/bool/P_NCURSES_BOOL/g' $TMP > $ED2
208 ++cat $ED2 >$TMP
209 ++
210 + $preprocessor $TMP 2>/dev/null \
211 +-| sed \
212 +- -e 's/ / /g' \
213 +- -e 's/^ //' \
214 +- -e 's/_Bool/NCURSES_BOOL/g' \
215 ++| sed -f $ED1 \
216 + | $AWK -f $AW2 \
217 + | sed -f $ED3 \
218 + | sed \
219
220 diff --git a/sys-libs/ncurses-compat/files/ncurses-5.9-no-I-usr-include.patch b/sys-libs/ncurses-compat/files/ncurses-5.9-no-I-usr-include.patch
221 new file mode 100644
222 index 00000000000..5c968e76c37
223 --- /dev/null
224 +++ b/sys-libs/ncurses-compat/files/ncurses-5.9-no-I-usr-include.patch
225 @@ -0,0 +1,45 @@
226 +https://bugs.gentoo.org/522586
227 +
228 +delete the -I$includedir paths that get added to CPPFLAGS. these are never
229 +needed when building natively or cross-compiling and really get in the way
230 +in both cases (upgrades/cross-compiling/etc...).
231 +
232 +extracted from the upstream change:
233 +http://ncurses.scripts.mit.edu/?p=ncurses.git;a=commitdiff;h=9ee3995474454b7d956885e0fe5c8cac2ae25d42#patch5
234 +
235 +--- a/configure
236 ++++ b/configure
237 +@@ -18596,33 +18596,11 @@ CPPFLAGS="$CPPFLAGS -I. -I../include"
238 + if test "$srcdir" != "."; then
239 + CPPFLAGS="$CPPFLAGS -I\${srcdir}/../include"
240 + fi
241 +-if test "$GCC" != yes; then
242 +- CPPFLAGS="$CPPFLAGS -I\${includedir}"
243 +-elif test "$includedir" != "/usr/include"; then
244 +- if test "$includedir" = '${prefix}/include' ; then
245 +- if test $prefix != /usr ; then
246 +- CPPFLAGS="$CPPFLAGS -I\${includedir}"
247 +- fi
248 +- else
249 +- CPPFLAGS="$CPPFLAGS -I\${includedir}"
250 +- fi
251 +-fi
252 +
253 + ACPPFLAGS="-I. -I../include -I../../include $ACPPFLAGS"
254 + if test "$srcdir" != "."; then
255 + ACPPFLAGS="-I\${srcdir}/../../include $ACPPFLAGS"
256 + fi
257 +-if test "$GCC" != yes; then
258 +- ACPPFLAGS="$ACPPFLAGS -I\${includedir}"
259 +-elif test "$includedir" != "/usr/include"; then
260 +- if test "$includedir" = '${prefix}/include' ; then
261 +- if test $prefix != /usr ; then
262 +- ACPPFLAGS="$ACPPFLAGS -I\${includedir}"
263 +- fi
264 +- else
265 +- ACPPFLAGS="$ACPPFLAGS -I\${includedir}"
266 +- fi
267 +-fi
268 +
269 + ### Build up pieces for makefile rules
270 + echo "$as_me:18628: checking default library suffix" >&5
271
272 diff --git a/sys-libs/ncurses-compat/files/ncurses-5.9-pkg-config.patch b/sys-libs/ncurses-compat/files/ncurses-5.9-pkg-config.patch
273 new file mode 100644
274 index 00000000000..7c3c04a449f
275 --- /dev/null
276 +++ b/sys-libs/ncurses-compat/files/ncurses-5.9-pkg-config.patch
277 @@ -0,0 +1,26 @@
278 +disable the $PATH search for the PKG_CONFIG tool. it isn't needed and just
279 +gets in the way when setting to a value that might not yet exist.
280 +
281 +disable the existence test for the PKG_CONFIG_LIBDIR dir. it breaks when you
282 +cross-compile for an ABI that doesn't exist in the root dir (--build).
283 +
284 +--- a/configure
285 ++++ b/configure
286 +@@ -3582,7 +3582,7 @@ fi
287 + esac
288 +
289 + test -z "$PKG_CONFIG" && PKG_CONFIG=none
290 +-if test "$PKG_CONFIG" != none ; then
291 ++if false ; then
292 +
293 + if test "x$prefix" != xNONE; then
294 + cf_path_syntax="$prefix"
295 +@@ -3626,7 +3626,7 @@ echo $ECHO_N "checking if we should install .pc files for $PKG_CONFIG... $ECHO_C
296 + PKG_CONFIG_LIBDIR=`echo "$PKG_CONFIG" | sed -e 's,/[^/]*/[^/]*$,,'`/lib/pkgconfig
297 + fi
298 + PKG_CONFIG_LIBDIR=`echo "$PKG_CONFIG_LIBDIR" | sed -e 's/^://' -e 's/:.*//'`
299 +- if test -n "$PKG_CONFIG_LIBDIR" && test -d "$PKG_CONFIG_LIBDIR" ; then
300 ++ if test -n "$PKG_CONFIG_LIBDIR" ; then
301 +
302 + # Check whether --enable-pc-files or --disable-pc-files was given.
303 + if test "${enable_pc_files+set}" = set; then
304
305 diff --git a/sys-libs/ncurses-compat/files/ncurses-5.9-rxvt-unicode-9.15.patch b/sys-libs/ncurses-compat/files/ncurses-5.9-rxvt-unicode-9.15.patch
306 new file mode 100644
307 index 00000000000..b6d1924cbe7
308 --- /dev/null
309 +++ b/sys-libs/ncurses-compat/files/ncurses-5.9-rxvt-unicode-9.15.patch
310 @@ -0,0 +1,191 @@
311 +Add rxvt-unicode terminfo, required by rxvt-unicode to function properly.
312 +
313 +Providing this in ncurses makes it widely available, much better than having to
314 +install rxvt-unicode everywhere.
315 +
316 +http://bugs.gentoo.org/show_bug.cgi?id=192083
317 +
318 +This patch uses the updated rxvt-unicode-9.15 terminfo
319 +which includes 256 color support and fixes Gentoo bug 383871
320 +
321 +http://bugs.gentoo.org/show_bug.cgi?id=383871
322 +
323 +--- misc/terminfo.src
324 ++++ misc/terminfo.src
325 +@@ -4208,6 +4208,176 @@
326 + rxvt-16color|xterm with 16 colors like aixterm,
327 + ncv#32, use=ibm+16color, use=rxvt,
328 +
329 ++# From: Thomas Dickey <dickey@×××××.net> 04 Oct 1997
330 ++# Updated: Özgür Kesim <kesim@××××××××××××××.de> 02 Nov 1997
331 ++# Updated: Marc Lehmann <schmorp@×××××××.de>, 17 Feb 2005
332 ++# Updated: Marc Lehmann <schmorp@×××××××.de>, 04 Nov 2008: change init/reset sequences
333 ++rxvt-unicode|rxvt-unicode terminal (X Window System),
334 ++ am,
335 ++ bce,
336 ++ eo,
337 ++ km,
338 ++ msgr,
339 ++ xenl,
340 ++ hs,
341 ++ cols#80,
342 ++ it#8,
343 ++ lines#24,
344 ++ acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~-A.B+C\,D0EhFiG,
345 ++ bel=^G,
346 ++ blink=\E[5m,
347 ++ bold=\E[1m,
348 ++ civis=\E[?25l,
349 ++ clear=\E[H\E[2J,
350 ++ cnorm=\E[?25h,
351 ++ cr=^M,
352 ++ csr=\E[%i%p1%d;%p2%dr,
353 ++ cub=\E[%p1%dD,
354 ++ cub1=^H,
355 ++ cud=\E[%p1%dB,
356 ++ cud1=^J,
357 ++ cuf=\E[%p1%dC,
358 ++ cuf1=\E[C,
359 ++ cup=\E[%i%p1%d;%p2%dH,
360 ++ cuu=\E[%p1%dA,
361 ++ cuu1=\E[A,
362 ++ cvvis=\E[?25h,
363 ++ dch=\E[%p1%dP,
364 ++ dch1=\E[P,
365 ++ dl=\E[%p1%dM,
366 ++ dl1=\E[M,
367 ++ ed=\E[J,
368 ++ el=\E[K,
369 ++ el1=\E[1K,
370 ++ flash=\E[?5h$<20/>\E[?5l,
371 ++ home=\E[H,
372 ++ hpa=\E[%i%p1%dG,
373 ++ ht=^I,
374 ++ hts=\EH,
375 ++ ich=\E[%p1%d@,
376 ++ ich1=\E[@,
377 ++ il=\E[%p1%dL,
378 ++ il1=\E[L,
379 ++ ind=^J,
380 ++ is1=\E[\041p,
381 ++ is2=\E[r\E[m\E[2J\E[?7;25h\E[?1;3;4;5;6;9;66;1000;1001;1049l\E[4l,
382 ++ kDC=\E[3$,
383 ++ kIC=\E[2$,
384 ++ kEND=\E[8$,
385 ++ kHOM=\E[7$,
386 ++ kLFT=\E[d,
387 ++ kNXT=\E[6$,
388 ++ kPRV=\E[5$,
389 ++ kRIT=\E[c,
390 ++ kbs=\177,
391 ++ ka1=\EOw,
392 ++ ka3=\EOy,
393 ++ kb2=\EOu,
394 ++ kc1=\EOq,
395 ++ kc3=\EOs,
396 ++ kcbt=\E[Z,
397 ++ kcub1=\E[D,
398 ++ kcud1=\E[B,
399 ++ kcuf1=\E[C,
400 ++ kcuu1=\E[A,
401 ++ kdch1=\E[3~,
402 ++ kel=\E[8\^,
403 ++ kend=\E[8~,
404 ++ kent=\EOM,
405 ++ kf1=\E[11~,
406 ++ kf10=\E[21~,
407 ++ kf11=\E[23~,
408 ++ kf12=\E[24~,
409 ++ kf13=\E[25~,
410 ++ kf14=\E[26~,
411 ++ kf15=\E[28~,
412 ++ kf16=\E[29~,
413 ++ kf17=\E[31~,
414 ++ kf18=\E[32~,
415 ++ kf19=\E[33~,
416 ++ kf2=\E[12~,
417 ++ kf20=\E[34~,
418 ++ kf3=\E[13~,
419 ++ kf4=\E[14~,
420 ++ kf5=\E[15~,
421 ++ kf6=\E[17~,
422 ++ kf7=\E[18~,
423 ++ kf8=\E[19~,
424 ++ kf9=\E[20~,
425 ++ kfnd=\E[1~,
426 ++ khome=\E[7~,
427 ++ kich1=\E[2~,
428 ++ kmous=\E[M,
429 ++ knp=\E[6~,
430 ++ kpp=\E[5~,
431 ++ kslt=\E[4~,
432 ++ rc=\E8,
433 ++ rev=\E[7m,
434 ++ ri=\EM,
435 ++ rmso=\E[27m,
436 ++ rmul=\E[24m,
437 ++ rs1=\Ec,
438 ++ rs2=\E[r\E[m\E[?7;25h\E[?1;3;4;5;6;9;66;1000;1001;1049l\E[4l,
439 ++ sgr0=\E[m\E(B,
440 ++ enacs=,
441 ++ smacs=\E(0,
442 ++ rmacs=\E(B,
443 ++ smso=\E[7m,
444 ++ smul=\E[4m,
445 ++ tbc=\E[3g,
446 ++ vpa=\E[%i%p1%dd,
447 ++ colors#88,
448 ++ pairs#7744,
449 ++ btns#5,
450 ++ lm#0,
451 ++ ccc,
452 ++ npc,
453 ++ mc5i,
454 ++ ncv#0,
455 ++ mir,
456 ++ xon,
457 ++ bw,
458 ++ ech=\E[%p1%dX,
459 ++ mc0=\E[i,
460 ++ mc4=\E[4i,
461 ++ mc5=\E[5i,
462 ++ sitm=\E[3m,
463 ++ ritm=\E[23m,
464 ++ smam=\E[?7h,
465 ++ rmam=\E[?7l,
466 ++ smir=\E[4h,
467 ++ rmir=\E[4l,
468 ++ smcup=\E[?1049h,
469 ++ rmcup=\E[r\E[?1049l,
470 ++ smkx=\E=,
471 ++ rmkx=\E>,
472 ++ indn=\E[%p1%dS,
473 ++ rin=\E[%p1%dT,
474 ++ 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%;,
475 ++ op=\E[39;49m,
476 ++ setaf=\E[38;5;%p1%dm,
477 ++ setab=\E[48;5;%p1%dm,
478 ++ 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%;,
479 ++ 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%;,
480 ++ initc=\E]4;%p1%d;rgb\:%p2%{65535}%*%{1000}%/%4.4X/%p3%{65535}%*%{1000}%/%4.4X/%p4%{65535}%*%{1000}%/%4.4X\E\\,
481 ++ sc=\E7,
482 ++ s0ds=\E(B,
483 ++ s1ds=\E(0,
484 ++ s2ds=\E*B,
485 ++ s3ds=\E+B,
486 ++ u6=\E[%i%d;%dR,
487 ++ u7=\E[6n,
488 ++ u8=\E[?1;2c,
489 ++ u9=\E[c,
490 ++ tsl=\E]2;,
491 ++ fsl=\007,
492 ++ dsl=\E]2;\007,
493 ++
494 ++rxvt-unicode-256color|rxvt-unicode terminal with 256 colors (X Window System),
495 ++ colors#256,
496 ++ pairs#32767,
497 ++ use=rxvt-unicode,
498 ++
499 + # mrxvt 0.5.4
500 + #
501 + # mrxvt is based on rxvt 2.7.11, but has by default XTERM_FKEYS defined, which
502
503 diff --git a/sys-libs/ncurses-compat/metadata.xml b/sys-libs/ncurses-compat/metadata.xml
504 new file mode 100644
505 index 00000000000..471b2667ab5
506 --- /dev/null
507 +++ b/sys-libs/ncurses-compat/metadata.xml
508 @@ -0,0 +1,18 @@
509 +<?xml version="1.0" encoding="UTF-8"?>
510 +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
511 +<pkgmetadata>
512 +<maintainer type="project">
513 + <email>base-system@g.o</email>
514 + <name>Gentoo Base System</name>
515 +</maintainer>
516 +<use>
517 + <flag name="tinfo">
518 + Build curses library (libncurses) sep from the low-level terminfo
519 + library (libtinfo) -- usually needed only for binary packages -- but
520 + it is binary compatible in either mode
521 + </flag>
522 +</use>
523 +<upstream>
524 + <remote-id type="cpe">cpe:/a:gnu:ncurses</remote-id>
525 +</upstream>
526 +</pkgmetadata>
527
528 diff --git a/sys-libs/ncurses-compat/ncurses-compat-5.9.ebuild b/sys-libs/ncurses-compat/ncurses-compat-5.9.ebuild
529 new file mode 100644
530 index 00000000000..936a384a044
531 --- /dev/null
532 +++ b/sys-libs/ncurses-compat/ncurses-compat-5.9.ebuild
533 @@ -0,0 +1,199 @@
534 +# Copyright 1999-2019 Gentoo Authors
535 +# Distributed under the terms of the GNU General Public License v2
536 +
537 +# This version is just for the ABI .5 library
538 +
539 +EAPI="5"
540 +
541 +inherit eutils toolchain-funcs multilib-minimal
542 +
543 +MY_PV=${PV:0:3}
544 +MY_P=ncurses-${MY_PV}
545 +DESCRIPTION="console display library"
546 +HOMEPAGE="https://www.gnu.org/software/ncurses/ https://invisible-island.net/ncurses/"
547 +SRC_URI="mirror://gnu/ncurses/${MY_P}.tar.gz"
548 +
549 +LICENSE="MIT"
550 +# The subslot reflects the SONAME.
551 +SLOT="5/5"
552 +KEYWORDS="alpha amd64 arm arm64 hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~amd64-fbsd ~x86-fbsd"
553 +IUSE="gpm tinfo unicode"
554 +
555 +DEPEND="gpm? ( sys-libs/gpm[${MULTILIB_USEDEP}] )"
556 +# Block the ncurses-5 that installs the same lib. #557472
557 +RDEPEND="${DEPEND}
558 + !<sys-libs/ncurses-6:0
559 + !sys-libs/ncurses:5"
560 +
561 +S=${WORKDIR}/${MY_P}
562 +
563 +PATCHES=(
564 + "${FILESDIR}"/ncurses-5.8-gfbsd.patch
565 + "${FILESDIR}"/ncurses-5.7-nongnu.patch
566 + "${FILESDIR}"/ncurses-5.9-rxvt-unicode-9.15.patch #192083 #383871
567 + "${FILESDIR}"/ncurses-5.9-fix-clang-build.patch #417763
568 + "${FILESDIR}"/ncurses-5.9-pkg-config.patch
569 + "${FILESDIR}"/ncurses-5.9-no-I-usr-include.patch #522586
570 + "${FILESDIR}"/ncurses-5.9-gcc-5.patch #545114
571 +)
572 +
573 +src_prepare() {
574 + epatch "${PATCHES[@]}"
575 +}
576 +
577 +src_configure() {
578 + unset TERMINFO #115036
579 + tc-export_build_env BUILD_{CC,CPP}
580 + BUILD_CPPFLAGS+=" -D_GNU_SOURCE" #214642
581 +
582 + # Build the various variants of ncurses -- narrow, wide, and threaded. #510440
583 + # Order matters here -- we want unicode/thread versions to come last so that the
584 + # binaries in /usr/bin support both wide and narrow.
585 + # The naming is also important as we use these directly with filenames and when
586 + # checking configure flags.
587 + NCURSES_TARGETS=(
588 + ncurses
589 + $(usex unicode 'ncursesw' '')
590 + )
591 +
592 + # When installing ncurses, we have to use a compatible version of tic.
593 + # This comes up when cross-compiling, doing multilib builds, upgrading,
594 + # or installing for the first time. Build a local copy of tic whenever
595 + # the host version isn't available. #249363 #557598
596 + if ! ROOT=/ has_version "~sys-libs/${P}" ; then
597 + # We can't re-use the multilib BUILD_DIR because we run outside of it.
598 + BUILD_DIR="${WORKDIR}" \
599 + CHOST=${CBUILD} \
600 + CFLAGS=${BUILD_CFLAGS} \
601 + CXXFLAGS=${BUILD_CXXFLAGS} \
602 + CPPFLAGS=${BUILD_CPPFLAGS} \
603 + LDFLAGS="${BUILD_LDFLAGS} -static" \
604 + do_configure cross --without-shared --with-normal
605 + fi
606 + multilib-minimal_src_configure
607 +}
608 +
609 +multilib_src_configure() {
610 + local t
611 + for t in "${NCURSES_TARGETS[@]}" ; do
612 + do_configure "${t}"
613 + done
614 +}
615 +
616 +do_configure() {
617 + local target=$1
618 + shift
619 +
620 + mkdir "${BUILD_DIR}/${target}"
621 + cd "${BUILD_DIR}/${target}" || die
622 +
623 + local conf=(
624 + # We need the basic terminfo files in /etc, bug #37026. We will
625 + # add '--with-terminfo-dirs' and then populate /etc/terminfo in
626 + # src_install() ...
627 + --with-terminfo-dirs="${EPREFIX}/etc/terminfo:${EPREFIX}/usr/share/terminfo"
628 +
629 + # Now the rest of the various standard flags.
630 + --without-hashed-db
631 + --disable-pc-files
632 + --with-shared
633 + --without-hashed-db
634 + --without-ada
635 + --without-cxx
636 + --without-cxx-binding
637 + --without-debug
638 + --without-profile
639 + # The configure script uses ldd to parse the linked output which
640 + # is flaky for cross-compiling/multilib/ldd versions/etc...
641 + $(use_with gpm gpm libgpm.so.1)
642 + --disable-termcap
643 + --enable-symlinks
644 + --with-rcs-ids
645 + --with-manpage-format=normal
646 + --enable-const
647 + --enable-colorfgbg
648 + --enable-echo
649 + --disable-warnings
650 + --without-assertions
651 + --enable-leaks
652 + --without-expanded
653 + --with-macros
654 + --without-progs
655 + --without-tests
656 + --without-trace
657 + $(use_with tinfo termlib)
658 +
659 + # The chtype/mmask-t settings below are to retain ABI compat
660 + # with ncurses-5.4 so dont change em !
661 + --with-chtype=long
662 + --with-mmask-t=long
663 + --disable-ext-colors
664 + --disable-ext-mouse
665 + --without-{pthread,reentrant}
666 + )
667 +
668 + if [[ ${target} == ncurses*w ]] ; then
669 + conf+=( --enable-widec )
670 + else
671 + conf+=( --disable-widec )
672 + fi
673 + # Make sure each variant goes in a unique location.
674 + if [[ ${target} != "ncurses" ]] ; then
675 + conf+=( --includedir="${EPREFIX}"/usr/include/${target} )
676 + fi
677 + # See comments in src_configure.
678 + if [[ ${target} != "cross" ]] ; then
679 + local cross_path="${WORKDIR}/cross"
680 + [[ -d ${cross_path} ]] && export TIC_PATH="${cross_path}/progs/tic"
681 + else
682 + conf+=( --with-progs )
683 + fi
684 +
685 + # Force bash until upstream rebuilds the configure script with a newer
686 + # version of autotools. #545532
687 + CONFIG_SHELL=/bin/bash \
688 + ECONF_SOURCE=${S} \
689 + econf "${conf[@]}" "$@"
690 +}
691 +
692 +src_compile() {
693 + # See comments in src_configure.
694 + if ! ROOT=/ has_version "~sys-libs/${P}" ; then
695 + BUILD_DIR="${WORKDIR}" \
696 + do_compile cross -C progs tic
697 + fi
698 +
699 + multilib-minimal_src_compile
700 +}
701 +
702 +multilib_src_compile() {
703 + local t
704 + for t in "${NCURSES_TARGETS[@]}" ; do
705 + do_compile "${t}"
706 + done
707 +}
708 +
709 +do_compile() {
710 + local target=$1
711 + shift
712 +
713 + cd "${BUILD_DIR}/${target}" || die
714 +
715 + # A little hack to fix parallel builds ... they break when
716 + # generating sources so if we generate the sources first (in
717 + # non-parallel), we can then build the rest of the package
718 + # in parallel. This is not really a perf hit since the source
719 + # generation is quite small.
720 + emake -j1 sources
721 + emake "$@"
722 +}
723 +
724 +multilib_src_install() {
725 + local target lib
726 + for target in "${NCURSES_TARGETS[@]}" ; do
727 + cd "${BUILD_DIR}/${target}/lib" || die
728 + for lib in *5.9 ; do
729 + newlib.so "${lib}" "${lib%%.9}"
730 + done
731 + done
732 +}