SPECS/pmd/pmd.spec
e95655da
 #
 # 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