microperl: add license info
PATCH 1/12 microperl: add license info
--- package/microperl/microperl.mk | 2 ++ 1 file changed, 2 insertions(+)
package/microperl/microperl.mk +2 -0
@@ -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
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
@@ -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
@@ -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
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
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/TESTIsn'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/cmdIs
/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
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.htmlrem2: 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/TESTIsn'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/cmdIs
/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
PATCH 3/12 microperl: build extensions at build time
In reply to Francois Perradjust 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
@@ -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
PATCH 4/12 microperl: bump version to 5.14.2
In reply to Francois Perradpatches 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
@@ -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
@@ -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
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
@@ -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
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
@@ -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
PATCH 7/12 microperl: improve configure step on 64bits platform
In reply to Francois Perraduse uconfig64.sh instead of uconfig.sh
--- package/microperl/microperl.mk | 74 ++++++++++++++++++++++------------------ 1 file changed, 41 insertions(+), 33 deletions(-)
package/microperl/microperl.mk +41 -33
@@ -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
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
@@ -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
@@ -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
@@ -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
@@ -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
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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
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
@@ -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
@@ -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
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
@@ -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
@@ -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
PATCH 12/12 cpanminus: new package
In reply to Francois Perradand 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
@@ -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
@@ -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
@@ -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
@@ -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
@@ -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
Thomas Petazzoni
AppliedPATCH 1/12 microperl: add license info
In reply to Francois PerradLe Wed, 15 Aug 2012 16:38:23 +0200,
Francois Perrad <[email protected]> a ?crit :
Quoted 1 line
Signed-off-by Francois Perrad <[email protected]>
Applied to next, 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