SHA256
1
0
forked from pool/ncurses
ncurses/ncurses.spec
OBS User autobuild 44874ba07f Accepting request 24424 from Base:System
Copy from Base:System/ncurses based on submit request 24424 from user msmeissn

OBS-URL: https://build.opensuse.org/request/show/24424
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/ncurses?expand=0&rev=25
2009-11-16 08:52:55 +00:00

658 lines
19 KiB
RPMSpec

#
# spec file for package ncurses (Version 5.6)
#
# Copyright (c) 2009 SUSE LINUX Products 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/
#
# norootforbuild
Name: ncurses
#!BuildIgnore: terminfo
BuildRequires: gcc-c++ gpm
%define terminfo() %{_datadir}/%{0}/%{1}
%define tabset() %{_datadir}/%{0}/%{1}
License: MIT License (or similar)
Group: System/Base
AutoReqProv: on
# bug437293
%ifarch ppc64
Obsoletes: ncurses-64bit
%endif
#
Version: 5.6
Release: 92
Summary: New curses Libraries
Url: http://invisible-island.net/ncurses/ncurses.html
Source0: ncurses-5.6.tar.bz2
Source1: ncurses-%{version}-20080804-patch.tar.bz2
Source2: handle.linux
Source3: README.devel
Source4: ncurses-rpmlintrc
Source5: tack-1.06.tar.bz2
Source6: edit.sed
Patch0: ncurses-%{version}.dif
Patch1: ncurses-5.3-printw.dif
Patch2: ncurses-5.6-pthread.dif
Patch3: ncurses-5.6-overwrite.dif
Patch4: ncurses-5.6-tack.dif
Patch5: ncurses-5.6-gpm.dif
Patch6: ncurses-5.6-fallback.dif
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%global _sysconfdir /etc
%global _miscdir %{_datadir}/misc
%global _incdir %{_includedir}
%global root %{_tmppath}/%{name}-%{version}-store
%global abi %(ver=%{version}; echo ${ver%.*})
%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:
--------
Zeyd M. Ben-Halim <zmbenhal@netcom.com>
Eric S. Raymond <esr@thyrsus.com>
Thomas E. Dickey <dickey@invisible-island.net>
Juergen Pfeifer <Juergen.Pfeifer@t-online.de>
Pavel Curtis
%package -n ncurses-utils
License: MIT License (or similar)
Summary: Tools using the new curses libraries
Group: System/Base
Provides: ncurses:%{_bindir}/tput
AutoReqProv: on
%description -n ncurses-utils
The ncurses based utilities are as follows:
clear -- emits clear-screen for current terminal
toe -- table of entries utility
tput -- shell-script access to terminal capabilities.
tset -- terminal-initialization utility
reset -- terminal initialization utility
Authors:
--------
Zeyd M. Ben-Halim <zmbenhal@netcom.com>
Eric S. Raymond <esr@thyrsus.com>
Thomas E. Dickey <dickey@invisible-island.net>
Juergen Pfeifer <Juergen.Pfeifer@t-online.de>
Pavel Curtis
%package -n terminfo-base
License: MIT License (or similar)
Summary: A terminal descriptions database
Group: System/Base
Provides: ncurses:%{_datadir}/tabset
AutoReqProv: on
%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:
--------
Eric S. Raymond <esr@thyrsus.com>
Thomas E. Dickey <dickey@invisible-island.net>
%if %abi == 5
%package -n libncurses5
License: MIT License (or similar)
Summary: The New curses Libraries
Group: System/Libraries
Requires: terminfo-base
Provides: ncurses = %{version}
Obsoletes: ncurses <= %{version}
Recommends: ncurses-utils = %{version}
AutoReqProv: on
# 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:
--------
Zeyd M. Ben-Halim <zmbenhal@netcom.com>
Eric S. Raymond <esr@thyrsus.com>
Thomas E. Dickey <dickey@invisible-island.net>
Juergen Pfeifer <Juergen.Pfeifer@t-online.de>
Pavel Curtis
%endif
%package -n libncurses6
License: MIT License (or similar)
Summary: The New curses Libraries
Group: System/Libraries
Requires: terminfo-base
%if %abi == 5
Provides: ncurses = 6.0
%else
Provides: ncurses = %{version}
%endif
AutoReqProv: on
%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:
--------
Zeyd M. Ben-Halim <zmbenhal@netcom.com>
Eric S. Raymond <esr@thyrsus.com>
Thomas E. Dickey <dickey@invisible-island.net>
Juergen Pfeifer <Juergen.Pfeifer@t-online.de>
Pavel Curtis
%package -n terminfo
Summary: A terminal descriptions database
License: Public Domain, Freeware
Group: System/Base
AutoReqProv: on
%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 License (or similar)
Group: Development/Libraries/C and C++
Provides: ncurses:%{_incdir}/ncurses.h
Requires: ncurses = %{version}-%{release}, %{_bindir}/tack
%if %abi >= 6
Requires: libncurses6
%else
Requires: libncurses5 libncurses6
%endif
AutoReqProv: on
# 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:
--------
Zeyd M. Ben-Halim <zmbenhal@netcom.com>
Eric S. Raymond <esr@thyrsus.com>
Thomas E. Dickey <dickey@invisible-island.net>
Juergen Pfeifer <Juergen.Pfeifer@t-online.de>
Pavel Curtis
%package -n tack
Summary: Terminfo action checker
License: GPL v2 or later
Group: Development/Tools/Building
Provides: ncurses-devel:%{_bindir}/tack
Requires: ncurses = %{version}-%{release}
AutoReqProv: on
%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 -n ncurses-%{version} -b0
rm -fr tack
rm -f Ada95/src/terminal_interface-curses.adb
rm -f mkinstalldirs
tar Oxfj %{S:1} | patch -p1 -s
tar xfj %{S:5}
ln -sf tack-* tack
%patch -P 1 -p0 -b .va
%patch -P 2 -p0 -b .pt
%patch -P 3 -p0 -b .ow
%patch -P 4 -p0 -b .hs
%patch -P 5 -p0 -b .gpm
%patch -P 6 -p0 -b .fb
%patch -P 0 -p0
%build
test ! -f /.buildenv || . /.buildenv
OPATH=$PATH
FALLBK="xterm,linux,vt100,vt102"
CC=gcc
CXX=g++
CFLAGS="${RPM_OPT_FLAGS} -pipe -D_REENTRANT"
if [[ "$BUILD_BASENAME" = debug-* ]] ; then
CFLAGS="${CFLAGS} -g -DTRACE"
fi
CXXFLAGS=$CFLAGS
# LDFLAGS="-Wl,-Bsymbolic-functions"
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 ncurses 5.4
#
echo 'int main () { return !(sizeof(void*) >= 8); }' | gcc -x c -o test64 -
if ./test64 ; then
WITHCHTYPE="--with-chtype=long"
else
WITHCHTYPE=""
CFLAGS="${CFLAGS} -D_LARGEFILE64_SOURCES -D_FILE_OFFSET_BITS=64"
fi
rm -f ./test64
#
# For security of some configure and install scripts
#
TMPDIR=$(mktemp -d /tmp/ncurses.XXXXXXXX) || exit 1
trap 'rm -rf ${TMPDIR}' EXIT
export TMPDIR
#
# 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 --with-termlib=tinfo because libncurses depend on
# libtinfo (is linked with) and therefore there is no
# advantage about splitting of a libtinfo (IMHO).
#
touch --reference=README config.sub config.guess
%{?suse_update_config:%{suse_update_config}}
./configure --build ${RPM_ARCH}-suse-linux \
--without-debug \
--without-profile \
--with-shared \
--with-normal \
--with-manpage-format=gzip \
--with-manpage-renames=${PWD}/man/man_db.renames \
--with-fallbacks=${FALLBK} \
--with-ospeed=speed_t \
--with-gpm \
--with-dlsym \
--disable-root-environ \
--disable-termcap \
--disable-overwrite \
--disable-rpath \
--disable-leaks \
--disable-xmc-glitch \
--enable-symlinks \
--enable-big-core \
--enable-const \
--enable-hashmap \
--enable-no-padding \
--enable-symlinks \
--enable-sigwinch \
--enable-colorfgbg \
%if %abi >= 6
--with-pthread \
--enable-ext-mouse \
--disable-widec \
--enable-ext-colors \
%else
--without-pthread \
--disable-ext-mouse \
--disable-widec \
--disable-ext-colors \
%endif
--enable-wgetch-events \
--prefix=%{_prefix} \
--exec-prefix=%{_prefix}\
--libdir=%{_libdir} \
--datadir=%{_datadir} \
--mandir=%{_mandir} \
--includedir=%{_incdir} \
"${WITHCHTYPE}" \
--disable-widec \
--with-ticlib=tic
#
# This is a hack to be able to boot strap
# a libncurses with correct fallback.c.
#
make -C include
make -C ncurses fallback.c FALLBACK_LIST=""
make -C progs termsort.c transform.h infocmp tic
rm -f ncurses/fallback.c
PATH=$PWD/progs:$OPATH
pushd ncurses/
TERMINFO=$PWD/tmp
export TERMINFO
mkdir -p $TERMINFO
sh run_cmd.sh tic -I -r -e $FALLBK ../misc/terminfo.src > terminfo.src
sh run_cmd.sh tic -o $TERMINFO -s terminfo.src
make fallback.c
rm -rf $TERMINFO
unset TERMINFO
popd
PATH=$OPATH
#
# Refresh second install path
#
rm -rf %{root}
mkdir %{root}
#
# Now rebuild libncurses and do the rest of this job
#
make
lib=%{_libdir}
inc=%{_incdir}/ncurses
make install DESTDIR=%{root} includedir=${inc} libdir=${lib}
ln -sf ${inc##*/}/{curses,ncurses,term,termcap}.h %{root}${inc%%/*}/
sh %{S:6} --cflags "-I${inc}" --libs "-lncurses" %{root}%{_bindir}/ncurses5-config
#
# Check for tack program on base of above ncurses
#
pushd tack-*/
ldd ./tack
popd
test ! -L tack || rm -f tack
#
# The configure line
#
c=$(grep '^ *$ *\./configure' config.log)
%if %abi < 6
#
# Now use --with-pthread for reentrant pthread support (abi > 5).
#
eval ./${c#*./} --with-pthread --enable-ext-mouse --disable-widec --disable-ext-colors --without-progs
make
lib=%{_libdir}/ncurses6
inc=%{_incdir}/ncurses6/ncurses
make install.libs install.includes DESTDIR=%{root} includedir=${inc} libdir=${lib}
ln -sf ${inc##*/}/{curses,ncurses,term}.h %{root}${inc%%/*}/
sh %{S:6} --cflags "-I${inc} -I${inc%%/*}" --libs "-L${lib} -lncurses" %{root}%{_bindir}/ncurses6-config
%endif
#
# 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.
#
%if %abi >= 6
eval ./${c#*./} --with-pthread --enable-ext-mouse --enable-widec --enable-ext-colors --without-progs
%else
eval ./${c#*./} --disable-ext-mouse --enable-widec --disable-ext-colors --without-progs
%endif
make
lib=%{_libdir}
inc=%{_incdir}/ncursesw
make install.libs install.includes DESTDIR=%{root} includedir=${inc} libdir=${lib}
sh %{S:6} --cflags "-I${inc}" --libs "-lncursesw" %{root}%{_bindir}/ncursesw5-config
%if %abi < 6
#
# Do both --enable-widec and --with-pthread (abi > 5).
#
eval ./${c#*./} --with-pthread --enable-ext-mouse --enable-widec --enable-ext-colors --without-progs
make
lib=%{_libdir}/ncurses6
inc=%{_incdir}/ncurses6/ncursesw
make install.libs install.includes DESTDIR=%{root} includedir=${inc} libdir=${lib}
sh %{S:6} --cflags "-I${inc} -I${inc%%/*}" --libs "-L${lib} -lncursesw" %{root}%{_bindir}/ncursesw6-config
%endif
%install
GZIP="-9"
export GZIP
(cd %{root}/; tar -cpsSf - *)|tar -xpsSf - -C %{buildroot}/
rm -rf %{root}
mkdir %{buildroot}/%{_lib}
for model in libncurses libncursest libncursesw libncursestw
do
mv %{buildroot}%{_libdir}/${model}.so.* %{buildroot}/%{_lib}/ || continue
for lib in %{buildroot}/%{_lib}/${model}.so.* ; do
test -e "${lib}" || continue
test ! -L "${lib}" || continue
lib=${lib#%{buildroot}}
ln -sf ${lib} %{buildroot}%{_libdir}/${model}.so
done
done
chmod 0755 %{buildroot}/%{_lib}/lib*.so.*
chmod 0755 %{buildroot}/%{_libdir}/lib*.so.*
chmod a-x %{buildroot}/%{_libdir}/lib*.a
if test -d %{buildroot}%{_libdir}/ncurses6 ; then
mv %{buildroot}%{_libdir}/ncurses6/*.so.6* %{buildroot}/%{_libdir}/
for lib in %{buildroot}%{_libdir}/ncurses6/*.so
do
test -L "${lib}" || continue
case "${lib##*/}" in
libncurses*) ln -sf /%{_lib}/${lib##*/}.6 ${lib} ;;
*) ln -sf ../${lib##*/}.6 ${lib} ;;
esac
done
for model in libncurses libncursest libncursesw libncursestw
do
mv %{buildroot}%{_libdir}/${model}.so.6* %{buildroot}/%{_lib}/ || continue
done
for lib in %{buildroot}/%{_lib}/${model}.so.6* ; do
test -e "${lib}" || continue
test ! -L "${lib}" || continue
lib=${lib#%{buildroot}}
ln -sf ${lib} %{buildroot}%{_libdir}/${model}.so
done
chmod 0755 %{buildroot}/%{_lib}/lib*.so.6*
chmod 0755 %{buildroot}/%{_libdir}/lib*.so.6*
chmod a-x %{buildroot}/%{_libdir}/ncurses6/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/
mkdir -p %{buildroot}%{_sysconfdir}
mkdir -p %{buildroot}%{_miscdir}
cd ncurses/
{ echo "# See annotated version in %{_defaultdocdir}/ncurses/terminfo.src.bz2"
sh ./run_cmd.sh 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
cd ../
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 k/klone+color}
%{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 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 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
%if %abi < 6
%post -n libncurses5 -p /sbin/ldconfig
%postun -n libncurses5 -p /sbin/ldconfig
%endif
%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}/reset
%{_bindir}/toe
%{_bindir}/tput
%{_bindir}/tset
%doc %{_mandir}/man1/clear.1.gz
%doc %{_mandir}/man1/reset.1.gz
%doc %{_mandir}/man1/toe.1.gz
%doc %{_mandir}/man1/tput.1.gz
%doc %{_mandir}/man1/tset.1.gz
%doc %{_mandir}/man5/*.gz
%if %abi == 5
%files -n libncurses5
%defattr(-,root,root)
/%{_lib}/lib*.so.5*
%{_libdir}/lib*.so.5*
%endif
%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}/infocmp
%{_bindir}/infotocap
%{_bindir}/tic
%dir %{_incdir}/ncurses/
%dir %{_incdir}/ncursesw/
%dir %{_incdir}/ncurses6/
%dir %{_incdir}/ncurses6/ncurses/
%dir %{_incdir}/ncurses6/ncursesw/
%{_incdir}/*.h
%{_incdir}/ncurses*/*.h
%{_incdir}/ncurses*/*/*.h
%dir %{_libdir}/ncurses6/
%{_libdir}/lib*.a
%{_libdir}/lib*.so
%{_libdir}/ncurses6/lib*.a
%{_libdir}/ncurses6/lib*.so
%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