bluez5: split init scripts and systemd service in a different recipe

This commit moves all the work related with the initialization process to a new
recipe to allow disgregate the init scripts from the bluez5 recipe.

Signed-off-by: Arturo Buzarra <arturo.buzarra@digi.com>
This commit is contained in:
Arturo Buzarra 2022-05-09 10:50:49 +02:00
parent ea0d8d7b8b
commit fb6612dabe
12 changed files with 68 additions and 134 deletions

View File

@ -0,0 +1,59 @@
# Copyright (C) 2022 Digi International.
SUMMARY = "Bluetooth init scripts"
LICENSE = "GPL-2.0"
LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/GPL-2.0-only;md5=801f80980d171dd6425610833a22dbe6"
SRC_URI = " \
file://bluetooth-init \
file://bluetooth-init.service \
"
SRC_URI_append_ccimx6sbc = " \
file://bluetooth-init_atheros \
"
inherit update-rc.d
do_install() {
# INITSCRIPT
install -d ${D}${sysconfdir}/init.d/
install -m 0755 ${WORKDIR}/bluetooth-init ${D}${sysconfdir}/bluetooth-init
ln -sf /etc/bluetooth-init ${D}${sysconfdir}/init.d/bluetooth-init
# SYSTEMD
install -d ${D}${systemd_unitdir}/system/
install -m 0644 ${WORKDIR}/bluetooth-init.service ${D}${systemd_unitdir}/system/bluetooth-init.service
}
do_install_append_ccimx6sbc() {
install -m 0755 ${WORKDIR}/bluetooth-init_atheros ${D}${sysconfdir}/bluetooth-init_atheros
}
pkg_postinst_ontarget_${PN}_ccimx6sbc() {
# Only execute the script on wireless ccimx6 platforms
if [ -e "/proc/device-tree/bluetooth/mac-address" ]; then
for id in $(find /sys/devices -name modalias -print0 | xargs -0 sort -u -z | grep sdio); do
if [[ "$id" == "sdio:c00v0271d0301" ]] ; then
mv /etc/bluetooth-init_atheros /etc/bluetooth-init
break
elif [[ "$id" == "sdio:c00v0271d050A" ]] ; then
rm /etc/bluetooth-init_atheros
break
fi
done
fi
}
FILES_${PN} = " ${sysconfdir}/bluetooth-init* \
${sysconfdir}/init.d/bluetooth-init \
${systemd_unitdir}/system/bluetooth-init.service \
"
INITSCRIPT_PACKAGES += "${PN}"
INITSCRIPT_NAME_${PN} = "bluetooth-init"
INITSCRIPT_PARAMS_${PN} = "start 19 2 3 4 5 . stop 21 0 1 6 ."
SYSTEMD_SERVICE_${PN} = "bluetooth-init.service"
PACKAGE_ARCH = "${MACHINE_ARCH}"
COMPATIBLE_MACHINE = "(ccimx6$|ccimx6ul|ccimx8x|ccimx8mn|ccimx8mm)"

View File

@ -9,4 +9,4 @@ ExecStart=/etc/bluetooth-init start
ExecStop=/etc/bluetooth-init stop ExecStop=/etc/bluetooth-init stop
[Install] [Install]
WantedBy=multi-user.target WantedBy=bluetooth.service

View File

@ -4,27 +4,20 @@ Subject: [PATCH] bluetooth.service: add Digi customizations
These changes include: These changes include:
* Adding the bluetooth-init service as a soft dependency.
* Having the bluetooth stack start automatically on boot. * Having the bluetooth stack start automatically on boot.
Signed-off-by: Gabriel Valcazar <gabriel.valcazar@digi.com> Signed-off-by: Gabriel Valcazar <gabriel.valcazar@digi.com>
--- ---
src/bluetooth.service.in | 3 ++- src/bluetooth.service.in | 2 +-
1 file changed, 2 insertions(+), 1 deletion(-) 1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/bluetooth.service.in b/src/bluetooth.service.in diff --git a/src/bluetooth.service.in b/src/bluetooth.service.in
index f799f65..d8b150c 100644 index f9faaa4..95d9ba2 100644
--- a/src/bluetooth.service.in --- a/src/bluetooth.service.in
+++ b/src/bluetooth.service.in +++ b/src/bluetooth.service.in
@@ -2,6 +2,7 @@ @@ -14,7 +14,7 @@ CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE
Description=Bluetooth service LimitNPROC=1
Documentation=man:bluetoothd(8) ProtectHome=true
ConditionPathIsDirectory=/sys/class/bluetooth
+Wants=bluetooth-init.service
[Service]
Type=dbus
@@ -16,5 +17,5 @@ ProtectHome=true
ProtectSystem=full ProtectSystem=full
[Install] [Install]

View File

@ -1,69 +0,0 @@
#!/bin/sh
#===============================================================================
#
# Copyright (C) 2018,2022 by Digi International Inc.
# All rights reserved.
#
# This program is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License version 2 as published by
# the Free Software Foundation.
#
#
# !Description: Initialize bluetooth hardware
#
#===============================================================================
bluetooth_init() {
# Get MAC address from the device tree. Use a default value if it has not been set.
BT_MACADDR="$(hexdump -ve '1/1 "%02X" ":"' /proc/device-tree/bluetooth/mac-address 2>/dev/null | sed 's/:$//g')"
if [ -z "${BT_MACADDR}" ] || [ "${BT_MACADDR}" = "00:00:00:00:00:00" ]; then
BT_MACADDR="00:04:F3:FF:FF:BB"
fi
# Start the Bluetooth driver and bring up the interface
HCIATTACH_LOG="/var/log/hciattach.log"
for RETRY in $(seq 1 5)
do
killproc hciattach
modprobe btdigi
if hciattach ttyBt qca ${BT_RATE:-3000000} -t30 ${BT_FLOW:-flow} unused ${BT_MACADDR} >${HCIATTACH_LOG} 2>&1; then
return
fi
rmmod btdigi
sleep 1
done
BT_ERROR="FAIL (hciattach)"
}
# Source function library
. /etc/init.d/functions
case "$1" in
start)
if [ -d "/proc/device-tree/bluetooth" ]; then
if [ "$(tr -d '\0' 2>/dev/null </proc/device-tree/bluetooth/status)" != "disabled" ]; then
echo -n "Starting bluetooth hardware: "
bluetooth_init
echo "${BT_ERROR:-done.}"
fi
fi
;;
stop)
if [ -d "/sys/class/bluetooth/hci0" ]; then
echo -n "Stopping bluetooth hardware: "
killproc hciattach
rmmod btdigi
echo "done."
fi
;;
restart)
$0 stop
sleep 1
$0 start
;;
*)
echo "Usage: $0 {start|stop|restart}"
exit 1
;;
esac

View File

@ -1,8 +1,6 @@
# Copyright (C) 2015-2021 Digi International. # Copyright (C) 2015-2022 Digi International.
SRC_URI += " \ SRC_URI += " \
file://bluetooth-init \
file://bluetooth-init.service \
file://bluetooth.service-add-customizations.patch \ file://bluetooth.service-add-customizations.patch \
file://main.conf \ file://main.conf \
file://0001-hcitool-do-not-show-unsupported-refresh-option.patch \ file://0001-hcitool-do-not-show-unsupported-refresh-option.patch \
@ -30,20 +28,12 @@ SRC_URI_append_ccimx6ul = " ${QCA65XX_COMMON_PATCHES}"
SRC_URI_append_ccimx6 = " ${QCA65XX_COMMON_PATCHES}" SRC_URI_append_ccimx6 = " ${QCA65XX_COMMON_PATCHES}"
SRC_URI_append_ccimx6sbc = " \ SRC_URI_append_ccimx6sbc = " \
file://bluetooth-init_atheros \
file://main.conf_atheros \ file://main.conf_atheros \
" "
inherit update-rc.d
PACKAGECONFIG_append = " experimental" PACKAGECONFIG_append = " experimental"
do_install_append() { do_install_append() {
install -d ${D}${sysconfdir}/init.d/
install -m 0755 ${WORKDIR}/bluetooth-init ${D}${sysconfdir}/bluetooth-init
ln -sf /etc/bluetooth-init ${D}${sysconfdir}/init.d/bluetooth-init
install -d ${D}${systemd_unitdir}/system/
install -m 0644 ${WORKDIR}/bluetooth-init.service ${D}${systemd_unitdir}/system/bluetooth-init.service
install -m 0644 ${WORKDIR}/main.conf ${D}${sysconfdir}/bluetooth/ install -m 0644 ${WORKDIR}/main.conf ${D}${sysconfdir}/bluetooth/
sed -i -e "s,##BT_DEVICE_NAME##,${BT_DEVICE_NAME},g" \ sed -i -e "s,##BT_DEVICE_NAME##,${BT_DEVICE_NAME},g" \
${D}${sysconfdir}/bluetooth/main.conf ${D}${sysconfdir}/bluetooth/main.conf
@ -53,7 +43,6 @@ do_install_append() {
} }
do_install_append_ccimx6sbc() { do_install_append_ccimx6sbc() {
install -m 0755 ${WORKDIR}/bluetooth-init_atheros ${D}${sysconfdir}/bluetooth-init_atheros
install -m 0644 ${WORKDIR}/main.conf_atheros ${D}${sysconfdir}/bluetooth/ install -m 0644 ${WORKDIR}/main.conf_atheros ${D}${sysconfdir}/bluetooth/
sed -i -e "s,##BT_DEVICE_NAME##,${BT_DEVICE_NAME},g" \ sed -i -e "s,##BT_DEVICE_NAME##,${BT_DEVICE_NAME},g" \
${D}${sysconfdir}/bluetooth/main.conf_atheros ${D}${sysconfdir}/bluetooth/main.conf_atheros
@ -64,11 +53,9 @@ pkg_postinst_ontarget_${PN}_ccimx6sbc() {
if [ -e "/proc/device-tree/bluetooth/mac-address" ]; then if [ -e "/proc/device-tree/bluetooth/mac-address" ]; then
for id in $(find /sys/devices -name modalias -print0 | xargs -0 sort -u -z | grep sdio); do for id in $(find /sys/devices -name modalias -print0 | xargs -0 sort -u -z | grep sdio); do
if [[ "$id" == "sdio:c00v0271d0301" ]] ; then if [[ "$id" == "sdio:c00v0271d0301" ]] ; then
mv /etc/bluetooth-init_atheros /etc/bluetooth-init
mv /etc/bluetooth/main.conf_atheros /etc/bluetooth/main.conf mv /etc/bluetooth/main.conf_atheros /etc/bluetooth/main.conf
break break
elif [[ "$id" == "sdio:c00v0271d050A" ]] ; then elif [[ "$id" == "sdio:c00v0271d050A" ]] ; then
rm /etc/bluetooth-init_atheros
rm /etc/bluetooth/main.conf_atheros rm /etc/bluetooth/main.conf_atheros
break break
fi fi
@ -76,18 +63,6 @@ pkg_postinst_ontarget_${PN}_ccimx6sbc() {
fi fi
} }
PACKAGES =+ "${PN}-init"
FILES_${PN} += " ${sysconfdir}/bluetooth/main.conf*" FILES_${PN} += " ${sysconfdir}/bluetooth/main.conf*"
FILES_${PN}-init = " ${sysconfdir}/bluetooth-init* \
${sysconfdir}/init.d/bluetooth-init \
${systemd_unitdir}/system/bluetooth-init.service \
"
INITSCRIPT_PACKAGES += "${PN}-init"
INITSCRIPT_NAME_${PN}-init = "bluetooth-init"
INITSCRIPT_PARAMS_${PN}-init = "start 19 2 3 4 5 . stop 21 0 1 6 ."
SYSTEMD_SERVICE_${PN}-init = "bluetooth-init.service"
PACKAGE_ARCH = "${MACHINE_ARCH}" PACKAGE_ARCH = "${MACHINE_ARCH}"

View File

@ -1,10 +1,8 @@
# Copyright (C) 2015-2021 Digi International. # Copyright (C) 2015-2022 Digi International.
FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:${THISDIR}/${BP}:" FILESEXTRAPATHS_prepend := "${THISDIR}/${BPN}:${THISDIR}/${BP}:"
SRC_URI += " \ SRC_URI += " \
file://bluetooth-init \
file://bluetooth-init.service \
file://bluetooth.service-add-customizations.patch \ file://bluetooth.service-add-customizations.patch \
file://main.conf \ file://main.conf \
file://0001-hcitool-do-not-show-unsupported-refresh-option.patch \ file://0001-hcitool-do-not-show-unsupported-refresh-option.patch \
@ -25,18 +23,10 @@ SRC_URI_append_ccimx8x = " ${QCA65XX_COMMON_PATCHES}"
SRC_URI_append_ccimx8m = " ${QCA65XX_COMMON_PATCHES}" SRC_URI_append_ccimx8m = " ${QCA65XX_COMMON_PATCHES}"
SRC_URI_append_ccimx6sbc = " \ SRC_URI_append_ccimx6sbc = " \
file://bluetooth-init_atheros \
file://main.conf_atheros \ file://main.conf_atheros \
" "
inherit update-rc.d
do_install_append() { do_install_append() {
install -d ${D}${sysconfdir}/init.d/
install -m 0755 ${WORKDIR}/bluetooth-init ${D}${sysconfdir}/bluetooth-init
ln -sf /etc/bluetooth-init ${D}${sysconfdir}/init.d/bluetooth-init
install -d ${D}${systemd_unitdir}/system/
install -m 0644 ${WORKDIR}/bluetooth-init.service ${D}${systemd_unitdir}/system/bluetooth-init.service
install -m 0644 ${WORKDIR}/main.conf ${D}${sysconfdir}/bluetooth/ install -m 0644 ${WORKDIR}/main.conf ${D}${sysconfdir}/bluetooth/
sed -i -e "s,##BT_DEVICE_NAME##,${BT_DEVICE_NAME},g" \ sed -i -e "s,##BT_DEVICE_NAME##,${BT_DEVICE_NAME},g" \
${D}${sysconfdir}/bluetooth/main.conf ${D}${sysconfdir}/bluetooth/main.conf
@ -53,7 +43,6 @@ do_install_append() {
} }
do_install_append_ccimx6sbc() { do_install_append_ccimx6sbc() {
install -m 0755 ${WORKDIR}/bluetooth-init_atheros ${D}${sysconfdir}/bluetooth-init_atheros
install -m 0644 ${WORKDIR}/main.conf_atheros ${D}${sysconfdir}/bluetooth/ install -m 0644 ${WORKDIR}/main.conf_atheros ${D}${sysconfdir}/bluetooth/
sed -i -e "s,##BT_DEVICE_NAME##,${BT_DEVICE_NAME},g" \ sed -i -e "s,##BT_DEVICE_NAME##,${BT_DEVICE_NAME},g" \
${D}${sysconfdir}/bluetooth/main.conf_atheros ${D}${sysconfdir}/bluetooth/main.conf_atheros
@ -64,11 +53,9 @@ pkg_postinst_ontarget_${PN}_ccimx6sbc() {
if [ -e "/proc/device-tree/bluetooth/mac-address" ]; then if [ -e "/proc/device-tree/bluetooth/mac-address" ]; then
for id in $(find /sys/devices -name modalias -print0 | xargs -0 sort -u -z | grep sdio); do for id in $(find /sys/devices -name modalias -print0 | xargs -0 sort -u -z | grep sdio); do
if [[ "$id" == "sdio:c00v0271d0301" ]] ; then if [[ "$id" == "sdio:c00v0271d0301" ]] ; then
mv /etc/bluetooth-init_atheros /etc/bluetooth-init
mv /etc/bluetooth/main.conf_atheros /etc/bluetooth/main.conf mv /etc/bluetooth/main.conf_atheros /etc/bluetooth/main.conf
break break
elif [[ "$id" == "sdio:c00v0271d050A" ]] ; then elif [[ "$id" == "sdio:c00v0271d050A" ]] ; then
rm /etc/bluetooth-init_atheros
rm /etc/bluetooth/main.conf_atheros rm /etc/bluetooth/main.conf_atheros
break break
fi fi
@ -76,22 +63,11 @@ pkg_postinst_ontarget_${PN}_ccimx6sbc() {
fi fi
} }
PACKAGES =+ "${PN}-init"
PACKAGECONFIG_append = " health-profiles \ PACKAGECONFIG_append = " health-profiles \
mesh \ mesh \
btpclient \ btpclient \
" "
FILES_${PN} += " ${sysconfdir}/bluetooth/main.conf*" FILES_${PN} += " ${sysconfdir}/bluetooth/main.conf*"
FILES_${PN}-init = " ${sysconfdir}/bluetooth-init* \
${sysconfdir}/init.d/bluetooth-init \
${systemd_unitdir}/system/bluetooth-init.service \
"
INITSCRIPT_PACKAGES += "${PN}-init"
INITSCRIPT_NAME_${PN}-init = "bluetooth-init"
INITSCRIPT_PARAMS_${PN}-init = "start 19 2 3 4 5 . stop 21 0 1 6 ."
SYSTEMD_SERVICE_${PN}-init = "bluetooth-init.service"
PACKAGE_ARCH = "${MACHINE_ARCH}" PACKAGE_ARCH = "${MACHINE_ARCH}"