Skip to contentSkip to conversation

intltool: fix build

PATCH New Francois Perrad 5 participants 6 messages Oct 17, 2014 – Oct 23, 2014

lore
Share & tools
lore
#0 lore raw

PATCH 1/1 intltool: fix build

fix various build failures caused by host-perl serie

Currently, the variables PERL & PERL2LIB are available only during the configure step of host-intltool. There are also needed when running host-intltool, in all package which depends on host-intltool.

So, there are now global, but in the perl infrastructure, we cannot use them.

---
 package/Makefile.in          | 9 +++++++--
 package/intltool/intltool.mk | 3 ---
 package/pkg-perl.mk          | 2 +-
 3 files changed, 8 insertions(+), 6 deletions(-)
package/Makefile.in +7 -2
index ab59b54..b5d407c 100644
@@ -232,6 +232,9 @@ HOST_LDFLAGS  += -L$(HOST_DIR)/lib -L$(HOST_DIR)/usr/lib -Wl,-rpath,$(HOST_DIR)/
 HOSTCC_VERSION := $(shell $(HOSTCC_NOCCACHE) --version | \
 	sed -n 's/^.* \([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)[ ]*.*$$/\1\2\3/p')
 
+export PERL=$(shell which perl)
+export PERL5LIB=$(HOST_DIR)/usr/lib/perl
+
 TARGET_CONFIGURE_OPTS = PATH=$(BR_PATH) \
 		AR="$(TARGET_AR)" \
 		AS="$(TARGET_AS)" \
@@ -267,7 +270,8 @@ TARGET_CONFIGURE_OPTS = PATH=$(BR_PATH) \
 		LDFLAGS="$(TARGET_LDFLAGS)" \
 		FCFLAGS="$(TARGET_FCFLAGS)" \
 		PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \
-		STAGING_DIR="$(STAGING_DIR)"
+		STAGING_DIR="$(STAGING_DIR)" \
+		INTLTOOL_PERL=$(PERL)
 
 TARGET_MAKE_ENV = PATH=$(BR_PATH)
 
@@ -292,7 +296,8 @@ HOST_CONFIGURE_OPTS = PATH=$(BR_PATH) \
 		PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \
 		PKG_CONFIG_SYSROOT_DIR="/" \
 		PKG_CONFIG_LIBDIR="$(HOST_DIR)/usr/lib/pkgconfig:$(HOST_DIR)/usr/share/pkgconfig" \
-		LD_LIBRARY_PATH="$(HOST_DIR)/usr/lib:$(LD_LIBRARY_PATH)"
+		LD_LIBRARY_PATH="$(HOST_DIR)/usr/lib:$(LD_LIBRARY_PATH)" \
+		INTLTOOL_PERL=$(PERL)
 
 HOST_MAKE_ENV = PATH=$(BR_PATH) \
 		LD_LIBRARY_PATH="$(HOST_DIR)/usr/lib:$(LD_LIBRARY_PATH)" \
package/intltool/intltool.mk +0 -3
index a7afe0d..549cb3b 100644
@@ -10,9 +10,6 @@ INTLTOOL_LICENSE = GPLv2+
 INTLTOOL_LICENSE_FILES = COPYING
 
 HOST_INTLTOOL_DEPENDENCIES = host-gettext host-libxml-parser-perl
-HOST_INTLTOOL_CONF_OPTS = \
-	PERL=`which perl` \
-	PERL5LIB=$(HOST_DIR)/usr/lib/perl
 
 $(eval $(autotools-package))
 $(eval $(host-autotools-package))
package/pkg-perl.mk +1 -1
index f41a2f9..6577588 100644
@@ -20,7 +20,7 @@
 ################################################################################
 
 PERL_ARCHNAME = $(ARCH)-linux
-PERL_RUN = $(HOST_DIR)/usr/bin/perl
+PERL_RUN = PERL5LIB= $(HOST_DIR)/usr/bin/perl
 
 ################################################################################
 # inner-perl-package -- defines how the configuration, compilation and
Signature · 1 line
1.9.1
#1 lore raw

PATCH 1/1 intltool: fix build

Francois Perrad <[email protected]> wrote in news:1413571681-27963-1-git-send-email-francois.perrad at gadz.org:

Quoted 1 line

fix various build failures caused by host-perl serie

Hi,

please add some links to the autobuilder errors fixed by your patch, apart from that:

#2 lore raw

PATCH 1/1 intltool: fix build

In reply to Francois Perrad
Quoted 22 lines · Francois Perrad

fix various build failures caused by host-perl serie

Currently, the variables PERL & PERL2LIB are available only during the configure step of host-intltool. There are also needed when running host-intltool, in all package which depends on host-intltool.

So, there are now global, but in the perl infrastructure, we cannot use them.

---
 package/Makefile.in          | 9 +++++++--
 package/intltool/intltool.mk | 3 ---
 package/pkg-perl.mk          | 2 +-
 3 files changed, 8 insertions(+), 6 deletions(-)
package/Makefile.in +0 -0
index ab59b54..b5d407c 100644

package/Makefile.in HOST_LDFLAGS += -L$(HOST_DIR)/lib -L$(HOST_DIR)/usr/lib -Wl,-rpath,$(HOST_DIR)/ · line 235

Quoted 4 lines
package/Makefile.in +1 -0
@@ -232,6 +232,9 @@ HOST_LDFLAGS  += -L$(HOST_DIR)/lib -L$(HOST_DIR)/usr/lib -Wl,-rpath,$(HOST_DIR)/
 HOSTCC_VERSION := $(shell $(HOSTCC_NOCCACHE) --version | \
 	sed -n 's/^.* \([0-9]*\)\.\([0-9]*\)\.\([0-9]*\)[ ]*.*$$/\1\2\3/p')
 
+export PERL=$(shell which perl)

Isn't this the default, i.e. redundant?

package/Makefile.in HOST_LDFLAGS += -L$(HOST_DIR)/lib -L$(HOST_DIR)/usr/lib -Wl,-rpath,$(HOST_DIR)/ · line 236

Quoted 1 line
package/Makefile.in +1 -0
+export PERL5LIB=$(HOST_DIR)/usr/lib/perl

This one is probably needed indeed.

package/Makefile.in TARGET_CONFIGURE_OPTS = PATH=$(BR_PATH) \ · line 274

Quoted 11 lines
package/Makefile.in +3 -1
+
 TARGET_CONFIGURE_OPTS = PATH=$(BR_PATH) \
 		AR="$(TARGET_AR)" \
 		AS="$(TARGET_AS)" \
@@ -267,7 +270,8 @@ TARGET_CONFIGURE_OPTS = PATH=$(BR_PATH) \
 		LDFLAGS="$(TARGET_LDFLAGS)" \
 		FCFLAGS="$(TARGET_FCFLAGS)" \
 		PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \
-		STAGING_DIR="$(STAGING_DIR)"
+		STAGING_DIR="$(STAGING_DIR)" \
+		INTLTOOL_PERL=$(PERL)

This will only be used by intltool itself (to replace the @INTLTOOL_PERL@
stanza in the intltool-*.in files), so it should move to the host-intltool package.

Actually, I even think that it's quite wrong for the TARGET_CONFIGURE_OPTS
because it would only be used by the target intltool, which shouldn't use whatever path the system's perl is in.

package/Makefile.in HOST_CONFIGURE_OPTS = PATH=$(BR_PATH) \ · line 300

Quoted 10 lines
package/Makefile.in +2 -1
 TARGET_MAKE_ENV = PATH=$(BR_PATH)
 
@@ -292,7 +296,8 @@ HOST_CONFIGURE_OPTS = PATH=$(BR_PATH) \
 		PKG_CONFIG="$(PKG_CONFIG_HOST_BINARY)" \
 		PKG_CONFIG_SYSROOT_DIR="/" \
 		PKG_CONFIG_LIBDIR="$(HOST_DIR)/usr/lib/pkgconfig:$(HOST_DIR)/usr/share/pkgconfig" \
-		LD_LIBRARY_PATH="$(HOST_DIR)/usr/lib:$(LD_LIBRARY_PATH)"
+		LD_LIBRARY_PATH="$(HOST_DIR)/usr/lib:$(LD_LIBRARY_PATH)" \
+		INTLTOOL_PERL=$(PERL)

So it's this one that should move to intltool

Regards,
Arnout.

Quoted 31 lines
package/Makefile.in +0 -0
 HOST_MAKE_ENV = PATH=$(BR_PATH) \
 		LD_LIBRARY_PATH="$(HOST_DIR)/usr/lib:$(LD_LIBRARY_PATH)" \
package/intltool/intltool.mk +0 -3
index a7afe0d..549cb3b 100644
@@ -10,9 +10,6 @@ INTLTOOL_LICENSE = GPLv2+
 INTLTOOL_LICENSE_FILES = COPYING
 
 HOST_INTLTOOL_DEPENDENCIES = host-gettext host-libxml-parser-perl
-HOST_INTLTOOL_CONF_OPTS = \
-	PERL=`which perl` \
-	PERL5LIB=$(HOST_DIR)/usr/lib/perl
 
 $(eval $(autotools-package))
 $(eval $(host-autotools-package))
package/pkg-perl.mk +1 -1
index f41a2f9..6577588 100644
@@ -20,7 +20,7 @@
 ################################################################################
 
 PERL_ARCHNAME = $(ARCH)-linux
-PERL_RUN = $(HOST_DIR)/usr/bin/perl
+PERL_RUN = PERL5LIB= $(HOST_DIR)/usr/bin/perl
 
 ################################################################################
 # inner-perl-package -- defines how the configuration, compilation and
Signature · 6 lines
Arnout Vandecappelle                          arnout at mind be
Senior Embedded Software Architect            +32-16-286500
Essensium/Mind                                http://www.mind.be
G.Geenslaan 9, 3001 Leuven, Belgium           BE 872 984 063 RPR Leuven
LinkedIn profile: http://www.linkedin.com/in/arnoutvandecappelle
GPG fingerprint:  7CB5 E4CC 6C2E EFD4 6E3D A754 F963 ECAB 2450 2F1F
#3 lore raw

PATCH 1/1 intltool: fix build

In reply to Francois Perrad

Dear Francois Perrad,

Quoted 10 lines · Francois Perrad

fix various build failures caused by host-perl serie

Currently, the variables PERL & PERL2LIB are available only during the configure step of host-intltool. There are also needed when running host-intltool, in all package which depends on host-intltool.

So, there are now global, but in the perl infrastructure, we cannot use them.

Quoted 6 lines
---
 package/Makefile.in          | 9 +++++++--
 package/intltool/intltool.mk | 3 ---
 package/pkg-perl.mk          | 2 +-
 3 files changed, 8 insertions(+), 6 deletions(-)

Can you cook an updated version of this patch that takes into account the comment you have received? It would help us fix a number of Perl related autobuilder issues.

Thanks,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
#4 lore raw

PATCH 1/1 intltool: fix build

2014-10-22 18:03 GMT+02:00 Thomas Petazzoni
<[email protected]>:

Quoted 20 lines

Dear Francois Perrad,

Quoted 10 lines · Francois Perrad

fix various build failures caused by host-perl serie

Currently, the variables PERL & PERL2LIB are available only during the configure step of host-intltool. There are also needed when running host-intltool, in all package which depends on host-intltool.

So, there are now global, but in the perl infrastructure, we cannot use them.

Quoted 6 lines
---
 package/Makefile.in          | 9 +++++++--
 package/intltool/intltool.mk | 3 ---
 package/pkg-perl.mk          | 2 +-
 3 files changed, 8 insertions(+), 6 deletions(-)
Quoted 4 lines

Can you cook an updated version of this patch that takes into account the comment you have received? It would help us fix a number of Perl related autobuilder issues.

When I try to do that you suggest, I only obtain no working result.

I think that comments from Arnout, come from a pure review but no from testing or experiment.

This patch doesn't try to fix the package host-intltool, it fixes the packages which depend on host-intltool.
Currently, this kind of package is broken in the configure step because they can not find the correct perl.
So, the variable INTLTOOL_PERL=$(PERL) in *_CONFIGURE_OPTS is mandatory.

When PATH=$(BR_PATH), which perl find the system perl when host-perl is not yet installed, after it find the host-perl.
So, it is important to save the result of which perl with the original PATH (ie. without $(HOST_DIR)/usr/bin).

The current patch stay the best that I can do (the commit message can always be improved).

Fran?ois

Quoted 11 lines

Thanks,

Thomas
--
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com
_______________________________________________
buildroot mailing list
buildroot at busybox.net
http://lists.busybox.net/mailman/listinfo/buildroot

#5 lore raw

PATCH 1/1 intltool: fix build

Dear Fran?ois Perrad,

Quoted 15 lines · Fran?ois Perrad
Quoted 3 lines

Can you cook an updated version of this patch that takes into account the comment you have received? It would help us fix a number of Perl related autobuilder issues.

When I try to do that you suggest, I only obtain no working result.

I think that comments from Arnout, come from a pure review but no from testing or experiment.

This patch doesn't try to fix the package host-intltool, it fixes the packages which depend on host-intltool.
Currently, this kind of package is broken in the configure step because they can not find the correct perl.
So, the variable INTLTOOL_PERL=$(PERL) in *_CONFIGURE_OPTS is mandatory.

Quoted 7 lines

When PATH=$(BR_PATH), which perl find the system perl when host-perl is not yet installed, after it find the host-perl.
So, it is important to save the result of which perl with the original PATH (ie. without $(HOST_DIR)/usr/bin).

The current patch stay the best that I can do (the commit message can always be improved).

Hum, right, ok. I'm not a big fan of how we handle intltool, but I admit that the main reason for this mess is me asking you to not make intltool and libxml-parser-perl depend on host-perl.

I've applied your patch (after slightly rewording the commit log), it indeed seems to fix the issue. We'll see how things go, but I'm not very happy with our intltool handling :/

Best regards,

Thomas

Signature · 3 lines
Thomas Petazzoni, CTO, Free Electrons
Embedded Linux, Kernel and Android engineering
http://free-electrons.com