AWS Greengrass: update to version 1.0.0

Signed-off-by: Javier Viguera <javier.viguera@digi.com>
This commit is contained in:
Javier Viguera 2017-06-07 20:49:58 +02:00
parent 8e8e7f8982
commit a8f0024403
4 changed files with 226 additions and 216 deletions

View File

@ -1,16 +1,16 @@
From: Javier Viguera <javier.viguera@digi.com> From: Javier Viguera <javier.viguera@digi.com>
Date: Wed, 31 May 2017 13:52:30 +0200 Date: Wed, 7 Jun 2017 20:44:56 +0200
Subject: [PATCH] greengrassd: remove bashisms in launcher shell script Subject: [PATCH] greengrassd: remove bashisms in launcher shell script
So it runs properly in other Posix shells (like the one in Busybox) So it runs properly in other Posix shells (like the one in Busybox)
Signed-off-by: Javier Viguera <javier.viguera@digi.com> Signed-off-by: Javier Viguera <javier.viguera@digi.com>
--- ---
greengrassd | 20 ++++++++++---------- greengrassd | 28 ++++++++++++++--------------
1 file changed, 10 insertions(+), 10 deletions(-) 1 file changed, 14 insertions(+), 14 deletions(-)
diff --git a/greengrassd b/greengrassd diff --git a/greengrassd b/greengrassd
index c312d23dda3c..1d4b3ad6dd22 100755 index cadaa6b0101e..e24422af2f3d 100755
--- a/greengrassd --- a/greengrassd
+++ b/greengrassd +++ b/greengrassd
@@ -1,4 +1,4 @@ @@ -1,4 +1,4 @@
@ -19,7 +19,7 @@ index c312d23dda3c..1d4b3ad6dd22 100755
##########Environment Requirement for Greengrass Daemon########## ##########Environment Requirement for Greengrass Daemon##########
# by default, the daemon assumes it's going to be launched from a directory # by default, the daemon assumes it's going to be launched from a directory
@@ -35,19 +35,19 @@ setup() { @@ -38,19 +38,19 @@ setup() {
mkdir -p $GGC_ROOT_FS mkdir -p $GGC_ROOT_FS
# Mask greengrass directory for containers # Mask greengrass directory for containers
@ -40,10 +40,10 @@ index c312d23dda3c..1d4b3ad6dd22 100755
- if [[ "$PROT_HARDLINK_VAL" -ne 1 || "$PROT_SOFTLINK_VAL" -ne 1 ]]; then - if [[ "$PROT_HARDLINK_VAL" -ne 1 || "$PROT_SOFTLINK_VAL" -ne 1 ]]; then
+ if [ "$PROT_HARDLINK_VAL" -ne 1 ] || [ "$PROT_SOFTLINK_VAL" -ne 1 ]; then + if [ "$PROT_HARDLINK_VAL" -ne 1 ] || [ "$PROT_SOFTLINK_VAL" -ne 1 ]; then
echo "Insecure configuration detected: No hardlink/softlink protection" | tee -a $CRASH_LOG echo "AWS Greengrass detected insecure OS configuration: No hardlink/softlink protection enabled." | tee -a $CRASH_LOG
exit 1 exit 1
fi fi
@@ -124,7 +124,7 @@ validateEnvironment() { @@ -127,7 +127,7 @@ validateEnvironment() {
start() { start() {
setup setup
@ -52,21 +52,52 @@ index c312d23dda3c..1d4b3ad6dd22 100755
validatePlatformSecurity validatePlatformSecurity
fi fi
@@ -169,7 +169,7 @@ stop() { @@ -139,7 +139,7 @@ start() {
break then
fi pid=$!
done; # sleep 5 seconds to wait for daemon to start or exit
- echo -e "\nStopped greengrass daemon" - for i in {1..5}; do
+ printf "\nStopped greengrass daemon\n" + for i in $(seq 1 5); do
rm $PID_FILE echo -n "."
else sleep 1
echo "Unable to kill the process with pid: $PID" done
@@ -186,16 +186,16 @@ usage() { @@ -147,10 +147,10 @@ start() {
if [ -e "/proc/$pid" ]
then
echo "$pid" > $PID_FILE
- echo -e "\e[0;32mGreengrass daemon started with PID: $pid\e[0m"
+ printf "\e[0;32mGreengrass daemon started with PID: $pid\e[0m\n"
else
echo "Greengrass daemon $pid failed to start"
- echo -e "\e[0;31m$(cat $CRASH_LOG)\e[0m"
+ printf "\e[0;31m$(cat $CRASH_LOG)\e[0m\n"
exit 1
fi
else
@@ -179,7 +179,7 @@ stop() {
# If the pid no longer exists, we're done, remove the pid file and exit. Otherwise, just increment the loop counter
if [ ! -e "/proc/$PID" ]; then
rm $PID_FILE
- echo -e "\nStopped greengrass daemon, exiting with success"
+ printf "\nStopped greengrass daemon, exiting with success\n"
break
else
total_sleep_seconds=$(($total_sleep_seconds+1))
@@ -194,7 +194,7 @@ stop() {
if [ $total_sleep_seconds -ge $MAX_DAEMON_KILL_WAIT_SECONDS ]; then
# If we are here, we never exited in the previous loop and the pid still exists. Exit with failure.
- echo -e "\nProcess with pid $PID still alive after timeout of $MAX_DAEMON_KILL_WAIT_SECONDS seconds. Unable to kill process, exiting with failure."
+ printf "\nProcess with pid $PID still alive after timeout of $MAX_DAEMON_KILL_WAIT_SECONDS seconds. Unable to kill process, exiting with failure.\n"
exit 1
fi
fi
@@ -204,16 +204,16 @@ usage() {
echo "" echo ""
echo "Usage: $0 [FLAGS] {start|stop|restart}" echo "Usage: $0 [FLAGS] {start|stop|restart}"
echo "" echo ""
- echo -e "[FLAGS]: -i, --insecure \t Run GGC in insecure mode, (highly discouraged!)" - echo -e "[FLAGS]: -i, --insecure \t Run GGC in insecure mode without hardlink/softlink protection, (highly discouraged for production use)"
+ printf "[FLAGS]: -i, --insecure \t Run GGC in insecure mode, (highly discouraged!)\n" + printf "[FLAGS]: -i, --insecure \t Run GGC in insecure mode without hardlink/softlink protection, (highly discouraged for production use)\n"
echo "" echo ""
exit 1 exit 1
} }

View File

@ -1,35 +0,0 @@
From: Javier Viguera <javier.viguera@digi.com>
Date: Tue, 6 Jun 2017 18:34:10 +0200
Subject: [PATCH] greengrassd: wait some time to check GG daemon status after
launch
GG daemon may die due to misconfigurations, but this takes a bit of
time, so wait a bit to check whether the daemon is still alive.
Signed-off-by: Javier Viguera <javier.viguera@digi.com>
---
greengrassd | 5 ++++-
1 file changed, 4 insertions(+), 1 deletion(-)
diff --git a/greengrassd b/greengrassd
index 1d4b3ad6dd22..50c922bca3ae 100755
--- a/greengrassd
+++ b/greengrassd
@@ -134,13 +134,16 @@ start() {
if nohup $COMMAND >/dev/null 2>$CRASH_LOG < /dev/null &
then
pid=$!
+ # Give GG daemon some time to initialize before checking
+ # whether it's still alive.
+ sleep .5
if [ -e "/proc/$pid" ]
then
echo "PID: $pid"
echo "$pid" > $PID_FILE
echo "Greengrass daemon started"
else
- echo "Greengrass daemon $pid crashed after start"
+ echo "Greengrass daemon $pid crashed after start: check ${CRASH_LOG}"
exit 1
fi
else

View File

@ -1,162 +0,0 @@
# Copyright (C) 2017, Digi International Inc.
SUMMARY = "AWS IoT Greengrass core"
HOMEPAGE = "https://aws.amazon.com/greengrass/"
#
# The package includes different licenses:
#
# [Apache-2.0]
# LICENSE/github_aws_aws_sdk_go_License.txt
# LICENSE/github_coreos_go_systemd_License.txt
# LICENSE/github_docker_docker_License.txt
# LICENSE/github_docker_go_units_License.txt
# LICENSE/github_go_ini_ini_License.txt
# LICENSE/github_jmespath_go_jmespath_License.txt
# LICENSE/github_opencontainers_runc_License.txt
# LICENSE/github_opencontainers_runtime_spec_License.txt
# LICENSE/github_pquerna_ffjson_License.txt
# LICENSE/github_vishvananda_netlink_License.txt
# [BSD-2-Clause]
# LICENSE/github_godbus_dbus_License.txt
# LICENSE/github_huin_gobinarytest_License.txt
# LICENSE/github_seccomp_libseccomp_golang_License.txt
# LICENSE/github_syndtr_gocapability_License.txt
# [BSD-3-Clause]
# LICENSE/github_golang_protobuf_License.txt
# LICENSE/github_jeffallen_mqtt_License.txt
# LICENSE/Golang_License.txt
# [MIT]
# LICENSE/github_huin_mqtt_License.txt
# LICENSE/github_mattn_go_sqlite3_License.txt
# LICENSE/github_nu7hatch_gouuid_License.txt
# LICENSE/github_Sirupsen_logrus_License.txt
# LICENSE/github_urfave_cli_License.txt
# LICENSE/github_yosssi_gmq_License.txt
# [Proprietary]
# LICENSE/GG-BetaMaterials-License.txt
#
LICENSE = "Apache-2.0 | BSD-2-Clause | BSD-3-Clause | MIT | Proprietary"
LIC_FILES_CHKSUM = " \
file://LICENSE/GG-BetaMaterials-License.txt;md5=a33101714f905fe97db6fe085c1271ef \
file://LICENSE/github_aws_aws_sdk_go_License.txt;md5=d273d63619c9aeaf15cdaf76422c4f87 \
file://LICENSE/github_coreos_go_systemd_License.txt;md5=715f3348ed8b9bf4fac3b08133384a4d \
file://LICENSE/github_docker_docker_License.txt;md5=bba4ee48af378e39b452d742d29c710b \
file://LICENSE/github_docker_go_units_License.txt;md5=bb99db20f1c48c2c4952c27c72855e36 \
file://LICENSE/github_godbus_dbus_License.txt;md5=b03a62440372a9acf9692ad365932c87 \
file://LICENSE/github_go_ini_ini_License.txt;md5=715f3348ed8b9bf4fac3b08133384a4d \
file://LICENSE/github_golang_protobuf_License.txt;md5=16fe162f7848190010b6ec7bfaac030a \
file://LICENSE/github_huin_gobinarytest_License.txt;md5=f2b3138d9d314bccf5297dea7e3e6d14 \
file://LICENSE/github_huin_mqtt_License.txt;md5=12fd125064676697934b7d8c09bed0e8 \
file://LICENSE/github_jeffallen_mqtt_License.txt;md5=b7269d52765d477e10f319c19d8a9d33 \
file://LICENSE/github_jmespath_go_jmespath_License.txt;md5=640d33f0070c9dc3a194d2ed7db02974 \
file://LICENSE/github_mattn_go_sqlite3_License.txt;md5=948f36a2300ac729e60416063190f664 \
file://LICENSE/github_nu7hatch_gouuid_License.txt;md5=6b18748dcc29fda05fa5aaef44d517fd \
file://LICENSE/github_opencontainers_runc_License.txt;md5=587c01b2dcc5dc3b4bed51b918c64731 \
file://LICENSE/github_opencontainers_runtime_spec_License.txt;md5=ef95ed297310c3d09ba16c06d5e161a5 \
file://LICENSE/github_pquerna_ffjson_License.txt;md5=d273d63619c9aeaf15cdaf76422c4f87 \
file://LICENSE/github_seccomp_libseccomp_golang_License.txt;md5=9205c4c469bfb9d3a63f346539ee445b \
file://LICENSE/github_Sirupsen_logrus_License.txt;md5=29baae91637760ae68feb57ca93e5a0a \
file://LICENSE/github_syndtr_gocapability_License.txt;md5=321f58fa53a0b1bb9a887f14660d436b \
file://LICENSE/github_urfave_cli_License.txt;md5=f1f14a2449300559aed90bedc36a71ed \
file://LICENSE/github_vishvananda_netlink_License.txt;md5=c95fd0efd62139c155e956a448df8fd6 \
file://LICENSE/github_yosssi_gmq_License.txt;md5=2509f45544da1ecce869ce2de1aa44dd \
file://LICENSE/Golang_License.txt;md5=3d7ed06383c65a3161b36c6a0b0b98f5 \
"
SRC_URI = " \
http:///not/exist/greengrass-linux-armv6l-${PV}-release.tar.gz \
file://greengrass-init \
file://0001-greengrassd-remove-bashisms-in-launcher-shell-script.patch \
file://0002-greengrassd-wait-some-time-to-check-GG-daemon-status.patch \
"
SRC_URI[md5sum] = "eb7e6dbdfe00e51db8b7ffbd2284ae59"
SRC_URI[sha256sum] = "24da4016345eeeb6a86067619d385015139437fbd16dba9a91461758692f933f"
GG_TARBALL_LOCAL_PATH ?= ""
# The tarball is only available for downloading after registration, so provide
# a PREMIRROR to a local directory that can be configured in the project's
# local.conf file using GG_TARBALL_LOCAL_PATH variable.
python() {
gg_tarball_local_path = d.getVar('GG_TARBALL_LOCAL_PATH', True)
if gg_tarball_local_path:
premirrors = d.getVar('PREMIRRORS', True)
d.setVar('PREMIRRORS', "http:///not/exist/greengrass.* file://%s \\n %s" % (gg_tarball_local_path, premirrors))
}
S = "${WORKDIR}/${BPN}"
inherit update-rc.d useradd
GG_USESYSTEMD = "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'yes', 'no', d)}"
# Disable tasks not needed for the binary package
do_configure[noexec] = "1"
do_compile[noexec] = "1"
do_install() {
install -d ${D}/${BPN}
tar --no-same-owner --exclude='./patches' --exclude='./.pc' -cpf - -C ${S} . \
| tar --no-same-owner -xpf - -C ${D}/${BPN}
# Install wrapper bootscript to launch Greengrass core on boot
install -d ${D}${sysconfdir}/init.d
install -m 0755 ${WORKDIR}/greengrass-init ${D}${sysconfdir}/init.d/greengrass
sed -i -e "s,##GG_INSTALL_DIR##,/${BPN},g" ${D}${sysconfdir}/init.d/greengrass
# Configure whether to use systemd or not
sed -i -e "/useSystemd/{s,\[yes|no],${GG_USESYSTEMD},g}" ${D}/${BPN}/configuration/config.json
}
pkg_postinst_${PN}() {
# Enable protection for hardlinks and symlinks
if ! grep -qs 'protected_.*links' $D${sysconfdir}/sysctl.conf; then
cat >> $D${sysconfdir}/sysctl.conf <<-_EOF_
# Greengrass: protect hardlinks/symlinks
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
_EOF_
fi
# Customize '/etc/fstab'
if [ -f "$D${sysconfdir}/fstab" ]; then
# Disable TMPFS /var/volatile
sed -i -e '\#^tmpfs[[:blank:]]\+/var/volatile#s,^,#,g' $D${sysconfdir}/fstab
# Mount a cgroup hierarchy with all available subsystems
if ! grep -qs '^cgroup' $D${sysconfdir}/fstab; then
cat >> $D${sysconfdir}/fstab <<-_EOF_
# Greengrass: mount cgroups
cgroup /sys/fs/cgroup cgroup defaults 0 0
_EOF_
fi
fi
# Disable '/etc/resolv.conf' symlink
if [ -f "$D${sysconfdir}/default/volatiles/00_core" ]; then
sed -i -e '/resolv.conf/d' $D${sysconfdir}/default/volatiles/00_core
cat >> $D${sysconfdir}/default/volatiles/00_core <<-_EOF_
# Greengrass: create a real (no symlink) resolv.conf
f root root 0644 /etc/resolv.conf none
_EOF_
fi
}
FILES_${PN} = "/${BPN} ${sysconfdir}"
INITSCRIPT_NAME = "greengrass"
INITSCRIPT_PARAMS = "defaults 80 20"
USERADD_PACKAGES = "${PN}"
GROUPADD_PARAM_${PN} = "-r ggc_group"
USERADD_PARAM_${PN} = "-r -M -N -g ggc_group -s /bin/false ggc_user"
#
# Disable failing QA checks:
#
# Binary was already stripped
# No GNU_HASH in the elf binary
#
INSANE_SKIP_${PN} += "already-stripped ldflags"
RDEPENDS_${PN} += "ca-certificates python-argparse python-json python-numbers sqlite3"

View File

@ -0,0 +1,176 @@
# Copyright (C) 2017, Digi International Inc.
SUMMARY = "AWS IoT Greengrass core"
HOMEPAGE = "https://aws.amazon.com/greengrass/"
#
# The package includes different licenses:
#
# [Apache-2.0]
# LICENSE/attributions/github_aws_aws_sdk_go_License.txt
# LICENSE/attributions/github_coreos_go_systemd_License.txt
# LICENSE/attributions/github_docker_docker_License.txt
# LICENSE/attributions/github_docker_go_units_License.txt
# LICENSE/attributions/github_go_ini_ini_License.txt
# LICENSE/attributions/github_jmespath_go_jmespath_License.txt
# LICENSE/attributions/github_opencontainers_runc_License.txt
# LICENSE/attributions/github_opencontainers_runtime_spec_License.txt
# LICENSE/attributions/github_pquerna_ffjson_License.txt
# LICENSE/attributions/github_vishvananda_netlink_License.txt
# [BSD-2-Clause]
# LICENSE/attributions/github_godbus_dbus_License.txt
# LICENSE/attributions/github_huin_gobinarytest_License.txt
# LICENSE/attributions/github_seccomp_libseccomp_golang_License.txt
# LICENSE/attributions/github_syndtr_gocapability_License.txt
# [BSD-3-Clause]
# LICENSE/attributions/github_golang_protobuf_License.txt
# LICENSE/attributions/github_jeffallen_mqtt_License.txt
# LICENSE/attributions/Golang_License.txt
# [MIT]
# LICENSE/attributions/github_huin_mqtt_License.txt
# LICENSE/attributions/github_mattn_go_sqlite3_License.txt
# LICENSE/attributions/github_nu7hatch_gouuid_License.txt
# LICENSE/attributions/github_Sirupsen_logrus_License.txt
# LICENSE/attributions/github_urfave_cli_License.txt
# LICENSE/attributions/github_yosssi_gmq_License.txt
# [PD]
# LICENSE/attributions/sqlite_org_License.txt
# [Proprietary]
# LICENSE/Greengrass AWS SW License (IoT additiona) vr6.txt
#
LICENSE = "Apache-2.0 | BSD-2-Clause | BSD-3-Clause | MIT | PD | Proprietary"
LIC_FILES_CHKSUM = " \
file://LICENSE/attributions/github_aws_aws_sdk_go_License.txt;md5=d273d63619c9aeaf15cdaf76422c4f87 \
file://LICENSE/attributions/github_coreos_go_systemd_License.txt;md5=715f3348ed8b9bf4fac3b08133384a4d \
file://LICENSE/attributions/github_docker_docker_License.txt;md5=bba4ee48af378e39b452d742d29c710b \
file://LICENSE/attributions/github_docker_go_units_License.txt;md5=bb99db20f1c48c2c4952c27c72855e36 \
file://LICENSE/attributions/github_godbus_dbus_License.txt;md5=b03a62440372a9acf9692ad365932c87 \
file://LICENSE/attributions/github_go_ini_ini_License.txt;md5=715f3348ed8b9bf4fac3b08133384a4d \
file://LICENSE/attributions/github_golang_protobuf_License.txt;md5=16fe162f7848190010b6ec7bfaac030a \
file://LICENSE/attributions/github_huin_gobinarytest_License.txt;md5=f2b3138d9d314bccf5297dea7e3e6d14 \
file://LICENSE/attributions/github_huin_mqtt_License.txt;md5=12fd125064676697934b7d8c09bed0e8 \
file://LICENSE/attributions/github_jeffallen_mqtt_License.txt;md5=b7269d52765d477e10f319c19d8a9d33 \
file://LICENSE/attributions/github_jmespath_go_jmespath_License.txt;md5=640d33f0070c9dc3a194d2ed7db02974 \
file://LICENSE/attributions/github_mattn_go_sqlite3_License.txt;md5=948f36a2300ac729e60416063190f664 \
file://LICENSE/attributions/github_nu7hatch_gouuid_License.txt;md5=6b18748dcc29fda05fa5aaef44d517fd \
file://LICENSE/attributions/github_opencontainers_runc_License.txt;md5=587c01b2dcc5dc3b4bed51b918c64731 \
file://LICENSE/attributions/github_opencontainers_runtime_spec_License.txt;md5=ef95ed297310c3d09ba16c06d5e161a5 \
file://LICENSE/attributions/github_pquerna_ffjson_License.txt;md5=d273d63619c9aeaf15cdaf76422c4f87 \
file://LICENSE/attributions/github_seccomp_libseccomp_golang_License.txt;md5=9205c4c469bfb9d3a63f346539ee445b \
file://LICENSE/attributions/github_Sirupsen_logrus_License.txt;md5=29baae91637760ae68feb57ca93e5a0a \
file://LICENSE/attributions/github_syndtr_gocapability_License.txt;md5=321f58fa53a0b1bb9a887f14660d436b \
file://LICENSE/attributions/github_urfave_cli_License.txt;md5=f1f14a2449300559aed90bedc36a71ed \
file://LICENSE/attributions/github_vishvananda_netlink_License.txt;md5=c95fd0efd62139c155e956a448df8fd6 \
file://LICENSE/attributions/github_yosssi_gmq_License.txt;md5=2509f45544da1ecce869ce2de1aa44dd \
file://LICENSE/attributions/Golang_License.txt;md5=3d7ed06383c65a3161b36c6a0b0b98f5 \
file://LICENSE/attributions/sqlite_org_License.txt;md5=380e2694a297aa32879ca2ae9c6c029b \
"
# Bitbake does not support spaces in filenames, but GG License does have spaces,
# so workaround the problem by renaming the file before using it.
GG_LIC_FILENAME = "Greengrass AWS SW License (IoT additiona) vr6.txt"
GG_LIC_FILENAME_NOSPACES = "${@d.getVar('GG_LIC_FILENAME', True).replace(' ','_')}"
LIC_FILES_CHKSUM += "file://LICENSE/${GG_LIC_FILENAME_NOSPACES};md5=7df5bf535d02b2f83c260250fe330b6c"
SRC_URI = " \
http:///not/exist/greengrass-linux-armv7l-${PV}.tar.gz \
file://greengrass-init \
file://0001-greengrassd-remove-bashisms-in-launcher-shell-script.patch \
"
SRC_URI[md5sum] = "893cf23f3e645d6cfe6975ea55b8b458"
SRC_URI[sha256sum] = "aa71facd21e515f6e98d4aaec873bb9bf9490552df3466ed57c0aef5cc8bef4a"
GG_TARBALL_LOCAL_PATH ?= ""
# The tarball is only available for downloading after registration, so provide
# a PREMIRROR to a local directory that can be configured in the project's
# local.conf file using GG_TARBALL_LOCAL_PATH variable.
python() {
gg_tarball_local_path = d.getVar('GG_TARBALL_LOCAL_PATH', True)
if gg_tarball_local_path:
premirrors = d.getVar('PREMIRRORS', True)
d.setVar('PREMIRRORS', "http:///not/exist/greengrass.* file://%s \\n %s" % (gg_tarball_local_path, premirrors))
}
S = "${WORKDIR}/${BPN}"
inherit update-rc.d useradd
GG_USESYSTEMD = "${@bb.utils.contains('DISTRO_FEATURES', 'systemd', 'yes', 'no', d)}"
# Rename GG license file
do_unpack[postfuncs] += "rename_license"
rename_license() {
cd ${S}/LICENSE
mv "${GG_LIC_FILENAME}" "${GG_LIC_FILENAME_NOSPACES}"
}
# Disable tasks not needed for the binary package
do_configure[noexec] = "1"
do_compile[noexec] = "1"
do_install() {
install -d ${D}/${BPN}
tar --no-same-owner --exclude='./patches' --exclude='./.pc' -cpf - -C ${S} . \
| tar --no-same-owner -xpf - -C ${D}/${BPN}
# Install wrapper bootscript to launch Greengrass core on boot
install -d ${D}${sysconfdir}/init.d
install -m 0755 ${WORKDIR}/greengrass-init ${D}${sysconfdir}/init.d/greengrass
sed -i -e "s,##GG_INSTALL_DIR##,/${BPN},g" ${D}${sysconfdir}/init.d/greengrass
# Configure whether to use systemd or not
sed -i -e "/useSystemd/{s,\[yes|no],${GG_USESYSTEMD},g}" ${D}/${BPN}/configuration/config.json
}
pkg_postinst_${PN}() {
# Enable protection for hardlinks and symlinks
if ! grep -qs 'protected_.*links' $D${sysconfdir}/sysctl.conf; then
cat >> $D${sysconfdir}/sysctl.conf <<-_EOF_
# Greengrass: protect hardlinks/symlinks
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
_EOF_
fi
# Customize '/etc/fstab'
if [ -f "$D${sysconfdir}/fstab" ]; then
# Disable TMPFS /var/volatile
sed -i -e '\#^tmpfs[[:blank:]]\+/var/volatile#s,^,#,g' $D${sysconfdir}/fstab
# Mount a cgroup hierarchy with all available subsystems
if ! grep -qs '^cgroup' $D${sysconfdir}/fstab; then
cat >> $D${sysconfdir}/fstab <<-_EOF_
# Greengrass: mount cgroups
cgroup /sys/fs/cgroup cgroup defaults 0 0
_EOF_
fi
fi
# Disable '/etc/resolv.conf' symlink
if [ -f "$D${sysconfdir}/default/volatiles/00_core" ]; then
sed -i -e '/resolv.conf/d' $D${sysconfdir}/default/volatiles/00_core
cat >> $D${sysconfdir}/default/volatiles/00_core <<-_EOF_
# Greengrass: create a real (no symlink) resolv.conf
f root root 0644 /etc/resolv.conf none
_EOF_
fi
}
FILES_${PN} = "/${BPN} ${sysconfdir}"
INITSCRIPT_NAME = "greengrass"
INITSCRIPT_PARAMS = "defaults 80 20"
USERADD_PACKAGES = "${PN}"
GROUPADD_PARAM_${PN} = "-r ggc_group"
USERADD_PARAM_${PN} = "-r -M -N -g ggc_group -s /bin/false ggc_user"
#
# Disable failing QA checks:
#
# Binary was already stripped
# No GNU_HASH in the elf binary
#
INSANE_SKIP_${PN} += "already-stripped ldflags"
RDEPENDS_${PN} += "ca-certificates python-argparse python-json python-numbers sqlite3"