Hi,
when looking at a recent issue when a change to lorax templates broke composes for ppc64le and s390x I have found that there are packages that explicitly require the ncurses package and I wonder if all of these Requires are correct. Because quite some time ago there was a split so "ncurses" only contains the tools (tic, tac, reset, ...) and ncurses-base contains the basic terminfo database and the libs live in ncurses-libs.
[root@localhost ~]# dnf repoquery --exactdeps --whatrequires ncurses c-graph-0:2.0.1-4.fc33.ppc64le fpc-0:3.2.0-2.fc33.ppc64le frr-0:7.4-1.fc34.ppc64le nethogs-0:0.8.6-3.fc33.ppc64le perl-Term-Cap-0:1.17-457.fc33.noarch quagga-0:1.2.4-16.fc34.ppc64le testssl-0:3.0.2-2.fc33.noarch tetrominos-0:1.0.1-7.fc33.ppc64le varnish-0:6.5.0-1.fc34.ppc64le wordgrinder-0:0.7.2-5.fc33.ppc64le
perl-Term-Cap calls "infocmp" so it should be there, perhaps reduced to a weak dep, because it has a fall-back path, but I'm not sure about the other.
Dan
On Mon, Sep 28, 2020 at 02:09:41PM +0200, Dan Horák wrote:
when looking at a recent issue when a change to lorax templates broke composes for ppc64le and s390x I have found that there are packages that explicitly require the ncurses package and I wonder if all of these Requires are correct. Because quite some time ago there was a split so "ncurses" only contains the tools (tic, tac, reset, ...) and ncurses-base contains the basic terminfo database and the libs live in ncurses-libs.
[...]
perl-Term-Cap calls "infocmp" so it should be there, perhaps reduced to a weak dep, because it has a fall-back path, but I'm not sure about the other.
perl-Term-Cap has a built-in path. But the path is not a fallback. It's a primary source and infocmp is called as the fallback.
The built-in path is: /etc/termcap, /usr/share/misc/termcap. But none of these directories exist in Fedora. ncurses-base has /usr/share/terminfo. My knowledge about termcap and terminfo is zero, but it seems that /usr/share/terminfo files are binary files, while perl-Term-Cap expects a plain text files. Maybe that's the difference between termcap and terminfo.
As a result, perl-Term-Cap always calls infocmp, because it cannot consume ncurses-base content:
$ strace -fq -e execve -- perl -MTerm::Cap -e 'print Term::Cap::Tgetent()->{TERMCAP}' execve("/usr/bin/perl", ["perl", "-MTerm::Cap", "-e", "print Term::Cap::Tgetent()->{TER"...], 0x7ffdad6ca198 /* 20 vars */) = 0 [pid 24145] execve("/bin/sh", ["sh", "-c", "infocmp -C 2>/dev/null"], 0x56199a3babd0 /* 20 vars */) = 0 [pid 24146] execve("/usr/bin/infocmp", ["infocmp", "-C"], 0x55ba82bdb200 /* 20 vars */) = 0 [pid 24146] +++ exited with 0 +++ [pid 24145] --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=24146, si_uid=500, si_status=0, si_utime=0, si_stime=0} --- [pid 24145] +++ exited with 0 +++ --- SIGCHLD {si_signo=SIGCHLD, si_code=CLD_EXITED, si_pid=24145, si_uid=500, si_status=0, si_utime=0, si_stime=1} --- screen.xterm-256color|GNU Screen with xterm using 256 colors:\ :am:bs:bw:km:mi:ms:xn:\ :co#80:it#8:li#24:\ :AL=\E[%dL:DC=\E[%dP:DL=\E[%dM:DO=\E[%dB:IC=\E[%d@:\ :K1=\EOw:K2=\EOu:K3=\EOy:K4=\EOq:K5=\EOs:LE=\E[%dD:\ :RI=\E[%dC:SF=\E[%dS:SR=\E[%dT:UP=\E[%dA:ae=\E(B:al=\E[L:\ :as=\E(0:bl=^G:bt=\E[Z:cd=\E[J:ce=\E[K:cl=\E[H\E[2J:\ :cm=\E[%i%d;%dH:cr=\r:cs=\E[%i%d;%dr:ct=\E[3g:dc=\E[P:\ :dl=\E[M:do=\n:ec=\E[%dX:ei=\E[4l:ho=\E[H:im=\E[4h:\ :is=\E[!p\E[?3;4l\E[4l\E>:k1=\EOP:k2=\EOQ:k3=\EOR:\ :k4=\EOS:k5=\E[15~:k6=\E[17~:k7=\E[18~:k8=\E[19~:\ :k9=\E[20~:kD=\E[3~:kI=\E[2~:kN=\E[6~:kP=\E[5~:kb=\177:\ :kd=\EOB:ke=\E[?1l\E>:kh=\E[1~:kl=\EOD:kr=\EOC:\ :ks=\E[?1h\E=:ku=\EOA:le=^H:mb=\E[5m:md=\E[1m:me=\E[0m:\ :mh=\E[2m:mm=\E[?1034h:mo=\E[?1034l:mr=\E[7m:nd=\E[C:\ :rc=\E8:sc=\E7:se=\E[27m:sf=\n:so=\E[7m:sr=\EM:st=\EH:ta=^I:\ :te=\E[?1049l\E[23;0;0t:ti=\E[?1049h\E[22;0;0t:\ :ue=\E[24m:up=\E[A:us=\E[4m:vb=\E[?5h\E[?5l:\ :ve=\E[?12l\E[?25h:vi=\E[?25l:vs=\E[?12;25h: +++ exited with 0 +++
And thus the hard dependency on ncurses is correct. At the end Term::Cap documentation defines the Perl module as "a Perl termcap interface". Not as a terminfo interface.
-- Petr
On Tue, Sep 29, 2020 at 12:43:14PM +0200, Petr Pisar wrote:
The built-in path is: /etc/termcap, /usr/share/misc/termcap. But none of these directories exist in Fedora. ncurses-base has /usr/share/terminfo. My knowledge about termcap and terminfo is zero, but it seems that /usr/share/terminfo files are binary files, while perl-Term-Cap expects a plain text files. Maybe that's the difference between termcap and terminfo.
termcap is an obsolete format of terminal descriptions, which has some major limitions. Long time ago, Fedora shipped a termcap translated from the ncurses terminfo database, but everything should be using terminfo now.
And thus the hard dependency on ncurses is correct. At the end Term::Cap documentation defines the Perl module as "a Perl termcap interface". Not as a terminfo interface.
Makes sense to me.
On Mon, Sep 28, 2020 at 8:10 AM Dan Horák dan@danny.cz wrote:
when looking at a recent issue when a change to lorax templates broke composes for ppc64le and s390x I have found that there are packages that explicitly require the ncurses package and I wonder if all of these Requires are correct. Because quite some time ago there was a split so "ncurses" only contains the tools (tic, tac, reset, ...) and ncurses-base contains the basic terminfo database and the libs live in ncurses-libs.
wordgrinder-0:0.7.2-5.fc33.ppc64le
Nope! I've updated the F33 and F34 packages to correct the dependencies. Thanks for highlighting this.
Hi Ben,
Nope! I've updated the F33 and F34 packages to correct the dependencies. Thanks for highlighting this.
Should not be an issue, https://gnuguix-drive.mycozy.cloud/public?sharecode=YvERPGX14g5S
Cheers, Cuckoo's Calling.