[oe] [PATCH] rrdtool: enable libwrap, perl and python bindings

Martin Jansa martin.jansa at gmail.com
Tue Apr 22 05:02:56 UTC 2014


On Tue, Apr 22, 2014 at 09:52:54AM +0800, Chong Lu wrote:
> 
> On 04/20/2014 08:01 PM, Martin Jansa wrote:
> > On Wed, Apr 16, 2014 at 02:51:05PM +0800, Chong Lu wrote:
> >> 1. default enable libwrap, perl and python bindings
> >> 2. rrdtool uses perl.real, perl.real doesn't know where the PERL5LIB should be
> >> when prebuilts are used. Use the wrapper perl instead, perl sets PERL5LIB and
> >> invokes perl.real
> >> 3. While using dash as /bin/sh, subsequent commands in functions will not use
> >> the environment variables passed to the function call line unless explicitly
> >> run "export ENV_VAR".
> >> 4. delete unrecognized options: "--enable-local-libpng" and "--enable-local-zlib"
> >>
> >> Signed-off-by: Chong Lu <Chong.Lu at windriver.com>
> >> ---
> >>   meta-oe/recipes-extended/rrdtool/rrdtool_1.4.7.bb |  127 +++++++++++++++++++--
> >>   1 file changed, 120 insertions(+), 7 deletions(-)
> >>
> >> diff --git a/meta-oe/recipes-extended/rrdtool/rrdtool_1.4.7.bb b/meta-oe/recipes-extended/rrdtool/rrdtool_1.4.7.bb
> >> index 533451f..422e22f 100644
> >> --- a/meta-oe/recipes-extended/rrdtool/rrdtool_1.4.7.bb
> >> +++ b/meta-oe/recipes-extended/rrdtool/rrdtool_1.4.7.bb
> >> @@ -5,6 +5,7 @@ LICENSE = "GPLv2"
> >>   LIC_FILES_CHKSUM = "file://COPYING;md5=44fee82a1d2ed0676cf35478283e0aa0"
> >>   
> >>   DEPENDS = "libpng zlib cairo pango glib-2.0 libxml2"
> >> +DEPENDS_${PN}-perl = "perl-module-lib perl-module-dynaloader"
> > This looks like misspelled RDEPENDS_${PN}-perl
> >
> >>   
> >>   PR = "r2"
> >>   
> >> @@ -15,25 +16,137 @@ SRC_URI = "http://oss.oetiker.ch/rrdtool/pub/rrdtool-${PV}.tar.gz \
> >>   SRC_URI[md5sum] = "ffe369d8921b4dfdeaaf43812100c38f"
> >>   SRC_URI[sha256sum] = "956aaf431c955ba88dd7d98920ade3a8c4bad04adb1f9431377950a813a7af11"
> >>   
> >> -inherit autotools gettext
> >> +inherit autotools gettext pythonnative perlnative python-dir
> >>   
> >>   EXTRA_AUTORECONF = "-I m4"
> >>   
> >> -PACKAGECONFIG ??= ""
> >> +PACKAGECONFIG ??= "python libwrap perl"
> >> +
> >> +PACKAGECONFIG[python] = "--enable-python=yes \
> >> +am_cv_python_pythondir=${STAGING_LIBDIR}/python${PYTHON_BASEVERSION}/site-packages \
> >> +am_cv_python_pyexecdir=${STAGING_LIBDIR}/python${PYTHON_BASEVERSION}/site-packages,\
> >> +--disable-python,python,"
> >> +
> >> +PACKAGECONFIG[perl] = \
> >> +"--enable-perl=yes --with-perl-options='INSTALLDIRS="vendor"' \
> >> +ac_cv_path_PERL_CC='${CC}',  \
> >> +--disable-perl,perl,"
> >> +
> >> +PACKAGECONFIG[libwrap] = ",--disable-libwrap,tcp-wrappers,libwrap"
> >>   PACKAGECONFIG[dbi] = "--enable-libdbi,--disable-libdbi,libdbi"
> >>   
> >>   EXTRA_OECONF = " \
> >>       --enable-shared \
> >> -    --enable-local-libpng \
> >> -    --enable-local-zlib \
> >> -    --disable-libwrap \
> >>       --program-prefix='' \
> >>       rd_cv_ieee_works=yes \
> >> -    --disable-perl \
> >> -    --disable-python \
> >>       --disable-ruby \
> >>       --disable-lua \
> >>       --disable-rpath \
> >>   "
> >>   
> >> +# don't use perl.real, this results in break issues with prebuilts since perl.real doesn't
> >> +# know where the PERL5LIB is...
> >> +# use wrapper perl instead
> >> +EXTRA_OEMAKE = "PERL=${STAGING_BINDIR_NATIVE}/perl-native/perl FULLPERL=${STAGING_BINDIR_NATIVE}/perl-native/perl"
> >> +
> >> +export BUILD_SYS
> >> +export HOST_SYS
> >> +export STAGING_LIBDIR
> >> +export STAGING_INCDIR
> >> +
> >> +do_configure() {
> >> +	#fix the pkglib problem with newer automake
> >> +	#perl
> >> +	sed -i -e "s|-Wl,--rpath -Wl,\$rp||g" \
> >> +	    ${S}/bindings/perl-shared/Makefile.PL
> >> +
> >> +	#python
> >> +	sed -i -e '/PYTHON_INCLUDES="-I${/c \
> >> +	PYTHON_INCLUDES="-I=/usr/include/python${PYTHON_BASEVERSION}"' \
> >> +	    ${S}/m4/acinclude.m4
> >> +	#remove the hardcoded $(libdir) rpath
> >> +	sed -i -e 's|--rpath=$(libdir)||g' ${S}/bindings/Makefile.am
> >> +
> >> +	autotools_do_configure
> >> +
> >> +	perl_version=`perl -v 2>/dev/null | \
> >> +	    sed -n 's/This is perl.*v[a-z ]*\([0-9]\.[0-9][0-9.]*\).*$/\1/p'`
> >> +
> >> +	#modify python sitepkg
> >> +	#remove the dependency of perl-shared:Makefile
> >> +	#or perl-shared/Makefile will be regenerated
> >> +	#if any code touch bindings/Makefile after below perl bindings code
> >> +	sed -i -e "s:\$(PYTHON) setup.py install:\$(PYTHON) setup.py install \
> >> +	    --install-lib=${D}${PYTHON_SITEPACKAGES_DIR}:" \
> >> +	    -e "s:perl-shared/Makefile.PL Makefile:perl-shared/Makefile.PL:" \
> >> +	    ${S}/bindings/Makefile
> >> +
> >> +	#redo the perl bindings
> >> +	(
> >> +	cd bindings/perl-shared;
> >> +	perl -I${STAGING_LIBDIR}/perl/$perl_version Makefile.PL INSTALLDIRS="vendor"
> >> +	    INSTALLPRIVLIB="abc";
> >> +	sed -i -e "s| ${libdir}/perl/| ${STAGING_LIBDIR}/perl/|g" Makefile;
> >> +
> >> +	cd ../../bindings/perl-piped;
> >> +	perl -I${STAGING_LIBDIR}/perl/$perl_version Makefile.PL INSTALLDIRS="vendor";
> >> +	sed -i -e "s| ${libdir}/perl/| ${STAGING_LIBDIR}/perl/|g" Makefile;
> >> +	)
> >> +
> >> +	#change the interpreter in file
> >> +	sed -i -e "s|^PERL = ${STAGING_BINDIR_NATIVE}/.*|PERL = /usr/bin/perl|g" \
> >> +	    ${S}/examples/Makefile
> >> +	sed -i -e "s|${STAGING_BINDIR_NATIVE}/perl-native/perl|/usr/bin/perl|g" \
> >> +	    ${S}/examples/*.pl
> >> +}
> >> +
> >> +python populate_packages_prepend() {
> >> +    def fill_more(name, dbg=True, rdep=None):
> >> +        if name is None or name.strip() == "":
> >> +            return
> >> +
> >> +        fpack=d.getVar('PACKAGES') or ""
> >> +        fpack="${PN}-" + name + " " + fpack
> >> +        if dbg:
> >> +            fpack="${PN}-" + name + "-dbg" + " " + fpack
> >> +        d.setVar('PACKAGES', fpack)
> >> +        if rdep is not None:
> >> +            prdep=d.getVar('RDEPENDS_${PN}-' + name) or ""
> >> +            prdep=rdep + " " + prdep
> >> +            d.setVar('RDEPENDS_${PN}-' + name, prdep)
> >> +
> >> +            prdep=d.getVar('RDEPENDS_${PN}-' + name) or ""
> >> +            bb.debug(1, "RDEPENDS_${PN}-" + name + "=" + prdep)
> >> +
> >> +    conf=(d.getVar('PACKAGECONFIG', True) or "").split()
> >> +    pack=d.getVar('PACKAGES') or ""
> >> +    bb.debug(1, "PACKAGECONFIG=%s" % conf)
> >> +    bb.debug(1, "PACKAGES1=%s" % pack )
> >> +
> >> +    if "perl" in conf :
> >> +        fill_more("perl")
> >> +
> >> +    if "python" in conf:
> >> +        fill_more("python")
> >> +
> >> +    pack=d.getVar('PACKAGES', True) or ""
> >> +    bb.debug(1, "PACKAGES after=%s" % pack)
> >> +
> >> +    #debug code
> >> +    #prdep=d.getVar('RDEPENDS_${PN}') or ""
> >> +    #bb.debug(1, "RDEPENDS_${PN}" + "=" + prdep)
> >> +    #prdep=d.getVar('RDEPENDS') or ""
> >> +    #bb.debug(1, "RDEPENDS" + "=" + prdep)
> >> +}
> >> +
> >> +FILES_${PN}-doc += "${datadir}/examples"
> >> +
> >> +DESCRIPTION_${PN}-perl = \
> >> +"The ${PN}-perl package includes RRDtool bindings for perl."
> >> +FILES_${PN}-perl = "${libdir}/perl/vendor_perl/* ${datadir}/${PN}/examples"
> >> +FILES_${PN}-perl-dbg = "${libdir}/perl/vendor_perl/*/auto/RRDs/.debug"
> >>   
> >> +DESCRIPTION_${PN}-python = \
> >> +"The ${PN}-python package includes RRDtool bindings for python."
> >> +FILES_${PN}-python = "${libdir}/python${PYTHON_BASEVERSION}/site-packages/*"
> >> +FILES_${PN}-python-dbg = "${libdir}/python${PYTHON_BASEVERSION}/site-packages/.debug"
> > I think there should be just one -dbg package.
> If have only one -dbg package, we will get QA error:
> non debug package contains .debug directory: rrdtool-perl
> So, I split them into two packages.
> I will resend V2 for other issues.

You can have one -dbg package which contains all FILES_* if you order
PACKAGES correctly.

> 
> Best Regards
> Chong
> >> -- 
> >> 1.7.9.5
> >>
> >> -- 
> >> _______________________________________________
> >> Openembedded-devel mailing list
> >> Openembedded-devel at lists.openembedded.org
> >> http://lists.openembedded.org/mailman/listinfo/openembedded-devel
> >
> >
> 
> -- 
> _______________________________________________
> Openembedded-devel mailing list
> Openembedded-devel at lists.openembedded.org
> http://lists.openembedded.org/mailman/listinfo/openembedded-devel

-- 
Martin 'JaMa' Jansa     jabber: Martin.Jansa at gmail.com
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 198 bytes
Desc: Digital signature
URL: <http://lists.openembedded.org/pipermail/openembedded-devel/attachments/20140422/8c476d71/attachment-0002.sig>


More information about the Openembedded-devel mailing list