[Buildroot] [PATCH v8 02/11] perl: new package
François Perrad
francois.perrad at gadz.org
Sat Oct 6 13:29:46 UTC 2012
2012/10/4 Thomas Petazzoni <thomas.petazzoni at free-electrons.com>:
> François,
>
> On Tue, 25 Sep 2012 19:18:18 +0200, Francois Perrad wrote:
>
>> diff --git a/package/perl/Config.in b/package/perl/Config.in
>> new file mode 100644
>> index 0000000..6b7a986
>> --- /dev/null
>> +++ b/package/perl/Config.in
>> @@ -0,0 +1,9 @@
>> +config BR2_PACKAGE_PERL
>> + bool "perl"
>> + select BR2_PACKAGE_HOST_QEMU
>
> As per my suggestion on the host-qemu package, you can remove this
> select statement.
>
>> + help
>> + Larry Wall's Practical Extraction and Report Language
>> + An interpreted scripting language, known among some as "Unix's Swiss
>> + Army Chainsaw".
>> +
>> + http://www.perl.org/
>> diff --git a/package/perl/perl-configure-qemu.patch b/package/perl/perl-configure-qemu.patch
>> new file mode 100644
>> index 0000000..921ac0b
>> --- /dev/null
>> +++ b/package/perl/perl-configure-qemu.patch
>> @@ -0,0 +1,43 @@
>> +Add qemu support
>> +
>> +see https://rt.perl.org/rt3//Public/Bug/Display.html?id=114798
>> +
>> +Signed-off-by: Francois Perrad <francois.perrad at gadz.org>
>> +
>> +Index: b/Configure
>> +===================================================================
>> +--- a/Configure
>> ++++ b/Configure
>> +@@ -2868,7 +2868,7 @@
>> + case "$targetfrom" in
>> + '') targetfrom=scp ;;
>> + esac
>> +- run=$run-$targetrun
>> ++ run=$run-`basename $targetrun`
>> + to=$to-$targetto
>> + from=$from-$targetfrom
>> + case "$targetdir" in
>> +@@ -2908,6 +2908,14 @@
>> + $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
>> + EOF
>> + ;;
>> ++ *qemu*)
>> ++ to=:
>> ++ from=:
>> ++ cat >$run <<EOF
>> ++#!/bin/sh
>> ++$targetrun -L $qemulib "\$@"
>> ++EOF
>> ++ ;;
>> + *) echo "Unknown targetrun '$targetrun'" >&4
>> + exit 1
>> + ;;
>> +@@ -5048,7 +5056,7 @@
>> + echo " ";
>> + echo "Checking if your compiler accepts $flag" 2>&1;
>> + echo "int main(void) { return 0; }" > gcctest.c;
>> +-if $cc -O2 $flag -o gcctest gcctest.c 2>gcctest.out && ./gcctest; then
>> ++if $cc -O2 $flag -o gcctest gcctest.c 2>gcctest.out && $run ./gcctest; then
>> + echo "Yes, it does." 2>&1;
>> + if $test -s gcctest.out ; then
>> + echo "But your platform does not like it:";
>> diff --git a/package/perl/perl-make-ext.patch b/package/perl/perl-make-ext.patch
>> new file mode 100644
>> index 0000000..e0195e7
>> --- /dev/null
>> +++ b/package/perl/perl-make-ext.patch
>> @@ -0,0 +1,24 @@
>> +Don't use RUN with make (only for perl)
>> +
>> +Signed-off-by: Francois Perrad <francois.perrad at gadz.org>
>
> I would really to see a bit more details in the patch descriptions.
> This is probably enough for you to understand what's going on, but not
> for people reviewing your code, or people that will end up maintaining
> this if you move away from Buildroot :-)
>
>> diff --git a/package/perl/perl.mk b/package/perl/perl.mk
>> new file mode 100644
>> index 0000000..7d60ca7
>> --- /dev/null
>> +++ b/package/perl/perl.mk
>> @@ -0,0 +1,99 @@
>> +#############################################################
>> +#
>> +# perl
>> +#
>> +#############################################################
>> +
>> +PERL_VERSION_MAJOR = 16
>> +PERL_VERSION = 5.$(PERL_VERSION_MAJOR).1
>> +PERL_SITE = http://www.cpan.org/src/5.0
>> +PERL_SOURCE = perl-$(PERL_VERSION).tar.bz2
>> +PERL_LICENSE = Artistic
>> +PERL_LICENSE_FILES = Artistic
>> +PERL_INSTALL_STAGING = YES
>> +PERL_DEPENDENCIES = host-qemu
>> +
>> +ifeq ($(shell expr $(PERL_VERSION_MAJOR) % 2), 1)
>> + PERL_USE_DEVEL=-Dusedevel
>> +endif
>> +
>> +ifneq ($(BR2_LARGEFILE),y)
>> + PERL_NO_LARGEFILE=-Uuselargefiles
>> +endif
>> +
>> +PERL_ARCH=$(ARCH)
>> +ifeq ($(PERL_ARCH),i686)
>> + PERL_ARCH=i386
>> +endif
>> +PERL_QEMU_USER_MODE=$(HOST_DIR)/usr/bin/qemu-$(PERL_ARCH)
>
> Same comments as the QEMU_ARCH definition. And it should clearly be
> shared with the host-qemu package.
I agree with you.
>
>> +define PERL_CONFIGURE_CMDS
>> + rm -f $(@D)/config.sh
>> + (cd $(@D); ./Configure -des \
>> + -Dusecrosscompile \
>> + -Dtargetrun=$(PERL_QEMU_USER_MODE) \
>> + -Dqemulib=$(STAGING_DIR) \
>> + -Dtargethost=dummy \
>> + -Dar="$(TARGET_AR)" \
>> + -Dcc="$(TARGET_CC)" \
>> + -Dcpp="$(TARGET_CC)" \
>> + -Dld="$(TARGET_LD)" \
>> + -Dnm="$(TARGET_NM)" \
>> + -Dranlib="$(TARGET_RANLIB)" \
>> + -Dccflags="$(TARGET_CFLAGS)" \
>> + -Dldflags="$(TARGET_LDFLAGS) -l gcc_s" \
>> + -Dlddlflags="-shared" \
>> + -Dlibc=$(TARGET_HOST)/usr/$(GNU_TARGET_NAME)/sysroot/lib/libc.so \
>
> Doh, what is target host? Why aren't you simply using:
>
> -Dlibc="$(STAGING_DIR)/lib/libc.so" ?
Ok, fixed.
>
>> + -Duseshrplib \
>> + -Dprefix=/usr \
>> + -Uoptimize \
>> + $(PERL_USE_DEVEL) \
>> + $(PERL_NO_LARGEFILE))
>> + echo "# patched values" >>$(@D)/config.sh
>> + $(SED) '/^myarchname=/d' \
>> + -e '/^mydomain=/d' \
>> + -e '/^myhostname=/d' \
>> + -e '/^myuname=/d' \
>> + -e '/^osname=/d' \
>> + -e '/^osvers=/d' \
>> + -e '/^perladmin=/d' \
>> + $(@D)/config.sh
>> + echo "myarchname='$(GNU_TARGET_NAME)'" >>$(@D)/config.sh
>> + echo "mydomain=''" >>$(@D)/config.sh
>> + echo "myhostname='$(BR2_TARGET_GENERIC_HOSTNAME)'" >>$(@D)/config.sh
>> + echo "myuname='Buildroot $(BR2_VERSION_FULL)'" >>$(@D)/config.sh
>> + echo "osname='linux'" >>$(@D)/config.sh
>> + echo "osvers='$(BR2_LINUX_KERNEL_VERSION)'" >>$(@D)/config.sh
>> + echo "perladmin='root'" >>$(@D)/config.sh
>> + (cd $(@D); ./Configure -S)
>> + cp $(@D)/config.h $(@D)/xconfig.h
>> + $(SED) 's/UNKNOWN-/Buildroot $(BR2_VERSION_FULL) /' $(@D)/patchlevel.h
>> +endef
>> +
>> +define PERL_BUILD_CMDS
>> + echo "#!/bin/sh" > $(@D)/Cross/miniperl
>> + echo "$(PERL_QEMU_USER_MODE) $(@D)/miniperl \"\$$@\"" >>$(@D)/Cross/miniperl
>> + chmod +x $(@D)/Cross/miniperl
>> + PERL_MM_OPT="PERL=$(@D)/Cross/miniperl" \
>> + $(MAKE) -C $(@D) all
>> +endef
>> +
>> +define PERL_INSTALL_STAGING_CMDS
>> + $(MAKE) INSTALL_DEPENDENCE= \
>> + INSTALLFLAGS= \
>> + DESTDIR="$(STAGING_DIR)" \
>> + -C $(@D) install.perl
>> +endef
>> +
>> +define PERL_INSTALL_TARGET_CMDS
>> + $(MAKE) INSTALL_DEPENDENCE= \
>> + INSTALLFLAGS=-p \
>> + DESTDIR="$(TARGET_DIR)" \
>> + -C $(@D) install.perl
>> +endef
>> +
>> +define PERL_CLEAN_CMDS
>> + -$(MAKE) -C $(@D) clean
>> +endef
>> +
>> +$(eval $(generic-package))
>
> That's all I have for now on this patch.
>
> Thomas
> --
> Thomas Petazzoni, Free Electrons
> Kernel, drivers, real-time and embedded Linux
> development, consulting, training and support.
> http://free-electrons.com
> _______________________________________________
> buildroot mailing list
> buildroot at busybox.net
> http://lists.busybox.net/mailman/listinfo/buildroot
More information about the buildroot
mailing list