libstorage-ng/libstorage-ng.spec

233 lines
6.4 KiB
RPMSpec

#
# spec file for package libstorage-ng
#
# Copyright (c) 2024 SUSE LLC
#
# 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 https://bugs.opensuse.org/
#
%define libname %{name}1
Name: libstorage-ng
Version: 4.5.201
Release: 0
Summary: Library for storage management
License: GPL-2.0-only
Group: System/Libraries
URL: https://github.com/openSUSE/libstorage-ng
Source: %{name}-%{version}.tar.xz
%if 0%{?suse_version} >= 1330
BuildRequires: libboost_headers-devel
BuildRequires: libboost_test-devel
%else
BuildRequires: boost-devel
%endif
BuildRequires: doxygen
BuildRequires: fdupes
BuildRequires: gcc-c++
BuildRequires: graphviz
BuildRequires: grep
BuildRequires: libtool
BuildRequires: pkgconfig
BuildRequires: python-rpm-macros
BuildRequires: ruby
BuildRequires: ruby-devel
BuildRequires: pkgconfig(python3)
%if 0%{?suse_version} == 1315
# Using rubygem(test-unit) does not work since ruby2.1-stdlib claims to
# provide rubygem(test-unit). But that is plain wrong. The version in
# ruby2.1-stdlib does not provide the function assert_raise_kind_of.
BuildRequires: ruby2.1-rubygem-test-unit
%endif
%if 0%{?fedora}
BuildRequires: rubygem-test-unit
%endif
BuildRequires: swig >= 3.0.3
BuildRequires: pkgconfig(libxml-2.0)
%if 0%{?fedora}
BuildRequires: glibc-langpack-de
BuildRequires: glibc-langpack-en
BuildRequires: glibc-langpack-fr
BuildRequires: json-c-devel
%else
BuildRequires: glibc-locale
BuildRequires: libjson-c-devel
%endif
%description
This package contains libstorage-ng, a library for storage management.
%package lang
Summary: Languages for package %{name}
Group: System/Localization
Supplements: %{name}
Provides: %{name}-lang-all = %{version}
BuildArch: noarch
%description lang
Provides translations to the package %{name}
%package -n %{libname}
Summary: Library for storage management
Group: System/Libraries
Recommends: %{name}-lang
Requires: coreutils
Suggests: cryptsetup
Requires: device-mapper
Suggests: dmraid
Requires: lsscsi >= 0.26
Suggests: lvm2
Suggests: mdadm >= 3.3
Suggests: multipath-tools
Requires: parted >= 3.2
Requires: pkgconfig
Requires: util-linux >= 2.16
Requires: pkgconfig(udev)
Obsoletes: %{libname} < %{version}
Obsoletes: libstorage %(echo `seq -s " " -f "libstorage%.f" 9`)
%ifarch s390 s390x
Requires: s390-tools
%endif
# Old version of libdmraid cannot be used. Upgrading from SLE11 to SLE15
# does not remove old version, so it needs to be marked as conflict.
# For more info, see https://bugzilla.suse.com/show_bug.cgi?id=1088570#c35
Conflicts: libdmraid.so.1.0.0.rc16(libdmraid.so.1.0.0.rc16)(64bit)
%description -n %{libname}
This package contains libstorage-ng, a library for storage management.
%package devel
Summary: Header files and documentation for libstorage-ng
Group: Development/Languages/C and C++
Requires: %{libname} = %{version}
Requires: gcc-c++
Requires: libstdc++-devel
Requires: pkgconfig
Requires: pkgconfig(libxml-2.0)
%description devel
This package contains header files and documentation for developing with
libstorage-ng.
%package python3
Summary: Python bindings for libstorage-ng
Group: System/Libraries
Requires: %{libname} = %{version}
Obsoletes: libstorage-python
%description python3
This package contains Python bindings for libstorage-ng.
%package ruby
Summary: Ruby bindings for libstorage-ng
Group: System/Libraries
Requires: %{libname} = %{version}
Obsoletes: libstorage-ruby
%description ruby
This package contains Ruby bindings for libstorage-ng.
%package utils
Summary: Utils for libstorage-ng
Group: Development/Tools/Other
Recommends: ImageMagick
Recommends: graphviz
%description utils
This package contains utils for libstorage-ng.
%package integration-tests
Summary: Integration tests for libstorage-ng
Group: Development/Tools/Other
Requires: libstorage-ng-python3
BuildArch: noarch
%description integration-tests
This package contains integration tests for libstorage-ng.
%prep
%setup -q
%build
export CFLAGS="%{optflags} -DNDEBUG"
export CXXFLAGS="%{optflags} -DNDEBUG"
autoreconf -fvi
%configure \
--docdir="%{_docdir}/%{name}" \
--disable-static \
--disable-silent-rules
make %{?_smp_mflags}
%check
make %{?_smp_mflags} check VERBOSE=1 \
LIBSTORAGE_CONFDIR=%{buildroot}%{_datadir}/libstorage \
LIBSTORAGE_LOCALEDIR=%{buildroot}%{_datadir}/locale
%install
%make_install
find %{buildroot} -type f -name "*.la" -delete -print
find %{buildroot} -type f -name "*.pyc" -delete -print
install -d -m 755 %{buildroot}/run/libstorage-ng
touch %{buildroot}/run/libstorage-ng/lock
%fdupes -s %{buildroot}
%find_lang libstorage-ng
%post -n %{libname} -p /sbin/ldconfig
%postun -n %{libname} -p /sbin/ldconfig
%files -n %{name}-lang -f libstorage-ng.lang
%files -n %{libname}
%doc %dir %{_docdir}/%{name}
%doc %{_docdir}/%{name}/AUTHORS
%license %{_docdir}/%{name}/LICENSE
%{_libdir}/libstorage-ng.so.*
%ghost /run/libstorage-ng
%dir %{_datadir}/libstorage
%{_datadir}/libstorage/udev-filters.json
%files devel
%{_libdir}/libstorage-ng.so
%{_includedir}/storage
%dir %{_docdir}/%{name}/autodocs
%doc %{_docdir}/%{name}/autodocs/*
%files python3
%{python3_sitelib}/storage.py*
%attr(755,root,root) %{python3_sitearch}/_storage.so
# Fedora has brp-python-bytecompile so apparently they want those packaged
%if 0%{?fedora}
%{python3_sitelib}/__pycache__/storage*.pyc
%endif
%files ruby
%if 0%{?fedora}
%{ruby_vendorarchdir}/storage.so
%else
%{rb_vendorarchdir}/storage.so
%endif
%files utils
%dir %{_prefix}/lib/libstorage-ng
%{_prefix}/lib/libstorage-ng/utils
%files integration-tests
%{python3_sitelib}/storageitu.py*
%dir %{_prefix}/lib/libstorage-ng
%{_prefix}/lib/libstorage-ng/integration-tests
%changelog