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 $*