Buildroot Archive on lore.kernel.org
 help / color / mirror / Atom feed
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
> >  

  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