summaryrefslogtreecommitdiff
path: root/syncthing
diff options
context:
space:
mode:
Diffstat (limited to 'syncthing')
-rw-r--r--syncthing/Makefile65
-rw-r--r--syncthing/files/etc/config/syncthing26
-rwxr-xr-xsyncthing/files/etc/init.d/syncthing69
-rw-r--r--syncthing/files/etc/sysctl.d/90-syncthing-inotify.conf1
4 files changed, 161 insertions, 0 deletions
diff --git a/syncthing/Makefile b/syncthing/Makefile
new file mode 100644
index 0000000..52e148f
--- /dev/null
+++ b/syncthing/Makefile
@@ -0,0 +1,65 @@
+include $(TOPDIR)/rules.mk
+
+PKG_NAME:=syncthing
+PKG_VERSION:=1.18.1
+PKG_RELEASE:=$(AUTORELEASE)
+
+PKG_SOURCE:=syncthing-source-v$(PKG_VERSION).tar.gz
+PKG_SOURCE_URL:=https://github.com/syncthing/syncthing/releases/download/v$(PKG_VERSION)
+PKG_HASH:=3f6b8e87a59e72ab3389d89364524e6abec454d4c36aaf3e334ac6fe37915584
+
+PKG_BUILD_DIR=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)/$(PKG_NAME)
+
+PKG_MAINTAINER:=Paul Spooren <mail@aparcar.org>
+PKG_LICENSE:=MPL-2.0
+PKG_LICENSE_FILES:=LICENSE
+PKG_CPE_ID:=cpe:/a:syncthing:syncthing
+
+PKG_BUILD_DEPENDS:=golang/host
+PKG_BUILD_PARALLEL:=1
+PKG_USE_MIPS16:=0
+
+GO_PKG:=github.com/syncthing/syncthing/
+GO_PKG_BUILD_PKG:=github.com/syncthing/syncthing/cmd/syncthing/
+GO_PKG_INSTALL_EXTRA:=^gui/
+
+GO_PKG_LDFLAGS_X:=\
+ github.com/syncthing/syncthing/lib/build.Version=v$(PKG_VERSION) \
+ github.com/syncthing/syncthing/lib/build.Stamp=$(SOURCE_DATE_EPOCH) \
+ github.com/syncthing/syncthing/lib/build.User=openwrt \
+ github.com/syncthing/syncthing/lib/build.Host=openwrt \
+ github.com/syncthing/syncthing/lib/build.Program=syncthing
+GO_PKG_TAGS:=noupgrade
+
+include $(INCLUDE_DIR)/package.mk
+include $(TOPDIR)/feeds/packages/lang/golang/golang-package.mk
+
+define Package/syncthing
+ TITLE:=Continuous file synchronization program
+ URL:=https://syncthing.net
+ DEPENDS:=$(GO_ARCH_DEPENDS)
+ SECTION:=utils
+ CATEGORY:=Utilities
+ USERID:=syncthing=499:syncthing=499
+endef
+
+define Package/syncthing/conffiles
+/etc/config/syncthing
+/etc/syncthing
+endef
+
+define Package/syncthing/description
+ 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.
+endef
+
+define Package/syncthing/install
+ $(call GoPackage/Package/Install/Bin,$(1))
+
+ $(CP) ./files/* $(1)/
+endef
+
+$(eval $(call GoBinPackage,syncthing))
+$(eval $(call BuildPackage,syncthing))
diff --git a/syncthing/files/etc/config/syncthing b/syncthing/files/etc/config/syncthing
new file mode 100644
index 0000000..291675d
--- /dev/null
+++ b/syncthing/files/etc/config/syncthing
@@ -0,0 +1,26 @@
+
+config syncthing 'syncthing'
+ option enabled '0'
+
+ option gui_address 'http://127.0.0.1:8384'
+
+ # Use internal flash for evaluation purpouses. Use external storage
+ # for production.
+ # This filesystem must either support ownership/attributes or
+ # be readable/writable by the user specified in
+ # 'option user'.
+ # Consult syslog if things go wrong.
+ option home '/etc/syncthing'
+
+ # Changes to "niceness"/macprocs are not picked up by "reload_config"
+ # nor by "restart": the service has to be stopped/started
+ # for those to take effect
+ option nice '19'
+
+ # 0 to match the number of CPUs (default)
+ # >0 to explicitly specify concurrency
+ option macprocs '0'
+
+ # Running as 'root' is possible, but not recommended
+ option user 'syncthing'
+
diff --git a/syncthing/files/etc/init.d/syncthing b/syncthing/files/etc/init.d/syncthing
new file mode 100755
index 0000000..f77aad8
--- /dev/null
+++ b/syncthing/files/etc/init.d/syncthing
@@ -0,0 +1,69 @@
+#!/bin/sh /etc/rc.common
+
+START=90
+STOP=10
+
+USE_PROCD=1
+
+PROG=/usr/bin/syncthing
+
+service_triggers()
+{
+ procd_add_reload_trigger "syncthing"
+}
+
+start_service() {
+ local gui_address home enabled nice macprocs user
+ config_load "syncthing"
+
+ # Some of the default values below might not match the defaults
+ # in /etc/config/syncthing: the reason is to remain backwards
+ # compatible with the older versions of this service as it
+ # evolves.
+
+ config_get_bool enabled syncthing enabled 1
+ [ "$enabled" -gt 0 ] || return 0
+
+ config_get user syncthing user 'root'
+ config_get gui_address syncthing gui_address "http://127.0.0.1:8384"
+ config_get home syncthing home "/etc/syncthing"
+
+ # For backwards compatibility
+ IDX_DB=$(readlink -n "$home"/index-v0.14.0.db)
+ if [ ! -z "$IDX_DB" ]; then
+ [ -d "$IDX_DB" ] || mkdir -p "$IDX_DB"
+
+ # A separate step to handle an upgrade use case
+ [ -d "$IDX_DB" ] && chown -R $user:$user "$IDX_DB"
+ fi
+
+ [ -d "$home" ] || mkdir -p "$home"
+ # A separate step to handle an upgrade use case
+ [ -d "$home" ] && chown -R $user:$user "$home"
+
+ # Changes to "niceness"/macprocs are not picked up by "reload_config"
+ # nor by "restart": the service has to be stopped/started
+ # for it to take effect
+ config_get nice syncthing nice "0"
+
+ config_get macprocs syncthing macprocs 0
+ if [ $macprocs -le 0 ]; then
+ # Default to the number of cores in this case
+ macprocs=$(grep -c ^processor /proc/cpuinfo)
+ fi
+
+ procd_open_instance
+ procd_set_param command "$PROG"
+ procd_set_param file /etc/config/syncthing
+ procd_set_param env GOMAXPROCS="$macprocs" STNOUPGRADE=1
+ procd_append_param command -gui-address="$gui_address"
+ procd_append_param command -home="$home"
+ procd_append_param command -no-browser
+ procd_set_param nice "$nice"
+ procd_set_param term_timeout 15
+ procd_set_param user "$user"
+ procd_set_param respawn
+ procd_set_param stdout 1
+ procd_set_param stderr 1
+ procd_close_instance
+}
diff --git a/syncthing/files/etc/sysctl.d/90-syncthing-inotify.conf b/syncthing/files/etc/sysctl.d/90-syncthing-inotify.conf
new file mode 100644
index 0000000..1e65bf9
--- /dev/null
+++ b/syncthing/files/etc/sysctl.d/90-syncthing-inotify.conf
@@ -0,0 +1 @@
+fs.inotify.max_user_watches=204800