Blob Blame History Raw
%global fork Cantera

Name:          cantera
Version:       2.6.0
Release:       %{?autorelease}%{!?autorelease:22{?dist}} 
Summary:       Chemical kinetics, thermodynamics, and transport tool suite
License:       BSD
URL: {fork}/%{name}/
Source0:       %{url}archive/refs/tags/v%{version}.tar.gz

# thermoToYaml test failures on ppc64le and aarch64 and s390x - BZ #2081451
# increase test tolerance to pass
Patch0:        cantera-test-ppc64le-aarch64-s390x.patch

# Fails to build under Python 3.11 due to deprecated mode 'rU' - BZ #2094258
# implement patch until upstream releases fix
Patch1:        cantera-py311-deprecated-U.patch

# Fix failure to build with pip >= 21.1
# Fixed upstream:
Patch2:        fix-pip-build-21.1.patch

BuildRequires:  boost-devel
BuildRequires:  eigen3-devel
BuildRequires:  fmt-devel
BuildRequires:  gcc
BuildRequires:  gcc-c++
BuildRequires:  git
BuildRequires:  gmock-devel
BuildRequires:  gtest-devel
BuildRequires:  python3
BuildRequires:  python3-Cython
BuildRequires:  python3-devel
BuildRequires:  python3-numpy
BuildRequires:  python3-pip
BuildRequires:  python3-pytest
BuildRequires:  python3-ruamel-yaml
BuildRequires:  python3-scons
BuildRequires:  python3-wheel
BuildRequires:  sundials-devel
BuildRequires:  yaml-cpp-devel

%if 0%{?fedora}
BuildRequires:  gcc-fortran
BuildRequires:  gcc-gfortran

%global scons scons%{?rhel:-3}

ExcludeArch: s390x      # YAML test failures - BZ #2044056
ExcludeArch: %{ix86}

%global common_description %{expand: \
 Cantera is a suite of object-oriented software tools for solving problems
 involving chemical kinetics, thermodynamics, and/or transport processes.
 Cantera can be used for simulating time-dependent or steady reactor
 networks and one-dimensional reacting flows. Thermodynamic models for
 ideal gases, aqueous electrolytes, plasmas, and multiphase substances
 are provided.}


%package common
Summary: Common files needed for all Cantera interfaces
%description common
 This package includes programs for parsing and converting chemical
 mechanisms, a set of common mechanism files, and several sample problems.

%package -n python3-%{name}
Requires: %{name}-common%{_isa} = %{version}-%{release}
Summary: Python 3 user interface for Cantera
%description -n python3-%{name}
 This package includes the Cantera Python 3 module.

%package devel
Requires: %{name}-common%{_isa} = %{version}-%{release}
Summary: Header files and shared object libraries for Cantera
%description devel
 This package contains the header files and shared object libraries needed to
 develop applications with the C++ and Fortran interfaces of Cantera.

%package static
Requires: %{name}-common%{_isa} = %{version}-%{release}
Summary: Static libraries for Cantera
%description static
 This package contains the static libraries for the C++ and Fortran
 interfaces of Cantera.

%setup -n %{name}-%{version}
%patch0 -p0
%patch1 -p1
%patch2 -p1


%scons build prefix=%{_prefix} python_prefix=%{_prefix} libdirname=%{_lib} system_sundials=y f90_interface=y renamed_shared_libraries=n python_package=full system_eigen=y extra_inc_dirs=/usr/include/eigen3 system_fmt=y

%scons install prefix=%{_prefix} python_prefix=%{_prefix} libdirname=%{_lib} stage_dir=%{buildroot}

if [[ -d %{buildroot}%{_prefix}/lib/python%{python3_version}/site-packages ]] && [ %{_lib} == "lib64" ]; then
  mkdir -p %{buildroot}%{python3_sitearch}/
  mv %{buildroot}%{_prefix}/lib/python%{python3_version}/site-packages/* %{buildroot}%{python3_sitearch}/

%scons test

%files common
%license %{_datadir}/%{name}/doc/LICENSE.txt

%doc %{_mandir}/man1/ck2yaml.1.gz
%doc %{_mandir}/man1/cti2yaml.1.gz
%doc %{_mandir}/man1/ctml2yaml.1.gz
%doc %{_mandir}/man1/ck2cti.1.gz
%doc %{_mandir}/man1/ctml_writer.1.gz



#not required for packaged installations
%ghost %{_bindir}/setup_cantera
%ghost %{_bindir}/setup_cantera.csh

%files -n python3-%{name}

%files devel


%files static