## template: jinja # See: http://www.zarb.org/~jasonc/macros.php # Or: http://fedoraproject.org/wiki/Packaging:ScriptletSnippets # Or: http://www.rpm.org/max-rpm/ch-rpm-inside.html Name: cloud-init Version: {{version}} Release: 1{{subrelease}}%{?dist} Summary: Cloud instance init scripts Group: System/Management License: Dual licensed GPLv3 or Apache 2.0 URL: http://launchpad.net/cloud-init Source0: {{archive_name}} BuildRoot: %{_tmppath}/%{name}-%{version}-build %if 0%{?suse_version} && 0%{?suse_version} <= 1110 %{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")} %else BuildArch: noarch %endif {% for r in buildrequires %} BuildRequires: {{r}} {% endfor %} %if 0%{?suse_version} && 0%{?suse_version} <= 1210 %define initsys sysvinit %else %define initsys systemd %endif # Install pypi 'dynamic' requirements {% for r in requires %} Requires: {{r}} {% endfor %} # Custom patches {% for p in patches %} Patch{{loop.index0}: {{p}} {% endfor %} %description Cloud-init is a set of init scripts for cloud instances. Cloud instances need special scripts to run during initialization to retrieve and install ssh keys and to let the user run various scripts. %prep %setup -q -n {{source_name}} # Custom patches activation {% for p in patches %} %patch{{loop.index0}} -p1 end for {% endfor %} %build %{__python} setup.py build %install %{__python} setup.py install \ --skip-build --root=%{buildroot} --prefix=%{_prefix} \ --record-rpm=INSTALLED_FILES --install-lib=%{python_sitelib} \ --init-system=%{initsys} # Remove non-SUSE templates rm %{buildroot}/%{_sysconfdir}/cloud/templates/*.debian.* rm %{buildroot}/%{_sysconfdir}/cloud/templates/*.redhat.* rm %{buildroot}/%{_sysconfdir}/cloud/templates/*.ubuntu.* # Remove cloud-init tests rm -r %{buildroot}/%{python_sitelib}/tests # Move sysvinit scripts to the correct place and create symbolic links %if %{initsys} == sysvinit mkdir -p %{buildroot}/%{_initddir} mv %{buildroot}%{_sysconfdir}/rc.d/init.d/* %{buildroot}%{_initddir}/ rmdir %{buildroot}%{_sysconfdir}/rc.d/init.d rmdir %{buildroot}%{_sysconfdir}/rc.d mkdir -p %{buildroot}/%{_sbindir} pushd %{buildroot}/%{_initddir} for file in * ; do ln -s %{_initddir}/${file} %{buildroot}/%{_sbindir}/rc${file} done popd %endif # Move documentation mkdir -p %{buildroot}/%{_defaultdocdir} mv %{buildroot}/usr/share/doc/cloud-init %{buildroot}/%{_defaultdocdir} for doc in TODO LICENSE ChangeLog requirements.txt; do cp ${doc} %{buildroot}/%{_defaultdocdir}/cloud-init done # Remove duplicate files %if 0%{?suse_version} %fdupes %{buildroot}/%{python_sitelib} %endif mkdir -p %{buildroot}/var/lib/cloud # patch in the full version to version.py version_pys=$(cd "%{buildroot}" && find . -name version.py -type f) [ -n "$version_pys" ] || { echo "failed to find 'version.py' to patch with version." 1>&2; exit 1; } ( cd "%{buildroot}" && sed -i "s,@@PACKAGED_VERSION@@,%{version}-%{release}," $version_pys ) %postun %insserv_cleanup %files # Sysvinit scripts %if %{initsys} == sysvinit %attr(0755, root, root) %{_initddir}/cloud-config %attr(0755, root, root) %{_initddir}/cloud-final %attr(0755, root, root) %{_initddir}/cloud-init-local %attr(0755, root, root) %{_initddir}/cloud-init %{_sbindir}/rccloud-* %endif # Program binaries %{_bindir}/cloud-init* # There doesn't seem to be an agreed upon place for these # although it appears the standard says /usr/lib but rpmbuild # will try /usr/lib64 ?? /usr/lib/%{name}/uncloud-init /usr/lib/%{name}/write-ssh-key-fingerprints # Docs %doc %{_defaultdocdir}/cloud-init/* # Configs %config(noreplace) %{_sysconfdir}/cloud/cloud.cfg %dir %{_sysconfdir}/cloud/cloud.cfg.d %config(noreplace) %{_sysconfdir}/cloud/cloud.cfg.d/*.cfg %config(noreplace) %{_sysconfdir}/cloud/cloud.cfg.d/README %dir %{_sysconfdir}/cloud/templates %config(noreplace) %{_sysconfdir}/cloud/templates/* %{_sysconfdir}/bash_completion.d/cloud-init # Python code is here... %{python_sitelib}/* /var/lib/cloud