summaryrefslogtreecommitdiff
path: root/source4/cluster/ctdb/packaging
diff options
context:
space:
mode:
authorAndrew Tridgell <tridge@samba.org>2007-07-10 08:06:51 +0000
committerGerald (Jerry) Carter <jerry@samba.org>2007-10-10 14:59:20 -0500
commit6504900f1f52927adab3489b8d04b6644ceaee7d (patch)
tree893cadba231a529f320046429767cedf8b0eec30 /source4/cluster/ctdb/packaging
parentd4e2d157cbce5a1cdc75efb5ced75d9608a0f7df (diff)
downloadsamba-6504900f1f52927adab3489b8d04b6644ceaee7d.tar.gz
samba-6504900f1f52927adab3489b8d04b6644ceaee7d.tar.bz2
samba-6504900f1f52927adab3489b8d04b6644ceaee7d.zip
r23806: update Samba4 with the latest ctdb code.
This doesn't get the ctdb code fully working in Samba4, it just gets it building and not breaking non-clustered use of Samba. It will take a bit longer to update some of the calling ctdb_cluster.c code to make it work correctly in Samba4. Note also that Samba4 now only links to the client portion of ctdb. For the moment I am leaving the ctdbd as a separate daemon, which you install separately from http://ctdb.samba.org/. (This used to be commit b196077cbb55cbecad87065133c2d67198e31066)
Diffstat (limited to 'source4/cluster/ctdb/packaging')
-rw-r--r--source4/cluster/ctdb/packaging/RHEL/ctdb.spec117
-rwxr-xr-xsource4/cluster/ctdb/packaging/RHEL/makerpms.sh90
-rwxr-xr-xsource4/cluster/ctdb/packaging/RHEL/setup/ctdb.init104
-rw-r--r--source4/cluster/ctdb/packaging/RHEL/setup/ctdb.sysconfig52
-rw-r--r--source4/cluster/ctdb/packaging/RPM/ctdb.spec112
-rwxr-xr-xsource4/cluster/ctdb/packaging/RPM/makerpms.sh89
6 files changed, 564 insertions, 0 deletions
diff --git a/source4/cluster/ctdb/packaging/RHEL/ctdb.spec b/source4/cluster/ctdb/packaging/RHEL/ctdb.spec
new file mode 100644
index 0000000000..9bba5683b1
--- /dev/null
+++ b/source4/cluster/ctdb/packaging/RHEL/ctdb.spec
@@ -0,0 +1,117 @@
+%define initdir %{_sysconfdir}/rc.d/init.d
+
+Summary: Clustered TDB
+Vendor: Samba Team
+Packager: Samba Team <samba@samba.org>
+Name: ctdb
+Version: 1.0
+Release: 1
+Epoch: 0
+License: GNU GPL version 2
+Group: System Environment/Daemons
+URL: bzr://www.samba.org/~tridge/ctdb/
+
+Source: ctdb-%{version}.tar.bz2
+Source999: ctdb-setup.tar.bz2
+
+Prereq: /sbin/chkconfig /bin/mktemp /usr/bin/killall
+Prereq: fileutils sed /etc/init.d
+
+Requires: initscripts >= 5.54-1
+Provides: ctdb = %{version}
+
+Prefix: /usr
+BuildRoot: %{_tmppath}/%{name}-%{version}-root
+
+%description
+ctdb is the clustered database used by samba
+
+
+#######################################################################
+
+%prep
+%setup -q
+# setup the init script and sysconfig file
+%setup -T -D -a 999 -n ctdb-%{version} -q
+
+%build
+
+CC="gcc"
+
+## always run autogen.sh
+./autogen.sh
+
+CFLAGS="$RPM_OPT_FLAGS $EXTRA -D_GNU_SOURCE" ./configure \
+ --prefix=%{_prefix} \
+ --sysconfdir=%{_sysconfdir} \
+ --localstatedir="/var"
+
+make showflags
+make
+
+%install
+# Clean up in case there is trash left from a previous build
+rm -rf $RPM_BUILD_ROOT
+
+# Create the target build directory hierarchy
+mkdir -p $RPM_BUILD_ROOT%{_includedir}
+mkdir -p $RPM_BUILD_ROOT{%{_libdir},%{_includedir}}
+mkdir -p $RPM_BUILD_ROOT%{_prefix}/{bin,sbin}
+mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/ctdb
+mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig
+mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/rc.d/init.d
+
+make DESTDIR=$RPM_BUILD_ROOT install
+
+install -m644 setup/ctdb.sysconfig $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/ctdb
+install -m755 setup/ctdb.init $RPM_BUILD_ROOT%{initdir}/ctdb
+install -m755 tools/events $RPM_BUILD_ROOT%{_sysconfdir}/ctdb/events
+install -m755 tools/onnode.ssh $RPM_BUILD_ROOT%{_bindir}
+install -m755 tools/onnode.rsh $RPM_BUILD_ROOT%{_bindir}
+ln -sf %{_bindir}/onnode.ssh $RPM_BUILD_ROOT%{_bindir}/onnode
+
+# unfortunately samba3 needs ctdb_private.h too
+install -m644 include/ctdb_private.h $RPM_BUILD_ROOT%{_includedir}/ctdb_private.h
+
+
+# Remove "*.old" files
+find $RPM_BUILD_ROOT -name "*.old" -exec rm -f {} \;
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post
+/sbin/chkconfig --add ctdb
+
+%preun
+if [ $1 = 0 ] ; then
+ /sbin/chkconfig --del ctdb
+ /sbin/service ctdb stop >/dev/null 2>&1
+fi
+exit 0
+
+%postun
+if [ "$1" -ge "1" ]; then
+ %{initdir}/ctdb restart >/dev/null 2>&1
+fi
+
+
+#######################################################################
+## Files section ##
+#######################################################################
+
+%files
+%defattr(-,root,root)
+
+%config(noreplace) %{_sysconfdir}/sysconfig/ctdb
+%attr(755,root,root) %config %{initdir}/ctdb
+
+%{_sysconfdir}/ctdb/events
+%{_sbindir}/ctdbd
+%{_bindir}/ctdb
+%{_bindir}/onnode.ssh
+%{_bindir}/onnode.rsh
+%{_bindir}/onnode
+%{_includedir}/ctdb.h
+%{_includedir}/ctdb_private.h
+
diff --git a/source4/cluster/ctdb/packaging/RHEL/makerpms.sh b/source4/cluster/ctdb/packaging/RHEL/makerpms.sh
new file mode 100755
index 0000000000..e43d53683c
--- /dev/null
+++ b/source4/cluster/ctdb/packaging/RHEL/makerpms.sh
@@ -0,0 +1,90 @@
+#!/bin/sh
+# Copyright (C) John H Terpstra 1998-2002
+# Gerald (Jerry) Carter 2003
+# Jim McDonough 2007
+# Andrew Tridgell 2007
+
+# The following allows environment variables to override the target directories
+# the alternative is to have a file in your home directory calles .rpmmacros
+# containing the following:
+# %_topdir /home/mylogin/redhat
+#
+# Note: Under this directory rpm expects to find the same directories that are under the
+# /usr/src/redhat directory
+#
+
+EXTRA_OPTIONS="$1"
+
+RHEL="packaging/RHEL"
+
+[ -d ${RHEL} ] || {
+ echo "Must run this from the ctdb directory"
+ exit 1
+}
+
+
+SPECDIR=`rpm --eval %_specdir`
+SRCDIR=`rpm --eval %_sourcedir`
+
+# At this point the SPECDIR and SRCDIR vaiables must have a value!
+
+USERID=`id -u`
+GRPID=`id -g`
+VERSION='1.0'
+REVISION=''
+SPECFILE="ctdb.spec"
+RPMVER=`rpm --version | awk '{print $3}'`
+RPMBUILD="rpmbuild"
+
+##
+## Check the RPM version (paranoid)
+##
+case $RPMVER in
+ 4*)
+ echo "Supported RPM version [$RPMVER]"
+ ;;
+ *)
+ echo "Unknown RPM version: `rpm --version`"
+ exit 1
+ ;;
+esac
+
+if [ -f Makefile ]; then
+ make distclean
+fi
+
+pushd .
+BASEDIR=`basename $PWD`
+cd ..
+chown -R ${USERID}.${GRPID} $BASEDIR
+if [ ! -d ctdb-${VERSION} ]; then
+ ln -s $BASEDIR ctdb-${VERSION} || exit 1
+ REMOVE_LN=$PWD/ctdb-$VERSION
+fi
+echo -n "Creating ctdb-${VERSION}.tar.bz2 ... "
+tar --exclude=.bzr --exclude .bzrignore --exclude packaging --exclude="*~" -cf - ctdb-${VERSION}/. | bzip2 > ${SRCDIR}/ctdb-${VERSION}.tar.bz2
+echo "Done."
+if [ $? -ne 0 ]; then
+ echo "Build failed!"
+ [ ${REMOVE_LN} ] && rm $REMOVE_LN
+ exit 1
+fi
+
+popd
+
+
+##
+## copy additional source files
+##
+(cd packaging/RHEL && tar --exclude=.bzr --exclude="*~" -jcvf - setup) > ${SRCDIR}/ctdb-setup.tar.bz2
+cp -p ${RHEL}/${SPECFILE} ${SPECDIR}
+
+##
+## Build
+##
+echo "$(basename $0): Getting Ready to build release package"
+cd ${SPECDIR}
+${RPMBUILD} -ba --clean --rmsource $EXTRA_OPTIONS $SPECFILE
+
+echo "$(basename $0): Done."
+[ ${REMOVE_LN} ] && rm $REMOVE_LN
diff --git a/source4/cluster/ctdb/packaging/RHEL/setup/ctdb.init b/source4/cluster/ctdb/packaging/RHEL/setup/ctdb.init
new file mode 100755
index 0000000000..e34107e6b3
--- /dev/null
+++ b/source4/cluster/ctdb/packaging/RHEL/setup/ctdb.init
@@ -0,0 +1,104 @@
+#!/bin/sh
+#
+# chkconfig: - 90 36
+# description: Starts and stops the clustered tdb daemon
+#
+# pidfile: /var/run/ctdbd/ctdbd.pid
+
+# Source function library.
+if [ -f /etc/init.d/functions ] ; then
+ . /etc/init.d/functions
+elif [ -f /etc/rc.d/init.d/functions ] ; then
+ . /etc/rc.d/init.d/functions
+else
+ exit 0
+fi
+
+# Avoid using root's TMPDIR
+unset TMPDIR
+
+# Source networking configuration.
+. /etc/sysconfig/network
+
+CTDB_OPTIONS=""
+
+# pull in admin specified config
+if [ -f /etc/sysconfig/ctdb ]; then
+ . /etc/sysconfig/ctdb
+fi
+
+# Check that networking is up.
+[ ${NETWORKING} = "no" ] && exit 0
+
+# build up CTDB_OPTIONS variable
+[ -z "$LOGFILE" ] || CTDB_OPTIONS="$CTDB_OPTIONS --logfile=$LOGFILE"
+[ -z "$NODES" ] || CTDB_OPTIONS="$CTDB_OPTIONS --nlist=$NODES"
+[ -z "$CTDB_SOCKET" ] || CTDB_OPTIONS="$CTDB_OPTIONS --socket=$CTDB_SOCKET"
+[ -z "$PUBLIC_ADDRESSES" ] || CTDB_OPTIONS="$CTDB_OPTIONS --public-addresses=$PUBLIC_ADDRESSES"
+[ -z "$PUBLIC_INTERFACE" ] || CTDB_OPTIONS="$CTDB_OPTIONS --public-interface=$PUBLIC_INTERFACE"
+[ -z "$DBDIR" ] || CTDB_OPTIONS="$CTDB_OPTIONS --dbdir=$DBDIR"
+[ -z "$EVENT_SCRIPT" ] || CTDB_OPTIONS="$CTDB_OPTIONS --event-script $EVENT_SCRIPT"
+[ -z "$TRANSPORT" ] || CTDB_OPTIONS="$CTDB_OPTIONS --transport $TRANSPORT"
+[ -z "$DEBUGLEVEL" ] || CTDB_OPTIONS="$CTDB_OPTIONS -d $DEBUGLEVEL"
+
+start() {
+ echo -n $"Starting ctdbd services: "
+ daemon ctdbd $CTDB_OPTIONS
+ RETVAL=$?
+ echo
+ [ $RETVAL -eq 0 ] && touch /var/lock/subsys/ctdb || \
+ RETVAL=1
+ return $RETVAL
+}
+
+stop() {
+ echo -n $"Shutting down ctdbd services: "
+ ctdb shutdown
+ RETVAL=$?
+ echo
+ [ $RETVAL -eq 0 ] && rm -f /var/lock/subsys/ctdb
+ echo ""
+ return $RETVAL
+}
+
+restart() {
+ stop
+ start
+}
+
+rhstatus() {
+ ctdb status
+ if [ $? -ne 0 ] ; then
+ return 1
+ fi
+}
+
+
+# Allow status as non-root.
+if [ "$1" = status ]; then
+ rhstatus
+ exit $?
+fi
+
+case "$1" in
+ start)
+ start
+ ;;
+ stop)
+ stop
+ ;;
+ restart)
+ restart
+ ;;
+ status)
+ rhstatus
+ ;;
+ condrestart)
+ [ -f /var/lock/subsys/ctdb ] && restart || :
+ ;;
+ *)
+ echo $"Usage: $0 {start|stop|restart|status|condrestart}"
+ exit 1
+esac
+
+exit $?
diff --git a/source4/cluster/ctdb/packaging/RHEL/setup/ctdb.sysconfig b/source4/cluster/ctdb/packaging/RHEL/setup/ctdb.sysconfig
new file mode 100644
index 0000000000..13d83ce1ab
--- /dev/null
+++ b/source4/cluster/ctdb/packaging/RHEL/setup/ctdb.sysconfig
@@ -0,0 +1,52 @@
+# Options to ctdbd. This is read by /etc/init.d/ctdb
+
+# the NODES file must be specified or ctdb won't start
+# it should contain a list of IPs that ctdb will use
+# it must be exactly the same on all cluster nodes
+# defaults to /etc/ctdb/nodes
+# NODES=/etc/ctdb/nodes
+
+# the directory to put the local ctdb database files in
+# defaults to /var/ctdb
+# DBDIR=/var/ctdb
+
+# the script to run when ctdb needs to ask the OS for help,
+# such as when a IP address needs to be taken or released
+# defaults to /etc/ctdb/events
+# EVENT_SCRIPT=/etc/ctdb/events
+
+# the location of the local ctdb socket
+# defaults to /tmp/ctdb.socket
+# CTDB_SOCKET=/tmp/ctdb.socket
+
+# what transport to use. Only tcp is currently supported
+# defaults to tcp
+# TRANSPORT="tcp"
+
+# should ctdb do IP takeover? If it should, then specify a file
+# containing the list of public IP addresses that ctdb will manage
+# Note that these IPs must be different from those in $NODES above
+# there is no default
+# PUBLIC_ADDRESSES=/etc/ctdb/public_addresses
+
+# when doing IP takeover you also must specify what network interface
+# to use for the public addresses
+# there is no default
+# PUBLIC_INTERFACE=eth0
+
+# where to log messages
+# the default is /var/log/log.ctdb
+# LOGFILE=/var/log/log.ctdb
+
+# what debug level to run at. Higher means more verbose
+# the default is 0
+# DEBUGLEVEL=0
+
+# use this to specify any local tcp ports to wait on before starting
+# ctdb. Use 445 and 139 for Samba
+# the default is not to wait for any local services
+# CTDB_WAIT_TCP_PORTS="445 139"
+
+# any other options you might want. Run ctdbd --help for a list
+# CTDB_OPTIONS=
+
diff --git a/source4/cluster/ctdb/packaging/RPM/ctdb.spec b/source4/cluster/ctdb/packaging/RPM/ctdb.spec
new file mode 100644
index 0000000000..6920e643ae
--- /dev/null
+++ b/source4/cluster/ctdb/packaging/RPM/ctdb.spec
@@ -0,0 +1,112 @@
+%define initdir %{_sysconfdir}/init.d
+
+Summary: Clustered TDB
+Vendor: Samba Team
+Packager: Samba Team <samba@samba.org>
+Name: ctdb
+Version: 1.0
+Release: 7
+Epoch: 0
+License: GNU GPL version 3
+Group: System Environment/Daemons
+URL: http://ctdb.samba.org/
+
+Source: ctdb-%{version}.tar.gz
+
+Prereq: /sbin/chkconfig /bin/mktemp /usr/bin/killall
+Prereq: fileutils sed /etc/init.d
+
+Provides: ctdb = %{version}
+
+Prefix: /usr
+BuildRoot: %{_tmppath}/%{name}-%{version}-root
+
+%description
+ctdb is the clustered database used by samba
+
+
+#######################################################################
+
+%prep
+%setup -q
+# setup the init script and sysconfig file
+%setup -T -D -n ctdb-%{version} -q
+
+%build
+
+CC="gcc"
+
+## always run autogen.sh
+./autogen.sh
+
+CFLAGS="$RPM_OPT_FLAGS $EXTRA -D_GNU_SOURCE" ./configure \
+ --prefix=%{_prefix} \
+ --sysconfdir=%{_sysconfdir} \
+ --mandir=%{_mandir} \
+ --localstatedir="/var"
+
+make showflags
+make
+
+%install
+# Clean up in case there is trash left from a previous build
+rm -rf $RPM_BUILD_ROOT
+
+# Create the target build directory hierarchy
+mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig
+mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/init.d
+
+make DESTDIR=$RPM_BUILD_ROOT install
+
+install -m644 config/ctdb.sysconfig $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/ctdb
+install -m755 config/ctdb.init $RPM_BUILD_ROOT%{initdir}/ctdb
+
+# Remove "*.old" files
+find $RPM_BUILD_ROOT -name "*.old" -exec rm -f {} \;
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post
+[ -x /sbin/chkconfig ] && /sbin/chkconfig --add ctdb
+
+%preun
+if [ $1 = 0 ] ; then
+ [ -x /sbin/chkconfig ] && /sbin/chkconfig --del ctdb
+fi
+exit 0
+
+%postun
+if [ "$1" -ge "1" ]; then
+ %{initdir}/ctdb restart >/dev/null 2>&1
+fi
+
+
+#######################################################################
+## Files section ##
+#######################################################################
+
+%files
+%defattr(-,root,root)
+
+%config(noreplace) %{_sysconfdir}/sysconfig/ctdb
+%attr(755,root,root) %config %{initdir}/ctdb
+
+%{_sysconfdir}/ctdb/events
+%{_sysconfdir}/ctdb/functions
+%{_sysconfdir}/ctdb/events.d/10.interface
+%{_sysconfdir}/ctdb/events.d/40.vsftpd
+%{_sysconfdir}/ctdb/events.d/50.samba
+%{_sysconfdir}/ctdb/events.d/60.nfs
+%{_sysconfdir}/ctdb/events.d/61.nfstickle
+%{_sysconfdir}/ctdb/statd-callout
+%{_sbindir}/ctdbd
+%{_bindir}/ctdb
+%{_bindir}/onnode.ssh
+%{_bindir}/onnode.rsh
+%{_bindir}/onnode
+%{_mandir}/man1/ctdb.1.gz
+%{_mandir}/man1/ctdbd.1.gz
+%{_mandir}/man1/onnode.1.gz
+%{_includedir}/ctdb.h
+%{_includedir}/ctdb_private.h
diff --git a/source4/cluster/ctdb/packaging/RPM/makerpms.sh b/source4/cluster/ctdb/packaging/RPM/makerpms.sh
new file mode 100755
index 0000000000..c267ed17e6
--- /dev/null
+++ b/source4/cluster/ctdb/packaging/RPM/makerpms.sh
@@ -0,0 +1,89 @@
+#!/bin/sh
+# Copyright (C) John H Terpstra 1998-2002
+# Gerald (Jerry) Carter 2003
+# Jim McDonough 2007
+# Andrew Tridgell 2007
+
+# The following allows environment variables to override the target directories
+# the alternative is to have a file in your home directory calles .rpmmacros
+# containing the following:
+# %_topdir /home/mylogin/redhat
+#
+# Note: Under this directory rpm expects to find the same directories that are under the
+# /usr/src/redhat directory
+#
+
+EXTRA_OPTIONS="$1"
+
+[ -d packaging ] || {
+ echo "Must run this from the ctdb directory"
+ exit 1
+}
+
+
+SPECDIR=`rpm --eval %_specdir`
+SRCDIR=`rpm --eval %_sourcedir`
+
+# At this point the SPECDIR and SRCDIR vaiables must have a value!
+
+USERID=`id -u`
+GRPID=`id -g`
+VERSION='1.0'
+REVISION=''
+SPECFILE="ctdb.spec"
+RPMVER=`rpm --version | awk '{print $3}'`
+RPMBUILD="rpmbuild"
+
+##
+## Check the RPM version (paranoid)
+##
+case $RPMVER in
+ 4*)
+ echo "Supported RPM version [$RPMVER]"
+ ;;
+ *)
+ echo "Unknown RPM version: `rpm --version`"
+ exit 1
+ ;;
+esac
+
+if [ -f Makefile ]; then
+ make distclean
+fi
+
+pushd .
+BASEDIR=`basename $PWD`
+cd ..
+chown -R ${USERID}.${GRPID} $BASEDIR
+if [ ! -d ctdb-${VERSION} ]; then
+ ln -s $BASEDIR ctdb-${VERSION} || exit 1
+ REMOVE_LN=$PWD/ctdb-$VERSION
+fi
+echo -n "Creating ctdb-${VERSION}.tar.gz ... "
+tar --exclude=.bzr --exclude .bzrignore --exclude="*~" -cf - ctdb-${VERSION}/. | gzip -9 --rsyncable > ${SRCDIR}/ctdb-${VERSION}.tar.gz
+echo "Done."
+if [ $? -ne 0 ]; then
+ echo "Build failed!"
+ [ ${REMOVE_LN} ] && rm $REMOVE_LN
+ exit 1
+fi
+
+popd
+
+
+##
+## copy additional source files
+##
+cp -p packaging/RPM/ctdb.spec ${SPECDIR}
+
+##
+## Build
+##
+echo "$(basename $0): Getting Ready to build release package"
+cd ${SPECDIR}
+${RPMBUILD} -ba --clean --rmsource $EXTRA_OPTIONS $SPECFILE || exit 1
+
+echo "$(basename $0): Done."
+[ ${REMOVE_LN} ] && /bin/rm -f $REMOVE_LN
+
+exit 0