<div dir="ltr">NOTE: by convention, OE perl recipes follow debian naming so this should be <a href="http://librpm2-perl_1.3.bb">librpm2-perl_1.3.bb</a><div>Obviously, in your own layer you are free to do what you want, but it will require the name change if you want it to go into meta-perl.<br><div><br></div><div>For dependencies, since you are looking at CentOS rpms, you can look at, e.g. [0]  to see the DEPENDS (BuildRequires:) and RDEPENDS (Requires:). This would have shown you the need for rpm-devel.</div><div><br></div><div>I also use metacpan, e.g. [1], to look for dependencies in perl modules. It also has a very slick ElasticSearch JSON API that you can use to automatically query data [2].</div><div><br></div><div>To pass in the extra variables, for &#39;inherit cpan&#39; you probably need to set EXTRA_CPANFLAGS [3] or for &#39;inherit cpan_build&#39; EXTRA_CPAN_BUILD_FLAGS [4], e.g. [5].</div><div><br></div><div>You might want to file a documentation bug for the next release? </div><div><br></div></div><div>[0] <a href="http://pkgs.fedoraproject.org/cgit/rpms/perl-RPM2.git/tree/perl-RPM2.spec?h=epel7">http://pkgs.fedoraproject.org/cgit/rpms/perl-RPM2.git/tree/perl-RPM2.spec?h=epel7</a></div><div>[1] <a href="https://metacpan.org/pod/RPM2">https://metacpan.org/pod/RPM2</a></div><div>[2] <a href="https://github.com/metacpan/metacpan-api/blob/master/docs/API-docs.md">https://github.com/metacpan/metacpan-api/blob/master/docs/API-docs.md</a></div><div>[3] <a href="http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/meta/classes/cpan.bbclass#n20">http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/meta/classes/cpan.bbclass#n20</a></div><div>[4] <a href="http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/meta/classes/cpan_build.bbclass#n21">http://git.yoctoproject.org/cgit/cgit.cgi/poky/tree/meta/classes/cpan_build.bbclass#n21</a></div><div>[5] <a href="http://git.openembedded.org/meta-openembedded/tree/meta-perl/recipes-perl/libxml/libxml-libxml-perl_2.0121.bb#n37">http://git.openembedded.org/meta-openembedded/tree/meta-perl/recipes-perl/libxml/libxml-libxml-perl_2.0121.bb#n37</a></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Tue, Nov 8, 2016 at 3:17 AM, Robert P. J. Day <span dir="ltr">&lt;<a href="mailto:rpjday@crashcourse.ca" target="_blank">rpjday@crashcourse.ca</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
  replying to my earlier post with additional info ... man, i want to<br>
debug this ...<br>
<div><div class="h5"><br>
On Tue, 8 Nov 2016, Robert P. J. Day wrote:<br>
<br>
&gt;   following on my earlier post, here&#39;s the specific issue i&#39;m<br>
&gt; tackling. having found no existing OE recipe equivalent to a centos<br>
&gt; &quot;perl-RPM2&quot; RPM, i wrote my own. here&#39;s the info about that RH RPM on<br>
&gt; my fedora system, so i know what the final result should look like:<br>
&gt;<br>
&gt;   $ rpm -ql perl-RPM2<br>
&gt;   /usr/lib64/perl5/vendor_perl/<wbr>RPM2.pm<br>
&gt;   /usr/lib64/perl5/vendor_perl/<wbr>auto/RPM2<br>
&gt;   /usr/lib64/perl5/vendor_perl/<wbr>auto/RPM2/RPM2.so<br>
&gt;   /usr/share/doc/perl-RPM2<br>
&gt;   /usr/share/doc/perl-RPM2/<wbr>Changes<br>
&gt;   /usr/share/doc/perl-RPM2/<wbr>README<br>
&gt;   /usr/share/man/man3/RPM2.3pm.<wbr>gz<br>
&gt;   $<br>
&gt;<br>
&gt; so, as before, track down the source at cpan:<br>
&gt;<br>
&gt;   <a href="https://metacpan.org/pod/RPM2" rel="noreferrer" target="_blank">https://metacpan.org/pod/RPM2</a><br>
&gt;<br>
&gt; and write a boilerplate recipe, &quot;perl-rpm2&quot;, containing the following<br>
&gt; line since it&#39;s an older style recipe:<br>
&gt;<br>
&gt;   inherit cpan_build<br>
&gt;<br>
&gt; fetching works fine:<br>
&gt;<br>
&gt;   $ bitbake -c fetchall perl-rpm2<br>
&gt;<br>
&gt; but here&#39;s the problem:<br>
&gt;<br>
&gt;   $ bitbake perl-rpm2<br>
&gt;<br>
&gt; ... snip ...<br>
&gt;<br>
&gt; | DEBUG: Executing shell function do_compile<br>
&gt; | Copying lib/RPM2.pm -&gt; blib/lib/RPM2.pm<br>
&gt; | lib/RPM2.xs -&gt; lib/RPM2.c<br>
&gt; | powerpc-poky-linux-gcc -m32 -mhard-float -mcpu=7400 -mno-spe<br>
&gt; --sysroot=/home/rpjday/oe/<wbr>builds/msm_qemuppc/tmp/<wbr>sysroots/qemuppc<br>
&gt; -I/home/rpjday/oe/builds/msm_<wbr>qemuppc/tmp/sysroots/qemuppc/<wbr>usr/lib/perl/5.22.1/CORE<br>
&gt; -DVERSION=&quot;1.3&quot; -DXS_VERSION=&quot;1.3&quot; -fPIC -DRPM2_API=5004<br>
&gt; -I/home/rpjday/oe/builds/msm_<wbr>qemuppc/tmp/sysroots/qemuppc/<wbr>usr/include/rpm<br>
&gt; -c -O2 -pipe -g -feliminate-unused-debug-types<br>
&gt; -fdebug-prefix-map=/home/<wbr>rpjday/oe/builds/msm_qemuppc/<wbr>tmp/work/ppc7400-poky-linux/<wbr>perl/5.22.1-r0=/usr/src/debug/<wbr>perl/5.22.1-r0<br>
&gt; -fdebug-prefix-map=/home/<wbr>rpjday/oe/builds/msm_qemuppc/<wbr>tmp/sysroots/x86_64-linux=<br>
&gt; -fdebug-prefix-map=/home/<wbr>rpjday/oe/builds/msm_qemuppc/<wbr>tmp/sysroots/qemuppc=<br>
&gt; -DDEBIAN -D_REENTRANT -D_GNU_SOURCE -fwrapv -fno-strict-aliasing -pipe<br>
&gt; -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -D_FORTIFY_SOURCE=2 -O2<br>
&gt; -pipe -g -feliminate-unused-debug-types<br>
&gt; -fdebug-prefix-map=/home/<wbr>rpjday/oe/builds/msm_qemuppc/<wbr>tmp/work/ppc7400-poky-linux/<wbr>perl-rpm2/1.3-r0=/usr/src/<wbr>debug/perl-rpm2/1.3-r0<br>
&gt; -fdebug-prefix-map=/home/<wbr>rpjday/oe/builds/msm_qemuppc/<wbr>tmp/sysroots/x86_64-linux=<br>
&gt; -fdebug-prefix-map=/home/<wbr>rpjday/oe/builds/msm_qemuppc/<wbr>tmp/sysroots/qemuppc=<br>
&gt; -O2 -o lib/RPM2.o lib/RPM2.c<br>
&gt; | In file included from<br>
&gt; /home/rpjday/oe/builds/msm_<wbr>qemuppc/tmp/sysroots/qemuppc/<wbr>usr/include/rpm/rpmcli.h:9:0,<br>
&gt; |                  from lib/RPM2.xs:3:<br>
&gt; |<br>
&gt; /home/rpjday/oe/builds/msm_<wbr>qemuppc/tmp/sysroots/qemuppc/<wbr>usr/include/rpm/rpmmacro.h:<br>
&gt; In function &#39;rpmExpand&#39;:<br>
&gt; |<br>
&gt; /home/rpjday/oe/builds/msm_<wbr>qemuppc/tmp/sysroots/qemuppc/<wbr>usr/include/rpm/rpmmacro.h:<wbr>249:2:<br>
&gt; error: expected declaration specifiers before<br>
&gt; &#39;RPM_GNUC_NULL_TERMINATED&#39;<br>
&gt; |   RPM_GNUC_NULL_TERMINATED<br>
&gt; |   ^~~~~~~~~~~~~~~~~~~~~~~~<br>
&gt; |<br>
&gt; /home/rpjday/oe/builds/msm_<wbr>qemuppc/tmp/sysroots/qemuppc/<wbr>usr/include/rpm/rpmmacro.h:<wbr>260:2:<br>
&gt; error: expected &#39;=&#39;, &#39;,&#39;, &#39;;&#39;, &#39;asm&#39; or &#39;__attribute__&#39; before<br>
&gt; &#39;RPM_GNUC_NULL_TERMINATED&#39;<br>
&gt; |   RPM_GNUC_NULL_TERMINATED<br>
&gt; |   ^~~~~~~~~~~~~~~~~~~~~~~~<br>
&gt;<br>
&gt; ... big snip, lots more errors ...<br>
<br>
</div></div>  ok, here&#39;s my wildly-uneducated record of what is going on:<br>
<br>
  first, unpacking and configuring perl-RPM2 source (and running XS<br>
processor) gives me the source file &quot;lib/RPM2.c&quot; (which is what is<br>
generating the first build error above), which includes the header<br>
file:<br>
<br>
  #include &lt;rpm/rpmcli.h&gt;<br>
<br>
  next, wander over to the qemuppc sysroot, to usr/include/rpm/, to<br>
check out that header file, which contains (among other things):<br>
<br>
  #include &lt;popt.h&gt;<br>
  #include &lt;rpmmacro.h&gt;      &lt;----- there<br>
  #include &lt;rpmtypes.h&gt;<br>
  #include &lt;rpmtag.h&gt;<br>
  #include &lt;rpmps.h&gt;<br>
  #include &lt;rpmrc.h&gt;<br>
  #include &lt;rpmfi.h&gt;      /* XXX rpmfileAttrs */<br>
  #include &lt;rpmts.h&gt;      /* XXX rpmdepFlags *<br>
<br>
  next, in the same directory, examine rpmmacro.h, which contains:<br>
<br>
  #if defined(_MACRO_INTERNAL)<br>
  #include &lt;rpmiotypes.h&gt;<br>
  ... snip ...<br>
<br>
  at this point, inclusion is now conditional on _MACRO_INTERNAL, so<br>
move on to rpmiotypes.h, which contains:<br>
<br>
  #include &lt;rpmutil.h&gt;<br>
<br>
and finally visit that header file in the qemuppc sysroot to find:<br>
<br>
  #if     __GNUC__ &gt;= 4<br>
  #define RPM_GNUC_NULL_TERMINATED __attribute__((__sentinel__))<br>
  #else<br>
  #define RPM_GNUC_NULL_TERMINATED<br>
  #endif<br>
<br>
where we find the definition of that macro.<br>
<br>
  now, is it my imagination, or could a lot of this compile-time error<br>
be resolved by simply defining the macro &quot;_MACRO_INTERNAL&quot; for the<br>
build? and if so, what is the proper way to add that setting to the<br>
compile step for this recipe?<br>
<br>
  would i use the standard EXTRA_* variables? or are there<br>
perl-specific variables one would use when build CPAN recipes? or am i<br>
totally off-track here?<br>
<div class="HOEnZb"><div class="h5"><br>
rday<br>
<br>
--<br>
<br>
==============================<wbr>==============================<wbr>============<br>
Robert P. J. Day                                 Ottawa, Ontario, CANADA<br>
                        <a href="http://crashcourse.ca" rel="noreferrer" target="_blank">http://crashcourse.ca</a><br>
<br>
Twitter:                                       <a href="http://twitter.com/rpjday" rel="noreferrer" target="_blank">http://twitter.com/rpjday</a><br>
LinkedIn:                               <a href="http://ca.linkedin.com/in/rpjday" rel="noreferrer" target="_blank">http://ca.linkedin.com/in/<wbr>rpjday</a><br>
==============================<wbr>==============================<wbr>============<br>
<br>
<br>
<br>
--<br>
______________________________<wbr>_________________<br>
Openembedded-core mailing list<br>
<a href="mailto:Openembedded-core@lists.openembedded.org">Openembedded-core@lists.<wbr>openembedded.org</a><br>
<a href="http://lists.openembedded.org/mailman/listinfo/openembedded-core" rel="noreferrer" target="_blank">http://lists.openembedded.org/<wbr>mailman/listinfo/openembedded-<wbr>core</a><br>
</div></div></blockquote></div><br></div>