diff mbox series

[meta-selinux] refpolicy_common: Skip HLL module processing for monolithic policy builds

Message ID 20251017042419.3307354-1-quic_sasikuma@quicinc.com
State New
Headers show
Series [meta-selinux] refpolicy_common: Skip HLL module processing for monolithic policy builds | expand

Commit Message

Sasi Kumar Maddineni Oct. 17, 2025, 4:24 a.m. UTC
Avoid processing and copying high-level language (.pp) modules during do_install
when MONOLITHIC=y is set. This prevents build failures due to missing files in
/usr/share/selinux/targeted, which are not generated in monolithic mode.

Fixes error:
  cp: cannot stat '/usr/share/selinux/targeted/*.*': No such file or directory

Signed-off-by: Sasi Kumar Maddineni <quic_sasikuma@quicinc.com>
---
 .../refpolicy/refpolicy_common.inc            | 33 ++++++++++---------
 1 file changed, 17 insertions(+), 16 deletions(-)

Comments

Yi Zhao Oct. 17, 2025, 3:55 p.m. UTC | #1
On 10/17/25 12:24, Sasi Kumar Maddineni (QUIC) via 
lists.yoctoproject.org wrote:
> Avoid processing and copying high-level language (.pp) modules during do_install
> when MONOLITHIC=y is set. This prevents build failures due to missing files in
> /usr/share/selinux/targeted, which are not generated in monolithic mode.
>
> Fixes error:
>    cp: cannot stat '/usr/share/selinux/targeted/*.*': No such file or directory
>
> Signed-off-by: Sasi Kumar Maddineni <quic_sasikuma@quicinc.com>
> ---
>   .../refpolicy/refpolicy_common.inc            | 33 ++++++++++---------
>   1 file changed, 17 insertions(+), 16 deletions(-)
>
> diff --git a/recipes-security/refpolicy/refpolicy_common.inc b/recipes-security/refpolicy/refpolicy_common.inc
> index fd41f8a..27aac44 100644
> --- a/recipes-security/refpolicy/refpolicy_common.inc
> +++ b/recipes-security/refpolicy/refpolicy_common.inc
> @@ -173,22 +173,23 @@ prepare_policy_store() {
>       # Get hll type from suffix on base policy module
>       HLL_TYPE=$(echo ${POL_SRC}/base.* | awk -F . '{if (NF>1) {print $NF}}')
>       HLL_BIN=${STAGING_DIR_NATIVE}${prefix}/libexec/selinux/hll/${HLL_TYPE}
> -
> -    for i in ${POL_SRC}/*.${HLL_TYPE}; do
> -        MOD_NAME=$(basename $i | sed "s/\.${HLL_TYPE}$//")
> -        MOD_DIR=${POL_ACTIVE_MODS}/${MOD_NAME}
> -        mkdir -p ${MOD_DIR}
> -        echo -n "${HLL_TYPE}" > ${MOD_DIR}/lang_ext
> -        if ! bzip2 -t $i >/dev/null 2>&1; then
> -            ${HLL_BIN} $i | bzip2 --stdout > ${MOD_DIR}/cil
> -            bzip2 -f $i && mv -f $i.bz2 $i
> -        else
> -            bunzip2 --stdout $i | \
> -                ${HLL_BIN} | \
> -                bzip2 --stdout > ${MOD_DIR}/cil
> -        fi
> -        cp $i ${MOD_DIR}/hll
> -    done
> +    if [ "${POLICY_MONOLITHIC}" != "y" ]; then


Please add this change to refpolicy-minimum_git.bb as well, since the 
prepare_policy_store() function in that recipe is overwritten.


//Yi


> +        for i in ${POL_SRC}/*.${HLL_TYPE}; do
> +            MOD_NAME=$(basename $i | sed "s/\.${HLL_TYPE}$//")
> +            MOD_DIR=${POL_ACTIVE_MODS}/${MOD_NAME}
> +            mkdir -p ${MOD_DIR}
> +            echo -n "${HLL_TYPE}" > ${MOD_DIR}/lang_ext
> +            if ! bzip2 -t $i >/dev/null 2>&1; then
> +                ${HLL_BIN} $i | bzip2 --stdout > ${MOD_DIR}/cil
> +                bzip2 -f $i && mv -f $i.bz2 $i
> +            else
> +                bunzip2 --stdout $i | \
> +                    ${HLL_BIN} | \
> +                    bzip2 --stdout > ${MOD_DIR}/cil
> +            fi
> +            cp $i ${MOD_DIR}/hll
> +        done
> +    fi
>   }
>   
>   rebuild_policy() {
diff mbox series

Patch

diff --git a/recipes-security/refpolicy/refpolicy_common.inc b/recipes-security/refpolicy/refpolicy_common.inc
index fd41f8a..27aac44 100644
--- a/recipes-security/refpolicy/refpolicy_common.inc
+++ b/recipes-security/refpolicy/refpolicy_common.inc
@@ -173,22 +173,23 @@  prepare_policy_store() {
     # Get hll type from suffix on base policy module
     HLL_TYPE=$(echo ${POL_SRC}/base.* | awk -F . '{if (NF>1) {print $NF}}')
     HLL_BIN=${STAGING_DIR_NATIVE}${prefix}/libexec/selinux/hll/${HLL_TYPE}
-
-    for i in ${POL_SRC}/*.${HLL_TYPE}; do
-        MOD_NAME=$(basename $i | sed "s/\.${HLL_TYPE}$//")
-        MOD_DIR=${POL_ACTIVE_MODS}/${MOD_NAME}
-        mkdir -p ${MOD_DIR}
-        echo -n "${HLL_TYPE}" > ${MOD_DIR}/lang_ext
-        if ! bzip2 -t $i >/dev/null 2>&1; then
-            ${HLL_BIN} $i | bzip2 --stdout > ${MOD_DIR}/cil
-            bzip2 -f $i && mv -f $i.bz2 $i
-        else
-            bunzip2 --stdout $i | \
-                ${HLL_BIN} | \
-                bzip2 --stdout > ${MOD_DIR}/cil
-        fi
-        cp $i ${MOD_DIR}/hll
-    done
+    if [ "${POLICY_MONOLITHIC}" != "y" ]; then
+        for i in ${POL_SRC}/*.${HLL_TYPE}; do
+            MOD_NAME=$(basename $i | sed "s/\.${HLL_TYPE}$//")
+            MOD_DIR=${POL_ACTIVE_MODS}/${MOD_NAME}
+            mkdir -p ${MOD_DIR}
+            echo -n "${HLL_TYPE}" > ${MOD_DIR}/lang_ext
+            if ! bzip2 -t $i >/dev/null 2>&1; then
+                ${HLL_BIN} $i | bzip2 --stdout > ${MOD_DIR}/cil
+                bzip2 -f $i && mv -f $i.bz2 $i
+            else
+                bunzip2 --stdout $i | \
+                    ${HLL_BIN} | \
+                    bzip2 --stdout > ${MOD_DIR}/cil
+            fi
+            cp $i ${MOD_DIR}/hll
+        done
+    fi
 }
 
 rebuild_policy() {