From 8ecd0a2bf1633807cf0de6f15af603ae9d720ebd Mon Sep 17 00:00:00 2001 From: Mathieu Tortuyaux Date: Mon, 12 Jun 2023 18:29:10 +0200 Subject: [PATCH] sys-apps/policycoreutils: Apply Flatcar modifications Prepare the changes for upstreaming: - Hide python dependencies behind the python USE flag. - Allow using original sources, without Gentoo modifications with the vanilla USE flag. - This also hides app-admin/setools dependency behind this USE flag. I'm not sure if anything in policycoreutils requires anything from that package - I assumed that Gentoo-provided rlpkg maybe does. - Keep using /var/lib/selinux as a SELinux policy directory. We will use INSTALL_MASK to skip installation of the directory and will add a tmpfiles config file to coreos-base/misc-files instead. Signed-off-by: Mathieu Tortuyaux Signed-off-by: Krzesimir Nowak --- .../policycoreutils-3.8.1.ebuild | 136 ++++++++++++------ 1 file changed, 89 insertions(+), 47 deletions(-) diff --git a/sdk_container/src/third_party/coreos-overlay/sys-apps/policycoreutils/policycoreutils-3.8.1.ebuild b/sdk_container/src/third_party/coreos-overlay/sys-apps/policycoreutils/policycoreutils-3.8.1.ebuild index b528382f0f..bbd002d107 100644 --- a/sdk_container/src/third_party/coreos-overlay/sys-apps/policycoreutils/policycoreutils-3.8.1.ebuild +++ b/sdk_container/src/third_party/coreos-overlay/sys-apps/policycoreutils/policycoreutils-3.8.1.ebuild @@ -17,13 +17,13 @@ HOMEPAGE="https://github.com/SELinuxProject/selinux/wiki" if [[ ${PV} == 9999 ]]; then inherit git-r3 EGIT_REPO_URI="https://github.com/SELinuxProject/selinux.git" - SRC_URI="https://dev.gentoo.org/~perfinion/distfiles/policycoreutils-extra-${EXTRAS_VER}.tar.bz2" + SRC_URI="!vanilla? ( https://dev.gentoo.org/~perfinion/distfiles/policycoreutils-extra-${EXTRAS_VER}.tar.bz2 )" S1="${WORKDIR}/${P}/${PN}" S2="${WORKDIR}/policycoreutils-extra" S="${S1}" else SRC_URI="https://github.com/SELinuxProject/selinux/releases/download/${MY_PV}/${MY_P}.tar.gz - https://dev.gentoo.org/~perfinion/distfiles/policycoreutils-extra-${EXTRAS_VER}.tar.bz2" + !vanilla? ( https://dev.gentoo.org/~perfinion/distfiles/policycoreutils-extra-${EXTRAS_VER}.tar.bz2 )" KEYWORDS="amd64 arm arm64 x86" S1="${WORKDIR}/${MY_P}" S2="${WORKDIR}/policycoreutils-extra" @@ -32,17 +32,30 @@ fi LICENSE="GPL-2" SLOT="0" -IUSE="audit pam split-usr" -REQUIRED_USE="${PYTHON_REQUIRED_USE}" +IUSE="audit pam split-usr vanilla +python" +REQUIRED_USE=" + !vanilla? ( python ${PYTHON_REQUIRED_USE} ) +" -DEPEND=">=sys-libs/libselinux-${PV}:=[python,${PYTHON_USEDEP}] - >=sys-libs/libsemanage-${PV}:=[python(+),${PYTHON_USEDEP}] +DEPEND=" + python? ( + >=sys-libs/libselinux-${PV}:=[python,${PYTHON_USEDEP}] + >=sys-libs/libsemanage-${PV}:=[python(+),${PYTHON_USEDEP}] + audit? ( >=sys-process/audit-1.5.1[python,${PYTHON_USEDEP}] ) + ${PYTHON_DEPS} + ) + !python? ( + >=sys-libs/libselinux-${PV}:= + >=sys-libs/libsemanage-${PV}:= + audit? ( >=sys-process/audit-1.5.1 ) + ) >=sys-libs/libsepol-${PV}:= sys-libs/libcap-ng:= - >=app-admin/setools-4.2.0[${PYTHON_USEDEP}] - audit? ( >=sys-process/audit-1.5.1[python,${PYTHON_USEDEP}] ) pam? ( sys-libs/pam:= ) - ${PYTHON_DEPS}" + !vanilla? ( + >=app-admin/setools-4.2.0[${PYTHON_USEDEP}] + ) +" # Avoid dependency loop in the cross-compile case, bug #755173 # (Still exists in native) @@ -53,7 +66,7 @@ RDEPEND="${DEPEND} app-misc/pax-utils" PDEPEND="sys-apps/semodule-utils - sys-apps/selinux-python" + python? ( sys-apps/selinux-python )" src_unpack() { # Override default one because we need the SRC_URI ones even in case of 9999 ebuilds @@ -71,28 +84,33 @@ src_prepare() { eapply "${FILESDIR}/policycoreutils-3.1-0001-newrole-not-suid.patch" fi - # rlpkg is more useful than fixfiles - sed -i -e '/^all/s/fixfiles//' "${S}/scripts/Makefile" \ - || die "fixfiles sed 1 failed" - sed -i -e '/fixfiles/d' "${S}/scripts/Makefile" \ - || die "fixfiles sed 2 failed" + if ! use vanilla; then + # rlpkg is more useful than fixfiles + sed -i -e '/^all/s/fixfiles//' "${S}/scripts/Makefile" \ + || die "fixfiles sed 1 failed" + sed -i -e '/fixfiles/d' "${S}/scripts/Makefile" \ + || die "fixfiles sed 2 failed" + fi eapply_user sed -i 's/-Werror//g' "${S1}"/*/Makefile || die "Failed to remove Werror" - python_copy_sources - # Our extra code is outside the regular directory, so set it to the extra - # directory. We really should optimize this as it is ugly, but the extra - # code is needed for Gentoo at the same time that policycoreutils is present - # (so we cannot use an additional package for now). - S="${S2}" - python_copy_sources + if ! use vanilla; then + python_copy_sources + # Our extra code is outside the regular directory, so set it to the extra + # directory. We really should optimize this as it is ugly, but the extra + # code is needed for Gentoo at the same time that policycoreutils is present + # (so we cannot use an additional package for now). + S="${S2}" + python_copy_sources + fi } src_compile() { building() { - emake -C "${BUILD_DIR}" \ + local build_dir=${1} + emake -C "${build_dir}" \ AUDIT_LOG_PRIVS="y" \ AUDITH="$(usex audit y n)" \ PAMH="$(usex pam y n)" \ @@ -100,17 +118,27 @@ src_compile() { CC="$(tc-getCC)" \ LIBDIR="\$(PREFIX)/$(get_libdir)" } - S="${S1}" # Regular policycoreutils - python_foreach_impl building - S="${S2}" # Extra set - python_foreach_impl building + if ! use vanilla; then + building_with_python() { + building "${BUILD_DIR}" + } + S="${S1}" # Regular policycoreutils + python_foreach_impl building_with_python + S="${S2}" # Extra set + python_foreach_impl building_with_python + unset -f building_with_python + else + S="${S1}" # Regular policycoreutils + building "${S}" + fi + unset -f building } src_install() { - # Python scripts are present in many places. There are no extension modules. - installation-policycoreutils() { + installation-policycoreutils-base() { + local build_dir=${1} einfo "Installing policycoreutils" - emake -C "${BUILD_DIR}" DESTDIR="${D}" \ + emake -C "${build_dir}" DESTDIR="${D}" \ AUDIT_LOG_PRIVS="y" \ AUDITH="$(usex audit y n)" \ PAMH="$(usex pam y n)" \ @@ -118,22 +146,34 @@ src_install() { CC="$(tc-getCC)" \ LIBDIR="\$(PREFIX)/$(get_libdir)" \ install - python_optimize } - installation-extras() { - einfo "Installing policycoreutils-extra" - emake -C "${BUILD_DIR}" \ - DESTDIR="${D}" \ - install - python_optimize - } + if ! use vanilla; then + # Python scripts are present in many places. There are no extension modules. + installation-policycoreutils() { + installation-policycoreutils-base "${BUILD_DIR}" + python_optimize + } - S="${S1}" # policycoreutils - python_foreach_impl installation-policycoreutils - S="${S2}" # extras - python_foreach_impl installation-extras - S="${S1}" # back for later + installation-extras() { + einfo "Installing policycoreutils-extra" + emake -C "${BUILD_DIR}" \ + DESTDIR="${D}" \ + install + python_optimize + } + + S="${S1}" # policycoreutils + python_foreach_impl installation-policycoreutils + S="${S2}" # extras + python_foreach_impl installation-extras + S="${S1}" # back for later + unset -f installation-extras installation-policycoreutils + else + S="${S1}" # policycoreutils + installation-policycoreutils-base "${S}" + fi + unset -f installation-policycoreutils-base # remove redhat-style init script rm -fR "${D}/etc/rc.d" || die @@ -152,10 +192,12 @@ src_install() { dodir /var/lib/selinux keepdir /var/lib/selinux - # Set version-specific scripts - for pyscript in rlpkg; do - python_replicate_script "${ED}/usr/sbin/${pyscript}" - done + if ! use vanilla; then + # Set version-specific scripts + for pyscript in rlpkg; do + python_replicate_script "${ED}/usr/sbin/${pyscript}" + done + fi } pkg_postinst() {