Skip to contentSkip to conversation

Disable packaged-staging for perl-native

RFC In review Tom Rini 4 participants 7 messages Jul 27, 2010 – Aug 12, 2010

lore
Share & tools
lore

Tom Rini

author
#0 lore raw

RFC 1/1 Disable packaged-staging for perl-native

I'd like to disable packaged-staging for perl-native. The problem here comes from a number of things that happen. Some of these can only happen in combination with packaged-staging but others I believe could happen today. The problem itself is that if we have perl-native available from packaged-staging it can suddenly exist very early. What this means in practical terms is that now we're trying to generate say pod2man.pl from pod2man.pl.in and @perl@ is expanded to something beyond the "#!" mechanic length limit and recipes start failing to build (fixable by changing pod2man.pl.in to use /usr/bin/env perl (and if it had a -w changing to Use warnings: or whatever the perl is)).

There may have been other rats nests I ran into but can't fully confirm weren't due to other crazy rats nests I made. But we hit the above many times.

perl-native: Disable packaged-staging

Having perl-native come from packaged-staging can expose other issues. Disable so we get the normal (potential) behavior here.

recipes/perl/perl-native_5.10.1.bb +3 -0
index 0e0854b..98c2c3c 100644
@@ -9,6 +9,9 @@ NATIVE_INSTALL_WORKS = "1"
 # Not tested enough
 DEFAULT_PREFERENCE = "-1"
 
+# Introduces issues when re-used too early.
+PSTAGING_DISABLED = "1"
+
 FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/perl-${PV}"
 
 SRC_URI = 

"http://ftp.funet.fi/pub/CPAN/src/perl-${PV}.tar.gz;name=perl-${PV} \

recipes/perl/perl-native_5.8.8.bb +3 -0
index fe1bc84..b966eeb 100644
@@ -6,6 +6,9 @@ DEPENDS = "virtual/db-native gdbm-native"
 PR = "r20"
 NATIVE_INSTALL_WORKS = "1"
 
+# Introduces issues when re-used too early.
+PSTAGING_DISABLED = "1"
+
 FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/perl-${PV}"
 
 SRC_URI = "http://ftp.funet.fi/pub/CPAN/src/5.0/perl-${PV}.tar.gz \
Signature · 2 lines
Tom Rini
Mentor Graphics Corporation
#1 lore raw

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Quoted 11 lines · Tom Rini

I'd like to disable packaged-staging for perl-native. The problem here comes from a number of things that happen. Some of these can only happen in combination with packaged-staging but others I believe could happen today. The problem itself is that if we have perl-native available from packaged-staging it can suddenly exist very early. What this means in practical terms is that now we're trying to generate say pod2man.pl from pod2man.pl.in and @perl@ is expanded to something beyond the "#!" mechanic length limit and recipes start failing to build (fixable by changing pod2man.pl.in to use /usr/bin/env perl (and if it had a -w changing to Use warnings: or whatever the perl is)).

Quoted 8 lines

There may have been other rats nests I ran into but can't fully confirm weren't due to other crazy rats nests I made. But we hit the above many times.

perl-native: Disable packaged-staging

Having perl-native come from packaged-staging can expose other issues. Disable so we get the normal (potential) behavior here.

In the past 'perl-native' was actually 'perl-cross', you needed to rebuild it when changing archs. Dunno if that still is the case.

regards,

Koen

Quoted 26 lines
recipes/perl/perl-native_5.10.1.bb +3 -0
index 0e0854b..98c2c3c 100644
@@ -9,6 +9,9 @@ NATIVE_INSTALL_WORKS = "1"
 # Not tested enough
 DEFAULT_PREFERENCE = "-1"
 
+# Introduces issues when re-used too early.
+PSTAGING_DISABLED = "1"
+
 FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/perl-${PV}"
 
 SRC_URI =

"http://ftp.funet.fi/pub/CPAN/src/perl-${PV}.tar.gz;name=perl-${PV} \

recipes/perl/perl-native_5.8.8.bb +0 -0
index fe1bc84..b966eeb 100644

recipes/perl/perl-native_5.8.8.bb DEPENDS = "virtual/db-native gdbm-native" · line 14

Quoted 9 lines
recipes/perl/perl-native_5.8.8.bb +3 -0
@@ -6,6 +6,9 @@ DEPENDS = "virtual/db-native gdbm-native"
 PR = "r20"
 NATIVE_INSTALL_WORKS = "1"
 
+# Introduces issues when re-used too early.
+PSTAGING_DISABLED = "1"
+
 FILESDIR = "${@os.path.dirname(bb.data.getVar('FILE',d,1))}/perl-${PV}"
 
 SRC_URI = "http://ftp.funet.fi/pub/CPAN/src/5.0/perl-${PV}.tar.gz \

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.5 (Darwin)

iD8DBQFMT9eTMkyGM64RGpERAuaEAJ9kzPdQLHDcX/GfqTNWFTzMngqzuwCgr3nc eHEzHXwGeLNBlf6PKpfvRcE=
=roO2
-----END PGP SIGNATURE-----

#2 lore raw
In reply to Tom Rini

В сообщении от Среда 28 июля 2010 03:45:21 автор Tom Rini написал:

Quoted 10 lines

I'd like to disable packaged-staging for perl-native. The problem here comes from a number of things that happen. Some of these can only happen in combination with packaged-staging but others I believe could happen today. The problem itself is that if we have perl-native available from packaged-staging it can suddenly exist very early. What this means in practical terms is that now we're trying to generate say pod2man.pl from pod2man.pl.in and @perl@ is expanded to something beyond the "#!" mechanic length limit and recipes start failing to build (fixable by changing pod2man.pl.in to use /usr/bin/env perl (and if it had a -w changing to Use warnings: or whatever the perl is)).

So the problem really is that we have perl in /very-very-long-path/perl? IMO /usr/bin/env change would be better in that case.

author
#3 lore raw
Quoted 12 lines · Roman I Khimov

В сообщении от Среда 28 июля 2010 03:45:21 автор Tom Rini написал:

Quoted 10 lines

I'd like to disable packaged-staging for perl-native. The problem here comes from a number of things that happen. Some of these can only happen in combination with packaged-staging but others I believe could happen today. The problem itself is that if we have perl-native available from packaged-staging it can suddenly exist very early. What this means in practical terms is that now we're trying to generate say pod2man.pl from pod2man.pl.in and @perl@ is expanded to something beyond the "#!" mechanic length limit and recipes start failing to build (fixable by changing pod2man.pl.in to use /usr/bin/env perl (and if it had a -w changing to Use warnings: or whatever the perl is)).

Quoted 1 line

So the problem really is that we have perl in /very-very-long-path/perl? IMO /usr/bin/env change would be better in that case.

The most common case is that one, yes. I'm open to suggestions on catching and fixing these problems ahead of time but the issue is we're talking about for example wget which has no dependency on perl-native.

Signature · 2 lines
Tom Rini
Mentor Graphics Corporation
author
#4 lore raw
Quoted 13 lines · Tom Rini
Quoted 12 lines · Roman I Khimov

В сообщении от Среда 28 июля 2010 03:45:21 автор Tom Rini написал:

Quoted 10 lines

I'd like to disable packaged-staging for perl-native. The problem here comes from a number of things that happen. Some of these can only happen in combination with packaged-staging but others I believe could happen today. The problem itself is that if we have perl-native available from packaged-staging it can suddenly exist very early. What this means in practical terms is that now we're trying to generate say pod2man.pl from pod2man.pl.in and @perl@ is expanded to something beyond the "#!" mechanic length limit and recipes start failing to build (fixable by changing pod2man.pl.in to use /usr/bin/env perl (and if it had a -w changing to Use warnings: or whatever the perl is)).

Quoted 3 lines
Quoted 1 line

So the problem really is that we have perl in /very-very-long-path/perl? IMO /usr/bin/env change would be better in that case.

The most common case is that one, yes. I'm open to suggestions on catching and fixing these problems ahead of time but the issue is we're talking about for example wget which has no dependency on perl-native.

As I go over the list of stuff to get a "1.0" of relocatable packaged staging done, ping? Blacklist perl-native for now or someone suggest how to catch and fixup all the cases to be /usr/bin/env perl ? iirc just setting ac_cv...="/usr/bin/env perl" won't do it since we end up trying to invoke /usr/bin/env perl -w sometimes and that's an error.

Signature · 2 lines
Tom Rini
Mentor Graphics Corporation
#5 lore raw

В сообщении от Четверг 12 августа 2010 21:12:22 автор Tom Rini написал:

Quoted 22 lines
Quoted 13 lines · Tom Rini
Quoted 12 lines · Roman I Khimov

В сообщении от Среда 28 июля 2010 03:45:21 автор Tom Rini написал:

Quoted 10 lines

I'd like to disable packaged-staging for perl-native. The problem here comes from a number of things that happen. Some of these can only happen in combination with packaged-staging but others I believe could happen today. The problem itself is that if we have perl-native available from packaged-staging it can suddenly exist very early. What this means in practical terms is that now we're trying to generate say pod2man.pl from pod2man.pl.in and @perl@ is expanded to something beyond the "#!" mechanic length limit and recipes start failing to build (fixable by changing pod2man.pl.in to use /usr/bin/env perl (and if it had a -w changing to Use warnings: or whatever the perl is)).

Quoted 7 lines
Quoted 3 lines

So the problem really is that we have perl in /very-very-long-path/perl? IMO /usr/bin/env change would be better in that case.

The most common case is that one, yes. I'm open to suggestions on catching and fixing these problems ahead of time but the issue is we're talking about for example wget which has no dependency on perl-native.

Quoted 5 lines

As I go over the list of stuff to get a "1.0" of relocatable packaged staging done, ping? Blacklist perl-native for now or someone suggest how to catch and fixup all the cases to be /usr/bin/env perl ? iirc just setting ac_cv...="/usr/bin/env perl" won't do it since we end up trying to invoke /usr/bin/env perl -w sometimes and that's an error.

Well, IMO, blacklisting just doesn't fix the problem here if the problem is /long/long/long/path/to/perl. Because whether from packaged staging or from really built perl-native the perl will be there anyway and so is the chance of breakage.

Maybe some automatic

$ sed -ri "s,#!.\s*${STAGING_NATIVE_BINDIR}/perl,#!/usr/bin/env perl,"

somewhere (and probably something more hacky to only catch the first line)?

Signature · 3 lines
 http://roman.khimov.ru
mailto: [email protected]
gpg --keyserver hkp://subkeys.pgp.net --recv-keys 0xE5E055C3
author
#6 lore raw
Quoted 20 lines · Roman I Khimov

В сообщении от Четверг 12 августа 2010 21:12:22 автор Tom Rini написал:

Quoted 19 lines
Quoted 18 lines · Tom Rini
Quoted 11 lines · Roman I Khimov

В сообщении от Среда 28 июля 2010 03:45:21 автор Tom Rini написал:

Quoted 10 lines

I'd like to disable packaged-staging for perl-native. The problem here comes from a number of things that happen. Some of these can only happen in combination with packaged-staging but others I believe could happen today. The problem itself is that if we have perl-native available from packaged-staging it can suddenly exist very early. What this means in practical terms is that now we're trying to generate say pod2man.pl from pod2man.pl.in and @perl@ is expanded to something beyond the "#!" mechanic length limit and recipes start failing to build (fixable by changing pod2man.pl.in to use /usr/bin/env perl (and if it had a -w changing to Use warnings: or whatever the perl is)).

Quoted 3 lines

So the problem really is that we have perl in /very-very-long-path/perl? IMO /usr/bin/env change would be better in that case.

The most common case is that one, yes. I'm open to suggestions on catching and fixing these problems ahead of time but the issue is we're talking about for example wget which has no dependency on perl-native.

Quoted 7 lines
Quoted 5 lines

As I go over the list of stuff to get a "1.0" of relocatable packaged staging done, ping? Blacklist perl-native for now or someone suggest how to catch and fixup all the cases to be /usr/bin/env perl ? iirc just setting ac_cv...="/usr/bin/env perl" won't do it since we end up trying to invoke /usr/bin/env perl -w sometimes and that's an error.

Well, IMO, blacklisting just doesn't fix the problem here if the problem is /long/long/long/path/to/perl. Because whether from packaged staging or from really built perl-native the perl will be there anyway and so is the chance of breakage.

Yes, it's a very broken thing Today. It's just rarely if ever hit today. But with packaged staging it happens a lot, especially when you have a lot of threads.

Quoted 5 lines

Maybe some automatic

$ sed -ri "s,#!.\s*${STAGING_NATIVE_BINDIR}/perl,#!/usr/bin/env perl,"

somewhere (and probably something more hacky to only catch the first line)?

And it also needs to either change perl -w to Use::Warnings or so, or just drop that out. And hope that everything that might use it is a foo.pl.in. If it is, we could add a mangle_perl hook before do_configure after do_patch, inside of autotools.bbclass (or just make it happen in there?).

Signature · 2 lines
Tom Rini
Mentor Graphics Corporation