Skip to contentSkip to conversation

microperl: add license info

PATCH New Francois Perrad 3 participants 16 messages Aug 15, 2012 – Aug 20, 2012

lore
Share & tools
lore
#0 lore raw

PATCH 1/12 microperl: add license info

---
 package/microperl/microperl.mk |    2 ++
 1 file changed, 2 insertions(+)
package/microperl/microperl.mk +2 -0
index fbf319c..b2a912a 100644
@@ -7,6 +7,8 @@
 MICROPERL_VERSION = 5.12.4
 MICROPERL_SITE = http://www.cpan.org/src/5.0
 MICROPERL_SOURCE = perl-$(MICROPERL_VERSION).tar.bz2
+MICROPERL_LICENSE = Artistic
+MICROPERL_LICENSE_FILES = Artistic
 MICROPERL_DEPENDENCIES = host-microperl
 MICROPERL_MODS_DIR = /usr/lib/perl5/$(MICROPERL_VERSION)
 MICROPERL_ARCH_DIR = $(MICROPERL_MODS_DIR)/$(GNU_TARGET_NAME)
Signature · 1 line
1.7.9.5
#1 lore raw

PATCH 2/12 microperl: how to test it ?

---
 package/microperl/Config.in    |    9 +++++++++
 package/microperl/microperl.mk |   12 ++++++++++++
 2 files changed, 21 insertions(+)
package/microperl/Config.in +9 -0
index 256e271..54df7e2 100644
@@ -15,6 +15,15 @@ config BR2_PACKAGE_MICROPERL_MODULES
 	  Module dependencies are not automatic so check your needs.
 	  You can't use XS modules like IO.
 
+config BR2_PACKAGE_MICROPERL_INSTALL_TESTSUITE
+	bool "install testsuite"
+	help
+	  Install the test suite on target.
+		# cd /root/microperl/t
+		# rm -f perl
+		# ln -s /usr/bin/microperl perl
+		# ./perl TEST base/*.t cmd/*.t
+
 menu "module bundles"
 
 config BR2_PACKAGE_MICROPERL_BUNDLE_CGI
package/microperl/microperl.mk +12 -0
index b2a912a..0269b3f 100644
@@ -144,8 +144,20 @@ define MICROPERL_INSTALL_TARGET_CMDS
 	# Remove test files
 	find $(TARGET_DIR)/$(MICROPERL_MODS_DIR) -type f -name *.t \
 		-exec rm -f {} \;
+	$(MICROPERL_INSTALL_TESTSUITE)
 endef
 
+ifdef BR2_PACKAGE_MICROPERL_INSTALL_TESTSUITE
+define MICROPERL_INSTALL_TESTSUITE
+	$(INSTALL) -m644 -D $(@D)/t/TEST                $(TARGET_DIR)/root/microperl/t/TEST
+	$(INSTALL) -m644 -D $(@D)/t/harness             $(TARGET_DIR)/root/microperl/t/harness
+	cp -r $(@D)/lib         $(TARGET_DIR)/root/microperl/lib
+	cp -r $(@D)/t/base      $(TARGET_DIR)/root/microperl/t/base
+	cp -r $(@D)/t/cmd       $(TARGET_DIR)/root/microperl/t/cmd
+	echo "BEGIN { chdir 't' if -d 't'; @INC = ('../lib', '.'); } 1;" > $(TARGET_DIR)/root/microperl/TestInit.pm
+endef
+endif
+
 define MICROPERL_UNINSTALL_TARGET_CMDS
 	rm -f $(TARGET_DIR)/usr/bin/perl
 	rm -f $(TARGET_DIR)/usr/bin/microperl
Signature · 1 line
1.7.9.5
#2 lore raw

PATCH 2/12 microperl: how to test it ?

Le Wed, 15 Aug 2012 16:38:24 +0200,
Francois Perrad <[email protected]> a ?crit :

package/microperl/microperl.mk define MICROPERL_INSTALL_TARGET_CMDS · line 152

Quoted 3 lines
package/microperl/microperl.mk +3 -0
+ifdef BR2_PACKAGE_MICROPERL_INSTALL_TESTSUITE
+define MICROPERL_INSTALL_TESTSUITE
+	$(INSTALL) -m644 -D $(@D)/t/TEST                $(TARGET_DIR)/root/microperl/t/TEST

Isn't this one a script that should be installed 755?

package/microperl/microperl.mk define MICROPERL_INSTALL_TARGET_CMDS · line 156

Quoted 4 lines
package/microperl/microperl.mk +4 -0
+	$(INSTALL) -m644 -D $(@D)/t/harness             $(TARGET_DIR)/root/microperl/t/harness
+	cp -r $(@D)/lib         $(TARGET_DIR)/root/microperl/lib
+	cp -r $(@D)/t/base      $(TARGET_DIR)/root/microperl/t/base
+	cp -r $(@D)/t/cmd       $(TARGET_DIR)/root/microperl/t/cmd

Is /root/ really the right place to install this? Isn't some /usr/share/perl/ or /usr/lib/perl/ a better place?

package/microperl/microperl.mk define MICROPERL_INSTALL_TARGET_CMDS · line 157

Quoted 1 line
package/microperl/microperl.mk +1 -0
+	echo "BEGIN { chdir 't' if -d 't'; @INC = ('../lib', '.'); } 1;" > $(TARGET_DIR)/root/microperl/TestInit.pm

I think I would prefer a TestInit.pm file added in package/microperl/ rather than echo'ing it here.

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

PATCH 2/12 microperl: how to test it ?

rem1: microperl is not fully supported by the Perl community. the build in Perl 5.16 serie is broken, see
http://www.nntp.perl.org/group/perl.perl5.porters/2012/08/msg190323.html
people ask about its interest, see
http://www.nntp.perl.org/group/perl.perl5.porters/2012/08/msg190422.html

rem2: in this commit, I introduce a testing scheme, and I reuse it for perl & miniperl packages.
I want a reproducible and documented recipe for run the perl/miniperl/microerl test suite.

2012/8/15 Thomas Petazzoni <[email protected]>:

Quoted 8 lines

Le Wed, 15 Aug 2012 16:38:24 +0200,
Francois Perrad <[email protected]> a ?crit :

package/microperl/microperl.mk define MICROPERL_INSTALL_TARGET_CMDS · line 152

Quoted 3 lines
package/microperl/microperl.mk +3 -0
+ifdef BR2_PACKAGE_MICROPERL_INSTALL_TESTSUITE
+define MICROPERL_INSTALL_TESTSUITE
+     $(INSTALL) -m644 -D $(@D)/t/TEST                $(TARGET_DIR)/root/microperl/t/TEST

Isn't this one a script that should be installed 755?

Intentional. The help string in Config.in describes how to run the test suite.

Quoted 8 lines

package/microperl/microperl.mk define MICROPERL_INSTALL_TARGET_CMDS · line 156

Quoted 5 lines
package/microperl/microperl.mk +4 -0
+     $(INSTALL) -m644 -D $(@D)/t/harness             $(TARGET_DIR)/root/microperl/t/harness
+     cp -r $(@D)/lib         $(TARGET_DIR)/root/microperl/lib
+     cp -r $(@D)/t/base      $(TARGET_DIR)/root/microperl/t/base
+     cp -r $(@D)/t/cmd       $(TARGET_DIR)/root/microperl/t/cmd

Is /root/ really the right place to install this? Isn't some /usr/share/perl/ or /usr/lib/perl/ a better place?

On host-dev, testing in done in the build tree, so the test suite is never installed.
With cross-dev, a part of the build tree must be copied on target in order to run test; but you do this only during porting or debugging the package.
I choice the /root directory, because it is an unusual location. If you find these files in /root directory in a final image, you see your mistake.
I do not want to pollute /usr with test suite.
(I try the /tmp directory, but it doesn't work)

Quoted 5 lines
Quoted 2 lines

+ echo "BEGIN { chdir 't' if -d 't'; @INC = ('../lib', '.'); } 1;" > $(TARGET_DIR)/root/microperl/TestInit.pm

I think I would prefer a TestInit.pm file added in package/microperl/ rather than echo'ing it here.

TestInit.pm is a preamble for each test, and a 'standard' version is included in the Perl distribution.
But this 'standard' version is too convoluted (for all OS, for the whole test suite).
This one-liner version is enough for microperl test suite and make debugging more easy.

I don't want a patch which will never merged in upstream.

Fran?ois

Quoted 13 lines

Thanks!

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

#4 lore raw

PATCH 2/12 microperl: how to test it ?

I'll send a new patch serie which supercedes this one.

Fran?ois

2012/8/16 Fran?ois Perrad <[email protected]>:

Quoted 73 lines

rem1: microperl is not fully supported by the Perl community. the build in Perl 5.16 serie is broken, see
http://www.nntp.perl.org/group/perl.perl5.porters/2012/08/msg190323.html
people ask about its interest, see
http://www.nntp.perl.org/group/perl.perl5.porters/2012/08/msg190422.html

rem2: in this commit, I introduce a testing scheme, and I reuse it for perl & miniperl packages.
I want a reproducible and documented recipe for run the perl/miniperl/microerl test suite.

2012/8/15 Thomas Petazzoni <[email protected]>:

Quoted 8 lines

Le Wed, 15 Aug 2012 16:38:24 +0200,
Francois Perrad <[email protected]> a ?crit :

package/microperl/microperl.mk define MICROPERL_INSTALL_TARGET_CMDS · line 152

Quoted 3 lines
package/microperl/microperl.mk +3 -0
+ifdef BR2_PACKAGE_MICROPERL_INSTALL_TESTSUITE
+define MICROPERL_INSTALL_TESTSUITE
+     $(INSTALL) -m644 -D $(@D)/t/TEST                $(TARGET_DIR)/root/microperl/t/TEST

Isn't this one a script that should be installed 755?

Intentional. The help string in Config.in describes how to run the test suite.

Quoted 8 lines

package/microperl/microperl.mk define MICROPERL_INSTALL_TARGET_CMDS · line 156

Quoted 5 lines
package/microperl/microperl.mk +4 -0
+     $(INSTALL) -m644 -D $(@D)/t/harness             $(TARGET_DIR)/root/microperl/t/harness
+     cp -r $(@D)/lib         $(TARGET_DIR)/root/microperl/lib
+     cp -r $(@D)/t/base      $(TARGET_DIR)/root/microperl/t/base
+     cp -r $(@D)/t/cmd       $(TARGET_DIR)/root/microperl/t/cmd

Is /root/ really the right place to install this? Isn't some /usr/share/perl/ or /usr/lib/perl/ a better place?

On host-dev, testing in done in the build tree, so the test suite is never installed.
With cross-dev, a part of the build tree must be copied on target in order to run test; but you do this only during porting or debugging the package.
I choice the /root directory, because it is an unusual location. If you find these files in /root directory in a final image, you see your mistake.
I do not want to pollute /usr with test suite.
(I try the /tmp directory, but it doesn't work)

Quoted 5 lines
Quoted 2 lines

+ echo "BEGIN { chdir 't' if -d 't'; @INC = ('../lib', '.'); } 1;" > $(TARGET_DIR)/root/microperl/TestInit.pm

I think I would prefer a TestInit.pm file added in package/microperl/ rather than echo'ing it here.

TestInit.pm is a preamble for each test, and a 'standard' version is included in the Perl distribution.
But this 'standard' version is too convoluted (for all OS, for the whole test suite).
This one-liner version is enough for microperl test suite and make debugging more easy.

I don't want a patch which will never merged in upstream.

Fran?ois

Quoted 13 lines

Thanks!

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

#5 lore raw

PATCH 3/12 microperl: build extensions at build time

In reply to Francois Perrad

just set PERL5LIB in build tree
optim: symlink only one time, before the loop

---
 package/microperl/microperl.mk |    9 +++++----
 1 file changed, 5 insertions(+), 4 deletions(-)
package/microperl/microperl.mk +5 -4
index 0269b3f..f2a43c0 100644
@@ -97,6 +97,7 @@ define MICROPERL_CONFIGURE_CMDS
 	cp -f $(@D)/uconfig.sh $(@D)/config.sh
 	echo "ccname='$(TARGET_CC)'" >>$(@D)/config.sh
 	echo "PERL_CONFIG_SH=true" >>$(@D)/config.sh
+	touch $(@D)/config.h    # avoid warning : out of date
 	cd $(@D) ; $(HOST_DIR)/usr/bin/perl make_patchnum.pl ; \
 	$(HOST_DIR)/usr/bin/perl configpm
 endef
@@ -106,16 +107,17 @@ define MICROPERL_BUILD_CMDS
 		CC="$(HOSTCC)" bitcount.h
 	$(MAKE) -f Makefile.micro -C $(@D) \
 		CC="$(TARGET_CC)" OPTIMIZE="$(TARGET_CFLAGS)"
+	$(MICROPERL_BUILD_EXTENSIONS)
 endef
 
 # Some extensions don't need a build run
 # We try to build anyway to avoid a huge black list
 # Just ignore make_ext.pl warning/errors
 define MICROPERL_BUILD_EXTENSIONS
+	cd $(@D); rm -f miniperl; ln -s $(HOST_DIR)/usr/bin/perl miniperl;
 	for i in $(MICROPERL_MODS); do \
-	cd $(@D); ln -sf $(HOST_DIR)/usr/bin/perl miniperl; \
-		PERL5LIB=$(TARGET_DIR)/$(MICROPERL_ARCH_DIR) \
-		$(HOST_DIR)/usr/bin/perl make_ext.pl MAKE="$(MAKE)" --nonxs \
+	cd $(@D); PERL5LIB=lib \
+		./miniperl make_ext.pl MAKE="$(MAKE)" --nonxs \
 		`echo $$i|sed -e 's/.pm//'`; \
 	done
 endef
@@ -131,7 +133,6 @@ define MICROPERL_INSTALL_TARGET_CMDS
 		$(INSTALL) -m 0644 -D $(@D)/lib/$$i \
 			$(TARGET_DIR)/$(MICROPERL_MODS_DIR)/$$i; \
 	done
-	$(MICROPERL_BUILD_EXTENSIONS)
 	for i in $(MICROPERL_MODS); do \
 		j=`echo $$i|cut -d : -f 1` ; \
 		if [ -d $(@D)/lib/$$j ] ; then \
Signature · 1 line
1.7.9.5
#6 lore raw

PATCH 4/12 microperl: bump version to 5.14.2

In reply to Francois Perrad

patches have been merged in upstream

---
 .../microperl/microperl-no-signal-handlers.patch   |   22 ---------
 package/microperl/microperl-uudmap.patch           |   47 --------------------
 package/microperl/microperl.mk                     |    6 ++-
 3 files changed, 4 insertions(+), 71 deletions(-)
 delete mode 100644 package/microperl/microperl-no-signal-handlers.patch
 delete mode 100644 package/microperl/microperl-uudmap.patch
package/microperl/microperl-no-signal-handlers.patch deleted +0 -22
deleted file mode 100644
index 3c9aa41..0000000
@@ -1,22 +0,0 @@
-Backport of http://perl5.git.perl.org/perl.git/commitdiff/01d65469392dfc0a?hp=a82b5f080d91ffe184d8ac4795ac71e72e612c2f
-
-Signed-off-by: Gustavo Zacarias <[email protected]>
-
-diff -Nura perl-5.12.3/miniperlmain.c perl-5.12.3-nosig/miniperlmain.c
---- perl-5.12.3/miniperlmain.c	2011-01-09 17:20:57.000000000 -0300
-+++ perl-5.12.3-nosig/miniperlmain.c	2011-04-14 10:16:53.564639438 -0300
-@@ -116,12 +116,14 @@
-     if (!exitstatus)
-         perl_run(my_perl);
- 
-+#ifndef PERL_MICRO
-     /* Unregister our signal handler before destroying my_perl */
-     for (i = 0; PL_sig_name[i]; i++) {
- 	if (rsignal_state(PL_sig_num[i]) == (Sighandler_t) PL_csighandlerp) {
- 	    rsignal(PL_sig_num[i], (Sighandler_t) SIG_DFL);
- 	}
-     }
-+#endif
- 
-     exitstatus = perl_destruct(my_perl);
- 
package/microperl/microperl-uudmap.patch deleted +0 -47

47 lines not on this page · raw message

package/microperl/microperl.mk +4 -2
index f2a43c0..595e1fa 100644
@@ -4,7 +4,8 @@
 #
 #############################################################
 
-MICROPERL_VERSION = 5.12.4
+MICROPERL_VERSION_MAJOR = 14
+MICROPERL_VERSION = 5.$(MICROPERL_VERSION_MAJOR).2
 MICROPERL_SITE = http://www.cpan.org/src/5.0
 MICROPERL_SOURCE = perl-$(MICROPERL_VERSION).tar.bz2
 MICROPERL_LICENSE = Artistic
@@ -70,7 +71,7 @@ define MICROPERL_CONFIGURE_CMDS
 		-e '/^osname=/d' -e '/^u32type=/d' -e '/^d_archlib=/d' \
 		-e '/^d_memset=/d' -e '/^i_fcntl=/d' -e '/^useperlio=/d' \
 		-e '/^need_va_copy=/d' $(@D)/uconfig.sh
-	$(SED) 's/5.12/$(MICROPERL_VERSION)/' $(@D)/uconfig.sh
+	$(SED) 's/5\.$(MICROPERL_VERSION_MAJOR)/$(MICROPERL_VERSION)/' $(@D)/uconfig.sh
 	echo "archlib='$(MICROPERL_ARCH_DIR)'" >>$(@D)/uconfig.sh
 	echo "archlibexp='$(MICROPERL_ARCH_DIR)'" >>$(@D)/uconfig.sh
 	echo "d_archlib='define'" >>$(@D)/uconfig.sh
@@ -152,6 +153,7 @@ ifdef BR2_PACKAGE_MICROPERL_INSTALL_TESTSUITE
 define MICROPERL_INSTALL_TESTSUITE
 	$(INSTALL) -m644 -D $(@D)/t/TEST                $(TARGET_DIR)/root/microperl/t/TEST
 	$(INSTALL) -m644 -D $(@D)/t/harness             $(TARGET_DIR)/root/microperl/t/harness
+	$(INSTALL) -m644 -D $(@D)/t/test.pl             $(TARGET_DIR)/root/microperl/t/test.pl
 	cp -r $(@D)/lib         $(TARGET_DIR)/root/microperl/lib
 	cp -r $(@D)/t/base      $(TARGET_DIR)/root/microperl/t/base
 	cp -r $(@D)/t/cmd       $(TARGET_DIR)/root/microperl/t/cmd
Signature · 1 line
1.7.9.5
#7 lore raw

PATCH 5/12 microperl: fix perl -V

In reply to Francois Perrad
---
 package/microperl/microperl.mk |    5 ++---
 1 file changed, 2 insertions(+), 3 deletions(-)
package/microperl/microperl.mk +2 -3
index 595e1fa..4229a2f 100644
@@ -17,12 +17,11 @@ MICROPERL_MODS = $(call qstrip,$(BR2_PACKAGE_MICROPERL_MODULES))
 
 # Minimal set of modules required for 'perl -V' to work
 MICROPERL_ARCH_MODS = Config.pm Config_git.pl Config_heavy.pl
-MICROPERL_BASE_MODS = strict.pm
+MICROPERL_BASE_MODS = strict.pm vars.pm warnings.pm warnings/register.pm
 
 # CGI bundle
 ifeq ($(BR2_PACKAGE_MICROPERL_BUNDLE_CGI),y)
-MICROPERL_MODS += constant.pm CGI CGI.pm Carp.pm Exporter.pm overload.pm \
-	vars.pm warnings.pm warnings/register.pm
+MICROPERL_MODS += constant.pm CGI CGI.pm Carp.pm Exporter.pm overload.pm
 endif
 
 # Host microperl is actually full-blown perl
Signature · 1 line
1.7.9.5
#8 lore raw

PATCH 6/12 microperl: install more modules by default

In reply to Francois Perrad
---
 package/microperl/microperl.mk |   45 +++++++++++++++++++++++++++++++++++++++-
 1 file changed, 44 insertions(+), 1 deletion(-)
package/microperl/microperl.mk +44 -1
index 4229a2f..8cd1a42 100644
@@ -19,9 +19,52 @@ MICROPERL_MODS = $(call qstrip,$(BR2_PACKAGE_MICROPERL_MODULES))
 MICROPERL_ARCH_MODS = Config.pm Config_git.pl Config_heavy.pl
 MICROPERL_BASE_MODS = strict.pm vars.pm warnings.pm warnings/register.pm
 
+# other pragma modules (from lib/)
+MICROPERL_BASE_MODS += \
+  bytes.pm \
+  deprecate.pm \
+  feature.pm \
+  integer.pm \
+  less.pm \
+  locale.pm \
+  overloading.pm \
+  overload.pm \
+  sigtrap.pm \
+  sort.pm \
+  subs.pm \
+  utf8.pm utf8_heavy.pl \
+  version.pm
+
+# some common modules (from lib/)
+MICROPERL_BASE_MODS += \
+  Benchmark.pm \
+  Carp.pm \
+  Class/Struct.pm \
+  Exporter.pm Exporter/Heavy.pm \
+  File/Basename.pm \
+  File/Compare.pm \
+  Getopt/Std.pm \
+  Tie/Array.pm \
+  Tie/Hash.pm \
+  Tie/Scalar.pm \
+  UNIVERSAL.pm
+
+# other common modules (from dist/)
+MICROPERL_MODS += \
+  Dumpvalue.pm \
+  Env.pm \
+  autouse.pm \
+  base.pm \
+  constant.pm
+
+# other common modules (from cpan/)
+MICROPERL_MODS += \
+  Getopt/Long.pm \
+  parent.pm
+
 # CGI bundle
 ifeq ($(BR2_PACKAGE_MICROPERL_BUNDLE_CGI),y)
-MICROPERL_MODS += constant.pm CGI CGI.pm Carp.pm Exporter.pm overload.pm
+MICROPERL_MODS += CGI CGI.pm
 endif
 
 # Host microperl is actually full-blown perl
Signature · 1 line
1.7.9.5
#9 lore raw

PATCH 7/12 microperl: improve configure step on 64bits platform

In reply to Francois Perrad

use uconfig64.sh instead of uconfig.sh

---
 package/microperl/microperl.mk |   74 ++++++++++++++++++++++------------------
 1 file changed, 41 insertions(+), 33 deletions(-)
package/microperl/microperl.mk +41 -33
index 8cd1a42..aaa47be 100644
@@ -15,6 +15,18 @@ MICROPERL_MODS_DIR = /usr/lib/perl5/$(MICROPERL_VERSION)
 MICROPERL_ARCH_DIR = $(MICROPERL_MODS_DIR)/$(GNU_TARGET_NAME)
 MICROPERL_MODS = $(call qstrip,$(BR2_PACKAGE_MICROPERL_MODULES))
 
+ifeq ($(BR2_ARCH_IS_64),y)
+MICROPERL_UCONFIG_SH = $(@D)/uconfig64.sh
+define MICROPERL_REGEN_CONFIG
+	$(MAKE) -C $(@D) -f Makefile.micro regen_uconfig64
+endef
+else
+MICROPERL_UCONFIG_SH = $(@D)/uconfig.sh
+define MICROPERL_REGEN_CONFIG
+	$(MAKE) -C $(@D) -f Makefile.micro regen_uconfig
+endef
+endif
+
 # Minimal set of modules required for 'perl -V' to work
 MICROPERL_ARCH_MODS = Config.pm Config_git.pl Config_heavy.pl
 MICROPERL_BASE_MODS = strict.pm vars.pm warnings.pm warnings/register.pm
@@ -84,60 +96,56 @@ endef
 
 ifeq ($(BR2_ENDIAN),"BIG")
 define MICROPERL_BIGENDIAN
-	$(SED) '/^byteorder=/d' $(@D)/uconfig.sh
-	echo "byteorder='4321'" >>$(@D)/uconfig.sh
+	$(SED) '/^byteorder=/d' $(MICROPERL_UCONFIG_SH)
+	echo "byteorder='4321'" >>$(MICROPERL_UCONFIG_SH)
 endef
 endif
 
 ifeq ($(BR2_LARGEFILE),y)
 define MICROPERL_LARGEFILE
-	$(SED) '/^uselargefiles=/d' $(@D)/uconfig.sh
-	echo "uselargefiles='define'" >>$(@D)/uconfig.sh
+	$(SED) '/^uselargefiles=/d' $(MICROPERL_UCONFIG_SH)
+	echo "uselargefiles='define'" >>$(MICROPERL_UCONFIG_SH)
 endef
 endif
 
 ifeq ($(BR2_USE_WCHAR),y)
 define MICROPERL_WCHAR
 	$(SED) '/^d_mbstowcs=/d' -e '/^d_mbtowc=/d' -e '/^d_wcstombs=/d' \
-		-e '/^d_wctomb=/d' $(@D)/uconfig.sh
-	echo "d_mbstowcs='define'" >>$(@D)/uconfig.sh
-	echo "d_mbtowc='define'" >>$(@D)/uconfig.sh
-	echo "d_wcstombs='define'" >>$(@D)/uconfig.sh
-	echo "d_wctomb='define'" >>$(@D)/uconfig.sh
+		-e '/^d_wctomb=/d' $(MICROPERL_UCONFIG_SH)
+	echo "d_mbstowcs='define'" >>$(MICROPERL_UCONFIG_SH)
+	echo "d_mbtowc='define'" >>$(MICROPERL_UCONFIG_SH)
+	echo "d_wcstombs='define'" >>$(MICROPERL_UCONFIG_SH)
+	echo "d_wctomb='define'" >>$(MICROPERL_UCONFIG_SH)
 endef
 endif
 
 define MICROPERL_CONFIGURE_CMDS
 	$(SED) '/^archlib=/d' -e '/^archlibexp=/d' -e '/^optimize=/d' \
 		-e '/^archname=/d' -e '/^d_poll=/d' -e '/^i_poll=/d' \
-		-e '/^osname=/d' -e '/^u32type=/d' -e '/^d_archlib=/d' \
-		-e '/^d_memset=/d' -e '/^i_fcntl=/d' -e '/^useperlio=/d' \
-		-e '/^need_va_copy=/d' $(@D)/uconfig.sh
-	$(SED) 's/5\.$(MICROPERL_VERSION_MAJOR)/$(MICROPERL_VERSION)/' $(@D)/uconfig.sh
-	echo "archlib='$(MICROPERL_ARCH_DIR)'" >>$(@D)/uconfig.sh
-	echo "archlibexp='$(MICROPERL_ARCH_DIR)'" >>$(@D)/uconfig.sh
-	echo "d_archlib='define'" >>$(@D)/uconfig.sh
-	echo "archname='$(GNU_TARGET_NAME)'" >>$(@D)/uconfig.sh
-	echo "osname='linux'" >>$(@D)/uconfig.sh
-	echo "cc='$(TARGET_CC)'" >>$(@D)/uconfig.sh
-	echo "ccflags='$(TARGET_CFLAGS)'" >>$(@D)/uconfig.sh
-	echo "optimize='$(TARGET_CFLAGS)'" >>$(@D)/uconfig.sh
-	echo "usecrosscompile='define'" >>$(@D)/uconfig.sh
-	echo "d_memset='define'" >>$(@D)/uconfig.sh
-	echo "i_fcntl='define'" >>$(@D)/uconfig.sh
-	echo "useperlio='define'" >>$(@D)/uconfig.sh
-	echo "u32type='unsigned int'" >>$(@D)/uconfig.sh
-	echo "need_va_copy='define'" >>$(@D)/uconfig.sh
-	echo "d_poll='define'" >>$(@D)/uconfig.sh
-	echo "i_poll='define'" >>$(@D)/uconfig.sh
-	$(SED) 's/UNKNOWN-/Buildroot $(BR2_VERSION_FULL) /' $(@D)/patchlevel.h
-	$(SED) 's/local\///' $(@D)/uconfig.sh
+		-e '/^osname=/d' -e '/^d_archlib=/d' -e '/^i_fcntl=/d' \
+		-e '/^useperlio=/d' $(MICROPERL_UCONFIG_SH)
+	$(SED) 's/5\.$(MICROPERL_VERSION_MAJOR)/$(MICROPERL_VERSION)/' $(MICROPERL_UCONFIG_SH)
+	echo "archlib='$(MICROPERL_ARCH_DIR)'" >>$(MICROPERL_UCONFIG_SH)
+	echo "archlibexp='$(MICROPERL_ARCH_DIR)'" >>$(MICROPERL_UCONFIG_SH)
+	echo "d_archlib='define'" >>$(MICROPERL_UCONFIG_SH)
+	echo "archname='$(GNU_TARGET_NAME)'" >>$(MICROPERL_UCONFIG_SH)
+	echo "osname='linux'" >>$(MICROPERL_UCONFIG_SH)
+	echo "cc='$(TARGET_CC)'" >>$(MICROPERL_UCONFIG_SH)
+	echo "ccflags='$(TARGET_CFLAGS)'" >>$(MICROPERL_UCONFIG_SH)
+	echo "optimize='$(TARGET_CFLAGS)'" >>$(MICROPERL_UCONFIG_SH)
+	echo "usecrosscompile='define'" >>$(MICROPERL_UCONFIG_SH)
+	echo "i_fcntl='define'" >>$(MICROPERL_UCONFIG_SH)
+	echo "useperlio='define'" >>$(MICROPERL_UCONFIG_SH)
+	echo "d_poll='define'" >>$(MICROPERL_UCONFIG_SH)
+	echo "i_poll='define'" >>$(MICROPERL_UCONFIG_SH)
 	$(MICROPERL_BIGENDIAN)
 	$(MICROPERL_LARGEFILE)
 	$(MICROPERL_WCHAR)
-	$(MAKE) -C $(@D) -f Makefile.micro regen_uconfig
+	$(SED) 's/local\///' $(MICROPERL_UCONFIG_SH)
+	$(SED) 's/UNKNOWN-/Buildroot $(BR2_VERSION_FULL) /' $(@D)/patchlevel.h
+	$(MICROPERL_REGEN_CONFIG)
 	cp -f $(@D)/uconfig.h $(@D)/config.h
-	cp -f $(@D)/uconfig.sh $(@D)/config.sh
+	cp -f $(MICROPERL_UCONFIG_SH) $(@D)/config.sh
 	echo "ccname='$(TARGET_CC)'" >>$(@D)/config.sh
 	echo "PERL_CONFIG_SH=true" >>$(@D)/config.sh
 	touch $(@D)/config.h    # avoid warning : out of date
Signature · 1 line
1.7.9.5
#10 lore raw

PATCH 8/12 perl: new package

In reply to Francois Perrad
---
 package/Config.in                             |    1 +
 package/perl/Config.in                        |   31 +++++
 package/perl/perl-add-patch-Makefile-SH.patch |   82 +++++++++++++
 package/perl/perl-configure-qemu.patch        |   22 ++++
 package/perl/perl-fix-installperl.patch       |   25 ++++
 package/perl/perl-run-perl-lib.patch          |   98 ++++++++++++++++
 package/perl/perl.mk                          |  156 +++++++++++++++++++++++++
 7 files changed, 415 insertions(+)
 create mode 100644 package/perl/Config.in
 create mode 100644 package/perl/perl-add-patch-Makefile-SH.patch
 create mode 100644 package/perl/perl-configure-qemu.patch
 create mode 100644 package/perl/perl-fix-installperl.patch
 create mode 100644 package/perl/perl-run-perl-lib.patch
 create mode 100644 package/perl/perl.mk
package/Config.in +1 -0
index f308de7..00a79ab 100644
@@ -262,6 +262,7 @@ source "package/wsapi/Config.in"
 source "package/xavante/Config.in"
 endmenu
 endif
+source "package/perl/Config.in"
 source "package/microperl/Config.in"
 source "package/php/Config.in"
 source "package/python/Config.in"
package/perl/Config.in new file +31 -0
new file mode 100644
index 0000000..4b52e96
@@ -0,0 +1,31 @@
+config BR2_PACKAGE_PERL
+	bool "perl"
+	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/
+
+if BR2_PACKAGE_PERL
+
+config BR2_PACKAGE_PERL_CUSTOM_CONFIGURE
+	string "configuration flags"
+	help
+	  Allows to add some flags to Configure.
+
+config BR2_PACKAGE_PERL_TEST_HOST
+	bool "test host"
+	help
+	  Run 'make test' after the building of host-perl.
+
+config BR2_PACKAGE_PERL_INSTALL_TESTSUITE
+	bool "install testsuite"
+	help
+	  Install the test suite (~500000 tests) on target.
+		# cd /root/perl/t
+		# rm -f perl
+		# ln -s /usr/bin/perl perl
+		# ./perl TEST
+
+endif
package/perl/perl-add-patch-Makefile-SH.patch new file +82 -0

82 lines not on this page · raw message

package/perl/perl-configure-qemu.patch new file +22 -0
new file mode 100644
index 0000000..2d9c0dd
@@ -0,0 +1,22 @@
+
+Signed-off-by: Francois Perrad <[email protected]>
+
+Index: b/Configure
+===================================================================
+--- a/Configure
++++ b/Configure
+@@ -2908,6 +2908,14 @@ fi
+ $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
+ EOF
+ 	    ;;
++	qemu*)
++	    targetto=cp
++	    targetfrom=cp
++	    cat >$run <<EOF
++#!/bin/sh
++$targetrun -L $qemulib $exe \$@
++EOF
++	    ;;
+ 	*)  echo "Unknown targetrun '$targetrun'" >&4
+ 	    exit 1
+ 	    ;;
package/perl/perl-fix-installperl.patch new file +25 -0
new file mode 100644
index 0000000..e9a9f81
@@ -0,0 +1,25 @@
+
+Signed-off-by: Francois Perrad <[email protected]>
+
+Index: b/installperl
+===================================================================
+--- a/installperl
++++ b/installperl
+@@ -3,11 +3,17 @@
+ BEGIN {
+     require 5.004;
+     chdir '..' if !-d 'lib' and -d '../lib';
++
++    my @sav = @INC;
++    my $sav = $ENV{PERL5LIB};
+     @INC = 'lib';
+     $ENV{PERL5LIB} = 'lib';
+ 
+     # This needs to be at BEGIN time, before any use of Config
+     require './install_lib.pl';
++
++    @INC = @sav;
++    $ENV{PERL5LIB} = $sav;
+ }
+ 
+ use strict;
package/perl/perl-run-perl-lib.patch new file +98 -0

98 lines not on this page · raw message

package/perl/perl.mk new file +156 -0

156 lines not on this page · raw message

Signature · 1 line
1.7.9.5
#11 lore raw

PATCH 9/12 miniperl: new package

In reply to Francois Perrad
---
 package/Config.in                               |    1 +
 package/miniperl/Config.in                      |   18 ++++
 package/miniperl/miniperl-configure-qemu.patch  |   22 +++++
 package/miniperl/miniperl-fix-test.patch        |   30 ++++++
 package/miniperl/miniperl-generate-uudmap.patch |   20 ++++
 package/miniperl/miniperl-installperl.patch     |  116 +++++++++++++++++++++++
 package/miniperl/miniperl-make-ext.patch        |   17 ++++
 package/miniperl/miniperl-no-test.patch         |   19 ++++
 package/miniperl/miniperl-target-all.patch      |   17 ++++
 package/miniperl/miniperl.mk                    |   69 ++++++++++++++
 package/perl/Config.in                          |    4 +-
 package/perl/perl.mk                            |    4 +
 12 files changed, 336 insertions(+), 1 deletion(-)
 create mode 100644 package/miniperl/Config.in
 create mode 100644 package/miniperl/miniperl-configure-qemu.patch
 create mode 100644 package/miniperl/miniperl-fix-test.patch
 create mode 100644 package/miniperl/miniperl-generate-uudmap.patch
 create mode 100644 package/miniperl/miniperl-installperl.patch
 create mode 100644 package/miniperl/miniperl-make-ext.patch
 create mode 100644 package/miniperl/miniperl-no-test.patch
 create mode 100644 package/miniperl/miniperl-target-all.patch
 create mode 100644 package/miniperl/miniperl.mk
package/Config.in +1 -0
index 00a79ab..1b8237d 100644
@@ -263,6 +263,7 @@ source "package/xavante/Config.in"
 endmenu
 endif
 source "package/perl/Config.in"
+source "package/miniperl/Config.in"
 source "package/microperl/Config.in"
 source "package/php/Config.in"
 source "package/python/Config.in"
package/miniperl/Config.in new file +18 -0
new file mode 100644
index 0000000..437c358
@@ -0,0 +1,18 @@
+config BR2_PACKAGE_MINIPERL
+	bool "miniperl"
+	help
+	  Perl without dynamic module loader.
+	  Usually used to bootstrap a full Perl (@INC contains only .).
+
+if BR2_PACKAGE_MINIPERL
+
+config BR2_PACKAGE_MINIPERL_INSTALL_TESTSUITE
+	bool "install testsuite"
+	help
+	  Install the test suite on target.
+		# cd /root/miniperl/t
+		# rm -f perl
+		# ln -s /usr/bin/miniperl perl
+		# ./perl TEST base/*.t comp/*.t cmd/*.t run/*.t io/*.t re/*.t op/*.t uni/*.t
+
+endif
package/miniperl/miniperl-configure-qemu.patch new file +22 -0
new file mode 100644
index 0000000..2d9c0dd
@@ -0,0 +1,22 @@
+
+Signed-off-by: Francois Perrad <[email protected]>
+
+Index: b/Configure
+===================================================================
+--- a/Configure
++++ b/Configure
+@@ -2908,6 +2908,14 @@ fi
+ $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
+ EOF
+ 	    ;;
++	qemu*)
++	    targetto=cp
++	    targetfrom=cp
++	    cat >$run <<EOF
++#!/bin/sh
++$targetrun -L $qemulib $exe \$@
++EOF
++	    ;;
+ 	*)  echo "Unknown targetrun '$targetrun'" >&4
+ 	    exit 1
+ 	    ;;
package/miniperl/miniperl-fix-test.patch new file +30 -0
new file mode 100644
index 0000000..dbc127c
@@ -0,0 +1,30 @@
+re is a XS module
+
+Signed-off-by: Francois Perrad <[email protected]>
+
+Index: b/lib/_charnames.pm
+===================================================================
+--- a/lib/_charnames.pm
++++ b/lib/_charnames.pm
+@@ -11,7 +11,7 @@
+ use unicore::Name;    # mktables-generated algorithmically-defined names
+ 
+ use bytes ();          # for $bytes::hint_bits
+-use re "/aa";          # Everything in here should be ASCII
++#use re "/aa";          # Everything in here should be ASCII
+ 
+ $Carp::Internal{ (__PACKAGE__) } = 1;
+ 
+Index: b/lib/charnames.pm
+===================================================================
+--- a/lib/charnames.pm
++++ b/lib/charnames.pm
+@@ -6,7 +6,7 @@ use unicore::Name;    # mktables-generated algorithmically-defined names
+ use _charnames ();    # The submodule for this where most of the work gets done
+ 
+ use bytes ();          # for $bytes::hint_bits
+-use re "/aa";          # Everything in here should be ASCII
++#use re "/aa";          # Everything in here should be ASCII
+ 
+ # Translate between Unicode character names and their code points.
+ # This is a wrapper around the submodule C<_charnames>.  This design allows
package/miniperl/miniperl-generate-uudmap.patch new file +20 -0
new file mode 100644
index 0000000..2ffea87
@@ -0,0 +1,20 @@
+allows to overload GENERATE_UUDMAP with a host executable
+
+Signed-off-by: Francois Perrad <[email protected]>
+
+Index: b/Makefile.SH
+===================================================================
+--- a/Makefile.SH
++++ b/Makefile.SH
+@@ -651,8 +651,10 @@
+ 
+ uudmap.h mg_data.h: bitcount.h
+ 
++RUN_GENERATE_UUDMAP = $(RUN) ./generate_uudmap$(HOST_EXE_EXT)
++
+ bitcount.h: generate_uudmap$(HOST_EXE_EXT)
+-	$(RUN) ./generate_uudmap$(HOST_EXE_EXT) $(generated_headers)
++	$(RUN_GENERATE_UUDMAP) $(generated_headers)
+ 
+ generate_uudmap$(OBJ_EXT): mg_raw.h
+ 
package/miniperl/miniperl-installperl.patch new file +116 -0

116 lines not on this page · raw message

package/miniperl/miniperl-make-ext.patch new file +17 -0
new file mode 100644
index 0000000..f237c04
@@ -0,0 +1,17 @@
+
+Signed-off-by: Francois Perrad <[email protected]>
+
+Index: b/make_ext.pl
+===================================================================
+--- a/make_ext.pl
++++ b/make_ext.pl
+@@ -271,7 +271,8 @@ sub build_extension {
+     my $up = $ext_dir;
+     $up =~ s![^/]+!..!g;
+ 
+-    $perl ||= "$up/miniperl";
++    my @miniperl = split ' ', $ENV{MINIPERL};
++    $perl ||= $miniperl[-2];
+     my $return_dir = $up;
+     my $lib_dir = "$up/lib";
+     $ENV{PERL_CORE} = 1;
package/miniperl/miniperl-no-test.patch new file +19 -0
new file mode 100644
index 0000000..e00ef05
@@ -0,0 +1,19 @@
+cannot run test on host
+
+Signed-off-by: Francois Perrad <[email protected]>
+
+Index: b/Makefile.SH
+===================================================================
+--- a/Makefile.SH
++++ b/Makefile.SH
+--- a/Makefile.SH
++++ b/Makefile.SH
+@@ -873,7 +873,7 @@
+ 	- at rm -f miniperl.xok
+ 	$(LDLIBPTH) $(CC) $(CLDFLAGS) -o $(MINIPERL_EXE) \
+ 	    $(mini_obj) $(libs)
+-	$(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
++#	$(LDLIBPTH) $(RUN) ./miniperl$(HOST_EXE_EXT) -w -Ilib -MExporter -e '<?>' || $(MAKE) minitest
+ !NO!SUBS!
+ 		;;
+ 	esac
package/miniperl/miniperl-target-all.patch new file +17 -0
new file mode 100644
index 0000000..4c2f6ca
@@ -0,0 +1,17 @@
+
+Signed-off-by: Francois Perrad <[email protected]>
+
+Index: b/Makefile.SH
+===================================================================
+--- a/Makefile.SH
++++ b/Makefile.SH
+@@ -555,7 +555,8 @@
+ .c.s:
+ 	$(CCCMDSRC) -S $*.c
+ 
+-all: $(FIRSTMAKEFILE) $(MINIPERL_EXE) $(generated_pods) $(private) $(unidatafiles) $(public) $(dynamic_ext) $(nonxs_ext) extras.make
++#all: $(FIRSTMAKEFILE) $(MINIPERL_EXE) $(generated_pods) $(private) $(unidatafiles) $(public) $(dynamic_ext) $(nonxs_ext) extras.make
++all: $(FIRSTMAKEFILE) $(MINIPERL_EXE) $(private) $(unidatafiles) $(nonxs_ext)
+ 	@echo " ";
+ 	@echo "	Everything is up to date. Type '$(MAKE) test' to run test suite."
+ 
package/miniperl/miniperl.mk new file +69 -0

69 lines not on this page · raw message

package/perl/Config.in +3 -1
index 4b52e96..06b31d4 100644
@@ -7,13 +7,15 @@ config BR2_PACKAGE_PERL
 
 	  http://www.perl.org/
 
-if BR2_PACKAGE_PERL
 
 config BR2_PACKAGE_PERL_CUSTOM_CONFIGURE
 	string "configuration flags"
+	depends on BR2_PACKAGE_PERL || BR2_PACKAGE_MINIPERL
 	help
 	  Allows to add some flags to Configure.
 
+if BR2_PACKAGE_PERL
+
 config BR2_PACKAGE_PERL_TEST_HOST
 	bool "test host"
 	help
package/perl/perl.mk +4 -0
index f1859f0..9fcba89 100644
@@ -17,6 +17,10 @@ ifeq ($(shell expr $(PERL_VERSION_MAJOR) % 2), 1)
 PERL_USE_DEVEL=-Dusedevel
 endif
 
+ifneq ($(MINIPERL_VERSION), $(PERL_VERSION))
+$(error "MINIPERL_VERSION must be aligned with PERL_VERSION")
+endif
+
 # Host
 define HOST_PERL_CONFIGURE_CMDS
 	cd $(@D); ./Configure -des \
Signature · 1 line
1.7.9.5
#12 lore raw

PATCH 10/12 microperl: bump version to 5.16.1

In reply to Francois Perrad
---
 package/microperl/microperl-fix-build.patch |   76 +++++++++++++++++++++++++++
 package/microperl/microperl.mk              |    8 +--
 2 files changed, 80 insertions(+), 4 deletions(-)
 create mode 100644 package/microperl/microperl-fix-build.patch
package/microperl/microperl-fix-build.patch new file +76 -0
new file mode 100644
index 0000000..fe01395
@@ -0,0 +1,76 @@
+Backport of http://perl5.git.perl.org/perl.git/commitdiff/d40eae8f110fb9900e82648a2c44710def9f117d
+
+Signed-off-by: Francois Perrad <[email protected]>
+
+From: Nicholas Clark <[email protected]>
+Date: Fri, 27 Jul 2012 17:36:40 +0200
+Subject: [PATCH] Restore microperl, which has been unable to build since January.
+
+microperl was broken by commit 82ad65bb0613be64 on 2012-01-16, which used
+IN_LOCALE_COMPILETIME for the first time in the C code. Unlike
+IN_LOCALE_RUNTIME, it had no fallback definition for microperl.
+
+Commit f90a9a0230170cc0 on 2012-01-28 added the first use of Strtol(),
+which means that microperl now needs to assume that the system has strtol().
+(Which is not unreasonable, as it's part of C89).
+---
+ perl.h       |    1 +
+ uconfig.h    |    2 +-
+ uconfig.sh   |    2 +-
+ uconfig64.sh |    2 +-
+ 4 files changed, 4 insertions(+), 3 deletions(-)
+
+diff --git a/perl.h b/perl.h
+index e532af2..9e92ae4 100644
+--- a/perl.h
++++ b/perl.h
+@@ -5311,6 +5311,7 @@ typedef struct am_table_short AMTS;
+ #define RESTORE_NUMERIC_STANDARD()	/**/
+ #define Atof				my_atof
+ #define IN_LOCALE_RUNTIME		0
++#define IN_LOCALE_COMPILETIME		0
+ 
+ #endif /* !USE_LOCALE_NUMERIC */
+ 
+diff --git a/uconfig.h b/uconfig.h
+index 20b1f23..60c7ca7 100644
+--- a/uconfig.h
++++ b/uconfig.h
+@@ -527,7 +527,7 @@
+  *	This symbol, if defined, indicates that the strtol routine is available
+  *	to provide better numeric string conversion than atoi() and friends.
+  */
+-/*#define HAS_STRTOL	/ **/
++#define HAS_STRTOL	/**/
+ 
+ /* HAS_STRXFRM:
+  *	This symbol, if defined, indicates that the strxfrm() routine is
+diff --git a/uconfig.sh b/uconfig.sh
+index e96b7e8..d761d5c 100644
+--- a/uconfig.sh
++++ b/uconfig.sh
+@@ -424,7 +424,7 @@ d_strftime='undef'
+ d_strlcat='undef'
+ d_strlcpy='undef'
+ d_strtod='undef'
+-d_strtol='undef'
++d_strtol='define'
+ d_strtold='undef'
+ d_strtoll='undef'
+ d_strtoq='undef'
+diff --git a/uconfig64.sh b/uconfig64.sh
+index 80e6f7f..f57c979 100644
+--- a/uconfig64.sh
++++ b/uconfig64.sh
+@@ -425,7 +425,7 @@ d_strftime='undef'
+ d_strlcat='undef'
+ d_strlcpy='undef'
+ d_strtod='undef'
+-d_strtol='undef'
++d_strtol='define'
+ d_strtold='undef'
+ d_strtoll='undef'
+ d_strtoq='undef'
+-- 
+1.7.9.5
+
package/microperl/microperl.mk +4 -4
index aaa47be..e4846b4 100644
@@ -4,8 +4,8 @@
 #
 #############################################################
 
-MICROPERL_VERSION_MAJOR = 14
-MICROPERL_VERSION = 5.$(MICROPERL_VERSION_MAJOR).2
+MICROPERL_VERSION_MAJOR = 16
+MICROPERL_VERSION = 5.$(MICROPERL_VERSION_MAJOR).1
 MICROPERL_SITE = http://www.cpan.org/src/5.0
 MICROPERL_SOURCE = perl-$(MICROPERL_VERSION).tar.bz2
 MICROPERL_LICENSE = Artistic
@@ -50,7 +50,6 @@ MICROPERL_BASE_MODS += \
 # some common modules (from lib/)
 MICROPERL_BASE_MODS += \
   Benchmark.pm \
-  Carp.pm \
   Class/Struct.pm \
   Exporter.pm Exporter/Heavy.pm \
   File/Basename.pm \
@@ -63,6 +62,7 @@ MICROPERL_BASE_MODS += \
 
 # other common modules (from dist/)
 MICROPERL_MODS += \
+  Carp.pm \
   Dumpvalue.pm \
   Env.pm \
   autouse.pm \
@@ -155,7 +155,7 @@ endef
 
 define MICROPERL_BUILD_CMDS
 	$(MAKE) -f Makefile.micro -C $(@D) \
-		CC="$(HOSTCC)" bitcount.h
+		CC="$(HOSTCC)" ubitcount.h
 	$(MAKE) -f Makefile.micro -C $(@D) \
 		CC="$(TARGET_CC)" OPTIMIZE="$(TARGET_CFLAGS)"
 	$(MICROPERL_BUILD_EXTENSIONS)
Signature · 1 line
1.7.9.5
#13 lore raw

PATCH 11/12 microperl: remove host-microperl

In reply to Francois Perrad
---
 package/microperl/microperl.mk |   18 +-----------------
 package/perl/perl.mk           |    3 +++
 2 files changed, 4 insertions(+), 17 deletions(-)
package/microperl/microperl.mk +1 -17
index e4846b4..f130666 100644
@@ -10,7 +10,7 @@ MICROPERL_SITE = http://www.cpan.org/src/5.0
 MICROPERL_SOURCE = perl-$(MICROPERL_VERSION).tar.bz2
 MICROPERL_LICENSE = Artistic
 MICROPERL_LICENSE_FILES = Artistic
-MICROPERL_DEPENDENCIES = host-microperl
+MICROPERL_DEPENDENCIES = host-perl
 MICROPERL_MODS_DIR = /usr/lib/perl5/$(MICROPERL_VERSION)
 MICROPERL_ARCH_DIR = $(MICROPERL_MODS_DIR)/$(GNU_TARGET_NAME)
 MICROPERL_MODS = $(call qstrip,$(BR2_PACKAGE_MICROPERL_MODULES))
@@ -79,21 +79,6 @@ ifeq ($(BR2_PACKAGE_MICROPERL_BUNDLE_CGI),y)
 MICROPERL_MODS += CGI CGI.pm
 endif
 
-# Host microperl is actually full-blown perl
-define HOST_MICROPERL_CONFIGURE_CMDS
-	cd $(@D) ; \
-	./Configure -Dcc="$(HOSTCC)" -Dprefix="$(HOST_DIR)/usr" \
-		-Dloclibpth='/lib /lib64 /usr/lib /usr/lib64' -des
-endef
-
-define HOST_MICROPERL_BUILD_CMDS
-	$(MAKE) -C $(@D)
-endef
-
-define HOST_MICROPERL_INSTALL_CMDS
-	$(MAKE) -C $(@D) install
-endef
-
 ifeq ($(BR2_ENDIAN),"BIG")
 define MICROPERL_BIGENDIAN
 	$(SED) '/^byteorder=/d' $(MICROPERL_UCONFIG_SH)
@@ -218,4 +203,3 @@ define MICROPERL_UNINSTALL_TARGET_CMDS
 endef
 
 $(eval $(generic-package))
-$(eval $(host-generic-package))
package/perl/perl.mk +3 -0
index 9fcba89..a7b94e0 100644
@@ -20,6 +20,9 @@ endif
 ifneq ($(MINIPERL_VERSION), $(PERL_VERSION))
 $(error "MINIPERL_VERSION must be aligned with PERL_VERSION")
 endif
+ifneq ($(MICROPERL_VERSION), $(PERL_VERSION))
+$(error "MICROPERL_VERSION must be aligned with PERL_VERSION")
+endif
 
 # Host
 define HOST_PERL_CONFIGURE_CMDS
Signature · 1 line
1.7.9.5
#14 lore raw

PATCH 12/12 cpanminus: new package

In reply to Francois Perrad

and adjust sitelib in perl & microperl

---
 package/Config.in              |    5 +++++
 package/cpanminus/Config.in    |   24 ++++++++++++++++++++++++
 package/cpanminus/cpanminus.mk |   37 +++++++++++++++++++++++++++++++++++++
 package/microperl/microperl.mk |    5 ++++-
 package/perl/perl.mk           |   12 ++++++++++++
 5 files changed, 82 insertions(+), 1 deletion(-)
 create mode 100644 package/cpanminus/Config.in
 create mode 100644 package/cpanminus/cpanminus.mk
package/Config.in +5 -0
index 1b8237d..986fc89 100644
@@ -263,6 +263,11 @@ source "package/xavante/Config.in"
 endmenu
 endif
 source "package/perl/Config.in"
+if BR2_PACKAGE_PERL || BR2_PACKAGE_MINIPERL || BR2_PACKAGE_MICROPERL
+menu "Perl libraries/modules"
+source "package/cpanminus/Config.in"
+endmenu
+endif
 source "package/miniperl/Config.in"
 source "package/microperl/Config.in"
 source "package/php/Config.in"
package/cpanminus/Config.in new file +24 -0
new file mode 100644
index 0000000..9db7b2e
@@ -0,0 +1,24 @@
+config BR2_PACKAGE_CPANMINUS
+	bool "cpanminus"
+	help
+	  cpanminus is a script to get, unpack, build and install Perl modules
+	  from CPAN.
+
+	  Why? It's dependency free, requires zero configuration, and stands
+	  alone. When running, it requires only 10MB of RAM.
+
+	  http://github.com/miyagawa/cpanminus
+
+if BR2_PACKAGE_CPANMINUS
+
+config BR2_PACKAGE_CPANMINUS_MODULES
+	string "Perl modules from CPAN"
+	help
+	  List of space-separated Perl modules to install from CPAN.
+
+	  Examples: Try::Tiny Dancer YAML Moo
+
+	  Install the listed modules and their dependencies.
+	  cpanm run on host, so you cannot use it for XS modules.
+
+endif
package/cpanminus/cpanminus.mk new file +37 -0
new file mode 100644
index 0000000..6df9f73
@@ -0,0 +1,37 @@
+#############################################################
+#
+# cpanminus
+#
+#############################################################
+
+CPANMINUS_VERSION = 1.5017
+CPANMINUS_SITE = http://search.cpan.org/CPAN/authors/id/M/MI/MIYAGAWA
+CPANMINUS_SOURCE = App-cpanminus-$(CPANMINUS_VERSION).tar.gz
+CPANMINUS_DEPENDENCIES = host-perl host-cpanminus
+CPANMINUS_MODS = $(call qstrip,$(BR2_PACKAGE_CPANMINUS_MODULES))
+
+define HOST_CPANMINUS_CONFIGURE_CMDS
+	cd $(@D); $(HOST_DIR)/usr/bin/perl Makefile.PL
+endef
+
+define HOST_CPANMINUS_INSTALL_CMDS
+	$(MAKE) -C $(@D) install
+endef
+
+define CPANMINUS_INSTALL_TARGET_CMDS
+	for i in $(CPANMINUS_MODS); do \
+		cd $(@D); $(HOST_DIR)/usr/bin/cpanm -L $(TARGET_DIR)/usr/local $$i; \
+	done
+	# show XS modules
+	find $(TARGET_DIR)/usr/local/lib/perl5 -name *.so -print
+	# remove XS modules
+	rm -Rf $(TARGET_DIR)/usr/local/lib/perl5/$(shell $(HOST_DIR)/usr/bin/perl -MConfig -e "print Config->{archname}")
+	# fix shebang
+	touch $(TARGET_DIR)/usr/local/bin/dummy
+	for i in $(TARGET_DIR)/usr/local/bin/*; do \
+		$(SED) 's/$(subst /,\/,$(HOST_DIR))//' $$i; \
+	done
+endef
+
+$(eval $(generic-package))
+$(eval $(host-generic-package))
package/microperl/microperl.mk +4 -1
index f130666..544702f 100644
@@ -108,11 +108,15 @@ define MICROPERL_CONFIGURE_CMDS
 	$(SED) '/^archlib=/d' -e '/^archlibexp=/d' -e '/^optimize=/d' \
 		-e '/^archname=/d' -e '/^d_poll=/d' -e '/^i_poll=/d' \
 		-e '/^osname=/d' -e '/^d_archlib=/d' -e '/^i_fcntl=/d' \
+		-e '/^sitelib=/d' -e '/^sitelibexp=/d' \
 		-e '/^useperlio=/d' $(MICROPERL_UCONFIG_SH)
 	$(SED) 's/5\.$(MICROPERL_VERSION_MAJOR)/$(MICROPERL_VERSION)/' $(MICROPERL_UCONFIG_SH)
+	$(SED) 's/local\///' $(MICROPERL_UCONFIG_SH)
 	echo "archlib='$(MICROPERL_ARCH_DIR)'" >>$(MICROPERL_UCONFIG_SH)
 	echo "archlibexp='$(MICROPERL_ARCH_DIR)'" >>$(MICROPERL_UCONFIG_SH)
 	echo "d_archlib='define'" >>$(MICROPERL_UCONFIG_SH)
+	echo "sitelib='/usr/local/lib/perl5'" >>$(MICROPERL_UCONFIG_SH)
+	echo "sitelibexp='/usr/local/lib/perl5'" >>$(MICROPERL_UCONFIG_SH)
 	echo "archname='$(GNU_TARGET_NAME)'" >>$(MICROPERL_UCONFIG_SH)
 	echo "osname='linux'" >>$(MICROPERL_UCONFIG_SH)
 	echo "cc='$(TARGET_CC)'" >>$(MICROPERL_UCONFIG_SH)
@@ -126,7 +130,6 @@ define MICROPERL_CONFIGURE_CMDS
 	$(MICROPERL_BIGENDIAN)
 	$(MICROPERL_LARGEFILE)
 	$(MICROPERL_WCHAR)
-	$(SED) 's/local\///' $(MICROPERL_UCONFIG_SH)
 	$(SED) 's/UNKNOWN-/Buildroot $(BR2_VERSION_FULL) /' $(@D)/patchlevel.h
 	$(MICROPERL_REGEN_CONFIG)
 	cp -f $(@D)/uconfig.h $(@D)/config.h
package/perl/perl.mk +12 -0
index a7b94e0..dc67dd0 100644
@@ -81,6 +81,7 @@ define PERL_CONFIGURE_COMMON
 		-Dlibc=$(TARGET_HOST)/usr/$(GNU_TARGET_NAME)/sysroot/lib/libc.so \
 		-Duseshrplib \
 		-Dprefix=/usr \
+		-Dsitelib=/usr/local/lib/perl5 \
 		-Uoptimize \
 		$(PERL_USE_DEVEL) \
 		$(call qstrip,$(BR2_PACKAGE_PERL_CUSTOM_CONFIGURE))
@@ -113,9 +114,20 @@ define PERL_CONFIGURE_CMDS
 	$(INSTALL) -m 755 $(HOST_DIR)/usr/bin/generate_uudmap $(@D)/generate_uudmap
 endef
 
+# example of hack for XS module (cpanminus handles only pure Perl modules)
+#define PERL_HACK_4_XS_MODULES
+#	cd $(@D)/cpan; tar xfz $(BUILDROOT_DL_DIR)/HTML-Parser-3.69.tar.gz
+#endef
+
+PERL_PRE_CONFIGURE_HOOKS += PERL_HACK_4_XS_MODULES
+
 define PERL_BUILD_CMDS
 	$(MAKE) RUN_PERL=$(HOST_DIR)/usr/bin/perl \
 		-C $(@D) all
+# example of hack for XS module
+#	cd $(@D); \
+#		$(HOST_DIR)/usr/bin/perl -Ilib make_ext.pl MAKE="$(MAKE)" LIBPERL_A=libperl.a LINKTYPE=dynamic \
+#			HTML-Parser-3.69
 endef
 
 define PERL_INSTALL_STAGING_CMDS
Signature · 1 line
1.7.9.5