diff --git a/.fmf/version b/.fmf/version new file mode 100644 index 0000000..d00491f --- /dev/null +++ b/.fmf/version @@ -0,0 +1 @@ +1 diff --git a/booth.rpmlintrc b/booth.rpmlintrc new file mode 100644 index 0000000..a0a2c1c --- /dev/null +++ b/booth.rpmlintrc @@ -0,0 +1,27 @@ +# no-documentation is fine for booth-arbitrator and booth (virtual package) and debug packages +addFilter(r'booth-arbitrator\.[^:]+: W: no-documentation') +addFilter(r'booth\.[^:]+: W: no-documentation') +addFilter(r'booth-debugsource\.[^:]+: W: no-documentation') + +# permissions for chroot +addFilter(r'booth-core\.[^:]+: (E|W): non-standard-dir-perm /var/lib/booth 750') +addFilter(r'booth-core\.[^:]+: (E|W): non-standard-dir-perm /var/lib/booth/cores 750') + +# booth is just metapackage +addFilter(r'booth\.[^:]+: (W|E): no-binary') + +# pc should be in devel but it is not really devel file +addFilter(r'booth\.[^:]+: W: devel-file-in-non-devel-package /usr/share/pkgconfig/booth.pc') + +# booth-(site|test) installs just scripts in /usr/lib +addFilter(r'booth-(site|test)\.[^:]+: (W|E): only-non-binary-in-usr-lib') + +# dangling symlink is ok for geostore and boothd (they actually points to booth binary) +addFilter(r'booth-site\.[^:]+: (W|E): dangling-symlink /usr/sbin/geostore /usr/sbin/boothd') +addFilter(r'booth-test\.[^:]+: (W|E): dangling-symlink /usr/share/booth/tests/src/boothd /usr/sbin/boothd') + +# Ignore all errors in debuginfo packages +addFilter(r'booth-core-debuginfo\.[^:]+: (W|E):') + +# booth-arbitrator contains just unit files +addFilter(r'booth-arbitrator\.[^:]+: (W|E): only-non-binary-in-usr-lib') diff --git a/booth.spec b/booth.spec index 405d229..8a7166e 100644 --- a/booth.spec +++ b/booth.spec @@ -21,34 +21,17 @@ %bcond_with html_man %bcond_with glue +%bcond_with run_build_tests + +## User and group to use for nonprivileged services (should be in sync with pacemaker) +%global uname hacluster +%global gname haclient # Disable automatic compilation of Python files in extra directories %global _python_bytecompile_extra 0 -%global specver 4 -%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 5d837d2b5bf1c240a5f1c5efe4e8d79f55727cca -%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} @@ -56,12 +39,12 @@ %global test_path %{_datadir}/booth/tests Name: booth -Version: %{boothver} -Release: %{boothrel}%{dist} +Version: 1.2 +Release: 6%{?dist} Summary: Ticket Manager for Multi-site Clusters -License: GPLv2+ +License: GPL-2.0-or-later Url: https://github.com/%{github_owner}/%{name} -Source0: https://github.com/%{github_owner}/%{name}/archive/%{commit}/%{name}-%{shortcommit}.tar.gz +Source0: https://github.com/%{github_owner}/%{name}/releases/download/v%{version}/%{name}-%{version}.tar.gz # direct build process dependencies BuildRequires: autoconf @@ -75,7 +58,7 @@ BuildRequires: asciidoctor BuildRequires: gcc BuildRequires: pkgconfig # linking dependencies -BuildRequires: libgcrypt-devel +BuildRequires: gnutls-devel BuildRequires: libxml2-devel ## just for include BuildRequires: pacemaker-libs-devel @@ -90,11 +73,17 @@ BuildRequires: pkgconfig(libsystemd) # check scriptlet (for hostname and killall respectively) BuildRequires: hostname psmisc BuildRequires: python3-devel +# For generating tests +BuildRequires: sed # spec file specifics ## for _unitdir, systemd_requires and specific scriptlet macros BuildRequires: systemd ## for autosetup BuildRequires: git +%if 0%{?with_run_build_tests} +# check scriptlet (for perl and ss) +BuildRequires: perl-interpreter iproute +%endif # this is for a composite-requiring-its-components arranged # as an empty package (empty files section) requiring subpackages @@ -102,7 +91,9 @@ BuildRequires: git Requires: %{name}-core%{?_isa} Requires: %{name}-site %files -# intentionally empty +%license COPYING +%dir %{_datadir}/pkgconfig +%{_datadir}/pkgconfig/booth.pc %description Booth manages tickets which authorize cluster sites located @@ -136,13 +127,13 @@ Support for running Booth, ticket manager for multi-site clusters, as an arbitrator. %post arbitrator -%systemd_post booth@.service booth-arbitrator.service +%systemd_post booth-arbitrator.service %preun arbitrator -%systemd_preun booth@.service booth-arbitrator.service +%systemd_preun booth-arbitrator.service %postun arbitrator -%systemd_postun_with_restart booth@.service booth-arbitrator.service +%systemd_postun_with_restart booth-arbitrator.service %package site Summary: Booth support for running as a full-fledged site @@ -171,8 +162,9 @@ Requires: %{name}-arbitrator = %{version}-%{release} ## (and /usr/lib/ocf/resource.d/booth) Requires: %{name}-site = %{version}-%{release} Requires: gdb -Requires: python3 -Requires: python3-pexpect +Requires: %{__python3} +# runtests.py suite (for perl and ss) +Requires: perl-interpreter iproute %description test Automated tests for running Booth, ticket manager for multi-site clusters. @@ -180,7 +172,7 @@ Automated tests for running Booth, ticket manager for multi-site clusters. # BUILD # %prep -%autosetup -n %{name}-%{commit} -S git_am +%autosetup -n %{name}-%{version} -S git_am %build ./autogen.sh @@ -188,7 +180,7 @@ Automated tests for running Booth, ticket manager for multi-site clusters. --with-initddir=%{_initrddir} \ --docdir=%{_pkgdocdir} \ --enable-user-flags \ - %{!?with_html_man:--without-html_man} \ + %{?with_html_man:--with-html_man} \ %{!?with_glue:--without-glue} \ PYTHON=%{__python3} %{make_build} @@ -209,20 +201,35 @@ rm -rf %{buildroot}/%{_pkgdocdir}/README.upgrade-from-v0.1 rm -rf %{buildroot}/%{_pkgdocdir}/COPYING # tests mkdir -p %{buildroot}/%{test_path} +# Copy tests from tarball cp -a -t %{buildroot}/%{test_path} \ - -- conf test unit-tests script/unit-test.py + -- conf test 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 +# Generate runtests.py and boothtestenv.py +sed -e 's#PYTHON_SHEBANG#%{__python3} -Es#g' \ + -e 's#TEST_SRC_DIR#%{test_path}/test#g' \ + -e 's#TEST_BUILD_DIR#%{test_path}/test#g' \ + %{buildroot}/%{test_path}/test/runtests.py.in > %{buildroot}/%{test_path}/test/runtests.py + +chmod +x %{buildroot}/%{test_path}/test/runtests.py + +sed -e 's#PYTHON_SHEBANG#%{__python3} -Es#g' \ + -e 's#TEST_SRC_DIR#%{test_path}/test#g' \ + -e 's#TEST_BUILD_DIR#%{test_path}/test#g' \ + %{buildroot}/%{test_path}/test/boothtestenv.py.in > %{buildroot}/%{test_path}/test/boothtestenv.py # https://fedoraproject.org/wiki/Packaging:Python_Appendix#Manual_byte_compilation %py_byte_compile %{__python3} %{buildroot}/%{test_path} %check # alternatively: test/runtests.py +%if 0%{?with_run_build_tests} VERBOSE=1 make check +%endif %files core %license COPYING @@ -237,6 +244,15 @@ VERBOSE=1 make check %dir %{_sysconfdir}/booth %exclude %{_sysconfdir}/booth/booth.conf.example +%dir %attr (750, %{uname}, %{gname}) %{_var}/lib/booth/ +%dir %attr (750, %{uname}, %{gname}) %{_var}/lib/booth/cores + +# Generated html docs +%if 0%{?with_html_man} +%{_pkgdocdir}/booth-keygen.8.html +%{_pkgdocdir}/boothd.8.html +%endif + %files arbitrator %{_unitdir}/booth@.service %{_unitdir}/booth-arbitrator.service @@ -244,27 +260,167 @@ VERBOSE=1 make check %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 +%{_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 +%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 +# Generated html docs +%if 0%{?with_html_man} +%{_pkgdocdir}/geostore.8.html +%endif + %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 +%{_usr}/lib/ocf/resource.d/booth/sharedrsc %changelog +* Fri Sep 19 2025 Python Maint - 1.2-6 +- Rebuilt for Python 3.14.0rc3 bytecode + +* Thu Aug 21 2025 Cristian Le +- Convert STI tests to TMT (rhbz#2382867) + +* Fri Aug 15 2025 Python Maint - 1.2-5 +- Rebuilt for Python 3.14.0rc2 bytecode + +* Wed Jul 23 2025 Fedora Release Engineering - 1.2-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Thu Jan 16 2025 Fedora Release Engineering - 1.2-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Wed Jul 17 2024 Fedora Release Engineering - 1.2-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Fri Jun 07 2024 Jan Friesse - 1.2-1 +- New upstream release + +* Tue Jan 23 2024 Fedora Release Engineering - 1.1-3 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Fri Jan 19 2024 Fedora Release Engineering - 1.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Wed Oct 18 2023 Jan Friesse - 1.1-1 +- New upstream release +- Upstream releases should now be released regularly, so convert spec + to use them instead of git snapshots + +* Wed Jul 19 2023 Fedora Release Engineering - 1.0-283.4.9d4029a.git +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Tue Jun 06 2023 Jan Friesse - 1.0-283.3.9d4029a.git +- migrated to SPDX license + +* Wed Jan 18 2023 Fedora Release Engineering - 1.0-283.2.9d4029a.git +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Mon Nov 21 2022 Jan Friesse - 1.0-283.1.9d4029a.git +- Rebase to newest upstream snapshot + +* Fri Sep 30 2022 Jan Friesse - 1.0-272.1.7acb757.git +- Rebase to newest upstream snapshot + +* Thu Sep 29 2022 Jan Friesse - 1.0-266.4.f288d59.git +- Remove Alias directive from booth@.service unit file + +* Tue Aug 09 2022 Jan Friesse - 1.0-266.3.f288d59.git +- Remove template unit from systemd_(post|preun|postun_with_restart) macro + +* Wed Jul 20 2022 Fedora Release Engineering - 1.0-266.2.f288d59.git +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Wed Jul 20 2022 Jan Friesse - 1.0-266.1.f288d59.git +- Rebase to newest upstream snapshot +- This version fixes a critical bug that caused the authfile directive + to be ignored. After installing the patched version, nodes may stop + communicating. Solution is to either remove authfile from configuration + file or update all other nodes. + +* Thu May 19 2022 Jan Friesse - 1.0-262.1.d0ac26c.git +- Rebase to newest upstream snapshot + +* Wed Jan 19 2022 Fedora Release Engineering - 1.0-251.3.bfb2f92.git +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Wed Jul 21 2021 Fedora Release Engineering - 1.0-251.2.bfb2f92.git +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Thu May 20 2021 Jan Friesse - 1.0-251.1.bfb2f92.git +- Rebase to newest upstream snapshot + +* Tue May 18 2021 Jan Friesse - 1.0-249.1.977726e.git +- Do not include unit-test by default +- Rebase to newest upstream snapshot + +* Tue Mar 02 2021 Zbigniew Jędrzejewski-Szmek - 1.0-239.3.52ec255.git +- Rebuilt for updated systemd-rpm-macros + See https://pagure.io/fesco/issue/2583. + +* Tue Jan 26 2021 Fedora Release Engineering - 1.0-239.2.52ec255.git +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Mon Nov 23 2020 Jan Friesse - 1.0-239.1.52ec255.git +- Rebase to newest upstream snapshot + +* Thu Oct 15 2020 Jan Friesse - 1.0-237.2.dd88847.git +- Fix dist macro + +* Thu Oct 15 2020 Jan Friesse - 1.0-237.1.dd88847.git +- Rebase to newest upstream snapshot + +* Thu Oct 15 2020 Jan Friesse - 1.0-199.1.ac1d34c.git +- Implement new versioning scheme + +* Tue Sep 29 2020 Jan Friesse - 1.0-6.ac1d34c.git.5 +- Remove net-tools (netstat) dependency and replace it with iproute (ss) +- Disable running tests during build by default (conditional run_build_tests) + +* Mon Jul 27 2020 Fedora Release Engineering - 1.0-6.ac1d34c.git.4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Wed Jun 3 2020 Jan Friesse - 1.0-6.ac1d34c.git.3 +- Do not link with the pcmk libraries +- Generate runtests.py and boothtestenv.py with -Es as make check does + +* Tue Jun 2 2020 Jan Friesse - 1.0-6.ac1d34c.git.2 +- Require the Python interpreter directly instead of using the package name + +* Tue Jun 2 2020 Jan Friesse - 1.0-6.ac1d34c.git.1 +- Update to current snapshot (commit ac1d34c) to fix test suite + +* Mon Jun 1 2020 Jan Friesse - 1.0-5.385cc25.git.3 +- Add CI tests +- Enable gating +- Fix hardcoded-library-path + +* Mon Jun 1 2020 Jan Friesse - 1.0-5.385cc25.git.2 +- Package /var/lib/booth where booth can chroot + +* Thu May 28 2020 Jan Friesse - 1.0-5.385cc25.git.1 +- Fix test subpackage generating + +* Wed May 27 2020 Jan Friesse - 1.0-5.385cc25.git +- Update to current snapshot (commit 385cc25) to fix build warnings + +* Wed May 13 2020 Jan Friesse - 1.0-4.5d837d2.git.2 +- Rebuild for the new libqb + +* Mon May 4 2020 Jan Friesse - 1.0-4.5d837d2.git.1 +- Add '?dist' macro to release field + * Mon May 4 2020 Jan Friesse - 1.0-4.5d837d2.git - Update to current snapshot (commit 5d837d2) to build with gcc10 - Pass full path of Python3 to configure diff --git a/gating.yaml b/gating.yaml new file mode 100644 index 0000000..f075ad7 --- /dev/null +++ b/gating.yaml @@ -0,0 +1,15 @@ +--- !Policy +product_versions: + - fedora-* +decision_context: bodhi_update_push_testing +subject_type: koji_build +rules: + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional} + +--- !Policy +product_versions: + - fedora-* +decision_context: bodhi_update_push_stable +subject_type: koji_build +rules: + - !PassingTestCaseRule {test_case_name: fedora-ci.koji-build.tier0.functional} diff --git a/plans.fmf b/plans.fmf new file mode 100644 index 0000000..eb36cda --- /dev/null +++ b/plans.fmf @@ -0,0 +1,13 @@ +summary: Run all tests +discover: + how: fmf +prepare: + - name: Disable installing everything from srpm + how: install + exclude: ".*" + - name: Install the main test package + how: install + package: + - booth-test +execute: + how: tmt diff --git a/sources b/sources index 5ca0e1e..67b588e 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (booth-5d837d2.tar.gz) = 3118dd43796415c603ad200247c7905ccb3bcb71cc705848f0762f3dfeb5dcb7d3b1a935d2cee70da81328f0555d7b776eda7587c4c755fc570496a7a1dd8c49 +SHA512 (booth-1.2.tar.gz) = b63217e561fd5e8ede1ba432ec6b4ef6efb73dc16a501814cf07b82f87a23c3f734ebf09c56a5d521668ee57ed02be48d257aabb1d2e3c4840f1219ef13d3fde diff --git a/tests/.gitignore b/tests/.gitignore new file mode 100644 index 0000000..e6c79fd --- /dev/null +++ b/tests/.gitignore @@ -0,0 +1,3 @@ +# Ignore tests runs/artefacts. +artifacts/** +**/*.retry diff --git a/tests/main.fmf b/tests/main.fmf new file mode 100644 index 0000000..6e8835d --- /dev/null +++ b/tests/main.fmf @@ -0,0 +1,3 @@ +/upstream: + summary: Run upstream tests + test: ./upstream/runtest.sh diff --git a/tests/upstream/runtest.sh b/tests/upstream/runtest.sh new file mode 100755 index 0000000..0321369 --- /dev/null +++ b/tests/upstream/runtest.sh @@ -0,0 +1,6 @@ +#!/bin/bash + +set -xe +set -o pipefail + +/usr/share/booth/tests/test/runtests.py --allow-root-user