diff options
Diffstat (limited to 'syncthing')
-rw-r--r-- | syncthing/Makefile | 65 | ||||
-rw-r--r-- | syncthing/files/etc/config/syncthing | 26 | ||||
-rwxr-xr-x | syncthing/files/etc/init.d/syncthing | 69 | ||||
-rw-r--r-- | syncthing/files/etc/sysctl.d/90-syncthing-inotify.conf | 1 |
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 |