View | Details | Raw Unified
Collapse All | Expand All

(-) bin/emerge (-12 / +29 lines)
 Lines 342-347    Link Here 
	sub=[]
	sub=[]
	if "--update" in myopts or \
	if "--update" in myopts or \
		"--newuse" in myopts or \
		"--newuse" in myopts or \
		"--reinstall" in myopts or \
		"--noreplace" in myopts or \
		"--noreplace" in myopts or \
		myaction in ("system", "world"):
		myaction in ("system", "world"):
		add.extend(["selective"])
		add.extend(["selective"])
 Lines 1040-1045    Link Here 
		f.end_paragraph(1)
		f.end_paragraph(1)
		f.writer.flush()
		f.writer.flush()
	def _reinstall_for_flags(self, forced_flags,
		orig_use, org_iuse, cur_use, cur_iuse):
		if "--newuse" in self.myopts:
			if org_iuse.symmetric_difference(
				cur_iuse).difference(forced_flags):
				return True
			elif org_iuse.intersection(orig_use) != \
				cur_iuse.intersection(cur_use):
				return True
		elif "changed-use" in self.myopts.get("--reinstall","").split(","):
			if org_iuse.intersection(orig_use) != \
				cur_iuse.intersection(cur_use):
				return True
		return False
	def create(self, mybigkey, myparent=None, addme=1, myuse=None,
	def create(self, mybigkey, myparent=None, addme=1, myuse=None,
		priority=DepPriority(), rev_dep=False, arg=None):
		priority=DepPriority(), rev_dep=False, arg=None):
		"""
		"""
 Lines 1113-1119    Link Here 
			""" If we aren't merging, perform the --newuse check.
			""" If we aren't merging, perform the --newuse check.
			    If the package has new iuse flags or different use flags then if
			    If the package has new iuse flags or different use flags then if
			    --newuse is specified, we need to merge the package. """
			    --newuse is specified, we need to merge the package. """
			if merging==0 and "--newuse" in self.myopts and \
			if merging == 0 and \
				("--newuse" in self.myopts or
				"--reinstall" in self.myopts) and \
				vardbapi.cpv_exists(mykey):
				vardbapi.cpv_exists(mykey):
				pkgsettings.setcpv(mykey, mydb=mydbapi)
				pkgsettings.setcpv(mykey, mydb=mydbapi)
				forced_flags = set()
				forced_flags = set()
 Lines 1124-1135    Link Here 
					mydbapi.aux_get(mykey, ["IUSE"])[0].split()))
					mydbapi.aux_get(mykey, ["IUSE"])[0].split()))
				old_iuse = set(filter_iuse_defaults(
				old_iuse = set(filter_iuse_defaults(
					vardbapi.aux_get(mykey, ["IUSE"])[0].split()))
					vardbapi.aux_get(mykey, ["IUSE"])[0].split()))
				if iuses.symmetric_difference(
				if self._reinstall_for_flags(
					old_iuse).difference(forced_flags):
					forced_flags, old_use, old_iuse, myuse, iuses):
					merging = 1
					merging = 1
				elif old_iuse.intersection(old_use) != \
					iuses.intersection(myuse):
					merging=1
		if addme and merging == 1:
		if addme and merging == 1:
			mybigkey.append("merge")
			mybigkey.append("merge")
 Lines 1595-1601    Link Here 
					if myeb_pkg_matches:
					if myeb_pkg_matches:
						myeb_pkg = portage.best(myeb_pkg_matches)
						myeb_pkg = portage.best(myeb_pkg_matches)
				if myeb_pkg and "--newuse" in self.myopts:
				if myeb_pkg and \
					("--newuse" in self.myopts or \
					"--reinstall" in self.myopts):
					iuses = set(filter_iuse_defaults(
					iuses = set(filter_iuse_defaults(
						bindb.aux_get(myeb_pkg, ["IUSE"])[0].split()))
						bindb.aux_get(myeb_pkg, ["IUSE"])[0].split()))
					old_use = bindb.aux_get(myeb_pkg, ["USE"])[0].split()
					old_use = bindb.aux_get(myeb_pkg, ["USE"])[0].split()
 Lines 1614-1625    Link Here 
					if "--usepkgonly" not in self.myopts and myeb:
					if "--usepkgonly" not in self.myopts and myeb:
						cur_iuse = set(filter_iuse_defaults(
						cur_iuse = set(filter_iuse_defaults(
							portdb.aux_get(myeb, ["IUSE"])[0].split()))
							portdb.aux_get(myeb, ["IUSE"])[0].split()))
					if iuses.symmetric_difference(
					if self._reinstall_for_flags(
						cur_iuse).difference(forced_flags):
						forced_flags, old_use, iuses, now_use, cur_iuse):
						myeb_pkg = None
						myeb_pkg = None
					elif iuses.intersection(old_use) != \
						cur_iuse.intersection(now_use):
						myeb_pkg = None
				if myeb_pkg:
				if myeb_pkg:
					binpkguseflags = \
					binpkguseflags = \
						self.trees[myroot]["bintree"].dbapi.aux_get(
						self.trees[myroot]["bintree"].dbapi.aux_get(
 Lines 5145-5150    Link Here 
			"help":"include unnecessary build time dependencies",
			"help":"include unnecessary build time dependencies",
			"type":"choice",
			"type":"choice",
			"choices":("y", "n")
			"choices":("y", "n")
		},
		"--reinstall": {
			"help":"specify conditions to trigger package reinstallation"
		}
		}
	}
	}