Skip to contentSkip to conversation

perl: remove redundant patches

PATCH Superseded Arnout Vandecappelle (Essensium/Mind) 2 participants 8 messages Nov 13, 2012

v2 of 3 Superseded Latest is v3 →

lore
Share & tools
lore
#0 lore raw

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
deleted file mode 100644
index c2d6b92..0000000
@@ -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
deleted file mode 100644
index e0195e7..0000000
@@ -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
deleted file mode 100644
index 97f27a2..0000000
@@ -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
#1 lore raw

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
index f3c73dd..b84917b 100644
@@ -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
#2 lore raw

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
index b84917b..0893eb5 100644
@@ -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
#3 lore raw

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
index 0893eb5..391047d 100644
@@ -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
#4 lore raw

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
index b8b39dc..cf93a7e 100644
@@ -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
index d3a338b..af35e93 100644
@@ -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
#5 lore raw

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
#6 lore raw

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()).

---
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
#7 lore raw

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.

[Francois: install into /usr/lib/perl]

---
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
index af35e93..e7e3f29 100644
@@ -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