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
e8478bb22d373f545bb92ed83791b83c95fc29f7 SOURCES/mssql-2.2.3.tar.gz
8029565ef251244da3ab57291a9a886560c4c792 SOURCES/auto-maintenance-fe4fd028db23607414acce481388f23ac51cd944.tar.gz
2538b3a5050c7eb05a446db5790f89d323d112f3 SOURCES/mssql-4eb3dd55defd801a5032efa597983cbbec4bbeea.tar.gz

4
.gitignore vendored
View File

@ -1,2 +1,2 @@
SOURCES/auto-maintenance-eadd06cfa98d244b096cff24cd11b668428b1613.tar.gz
SOURCES/mssql-2.2.3.tar.gz
SOURCES/auto-maintenance-fe4fd028db23607414acce481388f23ac51cd944.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
# in buildroot as it depended on modular Python.
# It has been installable at buildtime in 8.8 and newer.
%if 0%{?fedora}
BuildRequires: ansible-packaging
# NOTE: Even though ansible-core is in 8.6, it is only available
# at *runtime*, not at *buildtime* - so we can't have
# 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} >= 8
BuildRequires: ansible-core >= 2.11.0
%if 0%{?rhel} && ! 0%{?epel}
%bcond_with ansible
%else
%bcond_without ansible
%global ansible_build_dep ansible >= 2.9.10
%endif
%endif
%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
Url: https://github.com/linux-system-roles/mssql
Summary: The Ansible collection for Microsoft SQL Server management
Version: 2.2.3
Release: 2%{?dist}
Version: 1.2.0
Release: 3%{?dist}
#Group: Development/Libraries
License: MIT
%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 installbase %{_datadir}/microsoft
%global _pkglicensedir %{_licensedir}/%{name}
# be compatible with the usual Fedora Provides:
Provides: ansible-collection-%{collection_namespace}-%{collection_name} = %{collection_version}-%{release}
%global collection_namespace microsoft
%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
# 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)
%endif
%if 0%{?rhel}
Requires: rhel-system-roles
%else
%if 0%{?fedora}
Requires: linux-system-roles
%else
Requires: rhel-system-roles
%endif
%global mainid eadd06cfa98d244b096cff24cd11b668428b1613
# Use either hash or tag for source1id
# %%global source1id 50edba099ab2c8b25b225fe760cb5a459b320030
%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
%if %{with ansible}
BuildRequires: %{ansible_build_dep}
%endif
# Includes with ansible_collection_build/_install that differ between RHEL versions
Source1002: ansible-packaging.inc
%include %{SOURCE1002}
%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
%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
# there is no ansible on i686, so when we get a builder that uses
# this arch, the build fails with
# No matching package to install: 'ansible-core >= 2.11.0'
# unfortunately, this causes the src rpm build tasks to be reported
# with the arch of the builder :-( which causes problems with internal
# test infrastructure - while we get those issues sorted out, revert
# this change - this means that centpkg builds may fail and may have
# to be retried
# ExcludeArch: i686
%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
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
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.
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.
%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
Collection artifact for %{name}. This package contains %{collection_namespace}-%{collection_name}-%{version}.tar.gz
%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
%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
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}
# 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
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
# Move a hidden .README.html to a not hidden README.html
mv %{rolename}/.README.html %{rolename}/README.html
%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
%endif
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
cp %{rolename}/.collection/galaxy.yml ./
cp %{rolename1}/.collection/galaxy.yml ./
%if 0%{?rhel}
# Ensure the correct entries in galaxy.yml
%if 0%{?rhel}
./galaxy_transform.py "%{collection_namespace}" "%{collection_name}" "%{collection_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/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/articles/3050101" \
"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://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://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}" \
@ -134,123 +214,129 @@ cp %{rolename}/.collection/galaxy.yml ./
%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}
# Replace "fedora.linux_system_roles" with "redhat.rhel_system_roles"
# This is for the "roles calling other roles" case
find . -type f -exec \
sed -e "s/fedora\.linux_system_roles/redhat.rhel_system_roles/g" \
-i {} \;
for rolename in %{rolenames}; do
sed -i 's/fedora\.linux_system_roles/redhat.rhel_system_roles/g' \
$rolename/tasks/*.yml $rolename/tests/*.yml $rolename/meta/*.yml
done
%endif
# Convert to the collection format
python3 lsr_role2collection.py --role "%{rolename}" \
--src-path "%{rolename}" \
# 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 %{rolename}/.collection/README.md \
--namespace %{collection_namespace} \
--collection %{collection_name} \
--new-role "%{collection_rolename}" \
--readme lsr_role2collection/collection_readme.md \
--namespace %{collection_namespace} --collection %{collection_name} \
--new-role "${COLLECTION_ROLENAMES[${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 {} \;
done
# 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 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
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
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
# 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/%{collection_namespace}\.%{collection_name}\.%{collection_rolename}/%{legacy_rolename}/g" \
-i {} \;
# Declare the array containing target rolenames to copy roles to
declare -A TARGET_ROLENAMES=(%{target_rolenames})
# Copy README, COPYING, CHANGELOG and LICENSE files to the corresponding directories
mkdir -p %{buildroot}%{_pkglicensedir}
mkdir -p "%{buildroot}%{_pkgdocdir}/%{legacy_rolename}"
ln -sr "%{buildroot}%{ansible_roles_dir}/%{legacy_rolename}/README.md" \
"%{buildroot}%{_pkgdocdir}/%{legacy_rolename}"
ln -sr "%{buildroot}%{ansible_roles_dir}/%{legacy_rolename}/README.html" \
"%{buildroot}%{_pkgdocdir}/%{legacy_rolename}"
ln -sr "%{buildroot}%{ansible_roles_dir}/%{legacy_rolename}/CHANGELOG.md" \
"%{buildroot}%{_pkgdocdir}/%{legacy_rolename}"
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
# 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
# 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 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}]}"
%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
rm -r %{buildroot}%{ansible_roles_dir}/*/.[A-Za-z]*
rm -r %{buildroot}%{ansible_roles_dir}/%{legacy_rolename}/tests/.[A-Za-z]*
rm -r $RPM_BUILD_ROOT%{installbase}/*/.[A-Za-z]*
# Step 2: Remove molecule directory from all roles under ansible_roles_dir
rm -r %{buildroot}%{ansible_roles_dir}/*/molecule
# Remove the molecule directory
rm -r $RPM_BUILD_ROOT%{installbase}/*/molecule
# Step 3: Install the role in collection format
pushd .collections/ansible_collections/%{collection_namespace}/%{collection_name}/
%ansible_collection_install
%ansible_collection_build_install
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.
ln -sr %{buildroot}%{ansible_collection_files}%{collection_name}/README.md \
%{buildroot}%{_pkgdocdir}/collection
# Copy the collection README files to the collection
cp -p %{buildroot}%{ansible_collection_files}%{collection_name}/README.md \
$RPM_BUILD_ROOT%{_pkgdocdir}/collection
# Link role READMEs to /usr/share/doc/ansible-collection-microsoft-sql/collection/roles/server
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}
ln -sr %{buildroot}%{ansible_collection_files}%{collection_name}/roles/%{collection_rolename}/README.html \
%{buildroot}%{_pkgdocdir}/collection/roles/%{collection_rolename}
# Declare the array containing collection rolenames to convert roles to
declare -A COLLECTION_ROLENAMES=(%{collection_rolenames})
# Link role CHANGELOG.md to /usr/share/doc/ansible-collection-microsoft-sql/collection/roles/server
ln -sr %{buildroot}%{ansible_collection_files}%{collection_name}/roles/%{collection_rolename}/CHANGELOG.md \
%{buildroot}%{_pkgdocdir}/collection/roles/%{collection_rolename}
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
%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}
# Copy collection artifact to /usr/share/ansible/collections/ for collection-artifact
pushd .collections/ansible_collections/%{collection_namespace}/%{collection_name}/
if [ -f %{collection_namespace}-%{collection_name}-%{collection_version}.tar.gz ]; then
mv %{collection_namespace}-%{collection_name}-%{collection_version}.tar.gz \
%{buildroot}%{_datadir}/ansible/collections/
if [ -f %{collection_namespace}-%{collection_name}-%{version}.tar.gz ]; then
mv %{collection_namespace}-%{collection_name}-%{version}.tar.gz \
$RPM_BUILD_ROOT%{_datadir}/ansible/collections/
fi
popd
%endif
# Step 5: 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
# generate the %files section in the file files_section.txt
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" # full path including buildroot
files_item=${item##"%{buildroot}"} # path with cut buildroot to be added to %%files
item="$1"
files_item=${item##"%{buildroot}"}
if [ -L "$item" ]; then
echo "$files_item"
elif [ -d "$item" ]; then
@ -261,16 +347,16 @@ format_item_for_files() {
else
echo "$files_item"
fi
elif [[ "$item" == */README.md ]] || [[ "$item" == */README.html ]] || [[ "$item" == */CHANGELOG.md ]]; then
elif [[ "$item" == */README.md ]] || [[ "$item" == */README.html ]]; 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
echo "%""%""license" "$files_item"
else
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.
echo "$files_item"
fi
}
@ -278,7 +364,15 @@ format_item_for_files() {
files_section=files_section.txt
rm -f $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 | \
while read item; do
if [[ "$item" == */roles ]]; then
@ -294,8 +388,7 @@ find %{buildroot}%{ansible_collection_files}%{collection_name} -mindepth 1 -maxd
fi
done
# Dynamically generate files section entries for %%{ansible_roles_dir}
find %{buildroot}%{ansible_roles_dir} -mindepth 1 -maxdepth 1 | \
find %{buildroot}%{installbase} -mindepth 1 -maxdepth 1 | \
while read item; do
if [ -d "$item" ]; then
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
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
%dir %{_datadir}/ansible
%dir %{ansible_roles_dir}
%dir %{ansible_collection_files}
%dir %{ansible_collection_files}%{collection_name}
%doc %{_pkgdocdir}
%license %{_pkglicensedir}
%{_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*
%if %{with 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
%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
- Update mssql commit
Resolves: rhbz#2066338