Summary: | sys-libs/ncurses: add development snapshots | ||
---|---|---|---|
Product: | Gentoo Linux | Reporter: | blopsalot |
Component: | Current packages | Assignee: | Gentoo's Team for Core System packages <base-system> |
Status: | RESOLVED WONTFIX | ||
Severity: | normal | CC: | blopsalot, julien.sanchez, pacho, sam |
Priority: | Normal | ||
Version: | unspecified | ||
Hardware: | All | ||
OS: | Linux | ||
Whiteboard: | |||
Package list: | Runtime testing required: | --- | |
Attachments: |
patched ebuild
Updated to EAPI 6 and removed repoman offending lib preserve stuff ebuild patches unified and updated ncurses-9999.ebuild.patch rebased changes more proper ncurses5 compat version bump |
Description
blopsalot
2017-12-26 07:24:23 UTC
Just tested your ebuild: repoman -dx full RepoMan scours the neighborhood... KEYWORDS.stable [fatal] 1 sys-libs/ncurses/ncurses-6.0.20171216.ebuild added with stable keywords: alpha amd64 arm arm64 hppa ia64 m68k ppc ppc64 s390 sh sparc x86 ebuild.minorsyn 8 sys-libs/ncurses/ncurses-6.0-r1.ebuild: Ebuild calls deprecated preserve_old_lib on line: 282 sys-libs/ncurses/ncurses-6.0-r1.ebuild: Ebuild calls deprecated preserve_old_lib on line: 283 sys-libs/ncurses/ncurses-6.0-r1.ebuild: Ebuild calls deprecated preserve_old_lib on line: 287 sys-libs/ncurses/ncurses-6.0-r1.ebuild: Ebuild calls deprecated preserve_old_lib on line: 288 sys-libs/ncurses/ncurses-6.0.20171216.ebuild: Ebuild calls deprecated preserve_old_lib on line: 280 sys-libs/ncurses/ncurses-6.0.20171216.ebuild: Ebuild calls deprecated preserve_old_lib on line: 281 sys-libs/ncurses/ncurses-6.0.20171216.ebuild: Ebuild calls deprecated preserve_old_lib on line: 285 sys-libs/ncurses/ncurses-6.0.20171216.ebuild: Ebuild calls deprecated preserve_old_lib on line: 286 Please fix these important QA issues first. RepoMan sez: "Make your QA payment on time and you'll never see the likes of me." yeah that's why I said I'm not expert in portage, the ebuild is broken by Gentoo standards, I am simply proposing a idea. I do not propose my ebuild is used. It's just to more clearly convey the idea. Ncurses is a touch package to deal with, it touches alot of things. Created attachment 511628 [details]
Updated to EAPI 6 and removed repoman offending lib preserve stuff
looks like repoman complains about that with portage ebuild as well, so maybe repoman false alarm. (In reply to blopsalot from comment #3) > Created attachment 511628 [details] > Updated to EAPI 6 and removed repoman offending lib preserve stuff Why not add it to the https://github.com/gentoo/gentoo/pulls ? See https://wiki.gentoo.org/wiki/Github_Pull_Requests and https://wiki.gentoo.org/wiki/Gentoo_GitHub But you would need to change keywords to unstable (amd64 => ~amd64). Comment on attachment 511628 [details] Updated to EAPI 6 and removed repoman offending lib preserve stuff ># Copyright 1999-2017 Gentoo Foundation ># Distributed under the terms of the GNU General Public License v2 > >EAPI="5" > >inherit eutils flag-o-matic toolchain-funcs multilib-minimal multiprocessing versionator > >MY_P="${PN}-$(replace_version_separator 2 -)" >DESCRIPTION="console display library" >HOMEPAGE="https://www.gnu.org/software/ncurses/ http://dickey.his.com/ncurses/" >SRC_URI="https://invisible-mirror.net/archives/ncurses/current/${MY_P}.tgz" > >LICENSE="MIT" ># The subslot reflects the SONAME. >SLOT="0/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 test threads tinfo trace unicode" > >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:5 > !<x11-terms/rxvt-unicode-9.06-r3 > !<x11-terms/st-0.6-r1 > !app-emulation/emul-linux-x86-baselibs" > >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 > "${FILESDIR}/${PN}-6.0-cppflags-cross.patch" #601426 >) > >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 > > # 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}:0" ; then > local lbuildflags="-static" > > # some toolchains don't quite support static linking > local dbuildflags="-Wl,-rpath,${WORKDIR}/lib" > case ${CHOST} in > *-darwin*) dbuildflags= ;; > *-aix*) dbuildflags= ;; > esac > echo "int main() {}" | \ > $(tc-getCC) -o x -x c - ${lbuildflags} -pipe >& /dev/null \ > || lbuildflags="${dbuildflags}" > > # We can't re-use the multilib BUILD_DIR because we run outside of it. > BUILD_DIR="${WORKDIR}" \ > CHOST=${CBUILD} \ > CFLAGS=${BUILD_CFLAGS} \ > CXXFLAGS=${BUILD_CXXFLAGS} \ > CPPFLAGS=${BUILD_CPPFLAGS} \ > LDFLAGS="${BUILD_LDFLAGS} ${lbuildflags}" \ > multijob_child_init 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() { > local target=$1 > shift > > mkdir "${BUILD_DIR}/${target}" > cd "${BUILD_DIR}/${target}" || die > > 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) > --with-cxx-shared > $(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) > $(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 > # "ncurses" variant goes into "${EPREFIX}"/usr/include > # It is needed on Prefix because the configure script appends > # "ncurses" to "${prefix}/include" if "${prefix}" is not /usr. > conf+=( --enable-overwrite ) > else > conf+=( --includedir="${EPREFIX}"/usr/include/${target} ) > fi > # See comments in src_configure. > if [[ ${target} != "cross" ]] ; then > local cross_path="${WORKDIR}/cross" > [[ -d ${cross_path} ]] && export TIC_PATH="${cross_path}/progs/tic" > fi > > # Force bash until upstream rebuilds the configure script with a newer > # version of autotools. #545532 > CONFIG_SHELL=${EPREFIX}/bin/bash \ > ECONF_SOURCE=${S} \ > econf "${conf[@]}" "$@" >} > >src_compile() { > # See comments in src_configure. > if ! ROOT=/ has_version "~sys-libs/${P}:0" ; then > BUILD_DIR="${WORKDIR}" \ > do_compile cross -C progs tic > fi > > multilib-minimal_src_compile >} > >multilib_src_compile() { > local t > for t in "${NCURSES_TARGETS[@]}" ; do > do_compile "${t}" > done >} > >do_compile() { > local target=$1 > shift > > cd "${BUILD_DIR}/${target}" || 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 "$@" >} > >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) > fi > 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 > > # 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/ >} that can be deleted, i guess you cannot mark attachments obsolete anymore? here's ebuild i'm using: https://github.com/blopsalot/blop-overlay/tree/master/sys-libs/ncurses Created attachment 512134 [details]
ebuild
Created attachment 512136 [details, diff]
patches unified and updated
Created attachment 512138 [details, diff]
ncurses-9999.ebuild.patch
(In reply to blopsalot from comment #10) > Created attachment 512138 [details, diff] [details, diff] > ncurses-9999.ebuild.patch EAPI=6 does not allow old epatch: + epatch "${FILESDIR}/${PN}-6.0-unified.patch" You'd better add it into the PATCHES array. (In reply to charles17 from comment #11) > (In reply to blopsalot from comment #10) > > Created attachment 512138 [details, diff] [details, diff] [details, diff] > > ncurses-9999.ebuild.patch > > EAPI=6 does not allow old epatch: > > + epatch "${FILESDIR}/${PN}-6.0-unified.patch" > > You'd better add it into the PATCHES array. I have it changed to eapply on git. Not sure I noted it, I obviously removed the ncurses-5 stuff, but ncurses-6.0-gfbsd.patch was also withheld because upstream appeared patched. Created attachment 513122 [details] rebased changes diffs against GNU release are there too, i guess that's the preferred route. looks like ncurses-6.0-20170930.patch.gz is considered a stable release. ftp://ftp.invisible-island.net/ncurses/6.0/ AM I missing something?? bug 636932 bug 639706 bug 625830 bug 624644 bug 629276 bug 572898 ..... Like I said, I'm oblivious to the politics. I have mostly just been a lurker for a very long time. It seems to me that GNU treats ncurses like a red headed step child because Thomas Dickey will not GPL his code instead of MIT. Is there a ncurses git on savannah? IS there a GNU directory collecting patches? I am pretty sure ever other distro follows TD's release and versioning. Why is this being ignored? Keep it broken because there seems to be an ego problem in Gentoo middle management? Created attachment 518750 [details]
more proper ncurses5 compat
I only broke slotting out of laziness. Disabled wide for my own use. new sources and --with-abi-version=5 is all I'm pointing out.
Created attachment 518752 [details] version bump here's more info about symbol versioning https://invisible-island.net/ncurses/ncurses-mapsyms.html it's really hard to tell what it is you're proposing. please attach ebuild diffs, not entire files, as it's practically impossible to reasonably review entire files. i think what you're suggesting is switching from the periodic versioned releases (e.g. 5.9, 6.0, 6.1, etc...) to the date snapshots Thomas puts out (e.g. 6.1.20180623). that has nothing to do with GNU or politics or "ego" anything else you seem to have just randomly imagined/made up ... that's simply Thomas throwing out his current development status because he doesn't use git to manage the source. so ignoring all that noise, we're not going to switch to the snapshots. they're called "development snapshots" for a reason ... things randomly break/change in there and doing an upgrade every week is only going to make things very unstable. especially when many low level tools link against ncurses and breakage in the package can break the ability for a system to even boot. if you have some other suggestion buried in here (unrelated to "lets use the datestamped snapshots"), feel free to highlight it specifically. The ebuild currently contains: """ # Sometimes, after releases, there's no megapatch available yet. # # From upstream README at e.g. https://invisible-island.net/archives/ncurses/6.3/: # # "At times (generally to mark a relatively stable point), I create a rollup # patch, which consists of all changes from the release through the current date." # # Also, from https://lists.gnu.org/archive/html/bug-ncurses/2019-08/msg00039.html, # the patches are considered to be acceptable to use after some testing. They # are both for development but also bug fixes. """ We try to use new ncurses snapshots when they're suitable after some testing, but we don't aggressively add every single one either. We also try to keep the last release in tree. |