diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..96d755b --- /dev/null +++ b/.gitignore @@ -0,0 +1,97 @@ +/results_* +/*.src.rpm + +/syncthing-source-v*/ + +/syncthing-source-v0.14.35.tar.gz +/syncthing-source-v0.14.36.tar.gz +/syncthing-source-v0.14.37.tar.gz +/syncthing-source-v0.14.38.tar.gz +/syncthing-source-v0.14.39.tar.gz +/syncthing-source-v0.14.40.tar.gz +/syncthing-source-v0.14.41.tar.gz +/syncthing-source-v0.14.42.tar.gz +/syncthing-source-v0.14.43.tar.gz +/syncthing-source-v0.14.44.tar.gz +/syncthing-source-v0.14.45.tar.gz +/syncthing-source-v0.14.46.tar.gz +/syncthing-source-v0.14.48.tar.gz +/syncthing-source-v0.14.49.tar.gz +/syncthing-source-v0.14.50.tar.gz +/syncthing-source-v0.14.51.tar.gz +/syncthing-source-v0.14.52.tar.gz +/syncthing-source-v0.14.53.tar.gz +/syncthing-source-v0.14.54.tar.gz +/syncthing-source-v1.0.0.tar.gz +/syncthing-source-v1.0.1.tar.gz +/syncthing-source-v1.1.0.tar.gz +/syncthing-source-v1.1.1.tar.gz +/syncthing-source-v1.1.3.tar.gz +/syncthing-source-v1.1.4.tar.gz +/syncthing-source-v1.2.0.tar.gz +/syncthing-source-v1.2.1.tar.gz +/syncthing-source-v1.2.2.tar.gz +/syncthing-source-v1.3.0.tar.gz +/syncthing-source-v1.3.1.tar.gz +/syncthing-source-v1.3.2.tar.gz +/syncthing-source-v1.3.3.tar.gz +/syncthing-source-v1.3.4.tar.gz +/syncthing-source-v1.4.0.tar.gz +/syncthing-source-v1.4.2.tar.gz +/syncthing-source-v1.5.0.tar.gz +/syncthing-source-v1.6.1.tar.gz +/syncthing-source-v1.7.0.tar.gz +/syncthing-source-v1.7.1.tar.gz +/syncthing-source-v1.8.0.tar.gz +/syncthing-source-v1.9.0-rc.5.tar.gz +/syncthing-source-v1.9.0.tar.gz +/syncthing-source-v1.10.0.tar.gz +/syncthing-source-v1.11.0.tar.gz +/syncthing-source-v1.11.1.tar.gz +/syncthing-source-v1.12.0.tar.gz +/syncthing-source-v1.12.1.tar.gz +/syncthing-source-v1.13.1.tar.gz +/syncthing-source-v1.14.0.tar.gz +/syncthing-source-v1.15.1.tar.gz +/syncthing-source-v1.16.1.tar.gz +/syncthing-source-v1.17.0.tar.gz +/syncthing-source-v1.18.0.tar.gz +/syncthing-source-v1.18.1.tar.gz +/syncthing-source-v1.18.2.tar.gz +/syncthing-source-v1.18.3.tar.gz +/syncthing-source-v1.18.4.tar.gz +/syncthing-source-v1.18.5.tar.gz +/syncthing-source-v1.18.6.tar.gz +/syncthing-source-v1.19.1.tar.gz +/syncthing-source-v1.19.2.tar.gz +/syncthing-source-v1.20.1.tar.gz +/syncthing-source-v1.20.2.tar.gz +/syncthing-source-v1.20.3.tar.gz +/syncthing-source-v1.20.4.tar.gz +/syncthing-source-v1.21.0.tar.gz +/syncthing-source-v1.22.0.tar.gz +/syncthing-source-v1.23.0.tar.gz +/syncthing-source-v1.23.1.tar.gz +/syncthing-source-v1.23.2.tar.gz +/syncthing-source-v1.23.4.tar.gz +/syncthing-source-v1.23.5.tar.gz +/syncthing-source-v1.23.6.tar.gz +/syncthing-source-v1.23.7.tar.gz +/syncthing-source-v1.24.0.tar.gz +/syncthing-source-v1.25.0.tar.gz +/syncthing-source-v1.26.0.tar.gz +/syncthing-source-v1.26.1.tar.gz +/syncthing-source-v1.27.1.tar.gz +/syncthing-source-v1.27.2.tar.gz +/syncthing-source-v1.27.3.tar.gz +/syncthing-source-v1.27.4.tar.gz +/syncthing-source-v1.27.6.tar.gz +/syncthing-source-v1.27.7.tar.gz +/syncthing-source-v1.27.9.tar.gz +/syncthing-source-v1.27.12.tar.gz +/syncthing-source-v1.28.0.tar.gz +/syncthing-source-v1.28.1.tar.gz +/syncthing-source-v1.29.3.tar.gz +/syncthing-source-v1.29.5.tar.gz +/syncthing-source-v1.29.6.tar.gz +/syncthing-source-v1.30.0.tar.gz diff --git a/0001-lib-api-api_test-fix-non-constant-format-string.patch b/0001-lib-api-api_test-fix-non-constant-format-string.patch new file mode 100644 index 0000000..20f22c2 --- /dev/null +++ b/0001-lib-api-api_test-fix-non-constant-format-string.patch @@ -0,0 +1,25 @@ +From e983a6d622f5ddc7968fdf06bfc6cf0c027444eb Mon Sep 17 00:00:00 2001 +From: Fabio Valentini +Date: Wed, 12 Mar 2025 16:42:24 +0100 +Subject: [PATCH 1/2] lib/api/api_test: fix non-constant format string + +--- + lib/api/api_test.go | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/lib/api/api_test.go b/lib/api/api_test.go +index db5df49..301d41c 100644 +--- a/lib/api/api_test.go ++++ b/lib/api/api_test.go +@@ -790,7 +790,7 @@ func TestHtmlFormLogin(t *testing.T) { + t.Errorf("Unexpected non-200 return code %d at %s", resp.StatusCode, noAuthPath) + } + if hasSessionCookie(resp.Cookies()) { +- t.Errorf("Unexpected session cookie at " + noAuthPath) ++ t.Errorf("Unexpected session cookie at %s", noAuthPath) + } + }) + } +-- +2.48.1 + diff --git a/0002-lib-ignore-ignore_test-fix-non-constant-format-strin.patch b/0002-lib-ignore-ignore_test-fix-non-constant-format-strin.patch new file mode 100644 index 0000000..68eb294 --- /dev/null +++ b/0002-lib-ignore-ignore_test-fix-non-constant-format-strin.patch @@ -0,0 +1,34 @@ +From 4a9469f9969c646098a7d23d387aad150de1259c Mon Sep 17 00:00:00 2001 +From: Fabio Valentini +Date: Wed, 12 Mar 2025 16:53:32 +0100 +Subject: [PATCH 2/2] lib/ignore/ignore_test: fix non-constant format string + +--- + lib/ignore/ignore_test.go | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/lib/ignore/ignore_test.go b/lib/ignore/ignore_test.go +index 72a0c4d..6ca5267 100644 +--- a/lib/ignore/ignore_test.go ++++ b/lib/ignore/ignore_test.go +@@ -1077,7 +1077,7 @@ func TestIssue4901(t *testing.T) { + + fd, err := pats.fs.Create(".stignore") + if err != nil { +- t.Fatalf(err.Error()) ++ t.Fatalf("%s", err.Error()) + } + if _, err := fd.Write([]byte(stignore)); err != nil { + t.Fatal(err) +@@ -1099,7 +1099,7 @@ func TestIssue4901(t *testing.T) { + + fd, err = pats.fs.Create("unicorn-lazor-death") + if err != nil { +- t.Fatalf(err.Error()) ++ t.Fatalf("%s", err.Error()) + } + if _, err := fd.Write([]byte(" ")); err != nil { + t.Fatal(err) +-- +2.48.1 + diff --git a/README.md b/README.md index bf92e6f..320aafb 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,54 @@ # syncthing -The syncthing package \ No newline at end of file +## Usage + +By default, the syncthing service isn't enabled after installation. Depending on +the use-case, syncthing can be run as a system-wide service for a specific user, +or as a real user-session service. + +Once enabled, the syncthing service exposes a web interface (the port can be +changed in the configuration later) at address [localhost:8384](http://localhost:8384). + +For manual (or offline) configuration, the settings file of syncthing (XML +format) lives at `$HOME/.config/syncthing/config.xml`. + +An empty, default "Sync" folder is created at the first startup in the user's +home directory. + + +### User Session service + +To enable the syncthing service as a user-session service for the current user, +run: + +```sh +systemctl --user enable --now syncthing.service +``` + +The service will be started now and each time you log in. + +The syncthing user session service will not automatically be restarted after +package updates. Instead, the user has to either restart syncthing from the web +interface, log out and back in, or run the following commands manually: + +```sh +systemctl --user daemon-reload +systemctl --user restart syncthing.service +``` + +### System service + +To enable the syncthing service as a system-wide service for user `USER`, +run: + +```sh +sudo systemctl enable --now syncthing@USER.service +``` + +The service will be started now and each time the system boots. + +Enabling the syncthing service this way has the benefit that it will even be +automatically restarted when the syncthing package is updated by the package +manager. The drawback of this method is that the syncthing service cannot be +restarted from within the web interface (due to it being a system service). + diff --git a/changelog b/changelog new file mode 100644 index 0000000..70c0a2f --- /dev/null +++ b/changelog @@ -0,0 +1,278 @@ +* Fri Jul 23 2021 Fedora Release Engineering - 1.18.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Sat Jul 17 2021 Fabio Valentini - 1.18.0-1 +- Update to version 1.18.0. + +* Tue Jun 15 2021 Fabio Valentini - 1.17.0-1 +- Update to version 1.17.0. + +* Mon May 10 2021 Fabio Valentini - 1.16.1-1 +- Update to version 1.16.1. + +* Mon Apr 12 2021 Fabio Valentini - 1.15.1-1 +- Update to version 1.15.1. + +* Wed Mar 24 2021 Fabio Valentini - 1.14.0-1 +- Update to version 1.14.0. + +* Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek - 1.13.1-2 +- Rebuilt for updated systemd-rpm-macros + See https://pagure.io/fesco/issue/2583. + +* Thu Feb 04 2021 Fabio Valentini - 1.13.1-1 +- Update to version 1.13.1. + +* Wed Jan 27 2021 Fedora Release Engineering - 1.12.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Fri Jan 08 2021 Fabio Valentini - 1.12.1-1 +- Update to version 1.12.1. + +* Mon Dec 07 2020 Fabio Valentini - 1.12.0-1 +- Update to version 1.12.0. + +* Wed Nov 18 2020 Fabio Valentini - 1.11.1-1 +- Update to version 1.11.1. + +* Tue Nov 03 2020 Fabio Valentini - 1.11.0-1 +- Update to version 1.11.0. + +* Fri Oct 09 2020 Fabio Valentini - 1.10.0-1 +- Update to version 1.10.0. + +* Tue Sep 08 2020 Fabio Valentini - 1.9.0-1 +- Update to version 1.9.0. + +* Mon Sep 07 2020 Fabio Valentini - 1.9.0~rc5-2 +- Use correct version format for build flags. + +* Sat Sep 05 2020 Carl George - 1.9.0~rc5-1 +- Update to version 1.9.0-rc.5 + +* Thu Aug 20 2020 Fabio Valentini - 1.8.0-2 +- Include upstream patch to fix issues on ppc64le. + +* Sun Aug 16 2020 Fabio Valentini - 1.8.0-1 +- Update to version 1.8.0. + +* Sat Aug 01 2020 Fedora Release Engineering - 1.7.1-3 +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Wed Jul 29 2020 Fedora Release Engineering - 1.7.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Thu Jul 16 2020 Fabio Valentini - 1.7.1-1 +- Update to version 1.7.1. + +* Tue Jul 07 2020 Fabio Valentini - 1.7.0-1 +- Update to version 1.7.0. + +* Tue Jun 02 2020 Fabio Valentini - 1.6.1-1 +- Update to version 1.6.1. + +* Sat May 09 2020 Fabio Valentini - 1.5.0-1 +- Update to version 1.5.0. + +* Wed Apr 08 2020 Fabio Valentini - 1.4.2-1 +- Update to version 1.4.2. + +* Tue Mar 17 2020 Fabio Valentini - 1.4.0-1 +- Update to version 1.4.0. + +* Tue Mar 03 2020 Fabio Valentini - 1.3.4-2 +- Drop custom systemd user session preset file. + See: https://bugzilla.redhat.com/show_bug.cgi?id=1708297 + +* Tue Feb 04 2020 Fabio Valentini - 1.3.4-1 +- Update to version 1.3.4. + +* Fri Jan 31 2020 Fedora Release Engineering - 1.3.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Wed Jan 08 2020 Fabio Valentini - 1.3.3-1 +- Update to version 1.3.3. + +* Tue Dec 03 2019 Fabio Valentini - 1.3.2-2 +- Add proposed patch to fix tests running out of memory on 32 bit arches. + +* Tue Dec 03 2019 Fabio Valentini - 1.3.2-1 +- Update to version 1.3.2. + +* Tue Nov 05 2019 Fabio Valentini - 1.3.1-1 +- Update to version 1.3.1. +- Update build scriptlet to match upstream build system changes. +- Fix broken systemd_post scriptlet. + +* Thu Oct 10 2019 Fabio Valentini - 1.3.0-1 +- Update to version 1.3.0. + +* Thu Sep 05 2019 Fabio Valentini - 1.2.2-1 +- Update to version 1.2.2. + +* Thu Aug 15 2019 Fabio Valentini - 1.2.1-1 +- Update to version 1.2.1. + +* Sat Jul 27 2019 Fedora Release Engineering - 1.2.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Tue Jul 09 2019 Fabio Valentini - 1.2.0-1 +- Update to version 1.2.0. + +* Sun Jun 16 2019 Fabio Valentini - 1.1.4-2 +- Disable building -devel package by default. + +* Tue Jun 04 2019 Fabio Valentini - 1.1.4-1 +- Update to version 1.1.4. + +* Tue May 21 2019 Fabio Valentini - 1.1.3-1 +- Update to version 1.1.3. + +* Fri Apr 05 2019 Fabio Valentini - 1.1.1-1 +- Update to version 1.1.1. + +* Thu Mar 07 2019 Fabio Valentini - 1.1.0-2 +- Fix build tags for changed variable names. + +* Tue Mar 05 2019 Fabio Valentini - 1.1.0-1 +- Update to version 1.1.0. + +* Tue Feb 05 2019 Fabio Valentini - 1.0.1-1 +- Update to version 1.0.1. + +* Sun Feb 03 2019 Fedora Release Engineering - 1.0.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Mon Jan 07 2019 Fabio Valentini - 1.0.0-1 +- Update to version 1.0.0. + +* Wed Dec 26 2018 Fabio Valentini - 0.14.54-1 +- Update to version 0.14.54. +- Switch back to using bundled dependencies. + +* Tue Dec 04 2018 Fabio Valentini - 0.14.53-1 +- Update to version 0.14.53. + +* Tue Nov 06 2018 Fabio Valentini - 0.14.52-1 +- Update to version 0.14.52. + +* Tue Oct 02 2018 Fabio Valentini - 0.14.51-1 +- Update to version 0.14.51. + +* Sun Sep 30 2018 Fabio Valentini - 0.14.50-2 +- Adapt to rollinghash v4.0.0 changes. + +* Tue Sep 11 2018 Fabio Valentini - 0.14.50-1 +- Update to version 0.14.50. +- Clean up .spec file and use new macros. +- Drop upstreamed go1.11 patch. + +* Wed Jul 25 2018 Fabio Valentini - 0.14.49-1 +- Update to version 0.14.49. +- Drop upstreamed osext patch. +- Add upstream patch to fix building tests with go 1.11. + +* Sat Jul 14 2018 Fedora Release Engineering - 0.14.48-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Tue Jun 05 2018 Fabio Valentini - 0.14.48-1 +- Update to version 0.14.48. + +* Tue May 01 2018 Fabio Valentini - 0.14.47-1 +- Update to version 0.14.47. + +* Wed Apr 04 2018 Fabio Valentini - 0.14.46-1 +- Update to version 0.14.46. +- Simplify .spec file and build process, and drop build system patches. + +* Tue Mar 06 2018 Fabio Valentini - 0.14.45-1 +- Update to version 0.14.45. + +* Tue Feb 13 2018 Fabio Valentini - 0.14.44-1 +- Update to version 0.14.44. + +* Fri Feb 09 2018 Fedora Release Engineering - 0.14.43-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Tue Jan 09 2018 Fabio Valentini - 0.14.43-1 +- Update to version 0.14.43. + +* Tue Dec 26 2017 Fabio Valentini - 0.14.42-1 +- Update to version 0.14.42. + +* Tue Dec 05 2017 Fabio Valentini - 0.14.41-1 +- Update to version 0.14.41. + +* Tue Nov 07 2017 Fabio Valentini - 0.14.40-1 +- Update to version 0.14.40. + +* Wed Oct 11 2017 Fabio Valentini - 0.14.39-1 +- Update to version 0.14.39. + +* Wed Sep 20 2017 Fabio Valentini - 0.14.38-1 +- Update to version 0.14.38. +- Add patch to use internal luhn version again. + +* Mon Sep 18 2017 Fabio Valentini - 0.14.37-2 +- Rebuild for updated dependencies, fixing crashes. + +* Tue Sep 05 2017 Fabio Valentini - 0.14.37-1 +- Update to version 0.14.37. + +* Tue Aug 15 2017 Fabio Valentini - 0.14.36-2 +- Adapt patch to work on ppc64, where PIE isn't supported. + +* Sat Aug 12 2017 Fabio Valentini - 0.14.36-1 +- Update to version 0.14.36. + +* Wed Aug 09 2017 Fabio Valentini - 0.14.35-2 +- Add Provides for bundled JS libraries and adapt License tag. + +* Tue Aug 08 2017 Fabio Valentini - 0.14.35-1 +- Update to version 0.14.35. + +* Tue Aug 08 2017 Fabio Valentini - 0.14.34-1 +- Update to version 0.14.34. + +* Sat Aug 05 2017 Fabio Valentini - 0.14.33-3 +- Add another missing ldflags argument. + +* Tue Aug 01 2017 Fabio Valentini - 0.14.33-2 +- Adapt patched build script to use the correct LDFLAGS. + +* Tue Jul 25 2017 Fabio Valentini - 0.14.33-1 +- Update to version 0.14.33. + +* Tue Jul 11 2017 Fabio Valentini - 0.14.32-1 +- Update to version 0.14.32. + +* Tue Jun 27 2017 Fabio Valentini - 0.14.31-1 +- Update to version 0.14.31. + +* Tue Jun 13 2017 Fabio Valentini - 0.14.30-1 +- Update to version 0.14.30. + +* Tue May 30 2017 Fabio Valentini - 0.14.29-1 +- Update to version 0.14.29. + +* Tue May 16 2017 Fabio Valentini - 0.14.28-1 +- Update to version 0.14.28. + +* Tue Apr 25 2017 Fabio Valentini - 0.14.27-1 +- Update to version 0.14.27. + +* Fri Apr 07 2017 Fabio Valentini - 0.14.26-1 +- Update to version 0.14.26. + +* Tue Mar 21 2017 Fabio Valentini - 0.14.25-1 +- Update to version 0.14.25. + +* Tue Mar 07 2017 Fabio Valentini - 0.14.24-1 +- Update to version 0.14.24. + +* Tue Feb 28 2017 Fabio Valentini - 0.14.23-2 +- Clean up spec file, remove bundled libs on fedora, add man pages. + +* Tue Feb 07 2017 Fabio Valentini - 0.14.23-1 +- First package for fedora. diff --git a/sources b/sources new file mode 100644 index 0000000..cb41ca6 --- /dev/null +++ b/sources @@ -0,0 +1 @@ +SHA512 (syncthing-source-v1.30.0.tar.gz) = 30c69b4dc3373b915da39ecca85c785ecbb19f847b49c1e95e3c5d4417d02415e9a991d3b3d9984f7ae02594d4805c80cf86aba22e33456d352b76a9e5bd3fef diff --git a/syncthing.rpmlintrc b/syncthing.rpmlintrc new file mode 100644 index 0000000..3e9a54e --- /dev/null +++ b/syncthing.rpmlintrc @@ -0,0 +1,5 @@ +# don't care about manpages +addFilter("W: no-manual-page-for-binary *") + +# this is expected for golang packages +addFilter("W: hidden-file-or-dir /usr/share/gocode/src/github.com/syncthing/syncthing/.goipath*") diff --git a/syncthing.spec b/syncthing.spec new file mode 100644 index 0000000..563d026 --- /dev/null +++ b/syncthing.spec @@ -0,0 +1,454 @@ +%global basever 1.30.0 +#%%global rcnum 0 + +Name: syncthing +Summary: Continuous File Synchronization +Version: %{basever}%{?rcnum:~rc%{rcnum}} +Release: %autorelease + +%global goipath github.com/syncthing/syncthing +%global tag v%{basever}%{?rcnum:-rc.%{rcnum}} + +%gometa -f + +# syncthing (MPL-2.0) bundles +# - angular, bootstrap, daterangepicker, fancytree, jQuery, moment (MIT), +# - HumanizeDuration (MIT OR Unlicense), +# - ForkAwesome (MIT, OFL-1.1, CC-BY-3.0), and +# - a number of go packages (Apache-2.0, BSD-2-Clause, BSD-2-Clause-Views, BSD-3-Clause, ISC, MIT, MPL-2.0) +License: MPL-2.0 AND Apache-2.0 AND BSD-2-Clause AND BSD-2-Clause-Views AND BSD-3-Clause AND CC-BY-3.0 AND ISC AND MIT AND OFL-1.1 AND (Apache-2.0 OR MIT) AND (MIT OR Unlicense) + +URL: https://syncthing.net +# use official release tarball (contains vendored dependencies) +Source0: %{gourl}/releases/download/%{tag}/%{name}-source-%{tag}.tar.gz + +# fix compilation failures caused non-constant format strings +Patch: 0001-lib-api-api_test-fix-non-constant-format-string.patch +Patch: 0002-lib-ignore-ignore_test-fix-non-constant-format-strin.patch + +BuildRequires: desktop-file-utils +BuildRequires: systemd-rpm-macros + +Requires: hicolor-icon-theme + +# assets in gui/default/vendor/* +Provides: bundled(angular) = 1.3.20 +Provides: bundled(angular-dirPagination) = 759009c +Provides: bundled(angular-sanitize) = 1.3.20 +Provides: bundled(angular-translate) = 2.9.0.1 +Provides: bundled(angular-translate-loader-static-files) = 2.11.0 +Provides: bundled(bootstrap) = 3.3.6 +Provides: bundled(daterangepicker) = 3.1 +Provides: bundled(ForkAwesome) = 1.2.0 +Provides: bundled(HumanizeDuration.js) +Provides: bundled(jquery) = 2.2.2 +Provides: bundled(jquery-fancytree) = 2.38.0 +Provides: bundled(jquery-ui) = 1.12.1 +Provides: bundled(moment) = 2.19.4 + +# automatically generated Provides for bundled go dependencies +# manually check licenses for new deps and update License tag if necessary +# generate with "./vendor2provides.py path/to/vendor/modules.txt" + +# github.com/AudriusButkevicius/recli : MPL-2.0 +Provides: bundled(golang(github.com/AudriusButkevicius/recli)) = d000ce8 +# github.com/Azure/azure-sdk-for-go : MIT +Provides: bundled(golang(github.com/Azure/azure-sdk-for-go/sdk/azcore)) = 1.18.0 +Provides: bundled(golang(github.com/Azure/azure-sdk-for-go/sdk/internal)) = 1.11.1 +Provides: bundled(golang(github.com/Azure/azure-sdk-for-go/sdk/storage/azblob)) = 1.6.1 +# github.com/Azure/go-ntlmssp : MIT +Provides: bundled(golang(github.com/Azure/go-ntlmssp)) = 754e693 +# github.com/alecthomas/kong : MIT +Provides: bundled(golang(github.com/alecthomas/kong)) = 1.11.0 +# github.com/aws/aws-sdk-go : Apache-2.0 +Provides: bundled(golang(github.com/aws/aws-sdk-go)) = 1.55.7 +# github.com/beorn7/perks : MIT +Provides: bundled(golang(github.com/beorn7/perks)) = 1.0.1 +# github.com/calmh/incontainer : MIT +Provides: bundled(golang(github.com/calmh/incontainer)) = 1.0.0 +# github.com/calmh/xdr : MIT +Provides: bundled(golang(github.com/calmh/xdr)) = 1.2.0 +# github.com/ccding/go-stun : Apache-2.0 +Provides: bundled(golang(github.com/ccding/go-stun)) = 0.1.5 +# github.com/cenkalti/backoff : MIT +Provides: bundled(golang(github.com/cenkalti/backoff/v4)) = 4.3.0 +# github.com/certifi/gocertifi : MPL-2.0 +Provides: bundled(golang(github.com/certifi/gocertifi)) = 431795d +# github.com/cespare/xxhash : MIT +Provides: bundled(golang(github.com/cespare/xxhash/v2)) = 2.3.0 +# github.com/chmduquesne/rollinghash : MIT +Provides: bundled(golang(github.com/chmduquesne/rollinghash)) = 4.0.0+incompatible +# github.com/coreos/go-semver : Apache-2.0 +Provides: bundled(golang(github.com/coreos/go-semver)) = 0.3.1 +# github.com/cpuguy83/go-md2man : MIT +Provides: bundled(golang(github.com/cpuguy83/go-md2man/v2)) = 2.0.5 +# github.com/d4l3k/messagediff : MIT +Provides: bundled(golang(github.com/d4l3k/messagediff)) = 1.2.1 +# github.com/davecgh/go-spew : ISC +Provides: bundled(golang(github.com/davecgh/go-spew)) = 1.1.1 +# github.com/ebitengine/purego : Apache-2.0 +Provides: bundled(golang(github.com/ebitengine/purego)) = 0.8.3 +# github.com/fsnotify/fsnotify : BSD-3-Clause +Provides: bundled(golang(github.com/fsnotify/fsnotify)) = 1.7.0 +# github.com/getsentry/raven-go : BSD-3-Clause +Provides: bundled(golang(github.com/getsentry/raven-go)) = 0.2.0 +# github.com/go-asn1-ber/asn1-ber : MIT +Provides: bundled(golang(github.com/go-asn1-ber/asn1-ber)) = 2923003 +# github.com/go-ldap/ldap : MIT +Provides: bundled(golang(github.com/go-ldap/ldap/v3)) = 3.4.11 +# github.com/go-ole/go-ole : MIT +Provides: bundled(golang(github.com/go-ole/go-ole)) = 1.3.0 +# github.com/go-task/slim-sprig : MIT +Provides: bundled(golang(github.com/go-task/slim-sprig/v3)) = 3.0.0 +# github.com/gobwas/glob : MIT +Provides: bundled(golang(github.com/gobwas/glob)) = 0.2.3 +# github.com/gofrs/flock : BSD-3-Clause +Provides: bundled(golang(github.com/gofrs/flock)) = 0.12.1 +# github.com/golang/snappy : BSD-3-Clause +Provides: bundled(golang(github.com/golang/snappy)) = 0.0.4 +# github.com/google/pprof : Apache-2.0 +Provides: bundled(golang(github.com/google/pprof)) = 337e5dd +# github.com/google/uuid : BSD-3-Clause +Provides: bundled(golang(github.com/google/uuid)) = 1.6.0 +# github.com/greatroar/blobloom : Apache-2.0 +Provides: bundled(golang(github.com/greatroar/blobloom)) = 0.8.0 +# github.com/hashicorp/errwrap : MPL-2.0 +Provides: bundled(golang(github.com/hashicorp/errwrap)) = 1.1.0 +# github.com/hashicorp/go-multierror : MPL-2.0 +Provides: bundled(golang(github.com/hashicorp/go-multierror)) = 1.1.1 +# github.com/hashicorp/golang-lru : MPL-2.0 +Provides: bundled(golang(github.com/hashicorp/golang-lru/v2)) = 2.0.7 +# github.com/jackpal/gateway : BSD-3-Clause +Provides: bundled(golang(github.com/jackpal/gateway)) = 1.0.16 +# github.com/jackpal/go-nat-pmp : Apache-2.0 +Provides: bundled(golang(github.com/jackpal/go-nat-pmp)) = 1.0.2 +# github.com/jmespath/go-jmespath : Apache-2.0 +Provides: bundled(golang(github.com/jmespath/go-jmespath)) = 0.4.0 +# github.com/julienschmidt/httprouter : BSD-3-Clause +Provides: bundled(golang(github.com/julienschmidt/httprouter)) = 1.3.0 +# github.com/kballard/go-shellquote : MIT +Provides: bundled(golang(github.com/kballard/go-shellquote)) = 95032a8 +# github.com/lufia/plan9stats : BSD-3-Clause +Provides: bundled(golang(github.com/lufia/plan9stats)) = 873cd01 +# github.com/maruel/panicparse : Apache-2.0 +Provides: bundled(golang(github.com/maruel/panicparse/v2)) = 2.5.0 +# github.com/maxbrunsfeld/counterfeiter : MIT +Provides: bundled(golang(github.com/maxbrunsfeld/counterfeiter/v6)) = 6.11.2 +# github.com/maxmind/geoipupdate : Apache-2.0 OR MIT +Provides: bundled(golang(github.com/maxmind/geoipupdate/v6)) = 6.1.0 +# github.com/miscreant/miscreant.go : MIT +Provides: bundled(golang(github.com/miscreant/miscreant.go)) = 26d3763 +# github.com/munnerz/goautoneg : BSD-3-Clause +Provides: bundled(golang(github.com/munnerz/goautoneg)) = a7dc8b6 +# github.com/nxadm/tail : MIT +Provides: bundled(golang(github.com/nxadm/tail)) = 1.4.11 +# github.com/onsi/ginkgo : MIT +Provides: bundled(golang(github.com/onsi/ginkgo/v2)) = 2.23.4 +# github.com/oschwald/geoip2-golang : ISC +Provides: bundled(golang(github.com/oschwald/geoip2-golang)) = 1.11.0 +# github.com/oschwald/maxminddb-golang : ISC +Provides: bundled(golang(github.com/oschwald/maxminddb-golang)) = 1.13.1 +# github.com/pierrec/lz4 : BSD-3-Clause +Provides: bundled(golang(github.com/pierrec/lz4/v4)) = 4.1.22 +# github.com/pkg/errors : BSD-2-Clause +Provides: bundled(golang(github.com/pkg/errors)) = 0.9.1 +# github.com/pmezard/go-difflib : BSD-3-Clause +Provides: bundled(golang(github.com/pmezard/go-difflib)) = 1.0.0 +# github.com/posener/complete : MIT +Provides: bundled(golang(github.com/posener/complete)) = 1.2.3 +# github.com/power-devops/perfstat : MIT +Provides: bundled(golang(github.com/power-devops/perfstat)) = 82ca368 +# github.com/prometheus/client_golang : Apache-2.0 +Provides: bundled(golang(github.com/prometheus/client_golang)) = 1.22.0 +# github.com/prometheus/client_model : Apache-2.0 +Provides: bundled(golang(github.com/prometheus/client_model)) = 0.6.1 +# github.com/prometheus/common : Apache-2.0 +Provides: bundled(golang(github.com/prometheus/common)) = 0.62.0 +# github.com/prometheus/procfs : Apache-2.0 +Provides: bundled(golang(github.com/prometheus/procfs)) = 0.15.1 +# github.com/puzpuzpuz/xsync : Apache-2.0 +Provides: bundled(golang(github.com/puzpuzpuz/xsync/v3)) = 3.5.1 +# github.com/quic-go/quic-go : MIT +Provides: bundled(golang(github.com/quic-go/quic-go)) = 0.52.0 +# github.com/rabbitmq/amqp091-go : BSD-2-Clause +Provides: bundled(golang(github.com/rabbitmq/amqp091-go)) = 1.10.0 +# github.com/rcrowley/go-metrics : BSD-2-Clause-Views +Provides: bundled(golang(github.com/rcrowley/go-metrics)) = 65e299d +# github.com/riywo/loginshell : MIT +Provides: bundled(golang(github.com/riywo/loginshell)) = 7d26008 +# github.com/russross/blackfriday : BSD-2-Clause +Provides: bundled(golang(github.com/russross/blackfriday/v2)) = 2.1.0 +# github.com/shirou/gopsutil : BSD-3-Clause +Provides: bundled(golang(github.com/shirou/gopsutil/v4)) = 4.25.4 +# github.com/stretchr/objx : MIT +Provides: bundled(golang(github.com/stretchr/objx)) = 0.5.2 +# github.com/stretchr/testify : MIT +Provides: bundled(golang(github.com/stretchr/testify)) = 1.10.0 +# github.com/syncthing/notify : MIT +Provides: bundled(golang(github.com/syncthing/notify)) = c7027d4 +# github.com/syndtr/goleveldb : BSD-2-Clause +Provides: bundled(golang(github.com/syndtr/goleveldb)) = 126854a +# github.com/thejerf/suture : MIT +Provides: bundled(golang(github.com/thejerf/suture/v4)) = 4.0.6 +# github.com/tklauser/go-sysconf : BSD-3-Clause +Provides: bundled(golang(github.com/tklauser/go-sysconf)) = 0.3.14 +# github.com/tklauser/numcpus : Apache-2.0 +Provides: bundled(golang(github.com/tklauser/numcpus)) = 0.9.0 +# github.com/urfave/cli : MIT +Provides: bundled(golang(github.com/urfave/cli)) = 1.22.16 +# github.com/vitrun/qart : Apache-2.0 AND BSD-3-Clause +Provides: bundled(golang(github.com/vitrun/qart)) = bf64b92 +# github.com/willabides/kongplete : MIT +Provides: bundled(golang(github.com/willabides/kongplete)) = 0.4.0 +# github.com/yusufpapurcu/wmi : MIT +Provides: bundled(golang(github.com/yusufpapurcu/wmi)) = 1.2.4 +# go.uber.org/automaxprocs : MIT +Provides: bundled(golang(go.uber.org/automaxprocs)) = 1.6.0 +# go.uber.org/mock : Apache-2.0 +Provides: bundled(golang(go.uber.org/mock)) = 0.5.2 +# golang.org/x/crypto : BSD-3-Clause +Provides: bundled(golang(golang.org/x/crypto)) = 0.38.0 +# golang.org/x/mod : BSD-3-Clause +Provides: bundled(golang(golang.org/x/mod)) = 0.24.0 +# golang.org/x/net : BSD-3-Clause +Provides: bundled(golang(golang.org/x/net)) = 0.40.0 +# golang.org/x/sync : BSD-3-Clause +Provides: bundled(golang(golang.org/x/sync)) = 0.14.0 +# golang.org/x/sys : BSD-3-Clause +Provides: bundled(golang(golang.org/x/sys)) = 0.33.0 +# golang.org/x/text : BSD-3-Clause +Provides: bundled(golang(golang.org/x/text)) = 0.25.0 +# golang.org/x/time : BSD-3-Clause +Provides: bundled(golang(golang.org/x/time)) = 0.11.0 +# golang.org/x/tools : BSD-3-Clause +Provides: bundled(golang(golang.org/x/tools)) = 0.33.0 +# google.golang.org/protobuf : BSD-3-Clause +Provides: bundled(golang(google.golang.org/protobuf)) = 1.36.6 +# gopkg.in/yaml.v3 : MIT AND Apache-2.0 +Provides: bundled(golang(gopkg.in/yaml.v3)) = 3.0.1 +# sigs.k8s.io/yaml : MIT AND BSD-3-Clause AND (MIT OR Apache-2.0) +Provides: bundled(golang(sigs.k8s.io/yaml)) = 1.4.0 + +%description +Syncthing replaces other file synchronization services with something +open, trustworthy and decentralized. Your data is your data alone and +you deserve to choose where it is stored, if it is shared with some +third party and how it's transmitted over the Internet. Using syncthing, +that control is returned to you. + +This package contains the syncthing client binary and systemd services. + + +%package tools +Summary: Continuous File Synchronization (server tools) + +%description tools +Syncthing replaces other file synchronization services with something +open, trustworthy and decentralized. Your data is your data alone and +you deserve to choose where it is stored, if it is shared with some +third party and how it's transmitted over the Internet. Using syncthing, +that control is returned to you. + +This package contains the main syncthing server tools: + +* strelaysrv / strelaypoolsrv, the syncthing relay server for indirect + file transfers between client nodes, and +* stdiscosrv, the syncthing discovery server for discovering nodes + to connect to indirectly over the internet. + + +%prep +%autosetup -n %{name} -p1 + + +%build +export GO111MODULE=off + +# remove bundled libraries +#rm -r vendor + +# prepare build environment +mkdir -p ./_build/src/github.com/syncthing + +TOP=$(pwd) +pushd _build/src/github.com/syncthing +ln -s $TOP syncthing +popd + +export GOPATH=$(pwd)/_build:%{gopath} +export BUILDDIR=$(pwd)/_build/src/%{goipath} + +# compile assets used by the build process +pushd _build/src/%{goipath} +go run build.go assets +rm build.go +popd + +# set variables expected by syncthing binaries as additional FOOFLAGS +export BUILD_HOST=fedora-koji +export COMMON_LDFLAGS="-X %{goipath}/lib/build.Version=%{tag} -X %{goipath}/lib/build.Stamp=$SOURCE_DATE_EPOCH -X %{goipath}/lib/build.User=$USER -X %{goipath}/lib/build.Host=$BUILD_HOST" +export BUILDTAGS="noupgrade" + +export LDFLAGS="-X %{goipath}/lib/build.Program=syncthing $COMMON_LDFLAGS" +%gobuild -o _bin/syncthing %{goipath}/cmd/syncthing + +export LDFLAGS="-X %{goipath}/lib/build.Program=stdiscosrv $COMMON_LDFLAGS" +%gobuild -o _bin/stdiscosrv %{goipath}/cmd/stdiscosrv + +export LDFLAGS="-X %{goipath}/lib/build.Program=strelaysrv $COMMON_LDFLAGS" +%gobuild -o _bin/strelaysrv %{goipath}/cmd/strelaysrv + +export LDFLAGS="-X %{goipath}/lib/build.Program=strelaypoolsrv $COMMON_LDFLAGS" +%gobuild -o _bin/strelaypoolsrv %{goipath}/cmd/infra/strelaypoolsrv + + +%install +export GO111MODULE=off + +# install binaries +mkdir -p %{buildroot}/%{_bindir} + +cp -pav _bin/syncthing %{buildroot}/%{_bindir}/ +cp -pav _bin/stdiscosrv %{buildroot}/%{_bindir}/ +cp -pav _bin/strelaysrv %{buildroot}/%{_bindir}/ +cp -pav _bin/strelaypoolsrv %{buildroot}/%{_bindir}/ + +# install man pages +mkdir -p %{buildroot}/%{_mandir}/man1 +mkdir -p %{buildroot}/%{_mandir}/man5 +mkdir -p %{buildroot}/%{_mandir}/man7 + +cp -pav ./man/syncthing.1 %{buildroot}/%{_mandir}/man1/ +cp -pav ./man/*.5 %{buildroot}/%{_mandir}/man5/ +cp -pav ./man/*.7 %{buildroot}/%{_mandir}/man7/ +cp -pav ./man/stdiscosrv.1 %{buildroot}/%{_mandir}/man1/ +cp -pav ./man/strelaysrv.1 %{buildroot}/%{_mandir}/man1/ + +# install desktop files and icons +mkdir -p %{buildroot}/%{_datadir}/applications +cp -pav etc/linux-desktop/syncthing-start.desktop %{buildroot}/%{_datadir}/applications/ +cp -pav etc/linux-desktop/syncthing-ui.desktop %{buildroot}/%{_datadir}/applications/ + +for size in 32 64 128 256 512; do + mkdir -p %{buildroot}/%{_datadir}/icons/hicolor/${size}x${size}/apps + cp -pav assets/logo-${size}.png %{buildroot}/%{_datadir}/icons/hicolor/${size}x${size}/apps/syncthing.png +done +mkdir -p %{buildroot}/%{_datadir}/icons/hicolor/scalable/apps +cp -pav assets/logo-only.svg %{buildroot}/%{_datadir}/icons/hicolor/scalable/apps/syncthing.svg + +# install systemd units +mkdir -p %{buildroot}/%{_unitdir} +mkdir -p %{buildroot}/%{_userunitdir} + +cp -pav etc/linux-systemd/system/syncthing@.service %{buildroot}/%{_unitdir}/ +cp -pav etc/linux-systemd/user/syncthing.service %{buildroot}/%{_userunitdir}/ + +# unmark source files as executable +for i in $(find -name "*.go" -type f -executable -print); do + chmod a-x $i; +done + + +%check +desktop-file-validate %{buildroot}/%{_datadir}/applications/*.desktop + +export LANG=C.utf8 +export GOPATH=$(pwd)/_build:%{gopath} +export GO111MODULE=off + +%gotest %{goipath}/cmd/stdiscosrv +%gotest %{goipath}/cmd/infra/strelaypoolsrv +%gotest %{goipath}/cmd/syncthing +%gotest %{goipath}/lib/api +%gotest %{goipath}/lib/beacon +%gotest %{goipath}/lib/config + +# This test times out on s390x +%gotest %{goipath}/lib/connections || : + +%gotest %{goipath}/lib/db +%gotest %{goipath}/lib/dialer +%gotest %{goipath}/lib/discover +%gotest %{goipath}/lib/events + +# This test fails on SELinux-enabled systems: +# https://github.com/syncthing/syncthing/issues/8601 +%gotest %{goipath}/lib/fs || : + +%gotest %{goipath}/lib/ignore +%gotest %{goipath}/lib/logger + +# This test sometimes fails dependent on load on some architectures: +# https://github.com/syncthing/syncthing/issues/4370 +%gotest %{goipath}/lib/model || : + +%gotest %{goipath}/lib/nat +%gotest %{goipath}/lib/osutil +%gotest %{goipath}/lib/pmp +%gotest %{goipath}/lib/protocol +%gotest %{goipath}/lib/rand +%gotest %{goipath}/lib/relay/client +%gotest %{goipath}/lib/relay/protocol +%gotest %{goipath}/lib/scanner +%gotest %{goipath}/lib/semaphore +%gotest %{goipath}/lib/signature +%gotest %{goipath}/lib/stats +%gotest %{goipath}/lib/stringutil +%gotest %{goipath}/lib/structutil +%gotest %{goipath}/lib/svcutil +%gotest %{goipath}/lib/sync +%gotest %{goipath}/lib/syncthing +%gotest %{goipath}/lib/tlsutil +%gotest %{goipath}/lib/upgrade +%gotest %{goipath}/lib/upnp + +# This test sometimes fails dependent on load on some architectures: +# https://github.com/syncthing/syncthing/issues/4351 +%gotest %{goipath}/lib/versioner || : + +%gotest %{goipath}/lib/watchaggregator +%gotest %{goipath}/lib/weakhash + + +%post +%systemd_post 'syncthing@.service' +%systemd_user_post syncthing.service + +%preun +%systemd_preun 'syncthing@*.service' +%systemd_user_preun syncthing.service + +%postun +%systemd_postun_with_restart 'syncthing@*.service' +%systemd_user_postun_with_restart syncthing.service + + +%files +%license LICENSE +%doc README.md AUTHORS + +%{_bindir}/syncthing + +%{_datadir}/applications/syncthing*.desktop +%{_datadir}/icons/hicolor/*/apps/syncthing.* + +%{_mandir}/*/syncthing* + +%{_unitdir}/syncthing@.service +%{_userunitdir}/syncthing.service + + +%files tools +%license LICENSE +%doc README.md AUTHORS + +%{_bindir}/stdiscosrv +%{_bindir}/strelaysrv +%{_bindir}/strelaypoolsrv + +%{_mandir}/man1/stdiscosrv* +%{_mandir}/man1/strelaysrv* + + +%changelog +%autochangelog diff --git a/vendor2provides.py b/vendor2provides.py new file mode 100755 index 0000000..ce1afb8 --- /dev/null +++ b/vendor2provides.py @@ -0,0 +1,52 @@ +#!/usr/bin/python3 + +# vendor2provides.py +# ================== +# +# Parse modules.txt files into rpm .spec file Provides for bundled dependencies. +# Written by Fabio "decathorpe" Valentini for +# the fedora syncthing package: https://src.fedoraproject.org/rpms/syncthing +# +# SPDX-License-Identifier: Unlicense + +import os +import sys + + +def main() -> int: + if len(sys.argv) < 2: + print("No path to 'modules.txt' file given.") + return 1 + + path = sys.argv[1] + + with open(path) as file: + contents = file.read() + + lines = contents.split("\n") + + # dependencies = filter lines for "# package version" + dependencies = list(filter(lambda line: line.startswith("# "), lines)) + + # parse vendored dependencies into (import path, version) pairs + vendored = list() + for dep in dependencies: + ipath, version = dep[2:].split(" ")[:2] + + # check for git snapshots + if len(version) > 27: + # return only 7 digits of git commit hash + version = version[-12:-1][0:7] + else: + # strip off leading "v" + version = version.lstrip("v") + + vendored.append((ipath, version)) + + for ipath, version in vendored: + print(f"Provides: bundled(golang({ipath})) = {version}") + + +if __name__ == "__main__": + exit(main()) +