988 lines
29 KiB
RPMSpec
988 lines
29 KiB
RPMSpec
#
|
|
# spec file for package ncurses
|
|
#
|
|
# Copyright (c) 2017 SUSE LINUX GmbH, Nuernberg, Germany.
|
|
#
|
|
# All modifications and additions to the file contributed by third parties
|
|
# remain the property of their copyright owners, unless otherwise agreed
|
|
# upon. The license for this file, and modifications and additions to the
|
|
# file, is the same license as for the pristine package itself (unless the
|
|
# license for the pristine package is not an Open Source License, in which
|
|
# case the license is the MIT License). An "Open Source License" is a
|
|
# license that conforms to the Open Source Definition (Version 1.9)
|
|
# published by the Open Source Initiative.
|
|
|
|
# Please submit bugfixes or comments via http://bugs.opensuse.org/
|
|
#
|
|
|
|
|
|
%bcond_with hasheddb
|
|
%if 0%{?suse_version} > 1320
|
|
%bcond_without symversion
|
|
%else
|
|
%bcond_with symversion
|
|
%endif
|
|
|
|
Name: ncurses
|
|
#!BuildIgnore: terminfo
|
|
%if %{with hasheddb}
|
|
BuildRequires: db-devel
|
|
%endif
|
|
BuildRequires: gcc-c++
|
|
BuildRequires: pkg-config
|
|
BuildRequires: screen
|
|
%if 0%{?suse_version} > 1130
|
|
BuildRequires: gpm-devel
|
|
%else
|
|
BuildRequires: gpm
|
|
%endif
|
|
%define terminfo() %{_datadir}/%{0}/%{1}
|
|
%define tabset() %{_datadir}/%{0}/%{1}
|
|
# bug437293
|
|
%ifarch ppc64
|
|
Obsoletes: ncurses-64bit
|
|
%endif
|
|
#
|
|
# Note that this spec files does not only build the ABI version 6
|
|
# but also build the ABI version 5 as this is part of the source
|
|
# tar ball including the latest upstream fixes for ABI 5.
|
|
#
|
|
Version: 6.0
|
|
Release: 0
|
|
Summary: New curses Libraries
|
|
License: MIT
|
|
Group: System/Base
|
|
#Git: http://ncurses.scripts.mit.edu
|
|
Url: http://invisible-island.net/ncurses/ncurses.html
|
|
Source0: ftp://invisible-island.net/ncurses/ncurses-6.0.tar.gz
|
|
Source1: ncurses-6.0-patches.tar.bz2
|
|
Source2: handle.linux
|
|
Source3: README.devel
|
|
Source4: ncurses-rpmlintrc
|
|
# Latest tack can be found at ftp://invisible-island.net/pub/ncurses/current/
|
|
Source5: ftp://invisible-island.net/pub/ncurses/current/tack-1.07-20150606.tgz
|
|
Source6: edit.sed
|
|
Source7: baselibs.conf
|
|
Patch0: ncurses-6.0.dif
|
|
Patch1: ncurses-5.9-ibm327x.dif
|
|
Patch4: ncurses-5.7-tack.dif
|
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
|
%global _miscdir %{_datadir}/misc
|
|
%global _incdir %{_includedir}
|
|
%global root %{_tmppath}/%{name}-%{version}-store
|
|
|
|
%description
|
|
As soon as a text application needs to directly control its output to
|
|
the screen (if it wants to place the cursor at location (x,y) then
|
|
write text), ncurses is used. The panel and the forms libraries are
|
|
included in this package. These new libraries support color, special
|
|
characters, and panels.
|
|
|
|
|
|
|
|
Authors:
|
|
--------
|
|
Thomas E. Dickey <dickey@invisible-island.net>
|
|
Juergen Pfeifer <Juergen.Pfeifer@t-online.de>
|
|
Eric S. Raymond <esr@thyrsus.com>
|
|
Zeyd M. Ben-Halim <zmbenhal@netcom.com>
|
|
Pavel Curtis
|
|
|
|
%package -n ncurses-utils
|
|
Summary: Tools using the new curses libraries
|
|
License: MIT
|
|
Group: System/Base
|
|
Provides: ncurses:%{_bindir}/tput
|
|
|
|
%description -n ncurses-utils
|
|
The ncurses based utilities are as follows:
|
|
|
|
clear -- emits clear-screen for current terminal
|
|
|
|
tabs -- set tabs on a terminal
|
|
|
|
toe -- table of entries utility
|
|
|
|
tput -- shell-script access to terminal capabilities.
|
|
|
|
tset -- terminal-initialization utility
|
|
|
|
reset -- terminal initialization utility
|
|
|
|
|
|
|
|
Authors:
|
|
--------
|
|
Thomas E. Dickey <dickey@invisible-island.net>
|
|
Eric S. Raymond <esr@thyrsus.com>
|
|
Zeyd M. Ben-Halim <zmbenhal@netcom.com>
|
|
Juergen Pfeifer <Juergen.Pfeifer@t-online.de>
|
|
Pavel Curtis
|
|
|
|
%package -n terminfo-base
|
|
Summary: A terminal descriptions database
|
|
License: MIT
|
|
Group: System/Base
|
|
Provides: ncurses:%{_datadir}/tabset
|
|
|
|
%description -n terminfo-base
|
|
This is the terminfo basic database, maintained in the ncurses package.
|
|
This database is the official successor to the 4.4BSD termcap file and
|
|
contains information about any known terminal. The ncurses library
|
|
makes use of this database to use terminals correctly.
|
|
|
|
|
|
|
|
Authors:
|
|
--------
|
|
Thomas E. Dickey <dickey@invisible-island.net>
|
|
Eric S. Raymond <esr@thyrsus.com>
|
|
|
|
%package -n libncurses5
|
|
Summary: The New curses Libraries
|
|
License: MIT
|
|
Group: System/Libraries
|
|
Requires: terminfo-base
|
|
Provides: ncurses = 5.9
|
|
Obsoletes: ncurses < 5.9
|
|
# bug437293
|
|
%ifarch ppc64
|
|
Obsoletes: ncurses-64bit
|
|
%endif
|
|
#
|
|
|
|
%description -n libncurses5
|
|
The ncurses library is used by the most curses based terminal
|
|
applications for controling its output and input to the screen.
|
|
|
|
|
|
|
|
Authors:
|
|
--------
|
|
Thomas E. Dickey <dickey@invisible-island.net>
|
|
Eric S. Raymond <esr@thyrsus.com>
|
|
Zeyd M. Ben-Halim <zmbenhal@netcom.com>
|
|
Juergen Pfeifer <Juergen.Pfeifer@t-online.de>
|
|
Pavel Curtis
|
|
|
|
%package -n libncurses6
|
|
Summary: The New curses Libraries
|
|
License: MIT
|
|
Group: System/Libraries
|
|
Requires: terminfo-base
|
|
Provides: ncurses = %{version}
|
|
Recommends: ncurses-utils = %{version}
|
|
|
|
%description -n libncurses6
|
|
The ncurses library is used by the most curses based terminal
|
|
applications for controling its output and input to the screen.
|
|
|
|
|
|
|
|
Authors:
|
|
--------
|
|
Thomas E. Dickey <dickey@invisible-island.net>
|
|
Juergen Pfeifer <Juergen.Pfeifer@t-online.de>
|
|
Eric S. Raymond <esr@thyrsus.com>
|
|
Zeyd M. Ben-Halim <zmbenhal@netcom.com>
|
|
Pavel Curtis
|
|
|
|
%package -n terminfo
|
|
Summary: A terminal descriptions database
|
|
License: SUSE-Public-Domain
|
|
Group: System/Base
|
|
|
|
%description -n terminfo
|
|
This is the terminfo reference database, maintained in the ncurses
|
|
package. This database is the official successor to the 4.4BSD termcap
|
|
file and contains information about any known terminal. The ncurses
|
|
library makes use of this database to use terminals correctly. If you
|
|
just use the Linux console, xterm, and VT100, you probably will not
|
|
need this database -- a minimal /usr/share/terminfo tree for these
|
|
terminals is already included in the terminfo-base package.
|
|
|
|
|
|
|
|
Authors:
|
|
--------
|
|
Eric S. Raymond <esr@thyrsus.com>
|
|
Thomas E. Dickey <dickey@invisible-island.net>
|
|
|
|
%package -n ncurses-devel
|
|
Summary: Include Files and Libraries mandatory for Development
|
|
License: MIT
|
|
Group: Development/Libraries/C and C++
|
|
Provides: ncurses6-devel
|
|
Provides: ncurses:%{_incdir}/ncurses.h
|
|
Requires: %{_bindir}/tack
|
|
Requires: libncurses6 = %{version}-%{release}
|
|
Requires: ncurses = %{version}-%{release}
|
|
# bug437293
|
|
%ifarch ppc64
|
|
Obsoletes: ncurses-devel-64bit
|
|
%endif
|
|
#
|
|
|
|
%description -n ncurses-devel
|
|
This package contains all necessary include files and libraries needed
|
|
to develop applications that require these.
|
|
|
|
|
|
|
|
Authors:
|
|
--------
|
|
Thomas E. Dickey <dickey@invisible-island.net>
|
|
Juergen Pfeifer <Juergen.Pfeifer@t-online.de>
|
|
Eric S. Raymond <esr@thyrsus.com>
|
|
Zeyd M. Ben-Halim <zmbenhal@netcom.com>
|
|
Pavel Curtis
|
|
|
|
%package -n ncurses5-devel
|
|
Summary: Include Files and Libraries mandatory for Development
|
|
License: MIT
|
|
Group: Development/Libraries/C and C++
|
|
Provides: ncurses:%{_incdir}/ncurses5/ncurses.h
|
|
Requires: %{_bindir}/tack
|
|
Requires: libncurses5 = %{version}-%{release}
|
|
Requires: ncurses = %{version}-%{release}
|
|
Requires: ncurses-devel = %{version}-%{release}
|
|
|
|
%description -n ncurses5-devel
|
|
This package contains all necessary include files and libraries needed
|
|
to develop applications that require these.
|
|
|
|
|
|
|
|
Authors:
|
|
--------
|
|
Thomas E. Dickey <dickey@invisible-island.net>
|
|
Juergen Pfeifer <Juergen.Pfeifer@t-online.de>
|
|
Eric S. Raymond <esr@thyrsus.com>
|
|
Zeyd M. Ben-Halim <zmbenhal@netcom.com>
|
|
Pavel Curtis
|
|
|
|
%package -n tack
|
|
Summary: Terminfo action checker
|
|
License: GPL-2.0+
|
|
Group: Development/Tools/Building
|
|
Provides: ncurses-devel:%{_bindir}/tack
|
|
Requires: ncurses = %{version}-%{release}
|
|
|
|
%description -n tack
|
|
This package contains the tack utility to help to build a new terminfo
|
|
entry describing an unknown terminal. It can also be used to test the
|
|
correctness of an existing entry, and to develop the correct pad
|
|
timings needed to ensure that screen updates do not fall behind the
|
|
incoming data stream.
|
|
|
|
|
|
|
|
Authors:
|
|
--------
|
|
Daniel Weaver <danw@znyx.com>
|
|
Eric S. Raymond <esr@thyrsus.com>
|
|
|
|
%prep
|
|
%setup -q
|
|
rm -f Ada95/src/terminal_interface-curses.adb
|
|
rm -f mkinstalldirs
|
|
tar xfj %{S:1}
|
|
set +x
|
|
for patch in patches/ncurses*.patch
|
|
do
|
|
patch -f -T -p1 -s < $patch
|
|
done
|
|
set -x
|
|
rm -rf patches/
|
|
find -name '*.orig' | xargs -r rm -f
|
|
# replace tack from ncurses tarball with the latest version in
|
|
# separate tarball
|
|
rm -fr tack
|
|
tar xfz %{S:5}
|
|
mv tack-* tack
|
|
%patch1 -p0 -b .327x
|
|
%patch4 -p0 -b .hs
|
|
%patch0 -p0 -b .p0
|
|
rm -vf include/ncurses_dll.h
|
|
rm -vf mkdirs.sh
|
|
rm -vf tar-copy.sh
|
|
rm -vf mk-dlls.sh
|
|
# Remove iterm link to iTerm.app
|
|
sed -ri '/^iTerm/{s@iterm\|@@}' misc/terminfo.src
|
|
|
|
%build
|
|
#
|
|
# Note that there is a test if the system call poll(2) really works
|
|
# on terminal or files. To make sure that even in OBS the configure
|
|
# script has its own terminal we use screen here (could be also tmux).
|
|
#
|
|
# Remark: A better solution would be that in OBS a real pty/tty pair
|
|
# would be used instead of redirecting stdout/stderr to a log file.
|
|
#
|
|
%global _configure screen -D -m ./configure
|
|
SCREENDIR=$(mktemp -d ${PWD}/screen.XXXXXX) || exit 1
|
|
SCREENRC=${SCREENDIR}/ncurses
|
|
export SCREENRC SCREENDIR
|
|
exec 0< /dev/null
|
|
SCREENLOG=${SCREENDIR}/log
|
|
cat > $SCREENRC<<-EOF
|
|
deflogin off
|
|
deflog on
|
|
logfile $SCREENLOG
|
|
logfile flush 1
|
|
logtstamp off
|
|
log on
|
|
setsid on
|
|
scrollback 0
|
|
silence on
|
|
utf8 on
|
|
EOF
|
|
#
|
|
# Used to test out various cflags of the gcc
|
|
#
|
|
cflags ()
|
|
{
|
|
local flag=$1; shift
|
|
local var=$1; shift
|
|
test -n "${flag}" -a -n "${var}" || return
|
|
case "${!var}" in
|
|
*${flag}*) return
|
|
esac
|
|
set -o noclobber
|
|
case "$flag" in
|
|
-Wl,*)
|
|
if echo 'int main () { return 0; }' | \
|
|
${CC:-gcc} -Werror $flag -o /dev/null -xc - > /dev/null 2>&1 ; then
|
|
eval $var=\${$var:+\$$var\ }$flag
|
|
fi
|
|
;;
|
|
*)
|
|
if ${CC:-gcc} -Werror $flag -S -o /dev/null -xc /dev/null > /dev/null 2>&1 ; then
|
|
eval $var=\${$var:+\$$var\ }$flag
|
|
fi
|
|
if ${CXX:-g++} -Werror $flag -S -o /dev/null -xc++ /dev/null > /dev/null 2>&1 ; then
|
|
eval $var=\${$var:+\$$var\ }$flag
|
|
fi
|
|
esac
|
|
set +o noclobber
|
|
}
|
|
|
|
test ! -f /.buildenv || . /.buildenv
|
|
OPATH=$PATH
|
|
%ifarch s390x s390
|
|
FALLBK="xterm,ibm327x,vt100,vt102,vt220"
|
|
%else
|
|
FALLBK="xterm,linux,vt100,vt102"
|
|
%endif
|
|
CC=gcc
|
|
CXX=g++
|
|
CFLAGS="${RPM_OPT_FLAGS} -pipe -D_REENTRANT"
|
|
if [[ "$BUILD_BASENAME" = debug-* ]] ; then
|
|
CFLAGS="${CFLAGS} -g -DTRACE"
|
|
fi
|
|
cflags -Wl,-O2 LDFLAGS
|
|
cflags -Wl,-Bsymbolic-functions LDFLAGS
|
|
cflags -Wl,--hash-size=8599 LDFLAGS
|
|
cflags -Wl,--as-needed LDFLAGS
|
|
CXXFLAGS=$CFLAGS
|
|
test -n "$TERM" || TERM=linux
|
|
mkdir gzip
|
|
cat > gzip/gzip <<-'EOF'
|
|
#!/bin/sh
|
|
exec /usr/bin/gzip -9 ${1+"$@"}
|
|
EOF
|
|
chmod 0755 gzip/gzip
|
|
PATH=$PWD/gzip:$PATH
|
|
export CC CFLAGS CXX CXXFLAGS TERM LDFLAGS
|
|
#
|
|
# Detect 64bit architecures and be sure that we use an
|
|
# unsigned long for chtype to be backward compatible with
|
|
# already existing ncurses applications. Otherwise we
|
|
# might break existing applications on any update!
|
|
#
|
|
if test $(getconf LONG_BIT) -gt 32 ; then
|
|
WITHCHTYPE="--with-chtype=long"
|
|
else
|
|
WITHCHTYPE=""
|
|
CFLAGS="${CFLAGS} $(getconf LFS_CFLAGS)"
|
|
fi
|
|
#
|
|
# Let's care about people which build ncurses on their own
|
|
# system. That is take care that some configure tests might
|
|
# be exploitable below /tmp ... compare with aclocal.m4
|
|
#
|
|
TMPDIR=$(mktemp -d /tmp/ncurses.XXXXXXXX) || exit 1
|
|
trap 'rm -rf ${TMPDIR}' EXIT
|
|
export TMPDIR
|
|
#
|
|
# No --enable-term-driver as this had crashed last time
|
|
# in ncurses/tinfo/lib_setup.c due to the fact that
|
|
# _nc_globals.term_driver was a NULL function pointer as
|
|
# this is for the MinGW port!
|
|
#
|
|
# No --enable-tcap-names because we may have to recompile
|
|
# programs or foreign programs won't work
|
|
#
|
|
# No --enable-safe-sprintf because this seems to
|
|
# crash on some architectures
|
|
#
|
|
# No --enable-xmc-glitch because this seems to break yast2
|
|
# on console/konsole (no magic cookie support on those?)
|
|
#
|
|
# No --enable-hard-tabs for users which have disabled
|
|
# the use of tabs
|
|
#
|
|
touch --reference=README config.sub config.guess
|
|
> $SCREENLOG
|
|
tail -q -s 0.5 -f $SCREENLOG & pid=$!
|
|
%configure \
|
|
--without-ada \
|
|
--without-debug \
|
|
--without-profile \
|
|
--without-manpage-tbl \
|
|
--with-shared \
|
|
--with-normal \
|
|
--with-manpage-format=gzip \
|
|
--with-manpage-renames=${PWD}/man/man_db.renames \
|
|
--with-manpage-aliases \
|
|
--with-ospeed=speed_t \
|
|
%if 0%{?suse_version} > 1310
|
|
--with-gpm=$(readlink %{_libdir}/libgpm.so) \
|
|
%else
|
|
--with-gpm \
|
|
%endif
|
|
--with-dlsym \
|
|
--with-terminfo-dirs=%{_sysconfdir}/terminfo:%{_datadir}/terminfo \
|
|
--with-termlib=tinfo \
|
|
--with-ticlib=tic \
|
|
--with-xterm-kbs=del \
|
|
--disable-root-environ \
|
|
--disable-termcap \
|
|
--disable-overwrite \
|
|
--disable-rpath \
|
|
--disable-rpath-hack \
|
|
--disable-leaks \
|
|
--disable-xmc-glitch \
|
|
--enable-symlinks \
|
|
--enable-big-core \
|
|
--enable-const \
|
|
--enable-hashmap \
|
|
--enable-no-padding \
|
|
--enable-sigwinch \
|
|
--enable-colorfgbg \
|
|
--enable-sp-funcs \
|
|
--enable-interop \
|
|
--with-pthread \
|
|
--enable-reentrant \
|
|
--enable-ext-mouse \
|
|
--disable-widec \
|
|
--enable-ext-colors \
|
|
--enable-weak-symbols \
|
|
--enable-wgetch-events \
|
|
--enable-pthreads-eintr \
|
|
--enable-string-hacks \
|
|
--prefix=%{_prefix} \
|
|
--exec-prefix=%{_prefix}\
|
|
--libdir=%{_libdir} \
|
|
--datadir=%{_datadir} \
|
|
--mandir=%{_mandir} \
|
|
--includedir=%{_incdir} \
|
|
"${WITHCHTYPE}" \
|
|
--disable-tic-depends \
|
|
--with-cxx-shared \
|
|
--with-pc-suffix \
|
|
--enable-pc-files \
|
|
%if 0%{?_crossbuild}
|
|
--with-fallbacks="$FALLBK" \
|
|
%else
|
|
--with-fallbacks="" \
|
|
%endif
|
|
%if %{with symversion}
|
|
--with-versioned-syms=${PWD}/package/ncursest.map \
|
|
%endif
|
|
%if %{with hasheddb}
|
|
--with-hashed-db \
|
|
%endif
|
|
--with-pkg-config-libdir=%{_libdir}/pkgconfig
|
|
sleep 1
|
|
kill $pid
|
|
#
|
|
# The configure line used above. Note that we override
|
|
# several options later with other configurations.
|
|
# It has been verified several times that this works.
|
|
#
|
|
c=$(grep '^ *$ *\./configure' config.log)
|
|
make -C c++ etip.h
|
|
make %{?_smp_mflags}
|
|
#
|
|
# Refresh second install path
|
|
#
|
|
rm -rf %{root}
|
|
mkdir %{root}
|
|
%if !0%{?_crossbuild}
|
|
#
|
|
# This is a hack to be able to boot strap libncurses with
|
|
# our preferred fallback.c. For this we need the appropiate
|
|
# tools list infocmp(1) and tic(1). The first step was with
|
|
# an empty fallback.c, now we include the latest terminfo
|
|
# of our preferred fallback terminfo list into the final
|
|
# fallback.c.
|
|
#
|
|
cp -p progs/tic progs/tic.build
|
|
cp -p progs/infocmp progs/infocmp.build
|
|
PATH=$PWD/progs:$OPATH
|
|
LD_LIBRARY_PATH=$PWD/lib
|
|
export LD_LIBRARY_PATH PATH
|
|
pushd ncurses/
|
|
TERMINFO=$PWD/tmp
|
|
export TERMINFO
|
|
mkdir -p $TERMINFO
|
|
(cat > ${PWD}/.build_tic)<<-EOF
|
|
export BUILD_TIC=$PWD/../progs/tic.build
|
|
export BUILD_INFOCMP=$PWD/../progs/infocmp.build
|
|
EOF
|
|
. ${PWD}/.build_tic
|
|
$BUILD_TIC -I -r -e $FALLBK ../misc/terminfo.src > terminfo.src
|
|
$BUILD_TIC -o $TERMINFO -s terminfo.src
|
|
sh -e ./tinfo/MKfallback.sh $TERMINFO ../misc/terminfo.src $BUILD_TIC ${FALLBK//,/ } > fallback.c
|
|
rm -rf $TERMINFO
|
|
unset TERMINFO
|
|
cp -p fallback.c ../fallback.c.build
|
|
popd
|
|
PATH=$OPATH
|
|
unset LD_LIBRARY_PATH
|
|
#
|
|
# Now rebuild libncurses and do the rest of this job
|
|
#
|
|
find -name fallback.o | xargs -r rm -vf
|
|
cp fallback.c.build ncurses/fallback.c
|
|
make -C c++ etip.h
|
|
make %{?_smp_mflags}
|
|
%else
|
|
(cat > ${PWD}/.build_tic)<<-EOF
|
|
export BUILD_TIC=/usr/bin/tic
|
|
export BUILD_INFOCMP=/usr/bin/infocmp
|
|
EOF
|
|
%endif
|
|
# must not use %jobs here (would lead to: ln: ncurses.h already exists)
|
|
find man/ -name '*.[1-8]x.*' | xargs -r rm -vf
|
|
make install DESTDIR=%{root} includedir=%{_incdir} includesubdir=/ncurses libdir=%{_libdir}
|
|
ln -sf %{_incdir}/ncurses/{curses,ncurses,term,termcap}.h %{root}%{_incdir}
|
|
sh %{S:6} --cflags "-D_GNU_SOURCE -I%{_incdir}/ncurses" --libs "-lncurses" --libs "-ltinfo" %{root}%{_bindir}/ncurses6-config
|
|
mkdir pc
|
|
mv -f %{root}%{_libdir}/pkgconfig/*.pc pc/
|
|
#
|
|
# Check for tack program on base of above ncurses
|
|
#
|
|
LD_LIBRARY_PATH=$PWD/lib
|
|
export LD_LIBRARY_PATH PATH
|
|
pushd tack/
|
|
%if 0%{?qemu_user_space_build:1}%{?_crossbuild}
|
|
echo "Skipping LDD test due to running under QEMU / cross-building"
|
|
%else
|
|
ldd ./tack
|
|
%endif
|
|
popd
|
|
unset LD_LIBRARY_PATH
|
|
test ! -L tack || rm -f tack
|
|
make clean
|
|
> $SCREENLOG
|
|
tail -q -s 0.5 -f $SCREENLOG & pid=$!
|
|
|
|
#
|
|
# Now use --with-pthread for reentrant pthread support (abi == 5).
|
|
#
|
|
eval screen -D -m ./${c#*./} --with-abi-version=5 \
|
|
--without-pthread \
|
|
--disable-reentrant \
|
|
--disable-ext-mouse \
|
|
--disable-widec \
|
|
--disable-ext-colors \
|
|
--disable-overwrite \
|
|
%if %{with symversion}
|
|
--with-versioned-syms=${PWD}/package/ncurses.map \
|
|
%endif
|
|
--without-progs
|
|
sleep 1
|
|
kill $pid
|
|
%if !0%{?_crossbuild}
|
|
find -name fallback.o | xargs -r rm -vf
|
|
cp fallback.c.build ncurses/fallback.c
|
|
%endif
|
|
make -C c++ etip.h
|
|
make %{?_smp_mflags}
|
|
sed -ri 's@^(LDFLAGS=)$@\1-L\\${libdir}@
|
|
s@^(libdir=).show_libdir@\1%{_libdir}/ncurses5@
|
|
s@^(includedir=).show_includedir@\1%{_incdir}/ncurses5@' misc/gen-pkgconfig
|
|
# must not use %jobs here (would lead to: ln: ncurses.h already exists)
|
|
make install.libs install.includes DESTDIR=%{root} includedir=%{_incdir}/ncurses5 includesubdir=/ncurses libdir=%{_libdir}/ncurses5
|
|
ln -sf %{_incdir}/ncurses5/ncurses/{curses,ncurses,term}.h %{root}%{_incdir}/ncurses5/
|
|
sh %{S:6} --cflags "-D_GNU_SOURCE -I%{_incdir}/ncurses5/ncurses -I%{_incdir}/ncurses5" --libs "-L%{_libdir}/ncurses5 -lncurses" --libs "-ltinfo" %{root}%{_bindir}/ncurses5-config
|
|
pushd man
|
|
sh ../edit_man.sh normal installing %{root}%{_mandir} . ncurses5-config.1
|
|
popd
|
|
for pc in %{root}%{_libdir}/pkgconfig/*.pc
|
|
do
|
|
test -e "$pc" || break
|
|
base=${pc%%.pc}
|
|
base=${base##*/}
|
|
case "$base" in
|
|
tic) sed -ri 's@^(Requires.private: ).*@\1tinfo5@' "$pc" ;;
|
|
*) sed -ri 's@^(Requires.private: ).*@\1ncurses5@' "$pc"
|
|
esac
|
|
mv -f $pc pc/${base}5.pc
|
|
done
|
|
|
|
#
|
|
# Now use --enable-widec for UTF8/wide character support.
|
|
# The libs with 16 bit wide characters are binary incompatible
|
|
# to the normal 8bit wide character libs.
|
|
#
|
|
make clean
|
|
> $SCREENLOG
|
|
tail -q -s 0.5 -f $SCREENLOG & pid=$!
|
|
eval screen -D -m ./${c#*./} --with-pthread \
|
|
--enable-reentrant \
|
|
--enable-ext-mouse \
|
|
--enable-widec \
|
|
--enable-ext-colors \
|
|
--disable-overwrite \
|
|
%if %{with symversion}
|
|
--with-versioned-syms=${PWD}/package/ncursestw.map \
|
|
%endif
|
|
--without-progs
|
|
sleep 1
|
|
kill $pid
|
|
%if !0%{?_crossbuild}
|
|
find -name fallback.o | xargs -r rm -vf
|
|
cp fallback.c.build ncurses/fallback.c
|
|
%endif
|
|
make -C c++ etip.h
|
|
make %{?_smp_mflags}
|
|
# must not use %jobs here (would lead to: ln: ncurses.h already exists)
|
|
make install.libs install.includes DESTDIR=%{root} includedir=%{_incdir} includesubdir=/ncursesw libdir=%{_libdir}
|
|
sh %{S:6} --cflags "-D_GNU_SOURCE -I%{_incdir}/ncursesw" --libs "-lncursesw" --libs "-ltinfo" %{root}%{_bindir}/ncursesw6-config
|
|
pushd man
|
|
sh ../edit_man.sh normal installing %{root}%{_mandir} . ncursesw6-config.1
|
|
popd
|
|
rm -f %{root}%{_libdir}/pkgconfig/ti*.pc
|
|
mv -f %{root}%{_libdir}/pkgconfig/*.pc pc/
|
|
|
|
#
|
|
# ABI == 5
|
|
#
|
|
make clean
|
|
> $SCREENLOG
|
|
tail -q -s 0.5 -f $SCREENLOG & pid=$!
|
|
eval screen -D -m ./${c#*./} --with-abi-version=5 \
|
|
--without-pthread \
|
|
--disable-reentrant \
|
|
--disable-ext-mouse \
|
|
--enable-widec \
|
|
--disable-ext-colors \
|
|
--disable-overwrite \
|
|
%if %{with symversion}
|
|
--with-versioned-syms=${PWD}/package/ncursesw.map \
|
|
%endif
|
|
--without-progs
|
|
sleep 1
|
|
kill $pid
|
|
%if !0%{?_crossbuild}
|
|
find -name fallback.o | xargs -r rm -vf
|
|
cp fallback.c.build ncurses/fallback.c
|
|
%endif
|
|
make -C c++ etip.h
|
|
make %{?_smp_mflags}
|
|
sed -ri 's@^(LDFLAGS=)$@\1-L\\${libdir}@
|
|
s@^(libdir=).show_libdir@\1%{_libdir}/ncurses5@
|
|
s@^(includedir=).show_includedir@\1%{_incdir}/ncurses5/ncursesw@' misc/gen-pkgconfig
|
|
# must not use %jobs here (would lead to: ln: ncurses.h already exists)
|
|
make install.libs install.includes DESTDIR=%{root} includedir=%{_incdir}/ncurses5 includesubdir=/ncursesw libdir=%{_libdir}/ncurses5
|
|
sh %{S:6} --cflags "-D_GNU_SOURCE -I%{_incdir}/ncurses5/ncursesw -I%{_incdir}/ncurses5" --libs "-L%{_libdir}/ncurses5 -lncursesw" --libs "-ltinfo" %{root}%{_bindir}/ncursesw5-config
|
|
pushd man
|
|
sh ../edit_man.sh normal installing %{root}%{_mandir} . ncursesw5-config.1
|
|
popd
|
|
for pc in %{root}%{_libdir}/pkgconfig/*.pc
|
|
do
|
|
test -e "$pc" || break
|
|
base=${pc%%.pc}
|
|
base=${base##*/}
|
|
case "$base" in
|
|
tinfo) sed -ri 's@(includedir=/usr/include/ncurses5/ncurses)w.*@\1@' "$pc" ;;
|
|
tic) sed -ri 's@(includedir=/usr/include/ncurses5/ncurses)w.*@\1@' "$pc" ;;
|
|
esac
|
|
case "$base" in
|
|
tic) sed -ri 's@^(Requires.private: ).*@\1tinfo5@' "$pc" ;;
|
|
*) sed -ri 's@^(Requires.private: ).*@\1ncurses5@' "$pc"
|
|
esac
|
|
mv -f $pc pc/${base}5.pc
|
|
done
|
|
|
|
%install
|
|
PATH=$PWD/gzip:$PATH
|
|
(cd %{root}/; tar -cpSf - *)|tar -xpsSf - -C %{buildroot}/
|
|
rm -rf %{root}
|
|
mkdir %{buildroot}/%{_lib}
|
|
for model in libncurses libncursest libncursesw libncursestw libtinfo
|
|
do
|
|
for lib in %{buildroot}%{_libdir}/${model}.so.* ; do
|
|
test -e "${lib}" || continue
|
|
mv "${lib}" %{buildroot}/%{_lib}/ || continue
|
|
done
|
|
for lib in %{buildroot}/%{_lib}/${model}.so.6 ; do
|
|
test -e "${lib}" || continue
|
|
test -L "${lib}" || continue
|
|
lib=${lib#%{buildroot}}
|
|
lnk=%{buildroot}%{_libdir}/${model}.so
|
|
case "${lib##*/}" in
|
|
libncurses*)
|
|
rm -f ${lnk}
|
|
echo '/* GNU ld script */' > ${lnk}
|
|
echo "INPUT(${lib} AS_NEEDED(-ltinfo -ldl))" >> ${lnk}
|
|
;;
|
|
*) ln -sf ${lib} %{buildroot}%{_libdir}/${model}.so
|
|
esac
|
|
done
|
|
done
|
|
%if 0
|
|
lnk=%{buildroot}%{_libdir}/libtermcap.so
|
|
echo '/* GNU ld script */' > ${lnk}
|
|
echo "INPUT(AS_NEEDED(-ltinfo))" >> ${lnk}
|
|
%endif
|
|
chmod 0755 %{buildroot}/%{_lib}/lib*.so.*
|
|
chmod 0755 %{buildroot}/%{_libdir}/lib*.so.*
|
|
chmod a-x %{buildroot}/%{_libdir}/lib*.a
|
|
if test -d %{buildroot}%{_libdir}/ncurses5 ; then
|
|
mv %{buildroot}%{_libdir}/ncurses5/*.so.5* %{buildroot}%{_libdir}/
|
|
for lib in %{buildroot}%{_libdir}/ncurses5/*.so
|
|
do
|
|
lnk=$lib
|
|
lib=/%{_lib}/${lib##*/}.5
|
|
case "${lib##*/}" in
|
|
libncurses*)
|
|
rm -f "${lnk}"
|
|
echo '/* GNU ld script */' > ${lnk}
|
|
echo "INPUT(${lib} AS_NEEDED(-ltinfo))" >> ${lnk}
|
|
;;
|
|
libtinfo*)
|
|
test -L "${lnk}" || continue
|
|
ln -sf ${lib} ${lnk}
|
|
;;
|
|
*)
|
|
test -L "${lnk}" || continue
|
|
ln -sf ../${lib##*/} ${lnk}
|
|
esac
|
|
done
|
|
for model in libncurses libncursest libncursesw libncursestw libtinfo
|
|
do
|
|
for lib in %{buildroot}%{_libdir}/${model}.so.* ; do
|
|
test -e "${lib}" || continue
|
|
mv "${lib}" %{buildroot}/%{_lib}/ || continue
|
|
done
|
|
for lib in %{buildroot}/%{_lib}/${model}.so.5 ; do
|
|
test -e "${lib}" || continue
|
|
test -L "${lib}" || continue
|
|
lib=${lib#%{buildroot}}
|
|
lnk=%{buildroot}%{_libdir}/ncurses5/${model}.so
|
|
case "${lib##*/}" in
|
|
libncurses*)
|
|
rm -f ${lnk}
|
|
echo '/* GNU ld script */' > ${lnk}
|
|
echo 'SEARCH_DIR(%{_libdir}/ncurses5)' >> ${lnk}
|
|
echo "INPUT(${lib} AS_NEEDED(-ltinfo))" >> ${lnk}
|
|
;;
|
|
*) ln -sf ${lib} %{buildroot}%{_libdir}/ncurses5/${model}.so
|
|
esac
|
|
done
|
|
done
|
|
chmod 0755 %{buildroot}/%{_lib}/lib*.so.5*
|
|
chmod 0755 %{buildroot}/%{_libdir}/lib*.so.5*
|
|
chmod a-x %{buildroot}/%{_libdir}/ncurses5/lib*.a
|
|
fi
|
|
test -n "%{buildroot}" || ldconfig -N
|
|
mkdir -p %{buildroot}%{_defaultdocdir}/ncurses
|
|
bzip2 -c misc/terminfo.src > misc/terminfo.src.bz2
|
|
install -m 644 misc/terminfo.src.bz2 %{buildroot}%{_defaultdocdir}/ncurses/
|
|
install -m 644 doc/html/*.html %{buildroot}%{_defaultdocdir}/ncurses/
|
|
bzip2 doc/ncurses-intro.doc -c > doc/ncurses-intro.txt.bz2
|
|
install -m 644 doc/ncurses-intro.txt.bz2 %{buildroot}%{_defaultdocdir}/ncurses/
|
|
bzip2 doc/hackguide.doc -c > doc/hackguide.txt.bz2
|
|
install -m 644 doc/hackguide.txt.bz2 %{buildroot}%{_defaultdocdir}/ncurses/
|
|
install -m 644 %{S:3} %{buildroot}%{_defaultdocdir}/ncurses/
|
|
install -m 644 README %{buildroot}%{_defaultdocdir}/ncurses/
|
|
install -m 644 NEWS %{buildroot}%{_defaultdocdir}/ncurses/
|
|
mkdir -p %{buildroot}%{_sysconfdir}/terminfo
|
|
mkdir -p %{buildroot}%{_miscdir}
|
|
LD_LIBRARY_PATH=%{buildroot}%{_libdir}:%{buildroot}/%{_lib}
|
|
export LD_LIBRARY_PATH
|
|
pushd ncurses/
|
|
. ${PWD}/.build_tic
|
|
{ echo "# See annotated version in %{_defaultdocdir}/ncurses/terminfo.src.bz2"
|
|
$BUILD_TIC -C -r ../misc/terminfo.src | grep -E -v '^#'; } > termcap
|
|
# Gererate new termcap entries for various linux consoles
|
|
TERMCAP=termcap \
|
|
TERMINFO=%{buildroot}%{_datadir}/terminfo \
|
|
bash %{SOURCE2}
|
|
install -m 0644 termcap.new %{buildroot}%{_miscdir}/termcap
|
|
popd
|
|
unset LD_LIBRARY_PATH
|
|
if test `%{_bindir}/id -u` = '0' ; then
|
|
chown root:root %{buildroot}%{_miscdir}/termcap
|
|
chmod 0644 %{buildroot}%{_miscdir}/termcap
|
|
fi
|
|
ln -sf %{_miscdir}/termcap %{buildroot}%{_sysconfdir}/termcap
|
|
(cat > default.list) <<-EOF
|
|
%{tabset std}
|
|
%{tabset stdcrt}
|
|
%{tabset vt100}
|
|
%{tabset vt300}
|
|
%{terminfo a/ansi}
|
|
%{terminfo a/arpanet}
|
|
%{terminfo d/dumb}
|
|
%{terminfo d/dialup}
|
|
%{terminfo g/gnome}
|
|
%{terminfo g/gnome-rh72}
|
|
%{terminfo g/gnome-rh80}
|
|
%{terminfo g/gnome-rh90}
|
|
%{terminfo g/gnome-fc5}
|
|
%{terminfo i/ibm327x}
|
|
%{terminfo k/klone+color}
|
|
%{terminfo k/konsole}
|
|
%{terminfo k/konsole-256color}
|
|
%{terminfo k/kvt}
|
|
%{terminfo k/kvt-rh}
|
|
%{terminfo l/linux}
|
|
%{terminfo l/linux-m}
|
|
%{terminfo l/linux-nic}
|
|
%{terminfo m/mlterm}
|
|
%{terminfo n/net}
|
|
%{terminfo n/network}
|
|
%{terminfo n/nxterm}
|
|
%{terminfo p/patch}
|
|
%{terminfo r/rxvt}
|
|
%{terminfo r/rxvt-basic}
|
|
%{terminfo r/rxvt-color}
|
|
%{terminfo r/rxvt-256color}
|
|
%{terminfo r/rxvt-unicode}
|
|
%{terminfo r/rxvt-unicode-256color}
|
|
%{terminfo s/screen}
|
|
%{terminfo s/screen-w}
|
|
%{terminfo s/screen-256color}
|
|
%{terminfo s/sun}
|
|
%{terminfo s/switch}
|
|
%{terminfo u/unknown}
|
|
%{terminfo v/vt100}
|
|
%{terminfo v/vt102}
|
|
%{terminfo v/vt220}
|
|
%{terminfo v/vt220-8}
|
|
%{terminfo v/vt220-8bit}
|
|
%{terminfo v/vt320}
|
|
%{terminfo v/vt52}
|
|
%{terminfo v/vte}
|
|
%{terminfo x/xterm}
|
|
%{terminfo x/xterm-color}
|
|
%{terminfo x/xterm-256color}
|
|
%{terminfo x/xterm-basic}
|
|
%{terminfo x/xterm-nic}
|
|
%{terminfo x/xterm-r6}
|
|
EOF
|
|
find %{buildroot}%{tabset ""} %{buildroot}%{terminfo ""} \
|
|
\( -type f -or -type l \) | \
|
|
sed "s@^%{buildroot}@@g" | \
|
|
grep -v -F -x -f default.list \
|
|
> extension.list
|
|
rm -f %{buildroot}%{_prefix}/lib/terminfo
|
|
mv pc/*.pc %{buildroot}%{_libdir}/pkgconfig/
|
|
|
|
%post -n libncurses5 -p /sbin/ldconfig
|
|
|
|
%postun -n libncurses5 -p /sbin/ldconfig
|
|
|
|
%post -n libncurses6 -p /sbin/ldconfig
|
|
|
|
%postun -n libncurses6 -p /sbin/ldconfig
|
|
|
|
%files -n terminfo-base -f default.list
|
|
%defattr(-,root,root)
|
|
%{_sysconfdir}/termcap
|
|
%config %{_miscdir}/termcap
|
|
%dir %{_sysconfdir}/terminfo
|
|
%dir %{_datadir}/tabset/
|
|
%dir %{_datadir}/terminfo/
|
|
%dir %{_datadir}/terminfo/*/
|
|
|
|
%files -n ncurses-utils
|
|
%defattr(-,root,root)
|
|
%{_bindir}/clear
|
|
%{_bindir}/infocmp
|
|
%{_bindir}/reset
|
|
%{_bindir}/tabs
|
|
%{_bindir}/toe
|
|
%{_bindir}/tput
|
|
%{_bindir}/tset
|
|
%doc %{_mandir}/man1/clear.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
|
|
|
|
%files -n libncurses5
|
|
%defattr(-,root,root)
|
|
/%{_lib}/lib*.so.5*
|
|
%{_libdir}/lib*.so.5*
|
|
|
|
%files -n libncurses6
|
|
%defattr(-,root,root)
|
|
/%{_lib}/lib*.so.6*
|
|
%{_libdir}/lib*.so.6*
|
|
|
|
%files -n ncurses-devel
|
|
%defattr(-,root,root)
|
|
%dir %{_defaultdocdir}/ncurses/
|
|
%doc %{_defaultdocdir}/ncurses/*
|
|
%{_bindir}/ncurses*6-config
|
|
%{_bindir}/captoinfo
|
|
%{_bindir}/infotocap
|
|
%{_bindir}/tic
|
|
%dir %{_incdir}/ncurses/
|
|
%dir %{_incdir}/ncursesw/
|
|
%{_incdir}/*.h
|
|
%{_incdir}/ncurses/*.h
|
|
%{_incdir}/ncursesw/*.h
|
|
%{_libdir}/lib*.a
|
|
%{_libdir}/lib*.so
|
|
%{_libdir}/pkgconfig/*[clmosuw\+].pc
|
|
%doc %{_mandir}/man1/*-config.1.gz
|
|
%doc %{_mandir}/man1/captoinfo.1.gz
|
|
%doc %{_mandir}/man1/infocmp.1.gz
|
|
%doc %{_mandir}/man1/infotocap.1.gz
|
|
%doc %{_mandir}/man1/tic.1.gz
|
|
%doc %{_mandir}/man3/*.gz
|
|
%doc %{_mandir}/man7/*.gz
|
|
|
|
%files -n ncurses5-devel
|
|
%defattr(-,root,root)
|
|
%{_bindir}/ncurses*5-config
|
|
%dir %{_incdir}/ncurses5/
|
|
%dir %{_incdir}/ncurses5/ncurses/
|
|
%dir %{_incdir}/ncurses5/ncursesw/
|
|
%{_incdir}/ncurses5/*.h
|
|
%{_incdir}/ncurses5/ncurses/*.h
|
|
%{_incdir}/ncurses5/ncursesw/*.h
|
|
%dir %{_libdir}/ncurses5/
|
|
%{_libdir}/ncurses5/lib*.a
|
|
%{_libdir}/ncurses5/lib*.so
|
|
%{_libdir}/pkgconfig/*5.pc
|
|
|
|
%files -n tack
|
|
%defattr(-,root,root)
|
|
%{_bindir}/tack
|
|
%doc %{_mandir}/man1/tack.1.gz
|
|
|
|
%files -f extension.list -n terminfo
|
|
%defattr(-,root,root)
|
|
|
|
%changelog
|