[OE-core] methodology for writing OE perl recipes equivalent to RH RPMs

Khem Raj raj.khem at gmail.com
Tue Nov 8 16:22:01 UTC 2016



On 11/8/16 12:19 AM, Robert P. J. Day wrote:
> 
>   (NOTE: i'm fighting with a compile error in a perl recipe i've
> written, but rather than ask about that right this instant, i want to
> explain my general methodology for writing these sorts of recipes so
> that, in the future, i'll have a much better idea of how to solve
> issues like this, so i apologize for the verbosity, and if people want
> to chime in with advice, i'll be delighted to write all this up later
> for everyone else's benefit. *then* i'll ask about my compile error.)
> 
>   at the moment, for a "qemuppc" core-image-minimal target, i'm trying
> to write OE-equivalent perl and/or python recipes for 200+ x86_64
> centos RPMs -- effectively trying to reproduce (for powerpc) a running
> centos 7 system. in short, trying to port a centos 7 system to an
> OE-based powerpc box, which involves reproducing with OE equivalents
> quite a number of stock RPMs for which there are no obvious available
> recipes. from that initial list of 200+ RPMs, i'm down to less than 60
> to go, so that's progress.
> 
>   most of what's left is perl, so here's my methodology for creating a
> perl recipe, and i'll use a specific example, "perl-Net-IP", and even
> though i'm doing this on my fedora system, there's not much difference
> between this system and a centos box, other than RPM version
> differences.
> 
>   first, i typically pop over to the OE layers page, and do a search
> to see if there's already a recipe for what i'm looking for -- in this
> case, i didn't see an equivalent for "perl-Net-IP":
> 
> https://layers.openembedded.org/layerindex/branch/master/recipes/?q=perl+net+ip
> 
> (Q: is that a reasonably comprehensive search approach? oh, and i've
> already been advised to avoid using the meta-debian layer.)
> 
>   next, since it looks like i'll need to write a recipe, i install the
> equivalent recipe on my fedora box, just to see what i'm aiming for as
> a final result (or something reasonably equivalent):
> 
>   $ sudo dnf install perl-Net-IP
>   $ rpm -ql perl-Net-IP
>   /usr/bin/ipcount
>   /usr/bin/iptab
>   /usr/share/doc/perl-Net-IP
>   /usr/share/doc/perl-Net-IP/COPYING
>   /usr/share/doc/perl-Net-IP/Changes
>   /usr/share/doc/perl-Net-IP/README
>   /usr/share/man/man3/Net::IP.3pm.gz
>   /usr/share/perl5/vendor_perl/Net
>   /usr/share/perl5/vendor_perl/Net/IP.pm
>   $
> 
> ok, now i have an idea of what my final OE build should produce.
> 
>   next, pop over to metacpan.org and search for corresponding source
> to find:
> 
>   https://metacpan.org/pod/Net::IP
> 
> at which point, write a fairly boilerplate recipe (the "noarch" RPMs
> are the easy ones), filling in among other things:
> 
>   * "SRC_URI"
>   * checksums
>   * "S"
>   * "inherit cpan allarch"
> 
> ///// start /////
> 
> DESCRIPTION = "Net::IP"
> 
> SECTION = "libs"
> LICENSE = "Artisticv1 | GPLv1+"
> PR = "r0"
> 
> MAINTAINER=     "rday"
> HOMEPAGE=       "https://metacpan.org/pod/Net::IP"
> 
> LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/Artistic-1.0;md5=cda03bbdc3c1951996392b872397b798 \
> file://${COMMON_LICENSE_DIR}/GPL-1.0;md5=e9e36a9de734199567a4d769498f743d"
> 
> SRC_URI = "https://cpan.metacpan.org/authors/id/M/MA/MANU/Net-IP-1.26.tar.gz"
> 
> SRC_URI[md5sum] = "3a98e3ac45d69ea38a63a7e678bd716d"
> SRC_URI[sha256sum] = "040f16f3066647d761b724a3b70754d28cbd1e6fe5ea01c63ed1cd857117d639"
> 
> S = "${WORKDIR}/Net-IP-${PV}"
> 
> inherit cpan allarch
> 
> BBCLASSEXTEND = "native"
> 
> ///// end /////
> 
>   at this point, i run:
> 
>   $ bitbake -c fetchall perl-net-ip
> 
> to make sure the fetch works (and adjust checksums to taste), then:
> 
>   $ bitbake perl-net-ip
> 
> to build, and check the contents of the resulting rpm file to see that
> it matches:
> 
>   $ rpm -qpl perl-net-ip-1.26-r0.all.rpm
>   /usr
>   /usr/bin
>   /usr/bin/ipcount
>   /usr/bin/iptab
>   /usr/lib
>   /usr/lib/perl
>   /usr/lib/perl/vendor_perl
>   /usr/lib/perl/vendor_perl/5.22.1
>   /usr/lib/perl/vendor_perl/5.22.1/Net
>   /usr/lib/perl/vendor_perl/5.22.1/Net/IP.pm
>   $
> 
> looks good, so that gets added to my build, and on to the next recipe.
> 
>   couple final notes:
> 
> * i'm currently ignoring all the dependencies i should be adding to
> those recipes; i'll put them in later
> 
> * it's easy to see when i should use "inherit cpan_build" for the
> older-style Build.PL-based recipes
> 
> * about to get into the arch-specific recipes, so that will get more
> interesting ... back shortly with my recipe that's causing the build
> error
> 
>   thoughts?
> 

this seems OK approach to me. I wonder how would recipe-tool fair doing the
new recipe work of this sort of usecase. ( devtool add )

> rday
> 

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 204 bytes
Desc: OpenPGP digital signature
URL: <http://lists.openembedded.org/pipermail/openembedded-core/attachments/20161108/a97179ff/attachment-0002.sig>


More information about the Openembedded-core mailing list