diff options
author | Marek Szuba <marecki@gentoo.org> | 2020-12-07 23:20:18 +0100 |
---|---|---|
committer | Marek Szuba <marecki@gentoo.org> | 2020-12-08 00:05:32 +0100 |
commit | 1ebcd0064fc20fa3002b5c76efd6a28e21ad93bc (patch) | |
tree | 3d8c2a3b4df0ddb3a750a65aeb853227c4a3ab5d /net-analyzer | |
parent | net-analyzer/rrdtool: limit unmigrated ebuilds to dev-lang/lua:0 (diff) | |
download | gentoo-1ebcd0064fc20fa3002b5c76efd6a28e21ad93bc.tar.gz gentoo-1ebcd0064fc20fa3002b5c76efd6a28e21ad93bc.tar.bz2 gentoo-1ebcd0064fc20fa3002b5c76efd6a28e21ad93bc.zip |
net-analyzer/rrdtool: migrate to lua.eclass
Featuring proper multi-impl support including testing. Lua bindings have
been confirmed to build, test and install fine for all five
implementations currently listed in LUA_COMPAT.
Speaking of testing, in order for it to be complete the file "test.png"
produced for each enabled Lua target by rrd.graphv should be visually
inspected. For obvious reasons automating this would be way more trouble
than it is worth (an image recogniser as a build-time dependency???),
that said I *have* inspected those images while testing whether LuaJIT
as well as PUC Lua 5.2, 5.3 and 5.4 really are supported (although
upstream documentation says "Lua 5.0 or newer" their build scripts only
explicitly mention PUC Lua 5.0 and 5.1, and LuaJIT is not mentioned in
either) and they looked fine for all five implementations.
Closes: https://bugs.gentoo.org/752780
Signed-off-by: Marek Szuba <marecki@gentoo.org>
Diffstat (limited to 'net-analyzer')
-rw-r--r-- | net-analyzer/rrdtool/rrdtool-1.7.2-r100.ebuild | 248 |
1 files changed, 248 insertions, 0 deletions
diff --git a/net-analyzer/rrdtool/rrdtool-1.7.2-r100.ebuild b/net-analyzer/rrdtool/rrdtool-1.7.2-r100.ebuild new file mode 100644 index 000000000000..9f7abe89568f --- /dev/null +++ b/net-analyzer/rrdtool/rrdtool-1.7.2-r100.ebuild @@ -0,0 +1,248 @@ +# Copyright 1999-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI=7 + +DISTUTILS_OPTIONAL=true +DISTUTILS_SINGLE_IMPL=true +GENTOO_DEPEND_ON_PERL=no +LUA_COMPAT=( lua5-{1..4} luajit ) +PYTHON_COMPAT=( python3_{6,7,8} ) + +inherit autotools lua perl-module distutils-r1 flag-o-matic multilib + +MY_P=${P/_/-} + +DESCRIPTION="A system to store and display time-series data" +HOMEPAGE="https://oss.oetiker.ch/rrdtool/" +SRC_URI="https://oss.oetiker.ch/rrdtool/pub/${MY_P}.tar.gz" + +LICENSE="GPL-2" +SLOT="0/8.0.0" +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~mips ~ppc ~ppc64 ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~x86-macos ~x86-solaris" +IUSE="dbi doc graph lua perl python rados rrdcgi ruby static-libs tcl tcpd test" +RESTRICT="!test? ( test )" +REQUIRED_USE="python? ( ${PYTHON_REQUIRED_USE} ) + lua? ( + ${LUA_REQUIRED_USE} + test? ( graph ) + )" + +CDEPEND=" + >=dev-libs/glib-2.28.7:2[static-libs(+)?] + >=dev-libs/libxml2-2.7.8:2[static-libs(+)?] + dbi? ( dev-db/libdbi[static-libs(+)?] ) + graph? ( + >=media-libs/libpng-1.5.10:0=[static-libs(+)?] + >=x11-libs/cairo-1.10.2[svg,static-libs(+)?] + >=x11-libs/pango-1.28 + ) + lua? ( ${LUA_DEPS} ) + perl? ( dev-lang/perl:= ) + python? ( ${PYTHON_DEPS} ) + rados? ( sys-cluster/ceph ) + tcl? ( dev-lang/tcl:0= ) + tcpd? ( sys-apps/tcp-wrappers ) +" + +DEPEND=" + ${CDEPEND} + sys-apps/groff + virtual/pkgconfig + virtual/awk + test? ( sys-devel/bc ) +" +RDEPEND=" + ${CDEPEND} +" +BDEPEND="test? ( + lua? ( ${LUA_DEPS} ) +)" +PDEPEND=" + ruby? ( ~dev-ruby/rrdtool-bindings-${PV} ) +" +PATCHES=( + "${FILESDIR}"/${PN}-1.4.9-disable-rrd_graph-perl.patch + "${FILESDIR}"/${PN}-1.7.0-disable-rrd_graph-cgi.patch + "${FILESDIR}"/${PN}-1.7.1-configure.ac.patch +) +S=${WORKDIR}/${MY_P} + +python_compile() { + cd bindings/python || die + distutils-r1_python_compile +} + +python_install() { + cd bindings/python || die + distutils-r1_python_install +} + +pkg_setup() { + use python && python-single-r1_pkg_setup +} + +src_prepare() { + default + # At the next version bump, please see if you actually still need this + # before adding versions + if ! [ -f doc/rrdrados.pod ]; then + cp "${FILESDIR}"/${PN}-1.5.5-rrdrados.pod doc/rrdrados.pod + else + die "File already exists: doc/rrdrados.pod. Remove this code!" + fi + + # bug 456810 + # no time to sleep + sed -i \ + -e 's|$LUA_CFLAGS|IGNORE_THIS_BAD_TEST|g' \ + -e 's|^sleep 1$||g' \ + -e '/^dnl.*png/s|^dnl||g' \ + configure.ac || die + + # Python bindings are built/installed manually + sed -i \ + -e '/^all-local:/s| @COMP_PYTHON@||' \ + bindings/Makefile.am || die + + if ! use graph; then + sed -i \ + -e '2s:rpn1::; 2s:rpn2::; 6s:create-with-source-4::;' \ + -e '7s:xport1::; 7s:dcounter1::; 7s:vformatter1::' \ + -e 's|graph1||g' \ + tests/Makefile.am || die + fi + + eautoreconf +} + +src_configure() { + export rd_cv_gcc_flag__Werror=no + export rd_cv_ms_async=ok + + filter-flags -ffast-math + + export RRDDOCDIR=${EPREFIX}/usr/share/doc/${PF} + + # to solve bug #260380 + [[ ${CHOST} == *-solaris* ]] && append-flags -D__EXTENSIONS__ + + # Stub configure.ac + local myconf=() + if ! use tcpd; then + myconf+=( "--disable-libwrap" ) + fi + if ! use dbi; then + myconf+=( "--disable-libdbi" ) + fi + if ! use rados; then + myconf+=( "--disable-librados" ) + fi + + # We will handle Lua bindings ourselves, upstream is not multi-impl-ready + # and their Lua-detection logic depends on having the right version of the Lua + # interpreter available at build time. + econf \ + $(use_enable graph rrd_graph) \ + $(use_enable perl perl-site-install) \ + $(use_enable perl) \ + $(use_enable python) \ + $(use_enable rrdcgi) \ + $(use_enable static-libs static) \ + $(use_enable tcl) \ + $(use_with tcl tcllib "${EPREFIX}"/usr/$(get_libdir)) \ + --with-perl-options=INSTALLDIRS=vendor \ + --disable-lua \ + --disable-ruby-site-install \ + --disable-ruby \ + ${myconf[@]} +} + +lua_src_compile() { + pushd "${BUILD_DIR}"/bindings/lua || die "Failed to change to Lua-binding directory for ${ELUA}" + + # We do need the cmod-dir path here, otherwise libtool complains. + # Use the real one (i.e. not within ${ED}) just in case. + emake \ + LUA_CFLAGS=$(lua_get_CFLAGS) \ + LUA_INSTALL_CMOD="$(lua_get_cmod_dir)" + + popd +} + +src_compile() { + default + + if use lua; then + # Only copy sources now so that we do not trigger librrd compilation + # multiple times. + lua_copy_sources + + lua_foreach_impl lua_src_compile + fi + + use python && distutils-r1_src_compile +} + +lua_src_test() { + pushd "${BUILD_DIR}"/bindings/lua || die "Failed to change to Lua-binding directory for ${ELUA}" + + LUA_CPATH="${PWD}/.libs/?.so" emake LUA="${LUA}" test + + popd +} + +src_test() { + export LC_ALL=C + default + if use lua; then + lua_foreach_impl lua_src_test + fi +} + +lua_src_install() { + pushd "${BUILD_DIR}"/bindings/lua || die "Failed to change to Lua-binding directory for ${ELUA}" + + # This time we must prefix the cmod-dir path with ${ED} so that make + # does not try to violate the sandbox. + emake \ + LUA_INSTALL_CMOD="${ED}/$(lua_get_cmod_dir)" \ + install + + popd +} + +src_install() { + default + + if ! use doc ; then + rm -rf "${ED}"/usr/share/doc/${PF}/{html,txt} + fi + + if use lua; then + lua_foreach_impl lua_src_install + fi + + if use !rrdcgi ; then + # uses rrdcgi, causes invalid shebang error in Prefix, useless + # without rrdcgi installed + rm -f "${ED}"/usr/share/${PN}/examples/cgi-demo.cgi + fi + + if use perl ; then + perl_delete_localpod + perl_delete_packlist + fi + + dodoc CHANGES CONTRIBUTORS NEWS THREADS TODO + + find "${ED}"usr -name '*.la' -exec rm -f {} + + + keepdir /var/lib/rrdcached/journal/ + keepdir /var/lib/rrdcached/db/ + + newconfd "${FILESDIR}"/rrdcached.confd rrdcached + newinitd "${FILESDIR}"/rrdcached.init rrdcached + + use python && distutils-r1_src_install +} |