## 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