diff --git a/cursescheck b/cursescheck new file mode 100644 index 0000000..53cc942 --- /dev/null +++ b/cursescheck @@ -0,0 +1,156 @@ +#!/bin/bash +# Test ACS Line Graphics and REP capability of a terminal line +# Author: Werner Fink + +typeset -i rep=0 line=0 +for s in 0 1 2 +do + test -c /proc/$$/fd/$s || { echo "Missing /proc/$$/fd/$s" 1>&2; exit 1; } +done +for d in null tty +do + test -c /dev/$d || { echo "Missing /dev/$d" 1>&2; exit 1; } +done +for d in pts fd +do + test -d /dev/$d || { echo "Missing /dev/$d/" 1>&2; exit 1; } +done +for p in tput infocmp fold tty grep od +do + type -p $p 1> /dev/null 2>&1 || { echo "Missing $p in path" 1>&2; exit 1; } +done + +typeset -r tty=$(tty) || { echo "Not on a terminal line" 1>&2; exit 1; } +typeset -i width=$(tput cols) || { echo "No terminal size" 1>&2; exit 1; } +typeset -i height=$(tput lines) || { echo "No terminal size" 1>&2; exit 1; } + +# +# There are terminal type which uses non printable characters for +# Line Graphic. Therefore store them as numbers or sequences within +# arrays used later on. +# +typeset -i c +typeset -a tmp="($(tput acsc | od -A none -tx1))" acsc acsn +for ((c=0;c<${#tmp[@]};c+=2)) +do + acsc[0x${tmp[c]}]="0x${tmp[c+1]}" + acsn[0x${tmp[c]}]=\\x${tmp[c+1]} +done +unset tmp c + +# +# Init terminal +# +tput init || { echo "Not a terminal" 1>&2; exit 1; } + +# +# Restore screen at exit +# +trap 'tput cvvis; tput rmcup' EXIT HUP INT TERM + +# +# Save screen, make curse invisible, and goto upper left +# +tput smcup +tput civis +tput cup 0 0 +tput ed + +echo Checking for Line Graphics on $tty with TERM=$TERM +let line++ +if ((${#acsc[@]} > 0)) +then + echo Terminal TERM=$TERM has ASC Line Graphics, check them. + let line++ + tput cup $((height/2)) 0 + tput -S <<-! + enacs + smacs + ! + echo -ne ${acsn[0x6c]} + for ((c=0;c<20;c++)); do echo -ne ${acsn[0x71]}; done + echo -ne ${acsn[0x6b]} + tput cup $((height/2+1)) 0 + echo -ne ${acsn[0x78]} + tput hpa 21 + echo -ne ${acsn[0x78]} + tput cup $((height/2+2)) 0 + echo -ne ${acsn[0x78]} + tput hpa 21 + echo -ne ${acsn[0x78]} + tput cup $((height/2+3)) 0 + echo -ne ${acsn[0x78]} + tput hpa 21 + echo -ne ${acsn[0x78]} + tput cup $((height/2+4)) 0 + echo -ne ${acsn[0x6d]} + for ((c=0;c<20;c++)); do echo -ne ${acsn[0x71]}; done + echo -ne ${acsn[0x6a]} + tput -S <<-! + rmacs + ! + tput cup $line 0 + tput cvvis + echo -n "OK> " + read -t 5 yesno +else + echo Terminal TERM=$TERM has no ASC Line Graphics. Done + exit 0 +fi + +# +# Could use clear +# +tput -S <<-! + cup 0 0 + ed + ! +let line=0 +if test -n "$(infocmp -T $TERM -1 | grep rep=)" +then + echo Found rep capability in terminfo database for TERM=$TERM + let rep++ + let line++ +else + echo No rep capability given in terminfo database for TERM=$TERM + echo -n "OK> " + read -t 5 yesno + exit 0 +fi +if ((rep > 0)) +then + echo Testing rep capability of TERM=$TERM + let line++ + tput -S <<-! + civis + enacs + smacs + bold + cup $((height/2)) 0 + rep ${acsc[0x6c]} 0 + rep ${acsc[0x71]} 20 + rep ${acsc[0x6b]} 0 + cup $((height/2+1)) 0 + rep ${acsc[0x78]} 0 + hpa 21 + rep ${acsc[0x78]} 0 + cup $((height/2+2)) 0 + rep ${acsc[0x78]} 0 + hpa 21 + rep ${acsc[0x78]} 0 + cup $((height/2+3)) 0 + rep ${acsc[0x78]} 0 + hpa 21 + rep ${acsc[0x78]} 0 + cup $((height/2+4)) 0 + rep ${acsc[0x6d]} 0 + rep ${acsc[0x71]} 20 + rep ${acsc[0x6a]} 0 + sgr0 + rmacs + cvvis + ! + tput cup $line 0 + echo -n "OK> " + read -t 5 yesno +fi diff --git a/ncurses-5.9-ibm327x.dif b/ncurses-5.9-ibm327x.dif index 4cbcf70..6298989 100644 --- a/ncurses-5.9-ibm327x.dif +++ b/ncurses-5.9-ibm327x.dif @@ -4,7 +4,7 @@ --- misc/terminfo.src +++ misc/terminfo.src 2018-10-29 10:23:47.271511864 +0000 -@@ -17278,8 +17278,8 @@ hazel|exec80|h80|he80|Hazeltine Executiv +@@ -17396,8 +17396,8 @@ hazel|exec80|h80|he80|Hazeltine Executiv # ibm327x|line mode IBM 3270 style, diff --git a/ncurses-6.2-patches.tar.bz2 b/ncurses-6.2-patches.tar.bz2 index 74022f0..3c6c228 100644 --- a/ncurses-6.2-patches.tar.bz2 +++ b/ncurses-6.2-patches.tar.bz2 @@ -1,3 +1,3 @@ version https://git-lfs.github.com/spec/v1 -oid sha256:f61ac977d629ad5c99ad6653b7eb4f9b854fcdaa13d62eea509a084f48223ac1 -size 1878007 +oid sha256:1daabf054484e9eba9c115243d0c75f72fc52ce43ea06c58cefa3111503807ad +size 1970432 diff --git a/ncurses-6.2.dif b/ncurses-6.2.dif index 5cfb7f6..719bbea 100644 --- a/ncurses-6.2.dif +++ b/ncurses-6.2.dif @@ -7,7 +7,7 @@ man/man_db.renames | 2 man/ncurses.3x | 4 + misc/gen-pkgconfig.in | 8 ++ - misc/terminfo.src | 138 ++++++++++++++++++++++++++++++++++--------- + misc/terminfo.src | 107 ++++++++++++++++++++++++++++++++++++------- ncurses/Makefile.in | 2 ncurses/curses.priv.h | 2 ncurses/run_cmd.sh | 11 +++ @@ -18,7 +18,7 @@ ncurses/tinfo/read_termcap.c | 21 ++++-- progs/Makefile.in | 4 - test/test.priv.h | 4 - - 19 files changed, 249 insertions(+), 79 deletions(-) + 19 files changed, 231 insertions(+), 68 deletions(-) --- aclocal.m4 +++ aclocal.m4 2021-01-11 07:35:24.208330490 +0000 @@ -160,7 +160,16 @@ ;; (openbsd[2-9].*|mirbsd*) LD_RPATH_OPT="-Wl,-rpath," -@@ -14603,12 +14603,15 @@ cat >>$cf_edit_man <&6 + + if test "x$with_pcre2" != xno ; then + cf_with_pcre2_ok=no +- for cf_with_pcre2 in libpcre2 libpcre2-posix libpcre ++ for cf_with_pcre2 in libpcre2 libpcre2-8 libpcre2-posix libpcre + do + + if test "$PKG_CONFIG" != none && "$PKG_CONFIG" --exists "$cf_with_pcre2"; then +@@ -14472,12 +14472,15 @@ cat >>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <\$TMP CF_EOF if test -n "$cf_compress" ; then -@@ -14733,9 +14736,9 @@ cat >>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <>$cf_edit_man <. @@ -420,7 +429,7 @@ # Linux 2.6.x has a fix for SI/SO to work with UTF-8 encoding added here: # http://lkml.iu.edu/hypermail/linux/kernel/0602.2/0738.html -@@ -1050,6 +1058,7 @@ linux2.6|linux 2.6.x console, +@@ -1048,6 +1056,7 @@ linux2.6|linux 2.6.x console, acsc=++\,\,--..00``aaffgghhiijjkkllmmnnooppqqrrssttuuvvwwxxy yzz{{||}}~~, enacs=\E)0, rmacs=^O, @@ -428,7 +437,7 @@ sgr=\E[0;10%?%p1%t;7%;%?%p2%t;4%;%?%p3%t;7%;%?%p4%t;5%;%?%p5 %t;2%;%?%p6%t;1%;m%?%p9%t\016%e\017%;, sgr0=\E[m\017, smacs=^N, use=linux2.2, -@@ -5210,8 +5219,26 @@ xterm-noapp|xterm with cursor keys in no +@@ -5347,8 +5356,26 @@ xterm-noapp|xterm with cursor keys in no xterm-24|vs100|xterms|xterm terminal emulator (X Window System), lines#24, use=xterm-old, @@ -455,7 +464,7 @@ use=xterm-new, # This entry assumes that xterm's handling of VT100 SI/SO is disabled by -@@ -5556,7 +5583,7 @@ xterms-sun|small (80x24) xterm with sunF +@@ -5693,7 +5720,7 @@ xterms-sun|small (80x24) xterm with sunF #### GNOME (VTE) # this describes the alpha-version of Gnome terminal shipped with Redhat 6.0 @@ -464,7 +473,7 @@ bce, kdch1=^?, kf1=\EOP, kf2=\EOQ, kf3=\EOR, kf4=\EOS, use=xterm-color, -@@ -5807,10 +5834,14 @@ mgt|Multi GNOME Terminal, +@@ -5944,10 +5971,14 @@ mgt|Multi GNOME Terminal, #### KDE # This is kvt 0-18.7, shipped with Redhat 6.0 (though whether it supports bce # or not is debatable). @@ -480,7 +489,7 @@ # Konsole 1.0.1 (2001/11/25) # (formerly known as kvt) # -@@ -6062,7 +6093,7 @@ mlterm3|multi lingual terminal emulator, +@@ -6199,7 +6230,7 @@ mlterm3|multi lingual terminal emulator, mlterm2|multi lingual terminal emulator, am, eslok, km, mc5i, mir, msgr, npc, xenl, XT, colors#8, cols#80, it#8, lines#24, pairs#64, @@ -489,7 +498,7 @@ bel=^G, bold=\E[1m, cbt=\E[Z, clear=\E[H\E[2J, cr=\r, csr=\E[%i%p1%d;%p2%dr, cub=\E[%p1%dD, cub1=^H, cud=\E[%p1%dB, cud1=\n, cuf=\E[%p1%dC, cuf1=\E[C, -@@ -6140,7 +6171,7 @@ rxvt-basic|rxvt terminal base (X Window +@@ -6276,7 +6307,7 @@ rxvt-basic|rxvt terminal base (X Window enacs=\E(B\E)0, flash=\E[?5h$<100/>\E[?5l, home=\E[H, ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\n, is1=\E[?47l\E=\E[?1l, @@ -498,18 +507,18 @@ kcbt=\E[Z, kmous=\E[M, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmkx=\E>, rmso=\E[27m, rmul=\E[24m, -@@ -6235,8 +6266,8 @@ rxvt-basic|rxvt terminal base (X Window +@@ -6371,8 +6402,8 @@ rxvt-basic|rxvt terminal base (X Window # Removed kDN6, etc (control+shift) since rxvt does not implement this -TD rxvt+pcfkeys|fragment for PC-style fkeys, kDC=\E[3$, kEND=\E[8$, kHOM=\E[7$, kIC=\E[2$, kLFT=\E[d, - kNXT=\E[6$, kPRV=\E[5$, kRIT=\E[c, kcub1=\E[D, kcud1=\E[B, -- kcuf1=\E[C, kcuu1=\E[A, kdch1=\E[3~, kel=\E[8\^, +- kcuf1=\E[C, kcuu1=\E[A, kel=\E[8\^, kend=\E[8~, kf1=\E[11~, + kNXT=\E[6$, kPRV=\E[5$, kRIT=\E[c, kcub1=\EOD, kcud1=\EOB, -+ kcuf1=\EOC, kcuu1=\EOA, kdch1=\E[3~, kel=\E[8\^, - kend=\E[8~, 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~, -@@ -6327,6 +6358,38 @@ rxvt-cygwin-native|rxvt terminal emulato ++ kcuf1=\EOC, kcuu1=\EOA, kel=\E[8\^, kend=\E[8~, 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~, +@@ -6462,6 +6493,38 @@ rxvt-cygwin-native|rxvt terminal emulato \302x\263y\363z\362{\343|\330~\376, use=rxvt-cygwin, @@ -548,7 +557,7 @@ # This variant is supposed to work with rxvt 2.7.7 when compiled with # NO_BRIGHTCOLOR defined. rxvt needs more work... rxvt-16color|rxvt with 16 colors like aixterm, -@@ -6391,7 +6454,7 @@ Eterm|Eterm-color|Eterm with xterm-style +@@ -6526,7 +6589,7 @@ Eterm|Eterm-color|Eterm with xterm-style home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, ind=\n, is1=\E[?47l\E>\E[?1l, is2=\E[r\E[m\E[2J\E[H\E[?7h\E[?1;3;4;6l\E[4l, kNXT@, @@ -557,7 +566,7 @@ kc1=\E[8~, kc3=\E[6~, kent=\EOM, khlp=\E[28~, kmous=\E[M, mc4=\E[4i, mc5=\E[5i, rc=\E8, rev=\E[7m, ri=\EM, rmacs=^O, rmam=\E[?7l, rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmkx=, -@@ -7381,7 +7444,7 @@ pty|4bsd pseudo teletype, +@@ -7514,7 +7577,7 @@ pty|4bsd pseudo teletype, # https://github.com/emacs-mirror/emacs/blob/master/lisp/term.el # # The codes supported by the term.el terminal emulation in GNU Emacs 19.30 @@ -566,7 +575,7 @@ am, mir, xenl, cols#80, lines#24, bel=^G, bold=\E[1m, clear=\E[H\E[J, cr=\r, -@@ -7394,6 +7457,13 @@ eterm|gnu emacs term.el terminal emulati +@@ -7527,6 +7590,13 @@ eterm|gnu emacs term.el terminal emulati rmcup=\E[2J\E[?47l\E8, rmir=\E[4l, rmso=\E[m, rmul=\E[m, sgr0=\E[m, smcup=\E7\E[?47h, smir=\E[4h, smso=\E[7m, smul=\E[4m, @@ -580,16 +589,16 @@ # The codes supported by the term.el terminal emulation in GNU Emacs 22.2 eterm-color|Emacs term.el terminal emulator term-protocol-version 0.96, -@@ -7522,7 +7592,7 @@ screen|VT 100/ANSI X3.64 virtual termina +@@ -7654,7 +7724,7 @@ screen|VT 100/ANSI X3.64 virtual termina dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, el1=\E[1K, enacs=\E(B\E)0, flash=\Eg, home=\E[H, hpa=\E[%i%p1%dG, ht=^I, hts=\EH, ich=\E[%p1%d@, il=\E[%p1%dL, il1=\E[L, - ind=\n, indn=\E[%p1%dS, is2=\E)0, kbs=^H, kcbt=\E[Z, + ind=\n, indn=\E[%p1%dS, is2=\E)0, kbs=^?, kcbt=\E[Z, - kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, - kdch1=\E[3~, kend=\E[4~, kf1=\EOP, kf10=\E[21~, - kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR, kf4=\EOS, -@@ -7644,6 +7714,13 @@ screen.xterm-xfree86|screen.xterm-new|sc + kcub1=\EOD, kcud1=\EOB, kcuf1=\EOC, kcuu1=\EOA, kf1=\EOP, + kf10=\E[21~, kf11=\E[23~, kf12=\E[24~, kf2=\EOQ, kf3=\EOR, + kf4=\EOS, kf5=\E[15~, kf6=\E[17~, kf7=\E[18~, kf8=\E[19~, +@@ -7774,6 +7844,13 @@ screen.xterm-xfree86|screen.xterm-new|sc use=xterm+x11mouse, use=xterm-new, #:screen.xterm|screen for modern xterm, #: use=screen.xterm-new, @@ -603,7 +612,7 @@ # xterm-r6 does not really support khome/kend unless it is propped up by # the translations resource. screen.xterm-r6|screen customized for X11R6 xterm, -@@ -7731,7 +7808,7 @@ screen2|old VT 100/ANSI X3.64 virtual te +@@ -7861,7 +7938,7 @@ screen2|old VT 100/ANSI X3.64 virtual te cup=\E[%i%p1%d;%p2%dH, cuu=\E[%p1%dA, cuu1=\E[A, dch=\E[%p1%dP, dch1=\E[P, dl=\E[%p1%dM, dl1=\E[M, ed=\E[J, el=\E[K, ht=^I, hts=\EH, ich=\E[%p1%d@, ich1=, il=\E[%p1%dL, @@ -612,7 +621,7 @@ kcuu1=\EA, kf0=\E~, kf1=\ES, kf2=\ET, kf3=\EU, kf4=\EV, kf5=\EW, kf6=\EP, kf7=\EQ, kf8=\ER, kf9=\E0I, khome=\EH, nel=\r\n, rc=\E8, ri=\EM, rmir=\E[4l, rmso=\E[23m, -@@ -9638,7 +9715,7 @@ hp700-wy|HP700/41 emulating wyse30, +@@ -9759,7 +9836,7 @@ hp700-wy|HP700/41 emulating wyse30, ri=\Ej, rmir=\Er, rmso=\EG0$<10/>, rmul=\EG0$<10/>, sgr0=\EG0$<10/>, smir=\Eq, smso=\EG4$<10/>, smul=\EG8$<10/>, tbc=\E0, vpa=\E[%p1%{32}%+%c, @@ -621,7 +630,7 @@ am, da, db, xhp, cols#80, lh#2, lines#24, lm#0, lw#8, nlab#8, acsc=0cjgktlrmfn/q\,t5u6v8w7x., bel=^G, blink=\E&dA, -@@ -17289,7 +17366,7 @@ ibm3101|i3101|IBM 3101-10, +@@ -17406,7 +17483,7 @@ ibm3101|i3101|IBM 3101-10, cup=\EY%p1%{32}%+%c%p2%{32}%+%c, cuu1=\EA, ed=\EJ, el=\EI, home=\EH, hts=\E0, ind=\n, kcub1=\ED, kcud1=\EB, kcuf1=\EC, kcuu1=\EA, nel=\r\n, tbc=\EH, @@ -630,7 +639,7 @@ is2=\E S, rmacs=\E>B, rmcup=\E>B, rs2=\E S, s0ds=\E>B, sgr=\E4%{64}%?%p1%t%{65}%|%;%?%p2%t%{66}%|%;%?%p3%t%{65}%|%; %?%p4%t%{68}%|%;%?%p5%t%{64}%|%;%?%p6%t%{72}%|%;%?%p7%t -@@ -17547,7 +17624,7 @@ lft|lft-pc850|LFT-PC850|IBM LFT PC850 De +@@ -17664,7 +17741,7 @@ lft|lft-pc850|LFT-PC850|IBM LFT PC850 De tbc=\E[3g, use=ecma+index, # "Megapel" refers to the display adapter, which was used with the IBM RT # aka IBM 6150. @@ -766,7 +775,7 @@ } else if (strstr(env, "screen") != 0 --- ncurses/tinfo/read_entry.c +++ ncurses/tinfo/read_entry.c 2021-01-11 07:27:32.121419944 +0000 -@@ -552,6 +552,7 @@ _nc_read_file_entry(const char *const fi +@@ -551,6 +551,7 @@ _nc_read_file_entry(const char *const fi FILE *fp = 0; int code; @@ -774,7 +783,7 @@ if (_nc_access(filename, R_OK) < 0 || (fp = fopen(filename, BIN_R)) == 0) { TR(TRACE_DATABASE, ("cannot open terminfo %s (errno=%d)", filename, errno)); -@@ -572,6 +573,7 @@ _nc_read_file_entry(const char *const fi +@@ -571,6 +572,7 @@ _nc_read_file_entry(const char *const fi } fclose(fp); } @@ -851,7 +860,7 @@ --- test/test.priv.h +++ test/test.priv.h 2021-01-11 07:27:32.121419944 +0000 -@@ -1024,12 +1024,12 @@ extern char *_nc_strstr(const char *, co +@@ -1027,12 +1027,12 @@ extern char *_nc_strstr(const char *, co #endif /* out-of-band values for representing absent capabilities */ diff --git a/ncurses.changes b/ncurses.changes index 2cd70cf..69c85a8 100644 --- a/ncurses.changes +++ b/ncurses.changes @@ -1,3 +1,90 @@ +------------------------------------------------------------------- +Tue Mar 16 12:20:59 UTC 2021 - Dr. Werner Fink + +- New package ncurses-tests which includes examples and tests +- Include bash script cursescheck for ASC and REP capabilities + +------------------------------------------------------------------- +Mon Mar 15 07:36:19 UTC 2021 - Dr. Werner Fink + +- Add ncurses patch 20210313 + + improve configure CF_LD_SEARCHPATH macro used for ncurses*-config and + ".pc" files, from dialog changes. + + reduce dependency of math-library in test programs. + + minor fixes for test_tparm.c (cf: 20210306) + + mention "ncurses" prefix in curses_version() manpage (report by + Michal Bielinski). + +------------------------------------------------------------------- +Tue Mar 9 11:16:31 UTC 2021 - Dr. Werner Fink + +- Only libpcre2 for ncurses ABI 6 +- Make linker script for ABI 6 check for needed libpcre2 + +------------------------------------------------------------------- +Tue Mar 9 09:02:47 UTC 2021 - Dr. Werner Fink + +- Add ncurses patch 20210306 + + improved test/test_parm.c, by limiting the tests to capabilities + that might have parameters or padding, and combined with tputs test. + + improve discussion of padding versus tparm and tputs in + man/curs_terminfo.3x + + update portability note for FreeBSD in man/tput.1 + +------------------------------------------------------------------- +Mon Mar 1 07:15:42 UTC 2021 - Dr. Werner Fink + +- Add ncurses patch 20210227 + + modify tic/infocmp to eliminate unnecessary "\" to escape ":" in + terminfo format. + + add check in tic for duplicate "use=" clauses. + +------------------------------------------------------------------- +Mon Feb 22 08:41:45 UTC 2021 - Dr. Werner Fink + +- Add ncurses patch 20210220 + + improve tic warning when oc/op do not mention SGR 39/49 for xterm + compatible XT flag. + + revert change to lib_addch.c in waddch_literal() from 20210130, since + the followup fix in PutCharLR() actually corrects the problem while + this change causes too-early filling/wrapping (report by Johannes + Altmanninger). + + add/use vt220+pcedit and vt220+vtedit -TD + + add scrt/securecrt and absolute -TD + + add nel to xterm-new, though supported since X11R5 -TD + + add/use xterm+nofkeys -TD + + move use of ecma+italics from xterm-basic to xterm+nofkeys -TD +- Port patch ncurses-6.2.dif mainly terminfo.src + +------------------------------------------------------------------- +Mon Feb 15 11:15:34 UTC 2021 - Dr. Werner Fink + +- Add ncurses patch 20210213 + + add test/back_ground.c, to exercise the wide-character background + functions. + + add a check in _nc_build_wch() in case the background character is a + wide-character, rather than a new part of a multibyte character. + + improve tracemunch's coverage of form/menu/panel libraries. + + improve tracemunch's checking/reporting the type for the first + parameter, e.g., "WINDOW*" rather than "#1". + +------------------------------------------------------------------- +Tue Feb 9 09:33:11 UTC 2021 - Dr. Werner Fink + +- For (lib)pcre2 support the devel package has to require this + +------------------------------------------------------------------- +Mon Feb 8 08:46:27 UTC 2021 - Dr. Werner Fink + +- Add ncurses patch 20210206 + + provide for wide-characters as background character in wbkgrnd + (report/testcase by Anton Vidovic) + + add name for Fedora's pcre2 to configure check for "--with-pcre2" + option, from xterm #363 -TD + + modify adjustment in PutCharLR to restore the cursor position before + writing to the lower-right corner, rather than decrementing the + cursor column, in case it was a double-width character (cf: 20210130). + ------------------------------------------------------------------- Mon Feb 1 07:58:24 UTC 2021 - Dr. Werner Fink diff --git a/ncurses.spec b/ncurses.spec index 9683882..ccfbdfe 100644 --- a/ncurses.spec +++ b/ncurses.spec @@ -25,6 +25,7 @@ %bcond_with memleakck %bcond_without onlytinfo %bcond_with libbsd +%bcond_without usepcre2 %if %{with onlytinfo} %global soname_tinfo tinfo @@ -47,6 +48,9 @@ BuildRequires: pkg-config BuildRequires: pkgconfig(libbsd) %endif BuildRequires: screen +%if %{with usepcre2} +BuildRequires: pkgconfig(libpcre2-8) +%endif %if 0%{?suse_version} > 1130 BuildRequires: gpm-devel %else @@ -80,6 +84,7 @@ Source4: ncurses-rpmlintrc Source5: ftp://ftp.invisible-island.net/pub/ncurses/current/tack-1.09-20200220.tgz Source6: edit.sed Source7: baselibs.conf +Source8: cursescheck Patch0: ncurses-6.2.dif Patch1: ncurses-5.9-ibm327x.dif Patch2: ncurses-5.7-tack.dif @@ -116,6 +121,14 @@ tset -- terminal-initialization utility reset -- terminal initialization utility +%package -n ncurses-tests +Summary: Tools using the new curses libraries +License: MIT +Group: System/Base + +%description -n ncurses-tests +The ncurses based test programs + %package -n terminfo-base Summary: A terminal descriptions database License: MIT @@ -213,6 +226,9 @@ Provides: ncurses:%{_incdir}/ncurses.h Requires: %{_bindir}/tack Requires: libncurses6 = %{version}-%{release} Requires: ncurses = %{version}-%{release} +%if %{with usepcre2} +Requires: pkgconfig(libpcre2-8) +%endif # bug437293 %ifarch ppc64 Obsoletes: ncurses-devel-64bit @@ -494,6 +510,9 @@ mv tack-* tack --with-default-terminfo-dir=%{_datadir}/terminfo \ --with-terminfo-dirs=%{_sysconfdir}/terminfo:%{_datadir}/terminfo \ --with-xterm-kbs=del \ +%if %{with usepcre2} + --with-pcre2 \ +%endif --disable-stripping \ --disable-root-environ \ --disable-termcap \ @@ -661,11 +680,17 @@ mv tack-* tack CFLAGS="$CFLAGS -I%{root}%{_incdir}/ncursesw/ -I%{root}%{_incdir}/" \ LDFLAGS="$LDFLAGS -Wl,-rpath-link=%{root}%{_libdir} -L%{root}%{_libdir}" \ LIBS="$LDFLAGS" \ - ./configure --with-ncursesw --enable-widec --prefix=$PWD + ./configure --with-ncursesw --with-screen=ncursesw --enable-widec --prefix=%{_prefix} --bindir=%{_libexecdir}/ncurses --datadir=%{_datadir}/ncurses + LD_LIBRARY_PATH=%{root}%{_libdir} \ +%if %{with usepcre2} + make %{?_smp_mflags} TEST_ARGS='-lformw -lmenuw -lpanelw -lncursesw -lticw -l%{soname_tinfo} -Wl,--as-needed' TEST_LIBS='-lutil -lpthread -lpcre2-posix -lpcre2-8' + make install DESTDIR=${PWD} TEST_ARGS='-lformw -lmenuw -lpanelw -lncursesw -lticw -l%{soname_tinfo} -Wl,--as-needed' TEST_LIBS='-lutil -lpthread -lpcre2-posix -lpcre2-8' +%else make %{?_smp_mflags} TEST_ARGS='-lformw -lmenuw -lpanelw -lncursesw -lticw -l%{soname_tinfo} -Wl,--as-needed' TEST_LIBS='-lutil -lpthread' - make install TEST_ARGS='-lformw -lmenuw -lpanelw -lncursesw -lticw -l%{soname_tinfo} -Wl,--as-needed' TEST_LIBS='-lutil -lpthread' - mv bin binw + make install DESTDIR=${PWD} TEST_ARGS='-lformw -lmenuw -lpanelw -lncursesw -lticw -l%{soname_tinfo} -Wl,--as-needed' TEST_LIBS='-lutil -lpthread' +%endif + mv usr usr.back make distclean popd %endif @@ -690,6 +715,9 @@ mv tack-* tack --disable-opaque-panel \ --disable-ext-mouse \ --disable-widec \ +%if %{with usepcre2} + --without-pcre2 \ +%endif --with-termlib=tinfo \ --with-ticlib=tic \ %if %{with symversion} @@ -796,10 +824,16 @@ includedir5=%{_incdir}/ncurses5' "$pc" CFLAGS="$CFLAGS -I%{root}%{_incdir}ncurses/ -I%{root}%{_incdir}/" \ LDFLAGS="$LDFLAGS -Wl,-rpath-link=%{root}%{_libdir} -L%{root}%{_libdir}" \ LIBS="$LDFLAGS" \ - ./configure --with-ncurses --disable-widec --prefix=$PWD + ./configure --with-ncurses --with-screen=ncurses --disable-widec --prefix=%{_prefix} --bindir=%{_libexecdir}/ncurses --datadir=%{_datadir}/ncurses LD_LIBRARY_PATH=%{root}%{_libdir} \ +%if %{with usepcre2} + make %{?_smp_mflags} TEST_ARGS='-lform -lmenu -lpanel -lncurses -ltic -ltinfo -Wl,--as-needed' TEST_LIBS='-lutil -lpthread -lpcre2-posix -lpcre2-8' + make install DESTDIR=${PWD} TEST_ARGS='-lform -lmenu -lpanel -lncurses -ltic -ltinfo -Wl,--as-needed' TEST_LIBS='-lutil -lpthread -lpcre2-posix -lpcre2-8' +%else make %{?_smp_mflags} TEST_ARGS='-lform -lmenu -lpanel -lncurses -ltic -ltinfo -Wl,--as-needed' TEST_LIBS='-lutil -lpthread' - make install TEST_ARGS='-lform -lmenu -lpanel -lncurses -ltic -ltinfo -Wl,--as-needed' TEST_LIBS='-lutil -lpthread' + make install DESTDIR=${PWD} TEST_ARGS='-lform -lmenu -lpanel -lncurses -ltic -ltinfo -Wl,--as-needed' TEST_LIBS='-lutil -lpthread' +%endif + rm -rf usr/ make distclean popd %endif @@ -826,6 +860,9 @@ includedir5=%{_incdir}/ncurses5' "$pc" --disable-opaque-panel \ --disable-ext-mouse \ --enable-widec \ +%if %{with usepcre2} + --without-pcre2 \ +%endif --with-termlib=%{soname_tinfo} \ --with-ticlib=ticw \ %if %{with symversion} @@ -875,6 +912,11 @@ includedir5=%{_incdir}/ncurses5' "$pc" %{root}%{_bindir}/ncursesw5-config %install +%if %{with usepcre2} + pcre2="-lpcre2-posix -lpcre2-8" +%else + pcre2="" +%endif PATH=$PWD/gzip:$PATH (cd %{root}/; tar -cpSf - *)|tar -xpsSf - -C %{buildroot}/ rm -rf %{root} @@ -893,12 +935,12 @@ includedir5=%{_incdir}/ncurses5' "$pc" libncursesw*) rm -f ${lnk} echo '/* GNU ld script */' > ${lnk} - echo "INPUT(${lib} AS_NEEDED(-l%{soname_tinfo} -ldl))" >> ${lnk} + echo "INPUT(${lib} AS_NEEDED(-l%{soname_tinfo} -ldl $pcre2))" >> ${lnk} ;; libncurses*) rm -f ${lnk} echo '/* GNU ld script */' > ${lnk} - echo "INPUT(${lib} AS_NEEDED(-ltinfo -ldl))" >> ${lnk} + echo "INPUT(${lib} AS_NEEDED(-ltinfo -ldl $pcre2))" >> ${lnk} ;; *) ln -sf ${lib} %{buildroot}%{_libdir}/${model}.so esac @@ -1088,6 +1130,15 @@ includedir5=%{_incdir}/ncurses5' "$pc" # cp -p pc/*.pc %{buildroot}%{_libdir}/pkgconfig/ +# +# Install test binaries and, if exists, the manual pages +# +pushd test + mv usr.back usr + (cd usr/; tar -cpSf - .) | tar -xpsSf - -C %{buildroot}%{_prefix} + install -m 0755 %{S:8} %{buildroot}%{_libexecdir}/ncurses/ +popd + %if 0%{?_crossbuild} # No test here %else @@ -1103,7 +1154,7 @@ pushd test expect -d <<-'EOF' set env(TERM) xterm set timeout 20 - spawn -noecho "binw/newdemo" + spawn -noecho ".%{_libexecdir}/ncurses/newdemo" send -- "x" sleep 5 send -- "x" @@ -1116,7 +1167,7 @@ pushd test expect -d <<-'EOF' set env(TERM) xterm set timeout 20 - spawn -noecho "bin/newdemo" + spawn -noecho ".%{_libexecdir}/ncurses/newdemo" send -- "x" sleep 5 send -- "x" @@ -1164,16 +1215,24 @@ popd %{_bindir}/toe %{_bindir}/tput %{_bindir}/tset -%doc %{_mandir}/man1/clear.1.gz -%doc %{_mandir}/man1/infocmp.1.gz -%doc %{_mandir}/man1/reset.1.gz -%doc %{_mandir}/man1/tabs.1.gz -%doc %{_mandir}/man1/toe.1.gz -%doc %{_mandir}/man1/tput.1.gz -%doc %{_mandir}/man1/tset.1.gz -%doc %{_mandir}/man5/*.gz +%doc %{_mandir}/man1/clear.1%{ext_man} +%doc %{_mandir}/man1/infocmp.1%{ext_man} +%doc %{_mandir}/man1/reset.1%{ext_man} +%doc %{_mandir}/man1/tabs.1%{ext_man} +%doc %{_mandir}/man1/toe.1%{ext_man} +%doc %{_mandir}/man1/tput.1%{ext_man} +%doc %{_mandir}/man1/tset.1%{ext_man} +%doc %{_mandir}/man5/*%{ext_man} %doc AUTHORS +%files -n ncurses-tests +%defattr(-,root,root) +%dir %{_libexecdir}/ncurses/ +%{_libexecdir}/ncurses/* +%dir %{_datadir}/ncurses/ +%{_datadir}/ncurses/* +#%doc %{_mandir}/man6/*%{ext_man} + %files -n libncurses5 %defattr(-,root,root) %{_libdir}/lib*.so.5* @@ -1197,12 +1256,12 @@ popd %{_incdir}/ncursesw/*.h %{_libdir}/lib*.so %{_libdir}/pkgconfig/*[clmosuw\+].pc -%doc %{_mandir}/man1/ncurses*6-config.1.gz -%doc %{_mandir}/man1/captoinfo.1.gz -%doc %{_mandir}/man1/infotocap.1.gz -%doc %{_mandir}/man1/tic.1.gz -%doc %{_mandir}/man3/*.gz -%doc %{_mandir}/man7/*.gz +%doc %{_mandir}/man1/ncurses*6-config.1%{ext_man} +%doc %{_mandir}/man1/captoinfo.1%{ext_man} +%doc %{_mandir}/man1/infotocap.1%{ext_man} +%doc %{_mandir}/man1/tic.1%{ext_man} +%doc %{_mandir}/man3/*%{ext_man} +%doc %{_mandir}/man7/*%{ext_man} %files -n ncurses-devel-static %{_libdir}/lib*.a @@ -1219,7 +1278,7 @@ popd %dir %{_libdir}/ncurses5/ %{_libdir}/ncurses5/lib*.so %{_libdir}/pkgconfig/*5.pc -%doc %{_mandir}/man1/ncurses*5-config.1.gz +%doc %{_mandir}/man1/ncurses*5-config.1%{ext_man} %files -n ncurses5-devel-static %{_libdir}/ncurses5/lib*.a @@ -1227,7 +1286,7 @@ popd %files -n tack %defattr(-,root,root) %{_bindir}/tack -%doc %{_mandir}/man1/tack.1.gz +%doc %{_mandir}/man1/tack.1%{ext_man} %files -f extension.list -n terminfo %defattr(-,root,root)