| # User-configurable globals and defines to control package behavior |
| # (these should not test {with X} values, which are declared later) |
| |
| ## User and group to use for nonprivileged services |
| %global uname hacluster |
| %global gname haclient |
| |
| ## Where to install Pacemaker documentation |
| %if 0%{?suse_version} > 0 |
| %global pcmk_docdir %{_docdir}/%{name}-%{version} |
| %else |
| %global pcmk_docdir %{_docdir}/%{name} |
| %endif |
| |
| ## GitHub entity that distributes source (for ease of using a fork) |
| %global github_owner ClusterLabs |
| |
| ## Upstream pacemaker version, and its package version (specversion |
| ## can be incremented to build packages reliably considered "newer" |
| ## than previously built packages with the same pcmkversion) |
| %global pcmkversion 1.1.24 |
| %global specversion 1 |
| |
| ## Upstream commit (full commit ID, abbreviated commit ID, or tag) to build |
| %global commit HEAD |
| ## Since git v2.11, the extent of abbreviation is autoscaled by default |
| ## (used to be constant of 7), so we need to convey it for non-tags, too. |
| %global commit_abbrev 7 |
| |
| |
| # Define conditionals so that "rpmbuild --with <feature>" and |
| # "rpmbuild --without <feature>" can enable and disable specific features |
| |
| ## Add option to enable support for stonith/external fencing agents |
| %bcond_with stonithd |
| |
| ## Add option to create binaries suitable for use with profiling tools |
| %bcond_with profiling |
| |
| ## Add option to create binaries with coverage analysis |
| %bcond_with coverage |
| |
| ## Add option to skip generating documentation |
| ## (the build tools aren't available everywhere) |
| %bcond_without doc |
| |
| ## Add option to prefix package version with "0." |
| ## (so later "official" packages will be considered updates) |
| %bcond_with pre_release |
| |
| ## Add option to ship Upstart job files |
| %bcond_with upstart_job |
| |
| ## Add option to turn off CMAN support on CMAN-native platforms |
| %bcond_without cman |
| |
| ## Add option to turn off SNMP / ESMTP support |
| %bcond_without snmp |
| %bcond_without esmtp |
| |
| ## Add option to turn off hardening of libraries and daemon executables |
| %bcond_without hardening |
| |
| |
| # Define globals for convenient use later |
| |
| ## Workaround to use parentheses in other globals |
| %global lparen ( |
| %global rparen ) |
| |
| ## Whether this is a tagged release (final or release candidate) |
| %define tag_release %(c=%{commit}; case ${c} in Pacemaker-*%{rparen} echo 1 ;; |
| *%{rparen} echo 0 ;; esac) |
| |
| ## Portion of export/dist tarball name after "pacemaker-", and release version |
| %if 0%{tag_release} |
| %define archive_version %(c=%{commit}; echo ${c:10}) |
| %define archive_github_url %{commit}#/%{name}-%{archive_version}.tar.gz |
| %define pcmk_release %(c=%{commit}; case $c in *-rc[[:digit:]]*%{rparen} |
| echo 0.%{specversion}.${c: -3} ;; |
| *%{rparen} echo %{specversion} ;; esac) |
| %else |
| %define archive_version %(c=%{commit}; echo ${c:0:%{commit_abbrev}}) |
| %define archive_github_url %{archive_version}#/%{name}-%{archive_version}.tar.gz |
| %if %{with pre_release} |
| %define pcmk_release 0.%{specversion}.%{archive_version}.git |
| %else |
| %define pcmk_release %{specversion}.%{archive_version}.git |
| %endif |
| %endif |
| |
| ## Turn off auto-compilation of python files outside site-packages directory, |
| ## so that the -libs-devel package is multilib-compliant (no *.py[co] files) |
| %global __os_install_post %(echo '%{__os_install_post}' | { |
| sed -e 's!/usr/lib[^[:space:]]*/brp-python-bytecompile[[:space:]].*$!!g'; }) |
| |
| ## Heuristic used to infer bleeding-edge deployments that are |
| ## less likely to have working versions of the documentation tools |
| %define bleeding %(test ! -e /etc/yum.repos.d/fedora-rawhide.repo; echo $?) |
| |
| ## Corosync version |
| %define cs_version %(pkg-config corosync --modversion 2>/dev/null | awk -F . '{print $1}') |
| |
| ## Where to install python site libraries (currently, this uses the unversioned |
| ## python_sitearch macro to get the default system python, but at some point, |
| ## we should explicitly choose python2_sitearch or python3_sitearch -- or both) |
| %define py_site %{?python_sitearch}%{!?python_sitearch:%( |
| python -c 'from distutils.sysconfig import get_python_lib as gpl; print(gpl(1))' 2>/dev/null)} |
| |
| ## Whether this platform defaults to using CMAN |
| %define cman_native (0%{?el6} || (0%{?fedora} > 0 && 0%{?fedora} < 17)) |
| |
| ## Whether this platform defaults to using systemd as an init system |
| ## (needs to be evaluated prior to BuildRequires being enumerated and |
| ## installed as it's intended to conditionally select some of these, and |
| ## for that there are only few indicators with varying reliability: |
| ## - presence of systemd-defined macros (when building in a full-fledged |
| ## environment, which is not the case with ordinary mock-based builds) |
| ## - systemd-aware rpm as manifested with the presence of particular |
| ## macro (rpm itself will trivially always be present when building) |
| ## - existence of /usr/lib/os-release file, which is something heavily |
| ## propagated by systemd project |
| ## - when not good enough, there's always a possibility to check |
| ## particular distro-specific macros (incl. version comparison) |
| %define systemd_native (%{?_unitdir:1}%{!?_unitdir:0}%{nil \ |
| } || %{?__transaction_systemd_inhibit:1}%{!?__transaction_systemd_inhibit:0}%{nil \ |
| } || %(test -f /usr/lib/os-release; test $? -ne 0; echo $?)) |
| |
| %if 0%{?fedora} > 20 || 0%{?rhel} > 7 |
| %global gnutls_priorities @SYSTEM |
| %endif |
| |
| %if !%{defined _rundir} |
| %if 0%{?fedora} >= 15 || 0%{?rhel} >= 7 || 0%{?suse_version} >= 1200 |
| %define _rundir /run |
| %else |
| %define _rundir /var/run |
| %endif |
| %endif |
| |
| ## Different distros name certain packages differently |
| ## (note: corosync libraries also differ, but all provide corosync-devel) |
| %if 0%{?suse_version} > 0 |
| %global pkgname_bzip2_devel libbz2-devel |
| %global pkgname_docbook_xsl docbook-xsl-stylesheets |
| %global pkgname_gnutls_devel libgnutls-devel |
| %global pkgname_shadow_utils shadow |
| %global pkgname_procps procps |
| %global pkgname_glue_libs libglue |
| %global pkgname_pcmk_libs lib%{name}3 |
| %global hacluster_id 90 |
| %else |
| %global pkgname_libtool_devel libtool-ltdl-devel |
| %global pkgname_libtool_devel_arch libtool-ltdl-devel%{?_isa} |
| %global pkgname_bzip2_devel bzip2-devel |
| %global pkgname_docbook_xsl docbook-style-xsl |
| %global pkgname_gnutls_devel gnutls-devel |
| %global pkgname_shadow_utils shadow-utils |
| %global pkgname_procps procps-ng |
| %global pkgname_publican publican |
| %global pkgname_glue_libs cluster-glue-libs |
| %global pkgname_pcmk_libs %{name}-libs |
| %global hacluster_id 189 |
| %endif |
| |
| # Definitions for backward compatibility with older RPM versions |
| |
| ## Ensure the license macro behaves consistently (older RPM will otherwise |
| ## overwrite it once it encounters "License:"). Courtesy Jason Tibbitts: |
| ## https://pkgs.fedoraproject.org/cgit/rpms/epel-rpm-macros.git/tree/macros.zzz-epel?h=el6&id=e1adcb77 |
| %if !%{defined _licensedir} |
| %define description %{lua: |
| rpm.define("license %doc") |
| print("%description") |
| } |
| %endif |
| |
| |
| # Keep sane profiling data if requested |
| %if %{with profiling} |
| |
| ## Disable -debuginfo package and stripping binaries/libraries |
| %define debug_package %{nil} |
| |
| %endif |
| |
| |
| Name: pacemaker |
| Summary: Scalable High-Availability cluster resource manager |
| Version: %{pcmkversion} |
| Release: %{pcmk_release}%{?dist} |
| %if %{defined _unitdir} |
| License: GPLv2+ and LGPLv2+ |
| %else |
| # initscript is Revised BSD |
| License: GPLv2+ and LGPLv2+ and BSD |
| %endif |
| Url: http://www.clusterlabs.org |
| Group: System Environment/Daemons |
| |
| # Example: https://codeload.github.com/ClusterLabs/pacemaker/tar.gz/e91769e |
| # will download pacemaker-e91769e.tar.gz |
| # |
| # The ending part starting with '#' is ignored by github but necessary for |
| # rpmbuild to know what the tar archive name is. (The downloaded file will be |
| # named correctly only for commit IDs, not tagged releases.) |
| # |
| # You can use "spectool -s 0 pacemaker.spec" (rpmdevtools) to show final URL. |
| Source0: https://codeload.github.com/%{github_owner}/%{name}/tar.gz/%{archive_github_url} |
| BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX) |
| AutoReqProv: on |
| Requires: resource-agents |
| Requires: %{pkgname_pcmk_libs}%{?_isa} = %{version}-%{release} |
| Requires: %{name}-cluster-libs%{?_isa} = %{version}-%{release} |
| Requires: %{name}-cli = %{version}-%{release} |
| %{?systemd_requires} |
| |
| # Pacemaker targets compatibility with python 2.6+ and 3.2+ |
| Requires: python >= 2.6 |
| BuildRequires: python-devel >= 2.6 |
| |
| # Pacemaker requires a minimum libqb functionality |
| Requires: libqb >= 0.13.0 |
| BuildRequires: libqb-devel >= 0.13.0 |
| |
| # Basics required for the build (even if usually satisfied through other BRs) |
| BuildRequires: coreutils findutils grep sed |
| |
| # Required for core functionality |
| BuildRequires: automake autoconf gcc libtool pkgconfig %{?pkgname_libtool_devel} |
| ## version lower bound for: G_GNUC_INTERNAL |
| BuildRequires: pkgconfig(glib-2.0) >= 2.6 |
| BuildRequires: libxml2-devel libxslt-devel libuuid-devel |
| BuildRequires: %{pkgname_bzip2_devel} |
| |
| # Required for agent_config.h which specifies the correct scratch directory |
| BuildRequires: resource-agents |
| |
| # Enables optional functionality |
| BuildRequires: ncurses-devel %{pkgname_docbook_xsl} |
| BuildRequires: bison byacc flex help2man %{pkgname_gnutls_devel} pam-devel pkgconfig(dbus-1) |
| |
| %if %{systemd_native} |
| BuildRequires: pkgconfig(systemd) |
| %endif |
| |
| %if %{with cman} && %{cman_native} |
| BuildRequires: clusterlib-devel |
| # pacemaker initscript: cman initscript, fence_tool (+ some soft-dependencies) |
| # "post" scriptlet: ccs_update_schema |
| Requires: cman |
| %endif |
| |
| Requires: corosync |
| BuildRequires: corosync-devel |
| |
| %if %{with stonithd} |
| BuildRequires: %{pkgname_glue_libs}-devel |
| %endif |
| |
| ## (note no avoiding effect when building through non-customized mock) |
| %if !%{bleeding} |
| %if %{with doc} |
| BuildRequires: inkscape asciidoc %{?pkgname_publican} |
| %endif |
| %endif |
| |
| %description |
| Pacemaker is an advanced, scalable High-Availability cluster resource |
| manager for Corosync, CMAN and/or Linux-HA. |
| |
| It supports more than 16 node clusters with significant capabilities |
| for managing resources and dependencies. |
| |
| It will run scripts at initialization, when machines go up or down, |
| when related resources fail and can be configured to periodically check |
| resource health. |
| |
| Available rpmbuild rebuild options: |
| --with(out) : cman coverage doc stonithd hardening pre_release profiling |
| upstart_job |
| |
| %package cli |
| License: GPLv2+ and LGPLv2+ |
| Summary: Command line tools for controlling Pacemaker clusters |
| Group: System Environment/Daemons |
| Requires: %{pkgname_pcmk_libs}%{?_isa} = %{version}-%{release} |
| Requires: perl-TimeDate |
| |
| %description cli |
| Pacemaker is an advanced, scalable High-Availability cluster resource |
| manager for Corosync, CMAN and/or Linux-HA. |
| |
| The %{name}-cli package contains command line tools that can be used |
| to query and control the cluster from machines that may, or may not, |
| be part of the cluster. |
| |
| %package -n %{pkgname_pcmk_libs} |
| License: GPLv2+ and LGPLv2+ |
| Summary: Core Pacemaker libraries |
| Group: System Environment/Daemons |
| Requires(pre): %{pkgname_shadow_utils} |
| # sbd 1.4.0+ supports the libpe_status API for pe_working_set_t |
| Conflicts: sbd < 1.4.0 |
| |
| %description -n %{pkgname_pcmk_libs} |
| Pacemaker is an advanced, scalable High-Availability cluster resource |
| manager for Corosync, CMAN and/or Linux-HA. |
| |
| The %{pkgname_pcmk_libs} package contains shared libraries needed for cluster |
| nodes and those just running the CLI tools. |
| |
| %package -n %{name}-cluster-libs |
| License: GPLv2+ and LGPLv2+ |
| Summary: Cluster Libraries used by Pacemaker |
| Group: System Environment/Daemons |
| Requires: %{pkgname_pcmk_libs}%{?_isa} = %{version}-%{release} |
| |
| %description -n %{name}-cluster-libs |
| Pacemaker is an advanced, scalable High-Availability cluster resource |
| manager for Corosync, CMAN and/or Linux-HA. |
| |
| The %{name}-cluster-libs package contains cluster-aware shared |
| libraries needed for nodes that will form part of the cluster nodes. |
| |
| %package remote |
| %if %{defined _unitdir} |
| License: GPLv2+ and LGPLv2+ |
| %else |
| # initscript is Revised BSD |
| License: GPLv2+ and LGPLv2+ and BSD |
| %endif |
| Summary: Pacemaker remote daemon for non-cluster nodes |
| Group: System Environment/Daemons |
| Requires: %{pkgname_pcmk_libs}%{?_isa} = %{version}-%{release} |
| Requires: %{name}-cli = %{version}-%{release} |
| Requires: resource-agents |
| # -remote can be fully independent of systemd |
| %{?systemd_ordering}%{!?systemd_ordering:%{?systemd_requires}} |
| |
| %description remote |
| Pacemaker is an advanced, scalable High-Availability cluster resource |
| manager for Corosync, CMAN and/or Linux-HA. |
| |
| The %{name}-remote package contains the Pacemaker Remote daemon |
| which is capable of extending pacemaker functionality to remote |
| nodes not running the full corosync/cluster stack. |
| |
| %package -n %{pkgname_pcmk_libs}-devel |
| License: GPLv2+ and LGPLv2+ |
| Summary: Pacemaker development package |
| Group: Development/Libraries |
| Requires: %{name}-cts = %{version}-%{release} |
| Requires: %{pkgname_pcmk_libs}%{?_isa} = %{version}-%{release} |
| Requires: %{name}-cluster-libs%{?_isa} = %{version}-%{release} |
| Requires: libuuid-devel%{?_isa} %{?pkgname_libtool_devel_arch} |
| Requires: libxml2-devel%{?_isa} libxslt-devel%{?_isa} |
| Requires: %{pkgname_bzip2_devel}%{?_isa} glib2-devel%{?_isa} |
| Requires: libqb-devel%{?_isa} |
| Requires: corosync-devel |
| |
| %description -n %{pkgname_pcmk_libs}-devel |
| Pacemaker is an advanced, scalable High-Availability cluster resource |
| manager for Corosync, CMAN and/or Linux-HA. |
| |
| The %{pkgname_pcmk_libs}-devel package contains headers and shared libraries |
| for developing tools for Pacemaker. |
| |
| # NOTE: can be noarch if lrmd_test is moved to another subpackage |
| %package cts |
| License: GPLv2+ and LGPLv2+ |
| Summary: Test framework for cluster-related technologies like Pacemaker |
| Group: System Environment/Daemons |
| Requires: python >= 2.6 |
| Requires: %{pkgname_pcmk_libs} = %{version}-%{release} |
| |
| # systemd python bindings are separate package in some distros |
| %if %{defined systemd_requires} |
| |
| %if 0%{?fedora} > 22 |
| Requires: python2-systemd |
| %else |
| %if 0%{?fedora} > 20 || 0%{?rhel} > 6 |
| Requires: systemd-python |
| %endif |
| %endif |
| |
| %endif |
| |
| %description cts |
| Test framework for cluster-related technologies like Pacemaker |
| |
| %package doc |
| License: CC-BY-SA-4.0 |
| Summary: Documentation for Pacemaker |
| Group: Documentation |
| |
| %description doc |
| Documentation for Pacemaker. |
| |
| Pacemaker is an advanced, scalable High-Availability cluster resource |
| manager for Corosync, CMAN and/or Linux-HA. |
| |
| %prep |
| %setup -q -n %{name}-%{archive_version} |
| |
| # Force the local time |
| # |
| # 'git' sets the file date to the date of the last commit. |
| # This can result in files having been created in the future |
| # when building on machines in timezones 'behind' the one the |
| # commit occurred in - which seriously confuses 'make' |
| find . -exec touch \{\} \; |
| |
| %build |
| |
| # Early versions of autotools (e.g. RHEL <= 5) do not support --docdir |
| export docdir=%{pcmk_docdir} |
| |
| export systemdsystemunitdir=%{?_unitdir}%{!?_unitdir:no} |
| |
| %if %{with hardening} |
| # prefer distro-provided hardening flags in case they are defined |
| # through _hardening_{c,ld}flags macros, configure script will |
| # use its own defaults otherwise; if such hardenings are completely |
| # undesired, rpmbuild using "--without hardening" |
| # (or "--define '_without_hardening 1'") |
| export CFLAGS_HARDENED_EXE="%{?_hardening_cflags}" |
| export CFLAGS_HARDENED_LIB="%{?_hardening_cflags}" |
| export LDFLAGS_HARDENED_EXE="%{?_hardening_ldflags}" |
| export LDFLAGS_HARDENED_LIB="%{?_hardening_ldflags}" |
| %endif |
| |
| ./autogen.sh |
| |
| %{configure} \ |
| %{?with_profiling: --with-profiling} \ |
| %{?with_coverage: --with-coverage} \ |
| %{!?with_cman: --without-cman} \ |
| %{!?with_snmp: --without-snmp} \ |
| %{!?with_esmtp: --without-esmtp} \ |
| --without-heartbeat \ |
| %{!?with_doc: --with-brand=} \ |
| %{!?with_hardening: --disable-hardening} \ |
| %{?gnutls_priorities: --with-gnutls-priorities="%{gnutls_priorities}"} \ |
| --with-initdir=%{_initrddir} \ |
| --with-runstatedir=%{_rundir} \ |
| --localstatedir=%{_var} \ |
| --with-version=%{version}-%{release} |
| |
| %if 0%{?suse_version} >= 1200 |
| # Fedora handles rpath removal automagically |
| sed -i 's|^hardcode_libdir_flag_spec=.*|hardcode_libdir_flag_spec=""|g' libtool |
| sed -i 's|^runpath_var=LD_RUN_PATH|runpath_var=DIE_RPATH_DIE|g' libtool |
| %endif |
| |
| make %{_smp_mflags} V=1 all |
| |
| %check |
| { pengine/regression.sh --run one-or-more-unrunnable-instances \ |
| && tools/regression.sh \ |
| && touch .CHECKED |
| } 2>&1 | sed 's/[fF]ail/faiil/g' # prevent false positives in rpmlint |
| [ -f .CHECKED ] && rm -f -- .CHECKED || false |
| |
| %install |
| rm -rf %{buildroot} |
| make DESTDIR=%{buildroot} docdir=%{pcmk_docdir} V=1 install |
| |
| mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig |
| install -m 644 mcp/pacemaker.sysconfig ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig/pacemaker |
| install -m 644 tools/crm_mon.sysconfig ${RPM_BUILD_ROOT}%{_sysconfdir}/sysconfig/crm_mon |
| |
| %if %{with upstart_job} |
| mkdir -p ${RPM_BUILD_ROOT}%{_sysconfdir}/init |
| install -m 644 mcp/pacemaker.upstart ${RPM_BUILD_ROOT}%{_sysconfdir}/init/pacemaker.conf |
| install -m 644 mcp/pacemaker.combined.upstart ${RPM_BUILD_ROOT}%{_sysconfdir}/init/pacemaker.combined.conf |
| install -m 644 tools/crm_mon.upstart ${RPM_BUILD_ROOT}%{_sysconfdir}/init/crm_mon.conf |
| %endif |
| |
| %if %{defined _unitdir} |
| mkdir -p ${RPM_BUILD_ROOT}%{_localstatedir}/lib/rpm-state/%{name} |
| %endif |
| |
| # Scripts that should be executable |
| chmod a+x %{buildroot}/%{_datadir}/pacemaker/tests/cts/CTSlab.py |
| |
| # These are not actually scripts |
| find %{buildroot} -name '*.xml' -type f -print0 | xargs -0 chmod a-x |
| |
| # Don't package static libs |
| find %{buildroot} -name '*.a' -type f -print0 | xargs -0 rm -f |
| find %{buildroot} -name '*.la' -type f -print0 | xargs -0 rm -f |
| |
| # For now, don't package the servicelog-related binaries built only for |
| # ppc64le when certain dependencies are installed. If they get more exercise by |
| # advanced users, we can reconsider. |
| rm -f %{buildroot}/%{_sbindir}/notifyServicelogEvent |
| rm -f %{buildroot}/%{_sbindir}/ipmiservicelogd |
| |
| # Do not package these either |
| rm -f %{buildroot}/%{_libdir}/service_crm.so |
| |
| # Don't ship init scripts for systemd based platforms |
| %if %{defined _unitdir} |
| rm -f %{buildroot}/%{_initrddir}/pacemaker |
| rm -f %{buildroot}/%{_initrddir}/pacemaker_remote |
| %endif |
| |
| # Don't ship fence_pcmk where it has no use |
| %if %{without cman} |
| rm -f %{buildroot}/%{_sbindir}/fence_pcmk |
| %endif |
| |
| %if %{with coverage} |
| GCOV_BASE=%{buildroot}/%{_var}/lib/pacemaker/gcov |
| mkdir -p $GCOV_BASE |
| find . -name '*.gcno' -type f | while read F ; do |
| D=`dirname $F` |
| mkdir -p ${GCOV_BASE}/$D |
| cp $F ${GCOV_BASE}/$D |
| done |
| %endif |
| |
| %clean |
| rm -rf %{buildroot} |
| |
| %post |
| %if %{defined _unitdir} |
| %systemd_post pacemaker.service |
| %else |
| /sbin/chkconfig --add pacemaker || : |
| %if %{with cman} && %{cman_native} |
| # make fence_pcmk in cluster.conf valid instantly otherwise tools like ccs may |
| # choke (until schema gets auto-regenerated on the next start of cluster), |
| # per the protocol shared with other packages contributing to cluster.rng |
| /usr/sbin/ccs_update_schema >/dev/null 2>&1 || : |
| %endif |
| %endif |
| |
| %preun |
| %if %{defined _unitdir} |
| %systemd_preun pacemaker.service |
| %else |
| /sbin/service pacemaker stop >/dev/null 2>&1 || : |
| if [ $1 -eq 0 ]; then |
| # Package removal, not upgrade |
| /sbin/chkconfig --del pacemaker || : |
| fi |
| %endif |
| |
| %postun |
| %if %{defined _unitdir} |
| %systemd_postun_with_restart pacemaker.service |
| %endif |
| |
| %pre remote |
| %if %{defined _unitdir} |
| # Stop the service before anything is touched, and remember to restart |
| # it as one of the last actions (compared to using systemd_postun_with_restart, |
| # this avoids suicide when sbd is in use) |
| systemctl --quiet is-active pacemaker_remote |
| if [ $? -eq 0 ] ; then |
| mkdir -p %{_localstatedir}/lib/rpm-state/%{name} |
| touch %{_localstatedir}/lib/rpm-state/%{name}/restart_pacemaker_remote |
| systemctl stop pacemaker_remote >/dev/null 2>&1 |
| else |
| rm -f %{_localstatedir}/lib/rpm-state/%{name}/restart_pacemaker_remote |
| fi |
| %endif |
| |
| %post remote |
| %if %{defined _unitdir} |
| %systemd_post pacemaker_remote.service |
| %else |
| /sbin/chkconfig --add pacemaker_remote || : |
| %endif |
| |
| %preun remote |
| %if %{defined _unitdir} |
| %systemd_preun pacemaker_remote.service |
| %else |
| /sbin/service pacemaker_remote stop >/dev/null 2>&1 || : |
| if [ $1 -eq 0 ]; then |
| # Package removal, not upgrade |
| /sbin/chkconfig --del pacemaker_remote || : |
| fi |
| %endif |
| |
| %postun remote |
| %if %{defined _unitdir} |
| # This next line is a no-op, because we stopped the service earlier, but |
| # we leave it here because it allows us to revert to the standard behavior |
| # in the future if desired |
| %systemd_postun_with_restart pacemaker_remote.service |
| # Explicitly take care of removing the flag-file(s) upon final removal |
| if [ $1 -eq 0 ] ; then |
| rm -f %{_localstatedir}/lib/rpm-state/%{name}/restart_pacemaker_remote |
| fi |
| %endif |
| |
| %posttrans remote |
| %if %{defined _unitdir} |
| if [ -e %{_localstatedir}/lib/rpm-state/%{name}/restart_pacemaker_remote ] ; then |
| systemctl start pacemaker_remote >/dev/null 2>&1 |
| rm -f %{_localstatedir}/lib/rpm-state/%{name}/restart_pacemaker_remote |
| fi |
| %endif |
| |
| %post cli |
| %if %{defined _unitdir} |
| %systemd_post crm_mon.service |
| %endif |
| |
| %preun cli |
| %if %{defined _unitdir} |
| %systemd_preun crm_mon.service |
| %endif |
| |
| %postun cli |
| %if %{defined _unitdir} |
| %systemd_postun_with_restart crm_mon.service |
| %endif |
| |
| %pre -n %{pkgname_pcmk_libs} |
| getent group %{gname} >/dev/null || groupadd -r %{gname} -g %{hacluster_id} |
| getent passwd %{uname} >/dev/null || useradd -r -g %{gname} -u %{hacluster_id} -s /sbin/nologin -c "cluster user" %{uname} |
| exit 0 |
| |
| %post -n %{pkgname_pcmk_libs} -p /sbin/ldconfig |
| |
| %postun -n %{pkgname_pcmk_libs} -p /sbin/ldconfig |
| |
| %post -n %{name}-cluster-libs -p /sbin/ldconfig |
| |
| %postun -n %{name}-cluster-libs -p /sbin/ldconfig |
| |
| %files |
| ########################################################### |
| %defattr(-,root,root) |
| |
| %config(noreplace) %{_sysconfdir}/sysconfig/pacemaker |
| %{_sbindir}/pacemakerd |
| |
| %if %{defined _unitdir} |
| %{_unitdir}/pacemaker.service |
| %else |
| %{_initrddir}/pacemaker |
| %endif |
| |
| %exclude %{_libexecdir}/pacemaker/lrmd_test |
| %exclude %{_sbindir}/pacemaker_remoted |
| %{_libexecdir}/pacemaker/* |
| |
| %{_sbindir}/crm_attribute |
| %{_sbindir}/crm_master |
| %{_sbindir}/crm_node |
| %{_sbindir}/fence_legacy |
| %if %{with cman} |
| %{_sbindir}/fence_pcmk |
| %endif |
| %{_sbindir}/stonith_admin |
| |
| %doc %{_mandir}/man7/crmd.* |
| %doc %{_mandir}/man7/pengine.* |
| %doc %{_mandir}/man7/stonithd.* |
| %if %{without cman} || !%{cman_native} |
| %doc %{_mandir}/man7/ocf_pacemaker_controld.* |
| %endif |
| %doc %{_mandir}/man7/ocf_pacemaker_o2cb.* |
| %doc %{_mandir}/man7/ocf_pacemaker_remote.* |
| %doc %{_mandir}/man8/crm_attribute.* |
| %doc %{_mandir}/man8/crm_node.* |
| %doc %{_mandir}/man8/crm_master.* |
| %if %{with cman} |
| %doc %{_mandir}/man8/fence_pcmk.* |
| %endif |
| %doc %{_mandir}/man8/fence_legacy.* |
| %doc %{_mandir}/man8/pacemakerd.* |
| %doc %{_mandir}/man8/stonith_admin.* |
| |
| %doc %{_datadir}/pacemaker/alerts |
| |
| %license licenses/GPLv2 |
| %doc COPYING |
| %doc ChangeLog |
| |
| %dir %attr (750, %{uname}, %{gname}) %{_var}/lib/pacemaker/cib |
| %dir %attr (750, %{uname}, %{gname}) %{_var}/lib/pacemaker/pengine |
| %if %{without cman} || !%{cman_native} |
| /usr/lib/ocf/resource.d/pacemaker/controld |
| %endif |
| /usr/lib/ocf/resource.d/pacemaker/o2cb |
| /usr/lib/ocf/resource.d/pacemaker/remote |
| /usr/lib/ocf/resource.d/.isolation |
| |
| %if "%{?cs_version}" != "UNKNOWN" |
| %if 0%{?cs_version} < 2 |
| %{_libexecdir}/lcrso/pacemaker.lcrso |
| %endif |
| %endif |
| |
| %if %{with upstart_job} |
| %config(noreplace) %{_sysconfdir}/init/pacemaker.conf |
| %config(noreplace) %{_sysconfdir}/init/pacemaker.combined.conf |
| %endif |
| |
| %files cli |
| %defattr(-,root,root) |
| |
| %config(noreplace) %{_sysconfdir}/logrotate.d/pacemaker |
| %config(noreplace) %{_sysconfdir}/sysconfig/crm_mon |
| |
| %if %{defined _unitdir} |
| %{_unitdir}/crm_mon.service |
| %endif |
| |
| %if %{with upstart_job} |
| %config(noreplace) %{_sysconfdir}/init/crm_mon.conf |
| %endif |
| |
| %{_sbindir}/attrd_updater |
| %{_sbindir}/cibadmin |
| %{_sbindir}/crm_diff |
| %{_sbindir}/crm_error |
| %{_sbindir}/crm_failcount |
| %{_sbindir}/crm_mon |
| %{_sbindir}/crm_resource |
| %{_sbindir}/crm_standby |
| %{_sbindir}/crm_verify |
| %{_sbindir}/crmadmin |
| %{_sbindir}/iso8601 |
| %{_sbindir}/crm_shadow |
| %{_sbindir}/crm_simulate |
| %{_sbindir}/crm_report |
| %{_sbindir}/crm_ticket |
| %exclude %{_datadir}/pacemaker/alerts |
| %exclude %{_datadir}/pacemaker/tests |
| %{_datadir}/pacemaker |
| %{_datadir}/snmp/mibs/PCMK-MIB.txt |
| |
| %exclude /usr/lib/ocf/resource.d/pacemaker/controld |
| %exclude /usr/lib/ocf/resource.d/pacemaker/o2cb |
| %exclude /usr/lib/ocf/resource.d/pacemaker/remote |
| |
| %dir /usr/lib/ocf |
| %dir /usr/lib/ocf/resource.d |
| /usr/lib/ocf/resource.d/pacemaker |
| |
| %doc %{_mandir}/man7/* |
| %exclude %{_mandir}/man7/crmd.* |
| %exclude %{_mandir}/man7/pengine.* |
| %exclude %{_mandir}/man7/stonithd.* |
| %exclude %{_mandir}/man7/ocf_pacemaker_controld.* |
| %exclude %{_mandir}/man7/ocf_pacemaker_o2cb.* |
| %exclude %{_mandir}/man7/ocf_pacemaker_remote.* |
| %doc %{_mandir}/man8/* |
| %exclude %{_mandir}/man8/crm_attribute.* |
| %exclude %{_mandir}/man8/crm_node.* |
| %exclude %{_mandir}/man8/crm_master.* |
| %exclude %{_mandir}/man8/fence_pcmk.* |
| %exclude %{_mandir}/man8/fence_legacy.* |
| %exclude %{_mandir}/man8/pacemakerd.* |
| %exclude %{_mandir}/man8/pacemaker_remoted.* |
| %exclude %{_mandir}/man8/stonith_admin.* |
| |
| %license licenses/GPLv2 |
| %doc COPYING |
| %doc ChangeLog |
| |
| %dir %attr (750, %{uname}, %{gname}) %{_var}/lib/pacemaker |
| %dir %attr (750, %{uname}, %{gname}) %{_var}/lib/pacemaker/blackbox |
| %dir %attr (750, %{uname}, %{gname}) %{_var}/lib/pacemaker/cores |
| |
| %files -n %{pkgname_pcmk_libs} |
| %defattr(-,root,root) |
| |
| %{_libdir}/libcib.so.* |
| %{_libdir}/liblrmd.so.* |
| %{_libdir}/libcrmservice.so.* |
| %{_libdir}/libcrmcommon.so.* |
| %{_libdir}/libpe_status.so.* |
| %{_libdir}/libpe_rules.so.* |
| %{_libdir}/libpengine.so.* |
| %{_libdir}/libstonithd.so.* |
| %{_libdir}/libtransitioner.so.* |
| %license licenses/LGPLv2.1 |
| %doc COPYING |
| %doc ChangeLog |
| |
| %files -n %{name}-cluster-libs |
| %defattr(-,root,root) |
| %{_libdir}/libcrmcluster.so.* |
| %license licenses/LGPLv2.1 |
| %doc COPYING |
| %doc ChangeLog |
| |
| %files remote |
| %defattr(-,root,root) |
| |
| %config(noreplace) %{_sysconfdir}/sysconfig/pacemaker |
| %if %{defined _unitdir} |
| # state directory is shared between the subpackets |
| # let rpm take care of removing it once it isn't |
| # referenced anymore and empty |
| %ghost %dir %{_localstatedir}/lib/rpm-state/%{name} |
| %{_unitdir}/pacemaker_remote.service |
| %else |
| %{_initrddir}/pacemaker_remote |
| %endif |
| |
| %{_sbindir}/pacemaker_remoted |
| %{_mandir}/man8/pacemaker_remoted.* |
| %license licenses/GPLv2 |
| %doc COPYING |
| %doc ChangeLog |
| |
| %files doc |
| %defattr(-,root,root) |
| %doc %{pcmk_docdir} |
| %license licenses/CC-BY-SA-4.0 |
| |
| %files cts |
| %defattr(-,root,root) |
| %{py_site}/cts |
| %{_datadir}/pacemaker/tests/cts |
| %{_libexecdir}/pacemaker/lrmd_test |
| %license licenses/GPLv2 |
| %doc COPYING |
| %doc ChangeLog |
| |
| %files -n %{pkgname_pcmk_libs}-devel |
| %defattr(-,root,root) |
| %exclude %{_datadir}/pacemaker/tests/cts |
| %{_datadir}/pacemaker/tests |
| %{_includedir}/pacemaker |
| %{_libdir}/*.so |
| %if %{with coverage} |
| %{_var}/lib/pacemaker/gcov |
| %endif |
| %{_libdir}/pkgconfig/*.pc |
| %license licenses/LGPLv2.1 |
| %doc COPYING |
| %doc ChangeLog |
| |
| %changelog |
| |
| * PACKAGE_DATE ClusterLabs <admin@clusterlabs.org> PACKAGE_VERSION-1 |
| - See included ChangeLog file for details |