#
# 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.5
Release: 5%{?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 >= 1.1
Requires: jansson
Requires: likewise-open >= 6.2.9
Requires: netmgmt
Requires: systemd
Requires: tdnf >= 1.2.3
Requires: lightwave-client-libs
Requires: %{name}-libs = %{version}-%{release}
Requires: shadow
BuildRequires: copenapi-devel
BuildRequires: c-rest-engine-devel >= 1.1
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.3
BuildRequires: lightwave-devel
Source0: %{name}-%{version}-3.tar.gz
%define sha1 pmd=fe9b4b81410497d209fc4b6efb9574a049557b25
Patch0: pmd-update-to-c-rest-engine-1.1.patch
%description
Photon Management Daemon
%package libs
Summary: photon management daemon libs
Requires: likewise-open >= 6.2.0
%description libs
photon management daemon libs used by server and clients
%package cli
Summary: photon management daemon cmd line cli
Requires: %{name}-libs = %{version}-%{release}
Requires: likewise-open >= 6.2.0
Requires: lightwave-client-libs
%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
%patch0 -p1
%build
sed -i 's/pmd, 0.0.1/pmd, 0.0.5/' configure.ac
sed -i 's,-lcrypto,-lcrypto -lgssapi_krb5 @top_builddir@/client/libpmdclient.la,' server/Makefile.am
autoreconf -mif
./configure \
--prefix=%{_prefix} \
--bindir=%{_bindir} \
--libdir=%{_libdir} \
--sysconfdir=/etc \
--with-likewise=/opt/likewise \
--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
rm -f %{buildroot}%{_libdir}/*.la
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 444 pmd.service %{buildroot}%{_unitdir}
install -D -m 444 pmdprivsepd.service %{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 0755 %{buildroot}/usr/lib/tmpfiles.d/
install -m 0644 conf/pmd-tmpfiles.conf %{buildroot}/usr/lib/tmpfiles.d/%{name}.conf
# Pre-install
%pre
if ! getent group %{name} >/dev/null; then
/sbin/groupadd -r %{name}
fi
if ! getent passwd %{name} >/dev/null; then
/sbin/useradd -g %{name} %{name} -s /sbin/nologin
fi
# 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
%systemd_post pmdprivsepd.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 %{_libdir}/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
if [ "$1" = 1 ]; then
openssl req \
-new \
-newkey rsa:2048 \
-days 365 \
-nodes \
-x509 \
-subj "/C=US/ST=WA/L=Bellevue/O=vmware/CN=photon-pmd-default" \
-keyout /etc/pmd/server.key \
-out /etc/pmd/server.crt
chmod 0400 /etc/pmd/server.key
chown %{name} /etc/pmd/server.key
openssl genrsa -out /etc/pmd/privsep_priv.key 2048
openssl rsa -in /etc/pmd/privsep_priv.key -pubout > /etc/pmd/privsep_pub.key
chmod 0400 /etc/pmd/privsep*.key
chown %{name} /etc/pmd/privsep_pub.key
fi
%tmpfiles_create %_tmpfilesdir/%{name}.conf
# Pre-uninstall
%preun
# First argument is 0 => Uninstall
# First argument is 1 => Upgrade
%systemd_preun pmd.service
%systemd_preun pmdprivsepd.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
%systemd_postun_with_restart pmd.service
%systemd_postun_with_restart pmdprivsepd.service
# First argument is 0 => Uninstall
# First argument is 1 => Upgrade
if [ $1 -eq 0 ] ; then
if getent passwd %{name} >/dev/null; then
/sbin/userdel %{name}
fi
if getent group %{name} >/dev/null; then
/sbin/groupdel %{name}
fi
fi
# 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 %{_libdir}/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
%{_bindir}/pmdprivsepd
/lib/systemd/system/pmd.service
/lib/systemd/system/pmdprivsepd.service
/etc/pmd/pmd.conf
/etc/pmd/api_sddl.conf
/etc/pmd/restapispec.json
/etc/pmd/restconfig.txt
%attr(0766, %{name}, %{name}) %dir /var/log/%{name}
%_tmpfilesdir/%{name}.conf
%files libs
%{_libdir}/libpmdclient.so*
%files cli
%{_bindir}/pmd-cli
%files devel
%{_includedir}/pmd/*.h
%{_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 Apr 05 2018 Xiaolin Li <xiaolinl@vmware.com> 0.0.5-5
- Rebuild with tdnf 1.2.3.
* Thu Nov 30 2017 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 0.0.5-4
- update to use c-rest-engine-1.11
* Tue Oct 24 2017 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 0.0.5-3
- Bug fixes and net commands fixes
* Sat Sep 30 2017 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 0.0.5-2
- Apply patch for local rpc connection separation
- patch for couple of minor coverity scan fixes.
* Thu Sep 28 2017 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 0.0.5-1
- Update to version 0.0.5
* Sat Sep 23 2017 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 0.0.4-1
- Add privilege separation
* Tue Aug 01 2017 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 0.0.3-1
- Fix REST param handling, CLI locale.
* Thu Jun 01 2017 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 0.0.2-1
- Fix python3 string issues.
* Tue May 23 2017 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 0.0.1-2
- Changes for lightwave dependencies
* Thu May 04 2017 Priyesh Padmavilasom <ppadmavilasom@vmware.com> 0.0.1-1
- Initial build. First version