Re: Plans for FreeBSD support?

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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!
==============================================



[Index of Archives]     [Gluster Users]     [Ceph Users]     [Linux ARM Kernel]     [Linux ARM]     [Linux Omap]     [Fedora ARM]     [IETF Annouce]     [Security]     [Bugtraq]     [Linux]     [Linux OMAP]     [Linux MIPS]     [eCos]     [Asterisk Internet PBX]     [Linux API]

  Powered by Linux