sys-libs/ncurses: version bump to 6.0
authorMike Frysinger <vapier@gentoo.org>
Wed, 12 Aug 2015 10:11:28 +0000 (06:11 -0400)
committerMike Frysinger <vapier@gentoo.org>
Wed, 12 Aug 2015 10:38:07 +0000 (06:38 -0400)
The bare min changes are here to get it working as more updates will
follow.  Focus is on making the base ABI match upstream defaults for
this release -- namely that we update to ABI 6 which includes colors
and other new extended features. #373767

Based on work by Lars Wendler.

sys-libs/ncurses/Manifest
sys-libs/ncurses/files/ncurses-6.0-gfbsd.patch [new file with mode: 0644]
sys-libs/ncurses/files/ncurses-6.0-pkg-config.patch [new file with mode: 0644]
sys-libs/ncurses/files/ncurses-6.0-rxvt-unicode-9.15.patch [new file with mode: 0644]
sys-libs/ncurses/ncurses-6.0.ebuild [new file with mode: 0644]

index 92a0d9890862324d52cbca19d9b308672fbde452..fe874fde626268d5a20f84c413d737bbb5bf82b3 100644 (file)
@@ -1 +1,2 @@
 DIST ncurses-5.9.tar.gz 2826473 SHA256 9046298fb440324c9d4135ecea7879ffed8546dd1b58e59430ea07a4633f563b SHA512 d7c5e54b6d4d8b9211f0006ca8786f7609d180cc1aaebf4f25e7e35e12959779cf66447359a602daed625621ca32b0d910d67aef3eb8b6fdc3c373819a88faa1 WHIRLPOOL 069e98c6392ce9aca960c72a20f1a502387d33a4b237aaeaa95548024ce4d47b129eafbe0288d21c590e725fe71aaca21cacb300f11a660b7234cb39a777672a
+DIST ncurses-6.0.tar.gz 3131891 SHA256 f551c24b30ce8bfb6e96d9f59b42fbea30fa3a6123384172f9e7284bcf647260 SHA512 9ec194f4783dae6de8c529cac31b5cfbfcfea212c5d47b1f87cd49df013e38f8580a9e7aa1384918df0921b4ba999d5e73eb6d6362cce2d7287e64308b673963 WHIRLPOOL 25bef32a63113f07259e81e2cd34b7065e32b471d190c79d56df6e7187fa0d76ae4585ecb2a5d36b3a3dc4facecc9c928503aa97195344a8594ad031bae41949
diff --git a/sys-libs/ncurses/files/ncurses-6.0-gfbsd.patch b/sys-libs/ncurses/files/ncurses-6.0-gfbsd.patch
new file mode 100644 (file)
index 0000000..1403a29
--- /dev/null
@@ -0,0 +1,24 @@
+we'll hijack the freebsd* case that comes later
+
+--- ncurses-6.0/aclocal.m4
++++ ncurses-6.0/aclocal.m4
+@@ -5711,7 +5711,7 @@
+               fi
+               cf_cv_rm_so_locs=yes
+               ;;
+-      (linux*|gnu*|k*bsd*-gnu)
++      (linux*|gnu*|k*bsd*-gnu|freebsd*|dragonfly*)
+               if test "$DFT_LWR_MODEL" = "shared" ; then
+                       LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)"
+                       LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
+--- ncurses-6.0/configure
++++ ncurses-6.0/configure
+@@ -6188,7 +6188,7 @@
+               fi
+               cf_cv_rm_so_locs=yes
+               ;;
+-      (linux*|gnu*|k*bsd*-gnu)
++      (linux*|gnu*|k*bsd*-gnu|freebsd*|dragonfly*)
+               if test "$DFT_LWR_MODEL" = "shared" ; then
+                       LOCAL_LDFLAGS="${LD_RPATH_OPT}\$(LOCAL_LIBDIR)"
+                       LOCAL_LDFLAGS2="$LOCAL_LDFLAGS"
diff --git a/sys-libs/ncurses/files/ncurses-6.0-pkg-config.patch b/sys-libs/ncurses/files/ncurses-6.0-pkg-config.patch
new file mode 100644 (file)
index 0000000..6808319
--- /dev/null
@@ -0,0 +1,14 @@
+disable the $PATH search for the PKG_CONFIG tool.  it isn't needed and just
+gets in the way when setting to a value that might not yet exist.
+
+--- ncurses-6.0/configure
++++ ncurses-6.0/configure
+@@ -3533,7 +3533,7 @@
+ esac
+ test -z "$PKG_CONFIG" && PKG_CONFIG=none
+-if test "$PKG_CONFIG" != none ; then
++if false ; then
+ if test "x$prefix" != xNONE; then
+       cf_path_syntax="$prefix"
diff --git a/sys-libs/ncurses/files/ncurses-6.0-rxvt-unicode-9.15.patch b/sys-libs/ncurses/files/ncurses-6.0-rxvt-unicode-9.15.patch
new file mode 100644 (file)
index 0000000..af3df94
--- /dev/null
@@ -0,0 +1,191 @@
+Add rxvt-unicode terminfo, required by rxvt-unicode to function properly.
+
+Providing this in ncurses makes it widely available, much better than having to
+install rxvt-unicode everywhere.
+
+http://bugs.gentoo.org/show_bug.cgi?id=192083
+
+This patch uses the updated rxvt-unicode-9.15 terminfo
+which includes 256 color support and fixes Gentoo bug 383871
+
+http://bugs.gentoo.org/show_bug.cgi?id=383871
+
+--- ncurses-6.0/misc/terminfo.src
++++ ncurses-6.0/misc/terminfo.src
+@@ -5214,6 +5214,176 @@
+ rxvt-16color|rxvt with 16 colors like aixterm,
+       ncv#32, use=ibm+16color, use=rxvt,
++# From: Thomas Dickey <dickey@clark.net> 04 Oct 1997
++# Updated: Özgür Kesim <kesim@math.fu-berlin.de> 02 Nov 1997
++# Updated: Marc Lehmann <schmorp@schmorp.de>, 17 Feb 2005
++# Updated: Marc Lehmann <schmorp@schmorp.de>, 04 Nov 2008: change init/reset sequences
++rxvt-unicode|rxvt-unicode terminal (X Window System),
++      am,
++      bce,
++      eo,
++      km,
++      msgr,
++      xenl,
++      hs,
++      cols#80,
++      it#8,
++      lines#24,
++      acsc=``aaffggjjkkllmmnnooppqqrrssttuuvvwwxxyyzz{{||}}~~-A.B+C\,D0EhFiG,
++      bel=^G,
++      blink=\E[5m,
++      bold=\E[1m,
++      civis=\E[?25l,
++      clear=\E[H\E[2J,
++      cnorm=\E[?25h,
++      cr=^M,
++      csr=\E[%i%p1%d;%p2%dr,
++      cub=\E[%p1%dD,
++      cub1=^H,
++      cud=\E[%p1%dB,
++      cud1=^J,
++      cuf=\E[%p1%dC,
++      cuf1=\E[C,
++      cup=\E[%i%p1%d;%p2%dH,
++      cuu=\E[%p1%dA,
++      cuu1=\E[A,
++      cvvis=\E[?25h,
++      dch=\E[%p1%dP,
++      dch1=\E[P,
++      dl=\E[%p1%dM,
++      dl1=\E[M,
++      ed=\E[J,
++      el=\E[K,
++      el1=\E[1K,
++      flash=\E[?5h$<20/>\E[?5l,
++      home=\E[H,
++      hpa=\E[%i%p1%dG,
++      ht=^I,
++      hts=\EH,
++      ich=\E[%p1%d@,
++      ich1=\E[@,
++      il=\E[%p1%dL,
++      il1=\E[L,
++      ind=^J,
++      is1=\E[\041p,
++      is2=\E[r\E[m\E[2J\E[?7;25h\E[?1;3;4;5;6;9;66;1000;1001;1049l\E[4l,
++      kDC=\E[3$,
++      kIC=\E[2$,
++      kEND=\E[8$,
++      kHOM=\E[7$,
++      kLFT=\E[d,
++      kNXT=\E[6$,
++      kPRV=\E[5$,
++      kRIT=\E[c,
++      kbs=\177,
++      ka1=\EOw,
++      ka3=\EOy,
++      kb2=\EOu,
++      kc1=\EOq,
++      kc3=\EOs,
++      kcbt=\E[Z,
++      kcub1=\E[D,
++      kcud1=\E[B,
++      kcuf1=\E[C,
++      kcuu1=\E[A,
++      kdch1=\E[3~,
++      kel=\E[8\^,
++      kend=\E[8~,
++      kent=\EOM,
++      kf1=\E[11~,
++      kf10=\E[21~,
++      kf11=\E[23~,
++      kf12=\E[24~,
++      kf13=\E[25~,
++      kf14=\E[26~,
++      kf15=\E[28~,
++      kf16=\E[29~,
++      kf17=\E[31~,
++      kf18=\E[32~,
++      kf19=\E[33~,
++      kf2=\E[12~,
++      kf20=\E[34~,
++      kf3=\E[13~,
++      kf4=\E[14~,
++      kf5=\E[15~,
++      kf6=\E[17~,
++      kf7=\E[18~,
++      kf8=\E[19~,
++      kf9=\E[20~,
++      kfnd=\E[1~,
++      khome=\E[7~,
++      kich1=\E[2~,
++      kmous=\E[M,
++      knp=\E[6~,
++      kpp=\E[5~,
++      kslt=\E[4~,
++      rc=\E8,
++      rev=\E[7m,
++      ri=\EM,
++      rmso=\E[27m,
++      rmul=\E[24m,
++      rs1=\Ec,
++      rs2=\E[r\E[m\E[?7;25h\E[?1;3;4;5;6;9;66;1000;1001;1049l\E[4l,
++      sgr0=\E[m\E(B,
++      enacs=,
++      smacs=\E(0,
++      rmacs=\E(B,
++      smso=\E[7m,
++      smul=\E[4m,
++      tbc=\E[3g,
++      vpa=\E[%i%p1%dd,
++      colors#88,
++      pairs#7744,
++      btns#5,
++      lm#0,
++      ccc,
++      npc,
++      mc5i,
++      ncv#0,
++      mir,
++      xon,
++      bw,
++      ech=\E[%p1%dX,
++      mc0=\E[i,
++      mc4=\E[4i,
++      mc5=\E[5i,
++      sitm=\E[3m,
++      ritm=\E[23m,
++      smam=\E[?7h,
++      rmam=\E[?7l,
++      smir=\E[4h,
++      rmir=\E[4l,
++      smcup=\E[?1049h,
++      rmcup=\E[r\E[?1049l,
++      smkx=\E=,
++      rmkx=\E>,
++      indn=\E[%p1%dS,
++      rin=\E[%p1%dT,
++      sgr=\E[0%?%p6%t;1%;%?%p2%t;4%;%?%p1%p3%|%t;7%;%?%p4%t;5%;%?%p7%t;8%;m%?%p9%t\E(0%e\E(B%;,
++      op=\E[39;49m,
++      setaf=\E[38;5;%p1%dm,
++      setab=\E[48;5;%p1%dm,
++      setf=%?%p1%{7}%>%t\E[38;5;%p1%dm%e\E[3%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m%;,
++      setb=%?%p1%{7}%>%t\E[48;5;%p1%dm%e\E[4%?%p1%{1}%=%t4%e%p1%{3}%=%t6%e%p1%{4}%=%t1%e%p1%{6}%=%t3%e%p1%d%;m%;,
++      initc=\E]4;%p1%d;rgb\:%p2%{65535}%*%{1000}%/%4.4X/%p3%{65535}%*%{1000}%/%4.4X/%p4%{65535}%*%{1000}%/%4.4X\E\\,
++      sc=\E7,
++      s0ds=\E(B,
++      s1ds=\E(0,
++      s2ds=\E*B,
++      s3ds=\E+B,
++      u6=\E[%i%d;%dR,
++      u7=\E[6n,
++      u8=\E[?1;2c,
++      u9=\E[c,
++      tsl=\E]2;,
++      fsl=\007,
++      dsl=\E]2;\007,
++
++rxvt-unicode-256color|rxvt-unicode terminal with 256 colors (X Window System),
++      colors#256,
++      pairs#32767,
++      use=rxvt-unicode,
++
+ #### MRXVT
+ # mrxvt 0.5.4
+ #
diff --git a/sys-libs/ncurses/ncurses-6.0.ebuild b/sys-libs/ncurses/ncurses-6.0.ebuild
new file mode 100644 (file)
index 0000000..476481d
--- /dev/null
@@ -0,0 +1,236 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI="5"
+
+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="http://www.gnu.org/software/ncurses/ http://dickey.his.com/ncurses/"
+SRC_URI="mirror://gnu/ncurses/${MY_P}.tar.gz"
+
+LICENSE="MIT"
+# TODO: We should migrate this to SLOT=0.
+# The subslot reflects the SONAME.
+SLOT="5/6"
+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 tinfo trace unicode"
+
+DEPEND="gpm? ( sys-libs/gpm )"
+#      berkdb? ( sys-libs/db )"
+RDEPEND="${DEPEND}
+       !<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
+
+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
+)
+
+src_prepare() {
+       [[ -n ${PV_SNAP} ]] && epatch "${WORKDIR}"/${MY_P}-${PV_SNAP}-patch.sh
+       epatch "${PATCHES[@]}"
+}
+
+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.
+               --with-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-hard-tabs
+               --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)
+       )
+
+       # 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() {
+       # 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
+               ln -sf libncurses$(get_libname) "${ED}"/usr/$(get_libdir)/libcurses$(get_libname) || die
+       fi
+       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
+}
+
+multilib_src_install_all() {
+#      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 rxvt-unicode screen sun vt{52,100,102,200,220} \
+                                xterm xterm-color xterm-xfree86
+               do
+                       local termfile=$(find "${ED}"/usr/share/terminfo/ -name "${x}" 2>/dev/null)
+                       local basedir=$(basename $(dirname "${termfile}"))
+
+                       if [[ -n ${termfile} ]] ; then
+                               dodir /etc/terminfo/${basedir}
+                               mv ${termfile} "${ED}"/etc/terminfo/${basedir}/
+                               dosym ../../../../etc/terminfo/${basedir}/${x} \
+                                       /usr/share/terminfo/${basedir}/${x}
+                       fi
+               done
+#      fi
+
+       echo "CONFIG_PROTECT_MASK=\"/etc/terminfo\"" > "${T}"/50ncurses
+       doenvd "${T}"/50ncurses
+
+       use minimal && rm -r "${ED}"/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/
+}
+
+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
+}