From a8278dadcd3cb8004e2a71f4af97e10f9049c439 Mon Sep 17 00:00:00 2001 From: Mikhail Novosyolov Date: Thu, 30 Nov 2023 23:19:23 +0300 Subject: [PATCH] build modern ctdb (was a separate package) Based on Fedora spec --- samba.spec | 124 +++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 121 insertions(+), 3 deletions(-) diff --git a/samba.spec b/samba.spec index 2348c44..7d1c541 100644 --- a/samba.spec +++ b/samba.spec @@ -10,7 +10,6 @@ # # To view current parameters, including directories: sbmd -b ####### -# TODO: ctdb (--with-cluster-support) # Build order of the dependency chain of samba: # tdb lmdb talloc @@ -59,6 +58,7 @@ %bcond_with avahi_service # switch between system MIT krb5 and built-in Heimdal krb5 %bcond_with mitkrb5 +%bcond_without clustering # zerro is a dummy value bellow # # this package does not contain libraries @@ -114,7 +114,7 @@ Conflicts: %{1} < %{2} Summary: Samba SMB server Name: samba Version: 4.19.3 -Release: 2 +Release: 3 Epoch: 1 License: GPLv3+ Group: System/Servers @@ -174,7 +174,6 @@ BuildRequires: magic-devel BuildRequires: openldap-devel BuildRequires: pam-devel BuildRequires: readline-devel -BuildRequires: pkgconfig(ctdb) >= 2.0 BuildRequires: pkgconfig(gnutls) BuildRequires: pkgconfig(krb5) BuildRequires: pkgconfig(ldb) >= 1.1.29 @@ -514,6 +513,9 @@ Provides libraries for Samba %{_libdir}/samba/libroken-samba4.so %{_libdir}/samba/libwind-samba4.so %endif +%if %{with clustering} +%{_libdir}/samba/libctdb-event-client-samba4.so +%endif %dir %{_libdir}/samba/vfs %{_libdir}/%{name}/nss_info %{_libdir}/%{name}/idmap @@ -722,6 +724,114 @@ packages of Samba. %doc clean-docs/samba-doc/examples %endif +#---------------------------------------------------------------------------- +%if %{with clustering} +%package -n ctdb +Summary: A Clustered Database based on Samba's Trivial Database (TDB) +Requires: coreutils +# for ps and killall +Requires: psmisc +Requires: sed +Requires: tdb-utils +Requires: gawk +# for pkill and pidof: +Requires: procps-ng +# for netstat: +Requires: net-tools +Requires: ethtool +# for ip: +Requires: iproute2 +Requires: iptables +# for flock, getopt, kill: +Requires: util-linux +# sudoers config +Recommends: sudo + +%description -n ctdb +CTDB is a cluster implementation of the TDB database used by Samba and other +projects to store temporary data. If an application is already using TDB for +temporary data it is very easy to convert that application to be cluster aware +and use CTDB instead. + +%files -n ctdb +%doc ctdb/README +%doc ctdb/doc/examples +%dir %{_sysconfdir}/ctdb +%config(noreplace) %{_sysconfdir}/ctdb/ctdb.conf +%config(noreplace) %{_sysconfdir}/ctdb/notify.sh +%config(noreplace) %{_sysconfdir}/ctdb/debug-hung-script.sh +%config(noreplace) %{_sysconfdir}/ctdb/ctdb-crash-cleanup.sh +%config(noreplace) %{_sysconfdir}/ctdb/debug_locks.sh +%{_sysconfdir}/ctdb/functions +%{_sysconfdir}/ctdb/nfs-linux-kernel-callout +%{_sysconfdir}/ctdb/statd-callout +%config %{_sysconfdir}/sudoers.d/ctdb +# CTDB scripts, no config files +# script with executable bit means activated +%dir %{_sysconfdir}/ctdb/events +%dir %{_sysconfdir}/ctdb/events/legacy +%dir %{_sysconfdir}/ctdb/events/notification +%{_sysconfdir}/ctdb/events/notification/README +# CTDB scripts, no config files +# script with executable bit means activated +%dir %{_sysconfdir}/ctdb/nfs-checks.d +%{_sysconfdir}/ctdb/nfs-checks.d/README +%config(noreplace) %{_sysconfdir}/ctdb/nfs-checks.d/00.portmapper.check +%config(noreplace) %{_sysconfdir}/ctdb/nfs-checks.d/10.status.check +%config(noreplace) %{_sysconfdir}/ctdb/nfs-checks.d/20.nfs.check +%config(noreplace) %{_sysconfdir}/ctdb/nfs-checks.d/30.nlockmgr.check +%config(noreplace) %{_sysconfdir}/ctdb/nfs-checks.d/40.mountd.check +%config(noreplace) %{_sysconfdir}/ctdb/nfs-checks.d/50.rquotad.check +%{_sbindir}/ctdbd +%{_bindir}/ctdb +%{_bindir}/ctdb_diagnostics +%{_bindir}/ltdbtool +%{_bindir}/onnode +%{_bindir}/ping_pong +%{_datadir}/ctdb +%dir %{_libexecdir}/ctdb +%{_libexecdir}/ctdb/ctdb-config +%{_libexecdir}/ctdb/ctdb-event +%{_libexecdir}/ctdb/ctdb-eventd +%{_libexecdir}/ctdb/ctdb_killtcp +%{_libexecdir}/ctdb/ctdb_lock_helper +%{_libexecdir}/ctdb/ctdb_lvs +%{_libexecdir}/ctdb/ctdb_mutex_fcntl_helper +%{_libexecdir}/ctdb/ctdb_natgw +%{_libexecdir}/ctdb/ctdb-path +%{_libexecdir}/ctdb/ctdb_recovery_helper +%{_libexecdir}/ctdb/ctdb_takeover_helper +%{_libexecdir}/ctdb/smnotify +%{_libexecdir}/ctdb/tdb_mutex_check +%dir %{_localstatedir}/lib/ctdb/ +%dir %{_localstatedir}/lib/ctdb/persistent +%dir %{_localstatedir}/lib/ctdb/state +%dir %{_localstatedir}/lib/ctdb/volatile +%{_mandir}/man1/ctdb.1* +%{_mandir}/man1/ctdb_diagnostics.1* +%{_mandir}/man1/ctdbd.1* +%{_mandir}/man1/onnode.1* +%{_mandir}/man1/ltdbtool.1* +%{_mandir}/man1/ping_pong.1* +%{_mandir}/man5/ctdb.conf.5* +%{_mandir}/man5/ctdb-script.options.5* +%{_mandir}/man5/ctdb.sysconfig.5* +%{_mandir}/man7/ctdb.7* +%{_mandir}/man7/ctdb-tunables.7* +%{_mandir}/man7/ctdb-statistics.7* +%{_tmpfilesdir}/ctdb.conf +%{_unitdir}/ctdb.service + +%post -n ctdb +%tmpfiles_create ctdb.conf +%systemd_post ctdb.service + +%preun -n ctdb +%systemd_preun ctdb.service + +%postun -n ctdb +%systemd_postun_with_restart ctdb.service +%endif #---------------------------------------------------------------------------- %package -n %{libwinbind} @@ -1473,6 +1583,9 @@ sed -e 's/@ROSA_VENDOR_PATCH@/%{release}/g' -i VERSION --with-iconv \ --with-acl-support \ --with-automount \ +%if %{with clustering} + --with-cluster-support \ +%endif --with-systemd \ --with-systemddir=%{_unitdir} \ --systemd-install-services \ @@ -1562,6 +1675,11 @@ sed -i "s|/usr/bin/kill|$(which kill)|g" %{buildroot}%{_unitdir}/*.service # create %{_rundir}/samba too. mkdir -p %{buildroot}%{_tmpfilesdir}/ echo "d %{_rundir}/samba 755 root root" >> %{buildroot}%{_tmpfilesdir}/samba.conf +%if %{with clustering} +echo "d %{_rundir}/ctdb 755 root root" > %{buildroot}%{_tmpfilesdir}/ctdb.conf +install -d -m 755 %{buildroot}%{_sysconfdir}/ctdb +install -m 644 ctdb/config/ctdb.conf %{buildroot}%{_sysconfdir}/ctdb/ctdb.conf +%endif # Prepare schema files to be included into OpenLDAP configuration mkdir -p %{buildroot}%{_sysconfdir}/openldap/{schema,slapd.d}