Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
View | Details | Raw Unified | Return to bug 317337 | Differences between
and this patch

Collapse All | Expand All

(-)portage-2.1.11.17/bin/ebuild.sh (-7 / +20 lines)
Lines 221-226 Link Here
221
	local B_DEPEND
221
	local B_DEPEND
222
	local B_RDEPEND
222
	local B_RDEPEND
223
	local B_PDEPEND
223
	local B_PDEPEND
224
	local B_HDEPEND
224
	while [ "$1" ]; do
225
	while [ "$1" ]; do
225
		location="${ECLASSDIR}/${1}.eclass"
226
		location="${ECLASSDIR}/${1}.eclass"
226
		olocation=""
227
		olocation=""
Lines 263-282 Link Here
263
				EBUILD_OVERLAY_ECLASSES="${EBUILD_OVERLAY_ECLASSES} ${location}"
264
				EBUILD_OVERLAY_ECLASSES="${EBUILD_OVERLAY_ECLASSES} ${location}"
264
		fi
265
		fi
265
266
266
		#We need to back up the value of DEPEND and RDEPEND to B_DEPEND and B_RDEPEND
267
		#We need to back up the values of *DEPEND to B_*DEPEND
267
		#(if set).. and then restore them after the inherit call.
268
		#(if set).. and then restore them after the inherit call.
268
269
269
		#turn off glob expansion
270
		#turn off glob expansion
270
		set -f
271
		set -f
271
272
272
		# Retain the old data and restore it later.
273
		# Retain the old data and restore it later.
273
		unset B_IUSE B_REQUIRED_USE B_DEPEND B_RDEPEND B_PDEPEND
274
		unset B_IUSE B_REQUIRED_USE B_DEPEND B_RDEPEND B_PDEPEND B_HDEPEND
274
		[ "${IUSE+set}"       = set ] && B_IUSE="${IUSE}"
275
		[ "${IUSE+set}"       = set ] && B_IUSE="${IUSE}"
275
		[ "${REQUIRED_USE+set}" = set ] && B_REQUIRED_USE="${REQUIRED_USE}"
276
		[ "${REQUIRED_USE+set}" = set ] && B_REQUIRED_USE="${REQUIRED_USE}"
276
		[ "${DEPEND+set}"     = set ] && B_DEPEND="${DEPEND}"
277
		[ "${DEPEND+set}"     = set ] && B_DEPEND="${DEPEND}"
277
		[ "${RDEPEND+set}"    = set ] && B_RDEPEND="${RDEPEND}"
278
		[ "${RDEPEND+set}"    = set ] && B_RDEPEND="${RDEPEND}"
278
		[ "${PDEPEND+set}"    = set ] && B_PDEPEND="${PDEPEND}"
279
		[ "${PDEPEND+set}"    = set ] && B_PDEPEND="${PDEPEND}"
279
		unset IUSE REQUIRED_USE DEPEND RDEPEND PDEPEND
280
		[ "${HDEPEND+set}"    = set ] && B_HDEPEND="${HDEPEND}"
281
		unset IUSE REQUIRED_USE DEPEND RDEPEND PDEPEND HDEPEND
280
		#turn on glob expansion
282
		#turn on glob expansion
281
		set +f
283
		set +f
282
284
Lines 292-297 Link Here
292
		[ "${DEPEND+set}"       = set ] && E_DEPEND+="${E_DEPEND:+ }${DEPEND}"
294
		[ "${DEPEND+set}"       = set ] && E_DEPEND+="${E_DEPEND:+ }${DEPEND}"
293
		[ "${RDEPEND+set}"      = set ] && E_RDEPEND+="${E_RDEPEND:+ }${RDEPEND}"
295
		[ "${RDEPEND+set}"      = set ] && E_RDEPEND+="${E_RDEPEND:+ }${RDEPEND}"
294
		[ "${PDEPEND+set}"      = set ] && E_PDEPEND+="${E_PDEPEND:+ }${PDEPEND}"
296
		[ "${PDEPEND+set}"      = set ] && E_PDEPEND+="${E_PDEPEND:+ }${PDEPEND}"
297
		[ "${HDEPEND+set}"      = set ] && E_HDEPEND+="${E_HDEPEND:+ }${HDEPEND}"
295
298
296
		[ "${B_IUSE+set}"     = set ] && IUSE="${B_IUSE}"
299
		[ "${B_IUSE+set}"     = set ] && IUSE="${B_IUSE}"
297
		[ "${B_IUSE+set}"     = set ] || unset IUSE
300
		[ "${B_IUSE+set}"     = set ] || unset IUSE
Lines 308-313 Link Here
308
		[ "${B_PDEPEND+set}"  = set ] && PDEPEND="${B_PDEPEND}"
311
		[ "${B_PDEPEND+set}"  = set ] && PDEPEND="${B_PDEPEND}"
309
		[ "${B_PDEPEND+set}"  = set ] || unset PDEPEND
312
		[ "${B_PDEPEND+set}"  = set ] || unset PDEPEND
310
313
314
		[ "${B_HDEPEND+set}"  = set ] && HDEPEND="${B_HDEPEND}"
315
		[ "${B_HDEPEND+set}"  = set ] || unset HDEPEND
316
311
		#turn on glob expansion
317
		#turn on glob expansion
312
		set +f
318
		set +f
313
319
Lines 534-541 Link Here
534
		# In order to ensure correct interaction between ebuilds and
540
		# In order to ensure correct interaction between ebuilds and
535
		# eclasses, they need to be unset before this process of
541
		# eclasses, they need to be unset before this process of
536
		# interaction begins.
542
		# interaction begins.
537
		unset EAPI DEPEND RDEPEND PDEPEND INHERITED IUSE REQUIRED_USE \
543
		unset EAPI DEPEND RDEPEND PDEPEND HDEPEND INHERITED IUSE REQUIRED_USE \
538
			ECLASS E_IUSE E_REQUIRED_USE E_DEPEND E_RDEPEND E_PDEPEND
544
			ECLASS E_IUSE E_REQUIRED_USE E_DEPEND E_RDEPEND E_PDEPEND E_HDEPEND
539
545
540
		if [[ $PORTAGE_DEBUG != 1 || ${-/x/} != $- ]] ; then
546
		if [[ $PORTAGE_DEBUG != 1 || ${-/x/} != $- ]] ; then
541
			source "$EBUILD" || die "error sourcing ebuild"
547
			source "$EBUILD" || die "error sourcing ebuild"
Lines 566-574 Link Here
566
		DEPEND+="${DEPEND:+ }${E_DEPEND}"
572
		DEPEND+="${DEPEND:+ }${E_DEPEND}"
567
		RDEPEND+="${RDEPEND:+ }${E_RDEPEND}"
573
		RDEPEND+="${RDEPEND:+ }${E_RDEPEND}"
568
		PDEPEND+="${PDEPEND:+ }${E_PDEPEND}"
574
		PDEPEND+="${PDEPEND:+ }${E_PDEPEND}"
575
		HDEPEND+="${HDEPEND:+ }${E_HDEPEND}"
569
		REQUIRED_USE+="${REQUIRED_USE:+ }${E_REQUIRED_USE}"
576
		REQUIRED_USE+="${REQUIRED_USE:+ }${E_REQUIRED_USE}"
570
		
577
		
571
		unset ECLASS E_IUSE E_REQUIRED_USE E_DEPEND E_RDEPEND E_PDEPEND \
578
		unset ECLASS E_IUSE E_REQUIRED_USE E_DEPEND E_RDEPEND E_PDEPEND E_HDEPEND \
572
			__INHERITED_QA_CACHE
579
			__INHERITED_QA_CACHE
573
580
574
		# alphabetically ordered by $EBUILD_PHASE value
581
		# alphabetically ordered by $EBUILD_PHASE value
Lines 670-678 Link Here
670
677
671
	auxdbkeys="DEPEND RDEPEND SLOT SRC_URI RESTRICT HOMEPAGE LICENSE
678
	auxdbkeys="DEPEND RDEPEND SLOT SRC_URI RESTRICT HOMEPAGE LICENSE
672
		DESCRIPTION KEYWORDS INHERITED IUSE REQUIRED_USE PDEPEND PROVIDE EAPI
679
		DESCRIPTION KEYWORDS INHERITED IUSE REQUIRED_USE PDEPEND PROVIDE EAPI
673
		PROPERTIES DEFINED_PHASES UNUSED_05 UNUSED_04
680
		PROPERTIES DEFINED_PHASES HDEPEND UNUSED_04
674
		UNUSED_03 UNUSED_02 UNUSED_01"
681
		UNUSED_03 UNUSED_02 UNUSED_01"
675
682
683
	case "$EAPI" in
684
		0|1|2|3|4)
685
			unset HDEPEND
686
			;;
687
	esac
688
676
	# The extra $(echo) commands remove newlines.
689
	# The extra $(echo) commands remove newlines.
677
	if [ -n "${dbkey}" ] ; then
690
	if [ -n "${dbkey}" ] ; then
678
		> "${dbkey}"
691
		> "${dbkey}"
(-)portage-2.1.11.17/pym/_emerge/depgraph.py (-13 / +28 lines)
Lines 503-509 Link Here
503
503
504
	pkg_tree_map = RootConfig.pkg_tree_map
504
	pkg_tree_map = RootConfig.pkg_tree_map
505
505
506
	_dep_keys = ["DEPEND", "RDEPEND", "PDEPEND"]
506
	_dep_keys = ["DEPEND", "RDEPEND", "PDEPEND", "HDEPEND"]
507
	
507
	
508
	def __init__(self, settings, trees, myopts, myparams, spinner,
508
	def __init__(self, settings, trees, myopts, myparams, spinner,
509
		frozen_config=None, backtrack_parameters=BacktrackParameter(), allow_backtracking=False):
509
		frozen_config=None, backtrack_parameters=BacktrackParameter(), allow_backtracking=False):
Lines 1682-1688 Link Here
1682
		removal_action = "remove" in self._dynamic_config.myparams
1682
		removal_action = "remove" in self._dynamic_config.myparams
1683
1683
1684
		edepend={}
1684
		edepend={}
1685
		depkeys = ["DEPEND","RDEPEND","PDEPEND"]
1685
		depkeys = ["DEPEND","RDEPEND","PDEPEND","HDEPEND"]
1686
		for k in depkeys:
1686
		for k in depkeys:
1687
			edepend[k] = metadata[k]
1687
			edepend[k] = metadata[k]
1688
1688
Lines 1710-1727 Link Here
1710
			# Removal actions never traverse ignored buildtime
1710
			# Removal actions never traverse ignored buildtime
1711
			# dependencies, so it's safe to discard them early.
1711
			# dependencies, so it's safe to discard them early.
1712
			edepend["DEPEND"] = ""
1712
			edepend["DEPEND"] = ""
1713
			edepend["HDEPEND"] = ""
1713
			ignore_build_time_deps = True
1714
			ignore_build_time_deps = True
1714
1715
1715
		if removal_action:
1716
		if removal_action:
1716
			depend_root = myroot
1717
			depend_root = myroot
1717
		else:
1718
		else:
1718
			depend_root = self._frozen_config._running_root.root
1719
			if pkg.metadata['EAPI'] not in ('0', '1', '2', '3', '4'):
1719
			root_deps = self._frozen_config.myopts.get("--root-deps")
1720
				# For ebuilds that have EAPI 5 or later, --root-deps
1720
			if root_deps is not None:
1721
				# has no effect, since DEPEND has been divided into two parts:
1721
				if root_deps is True:
1722
				# DEPEND for build-time target dependencies, and HDEPEND for
1722
					depend_root = myroot
1723
				# build-time host dependencies.
1723
				elif root_deps == "rdeps":
1724
				depend_root = myroot
1724
					ignore_build_time_deps = True
1725
			else:
1726
				depend_root = self._frozen_config._running_root.root
1727
				root_deps = self._frozen_config.myopts.get("--root-deps")
1728
				if root_deps is not None:
1729
					if root_deps is True:
1730
						depend_root = myroot
1731
					elif root_deps == "rdeps":
1732
						ignore_build_time_deps = True
1725
1733
1726
		# If rebuild mode is not enabled, it's safe to discard ignored
1734
		# If rebuild mode is not enabled, it's safe to discard ignored
1727
		# build-time dependencies. If you want these deps to be traversed
1735
		# build-time dependencies. If you want these deps to be traversed
Lines 1729-1734 Link Here
1729
		if ignore_build_time_deps and \
1737
		if ignore_build_time_deps and \
1730
			not self._rebuild.rebuild:
1738
			not self._rebuild.rebuild:
1731
			edepend["DEPEND"] = ""
1739
			edepend["DEPEND"] = ""
1740
			edepend["HDEPEND"] = ""
1732
1741
1733
		deps = (
1742
		deps = (
1734
			(depend_root, edepend["DEPEND"],
1743
			(depend_root, edepend["DEPEND"],
Lines 1738-1744 Link Here
1738
			(myroot, edepend["RDEPEND"],
1747
			(myroot, edepend["RDEPEND"],
1739
				self._priority(runtime=True)),
1748
				self._priority(runtime=True)),
1740
			(myroot, edepend["PDEPEND"],
1749
			(myroot, edepend["PDEPEND"],
1741
				self._priority(runtime_post=True))
1750
				self._priority(runtime_post=True)),
1751
			(self._frozen_config._running_root.root, edepend["HDEPEND"],
1752
				self._priority(buildtime=True,
1753
				optional=(pkg.built or ignore_build_time_deps),
1754
				ignored=ignore_build_time_deps))
1742
		)
1755
		)
1743
1756
1744
		debug = "--debug" in self._frozen_config.myopts
1757
		debug = "--debug" in self._frozen_config.myopts
Lines 2835-2841 Link Here
2835
			return [pkg.slot_atom for pkg in greedy_pkgs]
2848
			return [pkg.slot_atom for pkg in greedy_pkgs]
2836
2849
2837
		blockers = {}
2850
		blockers = {}
2838
		blocker_dep_keys = ["DEPEND", "PDEPEND", "RDEPEND"]
2851
		blocker_dep_keys = ["DEPEND", "PDEPEND", "RDEPEND", "HDEPEND"]
2839
		for pkg in greedy_pkgs + [highest_pkg]:
2852
		for pkg in greedy_pkgs + [highest_pkg]:
2840
			dep_str = " ".join(pkg.metadata[k] for k in blocker_dep_keys)
2853
			dep_str = " ".join(pkg.metadata[k] for k in blocker_dep_keys)
2841
			try:
2854
			try:
Lines 3096-3102 Link Here
3096
3109
3097
		if target_atom is not None and isinstance(node, Package):
3110
		if target_atom is not None and isinstance(node, Package):
3098
			affecting_use = set()
3111
			affecting_use = set()
3099
			for dep_str in "DEPEND", "RDEPEND", "PDEPEND":
3112
			for dep_str in "DEPEND", "RDEPEND", "PDEPEND", "HDEPEND":
3100
				try:
3113
				try:
3101
					affecting_use.update(extract_affecting_use(
3114
					affecting_use.update(extract_affecting_use(
3102
						node.metadata[dep_str], target_atom,
3115
						node.metadata[dep_str], target_atom,
Lines 3180-3189 Link Here
3180
					dep_strings.add(node.metadata["DEPEND"])
3193
					dep_strings.add(node.metadata["DEPEND"])
3181
					dep_strings.add(node.metadata["RDEPEND"])
3194
					dep_strings.add(node.metadata["RDEPEND"])
3182
					dep_strings.add(node.metadata["PDEPEND"])
3195
					dep_strings.add(node.metadata["PDEPEND"])
3196
					dep_strings.add(node.metadata["HDEPEND"])
3183
				else:
3197
				else:
3184
					for priority in priorities:
3198
					for priority in priorities:
3185
						if priority.buildtime:
3199
						if priority.buildtime:
3186
							dep_strings.add(node.metadata["DEPEND"])
3200
							dep_strings.add(node.metadata["DEPEND"])
3201
							dep_strings.add(node.metadata["HDEPEND"])
3187
						if priority.runtime:
3202
						if priority.runtime:
3188
							dep_strings.add(node.metadata["RDEPEND"])
3203
							dep_strings.add(node.metadata["RDEPEND"])
3189
						if priority.runtime_post:
3204
						if priority.runtime_post:
Lines 4126-4132 Link Here
4126
			if pkg not in self._dynamic_config.digraph.nodes:
4141
			if pkg not in self._dynamic_config.digraph.nodes:
4127
				return False
4142
				return False
4128
4143
4129
			for key in "DEPEND", "RDEPEND", "PDEPEND", "LICENSE":
4144
			for key in "DEPEND", "RDEPEND", "PDEPEND", "HDEPEND", "LICENSE":
4130
				dep = pkg.metadata[key]
4145
				dep = pkg.metadata[key]
4131
				old_val = set(portage.dep.use_reduce(dep, pkg.use.enabled, is_valid_flag=pkg.iuse.is_valid_flag, flat=True))
4146
				old_val = set(portage.dep.use_reduce(dep, pkg.use.enabled, is_valid_flag=pkg.iuse.is_valid_flag, flat=True))
4132
				new_val = set(portage.dep.use_reduce(dep, new_use, is_valid_flag=pkg.iuse.is_valid_flag, flat=True))
4147
				new_val = set(portage.dep.use_reduce(dep, new_use, is_valid_flag=pkg.iuse.is_valid_flag, flat=True))
(-)portage-2.1.11.17/pym/portage/dbapi/bintree.py (-2 / +4 lines)
Lines 75-80 Link Here
75
			["BUILD_TIME", "CHOST", "DEPEND", "EAPI", "IUSE", "KEYWORDS",
75
			["BUILD_TIME", "CHOST", "DEPEND", "EAPI", "IUSE", "KEYWORDS",
76
			"LICENSE", "PDEPEND", "PROPERTIES", "PROVIDE",
76
			"LICENSE", "PDEPEND", "PROPERTIES", "PROVIDE",
77
			"RDEPEND", "repository", "RESTRICT", "SLOT", "USE", "DEFINED_PHASES",
77
			"RDEPEND", "repository", "RESTRICT", "SLOT", "USE", "DEFINED_PHASES",
78
			"HDEPEND",
78
			])
79
			])
79
		self._aux_cache_slot_dict = slot_dict_class(self._aux_cache_keys)
80
		self._aux_cache_slot_dict = slot_dict_class(self._aux_cache_keys)
80
		self._aux_cache = {}
81
		self._aux_cache = {}
Lines 304-314 Link Here
304
				["BUILD_TIME", "CHOST", "DEPEND", "DESCRIPTION", "EAPI",
305
				["BUILD_TIME", "CHOST", "DEPEND", "DESCRIPTION", "EAPI",
305
				"IUSE", "KEYWORDS", "LICENSE", "PDEPEND", "PROPERTIES",
306
				"IUSE", "KEYWORDS", "LICENSE", "PDEPEND", "PROPERTIES",
306
				"PROVIDE", "RDEPEND", "repository", "SLOT", "USE", "DEFINED_PHASES",
307
				"PROVIDE", "RDEPEND", "repository", "SLOT", "USE", "DEFINED_PHASES",
307
				"BASE_URI"]
308
				"BASE_URI", "HDEPEND"]
308
			self._pkgindex_aux_keys = list(self._pkgindex_aux_keys)
309
			self._pkgindex_aux_keys = list(self._pkgindex_aux_keys)
309
			self._pkgindex_use_evaluated_keys = \
310
			self._pkgindex_use_evaluated_keys = \
310
				("LICENSE", "RDEPEND", "DEPEND",
311
				("LICENSE", "RDEPEND", "DEPEND",
311
				"PDEPEND", "PROPERTIES", "PROVIDE")
312
				"PDEPEND", "PROPERTIES", "PROVIDE", "HDEPEND")
312
			self._pkgindex_header_keys = set([
313
			self._pkgindex_header_keys = set([
313
				"ACCEPT_KEYWORDS", "ACCEPT_LICENSE",
314
				"ACCEPT_KEYWORDS", "ACCEPT_LICENSE",
314
				"ACCEPT_PROPERTIES", "CBUILD",
315
				"ACCEPT_PROPERTIES", "CBUILD",
Lines 330-335 Link Here
330
				"SLOT"    : "0",
331
				"SLOT"    : "0",
331
				"USE"     : "",
332
				"USE"     : "",
332
				"DEFINED_PHASES" : "",
333
				"DEFINED_PHASES" : "",
334
				"HDEPEND" : "",
333
			}
335
			}
334
			self._pkgindex_inherited_keys = ["CHOST", "repository"]
336
			self._pkgindex_inherited_keys = ["CHOST", "repository"]
335
337
(-)portage-2.1.11.17/pym/portage/dbapi/porttree.py (-1 / +1 lines)
Lines 189-195 Link Here
189
		self._aux_cache_keys = set(
189
		self._aux_cache_keys = set(
190
			["DEPEND", "EAPI", "INHERITED", "IUSE", "KEYWORDS", "LICENSE",
190
			["DEPEND", "EAPI", "INHERITED", "IUSE", "KEYWORDS", "LICENSE",
191
			"PDEPEND", "PROPERTIES", "PROVIDE", "RDEPEND", "repository",
191
			"PDEPEND", "PROPERTIES", "PROVIDE", "RDEPEND", "repository",
192
			"RESTRICT", "SLOT", "DEFINED_PHASES", "REQUIRED_USE"])
192
			"RESTRICT", "SLOT", "DEFINED_PHASES", "REQUIRED_USE", "HDEPEND"])
193
193
194
		self._aux_cache = {}
194
		self._aux_cache = {}
195
		self._broken_ebuilds = set()
195
		self._broken_ebuilds = set()
(-)portage-2.1.11.17/pym/portage/dbapi/vartree.py (+1 lines)
Lines 165-170 Link Here
165
			"EAPI", "HOMEPAGE", "IUSE", "KEYWORDS",
165
			"EAPI", "HOMEPAGE", "IUSE", "KEYWORDS",
166
			"LICENSE", "PDEPEND", "PROPERTIES", "PROVIDE", "RDEPEND",
166
			"LICENSE", "PDEPEND", "PROPERTIES", "PROVIDE", "RDEPEND",
167
			"repository", "RESTRICT" , "SLOT", "USE", "DEFINED_PHASES",
167
			"repository", "RESTRICT" , "SLOT", "USE", "DEFINED_PHASES",
168
			"HDEPEND",
168
			])
169
			])
169
		self._aux_cache_obj = None
170
		self._aux_cache_obj = None
170
		self._aux_cache_filename = os.path.join(self._eroot,
171
		self._aux_cache_filename = os.path.join(self._eroot,
(-)portage-2.1.11.17/pym/portage/__init__.py (-2 / +2 lines)
Lines 414-420 Link Here
414
414
415
_doebuild_manifest_exempt_depend = 0
415
_doebuild_manifest_exempt_depend = 0
416
416
417
_testing_eapis = frozenset(["4-python", "4-slot-abi", "5_pre2"])
417
_testing_eapis = frozenset(["4-python", "4-slot-abi", "4-hdepend", "5_pre2"])
418
_deprecated_eapis = frozenset(["4_pre1", "3_pre2", "3_pre1", "5_pre1"])
418
_deprecated_eapis = frozenset(["4_pre1", "3_pre2", "3_pre1", "5_pre1"])
419
419
420
def _eapi_is_deprecated(eapi):
420
def _eapi_is_deprecated(eapi):
Lines 472-478 Link Here
472
	'RESTRICT',  'HOMEPAGE',  'LICENSE',   'DESCRIPTION',
472
	'RESTRICT',  'HOMEPAGE',  'LICENSE',   'DESCRIPTION',
473
	'KEYWORDS',  'INHERITED', 'IUSE', 'REQUIRED_USE',
473
	'KEYWORDS',  'INHERITED', 'IUSE', 'REQUIRED_USE',
474
	'PDEPEND',   'PROVIDE', 'EAPI',
474
	'PDEPEND',   'PROVIDE', 'EAPI',
475
	'PROPERTIES', 'DEFINED_PHASES', 'UNUSED_05', 'UNUSED_04',
475
	'PROPERTIES', 'DEFINED_PHASES', 'HDEPEND', 'UNUSED_04',
476
	'UNUSED_03', 'UNUSED_02', 'UNUSED_01',
476
	'UNUSED_03', 'UNUSED_02', 'UNUSED_01',
477
)
477
)
478
auxdbkeylen=len(auxdbkeys)
478
auxdbkeylen=len(auxdbkeys)

Return to bug 317337