diff options
author | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 06:48:59 +0000 |
---|---|---|
committer | Daniel Baumann <daniel.baumann@progress-linux.org> | 2024-04-17 06:48:59 +0000 |
commit | d835b2cae8abc71958b69362162e6a70c3d7ef63 (patch) | |
tree | 81052e3d2ce3e1bcda085f73d925e9d6257dec15 /crmsh.spec.in | |
parent | Initial commit. (diff) | |
download | crmsh-d835b2cae8abc71958b69362162e6a70c3d7ef63.tar.xz crmsh-d835b2cae8abc71958b69362162e6a70c3d7ef63.zip |
Adding upstream version 4.6.0.upstream/4.6.0upstream
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'crmsh.spec.in')
-rw-r--r-- | crmsh.spec.in | 289 |
1 files changed, 289 insertions, 0 deletions
diff --git a/crmsh.spec.in b/crmsh.spec.in new file mode 100644 index 0000000..141b143 --- /dev/null +++ b/crmsh.spec.in @@ -0,0 +1,289 @@ +# +# spec file for package crmsh +# +# Copyright (c) 2023 SUSE LLC +# +# 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 https://bugs.opensuse.org/ +# + + +%bcond_with regression_tests + +%global gname haclient +%global uname hacluster +%global crmsh_docdir %{_defaultdocdir}/%{name} + +%global upstream_version tip +%global upstream_prefix crmsh +%global crmsh_release 1 + +%if 0%{?fedora_version} || 0%{?centos_version} || 0%{?rhel_version} || 0%{?rhel} || 0%{?fedora} +%define pkg_group System Environment/Daemons +%else +%define pkg_group Productivity/Clustering/HA +%endif + +Name: crmsh +Summary: High Availability cluster command-line interface +License: GPL-2.0-or-later +Group: %{pkg_group} +Version: @VERSION@ +Release: 0 +URL: http://crmsh.github.io +Source0: %{name}-%{version}.tar.bz2 +Source1: %{name}.tmpfiles.d.conf + +BuildRoot: %{_tmppath}/%{name}-%{version}-build +%if 0%{?suse_version} +# Requiring pacemaker makes crmsh harder to build on other distributions, +# and is mostly a convenience feature. So only do it for SUSE. +Requires(pre): pacemaker +%endif +Requires: %{name}-scripts >= %{version}-%{release} +Requires: /usr/bin/which +Requires: python3 >= 3.4 +Requires: python3-PyYAML +Requires: python3-lxml +BuildRequires: python3-lxml +BuildRequires: python3-pip +BuildRequires: python3-wheel + +%if 0%{?suse_version} +# only require csync2 on SUSE since bootstrap +# only works for SUSE at the moment anyway +Requires: csync2 +%endif + +%if 0%{?suse_version} +# Suse splits this off into a separate package +Requires: python3-curses +Requires: python3-python-dateutil +BuildRequires: fdupes +BuildRequires: python3-curses +%else +Requires: python3-dateutil +BuildRequires: pyproject-rpm-macros +BuildRequires: python3-devel +BuildRequires: python3-setuptools +%endif + +# Required for core functionality +BuildRequires: asciidoc +BuildRequires: autoconf +BuildRequires: automake +BuildRequires: pkgconfig +BuildRequires: python3 + +%if 0%{?suse_version} +# xsltproc is necessary for manpage generation; this is split out into +# libxslt-tools as of openSUSE 12.2. Possibly strictly should be +# required by asciidoc +BuildRequires: libxslt-tools +%endif + +%if 0%{?suse_version} || 0%{?fedora_version} || 0%{?centos_version} || 0%{?rhel_version} || 0%{?rhel} || 0%{?fedora} +BuildArch: noarch +%endif + +%description +The crm shell is a command-line interface for High-Availability +cluster management on GNU/Linux systems. It simplifies the +configuration, management and troubleshooting of Pacemaker-based +clusters, by providing a powerful and intuitive set of features. + +%package test +Summary: Test package for crmsh +Group: %{pkg_group} +Requires: crmsh +%if %{with regression_tests} +Requires(post): mailx +Requires(post): procps +%if 0%{?suse_version} +Requires(post): python3-python-dateutil +%else +Requires(post): python3-dateutil +%endif +Requires(post): python3-tox +Requires(post): pacemaker +BuildArch: noarch +%if 0%{?suse_version} +Requires(post): libglue-devel +%else +Requires(post): cluster-glue-libs-devel +%endif +Requires(post): python3-PyYAML +%endif + +%description test +The crm shell is a command-line interface for High-Availability +cluster management on GNU/Linux systems. It simplifies the +configuration, management and troubleshooting of Pacemaker-based +clusters, by providing a powerful and intuitive set of features. +This package contains the regression test suite for crmsh. + +%package scripts +Summary: Crm Shell Cluster Scripts +Group: Productivity/Clustering/HA + +%description scripts +Cluster scripts for crmsh. The cluster scripts can be run +directly from the crm command line, or used by user interfaces +like hawk to implement configuration wizards. + +%prep +%setup -q + +# replace the shebang in all the scripts +# with ${_bindir}/python3 +find . -type f -exec sed -i \ + -e "s|#!/usr/bin/python3?|#!%{__python3}|" \ + -e "s|#!/usr/bin/env python3?|#!%{__python3}|" \ + {} \; +sed -i -e '1{\@^#!%{_bindir}/python3@d}' crmsh/report/core.py + +# this is wrong FIXME +sed -i -e '/data_files/d' setup.py + +%build +./autogen.sh + +%{configure} \ + --sysconfdir=%{_sysconfdir} \ + --localstatedir=%{_var} \ + --with-version=%{version} \ + --docdir=%{crmsh_docdir} + +%if 0%{?suse_version} +%python3_pyproject_wheel +%else +%pyproject_buildrequires -t +%pyproject_wheel +%endif + +# Generate manpages +for manpg in doc/crm{,sh_crm_report}.8.adoc ; do + a2x -f manpage $manpg +done + +for docad in doc/crm{,sh_crm_report}.8.adoc ; do + asciidoc --unsafe --backend=xhtml11 $docad +done + +%if %{with regression_tests} +tox +if [ ! $? ]; then + echo "Unit tests failed." + exit 1 +fi +%endif + +%install +# make DESTDIR=%%{buildroot} docdir=%%{crmsh_docdir} install +%if 0%{?suse_version} +%python3_pyproject_install +%else +%pyproject_install +%endif + +# additional directories +install -d -m0770 %{buildroot}%{_localstatedir}/cache/crm +install -d -m0770 %{buildroot}%{_localstatedir}/log/crmsh +install -d -m0755 %{buildroot}%{_tmpfilesdir} + +# install configuration +install -Dm0644 -t %{buildroot}%{_sysconfdir}/crm etc/{crm.conf,profiles.yml} +install -m0644 %{SOURCE1} %{buildroot}%{_tmpfilesdir}/%{name}.conf + +# install manpages +install -Dpm0644 -t %{buildroot}%{_mandir}/man8 doc/*.8 +install -Dpm0644 -t %{buildroot}%{_datadir}/crmsh/ doc/crm.8.adoc + +# install data +for d in $(cat data-manifest); do + if [ -x $d ] ; then mode="0755" ; else mode="0644" ; fi + install -D -m $mode $d %{buildroot}%{_datadir}/crmsh/$d +done +mv %{buildroot}%{_datadir}/crmsh/test{,s} +install -p test/testcases/xmlonly.sh \ + %{buildroot}%{_datadir}/crmsh/tests/testcases/configbasic-xml.filter + +install -Dm0644 contrib/bash_completion.sh \ + %{buildroot}%{_datadir}/bash-completion/completions/crm + +if [ -f %{buildroot}%{_bindir}/crm ]; then + install -Dm0755 %{buildroot}%{_bindir}/crm %{buildroot}%{_sbindir}/crm + rm %{buildroot}%{_bindir}/crm +fi + +%if 0%{?suse_version} +%fdupes %{buildroot} +%endif + +%post +%tmpfiles_create %{_tmpfilesdir}/%{name}.conf + +%if %{with regression_tests} +# Run regression tests after installing the package +# NB: this is called twice by OBS, that's why we touch the file +%post test +testfile=`mktemp -t .crmsh_regression_tests_ran_XXXXXX` +# check if time in file is less than 2 minutes ago +if [ -e $testfile ] && [ "$(( $(date +%s) - $(cat $testfile) ))" -lt 120 ]; then + echo "Skipping regression tests..." + exit 0 +fi +# write current time to file +rm -f "$testfile" +echo "$(date +%s)" > "$testfile" +%{_datadir}/%{name}/tests/regression.sh +result1=$? +cd %{_datadir}/%{name}/tests +./cib-tests.sh +result2=$? +[ $result1 -ne 0 ] && (echo "Regression tests failed."; cat ${buildroot}/crmtestout/regression.out) +[ $result2 -ne 0 ] && echo "CIB tests failed." +[ $result1 -eq 0 -a $result2 -eq 0 ] +%endif + +%files +########################################################### +%defattr(-,root,root) + +%{_sbindir}/crm +%{python3_sitelib}/crmsh* + +%{_datadir}/%{name} +%exclude %{_datadir}/%{name}/tests +%exclude %{_datadir}/%{name}/scripts + +%{_tmpfilesdir}/%{name}.conf + +%doc doc/*.html +%doc COPYING AUTHORS ChangeLog README.md +%doc contrib/* +%{_mandir}/man8/* + +%config %{_sysconfdir}/crm + +%dir %attr (770, %{uname}, %{gname}) %{_var}/cache/crm +%dir %attr (770, %{uname}, %{gname}) %{_var}/log/crmsh +%{_datadir}/bash-completion/completions/crm + +%files scripts +%defattr(-,root,root) +%{_datadir}/%{name}/scripts + +%files test +%defattr(-,root,root) +%{_datadir}/%{name}/tests + +%changelog |