[Gluster-devel] Failing to compile on FreeBSD 8.2
Kaleb S. KEITHLEY
kkeithle at redhat.com
Tue Oct 25 17:38:07 UTC 2011
On 10/25/2011 12:01 PM, Damian Pound wrote:
> Initially I just did "./configure; make", but configure didn't enable
> the fuse client and make failed because of some operator thing. Then I
> found that FreeBSD uses a different make from GNU/Linux, so I installed
> gmake, still failed but seemed to have more promising errors. I decided
> to try compiling the last version of gluster that supported MacOSX,
> 2.0.2, that managed to compile, though I haven't tested it since it is 2
> years old. I went to get gcc 4.6.0 since there were a lot of changes
> since 4.2.1, this made the compile of 2.0.2 and 2.0.9 enable fuse, but
> 3.1.7 and 3.2.4 still don't enable it. I tried --enable-fuse-client a
> few times, but that was either ignored or the configure failed.
I'm not sure this is especially helpful, but I took a (very quick) stab
at this using the gcc-4.2.1 that ships with FreeBSD-8.2. The make in
FreeBSD works fine actually; I just ran `./configure && make`. I had to
make some minor, semi-obvious edits to a few files to get them to
compile (diff at the end).
There are a couple of show stoppers though that I did not try to
address. One is the linux mount(2)/umount2(2) versus FreeBSD
mount(2)/unmount(2) system calls and the /etc/mtab updating; both in
contrib/fuse-lib/mount.c. Another is that current Linux distros (Fedora
15 in my case) have a newer version of rpc/xdr than what's in FreeBSD,
and specifically FreeBSD's rpc/xdr lacks xdr_sizeof(3).
Emmanuel Dreyfus has been building 3.2.x on NetBSD (or OpenBSD), he may
have some advice for you too.
--
Kaleb
*** ./glusterfsd/src/glusterfsd-mgmt.c.orig Tue Oct 25 10:51:10 2011
--- ./glusterfsd/src/glusterfsd-mgmt.c Tue Oct 25 10:51:22 2011
***************
*** 21,26 ****
--- 21,27 ----
#include <sys/types.h>
#include <sys/wait.h>
#include <stdlib.h>
+ #include <signal.h>
#ifndef _CONFIG_H
#define _CONFIG_H
*** ./rpc/xdr/src/glusterfs3-xdr.c.orig Tue Oct 25 08:58:53 2011
--- ./rpc/xdr/src/glusterfs3-xdr.c Tue Oct 25 08:59:26 2011
***************
*** 26,31 ****
--- 26,33 ----
#include "glusterfs3-xdr.h"
#include "compat.h"
+ #undef d_ino
+
bool_t
xdr_gf_statfs (XDR *xdrs, gf_statfs *objp)
{
*** ./rpc/rpc-transport/socket/src/socket.c.orig Tue Oct 25 08:58:32 2011
--- ./rpc/rpc-transport/socket/src/socket.c Tue Oct 25 08:31:42 2011
***************
*** 399,405 ****
goto done;
#ifndef GF_LINUX_HOST_OS
! #ifdef GF_SOLARIS_HOST_OS
ret = setsockopt (fd, SOL_SOCKET, SO_KEEPALIVE, &keepalive_intvl,
sizeof (keepalive_intvl));
#else
--- 399,405 ----
goto done;
#ifndef GF_LINUX_HOST_OS
! #ifdef SO_KEEPALIVE
ret = setsockopt (fd, SOL_SOCKET, SO_KEEPALIVE, &keepalive_intvl,
sizeof (keepalive_intvl));
#else
*** ./rpc/rpc-lib/src/xdr-common.h.orig Tue Oct 25 10:57:25 2011
--- ./rpc/rpc-lib/src/xdr-common.h Tue Oct 25 10:57:48 2011
***************
*** 40,45 ****
--- 40,49 ----
#define GLUSTER_DUMP_VERSION 1
+ #define xdr_u_quad_t xdr_u_int64_t
+ #define xdr_quad_t xdr_int64_t
+ #define xdr_uint32_t xdr_u_int32_t
+
#if GF_DARWIN_HOST_OS
#define xdr_u_quad_t xdr_u_int64_t
#define xdr_quad_t xdr_int64_t
*** ./xlators/mount/fuse/src/fuse-bridge.h.orig Tue Oct 25 09:51:33 2011
--- ./xlators/mount/fuse/src/fuse-bridge.h Tue Oct 25 09:52:26 2011
***************
*** 61,66 ****
--- 61,67 ----
#ifdef GF_DARWIN_HOST_OS
#define FUSE_OP_HIGH (FUSE_DESTROY + 1)
#endif
+ #define FUSE_OP_HIGH (FUSE_DESTROY + 1)
#define GLUSTERFS_XATTR_LEN_MAX 65536
#define MAX_FUSE_PROC_DELAY 1
*** ./xlators/mount/fuse/src/fuse-bridge.c.orig Tue Oct 25 09:09:59 2011
--- ./xlators/mount/fuse/src/fuse-bridge.c Tue Oct 25 09:10:24 2011
***************
*** 30,35 ****
--- 30,36 ----
static int gf_fuse_conn_err_log;
static int gf_fuse_xattr_enotsup_log;
+ #define ENODATA ENOATTR
/*
* iov_out should contain a fuse_out_header at zeroth position.
More information about the Gluster-devel
mailing list