diff --git a/sysutils/podman/Makefile b/sysutils/podman/Makefile index 49a8101c3618..8d09cfe3fec0 100644 --- a/sysutils/podman/Makefile +++ b/sysutils/podman/Makefile @@ -1,36 +1,36 @@ PORTNAME= podman DISTVERSIONPREFIX= v DISTVERSION= 5.7.1 -PORTREVISION= 3 +PORTREVISION= 4 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.in b/sysutils/podman/files/podman.in index 653f7cd25507..13aa7b8ec94d 100755 --- a/sysutils/podman/files/podman.in +++ b/sysutils/podman/files/podman.in @@ -1,51 +1,83 @@ #!/bin/sh # Podman startup script - start all containers with restart policy set to always. # PROVIDE: podman # REQUIRE: LOGIN # KEYWORD: shutdown # Add the following to /etc/rc.conf[.local] to enable this service # # podman_enable: Set to NO by default. # Set it to YES to restart containers after restart # podman_flags: Extra flags for podman command (e.g. to set logging level) # . /etc/rc.subr name=podman rcvar=${name}_enable : ${podman_enable:=NO} : ${podman_flags:="--noout"} +: ${podman_user:="www"} +: ${podman_group:="www"} +: ${podman_mode:="0770"} +: ${podman_rundir:="/var/run/podman"} +: ${podman_socket:="${podman_rundir}/podman.sock"} +: ${podman_socket_timeout:=5} podman=%%PREFIX%%/bin/${name} +start_precmd="podman_prestart" start_cmd="podman_start" +start_postcmd="podman_poststart" stop_cmd="podman_stop" restart_cmd="podman_stop && podman_start" # Turn newlines into spaces to avoid line breaks in log messages container_list=$( ${podman} container ls --all --filter restart-policy=always -q \ | tr '\n' ' ') +podman_prestart() +{ + install -d -o ${podman_user} -g ${podman_group} -m ${podman_mode} ${podman_rundir} +} + +podman_poststart() +{ + local _timeout=${podman_socket_timeout} + local _elapsed=0 + + while [ ${_elapsed} -lt ${_timeout} ]; do + if [ -S "${podman_socket}" ]; then + chown ${podman_user}:${podman_group} "${podman_socket}" + chmod ${podman_mode} "${podman_socket}" + return 0 + fi + sleep 1 + _elapsed=$((_elapsed + 1)) + done + + warn "Timed out waiting for ${podman_socket} after ${_timeout} seconds" + return 1 +} + podman_start() { if [ -n "${container_list}" ]; then startmsg "Starting podman containers: ${container_list}" ${podman} ${podman_flags} start ${container_list} fi } podman_stop() { if [ -n "${container_list}" ]; then echo "Stopping podman containers: ${container_list}" ${podman} ${podman_flags} stop ${container_list} fi } load_rc_config ${name} run_rc_command "$1"