Avati,
*I do not want an time spent in development work on FreeBSD !!!
*We are only to support anyone trying to port GlusterFS on FreeBSD.
Please convey this unequivocally to everyone on the team; also, Vikas
has been given this task of supporting FreeBSD port.
Hitesh
Anand Avati wrote:
Attila,
Thanks again for your initial work on helping porting glusterfs to
FreeBSD.
Based on your help we have been able to get glusterfsd to work on FreeBSD
and export volumes successfully.
We are willing to provide you more active support in getting glusterfs
ported. At the time of your previous patch submission there was a
transition
in codebase from glusterfs--mainline--2.4 to glusterfs--mainline--2.5,
and
your patches were on 2.4, where related code were being changed in
glusterfs--mainline--2.5, hence I couldnt apply those patches
immediately.
Apologies for the delay.
If you can give a shot in getting the client running as well on FreeBSD,
we will all appretiate it a lot!
thanks again,
avati
2007/5/11, Attila Nagy <bra@xxxxxx>:
Hello,
I would like to reply to the following e-mail (I've just subscribed, so
this will be a new thread, sorry):
http://lists.nongnu.org/archive/html/gluster-devel/2007-05/msg00113.html
First of all, if you need a (or more than one) FreeBSD developer
machine(s), just tell me, I can give access to them (it's possible that
installing FreeBSD on a local machine can be easier).
BTW, I've tried to compile it. I have a FreeBSD/amd64 6-STABLE machine
and glusterfs-1.3.0-pre3 (tell me if it's not the right version to start
with).
So far I did the following:
- gunzip/untar
- -ldl cleaning from configure
- ./configure --disable-ibverbs LDFLAGS="-L/usr/local/lib -L/usr/lib
-I/usr/include -I/usr/local/include" LIBS="-lpthread" CC=gcc42 CXX=g++42
(I use gcc42 because I saw on the webpage, that at least gcc 4.1 should
be used when developing)
- make CFLAGS="-L/usr/local/lib -L/usr/lib -I/usr/include
-I/usr/local/include -DFUSE_USE_VERSION=26" CC=gcc42 CXX=g++42
(it's possible that FUSE_USE_VERSION was only needed for 1.2.3, I can't
remember, I started with that first, but thought that I should use the
newer one)
The compilation first fails at:
gcc -DPACKAGE_NAME=\"glusterfs\" -DPACKAGE_TARNAME=\"glusterfs\"
-DPACKAGE_VERSION=\"1.3.0-pre3\" "-DPACKAGE_STRING=\"glusterfs
1.3.0-pre3\"" -DPACKAGE_BUGREPORT=\"gluster-devel@xxxxxxxxxx\"
-DPACKAGE=\"glusterfs\" -DVERSION=\"1.3.0-pre3\" -DSTDC_HEADERS=1
-DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1
-DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1
-DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1
-DYYTEXT_POINTER=1 -DHAVE_LIBPTHREAD=1 -DHAVE_LIBDL=1 -DHAVE_LIBFUSE=1
-DHAVE_BACKTRACE=1 -I. -I. -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
-DXLATORDIR=\"/usr/local/lib/glusterfs/1.3.0-pre3/xlator\"
-DSCHEDULERDIR=\"/usr/local/lib/glusterfs/1.3.0-pre3/scheduler\"
-DTRANSPORTDIR=\"/usr/local/lib/glusterfs/1.3.0-pre3/transport\"
-DYY_NO_UNPUT -fPIC -Wall -g -shared -nostartfiles -rdynamic
-L/usr/local/lib -L/usr/lib -I/usr/include -I/usr/local/include -MT
libglusterfs_la-spec.lex.lo -MD -MP -MF
.deps/libglusterfs_la-spec.lex.Tpo -c spec.lex.c -fPIC -DPIC -o
.libs/libglusterfs_la-spec.lex.o
./spec.l: In function `yylex':
./spec.l:41: error: `yylval' undeclared (first use in this function)
./spec.l:41: error: (Each undeclared identifier is reported only once
./spec.l:41: error: for each function it appears in.)
./spec.l:41: warning: cast from pointer to integer of different size
*** Error code 1
Stop in /src/glusterfs-1.3.0-pre3/libglusterfs/src.
*** Error code 1
Stop in /src/glusterfs-1.3.0-pre3/libglusterfs.
*** Error code 1
I've hacked the following into libglusterfs/src/spec.l (YYSTYPE lines):
%{
#include "xlator.h"
#include "y.tab.h"
#include <string.h>
#define YYSTYPE char *
extern YYSTYPE yylval;
%}
Retry.
Now it stops at:
gcc -DPACKAGE_NAME=\"glusterfs\" -DPACKAGE_TARNAME=\"glusterfs\"
-DPACKAGE_VERSION=\"1.3.0-pre3\" "-DPACKAGE_STRING=\"glusterfs
1.3.0-pre3\"" -DPACKAGE_BUGREPORT=\"gluster-devel@xxxxxxxxxx\"
-DPACKAGE=\"glusterfs\" -DVERSION=\"1.3.0-pre3\" -DSTDC_HEADERS=1
-DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1
-DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1
-DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1
-DYYTEXT_POINTER=1 -DHAVE_LIBPTHREAD=1 -DHAVE_LIBDL=1 -DHAVE_LIBFUSE=1
-DHAVE_BACKTRACE=1 -I. -I. -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
-DXLATORDIR=\"/usr/local/lib/glusterfs/1.3.0-pre3/xlator\"
-DSCHEDULERDIR=\"/usr/local/lib/glusterfs/1.3.0-pre3/scheduler\"
-DTRANSPORTDIR=\"/usr/local/lib/glusterfs/1.3.0-pre3/transport\"
-DYY_NO_UNPUT -fPIC -Wall -g -shared -nostartfiles -rdynamic
-L/usr/local/lib -L/usr/lib -I/usr/include -I/usr/local/include -MT
libglusterfs_la-transport.lo -MD -MP -MF
.deps/libglusterfs_la-transport.Tpo -c transport.c -fPIC -DPIC -o
.libs/libglusterfs_la-transport.o
In file included from transport.c:25:
logging.h:43: error: syntax error before "_gf_log"
logging.h:46: error: syntax error before "int32_t"
logging.h:48: warning: type defaults to `int' in declaration of
`_gf_log'
logging.h:48: warning: data definition has no type or storage class
logging.h:49: error: syntax error before "gf_log_init"
logging.h:49: warning: type defaults to `int' in declaration of
`gf_log_init'
logging.h:49: warning: data definition has no type or storage class
*** Error code 1
Stop in /src/glusterfs-1.3.0-pre3/libglusterfs/src.
*** Error code 1
Stop in /src/glusterfs-1.3.0-pre3/libglusterfs.
*** Error code 1
For a quick hack, I removed
#include "logging.h"
from libglusterfs/src/transport.c
Next try.
Stops at:
gcc -DPACKAGE_NAME=\"glusterfs\" -DPACKAGE_TARNAME=\"glusterfs\"
-DPACKAGE_VERSION=\"1.3.0-pre3\" "-DPACKAGE_STRING=\"glusterfs
1.3.0-pre3\"" -DPACKAGE_BUGREPORT=\"gluster-devel@xxxxxxxxxx\"
-DPACKAGE=\"glusterfs\" -DVERSION=\"1.3.0-pre3\" -DSTDC_HEADERS=1
-DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1
-DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1
-DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1
-DYYTEXT_POINTER=1 -DHAVE_LIBPTHREAD=1 -DHAVE_LIBDL=1 -DHAVE_LIBFUSE=1
-DHAVE_BACKTRACE=1 -I. -I. -D_FILE_OFFSET_BITS=64 -D_GNU_SOURCE
-DXLATORDIR=\"/usr/local/lib/glusterfs/1.3.0-pre3/xlator\"
-DSCHEDULERDIR=\"/usr/local/lib/glusterfs/1.3.0-pre3/scheduler\"
-DTRANSPORTDIR=\"/usr/local/lib/glusterfs/1.3.0-pre3/transport\"
-DYY_NO_UNPUT -fPIC -Wall -g -shared -nostartfiles -rdynamic
-L/usr/local/lib -L/usr/lib -I/usr/include -I/usr/local/include -MT
libglusterfs_la-epoll.lo -MD -MP -MF .deps/libglusterfs_la-epoll.Tpo -c
epoll.c -fPIC -DPIC -o .libs/libglusterfs_la-epoll.o
epoll.c:20:23: sys/epoll.h: No such file or directory
*** Error code 1
Stop in /src/glusterfs-1.3.0-pre3/libglusterfs/src.
*** Error code 1
Stop in /src/glusterfs-1.3.0-pre3/libglusterfs.
*** Error code 1
Ouch, no epoll on !Linux. Configure recognized that, but the epoll stuff
got into the Makefile.
BTW, FreeBSD (not-just-Free BSD) has kqueue, Solaris has /dev/poll,
Linux has epoll and there is libevent, which supports all of these.
Wouldn't be possible to use that? It should give a (more) portable
version.
Removed epoll instances from the Makefile, retry:
if gcc -DPACKAGE_NAME=\"glusterfs\" -DPACKAGE_TARNAME=\"glusterfs\"
-DPACKAGE_VERSION=\"1.3.0-pre3\" -DPACKAGE_STRING=\"glusterfs\
1.3.0-pre3\" -DPACKAGE_BUGREPORT=\"gluster-devel@xxxxxxxxxx\"
-DPACKAGE=\"glusterfs\" -DVERSION=\"1.3.0-pre3\" -DSTDC_HEADERS=1
-DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1
-DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1
-DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1
-DYYTEXT_POINTER=1 -DHAVE_LIBPTHREAD=1 -DHAVE_LIBDL=1 -DHAVE_LIBFUSE=1
-DHAVE_BACKTRACE=1 -I. -I. -fPIC -D_FILE_OFFSET_BITS=64
-D_GNU_SOURCE -Wall -I../../../../libglusterfs/src -shared
-nostartfiles -L/usr/local/lib -L/usr/lib -I/usr/include
-I/usr/local/include -MT unify.o -MD -MP -MF ".deps/unify.Tpo" -c -o
unify.o unify.c; then mv -f ".deps/unify.Tpo" ".deps/unify.Po"; else rm
-f ".deps/unify.Tpo"; exit 1; fi
unify.c: In function `gcd_path':
unify.c:48: warning: implicit declaration of function `strndup'
unify.c:48: warning: pointer/integer type mismatch in conditional
expression
unify.c: In function `gf_basename':
unify.c:54: warning: implicit declaration of function `basename'
unify.c:54: warning: initialization makes pointer from integer without a
cast
unify.c: In function `unify_readv':
unify.c:443: error: `EBADFD' undeclared (first use in this function)
unify.c:443: error: (Each undeclared identifier is reported only once
unify.c:443: error: for each function it appears in.)
unify.c: In function `unify_writev':
unify.c:482: error: `EBADFD' undeclared (first use in this function)
unify.c: In function `unify_ftruncate':
unify.c:523: error: `EBADFD' undeclared (first use in this function)
unify.c: In function `unify_fgetattr':
unify.c:561: error: `EBADFD' undeclared (first use in this function)
unify.c: In function `unify_flush':
unify.c:594: error: `EBADFD' undeclared (first use in this function)
unify.c: In function `unify_release':
unify.c:628: error: `EBADFD' undeclared (first use in this function)
unify.c: In function `unify_fsync':
unify.c:665: error: `EBADFD' undeclared (first use in this function)
unify.c: In function `unify_lk':
unify.c:704: error: `EBADFD' undeclared (first use in this function)
*** Error code 1
Stop in /src/glusterfs-1.3.0-pre3/xlators/cluster/unify/src.
*** Error code 1
Stop in /src/glusterfs-1.3.0-pre3/xlators/cluster/unify.
*** Error code 1
Stop in /src/glusterfs-1.3.0-pre3/xlators/cluster.
*** Error code 1
Erm, not EBADFD, but EBADF. sed it and recompile:
if gcc -DPACKAGE_NAME=\"glusterfs\" -DPACKAGE_TARNAME=\"glusterfs\"
-DPACKAGE_VERSION=\"1.3.0-pre3\" -DPACKAGE_STRING=\"glusterfs\
1.3.0-pre3\" -DPACKAGE_BUGREPORT=\"gluster-devel@xxxxxxxxxx\"
-DPACKAGE=\"glusterfs\" -DVERSION=\"1.3.0-pre3\" -DSTDC_HEADERS=1
-DHAVE_SYS_TYPES_H=1 -DHAVE_SYS_STAT_H=1 -DHAVE_STDLIB_H=1
-DHAVE_STRING_H=1 -DHAVE_MEMORY_H=1 -DHAVE_STRINGS_H=1
-DHAVE_INTTYPES_H=1 -DHAVE_STDINT_H=1 -DHAVE_UNISTD_H=1 -DHAVE_DLFCN_H=1
-DYYTEXT_POINTER=1 -DHAVE_LIBPTHREAD=1 -DHAVE_LIBDL=1 -DHAVE_LIBFUSE=1
-DHAVE_BACKTRACE=1 -I. -I. -fPIC -D_FILE_OFFSET_BITS=64
-D_GNU_SOURCE -Wall -I../../../../libglusterfs/src -shared
-nostartfiles -L/usr/local/lib -L/usr/lib -I/usr/include
-I/usr/local/include -MT posix.o -MD -MP -MF ".deps/posix.Tpo" -c -o
posix.o posix.c; then mv -f ".deps/posix.Tpo" ".deps/posix.Po"; else rm
-f ".deps/posix.Tpo"; exit 1; fi
In file included from posix.c:23:
posix.h:6:23: sys/xattr.h: No such file or directory
posix.h:10:27: linux/limits.h: No such file or directory
posix.c: In function `posix_create':
posix.c:405: error: `O_LARGEFILE' undeclared (first use in this
function)
posix.c:405: error: (Each undeclared identifier is reported only once
posix.c:405: error: for each function it appears in.)
posix.c: In function `posix_fsync':
posix.c:679: warning: implicit declaration of function `fdatasync'
posix.c: In function `posix_setxattr':
posix.c:710: warning: implicit declaration of function `lsetxattr'
posix.c: In function `posix_getxattr':
posix.c:736: warning: implicit declaration of function `lgetxattr'
posix.c: In function `posix_listxattr':
posix.c:759: warning: implicit declaration of function `llistxattr'
posix.c: In function `posix_removexattr':
posix.c:783: warning: implicit declaration of function `lremovexattr'
posix.c: In function `posix_opendir':
posix.c:808: error: `O_LARGEFILE' undeclared (first use in this
function)
posix.c:808: error: `O_DIRECTORY' undeclared (first use in this
function)
*** Error code 1
Stop in /src/glusterfs-1.3.0-pre3/xlators/storage/posix/src.
*** Error code 1
Stop in /src/glusterfs-1.3.0-pre3/xlators/storage/posix.
*** Error code 1
Stop in /src/glusterfs-1.3.0-pre3/xlators/storage.
*** Error code 1
Stop in /src/glusterfs-1.3.0-pre3/xlators.
*** Error code 1
For the extattr stuff, this rsync patch should give some pointers:
http://lists.samba.org/archive/rsync/2006-November/016653.html
O_LARGEFILE and O_DIRECTORY is pretty much Linux related.
That how far I got with this today. :)
Any help/ideas from the developers? It would be really cool to have such
a thing on FreeBSD.
Thanks,
_______________________________________________
Gluster-devel mailing list
Gluster-devel@xxxxxxxxxx
http://lists.nongnu.org/mailman/listinfo/gluster-devel
--
==============================================
Hitesh Chellani
Tel: 510-354-6801
Mobile: 510-754-3258
www.zresearch.com
Commoditizing Supercomputing and Superstorage!
==============================================