pkgsrc-Changes archive

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]

CVS commit: pkgsrc/sysutils/lima



Module Name:    pkgsrc
Committed By:   khorben
Date:           Tue May 26 00:31:53 UTC 2026

Modified Files:
        pkgsrc/sysutils/lima: Makefile
Added Files:
        pkgsrc/sysutils/lima/files: lima.sh

Log Message:
sysutils/lima: import an RC script

This adds an RC script for lima, modeled on that of sysutils/xentools:
it allows the management of multiple instances of lima. lima expects to
run unprivileged with a dedicated user, therefore this change also
creates the corresponding user and group.

Tested on NetBSD/amd64.

Bumps PKGREVISION.


To generate a diff of this commit:
cvs rdiff -u -r1.12 -r1.13 pkgsrc/sysutils/lima/Makefile
cvs rdiff -u -r0 -r1.1 pkgsrc/sysutils/lima/files/lima.sh

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: pkgsrc/sysutils/lima/Makefile
diff -u pkgsrc/sysutils/lima/Makefile:1.12 pkgsrc/sysutils/lima/Makefile:1.13
--- pkgsrc/sysutils/lima/Makefile:1.12  Tue May 12 21:36:29 2026
+++ pkgsrc/sysutils/lima/Makefile       Tue May 26 00:31:52 2026
@@ -1,6 +1,7 @@
-# $NetBSD: Makefile,v 1.12 2026/05/12 21:36:29 khorben Exp $
+# $NetBSD: Makefile,v 1.13 2026/05/26 00:31:52 khorben Exp $
 
 DISTNAME=      lima-2.1.1
+PKGREVISION=   1
 CATEGORIES=    sysutils
 MASTER_SITES=  ${MASTER_SITE_GITHUB:=lima-vm/}
 GITHUB_TAG=    v${PKGVERSION_NOREV}
@@ -12,6 +13,28 @@ LICENSE=     apache-2.0
 
 USE_TOOLS+=    gmake
 
+BUILD_DEFS+=   VARBASE
+
+OWN_DIRS_PERMS+=       ${VARBASE}/db/lima ${LIMA_USER} ${LIMA_GROUP} 0750
+
+LIMA_USER?=    lima
+LIMA_GROUP?=   lima
+
+PKG_GROUPS_VARS+=      LIMA_GROUP
+PKG_USERS_VARS+=       LIMA_USER
+
+PKG_GROUPS=    ${LIMA_GROUP}
+PKG_USERS=     ${LIMA_USER}:${LIMA_GROUP}
+
+PKG_SHELL.${LIMA_USER}=        ${SH}
+PKG_HOME.${LIMA_USER}= ${VARBASE}/db/lima
+
+FILES_SUBST+=  LIMA_USER=${LIMA_USER}
+FILES_SUBST+=  LIMA_GROUP=${LIMA_GROUP}
+FILES_SUBST+=  LIMA_USER_HOME=${VARBASE}/db/lima
+
+RCD_SCRIPTS+=  lima
+
 DEPENDS+=      qemu-[0-9]*:../../emulators/qemu
 
 # Avoid to invoke/use git

Added files:

Index: pkgsrc/sysutils/lima/files/lima.sh
diff -u /dev/null pkgsrc/sysutils/lima/files/lima.sh:1.1
--- /dev/null   Tue May 26 00:31:53 2026
+++ pkgsrc/sysutils/lima/files/lima.sh  Tue May 26 00:31:52 2026
@@ -0,0 +1,106 @@
+#!@RCD_SCRIPTS_SHELL@
+#
+# $NetBSD: lima.sh,v 1.1 2026/05/26 00:31:52 khorben Exp $
+#
+# PROVIDE: lima
+# REQUIRE: DAEMON
+# KEYWORD: shutdown
+#
+# You will need to set some variables in @SYSCONFBASE@/rc.conf to start lima:
+#
+# lima=YES
+#
+# lima_instances       This required variable is a whitespace-separated list
+#                      of instances, e.g., lima_instances="default docker".
+
+$_rc_subr_loaded . @SYSCONFBASE@/rc.subr
+
+name="lima"
+command="@PREFIX@/bin/limactl"
+list_cmd="lima_list"
+start_cmd="lima_start"
+stop_cmd="lima_stop"
+status_cmd="lima_status"
+extra_commands="list"
+
+lima_list()
+{
+       instances=
+       for pidfile in ${lima_homedir}/.lima/*/ha.pid; do
+               pid=$(check_pidfile "$pidfile" "$command")
+               [ -n "$pid" ] || continue
+               instance=${pidfile#$lima_homedir/.lima/}
+               instance=${instance%/ha.pid}
+               instances="$instances $instance"
+       done
+       [ -z "$instances" ] || echo $instances
+}
+
+lima_start()
+{
+       echo "Starting ${name}."
+
+       failed=
+       for instance in $lima_instances; do
+               case "$instance" in
+               "")     continue ;;
+               esac
+
+               # Run limactl to start the instance.
+               name="$name instance: $instance" flags="start" \
+                       command_args="$instance $lima_flags" \
+                       start_cmd= run_rc_command "faststart"
+               [ $? -eq 0 ] || failed="$failed $instance"
+       done
+       if [ -n "$failed" ]; then
+               echo "$name: could not start instance:$failed." 1>&2
+       fi
+}
+
+lima_status() {
+       command_args="list"
+       start_cmd= run_rc_command "faststart"
+}
+
+lima_stop()
+{
+       echo "Stopping ${name}."
+
+       failed=
+       stopped=
+       for instance in $(lima_list); do
+               case "$instance" in
+               "")     continue ;;
+               esac
+
+               command_args="$instance"
+               name="$name instance: $instance" flags="stop" \
+                       start_cmd= run_rc_command "faststart" \
+                       | sed "s/^Starting $name/Stopping $name/"
+               if [ $? -eq 0 ]; then
+                       stopped="$stopped $instance"
+               else
+                       failed="$failed $instance"
+               fi
+       done
+       if [ -n "$failed" ]; then
+               echo "$name: could not stop instance:$failed." 1>&2
+       fi
+}
+
+: ${lima_homedir="@LIMA_USER_HOME@"}
+: ${lima_instances="default"}
+
+lima_flags="-y"
+lima_user="@LIMA_USER@"
+lima_group="@LIMA_GROUP@"
+
+cd /
+
+load_rc_config $name
+
+lima_env="HOME=${lima_homedir}"
+lima_env="${lima_env} USER=$lima_user"
+lima_env="${lima_env} PATH=$PATH:@PREFIX@/bin"
+
+run_rc_command "$1"



Home | Main Index | Thread Index | Old Index