Compare commits

..

No commits in common. "c8-beta" and "imports/c8s/ansible-collection-microsoft-sql-1.2.0-3.el8" have entirely different histories.

4 changed files with 283 additions and 313 deletions

View File

@ -1,2 +1,2 @@
b0ee52fd3c4f8d57f2414bee6b1a944f9002b13f SOURCES/auto-maintenance-eadd06cfa98d244b096cff24cd11b668428b1613.tar.gz 8029565ef251244da3ab57291a9a886560c4c792 SOURCES/auto-maintenance-fe4fd028db23607414acce481388f23ac51cd944.tar.gz
e8478bb22d373f545bb92ed83791b83c95fc29f7 SOURCES/mssql-2.2.3.tar.gz 2538b3a5050c7eb05a446db5790f89d323d112f3 SOURCES/mssql-4eb3dd55defd801a5032efa597983cbbec4bbeea.tar.gz

4
.gitignore vendored
View File

@ -1,2 +1,2 @@
SOURCES/auto-maintenance-eadd06cfa98d244b096cff24cd11b668428b1613.tar.gz SOURCES/auto-maintenance-fe4fd028db23607414acce481388f23ac51cd944.tar.gz
SOURCES/mssql-2.2.3.tar.gz SOURCES/mssql-4eb3dd55defd801a5032efa597983cbbec4bbeea.tar.gz

View File

@ -1,21 +0,0 @@
# Helper macros originally from macros.ansible by Igor Raits <ignatenkobrain>
# This file is for maintaining the compatibility with macros and other
# functionality (generators) provided by ansible-packaging on Fedora.
Provides: ansible-collection(%{collection_namespace}.%{collection_name}) = %{collection_version}
# 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}-%{version}.tar.gz
%define ansible_roles_dir %{_datadir}/ansible/roles
%define ansible_collections_dir %{_datadir}/ansible/collections/ansible_collections
# TODO: Officially deprecate this macro and add the following line to the macro
# def after the new approach has gotten more testing and adoption:
# %%{warn: %%{ansible_collection_files} is deprecated. Use %%files -f %%{ansible_collection_filelist} instead.}
%define ansible_collection_files %{shrink:
%{ansible_collections_dir}/%{collection_namespace}/
}
%define ansible_collection_filelist %{__ansible_builddir}/ansible_collection_files

View File

@ -1,34 +1,57 @@
# NOTE: ansible-core is in rhel-8.6 and newer, but not installable # NOTE: Even though ansible-core is in 8.6, it is only available
# in buildroot as it depended on modular Python. # at *runtime*, not at *buildtime* - so we can't have
# It has been installable at buildtime in 8.8 and newer. # ansible-core as a build_dep on RHEL8
%if 0%{?fedora} %if 0%{?fedora} || 0%{?rhel} >= 9
BuildRequires: ansible-packaging %bcond_without ansible
%global ansible_build_dep ansible-core >= 2.11.0
%else %else
%if 0%{?rhel} >= 8 %if 0%{?rhel} && ! 0%{?epel}
BuildRequires: ansible-core >= 2.11.0 %bcond_with ansible
%else
%bcond_without ansible
%global ansible_build_dep ansible >= 2.9.10
%endif %endif
%endif %endif
%bcond_with collection_artifact %bcond_with collection_artifact
# Do not convert .md to .html on RHEL 7 because tools the conversion are not available
%if 0%{?fedora} || 0%{?rhel} >= 8
%bcond_without html
%else
%bcond_with html
%endif
Name: ansible-collection-microsoft-sql Name: ansible-collection-microsoft-sql
Url: https://github.com/linux-system-roles/mssql Url: https://github.com/linux-system-roles/mssql
Summary: The Ansible collection for Microsoft SQL Server management Summary: The Ansible collection for Microsoft SQL Server management
Version: 2.2.3 Version: 1.2.0
Release: 2%{?dist} Release: 3%{?dist}
#Group: Development/Libraries
License: MIT License: MIT
%global installbase %{_datadir}/microsoft
%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} %global _pkglicensedir %{_licensedir}/%{name}
# be compatible with the usual Fedora Provides: %global collection_namespace microsoft
Provides: ansible-collection-%{collection_namespace}-%{collection_name} = %{collection_version}-%{release} %global collection_name sql
%global collection_version %{version}
# Helper macros originally from macros.ansible by Igor Raits <ignatenkobrain>
# Not available on RHEL, so we must define those macros locally here without using ansible-galaxy
# 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}/}
%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}/
%endif
%endif
# ansible-core is in rhel 8.6 and later - default to ansible-core, but allow # 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 # the use of ansible if present - we may revisit this if the automatic dependency
@ -41,91 +64,148 @@ Provides: ansible-collection-%{collection_namespace}-%{collection_name} = %{coll
Requires: (ansible-core >= 2.11.0 or ansible >= 2.9.0) Requires: (ansible-core >= 2.11.0 or ansible >= 2.9.0)
%endif %endif
%if 0%{?rhel} %if 0%{?fedora}
Requires: rhel-system-roles
%else
Requires: linux-system-roles Requires: linux-system-roles
%else
Requires: rhel-system-roles
%endif %endif
%global mainid eadd06cfa98d244b096cff24cd11b668428b1613 %if %{with ansible}
# Use either hash or tag for source1id BuildRequires: %{ansible_build_dep}
# %%global source1id 50edba099ab2c8b25b225fe760cb5a459b320030 %endif
%global source1id %{version}
%global parenturl https://github.com/linux-system-roles
Source: %{parenturl}/auto-maintenance/archive/%{mainid}/auto-maintenance-%{mainid}.tar.gz
Source1: %{parenturl}/%{rolename}/archive/%{source1id}/%{rolename}-%{source1id}.tar.gz
# Includes with ansible_collection_build/_install that differ between RHEL versions %if %{without ansible}
Source1002: ansible-packaging.inc # We don't have ansible-galaxy.
%include %{SOURCE1002} # 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
%endif
# For each role, call defcommit() 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 parenturl https://github.com/linux-system-roles
%define defcommit() %{expand:%%global ref%{1} %{2}
%%global shortcommit%{1} %%(c=%%{ref%{1}}; echo ${c:0:7})
%%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}}"
}
%defcommit 1 4eb3dd55defd801a5032efa597983cbbec4bbeea
%global rolename1 mssql
%global target_rolename1 sql-server
%global collection_rolename1 server
%global mainid fe4fd028db23607414acce481388f23ac51cd944
Source: %{parenturl}/auto-maintenance/archive/%{mainid}/auto-maintenance-%{mainid}.tar.gz
Source1: %{archiveurl1}
BuildArch: noarch BuildArch: noarch
# there is no ansible on i686, so when we get a builder that uses
# this arch, the build fails with %if %{with html}
# No matching package to install: 'ansible-core >= 2.11.0' # Requirements for md2html.sh to build the documentation
# unfortunately, this causes the src rpm build tasks to be reported %if 0%{?fedora} || 0%{?rhel} >= 9
# with the arch of the builder :-( which causes problems with internal BuildRequires: rubygem-kramdown-parser-gfm
# test infrastructure - while we get those issues sorted out, revert %else
# this change - this means that centpkg builds may fail and may have BuildRequires: pandoc
# to be retried BuildRequires: asciidoc
# ExcludeArch: i686 BuildRequires: highlight
%endif
%endif
# Requirements for galaxy_transform.py # Requirements for galaxy_transform.py
BuildRequires: python3 BuildRequires: python3
BuildRequires: python%{python3_pkgversion}-ruamel-yaml %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}
%description %description
This RPM installs the %{collection_namespace}.%{collection_name} Ansible This RPM installs the Ansible collection for Microsoft SQL Server management
collection that provides the %{collection_rolename} role for Microsoft SQL microsoft.sql. This RPM also installs the roles provided by the collection in
Server management. This RPM also installs the %{legacy_rolename} role the legacy roles format for users of Ansible < 2.9.
in the legacy roles format for users of Ansible < 2.9.
%if %{with collection_artifact} %if %{with collection_artifact}
%package collection-artifact %package collection-artifact
Summary: Collection artifact to import to Automation Hub / Ansible Galaxy Summary: Collection artifact to import to Automation Hub / Ansible Galaxy
%description collection-artifact %description collection-artifact
Collection artifact for %{name}. This package contains Collection artifact for %{name}. This package contains %{collection_namespace}-%{collection_name}-%{version}.tar.gz
%{collection_namespace}-%{collection_name}-%{collection_version}.tar.gz
%endif %endif
%pretrans -p <lua>
path = "%{ansible_roles_dir}/%{legacy_rolename}"
st = posix.stat(path)
if st and st.type == "link" then
os.remove(path)
end
%prep %prep
%setup -q -a1 -n auto-maintenance-%{mainid} %setup -q -a1 -n %{getarchivedir 0}
mv %{rolename}-%{source1id} %{rolename} # 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
# Remove symlinks in tests/roles # Removing symlinks in tests/roles
if [ -d %{rolename}/tests/roles ]; then for rolename in %{rolenames}; do
find %{rolename}/tests/roles -type l -exec rm {} \; if [ -d ${rolename}/tests/roles ]; then
if [ -d %{rolename}/tests/roles/linux-system-roles.%{rolename} ]; then find ${rolename}/tests/roles -type l -exec rm {} \;
rm -r %{rolename}/tests/roles/linux-system-roles.%{rolename} if [ -d ${rolename}/tests/roles/linux-system-roles.${rolename} ]; then
rm -r ${rolename}/tests/roles/linux-system-roles.${rolename}
fi fi
fi fi
done
# 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@' '{}' +
%build %build
# Move a hidden .README.html to a not hidden README.html %if %{with html}
mv %{rolename}/.README.html %{rolename}/README.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
%endif
mkdir .collections mkdir .collections
# Copy README.md for the collection build
cp %{rolename1}/.collection/README.md lsr_role2collection/collection_readme.md
# Copy galaxy.yml for the collection build # Copy galaxy.yml for the collection build
cp %{rolename}/.collection/galaxy.yml ./ cp %{rolename1}/.collection/galaxy.yml ./
%if 0%{?rhel}
# Ensure the correct entries in galaxy.yml # Ensure the correct entries in galaxy.yml
%if 0%{?rhel}
./galaxy_transform.py "%{collection_namespace}" "%{collection_name}" "%{collection_version}" \ ./galaxy_transform.py "%{collection_namespace}" "%{collection_name}" "%{collection_version}" \
"Ansible collection for Microsoft SQL Server management" \ "Ansible collection for Microsoft SQL Server management" \
"https://github.com/linux-system-roles/mssql" \ "https://github.com/linux-system-roles/mssql" \
"https://access.redhat.com/documentation/en-us/red_hat_enterprise_linux/8/html/automating_system_administration_by_using_rhel_system_roles/assembly_configuring-microsoft-sql-server-using-microsoft-sql-server-ansible-role_automating-system-administration-by-using-rhel-system-roles" \ "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://access.redhat.com/articles/3050101" \ "https://github.com/linux-system-roles/mssql/blob/master/README.md" \
"https://issues.redhat.com/secure/CreateIssueDetails!init.jspa?pid=12332745&summary=Your%20request%20summary&issuetype=1&priority=10200&labels=Partner-Feature-Request&components=12377164" \ "https://bugzilla.redhat.com/enter_bug.cgi?product=Red%20Hat%20Enterprise%20Linux%208&component=ansible-collection-microsoft-sql" \
> galaxy.yml.tmp > galaxy.yml.tmp
%else %else
./galaxy_transform.py "%{collection_namespace}" "%{collection_name}" "%{collection_version}" \ ./galaxy_transform.py "%{collection_namespace}" "%{collection_name}" "%{collection_version}" \
@ -134,123 +214,129 @@ cp %{rolename}/.collection/galaxy.yml ./
%endif %endif
mv galaxy.yml.tmp galaxy.yml 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} %if 0%{?rhel}
# Replace "fedora.linux_system_roles" with "redhat.rhel_system_roles" for rolename in %{rolenames}; do
# This is for the "roles calling other roles" case sed -i 's/fedora\.linux_system_roles/redhat.rhel_system_roles/g' \
find . -type f -exec \ $rolename/tasks/*.yml $rolename/tests/*.yml $rolename/meta/*.yml
sed -e "s/fedora\.linux_system_roles/redhat.rhel_system_roles/g" \ done
-i {} \;
%endif %endif
# Convert to the collection format # Convert roles to the collection format
python3 lsr_role2collection.py --role "%{rolename}" \ for rolename in %{rolenames}; do
--src-path "%{rolename}" \ python3 lsr_role2collection.py --role "$rolename" \
--src-path "$rolename" \
--src-owner linux-system-roles \ --src-owner linux-system-roles \
--dest-path .collections \ --dest-path .collections \
--readme %{rolename}/.collection/README.md \ --readme lsr_role2collection/collection_readme.md \
--namespace %{collection_namespace} \ --namespace %{collection_namespace} --collection %{collection_name} \
--collection %{collection_name} \ --new-role "${COLLECTION_ROLENAMES[${rolename}]}" \
--new-role "%{collection_rolename}" \
--meta-runtime lsr_role2collection/runtime.yml --meta-runtime lsr_role2collection/runtime.yml
done
# 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 # 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}/.[A-Za-z]*
rm -r .collections/ansible_collections/%{collection_namespace}/%{collection_name}/tests/%{collection_rolename}/.[A-Za-z]*
# Copy CHANGELOG.md from collection role to parent collection dir
cp .collections/ansible_collections/%{collection_namespace}/%{collection_name}/roles/%{collection_rolename}/CHANGELOG.md \
.collections/ansible_collections/%{collection_namespace}/%{collection_name}
# Copy galaxy.yml to the collection directory # Copy galaxy.yml to the collection directory
cp -p galaxy.yml .collections/ansible_collections/%{collection_namespace}/%{collection_name} cp -p galaxy.yml .collections/ansible_collections/%{collection_namespace}/%{collection_name}
# Build collection
pushd .collections/ansible_collections/%{collection_namespace}/%{collection_name}/
%ansible_collection_build
popd
%install %install
mkdir -p %{buildroot}%{ansible_roles_dir} mkdir -p $RPM_BUILD_ROOT%{installbase}
mkdir -p $RPM_BUILD_ROOT%{_datadir}/ansible/roles
# Step 1: Install the role in legacy format # Declare the array containing target rolenames to copy roles to
# Copy role in legacy format and rename rolename in tests declare -A TARGET_ROLENAMES=(%{target_rolenames})
cp -pR "%{rolename}" "%{buildroot}%{ansible_roles_dir}/%{legacy_rolename}"
find %{buildroot}%{ansible_roles_dir}/%{legacy_rolename} -type f -exec \
sed -e "s/%{collection_namespace}\.%{collection_name}\.%{collection_rolename}/%{legacy_rolename}/g" \
-i {} \;
# Copy README, COPYING, CHANGELOG and LICENSE files to the corresponding directories # Copy roles to the target directory within the microsoft directory and rename
mkdir -p %{buildroot}%{_pkglicensedir} for rolename in %{rolenames}; do
mkdir -p "%{buildroot}%{_pkgdocdir}/%{legacy_rolename}" cp -pR "$rolename" "$RPM_BUILD_ROOT%{installbase}/${TARGET_ROLENAMES[${rolename}]}"
ln -sr "%{buildroot}%{ansible_roles_dir}/%{legacy_rolename}/README.md" \ sed -i "s/linux-system-roles\.$rolename/microsoft\.${TARGET_ROLENAMES[${rolename}]}/g" \
"%{buildroot}%{_pkgdocdir}/%{legacy_rolename}" $RPM_BUILD_ROOT%{installbase}/${TARGET_ROLENAMES[${rolename}]}/tests/*.yml
ln -sr "%{buildroot}%{ansible_roles_dir}/%{legacy_rolename}/README.html" \ done
"%{buildroot}%{_pkgdocdir}/%{legacy_rolename}"
ln -sr "%{buildroot}%{ansible_roles_dir}/%{legacy_rolename}/CHANGELOG.md" \ # Generate symlinks for roles in /usr/share/ansible/roles
"%{buildroot}%{_pkgdocdir}/%{legacy_rolename}" for rolename in %{rolenames}; do
if [ -f "%{buildroot}%{ansible_roles_dir}/%{legacy_rolename}/COPYING" ]; then ln -s "%{installbase}/${TARGET_ROLENAMES[${rolename}]}" "$RPM_BUILD_ROOT%{_datadir}/ansible/roles/microsoft.${TARGET_ROLENAMES[${rolename}]}"
ln -sr "%{buildroot}%{ansible_roles_dir}/%{legacy_rolename}/COPYING" \ done
"%{buildroot}%{_pkglicensedir}/%{legacy_rolename}.COPYING"
fi # Copy README, COPYING, and LICENSE files to the corresponding directories
if [ -f "%{buildroot}%{ansible_roles_dir}/%{legacy_rolename}/LICENSE" ]; then mkdir -p $RPM_BUILD_ROOT%{_pkglicensedir}
ln -sr "%{buildroot}%{ansible_roles_dir}/%{legacy_rolename}/LICENSE" \ for rolename in %{rolenames}; do
"%{buildroot}%{_pkglicensedir}/%{legacy_rolename}.LICENSE" mkdir -p "$RPM_BUILD_ROOT%{_pkgdocdir}/${TARGET_ROLENAMES[${rolename}]}"
fi cp -p "$RPM_BUILD_ROOT%{installbase}/${TARGET_ROLENAMES[${rolename}]}/README.md" \
"$RPM_BUILD_ROOT%{_pkgdocdir}/${TARGET_ROLENAMES[${rolename}]}"
%if %{with html}
cp -p "$RPM_BUILD_ROOT%{installbase}/${TARGET_ROLENAMES[${rolename}]}/README.html" \
"$RPM_BUILD_ROOT%{_pkgdocdir}/${TARGET_ROLENAMES[${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
# Remove dot files # Remove dot files
rm -r %{buildroot}%{ansible_roles_dir}/*/.[A-Za-z]* rm -r $RPM_BUILD_ROOT%{installbase}/*/.[A-Za-z]*
rm -r %{buildroot}%{ansible_roles_dir}/%{legacy_rolename}/tests/.[A-Za-z]*
# Step 2: Remove molecule directory from all roles under ansible_roles_dir # Remove the molecule directory
rm -r %{buildroot}%{ansible_roles_dir}/*/molecule rm -r $RPM_BUILD_ROOT%{installbase}/*/molecule
# Step 3: Install the role in collection format
pushd .collections/ansible_collections/%{collection_namespace}/%{collection_name}/ pushd .collections/ansible_collections/%{collection_namespace}/%{collection_name}/
%ansible_collection_install %ansible_collection_build_install
popd popd
mkdir -p %{buildroot}%{_pkgdocdir}/collection/roles mkdir -p $RPM_BUILD_ROOT%{_pkgdocdir}/collection
mkdir -p $RPM_BUILD_ROOT%{_pkgdocdir}/collection/roles
# Link collection README to /usr/share/doc/ansible-collection-microsoft-sql/collection. # Copy the collection README files to the collection
ln -sr %{buildroot}%{ansible_collection_files}%{collection_name}/README.md \ cp -p %{buildroot}%{ansible_collection_files}%{collection_name}/README.md \
%{buildroot}%{_pkgdocdir}/collection $RPM_BUILD_ROOT%{_pkgdocdir}/collection
# Link role READMEs to /usr/share/doc/ansible-collection-microsoft-sql/collection/roles/server # Declare the array containing collection rolenames to convert roles to
mkdir -p %{buildroot}%{_pkgdocdir}/collection/roles/%{collection_rolename} declare -A COLLECTION_ROLENAMES=(%{collection_rolenames})
ln -sr %{buildroot}%{ansible_collection_files}%{collection_name}/roles/%{collection_rolename}/README.md \
%{buildroot}%{_pkgdocdir}/collection/roles/%{collection_rolename}
ln -sr %{buildroot}%{ansible_collection_files}%{collection_name}/roles/%{collection_rolename}/README.html \
%{buildroot}%{_pkgdocdir}/collection/roles/%{collection_rolename}
# Link role CHANGELOG.md to /usr/share/doc/ansible-collection-microsoft-sql/collection/roles/server for rolename in %{rolenames}; do
ln -sr %{buildroot}%{ansible_collection_files}%{collection_name}/roles/%{collection_rolename}/CHANGELOG.md \ if [ -f "%{buildroot}%{ansible_collection_files}%{collection_name}/roles/${COLLECTION_ROLENAMES[${rolename}]}/README.md" ]; then
%{buildroot}%{_pkgdocdir}/collection/roles/%{collection_rolename} 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
%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
%endif
# Step 4: Copy collection artifact to /usr/share/ansible/collections/ for collection-artifact
%if %{with 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}/ pushd .collections/ansible_collections/%{collection_namespace}/%{collection_name}/
if [ -f %{collection_namespace}-%{collection_name}-%{collection_version}.tar.gz ]; then if [ -f %{collection_namespace}-%{collection_name}-%{version}.tar.gz ]; then
mv %{collection_namespace}-%{collection_name}-%{collection_version}.tar.gz \ mv %{collection_namespace}-%{collection_name}-%{version}.tar.gz \
%{buildroot}%{_datadir}/ansible/collections/ $RPM_BUILD_ROOT%{_datadir}/ansible/collections/
fi fi
popd popd
%endif %endif
# Step 5: Generate the %%files section in files_section.txt # generate the %files section in the file files_section.txt
# Bulk files inclusion is not possible because roles store doc and licence
# files together with other files
format_item_for_files() { format_item_for_files() {
# $1 is directory or file name in buildroot # $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 item
local files_item local files_item
item="$1" # full path including buildroot item="$1"
files_item=${item##"%{buildroot}"} # path with cut buildroot to be added to %%files files_item=${item##"%{buildroot}"}
if [ -L "$item" ]; then if [ -L "$item" ]; then
echo "$files_item" echo "$files_item"
elif [ -d "$item" ]; then elif [ -d "$item" ]; then
@ -261,16 +347,16 @@ format_item_for_files() {
else else
echo "$files_item" echo "$files_item"
fi fi
elif [[ "$item" == */README.md ]] || [[ "$item" == */README.html ]] || [[ "$item" == */CHANGELOG.md ]]; then elif [[ "$item" == */README.md ]] || [[ "$item" == */README.html ]]; then
if [[ "$item" == */private_* ]]; then if [[ "$item" == */private_* ]]; then
# mark as regular file, not %%doc # mark as regular file, not %doc
echo "$files_item" echo "$files_item"
else else
echo "%doc $files_item" echo "%doc $files_item"
fi fi
elif [[ "$item" == */COPYING* ]] || [[ "$item" == */LICENSE* ]]; then elif [[ "$item" != */COPYING* ]] && [[ "$item" != */LICENSE* ]]; then
echo "%""%""license" "$files_item" # Avoid dynamically using the license macro since the license macro
else # is replaced with the value of License directive in the older rpmbuild.
echo "$files_item" echo "$files_item"
fi fi
} }
@ -278,7 +364,15 @@ format_item_for_files() {
files_section=files_section.txt files_section=files_section.txt
rm -f $files_section rm -f $files_section
touch $files_section touch $files_section
# Dynamically generate files section entries for %%{ansible_collection_files} %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
find %{buildroot}%{ansible_collection_files}%{collection_name} -mindepth 1 -maxdepth 1 | \ find %{buildroot}%{ansible_collection_files}%{collection_name} -mindepth 1 -maxdepth 1 | \
while read item; do while read item; do
if [[ "$item" == */roles ]]; then if [[ "$item" == */roles ]]; then
@ -294,8 +388,7 @@ find %{buildroot}%{ansible_collection_files}%{collection_name} -mindepth 1 -maxd
fi fi
done done
# Dynamically generate files section entries for %%{ansible_roles_dir} find %{buildroot}%{installbase} -mindepth 1 -maxdepth 1 | \
find %{buildroot}%{ansible_roles_dir} -mindepth 1 -maxdepth 1 | \
while read item; do while read item; do
if [ -d "$item" ]; then if [ -d "$item" ]; then
format_item_for_files "$item" true >> $files_section format_item_for_files "$item" true >> $files_section
@ -306,141 +399,39 @@ find %{buildroot}%{ansible_roles_dir} -mindepth 1 -maxdepth 1 | \
format_item_for_files "$item" >> $files_section format_item_for_files "$item" >> $files_section
fi fi
done 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 %files -f files_section.txt
%dir %{_datadir}/ansible %{_pkgdocdir}/*/README.md
%dir %{ansible_roles_dir} %{_pkgdocdir}/collection/roles/*/README.md
%dir %{ansible_collection_files} %if %{with html}
%dir %{ansible_collection_files}%{collection_name} %{_pkgdocdir}/*/README.html
%doc %{_pkgdocdir} %{_pkgdocdir}/collection/roles/*/README.html
%license %{_pkglicensedir} %endif
%license %{_pkglicensedir}/*
%license %{installbase}/*/LICENSE*
%license %{ansible_collection_files}/%{collection_name}/LICENSE*
%if %{with collection_artifact} %if %{with collection_artifact}
%files collection-artifact %files collection-artifact
%{_datadir}/ansible/collections/%{collection_namespace}-%{collection_name}-%{collection_version}.tar.gz %{_datadir}/ansible/collections/%{collection_namespace}-%{collection_name}-%{version}.tar.gz
%endif %endif
%changelog %changelog
* Thu Feb 27 2024 Sergei Petrosian <spetrosi@redhat.com> - 2.2.3-2
- Revert ExcludeArch: i686 due to TFT-2460
Resolves: RHEL-17080
* Thu Feb 22 2024 Sergei Petrosian <spetrosi@redhat.com> - 2.2.3-1
- Add support for running SQL Server as a SELinux unconfined application with SELinux in enforcing mode on RHEL 9
Resolves: RHEL-17080
- ExcludeArch: i686
* Tue Feb 6 2024 Sergei Petrosian <spetrosi@redhat.com> - 2.2.2-1
- Update role to version 2.2.2 to fix HA
Resolves: RHEL-19202
- CHANGELOG.md was missing in some places
- In legacy role, sed repalced unexpected strings at some places
Resolves: RHEL-23456
* Wed Jan 31 2024 Sergei Petrosian <spetrosi@redhat.com> - 2.2.1-2
- Use latest auto-maintenance for updates in lsr_role2collection.py
- Remove with_html, instead use built-in .README.html
Resolves: RHEL-23456
* Mon Jan 29 2024 Sergei Petrosian <spetrosi@redhat.com> - 2.2.1-1
- Update role to version 2.2.1 to enhance running on EL 9
Resolves: RHEL-17080
* Mon Dec 11 2023 Sergei Petrosian <spetrosi@redhat.com> - 2.2.0-1
- Support installing SQL Server 2022 on RHEL 9 and running as a selinux-confined application
Resolves: RHEL-17080
- Remove unnecessary variable and RPM requirements for read-scale clusters
Resolves: RHEL-19202
- Add the mssql_ha_prep_for_pacemaker variable to configure SQL Server for Pacemaker
Resolves: RHEL-19204
- Deprecate `mssql_ha_cluster_run_role` for `mssql_manage_ha_cluster`
Resolves: RHEL-19203
* Thu Jul 27 2023 Sergei Petrosian <spetrosi@redhat.com> - 2.0.1-1
- Update role to version 2.0.1 to enhance AD integration
Resolves: RHEL-877
Resolves: RHEL-878
Resolves: RHEL-879
Resolves: RHEL-880
* Wed May 31 2023 Sergei Petrosian <spetrosi@redhat.com> - 1.4.1-1
- Update BuiildRequires to use ansible-core on RHEL > 8.8
- Move RHEL related code into an include for spec readability
- Update role to version 1.4.1 to add customizable storage paths
Resolves: RHEL-528
* Thu Feb 23 2023 Sergei Petrosian <spetrosi@redhat.com> - 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 <spetrosi@redhat.com> - 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 <spetrosi@redhat.com> - 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 <spetrosi@redhat.com> - 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 <spetrosi@redhat.com> - 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 <spetrosi@redhat.com> - 1.2.3-1
- Use firewall role to configure firewall for SQL Server
Resolves: rhbz#2120714
- Add mssql_ha_virtual_ip
Replace mssql_ha_db_name with mssql_ha_db_names to let users replicate multiple DBs
Resolves: rhbz#2066338
- Replace simple `mssql_input_sql_file` with `pre` and `post` variables
Resolves: rhbz#2120713
- Add Requires: linux-system-roles or rhel-system-roles
- Replace fedora.linux_system_roles:redhat.rhel_system_roles on RHEL
- Add downstream values to galaxy.yml
- Change defcommit to defsource that takes both tags and commits
- Update CHANGELOG.md with the current date and copy it to collection dir
* Mon Jul 4 2022 Sergei Petrosian <spetrosi@redhat.com> - 1.2.0-3 * Mon Jul 4 2022 Sergei Petrosian <spetrosi@redhat.com> - 1.2.0-3
- Update mssql commit - Update mssql commit
Resolves: rhbz#2066338 Resolves: rhbz#2066338