net-p2p/syncthing: add tools flag
authorDirkjan Ochtman <djc@gentoo.org>
Fri, 24 Jun 2016 20:04:51 +0000 (22:04 +0200)
committerDirkjan Ochtman <djc@gentoo.org>
Fri, 24 Jun 2016 20:04:51 +0000 (22:04 +0200)
Thanks to Alexey Korepanov for implementing this.

Package-Manager: portage-2.2.28

net-p2p/syncthing/files/relaysrv.systemd.patch [new file with mode: 0644]
net-p2p/syncthing/files/syncthing-relaysrv.confd [new file with mode: 0644]
net-p2p/syncthing/files/syncthing-relaysrv.initd [new file with mode: 0644]
net-p2p/syncthing/files/syncthing-relaysrv.logrotate [new file with mode: 0644]
net-p2p/syncthing/files/syncthing.logrotate
net-p2p/syncthing/metadata.xml
net-p2p/syncthing/syncthing-0.13.7-r1.ebuild [new file with mode: 0644]

diff --git a/net-p2p/syncthing/files/relaysrv.systemd.patch b/net-p2p/syncthing/files/relaysrv.systemd.patch
new file mode 100644 (file)
index 0000000..2cff1dc
--- /dev/null
@@ -0,0 +1,13 @@
+diff --git src/github.com/syncthing/syncthing/cmd/relaysrv/etc/linux-systemd/syncthing-relaysrv.service src/github.com/syncthing/syncthing/cmd/relaysrv/etc/linux-systemd/syncthing-relaysrv.service
+index b9d3173..7f8e2c0 100644
+--- src/github.com/syncthing/syncthing/cmd/relaysrv/etc/linux-systemd/syncthing-relaysrv.service
++++ src/github.com/syncthing/syncthing/cmd/relaysrv/etc/linux-systemd/syncthing-relaysrv.service
+@@ -5,7 +5,7 @@ After=network.target
+ [Service]
+ User=syncthing-relaysrv
+ Group=syncthing-relaysrv
+-ExecStart=/usr/bin/relaysrv
++ExecStart=/usr/libexec/syncthing/relaysrv
+ WorkingDirectory=/var/lib/syncthing-relaysrv
+ 
+ PrivateTmp=true
diff --git a/net-p2p/syncthing/files/syncthing-relaysrv.confd b/net-p2p/syncthing/files/syncthing-relaysrv.confd
new file mode 100644 (file)
index 0000000..2effc39
--- /dev/null
@@ -0,0 +1,3 @@
+# Options to pass to relaysrv
+# see relaysrv --help for more information
+SR_OPTS=
diff --git a/net-p2p/syncthing/files/syncthing-relaysrv.initd b/net-p2p/syncthing/files/syncthing-relaysrv.initd
new file mode 100644 (file)
index 0000000..860c5f3
--- /dev/null
@@ -0,0 +1,30 @@
+#!/sbin/openrc-run
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+SR_USER=syncthing-relaysrv
+SR_GROUP=syncthing-relaysrv
+SR_HOMEDIR=/var/lib/syncthing-relaysrv
+SR_LOGFILE=/var/log/syncthing/relaysrv.log
+
+
+description="Relay service for syncthing"
+command="/usr/libexec/syncthing/relaysrv"
+command_args="${SR_OPTS}"
+pidfile="/run/relaysrv.pid"
+start_stop_daemon_args="--background
+  --user ${SR_USER}
+  --group ${SR_GROUP}
+  --chdir \"${SR_HOMEDIR}\"
+  --make-pidfile
+  --stdout \"${SR_LOGFILE}\"
+  --stderr \"${SR_LOGFILE}\" 
+  "
+
+depend() {
+  need net
+}
+
+start_pre() {
+  checkpath -q -d -o ${SR_USER}:${SR_GROUP} ${SR_HOMEDIR}
+  checkpath -q -f -o ${SR_USER}:${SR_GROUP} ${SR_LOGFILE}
+}
diff --git a/net-p2p/syncthing/files/syncthing-relaysrv.logrotate b/net-p2p/syncthing/files/syncthing-relaysrv.logrotate
new file mode 100644 (file)
index 0000000..f168cbf
--- /dev/null
@@ -0,0 +1,6 @@
+/var/log/syncthing/relaysrv.log {
+    missingok
+    notifempty
+    sharedscripts
+    copytruncate
+}
index 37c43209a120a966e4d0d9db1af5ee8e40ca6de1..11310e381afdfd0c88fc973aefa3d8ba9b66e21a 100644 (file)
@@ -2,8 +2,5 @@
     missingok
     notifempty
     sharedscripts
-    postrotate
-        kill -0 $(</run/syncthing.pid) && \
-          /etc/init.d/syncthing restart > /dev/null 2>&1 || true
-    endscript
+    copytruncate
 }
index 78bfd3011c541f2ff96950435dfd7579824e78e5..df7f00257827c74a4b253a4d6fbe5b41ab366d36 100644 (file)
          Syncthing replaces proprietary sync and cloud 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.
   </longdescription>
+  <use>
+       <flag name="tools">
+         Install discosrv, relaysrv and other tools to /usr/libexec/synsthing/.
+       </flag>
+  </use>
   <upstream>
     <remote-id type="github">syncthing/syncthing</remote-id>
     <bugs-to>https://github.com/syncthing/syncthing/issues</bugs-to>
diff --git a/net-p2p/syncthing/syncthing-0.13.7-r1.ebuild b/net-p2p/syncthing/syncthing-0.13.7-r1.ebuild
new file mode 100644 (file)
index 0000000..fdc4011
--- /dev/null
@@ -0,0 +1,108 @@
+# Copyright 1999-2016 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=6
+
+EGO_PN="github.com/syncthing/syncthing"
+EGIT_COMMIT=v${PV}
+
+inherit golang-vcs-snapshot systemd user versionator
+
+DESCRIPTION="Open Source Continuous File Synchronization"
+HOMEPAGE="https://syncthing.net"
+SRC_URI="https://${EGO_PN}/archive/${EGIT_COMMIT}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="MPL-2.0"
+SLOT="0"
+KEYWORDS="~amd64 ~x86 ~arm"
+IUSE="tools"
+
+DEPEND=""
+RDEPEND=""
+
+DOCS="README.md AUTHORS CONTRIBUTING.md"
+
+pkg_setup() {
+       enewgroup ${PN}
+       enewuser ${PN} -1 -1 /var/lib/${PN} ${PN}
+
+       if use tools ; then
+               # separate user for relaysrv
+               enewgroup ${PN}-relaysrv
+               enewuser ${PN}-relaysrv -1 -1 /var/lib/${PN}-relaysrv ${PN}-relaysrv
+       fi
+}
+
+src_prepare() {
+       epatch "${FILESDIR}/relaysrv.systemd.patch"
+       eapply_user
+}
+
+src_compile() {
+       export GOPATH="${S}:$(get_golibdir_gopath)"
+       cd src/${EGO_PN}
+       # If we pass "build" to build.go, it builds only syncthing itself, and
+       # places the binary in the root folder. If we do not pass "build", all the
+       # tools are built, and all binaries are placed in folder ./bin.
+       ST_BUILD="build"
+       if use tools ; then
+               ST_BUILD=""
+       fi
+       go run build.go -version "v${PV}" -no-upgrade ${ST_BUILD} || die "build failed"
+}
+
+src_test() {
+       cd src/${EGO_PN}
+       go run build.go test || die "test failed"
+}
+
+src_install() {
+       cd src/${EGO_PN}
+       doman man/*.[157]
+
+       if use tools ; then
+               dobin bin/syncthing
+               exeinto /usr/libexec/syncthing
+               for exe in bin/* ; do
+                       [ "${exe}" = "bin/syncthing" ] || doexe "${exe}"
+               done
+       else
+               dobin syncthing
+       fi
+
+       # openrc and systemd service files
+       systemd_dounit "${S}"/src/${EGO_PN}/etc/linux-systemd/system/${PN}@.service \
+               "${S}"/src/${EGO_PN}/etc/linux-systemd/system/${PN}-resume.service
+       systemd_douserunit "${S}"/src/${EGO_PN}/etc/linux-systemd/user/${PN}.service
+       newconfd "${FILESDIR}/${PN}.confd" ${PN}
+       newinitd "${FILESDIR}/${PN}.initd" ${PN}
+
+       keepdir /var/{lib,log}/${PN}
+       fowners ${PN}:${PN} /var/{lib,log}/${PN}
+       insinto /etc/logrotate.d
+       newins "${FILESDIR}/${PN}.logrotate" ${PN}
+
+       if use tools ; then
+               # openrc and systemd service files
+               systemd_dounit "${S}"/src/${EGO_PN}/cmd/relaysrv/etc/linux-systemd/${PN}-relaysrv.service
+               newconfd "${FILESDIR}/${PN}-relaysrv.confd" ${PN}-relaysrv
+               newinitd "${FILESDIR}/${PN}-relaysrv.initd" ${PN}-relaysrv
+
+               keepdir /var/lib/${PN}-relaysrv
+               fowners ${PN}-relaysrv:${PN}-relaysrv /var/{lib,log}/${PN}
+
+               insinto /etc/logrotate.d
+               newins "${FILESDIR}/syncthing-relaysrv.logrotate" syncthing-relaysrv
+       fi
+}
+
+pkg_postinst() {
+       if [[ $(get_version_component_range 2) -gt \
+                       $(get_version_component_range 2 ${REPLACING_VERSIONS}) ]]; then
+               ewarn "Version ${PV} is not protocol-compatible with version" \
+                       "0.$(($(get_version_component_range 2) - 1)).x or lower."
+               ewarn "Make sure all your devices are running at least version" \
+                       "0.$(get_version_component_range 2).0."
+       fi
+}