From f7b1245ca221fd7d4cee626ae358a2ebc933ffdd Mon Sep 17 00:00:00 2001 From: "Kaleb S. KEITHLEY" Date: Mon, 17 Jun 2013 13:44:10 -0400 Subject: build: sync glusterfs.spec.in with Fedora glusterfs.spec * add glusterfs-api and glusterfs-api-devel sub-packages * add extras/systemd/glusterd.service. Use it (or extras/init.d/glusterd) instead of the Fedora versions. * restores ability to build glusterfs RPMs from the dist tarball with 'rpmbuild {-ts,-tb,-ta} glusterfs-XXX.tar.gz' * other minor cleanups mostly to sync with fedora .spec and to build from the dist tarball. Any differences will be resolved in the fedora .spec in the next release (i.e. beta4 or GA). (still considering whether to add fedora glusterfsd.{init,service} files to glusterfs or remove them from fedora.) BUG: 950083 Change-Id: Ibda3cd57b24ef5c2a27446703e718e5044ec546c Signed-off-by: Kaleb S. KEITHLEY Reviewed-on: http://review.gluster.org/5230 Tested-by: Gluster Build System Reviewed-by: Bala FA Reviewed-by: Niels de Vos --- configure.ac | 312 +++++++++++++++++++------------------ extras/LinuxRPM/Makefile.am | 9 +- extras/Makefile.am | 4 +- extras/init.d/Makefile.am | 15 +- extras/systemd/Makefile.am | 11 ++ extras/systemd/glusterd.service.in | 12 ++ glusterfs.spec.in | 211 +++++++++++++++---------- 7 files changed, 325 insertions(+), 249 deletions(-) create mode 100644 extras/systemd/Makefile.am create mode 100644 extras/systemd/glusterd.service.in diff --git a/configure.ac b/configure.ac index 2a47d17a479..9db3bf9354e 100644 --- a/configure.ac +++ b/configure.ac @@ -27,10 +27,10 @@ fi AC_CONFIG_HEADERS([config.h]) AC_CONFIG_FILES([Makefile - libglusterfs/Makefile - libglusterfs/src/Makefile - glusterfsd/Makefile - glusterfsd/src/Makefile + libglusterfs/Makefile + libglusterfs/src/Makefile + glusterfsd/Makefile + glusterfsd/src/Makefile rpc/Makefile rpc/rpc-lib/Makefile rpc/rpc-lib/src/Makefile @@ -41,87 +41,87 @@ AC_CONFIG_FILES([Makefile rpc/rpc-transport/rdma/src/Makefile rpc/xdr/Makefile rpc/xdr/src/Makefile - xlators/Makefile - xlators/mount/Makefile - xlators/mount/fuse/Makefile - xlators/mount/fuse/src/Makefile - xlators/mount/fuse/utils/mount.glusterfs - xlators/mount/fuse/utils/mount_glusterfs - xlators/mount/fuse/utils/Makefile - xlators/storage/Makefile - xlators/storage/posix/Makefile - xlators/storage/posix/src/Makefile - xlators/storage/bd_map/Makefile - xlators/storage/bd_map/src/Makefile - xlators/cluster/Makefile - xlators/cluster/afr/Makefile - xlators/cluster/afr/src/Makefile - xlators/cluster/stripe/Makefile - xlators/cluster/stripe/src/Makefile - xlators/cluster/dht/Makefile - xlators/cluster/dht/src/Makefile - xlators/performance/Makefile - xlators/performance/write-behind/Makefile - xlators/performance/write-behind/src/Makefile - xlators/performance/read-ahead/Makefile - xlators/performance/read-ahead/src/Makefile - xlators/performance/io-threads/Makefile - xlators/performance/io-threads/src/Makefile - xlators/performance/io-cache/Makefile - xlators/performance/io-cache/src/Makefile - xlators/performance/symlink-cache/Makefile - xlators/performance/symlink-cache/src/Makefile - xlators/performance/quick-read/Makefile - xlators/performance/quick-read/src/Makefile - xlators/performance/open-behind/Makefile - xlators/performance/open-behind/src/Makefile + xlators/Makefile + xlators/mount/Makefile + xlators/mount/fuse/Makefile + xlators/mount/fuse/src/Makefile + xlators/mount/fuse/utils/mount.glusterfs + xlators/mount/fuse/utils/mount_glusterfs + xlators/mount/fuse/utils/Makefile + xlators/storage/Makefile + xlators/storage/posix/Makefile + xlators/storage/posix/src/Makefile + xlators/storage/bd_map/Makefile + xlators/storage/bd_map/src/Makefile + xlators/cluster/Makefile + xlators/cluster/afr/Makefile + xlators/cluster/afr/src/Makefile + xlators/cluster/stripe/Makefile + xlators/cluster/stripe/src/Makefile + xlators/cluster/dht/Makefile + xlators/cluster/dht/src/Makefile + xlators/performance/Makefile + xlators/performance/write-behind/Makefile + xlators/performance/write-behind/src/Makefile + xlators/performance/read-ahead/Makefile + xlators/performance/read-ahead/src/Makefile + xlators/performance/io-threads/Makefile + xlators/performance/io-threads/src/Makefile + xlators/performance/io-cache/Makefile + xlators/performance/io-cache/src/Makefile + xlators/performance/symlink-cache/Makefile + xlators/performance/symlink-cache/src/Makefile + xlators/performance/quick-read/Makefile + xlators/performance/quick-read/src/Makefile + xlators/performance/open-behind/Makefile + xlators/performance/open-behind/src/Makefile xlators/performance/md-cache/Makefile xlators/performance/md-cache/src/Makefile - xlators/debug/Makefile - xlators/debug/trace/Makefile - xlators/debug/trace/src/Makefile - xlators/debug/error-gen/Makefile - xlators/debug/error-gen/src/Makefile - xlators/debug/io-stats/Makefile - xlators/debug/io-stats/src/Makefile - xlators/protocol/Makefile - xlators/protocol/auth/Makefile - xlators/protocol/auth/addr/Makefile - xlators/protocol/auth/addr/src/Makefile - xlators/protocol/auth/login/Makefile - xlators/protocol/auth/login/src/Makefile - xlators/protocol/client/Makefile - xlators/protocol/client/src/Makefile - xlators/protocol/server/Makefile - xlators/protocol/server/src/Makefile - xlators/features/Makefile - xlators/features/glupy/Makefile - xlators/features/glupy/src/Makefile - xlators/features/locks/Makefile - xlators/features/locks/src/Makefile - xlators/features/quota/Makefile - xlators/features/quota/src/Makefile + xlators/debug/Makefile + xlators/debug/trace/Makefile + xlators/debug/trace/src/Makefile + xlators/debug/error-gen/Makefile + xlators/debug/error-gen/src/Makefile + xlators/debug/io-stats/Makefile + xlators/debug/io-stats/src/Makefile + xlators/protocol/Makefile + xlators/protocol/auth/Makefile + xlators/protocol/auth/addr/Makefile + xlators/protocol/auth/addr/src/Makefile + xlators/protocol/auth/login/Makefile + xlators/protocol/auth/login/src/Makefile + xlators/protocol/client/Makefile + xlators/protocol/client/src/Makefile + xlators/protocol/server/Makefile + xlators/protocol/server/src/Makefile + xlators/features/Makefile + xlators/features/glupy/Makefile + xlators/features/glupy/src/Makefile + xlators/features/locks/Makefile + xlators/features/locks/src/Makefile + xlators/features/quota/Makefile + xlators/features/quota/src/Makefile xlators/features/marker/Makefile xlators/features/marker/src/Makefile xlators/features/marker/utils/Makefile xlators/features/marker/utils/src/Makefile xlators/features/marker/utils/syncdaemon/Makefile - xlators/features/read-only/Makefile - xlators/features/read-only/src/Makefile - xlators/features/mac-compat/Makefile - xlators/features/mac-compat/src/Makefile - xlators/features/quiesce/Makefile - xlators/features/quiesce/src/Makefile + xlators/features/read-only/Makefile + xlators/features/read-only/src/Makefile + xlators/features/mac-compat/Makefile + xlators/features/mac-compat/src/Makefile + xlators/features/quiesce/Makefile + xlators/features/quiesce/src/Makefile xlators/features/index/Makefile xlators/features/index/src/Makefile - xlators/features/protect/Makefile - xlators/features/protect/src/Makefile + xlators/features/protect/Makefile + xlators/features/protect/src/Makefile xlators/playground/Makefile - xlators/playground/template/Makefile - xlators/playground/template/src/Makefile - xlators/encryption/Makefile - xlators/encryption/rot-13/Makefile - xlators/encryption/rot-13/src/Makefile + xlators/playground/template/Makefile + xlators/playground/template/src/Makefile + xlators/encryption/Makefile + xlators/encryption/rot-13/Makefile + xlators/encryption/rot-13/src/Makefile xlators/system/Makefile xlators/system/posix-acl/Makefile xlators/system/posix-acl/src/Makefile @@ -133,25 +133,27 @@ AC_CONFIG_FILES([Makefile xlators/mgmt/glusterd/src/Makefile cli/Makefile cli/src/Makefile - doc/Makefile - extras/Makefile - extras/init.d/Makefile - extras/init.d/glusterd.plist + doc/Makefile + extras/Makefile + extras/init.d/Makefile + extras/init.d/glusterd.plist extras/init.d/glusterd-Debian extras/init.d/glusterd-Redhat extras/init.d/glusterd-SuSE - extras/benchmarking/Makefile + extras/systemd/Makefile + extras/systemd/glusterd.service + extras/benchmarking/Makefile extras/hook-scripts/Makefile - extras/ocf/Makefile - extras/ocf/glusterd - extras/ocf/volume - extras/LinuxRPM/Makefile - contrib/fuse-util/Makefile - contrib/uuid/uuid_types.h - glusterfs-api.pc - api/Makefile - api/src/Makefile - glusterfs.spec]) + extras/ocf/Makefile + extras/ocf/glusterd + extras/ocf/volume + extras/LinuxRPM/Makefile + contrib/fuse-util/Makefile + contrib/uuid/uuid_types.h + glusterfs-api.pc + api/Makefile + api/src/Makefile + glusterfs.spec]) AC_CANONICAL_HOST @@ -171,6 +173,12 @@ AC_ARG_WITH(mountutildir, [mountutildir='/sbin']) AC_SUBST(mountutildir) +AC_ARG_WITH(systemddir, + [ --with-systemddir=DIR systemd service files in DIR @<:@/usr/lib/systemd/system@:>@], + [systemddir=$withval], + [systemddir='/usr/lib/systemd/system']) +AC_SUBST(systemddir) + AC_ARG_WITH(initdir, [ --with-initdir=DIR init.d scripts in DIR @<:@/etc/init.d@:>@], [initdir=$withval], @@ -268,8 +276,8 @@ fi # FUSE section AC_ARG_ENABLE([fuse-client], - AC_HELP_STRING([--disable-fuse-client], - [Do not build the fuse client. NOTE: you cannot mount glusterfs without the client])) + AC_HELP_STRING([--disable-fuse-client], + [Do not build the fuse client. NOTE: you cannot mount glusterfs without the client])) BUILD_FUSE_CLIENT=no if test "x$enable_fuse_client" != "xno"; then @@ -308,8 +316,8 @@ AC_SUBST(FUSE_CLIENT_SUBDIR) # FUSERMOUNT section AC_ARG_ENABLE([fusermount], - AC_HELP_STRING([--disable-fusermount], - [Use system's fusermount])) + AC_HELP_STRING([--disable-fusermount], + [Use system's fusermount])) BUILD_FUSERMOUNT="yes" if test "x$enable_fusermount" = "xno"; then @@ -325,28 +333,28 @@ AC_SUBST(FUSERMOUNT_SUBDIR) # EPOLL section AC_ARG_ENABLE([epoll], - AC_HELP_STRING([--disable-epoll], - [Use poll instead of epoll.])) + AC_HELP_STRING([--disable-epoll], + [Use poll instead of epoll.])) BUILD_EPOLL=no if test "x$enable_epoll" != "xno"; then AC_CHECK_HEADERS([sys/epoll.h], [BUILD_EPOLL=yes], - [BUILD_EPOLL=no]) + [BUILD_EPOLL=no]) fi # end EPOLL section # IBVERBS section AC_ARG_ENABLE([ibverbs], - AC_HELP_STRING([--disable-ibverbs], - [Do not build the ibverbs transport])) + AC_HELP_STRING([--disable-ibverbs], + [Do not build the ibverbs transport])) if test "x$enable_ibverbs" != "xno"; then AC_CHECK_LIB([ibverbs], [ibv_get_device_list], - [HAVE_LIBIBVERBS="yes"], - [HAVE_LIBIBVERBS="no"]) + [HAVE_LIBIBVERBS="yes"], + [HAVE_LIBIBVERBS="no"]) AC_CHECK_LIB([rdmacm], [rdma_create_id], [HAVE_RDMACM="yes"], [HAVE_RDMACM="no"]) fi @@ -378,8 +386,8 @@ AC_SUBST(RDMA_SUBDIR) # SYNCDAEMON section AC_ARG_ENABLE([georeplication], - AC_HELP_STRING([--disable-georeplication], - [Do not install georeplication components])) + AC_HELP_STRING([--disable-georeplication], + [Do not install georeplication components])) BUILD_SYNCDAEMON=no case $host_os in @@ -391,7 +399,7 @@ case $host_os in ;; *) #disabling geo replication for non-linux platforms - enable_georeplication=no + enable_georeplication=no ;; esac SYNCDAEMON_COMPILE=0 @@ -485,9 +493,9 @@ AC_CHECK_MEMBERS([struct stat.st_atim.tv_nsec]) dnl FreeBSD, NetBSD AC_CHECK_MEMBERS([struct stat.st_atimespec.tv_nsec]) case $host_os in - *netbsd*) - CFLAGS=-D_INCOMPLETE_XOPEN_C063 - ;; + *netbsd*) + CFLAGS=-D_INCOMPLETE_XOPEN_C063 + ;; esac AC_CHECK_FUNC([linkat], [have_linkat=yes]) if test "x${have_linkat}" = "xyes"; then @@ -567,59 +575,59 @@ fi case $host_os in linux*) - dnl GF_LINUX_HOST_OS=1 + dnl GF_LINUX_HOST_OS=1 GF_HOST_OS="GF_LINUX_HOST_OS" - GF_CFLAGS="${ARGP_STANDALONE_CPPFLAGS} -O0" - GF_GLUSTERFS_CFLAGS="${GF_CFLAGS}" - GF_LDADD="${ARGP_STANDALONE_LDADD}" - GF_FUSE_CFLAGS="-DFUSERMOUNT_DIR=\\\"\$(bindir)\\\"" - ;; + GF_CFLAGS="${ARGP_STANDALONE_CPPFLAGS} -O0" + GF_GLUSTERFS_CFLAGS="${GF_CFLAGS}" + GF_LDADD="${ARGP_STANDALONE_LDADD}" + GF_FUSE_CFLAGS="-DFUSERMOUNT_DIR=\\\"\$(bindir)\\\"" + ;; solaris*) GF_HOST_OS="GF_SOLARIS_HOST_OS" - GF_CFLAGS="${ARGP_STANDALONE_CPPFLAGS} -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -O0 -m64" - GF_LDFLAGS="" - GF_GLUSTERFS_CFLAGS="${GF_CFLAGS}" - GF_LDADD="${ARGP_STANDALONE_LDADD}" - GF_GLUSTERFS_LIBS="-lnsl -lresolv -lsocket" + GF_CFLAGS="${ARGP_STANDALONE_CPPFLAGS} -D_REENTRANT -D_POSIX_PTHREAD_SEMANTICS -O0 -m64" + GF_LDFLAGS="" + GF_GLUSTERFS_CFLAGS="${GF_CFLAGS}" + GF_LDADD="${ARGP_STANDALONE_LDADD}" + GF_GLUSTERFS_LIBS="-lnsl -lresolv -lsocket" BUILD_FUSE_CLIENT=no FUSE_CLIENT_SUBDIR="" - ;; + ;; *netbsd*) - GF_HOST_OS="GF_BSD_HOST_OS" - GF_CFLAGS="${ARGP_STANDALONE_CPPFLAGS} -D_INCOMPLETE_XOPEN_C063" - GF_CFLAGS="${GF_CFLAGS} -DTHREAD_UNSAFE_BASENAME" - GF_CFLAGS="${GF_CFLAGS} -DTHREAD_UNSAFE_DIRNAME" - GF_GLUSTERFS_CFLAGS="${GF_CFLAGS}" - GF_LDADD="${ARGP_STANDALONE_LDADD}" - if test "x$ac_cv_header_execinfo_h" = "xyes"; then - GF_GLUSTERFS_LIBS="-lexecinfo" - fi - GF_FUSE_LDADD="-lperfuse" - BUILD_FUSE_CLIENT=yes - LEXLIB="" - ;; + GF_HOST_OS="GF_BSD_HOST_OS" + GF_CFLAGS="${ARGP_STANDALONE_CPPFLAGS} -D_INCOMPLETE_XOPEN_C063" + GF_CFLAGS="${GF_CFLAGS} -DTHREAD_UNSAFE_BASENAME" + GF_CFLAGS="${GF_CFLAGS} -DTHREAD_UNSAFE_DIRNAME" + GF_GLUSTERFS_CFLAGS="${GF_CFLAGS}" + GF_LDADD="${ARGP_STANDALONE_LDADD}" + if test "x$ac_cv_header_execinfo_h" = "xyes"; then + GF_GLUSTERFS_LIBS="-lexecinfo" + fi + GF_FUSE_LDADD="-lperfuse" + BUILD_FUSE_CLIENT=yes + LEXLIB="" + ;; *bsd*) GF_HOST_OS="GF_BSD_HOST_OS" - GF_CFLAGS="${ARGP_STANDALONE_CPPFLAGS} -O0" - GF_CFLAGS="${GF_CFLAGS} -DTHREAD_UNSAFE_BASENAME" - GF_CFLAGS="${GF_CFLAGS} -DTHREAD_UNSAFE_DIRNAME" - GF_GLUSTERFS_CFLAGS="${GF_CFLAGS}" - GF_LDADD="${ARGP_STANDALONE_LDADD}" - if test "x$ac_cv_header_execinfo_h" = "xyes"; then - GF_GLUSTERFS_LIBS="-lexecinfo" - fi - BUILD_FUSE_CLIENT=no - ;; + GF_CFLAGS="${ARGP_STANDALONE_CPPFLAGS} -O0" + GF_CFLAGS="${GF_CFLAGS} -DTHREAD_UNSAFE_BASENAME" + GF_CFLAGS="${GF_CFLAGS} -DTHREAD_UNSAFE_DIRNAME" + GF_GLUSTERFS_CFLAGS="${GF_CFLAGS}" + GF_LDADD="${ARGP_STANDALONE_LDADD}" + if test "x$ac_cv_header_execinfo_h" = "xyes"; then + GF_GLUSTERFS_LIBS="-lexecinfo" + fi + BUILD_FUSE_CLIENT=no + ;; darwin*) GF_HOST_OS="GF_DARWIN_HOST_OS" - LIBTOOL=glibtool - GF_CFLAGS="${ARGP_STANDALONE_CPPFLAGS} -D__DARWIN_64_BIT_INO_T -bundle -undefined suppress -flat_namespace -D_XOPEN_SOURCE -O0" - GF_CFLAGS="${GF_CFLAGS} -DTHREAD_UNSAFE_BASENAME" - GF_CFLAGS="${GF_CFLAGS} -DTHREAD_UNSAFE_DIRNAME" - GF_GLUSTERFS_CFLAGS="${ARGP_STANDALONE_CPPFLAGS} -D__DARWIN_64_BIT_INO_T -undefined suppress -flat_namespace -O0" - GF_LDADD="${ARGP_STANDALONE_LDADD}" - GF_FUSE_CFLAGS="-I\$(CONTRIBDIR)/macfuse" - ;; + LIBTOOL=glibtool + GF_CFLAGS="${ARGP_STANDALONE_CPPFLAGS} -D__DARWIN_64_BIT_INO_T -bundle -undefined suppress -flat_namespace -D_XOPEN_SOURCE -O0" + GF_CFLAGS="${GF_CFLAGS} -DTHREAD_UNSAFE_BASENAME" + GF_CFLAGS="${GF_CFLAGS} -DTHREAD_UNSAFE_DIRNAME" + GF_GLUSTERFS_CFLAGS="${ARGP_STANDALONE_CPPFLAGS} -D__DARWIN_64_BIT_INO_T -undefined suppress -flat_namespace -O0" + GF_LDADD="${ARGP_STANDALONE_LDADD}" + GF_FUSE_CFLAGS="-I\$(CONTRIBDIR)/macfuse" + ;; esac # enable debug section @@ -666,8 +674,8 @@ if echo $PYTHON_VERSION | grep ^2; then fi AC_CHECK_HEADERS([python$PYTHON_VERSION/Python.h],[have_Python_h=yes],[]) AC_ARG_ENABLE([glupy], - AS_HELP_STRING([--enable-glupy], - [build glupy])) + AS_HELP_STRING([--enable-glupy], + [build glupy])) case x$enable_glupy in xyes) if test "x$have_python2" = "xyes" -a "x$have_Python_h" = "xyes"; then diff --git a/extras/LinuxRPM/Makefile.am b/extras/LinuxRPM/Makefile.am index 09d2f9e4201..1dafa982bd6 100644 --- a/extras/LinuxRPM/Makefile.am +++ b/extras/LinuxRPM/Makefile.am @@ -1,6 +1,5 @@ -GFS_TAR = ../../glusterfs-*git.tar.gz -GFS_SPEC = ../../glusterfs.spec +GFS_TAR = ../../glusterfs-$(VERSION).tar.gz .PHONY: all @@ -12,9 +11,9 @@ all: glusterrpms: prep srcrpm rpms -rm -rf rpmbuild -prep:: - if [ ! -e $(GFS_TAR) -a ! -e $(GFS_SPEC) ]; then \ - $(MAKE) -c ../.. dist; \ +prep: + if [ ! -e $(GFS_TAR) ]; then \ + $(MAKE) -C ../.. dist; \ fi -mkdir -p rpmbuild/SPECS -mkdir -p rpmbuild/RPMS diff --git a/extras/Makefile.am b/extras/Makefile.am index 7b55ef2ee7e..63ad7101655 100644 --- a/extras/Makefile.am +++ b/extras/Makefile.am @@ -2,7 +2,7 @@ EditorModedir = $(docdir) EditorMode_DATA = glusterfs-mode.el glusterfs.vim -SUBDIRS = init.d benchmarking hook-scripts $(OCF_SUBDIR) LinuxRPM +SUBDIRS = init.d systemd benchmarking hook-scripts $(OCF_SUBDIR) LinuxRPM confdir = $(sysconfdir)/glusterfs conf_DATA = glusterfs-logrotate @@ -10,5 +10,5 @@ conf_DATA = glusterfs-logrotate EXTRA_DIST = specgen.scm MacOSX/Portfile glusterfs-mode.el glusterfs.vim \ migrate-unify-to-distribute.sh backend-xattr-sanitize.sh \ backend-cleanup.sh disk_usage_sync.sh quota-remove-xattr.sh \ - quota-metadata-cleanup.sh glusterfs-logrotate clear_xattrs.sh \ + quota-metadata-cleanup.sh glusterfs-logrotate clear_xattrs.sh \ group-virt.example glusterd-sysconfig diff --git a/extras/init.d/Makefile.am b/extras/init.d/Makefile.am index 7c26a0e8e2b..38898fddd2e 100644 --- a/extras/init.d/Makefile.am +++ b/extras/init.d/Makefile.am @@ -3,17 +3,20 @@ EXTRA_DIST = glusterd-Debian glusterd-Redhat glusterd-SuSE glusterd.plist rhel5- CLEANFILES = -initdir = @initdir@ -launchddir = @launchddir@ +INIT_DIR = @initdir@ +SYSTEMD_DIR = @systemddir@ +LAUNCHD_DIR = @launchddir@ $(GF_DISTRIBUTION): - $(mkdir_p) $(DESTDIR)$(initdir) - $(INSTALL_PROGRAM) glusterd-$(GF_DISTRIBUTION) $(DESTDIR)$(initdir)/glusterd + @if [ ! -d $(SYSTEMD_DIR) ]; then \ + $(mkdir_p) $(DESTDIR)$(INIT_DIR); \ + $(INSTALL_PROGRAM) glusterd-$(GF_DISTRIBUTION) $(DESTDIR)$(INIT_DIR)/glusterd; \ + fi install-exec-local: $(GF_DISTRIBUTION) install-data-local: if GF_DARWIN_HOST_OS - $(mkdir_p) $(DESTDIR)$(launchddir) - $(INSTALL_PROGRAM) glusterd.plist $(DESTDIR)$(launchddir)/com.gluster.glusterd.plist + $(mkdir_p) $(DESTDIR)$(LAUNCHD_DIR) + $(INSTALL_PROGRAM) glusterd.plist $(DESTDIR)$(LAUNCHD_DIR)/com.gluster.glusterd.plist endif diff --git a/extras/systemd/Makefile.am b/extras/systemd/Makefile.am new file mode 100644 index 00000000000..3fc656b8262 --- /dev/null +++ b/extras/systemd/Makefile.am @@ -0,0 +1,11 @@ + +CLEANFILES = + +SYSTEMD_DIR = @systemddir@ + +install-exec-local: + @if [ -d $(SYSTEMD_DIR) ]; then \ + $(mkdir_p) $(DESTDIR)$(SYSTEMD_DIR); \ + $(INSTALL_PROGRAM) glusterd.service $(DESTDIR)$(SYSTEMD_DIR)/; \ + fi + diff --git a/extras/systemd/glusterd.service.in b/extras/systemd/glusterd.service.in new file mode 100644 index 00000000000..0b24aea3bec --- /dev/null +++ b/extras/systemd/glusterd.service.in @@ -0,0 +1,12 @@ +[Unit] +Description=GlusterFS an clustered file-system server +After=network.target rpcbind.service + +[Service] +Type=forking +PIDFile=/run/glusterd.pid +LimitNOFILE=65536 +ExecStart=/usr/sbin/glusterd -p /run/glusterd.pid + +[Install] +WantedBy=multi-user.target diff --git a/glusterfs.spec.in b/glusterfs.spec.in index ffd8071b53d..a33951dbd95 100644 --- a/glusterfs.spec.in +++ b/glusterfs.spec.in @@ -1,6 +1,11 @@ +%global _hardened_build 1 + %global _for_fedora_koji_builds 0 +# uncomment and add '%' to use the prereltag for pre-releases +# global prereltag beta2 + # if you wish to compile an rpm without rdma support, compile like this... # rpmbuild -ta @PACKAGE_NAME@-@PACKAGE_VERSION@.tar.gz --without rdma %{?_without_rdma:%global _without_rdma --disable-ibverbs} @@ -31,45 +36,40 @@ %endif Summary: Cluster File System -%if 0%{_for_fedora_koji_builds} +%if ( 0%{_for_fedora_koji_builds} ) Name: glusterfs -Version: 3.3.1 -Release: 10%{?dist} +Version: 3.4.0 +Release: 0.5%{?prereltag:.%{prereltag}}%{?dist} +Vendor: Fedora Project %else Name: @PACKAGE_NAME@ Version: @PACKAGE_VERSION@ Release: 1%{?dist} +Vendor: glusterfs.org %endif -License: GPLv3+ and (GPLv2 or LGPLv3+) +License: GPLv2 or LGPLv3+ Group: System Environment/Base -%if 0%{_for_fedora_koji_builds} -Vendor: Red Hat -%endif -URL: http://www.gluster.org//docs/index.php/GlusterFS -%if 0%{_for_fedora_koji_builds} -Source0: http://bits.gluster.com/pub/gluster/glusterfs/src/glusterfs-%{version}.tar.gz -%else -Source0: @PACKAGE_NAME@-@PACKAGE_VERSION@.tar.gz -%endif +URL: http://www.gluster.org/docs/index.php/GlusterFS +%if ( 0%{_for_fedora_koji_builds} ) +Source0: http://download.gluster.org/pub/gluster/glusterfs/qa-releases/%{PACKAGE_VERSION}%{?prereltag}/glusterfs-%{version}%{?prereltag}.tar.gz Source1: glusterd.sysconfig Source2: glusterfsd.sysconfig Source3: umount.glusterfs Source4: glusterfs-fuse.logrotate Source5: glusterd.logrotate Source6: glusterfsd.logrotate +Source7: rhel5-load-fuse-modules +Source11: glusterfsd.service +Source13: glusterfsd.init Patch0: %{name}-3.2.5.configure.ac.patch Patch1: %{name}-3.3.0.libglusterfs.Makefile.patch +%else +Source0: @PACKAGE_NAME@-@PACKAGE_VERSION@.tar.gz +%endif BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) -Source10: glusterd.service -Source11: glusterfsd.service -Source12: glusterd.init -Source13: glusterfsd.init - -%if 0%{?_with_systemd:1} -%global glusterd_service %{S:%{SOURCE10}} -%global glusterfsd_service %{S:%{SOURCE11}} +%if ( 0%{?_with_systemd:1} ) BuildRequires: systemd-units Requires(post): systemd-units Requires(preun): systemd-units @@ -78,15 +78,10 @@ Requires(postun): systemd-units %define _init_disable() /bin/systemctl disable %1.service ; %define _init_restart() /bin/systemctl try-restart %1.service ; %define _init_stop() /bin/systemctl stop %1.service ; -%define _init_install() %{__install} -D -p -m 0644 %1 %{buildroot}%{_unitdir}/%2.service ; # can't seem to make a generic macro that works %define _init_glusterd %{_unitdir}/glusterd.service %define _init_glusterfsd %{_unitdir}/glusterfsd.service %else -%if 0%{_for_fedora_koji_builds} -%global glusterd_service %{S:%{SOURCE12}} -%global glusterfsd_service %{S:%{SOURCE13}} -%endif Requires(post): /sbin/chkconfig Requires(preun): /sbin/service Requires(preun): /sbin/chkconfig @@ -95,7 +90,6 @@ Requires(postun): /sbin/service %define _init_disable() /sbin/chkconfig --del %1 ; %define _init_restart() /sbin/service %1 condrestart &>/dev/null ; %define _init_stop() /sbin/service %1 stop &>/dev/null ; -%define _init_install() %{__install} -D -p -m 0755 %1 %{buildroot}%{_sysconfdir}/init.d/%2 ; # can't seem to make a generic macro that works %define _init_glusterd %{_sysconfdir}/init.d/glusterd %define _init_glusterfsd %{_sysconfdir}/init.d/glusterfsd @@ -106,9 +100,12 @@ BuildRequires: gcc make automake libtool BuildRequires: ncurses-devel readline-devel BuildRequires: libxml2-devel openssl-devel BuildRequires: libaio-devel -#BuildRequires: systemtap-sdt-devel lvm2-devel # glusterfs-3.4.x +BuildRequires: systemtap-sdt-devel BuildRequires: python-devel BuildRequires: python-ctypes +%if ( 0%{?fedora} ) || ( 0%{?rhel} && 0%{?rhel} >= 6 ) +BuildRequires: lvm2-devel +%endif Obsoletes: hekafs <= 0.7 Obsoletes: %{name}-libs <= 2.0.0 @@ -120,11 +117,9 @@ Provides: %{name}-core = %{version}-%{release} # We do not want to generate useless provides and requires for xlator .so files # Filter all generated: -# - .so requires that do not start with 'lib' -# - all provides from xlators and private libraries not in the ldconfig path # # TODO: RHEL5 does not have a convenient solution -%if 0%{?rhel} == 6 +%if ( 0%{?rhel} == 6 ) # filter_setup exists in RHEL6 only %filter_provides_in %{_libdir}/glusterfs/%{version}/ %global __filter_from_req %{?__filter_from_req} | %{__grep} -v -P '^(?!lib).*\.so.*$' @@ -148,7 +143,7 @@ This package includes the glusterfs binary, the glusterfsd daemon and the gluster command line, libglusterfs and glusterfs translator modules common to both GlusterFS server and client framework. -%if 0%{!?_without_rdma:1} +%if ( 0%{!?_without_rdma:1} ) %package rdma Summary: GlusterFS rdma support for ib-verbs Group: Applications/File @@ -168,7 +163,7 @@ is in user space and easily manageable. This package provides support to ib-verbs library. %endif -%if 0%{!?_without_georeplication:1} +%if ( 0%{!?_without_georeplication:1} ) %package geo-replication Summary: GlusterFS Geo-replication Group: Applications/File @@ -214,7 +209,11 @@ License: GPLv3+ Group: System Environment/Daemons Requires: %{name} = %{version}-%{release} Requires: %{name}-fuse = %{version}-%{release} +%if ( 0%{?fedora} ) || ( 0%{?rhel} && 0%{?rhel} >= 6 ) Requires: rpcbind +%else +Requires: portmap +%endif %description server GlusterFS is a clustered file-system capable of scaling to several @@ -227,15 +226,33 @@ is in user space and easily manageable. This package provides the glusterfs server daemon. -%if 0%{!?_without_ocf:1} +%package api +Summary: Clustered file-system api library +License: GPLv2 or LGPLv3+ +Group: System Environment/Daemons +Requires: %{name} = %{version}-%{release} + +%description api +GlusterFS is a clustered file-system capable of scaling to several +petabytes. It aggregates various storage bricks over Infiniband RDMA +or TCP/IP interconnect into one large parallel network file +system. GlusterFS is one of the most sophisticated file systems in +terms of features and extensibility. It borrows a powerful concept +called Translators from GNU Hurd kernel. Much of the code in GlusterFS +is in user space and easily manageable. + +This package provides the glusterfs libgfapi library + +%if ( 0%{!?_without_ocf:1} ) %package resource-agents Summary: OCF Resource Agents for GlusterFS License: GPLv3+ -%if ( 0%{?fedora} ) || ( 0%{?rhel} && 0%{?rhel} >= 6 ) +%if ( ! ( 0%{?rhel} && 0%{?rhel} < 6 ) ) +# EL5 does not support noarch sub-packages BuildArch: noarch %endif # this Group handling comes from the Fedora resource-agents package -%if 0%{?fedora} || 0%{?centos_version} || 0%{?rhel} +%if ( 0%{?fedora} || 0%{?centos_version} || 0%{?rhel} ) Group: System Environment/Base %else Group: Productivity/Clustering/HA @@ -276,8 +293,30 @@ is in user space and easily manageable. This package provides the development libraries. + +%package api-devel +Summary: Development Libraries +License: GPLv2 or LGPLv3+ +Group: Development/Libraries +Requires: %{name} = %{version}-%{release} + +%description api-devel +GlusterFS is a clustered file-system capable of scaling to several +petabytes. It aggregates various storage bricks over Infiniband RDMA +or TCP/IP interconnect into one large parallel network file +system. GlusterFS is one of the most sophisticated file systems in +terms of features and extensibility. It borrows a powerful concept +called Translators from GNU Hurd kernel. Much of the code in GlusterFS +is in user space and easily manageable. + +This package provides the api include files. + %prep -%setup -q -n %{name}-%{version} +%setup -q -n %{name}-%{version}%{?prereltag} +%if ( 0%{_for_fedora_koji_builds} ) +#%patch0 -p0 +%patch1 -p0 -F4 +%endif %build ./autogen.sh @@ -289,7 +328,6 @@ sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool %{__make} %{?_smp_mflags} - %install %{__rm} -rf %{buildroot} %{__make} install DESTDIR=%{buildroot} @@ -308,7 +346,7 @@ sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool %{__mkdir_p} %{buildroot}%{_includedir}/glusterfs/server %{__install} -p -m 0644 xlators/protocol/server/src/*.h \ %{buildroot}%{_includedir}/glusterfs/server/ -%if 0%{_for_fedora_koji_builds} +%if ( 0%{_for_fedora_koji_builds} ) %{__install} -D -p -m 0644 %{SOURCE1} \ %{buildroot}%{_sysconfdir}/sysconfig/glusterd %{__install} -D -p -m 0644 %{SOURCE2} \ @@ -317,15 +355,13 @@ sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool %{__install} -D -p -m 0644 extras/glusterd-sysconfig \ %{buildroot}%{_sysconfdir}/sysconfig/glusterd %endif -# We'll use our init.d -%if 0%{?_with_systemd:1} -%{__rm} -f %{buildroot}%{_sysconfdir}/init.d/glusterd -%endif -%if 0%{?rhel} && 0%{?rhel} <= 5 -%{__install} -D -p -m 0755 extras/init.d/rhel5-load-fuse.modules \ +%if ( 0%{_for_fedora_koji_builds} ) +%if ( 0%{?rhel} && 0%{?rhel} <= 5 ) +%{__install} -D -p -m 0755 %{SOURCE7} \ %{buildroot}%{_sysconfdir}/sysconfig/modules/glusterfs-fuse.modules %endif +%endif %{__mkdir_p} %{buildroot}%{_localstatedir}/log/glusterd %{__mkdir_p} %{buildroot}%{_localstatedir}/log/glusterfs @@ -336,8 +372,9 @@ sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool find %{buildroot}%{_libdir} -name '*.a' -delete find %{buildroot}%{_libdir} -name '*.la' -delete -# Remove installed docs, we include them ourselves as %%doc +# Remove installed docs, they're included by %%doc %{__rm} -rf %{buildroot}%{_datadir}/doc/glusterfs/ +%{__bzip2} ChangeLog # Remove benchmarking and other unpackaged files %{__rm} -rf %{buildroot}/benchmarking @@ -351,13 +388,7 @@ find %{buildroot}%{_libdir} -name '*.la' -delete sed -i 's|option working-directory /etc/glusterd|option working-directory %{_sharedstatedir}/glusterd|g' \ %{buildroot}%{_sysconfdir}/glusterfs/glusterd.vol -# Install systemd .service files. `make install` will install the init files -%if ( 0%{?_with_systemd:1} ) || ( 0%{_for_fedora_koji_builds} ) -%_init_install %{glusterd_service} glusterd -%_init_install %{glusterfsd_service} glusterfsd -%endif - -%if 0%{_for_fedora_koji_builds} +%if ( 0%{_for_fedora_koji_builds} ) # Install wrapper umount script %{__install} -D -p -m 0755 %{SOURCE3} \ %{buildroot}/sbin/umount.glusterfs @@ -376,7 +407,7 @@ sed -i 's|option working-directory /etc/glusterd|option working-directory %{_sha %{buildroot}%{_sysconfdir}/logrotate.d/glusterfs %endif -%if 0%{!?_without_georeplication:1} +%if ( 0%{!?_without_georeplication:1} ) # geo-rep ghosts %{__mkdir_p} %{buildroot}%{_sharedstatedir}/glusterd/geo-replication touch %{buildroot}%{_sharedstatedir}/glusterd/geo-replication/gsyncd.conf @@ -416,8 +447,6 @@ touch %{buildroot}%{_sharedstatedir}/glusterd/options touch %{buildroot}%{_sharedstatedir}/glusterd/nfs/nfs-server.vol touch %{buildroot}%{_sharedstatedir}/glusterd/nfs/run/nfs.pid -# Remove tests -%{__rm} -rf %{buildroot}/%{python_sitelib}/test %clean %{__rm} -rf %{buildroot} @@ -429,9 +458,10 @@ touch %{buildroot}%{_sharedstatedir}/glusterd/nfs/run/nfs.pid %files %defattr(-,root,root,-) -%doc ChangeLog COPYING-GPLV2 COPYING-LGPLV3 INSTALL README THANKS +%doc ChangeLog.bz2 COPYING-GPLV2 COPYING-LGPLV3 INSTALL README THANKS %config(noreplace) %{_sysconfdir}/logrotate.d/* %config(noreplace) %{_sysconfdir}/sysconfig/* +%exclude %{_libdir}/libgfapi.* %{_libdir}/glusterfs %{_libdir}/*.so.* %{_sbindir}/glusterfs* @@ -440,24 +470,24 @@ touch %{buildroot}%{_sharedstatedir}/glusterd/nfs/run/nfs.pid %dir %{_localstatedir}/log/glusterfs %dir %{_localstatedir}/run/gluster %dir %{_sharedstatedir}/glusterd -%if 0%{!?_without_rdma:1} -%exclude %{_libdir}/glusterfs/%{version}/rpc-transport/rdma* +%if ( 0%{!?_without_rdma:1} ) +%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/rpc-transport/rdma* %endif -%exclude %{_libdir}/glusterfs/%{version}/xlator/mount/fuse* -%exclude %{_libdir}/glusterfs/%{version}/xlator/storage* -%exclude %{_libdir}/glusterfs/%{version}/xlator/features/posix* -%exclude %{_libdir}/glusterfs/%{version}/xlator/protocol/server* -%exclude %{_libdir}/glusterfs/%{version}/xlator/mgmt* -%exclude %{_libdir}/glusterfs/%{version}/xlator/nfs* +%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mount/fuse* +%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/storage* +%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/posix* +%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/protocol/server* +%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mgmt* +%exclude %{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/nfs* -%if 0%{!?_without_rdma:1} +%if ( 0%{!?_without_rdma:1} ) %files rdma %defattr(-,root,root,-) -%{_libdir}/glusterfs/%{version}/rpc-transport/rdma* +%{_libdir}/glusterfs/%{version}%{?prereltag}/rpc-transport/rdma* %endif -%if 0%{!?_without_georeplication:1} +%if ( 0%{!?_without_georeplication:1} ) %post geo-replication #restart glusterd. if [ $1 -ge 1 ]; then @@ -474,47 +504,49 @@ fi %files fuse %defattr(-,root,root,-) -%if 0%{_for_fedora_koji_builds} +%if ( 0%{_for_fedora_koji_builds} ) %config(noreplace) %{_sysconfdir}/logrotate.d/glusterfs-fuse %endif -%{_libdir}/glusterfs/%{version}/xlator/mount/fuse* +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mount/fuse* /sbin/mount.glusterfs -%if 0%{_for_fedora_koji_builds} +%if ( 0%{_for_fedora_koji_builds} ) /sbin/umount.glusterfs %endif -%if 0%{!?_without_fusermount:1} +%if ( 0%{!?_without_fusermount:1} ) %{_bindir}/fusermount-glusterfs %endif -%if 0%{?rhel} && 0%{?rhel} <= 5 +%if ( 0%{_for_fedora_koji_builds} ) +%if ( 0%{?rhel} && 0%{?rhel} <= 5 ) %{_sysconfdir}/sysconfig/modules/glusterfs-fuse.modules %endif +%endif %files server %defattr(-,root,root,-) %doc extras/clear_xattrs.sh -%if 0%{_for_fedora_koji_builds} +%if ( 0%{_for_fedora_koji_builds} ) %config(noreplace) %{_sysconfdir}/logrotate.d/glusterd %endif %config(noreplace) %{_sysconfdir}/sysconfig/glusterd %config(noreplace) %{_sysconfdir}/glusterfs # Legacy configs -%if 0%{_for_fedora_koji_builds} +%if ( 0%{_for_fedora_koji_builds} ) %config(noreplace) %{_sysconfdir}/logrotate.d/glusterfsd %config(noreplace) %{_sysconfdir}/sysconfig/glusterfsd %endif # init files %_init_glusterd -%if ( 0%{?_with_systemd:1} ) || ( 0%{_for_fedora_koji_builds} ) +%if ( 0%{_for_fedora_koji_builds} && 0%{?_with_systemd:1} ) %_init_glusterfsd %endif # binaries %{_sbindir}/gluster %{_sbindir}/glusterd -%{_libdir}/glusterfs/%{version}/xlator/storage* -%{_libdir}/glusterfs/%{version}/xlator/features/posix* -%{_libdir}/glusterfs/%{version}/xlator/protocol/server* -%{_libdir}/glusterfs/%{version}/xlator/mgmt* -%{_libdir}/glusterfs/%{version}/xlator/nfs* +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/storage* +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/features/posix* +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/protocol/server* +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/mgmt* +%{_libdir}/glusterfs/%{version}%{?prereltag}/xlator/nfs* %ghost %attr(0644,-,-) %{_sharedstatedir}/glusterd/glusterd.info %ghost %attr(0600,-,-) %{_sharedstatedir}/glusterd/options # This is really ugly, but I have no idea how to mark these directories in an @@ -552,7 +584,11 @@ fi %ghost %dir %attr(0755,-,-) %{_sharedstatedir}/glusterd/nfs/run %ghost %attr(0600,-,-) %{_sharedstatedir}/glusterd/nfs/run/nfs.pid -%if 0%{!?_without_ocf:1} +%files api +%exclude %{_libdir}/*.so +%{_libdir}/libgfapi.* + +%if ( 0%{!?_without_ocf:1} ) %files resource-agents %defattr(-,root,root) # /usr/lib is the standard for OCF, also on x86_64 @@ -562,10 +598,15 @@ fi %files devel %defattr(-,root,root,-) %{_includedir}/glusterfs -%{_libdir}/pkgconfig/glusterfs-api.pc %exclude %{_includedir}/glusterfs/y.tab.h +%exclude %{_includedir}/glusterfs/api +%exclude %{_libdir}/libgfapi.so %{_libdir}/*.so +%files api-devel +%{_libdir}/pkgconfig/glusterfs-api.pc +%{_libdir}/libgfapi.so +%{_includedir}/glusterfs/api/* %post server # Legacy server @@ -630,8 +671,10 @@ if [ $1 -ge 1 ]; then %_init_restart glusterd fi - %changelog +* Fri Jun 7 2013 Kaleb S. KEITHLEY +- Sync with Fedora glusterfs.spec, remove G4S/UFO and Swift + * Mon Mar 4 2013 Niels de Vos - Package /var/run/gluster so that statedumps can be created -- cgit