--- net-mgmt/seafile/Makefile (revision 413865) +++ net-mgmt/seafile/Makefile (working copy) @@ -1,16 +1,16 @@ # $FreeBSD$ PORTNAME= seafile -PORTVERSION= 4.0.6 -PORTREVISION= 3 +PORTVERSION= 5.1.1 DISTVERSIONPREFIX= v DISTVERSIONSUFFIX= -server -CATEGORIES= net-mgmt devel +CATEGORIES= net-mgmt MAINTAINER= ultima1252@gmail.com -COMMENT= Framework for writing networked applications +COMMENT= Open Source Cloud Storage (Server) LICENSE= GPLv3 +LICENSE_FILE= ${WRKSRC}/LICENSE.txt BUILD_DEPENDS= valac:lang/vala LIB_DEPENDS= libsearpc.so:devel/libsearpc \ @@ -19,18 +19,20 @@ libcurl.so:ftp/curl \ libinotify.so:devel/libinotify \ libccnet.so:net-mgmt/ccnet -RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}eggtestinfo>0:devel/py-eggtestinfo \ - ${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3 \ - ${PYTHON_PKGNAMEPREFIX}pillow>0:graphics/py-pillow \ +RUN_DEPENDS= ${PYTHON_PKGNAMEPREFIX}sqlite3>0:databases/py-sqlite3 \ bash:shells/bash USE_GITHUB= yes GH_ACCOUNT= haiwen -USES= autoreconf iconv libarchive libtool pathfix pkgconfig python:2 \ +USES= autoreconf iconv libarchive libtool pathfix pkgconfig python:-2.7 \ shebangfix -SHEBANG_FILES= scripts/*.sh scripts/upgrade/*.sh +SHEBANG_FILES= scripts/*.sh scripts/upgrade/*.sh tests/*.py tests/basic/*.sh \ + tests/sync-auto-test/*.template *.sh scripts/build/*.py \ + scripts/*.py *.py scripts/upgrade/*.py app/seaf-cli \ + tools/seafile-admin GNU_CONFIGURE= yes +USE_MYSQL= client USE_OPENSSL= yes USE_LDCONFIG= yes CONFIGURE_ENV= SSL_CFLAGS="${OPENSSLINC}" SSL_LIBS="-L${OPENSSLLIB} -lssl -lcrypto" @@ -47,15 +49,22 @@ SEABIN= ${SEAFILE_SERVER}/seafile/bin SEALIB= ${SEAFILE_SERVER}/seafile/lib -SEAFILE_USERNAME?= www -SEAFILE_GROUPNAME?= ${SEAFILE_USERNAME} +USERS= seafile +GROUPS= ${USERS} USE_RC_SUBR= ${PORTNAME} -PLIST_SUB= SEAFILE_USERNAME=${SEAFILE_USERNAME} \ - SEAFILE_GROUPNAME=${SEAFILE_GROUPNAME} \ +PLIST_SUB= USERS=${USERS} \ + GROUPS=${GROUPS} \ SEAFILE_SERVER=${SEAFILE_SERVER} \ HAIWENDIR=${HAIWENDIR} +SUB_FILES= pkg-message + +SUB_LIST+= USERS=${USERS} \ + GROUPS=${GROUPS} \ + SEAFILE_SERVER=${SEAFILE_SERVER} \ + HAIWENDIR=${HAIWENDIR} + MAKE_JOBS_UNSAFE= yes OPTIONS_DEFINE= FUSE RIAK @@ -70,25 +79,48 @@ RIAK_CONFIGURE_ENABLE= riak RIAK_RUN_DEPENDS= riak:databases/riak -OPTIONS_DEFAULT=FUSE +OPTIONS_DEFAULT= FUSE .if defined(DFLYVERSION) OPTIONS_DEFAULT= .endif +.include + +post-patch: +# Fix P_KTHREAD r295435 +.if ${OSVERSION} >= 1100097 + ${REINPLACE_CMD} 's/P_KTHREAD/P_KPROC/' ${WRKSRC}/lib/utils.c +.endif + ${REINPLACE_CMD} 's/python/${PYTHON_VERSION}/' \ + ${WRKSRC}/scripts/upgrade/regenerate_secret_key.sh + ${REINPLACE_CMD} -e 's|^INSTALL.*|INSTALLPATH="${PREFIX}/${SEAFILE_SERVER}/seafile"|' \ + ${WRKSRC}/scripts/seaf-cli-wrapper.sh + ${REINPLACE_CMD} 's///' ${WRKSRC}/server/upload-file.c \ + ${WRKSRC}/server/access-file.c ${WRKSRC}/server/http-server.c post-install: - @${MKDIR} ${STAGEDIR}${PREFIX}/${SEABIN} ${STAGEDIR}${PREFIX}/${SEALIB}\ + @${MKDIR} ${STAGEDIR}${PREFIX}/${SEABIN} ${STAGEDIR}${PREFIX}/${SEALIB} \ ${STAGEDIR}${PREFIX}/${SEAFILE_SERVER}/seafile/share/doc/seafile \ ${STAGEDIR}${PREFIX}/${SEAFILE_SERVER}/upgrade .for SERVPROG in seaf-fsck seafserv-gc seaf-fuse seaf-migrate \ - seaf-server seaf-server-init seafile-controller + seaf-server seaf-server-init seafile-controller if [ -e "${STAGEDIR}${PREFIX}/bin/${SERVPROG}" ]; then \ ${INSTALL_PROGRAM} ${STAGEDIR}${PREFIX}/bin/${SERVPROG} ${STAGEDIR}${PREFIX}/${SEABIN}; \ ${RM} ${STAGEDIR}${PREFIX}/bin/${SERVPROG}; \ fi .endfor +.for SERVPROG in seafile-controller seaf-server + ${LN} -s ${PREFIX}/${SEABIN}/${SERVPROG} ${STAGEDIR}${PREFIX}/bin/ +.endfor + + ${INSTALL_SCRIPT} ${STAGEDIR}${PREFIX}/bin/seaf-cli ${STAGEDIR}${PREFIX}/${SEABIN}/seaf-cli.py + ${INSTALL_SCRIPT} ${WRKSRC}/scripts/seaf-cli-wrapper.sh ${STAGEDIR}${PREFIX}/bin/seaf-cli (cd ${STAGEDIR}${PREFIX}/lib && \ ${COPYTREE_SHARE} ${PYTHON_VERSION} ${STAGEDIR}${PREFIX}/${SEALIB}) - @${RM} -rf ${STAGEDIR}${PREFIX}/lib/${PYTHON_VERSION} + @${RM} -rf ${STAGEDIR}${PREFIX}/lib/${PYTHON_VERSION} \ + ${WRKSRC}/scripts/seaf-cli-wrapper.sh \ + ${WRKSRC}/scripts/sqlite2mysql.[ps][yh] \ + ${WRKSRC}/scripts/setup-seafile.sh \ + ${STAGEDIR}${PREFIX}/bin/seafile-admin ${INSTALL_SCRIPT} ${WRKSRC}/scripts/*.[ps][yh] ${STAGEDIR}${PREFIX}/${SEAFILE_SERVER} ${INSTALL_SCRIPT} ${WRKSRC}/scripts/upgrade/*.[ps][yh] \ ${STAGEDIR}${PREFIX}/${SEAFILE_SERVER}/upgrade --- net-mgmt/seafile/distinfo (revision 413865) +++ net-mgmt/seafile/distinfo (working copy) @@ -1,2 +1,2 @@ -SHA256 (haiwen-seafile-v4.0.6-server_GH0.tar.gz) = 3f9aacc53c67aa165c66a4546a6f8c7ad3a002f741578a538b0c0965a73317bf -SIZE (haiwen-seafile-v4.0.6-server_GH0.tar.gz) = 1082453 +SHA256 (haiwen-seafile-v5.1.1-server_GH0.tar.gz) = 60b5bf6cfc3f65359eada827733eb4c4720535db3c6dc1a37be1c3470f7c7030 +SIZE (haiwen-seafile-v5.1.1-server_GH0.tar.gz) = 1137616 --- net-mgmt/seafile/files/patch-common_obj-backend-fs.c (revision 413865) +++ net-mgmt/seafile/files/patch-common_obj-backend-fs.c (working copy) @@ -1,6 +1,6 @@ ---- common/obj-backend-fs.c.orig 2015-01-28 02:14:45.000000000 -0500 -+++ common/obj-backend-fs.c 2015-01-28 02:15:58.000000000 -0500 -@@ -101,7 +101,7 @@ +--- common/obj-backend-fs.c.orig 2015-09-21 03:42:11 UTC ++++ common/obj-backend-fs.c +@@ -101,7 +101,7 @@ obj_backend_fs_read (ObjBackend *bend, static int fsync_obj_contents (int fd) { @@ -9,7 +9,7 @@ /* Some file systems may not support fsync(). * In this case, just skip the error. */ -@@ -153,7 +153,7 @@ +@@ -153,7 +153,7 @@ fsync_obj_contents (int fd) static int rename_and_sync (const char *tmp_path, const char *obj_path) { --- net-mgmt/seafile/files/patch-configure.ac (revision 413865) +++ net-mgmt/seafile/files/patch-configure.ac (working copy) @@ -1,6 +1,6 @@ ---- configure.ac.orig 2015-01-21 22:45:28.000000000 -0500 -+++ configure.ac 2015-01-28 14:01:20.000000000 -0500 -@@ -50,8 +50,16 @@ +--- configure.ac.orig 2015-09-21 03:42:11 UTC ++++ configure.ac +@@ -50,8 +50,16 @@ else AC_MSG_RESULT(no) fi @@ -18,7 +18,7 @@ blinux=true AC_MSG_RESULT(compile in linux) else -@@ -93,6 +101,11 @@ +@@ -93,6 +101,11 @@ if test "$bwin32" != true; then [compile_fuse=$enableval],[compile_fuse="yes"]) fi @@ -30,7 +30,7 @@ AC_ARG_ENABLE(client, AC_HELP_STRING([--enable-client], [enable client]), [compile_client=$enableval],[compile_client="yes"]) -@@ -148,6 +161,7 @@ +@@ -148,6 +161,7 @@ AM_CONDITIONAL([COMPILE_FUSE], [test "${ AM_CONDITIONAL([WIN32], [test "$bwin32" = "true"]) AM_CONDITIONAL([MACOS], [test "$bmac" = "true"]) @@ -38,10 +38,10 @@ AM_CONDITIONAL([LINUX], [test "$blinux" = "true"]) -@@ -192,6 +206,9 @@ - LIB_PSAPI=-lpsapi +@@ -193,6 +207,9 @@ if test "$bwin32" = true; then LIB_MAC= MSVC_CFLAGS="-D__MSVCRT__ -D__MSVCRT_VERSION__=0x0601" + LIB_CRYPT32=-lcrypt32 + ZLIB_LIBS= + LIB_INOTIFY= + LIB_KVM= @@ -48,10 +48,10 @@ elif test "$bmac" = true ; then LIB_WS32= LIB_GDI32= -@@ -204,6 +221,24 @@ - LIB_PSAPI= +@@ -206,6 +223,25 @@ elif test "$bmac" = true ; then MSVC_CFLAGS= LIB_MAC="-framework CoreServices" + LIB_CRYPT32= + ZLIB_LIBS= + LIB_INOTIFY= + LIB_KVM= @@ -59,7 +59,7 @@ + LIB_WS32= + LIB_GDI32= + LIB_RT= -+ LIB_INTL= ++ LIB_INTL= + LIB_RESOLV= + LIB_UUID=-luuid + LIB_IPHLPAPI= @@ -67,6 +67,7 @@ + LIB_PSAPI= + LIB_MAC= + MSVC_CFLAGS= ++ LIB_CRYPT32= + ZLIB_LIBS=-lz + LIB_INOTIFY=-linotify + LIB_KVM=-lkvm @@ -73,10 +74,10 @@ else LIB_WS32= LIB_GDI32= -@@ -216,6 +251,9 @@ - LIB_PSAPI= +@@ -219,6 +255,9 @@ else LIB_MAC= MSVC_CFLAGS= + LIB_CRYPT32= + ZLIB_LIBS=-lz + LIB_INOTIFY=-linotify + LIB_KVM= @@ -83,7 +84,7 @@ fi AC_SUBST(LIB_WS32) -@@ -228,6 +266,9 @@ +@@ -231,6 +270,9 @@ AC_SUBST(LIB_IPHLPAPI) AC_SUBST(LIB_SHELL32) AC_SUBST(LIB_PSAPI) AC_SUBST(LIB_MAC) @@ -91,9 +92,9 @@ +AC_SUBST(LIB_INOTIFY) +AC_SUBST(LIB_KVM) AC_SUBST(MSVC_CFLAGS) + AC_SUBST(LIB_CRYPT32) - -@@ -240,7 +281,9 @@ +@@ -244,7 +286,9 @@ ZDB_REQUIRED=2.10 #LIBNAUTILUS_EXTENSION_REQUIRED=2.30.1 CURL_REQUIRED=7.17 FUSE_REQUIRED=2.7.3 @@ -103,7 +104,7 @@ PKG_CHECK_MODULES(SSL, [openssl]) AC_SUBST(SSL_CFLAGS) -@@ -270,9 +313,11 @@ +@@ -274,9 +318,11 @@ PKG_CHECK_MODULES(LIBEVENT, [libevent >= AC_SUBST(LIBEVENT_CFLAGS) AC_SUBST(LIBEVENT_LIBS) --- net-mgmt/seafile/files/patch-controller_seafile-controller.c (revision 413865) +++ net-mgmt/seafile/files/patch-controller_seafile-controller.c (working copy) @@ -1,5 +1,5 @@ ---- controller/seafile-controller.c.orig 2015-01-28 13:03:24.000000000 -0500 -+++ controller/seafile-controller.c 2015-01-28 13:15:05.000000000 -0500 +--- controller/seafile-controller.c.orig 2015-09-21 03:42:11 UTC ++++ controller/seafile-controller.c @@ -17,6 +17,19 @@ #include "log.h" #include "seafile-controller.h" @@ -20,7 +20,7 @@ #define CHECK_PROCESS_INTERVAL 10 /* every 10 seconds */ SeafileController *ctl; -@@ -247,7 +260,20 @@ +@@ -247,7 +260,20 @@ static void init_seafile_path () { GError *error = NULL; @@ -41,7 +41,7 @@ char *tmp = NULL; if (error != NULL) { seaf_warning ("failed to readlink: %s\n", error->message); -@@ -261,7 +287,9 @@ +@@ -261,7 +287,9 @@ init_seafile_path () topdir = g_path_get_dirname (installpath); @@ -51,7 +51,7 @@ g_free (tmp); } -@@ -401,11 +429,40 @@ +@@ -402,11 +430,40 @@ need_restart (int which) return FALSE; } else { char buf[256]; @@ -92,7 +92,7 @@ } } } -@@ -852,6 +909,9 @@ +@@ -877,6 +934,9 @@ int main (int argc, char **argv) exit (1); } --- net-mgmt/seafile/files/patch-daemon_Makefile.am (revision 413865) +++ net-mgmt/seafile/files/patch-daemon_Makefile.am (working copy) @@ -1,6 +1,6 @@ ---- daemon/Makefile.am.orig 2015-01-28 13:48:56.000000000 -0500 -+++ daemon/Makefile.am 2015-01-28 13:55:22.000000000 -0500 -@@ -65,6 +65,10 @@ +--- daemon/Makefile.am.orig 2016-04-15 23:08:45 UTC ++++ daemon/Makefile.am +@@ -63,6 +63,10 @@ if LINUX wt_monitor_src = wt-monitor.c wt-monitor-linux.c wt-monitor-structs.c endif @@ -11,13 +11,12 @@ if WIN32 wt_monitor_src = wt-monitor.c wt-monitor-win32.c wt-monitor-structs.c endif -@@ -127,7 +131,8 @@ +@@ -126,6 +130,7 @@ seaf_daemon_LDADD = $(top_builddir)/lib/ @GLIB2_LIBS@ @GOBJECT_LIBS@ @SSL_LIBS@ @LIB_RT@ @LIB_UUID@ -lsqlite3 @LIBEVENT_LIBS@ \ $(top_builddir)/common/cdc/libcdc.la \ - $(top_builddir)/common/index/libindex.la ${LIB_WS32} \ -- @SEARPC_LIBS@ @CCNET_LIBS@ @GNOME_KEYRING_LIBS@ @JANSSON_LIBS@ @LIB_MAC@ @ZLIB_LIBS@ @CURL_LIBS@ -+ @SEARPC_LIBS@ @CCNET_LIBS@ @GNOME_KEYRING_LIBS@ @JANSSON_LIBS@ @LIB_MAC@ @ZLIB_LIBS@ \ -+ @CURL_LIBS@ @LIB_INOTIFY@ + $(top_builddir)/common/index/libindex.la @LIB_WS32@ @LIB_CRYPT32@ \ +- @SEARPC_LIBS@ @CCNET_LIBS@ @GNOME_KEYRING_LIBS@ @JANSSON_LIBS@ @LIB_MAC@ @ZLIB_LIBS@ @CURL_LIBS@ @BPWRAPPER_LIBS@ ++ @SEARPC_LIBS@ @CCNET_LIBS@ @GNOME_KEYRING_LIBS@ @JANSSON_LIBS@ \ ++ @LIB_MAC@ @ZLIB_LIBS@ @CURL_LIBS@ @LIB_INOTIFY@ @BPWRAPPER_LIBS@ seaf_daemon_LDFLAGS = @STATIC_COMPILE@ @CONSOLE@ - --- net-mgmt/seafile/files/patch-daemon_http-tx-mgr.c (nonexistent) +++ net-mgmt/seafile/files/patch-daemon_http-tx-mgr.c (working copy) @@ -0,0 +1,25 @@ +--- daemon/http-tx-mgr.c.orig 2015-09-21 03:42:11 UTC ++++ daemon/http-tx-mgr.c +@@ -58,6 +58,22 @@ + #define USER_AGENT_OS "Linux" + #endif + ++#ifdef __FreeBSD__ ++#define USER_AGENT_OS "FreeBSD" ++#endif ++ ++#ifdef __DragonFly__ ++#define USER_AGENT_OS "DragonFly" ++#endif ++ ++#ifdef __NetBSD__ ++#define USER_AGENT_OS "NetBSD" ++#endif ++ ++#ifdef __OpenBSD__ ++#define USER_AGENT_OS "OpenBSD" ++#endif ++ + struct _Connection { + CURL *curl; + gint64 ctime; /* Used to clean up unused connection. */ --- net-mgmt/seafile/files/patch-daemon_repo-mgr.c (revision 413865) +++ net-mgmt/seafile/files/patch-daemon_repo-mgr.c (working copy) @@ -1,53 +1,47 @@ ---- daemon/repo-mgr.c.orig 2015-01-28 02:18:05.000000000 -0500 -+++ daemon/repo-mgr.c 2015-01-28 02:22:10.000000000 -0500 -@@ -2514,13 +2514,13 @@ +--- daemon/repo-mgr.c.orig 2016-04-15 23:11:05 UTC ++++ daemon/repo-mgr.c +@@ -4382,7 +4382,7 @@ checkout_file (const char *repo_id, gboolean force_conflict = FALSE; gboolean update_mode_only = FALSE; -#ifndef __linux__ -+#if defined(__linux__) || defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(__OpenBSD__) -+ path = build_checkout_path (worktree, name, strlen(name)); -+#else ++#if !defined(__linux__) && !defined(__FreeBSD__) && !defined(__DragonFly__) && !defined(__NetBSD__) && !defined(__OpenBSD__) path = build_case_conflict_free_path (worktree, name, conflict_hash, no_conflict_hash, &case_conflict, - FALSE); --#else -- path = build_checkout_path (worktree, name, strlen(name)); - #endif - - if (!path) -@@ -2675,13 +2675,13 @@ +@@ -4558,7 +4558,7 @@ checkout_empty_dir (const char *worktree char *path; gboolean case_conflict = FALSE; -#ifndef __linux__ -+#if defined(__linux__) || defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(__OpenBSD__) -+ path = build_checkout_path (worktree, name, strlen(name)); -+#else ++#if !defined(__linux__) && !defined(__FreeBSD__) && !defined(__DragonFly__) && !defined(__NetBSD__) && !defined(__OpenBSD__) path = build_case_conflict_free_path (worktree, name, conflict_hash, no_conflict_hash, &case_conflict, - FALSE); --#else -- path = build_checkout_path (worktree, name, strlen(name)); - #endif +@@ -4972,7 +4972,7 @@ schedule_file_fetch (GThreadPool *tpool, + new_ce = TRUE; + } - if (!path) -@@ -2839,13 +2839,13 @@ +-#ifndef __linux__ ++#if !defined(__linux__) && !defined(__FreeBSD__) && !defined(__DragonFly__) && !defined(__NetBSD__) && !defined(__OpenBSD__) + gboolean case_conflict = FALSE; + path = build_case_conflict_free_path (worktree, de->name, + conflict_hash, no_conflict_hash, +@@ -5117,7 +5117,7 @@ checkout_file_http (FileTxData *data, + * A.txt to checkout, we can only detect case conflict after one file is checkecd + * out. So we need to generate a new one here. + */ +-#ifndef __linux__ ++#if !defined(__linux__) && !defined(__FreeBSD__) && !defined(__DragonFly__) && !defined(__NetBSD__) && !defined(__OpenBSD__) + path = build_case_conflict_free_path (worktree, de->name, + conflict_hash, no_conflict_hash, + &case_conflict, +@@ -5487,7 +5487,7 @@ do_rename_in_worktree (DiffEntry *de, co old_path = g_build_filename (worktree, de->name, NULL); if (seaf_util_exists (old_path)) { -#ifndef __linux__ -+#if defined(__linux__) || defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(__OpenBSD__) -+ new_path = build_checkout_path (worktree, de->new_name, strlen(de->new_name)); -+#else ++#if !defined(__linux__) && !defined(__FreeBSD__) && !defined(__DragonFly__) && !defined(__NetBSD__) && !defined(__OpenBSD__) + gboolean case_conflict; new_path = build_case_conflict_free_path (worktree, de->new_name, conflict_hash, no_conflict_hash, - &case_conflict, - TRUE); --#else -- new_path = build_checkout_path (worktree, de->new_name, strlen(de->new_name)); - #endif - - if (seaf_util_rename (old_path, new_path) < 0) { --- net-mgmt/seafile/files/patch-daemon_vc-utils.c (revision 413865) +++ net-mgmt/seafile/files/patch-daemon_vc-utils.c (working copy) @@ -1,6 +1,6 @@ ---- daemon/vc-utils.c.orig 2015-01-28 02:24:19.000000000 -0500 -+++ daemon/vc-utils.c 2015-01-28 02:30:05.000000000 -0500 -@@ -664,7 +664,7 @@ +--- daemon/vc-utils.c.orig 2016-04-05 08:38:26 UTC ++++ daemon/vc-utils.c +@@ -664,7 +664,7 @@ error: #endif /* defined WIN32 || defined __APPLE__ */ @@ -9,20 +9,12 @@ char * build_checkout_path (const char *worktree, const char *ce_name, int len) -@@ -724,13 +724,13 @@ +@@ -724,7 +724,7 @@ checkout_entry (struct cache_entry *ce, gboolean force_conflict = FALSE; path_in = g_build_path ("/", o->base, ce->name, NULL); -#ifndef __linux__ -+#if defined(__linux__) || defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(__OpenBSD__) -+ path = build_checkout_path (o->base, ce->name, ce_namelen(ce)); -+#else ++#if !defined(__linux__) && !defined(__FreeBSD__) && !defined(__DragonFly__) && !defined(__NetBSD__) && !defined(__OpenBSD__) path = build_case_conflict_free_path (o->base, ce->name, conflict_hash, no_conflict_hash, &case_conflict, - FALSE); --#else -- path = build_checkout_path (o->base, ce->name, ce_namelen(ce)); - #endif - - g_free (path_in); --- net-mgmt/seafile/files/patch-lib_Makefile.am (nonexistent) +++ net-mgmt/seafile/files/patch-lib_Makefile.am (working copy) @@ -0,0 +1,29 @@ +--- lib/Makefile.am.orig 2015-10-12 04:12:33 UTC ++++ lib/Makefile.am +@@ -53,6 +53,7 @@ libseafile_common_la_SOURCES = ${seafile + libseafile_common_la_LDFLAGS = -no-undefined + libseafile_common_la_LIBADD = @GLIB2_LIBS@ @GOBJECT_LIBS@ @SSL_LIBS@ -lcrypto @LIB_GDI32@ \ + @LIB_UUID@ @LIB_WS32@ @LIB_PSAPI@ -lsqlite3 \ ++ @LIB_KVM@ \ + @LIBEVENT_LIBS@ @SEARPC_LIBS@ @LIB_SHELL32@ \ + @ZLIB_LIBS@ + +@@ -74,7 +75,7 @@ vala.stamp: ${seafile_object_define} + rm -f ${seafile_object_gen} + @rm -f vala.tmp + @touch vala.tmp +- valac -C --pkg posix $^ ++ valac -C --pkg posix ${seafile_object_define} + @mv -f vala.tmp $@ + + ${seafile_object_gen}: vala.stamp +@@ -90,5 +91,9 @@ install-data-local: + if MACOS + sed -i '' -e "s|(DESTDIR)|${DESTDIR}|g" $(pcfiles) + else ++if BSD ++ sed -i '' "s|(DESTDIR)|${PREFIX}|g" $(pcfiles) ++else + ${SED} -i "s|(DESTDIR)|${DESTDIR}|g" $(pcfiles) + endif ++endif --- net-mgmt/seafile/files/patch-lib_Makfile.am (revision 413865) +++ net-mgmt/seafile/files/patch-lib_Makfile.am (nonexistent) @@ -1,29 +0,0 @@ ---- lib/Makefile.am.orig 2015-01-28 13:44:26.000000000 -0500 -+++ lib/Makefile.am 2015-01-28 13:48:00.000000000 -0500 -@@ -53,6 +53,7 @@ - libseafile_common_la_LDFLAGS = -no-undefined - libseafile_common_la_LIBADD = @GLIB2_LIBS@ @GOBJECT_LIBS@ @SSL_LIBS@ -lcrypto @LIB_GDI32@ \ - @LIB_UUID@ @LIB_WS32@ @LIB_PSAPI@ -lsqlite3 \ -+ @LIB_KVM@ \ - @LIBEVENT_LIBS@ @SEARPC_LIBS@ @LIB_SHELL32@ \ - @ZLIB_LIBS@ - -@@ -74,7 +75,7 @@ - rm -f ${seafile_object_gen} - @rm -f vala.tmp - @touch vala.tmp -- valac -C --pkg posix $^ -+ valac -C --pkg posix ${seafile_object_define} - @mv -f vala.tmp $@ - - ${seafile_object_gen}: vala.stamp -@@ -90,5 +91,9 @@ - if MACOS - sed -i '' -e "s|(DESTDIR)|${DESTDIR}|g" $(pcfiles) - else -+if BSD -+ sed -i '' "s|(DESTDIR)|${PREFIX}|g" $(pcfiles) -+else - ${SED} -i "s|(DESTDIR)|${DESTDIR}|g" $(pcfiles) - endif -+endif --- net-mgmt/seafile/files/patch-lib_net.c (revision 413865) +++ net-mgmt/seafile/files/patch-lib_net.c (working copy) @@ -1,6 +1,6 @@ ---- lib/net.c.orig 2015-01-28 00:52:56.000000000 -0500 -+++ lib/net.c 2015-01-28 00:55:31.000000000 -0500 -@@ -157,7 +157,11 @@ +--- lib/net.c.orig 2015-09-21 03:42:11 UTC ++++ lib/net.c +@@ -157,7 +157,11 @@ ccnet_net_bind_tcp (int port, int nonblo snprintf (buf, sizeof(buf), "%d", port); --- net-mgmt/seafile/files/patch-lib_utils.c (revision 413865) +++ net-mgmt/seafile/files/patch-lib_utils.c (working copy) @@ -1,5 +1,5 @@ ---- lib/utils.c.orig 2015-01-28 01:03:42.000000000 -0500 -+++ lib/utils.c 2015-01-28 01:26:32.000000000 -0500 +--- lib/utils.c.orig 2015-09-21 03:42:11 UTC ++++ lib/utils.c @@ -56,6 +56,16 @@ #include @@ -17,7 +17,7 @@ extern int inet_pton(int af, const char *src, void *dst); -@@ -2097,14 +2107,19 @@ +@@ -2112,14 +2122,19 @@ wchar_from_utf8 (const char *utf8) #endif /* ifdef WIN32 */ @@ -38,7 +38,7 @@ return -1; } -@@ -2128,7 +2143,8 @@ +@@ -2143,7 +2158,8 @@ find_process_in_dirent(struct dirent *di } /* read the /proc fs to determine whether some process is running */ @@ -48,7 +48,7 @@ { DIR *proc_dir = opendir("/proc"); if (!proc_dir) { -@@ -2153,7 +2169,8 @@ +@@ -2168,7 +2184,8 @@ gboolean process_is_running (const char return FALSE; } @@ -58,7 +58,7 @@ { int count = 0; DIR *proc_dir = opendir("/proc"); -@@ -2177,6 +2194,14 @@ +@@ -2192,6 +2209,14 @@ int count_process(const char *process_na return count; } @@ -73,7 +73,7 @@ #endif #ifdef __APPLE__ -@@ -2187,6 +2212,119 @@ +@@ -2202,6 +2227,119 @@ gboolean process_is_running (const char } #endif --- net-mgmt/seafile/files/patch-lib_utils.h (revision 413865) +++ net-mgmt/seafile/files/patch-lib_utils.h (working copy) @@ -1,5 +1,5 @@ ---- lib/utils.h.orig 2015-01-28 00:57:13.000000000 -0500 -+++ lib/utils.h 2015-01-28 01:01:59.000000000 -0500 +--- lib/utils.h.orig 2015-09-21 03:42:11 UTC ++++ lib/utils.h @@ -3,6 +3,9 @@ #ifndef CCNET_UTILS_H #define CCNET_UTILS_H --- net-mgmt/seafile/files/patch-scripts_setup-seafile.sh (revision 413865) +++ net-mgmt/seafile/files/patch-scripts_setup-seafile.sh (working copy) @@ -1,6 +1,6 @@ ---- scripts/setup-seafile.sh.orig 2015-01-28 00:37:17.000000000 -0500 -+++ scripts/setup-seafile.sh 2015-01-28 00:43:26.000000000 -0500 -@@ -339,7 +339,11 @@ +--- scripts/setup-seafile.sh.orig 2015-10-12 04:12:33 UTC ++++ scripts/setup-seafile.sh +@@ -340,7 +340,11 @@ fi } function copy_user_manuals() { --- net-mgmt/seafile/files/patch-scripts_upgrade_regenerate__secret__key.sh (nonexistent) +++ net-mgmt/seafile/files/patch-scripts_upgrade_regenerate__secret__key.sh (working copy) @@ -0,0 +1,10 @@ +--- scripts/upgrade/regenerate_secret_key.sh.orig 2016-01-29 17:25:05 UTC ++++ scripts/upgrade/regenerate_secret_key.sh +@@ -10,4 +10,6 @@ seahub_settings_py=${TOPDIR}/seahub_sett + + line="SECRET_KEY = \"$(python $seahub_secret_keygen)\"" + +-sed -i -e "/SECRET_KEY/c\\$line" $seahub_settings_py ++sed -i.bak -e "/SECRET_KEY/c\\ ++$line ++" $seahub_settings_py --- net-mgmt/seafile/files/patch-server_access-file.c (nonexistent) +++ net-mgmt/seafile/files/patch-server_access-file.c (working copy) @@ -0,0 +1,54 @@ +--- server/access-file.c.orig 2015-11-12 02:40:40 UTC ++++ server/access-file.c +@@ -221,10 +221,10 @@ write_block_data_cb (struct bufferevent + bev->cbarg = data->saved_cb_arg; + + /* Resume reading incomming requests. */ +- evhtp_request_resume (data->req); +- + evhtp_send_reply_end (data->req); + ++ evhtp_request_resume (data->req); ++ + free_sendblock_data (data); + return; + } +@@ -306,10 +306,10 @@ next: + bev->cbarg = data->saved_cb_arg; + + /* Resume reading incomming requests. */ +- evhtp_request_resume (data->req); +- + evhtp_send_reply_end (data->req); + ++ evhtp_request_resume (data->req); ++ + free_sendfile_data (data); + return; + } +@@ -403,10 +403,10 @@ write_dir_data_cb (struct bufferevent *b + bev->cbarg = data->saved_cb_arg; + + /* Resume reading incomming requests. */ +- evhtp_request_resume (data->req); +- + evhtp_send_reply_end (data->req); + ++ evhtp_request_resume (data->req); ++ + free_senddir_data (data); + return; + } +@@ -710,10 +710,10 @@ finish_file_range_request (struct buffer + bev->cbarg = data->saved_cb_arg; + + /* Resume reading incomming requests. */ +- evhtp_request_resume (data->req); +- + evhtp_send_reply_end (data->req); + ++ evhtp_request_resume (data->req); ++ + free_send_file_range_data (data); + } + --- net-mgmt/seafile/files/pkg-message.in (nonexistent) +++ net-mgmt/seafile/files/pkg-message.in (working copy) @@ -0,0 +1,7 @@ +For an existing config, or creating a new one, fix the UID/GID. +Do not change %%PREFIX%%/%%SEAFILE_SERVER%% unless your front +end is using the seafile UID/GID as well. + +chown -R seafile:seafile %%PREFIX%%/%%HAIWENDIR%%/conf \ + %%PREFIX%%/%%HAIWENDIR%%/ccnet %%PREFIX%%/%%HAIWENDIR%%/seafile-data \ + %%PREFIX%%/%%HAIWENDIR%%/pids %%PREFIX%%/%%HAIWENDIR%%/logs --- net-mgmt/seafile/files/seafile.in (revision 413865) +++ net-mgmt/seafile/files/seafile.in (working copy) @@ -4,7 +4,7 @@ # # PROVIDE: seafile -# REQUIRE: LOGIN cleanvar +# REQUIRE: LOGIN cleanvar mysql # KEYWORD: shutdown # @@ -13,47 +13,135 @@ # # seafile_enable (bool): Set to "NO" by default. # Set it to "YES" to enable seafile. +# seafile_user (str): User to run seafile as +# Default to "%%SEAFILE_USERNAME%%" created by the port +# seafile_group (str): Group to run seafile as +# Default to "%%SEAFILE_GROUPNAME%%" created by the port # seafile_path (str): Set to "" by default will use the path -# /usr/local/www/haiwen/seafile-server. -# Set it to a different path. +# %%PREFIX%%/%%SEAFILE_SERVER%%. +# Set it to a different path. +# seafile_ccnet (str): Set to "" by default will use the path +# %%PREFIX%%/%%HAIWENDIR%%/ccnet. +# Set it to a different path. +# seafile_conf (str): Set to "" by default will use the path +# %%PREFIX%%/%%HAIWENDIR%%/conf. +# Set it to a different path. +# seafile_datadir (str): Set to "" by default will use the path +# in file %%PREFIX%%/%%HAIWENDIR%%/ccnet/seafile.ini. +# Set it to a different path. +# seafile_logdir (str): Set to "" by default will use the path +# %%PREFIX%%/%%HAIWENDIR%%/logs +# Set it to a different path. +# seafile_loglevel (str): Set to "info" by default. +# Possible values are debug, warning, info. . /etc/rc.subr name="seafile" -rcvar=seafile_enable +rcvar="seafile_enable" load_rc_config $name -start_cmd="${name}_start" -restart_cmd="${name}_restart" -stop_cmd="${name}_stop" +start_cmd="seafile_start" +restart_cmd="seafile_restart" +stop_cmd="seafile_stop" -: ${seafile_path:=%%PREFIX%%/www/haiwen/seafile-server} +: ${seafile_enable="NO"} +: ${seafile_user:="%%SEAFILE_USERNAME%%"} +: ${seafile_group:="%%SEAFILE_GROUPNAME%%"} +: ${seafile_path:="%%PREFIX%%/%%SEAFILE_SERVER%%"} +: ${seafile_ccnet:="%%PREFIX%%/%%HAIWENDIR%%/ccnet"} +: ${seafile_conf:="%%PREFIX%%/%%HAIWENDIR%%/conf"} +: ${seafile_datadir:="`cat ${seafile_ccnet}/seafile.ini 2>/dev/null`"} +: ${seafile_logdir:="%%PREFIX%%/%%HAIWENDIR%%/logs"} +: ${seafile_loglevel:="info"} -command="$seafile_path/seafile.sh" +command="%%PREFIX%%/%%SEAFILE_SERVER%%/seafile/bin/seafile-controller" +command_args="-c \"${seafile_ccnet}\" -d \"${seafile_datadir}\" -F \"${seafile_conf}\" -L \"${seafile_logdir}\" -g \"${seafile_loglevel}\" -G \"${seafile_loglevel}\"" -seafile_start() -{ - if checkyesno ${name}_enable; then - start_script="${seafile_path}/seafile.sh" - echo "Starting seafile service" - $command start - else - return 0 +required_dirs="${seafile_ccnet} ${seafile_conf} ${seafile_datadir}" +required_files="${seafile_ccnet}/seafile.ini" + +test_config() { + if ! su -m ${seafile_user} -c "${command} -t ${command_args}" ; then + exit 1; fi } -seafile_stop() -{ - echo "Stoping seafile service" - $command stop +check_component_running() { + name=$1 + cmd=$2 + if pid=$(pgrep -f "$cmd" 2>/dev/null); then + echo "{$name} is running, pid $pid. You can stop it by: " + echo + echo " kill $pid" + echo + echo "Stop it and try again." + echo + exit + fi } -seafile_restart() -{ - echo "Restart seafile service" - $command restart +validate_already_running() { + if pid=$(pgrep -f "seafile-controller -c ${seafile_ccnet}" 2>/dev/null); then + echo "Seafile controller is already running, pid $pid" + echo + exit 1; + fi + + check_component_running "ccnet-server" "ccnet-server -c ${seafile_ccnet}" + check_component_running "seaf-server" "seaf-server -c ${seafile_ccnet}" + check_component_running "fileserver" "fileserver -c ${seafile_ccnet}" + check_component_running "seafdav" "wsgidav.server.run_server" } -load_rc_config $name +prepare_env() { +export PATH=${seafile_path}/seafile/bin:$PATH +export LD_LIBRARY_PATH=${seafile_path}/seafile/lib/:${seafile_path}/seafile/lib64:${LD_LIBRARY_PATH} +} + +seafile_start() { + check_required_before; + validate_already_running; + test_config; + + echo "Starting seafile server, please wait ..." + + su -m "${seafile_user}" -c "mkdir -p $seafile_logdir" + su -m "${seafile_user}" -c "$command $command_args" + + sleep 3 + + # check if seafile server started successfully + if ! pgrep -f "seafile-controller -c ${seafile_ccnet}" 2>/dev/null 1>&2; then + echo "Failed to start seafile server" + exit 1; + fi + + echo "Seafile server started" + echo +} + +seafile_stop() { + if ! pgrep -f "seafile-controller -c ${seafile_ccnet}" 2>/dev/null 1>&2; then + echo "Seafile is not running" + return 1; + fi + + echo "Stopping ${name}." + pkill -SIGTERM -f "seafile-controller -c ${seafile_ccnet}" + pkill -f "ccnet-server -c ${seafile_ccnet}" + pkill -f "seaf-server -c ${seafile_ccnet}" + pkill -f "fileserver -c ${seafile_ccnet}" + pkill -f "soffice.*--invisible --nocrashreport" + pkill -f "wsgidav.server.run_server" + return 0 +} + +seafile_restart() { + seafile_stop; + sleep 2 + seafile_start; +} + run_rc_command "$1" --- net-mgmt/seafile/pkg-plist (revision 413865) +++ net-mgmt/seafile/pkg-plist (working copy) @@ -1,6 +1,7 @@ bin/seaf-cli bin/seaf-daemon -bin/seafile-admin +bin/seafile-controller +bin/seaf-server include/seafile/monitor-rpc.h include/seafile/seafile-object.h include/seafile/seafile-rpc.h @@ -14,12 +15,12 @@ man/man1/seaf-daemon.1.gz %%SEAFILE_SERVER%%/check_init_admin.py %%SEAFILE_SERVER%%/reset-admin.sh -%%SEAFILE_SERVER%%/seaf-cli-wrapper.sh %%SEAFILE_SERVER%%/seaf-fuse.sh %%SEAFILE_SERVER%%/seaf-gc.sh %%SEAFILE_SERVER%%/seafile.sh %%SEAFILE_SERVER%%/seafile/bin/seaf-fsck -%%SEAFILE_SERVER%%/seafile/bin/seaf-fuse +%%FUSE%%%%SEAFILE_SERVER%%/seafile/bin/seaf-fuse +%%SEAFILE_SERVER%%/seafile/bin/seaf-cli.py %%SEAFILE_SERVER%%/seafile/bin/seaf-migrate %%SEAFILE_SERVER%%/seafile/bin/seaf-server %%SEAFILE_SERVER%%/seafile/bin/seaf-server-init @@ -41,16 +42,17 @@ %%SEAFILE_SERVER%%/seafile/%%PYTHON_SITELIBDIR%%/seaserv/service.pyc %%SEAFILE_SERVER%%/seafile/%%PYTHON_SITELIBDIR%%/seaserv/service.pyo %%PORTDOCS%%%%SEAFILE_SERVER%%/seafile/%%DOCSDIR%%/seafile-tutorial.doc +%%SEAFILE_SERVER%%/breakpad.py %%SEAFILE_SERVER%%/seahub.sh %%SEAFILE_SERVER%%/setup-seafile-mysql.py %%SEAFILE_SERVER%%/setup-seafile-mysql.sh -%%SEAFILE_SERVER%%/setup-seafile.sh -%%SEAFILE_SERVER%%/sqlite2mysql.py -%%SEAFILE_SERVER%%/sqlite2mysql.sh %%SEAFILE_SERVER%%/upgrade/add_collate.sh %%SEAFILE_SERVER%%/upgrade/db_update_1.3_1.4.py %%SEAFILE_SERVER%%/upgrade/db_update_helper.py %%SEAFILE_SERVER%%/upgrade/minor-upgrade.sh +%%SEAFILE_SERVER%%/seaf-fsck.sh +%%SEAFILE_SERVER%%/upgrade/fix_mysql_user.py +%%SEAFILE_SERVER%%/upgrade/regenerate_secret_key.sh %%SEAFILE_SERVER%%/upgrade/sql/1.6.0/mysql/seahub.sql %%SEAFILE_SERVER%%/upgrade/sql/1.6.0/sqlite3/seahub.sql %%SEAFILE_SERVER%%/upgrade/sql/1.7.0/mysql/seafile.sql @@ -69,6 +71,18 @@ %%SEAFILE_SERVER%%/upgrade/sql/3.0.0/sqlite3/seahub.sql %%SEAFILE_SERVER%%/upgrade/sql/3.1.0/mysql/seahub.sql %%SEAFILE_SERVER%%/upgrade/sql/3.1.0/sqlite3/seahub.sql +%%SEAFILE_SERVER%%/upgrade/sql/4.1.0/mysql/ccnet.sql +%%SEAFILE_SERVER%%/upgrade/sql/4.1.0/mysql/seafile.sql +%%SEAFILE_SERVER%%/upgrade/sql/4.1.0/sqlite3/ccnet/groupmgr.sql +%%SEAFILE_SERVER%%/upgrade/sql/4.1.0/sqlite3/seafile.sql +%%SEAFILE_SERVER%%/upgrade/sql/4.2.0/mysql/seafile.sql +%%SEAFILE_SERVER%%/upgrade/sql/4.2.0/mysql/seahub.sql +%%SEAFILE_SERVER%%/upgrade/sql/4.2.0/sqlite3/seafile.sql +%%SEAFILE_SERVER%%/upgrade/sql/4.2.0/sqlite3/seahub.sql +%%SEAFILE_SERVER%%/upgrade/sql/4.3.0/mysql/.gitkeep +%%SEAFILE_SERVER%%/upgrade/sql/4.3.0/sqlite3/.gitkeep +%%SEAFILE_SERVER%%/upgrade/sql/4.4.0/mysql/.gitkeep +%%SEAFILE_SERVER%%/upgrade/sql/4.4.0/sqlite3/.gitkeep %%SEAFILE_SERVER%%/upgrade/upgrade_1.2_1.3.sh %%SEAFILE_SERVER%%/upgrade/upgrade_1.3_1.4.sh %%SEAFILE_SERVER%%/upgrade/upgrade_1.4_1.5.sh @@ -81,4 +95,16 @@ %%SEAFILE_SERVER%%/upgrade/upgrade_2.2_3.0.sh %%SEAFILE_SERVER%%/upgrade/upgrade_3.0_3.1.sh %%SEAFILE_SERVER%%/upgrade/upgrade_3.1_4.0.sh -@dir(%%SEAFILE_USERNAME%%,%%SEAFILE_GROUPNAME%%,755) %%HAIWENDIR%% +%%SEAFILE_SERVER%%/upgrade/upgrade_4.0_4.1.sh +%%SEAFILE_SERVER%%/upgrade/upgrade_4.1_4.2.sh +%%SEAFILE_SERVER%%/upgrade/upgrade_4.2_4.3.sh +%%SEAFILE_SERVER%%/upgrade/upgrade_4.3_4.4.sh +%%SEAFILE_SERVER%%/upgrade/sql/5.0.0/mysql/seahub.sql +%%SEAFILE_SERVER%%/upgrade/sql/5.0.0/sqlite3/seahub.sql +%%SEAFILE_SERVER%%/upgrade/sql/5.1.0/mysql/seafile.sql +%%SEAFILE_SERVER%%/upgrade/sql/5.1.0/mysql/seahub.sql +%%SEAFILE_SERVER%%/upgrade/sql/5.1.0/sqlite3/seafile.sql +%%SEAFILE_SERVER%%/upgrade/sql/5.1.0/sqlite3/seahub.sql +%%SEAFILE_SERVER%%/upgrade/upgrade_5.0_5.1.sh +%%SEAFILE_SERVER%%/upgrade/upgrade_4.4_5.0.sh +@dir(%%USERS%%,%%GROUPS%%,755) %%HAIWENDIR%%