From 8f8698ad20e3d305509b8b5510786a6e20d86f32 Mon Sep 17 00:00:00 2001 From: Marcel Denia Date: Mon, 21 Jul 2014 03:16:27 +0200 Subject: [PATCH 01/11] lang/perl: Filter -g3 in TARGET_CFLAGS -g3 will make the build fail in Compress-Raw-Zlib with ld: final link failed: Memory exhausted This bug is actually documented[1] and fixed by filtering that flag. Since we're passing CFLAGS manually, we need to do the same to make things work. I suspect that this is actually a linker or library bug, but for now let's just replicate the official fix. [1] https://rt.cpan.org/Public/Bug/Display.html?id=88936 Signed-off-by: Marcel Denia --- lang/perl/Makefile | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/lang/perl/Makefile b/lang/perl/Makefile index 4fdc6628b..4b07cc947 100644 --- a/lang/perl/Makefile +++ b/lang/perl/Makefile @@ -39,6 +39,9 @@ ifneq ($(CONFIG_USE_EGLIBC),) EXTRA_LIBS:=bsd EXTRA_LIBDIRS:=$(STAGING_DIR)/lib endif +# Filter -g3, it will break Compress-Raw-Zlib +TARGET_CFLAGS_PERL:=$(patsubst -g3,-g,$(TARGET_CFLAGS)) +TARGET_CPPFLAGS_PERL:=$(patsubst -g3,-g,$(TARGET_CPPFLAGS)) include $(INCLUDE_DIR)/package.mk include $(INCLUDE_DIR)/host-build.mk @@ -72,7 +75,7 @@ endef define Build/Configure sed \ -e 's!%%CC%%!$(TARGET_CC)!g' \ - -e 's!%%CFLAGS%%!$(TARGET_CFLAGS) $(TARGET_CPPFLAGS)!g' \ + -e 's!%%CFLAGS%%!$(TARGET_CFLAGS_PERL) $(TARGET_CPPFLAGS_PERL)!g' \ -e 's!%%CPP%%!$(TARGET_CROSS)gcc -E!g' \ -e 's!%%AR%%!$(TARGET_CROSS)ar!g' \ -e 's!%%LD%%!$(TARGET_CROSS)gcc!g' \ From e04bd7368a2fc9f6ffa8f3a14194cb1577290f75 Mon Sep 17 00:00:00 2001 From: Marcel Denia Date: Mon, 21 Jul 2014 03:25:55 +0200 Subject: [PATCH 02/11] lang/perl: Override CCFLAGS configuration symbol in perlmod This makes external perl modules compile their native code with the correct CFLAGS, not with the one host-perl is using. Signed-off-by: Marcel Denia --- lang/perl/perlmod.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/lang/perl/perlmod.mk b/lang/perl/perlmod.mk index ab2f4feda..09d2f465a 100644 --- a/lang/perl/perlmod.mk +++ b/lang/perl/perlmod.mk @@ -20,6 +20,7 @@ define perlmod/Configure $(1) \ AR=ar \ CC=$(GNU_TARGET_NAME)-gcc \ + CCFLAGS="$(TARGET_CFLAGS) $(TARGET_CPPFLAGS)" \ CCCDLFLAGS=-fPIC \ CCDLFLAGS=-Wl,-E \ DLEXT=so \ From a1993737aa58e64d339e41b966329bd584050b65 Mon Sep 17 00:00:00 2001 From: Marcel Denia Date: Tue, 22 Jul 2014 02:32:42 +0200 Subject: [PATCH 03/11] lang/perl: Make I8/I16/I32 types explicitly signed for ARM Type signedness is undefined for char. char may actually be unsigned for some CPUs. This fixes various bugs on ARM, for example negative array indices. Signed-off-by: Marcel Denia --- lang/perl/files/config.sh-arm.in | 8 ++++---- lang/perl/files/config.sh-armeb.in | 8 ++++---- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/lang/perl/files/config.sh-arm.in b/lang/perl/files/config.sh-arm.in index a7c197d0a..7d6d0cd25 100644 --- a/lang/perl/files/config.sh-arm.in +++ b/lang/perl/files/config.sh-arm.in @@ -601,13 +601,13 @@ html1direxp='' html3dir=' ' html3direxp='' i16size='2' -i16type='short' +i16type='signed short' i32size='4' -i32type='long' +i32type='signed long' i64size='8' -i64type='long long' +i64type='signed long long' i8size='1' -i8type='char' +i8type='signed char' i_arpainet='define' i_bsdioctl='' i_crypt='define' diff --git a/lang/perl/files/config.sh-armeb.in b/lang/perl/files/config.sh-armeb.in index e56d51f36..e180a5cca 100644 --- a/lang/perl/files/config.sh-armeb.in +++ b/lang/perl/files/config.sh-armeb.in @@ -601,13 +601,13 @@ html1direxp='' html3dir=' ' html3direxp='' i16size='2' -i16type='short' +i16type='signed short' i32size='4' -i32type='long' +i32type='signed long' i64size='8' -i64type='long long' +i64type='signed long long' i8size='1' -i8type='char' +i8type='signed char' i_arpainet='define' i_bsdioctl='' i_crypt='define' From 9e9110eff7dd51bbd45b2f7c93cc393e4ae4b974 Mon Sep 17 00:00:00 2001 From: Marcel Denia Date: Tue, 22 Jul 2014 16:14:20 +0200 Subject: [PATCH 04/11] lang/perl: Adjust some leftover x86_64 configuration symbols Signed-off-by: Marcel Denia --- lang/perl/files/config.sh-x86_64.in | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/lang/perl/files/config.sh-x86_64.in b/lang/perl/files/config.sh-x86_64.in index ebbb34b1d..203edf845 100644 --- a/lang/perl/files/config.sh-x86_64.in +++ b/lang/perl/files/config.sh-x86_64.in @@ -547,7 +547,7 @@ fflushall='undef' find='' firstmakefile='makefile' flex='' -fpossize='20' +fpossize='16' fpostype='fpos_t' freetype='void' from=':' @@ -604,7 +604,7 @@ i32type='int' i64size='8' i64type='long' i8size='1' -i8type='char' +i8type='signed char' i_arpainet='define' i_bsdioctl='' i_crypt='define' @@ -943,7 +943,7 @@ subversion='0' sysman='/usr/share/man/man1' tail='' tar='' -targetarch='i386-linux-uclibc' +targetarch='x86_64-linux-uclibc' tbl='' tee='' test='test' From 51850177b98bb4bd6908009a0cdc7e66750838e7 Mon Sep 17 00:00:00 2001 From: Marcel Denia Date: Tue, 22 Jul 2014 16:14:57 +0200 Subject: [PATCH 05/11] lang/perl: Install target headers to staging directory Signed-off-by: Marcel Denia --- lang/perl/Makefile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/lang/perl/Makefile b/lang/perl/Makefile index 4b07cc947..1b99cb3b1 100644 --- a/lang/perl/Makefile +++ b/lang/perl/Makefile @@ -97,6 +97,11 @@ define Build/Compile +$(MAKE) $(PKG_JOBS) -C $(PKG_BUILD_DIR) endef +define Build/InstallDev + $(INSTALL_DIR) $(1)/usr/lib/perl5/5.20/CORE + $(CP) $(PKG_INSTALL_DIR)/usr/lib/perl5/5.20/CORE/*.h $(1)/usr/lib/perl5/5.20/CORE/ +endef + define Package/perl/install $(INSTALL_DIR) $(1)/usr/bin $(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/perl$(PKG_VERSION) $(1)/usr/bin From d94b7384201e0fb83f07355d81d5a396aaf4457c Mon Sep 17 00:00:00 2001 From: Marcel Denia Date: Tue, 22 Jul 2014 16:15:52 +0200 Subject: [PATCH 06/11] lang/perl: Use target headers for external modules Before, external modules actually used host-perl headers. Aside from obviously being the wrong thing to do, it made them misbehave if host and target architectures differ too much. Signed-off-by: Marcel Denia --- lang/perl/perlmod.mk | 1 + 1 file changed, 1 insertion(+) diff --git a/lang/perl/perlmod.mk b/lang/perl/perlmod.mk index 09d2f465a..f8f0d036c 100644 --- a/lang/perl/perlmod.mk +++ b/lang/perl/perlmod.mk @@ -63,6 +63,7 @@ define perlmod/Configure LINKTYPE=dynamic \ DESTDIR=$(PKG_INSTALL_DIR) \ ); + sed 's!^PERL_INC = .*!PERL_INC = $(STAGING_DIR)/usr/lib/perl5/5.20/CORE/!' -i $(PKG_BUILD_DIR)/Makefile endef define perlmod/Compile From 3e4f400a49d542f5b6c4eea7a31de818b343840d Mon Sep 17 00:00:00 2001 From: Marcel Denia Date: Wed, 23 Jul 2014 09:14:18 +0200 Subject: [PATCH 07/11] lang/perl: Update license information Signed-off-by: Marcel Denia --- lang/perl/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lang/perl/Makefile b/lang/perl/Makefile index 1b99cb3b1..fb7055faa 100644 --- a/lang/perl/Makefile +++ b/lang/perl/Makefile @@ -22,7 +22,7 @@ PKG_SOURCE_URL:=ftp://ftp.cpan.org/pub/CPAN/src/5.0 \ http://ftp.funet.fi/pub/languages/perl/CPAN/src/5.0 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz -PKG_LICENSE:=GPLv1 ARTISTIC +PKG_LICENSE:=GPLv1+ ARTISTIC PKG_LICENSE_FILES:=Copying Artistic README PKG_MAINTAINER:=Marcel Denia From 8995386673effd0f70cab7a55555d0aa92264b48 Mon Sep 17 00:00:00 2001 From: Marcel Denia Date: Wed, 23 Jul 2014 09:14:56 +0200 Subject: [PATCH 08/11] lang/perl: Cleanup Signed-off-by: Marcel Denia --- lang/perl/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lang/perl/Makefile b/lang/perl/Makefile index fb7055faa..d651e167f 100644 --- a/lang/perl/Makefile +++ b/lang/perl/Makefile @@ -10,7 +10,6 @@ include $(TOPDIR)/rules.mk PKG_NAME:=perl PKG_VERSION:=5.20.0 PKG_RELEASE:=3 -PKG_MD5SUM:=406ec049ebe3afcc80d9c76ec78ca4f8 PKG_SOURCE_URL:=ftp://ftp.cpan.org/pub/CPAN/src/5.0 \ http://www.cpan.org/src/5.0/perl-5.20.0.tar.gz \ @@ -21,6 +20,7 @@ PKG_SOURCE_URL:=ftp://ftp.cpan.org/pub/CPAN/src/5.0 \ ftp://ftp.funet.fi/pub/languages/perl/CPAN/src/5.0 \ http://ftp.funet.fi/pub/languages/perl/CPAN/src/5.0 PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz +PKG_MD5SUM:=406ec049ebe3afcc80d9c76ec78ca4f8 PKG_LICENSE:=GPLv1+ ARTISTIC PKG_LICENSE_FILES:=Copying Artistic README From edebd9121ae70e2f85b55a2ea68c2111b68d1dbb Mon Sep 17 00:00:00 2001 From: Marcel Denia Date: Wed, 23 Jul 2014 09:18:40 +0200 Subject: [PATCH 09/11] lang/perl: Bump PKG_RELEASE Signed-off-by: Marcel Denia --- lang/perl/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lang/perl/Makefile b/lang/perl/Makefile index d651e167f..bcf0bf68d 100644 --- a/lang/perl/Makefile +++ b/lang/perl/Makefile @@ -9,7 +9,7 @@ include $(TOPDIR)/rules.mk PKG_NAME:=perl PKG_VERSION:=5.20.0 -PKG_RELEASE:=3 +PKG_RELEASE:=4 PKG_SOURCE_URL:=ftp://ftp.cpan.org/pub/CPAN/src/5.0 \ http://www.cpan.org/src/5.0/perl-5.20.0.tar.gz \ From 3e7876c22f2bca4a3273dc8844d3724652cc7824 Mon Sep 17 00:00:00 2001 From: Marcel Denia Date: Wed, 23 Jul 2014 11:46:17 +0200 Subject: [PATCH 10/11] lang/perl: Strip encoding pragma The "encoding" pragma is officially deprecated. Makes HTML::Parser/HTML::Entities work. Signed-off-by: Marcel Denia --- lang/perl/perlmod.mk | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/lang/perl/perlmod.mk b/lang/perl/perlmod.mk index f8f0d036c..05bcc5e74 100644 --- a/lang/perl/perlmod.mk +++ b/lang/perl/perlmod.mk @@ -89,8 +89,8 @@ define perlmod/Install @echo "---> Stripping modules in: $(strip $(1))$(PERL_SITELIB)" find $(strip $(1))$(PERL_SITELIB) -name \*.pm -or -name \*.pl | \ xargs -r sed -i \ - -e '/^=\(head\|pod\|item\|over\|back\)/,/^=cut/d' \ - -e '/^=\(head\|pod\|item\|over\|back\)/,$$$$d' \ + -e '/^=\(head\|pod\|item\|over\|back\|encoding\)/,/^=cut/d' \ + -e '/^=\(head\|pod\|item\|over\|back\|encoding\)/,$$$$d' \ -e '/^#$$$$/d' \ -e '/^#[^!"'"'"']/d' endef From 7436f597b48168df028d821f3d981e224ac5d040 Mon Sep 17 00:00:00 2001 From: Marcel Denia Date: Wed, 23 Jul 2014 11:45:10 +0200 Subject: [PATCH 11/11] lang/perl: Include overloading.pm in perlbase-essential Needed by perl-dbi. Signed-off-by: Marcel Denia --- lang/perl/perlbase.mk | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lang/perl/perlbase.mk b/lang/perl/perlbase.mk index fa3c472ab..3dc451c55 100644 --- a/lang/perl/perlbase.mk +++ b/lang/perl/perlbase.mk @@ -458,7 +458,7 @@ TITLE:=essential perl module endef define Package/perlbase-essential/install -$(call perlmod/Install,$(1),Carp Carp.pm Exporter Exporter.pm constant.pm lib.pm locale.pm overload.pm strict.pm subs.pm vars.pm warnings warnings.pm,) +$(call perlmod/Install,$(1),Carp Carp.pm Exporter Exporter.pm constant.pm lib.pm locale.pm overload.pm strict.pm subs.pm vars.pm warnings warnings.pm overloading.pm,) endef $(eval $(call BuildPackage,perlbase-essential))