[pacman-dev] [PATCH 1/3] makepkg: fallback to legacy termcap capabilities

Nezmer git at nezmer.info
Thu Oct 14 13:11:30 EDT 2010


On Thu, Oct 14, 2010 at 07:49:07PM +0300, Nezmer wrote:
> On Thu, Oct 14, 2010 at 12:02:45PM -0430, Carlos Diaz wrote:
> > In some systems, such as Freebsd, the base tput isn't linked against a
> > terminfo capable ncurses.
> > 
> > This means that there's no portable way to set color, so instead of
> > guessing, makepkg fallbacks on using legacy termcap output manipulation.
> > 
> > For reference, see terminfo(5) and termcap(5) for a comparison between
> > the abilities.
> > 
> > The hardcoded list of terminals is taken from freebsdports/shells/tcshrc
> > and tmux [1]. This prevents echoing gibberish in dumb and otherwise
> > incapacitated terminals.
> > 
> > 1:
> > http://www.openbsd.org/cgi-bin/cvsweb/src/usr.bin/tmux/tty.c?rev=1.91;content-type=text%2Fplain
> > 
> > Signed-off-by: Carlos Diaz <839273 at gmail.com>
> > ---
> >  scripts/makepkg.sh.in |   13 +++++++++++--
> >  1 files changed, 11 insertions(+), 2 deletions(-)
> > 
> > diff --git a/scripts/makepkg.sh.in b/scripts/makepkg.sh.in
> > index bdf63ef..3d29d26 100644
> > --- a/scripts/makepkg.sh.in
> > +++ b/scripts/makepkg.sh.in
> > @@ -1660,21 +1660,30 @@ PACMAN=${PACMAN:-pacman}
> >  # check if messages are to be printed using color
> >  unset ALL_OFF BOLD BLUE GREEN RED YELLOW
> >  if [[ -t 2 && ! $USE_COLOR = "n" && $(check_buildenv color) = "y" ]]; then
> > -	# prefer terminal safe colored and bold text when tput is supported
> >  	if tput setaf 0 &>/dev/null; then
> > +		# tput linked against a compliant terminfo ncurses
> >  		ALL_OFF="$(tput sgr0)"
> >  		BOLD="$(tput bold)"
> >  		BLUE="${BOLD}$(tput setaf 4)"
> >  		GREEN="${BOLD}$(tput setaf 2)"
> >  		RED="${BOLD}$(tput setaf 1)"
> >  		YELLOW="${BOLD}$(tput setaf 3)"
> > -	else
> > +	elif [[ $TERM =~  ^(dtterm|rxvt|screen|xterm) ]]; then
> > +		# no terminfo, but don't fallback to ugly reverse text just yet
> >  		ALL_OFF="\033[1;0m"
> >  		BOLD="\033[1;1m"
> >  		BLUE="${BOLD}\033[1;34m"
> >  		GREEN="${BOLD}\033[1;32m"
> >  		RED="${BOLD}\033[1;31m"
> >  		YELLOW="${BOLD}\033[1;33m"
> > +	elif tput me &>/dev/null; then
> > +		# rely on termcap capabilities; no portable way of using color
> > +		ALL_OFF="$(tput me)"
> > +		BOLD="$(tput md)"
> > +		BLUE="$(tput mr)"    # reverse
> > +		GREEN="$(tput us)"   # underline
> > +		RED="$(tput so)"     # standout
> > +		YELLOW="$(tput mh)"  # half-bright
> >  	fi
> >  fi
> >  readonly ALL_OFF BOLD BLUE GREEN RED YELLOW
> > -- 
> > 1.7.3.1
> > 
> > 
> 
> This is already fixed in master!
> 

If you're running FreeBSD. The default $TERM in ttyv<int> is cons25(1) and
it can handle the colours just fine. So I don't know how the hard-coded
list is relevant.

(1) I heard this vintage default will change soon.


More information about the pacman-dev mailing list