[Buildroot] ELFCLASS issue on building Perl module Term::ReadKey
Christopher McCrory
chrismcc at gmail.com
Thu Nov 8 16:43:05 UTC 2018
On Wed, Oct 31, 2018 at 1:53 PM Nuno Mota <nrmmota at gmail.com> wrote:
> Hi,
> I'm using buildroot for a project and so far so good. I've added a lot of
> perl modules, but a new one just failed. I have no clue how to fix this.
> I simply cloned this git project to use swupdate
> https://github.com/Trellis-Logic/buildroot-external/tree/swupdate
>
> >>> perl-termreadkey 2.37 Building
> cd
> /opt/home/nrm/ubuntudocker/GS_Gateway/buildroot/output/build/perl-termreadkey-2.37/
> && if [ -f Build.PL ] && [ MB != "EUMM" ] ; then PERL5LIB=
> PERL_USE_UNSAFE_INC=1
> /opt/home/nrm/ubuntudocker/GS_Gateway/buildroot/output/host/bin/perl Build
> build; else /usr/bin/make -j1
> PERL_INC=/opt/home/nrm/ubuntudocker/GS_Gateway/buildroot/output/host/i686-buildroot-linux-uclibc/sysroot/usr/lib/perl5/5.26.2/i686-linux/CORE
> FIXIN=: pure_all; fi
> "/opt/home/nrm/ubuntudocker/GS_Gateway/buildroot/output/host/bin/perl"
> -MExtUtils::Command::MM -e 'cp_nonempty' -- ReadKey.bs
> blib/arch/auto/Term/ReadKey/ReadKey.bs 644
> "/opt/home/nrm/ubuntudocker/GS_Gateway/buildroot/output/host/bin/perl"
> "-Iblib/arch" "-Iblib/lib" ReadKey_pm.PL ReadKey.pm
> Creating ReadKey.pm
> Can't load 'blib/arch/auto/Term/ReadKey/ReadKey.so' for module
> Term::ReadKey: blib/arch/auto/Term/ReadKey/ReadKey.so: wrong ELF class:
> ELFCLASS32 at
> /opt/home/nrm/ubuntudocker/GS_Gateway/buildroot/output/host/lib/perl5/5.26.2/x86_64-linux/DynaLoader.pm
> line 193.
> at
> /opt/home/nrm/ubuntudocker/GS_Gateway/buildroot/output/host/lib/perl5/5.26.2/x86_64-linux/DynaLoader.pm
> line 95.
> DynaLoader::croak("Can't load 'blib/arch/auto/Term/ReadKey/ReadKey.so' for
> modul"...) called at
> /opt/home/nrm/ubuntudocker/GS_Gateway/buildroot/output/host/lib/perl5/5.26.2/x86_64-linux/DynaLoader.pm
> line 193
> DynaLoader::bootstrap("Term::ReadKey") called at ReadKey_pm.PL line 515
> Bootstrapping the XS for blockoptions: make[2]: *** [ReadKey.pm] Error 255
> make[1]: ***
> [/opt/home/nrm/ubuntudocker/GS_Gateway/buildroot/output/build/perl-termreadkey-2.37/.stamp_built]
> Error 2
> make: *** [_all] Error 2
> make: Leaving directory `/opt/home/nrm/ubuntudocker/GS_Gateway/buildroot'
>
>
Try this (I used toolchain-external-linaro-armeb-2018.05 to test)
cat Config.in
config BR2_PACKAGE_PERL_TERMREADKEY
bool "perl-termreadkey"
depends on !BR2_STATIC_LIBS
help
Change terminal modes, and perform non-blocking reads.
https://metacpan.org/release/TermReadKey
comment "perl-termreadkey needs a toolchain w/ dynamic library"
depends on BR2_STATIC_LIBS
cat perl-termreadkey.mk
################################################################################
#
# perl-termreadkey
#
################################################################################
PERL_TERMREADKEY_VERSION = 2.37
PERL_TERMREADKEY_SOURCE = TermReadKey-$(PERL_TERMREADKEY_VERSION).tar.gz
PERL_TERMREADKEY_SITE = $(BR2_CPAN_MIRROR)/authors/id/J/JS/JSTOWE
#
# The License for this package is, (air quotes) complicated
# https://github.com/jonathanstowe/TermReadKey/issues/11
#
# Fedora lists it as
# (Copyright only) and (Artistic or GPL+)
#
https://src.fedoraproject.org/rpms/perl-TermReadKey/blob/master/f/perl-TermReadKey.spec
#
# Debian lists it as
# License: Artistic or GPL-1+
#
https://sources.debian.org/src/libterm-readkey-perl/2.37-1/debian/copyright/
#
# OpenEmbedded lists it as
# License Artistic-1.0 | GPLv1+
# https://layers.openembedded.org/layerindex/recipe/67518/
#`
PERL_TERMREADKEY_LICENSE = Artistic or GPL-1.0+ ?
PERL_TERMREADKEY_LICENSE_FILES = README
PERL_TERMREADKEY_DEPENDENCIES = host-perl-termreadkey
# At compile time, the makefile wants to use the compiled
# ./blib/arch/auto/Term/ReadKey/ReadKey.so , but when cross-compiling this
# fails. So build host variant and use that. The correct ReadKey.so file is
# still installed in TARGET_DIR.
# Adapted from the OpenEmbeded script at:
#
http://cgit.openembedded.org/meta-openembedded/tree/meta-perl/recipes-perl/libterm/libterm-readkey-perl_2.37.bb
#
define PERL_TERMREADKEY_POST_CONFIGURE_SED
$(SED)
"s#-I\$$(INST_ARCHLIB)#-I$(HOST_DIR)/lib/perl5/site_perl/$(PERL_VERSION)/$(PERL_ARCHNAME)#"
$(@D)/Makefile
endef
PERL_TERMREADKEY_POST_CONFIGURE_HOOKS += PERL_TERMREADKEY_POST_CONFIGURE_SED
$(eval $(perl-package))
$(eval $(host-perl-package))
--
Christopher McCrory
To the optimist, the glass is half full.
To the pessimist, the glass is half empty.
To the engineer, the glass is twice as big as it needs to be.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.busybox.net/pipermail/buildroot/attachments/20181108/eeb1b332/attachment-0002.html>
More information about the buildroot
mailing list