# # spec file for package sanlock # # Copyright (c) 2014 SUSE LINUX Products GmbH, Nuernberg, Germany. # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed # upon. The license for this file, and modifications and additions to the # file, is the same license as for the pristine package itself (unless the # license for the pristine package is not an Open Source License, in which # case the license is the MIT License). An "Open Source License" is a # license that conforms to the Open Source Definition (Version 1.9) # published by the Open Source Initiative. # Please submit bugfixes or comments via http://bugs.opensuse.org/ # %define with_systemd 0 %define with_fence_sanlockd 0 %if 0%{?suse_version} > 1140 %define with_systemd 1 %endif Name: sanlock Version: 3.1.0 Release: 1%{?dist} Summary: A shared disk lock manager License: GPL-2.0 and GPL-2.0+ and LGPL-2.1+ Group: System/Base Url: https://fedorahosted.org/sanlock/ BuildRoot: %{_tmppath}/%{name}-%{version}-build BuildRequires: libaio-devel BuildRequires: libblkid-devel BuildRequires: python BuildRequires: python-devel %if %{with_systemd} BuildRequires: systemd %{?systemd_requires} %endif Requires(pre): %insserv_prereq %fillup_prereq Requires: %{name}-lib = %{version}-%{release} Recommends: logrotate # Latest version available at # https://fedorahosted.org/releases/s/a/sanlock/ Source0: %{name}-%{version}.tar.bz2 Source1: sanlock.init Source2: sysconfig.sanlock Source3: wdmd.init Source4: sysconfig.wdmd Source5: fence_sanlockd.init # Upstream patches # SUSE patches Patch100: sanlock-SCHED_RESET_ON_FORK-undefined.patch Patch101: sanlock-python-prefix.patch Patch102: sanlock-old_blkid.patch Patch103: suse-systemd.patch Patch104: suse-no-date-time.patch %{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")} %description sanlock uses disk paxos to manage leases on shared storage. Hosts connected to a common SAN can use this to synchronize their access to the shared disks. %prep %setup -q %patch100 %patch101 %patch102 %patch103 -p1 %patch104 -p1 %build # upstream does not require configure # upstream does not support _smp_mflags CFLAGS=$RPM_OPT_FLAGS make -C wdmd CFLAGS=$RPM_OPT_FLAGS make -C src CFLAGS=$RPM_OPT_FLAGS make -C python %if %{with_fence_sanlockd} CFLAGS=$RPM_OPT_FLAGS make -C fence_sanlock %endif %install make -C src \ install LIBDIR=%{_libdir} \ DESTDIR=$RPM_BUILD_ROOT make -C wdmd \ install LIBDIR=%{_libdir} \ DESTDIR=$RPM_BUILD_ROOT make -C python \ install LIBDIR=%{_libdir} \ DESTDIR=$RPM_BUILD_ROOT PREFIX=%_prefix %if %{with_fence_sanlockd} make -C fence_sanlock \ install LIBDIR=%{_libdir} \ DESTDIR=$RPM_BUILD_ROOT %endif install -D -m 755 %SOURCE1 $RPM_BUILD_ROOT/etc/init.d/sanlock ln -s /etc/init.d/sanlock $RPM_BUILD_ROOT%{_sbindir}/rcsanlock install -D -m 755 %SOURCE2 $RPM_BUILD_ROOT/%{_localstatedir}/adm/fillup-templates/sysconfig.sanlock install -D -m 755 %SOURCE3 $RPM_BUILD_ROOT/etc/init.d/wdmd ln -s /etc/init.d/wdmd $RPM_BUILD_ROOT%{_sbindir}/rcwdmd install -D -m 755 %SOURCE4 $RPM_BUILD_ROOT/%{_localstatedir}/adm/fillup-templates/sysconfig.wdmd %if %{with_fence_sanlockd} install -D -m 755 %SOURCE5 $RPM_BUILD_ROOT/%{_initddir}/fence_sanlockd ln -s /etc/init.d/fence_sanlockd $RPM_BUILD_ROOT%{_sbindir}/rcfence_sanlockd %endif %if %{with_systemd} install -D -m 755 init.d/sanlock.service $RPM_BUILD_ROOT/%{_unitdir}/sanlock.service install -D -m 755 init.d/wdmd.service $RPM_BUILD_ROOT/%{_unitdir}/wdmd.service %if %{with_fence_sanlockd} install -D -m 0755 init.d/fence_sanlockd $RPM_BUILD_ROOT/lib/systemd/systemd-fence_sanlockd install -D -m 0644 init.d/fence_sanlockd.service $RPM_BUILD_ROOT/%{_unitdir}/fence_sanlockd.service %endif %endif install -Dm 0644 src/logrotate.sanlock \ $RPM_BUILD_ROOT/etc/logrotate.d/sanlock %clean rm -rf $RPM_BUILD_ROOT %pre %{_bindir}/getent group sanlock > /dev/null || %{_sbindir}/groupadd \ -g 179 sanlock %{_bindir}/getent passwd sanlock > /dev/null || %{_sbindir}/useradd \ -u 179 -c "sanlock" -s /sbin/nologin -r \ -g 179 -G disk -d /var/run/sanlock sanlock %if %{with_systemd} %service_add_pre wdmd.service %service_add_pre sanlock.service %endif %post %if %{with_systemd} %service_add_post wdmd.service sanlock.service %endif %fillup_only -n wdmd %fillup_only -n sanlock %restart_on_update wdmd %restart_on_update sanlock %preun %if %{with_systemd} %service_del_preun wdmd.service sanlock.service %endif %stop_on_removal wdmd %stop_on_removal sanlock %postun %if %{with_systemd} %service_del_postun wdmd.service sanlock.service %endif %insserv_cleanup %files %defattr(-,root,root,-) /etc/init.d/sanlock %{_sbindir}/rcsanlock %{_localstatedir}/adm/fillup-templates/sysconfig.sanlock /etc/init.d/wdmd %{_sbindir}/rcwdmd %{_localstatedir}/adm/fillup-templates/sysconfig.wdmd %if %{with_systemd} %{_unitdir}/sanlock.service %{_unitdir}/wdmd.service %endif %{_sbindir}/sanlock %{_sbindir}/wdmd %{_mandir}/man8/wdmd* %{_mandir}/man8/sanlock* %config(noreplace) %{_sysconfdir}/logrotate.d/sanlock %package -n libsanlock1 Provides: sanlock-lib Summary: A shared disk lock manager library Group: Development/Libraries/C and C++ %description -n libsanlock1 The %{name}-lib package contains the runtime libraries for sanlock, a shared disk lock manager. Hosts connected to a common SAN can use this to synchronize their access to the shared disks. %post -n libsanlock1 -p /sbin/ldconfig %postun -n libsanlock1 -p /sbin/ldconfig %files -n libsanlock1 %defattr(-,root,root,-) %{_libdir}/libsanlock.so.* %{_libdir}/libsanlock_client.so.* %{_libdir}/libwdmd.so.* %package -n python-%name Provides: sanlock-python Summary: Python bindings for the sanlock library Group: Development/Libraries/Python Requires: libsanlock1 = %{version}-%{release} %description -n python-%name The %{name}-python package contains a module that permits applications written in the Python programming language to use the interface supplied by the sanlock library. %files -n python-%name %defattr(-,root,root,-) %{python_sitearch}/Sanlock-1.0-py*.egg-info %{python_sitearch}/sanlock.so %package devel Summary: Development files for %{name} Group: Development/Libraries/C and C++ Requires: libsanlock1 = %{version}-%{release} %description devel The %{name}-devel package contains libraries and header files for developing applications that use %{name}. %files devel %defattr(-,root,root,-) %{_libdir}/libwdmd.so %{_includedir}/wdmd.h %{_libdir}/libsanlock.so %{_libdir}/libsanlock_client.so %{_includedir}/sanlock.h %{_includedir}/sanlock_rv.h %{_includedir}/sanlock_admin.h %{_includedir}/sanlock_resource.h %{_includedir}/sanlock_direct.h %if %{with_fence_sanlockd} %package -n fence-sanlock Summary: Fence agent using sanlock and wdmd Group: System Environment/Base Requires: sanlock = %{version}-%{release} %description -n fence-sanlock The fence-sanlock package contains the fence agent and daemon for using sanlock and wdmd as a cluster fence agent. %files -n fence-sanlock %defattr(-,root,root,-) /etc/init.d/fence_sanlockd %{_sbindir}/fence_sanlockd %if %{with_systemd} /lib/systemd/systemd-fence_sanlockd %{_unitdir}/fence_sanlockd.service %endif %{_sbindir}/fence_sanlock %{_sbindir}/fence_sanlockd %{_mandir}/man8/fence_sanlock* %post -n fence-sanlock %if %{with_systemd} %service_add_post fence_sanlockd.service %endif %restart_on_update fence_sanlockd #if [ $1 -eq 1 ] ; then #ccs_update_schema > /dev/null 2>&1 ||: #fi %preun -n fence-sanlock %if %{with_systemd} %service_del_preun fence_sanlockd.service %endif %stop_on_removal fence_sanlockd %postun -n fence-sanlock %if %{with_systemd} %service_del_postun fence_sanlockd.service %endif %endif %changelog