From 91827b463a283ddadfa1b1253d73e6ec6d8aba29 Mon Sep 17 00:00:00 2001
From: Thierry Escande <thierry.escande@huawei.com>
Date: Mon, 27 Jun 2022 16:54:03 +0200
Subject: [PATCH] openharmony-standard: Add a sanity check function for lib
 paths

This change adds a post do_install() function that checks if all
subfloders copied from system/lib/module are set in the distro variable
MUSL_LDSO_PATHS and thus are part of the ld-musl-${MUSL_LDSO_ARCH}.path
file.

Signed-off-by: Thierry Escande <thierry.escande@huawei.com>
---
 .../musl-ldso-paths-sanity-check.inc          | 29 +++++++++++++++++++
 .../openharmony/openharmony-standard_3.0.bb   |  1 +
 .../openharmony/openharmony-standard_3.1.bb   |  1 +
 3 files changed, 31 insertions(+)
 create mode 100644 recipes-openharmony/openharmony/musl-ldso-paths-sanity-check.inc

diff --git a/recipes-openharmony/openharmony/musl-ldso-paths-sanity-check.inc b/recipes-openharmony/openharmony/musl-ldso-paths-sanity-check.inc
new file mode 100644
index 00000000..bfa1971c
--- /dev/null
+++ b/recipes-openharmony/openharmony/musl-ldso-paths-sanity-check.inc
@@ -0,0 +1,29 @@
+# SPDX-FileCopyrightText: Huawei Inc.
+#
+# SPDX-License-Identifier: Apache-2.0
+
+# This post do_install() function checks if all subfloders copied from
+# system/lib/module are set in the distro variable MUSL_LDSO_PATHS.
+#
+# This variable is used to generate the content of the file
+# /etc/ld-musl-${MUSL_LDSO_ARCH}.path so this function stops bitbake
+# if one of the coipied folder from /system/lib/module/* is not in
+# MUSL_LDSO_PATHS.
+
+musl_ldso_paths_sanity_check() {
+	cd "${D}/${libdir}"
+	MODULE_LIB_PATHS="$(find module -type d)"
+	for folder in ${MODULE_LIB_PATHS}; do
+		PAT="(^|[[:space:]])${folder}([[:space:]]|$)"
+		if [[ ! "${MUSL_LDSO_PATHS}" =~ ${PAT} ]]; then
+			echo
+			echo "'${folder}' not in MUSL_LDSO_PATHS"
+			echo "Add it in conf/distro/include/musl-ldso-paths.inc"
+			echo
+
+			return 1
+		fi
+	done
+}
+
+do_install[postfuncs] += "musl_ldso_paths_sanity_check"
diff --git a/recipes-openharmony/openharmony/openharmony-standard_3.0.bb b/recipes-openharmony/openharmony/openharmony-standard_3.0.bb
index 22a8fb34..64d987d0 100644
--- a/recipes-openharmony/openharmony/openharmony-standard_3.0.bb
+++ b/recipes-openharmony/openharmony/openharmony-standard_3.0.bb
@@ -17,6 +17,7 @@ DEPENDS += "bison-native"
 DEPENDS += "ruby-native"
 
 require ${PN}-sources-${OPENHARMONY_VERSION}.inc
+require musl-ldso-paths-sanity-check.inc
 
 FILESEXTRAPATHS:prepend := "${THISDIR}/openharmony-${OPENHARMONY_VERSION}:"
 FILESEXTRAPATHS:prepend := "${THISDIR}/openharmony-standard-${OPENHARMONY_VERSION}:"
diff --git a/recipes-openharmony/openharmony/openharmony-standard_3.1.bb b/recipes-openharmony/openharmony/openharmony-standard_3.1.bb
index 6d79c434..99cd4d14 100644
--- a/recipes-openharmony/openharmony/openharmony-standard_3.1.bb
+++ b/recipes-openharmony/openharmony/openharmony-standard_3.1.bb
@@ -23,6 +23,7 @@ FILESEXTRAPATHS:prepend := "${THISDIR}/openharmony-standard-${OPENHARMONY_VERSIO
 
 require ${PN}-sources-${OPENHARMONY_VERSION}.inc
 require java-tools.inc
+require musl-ldso-paths-sanity-check.inc
 
 SRC_URI += "${@bb.utils.contains('PTEST_ENABLED', '1', 'file://run-ptest', '', d)}"
 
-- 
GitLab