* methodology for writing OE perl recipes equivalent to RH RPMs
@ 2016-11-08 8:19 Robert P. J. Day
2016-11-08 16:22 ` Khem Raj
0 siblings, 1 reply; 2+ messages in thread
From: Robert P. J. Day @ 2016-11-08 8:19 UTC (permalink / raw)
To: OE Core mailing list
(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?
rday
--
========================================================================
Robert P. J. Day Ottawa, Ontario, CANADA
http://crashcourse.ca
Twitter: http://twitter.com/rpjday
LinkedIn: http://ca.linkedin.com/in/rpjday
========================================================================
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: methodology for writing OE perl recipes equivalent to RH RPMs
2016-11-08 8:19 methodology for writing OE perl recipes equivalent to RH RPMs Robert P. J. Day
@ 2016-11-08 16:22 ` Khem Raj
0 siblings, 0 replies; 2+ messages in thread
From: Khem Raj @ 2016-11-08 16:22 UTC (permalink / raw)
To: Robert P. J. Day, OE Core mailing list
[-- Attachment #1.1: Type: text/plain, Size: 4846 bytes --]
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
>
[-- Attachment #2: OpenPGP digital signature --]
[-- Type: application/pgp-signature, Size: 211 bytes --]
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2016-11-08 16:22 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-11-08 8:19 methodology for writing OE perl recipes equivalent to RH RPMs Robert P. J. Day
2016-11-08 16:22 ` Khem Raj
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox