seafile-server: Update to 7.1.2, revamp package

* 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>
This commit is contained in:
Jeffery To
2020-03-07 06:59:29 +08:00
parent 1d275a8f27
commit cbfd166b15
42 changed files with 1895 additions and 865 deletions
+191 -89
View File
@@ -8,144 +8,246 @@
include $(TOPDIR)/rules.mk
PKG_NAME:=seafile-server
PKG_VERSION:=6.3.4
PKG_RELEASE:=7
PKG_LICENSE:=GPL-3.0
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:=1ba4c641bad8d7592fd2592827e81470c88b8e802707d2b1e6d551c16d0da100
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_MAINTAINER:=Alexandru Ardelean <ardeleanalex@gmail.com>
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))
$(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:=+libarchive +libopenssl +glib2 +libsearpc +seafile-ccnet +seafile-seahub +sqlite3-cli \
+python-mysqlclient +python-urllib3 +jansson +libevent2 +libevent2-openssl \
+libevent2-pthreads +zlib +libzdb +libsqlite3 +libmysqlclient +oniguruma \
+libpthread +libuuid +bash +procps-ng +procps-ng-pkill +SEAFILE_FUSE_SUPPORT:libfuse $(ICONV_DEPENDS)
MENU:=1
endef
define Package/seafile-server/config
source "$(SOURCE)/Config.in"
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.
Open source cloud storage with advanced features on privacy
protection and teamwork.
endef
CONFIGURE_ARGS += --enable-python
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
ifeq ($(CONFIG_SEAFILE_FUSE_SUPPORT),y)
CONFIGURE_ARGS += --enable-fuse
TARGET_CFLAGS += -I$(STAGING_DIR)/usr/include/fuse
else
CONFIGURE_ARGS += --disable-fuse
endif
define Package/seafile-server-fuse/description
$(call Package/seafile-server/description)
ifeq ($(CONFIG_SEAFILE_CONSOLE_SUPPORT),y)
CONFIGURE_ARGS += --enable-console
else
CONFIGURE_ARGS += --disable-console
endif
This package contains the FUSE extension (seaf-fuse) for Seafile
server.
endef
PKG_BUILD_DEPENDS:=vala/host libevhtp
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
# This is required as python-package.mk overrides the default setting of having interlinking enabled
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
TARGET_CFLAGS += -minterlink-mips16
endif
TARGET_LDFLAGS += -Wl,-rpath-link=$(STAGING_DIR)/usr/lib -liconv \
-L$(STAGING_DIR)/usr/lib/mysql -lmysqlclient -lz -levent_openssl -levent
ifdef CONFIG_GCC_LIBSSP
TARGET_LDFLAGS += -lssp
TARGET_LDFLAGS += -lssp
endif
define Package/seafile-server/conffiles
/etc/config/seafile
/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,lib}
$(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
$(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)/usr/share/seafile/conf
$(INSTALL_DIR) $(1)/etc/{config,init.d}
$(CP) $(PKG_INSTALL_DIR)/usr/bin/* $(1)/usr/bin/
$(CP) $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/seafile/ $(1)$(PYTHON_PKG_DIR)/
$(CP) $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/seaserv/ $(1)$(PYTHON_PKG_DIR)/
$(CP) $(PKG_BUILD_DIR)/scripts/seaf-gc.sh $(1)/usr/share/seafile/seafile-server/
$(CP) $(PKG_BUILD_DIR)/scripts/seaf-fsck.sh $(1)/usr/share/seafile/seafile-server/
ifeq ($(CONFIG_SEAFILE_FUSE_SUPPORT),y)
$(CP) $(PKG_BUILD_DIR)/scripts/seaf-fuse.sh $(1)/usr/share/seafile/seafile-server/
endif
$(CP) $(PKG_BUILD_DIR)/scripts/setup-seafile-mysql.py $(1)/usr/share/seafile/seafile-server/
$(CP) $(PKG_BUILD_DIR)/scripts/setup-seafile-mysql.sh $(1)/usr/share/seafile/seafile-server/
$(CP) $(PKG_BUILD_DIR)/scripts/sqlite2mysql.py $(1)/usr/share/seafile/seafile-server/
$(CP) $(PKG_BUILD_DIR)/scripts/sqlite2mysql.sh $(1)/usr/share/seafile/seafile-server/
$(CP) $(PKG_BUILD_DIR)/scripts/check_init_admin.py $(1)/usr/share/seafile/seafile-server/
$(CP) $(PKG_BUILD_DIR)/scripts/upgrade/ $(1)/usr/share/seafile/seafile-server/
$(CP) ./files/seafile.conf $(1)/etc/config/seafile
$(INSTALL_BIN) ./files/seafile.init $(1)/etc/init.d/seafile
$(INSTALL_BIN) ./files/seahub.init $(1)/etc/init.d/seahub
find $(1) -name "*\.pyc" -o -name "*\.pyo" | xargs rm -f
$(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
$(INSTALL_DIR) $(1)/usr/include/seafile
$(INSTALL_DIR) $(1)/usr/lib/pkgconfig
$(INSTALL_DIR) $(1)$(PYTHON_PKG_DIR)
$(CP) $(PKG_INSTALL_DIR)/usr/include/seafile/ $(1)/usr/include/
$(CP) $(PKG_INSTALL_DIR)/usr/lib/pkgconfig/libseafile.pc $(1)/usr/lib/pkgconfig/
$(CP) $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/seafile/ $(1)$(PYTHON_PKG_DIR)/
$(CP) $(PKG_INSTALL_DIR)$(PYTHON_PKG_DIR)/seaserv/ $(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
[ ! -f /etc/init.d/seafile ] && exit 0
cat << EOF
if [ ! -d /usr/share/seafile/seafile-data ]
then
echo "*** Installation completed, running configuration script..."
/etc/init.d/seafile setup
Please see:
if [ $$? -ne 0 ]
then
echo
echo "*** ERROR: Configuration failed. Please fix the issues if any and re-run the script using the command below:"
echo "*** \"/etc/init.d/seafile setup\""
fi
else
echo "*** seafile-data directory already exists."
echo
echo "*** In case you are upgrading seafile, please run the appropriate upgrade script"
echo "*** manually before using the new version."
echo "*** Upgrade scripts are located at \"/usr/share/seafile/seafile-server/upgrade\""
echo
echo "*** For more information, please read http://manual.seafile.com/deploy/upgrade.html"
fi
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))