You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

152 lines
5.6 KiB

##
## syncthing.spec -- OpenPKG RPM Package Specification
## Copyright (c) 2000-2022 OpenPKG Project <http://openpkg.org/>
##
## 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.6
%define V_syncthing_snap 20220112
# 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: 20220113
# 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