diff --git a/recipes-openharmony/openharmony/openharmony-standard-3.1/appspawn-procps.patch b/recipes-openharmony/openharmony/files/appspawn-procps.patch
similarity index 100%
rename from recipes-openharmony/openharmony/openharmony-standard-3.1/appspawn-procps.patch
rename to recipes-openharmony/openharmony/files/appspawn-procps.patch
diff --git a/recipes-openharmony/openharmony/openharmony-standard-3.0/base_startup_appspawn_standard-app-spawn-server-override-007-fix.patch b/recipes-openharmony/openharmony/openharmony-standard-3.0/base_startup_appspawn_standard-app-spawn-server-override-007-fix.patch
new file mode 100644
index 0000000000000000000000000000000000000000..77d632e7525b83a64e686ef392eed6e6ce06a832
--- /dev/null
+++ b/recipes-openharmony/openharmony/openharmony-standard-3.0/base_startup_appspawn_standard-app-spawn-server-override-007-fix.patch
@@ -0,0 +1,27 @@
+# SPDX-FileCopyrightText: Huawei Inc.
+#
+# SPDX-License-Identifier: Apache-2.0
+
+Patch for //base/startup/appspawn_standard repository of OpenHarmony 3.0 codebase.
+
+Fix App_Spawn_Server_Override_007 test.
+
+Signed-off-by: Esben Haabendal <esben.haabendal@huawei.com>
+Upstream-Status: Pending
+
+diff --git a/test/unittest/app_spawn_server_test/app_spawn_server_override_test.cpp b/test/unittest/app_spawn_server_test/app_spawn_server_override_test.cpp
+index 8956e0c272b9..516ca82a8ef6 100644
+--- a/test/unittest/app_spawn_server_test/app_spawn_server_override_test.cpp
++++ b/test/unittest/app_spawn_server_test/app_spawn_server_override_test.cpp
+@@ -208,8 +208,9 @@ HWTEST_F(AppSpawnServerOverrideTest, App_Spawn_Server_Override_007, TestSize.Lev
+ {
+     GTEST_LOG_(INFO) << "App_Spawn_Server_Override_007 start";
+ 
+-    char longProcName[20] = "longProcName";
+-    int64_t longProcNameLen = strlen(longProcName);
++    char longProcName[22] = "longProcName";
++    // longProcName array must be large enough to hold processName set below
++    int64_t longProcNameLen = sizeof(longProcName);
+     char processName[32] = "processName0123456789";
+     int32_t len = sizeof(processName);
+ 
diff --git a/recipes-openharmony/openharmony/openharmony-standard-3.0/base_startup_appspawn_standard-setprocessname-buffer-overflow.patch b/recipes-openharmony/openharmony/openharmony-standard-3.0/base_startup_appspawn_standard-setprocessname-buffer-overflow.patch
new file mode 100644
index 0000000000000000000000000000000000000000..2c45a341c64aa312460ece9e2ba0a1c7f8bbc81b
--- /dev/null
+++ b/recipes-openharmony/openharmony/openharmony-standard-3.0/base_startup_appspawn_standard-setprocessname-buffer-overflow.patch
@@ -0,0 +1,25 @@
+# SPDX-FileCopyrightText: Huawei Inc.
+#
+# SPDX-License-Identifier: Apache-2.0
+
+Patch for //base/startup/appspawn_standard repository of OpenHarmony 3.0 codebase.
+
+Prevent buffer overflow error in AppSpawn::SetProcessName() when processName is
+longer than longProcNameLen - 1.
+
+Signed-off-by: Esben Haabendal <esben.haabendal@huawei.com>
+Upstream-Status: Pending
+
+diff --git a/src/appspawn_server.cpp b/src/appspawn_server.cpp
+index 9e238409ad41..ea539e5b5b2a 100644
+--- a/src/appspawn_server.cpp
++++ b/src/appspawn_server.cpp
+@@ -267,7 +267,7 @@ int32_t AppSpawnServer::SetProcessName(
+     }
+ 
+     // set long process name
+-    if (strncpy_s(longProcName, len, processName, len) != EOK) {
++    if (strncpy_s(longProcName, longProcNameLen, processName, len) != EOK) {
+         HiLog::Error(LABEL, "strncpy_s long name error: %{public}d", strerror_r(errno, err_string, ERR_STRING_SZ));
+         return -EINVAL;
+     }
diff --git a/recipes-openharmony/openharmony/openharmony-standard-3.0/hilog.run-ptest b/recipes-openharmony/openharmony/openharmony-standard-3.0/hilog.run-ptest
deleted file mode 100644
index 40a8da9e740afd01658b6222d66e2d7a3aa3521c..0000000000000000000000000000000000000000
--- a/recipes-openharmony/openharmony/openharmony-standard-3.0/hilog.run-ptest
+++ /dev/null
@@ -1,20 +0,0 @@
-#!/bin/sh
-# SPDX-FileCopyrightText: Huawei Inc.
-#
-# SPDX-License-Identifier: Apache-2.0
-
-# Start the hilogd service if it is not already running
-systemctl start hilogd.service
-
-# Add path to hilog test suite $PATH
-PTEST_PATH=$(dirname $(readlink -f $0))
-export PATH="${PTEST_PATH}:${PATH}"
-
-HiLogNDKTest
-TEST_RESULT=$?
-
-if test "$TEST_RESULT" -eq 0; then
-    echo "PASS: HiLogNDKTest"
-else
-    echo "FAIL: HiLogNDKTest"
-fi
diff --git a/recipes-openharmony/openharmony/openharmony-standard-3.1/base_startup_appspawn_standard-app-spawn-server-override-007-fix.patch b/recipes-openharmony/openharmony/openharmony-standard-3.1/base_startup_appspawn_standard-app-spawn-server-override-007-fix.patch
new file mode 100644
index 0000000000000000000000000000000000000000..6b45e4f56f3d3384824d2e33dd1fbf0162dec6af
--- /dev/null
+++ b/recipes-openharmony/openharmony/openharmony-standard-3.1/base_startup_appspawn_standard-app-spawn-server-override-007-fix.patch
@@ -0,0 +1,27 @@
+# SPDX-FileCopyrightText: Huawei Inc.
+#
+# SPDX-License-Identifier: Apache-2.0
+
+Patch for //base/startup/appspawn_standard repository of OpenHarmony 3.1 codebase.
+
+Fix App_Spawn_Server_Override_007 test.
+
+Signed-off-by: Esben Haabendal <esben.haabendal@huawei.com>
+Upstream-Status: Pending
+
+diff --git a/test/unittest/app_spawn_server_test/app_spawn_server_override_test.cpp b/test/unittest/app_spawn_server_test/app_spawn_server_override_test.cpp
+index 8956e0c272b9..516ca82a8ef6 100644
+--- a/test/unittest/app_spawn_server_test/app_spawn_server_override_test.cpp
++++ b/test/unittest/app_spawn_server_test/app_spawn_server_override_test.cpp
+@@ -208,8 +208,9 @@ HWTEST_F(AppSpawnServerOverrideTest, App_Spawn_Server_Override_007, TestSize.Lev
+ {
+     GTEST_LOG_(INFO) << "App_Spawn_Server_Override_007 start";
+ 
+-    char longProcName[20] = "longProcName";
+-    int64_t longProcNameLen = strlen(longProcName);
++    char longProcName[22] = "longProcName";
++    // longProcName array must be large enough to hold processName set below
++    int64_t longProcNameLen = sizeof(longProcName);
+     char processName[32] = "processName0123456789";
+     int32_t len = sizeof(processName);
+ 
diff --git a/recipes-openharmony/openharmony/openharmony-standard-3.1/base_startup_appspawn_standard-setprocessname-buffer-overflow.patch b/recipes-openharmony/openharmony/openharmony-standard-3.1/base_startup_appspawn_standard-setprocessname-buffer-overflow.patch
new file mode 100644
index 0000000000000000000000000000000000000000..0d5b7915b51a15836b2277a9269f76d3d1452490
--- /dev/null
+++ b/recipes-openharmony/openharmony/openharmony-standard-3.1/base_startup_appspawn_standard-setprocessname-buffer-overflow.patch
@@ -0,0 +1,25 @@
+# SPDX-FileCopyrightText: Huawei Inc.
+#
+# SPDX-License-Identifier: Apache-2.0
+
+Patch for //base/startup/appspawn_standard repository of OpenHarmony 3.1 codebase.
+
+Prevent buffer overflow error in AppSpawn::SetProcessName() when processName is
+longer than longProcNameLen - 1.
+
+Signed-off-by: Esben Haabendal <esben.haabendal@huawei.com>
+Upstream-Status: Pending
+
+diff --git a/src/appspawn_server.cpp b/src/appspawn_server.cpp
+index 54f66450b81e..707aed8c924e 100644
+--- a/src/appspawn_server.cpp
++++ b/src/appspawn_server.cpp
+@@ -514,7 +514,7 @@ int32_t AppSpawnServer::SetProcessName(
+     }
+ 
+     // set long process name
+-    if (strncpy_s(longProcName, len, processName, len) != EOK) {
++    if (strncpy_s(longProcName, longProcNameLen, processName, len) != EOK) {
+         HiLog::Error(LABEL, "strncpy_s long name error: %{public}d", errno);
+         return -EINVAL;
+     }
diff --git a/recipes-openharmony/openharmony/openharmony-standard_3.0.bb b/recipes-openharmony/openharmony/openharmony-standard_3.0.bb
index 637708a38e9e6c64b7417e13bca839e1ee594b1c..6b0d720866712f139e6b0a8348282b512224f4d2 100644
--- a/recipes-openharmony/openharmony/openharmony-standard_3.0.bb
+++ b/recipes-openharmony/openharmony/openharmony-standard_3.0.bb
@@ -22,6 +22,8 @@ require musl-ldso-paths-sanity-check.inc
 FILESEXTRAPATHS:prepend := "${THISDIR}/openharmony-${OPENHARMONY_VERSION}:"
 FILESEXTRAPATHS:prepend := "${THISDIR}/openharmony-standard-${OPENHARMONY_VERSION}:"
 
+SRC_URI += "${@bb.utils.contains('PTEST_ENABLED', '1', 'file://run-ptest', '', d)}"
+
 # TODO: we probably want these
 SRC_URI += "file://hilog-Add-tests.patch"
 
@@ -32,23 +34,6 @@ SRC_URI += "file://flexlexer.patch;patchdir=${S}/base/update/updater"
 SRC_URI += "file://jsframwork-use-yocto-node.patch;patchdir=${S}/third_party/jsframework"
 SRC_URI += "file://ts2abc-don-t-set-node_path-for-Linux-host-toolchain.patch;patchdir=${S}/ark/ts2abc"
 
-# Should be covered by Oniro prebuilts
-# TODO: Cleanup prebuilts recipe with these component specific patches instead
-#       of adding arguments in toolchain definition.
-#SRC_URI += "file://toolchain-compiler-path.patch;patchdir=${S}/build"
-#SRC_URI += "file://ark-runtime_core-compiler-option.patch;patchdir=${S}/ark/runtime_core"
-#SRC_URI += "file://ark-runtime_core-libpandabase.patch;patchdir=${S}/ark/runtime_core"
-#SRC_URI += "file://libweston_config-Add-Wno-unused-but-set-variable-com.patch;patchdir=${S}/third_party/weston"
-#SRC_URI += "file://libunwind-compiler-option.patch;patchdir=${S}/third_party/libunwind"
-#SRC_URI += "file://protobuf-compiler-option.patch;patchdir=${S}/third_party/protobuf"
-#SRC_URI += "file://multimedia-audio-compiler-option.patch;patchdir=${S}/foundation/multimedia/audio_standard"
-#SRC_URI += "file://quickjs-compiler-option.patch;patchdir=${S}/third_party/quickjs"
-#SRC_URI += "file://ace_engine-clang-config.patch;patchdir=${S}/foundation/ace/ace_engine"
-#SRC_URI += "file://icu-compile-option.patch;patchdir=${S}/third_party/icu"
-#SRC_URI += "file://ark-js_runtime-compile-option.patch;patchdir=${S}/ark/js_runtime"
-#SRC_URI += "file://ts2abc_host-toolchain.patch;patchdir=${S}/ark/ts2abc"
-#SRC_URI += "file://hc-gen-compiler.patch;patchdir=${S}/drivers/framework"
-
 SRC_URI += "file://hdc-build-system-files.patch;patchdir=${S}/developtools/hdc_standard"
 
 SRC_URI += "file://vendor-qemu-uhdf-files.patch;patchdir=${S}/drivers/peripheral"
@@ -64,6 +49,10 @@ SRC_URI += "file://xf86drm.c-Add-drmWaitVBlank-hack.patch;patchdir=${S}/third_pa
 
 SRC_URI += "file://graphic-standard-Add-missing-entry-for-libwms_client.patch;patchdir=${S}/foundation/graphic/standard"
 
+SRC_URI += "file://appspawn-procps.patch;patchdir=${S}/base/startup/appspawn_standard"
+SRC_URI += "file://base_startup_appspawn_standard-app-spawn-server-override-007-fix.patch;patchdir=${S}/base/startup/appspawn_standard"
+SRC_URI += "file://base_startup_appspawn_standard-setprocessname-buffer-overflow.patch;patchdir=${S}/base/startup/appspawn_standard"
+
 inherit python3native gn_base ptest
 
 B = "${S}/out/ohos-arm-release"
@@ -216,6 +205,8 @@ do_install_ptest () {
     do
         install -D -m 755 "${B}/tests/$f" "${D}${PTEST_PATH}/$f"
     done
+    # undo the default installation of ptest done by ptest.bbclass
+    rm -f ${D}${PTEST_PATH}/run-ptest
 }
 
 generate_platforms_build_file() {
@@ -326,22 +317,24 @@ RDEPENDS:${PN} += "${PN}-libutilsecurec ${PN}-libutils"
 inherit systemd
 SYSTEMD_AUTO_ENABLE = "enable"
 
+# //base/hiviewdfx/hilog component
 PACKAGES =+ "${PN}-hilog ${PN}-hilog-ptest"
 SYSTEMD_PACKAGES = "${PN}-hilog"
 SYSTEMD_SERVICE:${PN}-hilog = "hilogd.service"
 SRC_URI += "file://hilogd.service"
-SRC_URI += "${@bb.utils.contains('PTEST_ENABLED', '1', 'file://hilog.run-ptest', '', d)}"
 do_install:append() {
     install -d ${D}/${systemd_unitdir}/system
     install -m 644 ${WORKDIR}/hilogd.service ${D}${systemd_unitdir}/system/
-    rm -f ${D}${sysconfdir}/init/hilogd.cfg
+    rm -f ${D}${sysconfdir}/openharmony/init/hilogd.cfg
     install -d ${D}${sysconfdir}/sysctl.d
     echo "net.unix.max_dgram_qlen=600" > ${D}${sysconfdir}/sysctl.d/hilogd.conf
 }
+do_install_ptest_base[cleandirs] += "${D}${libdir}/${BPN}-hilog/ptest"
 do_install_ptest:append() {
-    install -D ${WORKDIR}/hilog.run-ptest ${D}${libdir}/${BPN}-hilog/ptest/run-ptest
-    mv ${D}${PTEST_PATH}/moduletest/hiviewdfx/hilog/* ${D}${libdir}/${BPN}-hilog/ptest/
-    rmdir ${D}${PTEST_PATH}/moduletest/hiviewdfx/hilog
+    install -D ${WORKDIR}/run-ptest ${D}${libdir}/${BPN}-hilog/ptest/run-ptest
+    mv ${D}${PTEST_PATH}/moduletest/hiviewdfx/hilog ${D}${libdir}/${BPN}-hilog/ptest/moduletest
+    rmdir ${D}${PTEST_PATH}/moduletest/hiviewdfx
+    echo "hilogd.service" > ${D}${libdir}/${BPN}-hilog/ptest/systemd-units
 }
 FILES:${PN}-hilog = "\
     ${bindir}/hilog* \
@@ -350,12 +343,59 @@ FILES:${PN}-hilog = "\
     ${systemd_unitdir}/hilogd.service \
 "
 FILES:${PN}-hilog-ptest = "${libdir}/${BPN}-hilog/ptest"
-RDEPENDS:${PN}-hilog += "musl libcxx ${PN}-libutilsecurec"
-RDEPENDS:${PN}-hilog-ptest += "${PN}-hilog musl libcxx"
 RDEPENDS:${PN} += "${PN}-hilog"
 RDEPENDS:${PN}-ptest += "${PN}-hilog-ptest ${PN}-hilog"
+RDEPENDS:${PN}-hilog-ptest += "${PN}-hilog"
+RDEPENDS:${PN}-hilog       += "musl libcxx"
+RDEPENDS:${PN}-hilog-ptest += "musl libcxx"
+RDEPENDS:${PN}-hilog       += "${PN}-libutilsecurec"
+
+# //base/startup/appspawn_standard component
+PACKAGES =+ "${PN}-appspawn ${PN}-appspawn-ptest"
+SYSTEMD_PACKAGES += "${PN}-appspawn"
+SYSTEMD_SERVICE:${PN}-appspawn = "appspawn.service"
+SRC_URI += "file://appspawn.service"
+do_install:append() {
+    install -d ${D}/${systemd_unitdir}/system
+    install -m 644 ${WORKDIR}/appspawn.service ${D}${systemd_unitdir}/system/
+    rm -f ${D}${sysconfdir}/openharmony/init/appspawn.cfg
+}
+do_install_ptest_base[cleandirs] += "${D}${libdir}/${BPN}-appspawn/ptest"
+do_install_ptest:append() {
+    install -D ${WORKDIR}/run-ptest ${D}${libdir}/${BPN}-appspawn/ptest/run-ptest
+    mv ${D}${PTEST_PATH}/moduletest/startup_l2/appspawn_l2 ${D}${libdir}/${BPN}-appspawn/ptest/moduletest
+    mv ${D}${PTEST_PATH}/unittest/startup_l2/appspawn_l2 ${D}${libdir}/${BPN}-appspawn/ptest/unittest
+    rmdir ${D}${PTEST_PATH}/*/startup_l2
+    echo "appspawn.service" > ${D}${libdir}/${BPN}-appspawn/ptest/systemd-units
+}
+OPENHARMONY_PTEST_IS_BROKEN += "appspawn"
+FILES:${PN}-appspawn = "\
+    ${bindir}/appspawn* \
+    ${libdir}/libappspawn* \
+    ${systemd_unitdir}/appspawnd.service \
+"
+FILES:${PN}-appspawn-ptest = "${libdir}/${BPN}-appspawn/ptest"
+RDEPENDS:${PN} += "${PN}-appspawn"
+RDEPENDS:${PN}-ptest += "${PN}-appspawn-ptest ${PN}-appspawn"
+RDEPENDS:${PN}-appspawn-ptest += "${PN}-appspawn"
+RDEPENDS:${PN}-appspawn       += "musl libcxx"
+RDEPENDS:${PN}-appspawn-ptest += "musl libcxx"
+RDEPENDS:${PN}-appspawn       += "${PN}-libutils ${PN}-hilog"
+RDEPENDS:${PN}-appspawn-ptest += "${PN}-libutils ${PN}-hilog"
+# TODO: remove when needed parts are split out
+RDEPENDS:${PN}-appspawn       += "${PN}"
+RDEPENDS:${PN}-appspawn-ptest += "${PN}"
+
+# Disable all ptest suites that are know to not work for now. When the x-bit is
+# not set, the ptest is visible (using `ptest-runner -l`), but no test cases
+# will be run when executing it.
+# TODO: Fix all components and tests and remove all of this
+do_install_ptest:append() {
+    for component in ${OPENHARMONY_PTEST_IS_BROKEN} ; do
+        chmod -x ${D}${libdir}/${BPN}-$component/ptest/run-ptest
+    done
+}
 
-INSANE_SKIP:${PN} = "already-stripped"
 EXCLUDE_FROM_SHLIBS = "1"
 
 # To avoid excessive diskspace blowup, we are stripping our executables
diff --git a/recipes-openharmony/openharmony/openharmony-standard_3.1.bb b/recipes-openharmony/openharmony/openharmony-standard_3.1.bb
index 4cdea2f12aa775fb994d1c04fb2edca7c0fda868..5007c1cb101e6f56542fe7c2ec8766f93a832488 100644
--- a/recipes-openharmony/openharmony/openharmony-standard_3.1.bb
+++ b/recipes-openharmony/openharmony/openharmony-standard_3.1.bb
@@ -78,6 +78,8 @@ SRC_URI += "file://foundation_distributedschedule_safwk-slash-system-symlink.pat
 SRC_URI += "file://foundation_distributedschedule_samgr-slash-system-symlink.patch;patchdir=${S}/foundation/distributedschedule/samgr"
 
 SRC_URI += "file://appspawn-procps.patch;patchdir=${S}/base/startup/appspawn_standard"
+SRC_URI += "file://base_startup_appspawn_standard-app-spawn-server-override-007-fix.patch;patchdir=${S}/base/startup/appspawn_standard"
+SRC_URI += "file://base_startup_appspawn_standard-setprocessname-buffer-overflow.patch;patchdir=${S}/base/startup/appspawn_standard"
 
 # Workaround for problem with nodejs 17:
 # error:0308010C:digital envelope routines::unsupported
@@ -553,7 +555,7 @@ do_install_ptest:append() {
     rmdir ${D}${PTEST_PATH}/*/appspawn
     echo "appspawn.service" > ${D}${libdir}/${BPN}-appspawn/ptest/systemd-units
 }
-OPENHARMONY_PTEST_IS_BROKEN = "appspawn"
+OPENHARMONY_PTEST_IS_BROKEN += "appspawn"
 FILES:${PN}-appspawn = "\
     ${bindir}/appspawn* \
     ${libdir}/libappspawn* \
@@ -580,7 +582,7 @@ do_install_ptest:append() {
     mv ${D}${PTEST_PATH}/unittest/appexecfwk_standard ${D}${libdir}/${BPN}-appexecfwk/ptest/unittest
     mv ${D}${PTEST_PATH}/systemtest/appexecfwk_standard ${D}${libdir}/${BPN}-appexecfwk/ptest/systemtest
 }
-OPENHARMONY_PTEST_IS_BROKEN = "appexecfwk"
+OPENHARMONY_PTEST_IS_BROKEN += "appexecfwk"
 FILES:${PN}-appexecfwk = "\
     ${libdir}/libappexecfwk*${SOLIBS} \
 "
@@ -612,7 +614,7 @@ do_install_ptest:append() {
     rmdir ${D}${PTEST_PATH}/unittest/samgr_standard
     echo "samgr.service" > ${D}${libdir}/${BPN}-samgr/ptest/systemd-units
 }
-OPENHARMONY_PTEST_IS_BROKEN = "samgr"
+OPENHARMONY_PTEST_IS_BROKEN += "samgr"
 FILES:${PN}-samgr = "\
     ${bindir}/samgr \
     ${libdir}/libsamgr*${SOLIBS} \
@@ -637,7 +639,7 @@ do_install_ptest:append() {
     mv ${D}${PTEST_PATH}/unittest/safwk/safwk ${D}${libdir}/${BPN}-safwk/ptest/unittest
     rmdir ${D}${PTEST_PATH}/unittest/safwk
 }
-OPENHARMONY_PTEST_IS_BROKEN = "safwk"
+OPENHARMONY_PTEST_IS_BROKEN += "safwk"
 FILES:${PN}-safwk = "\
     ${libdir}/libsystem_ability_fwk*${SOLIBS} \
 "
@@ -657,7 +659,7 @@ do_install_ptest:append() {
     mv ${D}${PTEST_PATH}/unittest/ipc ${D}${libdir}/${BPN}-ipc/ptest/unittest
     mv ${D}${PTEST_PATH}/moduletest/ipc ${D}${libdir}/${BPN}-ipc/ptest/moduletest
 }
-OPENHARMONY_PTEST_IS_BROKEN = "ipc"
+OPENHARMONY_PTEST_IS_BROKEN += "ipc"
 FILES:${PN}-ipc = "\
     ${libdir}/libipc*${SOLIBS} \
     ${libdir}/librpc*${SOLIBS} \
@@ -679,7 +681,7 @@ do_install_ptest:append() {
     mv ${D}${PTEST_PATH}/unittest/device_manager_base/component_loader_test ${D}${libdir}/${BPN}-devicemanager/ptest/unittest
     rmdir ${D}${PTEST_PATH}/unittest/device_manager_base
 }
-OPENHARMONY_PTEST_IS_BROKEN = "devicemanager"
+OPENHARMONY_PTEST_IS_BROKEN += "devicemanager"
 FILES:${PN}-devicemanager = "\
     ${libdir}/libdevicemanager*${SOLIBS} \
     ${libdir}/module/distributedhardware/libdevicemanager*${SOLIBS} \
@@ -717,7 +719,7 @@ do_install_ptest:append() {
     echo "accesstoken.service" >  ${D}${libdir}/${BPN}-accesstoken/ptest/systemd-units
     echo "tokensync.service"   >> ${D}${libdir}/${BPN}-accesstoken/ptest/systemd-units
 }
-OPENHARMONY_PTEST_IS_BROKEN = "accesstoken"
+OPENHARMONY_PTEST_IS_BROKEN += "accesstoken"
 FILES:${PN}-accesstoken = "\
     ${libdir}/libaccesstoken*${SOLIBS} \
     ${libdir}/libtoken*sync*${SOLIBS} \
@@ -752,7 +754,7 @@ do_install_ptest:append() {
     mv ${D}${PTEST_PATH}/unittest/dsoftbus_standard ${D}${libdir}/${BPN}-dsoftbus/ptest/unittest
     echo "dsoftbus.service" > ${D}${libdir}/${BPN}-dsoftbus/ptest/systemd-units
 }
-OPENHARMONY_PTEST_IS_BROKEN = "dsoftbus"
+OPENHARMONY_PTEST_IS_BROKEN += "dsoftbus"
 FILES:${PN}-dsoftbus = "\
     ${libdir}/libsoftbus*${SOLIBS} \
     ${sysconfdir}/openharmony/communication/softbus \
@@ -821,7 +823,6 @@ RDEPENDS:${PN}-hitrace       += "${PN}"
 # not set, the ptest is visible (using `ptest-runner -l`), but no test cases
 # will be run when executing it.
 # TODO: Fix all components and tests and remove all of this
-OPENHARMONY_PTEST_IS_BROKEN = "accesstoken appexecfwk appspawn devicemanager dsoftbus ipc safwk samgr"
 do_install_ptest:append() {
     for component in ${OPENHARMONY_PTEST_IS_BROKEN} ; do
         chmod -x ${D}${libdir}/${BPN}-$component/ptest/run-ptest