diff --git a/.ansible-collection-microsoft-sql.metadata b/.ansible-collection-microsoft-sql.metadata index 713afc1..3656fde 100644 --- a/.ansible-collection-microsoft-sql.metadata +++ b/.ansible-collection-microsoft-sql.metadata @@ -1,2 +1,2 @@ -99df2e20aff7ec8c244218a45bbcd3d68b791311 SOURCES/auto-maintenance-cdc706f14614ef5e80bbce8db10beb369e889df9.tar.gz -efe869a482b93c0b0289621a82e1718ac55e4ed4 SOURCES/mssql-1.2.3.tar.gz +06bdf4fd47cd57661f657fa4f29ec3031198ba11 SOURCES/auto-maintenance-73800682a3293ef5ab5ed5880329ce792cd34bbf.tar.gz +43136931b6fa02984e7e0c30564f8202114ed2bd SOURCES/mssql-1.3.0.tar.gz diff --git a/.gitignore b/.gitignore index eaf2e25..486522e 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ -SOURCES/auto-maintenance-cdc706f14614ef5e80bbce8db10beb369e889df9.tar.gz -SOURCES/mssql-1.2.3.tar.gz +SOURCES/auto-maintenance-73800682a3293ef5ab5ed5880329ce792cd34bbf.tar.gz +SOURCES/mssql-1.3.0.tar.gz diff --git a/SPECS/ansible-collection-microsoft-sql.spec b/SPECS/ansible-collection-microsoft-sql.spec index 660334a..5f12631 100644 --- a/SPECS/ansible-collection-microsoft-sql.spec +++ b/SPECS/ansible-collection-microsoft-sql.spec @@ -3,19 +3,18 @@ # ansible-core as a build_dep on RHEL8 %if 0%{?fedora} || 0%{?rhel} >= 9 %bcond_without ansible -%global ansible_build_dep ansible-core >= 2.11.0 -%else -%if 0%{?rhel} && ! 0%{?epel} -%bcond_with ansible +%if 0%{?fedora} +BuildRequires: ansible-packaging %else -%bcond_without ansible -%global ansible_build_dep ansible >= 2.9.10 +BuildRequires: ansible-core >= 2.11.0 %endif +%else +%bcond_with ansible %endif %bcond_with collection_artifact -# Do not convert .md to .html on RHEL 7 because tools the conversion are not available +# Do not convert .md to .html on RHEL 7 because pandoc is not available %if 0%{?fedora} || 0%{?rhel} >= 8 %bcond_without html %else @@ -25,33 +24,39 @@ Name: ansible-collection-microsoft-sql Url: https://github.com/linux-system-roles/mssql Summary: The Ansible collection for Microsoft SQL Server management -Version: 1.2.3 -Release: 1%{?dist} +Version: 1.3.0 +Release: 3%{?dist} -#Group: Development/Libraries License: MIT -%global installbase %{_datadir}/microsoft -%global _pkglicensedir %{_licensedir}/%{name} +%global rolename mssql %global collection_namespace microsoft %global collection_name sql - +%global collection_rolename server %global collection_version %{version} +%global legacy_rolename %{collection_namespace}.sql-server +%global _pkglicensedir %{_licensedir}/%{name} # Helper macros originally from macros.ansible by Igor Raits -# Not available on RHEL, so we must define those macros locally here without using ansible-galaxy - +# On RHEL, not available, so we must define those macros locally +# On Fedora, provided by ansible-packager # Not used (yet). Could be made to point to AH in RHEL - but what about CentOS Stream? #%%{!?ansible_collection_url:%%define ansible_collection_url() https://galaxy.ansible.com/%%{collection_namespace}/%%{collection_name}} - -%if 0%{?fedora} || 0%{?rhel} >= 8 -%{!?ansible_collection_files:%define ansible_collection_files %{_datadir}/ansible/collections/ansible_collections/%{collection_namespace}/} +%if 0%{?rhel} +Provides: ansible-collection(%{collection_namespace}.%{collection_name}) = %{collection_version} +%global ansible_collection_files %{_datadir}/ansible/collections/ansible_collections/%{collection_namespace}/ +%define ansible_roles_dir %{_datadir}/ansible/roles +%if %{without ansible} +# Untar and copy everything instead of galaxy-installing the built artifact when ansible is not available +%define ansible_collection_build() tar -cf %{_tmppath}/%{collection_namespace}-%{collection_name}-%{version}.tar.gz . +%define ansible_collection_install() mkdir -p %{buildroot}%{ansible_collection_files}%{collection_name}; (cd %{buildroot}%{ansible_collection_files}%{collection_name}; tar -xf %{_tmppath}/%{collection_namespace}-%{collection_name}-%{version}.tar.gz) %else -# Define undefined macro using "!?ansible_collection_files:..." does not work for rhel-7 -%if %{?ansible_collection_files:0}%{!?ansible_collection_files:1} -%define ansible_collection_files %{_datadir}/ansible/collections/ansible_collections/%{collection_namespace}/ +%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}-%{version}.tar.gz %endif %endif +# be compatible with the usual Fedora Provides: +Provides: ansible-collection-%{collection_namespace}-%{collection_name} = %{collection_version}-%{release} # ansible-core is in rhel 8.6 and later - default to ansible-core, but allow # the use of ansible if present - we may revisit this if the automatic dependency @@ -64,60 +69,19 @@ License: MIT Requires: (ansible-core >= 2.11.0 or ansible >= 2.9.0) %endif -%if 0%{?fedora} -Requires: linux-system-roles -%else +%if 0%{?rhel} Requires: rhel-system-roles -%endif - -%if %{with ansible} -BuildRequires: %{ansible_build_dep} -%endif - -%if %{without ansible} -# We don't have ansible-galaxy. -# Simply copy everything instead of galaxy-installing the built artifact. -%define ansible_collection_build_install() tar -cf %{_tmppath}/%{collection_namespace}-%{collection_name}-%{version}.tar.gz .; mkdir -p %{buildroot}%{ansible_collection_files}%{collection_name}; (cd %{buildroot}%{ansible_collection_files}%{collection_name}; tar -xf %{_tmppath}/%{collection_namespace}-%{collection_name}-%{version}.tar.gz) %else -%define ansible_collection_build_install() ansible-galaxy collection build; ansible-galaxy collection install -n -p %{buildroot}%{_datadir}/ansible/collections %{collection_namespace}-%{collection_name}-%{version}.tar.gz +Requires: linux-system-roles %endif -# For each role, call defsource() and the point to it with SourceN: %{archiveurlN}. -%global archiveext tar.gz -# list of source role names -%global rolenames %nil -# list of assignments that can be used to populate a bash associative array variable -%global rolestodir %nil -# list of target rolenames to copy the roles to -%global target_rolenames %nil -# list of collection rolenames to convert the roles to -%global collection_rolenames %nil - -%define getarchivedir() %(p=%{basename:%{S:%{1}}}; echo ${p%%.%{archiveext}}) - +%global mainid 73800682a3293ef5ab5ed5880329ce792cd34bbf +# Use either hash or tag for source1id +# %%global source1id 50edba099ab2c8b25b225fe760cb5a459b320030 +%global source1id %{version} %global parenturl https://github.com/linux-system-roles - -# You can feed either tag or commit to defsource -%define defsource() %{expand:%%global ref%{1} %{2} -%%global extractdir%{1} %%{expand:%%getarchivedir %{1}} -%%global archiveurl%{1} %%{parenturl}/%%{rolename%{1}}/archive/%%{ref%{1}}/%%{rolename%{1}}-%%{ref%{1}}.tar.gz -%%global rolenames %%{?rolenames} %%{rolename%{1}} -%%global roletodir%{1} [%{rolename%{1}}]="%{extractdir%{1}}" -%%global rolestodir %%{?rolestodir} %{roletodir%{1}} -%%{!?target_rolename%{1}:%%global target_rolename%{1} %%{rolename%{1}}} -%%global target_rolenames %%{?target_rolenames} [%{rolename%{1}}]="%{target_rolename%{1}}" -%%{!?collection_rolename%{1}:%%global collection_rolename%{1} %%{rolename%{1}}} -%%global collection_rolenames %%{?collection_rolenames} [%{rolename%{1}}]="%{collection_rolename%{1}}" -} - -%defsource 1 1.2.3 -%global rolename1 mssql -%global target_rolename1 sql-server -%global collection_rolename1 server - -%global mainid cdc706f14614ef5e80bbce8db10beb369e889df9 Source: %{parenturl}/auto-maintenance/archive/%{mainid}/auto-maintenance-%{mainid}.tar.gz -Source1: %{archiveurl1} +Source1: %{parenturl}/%{rolename}/archive/%{source1id}/%{rolename}-%{source1id}.tar.gz BuildArch: noarch @@ -134,200 +98,166 @@ BuildRequires: highlight # Requirements for galaxy_transform.py BuildRequires: python3 -%if 0%{?fedora} || 0%{?rhel} >= 8 -BuildRequires: %{py3_dist ruamel.yaml} -%else -BuildRequires: python3-ruamel-yaml -%endif - -%if %{undefined __ansible_provides} -Provides: ansible-collection(%{collection_namespace}.%{collection_name}) = %{collection_version} -%endif -# be compatible with the usual Fedora Provides: -Provides: ansible-collection-%{collection_namespace}-%{collection_name} = %{version}-%{release} +BuildRequires: python%{python3_pkgversion}-ruamel-yaml %description -This RPM installs the Ansible collection for Microsoft SQL Server management -microsoft.sql. This RPM also installs the roles provided by the collection in -the legacy roles format for users of Ansible < 2.9. +This RPM installs the %{collection_namespace}.%{collection_name} Ansible +collection that provides the %{collection_rolename} role for Microsoft SQL +Server management. This RPM also installs the %{legacy_rolename} role +in the legacy roles format for users of Ansible < 2.9. %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}-%{version}.tar.gz +Collection artifact for %{name}. This package contains +%{collection_namespace}-%{collection_name}-%{version}.tar.gz %endif +%pretrans -p +path = "%{ansible_roles_dir}/%{legacy_rolename}" +st = posix.stat(path) +if st and st.type == "link" then + os.remove(path) +end + %prep -%setup -q -a1 -n %{getarchivedir 0} - -# Declare the array containing names of directories to copy roles to for prep -declare -A ROLESTODIR=(%{rolestodir}) -for rolename in %{rolenames}; do - mv "${ROLESTODIR[${rolename}]}" ${rolename} -done - -# Removing symlinks in tests/roles -for rolename in %{rolenames}; do - if [ -d ${rolename}/tests/roles ]; then - find ${rolename}/tests/roles -type l -exec rm {} \; - if [ -d ${rolename}/tests/roles/linux-system-roles.${rolename} ]; then - rm -r ${rolename}/tests/roles/linux-system-roles.${rolename} - fi - fi -done +%setup -q -a1 -n auto-maintenance-%{mainid} -# transform ambiguous #!/usr/bin/env python shebangs to python3 to stop brp-mangle-shebangs complaining -find -type f -executable -name '*.py' -exec \ - sed -i -r -e '1s@^(#! */usr/bin/env python)(\s|$)@#\13\2@' '{}' + +mv %{rolename}-%{source1id} %{rolename} + +# Remove symlinks in tests/roles +if [ -d %{rolename}/tests/roles ]; then + find %{rolename}/tests/roles -type l -exec rm {} \; + if [ -d %{rolename}/tests/roles/linux-system-roles.%{rolename} ]; then + rm -r %{rolename}/tests/roles/linux-system-roles.%{rolename} + fi +fi %build %if %{with html} # Convert README.md to README.html in the source roles -readmes="" -for rolename in %{rolenames}; do - readmes="${readmes} $rolename/README.md" -done -sh md2html.sh $readmes +sh md2html.sh -t %{rolename}/README.md %endif mkdir .collections # Copy README.md for the collection build -cp %{rolename1}/.collection/README.md lsr_role2collection/collection_readme.md +cp %{rolename}/.collection/README.md lsr_role2collection/collection_readme.md # Copy galaxy.yml for the collection build -cp %{rolename1}/.collection/galaxy.yml ./ +cp %{rolename}/.collection/galaxy.yml ./ -# Ensure the correct entries in galaxy.yml %if 0%{?rhel} -./galaxy_transform.py "%{collection_namespace}" "%{collection_name}" "%{collection_version}" \ +# Ensure the correct entries in galaxy.yml +./galaxy_transform.py "%{collection_namespace}" "%{collection_name}" "%{version}" \ "Ansible collection for Microsoft SQL Server management" \ "https://github.com/linux-system-roles/mssql" \ "https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/administration_and_configuration_tasks_using_system_roles_in_rhel/assembly_configuring-microsoft-sql-server-using-microsoft-sql-server-ansible-role_assembly_updating-packages-to-enable-automation-for-the-rhel-system-roles" \ - "https://github.com/linux-system-roles/mssql/blob/master/README.md" \ + "https://github.com/linux-system-roles/mssql/blob/main/README.md" \ "https://bugzilla.redhat.com/enter_bug.cgi?product=Red%20Hat%20Enterprise%20Linux%208&component=ansible-collection-microsoft-sql" \ > galaxy.yml.tmp %else -./galaxy_transform.py "%{collection_namespace}" "%{collection_name}" "%{collection_version}" \ +./galaxy_transform.py "%{collection_namespace}" "%{collection_name}" "%{version}" \ "Ansible collection for Microsoft SQL Server management" \ > galaxy.yml.tmp %endif mv galaxy.yml.tmp galaxy.yml -# Declare the array containing collection rolenames to convert roles to -declare -A COLLECTION_ROLENAMES=(%{collection_rolenames}) - -# Replace fedora.linux_system_roles with redhat.rhel_system_roles %if 0%{?rhel} -for rolename in %{rolenames}; do - sed -i 's/fedora\.linux_system_roles/redhat.rhel_system_roles/g' \ - $rolename/CHANGELOG.md \ - $rolename/README.md \ - $rolename/tasks/*.yml \ - $rolename/tests/*.yml \ - $rolename/meta/*.yml -done +# Replace "fedora.linux_system_roles" with "redhat.rhel_system_roles" +# This is for the "roles calling other roles" case +find %{rolename} -type f -exec \ + sed -e "s/fedora[.]linux_system_roles[.]/redhat.rhel_system_roles./g" \ + -i {} \; %endif -# Convert roles to the collection format -for rolename in %{rolenames}; do - python3 lsr_role2collection.py --role "$rolename" \ - --src-path "$rolename" \ - --src-owner linux-system-roles \ - --dest-path .collections \ - --readme lsr_role2collection/collection_readme.md \ - --namespace %{collection_namespace} --collection %{collection_name} \ - --new-role "${COLLECTION_ROLENAMES[${rolename}]}" \ - --meta-runtime lsr_role2collection/runtime.yml -done +# Convert to the collection format +python3 lsr_role2collection.py --role "%{rolename}" \ + --src-path "%{rolename}" \ + --src-owner linux-system-roles \ + --dest-path .collections \ + --readme lsr_role2collection/collection_readme.md \ + --namespace %{collection_namespace} \ + --collection %{collection_name} \ + --new-role "%{collection_rolename}" \ + --meta-runtime lsr_role2collection/runtime.yml + +# Replace remnants of "linux-system-roles.mssql" with collection FQDN +find .collections/ansible_collections/%{collection_namespace}/%{collection_name}/ -type f -exec \ + sed -e "s/linux-system-roles[.]%{rolename}\\>/%{collection_namespace}.%{collection_name}.%{collection_rolename}/g" \ + -i {} \; # removing dot files/dirs rm -r .collections/ansible_collections/%{collection_namespace}/%{collection_name}/.[A-Za-z]* +rm -r .collections/ansible_collections/%{collection_namespace}/%{collection_name}/tests/%{collection_rolename}/.[A-Za-z]* # Copy galaxy.yml to the collection directory cp -p galaxy.yml .collections/ansible_collections/%{collection_namespace}/%{collection_name} -# Update CHANGELOG.md with the current date and copy it to collection dir -curr_date=$(date +'%Y-%m-%d') -sed -i "s/^\([%{version}] - \).*/\1$curr_date/g" \ - .collections/ansible_collections/%{collection_namespace}/%{collection_name}/roles/%{collection_rolename1}/CHANGELOG.md -mv .collections/ansible_collections/%{collection_namespace}/%{collection_name}/roles/%{collection_rolename1}/CHANGELOG.md \ +# Copy CHANGELOG.md from mssql to collection dir +mv .collections/ansible_collections/%{collection_namespace}/%{collection_name}/roles/%{collection_rolename}/CHANGELOG.md \ .collections/ansible_collections/%{collection_namespace}/%{collection_name}/ -%install -mkdir -p $RPM_BUILD_ROOT%{installbase} -mkdir -p $RPM_BUILD_ROOT%{_datadir}/ansible/roles - -# Declare the array containing target rolenames to copy roles to -declare -A TARGET_ROLENAMES=(%{target_rolenames}) +# Build collection +pushd .collections/ansible_collections/%{collection_namespace}/%{collection_name}/ +%ansible_collection_build +popd -# Copy roles to the target directory within the microsoft directory and rename -for rolename in %{rolenames}; do - cp -pR "$rolename" "$RPM_BUILD_ROOT%{installbase}/${TARGET_ROLENAMES[${rolename}]}" - sed -i "s/linux-system-roles\.$rolename/microsoft\.${TARGET_ROLENAMES[${rolename}]}/g" \ - $RPM_BUILD_ROOT%{installbase}/${TARGET_ROLENAMES[${rolename}]}/tests/*.yml -done +%install +mkdir -p %{buildroot}%{ansible_roles_dir} -# Generate symlinks for roles in /usr/share/ansible/roles -for rolename in %{rolenames}; do - ln -s "%{installbase}/${TARGET_ROLENAMES[${rolename}]}" "$RPM_BUILD_ROOT%{_datadir}/ansible/roles/microsoft.${TARGET_ROLENAMES[${rolename}]}" -done +# Copy role in legacy format and rename rolename in tests +cp -pR "%{rolename}" "%{buildroot}%{ansible_roles_dir}/%{legacy_rolename}" +find %{buildroot}%{ansible_roles_dir}/%{legacy_rolename} -type f -exec \ + sed -e "s/linux-system-roles\.%{rolename}/%{legacy_rolename}/g" \ + -i {} \; # Copy README, COPYING, and LICENSE files to the corresponding directories -mkdir -p $RPM_BUILD_ROOT%{_pkglicensedir} -for rolename in %{rolenames}; do - mkdir -p "$RPM_BUILD_ROOT%{_pkgdocdir}/${TARGET_ROLENAMES[${rolename}]}" - cp -p "$RPM_BUILD_ROOT%{installbase}/${TARGET_ROLENAMES[${rolename}]}/README.md" \ - "$RPM_BUILD_ROOT%{_pkgdocdir}/${TARGET_ROLENAMES[${rolename}]}" +mkdir -p %{buildroot}%{_pkglicensedir} +mkdir -p "%{buildroot}%{_pkgdocdir}/%{legacy_rolename}" +ln -sr "%{buildroot}%{ansible_roles_dir}/%{legacy_rolename}/README.md" \ + "%{buildroot}%{_pkgdocdir}/%{legacy_rolename}" %if %{with html} - cp -p "$RPM_BUILD_ROOT%{installbase}/${TARGET_ROLENAMES[${rolename}]}/README.html" \ - "$RPM_BUILD_ROOT%{_pkgdocdir}/${TARGET_ROLENAMES[${rolename}]}" +ln -sr "%{buildroot}%{ansible_roles_dir}/%{legacy_rolename}/README.html" \ + "%{buildroot}%{_pkgdocdir}/%{legacy_rolename}" %endif - if [ -f "$RPM_BUILD_ROOT%{installbase}/${TARGET_ROLENAMES[${rolename}]}/COPYING" ]; then - cp -p "$RPM_BUILD_ROOT%{installbase}/${TARGET_ROLENAMES[${rolename}]}/COPYING" \ - "$RPM_BUILD_ROOT%{_pkglicensedir}/${TARGET_ROLENAMES[${rolename}]}.COPYING" - fi - if [ -f "$RPM_BUILD_ROOT%{installbase}/${TARGET_ROLENAMES[${rolename}]}/LICENSE" ]; then - cp -p "$RPM_BUILD_ROOT%{installbase}/${TARGET_ROLENAMES[${rolename}]}/LICENSE" \ - "$RPM_BUILD_ROOT%{_pkglicensedir}/${TARGET_ROLENAMES[${rolename}]}.LICENSE" - fi -done +if [ -f "%{buildroot}%{ansible_roles_dir}/%{legacy_rolename}/COPYING" ]; then + ln -sr "%{buildroot}%{ansible_roles_dir}/%{legacy_rolename}/COPYING" \ + "%{buildroot}%{_pkglicensedir}/%{legacy_rolename}.COPYING" +fi +if [ -f "%{buildroot}%{ansible_roles_dir}/%{legacy_rolename}/LICENSE" ]; then + ln -sr "%{buildroot}%{ansible_roles_dir}/%{legacy_rolename}/LICENSE" \ + "%{buildroot}%{_pkglicensedir}/%{legacy_rolename}.LICENSE" +fi # Remove dot files -rm -r $RPM_BUILD_ROOT%{installbase}/*/.[A-Za-z]* +rm -r %{buildroot}%{ansible_roles_dir}/*/.[A-Za-z]* +rm -r %{buildroot}%{ansible_roles_dir}/%{legacy_rolename}/tests/.[A-Za-z]* # Remove the molecule directory -rm -r $RPM_BUILD_ROOT%{installbase}/*/molecule +rm -r %{buildroot}%{ansible_roles_dir}/*/molecule +# Install collection pushd .collections/ansible_collections/%{collection_namespace}/%{collection_name}/ -%ansible_collection_build_install +%ansible_collection_install popd -mkdir -p $RPM_BUILD_ROOT%{_pkgdocdir}/collection -mkdir -p $RPM_BUILD_ROOT%{_pkgdocdir}/collection/roles +mkdir -p %{buildroot}%{_pkgdocdir}/collection/roles # Copy the collection README files to the collection -cp -p %{buildroot}%{ansible_collection_files}%{collection_name}/README.md \ - $RPM_BUILD_ROOT%{_pkgdocdir}/collection - -# Declare the array containing collection rolenames to convert roles to -declare -A COLLECTION_ROLENAMES=(%{collection_rolenames}) - -for rolename in %{rolenames}; do - if [ -f "%{buildroot}%{ansible_collection_files}%{collection_name}/roles/${COLLECTION_ROLENAMES[${rolename}]}/README.md" ]; then - mkdir -p $RPM_BUILD_ROOT%{_pkgdocdir}/collection/roles/${COLLECTION_ROLENAMES[${rolename}]} - cp -p %{buildroot}%{ansible_collection_files}%{collection_name}/roles/${COLLECTION_ROLENAMES[${rolename}]}/README.md \ - $RPM_BUILD_ROOT%{_pkgdocdir}/collection/roles/${COLLECTION_ROLENAMES[${rolename}]} - fi -done +ln -sr %{buildroot}%{ansible_collection_files}%{collection_name}/README.md \ + %{buildroot}%{_pkgdocdir}/collection + +# Copy role's readme to /usr/share/doc/ +if [ -f "%{buildroot}%{ansible_collection_files}%{collection_name}/roles/%{collection_rolename}/README.md" ]; then + mkdir -p %{buildroot}%{_pkgdocdir}/collection/roles/%{collection_rolename} + ln -sr %{buildroot}%{ansible_collection_files}%{collection_name}/roles/%{collection_rolename}/README.md \ + %{buildroot}%{_pkgdocdir}/collection/roles/%{collection_rolename} +fi %if %{with html} -# converting README.md to README.html for collection in $RPM_BUILD_ROOT%{_pkgdocdir}/collection -readmes="$RPM_BUILD_ROOT%{_pkgdocdir}/collection/README.md" -for rolename in %{rolenames}; do - readmes="${readmes} $RPM_BUILD_ROOT%{_pkgdocdir}/collection/roles/${COLLECTION_ROLENAMES[${rolename}]}/README.md" -done -sh md2html.sh $readmes +# Convert README.md to README.html for collection in %%{buildroot}%%{_pkgdocdir}/collection +sh md2html.sh -t %{buildroot}%{_pkgdocdir}/collection/roles/%{collection_rolename}/README.md %endif %if %{with collection_artifact} @@ -335,19 +265,21 @@ sh md2html.sh $readmes pushd .collections/ansible_collections/%{collection_namespace}/%{collection_name}/ if [ -f %{collection_namespace}-%{collection_name}-%{version}.tar.gz ]; then mv %{collection_namespace}-%{collection_name}-%{version}.tar.gz \ - $RPM_BUILD_ROOT%{_datadir}/ansible/collections/ + %{buildroot}%{_datadir}/ansible/collections/ fi popd %endif -# generate the %files section in the file files_section.txt +# Generate the %%files section in files_section.txt +# Bulk files inclusion is not possible because roles store doc and licence +# files together with other files format_item_for_files() { # $1 is directory or file name in buildroot - # $2 - if true, and item is a directory, use %dir + # $2 - if true, and item is a directory, use %%dir local item local files_item - item="$1" - files_item=${item##"%{buildroot}"} + item="$1" # full path including buildroot + files_item=${item##"%{buildroot}"} # path with cut buildroot to be added to %%files if [ -L "$item" ]; then echo "$files_item" elif [ -d "$item" ]; then @@ -358,16 +290,16 @@ format_item_for_files() { else echo "$files_item" fi - elif [[ "$item" == */README.md ]] || [[ "$item" == */README.html ]]; then + elif [[ "$item" == */README.md ]] || [[ "$item" == */README.html ]] || [[ "$item" == */CHANGELOG.md ]]; then if [[ "$item" == */private_* ]]; then - # mark as regular file, not %doc + # mark as regular file, not %%doc echo "$files_item" else echo "%doc $files_item" fi - elif [[ "$item" != */COPYING* ]] && [[ "$item" != */LICENSE* ]]; then - # Avoid dynamically using the license macro since the license macro - # is replaced with the value of License directive in the older rpmbuild. + elif [[ "$item" == */COPYING* ]] || [[ "$item" == */LICENSE* ]]; then + echo "%""%""license" "$files_item" + else echo "$files_item" fi } @@ -375,15 +307,7 @@ format_item_for_files() { files_section=files_section.txt rm -f $files_section touch $files_section -%if %{without ansible} -echo '%dir %{_datadir}/ansible' >> $files_section -echo '%dir %{_datadir}/ansible/roles' >> $files_section -%endif -%if "%{installbase}" != "%{_datadir}/ansible/roles" -echo '%dir %{installbase}' >> $files_section -%endif -echo '%dir %{ansible_collection_files}' >> $files_section -echo '%dir %{ansible_collection_files}%{collection_name}' >> $files_section +# Dynamically generate files section entries for %%{ansible_collection_files} find %{buildroot}%{ansible_collection_files}%{collection_name} -mindepth 1 -maxdepth 1 | \ while read item; do if [[ "$item" == */roles ]]; then @@ -399,7 +323,8 @@ find %{buildroot}%{ansible_collection_files}%{collection_name} -mindepth 1 -maxd fi done -find %{buildroot}%{installbase} -mindepth 1 -maxdepth 1 | \ +# Dynamically generate files section entries for %%{ansible_roles_dir} +find %{buildroot}%{ansible_roles_dir} -mindepth 1 -maxdepth 1 | \ while read item; do if [ -d "$item" ]; then format_item_for_files "$item" true >> $files_section @@ -410,32 +335,14 @@ find %{buildroot}%{installbase} -mindepth 1 -maxdepth 1 | \ format_item_for_files "$item" >> $files_section fi done -if [ "%{installbase}" != "%{_datadir}/ansible/roles" ]; then - find %{buildroot}%{_datadir}/ansible/roles -mindepth 1 -maxdepth 1 | \ - while read item; do - if [ -d "$item" ]; then - format_item_for_files "$item" true >> $files_section - find "$item" -mindepth 1 -maxdepth 1 | while read roles_item; do - format_item_for_files "$roles_item" >> $files_section - done - else - format_item_for_files "$item" >> $files_section - fi - done -fi -# cat files_section.txt -# done with files_section.txt generation %files -f files_section.txt -%{_pkgdocdir}/*/README.md -%{_pkgdocdir}/collection/roles/*/README.md -%if %{with html} -%{_pkgdocdir}/*/README.html -%{_pkgdocdir}/collection/roles/*/README.html -%endif -%license %{_pkglicensedir}/* -%license %{installbase}/*/LICENSE* -%license %{ansible_collection_files}/%{collection_name}/LICENSE* +%dir %{_datadir}/ansible +%dir %{ansible_roles_dir} +%dir %{ansible_collection_files} +%dir %{ansible_collection_files}%{collection_name} +%doc %{_pkgdocdir} +%license %{_pkglicensedir} %if %{with collection_artifact} %files collection-artifact @@ -443,6 +350,64 @@ fi %endif %changelog +* Thu Feb 23 2023 Sergei Petrosian - 1.3.0-3 +- Spec: add functionality to build from a commit hash +- Use latest 1.3.0 to add flexibility to AD integration functionality + Resolves: rhbz#2163696 + +* Thu Feb 16 2023 Sergei Petrosian - 1.3.0-2 +- Replace fedora.linux_system_roles/redhat.rhel_system_roles and + linux-system-roles.mssql with microsoft.sql.server in the role. + Resolves: rhbz#2129106 +- Use latest 1.3.0 to fix ad_Integration issues + Resolves: rhbz#2163696 + +* Wed Feb 1 2023 Sergei Petrosian - 1.3.0-1 +- Keep spec consistent with linux-system-roles + - Return conditionals related to EL to keep up- and downstream consistent + - Add pretrans scriplet to remove symlinks if exist to fix issue with update + - Instead of copying doc and license files create symlinks + - Dynamically generate %%files section + - Add -t to md2html to generate TOC + Resolves: rhbz#2129106 +- On SQL Server Enterprise Edition, support configuring asynchronous replication + Resolves: rhbz#2144820 +- Support configuring a read-scale SQL server availability group (without pacemaker + Resolves: rhbz#2144821 +- Use the certificate role to create the cert and the key + Resolves: rhbz#2144852 +- Support SQL Server version 2022 + Resolves: rhbz#2153427 +- Support integrating with AD Server for authentication + Resolves: rhbz#2163696 + +* Thu Sep 22 2022 Sergei Petrosian - 1.2.4-2 +- Simplify spec file + - Do not install roles to /usr/share/microsoft and then create symlinks + to /usr/share/ansible/roles/, instead install directly to + /usr/share/ansible/roles/ + - Remove unused removal of ambiguous python shebangs + - Remove all loops because this RPM contains only one role + - Remove defsource - simply define the source for mssql + - 's|$RPM_BUILD_ROOT|%%{buildroot}|' for consistency + - Remove getarchivedir for simplicity + - Wrap description by 80 symbols and clarify it + - Remove tests/.fmf dir from the RPM + Resolves: rhbz#2129106 + +* Thu Sep 1 2022 Sergei Petrosian - 1.2.4-1 +- Replicate all provided databases + - This change fixes the bug where only the first database provided with +mssql_ha_db_names got replicated + - Clarify that the role does not remove not listed databases + Resolves: rhbz#2129869 +- Input multiple sql scripts + - Allow _input_sql_file vars to accept list of files + - Flush handlers prior to inputting post sql script + Resolves: rhbz#2129872 +- Note that ha_cluster is not idempotent +- SPEC: Do not update dates in CHANGELOG.md + * Thu Aug 25 2022 Sergei Petrosian - 1.2.3-1 - Use firewall role to configure firewall for SQL Server Resolves: rhbz#2120714