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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.