Gentoo Archives: gentoo-commits

From: Paul Varner <fuzzyray@g.o>
To: gentoo-commits@l.g.o
Subject: [gentoo-commits] proj/gentoolkit:gentoolkit commit in: bin/
Date: Fri, 25 Feb 2011 16:51:04
Message-Id: 4dfe8e7e2fb3338d3473ddfd59f0f81d003e8cc1.fuzzyray@gentoo
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}"