## START: Set by rpmautospec ## (rpmautospec version 0.3.0) %define autorelease(e:s:pb:n) %{?-p:0.}%{lua: release_number = 6; 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 # This needs about 15 gigs per thread, otherwise OOMs. %constrain_build -m 15360 %global _description %{expand: Graph-tool is an efficient Python module for manipulation and statistical analysis of graphs (a.k.a. networks). Contrary to most other python modules with similar functionality, the core data structures and algorithms are implemented in C++, making extensive use of template metaprogramming, based heavily on the Boost Graph Library. This confers it a level of performance that is comparable (both in memory usage and computation time) to that of a pure C/C++ library. Please refer to https://graph-tool.skewed.de/static/doc/index.html for documentation.} Name: python-graph-tool Version: 2.45 Release: %autorelease Summary: Efficient network analysis tool written in Python # The entire source is LGPL-3.0-or-later, except: # - BSL-1.0: src/boost-workaround/ # src/graph/graphml.cpp # src/graph/read_graphviz_new.cpp # Additionally, the following libraries are header-only and are therefore # treated as static libraries; their licenses to contribute to that of the # binary RPMs: # - CGAL is: LGPL-3.0-or-later AND GPL-3.0-or-later AND BSL-1.0 AND MIT # - pcg-cpp is: MIT OR Apache-2.0 # Additionally, the following are under other licenses but do not contribute to # the licenses of the binary RPMs: # - FSFULLR: aclocal.m4 # - FSFUL (or perhaps FSFUL AND LGPL-3.0-or-later): configure # - GPL-2.0-or-later: build-aux/compile # build-aux/depcomp # build-aux/ltmain.sh # build-aux/py-compile # m4/ax_boost_python.m4 # - GPL-3.0-or-later: build-aux/config.guess # build-aux/config.sub # m4/ax_create_pkgconfig_info.m4 # m4/ax_openmp.m4 # m4/ax_python_devel.m4 # - X11: build-aux/install-sh # - FSFAP: m4/ax_boost_base.m4 # m4/ax_boost_context.m4 # m4/ax_boost_coroutine.m4 # m4/ax_boost_graph.m4 # m4/ax_boost_iostreams.m4 # m4/ax_boost_regex.m4 # m4/ax_boost_thread.m4 # m4/ax_cxx_compile_stdcxx.m4, # m4/ax_cxx_compile_stdcxx_17.m4 # m4/ax_lib_cgal_core.m4 # m4/ax_python_module.m4 License: LGPL-3.0-or-later AND BSL-1.0 AND GPL-3.0-or-later AND MIT AND (MIT OR Apache-2.0) URL: https://graph-tool.skewed.de/ Source0: https://downloads.skewed.de/graph-tool/graph-tool-%{version}.tar.bz2 # Remove upstream compiler flags # # We can leave those controlling warnings and dynamic symbol visibility; # we must remove any that hard-code the optimization settings or otherwise # fail to respect the distribution defaults. Patch: 0001-Remove-upstream-compiler-flags.patch # https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval ExcludeArch: %{ix86} BuildRequires: make BuildRequires: git-core BuildRequires: autoconf BuildRequires: automake BuildRequires: libtool BuildRequires: gawk %description %_description %package -n python3-graph-tool Summary: %{summary} BuildRequires: python3-devel BuildRequires: boost-devel BuildRequires: boost-python3-devel BuildRequires: CGAL-devel # CGAL is header-only since version 5.4.0, so we must BR the virtual -static # subpackage for tracking, per Fedora guidelines BuildRequires: CGAL-static BuildRequires: pkgconfig(cairomm-1.0) BuildRequires: expat-devel BuildRequires: gcc-c++ BuildRequires: gmp-devel BuildRequires: gtk3-devel BuildRequires: python3-cairo-devel BuildRequires: python3-devel BuildRequires: %{py3_dist scipy} BuildRequires: %{py3_dist matplotlib} BuildRequires: %{py3_dist numpy} BuildRequires: sparsehash-devel # BR -static package of header-only libraries for tracking per guidelines BuildRequires: pcg-cpp-devel BuildRequires: pcg-cpp-static Provides: graph-tool%{?_isa} = %{version}-%{release} %description -n python3-graph-tool %_description %package -n python3-graph-tool-devel Summary: %{summary} Requires: python3-graph-tool%{?_isa} = %{version}-%{release} # Since this header-only package is re-exposed as part of the extension API, # dependent packages should ideally also BuildRequire pcg-cpp-static for # tracking, per guidelines. Requires: pcg-cpp-devel Provides: graph-tool-devel%{?_isa} = %{version}-%{release} %description -n python3-graph-tool-devel %_description %prep %autosetup -S git -n graph-tool-%{version} # Remove shebangs from non-script sources # # The pattern of selecting files before modifying them with sed keeps us from # unnecessarily discarding the original mtimes on unmodified files. find 'src' -type f -name '*.py' \ -exec gawk '/^#!/ { print FILENAME }; { nextfile }' '{}' '+' | xargs -r sed -r -i '1{/^#!/d}' # Fix shebang(s) in sample script(s) %py3_shebang_fix doc # Unbundle pcg-cpp. To avoid having to patch the Makefiles, we use symbolic # links from the original locations. Note that these are followed when the # extension API headers are installed, so we need to re-create them afterwards. rm -vf src/pcg-cpp/include/* ln -sv \ '%{_includedir}/pcg_extras.hpp' \ '%{_includedir}/pcg_random.hpp' \ '%{_includedir}/pcg_uint128.hpp' \ 'src/pcg-cpp/include/' # Drop intersphinx mappings, since we can’t download remote inventories and # can’t easily produce working hyperlinks from inventories in local # documentation packages. echo 'intersphinx_mapping.clear()' >> doc/conf.py %build ./autogen.sh %configure \ --with-python-module-path=%{python3_sitearch} \ --with-boost-libdir=%{_libdir} \ --enable-debug %make_build %install %make_install # Remove installed doc sources rm -rf %{buildroot}/%{_datadir}/doc/graph-tool # Remove static objects find %{buildroot} -name '*.la' -print -delete # Restore symbolic links that were followed in “wheelification” ln -svf \ '%{_includedir}/pcg_extras.hpp' \ '%{_includedir}/pcg_random.hpp' \ '%{_includedir}/pcg_uint128.hpp' \ '%{buildroot}%{python3_sitearch}/graph_tool/include/pcg-cpp/' %files -n python3-graph-tool %license COPYING src/boost-workaround/LICENSE_1_0.txt %doc README.md ChangeLog AUTHORS %{python3_sitearch}/graph_tool/ %exclude %{python3_sitearch}/graph_tool/include/ %files -n python3-graph-tool-devel %{python3_sitearch}/graph_tool/include/ %{_libdir}/pkgconfig/graph-tool-py%{python3_version}.pc %changelog * Fri Jan 20 2023 Fedora Release Engineering 2.45-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild * Wed Jan 11 2023 Benjamin A. Beasley 2.45-5 - Update License to include header-only dependencies * Wed Dec 21 2022 Benjamin A. Beasley 2.45-4 - Simplify constraining the build * Tue Dec 20 2022 Benjamin A. Beasley 2.45-3 - No longer need to exclude armv7hl on F37+ - Additionally, we no longer need to justify excluding i686 * Thu Nov 24 2022 Benjamin A. Beasley 2.45-2 - Drop -fpermissive workaround * Sun Nov 20 2022 Benjamin A. Beasley 2.45-1 - Update to 2.45 * Sun Nov 20 2022 Benjamin A. Beasley 2.43-24 - Re-enable LTO * Sun Nov 20 2022 Benjamin A. Beasley 2.43-23 - Drop workarounds for armv7hl, which is already excluded * Sat Nov 19 2022 Benjamin A. Beasley 2.43-22 - Patch out fewer upstream compiler flags * Sat Nov 19 2022 Benjamin A. Beasley 2.43-21 - Make the file lists clearer - Use trailing slashes to indicate directory paths * Sat Nov 19 2022 Benjamin A. Beasley 2.43-20 - Reduce macro indirection in the spec file * Sat Nov 19 2022 Benjamin A. Beasley 2.43-19 - Include license file for BSL-1.0 * Sat Nov 19 2022 Benjamin A. Beasley 2.43-18 - Convert License field to SPDX * Sat Nov 19 2022 Benjamin A. Beasley 2.43-17 - Work around 2144197 * Sat Nov 19 2022 Benjamin A. Beasley 2.43-16 - Break a long line in the spec file * Fri Jul 22 2022 Fedora Release Engineering 2.43-15 - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild * Wed Jun 15 2022 Python Maint 2.43-14 - Rebuilt for Python 3.11 * Wed May 04 2022 Thomas Rodgers 2.43-13 - Rebuilt for Boost 1.78 * Fri Feb 04 2022 Benjamin A. Beasley 2.43-12 - No longer reduce debug level for ppc64le/s390x * Tue Feb 01 2022 Benjamin A. Beasley 2.43-11 - Re-enable ppc64le (fix RHBZ#1771031) * Tue Feb 01 2022 Benjamin A. Beasley 2.43-10 - BR CGAL-static since CGAL is now header-only * Fri Jan 21 2022 Fedora Release Engineering 2.43-9 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild * Fri Jan 07 2022 Benjamin A. Beasley 2.43-8 - Drop intersphinx mappings * Fri Dec 17 2021 Benjamin A. Beasley - 2.43-4 - Remove arch from -devel dependency on pcg-cpp-devel; the pcg-cpp-devel subpackage will become noarch * Mon Sep 20 2021 Benjamin A. Beasley - 2.43-3 - Unbundle pcg-cpp - Split out headers for C++ extension development into a -devel package * Fri Aug 27 2021 Benjamin A. Beasley - 2.43-2 - Work around resource limits to re-enable s390x, and get closer to the root causes on the remaining excluded architectures * Tue Aug 10 2021 Ankur Sinha - 2.43-1 - Update to latest release - Remove unneeded patches * Sat Aug 07 2021 Jonathan Wakely - 2.33-7 - Rebuilt for Boost 1.76 * Fri Jul 23 2021 Fedora Release Engineering - 2.33-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild * Fri Jun 04 2021 Python Maint - 2.33-5 - Rebuilt for Python 3.10 * Fri Feb 12 2021 Benjamin A. Beasley - 2.33-4 - Use pkgconfig to BR the required cairomm API/ABI version 1.0 (vs. 1.16) * Wed Jan 27 2021 Fedora Release Engineering - 2.33-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild * Fri Jan 22 2021 Jonathan Wakely - 2.33-2 - Rebuilt for Boost 1.75 * Fri Sep 04 2020 Ankur Sinha - 2.33-1 - Update to latest release - Disable LTO - update COPYING file name - Update license * Sat Aug 01 2020 Fedora Release Engineering - 2.29-7 - Second attempt - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild * Wed Jul 29 2020 Fedora Release Engineering - 2.29-6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild * Sat May 30 2020 Jonathan Wakely - 2.29-5 - Rebuilt for Boost 1.73 - Simplify shell command to determine number of threads to use * Tue May 26 2020 Miro Hrončok - 2.29-4 - Rebuilt for Python 3.9 * Thu Jan 30 2020 Fedora Release Engineering - 2.29-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild * Sat Nov 09 2019 Ankur Sinha - 2.29-2 - Exclude builds on arches: usually falls short of resources * Fri Nov 01 2019 Ankur Sinha - 2.29-1 - Remove unneeded shebangs * Tue Oct 22 2019 Ankur Sinha - 2.29-1 - Improve conditional to handle cases where _smp_build_ncpus is not defined - Correct conditional hack * Tue Oct 15 2019 Ankur Sinha - 2.29-1 - Initial build