git: b1a8f824cc1c - main - sysutils/swtpm: Add rc script
- Go to: [ bottom of page ] [ top of archives ] [ this month ]
Date: Wed, 15 Nov 2023 11:54:26 UTC
The branch main has been updated by bofh:
URL: https://cgit.FreeBSD.org/ports/commit/?id=b1a8f824cc1c3a7e3ce0870509ef38d715f53c52
commit b1a8f824cc1c3a7e3ce0870509ef38d715f53c52
Author: Goran Mekić <meka@tilda.center>
AuthorDate: 2023-11-15 11:52:26 +0000
Commit: Muhammad Moinur Rahman <bofh@FreeBSD.org>
CommitDate: 2023-11-15 11:54:07 +0000
sysutils/swtpm: Add rc script
- Pet portclippy while I am here
PR: 274786
Approved by: submitter is maintainer
---
sysutils/swtpm/Makefile | 16 +++---
sysutils/swtpm/files/swtpm.in | 120 ++++++++++++++++++++++++++++++++++++++++++
2 files changed, 130 insertions(+), 6 deletions(-)
diff --git a/sysutils/swtpm/Makefile b/sysutils/swtpm/Makefile
index f5081098617d..d0bb04eaeafd 100644
--- a/sysutils/swtpm/Makefile
+++ b/sysutils/swtpm/Makefile
@@ -1,6 +1,7 @@
PORTNAME= swtpm
DISTVERSIONPREFIX= v
DISTVERSION= 0.8.1
+PORTREVISION= 1
CATEGORIES= sysutils
MAINTAINER= meka@tilda.center
@@ -10,23 +11,26 @@ WWW= https://github.com/stefanberger/swtpm
LICENSE= BSD3CLAUSE
LICENSE_FILE= ${WRKSRC}/LICENSE
-LIB_DEPENDS= libfuse.so:sysutils/fusefs-libs \
- libgnutls.so:security/gnutls \
- libjson-glib-1.0.so:devel/json-glib \
- libtasn1.so:security/libtasn1 \
- libtpms.so:sysutils/libtpms
BUILD_DEPENDS= base64>=0:converters/base64 \
bash>=0:shells/bash \
expect>=0:lang/expect \
gawk>=0:lang/gawk \
socat>=0:net/socat
+LIB_DEPENDS= libfuse.so:sysutils/fusefs-libs \
+ libgnutls.so:security/gnutls \
+ libjson-glib-1.0.so:devel/json-glib \
+ libtasn1.so:security/libtasn1 \
+ libtpms.so:sysutils/libtpms
USES= autoreconf gettext-runtime gmake gnome libtool pathfix \
pkgconfig ssl
-USE_GNOME+= glib20
USE_GITHUB= yes
GH_ACCOUNT= stefanberger
+USE_GNOME+= glib20
+USE_RC_SUBR= swtpm
+
GNU_CONFIGURE= yes
+
INSTALL_TARGET= install-strip
.include <bsd.port.mk>
diff --git a/sysutils/swtpm/files/swtpm.in b/sysutils/swtpm/files/swtpm.in
new file mode 100644
index 000000000000..83ab0eec2a37
--- /dev/null
+++ b/sysutils/swtpm/files/swtpm.in
@@ -0,0 +1,120 @@
+#!/bin/sh
+
+# PROVIDE: swtpm
+# KEYWORD: shutdown
+
+#
+# Add the following lines to /etc/rc.conf.local, /etc/rc.conf or
+# /etc/rc.conf.d/swtpm to enable this service:
+#
+# swtpm_enable (bool): Set to NO by default.
+# Set it to "YES" to enable swtpm.
+# swtpm_configs (string): List of configurations to use
+# Default is "tpm"
+# swtpm_tpm (string): Arguments passed to swtpm config named tpm
+
+. /etc/rc.subr
+
+name=swtpm
+desc="Software TPM manager"
+rcvar=${name}_enable
+start_precmd="${name}_precmd"
+start_cmd="${name}_start"
+stop_cmd="${name}_stop"
+status_cmd="${name}_status"
+
+command="%%PREFIX%%/bin/swtpm"
+command_args="socket"
+pidpath="/var/run/${name}"
+
+# required_modules="cuse"
+swtpm_default_args="\
+ --daemon \
+ --tpmstate dir=${pidpath} \
+ --tpm2 \
+ --log level=20"
+configs=
+
+load_rc_config $name
+
+: ${swtpm_enable:="NO"}
+: ${swtpm_configs:="tpm"}
+: ${swtpm_tpm:="$swtpm_default_args"}
+
+swtpm_pids()
+{
+ pids=$(pgrep -d ' ' $name)
+ pids=${pids% }
+ printf "${pids}"
+}
+
+swtpm_precmd()
+{
+ /usr/bin/install -d -m 0755 -o root ${pidpath}
+}
+
+start_instance()
+{
+ config=$*
+ instance_args=$(eval "echo \$swtpm_${config}")
+ if [ -z "${instance_args}" ]; then
+ echo "No such config ${config}"
+ else
+ echo -n "Starting SWTPM config ${config} ..."
+ ${command} \
+ ${command_args} \
+ --pid file=${pidpath}/${config}.pid \
+ --ctrl type=unixio,path=${pidpath}/${config} \
+ ${instance_args}
+ echo " done"
+ fi
+}
+
+stop_instance()
+{
+ config=$*
+ instance_args=`eval "echo \$swtpm_${config}"`
+ if [ -z "${instance_args}" ]; then
+ echo "No such config ${config}"
+ elif [ -e "${pidpath}/${config}.pid" ]; then
+ pid=$(check_pidfile ${pidpath}/${config}.pid %%PREFIX%%/bin/swtpm)
+ if [ ! -z "${pid}" ]; then
+ echo -n "Stopping SWTPM config ${config} ... "
+ kill $pid
+ rm -f ${pidpath}/${config}.pid
+ echo "done"
+ fi
+ fi
+}
+
+swtpm_start()
+{
+ configs=$*
+ [ -z "${configs}" ] && configs="${swtpm_configs}"
+ for config in ${configs}; do
+ start_instance $config
+ done
+}
+
+swtpm_stop()
+{
+ configs=$*
+ [ -z "${configs}" ] && configs="${swtpm_configs}"
+ for config in ${configs}; do
+ stop_instance ${config}
+ done
+}
+
+swtpm_status()
+{
+ pids=$(swtpm_pids)
+
+ if [ "${pids}" ]; then
+ echo "${name} is running as pid ${pids}."
+ else
+ echo "${name} is not running."
+ return 1
+ fi
+}
+
+run_rc_command $*