# RPMs are split as follows: # * booth: # - envelope package serving as a syntactic shortcut to install # booth-site (with architecture reliably preserved) # * booth-core: # - package serving as a base for booth-{arbitrator,site}, # carrying also basic documentation, license, etc. # * booth-arbitrator: # - package to be installed at a machine accessible within HA cluster(s), # but not (necessarily) a member of any, hence no dependency # on anything from cluster stack is required # * booth-site: # - package to be installed at a cluster member node # (requires working cluster environment to be useful) # * booth-test: # - files for testing booth # # TODO: # wireshark-dissector.lua currently of no use (rhbz#1259623), but if/when # this no longer persists, add -wireshark package (akin to libvirt-wireshark) %bcond_with html_man %bcond_with glue # Disable automatic compilation of Python files in extra directories %global _python_bytecompile_extra 0 %global specver 5 %global boothver 1.0 # set following to the actual commit or, for final release, concatenate # "boothver" macro to "v" (will yield a tag per the convention) %global commit f2d38ce3d61502bda2a28e79db103737a691faf4 %global lparen ( %global rparen ) %global shortcommit %(c=%{commit}; case ${c} in v*%{rparen} echo ${c:1};; *%{rparen} echo ${c:0:7};; esac) %global pre_release %(s=%{shortcommit}; [ ${s: -3:2} != rc ]; echo $?) %global post_release %([ %{commit} = v%{shortcommit} ]; echo $?) %global github_owner ClusterLabs %if 0%{pre_release} %global boothrel 0.%{specver}.%(s=%{shortcommit}; echo ${s: -3}) %else %if 0%{post_release} %global boothrel %{specver}.%{shortcommit}.git %else %global boothrel %{specver} %endif %endif %{!?_pkgdocdir: %global _pkgdocdir %{_docdir}/%{name}} # https://fedoraproject.org/wiki/EPEL:Packaging?rd=Packaging:EPEL#The_.25license_tag %{!?_licensedir:%global license %doc} %global test_path %{_datadir}/booth/tests Name: booth Version: %{boothver} Release: %{boothrel}%{dist} Summary: Ticket Manager for Multi-site Clusters Group: System Environment/Daemons License: GPLv2+ Url: https://github.com/%{github_owner}/%{name} Source0: https://github.com/%{github_owner}/%{name}/archive/%{commit}/%{name}-%{shortcommit}.tar.gz Patch0: 0000-test-remove-superfluous-shebangs-for-import-only-mod.patch Patch1: 0001-test-do-not-mix-tabs-with-spaces-in-Python-code.patch Patch2: 0002-test-make-Python-files-supported-_also_-with-Python-.patch Patch3: 0003-build-parametrize-Python-invocations-in-the-shebangs.patch Patch4: 0004-test-drop-underqualified-identifier-in-unittest-s-2..patch Patch5: 0005-test-drop-comment-out-superfluous-imports.patch Patch6: 0006-test-avoid-dangerous-mutable-sticky-default-value.patch Patch7: 0007-test-unit-test.py-daemon-will-not-stay-in-foreground.patch Patch8: 0008-Refactor-fix-strncpy-may-miss-trailing-null-byte-war.patch Patch9: 0009-maint-lsb-polish-arbitrator-s-initscript-fix-condres.patch Patch10: 0010-maint-test-polish-live_test.sh.patch Patch11: 0011-maint-ocf-script-eliminate-some-false-positives-with.patch # direct build process dependencies BuildRequires: autoconf BuildRequires: automake BuildRequires: coreutils BuildRequires: make ## ./autogen.sh BuildRequires: /bin/sh # general build dependencies BuildRequires: asciidoc BuildRequires: gcc BuildRequires: pkgconfig # linking dependencies BuildRequires: libgcrypt-devel BuildRequires: libxml2-devel ## just for include BuildRequires: pacemaker-libs-devel BuildRequires: pkgconfig(glib-2.0) BuildRequires: zlib-devel ## logging provider BuildRequires: pkgconfig(libqb) ## random2range provider BuildRequires: pkgconfig(glib-2.0) ## nametag provider BuildRequires: pkgconfig(libsystemd) # check scriptlet (for hostname and killall respectively) BuildRequires: hostname psmisc BuildRequires: python3-devel # spec file specifics ## for _unitdir, systemd_requires and specific scriptlet macros BuildRequires: systemd ## for autosetup BuildRequires: git # this is for a composite-requiring-its-components arranged # as an empty package (empty files section) requiring subpackages # (_isa so as to preserve the architecture) Requires: %{name}-core%{?_isa} Requires: %{name}-site %files # intentionally empty %description Booth manages tickets which authorize cluster sites located in geographically dispersed locations to run resources. It facilitates support of geographically distributed clustering in Pacemaker. # SUBPACKAGES # %package core Summary: Booth core files (executables, etc.) Group: System Environment/Daemons # for booth-keygen (chown, dd) Requires: coreutils # deal with pre-split arrangement Conflicts: %{name} < 1.0-1 %description core Core files (executables, etc.) for Booth, ticket manager for multi-site clusters. %package arbitrator Summary: Booth support for running as an arbitrator Group: System Environment/Daemons BuildArch: noarch Requires: %{name}-core = %{version}-%{release} %{?systemd_requires} # deal with pre-split arrangement Conflicts: %{name} < 1.0-1 %description arbitrator Support for running Booth, ticket manager for multi-site clusters, as an arbitrator. %post arbitrator %systemd_post booth@.service booth-arbitrator.service %preun arbitrator %systemd_preun booth@.service booth-arbitrator.service %postun arbitrator %systemd_postun_with_restart booth@.service booth-arbitrator.service %package site Summary: Booth support for running as a full-fledged site Group: System Environment/Daemons BuildArch: noarch Requires: %{name}-core = %{version}-%{release} # for crm_{resource,simulate,ticket} utilities Requires: pacemaker >= 1.1.8 # for ocf-shellfuncs and other parts of OCF shell-based environment Requires: resource-agents # deal with pre-split arrangement Conflicts: %{name} < 1.0-1 %description site Support for running Booth, ticket manager for multi-site clusters, as a full-fledged site. %package test Summary: Test scripts for Booth Group: System Environment/Daemons BuildArch: noarch # runtests.py suite (for hostname and killall respectively) Requires: hostname psmisc # any of the following internal dependencies will pull -core package ## for booth@booth.service Requires: %{name}-arbitrator = %{version}-%{release} ## for booth-site and service-runnable scripts ## (and /usr/lib/ocf/resource.d/booth) Requires: %{name}-site = %{version}-%{release} Requires: gdb Requires: %{__python3} Requires: python3-pexpect %description test Automated tests for running Booth, ticket manager for multi-site clusters. # BUILD # %prep %autosetup -n %{name}-%{commit} -S git_am %build ./autogen.sh %{configure} \ --with-initddir=%{_initrddir} \ --docdir=%{_pkgdocdir} \ --enable-user-flags \ %{!?with_html_man:--without-html_man} \ %{!?with_glue:--without-glue} %{make_build} %install %{make_install} mkdir -p %{buildroot}/%{_unitdir} cp -a -t %{buildroot}/%{_unitdir} \ -- conf/booth@.service conf/booth-arbitrator.service install -D -m 644 -t %{buildroot}/%{_mandir}/man8 \ -- docs/boothd.8 ln -s boothd.8 %{buildroot}/%{_mandir}/man8/booth.8 cp -a -t %{buildroot}/%{_pkgdocdir} \ -- ChangeLog README-testing conf/booth.conf.example # drop what we don't package anyway (COPYING added via tarball-relative path) rm -rf %{buildroot}/%{_initrddir}/booth-arbitrator rm -rf %{buildroot}/%{_pkgdocdir}/README.upgrade-from-v0.1 rm -rf %{buildroot}/%{_pkgdocdir}/COPYING # tests mkdir -p %{buildroot}/%{test_path} cp -a -t %{buildroot}/%{test_path} \ -- conf test unit-tests script/unit-test.py chmod +x %{buildroot}/%{test_path}/test/booth_path chmod +x %{buildroot}/%{test_path}/test/live_test.sh mkdir -p %{buildroot}/%{test_path}/src ln -s -t %{buildroot}/%{test_path}/src \ -- %{_sbindir}/boothd # https://fedoraproject.org/wiki/Packaging:Python_Appendix#Manual_byte_compilation %py_byte_compile %{__python3} %{buildroot}/%{test_path} %check # alternatively: test/runtests.py VERBOSE=1 make check %files core %license COPYING %doc %{_pkgdocdir}/AUTHORS %doc %{_pkgdocdir}/ChangeLog %doc %{_pkgdocdir}/README %doc %{_pkgdocdir}/booth.conf.example # core command(s) + man pages %{_sbindir}/booth* %{_mandir}/man8/booth*.8* # configuration %dir %{_sysconfdir}/booth %exclude %{_sysconfdir}/booth/booth.conf.example %files arbitrator %{_unitdir}/booth@.service %{_unitdir}/booth-arbitrator.service %files site # OCF (agent + a helper) ## /usr/lib/ocf/resource.d/pacemaker provided by pacemaker /usr/lib/ocf/resource.d/pacemaker/booth-site %dir /usr/lib/ocf/lib/booth /usr/lib/ocf/lib/booth/geo_attr.sh # geostore (command + OCF agent) %{_sbindir}/geostore %{_mandir}/man8/geostore.8* ## /usr/lib/ocf/resource.d provided by resource-agents %dir /usr/lib/ocf/resource.d/booth /usr/lib/ocf/resource.d/booth/geostore # helper (possibly used in the configuration hook) %dir %{_datadir}/booth %{_datadir}/booth/service-runnable %files test %doc %{_pkgdocdir}/README-testing # /usr/share/booth provided by -site %{test_path} # /usr/lib/ocf/resource.d/booth provided by -site /usr/lib/ocf/resource.d/booth/sharedrsc %changelog * Wed Sep 19 2018 Tomas Orsava - 1.0-5.f2d38ce.git - Require the Python interpreter directly instead of using the package name - Related: rhbz#1619153 * Thu Jul 19 2018 Jan Pokorný - 1.0-4.f2d38ce.git - revert back to using asciidoc instead of asciidoctor for generating man pages (rhbz#1603119) - fix some issues in the shell scripts (rhbz#1602455) * Mon Jul 16 2018 Jan Pokorný - 1.0-3.f2d38ce.git - update for another, current snapshot beyond booth-1.0 (commit f2d38ce), including: . support for solely manually managed tickets (9a365f9) . use asciidoctor instead of asciidoc for generating man pages (65e6a6b) - switch to using Python 3 for the tests instead of Python 2 (behind unversioned "python" references; rhbz#1590856) * Thu Jun 21 2018 Troy Dawson - 1.0-2.570876d.git.3 - Fix python shebangs (#1580601) * Fri Feb 10 2017 Fedora Release Engineering - 1.0-2.570876d.git.2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild * Tue Jul 19 2016 Fedora Release Engineering - 1.0-2.570876d.git.1 - https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages * Wed May 25 2016 Jan Pokorný - 1.0-3.570876d.git - update per the changesets recently accepted by the upstream (memory/resource leaks fixes, patches previously attached separately that make unit test pass, internal cleanups, etc.) * Thu May 05 2016 Jan Pokorný - 1.0-2.eb4256a.git - update a subset of out-of-tree patches per https://github.com/ClusterLabs/booth/pull/22#issuecomment-216936987 - pre-inclusion cleanups in the spec (apply systemd scriptlet operations with booth-arbitrator, avoid overloading file implicitly considered %%doc as %%license) Resolves: rhbz#1314865 Related: rhbz#1333509 * Thu Apr 28 2016 Jan Pokorný - 1.0-1.eb4256a.git - initial build