## START: Set by rpmautospec ## (rpmautospec version 0.7.3) ## RPMAUTOSPEC: autorelease, autochangelog %define autorelease(e:s:pb:n) %{?-p:0.}%{lua: release_number = 17; base_release_number = tonumber(rpm.expand("%{?-b*}%{!?-b:1}")); print(release_number + base_release_number - 1); }%{?-e:.%{-e*}}%{?-s:.%{-s*}}%{!?-n:%{?dist}} ## END: Set by rpmautospec %bcond tests 1 %global _description %{expand: C++ / Python reader for SONATA circuit files. SONATA guide: https://github.com/AllenInstitute/sonata/blob/master/docs/SONATA_DEVELOPER_GUIDE.md } Name: libsonata Version: 0.1.23 # The SONAME version is constructed from the version number (MAJOR.MINOR), but # we repeat it here to avoid undected SONAME version bumps. %global so_version 0.1 Release: %autorelease Summary: A Python and C++ interface to the SONATA format # The entire package is LGPL-3.0-only, except: # # BSL-1.0: # - include/bbp/sonata/optional.hpp, removed in %%prep and replaced with a # dependency on optional-lite; but this is a header-only library, which we # must treat the same as a static library, so its license still contributes # to the licenses of the binary RPMs # - include/bbp/sonata/variant.hpp, removed in %%prep and replaced with a # dependency on variant-lite; a header-only library like optional-lite # MIT: # - extlib/filesystem.hpp, removed in %%prep and replaced with a dependency on # gulrak-filesystem, another header-only library # - extlib/nlohmann/nlohmann/json.hpp, removed in %%prep and replaced with a # dependency on json, another header-only library # BSD-3-Clause: # - CMake/CodeCoverage.cmake, a build-system file that does not contribute to # the licenses of the binary RPMs License: LGPL-3.0-only AND BSL-1.0 AND MIT SourceLicense: %{licenses} AND BSD-3-Clause URL: https://github.com/BlueBrain/libsonata Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz # https://github.com/sanjayankur31/libsonata/tree/fedora-0.1.23 Patch0: 0001-include-catch-cmake.patch Patch1: 0002-use-cpp-17-filesystem.patch Patch2: 0003-Remove-pybind-redeclarations.patch Patch3: 0004-disable-python-ext-build.patch Patch4: 0005-set-libdir.patch # include fmt/ranges.h for using fmt::join() # https://github.com/BlueBrain/libsonata/pull/360 Patch5: 0006-adapt-to-fmt-11.patch # https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval ExcludeArch: %{ix86} BuildRequires: tomcli BuildRequires: cmake BuildRequires: boost-devel BuildRequires: cmake(Catch2) < 3 BuildRequires: fmt-devel BuildRequires: gcc-c++ BuildRequires: git-core # 2.3.1-5 has a fix that is necessary to ensure builds on # s390x, ppc64le, aarch64 # https://github.com/BlueBrain/libsonata/issues/184 BuildRequires: highfive-devel >= 2.3.1-5 BuildRequires: hdf5-devel BuildRequires: pybind11-devel # Header-only libraries unbundled in %%prep; -static prescribed by guidelines # for tracking of header-only libraries. BuildRequires: gulrak-filesystem-devel gulrak-filesystem-static BuildRequires: json-devel json-static BuildRequires: optional-lite-devel optional-lite-static BuildRequires: variant-lite-devel variant-lite-static %description %_description %package devel Summary: Development files for %{name} # Since optional-lite and variant-lite are unbundled, they do not appear in the # devel package and do not contribute to its license, even though they are part # of the public API; other header-only dependencies are only used to build # libraries and would not appear in the API (and therefore in the -devel # package) even if they *were* bundled. License: LGPL-3.0-only Requires: %{name}%{?_isa} = %{version}-%{release} # These header-only dependencies are part of the public API. Very formally, # dependent packages should probably depend on the -static packages for these, # although this is getting a bit out of hand. Requires: optional-lite-devel optional-lite-static Requires: variant-lite-devel variant-lite-static %description devel %_description %package -n python3-libsonata Summary: %{summary} BuildRequires: python3-devel # Tests don’t explicitly require pytest, but it’s a convenient runner. BuildRequires: %{py3_dist pytest} # Needed for tests/data/generate.py, which *is* executed during the tests. BuildRequires: %{py3_dist h5py} %description -n python3-libsonata %_description %prep %autosetup -n libsonata-%{version} -S git rm -rf libsonata.egg-info rm -rf extlib/{Catch2,Highfive,fmt,nlohmann} # Unbundle gulrak-filesystem echo '#include ' > extlib/filesystem.hpp # Unbundle optional-lite echo '#include ' > include/bbp/sonata/optional.hpp # Unbundle variant-lite echo '#include ' > include/bbp/sonata/variant.hpp # Comment out to remove /usr/bin/env shebangs # Can use something similar to correct/remove /usr/bin/python shebangs also # find . -type f -name "*.py" -exec sed -i '/^#![ ]*\/usr\/bin\/env.*$/ d' {} 2>/dev/null ';' # Upstream builds against an old numpy for binary compatibility on PyPI, but we # just build with the system numpy. tomcli set pyproject.toml lists replace build-system.requires \ oldest-supported-numpy numpy %generate_buildrequires %pyproject_buildrequires %build %cmake -DSONATA_PYTHON=ON -DEXTLIB_FROM_SUBMODULES=OFF -DSONATA_VERSION="%{version}" -DSONATA_TESTS=ON -DSONATA_CXX_WARNINGS=OFF -DCMAKE_CXX_STANDARD=17 %cmake_build # python bits need to be run in the out of source build directory so we need to # move some files to allow that export SETUPTOOLS_SCM_PRETEND_VERSION=%{version} cp -a README.rst %{_vpath_builddir} cp -a setup.py %{_vpath_builddir} cp -a pyproject.toml %{_vpath_builddir} cp -a COPYING.* %{_vpath_builddir} cp -a MANIFEST.* %{_vpath_builddir} mkdir -p %{_vpath_builddir}/python/libsonata/ cp -a python/libsonata/__init__.py %{_vpath_builddir}/python/libsonata pushd %{_vpath_builddir} %pyproject_wheel popd # regenerate data files and copy to build dir pushd tests/data %{python3} generate.py popd mkdir -p %{_vpath_builddir}/tests cp -a tests/data %{_vpath_builddir}/tests %install %cmake_install # remove static lib rm -rf %{buildroot}/%{_libdir}/libsonata.a # neither cmake nor pyproject install python module(!?) install -p -m 0655 -D -t %{buildroot}/%{python3_sitearch}/libsonata/ %{_vpath_builddir}/python/_libsonata*so export SETUPTOOLS_SCM_PRETEND_VERSION=%{version} pushd %{_vpath_builddir} %pyproject_install %pyproject_save_files -l libsonata popd %check %ctest tests # There are some messages related to HDF5-DIAG, but upstream's CI also gets them, for example: # https://github.com/BlueBrain/libsonata/runs/5272240111?check_suite_focus=true pushd python/tests export PYTHONPATH=%{buildroot}/%{python3_sitearch}/ %{python3} -m unittest -v popd %files %license COPYING.LESSER %doc README.rst CHANGELOG.md %{_libdir}/libsonata.so.%{so_version} %{_libdir}/libsonata.so.%{version} %files devel # Potentially co-owned with other Blue Brain Project packages: %dir %{_includedir}/bbp/ # Exclusively owned by this package: %{_includedir}/bbp/sonata/ %{_datadir}/sonata/ %{_libdir}/libsonata.so %files -n python3-libsonata -f %{pyproject_files} %doc README.rst CHANGELOG.md %{python3_sitearch}/libsonata/_libsonata*so %changelog ## START: Generated by rpmautospec * Thu Jan 16 2025 Benjamin A. Beasley - 0.1.23-17 - Add a SourceLicense field * Thu Jan 16 2025 Benjamin A. Beasley - 0.1.23-16 - Unbundle gulrak-filesystem, optional-lite, and variant-lite * Mon Jan 06 2025 Benjamin A. Beasley - 0.1.23-14 - Generate BuildRequires for the Python extension * Mon Jan 06 2025 Benjamin A. Beasley - 0.1.23-13 - Handle SONAME version a little more explicitly * Fri Oct 25 2024 Orion Poplawski - 0.1.23-11 - Rebuild for hdf5 1.14.5 * Thu Jul 18 2024 Fedora Release Engineering - 0.1.23-10 - Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild * Sun Jul 14 2024 Kefu Chai - 0.1.23-8 - Rebuilt for fmt 11 * Sat Jun 08 2024 Python Maint - 0.1.23-7 - Rebuilt for Python 3.13 * Thu Jan 25 2024 Fedora Release Engineering - 0.1.23-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild * Sun Jan 21 2024 Fedora Release Engineering - 0.1.23-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild * Tue Jan 02 2024 Benjamin A. Beasley - 0.1.23-4 - Assert that the .dist-info directory contains a license file * Tue Sep 19 2023 Sandro - 0.1.23-2 - Stop building for i686 * Tue Aug 29 2023 Ankur Sinha (Ankur Sinha Gmail) - 0.1.23-1 - feat: update to 0.1.23 (fixes rhbz#2183959) - re does patches - uses spdx license * Thu Jul 20 2023 Fedora Release Engineering - 0.1.11-14 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild * Wed Jul 12 2023 Python Maint - 0.1.11-13 - Rebuilt for Python 3.12 * Wed Jun 28 2023 Vitaly Zaitsev - 0.1.11-12 - Rebuilt due to fmt 10 update. * Tue Mar 07 2023 Benjamin A. Beasley - 0.1.11-11 - Work around numpy.int removal (close RHBZ#2176146) * Tue Mar 07 2023 Benjamin A. Beasley - 0.1.11-10 - Ensure the catch2 compat package is used when necessary * Thu Jan 19 2023 Fedora Release Engineering - 0.1.11-9 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild * Thu Jul 21 2022 Fedora Release Engineering - 0.1.11-8 - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild * Tue Jun 14 2022 Python Maint - 0.1.11-7 - Rebuilt for Python 3.11 * Fri Mar 18 2022 Ankur Sinha (Ankur Sinha Gmail) - 0.1.11-6 - fix: initial build (fixes rhbz#2061077) - requires highfive version that fixes bug to allow correct building on s390x, aarch64, ppc64le * Thu Mar 17 2022 Ankur Sinha (Ankur Sinha Gmail) - 0.1.11-5 - feat: initial import to repositories * Thu Mar 17 2022 Ankur Sinha (Ankur Sinha Gmail) - 0.1.11-4 - update as per review comments * Thu Mar 17 2022 Ankur Sinha (Ankur Sinha Gmail) - 0.1.11-3 - feat: corrections based on review - fix assertion error - fix python package installation - enable all tests * Thu Mar 17 2022 Ankur Sinha (Ankur Sinha Gmail) - 0.1.11-2 - Add fork URL in comment * Thu Mar 17 2022 Ankur Sinha (Ankur Sinha Gmail) - 0.1.11-1 - feat: ready for review * Thu Mar 17 2022 Ankur Sinha (Ankur Sinha Gmail) - 0.1.8-2 - WIP * Thu Mar 17 2022 Ankur Sinha (Ankur Sinha Gmail) - 0.1.8-1 - init ## END: Generated by rpmautospec