From: Arne Caspari <arne.caspari@gmail.com>
To: buildroot@busybox.net
Subject: [Buildroot] perl XS modules
Date: Tue, 12 Jul 2016 10:15:54 +0200 [thread overview]
Message-ID: <20160712101554.483fd170@gmail.com> (raw)
In-Reply-To: <CAGhdn55xFz6+4f46w3OLMwqUGvGv-mVgDLQzg8o07vWMcRQ3Pw@mail.gmail.com>
Fran?ois,
Thank you very much for coming back to me. It is highly appreciated.
I did not know about the scancpan-Script - this would have saved me a
ton of work, literally since I just ported a package with very very
many module dependencies (the Logitech Media Server) to buildroot. Ah
well...
I finally found the issue with the perl XS packages though: The perl
MakeMaker module fails to generate a correct Makefile but instead
messes up the configuration with the host-perl one. I kind of fixed the
issue for me in a very hackish way by modifying the generated Makefile
with the following script:
define PERL_XML_PARSER_BUILD_CMDS
sed "s~/usr/bin/gcc~$(TARGET_CC) -Os~" -i $(@D)/Makefile
sed "s~/usr/bin/gcc~$(TARGET_CC) -Os~" -i $(@D)/Expat/Makefile
sed "s~x86_64~$(KERNEL_ARCH)~" -i $(@D)/Expat/Makefile
sed "s~host/usr/lib~staging/usr/lib~" -i $(@D)/Expat/Makefile
$(MAKE) $(@D)/Makefile -C $(@D)
endef
The module loads correctly afterwards. Unfortunately I do not have any
experience with perl or the MakeMaker module to come up with a less
insane fix.
/Arne
Am Tue, 12 Jul 2016 10:00:41 +0200
schrieb Fran?ois Perrad <fperrad@gmail.com>:
> The BR package libxml-parser-perl is a very specific host package
> which works only with the the system perl.
> (The reason is : this packge is heavy used, and we don't want the
> cost|time of the host-perl build)
>
> All Perl modules (XS or Pure Perl) use the naming scheme :
> perl-module-name.
> For example, the wrapper for libxml2 is perl-xml-libxml.
> All these packages use the BR infrastructure perl-package.
>
> If you want a target package perl-xml-parser (XML expat wrapper),
> start by running:
> $ support/script/scancpan XML-Parser
> which creates a decent template.
> After add manually, the specific part required by the expat C library.
> (And obviously, read
> https://buildroot.org/downloads/manual/manual.html#_infrastructure_for_perl_cpan_packages
> )
>
> Fran?ois
>
> 2016-07-08 17:40 GMT+02:00 Thomas Petazzoni <
> thomas.petazzoni at free-electrons.com>:
>
> > Hello,
> >
> > Fran?ois, could you have a look at the below question, that is Perl
> > and cross-compilation related?
> >
> > Thanks!
> >
> > Thomas
> >
> > On Fri, 8 Jul 2016 09:59:10 +0200, Arne Caspari wrote:
> > > Hi all,
> > >
> > > I try to build the libxml-parser-perl package for an ARM target.
> > > Unfortunately the compiled perl module fails to load with the
> > > following error message:
> > >
> > > loadable library and perl binaries are mismatched
> > >
> > > After some digging I found that the module needs to be compiled
> > > with the same toolchain and compiler defines as the perl binary
> > > in order to be ABI compatible. Forcing the defines to be exactly
> > > the same as the ones used for the perl binary did not fix the
> > > issue so I believe it must be a problem with the toolchain.
> > >
> > > I get it right, buildroot builds the host-perl package with the
> > > GCC installed on the build system. In my case this is GCC Version
> > > 6.1 while the toolchain in buildroot uses 4.9.3. If I get the
> > > build procedure right, the ABI for perl is then configured for
> > > the 6.1 toolchain while module builds will use the toolchain
> > > provided by buildroot which is ABI incompatible.
> > >
> > > Is there a way to make buildroot build an initial toolchain to
> > > build the host packages with? Did anybody ever successfully build
> > > perlXS modules?
> > >
> > > Thanks,
> > >
> > > /Arne
> > > _______________________________________________
> > > buildroot mailing list
> > > buildroot at busybox.net
> > > http://lists.busybox.net/mailman/listinfo/buildroot
> >
> >
> >
> > --
> > Thomas Petazzoni, CTO, Free Electrons
> > Embedded Linux, Kernel and Android engineering
> > http://free-electrons.com
> >
next prev parent reply other threads:[~2016-07-12 8:15 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2016-07-08 7:59 [Buildroot] perl XS modules Arne Caspari
2016-07-08 15:40 ` Thomas Petazzoni
2016-07-12 8:00 ` François Perrad
2016-07-12 8:09 ` Thomas Petazzoni
2016-07-12 8:15 ` Arne Caspari [this message]
2016-07-12 8:56 ` Thomas Petazzoni
2016-07-12 9:04 ` Arne Caspari
2016-07-12 9:43 ` François Perrad
2016-07-12 10:16 ` Thomas Petazzoni
2016-07-12 11:05 ` François Perrad
2016-07-12 11:08 ` Thomas Petazzoni
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20160712101554.483fd170@gmail.com \
--to=arne.caspari@gmail.com \
--cc=buildroot@busybox.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox