diff options
author | Mike Frysinger <vapier@gentoo.org> | 2009-10-11 07:30:29 +0000 |
---|---|---|
committer | Mike Frysinger <vapier@gentoo.org> | 2009-10-11 07:30:29 +0000 |
commit | 285835db9ce9c9c5563420cff9d47c6bb97345cc (patch) | |
tree | 211a83291e8faa2850ae82ab4173aee1f358dbc5 /sys-libs/ncurses | |
parent | version bump (diff) | |
download | gentoo-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/ChangeLog | 9 | ||||
-rw-r--r-- | sys-libs/ncurses/files/ncurses-5.7-hashdb-open.patch | 88 | ||||
-rw-r--r-- | sys-libs/ncurses/ncurses-5.7-r2.ebuild | 169 |
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/ +} |