ncurses/ncurses.spec

946 lines
28 KiB
RPMSpec
Raw Normal View History

#
# spec file for package ncurses
#
# Copyright (c) 2016 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
Patch5: ncurses-5.9-environment.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: 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 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
%patch5 -p0 -b .lc
%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 -L -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
GZIP="-9"
export CC CFLAGS CXX CXXFLAGS GZIP 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?)
#
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-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)
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 -L -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 -L -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 -L -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
GZIP="-9"
export GZIP
(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}
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 %{_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*-config
%{_bindir}/captoinfo
%{_bindir}/infotocap
%{_bindir}/tic
%dir %{_incdir}/ncurses/
%dir %{_incdir}/ncursesw/
%dir %{_incdir}/ncurses5/
%dir %{_incdir}/ncurses5/ncurses/
%dir %{_incdir}/ncurses5/ncursesw/
%{_incdir}/*.h
%{_incdir}/ncurses*/*.h
%{_incdir}/ncurses*/*/*.h
%{_libdir}/lib*.a
%{_libdir}/lib*.so
%dir %{_libdir}/ncurses5/
%{_libdir}/ncurses5/lib*.a
%{_libdir}/ncurses5/lib*.so
%{_libdir}/pkgconfig/*.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 tack
%defattr(-,root,root)
%{_bindir}/tack
%doc %{_mandir}/man1/tack.1.gz
%files -f extension.list -n terminfo
%defattr(-,root,root)
%changelog