diff options
author | Justin Lecher <jlec@gentoo.org> | 2015-08-26 14:19:10 +0200 |
---|---|---|
committer | Justin Lecher <jlec@gentoo.org> | 2015-08-26 14:19:20 +0200 |
commit | ec1cb36e722e62cf504f89ffdfc05ce87407ae3d (patch) | |
tree | 2fac912206fbafd1eaff2ff6be015372f8273db1 /sys-libs | |
parent | 3090cf0ce8f053780eb78a0447fefdc721f8073c (diff) | |
download | gentoo-ec1cb36e722e62cf504f89ffdfc05ce87407ae3d.tar.gz gentoo-ec1cb36e722e62cf504f89ffdfc05ce87407ae3d.tar.xz |
sys-libs/ncurses: Add compatibility package for binary packages
Gentoo-Bug: https://bugs.gentoo.org/show_bug.cgi?id=557472
Package-Manager: portage-2.2.20.1
Signed-off-by: Justin Lecher <jlec@gentoo.org>
Diffstat (limited to 'sys-libs')
-rw-r--r-- | sys-libs/ncurses/metadata.xml | 12 | ||||
-rw-r--r-- | sys-libs/ncurses/ncurses-5.9-r100.ebuild | 186 |
2 files changed, 192 insertions, 6 deletions
diff --git a/sys-libs/ncurses/metadata.xml b/sys-libs/ncurses/metadata.xml index 78563648f10..e1367820bc0 100644 --- a/sys-libs/ncurses/metadata.xml +++ b/sys-libs/ncurses/metadata.xml @@ -1,14 +1,14 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> <pkgmetadata> -<herd>base-system</herd> -<use> - <flag name='ada'>Add bindings for the ADA programming language</flag> - <flag name='tinfo'> + <herd>base-system</herd> + <use> + <flag name="ada">Add bindings for the ADA programming language</flag> + <flag name="tinfo"> Build curses library (libncurses) sep from the low-level terminfo library (libtinfo) -- usually needed only for binary packages -- but it is binary compatible in either mode </flag> - <flag name='trace'>Enable test trace() support in ncurses calls</flag> -</use> + <flag name="trace">Enable test trace() support in ncurses calls</flag> + </use> </pkgmetadata> diff --git a/sys-libs/ncurses/ncurses-5.9-r100.ebuild b/sys-libs/ncurses/ncurses-5.9-r100.ebuild new file mode 100644 index 00000000000..40db661ef5e --- /dev/null +++ b/sys-libs/ncurses/ncurses-5.9-r100.ebuild @@ -0,0 +1,186 @@ +# Copyright 1999-2015 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Id$ + +EAPI="4" +inherit eutils flag-o-matic toolchain-funcs multilib-minimal + +MY_PV=${PV:0:3} +PV_SNAP=${PV:4} +MY_P=${PN}-${MY_PV} +DESCRIPTION="console display library" +HOMEPAGE="https://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 ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86 ~amd64-fbsd ~sparc-fbsd ~x86-fbsd" +IUSE="ada +cxx debug gpm profile tinfo trace unicode" + +DEPEND="gpm? ( sys-libs/gpm )" +# berkdb? ( sys-libs/db )" +# Block the older ncurses that installed all files w/SLOT=5. #557472 +RDEPEND="${DEPEND} + !<=sys-libs/ncurses-6:0 + !<x11-terms/rxvt-unicode-9.06-r3 + abi_x86_32? ( + !<=app-emulation/emul-linux-x86-baselibs-20130224-r12 + !app-emulation/emul-linux-x86-baselibs[-abi_x86_32(-)] + )" +# Put the MULTILIB_USEDEP on gpm in PDEPEND only to avoid circular deps. +# We can move it to DEPEND and drop the --with-gpm=libgpm.so.1 from the econf +# line below once we can assume multilib gpm is available everywhere. +PDEPEND="gpm? ( sys-libs/gpm[${MULTILIB_USEDEP}] )" + +S=${WORKDIR}/${MY_P} +HOSTTIC_DIR=${WORKDIR}/${P}-host + +src_prepare() { + [[ -n ${PV_SNAP} ]] && epatch "${WORKDIR}"/${MY_P}-${PV_SNAP}-patch.sh + epatch "${FILESDIR}"/${PN}-5.8-gfbsd.patch + epatch "${FILESDIR}"/${PN}-5.7-nongnu.patch + epatch "${FILESDIR}"/${PN}-5.9-rxvt-unicode-9.15.patch #192083 #383871 + epatch "${FILESDIR}"/${PN}-5.9-fix-clang-build.patch #417763 + epatch "${FILESDIR}"/${PN}-5.9-pkg-config.patch + epatch "${FILESDIR}"/${P}-no-I-usr-include.patch #522586 + epatch "${FILESDIR}"/${P}-gcc-5.patch #545114 +} + +src_configure() { + unset TERMINFO #115036 + tc-export_build_env BUILD_{CC,CPP} + 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 && ! ROOT=/ has_version ~sys-libs/${P} ; then + CHOST=${CBUILD} \ + CFLAGS=${BUILD_CFLAGS} \ + CXXFLAGS=${BUILD_CXXFLAGS} \ + CPPFLAGS=${BUILD_CPPFLAGS} \ + LDFLAGS="${BUILD_LDFLAGS} -static" \ + BUILD_DIR="${HOSTTIC_DIR}" do_configure cross --without-shared --with-normal + fi + multilib-minimal_src_configure +} + +multilib_src_configure() { + do_configure narrowc + use unicode && do_configure widec --enable-widec --includedir="${EPREFIX}"/usr/include/ncursesw +} + +do_configure() { + ECONF_SOURCE=${S} + + mkdir "${BUILD_DIR}"-$1 + cd "${BUILD_DIR}"-$1 || die + shift + + local conf=( + # We need the basic terminfo files in /etc, bug #37026. We will + # add '--with-terminfo-dirs' and then populate /etc/terminfo in + # src_install() ... + --with-terminfo-dirs="${EPREFIX}/etc/terminfo:${EPREFIX}/usr/share/terminfo" + + # Disabled until #245417 is sorted out. + #$(use_with berkdb hashed-db) + + # ncurses is dumb and doesn't install .pc files unless pkg-config + # is also installed. Force the tests to go our way. Note that it + # doesn't actually use pkg-config ... it just looks for set vars. + --enable-pc-files + --with-pkg-config="$(tc-getPKG_CONFIG)" + # This path is used to control where the .pc files are installed. + PKG_CONFIG_LIBDIR="${EPREFIX}/usr/$(get_libdir)/pkgconfig" + + # Now the rest of the various standard flags. + --with-shared + --without-hashed-db + $(use_with ada) + $(use_with cxx) + $(use_with cxx cxx-binding) + $(use_with debug) + $(use_with profile) + # The configure script uses ldd to parse the linked output which + # is flaky for cross-compiling/multilib/ldd versions/etc... + $(use_with gpm gpm libgpm.so.1) + --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_enable !debug leaks) + $(use_with debug expanded) + $(use_with !debug macros) + $(use_with trace) + $(use_with tinfo termlib) + + # The chtype/mmask-t settings below are to retain ABI compat + # with ncurses-5.4 so dont change em ! + --with-chtype=long + --with-mmask-t=long + --disable-ext-colors + --disable-ext-mouse + --without-pthread + --without-reentrant + ) + + # Force bash until upstream rebuilds the configure script with a newer + # version of autotools. #545532 + CONFIG_SHELL=/bin/bash econf "${conf[@]}" "$@" +} + +src_compile() { + # 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 && ! ROOT=/ has_version ~sys-libs/${P} ; then + make_flags="-C progs tic" + BUILD_DIR="${HOSTTIC_DIR}" do_compile cross + fi + + multilib-minimal_src_compile +} + +multilib_src_compile() { + make_flags="" + multilib_is_native_abi || make_flags="PROGS= " + do_compile narrowc + use unicode && do_compile widec +} + +do_compile() { + cd "${BUILD_DIR}"-$1 || die + + # 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. + emake -j1 sources + # For some reason, sources depends on pc-files which depends on + # compiled libraries which depends on sources which ... + # Manually delete the pc-files file so the install step will + # create the .pc files we want. + rm -f misc/pc-files + emake ${make_flags} +} + +multilib_src_install() { + local lib + cd "${BUILD_DIR}"-narrowc/lib || die + for lib in *5.9; do + newlib.so ${lib} ${lib%%.9} + done + if use unicode ; then + cd "${BUILD_DIR}"-widec/lib || die + for lib in *5.9; do + newlib.so ${lib} ${lib%%.9} + done + fi +} |