summaryrefslogtreecommitdiffstats
path: root/meta-agl-profile-core/recipes-devtools/run-agl-postinsts
diff options
context:
space:
mode:
Diffstat (limited to 'meta-agl-profile-core/recipes-devtools/run-agl-postinsts')
-rwxr-xr-xmeta-agl-profile-core/recipes-devtools/run-agl-postinsts/run-agl-postinsts/run-agl-postinsts48
-rw-r--r--meta-agl-profile-core/recipes-devtools/run-agl-postinsts/run-agl-postinsts/run-agl-postinsts.service17
-rw-r--r--meta-agl-profile-core/recipes-devtools/run-agl-postinsts/run-agl-postinsts_1.0.bb46
3 files changed, 111 insertions, 0 deletions
diff --git a/meta-agl-profile-core/recipes-devtools/run-agl-postinsts/run-agl-postinsts/run-agl-postinsts b/meta-agl-profile-core/recipes-devtools/run-agl-postinsts/run-agl-postinsts/run-agl-postinsts
new file mode 100755
index 000000000..1d1a5a059
--- /dev/null
+++ b/meta-agl-profile-core/recipes-devtools/run-agl-postinsts/run-agl-postinsts/run-agl-postinsts
@@ -0,0 +1,48 @@
+#!/bin/sh
+#
+# Copyright 2017 IoT.bzh.
+
+# Author: Ronan Le Martret <ronan.lemartret@iot.bzh>
+#
+
+# The following script will run all the scriptlets found in #SYSCONFDIR#/agl-postinsts.
+
+agl_pi_dir="#SYSCONFDIR#/agl-postinsts"
+
+POSTINST_LOGGING=1
+LOGFILE=/var/log/agl-postinstall.log
+
+[ -e $LOGFILE ] && mv ${LOGFILE} ${LOGFILE}.old.$(date +%F--%H%M.%S)
+
+append_log=">>$LOGFILE 2>&1"
+
+exec_postinst_scriptlets() {
+ for i in `ls $agl_pi_dir`; do
+ i=$agl_pi_dir/$i
+ echo "Running postinst $i..."
+ [ "$POSTINST_LOGGING" = "1" ] && eval echo "Running postinst $i..." $append_log
+ if [ -x $i ]; then
+ eval sh -c $i $append_log
+ if [ $? -eq 0 ]; then
+ rm $i
+ else
+ echo "ERROR: postinst $i failed."
+ [ "$POSTINST_LOGGING" = "1" ] && eval echo "ERROR: postinst $i failed." $append_log
+ remove_agl_pi_dir=0
+ fi
+ else
+ echo "ERROR: postinst $i do not exists or do not have execute permission."
+ [ "$POSTINST_LOGGING" = "1" ] && eval echo "ERROR: postinst $i do not exists or do not have execute permission." $append_log
+ remove_agl_pi_dir=0
+ fi
+ done
+}
+
+remove_agl_pi_dir=1
+exec_postinst_scriptlets
+systemctl daemon-reload
+
+# since all postinstalls executed successfully, remove the postinstalls directory
+if [ $remove_agl_pi_dir = 1 ]; then
+ rm -rf $agl_pi_dir
+fi
diff --git a/meta-agl-profile-core/recipes-devtools/run-agl-postinsts/run-agl-postinsts/run-agl-postinsts.service b/meta-agl-profile-core/recipes-devtools/run-agl-postinsts/run-agl-postinsts/run-agl-postinsts.service
new file mode 100644
index 000000000..8f8667db6
--- /dev/null
+++ b/meta-agl-profile-core/recipes-devtools/run-agl-postinsts/run-agl-postinsts/run-agl-postinsts.service
@@ -0,0 +1,17 @@
+[Unit]
+Description=Run pending agl postinsts
+DefaultDependencies=no
+After=#SYSTEMD_SERVICE_AFTER#
+Before=#SYSTEMD_SERVICE_BEFORE#
+ConditionPathExists=#SYSCONFDIR#/agl-postinsts
+
+[Service]
+Type=oneshot
+StandardOutput=journal+console
+ExecStart=#SBINDIR#/run-agl-postinsts
+ExecStartPost=#BASE_BINDIR#/systemctl disable run-agl-postinsts.service
+RemainAfterExit=No
+TimeoutSec=0
+
+[Install]
+WantedBy=multi-user.target
diff --git a/meta-agl-profile-core/recipes-devtools/run-agl-postinsts/run-agl-postinsts_1.0.bb b/meta-agl-profile-core/recipes-devtools/run-agl-postinsts/run-agl-postinsts_1.0.bb
new file mode 100644
index 000000000..b1ecccf85
--- /dev/null
+++ b/meta-agl-profile-core/recipes-devtools/run-agl-postinsts/run-agl-postinsts_1.0.bb
@@ -0,0 +1,46 @@
+SUMMARY = "Runs AGL postinstall scripts on first boot of the target device"
+SECTION = "devel"
+
+LICENSE = "MIT"
+LIC_FILES_CHKSUM = "file://${COMMON_LICENSE_DIR}/MIT;md5=0835ade698e0bcf8506ecda2f7b4f302"
+
+SRC_URI = "file://run-agl-postinsts \
+ file://run-agl-postinsts.service"
+
+S = "${WORKDIR}"
+
+inherit allarch systemd
+
+SYSTEMD_SERVICE_${PN} = "run-agl-postinsts.service"
+
+SYSTEMD_SERVICE_AFTER ?= "dbus.service cynara.service"
+
+SYSTEMD_SERVICE_BEFORE ?= "systemd-user-sessions.service"
+
+do_configure() {
+ :
+}
+
+do_compile () {
+ :
+}
+
+do_install() {
+ install -d ${D}${sbindir}
+ install -m 0755 ${WORKDIR}/run-agl-postinsts ${D}${sbindir}/
+
+ install -d ${D}${systemd_unitdir}/system/
+ install -m 0644 ${WORKDIR}/run-agl-postinsts.service ${D}${systemd_unitdir}/system/
+
+ sed -i -e 's:#SYSCONFDIR#:${sysconfdir}:g' \
+ -e 's:#SBINDIR#:${sbindir}:g' \
+ -e 's:#BASE_BINDIR#:${base_bindir}:g' \
+ -e 's:#LOCALSTATEDIR#:${localstatedir}:g' \
+ ${D}${sbindir}/run-agl-postinsts \
+ ${D}${systemd_unitdir}/system/run-agl-postinsts.service
+
+ sed -i -e 's:#SYSTEMD_SERVICE_AFTER#:${SYSTEMD_SERVICE_AFTER}:g' \
+ -e 's:#SYSTEMD_SERVICE_BEFORE#:${SYSTEMD_SERVICE_BEFORE}:g' \
+ ${D}${systemd_unitdir}/system/run-agl-postinsts.service
+}
+