1 |
commit: 4dfe8e7e2fb3338d3473ddfd59f0f81d003e8cc1 |
2 |
Author: Paul Varner <fuzzyray <AT> gentoo <DOT> org> |
3 |
AuthorDate: Fri Feb 25 16:21:04 2011 +0000 |
4 |
Commit: Paul Varner <fuzzyray <AT> gentoo <DOT> org> |
5 |
CommitDate: Fri Feb 25 16:21:04 2011 +0000 |
6 |
URL: http://git.overlays.gentoo.org/gitweb/?p=proj/gentoolkit.git;a=commit;h=4dfe8e7e |
7 |
|
8 |
Apply latest changes from Jared Hancock |
9 |
|
10 |
Fixes described issues from: |
11 |
http://bugs.gentoo.org/show_bug.cgi?id=259318#c88 |
12 |
|
13 |
"It's now more vocal when handling global flags, and does not indicate |
14 |
make.conf was edited if it was not. Actually, more specifically, it |
15 |
does not modify make.conf unnecessarily. (As before, it modified |
16 |
make.conf every time regardless of whether or not it changed anything) |
17 |
|
18 |
Also fixed the issue with removing and disabling multiple flags for a |
19 |
package." |
20 |
|
21 |
--- |
22 |
bin/euse | 121 ++++++++++++++++++++++++------------------------------------- |
23 |
1 files changed, 48 insertions(+), 73 deletions(-) |
24 |
|
25 |
diff --git a/bin/euse b/bin/euse |
26 |
index 175febb..10e9044 100755 |
27 |
--- a/bin/euse |
28 |
+++ b/bin/euse |
29 |
@@ -936,11 +936,13 @@ add_flag() { |
30 |
return 1 |
31 |
else |
32 |
NEW_MAKE_CONF_USE="${NEW_MAKE_CONF_USE} ${1}" |
33 |
+ echo "Adding flag \"${1}\" to make.conf" >&2 |
34 |
fi |
35 |
} |
36 |
|
37 |
remove_flag() { |
38 |
NEW_MAKE_CONF_USE="${NEW_MAKE_CONF_USE// ${1} / }" |
39 |
+ echo "Removing flag \"${1}\" from make.conf" >&2 |
40 |
} |
41 |
|
42 |
# Function: clean_package_use {{{ |
43 |
@@ -1035,6 +1037,7 @@ modify_package() { |
44 |
while [[ -n ${2} ]]; do |
45 |
shift |
46 |
local flag=${1} |
47 |
+ local method="add" |
48 |
ACTIVE="-" |
49 |
# |
50 |
# Fetch flag ACTIVE status (+,-,null) |
51 |
@@ -1045,8 +1048,15 @@ modify_package() { |
52 |
get_flagstatus_pkg "${flag}" "${pkg}" "${ACTIVE}" "${V}" > /dev/null |
53 |
# |
54 |
# --- Sanity checks |
55 |
- # (1) make sure ${pkg} exists in portdir |
56 |
- if [[ ! -d "$(get_portdir)/${pkg}" ]]; then |
57 |
+ # (1) make sure ${pkg} exists in portdir or an overlay |
58 |
+ local exists=1 |
59 |
+ for portdir in ${ALL_PORTDIRS[@]}; do |
60 |
+ if [[ -d "${portdir}/${pkg}" ]]; then |
61 |
+ exists=0 |
62 |
+ break |
63 |
+ fi |
64 |
+ done |
65 |
+ if [[ $exists == 1 ]]; then |
66 |
fatal "Package \"${pkg}\" does not exist" |
67 |
# |
68 |
# (2) make sure ${flag} is defined in get_useflaglist |
69 |
@@ -1067,66 +1077,24 @@ modify_package() { |
70 |
error "Invalid package atom. Did you forget the version?" |
71 |
continue |
72 |
fi |
73 |
- # If flag is enabled in portage USE flags (emerge --info), |
74 |
- # then "remove"ing the flag should be replaced with adding |
75 |
- # the negative flag instead |
76 |
+ # If removing a disabled flag, or addind an enabled one, emit a warning, |
77 |
+ # indicating a likely misunderstanding |
78 |
if [[ "${ACTION}" == "remove" ]]; then |
79 |
- if [[ "${ACTIVE:-${GLOBAL_ACTIVE}}" == "+" ]]; then |
80 |
- if [[ -n $(echo "${ACTIVE_FLAGS[4]}" | grep "^$PACKAGE" \ |
81 |
- | grep " $flag") ]]; then |
82 |
- iuse=$(echo "${ACTIVE_FLAGS[5]} " | grep -Ee "^${pkg_re}" \ |
83 |
- | cut -d ";" -f4 | egrep -o "[+-]?${flag}") |
84 |
- # Ensure the flag is enabled in the ebuild _and_ in package.use, |
85 |
- # if so, enable it in package.use |
86 |
- if [[ "${iuse}" =~ "+" ]]; then |
87 |
- # The flag is currently enabled in the ebuild, so add a |
88 |
- # disablement |
89 |
- flag="-${flag}" |
90 |
- ACTION="add" |
91 |
- fi |
92 |
- else |
93 |
- # Not enabled in package.use, so disable it there |
94 |
- flag="-${flag}" |
95 |
- ACTION="add" |
96 |
- fi |
97 |
- else |
98 |
- error "USE flag \"$flag\" is already disabled for $PACKAGE" |
99 |
- continue |
100 |
+ if [[ "${ACTIVE:-${GLOBAL_ACTIVE}}" == "-" ]]; then |
101 |
+ warn "USE flag \"$flag\" is already disabled for $PACKAGE" |
102 |
fi |
103 |
+ flag="-${flag}" |
104 |
elif [[ "${ACTION}" == "prune" ]]; then |
105 |
# Just remove the flag below |
106 |
[[ "${ACTIVE}" == "-" ]] && flag="-${flag}" |
107 |
- ACTION="remove" |
108 |
- # If flag is currently disabled for the package requested |
109 |
- # to be enabled in, then "remove" the negative |
110 |
+ method="remove" |
111 |
elif [[ "${ACTION}" == "add" ]]; then |
112 |
- if [[ "${ACTIVE}" == "-" ]]; then |
113 |
- # If flag is masked, it should be added to package.mask, instead |
114 |
- # of package.use. For now, yield a warning and quit |
115 |
- if [[ -n $(echo " ${ACTIVE_FLAGS[6]}" | grep " -${flag} ") ]]; then |
116 |
- error "USE flag \"$flag\" is masked. Enabling in package.use will" \ |
117 |
- "\nbe ineffective. You may have an incorrect profile selected." |
118 |
- continue |
119 |
- elif [[ -n $(echo "${ACTIVE_FLAGS[4]}" | grep "^$PACKAGE" \ |
120 |
- | grep " -$flag") ]]; then |
121 |
- iuse=$(echo "${ACTIVE_FLAGS[5]} " | grep -Ee "^${pkg_re}" \ |
122 |
- | cut -d ";" -f4 | egrep -o "[+-]?${flag}") |
123 |
- # Ensure the flag is disabled in the ebuild _and_ in package.use, |
124 |
- # if so, enable it in package.use |
125 |
- if [[ "${iuse}" =~ "+" ]]; then |
126 |
- # The flag is currently disabled by package.use only, so remove the |
127 |
- # disablement |
128 |
- flag="-${flag}" |
129 |
- ACTION="remove" |
130 |
- fi |
131 |
- fi |
132 |
- elif [[ "${ACTIVE:-${GLOBAL_ACTIVE:--}}" == "+" ]]; then |
133 |
+ if [[ "${ACTIVE:-${GLOBAL_ACTIVE:--}}" == "+" ]]; then |
134 |
# XXX: Perhaps look at indicating where it is enabled |
135 |
- error "USE flag \"$flag\" is already enabled for $PACKAGE" |
136 |
- continue |
137 |
+ warn "USE flag \"$flag\" is already enabled for $PACKAGE" |
138 |
fi |
139 |
fi |
140 |
- case "${ACTION}" in |
141 |
+ case "${method}" in |
142 |
"add") |
143 |
local filename |
144 |
if [[ -d ${PACKAGE_USE_PATH} ]]; then |
145 |
@@ -1198,6 +1166,8 @@ modify() { |
146 |
return; |
147 |
fi; |
148 |
|
149 |
+ local make_conf_modified=0 |
150 |
+ |
151 |
if [ -z "${*}" ]; then |
152 |
if [ "${ACTION}" != "prune" ]; then |
153 |
echo "WARNING: no USE flags listed for modification, do you really" |
154 |
@@ -1212,41 +1182,45 @@ modify() { |
155 |
|
156 |
NEW_MAKE_CONF_USE=" ${ACTIVE_FLAGS[1]} " |
157 |
|
158 |
- while [ -n "${1}" ]; do |
159 |
- if [ "${ACTION}" == "add" ]; then |
160 |
- if echo " ${NEW_MAKE_CONF_USE} " | grep " ${1} " > /dev/null; then |
161 |
+ while [[ -n "${1}" ]]; do |
162 |
+ if [[ "${ACTION}" == "add" ]]; then |
163 |
+ if [[ -n $(grep " ${1} " <<< " ${NEW_MAKE_CONF_USE} ") ]]; then |
164 |
+ warn "Use flag \"${1}\" is already enabled globally" |
165 |
shift |
166 |
- elif echo " ${NEW_MAKE_CONF_USE} " | grep " -${1} " > /dev/null; then |
167 |
- remove_flag "-${1}" |
168 |
+ elif [[ -n $(grep " -${1} " <<< " ${NEW_MAKE_CONF_USE} ") ]]; then |
169 |
+ remove_flag "-${1}" || exit |
170 |
+ make_conf_modified=1 |
171 |
else |
172 |
add_flag "${1}" || exit |
173 |
+ make_conf_modified=1 |
174 |
shift |
175 |
fi |
176 |
- elif [ "${ACTION}" == "remove" ]; then |
177 |
- if echo " ${NEW_MAKE_CONF_USE} " | grep " -${1} " > /dev/null; then |
178 |
+ elif [[ "${ACTION}" == "remove" ]]; then |
179 |
+ if [[ -n $(grep " -${1} " <<< " ${NEW_MAKE_CONF_USE} ") ]]; then |
180 |
+ warn "Use flag \"${1}\" is already disabled globally" |
181 |
shift |
182 |
- elif echo " ${NEW_MAKE_CONF_USE} " | grep " ${1} " > /dev/null; then |
183 |
- remove_flag "${1}" |
184 |
+ elif [[ -n $(grep " ${1} " <<< " ${NEW_MAKE_CONF_USE} ") ]]; then |
185 |
+ remove_flag "${1}" || exit |
186 |
+ make_conf_modified=1 |
187 |
else |
188 |
add_flag "-${1}" || exit |
189 |
+ make_conf_modified=1 |
190 |
shift |
191 |
fi |
192 |
- elif [ "${ACTION}" == "prune" ]; then |
193 |
- if echo " ${NEW_MAKE_CONF_USE} " | grep " ${1} " > /dev/null; then |
194 |
- remove_flag "${1}" |
195 |
- elif echo " ${NEW_MAKE_CONF_USE} " | grep " -${1} " > /dev/null; then |
196 |
- remove_flag "-${1}" |
197 |
+ elif [[ "${ACTION}" == "prune" ]]; then |
198 |
+ if [[ -n $(grep " ${1} " <<< " ${NEW_MAKE_CONF_USE} ") ]]; then |
199 |
+ remove_flag "${1}" || exit |
200 |
+ make_conf_modified=1 |
201 |
+ elif [[ -n $(grep " -${1} " <<< " ${NEW_MAKE_CONF_USE} ") ]]; then |
202 |
+ remove_flag "-${1}" || exit |
203 |
+ make_conf_modified=1 |
204 |
+ else |
205 |
+ warn "Use flag \"${1}\" is not set globally" |
206 |
fi |
207 |
shift |
208 |
fi |
209 |
done |
210 |
|
211 |
- #echo "old flags:" |
212 |
- #echo ${ACTIVE_FLAGS[1]} |
213 |
- #echo |
214 |
- #echo "new flags:" |
215 |
- #echo ${NEW_MAKE_CONF_USE} |
216 |
- |
217 |
# a little loop to add linebreaks so we don't end with one ultra-long line |
218 |
NEW_MAKE_CONF_USE_2="" |
219 |
for x in ${NEW_MAKE_CONF_USE}; do |
220 |
@@ -1257,6 +1231,7 @@ modify() { |
221 |
fi |
222 |
done |
223 |
|
224 |
+ [[ ${make_conf_modified} == 1 ]] || return |
225 |
# make a backup just in case the user doesn't like the new make.conf |
226 |
cp -p "${MAKE_CONF_PATH}" "${MAKE_CONF_BACKUP_PATH}" |