Re: git: a5575ead15e2 - main - sysutils/sylve: new port: lightweight GUI for managing jails & bhyve

From: Vladimir Druzenko <vvd_at_freebsd.org>
Date: Tue, 31 Mar 2026 21:16:59 UTC
31.03.2026 21:07, Dan Langille пишет:
> There's a problem with this port:
>
> [18:06 mydev dvl /usr/ports/sysutils/sylve] % make -V PORTVERSION
> make: /usr/ports/sysutils/sylve/Makefile:21: Variable "ARCH" is undefined
> make: Fatal errors encountered -- cannot continue
> make: stopped making "all" in /usr/ports/sysutils/sylve

Try this:
RUN_DEPENDS=    dnsmasq>0:dns/dnsmasq \
         qemu-img:emulators/qemu@tools \
         samba423>0:net/samba423 \
         swtpm>0:sysutils/swtpm \
         virsh:devel/libvirt \
         ${RUN_DEPENDS_${ARCH}}
RUN_DEPENDS_aarch64= u-boot-bhyve-arm64>0:sysutils/u-boot-bhyve-arm64
RUN_DEPENDS_amd64= bhyve-firmware>0:sysutils/bhyve-firmware

> On Mon, Mar 30, 2026, at 6:07 PM, Dave Cottlehuber wrote:
>> The branch main has been updated by dch:
>>
>> URL:
>> https://cgit.FreeBSD.org/ports/commit/?id=a5575ead15e221d83fb130d0ec6ff20bf3873f44
>>
>> commit a5575ead15e221d83fb130d0ec6ff20bf3873f44
>> Author:     Dave Cottlehuber<dch@FreeBSD.org>
>> AuthorDate: 2026-03-30 22:03:00 +0000
>> Commit:     Dave Cottlehuber<dch@FreeBSD.org>
>> CommitDate: 2026-03-30 22:07:05 +0000
>>
>>      sysutils/sylve: new port: lightweight GUI for managing jails & bhyve
>>     
>>      Sponsored by:   SkunkWerks, GmbH
>>      Sponsored by:   Alchemilla
>>      Sponsored by:   The FreeBSD Foundation
>>      Differential Revision:https://reviews.freebsd.org/D52137
>> ---
>>   sysutils/Makefile                   |  1 +
>>   sysutils/sylve/Makefile             | 46 ++++++++++++++++++++++++++++
>>   sysutils/sylve/distinfo             |  7 +++++
>>   sysutils/sylve/files/pkg-message.in | 24 +++++++++++++++
>>   sysutils/sylve/files/sylve.in       | 61 +++++++++++++++++++++++++++++++++++++
>>   sysutils/sylve/pkg-descr            |  5 +++
>>   sysutils/sylve/pkg-plist            |  3 ++
>>   7 files changed, 147 insertions(+)
>>
>> diff --git a/sysutils/Makefile b/sysutils/Makefile
>> index ec10837486e1..80eaa94cf62e 100644
>> --- a/sysutils/Makefile
>> +++ b/sysutils/Makefile
>> @@ -1390,6 +1390,7 @@
>>       SUBDIR += swapusage
>>       SUBDIR += sweeper
>>       SUBDIR += swtpm
>> +    SUBDIR += sylve
>>       SUBDIR += symlinks
>>       SUBDIR += symon
>>       SUBDIR += synergy
>> diff --git a/sysutils/sylve/Makefile b/sysutils/sylve/Makefile
>> new file mode 100644
>> index 000000000000..66cf333011aa
>> --- /dev/null
>> +++ b/sysutils/sylve/Makefile
>> @@ -0,0 +1,46 @@
>> +PORTNAME=	sylve
>> +DISTVERSIONPREFIX=	v
>> +DISTVERSION=	0.2.2
>> +CATEGORIES=	sysutils
>> +MASTER_SITES+=	https://github.com/AlchemillaHQ/Sylve/releases/download/${DISTVERSIONPREFIX}${DISTVERSION}/:web_assets
>> +DISTFILES+=	sylve-web-assets.tar.gz:web_assets
>> +
>> +MAINTAINER=	hayzam@alchemilla.io
>> +COMMENT=	Lightweight GUI for managing Bhyve, Jails, ZFS, networking
>> +WWW=		https://github.com/alchemillahq/sylve
>> +
>> +LICENSE=	BSD2CLAUSE
>> +
>> +ONLY_FOR_ARCHS=	aarch64 amd64
>> +
>> +RUN_DEPENDS=	dnsmasq>0:dns/dnsmasq \
>> +		qemu-img:emulators/qemu@tools \
>> +		samba423>0:net/samba423 \
>> +		swtpm>0:sysutils/swtpm \
>> +		virsh:devel/libvirt
>> +.if ${ARCH} == amd64
>> +RUN_DEPENDS+=	bhyve-firmware>0:sysutils/bhyve-firmware
>> +.elif ${ARCH} == aarch64
>> +RUN_DEPENDS+=	u-boot-bhyve-arm64>0:sysutils/u-boot-bhyve-arm64
>> +.endif
>> +
>> +USES=		go:modules
>> +USE_RC_SUBR=	${PORTNAME}
>> +
>> +GO_MODULE=	github.com/alchemillahq/sylve
>> +
>> +GO_TARGET=	./cmd/sylve
>> +
>> +post-extract:
>> +	@${MKDIR} ${WRKSRC}/internal/assets/web-files
>> +	@${TAR} xf ${DISTDIR}/${DIST_SUBDIR}/sylve-web-assets.tar.gz \
>> +		-C ${WRKSRC}/internal/assets/
>> +
>> +do-install:
>> +	${MKDIR} ${STAGEDIR}${ETCDIR}
>> +	${MKDIR} ${STAGEDIR}/var/db/sylve
>> +	${INSTALL_PROGRAM} ${WRKDIR}/bin/${PORTNAME} \
>> +		${STAGEDIR}${PREFIX}/sbin/${PORTNAME}
>> +	${INSTALL_DATA} ${WRKSRC}/config.example.json
>> ${STAGEDIR}${ETCDIR}/config.json.sample
>> +
>> +.include <bsd.port.mk>
>> diff --git a/sysutils/sylve/distinfo b/sysutils/sylve/distinfo
>> new file mode 100644
>> index 000000000000..5abaf1a4dee2
>> --- /dev/null
>> +++ b/sysutils/sylve/distinfo
>> @@ -0,0 +1,7 @@
>> +TIMESTAMP = 1774805985
>> +SHA256 (go/sysutils_sylve/sylve-v0.2.2/sylve-web-assets.tar.gz) =
>> d8d4dc99723d9352f1af6330ac8a8eb1a8cfddbd91d8e8c0d4b11663a3be5278
>> +SIZE (go/sysutils_sylve/sylve-v0.2.2/sylve-web-assets.tar.gz) = 2929354
>> +SHA256 (go/sysutils_sylve/sylve-v0.2.2/v0.2.2.mod) =
>> 5dfaadfaf24023652042afbc41d496ea4d4fcf4972c32b3f760c9f1f291f7587
>> +SIZE (go/sysutils_sylve/sylve-v0.2.2/v0.2.2.mod) = 5823
>> +SHA256 (go/sysutils_sylve/sylve-v0.2.2/v0.2.2.zip) =
>> c64813343c99b41b60d68576d9559a934303d1709a49296647a5d746a1f96b40
>> +SIZE (go/sysutils_sylve/sylve-v0.2.2/v0.2.2.zip) = 34832987
>> diff --git a/sysutils/sylve/files/pkg-message.in
>> b/sysutils/sylve/files/pkg-message.in
>> new file mode 100644
>> index 000000000000..5df054a1058b
>> --- /dev/null
>> +++ b/sysutils/sylve/files/pkg-message.in
>> @@ -0,0 +1,24 @@
>> +[
>> +{ type: install
>> +  message: <<EOM
>> +Sylve was installed!
>> +
>> +1) The default config file is located at %%ETCDIR%%/config.json. PLEASE
>> +   change your password in this file before starting the service for
>> the
>> +   first time. The default username is "admin" and the default
>> password is
>> +"admin".
>> +
>> +2) By default, Sylve datadir is located at %%DATADIR%% directory, this
>> can
>> +   be modified in %%ETCDIR%%/config.json. This directory can become
>> quite
>> +   large, with downloaded image files.
>> +
>> +3) Enable Sylve by using the command `sysrc sylve_enable=YES` and start
>> +   the service with `service sylve start`.
>> +
>> +4) You should now be able to visithttps://IP:8181 to access the web
>> +   interface!
>> +
>> +5) Enjoy!
>> +EOM
>> +}
>> +]
>> diff --git a/sysutils/sylve/files/sylve.in
>> b/sysutils/sylve/files/sylve.in
>> new file mode 100644
>> index 000000000000..f854f3684105
>> --- /dev/null
>> +++ b/sysutils/sylve/files/sylve.in
>> @@ -0,0 +1,61 @@
>> +#!/bin/sh
>> +#
>> +# PROVIDE: sylve
>> +# REQUIRE: DAEMON NETWORKING
>> +# KEYWORD: shutdown
>> +#
>> +# Add the following lines to /etc/rc.conf.local or /etc/rc.conf to
>> enable sylve:
>> +#
>> +# sylve_enable (bool):      Set to "NO" by default.
>> +#                           Set it to "YES" to enable sylve.
>> +# sylve_user (user):        Set to "root" by default.
>> +#                           User to run sylve as.
>> +# sylve_group (group):      Set to "wheel" by default.
>> +#                           Group to run sylve as.
>> +# sylve_args (str):         Set to "-config %%ETCDIR%%/config.json" by
>> default.
>> +#                           Extra flags passed to sylve.
>> +
>> +. /etc/rc.subr
>> +
>> +name=sylve
>> +rcvar=sylve_enable
>> +
>> +load_rc_config $name
>> +
>> +: ${sylve_enable:="NO"}
>> +: ${sylve_user:="root"}
>> +: ${sylve_group:="wheel"}
>> +: ${sylve_args:="-config %%ETCDIR%%/config.json"}
>> +
>> +export PATH="${PATH}:/usr/local/bin:/usr/local/sbin"
>> +
>> +pidfile="/var/run/${name}.pid"
>> +daemon_pidfile="/var/run/${name}-daemon.pid"
>> +procname="%%PREFIX%%/sbin/sylve"
>> +command="/usr/sbin/daemon"
>> +command_args="-f -c -T ${name} -p ${pidfile} -P ${daemon_pidfile}
>> ${procname} ${sylve_args}"
>> +
>> +start_precmd=sylve_startprecmd
>> +stop_postcmd=sylve_stoppostcmd
>> +
>> +sylve_startprecmd()
>> +{
>> +	if [ ! -e ${daemon_pidfile} ]; then
>> +		install -o ${sylve_user} -g ${sylve_group} /dev/null
>> ${daemon_pidfile};
>> +	fi
>> +	if [ ! -e ${pidfile} ]; then
>> +		install -o ${sylve_user} -g ${sylve_group} /dev/null ${pidfile};
>> +	fi
>> +}
>> +
>> +
>> +sylve_stoppostcmd()
>> +{
>> +	if [ -f "${daemon_pidfile}" ]; then
>> +		pids=$( pgrep -F ${daemon_pidfile} 2>&1 )
>> +		_err=$?
>> +		[ ${_err} -eq 0 ] && kill -9 ${pids}
>> +	fi
>> +}
>> +
>> +run_rc_command "$1"
>> diff --git a/sysutils/sylve/pkg-descr b/sysutils/sylve/pkg-descr
>> new file mode 100644
>> index 000000000000..e97d487cef06
>> --- /dev/null
>> +++ b/sysutils/sylve/pkg-descr
>> @@ -0,0 +1,5 @@
>> +Sylve is a lightweight, open-source virtualization platform for
>> FreeBSD,
>> +leveraging Bhyve for VMs and Jails for containerization, with deep ZFS
>> +integration. It provides a streamlined, Proxmox-like experience
>> tailored for
>> +FreeBSD environments. Its backend is written in Go, and the frontend
>> is written
>> +in Svelte (with Kit), integrated into a single binary for easy
>> deployment.
>> diff --git a/sysutils/sylve/pkg-plist b/sysutils/sylve/pkg-plist
>> new file mode 100644
>> index 000000000000..a591cf664880
>> --- /dev/null
>> +++ b/sysutils/sylve/pkg-plist
>> @@ -0,0 +1,3 @@
>> +@sample %%ETCDIR%%/config.json.sample
>> +sbin/sylve
>> +@dir(root,wheel,0700) /var/db/sylve


-- 
Best regards,
Vladimir Druzenko