From: Klemens Nanni Subject: Re: Upgrade net/syncthing to v2 To: Douglas Silva , "ports@openbsd.org" Cc: Edd Barrett , Lydia Sobot Date: Thu, 01 Jan 2026 00:08:06 +0000 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 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 >