commit: 125fb7a6cdcde8fb1c7dd59edf87dbf276025ef4
Author: Mike Frysinger <vapier <AT> gentoo <DOT> org>
AuthorDate: Thu Aug 27 06:49:36 2015 +0000
Commit: Mike Frysinger <vapier <AT> gentoo <DOT> org>
CommitDate: Thu Aug 27 06:52:24 2015 +0000
URL: https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=125fb7a6
sys-libs/ncurses: add dummy package to bridge SLOT move #558856
Since the slotmove operator does not properly update implicit subslots
in generated dependencies in the vdb, add a dummy ebuild to bridge the
old SLOT=5[/5] and the new SLOT=0/5.
.../{ncurses-6.0.ebuild => ncurses-5.9-r5.ebuild} | 185 ++++++++-------------
sys-libs/ncurses/ncurses-5.9-r99.ebuild | 18 ++
sys-libs/ncurses/ncurses-6.0.ebuild | 2 +-
3 files changed, 92 insertions(+), 113 deletions(-)
diff --git a/sys-libs/ncurses/ncurses-6.0.ebuild
b/sys-libs/ncurses/ncurses-5.9-r5.ebuild
similarity index 55%
copy from sys-libs/ncurses/ncurses-6.0.ebuild
copy to sys-libs/ncurses/ncurses-5.9-r5.ebuild
index 145960b..3668c97 100644
--- a/sys-libs/ncurses/ncurses-6.0.ebuild
+++ b/sys-libs/ncurses/ncurses-5.9-r5.ebuild
@@ -4,7 +4,7 @@
EAPI="5"
-inherit eutils flag-o-matic toolchain-funcs multilib-minimal multiprocessing
+inherit eutils flag-o-matic toolchain-funcs multilib-minimal
MY_PV=${PV:0:3}
PV_SNAP=${PV:4}
@@ -15,33 +15,37 @@ SRC_URI="mirror://gnu/ncurses/${MY_P}.tar.gz"
LICENSE="MIT"
# The subslot reflects the SONAME.
-SLOT="0/6"
+SLOT="0/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 doc gpm minimal profile static-libs test threads tinfo
trace unicode"
+IUSE="ada +cxx debug doc gpm minimal profile static-libs tinfo trace unicode"
-DEPEND="gpm? ( sys-libs/gpm[${MULTILIB_USEDEP}] )"
+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-5.9-r4:0
+ !<=sys-libs/ncurses-5.9-r4:5
!<x11-terms/rxvt-unicode-9.06-r3
- !<x11-terms/st-0.6-r1
- !app-emulation/emul-linux-x86-baselibs"
+ 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}
-
-PATCHES=(
- "${FILESDIR}/${PN}-6.0-gfbsd.patch"
- "${FILESDIR}/${PN}-5.7-nongnu.patch"
- "${FILESDIR}/${PN}-6.0-rxvt-unicode-9.15.patch" #192083 #383871
- "${FILESDIR}/${PN}-6.0-pkg-config.patch"
- "${FILESDIR}/${PN}-5.9-gcc-5.patch" #545114
- "${FILESDIR}/${PN}-6.0-ticlib.patch" #557360
-)
+HOSTTIC_DIR=${WORKDIR}/${P}-host
src_prepare() {
[[ -n ${PV_SNAP} ]] && epatch "${WORKDIR}"/${MY_P}-${PV_SNAP}-patch.sh
- epatch "${PATCHES[@]}"
+ 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() {
@@ -49,51 +53,31 @@ src_configure() {
tc-export_build_env BUILD_{CC,CPP}
BUILD_CPPFLAGS+=" -D_GNU_SOURCE" #214642
- # Build the various variants of ncurses -- narrow, wide, and threaded.
#510440
- # Order matters here -- we want unicode/thread versions to come last so
that the
- # binaries in /usr/bin support both wide and narrow.
- # The naming is also important as we use these directly with filenames
and when
- # checking configure flags.
- NCURSES_TARGETS=(
- ncurses
- $(usex unicode 'ncursesw' '')
- $(usex threads 'ncursest' '')
- $(use unicode && usex threads 'ncursestw' '')
- )
-
- multijob_init
-
- # When installing ncurses, we have to use a compatible version of tic.
- # This comes up when cross-compiling, doing multilib builds, upgrading,
- # or installing for the first time. Build a local copy of tic whenever
- # the host version isn't available. #249363 #557598
- if ! ROOT=/ has_version "~sys-libs/${P}" ; then
- # We can't re-use the multilib BUILD_DIR because we run outside
of it.
- BUILD_DIR="${WORKDIR}" \
+ # 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" \
- multijob_child_init do_configure cross --without-shared
--with-normal
+ BUILD_DIR="${HOSTTIC_DIR}" do_configure cross --without-shared
--with-normal
fi
multilib-minimal_src_configure
- multijob_finish
}
multilib_src_configure() {
- local t
- for t in "${NCURSES_TARGETS[@]}" ; do
- multijob_child_init do_configure "${t}"
- done
+ do_configure narrowc
+ use unicode && do_configure widec --enable-widec
--includedir="${EPREFIX}"/usr/include/ncursesw
}
do_configure() {
- local target=$1
- shift
+ ECONF_SOURCE=${S}
- mkdir "${BUILD_DIR}/${target}"
- cd "${BUILD_DIR}/${target}" || die
+ mkdir "${BUILD_DIR}"-$1
+ cd "${BUILD_DIR}"-$1 || die
+ shift
local conf=(
# We need the basic terminfo files in /etc, bug #37026. We will
@@ -110,7 +94,7 @@ do_configure() {
--enable-pc-files
--with-pkg-config="$(tc-getPKG_CONFIG)"
# This path is used to control where the .pc files are
installed.
-
--with-pkg-config-libdir="${EPREFIX}/usr/$(get_libdir)/pkgconfig"
+ PKG_CONFIG_LIBDIR="${EPREFIX}/usr/$(get_libdir)/pkgconfig"
# Now the rest of the various standard flags.
--with-shared
@@ -118,7 +102,6 @@ do_configure() {
$(use_with ada)
$(use_with cxx)
$(use_with cxx cxx-binding)
- --with-cxx-shared
$(use_with debug)
$(use_with profile)
# The configure script uses ldd to parse the linked output which
@@ -130,68 +113,51 @@ do_configure() {
--with-manpage-format=normal
--enable-const
--enable-colorfgbg
- --enable-hard-tabs
--enable-echo
$(use_enable !ada warnings)
$(use_with debug assertions)
$(use_enable !debug leaks)
$(use_with debug expanded)
$(use_with !debug macros)
- $(multilib_native_with progs)
- $(use_with test tests)
$(use_with trace)
$(use_with tinfo termlib)
- )
- if [[ ${target} == ncurses*w ]] ; then
- conf+=( --enable-widec )
- else
- conf+=( --disable-widec )
- fi
- if [[ ${target} == ncursest* ]] ; then
- conf+=( --with-{pthread,reentrant} )
- else
- conf+=( --without-{pthread,reentrant} )
- fi
- # Make sure each variant goes in a unique location.
- if [[ ${target} != "ncurses" ]] ; then
- conf+=( --includedir="${EPREFIX}"/usr/include/${target} )
- fi
- # See comments in src_configure.
- if [[ ${target} != "cross" ]] ; then
- local tic_path="${WORKDIR}/cross/progs/tic"
- [[ -d ${tic_path} ]] && export TIC_PATH=${tic_path}
- fi
+ # 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_SOURCE=${S} \
- econf "${conf[@]}" "$@"
+ CONFIG_SHELL=/bin/bash econf "${conf[@]}" "$@"
}
src_compile() {
- # See comments in src_configure.
- if ! ROOT=/ has_version "~sys-libs/${P}" ; then
- BUILD_DIR="${WORKDIR}" \
- do_compile cross -C progs tic
+ # 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() {
- local t
- for t in "${NCURSES_TARGETS[@]}" ; do
- do_compile "${t}"
- done
+ make_flags=""
+ multilib_is_native_abi || make_flags="PROGS= "
+ do_compile narrowc
+ use unicode && do_compile widec
}
do_compile() {
- local target=$1
- shift
-
- cd "${BUILD_DIR}/${target}" || die
+ 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
@@ -204,27 +170,32 @@ do_compile() {
# Manually delete the pc-files file so the install step will
# create the .pc files we want.
rm -f misc/pc-files
- emake "$@"
+ emake ${make_flags}
}
multilib_src_install() {
- local target
- for target in "${NCURSES_TARGETS[@]}" ; do
- emake -C "${BUILD_DIR}/${target}" DESTDIR="${D}" install
- done
-
- # Move main libraries into /.
- if multilib_is_native_abi ; then
- gen_usr_ldscript -a \
- "${NCURSES_TARGETS[@]}"
- $(use tinfo && usex unicode 'tinfow' '') \
- $(usev tinfo)
+ # use the cross-compiled tic (if need be) #249363
+ export PATH="${HOSTTIC_DIR}-cross/progs:${PATH}"
+
+ # install unicode version second so that the binaries in /usr/bin
+ # support both wide and narrow
+ cd "${BUILD_DIR}"-narrowc || die
+ emake DESTDIR="${D}" install
+ if use unicode ; then
+ cd "${BUILD_DIR}"-widec || die
+ emake DESTDIR="${D}" install
fi
+
+ # Move libncurses{,w} into /lib
+ multilib_is_native_abi && gen_usr_ldscript -a \
+ ncurses \
+ $(usex unicode 'ncursesw' '') \
+ $(use tinfo && usex unicode 'tinfow' '') \
+ $(usev tinfo)
if ! tc-is-static-only ; then
- # Provide a link for -lcurses.
ln -sf libncurses$(get_libname)
"${ED}"/usr/$(get_libdir)/libcurses$(get_libname) || die
fi
- use static-libs || find "${ED}"/usr/ -name '*.a' -delete
+ use static-libs || find "${ED}"/usr/ -name '*.a' -a '!' -name
'*curses++*.a' -delete
# Build fails to create this ...
dosym ../share/terminfo /usr/$(get_libdir)/terminfo
@@ -260,13 +231,3 @@ multilib_src_install_all() {
dodoc ANNOUNCE MANIFEST NEWS README* TO-DO doc/*.doc
use doc && dohtml -r doc/html/
}
-
-pkg_preinst() {
- preserve_old_lib /$(get_libdir)/libncurses.so.5
- use unicode && preserve_old_lib /$(get_libdir)/libncursesw.so.5
-}
-
-pkg_postinst() {
- preserve_old_lib_notify /$(get_libdir)/libncurses.so.5
- use unicode && preserve_old_lib_notify /$(get_libdir)/libncursesw.so.5
-}
diff --git a/sys-libs/ncurses/ncurses-5.9-r99.ebuild
b/sys-libs/ncurses/ncurses-5.9-r99.ebuild
new file mode 100644
index 0000000..4b40743
--- /dev/null
+++ b/sys-libs/ncurses/ncurses-5.9-r99.ebuild
@@ -0,0 +1,18 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+# Bridge the old SLOT=5[/5] ebuild to the new SLOT=0/5 since the slotmove
+# functionality does not handle implicit subslots correctly. #558856
+
+EAPI="5"
+
+DESCRIPTION="transitional package"
+HOMEPAGE="https://www.gnu.org/software/ncurses/ http://dickey.his.com/ncurses/"
+
+LICENSE="metapackage"
+SLOT="5/5"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390
~sh ~sparc ~x86"
+IUSE="ada +cxx gpm static-libs tinfo unicode"
+
+RDEPEND="sys-libs/ncurses:0/5[ada?,cxx?,gpm?,static-libs?,tinfo?,unicode?]"
diff --git a/sys-libs/ncurses/ncurses-6.0.ebuild
b/sys-libs/ncurses/ncurses-6.0.ebuild
index 145960b..a8b1c1e 100644
--- a/sys-libs/ncurses/ncurses-6.0.ebuild
+++ b/sys-libs/ncurses/ncurses-6.0.ebuild
@@ -23,7 +23,7 @@ DEPEND="gpm? ( sys-libs/gpm[${MULTILIB_USEDEP}] )"
# berkdb? ( sys-libs/db )"
# Block the older ncurses that installed all files w/SLOT=5. #557472
RDEPEND="${DEPEND}
- !<=sys-libs/ncurses-5.9-r4:0
+ !<=sys-libs/ncurses-5.9-r4:5
!<x11-terms/rxvt-unicode-9.06-r3
!<x11-terms/st-0.6-r1
!app-emulation/emul-linux-x86-baselibs"