From defe648007b9d985925febbbe2a0237d269d21f6 Mon Sep 17 00:00:00 2001 From: Thierry Escande <thierry.escande@huawei.com> Date: Wed, 10 Aug 2022 01:55:38 +0200 Subject: [PATCH] openharmony-standard-3.0: Add pre-init systemd service This oneshot service creates the folder architecture needed by the OpenHarmony services and components. All other OpenHarmony services will be started after this one. These folders are intended to be created by their own systemd service units, but since they are not all in place yet, this service acts as a generic placeholder in the meantime. The service also change /dev/binder file mode to 0666. Signed-off-by: Thierry Escande <thierry.escande@huawei.com> --- .../openharmony/files/openharmony-preinit | 84 +++++++++++++++++++ .../files/openharmony-preinit.service | 9 ++ .../files/openharmony-preinit.service.license | 3 + .../openharmony/openharmony-standard_3.0.bb | 20 ++++- 4 files changed, 115 insertions(+), 1 deletion(-) create mode 100644 recipes-openharmony/openharmony/files/openharmony-preinit create mode 100644 recipes-openharmony/openharmony/files/openharmony-preinit.service create mode 100644 recipes-openharmony/openharmony/files/openharmony-preinit.service.license diff --git a/recipes-openharmony/openharmony/files/openharmony-preinit b/recipes-openharmony/openharmony/files/openharmony-preinit new file mode 100644 index 00000000..9501a150 --- /dev/null +++ b/recipes-openharmony/openharmony/files/openharmony-preinit @@ -0,0 +1,84 @@ +# SPDX-FileCopyrightText: Huawei Inc. +# +# SPDX-License-Identifier: Apache-2.0 + +#!/bin/sh + +mkdir -p /data/backup +mkdir -p /data/bootchart +mkdir -p /data/cache +mkdir -p /data/cache/backup +mkdir -p /data/cache/backup_stage +mkdir -p /data/cache/recovery +mkdir -p /data/data/.pulse_dir +mkdir -p /data/dhcp +mkdir -p /data/drm +mkdir -p /data/local/tmp +mkdir -p /data/local/traces +mkdir -p /data/lost +mkdir -p /data/mediadrm +mkdir -p /data/media/obb +mkdir -p /data/misc/apns +mkdir -p /data/misc/audioserver +mkdir -p /data/misc/bluedroid +mkdir -p /data/misc/bluetooth/logs +mkdir -p /data/misc/boottrace +mkdir -p /data/misc/cameraserver +mkdir -p /data/misc/carrierid +mkdir -p /data/misc_ce +mkdir -p /data/misc_de +mkdir -p /data/misc/dhcp +mkdir -p /data/misc/ethernet +mkdir -p /data/misc/gatekeeper +mkdir -p /data/misc/gcov +mkdir -p /data/misc/keychain +mkdir -p /data/misc/keystore +mkdir -p /data/misc/media +mkdir -p /data/misc/net +mkdir -p /data/misc/network_watchlist +mkdir -p /data/misc/perfprofd +mkdir -p /data/misc/profiles/cur +mkdir -p /data/misc/profiles/ref +mkdir -p /data/misc/profman +mkdir -p /data/misc/radio +mkdir -p /data/misc/recovery/proc +mkdir -p /data/misc/shared_relro +mkdir -p /data/misc/sms +mkdir -p /data/misc/systemkeys +mkdir -p /data/misc/textclassifier +mkdir -p /data/misc/trace +mkdir -p /data/misc/update_engine +mkdir -p /data/misc/update_engine_log +mkdir -p /data/misc/user +mkdir -p /data/misc/vold +mkdir -p /data/misc/vpn +mkdir -p /data/misc/wifi/sockets +mkdir -p /data/misc/wifi/wpa_supplicant +mkdir -p /data/misc/wmtrace +mkdir -p /data/misc/zoneinfo +mkdir -p /data/nfc/param +mkdir -p /data/ota +mkdir -p /data/ota_package +mkdir -p /data/preloads +mkdir -p /data/resourcefoundation.xml +mkdir -p /data/ss +mkdir -p /data/system_ce +mkdir -p /data/system_de +mkdir -p /data/system/dropbox +mkdir -p /data/system/heapdump +mkdir -p /data/system/users +mkdir -p /data/user +mkdir -p /data/user_de +mkdir -p /data/vendor_ce +mkdir -p /data/vendor_de +mkdir -p /data/vendor/hardware +mkdir -p /data/weston +mkdir -p /usr/lib/dri + +# /dev/binder needs to be rw for all users +chmod 666 /dev/binder + +# /dev/dri/card0 needs to be rw for all users +if [ -c /dev/dri/card0 ]; then + chmod 666 /dev/dri/card0 +fi diff --git a/recipes-openharmony/openharmony/files/openharmony-preinit.service b/recipes-openharmony/openharmony/files/openharmony-preinit.service new file mode 100644 index 00000000..873db0da --- /dev/null +++ b/recipes-openharmony/openharmony/files/openharmony-preinit.service @@ -0,0 +1,9 @@ +[Unit] +Description=OpenHarmony pre-init setup + +[Service] +Type=oneshot +ExecStart=/bin/sh /usr/sbin/openharmony-preinit + +[Install] +WantedBy=multi-user.target diff --git a/recipes-openharmony/openharmony/files/openharmony-preinit.service.license b/recipes-openharmony/openharmony/files/openharmony-preinit.service.license new file mode 100644 index 00000000..98a0b3f4 --- /dev/null +++ b/recipes-openharmony/openharmony/files/openharmony-preinit.service.license @@ -0,0 +1,3 @@ +# SPDX-FileCopyrightText: Huawei Inc. +# +# SPDX-License-Identifier: Apache-2.0 diff --git a/recipes-openharmony/openharmony/openharmony-standard_3.0.bb b/recipes-openharmony/openharmony/openharmony-standard_3.0.bb index 6f6bece3..e66ae548 100644 --- a/recipes-openharmony/openharmony/openharmony-standard_3.0.bb +++ b/recipes-openharmony/openharmony/openharmony-standard_3.0.bb @@ -347,6 +347,24 @@ copy_subsystem_config_json_file() { inherit systemd SYSTEMD_AUTO_ENABLE = "enable" +# OpenHarmony pre-init package and its systemd service +# Used to create folders needed by OH services and components +PACKAGES =+ "${PN}-openharmony-preinit" +SYSTEMD_PACKAGES = "${PN}-openharmony-preinit" +SYSTEMD_SERVICE:${PN}-openharmony-preinit = "openharmony-preinit.service" +FILES:${PN}-openharmony-preinit = " \ + ${libdir}/openharmony-preinit \ +" +SRC_URI += "file://openharmony-preinit file://openharmony-preinit.service" +do_install:append() { + install -d ${D}/${sbindir} + install -m 755 ${WORKDIR}/openharmony-preinit ${D}/${sbindir} + + install -d ${D}/${systemd_unitdir}/system + install -m 644 ${WORKDIR}/openharmony-preinit.service ${D}${systemd_unitdir}/system/ +} +RDEPENDS:${PN} += "${PN}-openharmony-preinit" + # //utils/native component PACKAGES =+ "${PN}-libutilsecurec ${PN}-libutils" FILES:${PN}-libutilsecurec = "${libdir}/libutilsecurec*${SOLIBS}" @@ -370,7 +388,7 @@ RDEPENDS:${PN}-ptest += "${PN}-libutils-ptest" # //base/hiviewdfx/hilog component PACKAGES =+ "${PN}-hilog" -SYSTEMD_PACKAGES = "${PN}-hilog" +SYSTEMD_PACKAGES += "${PN}-hilog" SYSTEMD_SERVICE:${PN}-hilog = "hilogd.service" SRC_URI += "file://hilogd.service" do_install:append() { -- GitLab