[PATCH 2/5] selinux-policy-2.eclass: respect the sanctity of -rN for EAPI=8
Rahul Sandhu <[email protected]>
| Newsgroups | gmane.linux.gentoo.devel |
|---|---|
| Message-ID | <[email protected]> |
Currently, ebuild revisions are molested by the versioning of policy
patch bundles. -rN is reserved _exclusively_ for ebuild revisions; they
should not be relied upon for versioning tarballs.
Right now, this poses a problem: we can't revbump any ebuilds without
breaking SRC_URI. This is because the BASEPOL variable, which is then
later used to fetch the patchbundle in SRC_URI, is set to ${PVR} by
default.
To remedy this, transform a PV of XXX_pN to XXX-rN for EAPI=8. We can't
do this for EAPI=7, sadly, as this would break the existing conventions
for naming that are used by our consumers.
Signed-off-by: Rahul Sandhu <[email protected]>
---
eclass/selinux-policy-2.eclass | 34 +++++++++++++++++++++++++---------
1 file changed, 25 insertions(+), 9 deletions(-)
diff --git a/eclass/selinux-policy-2.eclass b/eclass/selinux-policy-2.eclass
index 2f75baec5c47..c47136545879 100644
--- a/eclass/selinux-policy-2.eclass
+++ b/eclass/selinux-policy-2.eclass
@@ -32,12 +32,22 @@ _SELINUX_POLICY_2_ECLASS=1
# This name is only the module name, not the category!
: "${MODS:="_illegal"}"
-# @ECLASS_VARIABLE: BASEPOL
-# @DESCRIPTION:
-# This variable contains the version string of the selinux-base-policy package
-# that this module build depends on. It is used to patch with the appropriate
-# patch bundle(s) that are part of selinux-base-policy.
-: "${BASEPOL:="${PVR}"}"
+if [[ ${EAPI} = 7 ]]; then
+ # @ECLASS_VARIABLE: BASEPOL
+ # @DESCRIPTION:
+ # This variable contains the version string of the selinux-base-policy package
+ # that this module build depends on. It is used to patch with the appropriate
+ # patch bundle(s) that are part of selinux-base-policy.
+ : "${BASEPOL:="${PVR}"}"
+else
+ # @ECLASS_VARIABLE: BASEPOL
+ # @DESCRIPTION:
+ # This variable contains the version string of the selinux-base-policy package
+ # that this module build depends on. It is used to patch with the appropriate
+ # patch bundle(s) that are part of selinux-base-policy.
+ # _pN corresponds to -rN in the patch bundle(s).
+ : "${BASEPOL:="${PV/_p/-r}"}"
+fi
# @ECLASS_VARIABLE: POLICY_PATCH
# @DESCRIPTION:
@@ -89,6 +99,12 @@ fi
# This variable contains the USE dependency constraints for policy packages.
: "${SELINUX_POLICY_USEDEP:="selinux_policy_types_targeted(-)?,selinux_policy_types_strict(-)?,selinux_policy_types_mcs(-)?,selinux_policy_types_mls(-)?"}"
+# @ECLASS_VARIABLE: _SELINUX_POLICY_UPSTREAM_PV
+# @INTERNAL
+# @DESCRIPTION:
+# Internal variable representing (spoofed) upstream refpolicy version.
+_SELINUX_POLICY_UPSTREAM_PV=$(ver_cut 1-2)
+
case ${BASEPOL} in
9999)
inherit git-r3
@@ -107,11 +123,11 @@ fi
HOMEPAGE="https://wiki.gentoo.org/wiki/Project:SELinux"
if [[ -n ${BASEPOL} && "${BASEPOL}" != "9999" ]]; then
SRC_URI="
- https://github.com/SELinuxProject/refpolicy/releases/download/RELEASE_${PV/./_}/refpolicy-${PV}.tar.bz2
+ https://github.com/SELinuxProject/refpolicy/releases/download/RELEASE_${_SELINUX_POLICY_UPSTREAM_PV/./_}/refpolicy-${_SELINUX_POLICY_UPSTREAM_PV}.tar.bz2
https://dev.gentoo.org/~perfinion/patches/selinux-base-policy/patchbundle-selinux-base-policy-${BASEPOL}.tar.bz2
"
elif [[ "${BASEPOL}" != "9999" ]]; then
- SRC_URI="https://github.com/SELinuxProject/refpolicy/releases/download/RELEASE_${PV/./_}/refpolicy-${PV}.tar.bz2"
+ SRC_URI="https://github.com/SELinuxProject/refpolicy/releases/download/RELEASE_${_SELINUX_POLICY_UPSTREAM_PV/./_}/refpolicy-${_SELINUX_POLICY_UPSTREAM_PV}.tar.bz2"
fi
LICENSE="GPL-2"
@@ -123,7 +139,7 @@ S="${WORKDIR}"
if [[ -n ${BASEPOL} ]]; then
_BASE_POLICY_VERSION="${BASEPOL}"
else
- _BASE_POLICY_VERSION="${PV}"
+ _BASE_POLICY_VERSION="${_SELINUX_POLICY_UPSTREAM_PV}"
fi
if [[ ${EAPI} = 7 ]]; then
--
2.53.0