diff options
| -rw-r--r-- | Makefile.am | 5 | ||||
| -rw-r--r-- | configure.ac | 49 | ||||
| -rw-r--r-- | extras/Makefile.am | 4 | ||||
| -rw-r--r-- | extras/geo-rep/Makefile.am | 2 | ||||
| -rw-r--r-- | extras/hook-scripts/Makefile.am | 2 | ||||
| -rw-r--r-- | geo-replication/src/Makefile.am | 2 | ||||
| -rw-r--r-- | glusterfs.spec.in | 40 | ||||
| -rw-r--r-- | rpc/rpc-transport/socket/src/socket.c | 18 | 
8 files changed, 91 insertions, 31 deletions
diff --git a/Makefile.am b/Makefile.am index 1282c981d53..4dcf08c741c 100644 --- a/Makefile.am +++ b/Makefile.am @@ -15,7 +15,10 @@ SUBDIRS = $(ARGP_STANDALONE_DIR) libglusterfs rpc api xlators glusterfsd \  	@UMOUNTD_SUBDIR@ tools  pkgconfigdir = @pkgconfigdir@ -pkgconfig_DATA = glusterfs-api.pc libgfchangelog.pc libgfdb.pc +pkgconfig_DATA = glusterfs-api.pc libgfchangelog.pc +if USE_GFDB +pkgconfig_DATA += libgfdb.pc +endif  CLEANFILES =  CONFIG_CLEAN_FILES = $(CONTRIB_BUILDDIR)/uuid/uuid_types.h diff --git a/configure.ac b/configure.ac index e70e1c3b6db..fad2874c70a 100644 --- a/configure.ac +++ b/configure.ac @@ -388,14 +388,7 @@ AC_CHECK_HEADERS([sys/ioctl.h], AC_DEFINE(HAVE_IOCTL_IN_SYS_IOCTL_H, 1, [have sy  AC_CHECK_HEADERS([sys/extattr.h])  dnl Math library -case $host_os in -     linux*) -        MATH_LIB='' -        ;; -     *) -        MATH_LIB='-lm' -        ;; -esac +AC_CHECK_LIB([m], [pow], [MATH_LIB='-lm'], [MATH_LIB=''])  AC_SUBST(MATH_LIB)  dnl use libuuid.so or fall-back to contrib/uuid @@ -406,6 +399,16 @@ PKG_CHECK_MODULES([UUID], [uuid],          [HAVE_LIBUUID=no           UUID_CFLAGS='-I$(CONTRIBDIR)/uuid'])  AM_CONDITIONAL([HAVE_LIBUUID], [test x$HAVE_LIBUUID = xyes]) + +dnl older version of libuuid (from e2fsprogs) require including uuid/uuid.h +saved_CFLAGS=${CFLAGS} +CFLAGS="${CFLAGS} ${UUID_CFLAGS}" +AC_CHECK_HEADER([uuid.h], [], [AC_CHECK_HEADER([uuid/uuid.h])]) +CFLAGS=${saved_CFLAGS} +if test "x$ac_cv_header_uuid_uuid_h" = "xyes"; then +    UUID_CFLAGS="${UUID_CFLAGS} -I$(pkg-config --variable=includedir uuid)/uuid" +fi +  dnl libglusterfs needs uuid.h, practically everything depends on it  GF_CPPFLAGS="${GF_CPPFLAGS} ${UUID_CFLAGS}"  dnl PKGCONFIG_UUID is used for the dependency in *.pc.in files @@ -530,6 +533,10 @@ fi  AM_CONDITIONAL([ENABLE_BD_XLATOR], [test x$BUILD_BD_XLATOR = xyes]) +dnl check for old openssl +AC_CHECK_FUNC([ssl], [CRYPTO_THREADID_set_callback], [HAVE_CRYPTO_THREADID=1], HAVE_CRYPTO_THREADID=0) +AC_DEFINE(HAVE_CRYPTO_THREADID, $HAVE_CRYPTO_THREADID, [use new OpenSSL functions]) +  # start encryption/crypt section  AC_CHECK_HEADERS([openssl/cmac.h], [have_cmac_h=yes], [have_cmac_h=no]) @@ -705,6 +712,7 @@ if test "x$enable_georeplication" != "xno"; then    GEOREP_EXTRAS_SUBDIR=geo-rep  fi  AC_SUBST(GEOREP_EXTRAS_SUBDIR) +AM_CONDITIONAL(USE_GEOREP, test "x$enable_georeplication" != "xno")  # CDC xlator - check if libz is present if so enable HAVE_LIB_Z  BUILD_CDC=yes @@ -808,11 +816,8 @@ AC_SUBST(HAVE_BACKTRACE)  if test "x${have_backtrace}" != "xyes"; then  AC_TRY_COMPILE([#include <math.h>], [double x=0.0; x=ceil(0.0);], -   [have_math_h=yes], +   [],     AC_MSG_ERROR([need math library for libexecinfo])) -if test "x${have_math_h}" = "xyes"; then -   LIBS="$LIBS -lm" -fi  fi  dnl glusterfs prints memory usage to stderr by sending it SIGUSR1 @@ -905,26 +910,29 @@ GF_HOST_OS=""  GF_LDFLAGS="-rdynamic"  dnl check for gcc -Werror=format-security -saved_GF_CFLAGS="-Wformat -Werror=format-security" +saved_CFLAGS=$CFLAGS +CFLAGS="-Wformat -Werror=format-security"  AC_MSG_CHECKING([whether $CC accepts -Werror=format-security])  AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [cc_werror_format_security=yes], [cc_werror_format_security=no])  echo $cc_werror_format_security  if test "x$cc_werror_format_security" = "xno"; then -    GF_CFLAGS="$GF_CFLAGS" +    CFLAGS="$saved_CFLAGS"  else -    GF_CFLAGS="$saved_GF_CFLAGS $GF_CFLAGS" +    CFLAGS="$saved_CFLAGS $CFLAGS" +    GF_CFLAGS="$GF_CFLAGS $CFLAGS"  fi  dnl check for gcc -Werror=implicit-function-declaration -saved_GF_CFLAGS=$GF_CFLAGS -GF_CFLAGS="-Werror=implicit-function-declaration" +saved_CFLAGS=$CFLAGS +CFLAGS="-Werror=implicit-function-declaration"  AC_MSG_CHECKING([whether $CC accepts -Werror=implicit-function-declaration])  AC_COMPILE_IFELSE([AC_LANG_PROGRAM()], [cc_werror_implicit=yes], [cc_werror_implicit=no])  echo $cc_werror_implicit  if test "x$cc_werror_implicit" = "xno"; then -    GF_CFLAGS="$saved_GF_CFLAGS" +    CFLAGS="$saved_CFLAGS"  else -    GF_CFLAGS="$saved_GF_CFLAGS $GF_CFLAGS" +    CFLAGS="$saved_CFLAGS $CFLAGS" +    GF_CFLAGS="$GF_CFLAGS $CFLAGS"  fi  dnl clang is mostly GCC-compatible, but its version is much lower, @@ -1242,6 +1250,9 @@ AC_SUBST(UNITTEST_LDFLAGS)  AC_SUBST(CFLAGS)  # end enable debug section +dnl libglusterfs.so uses math functions +GF_LDADD="${GF_LDADD} ${MATH_LIB}" +  AC_SUBST(GF_HOST_OS)  AC_SUBST(GF_CFLAGS)  AC_SUBST(GF_LDFLAGS) diff --git a/extras/Makefile.am b/extras/Makefile.am index d54f7507210..ba2bef31420 100644 --- a/extras/Makefile.am +++ b/extras/Makefile.am @@ -1,5 +1,5 @@ -gsyncddir = $(libexecdir)/glusterfs -gsyncd_SCRIPTS = peer_add_secret_pub +addonexecdir = $(libexecdir)/glusterfs +addonexec_SCRIPTS = peer_add_secret_pub  EditorModedir = $(docdir)  EditorMode_DATA = glusterfs-mode.el glusterfs.vim diff --git a/extras/geo-rep/Makefile.am b/extras/geo-rep/Makefile.am index e0aab77644e..7ebede32686 100644 --- a/extras/geo-rep/Makefile.am +++ b/extras/geo-rep/Makefile.am @@ -5,7 +5,7 @@ scripts_DATA =  gsync-upgrade.sh generate-gfid-file.sh get-gfid.sh \  scripts_PROGRAMS = gsync-sync-gfid  gsync_sync_gfid_CFLAGS = $(GF_CFLAGS) -Wall -I$(top_srcdir)/libglusterfs/src  gsync_sync_gfid_LDFLAGS = $(GF_LDFLAGS) -gsync_sync_gfid_LDADD = $(GF_LIBS) $(top_builddir)/libglusterfs/src/libglusterfs.la +gsync_sync_gfid_LDADD = $(GF_LDADD) $(top_builddir)/libglusterfs/src/libglusterfs.la  gsync_sync_gfid_SOURCES = gsync-sync-gfid.c  gsync_sync_gfid_CPPFLAGS = $(GF_CPPFLAGS) -I$(top_srcdir)/libglusterfs/src diff --git a/extras/hook-scripts/Makefile.am b/extras/hook-scripts/Makefile.am index fa126f90591..771b37e3fdf 100644 --- a/extras/hook-scripts/Makefile.am +++ b/extras/hook-scripts/Makefile.am @@ -2,4 +2,6 @@ EXTRA_DIST = S40ufo-stop.py S56glusterd-geo-rep-create-post.sh  SUBDIRS = add-brick set start stop reset  scriptsdir = $(GLUSTERD_WORKDIR)/hooks/1/gsync-create/post/ +if USE_GEOREP  scripts_SCRIPTS = S56glusterd-geo-rep-create-post.sh +endif diff --git a/geo-replication/src/Makefile.am b/geo-replication/src/Makefile.am index e9d6bc1a27e..1572698f8ae 100644 --- a/geo-replication/src/Makefile.am +++ b/geo-replication/src/Makefile.am @@ -11,7 +11,7 @@ gsyncd_PROGRAMS = gsyncd  gsyncd_SOURCES = gsyncd.c procdiggy.c -gsyncd_LDADD = $(top_builddir)/libglusterfs/src/libglusterfs.la +gsyncd_LDADD = $(GF_LDADD) $(top_builddir)/libglusterfs/src/libglusterfs.la  gsyncd_LDFLAGS = $(GF_LDFLAGS) diff --git a/glusterfs.spec.in b/glusterfs.spec.in index 36add2caccd..b9e2d689340 100644 --- a/glusterfs.spec.in +++ b/glusterfs.spec.in @@ -72,6 +72,11 @@  %define _without_qemu_block --disable-qemu-block  %endif +# Disable data-tiering on EL5, sqlite is too old +%if ( 0%{?rhel} && 0%{?rhel} < 6 ) +%global _without_tiering --disable-tiering +%endif +  ##-----------------------------------------------------------------------------  ## All %global definitions should be placed here and keep them sorted  ## @@ -196,11 +201,17 @@ BuildRequires:    libaio-devel libacl-devel  BuildRequires:    python-devel  BuildRequires:    python-ctypes  BuildRequires:    userspace-rcu-devel >= 0.7 +%if ( 0%{?rhel} && 0%{?rhel} <= 5 ) +BuildRequires:    e2fsprogs-devel +%else  BuildRequires:    libuuid-devel +%endif  %if ( 0%{?_with_cmocka:1} )  BuildRequires:    libcmocka-devel >= 1.0.1  %endif +%if ( 0%{!?_without_tiering:1} )  BuildRequires:    sqlite-devel +%endif  %if ( 0%{!?_without_systemtap:1} )  BuildRequires:    systemtap-sdt-devel  %endif @@ -572,17 +583,18 @@ This package provides the translators needed on any GlusterFS client.  %build  ./autogen.sh && %configure \ +        %{?_with_cmocka} \          %{?_with_tmpfilesdir} \ -        %{?_without_rdma} \ +        %{?_without_bd} \          %{?_without_epoll} \          %{?_without_fusermount} \          %{?_without_georeplication} \          %{?_without_ocf} \ -        %{?_without_syslog} \ -        %{?_without_bd} \          %{?_without_qemu_block} \ +        %{?_without_rdma} \ +        %{?_without_syslog} \          %{?_without_systemtap} \ -        %{?_with_cmocka} +        %{?_without_tiering}  # fix hardening and remove rpath in shlibs  %if ( 0%{?fedora} && 0%{?fedora} > 17 ) || ( 0%{?rhel} && 0%{?rhel} > 6 ) @@ -946,7 +958,10 @@ fi  %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/debug/error-gen.so  %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/debug/io-stats.so  %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/debug/trace.so +%if ( ! ( 0%{?rhel} && 0%{?rhel} < 6 ) ) +# RHEL-5 based distributions have a too old openssl  %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/encryption/crypt.so +%endif  %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/access-control.so  %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/barrier.so  %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/cdc.so @@ -996,13 +1011,17 @@ fi  %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/glupy/helloworld.*  %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/glupy/negative.*  %{_libdir}/pkgconfig/libgfchangelog.pc +%if ( 0%{!?_without_tiering:1} )  %{_libdir}/pkgconfig/libgfdb.pc +%endif  %files client-xlators  %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/cluster/*.so  %exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/cluster/pump.so  %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/ganesha.so +%if ( 0%{!?_without_qemu_block:1} )  %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/qemu-block.so +%endif  %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/protocol/client.so  %files extra-xlators @@ -1064,17 +1083,17 @@ fi  %{_datadir}/glusterfs/scripts/generate-gfid-file.sh  %{_datadir}/glusterfs/scripts/gsync-sync-gfid  %ghost %attr(0644,-,-) %{_sharedstatedir}/glusterd/geo-replication/gsyncd_template.conf +%endif  %{_libexecdir}/glusterfs/gfind_missing_files  %{_sbindir}/gfind_missing_files -%exclude %{_libexecdir}/glusterfs/gfind_missing_files/gfid_to_path.pyo -%exclude %{_libexecdir}/glusterfs/gfind_missing_files/gfid_to_path.pyc -%endif  %files libs  %{_libdir}/*.so.*  %exclude %{_libdir}/libgfapi.* +%if ( 0%{!?_without_tiering:1} )  # libgfdb is only needed server-side  %exclude %{_libdir}/libgfdb.* +%endif  %files -n python-gluster  # introducing glusterfs module in site packages. @@ -1136,7 +1155,9 @@ fi  %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/arbiter.so  %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/bit-rot.so  %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/bitrot-stub.so +%if ( 0%{!?_without_tiering:1} )  %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/changetimerecorder.so +%endif  %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/index.so  %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/locks.so  %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/posix* @@ -1149,7 +1170,9 @@ fi  %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/nfs*  %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/protocol/server*  %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/storage* +%if ( 0%{!?_without_tiering:1} )  %{_libdir}/libgfdb.so.* +%endif  #snap_scheduler  %{_sbindir}/snap_scheduler.py @@ -1218,6 +1241,9 @@ fi  * Mon May 18 2015 Milind Changire <mchangir@redhat.com>  - Move file peer_add_secret_pub to the server RPM to support glusterfind (#1221544) +* Sun May 17 2015 Niels de Vos <ndevos@redhat.com> +- Fix building on RHEL-5 based distributions (#1222317) +  * Tue May 05 2015 Niels de Vos <ndevos@redhat.com>  - Introduce glusterfs-client-xlators to reduce dependencies (#1195947) diff --git a/rpc/rpc-transport/socket/src/socket.c b/rpc/rpc-transport/socket/src/socket.c index e6ef7d2c220..355a7888f14 100644 --- a/rpc/rpc-transport/socket/src/socket.c +++ b/rpc/rpc-transport/socket/src/socket.c @@ -3709,6 +3709,7 @@ locking_func (int mode, int type, const char *file, int line)          }  } +#if HAVE_CRYPTO_THREADID  static void  threadid_func (CRYPTO_THREADID *id)  { @@ -3724,6 +3725,14 @@ threadid_func (CRYPTO_THREADID *id)           */          CRYPTO_THREADID_set_numeric (id, (unsigned long)pthread_self());  } +#else /* older openssl */ +static unsigned long +legacy_threadid_func (void) +{ +	/* See comments above, it applies here too. */ +	return (unsigned long)pthread_self(); +} +#endif  static void __attribute__((constructor))  init_openssl_mt (void) @@ -3738,7 +3747,11 @@ init_openssl_mt (void)                          pthread_mutex_init (&lock_array[i], NULL);                  }                  CRYPTO_set_locking_callback (locking_func); +#if HAVE_CRYPTO_THREADID                  CRYPTO_THREADID_set_callback (threadid_func); +#else /* older openssl */ +                CRYPTO_set_id_callback (legacy_threadid_func); +#endif                  constructor_ok = _gf_true;          } @@ -3987,7 +4000,12 @@ socket_init (rpc_transport_t *this)                          goto err;                  } +#if defined(TLS1_2_VERSION)  		priv->ssl_meth = (SSL_METHOD *)TLSv1_2_method(); +#else /* old openssl */ +#warning TLSv1.2 is not available, using insecure TLSv1 support +		priv->ssl_meth = (SSL_METHOD *)TLSv1_method(); +#endif  		priv->ssl_ctx = SSL_CTX_new(priv->ssl_meth);                  if (SSL_CTX_set_cipher_list(priv->ssl_ctx, cipher_list) == 0) {  | 
