# disable collection_artifact by default %bcond_with collection_artifact # disable collection by default since version 3.6.0 (1.3.5) %bcond_with collection %if 0%{?fedora} || 0%{?rhel} > 8 %bcond_without html %else # pandoc is not supported in rhel 7 and older, # which is needed for converting .md to .html. %bcond_with html %endif %global collection_name sap_install %if 0%{?rhel} %define package_name rhel-system-roles-sap %global collection_namespace redhat %else %define package_name linux-system-roles-sap %global collection_namespace community %endif # collection_version has to be increased by every rebuild # otherwise, it cannot be uploaded to Automation Hub and Galaxy # due to version conflict %define collection_version 1.3.5 %global mainid e2a233f5a0cb68363798bf014b16552cca681bd0 %global commit_id_sap_install %{collection_version} %global rolename1 sap_general_preconfigure %global rolename2 sap_ha_install_hana_hsr %global rolename3 sap_hana_install %global rolename4 sap_hana_preconfigure %global rolename5 sap_ha_pacemaker_cluster %global rolename6 sap_hypervisor_node_preconfigure %global rolename7 sap_netweaver_preconfigure %global rolename8 sap_swpm %global rolename9 sap_vm_preconfigure %global src_owner linux-system-roles %global github_repo_sap_install redhat.sap_install %global rolename_rhel %{rolename1} %{rolename2} %{rolename3} %{rolename4} %{rolename5} %{rolename6} %{rolename7} %{rolename8} %{rolename9} %global rolenames %{rolename_rhel} Name: %{package_name} Summary: System Roles to configure RHEL for running SAP NetWeaver- or SAP HANA-based products Version: 3.6.0 Release: 5%{?dist} License: GPL-3.0-or-later Url: https://github.com/redhat-sap/community.sap_install Source0: https://github.com/linux-system-roles/auto-maintenance/archive/%{mainid}/auto-maintenance-%{mainid}.tar.gz Source1: https://github.com/redhat-sap/redhat.sap_install/archive/%{commit_id_sap_install}/%{github_repo_sap_install}-%{commit_id_sap_install}.tar.gz # add collection files Patch1: redhat.sap_install-1.3.5-collections-files-324bfb8bab50d2baa1c4aacdb59e4e5c9e2ba74f.patch # add tests files Patch2: redhat.sap_install-1.3.4-add_tests.patch # add tools files Patch3: redhat.sap_install-1.3.4-add_tools.patch BuildArch: noarch Requires: rhel-system-roles %if %{with html} # Requirements for md2html.sh to build the documentation %if 0%{?fedora} || 0%{?rhel} >= 9 BuildRequires: rubygem-kramdown-parser-gfm %else BuildRequires: pandoc BuildRequires: asciidoc BuildRequires: highlight %endif %endif # Requirements for galaxy_transform.py BuildRequires: python3-ruamel-yaml Requires: python3-jmespath Requires: python3-netaddr # NOTE: ansible-core is in rhel-8.6 and newer, but not installable # in buildroot as it depended on modular Python. # It has been installable at buildtime in 8.8 and newer. %if %{with collection} %if 0%{?rhel} >= 8 BuildRequires: ansible-core >= 2.11.0 Requires: (ansible-core >= 2.11.0 or ansible >= 2.9.0) %endif %endif %if %{undefined __ansible_provides} Provides: ansible-collection(%{collection_namespace}.%{collection_name}) = %{version} %endif # be compatible with the usual Fedora Provides: Provides: ansible-collection-%{collection_namespace}-%{collection_name} = %{version}-%{release} # ansible-galaxy is available by ansible-core on RHEL 8.6 and newer at buildtime. %define ansible_collection_build() ansible-galaxy collection build %define ansible_collection_install() ansible-galaxy collection install -n -p %{buildroot}%{_datadir}/ansible/collections %{collection_namespace}-%{collection_name}-%{collection_version}.tar.gz %if 0%{?fedora} || 0%{?rhel} >= 8 %{!?ansible_collection_files:%define ansible_collection_files %{_datadir}/ansible/collections/ansible_collections/%{collection_namespace}/} %else %if %{?ansible_collection_files:0}%{!?ansible_collection_files:1} %define ansible_collection_files %{_datadir}/ansible/collections/ansible_collections/%{collection_namespace}/ %endif %endif %description Collection of Ansible roles which configures a RHEL system according to applicable SAP notes so that any SAP software can be installed. %if %{with collection_artifact} %package collection-artifact Summary: Collection artifact to import to Automation Hub / Ansible Galaxy %description collection-artifact Collection artifact for %{name}. This package contains %{collection_namespace}-%{collection_name}-%{collection_version}.tar.gz %endif %prep %setup -q -a1 -n auto-maintenance-%{mainid} pushd %{github_repo_sap_install}-%{commit_id_sap_install}/ %patch -P1 -p1 %patch -P2 -p1 %patch -P3 -p1 # workaround for md2html error sed -i -e "s|for POWER ||g" roles/sap_hana_preconfigure/README.md popd # remove zero file and symlinks find . -type f -size 0 -delete find . -type l -delete # fix python and bash shebangs find -type f \( -iname "*.py" \) -exec sed -i '1s=^#! */usr/bin/\(python\|env python\)[23]\?=#!/usr/bin/python3=' {} + find -type f \( -iname "*.sh" \) -exec sed -i '1s=^#! */bin/bash=#!/usr/bin/bash=' {} + # remove json files, these are already present in the collection subdirectory rm -f FILES.json MANIFEST.json %build %if %{with html} readmes="" for role in %{rolenames}; do readmes="${readmes} %{github_repo_sap_install}-%{commit_id_sap_install}/roles/$role/README.md" done sh md2html.sh $readmes %{github_repo_sap_install}-%{commit_id_sap_install}/README.md %endif %if %{with collection} # create dest-path mkdir .collections for role in %{rolenames} ; do LANG=en_US.utf-8 LC_ALL=en_US.utf-8 python3 lsr_role2collection.py --role "$role" \ --src-path %{github_repo_sap_install}-%{commit_id_sap_install}/roles/"$role" \ --src-owner %{src_owner} \ --dest-path .collections \ --namespace %{collection_namespace} \ --collection %{collection_name} \ --new-role "$new_role" done cp -p galaxy.yml .collections/ansible_collections/%{collection_namespace}/%{collection_name} # update README.md cp %{github_repo_sap_install}-%{commit_id_sap_install}/README.md .collections/ansible_collections/%{collection_namespace}/%{collection_name} # Build the collection pushd .collections/ansible_collections/%{collection_namespace}/%{collection_name}/ %ansible_collection_build popd %endif %install mkdir -p $RPM_BUILD_ROOT%{_datadir}/ansible/roles \ $RPM_BUILD_ROOT%{_pkgdocdir} # create file selection for documents echo "%dir %{_pkgdocdir}" > files_section.txt cp %{github_repo_sap_install}-%{commit_id_sap_install}/README.md $RPM_BUILD_ROOT%{_pkgdocdir}/ %if %{with html} cp %{github_repo_sap_install}-%{commit_id_sap_install}/README.html $RPM_BUILD_ROOT%{_pkgdocdir}/ %endif echo "%{_pkgdocdir}/README.*" >> files_section.txt for role in %{rolenames} ; do mkdir -p $RPM_BUILD_ROOT%{_pkgdocdir}/$role cp -pR %{github_repo_sap_install}-%{commit_id_sap_install}/roles/$role $RPM_BUILD_ROOT%{_datadir}/ansible/roles/ install -m 644 %{github_repo_sap_install}-%{commit_id_sap_install}/LICENSE \ %{github_repo_sap_install}-%{commit_id_sap_install}/roles/$role/README.md \ $RPM_BUILD_ROOT%{_pkgdocdir}/$role/ %if %{with html} install -m 644 %{github_repo_sap_install}-%{commit_id_sap_install}/roles/$role/README.html \ $RPM_BUILD_ROOT%{_pkgdocdir}/$role/ %endif echo "%dir %{_pkgdocdir}/$role" >> files_section.txt done # install collection files %if %{with collection} pushd .collections/ansible_collections/%{collection_namespace}/%{collection_name}/ %ansible_collection_install popd %else cp -pR %{github_repo_sap_install}-%{commit_id_sap_install}/collections $RPM_BUILD_ROOT%{_datadir}/ansible/ %endif # install collection_artifact %if %{with collection_artifact} # Copy collection artifact to /usr/share/ansible/collections/ for collection-artifact pushd .collections/ansible_collections/%{collection_namespace}/%{collection_name}/ mv %{collection_namespace}-%{collection_name}-%{collection_version}.tar.gz $RPM_BUILD_ROOT%{_datadir}/ansible/collections/ popd %endif %files -f files_section.txt %dir %{_datadir}/ansible %dir %{_datadir}/ansible/roles %doc %{_pkgdocdir}/*/README.md %license %{_pkgdocdir}/*/LICENSE %{_datadir}/ansible/roles/* %if %{with html} %{_pkgdocdir}/*/README.html %endif %if %{with collection} %{ansible_collection_files} %else %{_datadir}/ansible/collections %endif %if %{with collection_artifact} %files collection-artifact %{_datadir}/ansible/collections/%{collection_namespace}-%{collection_name}-%{collection_version}.tar.gz %endif %changelog * Thu May 02 2024 Than Ngo - 3.6.0-5 - Resolves: RHEL-33364, import and build for rhel-10-beta