Index: head/net-mgmt/seafile/Makefile =================================================================== --- head/net-mgmt/seafile/Makefile (revision 416099) +++ head/net-mgmt/seafile/Makefile (revision 416100) @@ -1,100 +1,131 @@ # $FreeBSD$ PORTNAME= seafile -PORTVERSION= 4.0.6 -PORTREVISION= 3 +PORTVERSION= 5.1.2 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 \ libevhtp.so:www/libevhtp \ libzdb.so:databases/libzdb \ 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 mysql 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_OPENSSL= yes USE_LDCONFIG= yes CONFIGURE_ENV= SSL_CFLAGS="${OPENSSLINC}" SSL_LIBS="-L${OPENSSLLIB} -lssl -lcrypto" PATHFIX_MAKEFILEIN= Makefile.am CONFIGURE_ARGS= --enable-server INSTALL_TARGET= install-strip CPPFLAGS+= -I${LOCALBASE}/include -I${LOCALBASE}/include/evhtp LDFLAGS+= -L${LOCALBASE}/lib HAIWENDIR= www/haiwen SEAFILE_SERVER= ${HAIWENDIR}/seafile-server 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 OPTIONS_SUB= yes FUSE_DESC= Use file system in userspace RIAK_DESC= Use distributed noSQL database FUSE_CONFIGURE_ENABLE= fuse FUSE_LIB_DEPENDS= libfuse.so:sysutils/fusefs-libs 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 ${INSTALL_DATA} ${WRKSRC}/doc/seafile-tutorial.doc \ ${STAGEDIR}${PREFIX}/${SEAFILE_SERVER}/seafile/share/doc/seafile/ (cd ${WRKSRC}/scripts/upgrade && \ ${COPYTREE_SHARE} sql ${STAGEDIR}${PREFIX}/${SEAFILE_SERVER}/upgrade) .include Index: head/net-mgmt/seafile/distinfo =================================================================== --- head/net-mgmt/seafile/distinfo (revision 416099) +++ head/net-mgmt/seafile/distinfo (revision 416100) @@ -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.2-server_GH0.tar.gz) = b813be0710ea5a8580b277e03280c69959aae7fc85bf6d5dcb35ad928c53464e +SIZE (haiwen-seafile-v5.1.2-server_GH0.tar.gz) = 1140677 Index: head/net-mgmt/seafile/files/patch-lib_Makfile.am =================================================================== --- head/net-mgmt/seafile/files/patch-lib_Makfile.am (revision 416099) +++ head/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 Property changes on: head/net-mgmt/seafile/files/patch-lib_Makfile.am ___________________________________________________________________ Deleted: fbsd:nokeywords ## -1 +0,0 ## -yes \ No newline at end of property Deleted: svn:eol-style ## -1 +0,0 ## -native \ No newline at end of property Deleted: svn:mime-type ## -1 +0,0 ## -text/plain \ No newline at end of property Index: head/net-mgmt/seafile/files/patch-common_obj-backend-fs.c =================================================================== --- head/net-mgmt/seafile/files/patch-common_obj-backend-fs.c (revision 416099) +++ head/net-mgmt/seafile/files/patch-common_obj-backend-fs.c (revision 416100) @@ -1,20 +1,20 @@ ---- 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) { -#ifdef __linux__ +#if defined(__linux__) || defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(__OpenBSD__) /* 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) { -#ifdef __linux__ +#if defined(__linux__) || defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(__OpenBSD__) char *parent_dir; int ret = 0; Index: head/net-mgmt/seafile/files/patch-configure.ac =================================================================== --- head/net-mgmt/seafile/files/patch-configure.ac (revision 416099) +++ head/net-mgmt/seafile/files/patch-configure.ac (revision 416100) @@ -1,117 +1,119 @@ ---- 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 2016-05-10 12:25:35 UTC ++++ configure.ac +@@ -50,8 +50,16 @@ else AC_MSG_RESULT(no) fi +AC_MSG_CHECKING(for BSD) +if test `uname | grep -e BSD -e DragonFly | wc -l` = "1"; then + bbsd=true + AC_MSG_RESULT(compile in BSD) +else + AC_MSG_RESULT(no) +fi + AC_MSG_CHECKING(for Linux) -if test "$bmac" != "true" -a "$bwin32" != "true"; then +if test "$bmac" != "true" -a "$bwin32" != "true" -a "$bbsd" != "true"; then 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 +if test "$bbsd" = true; then + AC_ARG_ENABLE(fuse, AC_HELP_STRING([--enable-fuse], [enable fuse virtual file system]), + [compile_fuse=$enableval],[compile_fuse="no"]) +fi + 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"]) +AM_CONDITIONAL([BSD], [test "$bbsd" = "true"]) 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= elif test "$bmac" = true ; then LIB_WS32= LIB_GDI32= -@@ -204,6 +221,24 @@ - LIB_PSAPI= - MSVC_CFLAGS= +@@ -207,6 +224,26 @@ elif test "$bmac" = true ; then LIB_MAC="-framework CoreServices" + LIB_CRYPT32= + LIB_ICONV=-liconv + ZLIB_LIBS= + LIB_INOTIFY= + LIB_KVM= +elif test "$bbsd" = true ; then + LIB_WS32= + LIB_GDI32= + LIB_RT= + LIB_INTL= + LIB_RESOLV= + LIB_UUID=-luuid + LIB_IPHLPAPI= + LIB_SHELL32= + LIB_PSAPI= + LIB_MAC= + MSVC_CFLAGS= ++ LIB_CRYPT32= ++ LIB_ICONV=-liconv + ZLIB_LIBS=-lz + LIB_INOTIFY=-linotify + LIB_KVM=-lkvm else LIB_WS32= LIB_GDI32= -@@ -216,6 +251,9 @@ - LIB_PSAPI= +@@ -220,6 +257,9 @@ else LIB_MAC= MSVC_CFLAGS= + LIB_CRYPT32= + ZLIB_LIBS=-lz + LIB_INOTIFY=-linotify + LIB_KVM= fi AC_SUBST(LIB_WS32) -@@ -228,6 +266,9 @@ +@@ -232,6 +272,9 @@ AC_SUBST(LIB_IPHLPAPI) AC_SUBST(LIB_SHELL32) AC_SUBST(LIB_PSAPI) AC_SUBST(LIB_MAC) +AC_SUBST(ZLIB_LIBS) +AC_SUBST(LIB_INOTIFY) +AC_SUBST(LIB_KVM) AC_SUBST(MSVC_CFLAGS) - - -@@ -240,7 +281,9 @@ + AC_SUBST(LIB_CRYPT32) + AC_SUBST(LIB_ICONV) +@@ -246,7 +289,9 @@ ZDB_REQUIRED=2.10 #LIBNAUTILUS_EXTENSION_REQUIRED=2.30.1 CURL_REQUIRED=7.17 FUSE_REQUIRED=2.7.3 +if test "$blinux" = true ; then ZLIB_REQUIRED=1.2.0 +fi PKG_CHECK_MODULES(SSL, [openssl]) AC_SUBST(SSL_CFLAGS) -@@ -270,9 +313,11 @@ +@@ -276,9 +321,11 @@ PKG_CHECK_MODULES(LIBEVENT, [libevent >= AC_SUBST(LIBEVENT_CFLAGS) AC_SUBST(LIBEVENT_LIBS) +if test "$blinux" = true ; then PKG_CHECK_MODULES(ZLIB, [zlib >= $ZLIB_REQUIRED]) AC_SUBST(ZLIB_CFLAGS) AC_SUBST(ZLIB_LIBS) +fi if test x${compile_python} = xyes; then AM_PATH_PYTHON([2.6]) Index: head/net-mgmt/seafile/files/patch-controller_seafile-controller.c =================================================================== --- head/net-mgmt/seafile/files/patch-controller_seafile-controller.c (revision 416099) +++ head/net-mgmt/seafile/files/patch-controller_seafile-controller.c (revision 416100) @@ -1,104 +1,104 @@ ---- 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" +#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(__OpenBSD__) +#include +#include +#include +#include + +#ifndef WITH_PROC_FS +#define WITH_PROC_FS g_file_test("/proc/curproc", G_FILE_TEST_EXISTS) +#endif + +static char *command_name = NULL; +#endif + #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; +#if defined(__linux__) char *executable = g_file_read_link ("/proc/self/exe", &error); +#elif defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(__OpenBSD__) + /* + * seafile.sh starts the process using abs path + */ + char executable[_POSIX_PATH_MAX]; + memset(executable, 0, _POSIX_PATH_MAX); + char * rc = realpath(command_name, executable); + if (!rc) { + seaf_warning ("failed to readpath: %s\n", executable); + return; + } +#endif 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); +#if defined(__linux__) g_free (executable); +#endif g_free (tmp); } -@@ -401,11 +429,40 @@ +@@ -402,11 +430,40 @@ need_restart (int which) return FALSE; } else { char buf[256]; + gboolean with_procfs; +#if defined(__linux__) + with_procfs = g_file_test("/proc/self", G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR); +#elif defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) + with_procfs = g_file_test("/proc/curproc", G_FILE_TEST_EXISTS | G_FILE_TEST_IS_DIR); +#else + with_procfs = FALSE; +#endif + if (with_procfs) { snprintf (buf, sizeof(buf), "/proc/%d", pid); if (g_file_test (buf, G_FILE_TEST_IS_DIR)) { return FALSE; } else { return TRUE; + } + + } else { +#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(__OpenBSD__) +#ifdef __OpenBSD__ + int min[6] = {CTL_KERN, KERN_PROC, KERN_PROC_PID, pid, sizeof(struct kinfo_proc), 1}; +#else + int mib[4] = {CTL_KERN, KERN_PROC, KERN_PROC_PID, pid}; +#endif + size_t len = sizeof(struct kinfo_proc); + struct kinfo_proc kp; + if (sysctl(mib, sizeof(mib)/sizeof(mib[0]), &kp, &len, NULL, 0) != -1 && + len == sizeof(struct kinfo_proc)) { + return FALSE; + } else { + return TRUE; + } +#else + return FALSE; +#endif } } } -@@ -852,6 +909,9 @@ +@@ -877,6 +934,9 @@ int main (int argc, char **argv) exit (1); } +#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(__OpenBSD__) + command_name = argv[0]; +#endif char *config_dir = DEFAULT_CONFIG_DIR; char *seafile_dir = NULL; char *logdir = NULL; Index: head/net-mgmt/seafile/files/patch-daemon_Makefile.am =================================================================== --- head/net-mgmt/seafile/files/patch-daemon_Makefile.am (revision 416099) +++ head/net-mgmt/seafile/files/patch-daemon_Makefile.am (revision 416100) @@ -1,23 +1,22 @@ ---- 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 +if BSD +wt_monitor_src = wt-monitor.c wt-monitor-linux.c wt-monitor-structs.c +endif + 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@ - Index: head/net-mgmt/seafile/files/patch-daemon_http-tx-mgr.c =================================================================== --- head/net-mgmt/seafile/files/patch-daemon_http-tx-mgr.c (nonexistent) +++ head/net-mgmt/seafile/files/patch-daemon_http-tx-mgr.c (revision 416100) @@ -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. */ Property changes on: head/net-mgmt/seafile/files/patch-daemon_http-tx-mgr.c ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/net-mgmt/seafile/files/patch-daemon_repo-mgr.c =================================================================== --- head/net-mgmt/seafile/files/patch-daemon_repo-mgr.c (revision 416099) +++ head/net-mgmt/seafile/files/patch-daemon_repo-mgr.c (revision 416100) @@ -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-05-10 12:25:35 UTC ++++ daemon/repo-mgr.c +@@ -4441,7 +4441,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 @@ +@@ -4617,7 +4617,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 +@@ -5038,7 +5038,7 @@ schedule_file_fetch (GThreadPool *tpool, + } - if (!path) -@@ -2839,13 +2839,13 @@ + if (!skip_fetch) { +-#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, +@@ -5185,7 +5185,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, +@@ -5567,7 +5567,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) { Index: head/net-mgmt/seafile/files/patch-daemon_vc-utils.c =================================================================== --- head/net-mgmt/seafile/files/patch-daemon_vc-utils.c (revision 416099) +++ head/net-mgmt/seafile/files/patch-daemon_vc-utils.c (revision 416100) @@ -1,28 +1,20 @@ ---- 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__ */ -#ifdef __linux__ +#if defined(__linux__) || defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(__OpenBSD__) 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); Index: head/net-mgmt/seafile/files/patch-lib_Makefile.am =================================================================== --- head/net-mgmt/seafile/files/patch-lib_Makefile.am (nonexistent) +++ head/net-mgmt/seafile/files/patch-lib_Makefile.am (revision 416100) @@ -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 Property changes on: head/net-mgmt/seafile/files/patch-lib_Makefile.am ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/net-mgmt/seafile/files/patch-lib_net.c =================================================================== --- head/net-mgmt/seafile/files/patch-lib_net.c (revision 416099) +++ head/net-mgmt/seafile/files/patch-lib_net.c (revision 416100) @@ -1,14 +1,14 @@ ---- 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); +#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(__OpenBSD__) + if ( (n = getaddrinfo("0.0.0.0", buf, &hints, &res) ) != 0) { +#else if ( (n = getaddrinfo(NULL, buf, &hints, &res) ) != 0) { +#endif ccnet_warning ("getaddrinfo fails: %s\n", gai_strerror(n)); return -1; } Index: head/net-mgmt/seafile/files/patch-lib_utils.c =================================================================== --- head/net-mgmt/seafile/files/patch-lib_utils.c (revision 416099) +++ head/net-mgmt/seafile/files/patch-lib_utils.c (revision 416100) @@ -1,195 +1,195 @@ ---- 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 +#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(__OpenBSD__) +#include +#include +#include +#include +#include +#include +#include +#endif + 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 */ -#ifdef __linux__ /* read the link of /proc/123/exe and compare with `process_name' */ static int find_process_in_dirent(struct dirent *dir, const char *process_name) { char path[512]; /* fisrst construct a path like /proc/123/exe */ +#if defined(__linux__) if (sprintf (path, "/proc/%s/exe", dir->d_name) < 0) { +#elif defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) + if (sprintf (path, "/proc/%s/file", dir->d_name) < 0) { +#else + if (1) { +#endif 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 */ -gboolean process_is_running (const char *process_name) +static gboolean +process_is_running_procfs (const char *process_name) { DIR *proc_dir = opendir("/proc"); if (!proc_dir) { -@@ -2153,7 +2169,8 @@ +@@ -2168,7 +2184,8 @@ gboolean process_is_running (const char return FALSE; } -int count_process(const char *process_name) +static int +count_process_procfs(const char *process_name) { 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; } +#ifdef __linux__ +gboolean process_is_running(const char *process_name) { + return process_is_running_procfs(process_name); +} + +int count_process(const char *process_name) { + return count_process_procfs(process_name); +} #endif #ifdef __APPLE__ -@@ -2187,6 +2212,119 @@ +@@ -2202,6 +2227,119 @@ gboolean process_is_running (const char } #endif +#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(__OpenBSD__) +#if defined(__FreeBSD__) +#define PSKIP(kp) ((kp)->ki_pid == mypid || \ + (!kthreads && ((kp)->ki_flag & P_KTHREAD) != 0)) +#define KVM_OPENFILES(exec, coref, buf) \ + kvm_openfiles(exec, coref, NULL, O_RDONLY, buf) +#define KVM_GETPROCS(kd, plist, nproc) \ + kvm_getprocs(kd, KERN_PROC_PROC, 0, &nproc) + +#elif defined(__DragonFly__) +#define PSKIP(kp) ((kp)->kp_pid == mypid || \ + (!kthreads && ((kp)->kp_flags & P_SYSTEM) != 0)) +#define KVM_OPENFILES(exec, coref, buf) \ + kvm_openfiles(exec, coref, NULL, O_RDONLY, buf) +#define KVM_GETPROCS(kd, plist, nproc) \ + kvm_getprocs(kd, KERN_PROC_ALL, 0, &nproc) + +#elif defined(__NetBSD__) +#define PSKIP(kp) ((kp)->kp_pid == mypid || \ + ((kp)->p_flag & P_SYSTEM) != 0) +#define KVM_OPENFILES(exec, coref, buf) \ + kvm_openfiles(exec, coref, NULL, KVM_NO_FILES, buf) +#define KVM_GETPROCS(kd, plist, nproc) \ + kvm_getprocs(kd, KERN_PROC_ALL, 0, sizeof(*plist), &nproc) + +#elif defined(__OpenBSD__) +#define PSKIP(kp) ((kp)->kp_pid == mypid || \ + ((kp)->p_flag & (P_SYSTEM | P_THREAD)) != 0) +#define KVM_OPENFILES(exec, coref, buf) \ + kvm_openfiles(exec, coref, NULL, KVM_NO_FILES, buf) +#define KVM_GETPROCS(kd, plist, nproc) \ + kvm_getprocs(kd, KERN_PROC_ALL, 0, sizeof(*plist), &nproc) + +#else +#define PSKIP(kp) 0 +#define KVM_OPENFILES(exec, coref, buf) 0 +#define KVM_GETPROCS(kd, plist, nproc) 0 +#endif + +#ifndef WITH_PROC_FS +#define WITH_PROC_FS g_file_test("/proc/curproc", G_FILE_TEST_EXISTS) +#endif + +static int +count_running_process_kvm(const char *process_name) { + + + static kvm_t *kd; + static struct kinfo_proc *plist; + static int nproc; + static pid_t mypid; + static int kthreads; + + char buf[_POSIX2_LINE_MAX]; + const char * execf, *coref; + char **pargv; + int i, selected_nproc; + struct kinfo_proc *kp; + + selected_nproc = 0; + execf = NULL; + coref = _PATH_DEVNULL; + + mypid = getpid(); + kd = KVM_OPENFILES(execf, coref, buf); + if (kd == NULL) { + fprintf(stderr, "Error: Cannot open kernel files (%s)", buf); + exit(1); + } + + plist = KVM_GETPROCS(kd, plist, nproc); + if (plist == NULL) { + fprintf(stderr, "Error: Cannot get process list (%s)", kvm_geterr(kd)); + exit(1); + } + + for(i = 0, kp = plist; i < nproc; i++, kp++) { + if (PSKIP(kp)) { + continue; + } + if ((pargv = kvm_getargv(kd, kp, 0)) != NULL) { + if (strstr(pargv[0], process_name) != NULL) { + selected_nproc += 1; + } + } + } + kvm_close(kd); + kvm_close(kd); + + return selected_nproc; +} + +gboolean +process_is_running(const char * process_name) { + if (WITH_PROC_FS) { + return process_is_running_procfs(process_name); + } + if (count_running_process_kvm(process_name) > 0) { + return TRUE; + } else { + return FALSE; + } +} + +int +count_process(const char * process_name) { + if (WITH_PROC_FS) { + return count_process_procfs(process_name); + } + return count_running_process_kvm(process_name); +} +#endif + char* ccnet_object_type_from_id (const char *object_id) { Index: head/net-mgmt/seafile/files/patch-lib_utils.h =================================================================== --- head/net-mgmt/seafile/files/patch-lib_utils.h (revision 416099) +++ head/net-mgmt/seafile/files/patch-lib_utils.h (revision 416100) @@ -1,23 +1,23 @@ ---- 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 +#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__NetBSD__) || defined(__OpenBSD__) +#include +#endif #include #include #include @@ -13,7 +16,9 @@ #include #include -#if defined(__FreeBSD__) || defined(__NetBSD__) || defined(__OpenBSD__) +#if defined(__FreeBSD__) || defined(__DragonFly__) +#include +#elif defined(__NetBSD__) || defined(__OpenBSD__) #include #else #include Index: head/net-mgmt/seafile/files/patch-scripts_setup-seafile.sh =================================================================== --- head/net-mgmt/seafile/files/patch-scripts_setup-seafile.sh (revision 416099) +++ head/net-mgmt/seafile/files/patch-scripts_setup-seafile.sh (revision 416100) @@ -1,15 +1,15 @@ ---- 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() { - src_docs_dir=${INSTALLPATH}/seafile/docs/ + if [ $(uname | grep -e BSD -e DragonFly | wc -l) == "1" ]; then + src_docs_dir=${INSTALLPATH}/seafile/share/doc/seafile/ + else + src_docs_dir=${INSTALLPATH}/seafile/docs/ + fi library_template_dir=${seafile_data_dir}/library-template mkdir -p ${library_template_dir} cp -f ${src_docs_dir}/*.doc ${library_template_dir} Index: head/net-mgmt/seafile/files/patch-scripts_upgrade_regenerate__secret__key.sh =================================================================== --- head/net-mgmt/seafile/files/patch-scripts_upgrade_regenerate__secret__key.sh (nonexistent) +++ head/net-mgmt/seafile/files/patch-scripts_upgrade_regenerate__secret__key.sh (revision 416100) @@ -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 Property changes on: head/net-mgmt/seafile/files/patch-scripts_upgrade_regenerate__secret__key.sh ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/net-mgmt/seafile/files/patch-server_access-file.c =================================================================== --- head/net-mgmt/seafile/files/patch-server_access-file.c (nonexistent) +++ head/net-mgmt/seafile/files/patch-server_access-file.c (revision 416100) @@ -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); + } + Property changes on: head/net-mgmt/seafile/files/patch-server_access-file.c ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/net-mgmt/seafile/files/pkg-message.in =================================================================== --- head/net-mgmt/seafile/files/pkg-message.in (nonexistent) +++ head/net-mgmt/seafile/files/pkg-message.in (revision 416100) @@ -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 Property changes on: head/net-mgmt/seafile/files/pkg-message.in ___________________________________________________________________ Added: fbsd:nokeywords ## -0,0 +1 ## +yes \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Index: head/net-mgmt/seafile/files/seafile.in =================================================================== --- head/net-mgmt/seafile/files/seafile.in (revision 416099) +++ head/net-mgmt/seafile/files/seafile.in (revision 416100) @@ -1,59 +1,147 @@ #!/bin/sh # # $FreeBSD$ # # PROVIDE: seafile -# REQUIRE: LOGIN cleanvar +# REQUIRE: LOGIN cleanvar mysql # KEYWORD: shutdown # # # Add the following lines to /etc/rc.conf to enable seafile: # # 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 "%%USERS%%" created by the port +# seafile_group (str): Group to run seafile as +# Default to "%%GROUPS%%" 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:="%%USERS%%"} +: ${seafile_group:="%%GROUPS%%"} +: ${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" Index: head/net-mgmt/seafile/pkg-plist =================================================================== --- head/net-mgmt/seafile/pkg-plist (revision 416099) +++ head/net-mgmt/seafile/pkg-plist (revision 416100) @@ -1,84 +1,110 @@ 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 include/seafile/seafile.h lib/libseafile.a lib/libseafile.so lib/libseafile.so.0 lib/libseafile.so.0.0.0 libdata/pkgconfig/libseafile.pc man/man1/seaf-cli.1.gz 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 %%SEAFILE_SERVER%%/seafile/bin/seafile-controller %%SEAFILE_SERVER%%/seafile/bin/seafserv-gc %%SEAFILE_SERVER%%/seafile/%%PYTHON_SITELIBDIR%%/seafile/__init__.py %%SEAFILE_SERVER%%/seafile/%%PYTHON_SITELIBDIR%%/seafile/__init__.pyc %%SEAFILE_SERVER%%/seafile/%%PYTHON_SITELIBDIR%%/seafile/__init__.pyo %%SEAFILE_SERVER%%/seafile/%%PYTHON_SITELIBDIR%%/seafile/rpcclient.py %%SEAFILE_SERVER%%/seafile/%%PYTHON_SITELIBDIR%%/seafile/rpcclient.pyc %%SEAFILE_SERVER%%/seafile/%%PYTHON_SITELIBDIR%%/seafile/rpcclient.pyo %%SEAFILE_SERVER%%/seafile/%%PYTHON_SITELIBDIR%%/seaserv/__init__.py %%SEAFILE_SERVER%%/seafile/%%PYTHON_SITELIBDIR%%/seaserv/__init__.pyc %%SEAFILE_SERVER%%/seafile/%%PYTHON_SITELIBDIR%%/seaserv/__init__.pyo %%SEAFILE_SERVER%%/seafile/%%PYTHON_SITELIBDIR%%/seaserv/api.py %%SEAFILE_SERVER%%/seafile/%%PYTHON_SITELIBDIR%%/seaserv/api.pyc %%SEAFILE_SERVER%%/seafile/%%PYTHON_SITELIBDIR%%/seaserv/api.pyo %%SEAFILE_SERVER%%/seafile/%%PYTHON_SITELIBDIR%%/seaserv/service.py %%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 %%SEAFILE_SERVER%%/upgrade/sql/1.7.0/mysql/seahub.sql %%SEAFILE_SERVER%%/upgrade/sql/1.7.0/sqlite3/seafile.sql %%SEAFILE_SERVER%%/upgrade/sql/1.7.0/sqlite3/seahub.sql %%SEAFILE_SERVER%%/upgrade/sql/1.8.0/mysql/ccnet.sql %%SEAFILE_SERVER%%/upgrade/sql/1.8.0/mysql/seahub.sql %%SEAFILE_SERVER%%/upgrade/sql/1.8.0/sqlite3/seahub.sql %%SEAFILE_SERVER%%/upgrade/sql/2.0.0/mysql/seahub.sql %%SEAFILE_SERVER%%/upgrade/sql/2.0.0/sqlite3/seahub.sql %%SEAFILE_SERVER%%/upgrade/sql/2.1.0/mysql/seahub.sql %%SEAFILE_SERVER%%/upgrade/sql/2.1.0/sqlite3/seahub.sql %%SEAFILE_SERVER%%/upgrade/sql/2.2.0/mysql/ccnet.sql %%SEAFILE_SERVER%%/upgrade/sql/3.0.0/mysql/seahub.sql %%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 %%SEAFILE_SERVER%%/upgrade/upgrade_1.5_1.6.sh %%SEAFILE_SERVER%%/upgrade/upgrade_1.6_1.7.sh %%SEAFILE_SERVER%%/upgrade/upgrade_1.7_1.8.sh %%SEAFILE_SERVER%%/upgrade/upgrade_1.8_2.0.sh %%SEAFILE_SERVER%%/upgrade/upgrade_2.0_2.1.sh %%SEAFILE_SERVER%%/upgrade/upgrade_2.1_2.2.sh %%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%%