echo "!!! ${0##*/}: $x does not exist" 1>&2
false
fi
- ((ret+=$?))
+ ((ret|=$?))
done
exit ${ret}
ecompress --queue "${dir}/${x##*/}"
elif [ ! -e "${x}" ] ; then
echo "!!! ${0##*/}: $x does not exist" 1>&2
- ((++ret))
+ ((ret|=1))
fi
done
echo "!!! ${0##*/}: $mysrc does not exist" 1>&2
false
fi
- ((ret+=$?))
+ ((ret|=$?))
done
rm -rf "$TMP"
mv "$TMP/1/$x_orig" "$x"
fi
while popd >/dev/null 2>&1 ; do true ; done
- ((++success))
+ ((success|=1))
else
- _doins "${x}" && ((++success))
+ _doins "${x}" && ((success|=1))
fi
done
rm -rf "$TMP"
echo "!!! ${0##*/}: ${x} does not exist" 1>&2
false
fi
- ((ret+=$?))
+ ((ret|=$?))
done
exit ${ret}
fi
install -m0644 "${x}" "${ED}/usr/share/man/${mandir}/${name}"
- ((ret+=$?))
+ ((ret|=$?))
elif [[ ! -e ${x} ]] ; then
echo "!!! ${0##*/}: $x does not exist" 1>&2
- ((++ret))
+ ((ret|=1))
fi
else
vecho "doman: '${x}' is probably not a man page; skipping" 1>&2
- ((++ret))
+ ((ret|=1))
fi
done
echo "!!! ${0##*/}: $x does not exist" 1>&2
false
fi
- ((ret+=$?))
+ ((ret|=$?))
done
exit $ret
echo "!!! ${0##*/}: ${x} does not exist" 1>&2
false
fi
- ((ret+=$?))
+ ((ret|=$?))
done
exit ${ret}
echo "${y} is not a regular file!" >&2
false
fi
- ((ret+=$?))
+ ((ret|=$?))
else
mysed="${x}"
fi
if [ $file_found = 0 ] ; then
echo "!!! ${0##*/}: $y does not exist" 1>&2
- ((ret+=1))
+ ((ret|=1))
fi
exit $ret
for x in "$@" ; do
[[ ${x##*.} =~ $mask_ext_re ]] && continue
filtered_args[$i]=$x
- (( i++ ))
+ ((i|=1))
done
[ $i -eq 0 ] && exit 0
set -- "${filtered_args[@]}"
# first we act on all the files
find "${dir}" -type f ${negate} -iname '*'${suffix} -print0 | ${XARGS} -0 ${binary}
- ((ret+=$?))
+ ((ret|=$?))
find "${dir}" -type l -print0 | \
while read -d $'\0' brokenlink ; do
[[ ${act} == "compress" ]] \
&& ln -snf "${newdest}" "${brokenlink}${suffix}" \
|| ln -snf "${newdest}" "${brokenlink%${suffix}}"
- ((ret+=$?))
+ ((ret|=$?))
done
}
while read mandir ; do
mandir=${mandir#${ED}}
prepman "${mandir%/man}"
- ((ret+=$?))
+ ((ret|=$?))
done < "${T}"/prepallman.filelist
exit ${ret}
if pkg.installed:
action_desc = "Uninstalling"
preposition = "from"
+ counter_str = ""
else:
action_desc = "Installing"
preposition = "to"
+ counter_str = "(%s of %s) " % \
+ (colorize("MERGE_LIST_PROGRESS", str(pkg_count.curval)),
+ colorize("MERGE_LIST_PROGRESS", str(pkg_count.maxval)))
- msg = "%s %s" % (action_desc, colorize("GOOD", pkg.cpv))
+ msg = "%s %s%s" % \
+ (action_desc,
+ counter_str,
+ colorize("GOOD", pkg.cpv))
if pkg.root != "/":
msg += " %s %s" % (preposition, pkg.root)
class _iface_class(SlotObject):
__slots__ = ("dblinkEbuildPhase", "dblinkDisplayMerge",
- "dblinkElog", "fetch", "register", "schedule",
+ "dblinkElog", "dblinkEmergeLog", "fetch", "register", "schedule",
"scheduleSetup", "scheduleUnpack", "scheduleYield",
"unregister")
dblinkEbuildPhase=self._dblink_ebuild_phase,
dblinkDisplayMerge=self._dblink_display_merge,
dblinkElog=self._dblink_elog,
+ dblinkEmergeLog=self._dblink_emerge_log,
fetch=fetch_iface, register=self._register,
schedule=self._schedule_wait,
scheduleSetup=self._schedule_setup,
if log_file is not None:
log_file.close()
+ def _dblink_emerge_log(self, msg):
+ self._logger.log(msg)
+
def _dblink_display_merge(self, pkg_dblink, msg, level=0, noiselevel=0):
log_path = pkg_dblink.settings.get("PORTAGE_LOG_FILE")
background = self._background
if var_name == 'SLOT':
slot = val
+ if not slot.strip():
+ slot = self.settings.get(var_name, '')
+ if not slot.strip():
+ showMessage("!!! SLOT is undefined\n",
+ level=logging.ERROR, noiselevel=-1)
+ return 1
+ write_atomic(os.path.join(inforoot, var_name), slot + '\n')
+
if val != self.settings.get(var_name, ''):
self._eqawarn('preinst',
["QA Notice: Expected %s='%s', got '%s'\n" % \
for v in self.vartree.dbapi.cp_list(self.mysplit[0]):
otherversions.append(v.split("/")[1])
+ cp = self.mysplit[0]
+ slot_atom = "%s:%s" % (cp, slot)
+
# filter any old-style virtual matches
- slot_matches = [cpv for cpv in self.vartree.dbapi.match(
- "%s:%s" % (cpv_getkey(self.mycpv), slot)) \
- if cpv_getkey(cpv) == cpv_getkey(self.mycpv)]
+ slot_matches = [cpv for cpv in self.vartree.dbapi.match(slot_atom) \
+ if cpv_getkey(cpv) == cp]
if self.mycpv not in slot_matches and \
self.vartree.dbapi.cpv_exists(self.mycpv):
match_from_list(PORTAGE_PACKAGE_ATOM, [self.mycpv]):
reinstall_self = True
+ if scheduler is None:
+ def emerge_log(msg):
+ pass
+ else:
+ emerge_log = scheduler.dblinkEmergeLog
+
autoclean = self.settings.get("AUTOCLEAN", "yes") == "yes"
+
+ if autoclean:
+ emerge_log(" >>> AUTOCLEAN: %s" % (slot_atom,))
+
others_in_slot.append(self) # self has just been merged
for dblnk in list(others_in_slot):
if dblnk is self:
if not (autoclean or dblnk.mycpv == self.mycpv or reinstall_self):
continue
showMessage(">>> Safely unmerging already-installed instance...\n")
+ emerge_log(" === Unmerging... (%s)" % (dblnk.mycpv,))
others_in_slot.remove(dblnk) # dblnk will unmerge itself now
dblnk._linkmap_broken = self._linkmap_broken
- dblnk.unmerge(trimworld=0, ldpath_mtimes=prev_mtimes,
- others_in_slot=others_in_slot)
+ unmerge_rval = dblnk.unmerge(trimworld=0,
+ ldpath_mtimes=prev_mtimes, others_in_slot=others_in_slot)
+
+ if unmerge_rval == os.EX_OK:
+ emerge_log(" >>> unmerge success: %s" % (dblnk.mycpv,))
+ else:
+ emerge_log(" !!! unmerge FAILURE: %s" % (dblnk.mycpv,))
+
# TODO: Check status and abort if necessary.
dblnk.delete()
showMessage(">>> Original instance of package unmerged safely.\n")