Compare commits

...

No commits in common. "imports/c9/ansible-collection-microsoft-sql-1.2.4-1.el9" and "c8-beta" have entirely different histories.

4 changed files with 305 additions and 314 deletions

View File

@ -1,2 +1,2 @@
99df2e20aff7ec8c244218a45bbcd3d68b791311 SOURCES/auto-maintenance-cdc706f14614ef5e80bbce8db10beb369e889df9.tar.gz
7a6dfa4cb1a14deacfff752bc7cd452b500771d7 SOURCES/mssql-1.2.4.tar.gz
b0ee52fd3c4f8d57f2414bee6b1a944f9002b13f SOURCES/auto-maintenance-eadd06cfa98d244b096cff24cd11b668428b1613.tar.gz
e8478bb22d373f545bb92ed83791b83c95fc29f7 SOURCES/mssql-2.2.3.tar.gz

4
.gitignore vendored
View File

@ -1,2 +1,2 @@
SOURCES/auto-maintenance-cdc706f14614ef5e80bbce8db10beb369e889df9.tar.gz
SOURCES/mssql-1.2.4.tar.gz
SOURCES/auto-maintenance-eadd06cfa98d244b096cff24cd11b668428b1613.tar.gz
SOURCES/mssql-2.2.3.tar.gz

View File

@ -0,0 +1,21 @@
# 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,57 +1,34 @@
# 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
# 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
%else
%if 0%{?rhel} && ! 0%{?epel}
%bcond_with ansible
%else
%bcond_without ansible
%global ansible_build_dep ansible >= 2.9.10
%if 0%{?rhel} >= 8
BuildRequires: ansible-core >= 2.11.0
%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: 1.2.4
Release: 1%{?dist}
Version: 2.2.3
Release: 2%{?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 <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
# 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,148 +41,91 @@ 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 eadd06cfa98d244b096cff24cd11b668428b1613
# 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.4
%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
# Includes with ansible_collection_build/_install that differ between RHEL versions
Source1002: ansible-packaging.inc
%include %{SOURCE1002}
BuildArch: noarch
%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
# 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
# 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}-%{collection_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 %{getarchivedir 0}
%setup -q -a1 -n auto-maintenance-%{mainid}
# 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
mv %{rolename}-%{source1id} %{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
# 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
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@' '{}' +
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
%endif
# Move a hidden .README.html to a not hidden README.html
mv %{rolename}/.README.html %{rolename}/README.html
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 %{rolename1}/.collection/galaxy.yml ./
# Ensure the correct entries in galaxy.yml
# Copy galaxy.yml for the collection build
cp %{rolename}/.collection/galaxy.yml ./
%if 0%{?rhel}
# Ensure the correct entries in galaxy.yml
./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/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" \
"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" \
> galaxy.yml.tmp
%else
./galaxy_transform.py "%{collection_namespace}" "%{collection_name}" "%{collection_version}" \
@ -214,137 +134,123 @@ cp %{rolename1}/.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}
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 . -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 %{rolename}/.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 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}
# Copy CHANGELOG.md from mssql to collection dir
mv .collections/ansible_collections/%{collection_namespace}/%{collection_name}/roles/%{collection_rolename1}/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})
# 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 $RPM_BUILD_ROOT%{installbase}/*/.[A-Za-z]*
# Remove the molecule directory
rm -r $RPM_BUILD_ROOT%{installbase}/*/molecule
# Build collection
pushd .collections/ansible_collections/%{collection_namespace}/%{collection_name}/
%ansible_collection_build_install
%ansible_collection_build
popd
mkdir -p $RPM_BUILD_ROOT%{_pkgdocdir}/collection
mkdir -p $RPM_BUILD_ROOT%{_pkgdocdir}/collection/roles
%install
mkdir -p %{buildroot}%{ansible_roles_dir}
# Copy the collection README files to the collection
cp -p %{buildroot}%{ansible_collection_files}%{collection_name}/README.md \
$RPM_BUILD_ROOT%{_pkgdocdir}/collection
# 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 collection rolenames to convert roles to
declare -A COLLECTION_ROLENAMES=(%{collection_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
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
# Remove dot files
rm -r %{buildroot}%{ansible_roles_dir}/*/.[A-Za-z]*
rm -r %{buildroot}%{ansible_roles_dir}/%{legacy_rolename}/tests/.[A-Za-z]*
%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 2: Remove molecule directory from all roles under ansible_roles_dir
rm -r %{buildroot}%{ansible_roles_dir}/*/molecule
%if %{with collection_artifact}
# Copy collection artifact to /usr/share/ansible/collections/ for collection-artifact
# Step 3: Install the role in collection format
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/
%ansible_collection_install
popd
mkdir -p %{buildroot}%{_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
# 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}
# 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}
# Step 4: Copy collection artifact to /usr/share/ansible/collections/ for collection-artifact
%if %{with 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/
fi
popd
%endif
# generate the %files section in the file files_section.txt
# 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
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
@ -355,16 +261,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
}
@ -372,15 +278,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
@ -396,7 +294,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
@ -407,104 +306,175 @@ 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
%{_datadir}/ansible/collections/%{collection_namespace}-%{collection_name}-%{version}.tar.gz
%{_datadir}/ansible/collections/%{collection_namespace}-%{collection_name}-%{collection_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#2066337
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#2120712
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#2120709
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#2066337
Resolves: rhbz#2066338
- Replace simple `mssql_input_sql_file` with `pre` and `post` variables
Resolves: rhbz#2120712
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-2
* Mon Jul 4 2022 Sergei Petrosian <spetrosi@redhat.com> - 1.2.0-3
- Update mssql commit
Resolves: rhbz#2066337
Resolves: rhbz#2066338
- Add condition for upstream spec build for galaxy_transform
- Replace extra-mapping with replacing in the legacy format with sed
* Fri Jun 17 2022 Sergei Petrosian <spetrosi@redhat.com> - 1.2.0-2
Return mistakenly deleted galaxy.yml string and bump release
* Fri Jun 17 2022 Sergei Petrosian <spetrosi@redhat.com> - 1.2.0-1
- Add MVP HA functionality to the server role
Resolves: rhbz#2066337
Resolves: rhbz#2066338
- Add mssql_tls_remote_src to the server role
Resolves: rhbz#2098212
Resolves: rhbz#2039990
- Add Requires: linux-system-roles or rhel-system-roles
- Add downstream values to galaxy.yml
* Mon Mar 21 2022 Sergei Petrosian <spetrosi@redhat.com> - 1.1.1-3
- Fix inserting ansible_managed
Resolves: rhbz#2057652
Resolves: rhbz#2065206
- Users now can provide a custom URLs to pull packages and RPM key from
Resolves: rhbz#2070452
- Add "Requires: ansible-core or ansible"
Resolves: rhbz#2067496
Resolves: rhbz#2067175
* Fri Mar 18 2022 Sergei Petrosian <spetrosi@redhat.com> - 1.1.1-2
- RHEL8.6, 9 - add "Requires: ansible-core or ansible"
Resolves: rhbz#2065669 (EL9)
Resolves: rhbz#2067172
* Thu Mar 17 2022 Sergei Petrosian <spetrosi@redhat.com> - 1.1.1-1
- Insert the "Ansible managed" comment to the /var/opt/mssql/mssql.conf file
Resolves rhbz#2064690 (EL9)
Resolves rhbz#2065206
* Wed Jan 19 2022 Fedora Release Engineering <releng@fedoraproject.org> - 1.1.0-3
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
* Thu Sep 23 2021 Sergei Petrosian <spetrosi@redhat.com> - 1.1.0-2
- Bump release to build with gating.yaml added
* Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.1.0-2
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild