Compare commits
	
		
			No commits in common. "imports/c8/ansible-collection-microsoft-sql-1.1.0-1.el8" and "c8-beta" have entirely different histories.
		
	
	
		
			imports/c8
			...
			c8-beta
		
	
		
| @ -1,2 +1,2 @@ | ||||
| 99df2e20aff7ec8c244218a45bbcd3d68b791311 SOURCES/auto-maintenance-cdc706f14614ef5e80bbce8db10beb369e889df9.tar.gz | ||||
| 6fd1a1faa5e3c0108b1cbc7a031b6e3e5dde76e0 SOURCES/mssql-78ea547ef9e23e20015794a1e48c7d6d21229293.tar.gz | ||||
| b0ee52fd3c4f8d57f2414bee6b1a944f9002b13f SOURCES/auto-maintenance-eadd06cfa98d244b096cff24cd11b668428b1613.tar.gz | ||||
| e8478bb22d373f545bb92ed83791b83c95fc29f7 SOURCES/mssql-2.2.3.tar.gz | ||||
|  | ||||
							
								
								
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.gitignore
									
									
									
									
										vendored
									
									
								
							| @ -1,2 +1,2 @@ | ||||
| SOURCES/auto-maintenance-cdc706f14614ef5e80bbce8db10beb369e889df9.tar.gz | ||||
| SOURCES/mssql-78ea547ef9e23e20015794a1e48c7d6d21229293.tar.gz | ||||
| SOURCES/auto-maintenance-eadd06cfa98d244b096cff24cd11b668428b1613.tar.gz | ||||
| SOURCES/mssql-2.2.3.tar.gz | ||||
|  | ||||
							
								
								
									
										21
									
								
								SOURCES/ansible-packaging.inc
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										21
									
								
								SOURCES/ansible-packaging.inc
									
									
									
									
									
										Normal 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 | ||||
| @ -1,295 +1,256 @@ | ||||
| %if 0%{?rhel} && ! 0%{?epel} | ||||
| %bcond_with ansible | ||||
| # 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 | ||||
| %bcond_without ansible | ||||
| %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.1.0 | ||||
| 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 | ||||
| # be compatible with the usual Fedora Provides: | ||||
| Provides: ansible-collection-%{collection_namespace}-%{collection_name} = %{collection_version}-%{release} | ||||
| 
 | ||||
| # 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}} | ||||
| # 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 | ||||
| # generator is added to ansible-core in RHEL | ||||
| # Fedora - the automatic generator will add this - no need to explicit declare | ||||
| # it in the spec file | ||||
| # EL7 - no dependency on ansible because there is no ansible in el7 - user is | ||||
| # responsible for knowing they have to install ansible | ||||
| %if 0%{?rhel} >= 8 | ||||
| Requires: (ansible-core >= 2.11.0 or ansible >= 2.9.0) | ||||
| %endif | ||||
| 
 | ||||
| %if 0%{?fedora} || 0%{?rhel} >= 8 | ||||
| %{!?ansible_collection_files:%define ansible_collection_files %{_datadir}/ansible/collections/ansible_collections/%{collection_namespace}/} | ||||
| %if 0%{?rhel} | ||||
| Requires: rhel-system-roles | ||||
| %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 | ||||
| Requires: linux-system-roles | ||||
| %endif | ||||
| 
 | ||||
| %if %{with ansible} | ||||
| BuildRequires: ansible >= 2.9.10 | ||||
| %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 | ||||
| %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 mainid eadd06cfa98d244b096cff24cd11b668428b1613 | ||||
| # Use either hash or tag for source1id | ||||
| # %%global source1id 50edba099ab2c8b25b225fe760cb5a459b320030 | ||||
| %global source1id %{version} | ||||
| %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 78ea547ef9e23e20015794a1e48c7d6d21229293 | ||||
| %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: python3dist(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} | ||||
| # Remove symlinks in tests/roles | ||||
| if [ -d %{rolename}/tests/roles ]; then | ||||
|     find %{rolename}/tests/roles -type l -exec rm {} \; | ||||
|     if [ -d %{rolename}/tests/roles/linux-system-roles.%{rolename} ]; then | ||||
|         rm -r %{rolename}/tests/roles/linux-system-roles.%{rolename} | ||||
|     fi | ||||
| fi | ||||
| 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 | ||||
| %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 ./ | ||||
| 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" > galaxy.yml.tmp | ||||
| ./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" \ | ||||
|                       > galaxy.yml.tmp | ||||
| %else | ||||
| ./galaxy_transform.py "%{collection_namespace}" "%{collection_name}" "%{collection_version}" \ | ||||
|                       "Ansible collection for Microsoft SQL Server management" \ | ||||
|                       > galaxy.yml.tmp | ||||
| %endif | ||||
| mv galaxy.yml.tmp galaxy.yml | ||||
| 
 | ||||
| # Declare the array containing collection rolenames to convert roles to | ||||
| declare -A COLLECTION_ROLENAMES=(%{collection_rolenames}) | ||||
| %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 {} \; | ||||
| %endif | ||||
| 
 | ||||
| # Convert roles to the collection format | ||||
| for rolename in %{rolenames}; do | ||||
|     python3 lsr_role2collection.py --role "$rolename" \ | ||||
|         --src-path "$rolename" \ | ||||
| # Convert to the collection format | ||||
| python3 lsr_role2collection.py --role "%{rolename}" \ | ||||
|     --src-path "%{rolename}" \ | ||||
|     --src-owner linux-system-roles \ | ||||
|     --dest-path .collections \ | ||||
|         --readme lsr_role2collection/collection_readme.md \ | ||||
|         --namespace %{collection_namespace} --collection %{collection_name} \ | ||||
|         --new-role "${COLLECTION_ROLENAMES[${rolename}]}" \ | ||||
|     --readme %{rolename}/.collection/README.md \ | ||||
|     --namespace %{collection_namespace} \ | ||||
|     --collection %{collection_name} \ | ||||
|     --new-role "%{collection_rolename}" \ | ||||
|     --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 | ||||
| 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 $RPM_BUILD_ROOT%{installbase} | ||||
| mkdir -p $RPM_BUILD_ROOT%{_datadir}/ansible/roles | ||||
| mkdir -p %{buildroot}%{ansible_roles_dir} | ||||
| 
 | ||||
| # Declare the array containing target rolenames to copy roles to | ||||
| declare -A TARGET_ROLENAMES=(%{target_rolenames}) | ||||
| # 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 {} \; | ||||
| 
 | ||||
| # 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" | ||||
| # 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 "$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" | ||||
| 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 | ||||
| done | ||||
| 
 | ||||
| # Remove dot files | ||||
| rm -r $RPM_BUILD_ROOT%{installbase}/*/.[A-Za-z]* | ||||
| rm -r %{buildroot}%{ansible_roles_dir}/*/.[A-Za-z]* | ||||
| rm -r %{buildroot}%{ansible_roles_dir}/%{legacy_rolename}/tests/.[A-Za-z]* | ||||
| 
 | ||||
| # Remove the molecule directory | ||||
| rm -r $RPM_BUILD_ROOT%{installbase}/*/molecule | ||||
| # Step 2: Remove molecule directory from all roles under ansible_roles_dir | ||||
| rm -r %{buildroot}%{ansible_roles_dir}/*/molecule | ||||
| 
 | ||||
| # Step 3: Install the role in collection format | ||||
| pushd .collections/ansible_collections/%{collection_namespace}/%{collection_name}/ | ||||
| %ansible_collection_build_install | ||||
| %ansible_collection_install | ||||
| popd | ||||
| 
 | ||||
| mkdir -p $RPM_BUILD_ROOT%{_pkgdocdir}/collection | ||||
| mkdir -p $RPM_BUILD_ROOT%{_pkgdocdir}/collection/roles | ||||
| mkdir -p %{buildroot}%{_pkgdocdir}/collection/roles | ||||
| 
 | ||||
| # Copy the collection README files to the collection | ||||
| cp -p %{buildroot}%{ansible_collection_files}%{collection_name}/README.md \ | ||||
|    $RPM_BUILD_ROOT%{_pkgdocdir}/collection | ||||
| # 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 | ||||
| 
 | ||||
| # Declare the array containing collection rolenames to convert roles to | ||||
| declare -A COLLECTION_ROLENAMES=(%{collection_rolenames}) | ||||
| # 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} | ||||
| 
 | ||||
| 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 | ||||
| # 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} | ||||
| # 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}-%{version}.tar.gz ]; then | ||||
|     mv %{collection_namespace}-%{collection_name}-%{version}.tar.gz \ | ||||
|        $RPM_BUILD_ROOT%{_datadir}/ansible/collections/ | ||||
| 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 | ||||
| @ -300,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 | ||||
| } | ||||
| @ -317,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 | ||||
| @ -341,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 | ||||
| @ -352,39 +306,178 @@ 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#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 | ||||
| - 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#2066338 | ||||
| - Add mssql_tls_remote_src to the server role | ||||
|   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#2065206 | ||||
| - Users now can provide a custom URLs to pull packages and RPM key from | ||||
|   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#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#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 | ||||
| 
 | ||||
| * Wed Jul 21 2021 Fedora Release Engineering <releng@fedoraproject.org> - 1.1.0-2 | ||||
| - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild | ||||
| 
 | ||||
| * Wed Jul 21 2021 Sergei Petrosian <spetrosi@redhat.com> - 1.1.0-1 | ||||
| - Add support for Microsoft SQL Server 2017 | ||||
| 
 | ||||
|  | ||||
		Loading…
	
		Reference in New Issue
	
	Block a user