瀏覽代碼

new package

Ralf S. Engelschall 9 年之前
父節點
當前提交
f3a217af58
共有 3 個文件被更改,包括 204 次插入0 次删除
  1. 68 0
      syncthing/rc.syncthing
  2. 12 0
      syncthing/syncthing.patch
  3. 124 0
      syncthing/syncthing.spec

+ 68 - 0
syncthing/rc.syncthing

@@ -0,0 +1,68 @@
+#!@l_prefix@/bin/openpkg rc
+##
+##  rc.syncthing -- Run-Commands
+##
+
+%config
+    syncthing_enable="$openpkg_rc_def"
+    syncthing_flags="-gui-address=http://192.0.2.42:8443 -logflags=2"
+    syncthing_log_prolog="true"
+    syncthing_log_epilog="true"
+    syncthing_log_numfiles="10"
+    syncthing_log_minsize="1M"
+    syncthing_log_complevel="9"
+
+%common
+    syncthing_datadir="@l_prefix@/var/syncthing/data"
+    syncthing_pidfile="@l_prefix@/var/syncthing/run/syncthing.pid"
+    syncthing_logfile="@l_prefix@/var/syncthing/log/syncthing.log"
+    syncthing_signal () {
+        [ -f $syncthing_pidfile ] && kill -$1 `cat $syncthing_pidfile`
+    }
+
+%status -u @l_rusr@ -o
+    syncthing_usable="unknown"
+    syncthing_active="no"
+    rcService syncthing enable yes && \
+        syncthing_signal 0 && syncthing_active="yes"
+    echo "syncthing_enable=\"$syncthing_enable\""
+    echo "syncthing_usable=\"$syncthing_usable\""
+    echo "syncthing_active=\"$syncthing_active\""
+
+%start -u @l_rusr@
+    rcService syncthing enable yes || exit 0
+    rcService syncthing active yes && exit 0
+    (   GOMAXPROCS=32
+        export GOMAXPROCS
+        HOME=$syncthing_datadir
+        export HOME
+        nohup @l_prefix@/bin/syncthing \
+            -home="$syncthing_datadir" \
+            -logfile="$syncthing_logfile" \
+            -no-browser \
+            $syncthing_flags \
+        </dev/null >>$syncthing_logfile 2>&1 &
+        echo $! >$syncthing_pidfile
+    ) >/dev/null 2>&1
+
+%stop -u @l_rusr@
+    rcService syncthing enable yes || exit 0
+    rcService syncthing active no  && exit 0
+    syncthing_signal TERM
+    sleep 2
+    rm -f $syncthing_pidfile >/dev/null 2>&1 || true
+
+%restart -u @l_rusr@
+    rcService syncthing enable yes || exit 0
+    rcService syncthing active no  && exit 0
+    rc syncthing stop start
+
+%daily -u @l_rusr@
+    rcService syncthing enable yes || exit 0
+    shtool rotate -f \
+        -n ${syncthing_log_numfiles} -s ${syncthing_log_minsize} -d \
+        -z ${syncthing_log_complevel} -m 664 -o @l_rusr@ -g @l_rgrp@ \
+        -P "${syncthing_log_prolog}" \
+        -E "${syncthing_log_epilog}; rc syncthing restart" \
+        $syncthing_logfile
+

+ 12 - 0
syncthing/syncthing.patch

@@ -0,0 +1,12 @@
+Index: src/github.com/syncthing/syncthing/build.go
+--- src/github.com/syncthing/syncthing/build.go.orig	2016-06-25 13:03:15.000000000 +0200
++++ src/github.com/syncthing/syncthing/build.go	2016-06-25 13:08:50.903917644 +0200
+@@ -388,7 +388,7 @@
+ 	tags = append(target.tags, tags...)
+ 
+ 	rmr(target.binaryName)
+-	args := []string{"build", "-i", "-v", "-ldflags", ldflags()}
++	args := []string{"build", "-x", "-i", "-v", "-ldflags", ldflags()}
+ 	if len(tags) > 0 {
+ 		args = append(args, "-tags", strings.Join(tags, " "))
+ 	}

+ 124 - 0
syncthing/syncthing.spec

@@ -0,0 +1,124 @@
+##
+##  syncthing.spec -- OpenPKG RPM Package Specification
+##  Copyright (c) 2000-2016 OpenPKG Foundation e.V. <http://openpkg.net/>
+##
+##  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  0.13.7
+%define       V_syncthing_snap  20160625
+
+#   package information
+Name:         syncthing
+Summary:      Folder Synchronization Service
+URL:          https://syncthing.net/
+Vendor:       The Syncthing Authors
+Packager:     OpenPKG Foundation e.V.
+Distribution: OpenPKG Community
+Class:        EVAL
+Group:        Filesystem
+License:      MPL
+Version:      %{V_syncthing_base}
+Release:      20160625
+
+#   list of sources
+Source0:      http://download.openpkg.org/components/versioned/syncthing/syncthing-%{V_syncthing_snap}.tar.xz
+Source1:      rc.syncthing
+Patch0:       syncthing.patch
+
+#   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
+    %patch -p0
+
+%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
+
+    #   install program
+    %{l_shtool} install -c -s -m 755 \
+        src/github.com/syncthing/syncthing/bin/syncthing \
+        $RPM_BUILD_ROOT%{l_prefix}/bin/
+
+    #   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 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
+    fi
+    exit 0
+