[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