a5e2642668
[skip changelog]
248 lines
7.9 KiB
RPMSpec
248 lines
7.9 KiB
RPMSpec
# We used to build with Theano support. However, we no longer have a compatible
|
|
# version of Theano in Fedora. If aesara is ever packaged for Fedora, we can
|
|
# use it instead.
|
|
|
|
# We are archful (see below), but there are no ELF objects in the binary RPM.
|
|
%global debug_package %{nil}
|
|
|
|
Name: sympy
|
|
Version: 1.12
|
|
Release: %autorelease
|
|
Summary: A Python library for symbolic mathematics
|
|
|
|
# The project as a whole is BSD-3-Clause.
|
|
# The files in sympy/parsing/latex are MIT.
|
|
License: BSD-3-Clause AND MIT
|
|
URL: https://sympy.org/
|
|
Source0: https://github.com/%{name}/%{name}/archive/%{name}-%{version}.tar.gz
|
|
# Skip tests that require a display
|
|
Patch0: %{name}-circuitplot.patch
|
|
# Adapt to python 3.12
|
|
Patch1: %{name}-python3.12.patch
|
|
# Fix incompatible pointers, which are an error with GCC 14
|
|
# https://github.com/sympy/sympy/pull/25968
|
|
Patch2: %{name}-incompatible-pointer.patch
|
|
|
|
# This package used to be noarch, and should still be noarch. However, because
|
|
# there is no JDK available on i686 anymore, the antlr4 package is also not
|
|
# available on i686. When we can stop building on i686 altogether, we can bring
|
|
# this back. In the meantime, we cannot claim to be noarch, because the i686
|
|
# build is different from the other arches in lacking BuildRequires: antlr4.
|
|
# BuildArch: noarch
|
|
|
|
%ifarch %{java_arches}
|
|
BuildRequires: antlr4
|
|
%endif
|
|
BuildRequires: gcc
|
|
BuildRequires: gcc-c++
|
|
BuildRequires: gcc-gfortran
|
|
BuildRequires: python3-devel
|
|
BuildRequires: %{py3_dist cython}
|
|
BuildRequires: %{py3_dist gmpy2}
|
|
BuildRequires: %{py3_dist llvmlite}
|
|
BuildRequires: %{py3_dist matplotlib}
|
|
BuildRequires: %{py3_dist matplotlib-inline}
|
|
BuildRequires: %{py3_dist myst-parser}
|
|
BuildRequires: %{py3_dist numexpr}
|
|
BuildRequires: python3-numpy-f2py
|
|
BuildRequires: %{py3_dist scipy}
|
|
BuildRequires: %{py3_dist wurlitzer}
|
|
|
|
# Documentation
|
|
BuildRequires: graphviz
|
|
BuildRequires: ImageMagick
|
|
BuildRequires: librsvg2-tools
|
|
BuildRequires: make
|
|
BuildRequires: %{py3_dist furo}
|
|
BuildRequires: %{py3_dist linkify-it-py}
|
|
BuildRequires: %{py3_dist mpmath}
|
|
BuildRequires: %{py3_dist numpydoc}
|
|
BuildRequires: %{py3_dist sphinx-autobuild}
|
|
BuildRequires: %{py3_dist sphinx-copybutton}
|
|
BuildRequires: %{py3_dist sphinx-math-dollar}
|
|
BuildRequires: %{py3_dist sphinx-reredirects}
|
|
BuildRequires: %{py3_dist sphinxcontrib-jquery}
|
|
BuildRequires: python-mpmath-doc
|
|
BuildRequires: tex(latex)
|
|
BuildRequires: tex-dvipng
|
|
|
|
# Tests
|
|
BuildRequires: parallel
|
|
BuildRequires: %{py3_dist autowrap}
|
|
BuildRequires: xorg-x11-fonts-Type1
|
|
BuildRequires: xorg-x11-server-Xvfb
|
|
|
|
%global _description\
|
|
SymPy aims to become a full-featured computer algebra system (CAS)\
|
|
while keeping the code as simple as possible in order to be\
|
|
comprehensible and easily extensible. SymPy is written entirely in\
|
|
Python and does not require any external libraries.
|
|
|
|
%description %_description
|
|
|
|
%package -n python3-%{name}
|
|
Summary: A Python3 library for symbolic mathematics
|
|
Recommends: tex(latex)
|
|
Recommends: tex(amsfonts.sty)
|
|
Recommends: tex(amsmath.sty)
|
|
Recommends: tex(euler.sty)
|
|
Recommends: tex(eulervm.sty)
|
|
Recommends: tex(standalone.cls)
|
|
%ifarch %{java_arches}
|
|
Recommends: %{py3_dist antlr4-python3-runtime}
|
|
%endif
|
|
Recommends: %{py3_dist cython}
|
|
Recommends: %{py3_dist gmpy2}
|
|
Recommends: %{py3_dist matplotlib}
|
|
Recommends: %{py3_dist numexpr}
|
|
Recommends: %{py3_dist pyglet}
|
|
Recommends: %{py3_dist scipy}
|
|
|
|
# This can be removed when F38 reaches EOL
|
|
Obsoletes: sympy-texmacs < 1.8
|
|
|
|
%description -n python3-%{name}
|
|
SymPy aims to become a full-featured computer algebra system (CAS)
|
|
while keeping the code as simple as possible in order to be
|
|
comprehensible and easily extensible. SymPy is written entirely in
|
|
Python and does not require any external libraries.
|
|
|
|
%package examples
|
|
License: BSD-3-Clause
|
|
Summary: Sympy examples
|
|
Requires: python3-%{name} = %{version}-%{release}
|
|
|
|
%description examples
|
|
This package contains example input for sympy.
|
|
|
|
%package doc
|
|
# This project is BSD-3-Clause. Other files bundled with the documentation
|
|
# have the following licenses:
|
|
# - searchindex.js: BSD-2-Clause
|
|
# - _static/basic.css: BSD-2-Clause
|
|
# - _static/clipboard.min.js: MIT
|
|
# - _static/copy*: MIT
|
|
# - _static/doctools.js: BSD-2-Clause
|
|
# - _static/graphviz.js: BSD-2-Clause
|
|
# - _static/jquery*.js: MIT
|
|
# - _static/language_data.js: BSD-2-Clause
|
|
# - _static/plot_directive.css: PSF-2.0 (see note)
|
|
# - _static/pygments.css: BSD-2-Clause
|
|
# - _static/scripts/*: MIT
|
|
# - _static/searchtools.js: BSD-2-Clause
|
|
# - _static/styles/*: MIT
|
|
# - _static/underscore*.js: MIT
|
|
#
|
|
# NOTE: The license of _static/plot_directive.css is the same as the license of
|
|
# matplotlib. The matplotlib license is functionally identical to PSF-2.0, but
|
|
# uses different organization and project names. I am using the PSF-2.0
|
|
# identifier for now, because there is no valid SPDX choice. Revisit this.
|
|
License: BSD-3-Clause AND BSD-2-Clause AND MIT AND PSF-2.0
|
|
Summary: Documentation for sympy
|
|
Provides: bundled(js-jquery)
|
|
Provides: bundled(js-underscore)
|
|
|
|
%description doc
|
|
HTML documentation for sympy.
|
|
|
|
%prep
|
|
%autosetup -p1 -n %{name}-%{name}-%{version}
|
|
|
|
fixtimestamp() {
|
|
touch -r $1.orig $1
|
|
rm -f $1.orig
|
|
}
|
|
|
|
# Do not depend on env
|
|
for fil in $(grep -rl "^#\![[:blank:]]*%{_bindir}/env" .); do
|
|
sed -i.orig 's,^\(#\![[:blank:]]*%{_bindir}/\)env python,\1python3,' $fil
|
|
fixtimestamp $fil
|
|
done
|
|
|
|
# Remove bogus shebangs
|
|
for fil in sympy/physics/mechanics/models.py \
|
|
sympy/physics/optics/polarization.py; do
|
|
sed -i.orig '/env python/d' $fil
|
|
fixtimestamp $fil
|
|
done
|
|
|
|
# Use local objects.inv for intersphinx
|
|
sed -e "s|\('https://mpmath\.org/doc/current/', \)None|\1'%{_docdir}/python-mpmath-doc/html/objects.inv'|" \
|
|
-i doc/src/conf.py
|
|
|
|
%generate_buildrequires
|
|
%pyproject_buildrequires
|
|
|
|
%build
|
|
%ifarch %{java_arches}
|
|
# Regenerate the ANTLR files
|
|
%{python3} setup.py antlr
|
|
%endif
|
|
|
|
# Build
|
|
%pyproject_wheel
|
|
|
|
# Build the documentation
|
|
pushd doc
|
|
make html SPHINXOPTS=%{?_smp_mflags} PYTHON=%{python3}
|
|
make cheatsheet
|
|
popd
|
|
|
|
%install
|
|
%pyproject_install
|
|
%pyproject_save_files isympy sympy
|
|
|
|
## Remove extra files
|
|
rm -f %{buildroot}%{_bindir}/{,doc}test
|
|
|
|
# Don't let an executable script go into the documentation
|
|
chmod -R a-x+X examples
|
|
|
|
# Fix permissions
|
|
chmod 0755 %{buildroot}%{python3_sitelib}/sympy/benchmarks/bench_symbench.py \
|
|
%{buildroot}%{python3_sitelib}/sympy/testing/tests/diagnose_imports.py
|
|
|
|
# Install the HTML documentation
|
|
mkdir -p %{buildroot}%{_docdir}/%{name}-doc
|
|
cp -a doc/_build/html %{buildroot}%{_docdir}/%{name}-doc
|
|
rm -f %{buildroot}%{_docdir}/%{name}-doc/html/.buildinfo
|
|
rm -fr %{buildroot}%{_docdir}/%{name}-doc/i18n
|
|
|
|
# Try to get rid of pyc files, which aren't useful for documentation
|
|
find examples/ -name '*.py[co]' -print -delete
|
|
|
|
%check
|
|
# Many tests assume they are running on an x86_64 machine. Some assume that
|
|
# native 64-bit integers are available. Some assume that 80-bit floating point
|
|
# numbers are available. Some assume that certain operations always produce
|
|
# numpy float64 values (but produce float32 values on some architectures). I
|
|
# used to try to keep the test suite working on all architectures, but it has
|
|
# become too much of a burden. Only run tests if we happen to build on x86_64.
|
|
# We cannot use %%ifarch here because this is a noarch package.
|
|
if [ "$(uname -m)" = "x86_64" ]; then
|
|
# Split into many small chunks to reduce waiting in the end-game
|
|
jobs=%{?_smp_mflags}; jobs=${jobs#-j}; jobs=$((jobs * 3))
|
|
|
|
xvfb-run -d \
|
|
parallel %{?_smp_mflags} \
|
|
%{python3} bin/test -v --split {}/$jobs \
|
|
::: $(bash -c "echo {1..$jobs}")
|
|
fi
|
|
|
|
%files -n python3-%{name} -f %{pyproject_files}
|
|
%doc AUTHORS README.md
|
|
%doc doc/_build/cheatsheet/cheatsheet.pdf
|
|
%doc doc/_build/cheatsheet/combinatoric_cheatsheet.pdf
|
|
%{_bindir}/isympy
|
|
%{_mandir}/man1/isympy.1*
|
|
|
|
%files examples
|
|
%doc examples/*
|
|
|
|
%files doc
|
|
%docdir %{_docdir}/%{name}-doc/html
|
|
%{_docdir}/%{name}-doc/html
|
|
|
|
%changelog
|
|
%autochangelog
|