From 39a5525a22442b5766154f46852cd37ef2d23699 Mon Sep 17 00:00:00 2001 From: Yi Zhao Date: Fri, 5 Jan 2024 14:58:34 +0800 Subject: libselinux-python: add recipe We merged libselinux recipe and libselinux-python recipe in commit[1] because we thought the circular dependency was gone. But unfortunately, it still exists. Here are the steps to reproduce: $ echo "DISTRO_FEATURES:append = \" x11\"" >> conf/local.conf $ echo "PACKAGECONFIG:append:pn-python3 = \" tk\"" >> conf/local.conf $ bitbake core-image-selinux -n So we still need to split the libselinux recipe into two recipes: libselinux and libselinux-python. [1] https://git.yoctoproject.org/meta-selinux/commit/?id=62b9c816a5000dc01b28e78213bde26b58cbca9d Signed-off-by: Yi Zhao Signed-off-by: Joe MacDonald --- recipes-security/selinux/libselinux-python_3.6.bb | 57 +++++++++++++++++++++++ recipes-security/selinux/libselinux_3.6.bb | 31 +----------- 2 files changed, 59 insertions(+), 29 deletions(-) create mode 100644 recipes-security/selinux/libselinux-python_3.6.bb diff --git a/recipes-security/selinux/libselinux-python_3.6.bb b/recipes-security/selinux/libselinux-python_3.6.bb new file mode 100644 index 0000000..3c5c489 --- /dev/null +++ b/recipes-security/selinux/libselinux-python_3.6.bb @@ -0,0 +1,57 @@ +SUMMARY = "SELinux library and simple utilities" +DESCRIPTION = "libselinux provides an API for SELinux applications to get and set \ +process and file security contexts and to obtain security policy \ +decisions. Required for any applications that use the SELinux API." +SECTION = "base" +LICENSE = "PD" +LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=84b4d2c6ef954a2d4081e775a270d0d0" + +require selinux_common.inc + +inherit python3targetconfig pkgconfig + +FILESEXTRAPATHS:prepend := "${THISDIR}/libselinux:" +SRC_URI += "\ + file://0001-Makefile-fix-python-modules-install-path-for-multili.patch \ + file://0002-Do-not-use-PYCEXT-and-rely-on-the-installed-file-nam.patch \ + file://0003-libselinux-restore-drop-the-obsolete-LSF-transitiona.patch \ + " + +S = "${WORKDIR}/git/libselinux" + +DEPENDS = "libsepol libpcre2 swig-native python3-setuptools-scm-native" +DEPENDS:append:libc-musl = " fts" + +RDEPENDS:${PN} = "libselinux python3-core python3-shell" + +def get_policyconfigarch(d): + import re + target = d.getVar('TARGET_ARCH') + p = re.compile('i.86') + target = p.sub('i386',target) + return "ARCH=%s" % (target) + +EXTRA_OEMAKE = "${@get_policyconfigarch(d)}" +EXTRA_OEMAKE:append:libc-musl = " FTS_LDLIBS=-lfts" + +FILES:${PN} = "${PYTHON_SITEPACKAGES_DIR}/*" +INSANE_SKIP:${PN} = "dev-so" + +do_compile() { + oe_runmake pywrap -j1 \ + PYLIBVER='python${PYTHON_BASEVERSION}' \ + PYINC='-I${STAGING_INCDIR}/${PYLIBVER}' \ + PYLIBS='-L${STAGING_LIBDIR}/${PYLIBVER} -l${PYLIBVER}' +} + +do_install() { + oe_runmake install-pywrap \ + DESTDIR=${D} \ + PREFIX=${prefix} + PYLIBVER='python${PYTHON_BASEVERSION}' \ + PYTHONLIBDIR='${PYTHON_SITEPACKAGES_DIR}' + + # Fix buildpaths issue + sed -i -e 's,${WORKDIR},,g' \ + ${D}${PYTHON_SITEPACKAGES_DIR}/selinux-${PV}.dist-info/direct_url.json +} diff --git a/recipes-security/selinux/libselinux_3.6.bb b/recipes-security/selinux/libselinux_3.6.bb index dab4965..b0dcde6 100644 --- a/recipes-security/selinux/libselinux_3.6.bb +++ b/recipes-security/selinux/libselinux_3.6.bb @@ -8,18 +8,16 @@ LIC_FILES_CHKSUM = "file://${S}/LICENSE;md5=84b4d2c6ef954a2d4081e775a270d0d0" require selinux_common.inc -inherit lib_package pkgconfig python3targetconfig +inherit lib_package pkgconfig FILESEXTRAPATHS:prepend := "${THISDIR}/libselinux:" SRC_URI += "\ - file://0001-Makefile-fix-python-modules-install-path-for-multili.patch \ - file://0002-Do-not-use-PYCEXT-and-rely-on-the-installed-file-nam.patch \ file://0003-libselinux-restore-drop-the-obsolete-LSF-transitiona.patch \ " S = "${WORKDIR}/git/libselinux" -DEPENDS = "libsepol libpcre2 swig-native python3-setuptools-scm-native" +DEPENDS = "libsepol libpcre2" DEPENDS:append:libc-musl = " fts" def get_policyconfigarch(d): @@ -32,29 +30,4 @@ def get_policyconfigarch(d): EXTRA_OEMAKE = "${@get_policyconfigarch(d)}" EXTRA_OEMAKE:append:libc-musl = " FTS_LDLIBS=-lfts" -do_compile:append() { - oe_runmake pywrap -j1 \ - PYLIBVER='python${PYTHON_BASEVERSION}' \ - PYINC='-I${STAGING_INCDIR}/${PYLIBVER}' \ - PYLIBS='-L${STAGING_LIBDIR}/${PYLIBVER} -l${PYLIBVER}' -} - -do_install:append() { - oe_runmake install-pywrap \ - DESTDIR=${D} \ - PREFIX=${prefix} - PYLIBVER='python${PYTHON_BASEVERSION}' \ - PYTHONLIBDIR='${PYTHON_SITEPACKAGES_DIR}' - - # Fix buildpaths issue - sed -i -e 's,${WORKDIR},,g' \ - ${D}${PYTHON_SITEPACKAGES_DIR}/selinux-${PV}.dist-info/direct_url.json -} - -PACKAGES += "${PN}-python" -RDEPENDS:${PN}-python = "python3-core python3-shell" - -FILES:${PN}-python = "${PYTHON_SITEPACKAGES_DIR}/*" -INSANE_SKIP:${PN}-python = "dev-so" - BBCLASSEXTEND = "native" -- cgit v1.2.3-54-g00ecf