--- /dev/null
+#
+# Conditional build:
+%bcond_without python2 # CPython 2.x support
+%bcond_without python3 # CPython 3.x support
+%bcond_with tests
+
+Summary: Storage array management library
+Summary(pl.UTF-8): Biblioteka do zarządzania macierzami dyskowymi
+Name: libstoragemgmt
+Version: 1.9.4
+Release: 1
+License: LGPL v2+
+Group: Libraries
+#Source0Download: https://github.com/libstorage/libstoragemgmt/releases
+Source0: https://github.com/libstorage/libstoragemgmt/releases/download/%{version}/%{name}-%{version}.tar.gz
+# Source0-md5: 8fa7d545905d0e9d872d6611ab9cd5ec
+URL: https://github.com/libstorage/libstoragemgmt
+BuildRequires: autoconf >= 2.50
+BuildRequires: automake
+BuildRequires: check-devel >= 0.9.8
+BuildRequires: glib2-devel >= 1:2.22.5
+BuildRequires: libconfig-devel >= 1.3.2
+BuildRequires: libstdc++-devel
+BuildRequires: libtool
+BuildRequires: libxml2-devel >= 1:2.5.0
+BuildRequires: perl-base
+BuildRequires: openssl-devel
+BuildRequires: rpm-build >= 4.6
+BuildRequires: systemd-devel
+BuildRequires: systemd-units
+BuildRequires: pkgconfig
+BuildRequires: procps
+%if %{with python2}
+BuildRequires: python-devel >= 1:2.6
+BuildRequires: python-six
+BuildRequires: python-pywbem
+%endif
+BuildRequires: python3-devel >= 1:3.2
+BuildRequires: python3-pywbem
+BuildRequires: python3-six
+BuildRequires: rpm-build >= 4.6
+BuildRequires: rpmbuild(macros) >= 1.673
+BuildRequires: sqlite3-devel >= 3
+BuildRequires: systemd-devel
+BuildRequires: udev-devel
+BuildRoot: %{tmpdir}/%{name}-%{version}-root-%(id -u -n)
+
+%description
+The libStorageMgmt library will provide a vendor agnostic open source
+storage application programming interface (API) that will allow
+management of storage arrays. The library includes a command line
+interface for interactive use and scripting (command lsmcli). The
+library also has a daemon that is used for executing plug-ins in a
+separate process (lsmd).
+
+%description -l pl.UTF-8
+Biblioteka libStorageMgmt ma na celu udostępnienie niezależnego od
+producenta, mającego otwarte źródła API, pozwalającego na operowanie
+na macierzach dyskowych. Biblioteka zawiera interfejs linii poleceń
+do użycia interaktywnego i w skryptach (polecenie lsmcli). Ma także
+demona, używanego przy uruchamianiu wtyczek w osobnym procesie (lsmd).
+
+%package -n bash-completion-libstoragemgmt
+Summary: Bash completion for lsmcli command
+Summary(pl.UTF-8): Bashowe uzupełnianie składni polecenia lsmcli
+Group: Applications/Shells
+Requires: %{name} = %{version}-%{release}
+Requires: bash-completion >= 2.0
+
+%description -n bash-completion-libstoragemgmt
+Bash completion for lsmcli command.
+
+%description -n bash-completion-libstoragemgmt -l pl.UTF-8
+Bashowe uzupełnianie składni polecenia lsmcli.
+
+%package daemon
+Summary: libStorageMgmt daemon
+Summary(pl.UTF-8): Demon libStorageMgmt
+Group: Daemons
+Requires(pre): /bin/id
+Requires(pre): /usr/bin/getgid
+Requires(pre): /usr/sbin/groupadd
+Requires(pre): /usr/sbin/useradd
+Requires(postun): /usr/sbin/groupdel
+Requires(postun): /usr/sbin/userdel
+Requires: %{name} = %{version}-%{release}
+Requires: python3-%{name} = %{version}-%{release}
+Requires: systemd-units
+Provides: group(libstoragemgmt)
+Provides: user(libstoragemgmt)
+Obsoletes: libstoragemgmt-netapp-plugin < 1.9.4
+Obsoletes: libstoragemgmt-nstor-plugin < 1.9.4
+Obsoletes: libstoragemgmt-udev < 1.9.4
+
+%description daemon
+libStorageMgmt daemon.
+
+%description daemon -l pl.UTF-8
+Demon libStorageMgmt.
+
+%package devel
+Summary: Development files for libStorageMgmt
+Summary(pl.UTF-8): Pliki programistyczne biblioteki libStorageMgmt
+Group: Libraries
+Requires: %{name} = %{version}-%{release}
+
+%description devel
+This package contains header files for developing applications that
+use libStorageMgmt.
+
+%description devel -l pl.UTF-8
+Ten pakiet zawiera pliki nagłówkowe do tworzenia aplikacji
+wykorzystujących libStorageMgmt.
+
+%package -n python-%{name}
+Summary: Python 2 client libraries and plug-in support for libStorageMgmt
+Summary(pl.UTF-8): Biblioteki klienckie Pythona 2 oraz obsługa wtyczek libStorageMgmt
+Group: Libraries/Python
+Requires: %{name} = %{version}-%{release}
+Obsoletes: python-libstoragemgmt-clibs < 1.9.4
+Obsoletes: libstoragemgmt-python-clibs < 1.9
+
+%description -n python-%{name}
+This package contains Python client libraries as well as Python
+framework support and open source plug-ins written in Python.
+
+%description -n python-%{name} -l pl.UTF-8
+Ten pakiet zawiera biblioteki klienckie Pythona oraz obsługę
+szkieletu wraz z wtyczkami napisanymi w Pythonie.
+
+%package -n python3-%{name}
+Summary: Python 3 client libraries and plug-in support for libStorageMgmt
+Summary(pl.UTF-8): Biblioteki klienckie Pythona 3 oraz obsługa wtyczek libStorageMgmt
+Group: Libraries/Python
+Requires: %{name} = %{version}-%{release}
+Obsoletes: python3-libstoragemgmt-clibs < 1.9.4
+
+%description -n python3-%{name}
+This package contains Python client libraries as well as Python
+framework support and open source plug-ins written in Python.
+
+%description -n python3-%{name} -l pl.UTF-8
+Ten pakiet zawiera biblioteki klienckie Pythona oraz obsługę
+szkieletu wraz z wtyczkami napisanymi w Pythonie.
+
+%package plugin-arcconf
+Summary: Files for Microsemi Adaptec and Smart Family support for libStorageMgmt
+Summary(pl.UTF-8): Pliki obsługi macierzy rodziny Microsemi Adaptec i Smart dla libStorageMgmt
+Group: Libraries
+Requires: %{name}-daemon = %{version}-%{release}
+Obsoletes: libstoragemgmt-arcconf-plugin < 1.9.4
+BuildArch: noarch
+
+%description plugin-arcconf
+This package contains the plugin for Microsemi Adaptec RAID and Smart
+Family Controller storage management.
+
+%description plugin-arcconf -l pl.UTF-8
+Ten pakiet zawiera wtyczkę do zarządzania macierzami rodziny Microsemi
+Adaptec RAID i Smart.
+
+%package plugin-hpsa
+Summary: Files for HP SmartArray array support for libStorageMgmt
+Summary(pl.UTF-8): Pliki obsługi macierzy HP SmartArray dla libStorageMgmt
+Group: Libraries
+Requires: %{name}-daemon = %{version}-%{release}
+Obsoletes: libstoragemgmt-hpsa-plugin < 1.9.4
+BuildArch: noarch
+
+%description plugin-hpsa
+This package contains the plugin for HP SmartArray storage management
+via hpssacli.
+
+%description plugin-hpsa -l pl.UTF-8
+Ten pakiet zawiera wtyczkę do zarządzania macierzami HP SmartArray
+poprzez hpssacli.
+
+%package plugin-local
+Summary: Files for local pseudo plugin of libStorageMgmt
+Summary(pl.UTF-8): Pliki lokalnej pseudo wtyczki dla libStorageMgmt
+Group: Libraries
+Requires: %{name}-daemon = %{version}-%{release}
+Obsoletes: libstoragemgmt-local-plugin < 1.9.4
+BuildArch: noarch
+
+%description plugin-local
+This is a plugin that provides auto plugin selection for locally
+managed storage.
+
+%description plugin-local -l pl.UTF-8
+Ten pakiet zawiera wtyczkę zapewniającą automatyczny wybór wtyczki dla
+lokalnie zarządzanej przestrzeni dyskowej.
+
+%package plugin-megaraid
+Summary: Files for LSI MegaRAID array support for libStorageMgmt
+Summary(pl.UTF-8): Pliki obsługi macierzy LSI MegaRAID dla libStorageMgmt
+Group: Libraries
+Requires: %{name}-daemon = %{version}-%{release}
+Obsoletes: libstoragemgmt-megaraid-plugin < 1.9.4
+BuildArch: noarch
+
+%description plugin-megaraid
+This package contains the plugin for LSI MegaRAID storage management
+via storcli.
+
+%description plugin-megaraid -l pl.UTF-8
+Ten pakiet zawiera wtyczkę do zarządzania macierzami LSI MegaRAID
+poprzez storcli.
+
+%package plugin-nfs
+Summary: Files for NFS local filesystem support for libStorageMgmt
+Summary(pl.UTF-8): Pliki do lokalnej obsługi systemu plików NFS dla libStorageMgmt
+Group: Libraries
+Requires: %{name}-daemon = %{version}-%{release}
+Requires: nfs-utils
+Obsoletes: libstoragemgmt-nfs-plugin < 1.9.4
+Obsoletes: libstoragemgmt-nfs-plugin-clibs < 1.9.4
+
+%description plugin-nfs
+This package contains plug-in for local NFS exports support.
+
+%description plugin-nfs -l pl.UTF-8
+Ten pakiet zawiera wtyczkę do obsługi lokalnego eksportowania NFS-a.
+
+%package plugin-smis
+Summary: Files for SMI-S generic array support for libStorageMgmt
+Summary(pl.UTF-8): Pliki ogólnej obsługi macierzy SMI-S dla libStorageMgmt
+Group: Libraries
+Requires: %{name}-daemon = %{version}-%{release}
+Requires: python3-pywbem
+Obsoletes: libstoragemgmt-smis-plugin < 1.9.4
+BuildArch: noarch
+
+%description plugin-smis
+This package contains plug-in for generic SMI-S array support.
+
+%description plugin-smis -l pl.UTF-8
+Ten pakiet zawiera wtyczkę do ogólnej obsługi macierzy SMI-S.
+
+%package plugin-targetd
+Summary: Files for targetd array support for libStorageMgmt
+Summary(pl.UTF-8): Pliki obsługi macierzy targetd dla libStorageMgmt
+Group: Libraries
+Requires: %{name}-daemon = %{version}-%{release}
+Obsoletes: libstoragemgmt-targetd-plugin < 1.9.4
+BuildArch: noarch
+
+%description plugin-targetd
+This package contains plug-in for targetd array support.
+
+%description plugin-targetd -l pl.UTF-8
+Ten pakiet zawiera wtyczkę do obsługi macierzy targetd.
+
+%prep
+%setup -q
+
+%{__sed} -i -e '1s,/usr/bin/env python@PY_VERSION@,%{__python3},' \
+ tools/basic_check/local_check.py.in \
+ tools/lsmcli/lsmcli.in \
+ tools/use_cases/find_unused_lun.py.in \
+ plugin/*_plugin/*_lsmplugin.in
+
+%build
+install -d build
+cd build
+../%configure \
+ --with-bash-completion-dir=%{bash_compdir} \
+ --with-python3 \
+ --disable-silent-rules \
+ --disable-static \
+
+%{__make}
+cd ..
+
+%if %{with python2}
+install -d build-py2
+cd build-py2
+../%configure \
+ --with-bash-completion-dir=%{bash_compdir} \
+ --with-python2 \
+ --disable-silent-rules \
+ --disable-static \
+
+%{__make}
+cd ..
+%endif
+
+%if %{with tests}
+if ! make -C build check
+then
+ cat test-suite.log || true
+ exit 1
+fi
+
+%if %{with python2}
+if ! make -C build-py2 check
+then
+ cat test-suite.log || true
+ exit 1
+fi
+%endif
+%endif
+
+%install
+rm -rf $RPM_BUILD_ROOT
+
+%if %{with python2}
+%{__make} -C build-py2 install \
+ DESTDIR=$RPM_BUILD_ROOT
+
+%{__rm} $RPM_BUILD_ROOT%{py_sitedir}/{lsm,nfs_plugin}/*.la
+%{__rm} -r $RPM_BUILD_ROOT%{py_sitedir}/*_plugin
+
+%{__rm} $RPM_BUILD_ROOT%{_bindir}/lsmcli
+%endif
+
+%{__make} -C build install \
+ DESTDIR=$RPM_BUILD_ROOT
+
+%{__rm} $RPM_BUILD_ROOT%{_libdir}/libstoragemgmt.la
+%{__rm} $RPM_BUILD_ROOT%{py3_sitedir}/{lsm,nfs_plugin}/*.la
+
+# Files for udev handling
+install -d $RPM_BUILD_ROOT/lib/udev/rules.d
+cp -p tools/udev/90-scsi-ua.rules $RPM_BUILD_ROOT/lib/udev/rules.d/90-scsi-ua.rules
+install build/tools/udev/scan-scsi-target $RPM_BUILD_ROOT/lib/udev/scan-scsi-target
+
+install -d $RPM_BUILD_ROOT/var/run/lsm/ipc
+
+%clean
+rm -rf $RPM_BUILD_ROOT
+
+%post -p /sbin/ldconfig
+%postun -p /sbin/ldconfig
+
+%pre daemon
+%groupadd -g 345 libstoragemgmt
+%useradd -u 345 -d /var/run/lsm -s /bin/false -c "libstoragemgmt daemon" -g libstoragemgmt libstoragemgmt
+
+%post daemon
+%systemd_post %{name}.service
+
+%preun daemon
+%systemd_preun %{name}.service
+
+%postun daemon
+%systemd_postun %{name}.service
+if [ "$1" = "0" ]; then
+ %userremove libstoragemgmt
+ %groupremove libstoragemgmt
+fi
+
+# Need to restart lsmd if plugin is new installed or removed.
+%post plugin-arcconf
+if [ $1 -eq 1 ]; then
+ %systemd_service_restart %{name}.service
+fi
+
+%postun plugin-arcconf
+if [ $1 -eq 0 ]; then
+ %systemd_service_restart %{name}.service
+fi
+
+# Need to restart lsmd if plugin is new installed or removed.
+%post plugin-hpsa
+if [ $1 -eq 1 ]; then
+ %systemd_service_restart %{name}.service
+fi
+
+%postun plugin-hpsa
+if [ $1 -eq 0 ]; then
+ %systemd_service_restart %{name}.service
+fi
+
+# Need to restart lsmd if plugin is new installed or removed.
+%post plugin-local
+if [ $1 -eq 1 ]; then
+ %systemd_service_restart %{name}.service
+fi
+
+%postun plugin-local
+if [ $1 -eq 0 ]; then
+ %systemd_service_restart %{name}.service
+fi
+
+# Need to restart lsmd if plugin is new installed or removed.
+%post plugin-megaraid
+if [ $1 -eq 1 ]; then
+ %systemd_service_restart %{name}.service
+fi
+
+%postun plugin-megaraid
+if [ $1 -eq 0 ]; then
+ %systemd_service_restart %{name}.service
+fi
+
+# Need to restart lsmd if plugin is new installed or removed.
+%post plugin-nfs
+if [ $1 -eq 1 ]; then
+ %systemd_service_restart %{name}.service
+fi
+
+%postun plugin-nfs
+if [ $1 -eq 0 ]; then
+ %systemd_service_restart %{name}.service
+fi
+
+# Need to restart lsmd if plugin is new installed or removed.
+%post plugin-smis
+if [ $1 -eq 1 ]; then
+ %systemd_service_restart %{name}.service
+fi
+
+%postun plugin-smis
+if [ $1 -eq 0 ]; then
+ %systemd_service_restart %{name}.service
+fi
+
+# Need to restart lsmd if plugin is new installed or removed.
+%post plugin-targetd
+if [ $1 -eq 1 ]; then
+ %systemd_service_restart %{name}.service
+fi
+
+%postun plugin-targetd
+if [ $1 -eq 0 ]; then
+ %systemd_service_restart %{name}.service
+fi
+
+%files
+%defattr(644,root,root,755)
+%doc AUTHORS NEWS README
+%attr(755,root,root) %{_bindir}/lsmcli
+%attr(755,root,root) %{_libdir}/libstoragemgmt.so.*.*.*
+%attr(755,root,root) %ghost %{_libdir}/libstoragemgmt.so.1
+%{_mandir}/man1/lsmcli.1*
+
+%files -n bash-completion-libstoragemgmt
+%defattr(644,root,root,755)
+%{bash_compdir}/lsmcli
+
+%files daemon
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/lsmd
+%attr(755,root,root) %{_bindir}/simc_lsmplugin
+%attr(755,root,root) /lib/udev/scan-scsi-target
+/lib/udev/rules.d/90-scsi-ua.rules
+%dir %{_sysconfdir}/lsm
+%dir %{_sysconfdir}/lsm/pluginconf.d
+%config(noreplace) %{_sysconfdir}/lsm/lsmd.conf
+%{_mandir}/man1/lsmd.1*
+%{_mandir}/man1/simc_lsmplugin.1*
+%{_mandir}/man5/lsmd.conf.5*
+%{systemdunitdir}/%{name}.service
+%{systemdtmpfilesdir}/%{name}.conf
+%attr(775,root,libstoragemgmt) %dir /var/run/lsm
+%attr(775,root,libstoragemgmt) %dir /var/run/lsm/ipc
+
+%files devel
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_libdir}/libstoragemgmt.so
+%{_includedir}/libstoragemgmt
+%{_pkgconfigdir}/libstoragemgmt.pc
+%{_mandir}/man3/lsm_*.3*
+%{_mandir}/man3/libstoragemgmt.h.3*
+
+%if %{with python2}
+%files -n python-%{name}
+%defattr(644,root,root,755)
+%dir %{py_sitedir}/lsm
+%attr(755,root,root) %{py_sitedir}/lsm/_clib.so
+%{py_sitedir}/lsm/*.py[co]
+%{py_sitedir}/lsm/lsmcli
+%endif
+
+%files -n python3-%{name}
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/sim_lsmplugin
+%dir %{py3_sitedir}/lsm
+%attr(755,root,root) %{py3_sitedir}/lsm/_clib.so
+%{py3_sitedir}/lsm/*.py
+%{py3_sitedir}/lsm/__pycache__
+%{py3_sitedir}/lsm/lsmcli
+%{py3_sitedir}/sim_plugin
+%dir %{_libexecdir}/lsm.d
+%{_libexecdir}/lsm.d/find_unused_lun.py*
+%{_libexecdir}/lsm.d/local_check.py*
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/lsm/pluginconf.d/sim.conf
+%{_mandir}/man1/sim_lsmplugin.1*
+
+%files plugin-arcconf
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/arcconf_lsmplugin
+%{py3_sitedir}/arcconf_plugin
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/lsm/pluginconf.d/arcconf.conf
+%{_mandir}/man1/arcconf_lsmplugin.1*
+
+%files plugin-hpsa
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/hpsa_lsmplugin
+%{py3_sitedir}/hpsa_plugin
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/lsm/pluginconf.d/hpsa.conf
+%{_mandir}/man1/hpsa_lsmplugin.1*
+
+%files plugin-local
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/local_lsmplugin
+%{py3_sitedir}/local_plugin
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/lsm/pluginconf.d/local.conf
+%{_mandir}/man1/local_lsmplugin.1*
+
+%files plugin-megaraid
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/megaraid_lsmplugin
+%{py3_sitedir}/megaraid_plugin
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/lsm/pluginconf.d/megaraid.conf
+%{_mandir}/man1/megaraid_lsmplugin.1*
+
+%files plugin-nfs
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/nfs_lsmplugin
+%dir %{py3_sitedir}/nfs_plugin
+%attr(755,root,root) %{py3_sitedir}/nfs_plugin/nfs_clib.so
+%{py3_sitedir}/nfs_plugin/*.py
+%{py3_sitedir}/nfs_plugin/__pycache__
+%config(noreplace) %verify(not md5 mtime size) %{_sysconfdir}/lsm/pluginconf.d/nfs.conf
+%{_mandir}/man1/nfs_lsmplugin.1*
+
+%files plugin-smis
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/smispy_lsmplugin
+%{py3_sitedir}/smispy_plugin
+%{_mandir}/man1/smispy_lsmplugin.1*
+
+%files plugin-targetd
+%defattr(644,root,root,755)
+%attr(755,root,root) %{_bindir}/targetd_lsmplugin
+%{py3_sitedir}/targetd_plugin
+%{_mandir}/man1/targetd_lsmplugin.1*