diff --git a/layers/meta-belden-coreos-demo/recipes-core/images/coreos-image-demo.bb b/layers/meta-belden-coreos-demo/recipes-core/images/coreos-image-demo.bb index c832c05..ea6321b 100644 --- a/layers/meta-belden-coreos-demo/recipes-core/images/coreos-image-demo.bb +++ b/layers/meta-belden-coreos-demo/recipes-core/images/coreos-image-demo.bb @@ -1,4 +1,7 @@ DESCRIPTION = "An image that come with most of the feature available in CoreOS" inherit coreos-image -require coreos-image-all-features +require recipes-core/images/coreos-image-all-features.bb + +# demos +IMAGE_INSTALL:append = " systemd-services-demo" diff --git a/layers/meta-belden-coreos-demo/recipes-demo/systemd-services-demo/files/demo_service_1.sh b/layers/meta-belden-coreos-demo/recipes-demo/systemd-services-demo/files/demo_service_1.sh new file mode 100644 index 0000000..d5caa38 --- /dev/null +++ b/layers/meta-belden-coreos-demo/recipes-demo/systemd-services-demo/files/demo_service_1.sh @@ -0,0 +1,15 @@ +#!/bin/sh + +# This is a simple example for systemd start +PIPE="/tmp/bar" +if [ ! -p "$PIPE" ]; then + mkfifo $PIPE +fi + +COUNTER=0 + +while : ; do + COUNTER=$((COUNTER + 1)) + echo "Hello Service 1: ${COUNTER}" > /tmp/bar + sleep 10 +done \ No newline at end of file diff --git a/layers/meta-belden-coreos-demo/recipes-demo/systemd-services-demo/files/demo_service_2.sh b/layers/meta-belden-coreos-demo/recipes-demo/systemd-services-demo/files/demo_service_2.sh new file mode 100644 index 0000000..1e80453 --- /dev/null +++ b/layers/meta-belden-coreos-demo/recipes-demo/systemd-services-demo/files/demo_service_2.sh @@ -0,0 +1,18 @@ +#!/bin/sh + +# This is a simple example for systemd start + +PIPE="/tmp/baz" +if [ ! -p "$PIPE" ]; then + mkfifo $PIPE +fi + +COUNTER=0 + +while : ; do + COUNTER=$((COUNTER + 1)) + echo "Hello Service 2: ${COUNTER}" > /tmp/baz + sleep 10 +done + + diff --git a/layers/meta-belden-coreos-demo/recipes-demo/systemd-services-demo/files/demo_service_3.sh b/layers/meta-belden-coreos-demo/recipes-demo/systemd-services-demo/files/demo_service_3.sh new file mode 100644 index 0000000..2dca666 --- /dev/null +++ b/layers/meta-belden-coreos-demo/recipes-demo/systemd-services-demo/files/demo_service_3.sh @@ -0,0 +1,28 @@ +#!/bin/sh + +# This is an example for systemd-notify +# You can see the status with systemctl status demoservice3.service + + +PIPE="/tmp/foo" +if [ ! -p "$PIPE" ]; then + mkfifo -m 666 $PIPE +fi + +sleep 10 # Assume we are doing some time consuming initialization + +# Notify systemd that we are ready +systemd-notify --ready --status="Waiting for data ..." + +while : ; do + read a < /tmp/foo + # Tell systemd your current status + systemd-notify --status="Processing $a" + + # Do something with $a … + sleep 10 + + systemd-notify --status="Waiting for data ..." +done + + diff --git a/layers/meta-belden-coreos-demo/recipes-demo/systemd-services-demo/files/demoservice1.service b/layers/meta-belden-coreos-demo/recipes-demo/systemd-services-demo/files/demoservice1.service new file mode 100644 index 0000000..56e781f --- /dev/null +++ b/layers/meta-belden-coreos-demo/recipes-demo/systemd-services-demo/files/demoservice1.service @@ -0,0 +1,10 @@ +[Unit] +Description=systemd demo +After=demoservice3.service +Wants=demoservice3.service + +[Service] +ExecStart=/usr/bin/demo_service_1.sh + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/layers/meta-belden-coreos-demo/recipes-demo/systemd-services-demo/files/demoservice2.service b/layers/meta-belden-coreos-demo/recipes-demo/systemd-services-demo/files/demoservice2.service new file mode 100644 index 0000000..7ca58a1 --- /dev/null +++ b/layers/meta-belden-coreos-demo/recipes-demo/systemd-services-demo/files/demoservice2.service @@ -0,0 +1,10 @@ +[Unit] +Description=systemd demo for showing dependencies +After=demoservice3.service +Requires=demoservice3.service + +[Service] +ExecStart=/usr/bin/demo_service_2.sh + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/layers/meta-belden-coreos-demo/recipes-demo/systemd-services-demo/files/demoservice3.service b/layers/meta-belden-coreos-demo/recipes-demo/systemd-services-demo/files/demoservice3.service new file mode 100644 index 0000000..ec6e86d --- /dev/null +++ b/layers/meta-belden-coreos-demo/recipes-demo/systemd-services-demo/files/demoservice3.service @@ -0,0 +1,9 @@ +[Unit] +Description=systemd demo for showing notifications + +[Service] +Type=notify +ExecStart=/usr/bin/demo_service_3.sh + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/layers/meta-belden-coreos-demo/recipes-demo/systemd-services-demo/systemd-services-demo.bb b/layers/meta-belden-coreos-demo/recipes-demo/systemd-services-demo/systemd-services-demo.bb new file mode 100644 index 0000000..a5fd70c --- /dev/null +++ b/layers/meta-belden-coreos-demo/recipes-demo/systemd-services-demo/systemd-services-demo.bb @@ -0,0 +1,34 @@ +DESCRIPTION = "Example that shows how services can be started by using systemd unit files" +SECTION = "examples" +DEPENDS = "" +LICENSE = "CLOSED" + +FILESEXTRAPATHS:prepend := "${THISDIR}/files:" + +SRC_URI = " file://demo_service_1.sh \ + file://demoservice1.service \ + file://demo_service_2.sh \ + file://demoservice2.service \ + file://demo_service_3.sh \ + file://demoservice3.service \ +" + +inherit systemd + +SYSTEMD_SERVICE:${PN} += "demoservice1.service" +SYSTEMD_SERVICE:${PN} += "demoservice2.service" +SYSTEMD_SERVICE:${PN} += "demoservice3.service" +SYSTEMD_AUTO_ENABLE = "enable" + +do_install(){ + install -d ${D}${bindir} + install -m 0777 ${WORKDIR}/demo_service_1.sh ${D}${bindir} + install -m 0777 ${WORKDIR}/demo_service_2.sh ${D}${bindir} + install -m 0777 ${WORKDIR}/demo_service_3.sh ${D}${bindir} + install -d ${D}${systemd_unitdir}/system + install -m 0644 ${WORKDIR}/demoservice1.service ${D}${systemd_unitdir}/system + install -m 0644 ${WORKDIR}/demoservice2.service ${D}${systemd_unitdir}/system + install -m 0644 ${WORKDIR}/demoservice3.service ${D}${systemd_unitdir}/system +} + +FILES:${PN} += " ${systemd_unitdir}/system/demoservice*.service ${bindir}/demo_service_*.sh" diff --git a/layers/meta-belden-coreos/recipes-core/images/coreos-image-all-features.bb b/layers/meta-belden-coreos/recipes-core/images/coreos-image-all-features.bb index 7340498..d87c99f 100644 --- a/layers/meta-belden-coreos/recipes-core/images/coreos-image-all-features.bb +++ b/layers/meta-belden-coreos/recipes-core/images/coreos-image-all-features.bb @@ -7,3 +7,6 @@ IMAGE_FEATURES += "${@bb.utils.contains("MACHINE_FEATURES", "efi", "swupdate", " IMAGE_INSTALL:append = " packagegroup-core-full-cmdline" IMAGE_INSTALL:append = "${@bb.utils.contains("IMAGE_FEATURES", "swupdate", " swupdate-www", "", d)}" + +# development tools +IMAGE_INSTALL:append = " systemd-analyze" \ No newline at end of file