summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMike Frysinger <vapier@gentoo.org>2009-10-11 07:30:29 +0000
committerMike Frysinger <vapier@gentoo.org>2009-10-11 07:30:29 +0000
commit285835db9ce9c9c5563420cff9d47c6bb97345cc (patch)
tree211a83291e8faa2850ae82ab4173aee1f358dbc5 /sys-libs/ncurses
parentversion bump (diff)
downloadgentoo-2-285835db9ce9c9c5563420cff9d47c6bb97345cc.tar.gz
gentoo-2-285835db9ce9c9c5563420cff9d47c6bb97345cc.tar.bz2
gentoo-2-285835db9ce9c9c5563420cff9d47c6bb97345cc.zip
Add fix from upstream for db issues #245370 by Graham Murray. Fix cross-compiling hang with tic and older ncurses #249363.
(Portage version: 2.2_rc42/cvs/Linux x86_64)
Diffstat (limited to 'sys-libs/ncurses')
-rw-r--r--sys-libs/ncurses/ChangeLog9
-rw-r--r--sys-libs/ncurses/files/ncurses-5.7-hashdb-open.patch88
-rw-r--r--sys-libs/ncurses/ncurses-5.7-r2.ebuild169
3 files changed, 265 insertions, 1 deletions
diff --git a/sys-libs/ncurses/ChangeLog b/sys-libs/ncurses/ChangeLog
index d3d29ed96559..8fbcdd462235 100644
--- a/sys-libs/ncurses/ChangeLog
+++ b/sys-libs/ncurses/ChangeLog
@@ -1,6 +1,13 @@
# ChangeLog for sys-libs/ncurses
# Copyright 1999-2009 Gentoo Foundation; Distributed under the GPL v2
-# $Header: /var/cvsroot/gentoo-x86/sys-libs/ncurses/ChangeLog,v 1.164 2009/10/11 05:38:15 vapier Exp $
+# $Header: /var/cvsroot/gentoo-x86/sys-libs/ncurses/ChangeLog,v 1.165 2009/10/11 07:30:28 vapier Exp $
+
+*ncurses-5.7-r2 (11 Oct 2009)
+
+ 11 Oct 2009; Mike Frysinger <vapier@gentoo.org> +ncurses-5.7-r2.ebuild,
+ +files/ncurses-5.7-hashdb-open.patch:
+ Add fix from upstream for db issues #245370 by Graham Murray. Fix
+ cross-compiling hang with tic and older ncurses #249363.
11 Oct 2009; Mike Frysinger <vapier@gentoo.org> ncurses-5.6-r2.ebuild:
Force gawk #259510 by Linubie.
diff --git a/sys-libs/ncurses/files/ncurses-5.7-hashdb-open.patch b/sys-libs/ncurses/files/ncurses-5.7-hashdb-open.patch
new file mode 100644
index 000000000000..d2575fd45cce
--- /dev/null
+++ b/sys-libs/ncurses/files/ncurses-5.7-hashdb-open.patch
@@ -0,0 +1,88 @@
+http://bugs.gentoo.org/245370
+
+ripped from ncurses-5.7-20081213.patch
+
+20081213
+ + add check for failure to open hashed-database needed for db4.6
+ (GenToo #245370).
+
+--- ncurses-5.7-20081206+/ncurses/tinfo/hashed_db.c 2006-08-19 19:48:38.000000000 +0000
++++ ncurses-5.7-20081213/ncurses/tinfo/hashed_db.c 2008-12-13 20:59:02.000000000 +0000
+@@ -49,27 +49,30 @@
+ _nc_db_open(const char *path, bool modify)
+ {
+ DB *result = 0;
++ int code;
+
+ #if HASHED_DB_API >= 4
+ db_create(&result, NULL, 0);
+- result->open(result,
+- NULL,
+- path,
+- NULL,
+- DB_HASH,
+- modify ? DB_CREATE : DB_RDONLY,
+- 0644);
++ if ((code = result->open(result,
++ NULL,
++ path,
++ NULL,
++ DB_HASH,
++ modify ? DB_CREATE : DB_RDONLY,
++ 0644)) != 0) {
++ result = 0;
++ }
+ #elif HASHED_DB_API >= 3
+ db_create(&result, NULL, 0);
+- result->open(result,
+- path,
+- NULL,
+- DB_HASH,
+- modify ? DB_CREATE : DB_RDONLY,
+- 0644);
++ if ((code = result->open(result,
++ path,
++ NULL,
++ DB_HASH,
++ modify ? DB_CREATE : DB_RDONLY,
++ 0644)) != 0) {
++ result = 0;
++ }
+ #elif HASHED_DB_API >= 2
+- int code;
+-
+ if ((code = db_open(path,
+ DB_HASH,
+ modify ? DB_CREATE : DB_RDONLY,
+@@ -77,21 +80,22 @@
+ (DB_ENV *) 0,
+ (DB_INFO *) 0,
+ &result)) != 0) {
+- T(("cannot open %s: %s", path, strerror(code)));
+ result = 0;
+- } else {
+- T(("opened %s", path));
+ }
+ #else
+- result = dbopen(path,
+- modify ? (O_CREAT | O_RDWR) : O_RDONLY,
+- 0644,
+- DB_HASH,
+- NULL);
++ if ((result = dbopen(path,
++ modify ? (O_CREAT | O_RDWR) : O_RDONLY,
++ 0644,
++ DB_HASH,
++ NULL)) == 0) {
++ code = errno;
++ }
++#endif
+ if (result != 0) {
+ T(("opened %s", path));
++ } else {
++ T(("cannot open %s: %s", path, strerror(code)));
+ }
+-#endif
+ return result;
+ }
+
diff --git a/sys-libs/ncurses/ncurses-5.7-r2.ebuild b/sys-libs/ncurses/ncurses-5.7-r2.ebuild
new file mode 100644
index 000000000000..519ced50af3a
--- /dev/null
+++ b/sys-libs/ncurses/ncurses-5.7-r2.ebuild
@@ -0,0 +1,169 @@
+# Copyright 1999-2009 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/sys-libs/ncurses/ncurses-5.7-r2.ebuild,v 1.1 2009/10/11 07:30:28 vapier Exp $
+
+EAPI="1"
+inherit eutils flag-o-matic toolchain-funcs
+
+MY_PV=${PV:0:3}
+PV_SNAP=${PV:4}
+MY_P=${PN}-${MY_PV}
+DESCRIPTION="console display library"
+HOMEPAGE="http://www.gnu.org/software/ncurses/ http://dickey.his.com/ncurses/"
+SRC_URI="mirror://gnu/ncurses/${MY_P}.tar.gz"
+
+LICENSE="MIT"
+SLOT="5"
+KEYWORDS="~alpha ~amd64 ~arm ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~sparc-fbsd ~x86 ~x86-fbsd"
+IUSE="ada +cxx debug doc gpm minimal profile trace unicode"
+
+DEPEND="gpm? ( sys-libs/gpm )"
+# berkdb? ( sys-libs/db )"
+
+S=${WORKDIR}/${MY_P}
+
+src_unpack() {
+ unpack ${A}
+ cd "${S}"
+ [[ -n ${PV_SNAP} ]] && epatch "${WORKDIR}"/${MY_P}-${PV_SNAP}-patch.sh
+ epatch "${FILESDIR}"/${PN}-5.6-gfbsd.patch
+ epatch "${FILESDIR}"/${PN}-5.7-emacs.patch #270527
+ epatch "${FILESDIR}"/${PN}-5.7-nongnu.patch
+ epatch "${FILESDIR}"/${P}-hashdb-open.patch #245370
+}
+
+src_compile() {
+ unset TERMINFO #115036
+ tc-export BUILD_CC
+ export BUILD_CPPFLAGS+=" -D_GNU_SOURCE" #214642
+
+ # when cross-compiling, we need to build up our own tic
+ # because people often don't keep matching host/target
+ # ncurses versions #249363
+ if tc-is-cross-compiler ; then
+ make_flags="-C progs tic"
+ CHOST=${CBUILD} \
+ CFLAGS=${BUILD_CFLAGS} \
+ CXXFLAGS=${BUILD_CXXFLAGS} \
+ CPPFLAGS=${BUILD_CPPFLAGS} \
+ LDFLAGS="${BUILD_LDFLAGS} -static" \
+ do_compile cross --without-shared
+ fi
+
+ make_flags=""
+ do_compile narrowc
+ use unicode && do_compile widec --enable-widec --includedir=/usr/include/ncursesw
+}
+do_compile() {
+ ECONF_SOURCE=${S}
+
+ mkdir "${WORKDIR}"/$1
+ cd "${WORKDIR}"/$1
+ shift
+
+ # The chtype/mmask-t settings below are to retain ABI compat
+ # with ncurses-5.4 so dont change em !
+ local conf_abi="
+ --with-chtype=long \
+ --with-mmask-t=long \
+ --disable-ext-colors \
+ --disable-ext-mouse \
+ --without-pthread \
+ --without-reentrant \
+ "
+ # We need the basic terminfo files in /etc, bug #37026. We will
+ # add '--with-terminfo-dirs' and then populate /etc/terminfo in
+ # src_install() ...
+# $(use_with berkdb hashed-db)
+ econf \
+ --libdir="/$(get_libdir)" \
+ --with-terminfo-dirs="/etc/terminfo:/usr/share/terminfo" \
+ --with-shared \
+ --without-hashed-db \
+ $(use_with ada) \
+ $(use_with cxx) \
+ $(use_with cxx cxx-binding) \
+ $(use_with debug) \
+ $(use_with profile) \
+ $(use_with gpm) \
+ --disable-termcap \
+ --enable-symlinks \
+ --with-rcs-ids \
+ --with-manpage-format=normal \
+ --enable-const \
+ --enable-colorfgbg \
+ --enable-echo \
+ $(use_enable !ada warnings) \
+ $(use_with debug assertions) \
+ $(use_with !debug leaks) \
+ $(use_with debug expanded) \
+ $(use_with !debug macros) \
+ $(use_with trace) \
+ ${conf_abi} \
+ "$@" \
+ || die "configure failed"
+
+ # A little hack to fix parallel builds ... they break when
+ # generating sources so if we generate the sources first (in
+ # non-parallel), we can then build the rest of the package
+ # in parallel. This is not really a perf hit since the source
+ # generation is quite small. -vapier
+ emake -j1 sources || die "make sources failed"
+ emake ${make_flags} || die "make ${make_flags} failed"
+}
+
+src_install() {
+ # use the cross-compiled tic (if need be) #249363
+ export PATH=${WORKDIR}/cross/progs:${PATH}
+
+ # install unicode version second so that the binaries in /usr/bin
+ # support both wide and narrow
+ cd "${WORKDIR}"/narrowc
+ emake DESTDIR="${D}" install || die "make narrowc install failed"
+ if use unicode ; then
+ cd "${WORKDIR}"/widec
+ emake DESTDIR="${D}" install || die "make widec install failed"
+ fi
+
+ # Move static and extraneous ncurses libraries out of /lib
+ dodir /usr/$(get_libdir)
+ cd "${D}"/$(get_libdir)
+ mv lib{form,menu,panel}.so* *.a "${D}"/usr/$(get_libdir)/
+ gen_usr_ldscript lib{,n}curses.so
+ if use unicode ; then
+ mv lib{form,menu,panel}w.so* "${D}"/usr/$(get_libdir)/
+ gen_usr_ldscript libncursesw.so
+ fi
+
+# if ! use berkdb ; then
+ # We need the basic terminfo files in /etc, bug #37026
+ einfo "Installing basic terminfo files in /etc..."
+ for x in ansi console dumb linux rxvt screen sun vt{52,100,102,200,220} \
+ xterm xterm-color xterm-xfree86
+ do
+ local termfile=$(find "${D}"/usr/share/terminfo/ -name "${x}" 2>/dev/null)
+ local basedir=$(basename $(dirname "${termfile}"))
+
+ if [[ -n ${termfile} ]] ; then
+ dodir /etc/terminfo/${basedir}
+ mv ${termfile} "${D}"/etc/terminfo/${basedir}/
+ dosym ../../../../etc/terminfo/${basedir}/${x} \
+ /usr/share/terminfo/${basedir}/${x}
+ fi
+ done
+
+ # Build fails to create this ...
+ dosym ../share/terminfo /usr/$(get_libdir)/terminfo
+# fi
+
+ echo "CONFIG_PROTECT_MASK=\"/etc/terminfo\"" > "${T}"/50ncurses
+ doenvd "${T}"/50ncurses
+
+ use minimal && rm -r "${D}"/usr/share/terminfo*
+ # Because ncurses5-config --terminfo returns the directory we keep it
+ keepdir /usr/share/terminfo #245374
+
+ cd "${S}"
+ dodoc ANNOUNCE MANIFEST NEWS README* TO-DO doc/*.doc
+ use doc && dohtml -r doc/html/
+}