* Package scripts that are shipped by upstream in their binary download * Includes setup scripts (setup-seafile.sh to use SQLite, setup-seafile-mysql.{sh,py} to use MySQL) and control scripts (seafile.sh, seahub.sh) * Does not include seafile-admin, which is not shipped in upstream's binary download. Combined with the fact that it hasn't been updated to Python 3 suggests the script has been abandoned. * Replace previous init scripts with a simplified script * Previous init scripts (seafile.init, seahub.init) were modified from older versions of seafile.sh and seahub.sh, but they haven't kept up with changes to upstream's scripts * New init script (seafile-server.init) start/stops both Seafile and Seahub (there is no need to control them separately) by calling upstream's control scripts * Replace previous package config file with new config file * Options in previous config file (seafile.conf) were mainly for using Seahub in FastCGI mode. FastCGI was deprecated in Django 1.7 and removed in 1.9; upstream's control script will only start Seahub using Gunicorn. (Options for Gunicorn including port number can be changed by editing /etc/seafile/conf/gunicorn.conf.py.) * New config file (seafile-server.config) has one option that controls where the Seafile/Seahub data directories are stored * Patch scripts/binaries to use standard, system-wide directory locations * Script files (wrappers for binaries) in /usr/bin * Binaries (not meant to be run directly by the user) in /usr/libexec * Config files in /etc/seafile * Pid/socket files in /var/run/seafile * Logs in /var/log/seafile * Include a new script to create the first admin account * With upstream's original scripts, the user is required to interactively create the first admin account when Seahub is started for the first time * The user will now use the new script (create-seafile-admin.sh) to create the first admin account after setup (using setup-seafile.sh or setup-seafile-mysql.sh) and before starting Seafile/Seahub * seahub.sh is patched to only check if there is at least one admin account and exit with an error if there is no admin account * Remove build config options and add seafile-server-fuse package * The console option controls whether the console window is shown when Seafile server is run on Windows. It has no use on Linux. * The fuse option controls whether seaf-fuse is built. (seaf-fuse is a FUSE implementation that allows the Seafile database/file system to be mounted to a local directory.) seaf-fuse is now always built and is available in a separate package (seafile-server-fuse). * Add myself as a maintainer Signed-off-by: Jeffery To <jeffery.to@gmail.com>
253 lines
7 KiB
Makefile
253 lines
7 KiB
Makefile
#
|
|
# Copyright (C) 2007-2017 OpenWrt.org
|
|
#
|
|
# This is free software, licensed under the GNU General Public License v2.
|
|
# See /LICENSE for more information.
|
|
#
|
|
|
|
include $(TOPDIR)/rules.mk
|
|
|
|
PKG_NAME:=seafile-server
|
|
PKG_VERSION:=7.1.2
|
|
PKG_RELEASE:=1
|
|
|
|
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.gz
|
|
PKG_SOURCE_URL:=https://codeload.github.com/haiwen/seafile-server/tar.gz/v$(PKG_VERSION)-server?
|
|
PKG_HASH:=30b972d17eb13da28f4dffcbabd2a2a4a7426a017f694e0fb8440e93fd5bd355
|
|
|
|
PKG_MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>, Jeffery To <jeffery.to@gmail.com>
|
|
PKG_LICENSE:=AGPL-3.0-only
|
|
PKG_LICENSE_FILES:=LICENSE.txt
|
|
|
|
PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(PKG_VERSION)-server
|
|
PKG_BUILD_DEPENDS:=vala/host libevhtp
|
|
|
|
PKG_FIXUP:=autoreconf
|
|
PKG_BUILD_PARALLEL:=1
|
|
PKG_INSTALL:=1
|
|
|
|
include $(INCLUDE_DIR)/package.mk
|
|
include $(INCLUDE_DIR)/nls.mk
|
|
include ../../lang/python/python-package.mk
|
|
include ../../lang/python/python3-package.mk
|
|
|
|
# Check that the actual Makefile version-relase match the above.
|
|
$(eval $(shell awk '/^PKG_VERSION.*=/ { print "SEAHUB_" $$$$0 }' ../seafile-seahub/Makefile))
|
|
ifneq ($(PKG_VERSION),$(SEAHUB_PKG_VERSION))
|
|
$(error $(if $(SEAHUB_PKG_VERSION), \
|
|
Version mismatch between seafile-seahub ($(SEAHUB_PKG_VERSION)) and \
|
|
seafile-server ($(PKG_VERSION)), \
|
|
Could not get PKG_VERSION from seafile-seahub Makefile))
|
|
endif
|
|
|
|
define Package/seafile-server
|
|
SECTION:=net
|
|
CATEGORY:=Network
|
|
TITLE:=Seafile server
|
|
URL:=https://seafile.com/
|
|
DEPENDS:= \
|
|
+bash \
|
|
+glib2 \
|
|
+jansson \
|
|
+libarchive \
|
|
+libevent2 \
|
|
+libevent2-openssl \
|
|
+libmariadb \
|
|
+libopenssl \
|
|
+libpthread \
|
|
+libsearpc \
|
|
+libsqlite3 \
|
|
+libuuid \
|
|
+oniguruma \
|
|
+procps-ng-pkill \
|
|
+python3-pymysql \
|
|
+python3-seafile-server \
|
|
+seafile-ccnet \
|
|
+seafile-seahub \
|
|
+sqlite3-cli \
|
|
+zlib \
|
|
$(ICONV_DEPENDS)
|
|
endef
|
|
|
|
define Package/seafile-server/description
|
|
Open source cloud storage with advanced features on privacy
|
|
protection and teamwork.
|
|
endef
|
|
|
|
define Package/seafile-server-fuse
|
|
SECTION:=net
|
|
CATEGORY:=Network
|
|
TITLE:=Seafile server - FUSE extension
|
|
URL:=https://seafile.com/
|
|
DEPENDS:= \
|
|
+bash \
|
|
+glib2 \
|
|
+jansson \
|
|
+libevent2 \
|
|
+libevent2-openssl \
|
|
+libfuse \
|
|
+libmariadb \
|
|
+libopenssl \
|
|
+libpthread \
|
|
+libsearpc \
|
|
+libsqlite3 \
|
|
+libuuid \
|
|
+procps-ng-pkill \
|
|
+seafile-ccnet \
|
|
+seafile-server \
|
|
+zlib \
|
|
$(ICONV_DEPENDS)
|
|
endef
|
|
|
|
define Package/seafile-server-fuse/description
|
|
$(call Package/seafile-server/description)
|
|
|
|
This package contains the FUSE extension (seaf-fuse) for Seafile
|
|
server.
|
|
endef
|
|
|
|
define Package/python3-seafile-server
|
|
SECTION:=lang
|
|
CATEGORY:=Languages
|
|
SUBMENU:=Python
|
|
TITLE:=Python bindings for Seafile server
|
|
DEPENDS:=+python3-light +python3-logging +python3-searpc +python3-seafile-ccnet
|
|
VARIANT:=python3
|
|
endef
|
|
|
|
define Package/python3-seafile-server/description
|
|
$(call Package/seafile-server/description)
|
|
|
|
This package contains Python bindings for Seafile server.
|
|
endef
|
|
|
|
CONFIGURE_ARGS += \
|
|
--disable-console \
|
|
--enable-fuse \
|
|
--enable-python \
|
|
--with-mysql="$(STAGING_DIR)/usr/bin/mysql_config"
|
|
|
|
# This is required as python[3]-package.mk overrides the default setting of having interlinking enabled
|
|
ifdef CONFIG_USE_MIPS16
|
|
TARGET_CFLAGS += -minterlink-mips16
|
|
endif
|
|
|
|
ifdef CONFIG_GCC_LIBSSP
|
|
TARGET_LDFLAGS += -lssp
|
|
endif
|
|
|
|
define Package/seafile-server/conffiles
|
|
/etc/config/seafile-server
|
|
endef
|
|
|
|
SEAFILE_SERVER_BINARIES:= \
|
|
seaf-fsck \
|
|
seafile-controller \
|
|
seaf-server \
|
|
seaf-server-init \
|
|
seafserv-gc
|
|
|
|
SEAFILE_SERVER_SHELL_SCRIPTS:= \
|
|
reset-admin.sh \
|
|
seaf-fsck.sh \
|
|
seaf-gc.sh \
|
|
seafile.sh \
|
|
seahub.sh \
|
|
setup-seafile-mysql.sh \
|
|
setup-seafile.sh
|
|
# sqlite2mysql.sh handled differently
|
|
|
|
SEAFILE_SERVER_PYTHON_SCRIPTS:= \
|
|
check_init_admin.py \
|
|
setup-seafile-mysql.py \
|
|
sqlite2mysql.py
|
|
|
|
# Include Python 2 bindings in this package to maintain compatibility with previous versions
|
|
define Package/seafile-server/install
|
|
$(INSTALL_DIR) $(1)/usr/{bin,libexec}
|
|
$(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)/{seafile,seaserv}
|
|
$(INSTALL_DIR) $(1)/usr/share/seafile/seafile-server
|
|
$(INSTALL_DIR) $(1)/etc/{config,init.d,seafile}
|
|
$(INSTALL_DIR) $(1)/lib/upgrade/keep.d
|
|
|
|
for bin in $(SEAFILE_SERVER_BINARIES) ; do \
|
|
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/$$$$bin $(1)/usr/libexec/ ; \
|
|
done
|
|
|
|
$(INSTALL_DATA) $(PKG_BUILD_DIR)/python/seafile/*.py $(1)$(PYTHON_PKG_DIR)/seafile/
|
|
$(INSTALL_DATA) $(PKG_BUILD_DIR)/python/seaserv/*.py $(1)$(PYTHON_PKG_DIR)/seaserv/
|
|
|
|
for sh in $(SEAFILE_SERVER_SHELL_SCRIPTS) ; do \
|
|
$(INSTALL_BIN) $(PKG_BUILD_DIR)/scripts/$$$$sh $(1)/usr/bin/$$$${sh%.sh} ; \
|
|
done
|
|
mv $(1)/usr/bin/reset-admin $(1)/usr/bin/reset-seafile-admin
|
|
|
|
$(INSTALL_BIN) $(PKG_BUILD_DIR)/scripts/sqlite2mysql.sh $(1)/usr/share/seafile/seafile-server/
|
|
|
|
for py in $(SEAFILE_SERVER_PYTHON_SCRIPTS) ; do \
|
|
$(INSTALL_DATA) $(PKG_BUILD_DIR)/scripts/$$$$py $(1)/usr/share/seafile/seafile-server/ ; \
|
|
done
|
|
|
|
$(CP) $(PKG_BUILD_DIR)/scripts/{sql,upgrade} $(1)/usr/share/seafile/seafile-server/
|
|
rm -rf $(1)/usr/share/seafile/seafile-server/upgrade/win32
|
|
|
|
$(INSTALL_BIN) ./files/create-seafile-admin.sh $(1)/usr/bin/create-seafile-admin
|
|
|
|
$(INSTALL_CONF) ./files/seafile-server.config $(1)/etc/config/seafile-server
|
|
$(INSTALL_BIN) ./files/seafile-server.init $(1)/etc/init.d/seafile-server
|
|
$(INSTALL_DATA) ./files/seafile-server.upgrade $(1)/lib/upgrade/keep.d/seafile-server
|
|
endef
|
|
|
|
define Build/InstallDev
|
|
$(INSTALL_DIR) $(1)/usr/include/seafile
|
|
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
|
|
$(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
|
|
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/include/seafile/*.h $(1)/usr/include/seafile/
|
|
$(INSTALL_DATA) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libseafile.pc $(1)/usr/lib/pkgconfig/
|
|
endef
|
|
|
|
define Py3Build/Compile
|
|
rm -rf $(PKG_INSTALL_DIR)$(PYTHON3_PKG_DIR)/{seafile,seaserv}
|
|
$(INSTALL_DIR) $(PKG_INSTALL_DIR)$(PYTHON3_PKG_DIR)/{seafile,seaserv}
|
|
$(INSTALL_DATA) $(PKG_BUILD_DIR)/python/seafile/*.py $(PKG_INSTALL_DIR)$(PYTHON3_PKG_DIR)/seafile/
|
|
$(INSTALL_DATA) $(PKG_BUILD_DIR)/python/seaserv/*.py $(PKG_INSTALL_DIR)$(PYTHON3_PKG_DIR)/seaserv/
|
|
endef
|
|
|
|
define Package/seafile-server-fuse/install
|
|
$(INSTALL_DIR) $(1)/usr/{bin,libexec}
|
|
$(INSTALL_BIN) $(PKG_INSTALL_DIR)/usr/bin/seaf-fuse $(1)/usr/libexec/
|
|
$(INSTALL_BIN) $(PKG_BUILD_DIR)/scripts/seaf-fuse.sh $(1)/usr/bin/seaf-fuse
|
|
endef
|
|
|
|
Py3Package/python3-seafile-server/install:=:
|
|
|
|
define Package/seafile-server/postinst
|
|
#!/bin/sh
|
|
cat << EOF
|
|
|
|
Please see:
|
|
|
|
https://github.com/openwrt/packages/blob/master/net/seafile-server/README.md
|
|
|
|
for OpenWrt-specific installation notes (in particular, if you are
|
|
upgrading from a version before 7.1).
|
|
|
|
EOF
|
|
|
|
[ -z "$$IPKG_INSTROOT" ] || exit 0
|
|
|
|
cat << EOF
|
|
|
|
opkg will attempt to start Seafile server now. This may fail if you have
|
|
not set up Seafile server before or if you are upgrading and have not
|
|
run the upgrade scripts.
|
|
|
|
EOF
|
|
endef
|
|
|
|
$(eval $(call BuildPackage,seafile-server))
|
|
$(eval $(call BuildPackage,seafile-server-fuse))
|
|
|
|
$(eval $(call Py3Package,python3-seafile-server))
|
|
$(eval $(call BuildPackage,python3-seafile-server))
|
|
$(eval $(call BuildPackage,python3-seafile-server-src))
|