#
# spec file for package openwsman (Version @VERSION@)
#
# Copyright (c) 2009 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.

# Please submit bugfixes or comments via http://bugs.opensuse.org/
#

# norootforbuild


Name:           openwsman
BuildRequires:  gcc-c++ swig >= 1.3.30
BuildRequires:  libxml2-devel pam-devel sblim-sfcc-devel

BuildRequires:  python-devel perl

%if 0%{?rhel_version} > 0
BuildRequires:  -vim
%endif

%if 0%{?fedora_version} || 0%{?centos_version} || 0%{?rhel_version} || 0%{?fedora} || 0%{?rhel}
BuildRequires:  curl-devel pkgconfig openssl-devel ruby ruby-devel
%if 0%{?fedora} > 0
BuildRequires: perl-devel
%endif
%endif

%if 0%{?suse_version} > 0

BuildRequires:  libcurl-devel 
%if 0%{?suse_version} > 1020
BuildRequires:  fdupes libopenssl-devel 
%endif

# SLE10
%if 0%{?suse_version} < 1020
BuildRequires:  libidn-devel openssl-devel 
%endif

# SLE9
%if 0%{?suse_version} < 920
BuildRequires:  pkgconfig ruby
%else
BuildRequires:  ruby-devel
BuildRequires:  pkg-config
%endif

%endif

PreReq:         sed coreutils grep /bin/hostname
Version:        @VERSION@
Release:        1
# Mandriva:
# Release %mkrel 1
Url:            http://www.openwsman.org/
License:        BSD 3-clause (or similar)
Group:          System/Management
Summary:        Opensource Implementation of WS-Management
Source:         %{name}-%{version}.tar.bz2
Source1:        %{name}.rpmlintrc
Source2:        %{name}.pam
Source3:        %{name}.SuSEfirewall2
Patch0:         %{name}-pam-auth.patch
BuildRoot:      %{_tmppath}/%{name}-%{version}-build

%description
Opensource Implementation of WS-Management



Authors:
--------
    Anas Nashif <anas.nashif@intel.com>
    Vadim Revyakin <vadim.revyakin@intel.com>
    Denis Sadykov <denis.sadykov@intel.com>

%package -n libwsman1
License:        BSD 3-clause (or similar)
Group:          System/Management
Summary:        Opensource Implementation of WS-Management
Provides:       openwsman = %{version}
Obsoletes:      openwsman < %{version}

%description -n libwsman1
Opensource Implementation of WS-Management



Authors:
--------
    Anas Nashif <anas.nashif@intel.com>
    Vadim Revyakin <vadim.revyakin@intel.com>
    Denis Sadykov <denis.sadykov@intel.com>

%package -n libwsman-devel
License:        BSD 3-clause (or similar)
Group:          Development/Libraries/C and C++
Summary:        Opensource Implementation of WS-Management
Provides:       openwsman-devel = %{version}
Obsoletes:      openwsman-devel < %{version}
Requires:       libwsman1 = %{version}
Requires:       %{name}-server = %{version}
Requires:       %{name}-client = %{version}
Requires:       sblim-sfcc-devel libxml2-devel pam-devel
%if 0%{?suse_version} > 0
Requires:       libcurl-devel
%else
Requires:       curl-devel
%endif

%description -n libwsman-devel
Opensource Implementation of WS-Management



Authors:
--------
    Anas Nashif <anas.nashif@intel.com>
    Vadim Revyakin <vadim.revyakin@intel.com>
    Denis Sadykov <denis.sadykov@intel.com>

%package client
License:        BSD 3-clause (or similar)
Group:          System/Management
Summary:        Openwsman Client libraries

%description client
Openwsman Client libraries



Authors:
--------
    Anas Nashif <anas.nashif@intel.com>
    Vadim Revyakin <vadim.revyakin@intel.com>
    Denis Sadykov <denis.sadykov@intel.com>

%package server
License:        BSD 3-clause (or similar)
Group:          System/Management
PreReq:         sed coreutils grep diffutils /bin/hostname
%if 0%{?suse_version}
PreReq:         fillup
%endif
Summary:        Openwsman Server and service libraries

%description server
Openwsman Server and service libraries



Authors:
--------
    Anas Nashif <anas.nashif@intel.com>
    Vadim Revyakin <vadim.revyakin@intel.com>
    Denis Sadykov <denis.sadykov@intel.com>


%package python
License:        BSD 3-clause (or similar)
Group:          Development/Libraries/Python
Summary:        Python bindings for openwsman client API
%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib()")}
%{!?python_sitearch: %global python_sitearch %(%{__python} -c "from distutils.sysconfig import get_python_lib; print get_python_lib(1)")}
%{!?py_requires: %define py_requires Requires: python}
%{py_requires}

%description python
This package provides Python bindings to access the openwsman client
API.



Authors:
--------
    Anas Nashif <anas.nashif@intel.com>
    Vadim Revyakin <vadim.revyakin@intel.com>
    Denis Sadykov <denis.sadykov@intel.com>

%package ruby
License:        BSD 3-clause (or similar)
Group:          System/Management
Requires:       ruby
%if 0%{?fedora_version} || 0%{?centos_version} || 0%{?rhel_version} || 0%{?fedora} || 0%{?rhel}
Requires:       ruby(abi) = 1.8
%endif
%if 0%{?suse_version} > 1120
Requires:       ruby(abi) = 1.8
%endif
%if 0%{?ruby_sitelib} == 0
%{!?ruby_sitelib: %global ruby_sitelib %(ruby -r rbconfig -e 'vd = Config::CONFIG["vendorlibdir"]; print(vd ? vd : Config::CONFIG["sitelibdir"])')}
%{!?ruby_sitearch: %global ruby_sitearch %(ruby -r rbconfig -e 'vad = Config::CONFIG["vendorarchdir"]; print(vad ? vad : Config::CONFIG["sitearchdir"])')}
%endif
Summary:        Ruby bindings for openwsman client API

%description ruby
This package provides Ruby bindings to access the openwsman client API.



Authors:
--------
    Anas Nashif <anas.nashif@intel.com>
    Vadim Revyakin <vadim.revyakin@intel.com>
    Denis Sadykov <denis.sadykov@intel.com>

%package perl
License:        BSD 3-clause (or similar)
Group:          System/Management
%if 0%{?fedora}
Requires:       perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version))
%else
Requires:       perl = %{perl_version}
%endif
Summary:        Perl bindings for openwsman client API

%description perl
This package provides Perl bindings to access the openwsman client API.



Authors:
--------
    Anas Nashif <anas.nashif@intel.com>
    Vadim Revyakin <vadim.revyakin@intel.com>
    Denis Sadykov <denis.sadykov@intel.com>

%prep
%setup -q
%patch0

%build
sh autoconfiscate.sh
mkdir -p m4
%configure \
    --disable-more-warnings \
    --disable-static \
    --enable-python \
    --enable-ruby \
    --enable-perl \
    --enable-ipv6
make clean
%if 0%{?fedora}
export RPM_OPT_FLAGS="$RPM_OPT_FLAGS -DFEDORA"
%endif
make CFLAGS="$RPM_OPT_FLAGS" %{?jobs:-j%jobs}

%install
make DESTDIR=$RPM_BUILD_ROOT install
rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
rm -f $RPM_BUILD_ROOT%{_libdir}/openwsman/plugins/*.la
rm -f $RPM_BUILD_ROOT%{_libdir}/openwsman/authenticators/*.la
mkdir -p $RPM_BUILD_ROOT%{_sysconfdir}/init.d
install -m 644 etc/openwsman.conf $RPM_BUILD_ROOT%{_sysconfdir}/openwsman
install -m 644 etc/openwsman_client.conf $RPM_BUILD_ROOT%{_sysconfdir}/openwsman
install -m 755 etc/init/openwsmand.sh $RPM_BUILD_ROOT%{_sysconfdir}/init.d/openwsmand
install -m 644 etc/ssleay.cnf $RPM_BUILD_ROOT%{_sysconfdir}/openwsman
install -m 644 %{S:2} $RPM_BUILD_ROOT%{_sysconfdir}/pam.d/openwsman
ln -sf %{_sysconfdir}/init.d/openwsmand $RPM_BUILD_ROOT%{_sbindir}/rcopenwsmand
%if 0%{?suse_version}
install -D -m 644 %{S:3} $RPM_BUILD_ROOT%{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/openwsman
%endif

%clean
rm -rf $RPM_BUILD_ROOT

%post -n libwsman1 -p /sbin/ldconfig

%postun -n libwsman1 -p /sbin/ldconfig

%post server
/sbin/ldconfig
%if 0%{?suse_version}
%{fillup_and_insserv openwsmand}
%else
# chkconfig?!
%endif

%preun server
%if 0%{?suse_version}
%{stop_on_removal openwsmand}
%else
# chkconfig?!
%endif

%postun server
%if 0%{?suse_version}
%{insserv_cleanup openwsmand}
%else
# chkconfig?!
%endif
rm -f /var/log/wsmand.log
/sbin/ldconfig

%post client -p /sbin/ldconfig

%postun client -p /sbin/ldconfig

%files -n libwsman1
%defattr(-,root,root)
%doc AUTHORS COPYING ChangeLog README TODO
%{_libdir}/libwsman.so.*
%{_libdir}/libwsman_client.so.*
%{_libdir}/libwsman_curl_client_transport.so.*

%files -n libwsman-devel
%defattr(-,root,root)
%{_includedir}/*
%{_libdir}/pkgconfig/*
%{_libdir}/*.so

%files python
%defattr(-,root,root)
%{python_sitearch}/*.so
%{python_sitelib}/*.py

%files ruby
%defattr(-,root,root)
%if 0%{?suse_version}
%{ruby_sitearch}/openwsman.so
%dir %{ruby_sitelib}/openwsman
%{ruby_sitelib}/openwsman/*.rb
%endif
%if 0%{?mandriva_version}
%{ruby_sitearchdir}/openwsman.so
%dir %{ruby_sitelibdir}/openwsman
%{ruby_sitelibdir}/openwsman/*.rb
%endif
%if 0%{?fedora} > 0 || 0%{?rhel_version} > 0
%{ruby_sitearch}/openwsman.so
%dir %{ruby_sitelib}/openwsman
%{ruby_sitelib}/openwsman/*.rb
%endif

%files perl
%defattr(-,root,root)
%{perl_vendorarch}/openwsman.so
%{perl_vendorlib}/openwsman.pm

%files server
%defattr(-,root,root)
%dir %{_sysconfdir}/openwsman
%config(noreplace) %{_sysconfdir}/openwsman/openwsman.conf
%config(noreplace) %{_sysconfdir}/openwsman/ssleay.cnf
%attr(0755,root,root) %{_sysconfdir}/openwsman/owsmangencert.sh
%config %{_sysconfdir}/pam.d/openwsman
%if 0%{?suse_version} > 0
%config %{_sysconfdir}/sysconfig/SuSEfirewall2.d/services/openwsman
%endif
%attr(0755,root,root) %{_sysconfdir}/init.d/openwsmand
%dir %{_libdir}/openwsman
%dir %{_libdir}/openwsman/authenticators
%{_libdir}/openwsman/authenticators/*.so
%{_libdir}/openwsman/authenticators/*.so.*
%dir %{_libdir}/openwsman/plugins
%{_libdir}/openwsman/plugins/*.so
%{_libdir}/openwsman/plugins/*.so.*
%{_sbindir}/openwsmand
%{_sbindir}/rcopenwsmand
%{_libdir}/libwsman_server.so.*

%files client
%defattr(-,root,root)
%{_libdir}/libwsman_clientpp.so.*
%config(noreplace) %{_sysconfdir}/openwsman/openwsman_client.conf

%changelog
