perl: remove redundant patches
PATCH v2 1/6 perl: remove redundant patches
From: "Arnout Vandecappelle (Essensium/Mind)" <[email protected]>
Now we are using perlcross, the patches to make perl work with qemu are redundant, so remove them.
---
v2: don't remove perl-fix-Module-Build.patch [Francois Perrad]
--- package/perl/perl-configure-qemu.patch | 53 -------------------------------- package/perl/perl-make-ext.patch | 24 --------------- package/perl/perl-mkppport.patch | 37 ---------------------- 3 files changed, 114 deletions(-) delete mode 100644 package/perl/perl-configure-qemu.patch delete mode 100644 package/perl/perl-make-ext.patch delete mode 100644 package/perl/perl-mkppport.patch
package/perl/perl-configure-qemu.patch deleted +0 -53
@@ -1,53 +0,0 @@ -Add qemu support - -see https://rt.perl.org/rt3//Public/Bug/Display.html?id=114798 - -Signed-off-by: Francois Perrad <[email protected]> - -Index: b/Configure -=================================================================== ---- a/Configure -+++ b/Configure -@@ -2837,6 +2837,9 @@ - ;; - *) echo "Using usrinc $usrinc." >&4 ;; - esac -+ case "$targetrun" in -+ *qemu*) targethost=dummy ;; -+ esac - case "$targethost" in - '') echo "Targethost not defined." >&4; croak=y ;; - *) echo "Using targethost $targethost." >&4 -@@ -2868,7 +2871,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 +2911,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 +5059,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:";
package/perl/perl-make-ext.patch deleted +0 -24
@@ -1,24 +0,0 @@ -Don't use RUN with make (only for perl) - -Signed-off-by: Francois Perrad <[email protected]> - -Index: b/make_ext.pl -=================================================================== ---- a/make_ext.pl -+++ b/make_ext.pl -@@ -458,11 +458,13 @@ - # Give makefile an opportunity to rewrite itself. - # reassure users that life goes on... - my @args = ('config', @$pass_through); -- system(@run, @make, @args) and print "@run @make @args failed, continuing anyway...\n"; -+# system(@run, @make, @args) and print "@run @make @args failed, continuing anyway...\n"; -+ system(@make, @args) and print "@make @args failed, continuing anyway...\n"; - } - my @targ = ($target, @$pass_through); - print "Making $target in $ext_dir\n at run @make @targ\n"; -- my $code = system(@run, @make, @targ); -+# my $code = system(@run, @make, @targ); -+ my $code = system(@make, @targ); - die "Unsuccessful make($ext_dir): code=$code" if $code != 0; - - chdir $return_dir || die "Cannot cd to $return_dir: $!";
package/perl/perl-mkppport.patch deleted +0 -37
@@ -1,37 +0,0 @@ -Add RUN - -Signed-off-by: Francois Perrad <[email protected]> - -Index: b/mkppport -=================================================================== ---- a/mkppport -+++ b/mkppport -@@ -1,6 +1,7 @@ - use strict; - use warnings; - -+use Config; - use Getopt::Long; - use File::Spec; - use File::Compare qw( compare ); -@@ -136,14 +137,18 @@ - #---------------------------------------------- - sub run - { -+ my @run = $Config{run}; -+ @run = () if not defined $run[0] or $run[0] eq ''; - my @args = ("-I" . File::Spec->catdir((File::Spec->updir) x 2, 'lib'), @_); - my $run = $perl =~ m/\s/ ? qq("$perl") : $perl; - for (@args) { - $_ = qq("$_") if $^O eq 'VMS' && /^[^"]/; - $run .= " $_"; - } -- print "running $run\n"; -- system $run and die "$run failed: $?\n"; -+# print "running $run\n"; -+# system $run and die "$run failed: $?\n"; -+ print "running ", join(' ', @run, $run), "\n"; -+ system join(' ', @run, $run) and die "@run $run failed: $?\n"; - } - - __END__
Signature · 1 line
1.7.10.4
PATCH v2 2/6 perl: substitute perlcross pod with perl-version-specific pod
From: "Arnout Vandecappelle (Essensium/Mind)" <[email protected]>
As suggested by Dan Pattison at ethertek ca.
--- package/perl/perl.mk | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-)
package/perl/perl.mk +9 -1
@@ -13,8 +13,11 @@ PERL_LICENSE_FILES = Artistic PERL_INSTALL_STAGING = YES PERL_CROSS_VERSION = 0.7 +PERL_CROSS_BASE_VERSION = 5.$(PERL_VERSION_MAJOR).0 PERL_CROSS_SITE = http://download.berlios.de/perlcross -PERL_CROSS_SOURCE = perl-5.$(PERL_VERSION_MAJOR).0-cross-$(PERL_CROSS_VERSION).tar.gz +PERL_CROSS_SOURCE = perl-$(PERL_CROSS_BASE_VERSION)-cross-$(PERL_CROSS_VERSION).tar.gz +PERL_CROSS_OLD_POD = perl$(subst .,,$(PERL_CROSS_BASE_VERSION))delta.pod +PERL_CROSS_NEW_POD = perl$(subst .,,$(PERL_VERSION))delta.pod # We use the perlcross hack to cross-compile perl. It should # be extracted over the perl sources, so we don't define that
@@ -32,6 +35,11 @@ define PERL_CROSS_EXTRACT endef PERL_POST_EXTRACT_HOOKS += PERL_CROSS_EXTRACT +define PERL_CROSS_SET_POD + $(SED) s/$(PERL_CROSS_OLD_POD)/$(PERL_CROSS_NEW_POD)/g $(@D)/Makefile +endef +PERL_POST_PATCH_HOOKS += PERL_CROSS_SET_POD + ifeq ($(BR2_PACKAGE_BERKELEYDB),y) PERL_DEPENDENCIES += berkeleydb endif
Signature · 1 line
1.7.10.4
PATCH v2 3/6 perl: remove the double configure hack
In reply to Arnout Vandecappelle (Essensium/Mind)From: "Arnout Vandecappelle (Essensium/Mind)" <[email protected]>
configure had to be called twice because with --mode=cross the miniperl-step failed. However, just leaving out the --mode parameter is sufficient to make it work. Since GNU_TARGET_NAME is always different from the host's tuple (it has -buildroot- in it), we can safely assume that the configure script will automatically enter cross mode.
Also fix a type in perladmin definition.
--- package/perl/perl.mk | 14 ++------------ 1 file changed, 2 insertions(+), 12 deletions(-)
package/perl/perl.mk +2 -12
@@ -47,19 +47,10 @@ ifeq ($(BR2_PACKAGE_GDBM),y) PERL_DEPENDENCIES += gdbm endif -# Normally, --mode=cross should automatically do the two steps -# below, but it doesn't work for some reason. -PERL_HOST_CONF_OPT = \ - --mode=buildmini \ - --target=$(GNU_TARGET_NAME) \ - --target-arch=$(GNU_TARGET_NAME) \ - --set-target-name=$(GNU_TARGET_NAME) - # We have to override LD, because an external multilib toolchain ld is not # wrapped to provide the required sysroot options. We also can't use ccache # because the configure script doesn't support it. PERL_CONF_OPT = \ - --mode=target \ --target=$(GNU_TARGET_NAME) \ --target-tools-prefix=$(TARGET_CROSS) \ --prefix=/usr \
@@ -71,7 +62,7 @@ PERL_CONF_OPT = \ -A myuname="Buildroot $(BR2_VERSION_FULL)" \ -A osname=linux \ -A osvers=$(LINUX_VERSION) \ - -A perlamdin=root + -A perladmin=root ifeq ($(shell expr $(PERL_VERSION_MAJOR) % 2), 1) PERL_CONF_OPT += -Dusedevel
@@ -87,8 +78,7 @@ PERL_CONF_OPT += --only-mod=$(subst $(space),$(comma),$(PERL_MODULES)) endif define PERL_CONFIGURE_CMDS - (cd $(@D); HOSTCC='$(HOSTCC_NOCACHE)' ./configure $(PERL_HOST_CONF_OPT)) - (cd $(@D); ./configure $(PERL_CONF_OPT)) + (cd $(@D); HOSTCC='$(HOSTCC_NOCACHE)' ./configure $(PERL_CONF_OPT)) $(SED) 's/UNKNOWN-/Buildroot $(BR2_VERSION_FULL) /' $(@D)/patchlevel.h endef
Signature · 1 line
1.7.10.4
PATCH v2 4/6 perl: fix configure step
In reply to Arnout Vandecappelle (Essensium/Mind)From: Francois Perrad <[email protected]>
Configure -A symbol=val generates a extra space in config.sh, which causes failure like this :
Building Module-Runtime-0.013
Unknown OS type ' linux' - using default settings
[Arnout: use -A define:foo instead of patching config.sh]
--- package/perl/perl.mk | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-)
package/perl/perl.mk +8 -8
@@ -55,14 +55,14 @@ PERL_CONF_OPT = \ --target-tools-prefix=$(TARGET_CROSS) \ --prefix=/usr \ -Dld="$(TARGET_CC_NOCCACHE)" \ - -A ccflags="$(TARGET_CFLAGS)" \ - -A ldflags="$(TARGET_LDFLAGS) -lm" \ - -A mydomain="" \ - -A myhostname="$(BR2_TARGET_GENERIC_HOSTNAME)" \ - -A myuname="Buildroot $(BR2_VERSION_FULL)" \ - -A osname=linux \ - -A osvers=$(LINUX_VERSION) \ - -A perladmin=root + -Dccflags="$(TARGET_CFLAGS)" \ + -Dldflags="$(TARGET_LDFLAGS) -lm" \ + -A define:mydomain="" \ + -A define:myhostname="$(BR2_TARGET_GENERIC_HOSTNAME)" \ + -A define:myuname="Buildroot $(BR2_VERSION_FULL)" \ + -A define:osname=linux \ + -A define:osvers=$(LINUX_VERSION) \ + -A define:perladmin=root ifeq ($(shell expr $(PERL_VERSION_MAJOR) % 2), 1) PERL_CONF_OPT += -Dusedevel
Signature · 1 line
1.7.10.4
PATCH v2 5/6 cpanminus: requires host-qemu
In reply to Arnout Vandecappelle (Essensium/Mind)From: "Arnout Vandecappelle (Essensium/Mind)" <[email protected]>
Must also disable all non-supported architectures, including x86 (which doesn't have a working fork()).
---
It still only works half the time. For instance, in one arm configuration I have qemu sitting there consuming 100% CPU without any output, system calls, or nothing...
--- package/cpanminus/Config.in | 11 +++++++++++ package/cpanminus/cpanminus.mk | 2 +- 2 files changed, 12 insertions(+), 1 deletion(-)
package/cpanminus/Config.in +11 -0
@@ -1,5 +1,16 @@ config BR2_PACKAGE_CPANMINUS bool "cpanminus" + # host-qemu doesn't work for the following platforms + depends on !BR2_avr32 + depends on !BR2_bfin + depends on !BR2_sh2 + depends on !BR2_sh2a + depends on !BR2_sh3 + depends on !BR2_sh3eb + depends on !BR2_sh64 + # host-qemu doesn't support system() on the following platforms + depends on !BR2_i386 + depends on !BR2_x86_64 help cpanminus is a script to get, unpack, build and install Perl modules from CPAN.
package/cpanminus/cpanminus.mk +1 -1
@@ -7,7 +7,7 @@ CPANMINUS_VERSION = 1.5018 CPANMINUS_SOURCE = miyagawa-cpanminus-$(CPANMINUS_VERSION)-0-gee6cd30.tar.gz CPANMINUS_SITE = https://github.com/miyagawa/cpanminus/tarball/$(CPANMINUS_VERSION) -CPANMINUS_DEPENDENCIES = perl $(call qstrip,$(BR2_PACKAGE_CPANMINUS_NATIVE_DEPENDENCIES)) +CPANMINUS_DEPENDENCIES = host-qemu perl $(call qstrip,$(BR2_PACKAGE_CPANMINUS_NATIVE_DEPENDENCIES)) CPANMINUS_RUN_PERL = $(QEMU_USER) $(STAGING_DIR)/usr/bin/perl CPANMINUS_ARCHNAME = $(shell $(CPANMINUS_RUN_PERL) -MConfig -e "print Config->{archname}")
Signature · 1 line
1.7.10.4
PATCH v2 5/6 cpanminus: requires host-qemu
Arnout,
Quoted 10 lines · Arnout Vandecappelle (Essensium/Mind)
From: "Arnout Vandecappelle (Essensium/Mind)" <[email protected]>
Must also disable all non-supported architectures, including x86 (which doesn't have a working
fork()).---
It still only works half the time. For instance, in one arm configuration I have qemu sitting there consuming 100% CPU without any output, system calls, or nothing...
From my point of view, cpanminus should be marked as broken, or even removed unless another solution that qemu is found. The usage of host-qemu simply doesn't work: if the kernel headers used for the toolchain built by Buildroot are newer than the kernel version on the build machine, it will break... so it really isn't a viable solution.
Thanks,
Thomas
Signature · 4 lines
Thomas Petazzoni, Free Electrons Kernel, drivers, real-time and embedded Linux development, consulting, training and support. http://free-electrons.com
PATCH v2 5/6 cpanminus: requires host-qemu
Quoted 15 lines · Thomas Petazzoni
Arnout,
Quoted 10 lines · Arnout Vandecappelle (Essensium/Mind)
From: "Arnout Vandecappelle (Essensium/Mind)"<[email protected]>
Must also disable all non-supported architectures, including x86 (which doesn't have a working
fork()).Signed-off-by Arnout Vandecappelle (Essensium/Mind)<[email protected]>---
It still only works half the time. For instance, in one arm configuration I have qemu sitting there consuming 100% CPU without any output, system calls, or nothing...
Quoted 5 lines
From my point of view, cpanminus should be marked as broken, or even
removed unless another solution that qemu is found. The usage of host-qemu simply doesn't work: if the kernel headers used for the toolchain built by Buildroot are newer than the kernel version on the build machine, it will break... so it really isn't a viable solution.
Although I agree, I leave it to Peter to make the call - a removal patch is
rather trivial. Until then, the patches are there in case he decides to keep cpanminus.
Regards,
Arnout
Signature · 6 lines
Arnout Vandecappelle arnout at mind be Senior Embedded Software Architect +32-16-286540 Essensium/Mind http://www.mind.be G.Geenslaan 9, 3001 Leuven, Belgium BE 872 984 063 RPR Leuven LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle GPG fingerprint: 7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
PATCH v2 6/6 cpanminus: fix installation paths
In reply to Arnout Vandecappelle (Essensium/Mind)From: "Arnout Vandecappelle (Essensium/Mind)" <[email protected]>
perlcross seems to set the installation paths differently than perl's Configure, so adapt the reference to these paths in cpanminus.
---
v2: integrated Francois' patch, merged with this one
--- package/cpanminus/cpanminus.mk | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-)
package/cpanminus/cpanminus.mk +5 -5
@@ -11,8 +11,8 @@ CPANMINUS_DEPENDENCIES = host-qemu perl $(call qstrip,$(BR2_PACKAGE_CPANMINUS_NA CPANMINUS_RUN_PERL = $(QEMU_USER) $(STAGING_DIR)/usr/bin/perl CPANMINUS_ARCHNAME = $(shell $(CPANMINUS_RUN_PERL) -MConfig -e "print Config->{archname}") -CPANMINUS_PERL_LIB = $(STAGING_DIR)/usr/lib/perl5/$(PERL_VERSION) -CPANMINUS_PERL_SITELIB = $(TARGET_DIR)/usr/lib/perl5/site_perl/$(PERL_VERSION) +CPANMINUS_PERL_LIB = $(STAGING_DIR)/usr/lib/perl +CPANMINUS_PERL_SITELIB = $(TARGET_DIR)/usr/lib/perl CPANMINUS_PERL_ARCHLIB = $(CPANMINUS_PERL_LIB)/$(CPANMINUS_ARCHNAME) CPANMINUS_PERL_SITEARCH = $(CPANMINUS_PERL_SITELIB)/$(CPANMINUS_ARCHNAME) CPANMINUS_PERL5LIB = $(CPANMINUS_PERL_SITEARCH):$(CPANMINUS_PERL_SITELIB):$(CPANMINUS_PERL_ARCHLIB):$(CPANMINUS_PERL_LIB)
@@ -27,8 +27,8 @@ define CPANMINUS_INSTALL_TARGET_CMDS echo "PERL5LIB=$(CPANMINUS_PERL5LIB) $(CPANMINUS_RUN_PERL) \"\$$@\"" >>$(@D)/run_perl chmod +x $(@D)/run_perl PERL5LIB=$(CPANMINUS_PERL5LIB) \ - PERL_MM_OPT="DESTDIR=$(TARGET_DIR) PERL=$(@D)/run_perl PERL_LIB=$(CPANMINUS_PERL_LIB) PERL_ARCHLIB=$(CPANMINUS_PERL_ARCHLIB)" \ - PERL_MB_OPT="--destdir $(TARGET_DIR)" \ + PERL_MM_OPT="DESTDIR=$(CPANMINUS_PERL_SITELIB) PERL=$(@D)/run_perl PERL_LIB=$(CPANMINUS_PERL_LIB) PERL_ARCHLIB=$(CPANMINUS_PERL_ARCHLIB)" \ + PERL_MB_OPT="--destdir $(CPANMINUS_PERL_SITELIB)" \ RUN_PERL="$(@D)/run_perl" \ $(CPANMINUS_RUN_PERL) $(@D)/cpanm \ --perl=$(@D)/run_perl \
@@ -36,7 +36,7 @@ define CPANMINUS_INSTALL_TARGET_CMDS --no-man-pages \ $(CPANMINUS_MIRROR) \ $(call qstrip,$(BR2_PACKAGE_CPANMINUS_MODULES)) - find $(CPANMINUS_PERL_SITEARCH) -type f -name *.bs -exec rm -f {} \; + -find $(CPANMINUS_PERL_SITEARCH) -type f -name *.bs -exec rm -f {} \; endef else define CPANMINUS_INSTALL_TARGET_CMDS
Signature · 1 line
1.7.10.4