Wednesday, December 31, 2025

Re: virtio-serial support, viocon driver?

On Wed, Dec 31, 2025 at 03:58:42PM +1300, Joe Cook wrote:

> I don't believe qemu-ga can use VirtIO serial ports.

Do you mean specifically under OpenBSD? As in general on other operating
systems qemu-ga uses virtio serial ports.

> I use qemu-ga for OpenBSD VM's on Proxmox.
> The serial type needs to be set to ISA or this to work.

Well, yes, that's because openbsd doesn't support virtio-serial. I don't
think it's a deficiency of qemu-ga itself. If a virtio-serial based tty
was available to qemu-ga, I'm sure it would be happy to use it.

Unfortunately at this time libvirt doesn't support using an isa serial
port for the agent, so I've got a round hole and a square peg <sigh>.

I guess I'll compile a custom kernel with the viocon driver enabled and
see what happens.

Thanks...

Re: Upgrade net/syncthing to v2

31.12.2025 17:13, Douglas Silva пишет:
> Got it. Now the usage report is disabled on first run.
>
> - If you ever decide to enable it, you can — I just tested it.
> - If you ever set it to "Undecided", it will reset to "Disabled" after a page reload; but I think that's fine, since it can't open that modal anymore.
>
> But now I do wonder: what if the package user doesn't ever use the GUI to manage it? Syncthing has a CLI interface too.

Thanks everyone, this works fine for me on amd64 to against Android
clients running 1.x and 2.x; FWIW, just have 'synchting --no-browser'
in ~/.xsession and don't use the web UI unless clients/folders change.

Edd, OK kn if you'd like to commit this.

I did not follow the entire discussion and won't have much time
(for syncthing) in the next coming days.

>
>
> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/net/syncthing/Makefile,v
> diff -u -p -u -p -r1.73 Makefile
> --- Makefile 22 Jul 2025 20:20:25 -0000 1.73
> +++ Makefile 31 Dec 2025 14:01:51 -0000
> @@ -1,6 +1,6 @@
> COMMENT = open decentralized synchronization utility
>
> -V = 1.30.0
> +V = 2.0.12
> DISTNAME = syncthing-${V}
> DISTFILES = syncthing-source-v${V}${EXTRACT_SUFX}
>
> @@ -22,7 +22,6 @@ WRKDIST = ${WRKDIR}/syncthing
> WRKSRC = ${WRKDIR}/go/src/github.com/syncthing/syncthing
>
> MODULES = lang/go
> -MODGO_TYPE = bin
>
> # Syncthing contains a lot of stuff that end users wouldn't be interested in,
> # so we package only these binaries.
> Index: distinfo
> ===================================================================
> RCS file: /cvs/ports/net/syncthing/distinfo,v
> diff -u -p -u -p -r1.50 distinfo
> --- distinfo 4 Jul 2025 19:19:39 -0000 1.50
> +++ distinfo 31 Dec 2025 14:01:51 -0000
> @@ -1,2 +1,2 @@
> -SHA256 (syncthing-source-v1.30.0.tar.gz) = 7xvnHGZ1PAQhKrHJxUjmeNRoutmNxUYeg1QKTvXC/Lo=
> -SIZE (syncthing-source-v1.30.0.tar.gz) = 16142834
> +SHA256 (syncthing-source-v2.0.12.tar.gz) = VgBK5tl0qjh8PGpzTrmKr9XWFZ/GV6H0xhjgsYFPra4=
> +SIZE (syncthing-source-v2.0.12.tar.gz) = 62613260
> Index: patches/patch-build_go
> ===================================================================
> RCS file: /cvs/ports/net/syncthing/patches/patch-build_go,v
> diff -u -p -u -p -r1.24 patch-build_go
> --- patches/patch-build_go 4 Jun 2025 20:07:43 -0000 1.24
> +++ patches/patch-build_go 31 Dec 2025 14:01:51 -0000
> @@ -3,7 +3,7 @@ Print build commands
> Index: build.go
> --- build.go.orig
> +++ build.go
> -@@ -549,7 +549,7 @@ func appendParameters(args []string, tags []string, pk
> +@@ -532,7 +532,7 @@ func appendParameters(args []string, tags []string, pk
>
> if !debugBinary {
> // Regular binaries get version tagged and skip some debug symbols
> Index: patches/patch-cmd_syncthing_main_go
> ===================================================================
> RCS file: /cvs/ports/net/syncthing/patches/patch-cmd_syncthing_main_go,v
> diff -u -p -u -p -r1.3 patch-cmd_syncthing_main_go
> --- patches/patch-cmd_syncthing_main_go 15 Jun 2025 16:42:21 -0000 1.3
> +++ patches/patch-cmd_syncthing_main_go 31 Dec 2025 14:01:51 -0000
> @@ -5,8 +5,8 @@ use unveil(2) to limit execution to
> Index: cmd/syncthing/main.go
> --- cmd/syncthing/main.go.orig
> +++ cmd/syncthing/main.go
> -@@ -29,6 +29,8 @@ import (
> - "syscall"
> +@@ -31,6 +31,8 @@ import (
> + "text/tabwriter"
> "time"
>
> + "golang.org/x/sys/unix"
> @@ -14,23 +14,28 @@ Index: cmd/syncthing/main.go
> "github.com/alecthomas/kong"
> "github.com/gofrs/flock"
> "github.com/thejerf/suture/v4"
> -@@ -206,6 +208,19 @@ func defaultVars() kong.Vars {
> - }
> -
> +@@ -213,6 +215,24 @@ func defaultVars() kong.Vars {
> func main() {
> + // Create a parser with an overridden help function to print our extra
> + // help info.
> ++
> + if err := unix.Unveil("/", "rwc"); err != nil {
> + panic(err)
> + }
> ++
> + if err := unix.Unveil("/usr/local/bin/syncthing", "rx"); err != nil {
> + panic(err)
> + }
> ++
> + if err := unix.Unveil("/usr/local/bin/xdg-open", "rx"); err != nil {
> + panic(err)
> + }
> ++
> + if err := unix.UnveilBlock(); err != nil {
> + panic(err)
> + }
> +
> - // First some massaging of the raw command line to fit the new model.
> - // Basically this means adding the default command at the front, and
> - // converting -options to --options.
> ++
> + var entrypoint CLI
> + parser, err := kong.New(
> + &entrypoint,
> Index: patches/patch-gui_default_syncthing_core_syncthingController_js
> ===================================================================
> RCS file: patches/patch-gui_default_syncthing_core_syncthingController_js
> diff -N patches/patch-gui_default_syncthing_core_syncthingController_js
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-gui_default_syncthing_core_syncthingController_js 31 Dec 2025 14:01:51 -0000
> @@ -0,0 +1,46 @@
> +Disable nag screen for telemetry.
> +
> +Index: gui/default/syncthing/core/syncthingController.js
> +--- gui/default/syncthing/core/syncthingController.js.orig
> ++++ gui/default/syncthing/core/syncthingController.js
> +@@ -187,15 +187,6 @@ angular.module('syncthing.core')
> + $scope.version = data;
> + }).error($scope.emitHTTPError);
> +
> +- if ($scope.system && $scope.config.options.urAccepted > -1 && $scope.config.options.urSeen < $scope.system.urVersionMax && $scope.config.options.urAccepted < $scope.system.urVersionMax) {
> +- // Usage reporting decision has not been taken or format
> +- // has changed, prompt the user to (re-)accept.
> +- $http.get(urlbase + '/svc/report').success(function (data) {
> +- $scope.reportData = data;
> +- showModal('#ur');
> +- }).error($scope.emitHTTPError);
> +- }
> +-
> + $http.get(urlbase + '/system/upgrade').success(function (data) {
> + $scope.upgradeInfo = data;
> + }).error(function () {
> +@@ -370,21 +361,9 @@ angular.module('syncthing.core')
> +
> + $scope.$on('ConfigLoaded', function () {
> + if ($scope.config.options.urAccepted === 0) {
> +- // If usage reporting has been neither accepted nor declined,
> +- // we want to ask the user to make a choice. But we don't want
> +- // to bug them during initial setup, so we set a cookie with
> +- // the time of the first visit. When that cookie is present
> +- // and the time is more than four hours ago, we ask the
> +- // question.
> +-
> +- var firstVisit = document.cookie.replace(/(?:(?:^|.*;\s*)firstVisit\s*\=\s*([^;]*).*$)|^.*$/, "$1");
> +- if (!firstVisit) {
> +- document.cookie = "firstVisit=" + Date.now() + ";max-age=" + 30 * 24 * 3600;
> +- } else {
> +- if (+firstVisit < Date.now() - 4 * 3600 * 1000) {
> +- showModal('#ur');
> +- }
> +- }
> ++ $scope.config.options.urAccepted = -1;
> ++ $scope.config.options.urSeen = $scope.system.urVersionMax;
> ++ $scope.saveConfig();
> + }
> + });
> +
> Index: patches/patch-internal_db_interface_go
> ===================================================================
> RCS file: patches/patch-internal_db_interface_go
> diff -N patches/patch-internal_db_interface_go
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-internal_db_interface_go 31 Dec 2025 14:01:51 -0000
> @@ -0,0 +1,20 @@
> +Remove canonical import path that prevents successful build.
> +
> +This has been fixed upstream [1] and, when released, will
> +make this patch obsolete.
> +
> +[1] https://github.com/syncthing/syncthing/commit/1843cac6d9cb1e3c8b7dd96e5ec4fcb28f554275
> +
> +
> +Index: internal/db/interface.go
> +--- internal/db/interface.go.orig
> ++++ internal/db/interface.go
> +@@ -4,7 +4,7 @@
> + // License, v. 2.0. If a copy of the MPL was not distributed with this file,
> + // You can obtain one at https://mozilla.org/MPL/2.0/.
> +
> +-package db // import "github.com/syncthing/syncthing/internal/db/sqlite"
> ++package db
> +
> + import (
> + "iter"
> Index: patches/patch-lib_build_build_go
> ===================================================================
> RCS file: /cvs/ports/net/syncthing/patches/patch-lib_build_build_go,v
> diff -u -p -u -p -r1.4 patch-lib_build_build_go
> --- patches/patch-lib_build_build_go 28 Nov 2024 11:47:47 -0000 1.4
> +++ patches/patch-lib_build_build_go 31 Dec 2025 14:01:51 -0000
> @@ -3,7 +3,7 @@ Disable phone-home calls / anonymous usa
> Index: lib/build/build.go
> --- lib/build/build.go.orig
> +++ lib/build/build.go
> -@@ -74,7 +74,7 @@ func setBuildData() {
> +@@ -83,7 +83,7 @@ func setBuildData() {
>
> exp := regexp.MustCompile(`^v\d+\.\d+\.\d+(-[a-z]+[\d\.]+)?$`)
> IsRelease = exp.MatchString(Version)
> Index: pkg/README
> ===================================================================
> RCS file: /cvs/ports/net/syncthing/pkg/README,v
> diff -u -p -u -p -r1.8 README
> --- pkg/README 16 Feb 2024 15:09:13 -0000 1.8
> +++ pkg/README 31 Dec 2025 14:01:51 -0000
> @@ -21,8 +21,8 @@ Starting via RC script
>
> Syncthing can be started via the included RC script, thus running
> Syncthing as a system service. This is fine for single user
> -configurations. Under this mode of operation, Syncthing will run as the
> -_syncthing user and store the default 'Sync' folder under
> +configurations. Under this mode of operation, Syncthing runs as the
> +_syncthing user, and the default location for folders is
> ${LOCALSTATEDIR}/syncthing.
>
> Starting Manually
> @@ -31,7 +31,7 @@ Starting Manually
> The other way is to simply invoke ${TRUEPREFIX}/bin/syncthing manually.
> This is a better choice for situations where several users all want to
> run their own instances of Syncthing. Under this mode, the default
> -'Sync' folder will be stored in the user's home directory. Users will
> +location for folders is the user's home directory. Users will
> have to configure Syncthing to listen on different TCP ports for this
> method to work.
>
> Index: pkg/syncthing.rc
> ===================================================================
> RCS file: /cvs/ports/net/syncthing/pkg/syncthing.rc,v
> diff -u -p -u -p -r1.6 syncthing.rc
> --- pkg/syncthing.rc 11 Mar 2022 19:47:38 -0000 1.6
> +++ pkg/syncthing.rc 31 Dec 2025 14:01:51 -0000
> @@ -1,7 +1,7 @@
> #!/bin/ksh
>
> daemon="${TRUEPREFIX}/bin/syncthing"
> -daemon_flags="-no-browser"
> +daemon_flags="--no-browser"
> daemon_user="_syncthing"
>
> . /etc/rc.d/rc.subr
>
>
>
>
> On Wednesday, December 31st, 2025 at 00:29, Douglas Silva <doug.hs@proton.me> wrote:
>
>>
>>
>>
>>
>> There was another piece of code triggering the telemetry modal, so I removed it too. Now it doesn't show up anymore.
>>
>> But if you go to Settings and look for the "Anonymous Usage Reporting", it's now set to "Undecided (will prompt)" by default. We need to set it to "Disabled", somehow.
>>
>> In the same file there is a function defined as '$scope.declineUR', which seems to be what we need. I'm going to experiment with that tomorrow.
>>
>>
>> Index: Makefile
>> ===================================================================
>> RCS file: /cvs/ports/net/syncthing/Makefile,v
>> diff -u -p -u -p -r1.73 Makefile
>> --- Makefile 22 Jul 2025 20:20:25 -0000 1.73
>> +++ Makefile 31 Dec 2025 03:14:19 -0000
>> @@ -1,6 +1,6 @@
>> COMMENT = open decentralized synchronization utility
>>
>> -V = 1.30.0
>> +V = 2.0.12
>> DISTNAME = syncthing-${V}
>> DISTFILES = syncthing-source-v${V}${EXTRACT_SUFX}
>>
>> @@ -22,7 +22,6 @@ WRKDIST = ${WRKDIR}/syncthing
>> WRKSRC = ${WRKDIR}/go/src/github.com/syncthing/syncthing
>>
>> MODULES = lang/go
>> -MODGO_TYPE = bin
>>
>> # Syncthing contains a lot of stuff that end users wouldn't be interested in,
>> # so we package only these binaries.
>> Index: distinfo
>> ===================================================================
>> RCS file: /cvs/ports/net/syncthing/distinfo,v
>> diff -u -p -u -p -r1.50 distinfo
>> --- distinfo 4 Jul 2025 19:19:39 -0000 1.50
>> +++ distinfo 31 Dec 2025 03:14:19 -0000
>> @@ -1,2 +1,2 @@
>> -SHA256 (syncthing-source-v1.30.0.tar.gz) = 7xvnHGZ1PAQhKrHJxUjmeNRoutmNxUYeg1QKTvXC/Lo=
>> -SIZE (syncthing-source-v1.30.0.tar.gz) = 16142834
>> +SHA256 (syncthing-source-v2.0.12.tar.gz) = VgBK5tl0qjh8PGpzTrmKr9XWFZ/GV6H0xhjgsYFPra4=
>> +SIZE (syncthing-source-v2.0.12.tar.gz) = 62613260
>> Index: patches/patch-build_go
>> ===================================================================
>> RCS file: /cvs/ports/net/syncthing/patches/patch-build_go,v
>> diff -u -p -u -p -r1.24 patch-build_go
>> --- patches/patch-build_go 4 Jun 2025 20:07:43 -0000 1.24
>> +++ patches/patch-build_go 31 Dec 2025 03:14:19 -0000
>> @@ -3,7 +3,7 @@ Print build commands
>> Index: build.go
>> --- build.go.orig
>> +++ build.go
>> -@@ -549,7 +549,7 @@ func appendParameters(args []string, tags []string, pk
>> +@@ -532,7 +532,7 @@ func appendParameters(args []string, tags []string, pk
>>
>> if !debugBinary {
>> // Regular binaries get version tagged and skip some debug symbols
>> Index: patches/patch-cmd_syncthing_main_go
>> ===================================================================
>> RCS file: /cvs/ports/net/syncthing/patches/patch-cmd_syncthing_main_go,v
>> diff -u -p -u -p -r1.3 patch-cmd_syncthing_main_go
>> --- patches/patch-cmd_syncthing_main_go 15 Jun 2025 16:42:21 -0000 1.3
>> +++ patches/patch-cmd_syncthing_main_go 31 Dec 2025 03:14:19 -0000
>> @@ -5,8 +5,8 @@ use unveil(2) to limit execution to
>> Index: cmd/syncthing/main.go
>> --- cmd/syncthing/main.go.orig
>> +++ cmd/syncthing/main.go
>> -@@ -29,6 +29,8 @@ import (
>> - "syscall"
>> +@@ -31,6 +31,8 @@ import (
>> + "text/tabwriter"
>> "time"
>>
>> + "golang.org/x/sys/unix"
>> @@ -14,23 +14,28 @@ Index: cmd/syncthing/main.go
>> "github.com/alecthomas/kong"
>> "github.com/gofrs/flock"
>> "github.com/thejerf/suture/v4"
>> -@@ -206,6 +208,19 @@ func defaultVars() kong.Vars {
>> - }
>> -
>> +@@ -213,6 +215,24 @@ func defaultVars() kong.Vars {
>> func main() {
>> + // Create a parser with an overridden help function to print our extra
>> + // help info.
>> ++
>> + if err := unix.Unveil("/", "rwc"); err != nil {
>> + panic(err)
>> + }
>> ++
>> + if err := unix.Unveil("/usr/local/bin/syncthing", "rx"); err != nil {
>> + panic(err)
>> + }
>> ++
>> + if err := unix.Unveil("/usr/local/bin/xdg-open", "rx"); err != nil {
>> + panic(err)
>> + }
>> ++
>> + if err := unix.UnveilBlock(); err != nil {
>> + panic(err)
>> + }
>> +
>> - // First some massaging of the raw command line to fit the new model.
>> - // Basically this means adding the default command at the front, and
>> - // converting -options to --options.
>> ++
>> + var entrypoint CLI
>> + parser, err := kong.New(
>> + &entrypoint,
>> Index: patches/patch-gui_default_syncthing_core_syncthingController_js
>> ===================================================================
>> RCS file: patches/patch-gui_default_syncthing_core_syncthingController_js
>> diff -N patches/patch-gui_default_syncthing_core_syncthingController_js
>> --- /dev/null 1 Jan 1970 00:00:00 -0000
>> +++ patches/patch-gui_default_syncthing_core_syncthingController_js 31 Dec 2025 03:14:19 -0000
>> @@ -0,0 +1,48 @@
>> +Disable nag screen for telemetry.
>> +
>> +Index: gui/default/syncthing/core/syncthingController.js
>> +--- gui/default/syncthing/core/syncthingController.js.orig
>> ++++ gui/default/syncthing/core/syncthingController.js
>> +@@ -187,15 +187,6 @@ angular.module('syncthing.core')
>> + $scope.version = data;
>> + }).error($scope.emitHTTPError);
>> +
>> +- if ($scope.system && $scope.config.options.urAccepted > -1 && $scope.config.options.urSeen < $scope.system.urVersionMax && $scope.config.options.urAccepted < $scope.system.urVersionMax) {
>>
>> +- // Usage reporting decision has not been taken or format
>> +- // has changed, prompt the user to (re-)accept.
>> +- $http.get(urlbase + '/svc/report').success(function (data) {
>> +- $scope.reportData = data;
>> +- showModal('#ur');
>> +- }).error($scope.emitHTTPError);
>> +- }
>> +-
>> + $http.get(urlbase + '/system/upgrade').success(function (data) {
>> + $scope.upgradeInfo = data;
>> + }).error(function () {
>> +@@ -365,26 +356,6 @@ angular.module('syncthing.core')
>> + delete $scope.pendingFolders[folderDev.folderID].offeredBy[folderDev.deviceID];
>> + }
>> + });
>> + }
>> + });
>> +-
>> +- $scope.$on('ConfigLoaded', function () {
>> +- if ($scope.config.options.urAccepted === 0) {
>> +- // If usage reporting has been neither accepted nor declined,
>> +- // we want to ask the user to make a choice. But we don't want
>> +- // to bug them during initial setup, so we set a cookie with
>> +- // the time of the first visit. When that cookie is present
>> +- // and the time is more than four hours ago, we ask the
>> +- // question.
>> +-
>> +- var firstVisit = document.cookie.replace(/(?:(?:^|.;\s)firstVisit\s*\=\s*([^;]).$)|^.*$/, "$1");
>> +- if (!firstVisit) {
>> +- document.cookie = "firstVisit=" + Date.now() + ";max-age=" + 30 * 24 * 3600;
>> +- } else {
>> +- if (+firstVisit < Date.now() - 4 * 3600 * 1000) {
>> +- showModal('#ur');
>> +- }
>> +- }
>> +- }
>> +- });
>> +
>> Index: patches/patch-internal_db_interface_go
>> ===================================================================
>> RCS file: patches/patch-internal_db_interface_go
>> diff -N patches/patch-internal_db_interface_go
>> --- /dev/null 1 Jan 1970 00:00:00 -0000
>> +++ patches/patch-internal_db_interface_go 31 Dec 2025 03:14:19 -0000
>> @@ -0,0 +1,20 @@
>> +Remove canonical import path that prevents successful build.
>> +
>> +This has been fixed upstream [1] and, when released, will
>> +make this patch obsolete.
>> +
>> +[1] https://github.com/syncthing/syncthing/commit/1843cac6d9cb1e3c8b7dd96e5ec4fcb28f554275
>> +
>> +
>> +Index: internal/db/interface.go
>> +--- internal/db/interface.go.orig
>> ++++ internal/db/interface.go
>> +@@ -4,7 +4,7 @@
>> + // License, v. 2.0. If a copy of the MPL was not distributed with this file,
>> + // You can obtain one at https://mozilla.org/MPL/2.0/.
>> +
>> +-package db // import "github.com/syncthing/syncthing/internal/db/sqlite"
>> ++package db
>> +
>> + import (
>> + "iter"
>> Index: patches/patch-lib_build_build_go
>> ===================================================================
>> RCS file: /cvs/ports/net/syncthing/patches/patch-lib_build_build_go,v
>> diff -u -p -u -p -r1.4 patch-lib_build_build_go
>> --- patches/patch-lib_build_build_go 28 Nov 2024 11:47:47 -0000 1.4
>> +++ patches/patch-lib_build_build_go 31 Dec 2025 03:14:19 -0000
>> @@ -3,7 +3,7 @@ Disable phone-home calls / anonymous usa
>> Index: lib/build/build.go
>> --- lib/build/build.go.orig
>> +++ lib/build/build.go
>> -@@ -74,7 +74,7 @@ func setBuildData() {
>> +@@ -83,7 +83,7 @@ func setBuildData() {
>>
>> exp := regexp.MustCompile(`^v\\d+\\.\\d+\\.\\d+(-[a-z]+[\\d\\.]+)?$`)
>> IsRelease = exp.MatchString(Version)
>> Index: pkg/README
>> ===================================================================
>> RCS file: /cvs/ports/net/syncthing/pkg/README,v
>> diff -u -p -u -p -r1.8 README
>> --- pkg/README 16 Feb 2024 15:09:13 -0000 1.8
>> +++ pkg/README 31 Dec 2025 03:14:19 -0000
>> @@ -21,8 +21,8 @@ Starting via RC script
>>
>> Syncthing can be started via the included RC script, thus running
>> Syncthing as a system service. This is fine for single user
>> -configurations. Under this mode of operation, Syncthing will run as the
>> -_syncthing user and store the default 'Sync' folder under
>> +configurations. Under this mode of operation, Syncthing runs as the
>> +_syncthing user, and the default location for folders is
>> ${LOCALSTATEDIR}/syncthing.
>>
>> Starting Manually
>> @@ -31,7 +31,7 @@ Starting Manually
>> The other way is to simply invoke ${TRUEPREFIX}/bin/syncthing manually.
>> This is a better choice for situations where several users all want to
>> run their own instances of Syncthing. Under this mode, the default
>> -'Sync' folder will be stored in the user's home directory. Users will
>> +location for folders is the user's home directory. Users will
>> have to configure Syncthing to listen on different TCP ports for this
>> method to work.
>>
>> Index: pkg/syncthing.rc
>> ===================================================================
>> RCS file: /cvs/ports/net/syncthing/pkg/syncthing.rc,v
>> diff -u -p -u -p -r1.6 syncthing.rc
>> --- pkg/syncthing.rc 11 Mar 2022 19:47:38 -0000 1.6
>> +++ pkg/syncthing.rc 31 Dec 2025 03:14:19 -0000
>> @@ -1,7 +1,7 @@
>> #!/bin/ksh
>>
>> daemon="${TRUEPREFIX}/bin/syncthing"
>> -daemon_flags="-no-browser"
>> +daemon_flags="--no-browser"
>> daemon_user="_syncthing"
>>
>> . /etc/rc.d/rc.subr
>>
>>
>>
>>
>>
>>
>> On Tuesday, December 30th, 2025 at 15:22, Douglas Silva doug.hs@proton.me wrote:
>>
>>> I just tested your patch, but the telemetry prompt is still shown for a new configuration. I'll take a look at that code.
>>>
>>> For the record:
>>> The patching was failing here because my mail client deletes trailing spaces, which are critical for context matching. Running patch(1) with --ignore-whitespace makes it work.
>>>
>>> On Monday, December 29th, 2025 at 05:37, Edd Barrett edd@theunixzoo.co.uk wrote:
>>>
>>>> Hi,
>>>>
>>>> On Sun, Dec 28, 2025 at 07:46:13PM +0000, Douglas Silva wrote:
>>>>
>>>>> As you've seen, it migrates to v2 without any user intervention.
>>>>
>>>> Yes, and I've now tested that locally, and it works. V2 also speaks to V1 just
>>>> fine it seems (also turns out my android phone has been talking V2 to my V1
>>>> OpenBSD nodes for some time).
>>>>
>>>>>> There are some (pre-existing) hard-coded paths in
>>>>>> this patch. We should fix these as a separate commit.
>>>>>
>>>>> Honestly, I have no idea what that means or how to fix it :D
>>>>
>>>> I'll fix those in a follow-up commit. I also think any proposed changes to
>>>> logging should also be a follow-up commit. For now let's just focus on the
>>>> version upgrade.
>>>>
>>>>> When opening the web GUI for the first time, I get the dialog asking if I
>>>>> want to enable telemetry. Isn't it supposed to be disabled by the patch
>>>>> `patch-lib_build_build_go`?
>>>>
>>>> I think that patch is designed to do two things:
>>>> - disable auto-update
>>>> - disable telemetry
>>>>
>>>> But it seems we now have to try harder for the latter.
>>>>
>>>> Here's an updated diff which disables the telemetry nag screen, leaving
>>>> `urAccepted=0` in the config file. Please test.
>>>>
>>>> Index: Makefile
>>>> ===================================================================
>>>> RCS file: /cvs/ports/net/syncthing/Makefile,v
>>>> diff -u -p -r1.73 Makefile
>>>> --- Makefile 22 Jul 2025 20:20:25 -0000 1.73
>>>> +++ Makefile 29 Dec 2025 07:28:55 -0000
>>>> @@ -1,6 +1,6 @@
>>>> COMMENT = open decentralized synchronization utility
>>>>
>>>> -V = 1.30.0
>>>> +V = 2.0.12
>>>> DISTNAME = syncthing-${V}
>>>> DISTFILES = syncthing-source-v${V}${EXTRACT_SUFX}
>>>>
>>>> @@ -22,7 +22,6 @@ WRKDIST = ${WRKDIR}/syncthing
>>>> WRKSRC = ${WRKDIR}/go/src/github.com/syncthing/syncthing
>>>>
>>>> MODULES = lang/go
>>>> -MODGO_TYPE = bin
>>>>
>>>> # Syncthing contains a lot of stuff that end users wouldn't be interested in,
>>>> # so we package only these binaries.
>>>> Index: distinfo
>>>> ===================================================================
>>>> RCS file: /cvs/ports/net/syncthing/distinfo,v
>>>> diff -u -p -r1.50 distinfo
>>>> --- distinfo 4 Jul 2025 19:19:39 -0000 1.50
>>>> +++ distinfo 29 Dec 2025 07:28:55 -0000
>>>> @@ -1,2 +1,2 @@
>>>> -SHA256 (syncthing-source-v1.30.0.tar.gz) = 7xvnHGZ1PAQhKrHJxUjmeNRoutmNxUYeg1QKTvXC/Lo=
>>>> -SIZE (syncthing-source-v1.30.0.tar.gz) = 16142834
>>>> +SHA256 (syncthing-source-v2.0.12.tar.gz) = VgBK5tl0qjh8PGpzTrmKr9XWFZ/GV6H0xhjgsYFPra4=
>>>> +SIZE (syncthing-source-v2.0.12.tar.gz) = 62613260
>>>> Index: patches/patch-build_go
>>>> ===================================================================
>>>> RCS file: /cvs/ports/net/syncthing/patches/patch-build_go,v
>>>> diff -u -p -r1.24 patch-build_go
>>>> --- patches/patch-build_go 4 Jun 2025 20:07:43 -0000 1.24
>>>> +++ patches/patch-build_go 29 Dec 2025 07:28:55 -0000
>>>> @@ -3,7 +3,7 @@ Print build commands
>>>> Index: build.go
>>>> --- build.go.orig
>>>> +++ build.go
>>>> -@@ -549,7 +549,7 @@ func appendParameters(args []string, tags []string, pk
>>>> +@@ -532,7 +532,7 @@ func appendParameters(args []string, tags []string, pk
>>>>
>>>> if !debugBinary {
>>>> // Regular binaries get version tagged and skip some debug symbols
>>>> Index: patches/patch-cmd_syncthing_main_go
>>>> ===================================================================
>>>> RCS file: /cvs/ports/net/syncthing/patches/patch-cmd_syncthing_main_go,v
>>>> diff -u -p -r1.3 patch-cmd_syncthing_main_go
>>>> --- patches/patch-cmd_syncthing_main_go 15 Jun 2025 16:42:21 -0000 1.3
>>>> +++ patches/patch-cmd_syncthing_main_go 29 Dec 2025 07:28:55 -0000
>>>> @@ -5,8 +5,8 @@ use unveil(2) to limit execution to
>>>> Index: cmd/syncthing/main.go
>>>> --- cmd/syncthing/main.go.orig
>>>> +++ cmd/syncthing/main.go
>>>> -@@ -29,6 +29,8 @@ import (
>>>> - "syscall"
>>>> +@@ -31,6 +31,8 @@ import (
>>>> + "text/tabwriter"
>>>> "time"
>>>>
>>>> + "golang.org/x/sys/unix"
>>>> @@ -14,23 +14,28 @@ Index: cmd/syncthing/main.go
>>>> "github.com/alecthomas/kong"
>>>> "github.com/gofrs/flock"
>>>> "github.com/thejerf/suture/v4"
>>>> -@@ -206,6 +208,19 @@ func defaultVars() kong.Vars {
>>>> - }
>>>> -
>>>> +@@ -213,6 +215,24 @@ func defaultVars() kong.Vars {
>>>> func main() {
>>>> + // Create a parser with an overridden help function to print our extra
>>>> + // help info.
>>>> ++
>>>> + if err := unix.Unveil("/", "rwc"); err != nil {
>>>> + panic(err)
>>>> + }
>>>> ++
>>>> + if err := unix.Unveil("/usr/local/bin/syncthing", "rx"); err != nil {
>>>> + panic(err)
>>>> + }
>>>> ++
>>>> + if err := unix.Unveil("/usr/local/bin/xdg-open", "rx"); err != nil {
>>>> + panic(err)
>>>> + }
>>>> ++
>>>> + if err := unix.UnveilBlock(); err != nil {
>>>> + panic(err)
>>>> + }
>>>> +
>>>> - // First some massaging of the raw command line to fit the new model.
>>>> - // Basically this means adding the default command at the front, and
>>>> - // converting -options to --options.
>>>> ++
>>>> + var entrypoint CLI
>>>> + parser, err := kong.New(
>>>> + &entrypoint,
>>>> Index: patches/patch-gui_default_syncthing_core_syncthingController_js
>>>> ===================================================================
>>>> RCS file: patches/patch-gui_default_syncthing_core_syncthingController_js
>>>> diff -N patches/patch-gui_default_syncthing_core_syncthingController_js
>>>> --- /dev/null 1 Jan 1970 00:00:00 -0000
>>>> +++ patches/patch-gui_default_syncthing_core_syncthingController_js 29 Dec 2025 08:28:59 -0000
>>>> @@ -0,0 +1,21 @@
>>>> +Disable nag screen for telemetry.
>>>> +
>>>> +Index: gui/default/syncthing/core/syncthingController.js
>>>> +--- gui/default/syncthing/core/syncthingController.js.orig
>>>> ++++ gui/default/syncthing/core/syncthingController.js
>>>> +@@ -187,15 +187,6 @@ angular.module('syncthing.core')
>>>> + $scope.version = data;
>>>> + }).error($scope.emitHTTPError);
>>>> +
>>>> +- if ($scope.system && $scope.config.options.urAccepted > -1 && $scope.config.options.urSeen < $scope.system.urVersionMax && $scope.config.options.urAccepted < $scope.system.urVersionMax) {
>>>>
>>>> +- // Usage reporting decision has not been taken or format
>>>> +- // has changed, prompt the user to (re-)accept.
>>>> +- $http.get(urlbase + '/svc/report').success(function (data) {
>>>> +- $scope.reportData = data;
>>>> +- showModal('#ur');
>>>> +- }).error($scope.emitHTTPError);
>>>> +- }
>>>> +-
>>>> + $http.get(urlbase + '/system/upgrade').success(function (data) {
>>>> + $scope.upgradeInfo = data;
>>>> + }).error(function () {
>>>> Index: patches/patch-internal_db_interface_go
>>>> ===================================================================
>>>> RCS file: patches/patch-internal_db_interface_go
>>>> diff -N patches/patch-internal_db_interface_go
>>>> --- /dev/null 1 Jan 1970 00:00:00 -0000
>>>> +++ patches/patch-internal_db_interface_go 29 Dec 2025 07:28:55 -0000
>>>> @@ -0,0 +1,20 @@
>>>> +Remove canonical import path that prevents successful build.
>>>> +
>>>> +This has been fixed upstream [1] and, when released, will
>>>> +make this patch obsolete.
>>>> +
>>>> +[1] https://github.com/syncthing/syncthing/commit/1843cac6d9cb1e3c8b7dd96e5ec4fcb28f554275
>>>> +
>>>> +
>>>> +Index: internal/db/interface.go
>>>> +--- internal/db/interface.go.orig
>>>> ++++ internal/db/interface.go
>>>> +@@ -4,7 +4,7 @@
>>>> + // License, v. 2.0. If a copy of the MPL was not distributed with this file,
>>>> + // You can obtain one at https://mozilla.org/MPL/2.0/.
>>>> +
>>>> +-package db // import "github.com/syncthing/syncthing/internal/db/sqlite"
>>>> ++package db
>>>> +
>>>> + import (
>>>> + "iter"
>>>> Index: patches/patch-lib_build_build_go
>>>> ===================================================================
>>>> RCS file: /cvs/ports/net/syncthing/patches/patch-lib_build_build_go,v
>>>> diff -u -p -r1.4 patch-lib_build_build_go
>>>> --- patches/patch-lib_build_build_go 28 Nov 2024 11:47:47 -0000 1.4
>>>> +++ patches/patch-lib_build_build_go 29 Dec 2025 07:28:55 -0000
>>>> @@ -3,7 +3,7 @@ Disable phone-home calls / anonymous usa
>>>> Index: lib/build/build.go
>>>> --- lib/build/build.go.orig
>>>> +++ lib/build/build.go
>>>> -@@ -74,7 +74,7 @@ func setBuildData() {
>>>> +@@ -83,7 +83,7 @@ func setBuildData() {
>>>>
>>>> exp := regexp.MustCompile(`^v\\\\\\\\d+\\\\\\\\.\\\\\\\\d+\\\\\\\\.\\\\\\\\d+(-[a-z]+[\\\\\\\\d\\\\\\\\.]+)?$`)
>>>> IsRelease = exp.MatchString(Version)
>>>> Index: pkg/README
>>>> ===================================================================
>>>> RCS file: /cvs/ports/net/syncthing/pkg/README,v
>>>> diff -u -p -r1.8 README
>>>> --- pkg/README 16 Feb 2024 15:09:13 -0000 1.8
>>>> +++ pkg/README 29 Dec 2025 07:28:55 -0000
>>>> @@ -21,8 +21,8 @@ Starting via RC script
>>>>
>>>> Syncthing can be started via the included RC script, thus running
>>>> Syncthing as a system service. This is fine for single user
>>>> -configurations. Under this mode of operation, Syncthing will run as the
>>>> -_syncthing user and store the default 'Sync' folder under
>>>> +configurations. Under this mode of operation, Syncthing runs as the
>>>> +_syncthing user, and the default location for folders is
>>>> ${LOCALSTATEDIR}/syncthing.
>>>>
>>>> Starting Manually
>>>> @@ -31,7 +31,7 @@ Starting Manually
>>>> The other way is to simply invoke ${TRUEPREFIX}/bin/syncthing manually.
>>>> This is a better choice for situations where several users all want to
>>>> run their own instances of Syncthing. Under this mode, the default
>>>> -'Sync' folder will be stored in the user's home directory. Users will
>>>> +location for folders is the user's home directory. Users will
>>>> have to configure Syncthing to listen on different TCP ports for this
>>>> method to work.
>>>>
>>>> Index: pkg/syncthing.rc
>>>> ===================================================================
>>>> RCS file: /cvs/ports/net/syncthing/pkg/syncthing.rc,v
>>>> diff -u -p -r1.6 syncthing.rc
>>>> --- pkg/syncthing.rc 11 Mar 2022 19:47:38 -0000 1.6
>>>> +++ pkg/syncthing.rc 29 Dec 2025 07:28:55 -0000
>>>> @@ -1,7 +1,7 @@
>>>> #!/bin/ksh
>>>>
>>>> daemon="${TRUEPREFIX}/bin/syncthing"
>>>> -daemon_flags="-no-browser"
>>>> +daemon_flags="--no-browser"
>>>> daemon_user="_syncthing"
>>>>
>>>> . /etc/rc.d/rc.subr
>>>>
>>>> --
>>>> Best Regards
>>>> Edd Barrett
>>>>
>>>> https://www.theunixzoo.co.uk
>

[UPDATE] sysutils/lf 39 -> 40

Hello, ports.

A new version of lf that brings two bug fixes. Tested on today's amd64
snap. QP-encoded diff below. Someone please commit if OK.

Index: Makefile
===================================================================
RCS file: /cvs/ports/sysutils/lf/Makefile,v
retrieving revision 1.13
diff -u -p -u -p -r1.13 Makefile
--- Makefile 4 Dec 2025 02:25:55 -0000 1.13
+++ Makefile 31 Dec 2025 19:38:38 -0000
@@ -1,9 +1,9 @@
COMMENT = terminal file manager inspired by ranger written in Go

MODGO_MODNAME = github.com/gokcehan/lf
-MODGO_VERSION
= v0.0.0-20251201132850-e17504b7ce87
+MODGO_VERSION = v0.0.0-20251210034158-e4395362e49d

-R = 39
+R = 40
DISTNAME = lf-${R}

CATEGORIES = sysutils
Index: distinfo
===================================================================
RCS file: /cvs/ports/sysutils/lf/distinfo,v
retrieving revision 1.11
diff -u -p -u -p -r1.11 distinfo
--- distinfo 4 Dec 2025 02:25:55 -0000 1.11
+++ distinfo 31 Dec 2025 19:38:38 -0000
@@ -43,14 +43,14 @@ SHA256 (go_modules/golang.org/x/sys/@v/v
SHA256 (go_modules/golang.org/x/sys/@v/v0.0.0-20220722155257-8c9f86f7a55f.mod) = 8DMzMJb+GY8xUd7tk/LeunTlC7/nc5E0BFvDt85KUCQ=
SHA256 (go_modules/golang.org/x/sys/@v/v0.13.0.mod) = 8DMzMJb+GY8xUd7tk/LeunTlC7/nc5E0BFvDt85KUCQ=
SHA256 (go_modules/golang.org/x/sys/@v/v0.35.0.mod) = 9n4+GPTAjmCn6Acmqza2kf3Opbga4caW/2TK9Ri8/j0=
-SHA256 (go_modules/golang.org/x/sys/@v/v0.38.0.mod) = 9BGBTYOpboZ4Gx3uQcEluVBNpUItujfMHWOwFq45z+I=
-SHA256 (go_modules/golang.org/x/sys/@v/v0.38.0.zip) = 2s18mqKymPlmgi2iFMbWAdoI8U1BspAyvKxLxQOIekk=
+SHA256 (go_modules/golang.org/x/sys/@v/v0.39.0.mod) = 9BGBTYOpboZ4Gx3uQcEluVBNpUItujfMHWOwFq45z+I=
+SHA256 (go_modules/golang.org/x/sys/@v/v0.39.0.zip) = ZURO/Smc54vEV1iLwgYeaftc6t7HAiDu2jlldAKtSxs=
SHA256 (go_modules/golang.org/x/sys/@v/v0.5.0.mod) = 8DMzMJb+GY8xUd7tk/LeunTlC7/nc5E0BFvDt85KUCQ=
SHA256 (go_modules/golang.org/x/term/@v/v0.0.0-20201126162022-7de9c90e9dd1.mod) = TLqxT3cGdxsnHZlaGzzBMf5aJGqtx+5tG6bwvYlHgfo=
SHA256 (go_modules/golang.org/x/term/@v/v0.0.0-20210927222741-03fcf44c2211.mod) = dAeU4pFPXMh+JWVsWEMiKyxlZlghIF9FYyoEd8jT95s=
SHA256 (go_modules/golang.org/x/term/@v/v0.34.0.mod) = pf+AuqfyY5257Z30bvbOKf0asbQnXpuKaFaqm47N4no=
-SHA256 (go_modules/golang.org/x/term/@v/v0.37.0.mod) = gvprnT4AbTI6wpGyu9gop4aZxM3U2BYHdx0bkdi50o4=
-SHA256 (go_modules/golang.org/x/term/@v/v0.37.0.zip) = /9inTpqf0T4QgPpOj4B2k+Q4/amPM2mSyyokINLpXmE=
+SHA256 (go_modules/golang.org/x/term/@v/v0.38.0.mod) = y9Rn0L/1uGgUc+6lGryukXJ63ON2GNmtl2C6v5etmmw=
+SHA256 (go_modules/golang.org/x/term/@v/v0.38.0.zip) = AM7Ivq6Yu1oVye6ejnBbfKucUCaeeFi/+Y3wUzsxc2M=
SHA256 (go_modules/golang.org/x/term/@v/v0.5.0.mod) = DW9YIoqtwaZSjmdV2gGFFlZuOuXFIB963hdz9W+o2TQ=
SHA256 (go_modules/golang.org/x/text/@v/v0.14.0.mod) = lxV58X6avFkmq3YhT1M71RfPSSXIhSQ6xHVaGgp8ae8=
SHA256 (go_modules/golang.org/x/text/@v/v0.28.0.mod) = URSs2/q356CXgI0L1M3wbjowQ+S8Xk5JdHFdZkUCaYo=
@@ -68,7 +68,7 @@ SHA256 (go_modules/golang.org/x/tools/@v
SHA256 (go_modules/golang.org/x/tools/@v/v0.6.0.mod) = gw7Xjc0+mSfEEuJkEjAwhEd0nVE9MQJNJ24kQ7IBZgk=
SHA256 (go_modules/golang.org/x/xerrors/@v/v0.0.0-20190717185122-a985d3407aa7.mod) = ql4+ybt7n2gWCe+sAZ2d4ae6dxkkj/Hqon54iC2z1/U=
SHA256 (go_modules/golang.org/x/xerrors/@v/v0.0.0-20190717185122-a985d3407aa7.zip) = xOnwY8/tVGyQ8AqWV96sT5FaiZT4y+bb0/GOeeuDAs8=
-SHA256 (lf-39.zip) = BO6K0hFwP63XIS2CLCg7FSrkKP63IctfF3XhIoMSX+U=
+SHA256 (lf-40.zip) = pBbf3e2sync/n6UFAMETHPoX+VYusIGe4qRvfP+4+kM=
SIZE (go_modules/github.com/clipperhouse/uax29/v2/@v/v2.2.0.mod) = 255
SIZE (go_modules/github.com/clipperhouse/uax29/v2/@v/v2.2.0.zip) = 283496
SIZE (go_modules/github.com/djherbis/times/@v/v1.6.0.mod) = 103
@@ -114,14 +114,14 @@ SIZE (go_modules/golang.org/x/sys/@v/v0.
SIZE (go_modules/golang.org/x/sys/@v/v0.0.0-20220722155257-8c9f86f7a55f.mod) = 33
SIZE (go_modules/golang.org/x/sys/@v/v0.13.0.mod) = 33
SIZE (go_modules/golang.org/x/sys/@v/v0.35.0.mod) = 35
-SIZE (go_modules/golang.org/x/sys/@v/v0.38.0.mod) = 35
-SIZE (go_modules/golang.org/x/sys/@v/v0.38.0.zip) = 2002991
+SIZE (go_modules/golang.org/x/sys/@v/v0.39.0.mod) = 35
+SIZE (go_modules/golang.org/x/sys/@v/v0.39.0.zip) = 2003190
SIZE (go_modules/golang.org/x/sys/@v/v0.5.0.mod) = 33
SIZE (go_modules/golang.org/x/term/@v/v0.0.0-20201126162022-7de9c90e9dd1.mod) = 95
SIZE (go_modules/golang.org/x/term/@v/v0.0.0-20210927222741-03fcf44c2211.mod) = 95
SIZE (go_modules/golang.org/x/term/@v/v0.34.0.mod) = 70
-SIZE (go_modules/golang.org/x/term/@v/v0.37.0.mod) = 70
-SIZE (go_modules/golang.org/x/term/@v/v0.37.0.zip) = 21158
+SIZE (go_modules/golang.org/x/term/@v/v0.38.0.mod) = 70
+SIZE (go_modules/golang.org/x/term/@v/v0.38.0.zip) = 21158
SIZE (go_modules/golang.org/x/term/@v/v0.5.0.mod) = 67
SIZE (go_modules/golang.org/x/text/@v/v0.14.0.mod) = 197
SIZE (go_modules/golang.org/x/text/@v/v0.28.0.mod) = 190
@@ -139,4 +139,4 @@ SIZE (go_modules/golang.org/x/tools/@v/v
SIZE (go_modules/golang.org/x/tools/@v/v0.6.0.mod) = 211
SIZE (go_modules/golang.org/x/xerrors/@v/v0.0.0-20190717185122-a985d3407aa7.mod) = 37
SIZE (go_modules/golang.org/x/xerrors/@v/v0.0.0-20190717185122-a985d3407aa7.zip) = 20009
-SIZE (lf-39.zip) = 222853
+SIZE (lf-40.zip) = 223082
Index: modules.inc
===================================================================
RCS file: /cvs/ports/sysutils/lf/modules.inc,v
retrieving revision 1.8
diff -u -p -u -p -r1.8 modules.inc
--- modules.inc 4 Dec 2025 02:25:55 -0000 1.8
+++ modules.inc 31 Dec 2025 19:38:38 -0000
@@ -12,8 +12,8 @@ MODGO_MODULES = \
golang.org/x/mod v0.27.0 \
golang.org/x/net v0.6.0 \
golang.org/x/sync v0.17.0 \
- golang.org/x/sys v0.38.0 \
- golang.org/x/term v0.37.0 \
+ golang.org/x/sys v0.39.0 \
+ golang.org/x/term v0.38.0 \
golang.org/x/text v0.29.0 \
golang.org/x/tools v0.36.0 \
golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7

Re: OpenNTPD behaviour with sensors

Hi Maurice


This is expected behavior with OpenNTPd and not a problem with your hardware.

With only a local sensor, ntpd can control the clock very tightly so that microsecond offsets are normal but once you add remote servers, their network delay and asymmetry start to influence the clock control as well. 

Even if the sensor remains selected in ntpctl, the other peers will still affect the filtering and frequency correction, which typically results in millisecond-level variation.

Weights don't fully isolate the sensor, and seeing it selected does not mean the other sources have zero impact.

If you want to keep microsecond accuracy, the usual approach is to run the machine as a pure stratum-1 server with only the sensor configured and get redundancy by running multiple such boxes. 

However, If you need fallback to network time in the same daemon, then OpenNTPd is simply not designed for that use case.

Regards,

Kihaguru Njenga Gathura


On Wed, 31 Dec 2025, 17:28 Maurice Janssen, <maurice@z74.net> wrote:
Hi,

I have a couple of small machines (Soekris 6501 and 5501) that I use as
NTP server in the NTP pool.
When I use a sensor as the only source of time (Garmin 18lvc on the serial
port or Meinberg PZF180PEX DCF77 receiver card), the offset is quite good:
nearly allways below 20 us, most of the time below 5 us and sometimes even
less than 1 us.
But when I add another server (mainly as backup in case the sensor doen't
work), the offset drifts away to 1 or 2 ms.  I tried with 1 sensor and
1 server, with 1 sensor and multiple servers, I tried adding weight 5 or 10
to the sensor, but this doesn't seem to have any effect.  In all cases ntpd
stays synchronised to the sensor (with poll=15s), but after an hour or so
after starting ntpd the offset starts to increase.  And from that moment, the
offset wanders between roughly -2 and +2 ms.
It almost seems as if ntpd is synchronised with one of the servers (with
much higher polling interval), however ntpctl still shows that it is
synchronised to the sensor (albeit with the wandering offset as described
above).

I would prefer to have the microsecond offset _and_ some servers as backup,
but can't get it working like that.

Am I missing something?  Or is this a bug in ntpd?

Thanks for any help.


Re: OpenNTPD behaviour with sensors

Hi,

​I am no expert, but I just set it up on my own network and from what I understand of OpenNTPD's design, the daemon doesn't "select" the best source to follow it exclusively. Instead, it calculates a median from all valid sources to adjust the clock.

​Even if your sensor has a high weight, the network servers are still included in this calculation. Their 1-2ms jitter is factored in, which "pulls" the system's offset away from the microsecond precision of your sensor.

​It seems to be a design choice: OpenNTPD prioritizes a stable median (security/stability) over the absolute precision of a single source.

​Hope this helps.

Kevin


Le mer. 31 déc. 2025, 16:27, Maurice Janssen <maurice@z74.net> a écrit :
Hi,

I have a couple of small machines (Soekris 6501 and 5501) that I use as
NTP server in the NTP pool.
When I use a sensor as the only source of time (Garmin 18lvc on the serial
port or Meinberg PZF180PEX DCF77 receiver card), the offset is quite good:
nearly allways below 20 us, most of the time below 5 us and sometimes even
less than 1 us.
But when I add another server (mainly as backup in case the sensor doen't
work), the offset drifts away to 1 or 2 ms.  I tried with 1 sensor and
1 server, with 1 sensor and multiple servers, I tried adding weight 5 or 10
to the sensor, but this doesn't seem to have any effect.  In all cases ntpd
stays synchronised to the sensor (with poll=15s), but after an hour or so
after starting ntpd the offset starts to increase.  And from that moment, the
offset wanders between roughly -2 and +2 ms.
It almost seems as if ntpd is synchronised with one of the servers (with
much higher polling interval), however ntpctl still shows that it is
synchronised to the sensor (albeit with the wandering offset as described
above).

I would prefer to have the microsecond offset _and_ some servers as backup,
but can't get it working like that.

Am I missing something?  Or is this a bug in ntpd?

Thanks for any help.

Re: [NEW] devel/tomlplusplus

Happy new year from Japan.

> generally yes, but check that goldendict-ng is happy as it has a
> vendored version; either switch to use this as a dep, or make sure the
> following two things work:
>
> 1. building goldendict-ng with this installed
> 2. "make configure" with tomlplusplus installed, then pkg_delete
> tomlplusplus, then build goldendict-ng

both looks no error but, goldendict-ng refers system-provided
toml++ package.

remove thirdparty/toml++/toml.hpp after "make configure",
no error with installed tomlplusplus, error occurs without it.

--
SASANO Takayoshi (JG1UAA) <uaa@mx5.nisiq.net>

Re: [update] databases/duckdb to 1.4.3

On 2025/12/30 23:20, Lucas Raab wrote:
> Hello,
>
> Here's an update for duckdb up to the latest. Builds, tests, and runs fine as
> far as I can tell. Other tests though? I won't claim to be an advanced user :)
>
> changelogs:
> https://github.com/duckdb/duckdb/releases/tag/v1.4.0
> https://github.com/duckdb/duckdb/releases/tag/v1.4.1
> https://github.com/duckdb/duckdb/releases/tag/v1.4.2
> https://github.com/duckdb/duckdb/releases/tag/v1.4.3
>
> parquet is a new core extension so it's included as an extension to be built:
> https://duckdb.org/docs/stable/core_extensions/overview#default-extensions
>
> Thanks,
> Lucas

ok.

personally i'd switch it to GH_* as well so that portroach can find it...


> diff refs/heads/master refs/heads/duckdb
> commit - ea1b56b87e56235a01f3d85acadca4b758a0600e
> commit + 089e0bca0423f548a49141737d9f700089a07e48
> blob - 36e509ef189653958db2594786fcbfcc1027471c
> blob + 917de2765d10723240232110b65492e68a470c2b
> --- databases/duckdb/Makefile
> +++ databases/duckdb/Makefile
> @@ -1,6 +1,6 @@
> COMMENT = fast in-process analytical database
>
> -V = 1.3.2
> +V = 1.4.3
> DIST_TUPLE += github duckdb duckdb v${V} .
>
> SHARED_LIBS = duckdb 0.0
> @@ -22,7 +22,7 @@ MODULES = devel/cmake
> CONFIGURE_ARGS = -DOVERRIDE_GIT_DESCRIBE="v${V}" \
> -DENABLE_SANITIZER=OFF \
> -DENABLE_UBSAN=OFF \
> - -DBUILD_EXTENSIONS="autocomplete;icu;json" \
> + -DBUILD_EXTENSIONS="autocomplete;icu;json;parquet" \
> -DSKIP_EXTENSIONS="jemalloc"
>
> do-test:
> blob - 52dd09793e8f13b498a6d9ec63b4435b7d398614
> blob + ced071a8cc5ead3df653a0748b4ee5ecd67cd6d5
> --- databases/duckdb/distinfo
> +++ databases/duckdb/distinfo
> @@ -1,2 +1,2 @@
> -SHA256 (duckdb-duckdb-v1.3.2.tar.gz) = oQs4jlFvbZzF1XH6VfFMk2tzosoXQAp2qubD8cwuIMs=
> -SIZE (duckdb-duckdb-v1.3.2.tar.gz) = 93466214
> +SHA256 (duckdb-duckdb-v1.4.3.tar.gz) = tqKv0J2c8H5Q1c0HB33392l7Ycyi6wB1T1rfiaGubGQ=
> +SIZE (duckdb-duckdb-v1.4.3.tar.gz) = 98406292
> blob - d58d9b745a314c4ce43ece336b2b712b575eee4c
> blob + cbfd8140ba7883da9f3b39ce023419a5a350a547
> --- databases/duckdb/patches/patch-CMakeLists_txt
> +++ databases/duckdb/patches/patch-CMakeLists_txt
> @@ -3,7 +3,7 @@ Avoid explicit optimization overriding CXXFLAGS
> Index: CMakeLists.txt
> --- CMakeLists.txt.orig
> +++ CMakeLists.txt
> -@@ -620,7 +620,7 @@ if(NOT MSVC)
> +@@ -607,7 +607,7 @@ if(NOT MSVC)
> set(CMAKE_CXX_FLAGS_DEBUG
> "${CMAKE_CXX_FLAGS_DEBUG} -g -O0 -DDEBUG -Wall ${M32_FLAG} ${CXX_EXTRA}")
> set(CMAKE_CXX_FLAGS_RELEASE
> blob - c9936409bf26caf796b19e4598be412a4cd91a2c
> blob + ffb58f601e9482561623b014483356e0f75db5c5
> --- databases/duckdb/pkg/PLIST
> +++ databases/duckdb/pkg/PLIST
> @@ -62,6 +62,7 @@ include/duckdb/common/adbc/single_batch_array_stream.h
> include/duckdb/common/adbc/wrappers.hpp
> include/duckdb/common/algorithm.hpp
> include/duckdb/common/allocator.hpp
> +include/duckdb/common/arena_linked_list.hpp
> include/duckdb/common/array.hpp
> include/duckdb/common/array_ptr.hpp
> include/duckdb/common/arrow/
> @@ -97,6 +98,7 @@ include/duckdb/common/arrow/schema_metadata.hpp
> include/duckdb/common/assert.hpp
> include/duckdb/common/atomic.hpp
> include/duckdb/common/atomic_ptr.hpp
> +include/duckdb/common/bignum.hpp
> include/duckdb/common/bind_helpers.hpp
> include/duckdb/common/bit_utils.hpp
> include/duckdb/common/bitpacking.hpp
> @@ -114,20 +116,26 @@ include/duckdb/common/compressed_file_system.hpp
> include/duckdb/common/constants.hpp
> include/duckdb/common/crypto/
> include/duckdb/common/crypto/md5.hpp
> +include/duckdb/common/csv_writer.hpp
> include/duckdb/common/deque.hpp
> include/duckdb/common/dl.hpp
> include/duckdb/common/enable_shared_from_this_ipp.hpp
> +include/duckdb/common/encryption_functions.hpp
> +include/duckdb/common/encryption_key_manager.hpp
> include/duckdb/common/encryption_state.hpp
> include/duckdb/common/enum_class_hash.hpp
> include/duckdb/common/enum_util.hpp
> include/duckdb/common/enums/
> include/duckdb/common/enums/access_mode.hpp
> include/duckdb/common/enums/aggregate_handling.hpp
> +include/duckdb/common/enums/arrow_format_version.hpp
> include/duckdb/common/enums/catalog_lookup_behavior.hpp
> include/duckdb/common/enums/catalog_type.hpp
> +include/duckdb/common/enums/checkpoint_abort.hpp
> include/duckdb/common/enums/checkpoint_type.hpp
> include/duckdb/common/enums/collation_type.hpp
> include/duckdb/common/enums/compression_type.hpp
> +include/duckdb/common/enums/copy_option_mode.hpp
> include/duckdb/common/enums/copy_overwrite_mode.hpp
> include/duckdb/common/enums/cte_materialize.hpp
> include/duckdb/common/enums/date_part_specifier.hpp
> @@ -146,6 +154,7 @@ include/duckdb/common/enums/join_type.hpp
> include/duckdb/common/enums/joinref_type.hpp
> include/duckdb/common/enums/logical_operator_type.hpp
> include/duckdb/common/enums/memory_tag.hpp
> +include/duckdb/common/enums/merge_action_type.hpp
> include/duckdb/common/enums/metric_type.hpp
> include/duckdb/common/enums/on_create_conflict.hpp
> include/duckdb/common/enums/on_entry_not_found.hpp
> @@ -153,6 +162,7 @@ include/duckdb/common/enums/operator_result_type.hpp
> include/duckdb/common/enums/optimizer_type.hpp
> include/duckdb/common/enums/order_preservation_type.hpp
> include/duckdb/common/enums/order_type.hpp
> +include/duckdb/common/enums/ordinality_request_type.hpp
> include/duckdb/common/enums/output_type.hpp
> include/duckdb/common/enums/pending_execution_result.hpp
> include/duckdb/common/enums/physical_operator_type.hpp
> @@ -170,6 +180,8 @@ include/duckdb/common/enums/statement_type.hpp
> include/duckdb/common/enums/stream_execution_result.hpp
> include/duckdb/common/enums/subquery_type.hpp
> include/duckdb/common/enums/tableref_type.hpp
> +include/duckdb/common/enums/thread_pin_mode.hpp
> +include/duckdb/common/enums/tuple_data_layout_enums.hpp
> include/duckdb/common/enums/undo_flags.hpp
> include/duckdb/common/enums/vector_type.hpp
> include/duckdb/common/enums/wal_type.hpp
> @@ -239,6 +251,7 @@ include/duckdb/common/operator/convert_to_string.hpp
> include/duckdb/common/operator/decimal_cast_operators.hpp
> include/duckdb/common/operator/double_cast_operator.hpp
> include/duckdb/common/operator/integer_cast_operator.hpp
> +include/duckdb/common/operator/interpolate.hpp
> include/duckdb/common/operator/multiply.hpp
> include/duckdb/common/operator/numeric_binary_operators.hpp
> include/duckdb/common/operator/numeric_cast.hpp
> @@ -260,6 +273,7 @@ include/duckdb/common/progress_bar/display/
> include/duckdb/common/progress_bar/display/terminal_progress_bar_display.hpp
> include/duckdb/common/progress_bar/progress_bar.hpp
> include/duckdb/common/progress_bar/progress_bar_display.hpp
> +include/duckdb/common/progress_bar/unscented_kalman_filter.hpp
> include/duckdb/common/queue.hpp
> include/duckdb/common/radix.hpp
> include/duckdb/common/radix_partitioning.hpp
> @@ -282,6 +296,7 @@ include/duckdb/common/serializer/read_stream.hpp
> include/duckdb/common/serializer/serialization_data.hpp
> include/duckdb/common/serializer/serialization_traits.hpp
> include/duckdb/common/serializer/serializer.hpp
> +include/duckdb/common/serializer/varint.hpp
> include/duckdb/common/serializer/write_stream.hpp
> include/duckdb/common/set.hpp
> include/duckdb/common/shadow_forbidden_functions.hpp
> @@ -293,6 +308,13 @@ include/duckdb/common/sort/duckdb_pdqsort.hpp
> include/duckdb/common/sort/partition_state.hpp
> include/duckdb/common/sort/sort.hpp
> include/duckdb/common/sort/sorted_block.hpp
> +include/duckdb/common/sorting/
> +include/duckdb/common/sorting/hashed_sort.hpp
> +include/duckdb/common/sorting/sort.hpp
> +include/duckdb/common/sorting/sort_key.hpp
> +include/duckdb/common/sorting/sort_projection_column.hpp
> +include/duckdb/common/sorting/sorted_run.hpp
> +include/duckdb/common/sorting/sorted_run_merger.hpp
> include/duckdb/common/stack.hpp
> include/duckdb/common/stack_checker.hpp
> include/duckdb/common/stacktrace.hpp
> @@ -309,6 +331,7 @@ include/duckdb/common/tree_renderer/graphviz_tree_rend
> include/duckdb/common/tree_renderer/html_tree_renderer.hpp
> include/duckdb/common/tree_renderer/json_tree_renderer.hpp
> include/duckdb/common/tree_renderer/text_tree_renderer.hpp
> +include/duckdb/common/tree_renderer/yaml_tree_renderer.hpp
> include/duckdb/common/type_util.hpp
> include/duckdb/common/type_visitor.hpp
> include/duckdb/common/typedefs.hpp
> @@ -317,6 +340,7 @@ include/duckdb/common/types.hpp
> include/duckdb/common/types/arrow_aux_data.hpp
> include/duckdb/common/types/arrow_string_view_type.hpp
> include/duckdb/common/types/batched_data_collection.hpp
> +include/duckdb/common/types/bignum.hpp
> include/duckdb/common/types/bit.hpp
> include/duckdb/common/types/blob.hpp
> include/duckdb/common/types/cast_helpers.hpp
> @@ -335,6 +359,7 @@ include/duckdb/common/types/date.hpp
> include/duckdb/common/types/date_lookup_cache.hpp
> include/duckdb/common/types/datetime.hpp
> include/duckdb/common/types/decimal.hpp
> +include/duckdb/common/types/double_na_equal.hpp
> include/duckdb/common/types/hash.hpp
> include/duckdb/common/types/hugeint.hpp
> include/duckdb/common/types/hyperloglog.hpp
> @@ -342,6 +367,7 @@ include/duckdb/common/types/interval.hpp
> include/duckdb/common/types/list_segment.hpp
> include/duckdb/common/types/null_value.hpp
> include/duckdb/common/types/row/
> +include/duckdb/common/types/row/block_iterator.hpp
> include/duckdb/common/types/row/partitioned_tuple_data.hpp
> include/duckdb/common/types/row/row_data_collection.hpp
> include/duckdb/common/types/row/row_data_collection_scanner.hpp
> @@ -354,6 +380,7 @@ include/duckdb/common/types/row/tuple_data_segment.hpp
> include/duckdb/common/types/row/tuple_data_states.hpp
> include/duckdb/common/types/sel_cache.hpp
> include/duckdb/common/types/selection_vector.hpp
> +include/duckdb/common/types/string.hpp
> include/duckdb/common/types/string_heap.hpp
> include/duckdb/common/types/string_type.hpp
> include/duckdb/common/types/time.hpp
> @@ -364,7 +391,7 @@ include/duckdb/common/types/uuid.hpp
> include/duckdb/common/types/validity_mask.hpp
> include/duckdb/common/types/value.hpp
> include/duckdb/common/types/value_map.hpp
> -include/duckdb/common/types/varint.hpp
> +include/duckdb/common/types/variant.hpp
> include/duckdb/common/types/vector.hpp
> include/duckdb/common/types/vector_buffer.hpp
> include/duckdb/common/types/vector_cache.hpp
> @@ -406,6 +433,7 @@ include/duckdb/execution/ht_entry.hpp
> include/duckdb/execution/index/
> include/duckdb/execution/index/art/
> include/duckdb/execution/index/art/art.hpp
> +include/duckdb/execution/index/art/art_builder.hpp
> include/duckdb/execution/index/art/art_key.hpp
> include/duckdb/execution/index/art/art_merger.hpp
> include/duckdb/execution/index/art/art_operator.hpp
> @@ -528,6 +556,7 @@ include/duckdb/execution/operator/persistent/physical_
> include/duckdb/execution/operator/persistent/physical_delete.hpp
> include/duckdb/execution/operator/persistent/physical_export.hpp
> include/duckdb/execution/operator/persistent/physical_insert.hpp
> +include/duckdb/execution/operator/persistent/physical_merge_into.hpp
> include/duckdb/execution/operator/persistent/physical_update.hpp
> include/duckdb/execution/operator/projection/
> include/duckdb/execution/operator/projection/physical_pivot.hpp
> @@ -580,6 +609,16 @@ include/duckdb/function/cast/bound_cast_data.hpp
> include/duckdb/function/cast/cast_function_set.hpp
> include/duckdb/function/cast/default_casts.hpp
> include/duckdb/function/cast/nested_to_varchar_cast.hpp
> +include/duckdb/function/cast/variant/
> +include/duckdb/function/cast/variant/array_to_variant.hpp
> +include/duckdb/function/cast/variant/json_to_variant.hpp
> +include/duckdb/function/cast/variant/list_to_variant.hpp
> +include/duckdb/function/cast/variant/primitive_to_variant.hpp
> +include/duckdb/function/cast/variant/struct_to_variant.hpp
> +include/duckdb/function/cast/variant/to_variant.hpp
> +include/duckdb/function/cast/variant/to_variant_fwd.hpp
> +include/duckdb/function/cast/variant/union_to_variant.hpp
> +include/duckdb/function/cast/variant/variant_to_variant.hpp
> include/duckdb/function/cast/vector_cast_helpers.hpp
> include/duckdb/function/cast_rules.hpp
> include/duckdb/function/compression/
> @@ -623,6 +662,8 @@ include/duckdb/function/scalar/string_functions.hpp
> include/duckdb/function/scalar/struct_functions.hpp
> include/duckdb/function/scalar/struct_utils.hpp
> include/duckdb/function/scalar/system_functions.hpp
> +include/duckdb/function/scalar/variant_functions.hpp
> +include/duckdb/function/scalar/variant_utils.hpp
> include/duckdb/function/scalar_function.hpp
> include/duckdb/function/scalar_macro_function.hpp
> include/duckdb/function/table/
> @@ -634,9 +675,11 @@ include/duckdb/function/table/arrow/enum/
> include/duckdb/function/table/arrow/enum/arrow_datetime_type.hpp
> include/duckdb/function/table/arrow/enum/arrow_type_info_type.hpp
> include/duckdb/function/table/arrow/enum/arrow_variable_size_type.hpp
> +include/duckdb/function/table/direct_file_reader.hpp
> include/duckdb/function/table/list.hpp
> include/duckdb/function/table/range.hpp
> include/duckdb/function/table/read_csv.hpp
> +include/duckdb/function/table/read_file.hpp
> include/duckdb/function/table/summary.hpp
> include/duckdb/function/table/system_functions.hpp
> include/duckdb/function/table/table_scan.hpp
> @@ -707,16 +750,19 @@ include/duckdb/main/connection.hpp
> include/duckdb/main/connection_manager.hpp
> include/duckdb/main/database.hpp
> include/duckdb/main/database_file_opener.hpp
> +include/duckdb/main/database_file_path_manager.hpp
> include/duckdb/main/database_manager.hpp
> include/duckdb/main/database_path_and_type.hpp
> include/duckdb/main/db_instance_cache.hpp
> include/duckdb/main/error_manager.hpp
> include/duckdb/main/extension/
> include/duckdb/main/extension.hpp
> +include/duckdb/main/extension/extension_loader.hpp
> include/duckdb/main/extension/generated_extension_loader.hpp
> include/duckdb/main/extension_entries.hpp
> include/duckdb/main/extension_helper.hpp
> include/duckdb/main/extension_install_info.hpp
> +include/duckdb/main/extension_manager.hpp
> include/duckdb/main/extension_util.hpp
> include/duckdb/main/external_dependencies.hpp
> include/duckdb/main/materialized_query_result.hpp
> @@ -761,6 +807,7 @@ include/duckdb/main/secret/default_secrets.hpp
> include/duckdb/main/secret/secret.hpp
> include/duckdb/main/secret/secret_manager.hpp
> include/duckdb/main/secret/secret_storage.hpp
> +include/duckdb/main/setting_info.hpp
> include/duckdb/main/settings.hpp
> include/duckdb/main/stream_query_result.hpp
> include/duckdb/main/table_description.hpp
> @@ -773,6 +820,7 @@ include/duckdb/optimizer/common_aggregate_optimizer.hp
> include/duckdb/optimizer/compressed_materialization.hpp
> include/duckdb/optimizer/cse_optimizer.hpp
> include/duckdb/optimizer/cte_filter_pusher.hpp
> +include/duckdb/optimizer/cte_inlining.hpp
> include/duckdb/optimizer/deliminator.hpp
> include/duckdb/optimizer/empty_result_pullup.hpp
> include/duckdb/optimizer/expression_heuristics.hpp
> @@ -816,6 +864,7 @@ include/duckdb/optimizer/rule/comparison_simplificatio
> include/duckdb/optimizer/rule/conjunction_simplification.hpp
> include/duckdb/optimizer/rule/constant_folding.hpp
> include/duckdb/optimizer/rule/date_part_simplification.hpp
> +include/duckdb/optimizer/rule/date_trunc_simplification.hpp
> include/duckdb/optimizer/rule/distinct_aggregate_optimizer.hpp
> include/duckdb/optimizer/rule/distributivity.hpp
> include/duckdb/optimizer/rule/empty_needle_removal.hpp
> @@ -970,6 +1019,7 @@ include/duckdb/parser/statement/insert_statement.hpp
> include/duckdb/parser/statement/list.hpp
> include/duckdb/parser/statement/load_statement.hpp
> include/duckdb/parser/statement/logical_plan_statement.hpp
> +include/duckdb/parser/statement/merge_into_statement.hpp
> include/duckdb/parser/statement/multi_statement.hpp
> include/duckdb/parser/statement/pragma_statement.hpp
> include/duckdb/parser/statement/prepare_statement.hpp
> @@ -984,6 +1034,7 @@ include/duckdb/parser/tableref/
> include/duckdb/parser/tableref.hpp
> include/duckdb/parser/tableref/at_clause.hpp
> include/duckdb/parser/tableref/basetableref.hpp
> +include/duckdb/parser/tableref/bound_ref_wrapper.hpp
> include/duckdb/parser/tableref/column_data_ref.hpp
> include/duckdb/parser/tableref/delimgetref.hpp
> include/duckdb/parser/tableref/emptytableref.hpp
> @@ -1053,6 +1104,7 @@ include/duckdb/planner/expression_binder/index_binder.
> include/duckdb/planner/expression_binder/insert_binder.hpp
> include/duckdb/planner/expression_binder/lateral_binder.hpp
> include/duckdb/planner/expression_binder/order_binder.hpp
> +include/duckdb/planner/expression_binder/projection_binder.hpp
> include/duckdb/planner/expression_binder/qualify_binder.hpp
> include/duckdb/planner/expression_binder/relation_binder.hpp
> include/duckdb/planner/expression_binder/returning_binder.hpp
> @@ -1075,6 +1127,7 @@ include/duckdb/planner/filter/optional_filter.hpp
> include/duckdb/planner/filter/struct_filter.hpp
> include/duckdb/planner/joinside.hpp
> include/duckdb/planner/logical_operator.hpp
> +include/duckdb/planner/logical_operator_deep_copy.hpp
> include/duckdb/planner/logical_operator_visitor.hpp
> include/duckdb/planner/logical_tokens.hpp
> include/duckdb/planner/operator/
> @@ -1109,6 +1162,7 @@ include/duckdb/planner/operator/logical_insert.hpp
> include/duckdb/planner/operator/logical_join.hpp
> include/duckdb/planner/operator/logical_limit.hpp
> include/duckdb/planner/operator/logical_materialized_cte.hpp
> +include/duckdb/planner/operator/logical_merge_into.hpp
> include/duckdb/planner/operator/logical_order.hpp
> include/duckdb/planner/operator/logical_pivot.hpp
> include/duckdb/planner/operator/logical_positional_join.hpp
> @@ -1158,7 +1212,6 @@ include/duckdb/planner/tableref/bound_dummytableref.hp
> include/duckdb/planner/tableref/bound_expressionlistref.hpp
> include/duckdb/planner/tableref/bound_joinref.hpp
> include/duckdb/planner/tableref/bound_pivotref.hpp
> -include/duckdb/planner/tableref/bound_pos_join_ref.hpp
> include/duckdb/planner/tableref/bound_subqueryref.hpp
> include/duckdb/planner/tableref/bound_table_function.hpp
> include/duckdb/planner/tableref/list.hpp
> @@ -1290,11 +1343,13 @@ include/duckdb/storage/table/column_segment.hpp
> include/duckdb/storage/table/column_segment_tree.hpp
> include/duckdb/storage/table/data_table_info.hpp
> include/duckdb/storage/table/delete_state.hpp
> +include/duckdb/storage/table/in_memory_checkpoint.hpp
> include/duckdb/storage/table/list_column_data.hpp
> include/duckdb/storage/table/persistent_table_data.hpp
> include/duckdb/storage/table/row_group.hpp
> include/duckdb/storage/table/row_group_collection.hpp
> include/duckdb/storage/table/row_group_segment_tree.hpp
> +include/duckdb/storage/table/row_id_column_data.hpp
> include/duckdb/storage/table/row_version_manager.hpp
> include/duckdb/storage/table/scan_state.hpp
> include/duckdb/storage/table/segment_base.hpp
> @@ -1333,6 +1388,7 @@ include/duckdb/transaction/wal_write_state.hpp
> include/duckdb/verification/
> include/duckdb/verification/copied_statement_verifier.hpp
> include/duckdb/verification/deserialized_statement_verifier.hpp
> +include/duckdb/verification/explain_statement_verifier.hpp
> include/duckdb/verification/external_statement_verifier.hpp
> include/duckdb/verification/fetch_row_verifier.hpp
> include/duckdb/verification/no_operator_caching_verifier.hpp

Re: NEW sysutils/py-shtab

On 2025/12/24 15:17, Bjorn Ketelaars wrote:
> Include a port of py-shtab-1.8.0, which I would like to import. It is
> needed as dependency for an update of borgbackup.
>
> DESCR:
> Automagic shell tab completion for Python CLI applications.
>
> HOMEPAGE:
> https://github.com/iterative/shtab
>
> I will be MAINTAINER.
>
> OK for importing this?

ok.

is it worth adding a little more to DESCR?

Automagic shell tab completion for Python CLI applications, supporting
argparse and docopt, and able to output tab completion scripts for bash,
zsh and tcsh.

OpenNTPD behaviour with sensors

Hi,

I have a couple of small machines (Soekris 6501 and 5501) that I use as
NTP server in the NTP pool.
When I use a sensor as the only source of time (Garmin 18lvc on the serial
port or Meinberg PZF180PEX DCF77 receiver card), the offset is quite good:
nearly allways below 20 us, most of the time below 5 us and sometimes even
less than 1 us.
But when I add another server (mainly as backup in case the sensor doen't
work), the offset drifts away to 1 or 2 ms. I tried with 1 sensor and
1 server, with 1 sensor and multiple servers, I tried adding weight 5 or 10
to the sensor, but this doesn't seem to have any effect. In all cases ntpd
stays synchronised to the sensor (with poll=15s), but after an hour or so
after starting ntpd the offset starts to increase. And from that moment, the
offset wanders between roughly -2 and +2 ms.
It almost seems as if ntpd is synchronised with one of the servers (with
much higher polling interval), however ntpctl still shows that it is
synchronised to the sensor (albeit with the wandering offset as described
above).

I would prefer to have the microsecond offset _and_ some servers as backup,
but can't get it working like that.

Am I missing something? Or is this a bug in ntpd?

Thanks for any help.

Re: [update] x11/dunst to 1.13.0

will commit; btw if pinging on an old mail it's always helpful to include
a clean copy of the patch

On 2025/12/28 20:13, Timo Myyrä wrote:
> On Fri, Aug 22 2025, Alvar Penning wrote:
>
> > Sorry for the late reply. I have diffed the diffs - looked fine - and
> > actually tested a new built based on Timo's diff. OK for me.
> >
> > On Mon Aug 18, 2025 at 7:48 PM CEST, Stuart Henderson wrote:
> >> that looks good to me (not tested)
> >>
> >> On 2025/08/17 10:45, Timo Myyrä wrote:
> >>> On Sat, Aug 16 2025, Stuart Henderson wrote:
> >>>
> >>> > On 2025/08/16 10:49, Timo Myyrä wrote:
> >>> >> The update itself seems require a bit more work though. I looked at
> >>> >> updating the port and got it further along but plist changes require a
> >>> >> bit more work still. The config file location changed but the
> >>> >> update-plist gives:
> >>> >>
> >>> >> Stripping directories from devel/pcre2
> >>> >> Can't put into any plist (no applicable prefix):
> >>> >> /etc/xdg
> >>> >> /etc/xdg/dunst
> >>> >> /etc/xdg/dunst/dunstrc
> >>> >
> >>> > /etc/xdg wasn't in Alvar's diff (and I'm not sure we really want that
> >>> > for OpenBSD, especially as we were using /etc/dunst before, so users
> >>> > will need to fiddle with config file locations when updating).
> >>> >
> >>> > In general you can handle this sort of file with
> >>> >
> >>> > FAKE_FLAGS = SYSCONFDIR="${PREFIX}/share/examples"
> >>> >
> >>> > or similar.
> >>>
> >>> How about this diff. It moves the uses the MAKE_FLAGS so dunst build
> >>> notices the directories correctly and keeps using the existing
> >>> /etc/dunst directory for configuration.
> >>> I modified the dunst(1) man page to be a bit more precise about config
> >>> locations.
> >>>
> >>> Timo
> >>>
> >>>
> >>> diff /usr/ports
> >>> path + /usr/ports
> >>> commit - d15b1715c17a7ed962c100c7378886f137431496
> >>> blob - 03413c0556d75dcb7b0f9e21e63d90be96646ce2
> >>> file + x11/dunst/Makefile
> >>> --- x11/dunst/Makefile
> >>> +++ x11/dunst/Makefile
> >>> @@ -2,7 +2,7 @@ COMMENT = customizable and lightweight notification-da
> >>>
> >>> GH_ACCOUNT = dunst-project
> >>> GH_PROJECT = dunst
> >>> -GH_TAGNAME = v1.12.2
> >>> +GH_TAGNAME = v1.13.0
> >>>
> >>> CATEGORIES = x11
> >>>
> >>> @@ -38,21 +38,20 @@ RUN_DEPENDS += x11/dbus
> >>>
> >>> TEST_DEPENDS = shells/bash
> >>>
> >>> -MAKE_FLAGS = WAYLAND=0
> >>> -
> >>> -FAKE_FLAGS = PREFIX="${PREFIX}" \
> >>> +MAKE_FLAGS = PREFIX="${PREFIX}" \
> >>> MANPREFIX="${PREFIX}/man" \
> >>> DATADIR="${PREFIX}/share/examples" \
> >>> - SYSCONFDIR="/etc"
> >>> + SYSCONFDIR="/etc" \
> >>> + BASHCOMPLETIONDIR="${LOCALBASE}/share/bash-completion/completions" \
> >>> + FISHCOMPLETIONDIR="${LOCALBASE}/share/fish/vendor_completions.d" \
> >>> + ZSHCOMPLETIONDIR="${LOCALBASE}/share/zsh/site-functions" \
> >>> + WAYLAND=0
> >>>
> >>> pre-configure:
> >>> - ${SUBST_CMD} ${WRKSRC}/docs/dunst.1.pod \
> >>> + ${SUBST_CMD} ${WRKSRC}/docs/dunst.1.pod.in \
> >>> ${WRKSRC}/docs/dunst.5.pod ${WRKSRC}/dunstrc
> >>>
> >>> post-install:
> >>> mv ${WRKINST}/${SYSCONFDIR}/dunst ${PREFIX}/share
> >>> - mv ${PREFIX}/share/examples/bash-completion ${PREFIX}/share/bash-completion
> >>> - mv ${PREFIX}/share/examples/fish ${PREFIX}/share/fish
> >>> - mv ${PREFIX}/share/examples/zsh ${PREFIX}/share/zsh
> >>>
> >>> .include <bsd.port.mk>
> >>> commit - d15b1715c17a7ed962c100c7378886f137431496
> >>> blob - 131aa727da1cbfa0d084ec96bfd924c670b02181
> >>> file + x11/dunst/distinfo
> >>> --- x11/dunst/distinfo
> >>> +++ x11/dunst/distinfo
> >>> @@ -1,2 +1,2 @@
> >>> -SHA256 (dunst-1.12.2.tar.gz) = j3ZkvU5gg+lgTighRf5bje52VfoLCZpbaColSeHzPTI=
> >>> -SIZE (dunst-1.12.2.tar.gz) = 4657260
> >>> +SHA256 (dunst-1.13.0.tar.gz) = eooYE5d61ZQUiMZrkUUBcD/A9uEuYx3BhQatYXJC56A=
> >>> +SIZE (dunst-1.13.0.tar.gz) = 4664717
> >>> commit - d15b1715c17a7ed962c100c7378886f137431496
> >>> blob - c010fc861b3ee52d84698142af92a707ff79b54b
> >>> file + x11/dunst/patches/patch-config_mk
> >>> --- x11/dunst/patches/patch-config_mk
> >>> +++ x11/dunst/patches/patch-config_mk
> >>> @@ -10,5 +10,5 @@ Index: config.mk
> >>> +DEFAULT_CFLAGS = -g -std=gnu11 -pedantic -Wall -Wno-overlength-strings ${EXTRA_CFLAGS}
> >>> +DEFAULT_LDFLAGS = -lm
> >>>
> >>> - CPPFLAGS_DEBUG := -DDEBUG_BUILD
> >>> + CPPFLAGS_DEBUG :=
> >>> CFLAGS_DEBUG := -O0
> >>> commit - d15b1715c17a7ed962c100c7378886f137431496
> >>> blob - f78cc4119e33c2fc7c030b7e912506e84010c35f
> >>> file + /dev/null
> >>> --- x11/dunst/patches/patch-docs_dunst_1_pod
> >>> +++ /dev/null
> >>> @@ -1,12 +0,0 @@
> >>> -Index: docs/dunst.1.pod
> >>> ---- docs/dunst.1.pod.orig
> >>> -+++ docs/dunst.1.pod
> >>> -@@ -94,7 +94,7 @@ Set notification timeout time.
> >>> -
> >>> - A default configuration file is included (usually ##SYSCONFDIR##/dunst/dunstrc)
> >>> - and serves as the least important configuration file. Note: this was previously
> >>> --/usr/share/dunst/dunstrc. You can edit this file to change the system-wide
> >>> -+${PREFIX}/share/dunst/dunstrc. You can edit this file to change the system-wide
> >>> - defaults or copy it to a more important location to override its settings. See
> >>> - the FILES section for more details on where dunst searches for its
> >>> - configuration files and how settings get applied.
> >>> commit - d15b1715c17a7ed962c100c7378886f137431496
> >>> blob - /dev/null
> >>> file + x11/dunst/patches/patch-docs_dunst_1_pod_in (mode 644)
> >>> --- /dev/null
> >>> +++ x11/dunst/patches/patch-docs_dunst_1_pod_in
> >>> @@ -0,0 +1,16 @@
> >>> +Index: docs/dunst.1.pod.in
> >>> +--- docs/dunst.1.pod.in.orig
> >>> ++++ docs/dunst.1.pod.in
> >>> +@@ -92,9 +92,9 @@ Set notification timeout time.
> >>> +
> >>> + =head1 CONFIGURATION
> >>> +
> >>> +-A default configuration file is included (usually @sysconfdir@/dunst/dunstrc)
> >>> +-and serves as the least important configuration file. Note: this was previously
> >>> +-/usr/share/dunst/dunstrc. You can edit this file to change the system-wide
> >>> ++A default configuration file is @sysconfdir@/dunst/dunstrc
> >>> ++and serves as the least important configuration file. Note: a sample config is provided in
> >>> ++${LOCALBASE}/dunst/dunstrc. You can edit this file to change the system-wide
> >>> + defaults or copy it to a more important location to override its settings. See
> >>> + the FILES section for more details on where dunst searches for its
> >>> + configuration files and how settings get applied.
> >>> commit - d15b1715c17a7ed962c100c7378886f137431496
> >>> blob - df6ae772052695068470a7127efdd6100f02de1c
> >>> file + x11/dunst/patches/patch-docs_dunst_5_pod
> >>> --- x11/dunst/patches/patch-docs_dunst_5_pod
> >>> +++ x11/dunst/patches/patch-docs_dunst_5_pod
> >>> @@ -1,25 +1,25 @@
> >>> Index: docs/dunst.5.pod
> >>> --- docs/dunst.5.pod.orig
> >>> +++ docs/dunst.5.pod
> >>> -@@ -463,7 +463,7 @@ Hide the count of stacked duplicate notifications.
> >>> +@@ -475,7 +475,7 @@ Hide the count of stacked duplicate notifications.
> >>> Show an indicator if a notification contains actions and/or open-able URLs. See
> >>> ACTIONS below for further details.
> >>>
> >>> -=item B<icon_path> (default: "/usr/share/icons/gnome/16x16/status/:/usr/share/icons/gnome/16x16/devices/")
> >>> -+=item B<icon_path> (default: "${PREFIX}/share/icons/gnome/16x16/status/:${PREFIX}/share/icons/gnome/16x16/devices/")
> >>> ++=item B<icon_path> (default: "${LOCALBASE}/share/icons/gnome/16x16/status/:${LOCALBASE}/share/icons/gnome/16x16/devices/")
> >>>
> >>> Can be set to a colon-separated list of paths to search for icons to use with
> >>> notifications.
> >>> -@@ -477,7 +477,7 @@ replace icon_path search.
> >>> +@@ -489,7 +489,7 @@ replace icon_path search.
> >>> Comma-separated list of names of the themes to use for looking up icons. This
> >>> has to be the name of the directory in which the theme is located, not the
> >>> human-friendly name of the theme. So for example, the theme B<Breeze Dark> is
> >>> -located in F</usr/share/icons/breeze-dark>. In this case you have to set the
> >>> -+located in F<${PREFIX}/share/icons/breeze-dark>. In this case you have to set the
> >>> ++located in F<${LOCALBASE}/share/icons/breeze-dark>. In this case you have to set the
> >>> theme to B<breeze-dark>.
> >>>
> >>> The first theme in the list is the most important. Only if the icon cannot be
> >>> -@@ -515,12 +515,12 @@ Maximum number of notifications that will be kept in h
> >>> +@@ -527,12 +527,12 @@ Maximum number of notifications that will be kept in h
> >>> is reached, older notifications will be deleted once a new one arrives. See
> >>> HISTORY.
> >>>
> >>> commit - d15b1715c17a7ed962c100c7378886f137431496
> >>> blob - 74ca9bd6eede4f02dfe4a073d19b9bafe68a6f48
> >>> file + x11/dunst/patches/patch-dunstrc
> >>> --- x11/dunst/patches/patch-dunstrc
> >>> +++ x11/dunst/patches/patch-dunstrc
> >>> @@ -1,7 +1,7 @@
> >>> Index: dunstrc
> >>> --- dunstrc.orig
> >>> +++ dunstrc
> >>> -@@ -238,7 +238,7 @@
> >>> +@@ -240,7 +240,7 @@
> >>> max_icon_size = 128
> >>>
> >>> # Paths to default icons (only necessary when not using recursive icon lookup)
> >>> @@ -10,7 +10,7 @@ Index: dunstrc
> >>>
> >>> ### History ###
> >>>
> >>> -@@ -252,10 +252,10 @@
> >>> +@@ -254,10 +254,10 @@
> >>> ### Misc/Advanced ###
> >>>
> >>> # dmenu path.
>
> Pretty delayed ping,
> Is this good to go in?
>
> Timo

Re: Upgrade net/syncthing to v2

Got it. Now the usage report is disabled on first run.

- If you ever decide to enable it, you can — I just tested it.
- If you ever set it to "Undecided", it will reset to "Disabled" after a page reload; but I think that's fine, since it can't open that modal anymore.

But now I do wonder: what if the package user doesn't ever use the GUI to manage it? Syncthing has a CLI interface too.


Index: Makefile
===================================================================
RCS file: /cvs/ports/net/syncthing/Makefile,v
diff -u -p -u -p -r1.73 Makefile
--- Makefile 22 Jul 2025 20:20:25 -0000 1.73
+++ Makefile 31 Dec 2025 14:01:51 -0000
@@ -1,6 +1,6 @@
COMMENT = open decentralized synchronization utility

-V = 1.30.0
+V = 2.0.12
DISTNAME = syncthing-${V}
DISTFILES = syncthing-source-v${V}${EXTRACT_SUFX}

@@ -22,7 +22,6 @@ WRKDIST = ${WRKDIR}/syncthing
WRKSRC = ${WRKDIR}/go/src/github.com/syncthing/syncthing

MODULES = lang/go
-MODGO_TYPE = bin

# Syncthing contains a lot of stuff that end users wouldn't be interested in,
# so we package only these binaries.
Index: distinfo
===================================================================
RCS file: /cvs/ports/net/syncthing/distinfo,v
diff -u -p -u -p -r1.50 distinfo
--- distinfo 4 Jul 2025 19:19:39 -0000 1.50
+++ distinfo 31 Dec 2025 14:01:51 -0000
@@ -1,2 +1,2 @@
-SHA256 (syncthing-source-v1.30.0.tar.gz) = 7xvnHGZ1PAQhKrHJxUjmeNRoutmNxUYeg1QKTvXC/Lo=
-SIZE (syncthing-source-v1.30.0.tar.gz) = 16142834
+SHA256 (syncthing-source-v2.0.12.tar.gz) = VgBK5tl0qjh8PGpzTrmKr9XWFZ/GV6H0xhjgsYFPra4=
+SIZE (syncthing-source-v2.0.12.tar.gz) = 62613260
Index: patches/patch-build_go
===================================================================
RCS file: /cvs/ports/net/syncthing/patches/patch-build_go,v
diff -u -p -u -p -r1.24 patch-build_go
--- patches/patch-build_go 4 Jun 2025 20:07:43 -0000 1.24
+++ patches/patch-build_go 31 Dec 2025 14:01:51 -0000
@@ -3,7 +3,7 @@ Print build commands
Index: build.go
--- build.go.orig
+++ build.go
-@@ -549,7 +549,7 @@ func appendParameters(args []string, tags []string, pk
+@@ -532,7 +532,7 @@ func appendParameters(args []string, tags []string, pk

if !debugBinary {
// Regular binaries get version tagged and skip some debug symbols
Index: patches/patch-cmd_syncthing_main_go
===================================================================
RCS file: /cvs/ports/net/syncthing/patches/patch-cmd_syncthing_main_go,v
diff -u -p -u -p -r1.3 patch-cmd_syncthing_main_go
--- patches/patch-cmd_syncthing_main_go 15 Jun 2025 16:42:21 -0000 1.3
+++ patches/patch-cmd_syncthing_main_go 31 Dec 2025 14:01:51 -0000
@@ -5,8 +5,8 @@ use unveil(2) to limit execution to
Index: cmd/syncthing/main.go
--- cmd/syncthing/main.go.orig
+++ cmd/syncthing/main.go
-@@ -29,6 +29,8 @@ import (
- "syscall"
+@@ -31,6 +31,8 @@ import (
+ "text/tabwriter"
"time"

+ "golang.org/x/sys/unix"
@@ -14,23 +14,28 @@ Index: cmd/syncthing/main.go
"github.com/alecthomas/kong"
"github.com/gofrs/flock"
"github.com/thejerf/suture/v4"
-@@ -206,6 +208,19 @@ func defaultVars() kong.Vars {
- }
-
+@@ -213,6 +215,24 @@ func defaultVars() kong.Vars {
func main() {
+ // Create a parser with an overridden help function to print our extra
+ // help info.
++
+ if err := unix.Unveil("/", "rwc"); err != nil {
+ panic(err)
+ }
++
+ if err := unix.Unveil("/usr/local/bin/syncthing", "rx"); err != nil {
+ panic(err)
+ }
++
+ if err := unix.Unveil("/usr/local/bin/xdg-open", "rx"); err != nil {
+ panic(err)
+ }
++
+ if err := unix.UnveilBlock(); err != nil {
+ panic(err)
+ }
+
- // First some massaging of the raw command line to fit the new model.
- // Basically this means adding the default command at the front, and
- // converting -options to --options.
++
+ var entrypoint CLI
+ parser, err := kong.New(
+ &entrypoint,
Index: patches/patch-gui_default_syncthing_core_syncthingController_js
===================================================================
RCS file: patches/patch-gui_default_syncthing_core_syncthingController_js
diff -N patches/patch-gui_default_syncthing_core_syncthingController_js
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-gui_default_syncthing_core_syncthingController_js 31 Dec 2025 14:01:51 -0000
@@ -0,0 +1,46 @@
+Disable nag screen for telemetry.
+
+Index: gui/default/syncthing/core/syncthingController.js
+--- gui/default/syncthing/core/syncthingController.js.orig
++++ gui/default/syncthing/core/syncthingController.js
+@@ -187,15 +187,6 @@ angular.module('syncthing.core')
+ $scope.version = data;
+ }).error($scope.emitHTTPError);
+
+- if ($scope.system && $scope.config.options.urAccepted > -1 && $scope.config.options.urSeen < $scope.system.urVersionMax && $scope.config.options.urAccepted < $scope.system.urVersionMax) {
+- // Usage reporting decision has not been taken or format
+- // has changed, prompt the user to (re-)accept.
+- $http.get(urlbase + '/svc/report').success(function (data) {
+- $scope.reportData = data;
+- showModal('#ur');
+- }).error($scope.emitHTTPError);
+- }
+-
+ $http.get(urlbase + '/system/upgrade').success(function (data) {
+ $scope.upgradeInfo = data;
+ }).error(function () {
+@@ -370,21 +361,9 @@ angular.module('syncthing.core')
+
+ $scope.$on('ConfigLoaded', function () {
+ if ($scope.config.options.urAccepted === 0) {
+- // If usage reporting has been neither accepted nor declined,
+- // we want to ask the user to make a choice. But we don't want
+- // to bug them during initial setup, so we set a cookie with
+- // the time of the first visit. When that cookie is present
+- // and the time is more than four hours ago, we ask the
+- // question.
+-
+- var firstVisit = document.cookie.replace(/(?:(?:^|.*;\s*)firstVisit\s*\=\s*([^;]*).*$)|^.*$/, "$1");
+- if (!firstVisit) {
+- document.cookie = "firstVisit=" + Date.now() + ";max-age=" + 30 * 24 * 3600;
+- } else {
+- if (+firstVisit < Date.now() - 4 * 3600 * 1000) {
+- showModal('#ur');
+- }
+- }
++ $scope.config.options.urAccepted = -1;
++ $scope.config.options.urSeen = $scope.system.urVersionMax;
++ $scope.saveConfig();
+ }
+ });
+
Index: patches/patch-internal_db_interface_go
===================================================================
RCS file: patches/patch-internal_db_interface_go
diff -N patches/patch-internal_db_interface_go
--- /dev/null 1 Jan 1970 00:00:00 -0000
+++ patches/patch-internal_db_interface_go 31 Dec 2025 14:01:51 -0000
@@ -0,0 +1,20 @@
+Remove canonical import path that prevents successful build.
+
+This has been fixed upstream [1] and, when released, will
+make this patch obsolete.
+
+[1] https://github.com/syncthing/syncthing/commit/1843cac6d9cb1e3c8b7dd96e5ec4fcb28f554275
+
+
+Index: internal/db/interface.go
+--- internal/db/interface.go.orig
++++ internal/db/interface.go
+@@ -4,7 +4,7 @@
+ // License, v. 2.0. If a copy of the MPL was not distributed with this file,
+ // You can obtain one at https://mozilla.org/MPL/2.0/.
+
+-package db // import "github.com/syncthing/syncthing/internal/db/sqlite"
++package db
+
+ import (
+ "iter"
Index: patches/patch-lib_build_build_go
===================================================================
RCS file: /cvs/ports/net/syncthing/patches/patch-lib_build_build_go,v
diff -u -p -u -p -r1.4 patch-lib_build_build_go
--- patches/patch-lib_build_build_go 28 Nov 2024 11:47:47 -0000 1.4
+++ patches/patch-lib_build_build_go 31 Dec 2025 14:01:51 -0000
@@ -3,7 +3,7 @@ Disable phone-home calls / anonymous usa
Index: lib/build/build.go
--- lib/build/build.go.orig
+++ lib/build/build.go
-@@ -74,7 +74,7 @@ func setBuildData() {
+@@ -83,7 +83,7 @@ func setBuildData() {

exp := regexp.MustCompile(`^v\d+\.\d+\.\d+(-[a-z]+[\d\.]+)?$`)
IsRelease = exp.MatchString(Version)
Index: pkg/README
===================================================================
RCS file: /cvs/ports/net/syncthing/pkg/README,v
diff -u -p -u -p -r1.8 README
--- pkg/README 16 Feb 2024 15:09:13 -0000 1.8
+++ pkg/README 31 Dec 2025 14:01:51 -0000
@@ -21,8 +21,8 @@ Starting via RC script

Syncthing can be started via the included RC script, thus running
Syncthing as a system service. This is fine for single user
-configurations. Under this mode of operation, Syncthing will run as the
-_syncthing user and store the default 'Sync' folder under
+configurations. Under this mode of operation, Syncthing runs as the
+_syncthing user, and the default location for folders is
${LOCALSTATEDIR}/syncthing.

Starting Manually
@@ -31,7 +31,7 @@ Starting Manually
The other way is to simply invoke ${TRUEPREFIX}/bin/syncthing manually.
This is a better choice for situations where several users all want to
run their own instances of Syncthing. Under this mode, the default
-'Sync' folder will be stored in the user's home directory. Users will
+location for folders is the user's home directory. Users will
have to configure Syncthing to listen on different TCP ports for this
method to work.

Index: pkg/syncthing.rc
===================================================================
RCS file: /cvs/ports/net/syncthing/pkg/syncthing.rc,v
diff -u -p -u -p -r1.6 syncthing.rc
--- pkg/syncthing.rc 11 Mar 2022 19:47:38 -0000 1.6
+++ pkg/syncthing.rc 31 Dec 2025 14:01:51 -0000
@@ -1,7 +1,7 @@
#!/bin/ksh

daemon="${TRUEPREFIX}/bin/syncthing"
-daemon_flags="-no-browser"
+daemon_flags="--no-browser"
daemon_user="_syncthing"

. /etc/rc.d/rc.subr




On Wednesday, December 31st, 2025 at 00:29, Douglas Silva <doug.hs@proton.me> wrote:

>
>
>
>
> There was another piece of code triggering the telemetry modal, so I removed it too. Now it doesn't show up anymore.
>
> But if you go to Settings and look for the "Anonymous Usage Reporting", it's now set to "Undecided (will prompt)" by default. We need to set it to "Disabled", somehow.
>
> In the same file there is a function defined as '$scope.declineUR', which seems to be what we need. I'm going to experiment with that tomorrow.
>
>
> Index: Makefile
> ===================================================================
> RCS file: /cvs/ports/net/syncthing/Makefile,v
> diff -u -p -u -p -r1.73 Makefile
> --- Makefile 22 Jul 2025 20:20:25 -0000 1.73
> +++ Makefile 31 Dec 2025 03:14:19 -0000
> @@ -1,6 +1,6 @@
> COMMENT = open decentralized synchronization utility
>
> -V = 1.30.0
> +V = 2.0.12
> DISTNAME = syncthing-${V}
> DISTFILES = syncthing-source-v${V}${EXTRACT_SUFX}
>
> @@ -22,7 +22,6 @@ WRKDIST = ${WRKDIR}/syncthing
> WRKSRC = ${WRKDIR}/go/src/github.com/syncthing/syncthing
>
> MODULES = lang/go
> -MODGO_TYPE = bin
>
> # Syncthing contains a lot of stuff that end users wouldn't be interested in,
> # so we package only these binaries.
> Index: distinfo
> ===================================================================
> RCS file: /cvs/ports/net/syncthing/distinfo,v
> diff -u -p -u -p -r1.50 distinfo
> --- distinfo 4 Jul 2025 19:19:39 -0000 1.50
> +++ distinfo 31 Dec 2025 03:14:19 -0000
> @@ -1,2 +1,2 @@
> -SHA256 (syncthing-source-v1.30.0.tar.gz) = 7xvnHGZ1PAQhKrHJxUjmeNRoutmNxUYeg1QKTvXC/Lo=
> -SIZE (syncthing-source-v1.30.0.tar.gz) = 16142834
> +SHA256 (syncthing-source-v2.0.12.tar.gz) = VgBK5tl0qjh8PGpzTrmKr9XWFZ/GV6H0xhjgsYFPra4=
> +SIZE (syncthing-source-v2.0.12.tar.gz) = 62613260
> Index: patches/patch-build_go
> ===================================================================
> RCS file: /cvs/ports/net/syncthing/patches/patch-build_go,v
> diff -u -p -u -p -r1.24 patch-build_go
> --- patches/patch-build_go 4 Jun 2025 20:07:43 -0000 1.24
> +++ patches/patch-build_go 31 Dec 2025 03:14:19 -0000
> @@ -3,7 +3,7 @@ Print build commands
> Index: build.go
> --- build.go.orig
> +++ build.go
> -@@ -549,7 +549,7 @@ func appendParameters(args []string, tags []string, pk
> +@@ -532,7 +532,7 @@ func appendParameters(args []string, tags []string, pk
>
> if !debugBinary {
> // Regular binaries get version tagged and skip some debug symbols
> Index: patches/patch-cmd_syncthing_main_go
> ===================================================================
> RCS file: /cvs/ports/net/syncthing/patches/patch-cmd_syncthing_main_go,v
> diff -u -p -u -p -r1.3 patch-cmd_syncthing_main_go
> --- patches/patch-cmd_syncthing_main_go 15 Jun 2025 16:42:21 -0000 1.3
> +++ patches/patch-cmd_syncthing_main_go 31 Dec 2025 03:14:19 -0000
> @@ -5,8 +5,8 @@ use unveil(2) to limit execution to
> Index: cmd/syncthing/main.go
> --- cmd/syncthing/main.go.orig
> +++ cmd/syncthing/main.go
> -@@ -29,6 +29,8 @@ import (
> - "syscall"
> +@@ -31,6 +31,8 @@ import (
> + "text/tabwriter"
> "time"
>
> + "golang.org/x/sys/unix"
> @@ -14,23 +14,28 @@ Index: cmd/syncthing/main.go
> "github.com/alecthomas/kong"
> "github.com/gofrs/flock"
> "github.com/thejerf/suture/v4"
> -@@ -206,6 +208,19 @@ func defaultVars() kong.Vars {
> - }
> -
> +@@ -213,6 +215,24 @@ func defaultVars() kong.Vars {
> func main() {
> + // Create a parser with an overridden help function to print our extra
> + // help info.
> ++
> + if err := unix.Unveil("/", "rwc"); err != nil {
> + panic(err)
> + }
> ++
> + if err := unix.Unveil("/usr/local/bin/syncthing", "rx"); err != nil {
> + panic(err)
> + }
> ++
> + if err := unix.Unveil("/usr/local/bin/xdg-open", "rx"); err != nil {
> + panic(err)
> + }
> ++
> + if err := unix.UnveilBlock(); err != nil {
> + panic(err)
> + }
> +
> - // First some massaging of the raw command line to fit the new model.
> - // Basically this means adding the default command at the front, and
> - // converting -options to --options.
> ++
> + var entrypoint CLI
> + parser, err := kong.New(
> + &entrypoint,
> Index: patches/patch-gui_default_syncthing_core_syncthingController_js
> ===================================================================
> RCS file: patches/patch-gui_default_syncthing_core_syncthingController_js
> diff -N patches/patch-gui_default_syncthing_core_syncthingController_js
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-gui_default_syncthing_core_syncthingController_js 31 Dec 2025 03:14:19 -0000
> @@ -0,0 +1,48 @@
> +Disable nag screen for telemetry.
> +
> +Index: gui/default/syncthing/core/syncthingController.js
> +--- gui/default/syncthing/core/syncthingController.js.orig
> ++++ gui/default/syncthing/core/syncthingController.js
> +@@ -187,15 +187,6 @@ angular.module('syncthing.core')
> + $scope.version = data;
> + }).error($scope.emitHTTPError);
> +
> +- if ($scope.system && $scope.config.options.urAccepted > -1 && $scope.config.options.urSeen < $scope.system.urVersionMax && $scope.config.options.urAccepted < $scope.system.urVersionMax) {
>
> +- // Usage reporting decision has not been taken or format
> +- // has changed, prompt the user to (re-)accept.
> +- $http.get(urlbase + '/svc/report').success(function (data) {
> +- $scope.reportData = data;
> +- showModal('#ur');
> +- }).error($scope.emitHTTPError);
> +- }
> +-
> + $http.get(urlbase + '/system/upgrade').success(function (data) {
> + $scope.upgradeInfo = data;
> + }).error(function () {
> +@@ -365,26 +356,6 @@ angular.module('syncthing.core')
> + delete $scope.pendingFolders[folderDev.folderID].offeredBy[folderDev.deviceID];
> + }
> + });
> + }
> + });
> +-
> +- $scope.$on('ConfigLoaded', function () {
> +- if ($scope.config.options.urAccepted === 0) {
> +- // If usage reporting has been neither accepted nor declined,
> +- // we want to ask the user to make a choice. But we don't want
> +- // to bug them during initial setup, so we set a cookie with
> +- // the time of the first visit. When that cookie is present
> +- // and the time is more than four hours ago, we ask the
> +- // question.
> +-
> +- var firstVisit = document.cookie.replace(/(?:(?:^|.;\s)firstVisit\s*\=\s*([^;]).$)|^.*$/, "$1");
> +- if (!firstVisit) {
> +- document.cookie = "firstVisit=" + Date.now() + ";max-age=" + 30 * 24 * 3600;
> +- } else {
> +- if (+firstVisit < Date.now() - 4 * 3600 * 1000) {
> +- showModal('#ur');
> +- }
> +- }
> +- }
> +- });
> +
> Index: patches/patch-internal_db_interface_go
> ===================================================================
> RCS file: patches/patch-internal_db_interface_go
> diff -N patches/patch-internal_db_interface_go
> --- /dev/null 1 Jan 1970 00:00:00 -0000
> +++ patches/patch-internal_db_interface_go 31 Dec 2025 03:14:19 -0000
> @@ -0,0 +1,20 @@
> +Remove canonical import path that prevents successful build.
> +
> +This has been fixed upstream [1] and, when released, will
> +make this patch obsolete.
> +
> +[1] https://github.com/syncthing/syncthing/commit/1843cac6d9cb1e3c8b7dd96e5ec4fcb28f554275
> +
> +
> +Index: internal/db/interface.go
> +--- internal/db/interface.go.orig
> ++++ internal/db/interface.go
> +@@ -4,7 +4,7 @@
> + // License, v. 2.0. If a copy of the MPL was not distributed with this file,
> + // You can obtain one at https://mozilla.org/MPL/2.0/.
> +
> +-package db // import "github.com/syncthing/syncthing/internal/db/sqlite"
> ++package db
> +
> + import (
> + "iter"
> Index: patches/patch-lib_build_build_go
> ===================================================================
> RCS file: /cvs/ports/net/syncthing/patches/patch-lib_build_build_go,v
> diff -u -p -u -p -r1.4 patch-lib_build_build_go
> --- patches/patch-lib_build_build_go 28 Nov 2024 11:47:47 -0000 1.4
> +++ patches/patch-lib_build_build_go 31 Dec 2025 03:14:19 -0000
> @@ -3,7 +3,7 @@ Disable phone-home calls / anonymous usa
> Index: lib/build/build.go
> --- lib/build/build.go.orig
> +++ lib/build/build.go
> -@@ -74,7 +74,7 @@ func setBuildData() {
> +@@ -83,7 +83,7 @@ func setBuildData() {
>
> exp := regexp.MustCompile(`^v\\d+\\.\\d+\\.\\d+(-[a-z]+[\\d\\.]+)?$`)
> IsRelease = exp.MatchString(Version)
> Index: pkg/README
> ===================================================================
> RCS file: /cvs/ports/net/syncthing/pkg/README,v
> diff -u -p -u -p -r1.8 README
> --- pkg/README 16 Feb 2024 15:09:13 -0000 1.8
> +++ pkg/README 31 Dec 2025 03:14:19 -0000
> @@ -21,8 +21,8 @@ Starting via RC script
>
> Syncthing can be started via the included RC script, thus running
> Syncthing as a system service. This is fine for single user
> -configurations. Under this mode of operation, Syncthing will run as the
> -_syncthing user and store the default 'Sync' folder under
> +configurations. Under this mode of operation, Syncthing runs as the
> +_syncthing user, and the default location for folders is
> ${LOCALSTATEDIR}/syncthing.
>
> Starting Manually
> @@ -31,7 +31,7 @@ Starting Manually
> The other way is to simply invoke ${TRUEPREFIX}/bin/syncthing manually.
> This is a better choice for situations where several users all want to
> run their own instances of Syncthing. Under this mode, the default
> -'Sync' folder will be stored in the user's home directory. Users will
> +location for folders is the user's home directory. Users will
> have to configure Syncthing to listen on different TCP ports for this
> method to work.
>
> Index: pkg/syncthing.rc
> ===================================================================
> RCS file: /cvs/ports/net/syncthing/pkg/syncthing.rc,v
> diff -u -p -u -p -r1.6 syncthing.rc
> --- pkg/syncthing.rc 11 Mar 2022 19:47:38 -0000 1.6
> +++ pkg/syncthing.rc 31 Dec 2025 03:14:19 -0000
> @@ -1,7 +1,7 @@
> #!/bin/ksh
>
> daemon="${TRUEPREFIX}/bin/syncthing"
> -daemon_flags="-no-browser"
> +daemon_flags="--no-browser"
> daemon_user="_syncthing"
>
> . /etc/rc.d/rc.subr
>
>
>
>
>
>
> On Tuesday, December 30th, 2025 at 15:22, Douglas Silva doug.hs@proton.me wrote:
>
> > I just tested your patch, but the telemetry prompt is still shown for a new configuration. I'll take a look at that code.
> >
> > For the record:
> > The patching was failing here because my mail client deletes trailing spaces, which are critical for context matching. Running patch(1) with --ignore-whitespace makes it work.
> >
> > On Monday, December 29th, 2025 at 05:37, Edd Barrett edd@theunixzoo.co.uk wrote:
> >
> > > Hi,
> > >
> > > On Sun, Dec 28, 2025 at 07:46:13PM +0000, Douglas Silva wrote:
> > >
> > > > As you've seen, it migrates to v2 without any user intervention.
> > >
> > > Yes, and I've now tested that locally, and it works. V2 also speaks to V1 just
> > > fine it seems (also turns out my android phone has been talking V2 to my V1
> > > OpenBSD nodes for some time).
> > >
> > > > > There are some (pre-existing) hard-coded paths in
> > > > > this patch. We should fix these as a separate commit.
> > > >
> > > > Honestly, I have no idea what that means or how to fix it :D
> > >
> > > I'll fix those in a follow-up commit. I also think any proposed changes to
> > > logging should also be a follow-up commit. For now let's just focus on the
> > > version upgrade.
> > >
> > > > When opening the web GUI for the first time, I get the dialog asking if I
> > > > want to enable telemetry. Isn't it supposed to be disabled by the patch
> > > > `patch-lib_build_build_go`?
> > >
> > > I think that patch is designed to do two things:
> > > - disable auto-update
> > > - disable telemetry
> > >
> > > But it seems we now have to try harder for the latter.
> > >
> > > Here's an updated diff which disables the telemetry nag screen, leaving
> > > `urAccepted=0` in the config file. Please test.
> > >
> > > Index: Makefile
> > > ===================================================================
> > > RCS file: /cvs/ports/net/syncthing/Makefile,v
> > > diff -u -p -r1.73 Makefile
> > > --- Makefile 22 Jul 2025 20:20:25 -0000 1.73
> > > +++ Makefile 29 Dec 2025 07:28:55 -0000
> > > @@ -1,6 +1,6 @@
> > > COMMENT = open decentralized synchronization utility
> > >
> > > -V = 1.30.0
> > > +V = 2.0.12
> > > DISTNAME = syncthing-${V}
> > > DISTFILES = syncthing-source-v${V}${EXTRACT_SUFX}
> > >
> > > @@ -22,7 +22,6 @@ WRKDIST = ${WRKDIR}/syncthing
> > > WRKSRC = ${WRKDIR}/go/src/github.com/syncthing/syncthing
> > >
> > > MODULES = lang/go
> > > -MODGO_TYPE = bin
> > >
> > > # Syncthing contains a lot of stuff that end users wouldn't be interested in,
> > > # so we package only these binaries.
> > > Index: distinfo
> > > ===================================================================
> > > RCS file: /cvs/ports/net/syncthing/distinfo,v
> > > diff -u -p -r1.50 distinfo
> > > --- distinfo 4 Jul 2025 19:19:39 -0000 1.50
> > > +++ distinfo 29 Dec 2025 07:28:55 -0000
> > > @@ -1,2 +1,2 @@
> > > -SHA256 (syncthing-source-v1.30.0.tar.gz) = 7xvnHGZ1PAQhKrHJxUjmeNRoutmNxUYeg1QKTvXC/Lo=
> > > -SIZE (syncthing-source-v1.30.0.tar.gz) = 16142834
> > > +SHA256 (syncthing-source-v2.0.12.tar.gz) = VgBK5tl0qjh8PGpzTrmKr9XWFZ/GV6H0xhjgsYFPra4=
> > > +SIZE (syncthing-source-v2.0.12.tar.gz) = 62613260
> > > Index: patches/patch-build_go
> > > ===================================================================
> > > RCS file: /cvs/ports/net/syncthing/patches/patch-build_go,v
> > > diff -u -p -r1.24 patch-build_go
> > > --- patches/patch-build_go 4 Jun 2025 20:07:43 -0000 1.24
> > > +++ patches/patch-build_go 29 Dec 2025 07:28:55 -0000
> > > @@ -3,7 +3,7 @@ Print build commands
> > > Index: build.go
> > > --- build.go.orig
> > > +++ build.go
> > > -@@ -549,7 +549,7 @@ func appendParameters(args []string, tags []string, pk
> > > +@@ -532,7 +532,7 @@ func appendParameters(args []string, tags []string, pk
> > >
> > > if !debugBinary {
> > > // Regular binaries get version tagged and skip some debug symbols
> > > Index: patches/patch-cmd_syncthing_main_go
> > > ===================================================================
> > > RCS file: /cvs/ports/net/syncthing/patches/patch-cmd_syncthing_main_go,v
> > > diff -u -p -r1.3 patch-cmd_syncthing_main_go
> > > --- patches/patch-cmd_syncthing_main_go 15 Jun 2025 16:42:21 -0000 1.3
> > > +++ patches/patch-cmd_syncthing_main_go 29 Dec 2025 07:28:55 -0000
> > > @@ -5,8 +5,8 @@ use unveil(2) to limit execution to
> > > Index: cmd/syncthing/main.go
> > > --- cmd/syncthing/main.go.orig
> > > +++ cmd/syncthing/main.go
> > > -@@ -29,6 +29,8 @@ import (
> > > - "syscall"
> > > +@@ -31,6 +31,8 @@ import (
> > > + "text/tabwriter"
> > > "time"
> > >
> > > + "golang.org/x/sys/unix"
> > > @@ -14,23 +14,28 @@ Index: cmd/syncthing/main.go
> > > "github.com/alecthomas/kong"
> > > "github.com/gofrs/flock"
> > > "github.com/thejerf/suture/v4"
> > > -@@ -206,6 +208,19 @@ func defaultVars() kong.Vars {
> > > - }
> > > -
> > > +@@ -213,6 +215,24 @@ func defaultVars() kong.Vars {
> > > func main() {
> > > + // Create a parser with an overridden help function to print our extra
> > > + // help info.
> > > ++
> > > + if err := unix.Unveil("/", "rwc"); err != nil {
> > > + panic(err)
> > > + }
> > > ++
> > > + if err := unix.Unveil("/usr/local/bin/syncthing", "rx"); err != nil {
> > > + panic(err)
> > > + }
> > > ++
> > > + if err := unix.Unveil("/usr/local/bin/xdg-open", "rx"); err != nil {
> > > + panic(err)
> > > + }
> > > ++
> > > + if err := unix.UnveilBlock(); err != nil {
> > > + panic(err)
> > > + }
> > > +
> > > - // First some massaging of the raw command line to fit the new model.
> > > - // Basically this means adding the default command at the front, and
> > > - // converting -options to --options.
> > > ++
> > > + var entrypoint CLI
> > > + parser, err := kong.New(
> > > + &entrypoint,
> > > Index: patches/patch-gui_default_syncthing_core_syncthingController_js
> > > ===================================================================
> > > RCS file: patches/patch-gui_default_syncthing_core_syncthingController_js
> > > diff -N patches/patch-gui_default_syncthing_core_syncthingController_js
> > > --- /dev/null 1 Jan 1970 00:00:00 -0000
> > > +++ patches/patch-gui_default_syncthing_core_syncthingController_js 29 Dec 2025 08:28:59 -0000
> > > @@ -0,0 +1,21 @@
> > > +Disable nag screen for telemetry.
> > > +
> > > +Index: gui/default/syncthing/core/syncthingController.js
> > > +--- gui/default/syncthing/core/syncthingController.js.orig
> > > ++++ gui/default/syncthing/core/syncthingController.js
> > > +@@ -187,15 +187,6 @@ angular.module('syncthing.core')
> > > + $scope.version = data;
> > > + }).error($scope.emitHTTPError);
> > > +
> > > +- if ($scope.system && $scope.config.options.urAccepted > -1 && $scope.config.options.urSeen < $scope.system.urVersionMax && $scope.config.options.urAccepted < $scope.system.urVersionMax) {
> > >
> > > +- // Usage reporting decision has not been taken or format
> > > +- // has changed, prompt the user to (re-)accept.
> > > +- $http.get(urlbase + '/svc/report').success(function (data) {
> > > +- $scope.reportData = data;
> > > +- showModal('#ur');
> > > +- }).error($scope.emitHTTPError);
> > > +- }
> > > +-
> > > + $http.get(urlbase + '/system/upgrade').success(function (data) {
> > > + $scope.upgradeInfo = data;
> > > + }).error(function () {
> > > Index: patches/patch-internal_db_interface_go
> > > ===================================================================
> > > RCS file: patches/patch-internal_db_interface_go
> > > diff -N patches/patch-internal_db_interface_go
> > > --- /dev/null 1 Jan 1970 00:00:00 -0000
> > > +++ patches/patch-internal_db_interface_go 29 Dec 2025 07:28:55 -0000
> > > @@ -0,0 +1,20 @@
> > > +Remove canonical import path that prevents successful build.
> > > +
> > > +This has been fixed upstream [1] and, when released, will
> > > +make this patch obsolete.
> > > +
> > > +[1] https://github.com/syncthing/syncthing/commit/1843cac6d9cb1e3c8b7dd96e5ec4fcb28f554275
> > > +
> > > +
> > > +Index: internal/db/interface.go
> > > +--- internal/db/interface.go.orig
> > > ++++ internal/db/interface.go
> > > +@@ -4,7 +4,7 @@
> > > + // License, v. 2.0. If a copy of the MPL was not distributed with this file,
> > > + // You can obtain one at https://mozilla.org/MPL/2.0/.
> > > +
> > > +-package db // import "github.com/syncthing/syncthing/internal/db/sqlite"
> > > ++package db
> > > +
> > > + import (
> > > + "iter"
> > > Index: patches/patch-lib_build_build_go
> > > ===================================================================
> > > RCS file: /cvs/ports/net/syncthing/patches/patch-lib_build_build_go,v
> > > diff -u -p -r1.4 patch-lib_build_build_go
> > > --- patches/patch-lib_build_build_go 28 Nov 2024 11:47:47 -0000 1.4
> > > +++ patches/patch-lib_build_build_go 29 Dec 2025 07:28:55 -0000
> > > @@ -3,7 +3,7 @@ Disable phone-home calls / anonymous usa
> > > Index: lib/build/build.go
> > > --- lib/build/build.go.orig
> > > +++ lib/build/build.go
> > > -@@ -74,7 +74,7 @@ func setBuildData() {
> > > +@@ -83,7 +83,7 @@ func setBuildData() {
> > >
> > > exp := regexp.MustCompile(`^v\\\\\\\\d+\\\\\\\\.\\\\\\\\d+\\\\\\\\.\\\\\\\\d+(-[a-z]+[\\\\\\\\d\\\\\\\\.]+)?$`)
> > > IsRelease = exp.MatchString(Version)
> > > Index: pkg/README
> > > ===================================================================
> > > RCS file: /cvs/ports/net/syncthing/pkg/README,v
> > > diff -u -p -r1.8 README
> > > --- pkg/README 16 Feb 2024 15:09:13 -0000 1.8
> > > +++ pkg/README 29 Dec 2025 07:28:55 -0000
> > > @@ -21,8 +21,8 @@ Starting via RC script
> > >
> > > Syncthing can be started via the included RC script, thus running
> > > Syncthing as a system service. This is fine for single user
> > > -configurations. Under this mode of operation, Syncthing will run as the
> > > -_syncthing user and store the default 'Sync' folder under
> > > +configurations. Under this mode of operation, Syncthing runs as the
> > > +_syncthing user, and the default location for folders is
> > > ${LOCALSTATEDIR}/syncthing.
> > >
> > > Starting Manually
> > > @@ -31,7 +31,7 @@ Starting Manually
> > > The other way is to simply invoke ${TRUEPREFIX}/bin/syncthing manually.
> > > This is a better choice for situations where several users all want to
> > > run their own instances of Syncthing. Under this mode, the default
> > > -'Sync' folder will be stored in the user's home directory. Users will
> > > +location for folders is the user's home directory. Users will
> > > have to configure Syncthing to listen on different TCP ports for this
> > > method to work.
> > >
> > > Index: pkg/syncthing.rc
> > > ===================================================================
> > > RCS file: /cvs/ports/net/syncthing/pkg/syncthing.rc,v
> > > diff -u -p -r1.6 syncthing.rc
> > > --- pkg/syncthing.rc 11 Mar 2022 19:47:38 -0000 1.6
> > > +++ pkg/syncthing.rc 29 Dec 2025 07:28:55 -0000
> > > @@ -1,7 +1,7 @@
> > > #!/bin/ksh
> > >
> > > daemon="${TRUEPREFIX}/bin/syncthing"
> > > -daemon_flags="-no-browser"
> > > +daemon_flags="--no-browser"
> > > daemon_user="_syncthing"
> > >
> > > . /etc/rc.d/rc.subr
> > >
> > > --
> > > Best Regards
> > > Edd Barrett
> > >
> > > https://www.theunixzoo.co.uk