diff --git a/sysutils/podman/Makefile b/sysutils/podman/Makefile index de723242ef32..78ae64af1c12 100644 --- a/sysutils/podman/Makefile +++ b/sysutils/podman/Makefile @@ -1,35 +1,36 @@ PORTNAME= podman DISTVERSIONPREFIX= v DISTVERSION= 5.8.0 +PORTREVISION= 1 CATEGORIES= sysutils MAINTAINER= dfr@FreeBSD.org COMMENT= Manage Pods, Containers and Container Images WWW= https://podman.io/ LICENSE= APACHE20 LICENSE_FILE= ${WRKSRC}/LICENSE BUILD_DEPENDS= bash:shells/bash \ ggrep:textproc/gnugrep \ go-md2man:textproc/go-md2man \ gsed:textproc/gsed LIB_DEPENDS= libgpgme.so:security/gpgme RUN_DEPENDS= conmon:sysutils/conmon \ containernetworking-plugins>=0:net/containernetworking-plugins \ containers-common>=0:sysutils/containers-common \ ocijail:sysutils/ocijail USES= gmake go:1.24+,no_targets pkgconfig python:build shebangfix USE_RC_SUBR= podman podman_service SHEBANG_FILES= ${WRKSRC}/hack/markdown-preprocess MAKE_ARGS= SHELL=${LOCALBASE}/bin/bash USE_GITHUB= yes GH_ACCOUNT= containers GH_PROJECT= podman INSTALL_TARGET= install install.completions .include diff --git a/sysutils/podman/files/podman_service.in b/sysutils/podman/files/podman_service.in index 0ecb1b0197f3..b06ee670c866 100755 --- a/sysutils/podman/files/podman_service.in +++ b/sysutils/podman/files/podman_service.in @@ -1,37 +1,74 @@ #!/bin/sh # Podman API Service # PROVIDE: podman_service # REQUIRE: LOGIN # KEYWORD: shutdown # Add the following to /etc/rc.conf[.local] to enable this service # -# podman_service_enable: Set to NO by default. -# Set it to YES to start podman API service daemon -# podman_service_flags: Extra flags for podman command (e.g. to set logging level) -# podman_service_log: Path to log file for podman stderr output -# +# podman_service_enable: Set to NO by default. +# Set it to YES to start podman API service daemon +# podman_service_flags: Extra flags for podman command (e.g. to set logging level) +# podman_service_log: Path to log file for podman stderr output +# podman_service_api_user: Optional user to own API socket +# podman_service_api_group: Optional group to own API socket +# podman_service_api_mode: Optional mode to chmod API socket to +# podman_service_api_rundir: Optional dir to override location of API socket +# podman_service_api_socket: Optional name of API socket inside rundir +# podman_service_api_socket_timeout: Optional seconds to wait for creation of API socket . /etc/rc.subr name=podman_service rcvar=${name}_enable : ${podman_service_enable:=NO} +: ${podman_service_api_user:="root"} +: ${podman_service_api_group:="operator"} +: ${podman_service_api_mode:="0770"} +: ${podman_service_api_rundir:="/var/run/podman"} +: ${podman_service_api_socket:="${podman_service_api_rundir}/podman.sock"} +: ${podman_service_api_socket_timeout:=5} : ${podman_service_flags:="--time=0"} : ${podman_service_log:="/var/log/podman.log"} command="%%PREFIX%%/bin/podman" pidfile="/var/run/$name.pid" +start_precmd="podman_prestart" start_cmd="podman_start" +start_postcmd="podman_poststart" + +podman_prestart() +{ + install -d -o ${podman_service_api_user} -g ${podman_service_api_group} -m ${podman_service_api_mode} ${podman_service_api_rundir} +} + +podman_poststart() +{ + local _timeout=${podman_service_api_socket_timeout} + local _elapsed=0 + + while [ ${_elapsed} -lt ${_timeout} ]; do + if [ -S "${podman_service_api_socket}" ]; then + chown ${podman_service_api_user}:${podman_service_api_group} "${podman_service_api_socket}" + chmod ${podman_service_api_mode} "${podman_service_api_socket}" + return 0 + fi + sleep 1 + _elapsed=$((_elapsed + 1)) + done + + warn "Timed out waiting for ${podman_service_api_socket} after ${_timeout} seconds" + return 1 +} podman_start() { startmsg "Starting ${name}." /usr/sbin/daemon -o ${podman_service_log} -f -p ${pidfile} ${command} system service ${podman_service_flags} } load_rc_config ${name} run_rc_command "$1"