%global py_major 3.9 %global py_minor 16 %global python_major python%{py_major} %global python3_sitearch %(%{python_major} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib(0))") %{!?python3_sitelib: %global python3_sitelib %(/opt/freeware/bin/python3 -c "from distutils.sysconfig import get_python_lib;print(get_python_lib())")} Name: cloud-init Version: 22.1 Release: 1 License: GPLv3 Summary: Cloud node initialization tool Url: https://github.com/canonical/cloud-init Group: System/Management Source0: %{name}-%{version}.tar.gz Patch0: 0001-restart-of-VM-wiping-off-ipv6-static-ip.patch BuildRequires: fdupes >= 2.1.2 BuildRequires: %{python_major}-devel >= %{py_major}.%{py_minor} BuildRequires: %{python_major}-pyyaml >= 5.4.1.1 BuildRequires: %{python_major}-requests >= 2.27.1 BuildRequires: %{python_major}-jinja2 >= 2.10.3 Requires: bash >= 5.1.16 Requires: %{python_major} >= %{py_major}.%{py_minor} Requires: %{python_major}-requests >= 2.27.1 Requires: %{python_major}-pyyaml >= 5.4.1.1 Requires: %{python_major}-jsonpatch >= 1.24 Requires: %{python_major}-configobj >= 5.0.6 Requires: %{python_major}-jinja2 >= 2.10.3 Requires: %{python_major}-oauthlib >= 3.2.2 Requires: %{python_major}-jsonschema >= 4.17.3 Requires: %{python_major}-charset-normalizer >= 2.0.12 , %{python_major}-charset-normalizer < 2.1 Requires: %{python_major}-netifaces >= 0.11.0 %define docdir %{_defaultdocdir}/%{name} BuildArch: noarch %define initsys aix %description Cloud-init is an init script that initializes a cloud node (VM) according to the fetched configuration data from the admin node. The RPM packages can be obtained from the following website: https://public.dhe.ibm.com/aix/freeSoftware/aixtoolbox/RPMS/ppc/ The package dependencies listed in install order are: python3.9-3.9.16-2.aix7.1.ppc.rpm bash-5.1.16-1.aix7.1.ppc.rpm python3.9-requests-2.27.1-2.aix7.1.noarch.rpm python3.9-pyyaml-5.4.1.1-2.aix7.1.ppc.rpm python3.9-jsonpatch-1.24-2.aix7.1.noarch.rpm python3.9-configobj-5.0.6-2.aix7.1.noarch.rpm python3.9-jinja2-2.10.3-2.aix7.1.noarch.rpm python3.9-oauthlib-3.2.2-1.aix7.1.noarch.rpm python3.9-jsonschema-4.17.3-1.aix7.1.noarch.rpm python3.9-charset-normalizer-2.0.12-2.aix7.1.noarch.rpm python3.9-netifaces-0.11.0-1.aix7.1.ppc.rpm %package doc Summary: Cloud node initialization tool - Documentation Group: System/Management %description doc Cloud-init is an init script that initializes a cloud node (VM) according to the fetched configuration data from the admin node. Documentation and examples for cloud-init tools %package test Summary: Cloud node initialization tool - Testsuite Group: System/Management Requires: cloud-init = %{version}-%{release} %description test Cloud-init is an init script that initializes a cloud node (VM) according to the fetched configuration data from the admin node. Unit tests for the cloud-init tools %prep %setup -q %patch0 -p2 echo "......finding directories......" echo "%{buildroot}" echo "%{_tmppath}" echo "%{_defaultdocdir}" echo "%{_localstatedir}" echo "%{docdir}" echo "%{_prefix}" echo "%{initsys}" echo "%{python3_sitearch}" echo "\n------done------" %build %{python_major} setup.py build %install %{python_major} setup.py install --root=%{buildroot} --prefix=%{_prefix} --install-lib=%{python3_sitearch} --init-system=aix #find %{buildroot} -name ".gitignore" -type f -exec rm -f {} \; find %{buildroot} -name ".placeholder" -type f -exec rm -f {} \; # from debian install script for x in "%{buildroot}%{_bindir}/"*.py; do [ -f "${x}" ] && mv "${x}" "${x%.py}" done /usr/bin/mkdir -p %{buildroot}%{_localstatedir}/lib/cloud # move documentation /usr/bin/mkdir -p %{buildroot}%{_defaultdocdir} %define aixshare usr/share rm -rf %{buildroot}%{docdir} mv -f %{buildroot}/%{aixshare}/doc/%{name} %{buildroot}%{docdir} /usr/bin/mkdir -p %{buildroot}/%{_sysconfdir}/cloud/ /usr/bin/mkdir -p %{buildroot}/%_prefix/%_lib cp -r %{buildroot}/usr/lib/cloud-init %{buildroot}/%_prefix/%_lib # copy the LICENSE cp LICENSE %{buildroot}%{docdir} # remove debian/ubuntu specific profile.d file (bnc#779553) rm -f %{buildroot}%{_sysconfdir}/profile.d/Z99-cloud-locale-test.sh # Remove non-AIX templates rm -f %{buildroot}/etc/cloud/templates/*.debian.* rm -f %{buildroot}/etc/cloud/templates/*.redhat.* rm -f %{buildroot}/etc/cloud/templates/*.ubuntu.* rm -f %{buildroot}/etc/cloud/templates/*.suse.* # Move everything from %{buildroot}/etc/cloud to %{buildroot}/%{_prefix}/etc/cloud # so we can build it as a package and installed to /opt/freeware rm -rf %{buildroot}/%{_prefix}/etc/cloud/* mv -f %{buildroot}/etc/cloud/* %{buildroot}/%{_prefix}/etc/cloud # move aix sysvinit scripts into the "right" place %define _initddir /etc/rc.d/init.d /usr/bin/mkdir -p %{buildroot}/%{_initddir} /usr/bin/mkdir -p %{buildroot}/%{_sbindir} OLDPATH="%{buildroot}%{_initddir}" for iniF in *; do ln -sf "%{_initddir}/${iniF}" "%{buildroot}/%{_sbindir}/rc${iniF}" done cd $OLDPATH # remove duplicate files /opt/freeware/bin/fdupes %{buildroot}%{python3_sitearch} %post /usr/bin/ln -sf /etc/rc.d/init.d/cloud-init-local /etc/rc.d/rc2.d/S01cloud-init-local /usr/bin/ln -sf /etc/rc.d/init.d/cloud-init /etc/rc.d/rc2.d/S02cloud-init /usr/bin/ln -sf /etc/rc.d/init.d/cloud-config /etc/rc.d/rc2.d/S03cloud-config /usr/bin/ln -sf /etc/rc.d/init.d/cloud-final /etc/rc.d/rc2.d/S04cloud-final if [[ `/usr/sbin/lsattr -El sys0 -a clouddev >/dev/null 2>&1; echo $?` -eq 0 ]]; then /usr/lib/boot/bootutil -c 2>/dev/null /usr/sbin/chdev -l sys0 -a clouddev=1 >/dev/null 2>&1 else /usr/sbin/chdev -l sys0 -a ghostdev=1 >/dev/null 2>&1 fi %preun if [ "$1" = 0 ]; then rm -rf /opt/freeware/var/lib/cloud/* rm -rf /run/cloud-init fi %postun if [ "$1" = 0 ]; then rm /etc/rc.d/rc2.d/S01cloud-init-local rm /etc/rc.d/rc2.d/S02cloud-init rm /etc/rc.d/rc2.d/S03cloud-config rm /etc/rc.d/rc2.d/S04cloud-final fi %files %define py_ver 3.9 %defattr(-,root,system) # do not mark as doc or we get conflicts with the doc package %{docdir}/LICENSE %{_bindir}/cloud-init* %config(noreplace) %{_prefix}/etc/cloud/ %{python3_sitearch}/* %{_prefix}/lib/cloud-init %attr(0755, root, system) %{_initddir}/cloud-config %attr(0755, root, system) %{_initddir}/cloud-init %attr(0755, root, system) %{_initddir}/cloud-init-local %attr(0755, root, system) %{_initddir}/cloud-final %dir %attr(0755, root, system) %{_localstatedir}/lib/cloud %dir %{docdir} %files doc %defattr(-,root,system) %{docdir}/examples/* %{docdir}/*.txt %dir %{docdir}/examples %files test %defattr(-,root,system) %{python3_sitearch}/tests/* %dir %{python3_sitearch}/tests %changelog * Tue May 23 2023 Reshma V Kumar - 22.1-1 - Update to version 22.1 * Thu Sep29 2022 Sangamesh Mallayya - 0.7.5-4.5 - Use /usr/bin/bash instead of /opt/freeware/bin/bash. - For AIX 7.3 TL1 AIX-rpm provides bash and doesn't providing links in - /opt/freeware/bin hence cloud-init scripts fails to run. - /usr/bin/bash path is also being provided by bash rpm for 7.1 & 7.2 - through the post install script.