#
# pmd spec file
#

%define _mech_file /etc/gss/mech
%define _mech_id 1.3.6.1.4.1.6876.11711.2.1.2
%define _python3_sitearch %(python3 -c "from distutils.sysconfig import get_python_lib; import sys; sys.stdout.write(get_python_lib(1))")

Summary:	Photon Management Daemon
Name:		pmd
Version:	0.0.1
Release:	1%{?dist}
Vendor:		VMware, Inc.
Distribution:	Photon
License:	Apache 2.0
URL:            https://www.github.com/vmware/pmd
Group:		Applications/System
Requires:       copenapi
Requires:	c-rest-engine
Requires:       jansson
Requires:	likewise-open >= 6.2.9
Requires:       netmgmt
Requires:	systemd
Requires:	tdnf >= 1.2.0
Requires:       vmware-afd-client
Requires:       vmware-directory-client
BuildRequires:  copenapi-devel
BuildRequires:	c-rest-engine-devel
BuildRequires:	curl-devel
BuildRequires:	hawkey-devel >= 2017.1
BuildRequires:  jansson-devel
BuildRequires:	krb5-devel
BuildRequires:	likewise-open-devel >= 6.2.9
BuildRequires:	netmgmt-cli-devel
BuildRequires:	netmgmt-devel
BuildRequires:	tdnf-devel >= 1.2.0
BuildRequires:  vmware-afd-client-devel
BuildRequires:  vmware-directory-client-devel
Source0:	%{name}-%{version}.tar.gz
%define sha1 pmd=d09828dc160b1fb12d891bed00100d9bcdd402ce
Source1:        pmd.service

%description
Photon Management Daemon

%package cli
Summary: photon management daemon cmd line cli
Requires: likewise-open >= 6.2.0
Requires: vmware-directory-client

%description cli
photon management daemon cmd line cli

%package devel
Summary: photon management daemon client devel
Group: Development/Libraries

%description devel
photon management daemon client devel

%package python2
Summary: Python2 bindings for photon management daemon
Group: Development/Libraries
Requires: python2 >= 2.7
Requires: %{name}-cli = %{version}-%{release}
BuildRequires: python2-devel >= 2.7

%description python2
Python2 bindings for photon management daemon

%package python3
Summary: Python3 bindings for photon management daemon
Group: Development/Libraries
Requires: python3 >= 3.5
Requires: %{name}-cli = %{version}-%{release}
BuildRequires: python3-devel >= 3.5

%description python3
Python3 bindings for photon management daemon

%prep
%setup -q

%build
sed -i 's,c-rest-engine/,,' server/includes.h
sed -i 's,c-rest-engine/,,' server/restutils/includes.h
autoreconf -mif
./configure \
    --prefix=%{_prefix} \
    --bindir=%{_bindir} \
    --libdir=%{_libdir} \
    --sysconfdir=/etc \
    --with-likewise=/opt/likewise \
    --with-vmware-rest=/usr/lib \
    --enable-python=no \
    --disable-static
make

pushd python
python2 setup.py build
python3 setup.py build
popd

%install
cd $RPM_BUILD_DIR/%{name}-%{version}
make DESTDIR=%{buildroot} install

pushd python
python2 setup.py install --skip-build --root %{buildroot}
rm -f %{buildroot}%{python_sitearch}/pmd.so
python3 setup.py install --skip-build --root %{buildroot}
popd

install -d $RPM_BUILD_ROOT/var/log/pmd
install -vdm755 %{buildroot}%{_unitdir}
install -D -m 644 %{SOURCE1} %{buildroot}%{_unitdir}
install -D -m 444 conf/restapispec.json %{buildroot}/etc/pmd/restapispec.json
install -D -m 444 conf/api_sddl.conf %{buildroot}/etc/pmd/api_sddl.conf
install -D -m 444 conf/restconfig.txt %{buildroot}/etc/pmd/restconfig.txt
install -D -m 444 conf/server.crt  %{buildroot}/etc/pmd/server.crt
install -D -m 444 conf/server.key %{buildroot}/etc/pmd/server.key

# Pre-install
%pre

    # First argument is 1 => New Installation
    # First argument is 2 => Upgrade

# Post-install
%post

    # First argument is 1 => New Installation
    # First argument is 2 => Upgrade
    sed -i "s/IPADDRESS_MARKER/`ifconfig eth0 | grep -Eo 'inet (addr:)?([0-9]*\.){3}[0-9]*' | grep -Eo '([0-9]*\.){3}[0-9]*' | grep -v '127.0.0.1'`/g" /etc/pmd/restapispec.json
    /sbin/ldconfig
    %systemd_post pmd.service

    if [ ! -d "%{_libdir}/gss" ] ; then
        mkdir %{_libdir}/gss
    fi

    # Add libgssapi_unix.so to GSSAPI plugin directory
    if [ ! -h %{_libdir}/gss/libgssapi_unix.so ]; then
        /bin/ln -sf /opt/vmware/lib64/libgssapi_unix.so %{_libdir}/gss/libgssapi_unix.so
    fi
    # Add gssapi_unix plugin configuration to GSS mech file
    if [ -f "%{_mech_file}" ]; then
        if [ `grep -c "%{_mech_id}" "%{_mech_file}"` -lt 1 ]; then
            echo "unix %{_mech_id} libgssapi_unix.so" >> "%{_mech_file}"
        fi
    fi

# Pre-uninstall
%preun

    # First argument is 0 => Uninstall
    # First argument is 1 => Upgrade
    %systemd_preun pmd.service
if [ "$1" = 0 ]; then
    if [ ! -e %{_bindir}/pmd-cli ]; then
        # Cleanup GSSAPI UNIX symlink
        if [ -h %{_libdir}/gss/libgssapi_unix.so ]; then
            rm -f %{_libdir}/gss/libgssapi_unix.so
        fi
        # Remove GSSAPI SRP plugin configuration from GSS mech file
        if [ -f "%{_mech_file}" ]; then
            if [ `grep -c  "%{_mech_id}" "%{_mech_file}"` -gt 0 ]; then
                cat "%{_mech_file}" | sed '/%{_mech_id}/d' > "/tmp/mech-$$"
                if [ -s /tmp/mech-$$ ]; then
                    mv "/tmp/mech-$$" "%{_mech_file}"
                fi
            fi
        fi
    fi
fi


# Post-uninstall
%postun

    /sbin/ldconfig

    # First argument is 0 => Uninstall
    # First argument is 1 => Upgrade
    %systemd_postun_with_restart pmd.service

# Post pmd-cli
%post cli
    if [ ! -d "%{_libdir}/gss" ] ; then
        mkdir %{_libdir}/gss
    fi

    # Add libgssapi_unix.so to GSSAPI plugin directory
    if [ ! -h %{_libdir}/gss/libgssapi_unix.so ]; then
        /bin/ln -sf /opt/vmware/lib64/libgssapi_unix.so %{_libdir}/gss/libgssapi_unix.so
    fi
    # Add gssapi_unix plugin configuration to GSS mech file
    if [ -f "%{_mech_file}" ]; then
        if [ `grep -c "%{_mech_id}" "%{_mech_file}"` -lt 1 ]; then
            echo "unix %{_mech_id} libgssapi_unix.so" >> "%{_mech_file}"
        fi
    fi

# Pre-uninstall cli
%preun cli

    # First argument is 0 => Uninstall
    # First argument is 1 => Upgrade

if [ "$1" = 0 ]; then
    if [ ! -e %{_bindir}/pmd ]; then
        # Cleanup GSSAPI UNIX symlink
        if [ -h %{_libdir}/gss/libgssapi_unix.so ]; then
            rm -f %{_libdir}/gss/libgssapi_unix.so
        fi
        # Remove GSSAPI SRP plugin configuration from GSS mech file
        if [ -f "%{_mech_file}" ]; then
            if [ `grep -c  "%{_mech_id}" "%{_mech_file}"` -gt 0 ]; then
                cat "%{_mech_file}" | sed '/%{_mech_id}/d' > "/tmp/mech-$$"
                if [ -s /tmp/mech-$$ ]; then
                    mv "/tmp/mech-$$" "%{_mech_file}"
                fi
            fi
        fi
    fi
fi
# Post-uninstall
%postun cli
    /sbin/ldconfig

%clean
rm -rf %{buildroot}/*

%files
    %defattr(-,root,root,0755)
    %{_bindir}/pmd
    /lib/systemd/system/pmd.service
    /etc/pmd/pmd.conf
    /etc/pmd/api_sddl.conf
    /etc/pmd/restapispec.json
    /etc/pmd/restconfig.txt
    /etc/pmd/server.crt
    /etc/pmd/server.key
    %dir /var/log/pmd

%files cli
    %{_bindir}/pmd-cli
    %{_libdir}/libpmdclient.so.*

%files devel
    %{_includedir}/pmd/*.h
    %{_libdir}/*.la
    %{_libdir}/libpmdclient.so
    %{_libdir}/pkgconfig/pmdclient.pc

%files python2
    %{python_sitearch}/%{name}/
    %{python_sitearch}/%{name}_python-*.egg-info

%files python3
    %{_python3_sitearch}/%{name}/
    %{_python3_sitearch}/%{name}_python-*.egg-info

%changelog
*       Thu May 04 2017 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 0.0.1-1
-       Initial build.  First version