## ## syncthing.spec -- OpenPKG RPM Package Specification ## Copyright (c) 2000-2022 OpenPKG Project ## ## Permission to use, copy, modify, and distribute this software for ## any purpose with or without fee is hereby granted, provided that ## the above copyright notice and this permission notice appear in all ## copies. ## ## THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED ## WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF ## MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. ## IN NO EVENT SHALL THE AUTHORS AND COPYRIGHT HOLDERS AND THEIR ## CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, ## SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT ## LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF ## USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, ## OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT ## OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF ## SUCH DAMAGE. ## # package information %define V_syncthing_base 1.18.5 %define V_syncthing_snap 20211207 # package information Name: syncthing Summary: Folder Synchronization Service URL: https://syncthing.net/ Vendor: The Syncthing Authors Packager: OpenPKG Project Distribution: OpenPKG Community Class: EVAL Group: Filesystem License: MPL Version: %{V_syncthing_base}.%{V_syncthing_snap} Release: 20211207 # list of sources Source0: http://download.openpkg.org/components/versioned/syncthing/syncthing-%{V_syncthing_snap}.tar.xz Source1: rc.syncthing # build information BuildPreReq: OpenPKG, openpkg >= 20160101, go PreReq: OpenPKG, openpkg >= 20160101 %description Syncthing pursues the following goals: Define a protocol for synchronization of a folder between a number of collaborating devices. This protocol should be well defined, unambiguous, easily understood, free to use, efficient, secure and language neutral. This is called the Block Exchange Protocol. Provide the reference implementation to demonstrate the usability of said protocol. This is the syncthing(1) utility. %track prog syncthing = { version = %{V_syncthing_base} url = https://github.com/syncthing/syncthing/releases regex = v(\d+\.\d+\.\d+)\.tar\.gz } %prep %setup -q -n syncthing %build # build program ( export GOPATH=`pwd` cd $GOPATH/src/github.com/syncthing/syncthing %{l_bash} build.sh rm -f bin/testutil ) || exit $? %install # create directory hierarchy %{l_shtool} mkdir -f -p -m 755 \ $RPM_BUILD_ROOT%{l_prefix}/bin \ $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d \ $RPM_BUILD_ROOT%{l_prefix}/etc/syncthing \ $RPM_BUILD_ROOT%{l_prefix}/var/syncthing/run \ $RPM_BUILD_ROOT%{l_prefix}/var/syncthing/log \ $RPM_BUILD_ROOT%{l_prefix}/var/syncthing/data \ $RPM_BUILD_ROOT%{l_prefix}/var/syncthing/state \ $RPM_BUILD_ROOT%{l_prefix}/man/man1 \ $RPM_BUILD_ROOT%{l_prefix}/man/man7 # install program %{l_shtool} install -c -s -m 755 \ src/github.com/syncthing/syncthing/bin/* \ $RPM_BUILD_ROOT%{l_prefix}/bin/ # install manpages %{l_shtool} install -c -m 644 \ src/github.com/syncthing/syncthing/man/*.1 \ $RPM_BUILD_ROOT%{l_prefix}/man/man1/ %{l_shtool} install -c -m 644 \ src/github.com/syncthing/syncthing/man/*.7 \ $RPM_BUILD_ROOT%{l_prefix}/man/man7/ # install run-command script %{l_shtool} install -c -m 755 %{l_value -s -a} \ %{SOURCE rc.syncthing} $RPM_BUILD_ROOT%{l_prefix}/etc/rc.d/ # determine installation files %{l_rpmtool} files -v -ofiles -r$RPM_BUILD_ROOT \ %{l_files_std} \ '%config %{l_prefix}/etc/syncthing/*' \ '%attr(-,%{l_rusr},%{l_rgrp}) %{l_prefix}/var/syncthing/*' %files -f files %clean %post if [ $1 -eq 1 ]; then # create initial configuration datadir="$RPM_INSTALL_PREFIX/var/syncthing/data" statedir="$RPM_INSTALL_PREFIX/var/syncthing/state" su - %{l_rusr} -c \ "$RPM_INSTALL_PREFIX/bin/syncthing -generate=$statedir" | \ %{l_shtool} prop \ -p "Creating initial device state: $RPM_INSTALL_PREFIX/var/syncthing/state" %{l_shtool} subst \ -e "s;\\( path=\"\\)[^\"]*\\(\"\\);\\1$datadir\\2;" \ $statedir/config.xml ( echo "After starting SyncThing with" echo " \$ $RPM_INSTALL_PREFIX/bin/openpkg rc syncthing start" echo "you can access the SyncThing GUI under" echo " http://127.0.0.1:8384/" echo "and find the synchronized data folder under" echo " $RPM_INSTALL_PREFIX/var/syncthing/data" ) | %{l_rpmtool} msg -b -t notice elif [ $1 -eq 2 ]; then # after upgrade, restart service eval `%{l_rc} syncthing status 2>/dev/null` [ ".$syncthing_active" = .yes ] && %{l_rc} syncthing restart fi exit 0 %preun if [ $1 -eq 0 ]; then # before erase, stop service and remove log files %{l_rc} syncthing stop 2>/dev/null rm -rf $RPM_INSTALL_PREFIX/var/syncthing/log/* >/dev/null 2>&1 || true rm -rf $RPM_INSTALL_PREFIX/var/syncthing/run/* >/dev/null 2>&1 || true rm -rf $RPM_INSTALL_PREFIX/var/syncthing/data/* >/dev/null 2>&1 || true rm -rf $RPM_INSTALL_PREFIX/var/syncthing/state/* >/dev/null 2>&1 || true fi exit 0