summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'app-portage/ufed/files/ufed-0.90_rc2-get_portdir_from_portageq.patch')
-rw-r--r--app-portage/ufed/files/ufed-0.90_rc2-get_portdir_from_portageq.patch99
1 files changed, 99 insertions, 0 deletions
diff --git a/app-portage/ufed/files/ufed-0.90_rc2-get_portdir_from_portageq.patch b/app-portage/ufed/files/ufed-0.90_rc2-get_portdir_from_portageq.patch
new file mode 100644
index 000000000000..b66398a824f6
--- /dev/null
+++ b/app-portage/ufed/files/ufed-0.90_rc2-get_portdir_from_portageq.patch
@@ -0,0 +1,99 @@
+--- a/Portage.pm 2013-09-11 08:34:10.792161194 +0200
++++ b/Portage.pm 2013-09-11 09:00:45.737142232 +0200
+@@ -46,11 +46,13 @@
+ our $used_make_conf = "";
+
+ # --- private members ---
+-my %_environment = ();
+-my $_EPREFIX = "";
+-my @_profiles = ();
+-my %_use_eh_safe = (); ## USE_EXPAND_HIDDEN safe hash. See _read_make_defaults()
+-my %_use_order = ();
++my %_environment = ();
++my $_EPREFIX = "";
++my $_PORTDIR = "";
++my $_PORTDIR_OVERLAY = "";
++my @_profiles = ();
++my %_use_eh_safe = (); ## USE_EXPAND_HIDDEN safe hash. See _read_make_defaults()
++my %_use_order = ();
+
+ # $_use_temp - hashref that represents the current state of
+ # all known flags. This is for data gathering, the public
+@@ -87,7 +89,7 @@
+ # --- private methods ---
+ sub _add_flag;
+ sub _add_temp;
+-sub _determine_eprefix;
++sub _determine_eprefix_portdir;
+ sub _determine_make_conf;
+ sub _determine_profiles;
+ sub _final_cleaning;
+@@ -112,7 +114,7 @@
+ # --- Package initialization ---
+ INIT {
+ $_environment{$_} = {} for qw{USE USE_EXPAND USE_EXPAND_HIDDEN};
+- _determine_eprefix;
++ _determine_eprefix_portdir;
+ _determine_make_conf;
+ _determine_profiles;
+ _read_make_globals;
+@@ -223,14 +225,29 @@
+ }
+
+
+-# Determine the value for EPREFIX and save it
+-# in $_EPREFIX. This is done using 'portageq'.
++# Determine the values for EPREFIX, PORTDIR
++# and PORTDIR_OVERLAY. These are saved in
++# $_EPREFIX, $_PORTDIR and $_PORTDIR_OVERLAY.
++# This is done using 'portageq'.
+ # Other output from portageq is printed on
+ # STDERR.
+ # No parameters accepted.
+-sub _determine_eprefix {
++sub _determine_eprefix_portdir {
+ my $tmp = "/tmp/ufed_$$.tmp";
+- $_EPREFIX = qx{portageq envvar EPREFIX 2>$tmp};
++ my @res = map {
++ my $x = $_;
++ chomp $x;
++ $x =~ s/'//g;
++ $x
++ } qx{portageq envvar -v EPREFIX PORTDIR PORTDIR_OVERLAY 2>$tmp};
++
++ while (my $res = shift @res) {
++ if ($res =~ /^(.*)=(.*)$/) {
++ "EPREFIX" eq $1 and $_EPREFIX = $2;
++ "PORTDIR" eq $1 and $_PORTDIR = $2;
++ "PORTDIR_OVERLAY" eq $1 and $_PORTDIR_OVERLAY = $2;
++ }
++ }
+ die "Couldn't determine EPREFIX from Portage" if $? != 0;
+
+ if ( -s $tmp ) {
+@@ -241,7 +258,6 @@
+ }
+ -e $tmp and unlink $tmp;
+
+- chomp($_EPREFIX);
+ return;
+ }
+
+@@ -631,13 +647,11 @@
+ }
+
+ # Add PORTDIR and overlays to @_profiles
+- defined ($_environment{PORTDIR})
+- and push @_profiles, "$_environment{PORTDIR}/profiles"
++ length ($_PORTDIR)
++ and push @_profiles, "${_PORTDIR}/profiles"
+ or die("Unable to determine PORTDIR!\nSomething is seriously broken here!\n");
+- defined ($_environment{PORTDIR_OVERLAY})
+- and push @_profiles,
+- map { my $x=$_; $x =~ s/^\s*(\S+)\s*$/$1\/profiles/mg ; $x }
+- split('\n', $_environment{PORTDIR_OVERLAY});
++ length ($_PORTDIR_OVERLAY)
++ and push @_profiles, split(' ', $_PORTDIR_OVERLAY);
+ -e "${_EPREFIX}/etc/portage/profile"
+ and push @_profiles, "${_EPREFIX}/etc/portage/profile";
+ return;