shared libtinfo only but with auxillary shared libtinfow as well

OBS-URL: https://build.opensuse.org/package/show/Base:System/ncurses?expand=0&rev=361
This commit is contained in:
Dr. Werner Fink 2018-03-02 10:18:56 +00:00 committed by Git OBS Bridge
parent 653080d4bb
commit 5fff6b98c3
2 changed files with 48 additions and 11 deletions

View File

@ -1,3 +1,10 @@
-------------------------------------------------------------------
Fri Mar 2 10:00:20 UTC 2018 - werner@suse.de
- Switch back to shared libtinfo only but provide an auxiliary shared
library libtinfow to avoid a rebuild of third party programs
+ Add sanity check if new 32bit API is included in libtinfo
------------------------------------------------------------------- -------------------------------------------------------------------
Thu Mar 1 13:39:02 UTC 2018 - werner@suse.de Thu Mar 1 13:39:02 UTC 2018 - werner@suse.de

View File

@ -23,6 +23,13 @@
%bcond_with symversion %bcond_with symversion
%endif %endif
%bcond_with memleakck %bcond_with memleakck
%bcond_without onlytinfo
%if %{with onlytinfo}
%global soname_tinfo tinfo
%else
%global soname_tinfo tinfow
%endif
Name: ncurses Name: ncurses
#!BuildIgnore: terminfo #!BuildIgnore: terminfo
@ -434,7 +441,7 @@ mv tack-* tack
--enable-opaque-panel \ --enable-opaque-panel \
--enable-ext-mouse \ --enable-ext-mouse \
--enable-widec \ --enable-widec \
--with-termlib=tinfow \ --with-termlib=%{soname_tinfo} \
--with-ticlib=ticw \ --with-ticlib=ticw \
%if %{with symversion} %if %{with symversion}
--with-versioned-syms=${PWD}/package/ncursestw.map \ --with-versioned-syms=${PWD}/package/ncursestw.map \
@ -529,8 +536,16 @@ mv tack-* tack
# must not use %jobs here (would lead to: ln: ncurses.h already exists) # must not use %jobs here (would lead to: ln: ncurses.h already exists)
find man/ -name '*.[1-8]x.*' -print -delete find man/ -name '*.[1-8]x.*' -print -delete
make install DESTDIR=%{root} includedir=%{_incdir} includesubdir=/ncursesw libdir=%{_libdir} make install DESTDIR=%{root} includedir=%{_incdir} includesubdir=/ncursesw libdir=%{_libdir}
%if %{with onlytinfo}
# This ensures that we get the libtinfo *with* _nc_read_entry2 symbol as well
gcc $CFLAGS $LDFLAGS -fPIC -shared -Wl,--auxiliary=libtinfo.so.6,-soname,libtinfow.so.6,-stats,-lc \
-Wl,--version-script,ncurses/resulting.map -o %{root}%{_libdir}/libtinfow.so.%{version}
cp -p %{root}%{_libdir}/libtinfo.so.%{version} libtinfo.so.%{version}.back
cp -p %{root}%{_libdir}/libtinfow.so.%{version} libtinfow.so.%{version}.back
%endif
ln -sf %{_incdir}/ncurses/{curses,ncurses,term,termcap}.h %{root}%{_incdir} ln -sf %{_incdir}/ncurses/{curses,ncurses,term,termcap}.h %{root}%{_incdir}
sh %{S:6} --cflags "-D_GNU_SOURCE -I%{_incdir}/ncursesw" --libs "-lncursesw" --libs "-ltinfow" %{root}%{_bindir}/ncursesw6-config sh %{S:6} --cflags "-D_GNU_SOURCE -I%{_incdir}/ncursesw" --libs "-lncursesw" \
--libs "-l%{soname_tinfo}" %{root}%{_bindir}/ncursesw6-config
mkdir pc mkdir pc
mv -f %{root}%{_libdir}/pkgconfig/*.pc pc/ mv -f %{root}%{_libdir}/pkgconfig/*.pc pc/
# #
@ -555,8 +570,8 @@ mv tack-* tack
CFLAGS="$CFLAGS -I%{root}%{_incdir}" LDFLAGS="$LDFLAGS -L%{root}%{_libdir}" \ CFLAGS="$CFLAGS -I%{root}%{_incdir}" LDFLAGS="$LDFLAGS -L%{root}%{_libdir}" \
./configure --with-ncursesw --enable-widec --prefix=$PWD ./configure --with-ncursesw --enable-widec --prefix=$PWD
LD_LIBRARY_PATH=%{root}%{_libdir} \ LD_LIBRARY_PATH=%{root}%{_libdir} \
make %{?_smp_mflags} TEST_ARGS='-lformw -lmenuw -lpanelw -lncursesw -lticw -ltinfow -Wl,--as-needed' make %{?_smp_mflags} TEST_ARGS='-lformw -lmenuw -lpanelw -lncursesw -lticw -l%{soname_tinfo} -Wl,--as-needed'
make install TEST_ARGS='-lformw -lmenuw -lpanelw -lncursesw -lticw -ltinfow -Wl,--as-needed' make install TEST_ARGS='-lformw -lmenuw -lpanelw -lncursesw -lticw -l%{soname_tinfo} -Wl,--as-needed'
mv bin binw mv bin binw
make distclean make distclean
popd popd
@ -603,7 +618,8 @@ mv tack-* tack
# must not use %jobs here (would lead to: ln: ncurses.h already exists) # 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 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/ 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 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 pushd man
sh ../edit_man.sh normal installing %{root}%{_mandir} . ncurses5-config.1 sh ../edit_man.sh normal installing %{root}%{_mandir} . ncurses5-config.1
popd popd
@ -656,7 +672,13 @@ mv tack-* tack
make %{?_smp_mflags} make %{?_smp_mflags}
# must not use %jobs here (would lead to: ln: ncurses.h already exists) # must not use %jobs here (would lead to: ln: ncurses.h already exists)
make install.libs install.includes DESTDIR=%{root} includedir=%{_incdir} includesubdir=/ncurses libdir=%{_libdir} make install.libs install.includes DESTDIR=%{root} includedir=%{_incdir} includesubdir=/ncurses libdir=%{_libdir}
sh %{S:6} --cflags "-D_GNU_SOURCE -I%{_incdir}/ncurses" --libs "-lncurses" --libs "-ltinfo" %{root}%{_bindir}/ncurses6-config %if %{with onlytinfo}
# This ensures that we get the libtinfo *with* _nc_read_entry2 symbol as well
cp -p libtinfo.so.%{version}.back %{root}%{_libdir}/libtinfo.so.%{version}
cp -p libtinfow.so.%{version}.back %{root}%{_libdir}/libtinfow.so.%{version}
%endif
sh %{S:6} --cflags "-D_GNU_SOURCE -I%{_incdir}/ncurses" --libs "-lncurses" \
--libs "-ltinfo" %{root}%{_bindir}/ncurses6-config
pushd man pushd man
sh ../edit_man.sh normal installing %{root}%{_mandir} . ncurses6-config.1 sh ../edit_man.sh normal installing %{root}%{_mandir} . ncurses6-config.1
popd popd
@ -702,7 +724,7 @@ mv tack-* tack
--disable-opaque-panel \ --disable-opaque-panel \
--disable-ext-mouse \ --disable-ext-mouse \
--enable-widec \ --enable-widec \
--with-termlib=tinfow \ --with-termlib=%{soname_tinfo} \
--with-ticlib=ticw \ --with-ticlib=ticw \
%if %{with symversion} %if %{with symversion}
--with-versioned-syms=${PWD}/package/ncursesw.map \ --with-versioned-syms=${PWD}/package/ncursesw.map \
@ -723,7 +745,12 @@ mv tack-* tack
s@^(includedir=).show_includedir@\1%{_incdir}/ncurses5/ncursesw@' misc/gen-pkgconfig s@^(includedir=).show_includedir@\1%{_incdir}/ncurses5/ncursesw@' misc/gen-pkgconfig
# must not use %jobs here (would lead to: ln: ncurses.h already exists) # 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 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 "-ltinfow" %{root}%{_bindir}/ncursesw5-config %if %{with onlytinfo}
gcc $CFLAGS $LDFLAGS -fPIC -shared -Wl,--auxiliary=libtinfo.so.5,-soname,libtinfow.so.5,-stats,-lc \
-Wl,--version-script,package/ncursesw.map -o %{root}%{_libdir}/libtinfow.so.5.9
%endif
sh %{S:6} --cflags "-D_GNU_SOURCE -I%{_incdir}/ncurses5/ncursesw -I%{_incdir}/ncurses5" --libs "-L%{_libdir}/ncurses5 -lncursesw" \
--libs "-l%{soname_tinfo}" %{root}%{_bindir}/ncursesw5-config
pushd man pushd man
sh ../edit_man.sh normal installing %{root}%{_mandir} . ncursesw5-config.1 sh ../edit_man.sh normal installing %{root}%{_mandir} . ncursesw5-config.1
popd popd
@ -763,7 +790,7 @@ mv tack-* tack
libncursesw*) libncursesw*)
rm -f ${lnk} rm -f ${lnk}
echo '/* GNU ld script */' > ${lnk} echo '/* GNU ld script */' > ${lnk}
echo "INPUT(${lib} AS_NEEDED(-ltinfow -ldl))" >> ${lnk} echo "INPUT(${lib} AS_NEEDED(-l%{soname_tinfo} -ldl))" >> ${lnk}
;; ;;
libncurses*) libncurses*)
rm -f ${lnk} rm -f ${lnk}
@ -792,7 +819,7 @@ mv tack-* tack
libncursesw*) libncursesw*)
rm -f "${lnk}" rm -f "${lnk}"
echo '/* GNU ld script */' > ${lnk} echo '/* GNU ld script */' > ${lnk}
echo "INPUT(${lib} AS_NEEDED(-ltinfow))">> ${lnk} echo "INPUT(${lib} AS_NEEDED(-l%{soname_tinfo}))">> ${lnk}
;; ;;
libncurses*) libncurses*)
rm -f "${lnk}" rm -f "${lnk}"
@ -824,7 +851,7 @@ mv tack-* tack
rm -f ${lnk} rm -f ${lnk}
echo '/* GNU ld script */' > ${lnk} echo '/* GNU ld script */' > ${lnk}
echo 'SEARCH_DIR(%{_libdir}/ncurses5)' >> ${lnk} echo 'SEARCH_DIR(%{_libdir}/ncurses5)' >> ${lnk}
echo "INPUT(${lib} AS_NEEDED(-ltinfow))">> ${lnk} echo "INPUT(${lib} AS_NEEDED(-l%{soname_tinfo}))">> ${lnk}
;; ;;
libncurses*) libncurses*)
rm -f ${lnk} rm -f ${lnk}
@ -957,6 +984,9 @@ mv tack-* tack
%check %check
LD_LIBRARY_PATH=%{buildroot}/%{_lib}:%{buildroot}%{_libdir} LD_LIBRARY_PATH=%{buildroot}/%{_lib}:%{buildroot}%{_libdir}
export LD_LIBRARY_PATH export LD_LIBRARY_PATH
%if %{with onlytinfo}
nm -D %{buildroot}/%{_lib}/libtinfo.so.%{version} | grep -q _nc_read_entry2
%endif
pushd test pushd test
expect -d <<-'EOF' expect -d <<-'EOF'
set env(TERM) xterm set env(TERM) xterm