FYI,
I've been able to get Seafile server working on my Mac Mini (Lion). I followed the Linux installation instructions and installed needed packages using Macports and PIP.
In addition to "just" installing the right packages, the following is also needed:
1) Fix the libtool check in in libsearpc autogen.sh
2) Manually compile and install libevent to get the header files (no devel package available)
3) Rewrite seafile-controller.c to use _NSGetExecutablePath() instead of /proc/self*
The seafile-admin script also never prompted for admin email and password, don't know why, and to get reset-admin.sh to work readline has to be replaced with greadline (port install coreutils) as well as fixing the very weird python detection code.
With this done I now have Seafile working (briefly tested), although there's currently an issue with processes constantly being restarted (haven't looked into it) which causes the machine to run out of pid:s after a while. I don't know when I will have time to debug it.
And no, sorry - a more detailed writeup than the above won't be posted until I have everything working. There are a few more packages, like proctools and SIX that need to be installed that I couldn't see in the Linux description. Also, I had some issues where dual installations of pkgconfig and Python did confuse the system, solved with symlinks where needed.
The delta between the current Linux setup and OS X is very small. Actual code needing to be rewritten is on the order of ten lines in total. I'm posting this more to let people know it _can_ be done - if you put effort into it and understand the workings of package management and some coding.
/Troed
*) The method init_seafile_path needs to look like this. A proper implementation should handle dynamic length path of course.
static void
init_seafile_path ()
{
char executable[1024];
uint32_t size = sizeof(executable);
if (_NSGetExecutablePath(executable, &size) != 0) {
seaf_warning("buffer too small; need size %u\n", size);
return;
}
bin_dir = g_path_get_dirname (executable);
char *tmp = NULL;
tmp = g_path_get_dirname (bin_dir);
installpath = g_path_get_dirname (tmp);
topdir = g_path_get_dirname (installpath);
g_free (tmp);
}