Hi,

Don't you think it sucks to review a few ebuilds in one e-mail? :)

neovim:

> # Copyright 1999-2015 Gentoo Foundation
> # Distributed under the terms of the GNU General Public License v2
> # $Header: $
> 
> EAPI=5
> inherit cmake-utils flag-o-matic
> 
> DESCRIPTION="Vim's rebirth for the 21st century"
> HOMEPAGE="https://github.com/neovim/neovim";
> if [[ ${PV} == 9999 ]]; then
>       inherit git-r3
>       EGIT_REPO_URI="git://github.com/neovim/neovim.git"
>       KEYWORDS=""
> else
>       inherit vcs-snapshot
>       COMMIT="8efb3607a7f6cefce450953c7f8d5e3299347bae"
>       SRC_URI="https://github.com/${PN}/${PN}/tarball/${COMMIT} -> 
> ${P}.tar.gz"

I don't think relying on stability of generated tarballs is a good
idea. The same applies to almost all other ebuilds.

>       KEYWORDS="~amd64 ~x86"
> fi
> 
> LICENSE="Apache-2.0 vim"
> SLOT="0"
> IUSE="perl python"
> 
> CDEPEND="dev-lang/luajit
>       >=dev-libs/libtermkey-0.17
>       >=dev-libs/unibilium-1.1.1
>       >=dev-libs/libuv-1.2.0
>       >=dev-libs/msgpack-0.6.0_pre20150220  

Accidentally found trailing whitespace here!

>       dev-lua/LuaBitOp
>       dev-lua/lpeg
>       dev-lua/lua-MessagePack"
> DEPEND="${CDEPEND}
>       virtual/libiconv
>       virtual/libintl"
> RDEPEND="${CDEPEND}
>       perl? ( dev-lang/perl )
>       python? ( dev-python/neovim-python-client )"
> 
> src_configure() {
>       append-cflags "-Wno-error"
>       append-cppflags "-DNDEBUG -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=1"
>       local mycmakeargs=( -DCMAKE_BUILD_TYPE=Release )

That looks like a very bad idea. Doesn't that disable all the Gentoo
fancy overrides needed for sane CC/CXX etc.?

>       cmake-utils_src_configure
> }

And in the end it fails to build with some linker errors like:

CMakeFiles/nvim.dir/tui/tui.c.o: In function `tui_set_scroll_region':
tui.c:(.text+0xa2): undefined reference to `unibi_get_str'
CMakeFiles/nvim.dir/tui/tui.c.o: In function `unibi_set_if_empty':
tui.c:(.text+0x40c): undefined reference to `unibi_get_str'

or for ncurses, if libtermkey was linked against ncurses. Long story
short, it's linking to -ltermkey statically without providing
-lunibilium before it... which (static linking) is a horrible thing
to do anyway.

libtermkey:

> # Copyright 1999-2015 Gentoo Foundation
> # Distributed under the terms of the GNU General Public License v2
> # $Header: $
> 
> EAPI=5
> inherit eutils multilib
> 
> DESCRIPTION="Library for easy processing of keyboard entry from 
> terminal-based programs"
> HOMEPAGE="http://www.leonerd.org.uk/code/libtermkey/";
> SRC_URI="http://www.leonerd.org.uk/code/${PN}/${P}.tar.gz";
> 
> LICENSE="MIT"
> SLOT="0"
> KEYWORDS="~amd64 ~x86"
> IUSE="demos"
> 
> RDEPEND="|| ( dev-libs/unibilium
>               sys-libs/ncurses[unicode] )"

No, no, no, no, no and no. This dependency is meaningless, and broken.

You're looking for either:

# ignore ncurses since neovim will pull in unibilium anyway,
# and then libtermkey will prefer it
RDEPEND="dev-libs/unibilium:="

or a USE flag to toggle the two. No auto-magic || () is doing.

> DEPEND="${RDEPEND}
>       sys-devel/libtool

Using system-wide libtool is horrendously broken. This is something for
upstream to fix (like they should start using a sane build system)
but if you really want to commit it like this, already open a bug alike
https://bugs.gentoo.org/show_bug.cgi?id=515554.

The same applies to unibilium.

>       virtual/pkgconfig
>       demos? ( dev-libs/glib:2 )"
> 
> src_prepare() {
>       if ! use demos; then
>               sed -e 's|all: $(LIBRARY) $(DEMOS)|all: $(LIBRARY)|' -i 
> Makefile || die

sed -e '/^all:/s:$(DEMOS)::' ...

>       fi
> }
> 
> src_compile() {
>       emake PREFIX="${EPREFIX}/usr" all

You need LIBDIR here too, otherwise the executable gets wrong rpath.

The same applies to unibilium. Also unibilium doesn't respect CC here.

> }
> 
> src_install() {
>       emake PREFIX="${EPREFIX}/usr" LIBDIR="${EPREFIX}/usr/$(get_libdir)" \
>               DESTDIR="${D}" install
>       prune_libtool_files
> }

neovim-python-client:

> # Copyright 1999-2015 Gentoo Foundation
> # Distributed under the terms of the GNU General Public License v2
> # $Header: $
> 
> EAPI=5
> PYTHON_COMPAT=( python{2_7,3_3,3_4} pypy )
> inherit distutils-r1
> 
> DESCRIPTION="Python client to connect to Neovim thru its msgpack-rpc API"
> HOMEPAGE="https://github.com/neovim/python-client";
> SRC_URI="https://github.com/neovim/python-client/archive/0.0.28.tar.gz -> 
> ${P}.tar.gz"

Hardcoded PV. And obviously github generated tarball :).

> 
> LICENSE="Apache-2.0"
> SLOT="0"
> KEYWORDS="~amd64 ~x86"
> IUSE=""
> 
> DEPEND=">=dev-python/click-3.0
>       >=dev-python/msgpack-0.4.0  
>       !python_targets_pypy? ( dev-python/greenlet )
>       !python_targets_python3_4? ( dev-python/trollius )"

Whaaaaaaaaaaaaaaaaat?! What are those negative deps supposed to mean?

I'm pretty sure you meant:

$(python_gen_cond_dep 'python*' 'dev-python/greenlet[${PYTHON_USEDEP}]')
$(python_gen_cond_dep python{2_7,3_2,3_3} 'pypy*' 
'dev-python/trollius[${PYTHON_USEDEP}]')

> RDEPEND="${DEPEND}"
> 
> S=${WORKDIR}/${P/neovim-/}


-- 
Best regards,
Michał Górny

Attachment: pgpL_Kh155zhO.pgp
Description: OpenPGP digital signature

Reply via email to