summaryrefslogtreecommitdiff
blob: 6eea85b991de0abfb1b07c7c5ece339210c1f37d (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
From 7d133e58b27253ebc1bcfc16fa45ef91125ccde9 Mon Sep 17 00:00:00 2001
From: Paul Varner <fuzzyray@gentoo.org>
Date: Tue, 20 Nov 2012 11:22:09 -0600
Subject: [PATCH 1/2] Change ufed to use EPREFIX for prefix installs.

---
 Portage.pm         | 26 ++++++++++++++++++--------
 ufed-curses-help.c |  7 +++----
 ufed.8             | 29 +++++++++++++++--------------
 ufed.pl.in         |  6 +++---
 4 files changed, 39 insertions(+), 29 deletions(-)

diff --git a/Portage.pm b/Portage.pm
index 0b02cab..c7e236d 100644
--- a/Portage.pm
+++ b/Portage.pm
@@ -15,7 +15,9 @@ our %default_flags;
 our %make_conf_flags;
 our %archs;
 our %all_flags;
+our $eprefix;
 
+sub get_eprefix();
 sub have_package($);
 sub merge(\%%);
 sub merge_env(\%);
@@ -30,6 +32,7 @@ sub read_profiles();
 sub read_sh($);
 sub read_use_mask();
 
+get_eprefix;
 read_packages;
 read_profiles;
 read_use_mask;
@@ -54,6 +57,13 @@ if($lastorder ne 'conf') {
 	die "Sorry, USE_ORDER without make.conf overriding global USE flags are not currently supported by ufed.\n";
 }
 
+
+sub get_eprefix() {
+	$eprefix = `portageq envvar EPREFIX 2>&1`;
+	die "Couldn't determine EPREFIX from Portage" if $? != 0;
+	chomp($eprefix);
+}
+
 sub have_package($) {
 	my ($cp) = @_;
 	return $packages{$cp};
@@ -130,8 +140,8 @@ sub read_archs() {
 }
 
 sub read_make_conf() {
-	my %env = read_sh "/etc/make.conf";
-	merge (%env, read_sh('/etc/portage/make.conf'));
+	my %env = read_sh "$eprefix/etc/make.conf";
+	merge (%env, read_sh("$eprefix/etc/portage/make.conf"));
 	merge %make_conf_flags, %{$env{USE}} if exists $env{USE};
 	@portagedirs = $environment{PORTDIR};
 	push @portagedirs, split ' ', $environment{PORTDIR_OVERLAY} if defined $environment{PORTDIR_OVERLAY};
@@ -145,13 +155,13 @@ sub read_make_defaults() {
 }
 
 sub read_make_globals() {
-	for my $dir(@profiles, '/usr/share/portage/config') {
+	for my $dir(@profiles, "$eprefix/usr/share/portage/config") {
 		read_sh "$dir/make.globals";
 	}
 }
 
 sub read_packages() {
-	die "Couldn't read /var/db/pkg\n" unless opendir my $pkgdir, '/var/db/pkg';
+	die "Couldn't read $eprefix/var/db/pkg\n" unless opendir my $pkgdir, "$eprefix/var/db/pkg";
 	while(my $cat = readdir $pkgdir) {
 		next if $cat eq '.' or $cat eq '..';
 		next unless opendir my $catdir, "/var/db/pkg/$cat";
@@ -199,16 +209,16 @@ sub read_packages() {
 }
 
 sub read_profiles() {
-	$_ = readlink '/etc/make.profile';
-	$_ = readlink '/etc/portage/make.profile' if not defined $_;
-	die "/etc\{,/portage\}/make.profile is not a symlink\n" if not defined $_;
+	$_ = readlink "$eprefix/etc/make.profile";
+	$_ = readlink "$eprefix/etc/portage/make.profile" if not defined $_;
+	die "$eprefix/etc\{,/portage\}/make.profile is not a symlink\n" if not defined $_;
 	@profiles = norm_path '/etc', $_;
 	for (my $i = -1; $i >= -@profiles; $i--) {
 		for(noncomments "$profiles[$i]/parent") {
 			splice @profiles, $i, 0, norm_path $profiles[$i], $_;
 		}
 	}
-	push @profiles, '/etc/portage/profile';
+	push @profiles, "$eprefix/etc/portage/profile";
 }
 
 sub read_sh($) {
diff --git a/ufed-curses-help.c b/ufed-curses-help.c
index 19679bb..79bd35e 100644
--- a/ufed-curses-help.c
+++ b/ufed-curses-help.c
@@ -40,11 +40,10 @@ static void init_lines(void) {
 "Each USE flag has a 2 character descriptor that represents the two "
 "ways a use flag can be set.",
 "",
-"The 1st char is the setting from the /etc/make.profile/make.defaults "
-"file. These are the defaults for Gentoo as a whole. These should not be "
-"changed.",
+"The 1st char is the setting from the make.defaults file. These are "
+"the defaults for Gentoo as a whole. These should not be changed.",
 "",
-"The 2nd char is the settings from the /etc/make.conf file. these are "
+"The 2nd char is the settings from the make.conf file. these are "
 "the only ones that should be changed by the user and these are the ones "
 "that ufed changes.",
 "",
diff --git a/ufed.8 b/ufed.8
index 7d7fe50..4c55c29 100644
--- a/ufed.8
+++ b/ufed.8
@@ -12,15 +12,14 @@ UFED attempts to show you where a  particular use setting came from.  Each USE
 flag has a 3 character descriptor that represents the three ways a use flag can
 be set.
 
-The 1st char is the setting from the /etc/make.profile/make.defaults file.
-These are the defaults for Gentoo as a whole. These should not be changed.
+The 1st char is the setting from the make.defaults file.  These are the defaults
+for Gentoo as a whole. These should not be changed.
 
-The 2nd char is the setting from the /etc/make.profile/use.defaults file. These
-will change as packages are added and removes from the system.
+The 2nd char is the setting from the use.defaults file. These will change as
+packages are added and removes from the system.
 
-The 3rd char is the settings from the /etc/make.conf file. these are the only
-ones that should be changed by the user and these are the ones that UFED
-changes.
+The 3rd char is the settings from the make.conf file. these are the only ones
+that should be changed by the user and these are the ones that UFED changes.
 
 If the character is a + then that USE flag was set in that file, if it is a
 space then the flag was not mentioned in that file and if it is a - then that
@@ -64,25 +63,27 @@ Please report bugs via http://bugs.gentoo.org/
 .BR make.conf (5)
 .SH "FILES"
 .TP
-\fB/etc/make.conf\fR 
+\fB@GENTOO_PORTAGE_EPREFIX@/etc/make.conf\fR 
+\fB@GENTOO_PORTAGE_EPREFIX@/etc/portage/make.conf\fR 
 Contains user specified USE flags
 .TP
-\fB/etc/make.conf.old \fR
+\fB@GENTOO_PORTAGE_EPREFIX@/etc/make.conf.old \fR
+\fB@GENTOO_PORTAGE_EPREFIX@/etc/portage/make.conf.old \fR
 This is where ufed places a backup of your make.conf file.
 .TP
-\fB/etc/make.profile/make.defaults\fR
+\fB@GENTOO_PORTAGE_EPREFIX@/etc/make.profile/make.defaults\fR
 Contains system default USE flags
 .TP
-\fB/etc/make.profile/use.defaults\fR
+\fB@GENTOO_PORTAGE_EPREFIX@/etc/make.profile/use.defaults\fR
 Provides an automatic ebuild to USE flag mapping ('auto' flags)
 .TP
-\fB/etc/make.profile/use.mask\fR
+\fB@GENTOO_PORTAGE_EPREFIX@/etc/make.profile/use.mask\fR
 Restricted USE flags
 .TP
-\fB/usr/portage/profiles/use.desc\fR
+\fB@GENTOO_PORTAGE_EPREFIX@/usr/portage/profiles/use.desc\fR
 Description strings for global USE flags
 .TP
-\fB/usr/portage/profiles/use.local.desc\fR
+\fB@GENTOO_PORTAGE_EPREFIX@/usr/portage/profiles/use.local.desc\fR
 Description strings for local USE flags
 .SH "AUTHORS"
 Robin Johnson <robbat2@gentoo.org>
diff --git a/ufed.pl.in b/ufed.pl.in
index 7493147..3435dae 100644
--- a/ufed.pl.in
+++ b/ufed.pl.in
@@ -29,7 +29,7 @@ for(keys %Portage::all_flags) {
 	@{$use_descriptions{$_}} = "(Unknown)"
 	if not exists $use_descriptions{$_};
 }
-@{$use_descriptions{'-*'}} = 'Never enable any flags other than those specified in /etc/make.conf';
+@{$use_descriptions{'-*'}} = 'Never enable any flags other than those specified in make.conf';
 
 for(@Portage::archs) {
 	delete $Portage::default_flags{$_};
@@ -155,8 +155,8 @@ sub save_flags(@) {
 	my (@flags) = @_;
 	my $contents;
 
-	my $makeconf_name = '/etc/portage/make.conf';
-	$makeconf_name = '/etc/make.conf' unless(-r $makeconf_name);
+	my $makeconf_name = "$Portage::eprefix/etc/portage/make.conf";
+	$makeconf_name = "$Portage::eprefix/etc/make.conf" unless(-r $makeconf_name);
 	{
 		open my $makeconf, '<', $makeconf_name or die "Couldn't open $makeconf_name\n";
 		open my $makeconfold, '>', $makeconf_name . '.old' or die "Couldn't open $makeconf_name.old\n";
-- 
1.8.0