%define package_name ixpdimm_sw
%define product_name ixpdimm
%define api_name lib%{product_name}
%define api_dname %{product_name}-devel
%define data_name %{product_name}-data
%define cim_lib_name lib%{product_name}-cim
%define monitor_name %{product_name}-monitor
%define cli_name %{product_name}-cli
%define cli_lib_name lib%{product_name}-cli

%define build_version 01.00.00.2491
%define invm_framework_build_version 99.99.99.9999
%define _unpackaged_files_terminate_build 0

Name: %{package_name}
Version: %{build_version}
Release: 1%{?dist}
Summary: API for development of IXPDIMM management utilities
License: BSD
Group: Applications/System
URL: https://01.org/ixpdimm-sw
Source: https://github.com/01org/ixpdimm_sw/releases/download/v%{version}/%{name}-%{version}.tar.gz
ExclusiveArch: x86_64

BuildRequires: pkgconfig(libkmod)
BuildRequires: pkgconfig(sqlite3)
BuildRequires: pkgconfig(libndctl)
BuildRequires: pkgconfig(openssl)
BuildRequires: pkgconfig(libinvm-cli)
BuildRequires: pkgconfig(libinvm-cim)
BuildRequires: pkgconfig(libinvm-i18n)
BuildRequires: numactl-devel
BuildRequires: sblim-cmpi-devel
BuildRequires: python2
BuildRequires: cmake
BuildRequires: gettext
BuildRequires: gcc
BuildRequires: gcc-c++

%description
An application program interface (API) which provides programmatic access to
the IXPSIMM SW functionality.

%prep
%setup -q -n %{name}-%{version}

%package -n %{api_name}
Summary:        API for development of %{product_name} management utilities
Group:          System/Libraries
Requires:       %{data_name}
Requires:       ndctl-libs >= 58.2
Requires:       libinvm-i18n >= 01.01
Obsoletes:      ixpdimm_sw
Obsoletes:      libixpdimm-core

%description -n %{api_name}
An application program interface (API) which provides programmatic access to
the IXPSIMM SW functionality.

%package -n %{api_dname}
Summary:        Development files for %{name}
Group:          Development/Libraries
Requires:       %{api_name}%{?_isa} = %{version}-%{release}
Obsoletes:      ixpdimm_sw-devel

%description -n %{api_dname}
The %{api_dname} package contains header files for
developing applications that use IXPDIMM SW.

%package -n %{data_name}
Summary:        Data files for %{package_name}
Group:          System/Libraries
Conflicts:      ixpdimm_sw

%description -n %{data_name}
Data files for %{package_name}

%package -n %{cim_lib_name}
Summary:        CIM provider library for IXPDIMM SW
Group:          Development/Libraries
Requires:       %{api_name}%{?_isa} = %{version}-%{release}
Requires:       libinvm-cim >= 01.01
Requires:       pywbem
Requires(pre):  pywbem
Requires(post): pywbem

%description -n %{cim_lib_name}
A Common Information Model (CIM) provider library to expose the IXPDIMM SW
functionality as standard CIM objects to plug-in to common information
model object managers (CIMOMs).

%package -n %{monitor_name}
Summary:        Daemon for monitoring the status of IXPDIMM
Group:          System Environment/Daemons
Requires:       %{cim_lib_name}%{?_isa} = %{version}-%{release}
%{?systemd_requires}
BuildRequires:  systemd

%description -n %{monitor_name}
A monitor daemon for monitoring the health and status of IXPDIMMs.

%package -n %{cli_name}
Summary:        CLI for management of IXPDIMM
Group:          Development/Tools
Requires:       %{cli_lib_name}%{?_isa} = %{version}-%{release}
Requires:       libinvm-cli >= 01.01
Requires:       libinvm-i18n >= 01.01

%description -n %{cli_name}
A Command Line Interface (CLI) application for configuring and
managing IXPDIMMs from the command line.

%package -n %{cli_lib_name}
Summary:        CLI for managment of %{product_name}
Group:          System/Management
Requires:       %{cim_lib_name}%{?_isa} = %{version}-%{release}
Requires:       libinvm-cli >= 01.01
Requires:       libinvm-cim >= 01.01
Requires:       libinvm-i18n >= 01.01

%description -n %{cli_lib_name}
A library for IXPDIMM CLI applications

%build
%cmake -DBUILDNUM=%{version} -DCMAKE_INSTALL_PREFIX=/usr -DRELEASE=ON \
    -DRPM_BUILD=ON -DLINUX_PRODUCT_NAME=%{name} \
    -DCMAKE_INSTALL_LIBDIR=%{_libdir} \
    -DCMAKE_INSTALL_INCLUDEDIR=%{_includedir} \
    -DCMAKE_INSTALL_BINDIR=%{_bindir} \
    -DCMAKE_INSTALL_DATAROOTDIR=%{_datadir} \
    -DCMAKE_INSTALL_MANDIR=%{_mandir} \
    -DCMAKE_INSTALL_FULL_LOCALSTATEDIR=%{_localstatedir} \
    -DINSTALL_UNITDIR=%{_unitdir} \
    -DCFLAGS_EXTERNAL="%{?optflags}" \
    -DEXTERNAL=ON
make -f Makefile %{?_smp_mflags}

%install
%{!?_cmake_version: cd build}
make -f Makefile install DESTDIR=%{buildroot}

%post -n %{monitor_name}
%systemd_post ixpdimm-monitor.service

%post -n %{api_name} -p /sbin/ldconfig
%post -n %{cli_lib_name} -p /sbin/ldconfig
%post -n %{cim_lib_name} -p /sbin/ldconfig

%postun -n %{api_name} -p /sbin/ldconfig
%postun -n %{cli_lib_name} -p /sbin/ldconfig
%postun -n %{cim_lib_name} -p /sbin/ldconfig

%preun -n %{monitor_name}
%systemd_preun stop ixpdimm-monitor.service

%postun -n  %{monitor_name}
%systemd_postun_with_restart ixpdimm-monitor.service

%files -n %{api_name}
%defattr(-,root,root)
%doc README.md
%{_libdir}/libixpdimm.so.*
%{_libdir}/libixpdimm-core.so.*
%{_libdir}/libixpdimm-common.so.*
%license LICENSE

%files -n %{api_dname}
%defattr(-,root,root)
%doc README.md
%{_libdir}/libixpdimm.so
%{_libdir}/libixpdimm-core.so
%{_libdir}/libixpdimm-common.so
%{_libdir}/libixpdimm-cli.so
%{_libdir}/libixpdimm-cim.so
%attr(644,root,root) %{_includedir}/nvm_types.h
%attr(644,root,root) %{_includedir}/nvm_management.h
%attr(644,root,root) %{_includedir}/export_api.h
%license LICENSE

%files -n %{data_name}
%defattr(644,root,root)
%dir %{_sharedstatedir}/%{name}
%{_sharedstatedir}/%{name}/*.pem
%config %{_sharedstatedir}/%{name}/*.dat*

%files -n %{cim_lib_name}
%defattr(-,root,root)
%doc README.md
%{_libdir}/libixpdimm-cim.so.*
%license LICENSE

%files -n %{monitor_name}
%defattr(-,root,root)
%{_bindir}/ixpdimm-monitor
%{_unitdir}/ixpdimm-monitor.service
%attr(644,root,root) %{_mandir}/man8/ixpdimm-monitor*
%license LICENSE

%files -n %{cli_name}
%defattr(-,root,root)
%{_bindir}/ixpdimm-cli
%attr(644,root,root) %{_mandir}/man8/ixpdimm-cli*
%license LICENSE

%files -n %{cli_lib_name}
%defattr(-,root,root)
%{_libdir}/libixpdimm-cli.so.*

%changelog