Gentoo Archives: gentoo-portage-dev

From: "Michał Górny" <mgorny@g.o>
To: gentoo-portage-dev@l.g.o
Cc: "Michał Górny" <mgorny@g.o>
Subject: [gentoo-portage-dev] [PATCH 4/4] Include INHERIT value in generated cache
Date: Fri, 03 Sep 2021 16:35:52
Message-Id: 20210903163532.2465253-5-mgorny@gentoo.org
In Reply to: [gentoo-portage-dev] [PATCH 0/4] Modernize metadata passing & add INHERIT to md5-cache by "Michał Górny"
1 PkgCore uses an additional md5-cache INHERIT key to indicate eclasses
2 explicitly inherited in an ebuild. Update Portage to emit the same key
3 to restore cache compatibility.
4
5 Signed-off-by: Michał Górny <mgorny@g.o>
6 ---
7 bin/ebuild.sh | 8 +++++++-
8 bin/phase-functions.sh | 2 +-
9 lib/portage/__init__.py | 2 +-
10 lib/portage/package/ebuild/_config/special_env_vars.py | 2 +-
11 4 files changed, 10 insertions(+), 4 deletions(-)
12
13 diff --git a/bin/ebuild.sh b/bin/ebuild.sh
14 index 381bcb5c8..07ca58d22 100755
15 --- a/bin/ebuild.sh
16 +++ b/bin/ebuild.sh
17 @@ -402,6 +402,9 @@ inherit() {
18 unset $__export_funcs_var
19
20 has $1 $INHERITED || export INHERITED="$INHERITED $1"
21 + if [[ ${ECLASS_DEPTH} -eq 1 ]]; then
22 + export PORTAGE_EXPLICIT_INHERIT="${PORTAGE_EXPLICIT_INHERIT} $1"
23 + fi
24 fi
25
26 shift
27 @@ -648,6 +651,7 @@ if ! has "$EBUILD_PHASE" clean cleanrm ; then
28 unset INHERITED IUSE REQUIRED_USE ECLASS E_IUSE E_REQUIRED_USE
29 unset E_DEPEND E_RDEPEND E_PDEPEND E_BDEPEND E_IDEPEND E_PROPERTIES
30 unset E_RESTRICT PROVIDES_EXCLUDE REQUIRES_EXCLUDE
31 + unset PORTAGE_EXPLICIT_INHERIT
32
33 if [[ $PORTAGE_DEBUG != 1 || ${-/x/} != $- ]] ; then
34 source "$EBUILD" || die "error sourcing ebuild"
35 @@ -757,7 +761,7 @@ if [[ $EBUILD_PHASE = depend ]] ; then
36 metadata_keys=(
37 DEPEND RDEPEND SLOT SRC_URI RESTRICT HOMEPAGE LICENSE
38 DESCRIPTION KEYWORDS INHERITED IUSE REQUIRED_USE PDEPEND BDEPEND
39 - EAPI PROPERTIES DEFINED_PHASES IDEPEND
40 + EAPI PROPERTIES DEFINED_PHASES IDEPEND INHERIT
41 )
42
43 if ! ___eapi_has_BDEPEND; then
44 @@ -767,6 +771,8 @@ if [[ $EBUILD_PHASE = depend ]] ; then
45 unset IDEPEND
46 fi
47
48 + INHERIT=${PORTAGE_EXPLICIT_INHERIT}
49 +
50 # The extra $(echo) commands remove newlines.
51 for f in "${metadata_keys[@]}" ; do
52 echo "${f}=$(echo ${!f})" >&${PORTAGE_PIPE_FD} || exit $?
53 diff --git a/bin/phase-functions.sh b/bin/phase-functions.sh
54 index 0bb5d86e1..d3221993d 100644
55 --- a/bin/phase-functions.sh
56 +++ b/bin/phase-functions.sh
57 @@ -20,7 +20,7 @@ PORTAGE_READONLY_VARS="D EBUILD EBUILD_PHASE EBUILD_PHASE_FUNC \
58 PORTAGE_BUILD_USER PORTAGE_BUNZIP2_COMMAND \
59 PORTAGE_BZIP2_COMMAND PORTAGE_COLORMAP PORTAGE_CONFIGROOT \
60 PORTAGE_DEBUG PORTAGE_DEPCACHEDIR PORTAGE_EBUILD_EXIT_FILE \
61 - PORTAGE_ECLASS_LOCATIONS \
62 + PORTAGE_ECLASS_LOCATIONS PORTAGE_EXPLICIT_INHERIT \
63 PORTAGE_GID PORTAGE_GRPNAME PORTAGE_INST_GID PORTAGE_INST_UID \
64 PORTAGE_INTERNAL_CALLER PORTAGE_IPC_DAEMON PORTAGE_IUSE PORTAGE_LOG_FILE \
65 PORTAGE_MUTABLE_FILTERED_VARS PORTAGE_OVERRIDE_EPREFIX PORTAGE_PROPERTIES \
66 diff --git a/lib/portage/__init__.py b/lib/portage/__init__.py
67 index 232d77f0e..a41ca4323 100644
68 --- a/lib/portage/__init__.py
69 +++ b/lib/portage/__init__.py
70 @@ -519,7 +519,7 @@ auxdbkeys = (
71 'RESTRICT', 'HOMEPAGE', 'LICENSE', 'DESCRIPTION',
72 'KEYWORDS', 'INHERITED', 'IUSE', 'REQUIRED_USE',
73 'PDEPEND', 'BDEPEND', 'EAPI',
74 - 'PROPERTIES', 'DEFINED_PHASES', 'IDEPEND',
75 + 'PROPERTIES', 'DEFINED_PHASES', 'IDEPEND', 'INHERIT',
76 )
77
78 def portageexit():
79 diff --git a/lib/portage/package/ebuild/_config/special_env_vars.py b/lib/portage/package/ebuild/_config/special_env_vars.py
80 index 456af1838..8e314a6d6 100644
81 --- a/lib/portage/package/ebuild/_config/special_env_vars.py
82 +++ b/lib/portage/package/ebuild/_config/special_env_vars.py
83 @@ -22,7 +22,7 @@ env_blacklist = frozenset((
84 "KEYWORDS", "LICENSE", "MERGE_TYPE",
85 "PDEPEND", "PF", "PKGUSE", "PORTAGE_BACKGROUND",
86 "PORTAGE_BACKGROUND_UNMERGE", "PORTAGE_BUILDDIR_LOCKED",
87 - "PORTAGE_BUILT_USE", "PORTAGE_CONFIGROOT",
88 + "PORTAGE_BUILT_USE", "PORTAGE_CONFIGROOT", "PORTAGE_EXPLICIT_INHERIT",
89 "PORTAGE_INTERNAL_CALLER", "PORTAGE_IUSE",
90 "PORTAGE_NONFATAL", "PORTAGE_PIPE_FD", "PORTAGE_REPO_NAME",
91 "PORTAGE_USE", "PROPERTIES", "RDEPEND", "REPOSITORY",
92 --
93 2.33.0