commit:     1ebcd0064fc20fa3002b5c76efd6a28e21ad93bc
Author:     Marek Szuba <marecki <AT> gentoo <DOT> org>
AuthorDate: Mon Dec  7 22:20:18 2020 +0000
Commit:     Marek Szuba <marecki <AT> gentoo <DOT> org>
CommitDate: Mon Dec  7 23:05:32 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=1ebcd006

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 <AT> gentoo.org>

 net-analyzer/rrdtool/rrdtool-1.7.2-r100.ebuild | 248 +++++++++++++++++++++++++
 profiles/package.mask                          |   1 +
 2 files changed, 249 insertions(+)

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 00000000000..9f7abe89568
--- /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
+}

diff --git a/profiles/package.mask b/profiles/package.mask
index 1c7c4a3436a..91a25ae4f7b 100644
--- a/profiles/package.mask
+++ b/profiles/package.mask
@@ -567,6 +567,7 @@ gnome-base/orbit
 >=media-libs/libquvi-scripts-0.9.20131130-r100
 >=media-sound/aqualung-1.1-r100
 >=media-video/vlc-3.0.11.1-r100
+>=net-analyzer/rrdtool-1.7.2-r100
 >=net-analyzer/suricata-6.0.1-r100
 >=net-im/prosody-0.11.7-r100
 >=net-im/swift-4.0.2-r100

Reply via email to