## START: Set by rpmautospec ## (rpmautospec version 0.3.5) ## RPMAUTOSPEC: autorelease, autochangelog %define autorelease(e:s:pb:n) %{?-p:0.}%{lua: release_number = 1; 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 # Sphinx-generated HTML documentation is not suitable for packaging; see # https://bugzilla.redhat.com/show_bug.cgi?id=2006555 for discussion. # # We generate PDF documentation as a substitute. %bcond doc_pdf 1 Name: python-cyipopt Version: 1.3.0 Release: %autorelease Summary: Cython interface for the interior point optimizer IPOPT # The entire source is EPL-2.0, except: # # BSD-3-Clause: # - cyipopt/tests/unit/test_scipy_ipopt_from_scipy.py # # Note that the licenses in licenses_manylinux_bundled_libraries/ do not apply # because this package does not bundle dependencies as the PyPI wheels do. License: EPL-2.0 AND BSD-3-Clause URL: https://github.com/mechmotum/cyipopt # We prefer the GitHub source archive to the PyPI one because it contains # the examples. Source: %{url}/archive/v%{version}/cyipopt-%{version}.tar.gz # https://fedoraproject.org/wiki/Changes/EncourageI686LeafRemoval ExcludeArch: %{ix86} BuildRequires: python3-devel BuildRequires: pkgconfig(ipopt) >= 3.12 # Called from setup.py: BuildRequires: /usr/bin/pkg-config BuildRequires: python3dist(pytest) # Scipy is an optional dependency. Installing it allows testing the scipy # integration. BuildRequires: python3dist(scipy) >= 1.8 BuildRequires: gcc %if %{with doc_pdf} BuildRequires: make BuildRequires: python3-sphinx-latex BuildRequires: latexmk BuildRequires: tex(morefloats.sty) %endif %global common_description %{expand: Ipopt (Interior Point OPTimizer, pronounced eye-pea-opt) is a software package for large-scale nonlinear optimization. Ipopt is available from the COIN-OR initiative, under the Eclipse Public License (EPL). cyipopt is a Python wrapper around Ipopt. It enables using Ipopt from the comfort of the Python programming language.} %description %{common_description} %package -n python3-cyipopt Summary: %{summary} # From README.rst: # # As of version 1.1.0 (2021-09-07), the distribution is released under the # name "cyipopt" on PyPi (https://pypi.org/project/cyipopt). Before version # 1.1.0, it was released under the name "ipopt" # (https://pypi.org/project/ipopt). # # A compatibility shim is provided for the old package name. %py_provides python3-ipopt # Furthermore, the extension module is installed at the top level as # “ipopt_wrapper”. %py_provides python3-ipopt_wrapper %description -n python3-cyipopt %{common_description} %package doc Summary: Documentation and examples for cyipopt BuildArch: noarch %description doc %{common_description} %prep %autosetup -n cyipopt-%{version} -p1 # PyPI wheels need to be built against an old version of numpy for # compatibility, but we just need whatever is in the distrubtion. sed -r -i 's/"oldest-supported-(numpy)"/"\1"/' pyproject.toml # Replace zero-length files in the tests with proper empty text files, i.e., # just a newline. It makes sense for __init__.py files to be empty, but the # empty test files look like a mistake, so an upstream issue was filed: # https://github.com/mechmotum/cyipopt/issues/135 echo '' | tee $(find cyipopt/tests -type f -name '*.py' -size 0 | tr '\n' ' ') %py3_shebang_fix examples %if %{with doc_pdf} # Avoid: # ! LaTeX Error: Too deeply nested. echo 'latex_elements["preamble"] = r"\usepackage{enumitem}\setlistdepth{99}"' \ >> docs/source/conf.py %endif %generate_buildrequires %pyproject_buildrequires %{?with_doc_pdf:docs/requirements.txt} %build %pyproject_wheel %if %{with doc_pdf} BLIB="${PWD}/build/lib.%{python3_platform}-cpython-%{python3_version_nodots}" PYTHONPATH="${BLIB}" %make_build -C docs latex \ SPHINXOPTS='-j%{?_smp_build_ncpus}' %make_build -C docs/build/latex LATEXMKOPTS='-quiet' %endif %install %pyproject_install %pyproject_save_files cyipopt ipopt ipopt_wrapper %check %ifarch ppc64le s390x # Arch-dependent failures of test_minimize_ipopt_jac_with_scipy_methods[cobyla] # https://github.com/mechmotum/cyipopt/issues/237 k="${k-}${k+ and }not test_minimize_ipopt_jac_with_scipy_methods[cobyla]" %endif %ifarch x86_64 # Flaky failure of TestSLSQP::test_minimize_unbounded_approximated on x86_64 # https://github.com/mechmotum/cyipopt/issues/238 k="${k-}${k+ and }not (TestSLSQP and test_minimize_unbounded_approximated)" %endif %pytest -v -rsx -k "${k-}" # Run the examples for additional confidence. while read -r example do %{py3_test_envvars} '%{python3}' "${example}" done < <( # Skip hs071_scipy_jax.py, since it requires https://pypi.org/project/jax/, # which is not packaged. find examples -type f -name '*.py' ! -name hs071_scipy_jax.py ) %files -n python3-cyipopt -f %{pyproject_files} # pyproject-rpm-macros handles LICENSE; verify with “rpm -qL -p …” %files doc %license LICENSE %doc CHANGELOG.rst %doc README.rst %doc examples/ %if %{with doc_pdf} %doc docs/build/latex/cyipopt.pdf %endif %changelog * Sat Nov 04 2023 Benjamin A. Beasley - 1.3.0-1 - Update to 1.3.0 (close RHBZ#2240348) * Wed Oct 11 2023 Benjamin A. Beasley - 1.2.0-2 - Use %%{py3_test_envvars} to run examples * Sun Jul 23 2023 Benjamin A. Beasley - 1.2.0-1 - Update to 1.2.0 * Sun Jul 23 2023 Benjamin A. Beasley - 1.1.0-20 - Drop Cython/setuptools runtime dependencies as a *downstream* patch * Fri Jul 21 2023 Benjamin A. Beasley - 1.1.0-19 - Follow upstreaming in restoring the runtime Cython dependency * Thu Jul 20 2023 Benjamin A. Beasley - 1.1.0-18 - Upsteamed Cython<3 pin - Dropped Cython from runtime dependencies * Thu Jul 20 2023 Benjamin A. Beasley - 1.1.0-17 - Use Cython compat package until Cython 3 compatibility is fixed * Wed Jun 28 2023 Python Maint - 1.1.0-16 - Rebuilt for Python 3.12 * Tue Jun 20 2023 Benjamin A. Beasley - 1.1.0-15 - Use new (rpm 4.17.1+) bcond style * Sat Jun 03 2023 Benjamin A. Beasley - 1.1.0-14 - Remove explicit %%set_build_flags, not needed since F36 * Fri Mar 17 2023 Benjamin A. Beasley - 1.1.0-12 - Don’t assume %%_smp_mflags is -j%%_smp_build_ncpus * Wed Mar 08 2023 Benjamin A. Beasley - 1.1.0-11 - Drop %%pyproject_build_lib (F37+) * Wed Mar 08 2023 Benjamin A. Beasley - 1.1.0-10 - Don’t use deprecated/removed np.float alias * Fri Jan 20 2023 Fedora Release Engineering - 1.1.0-9 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild * Wed Dec 21 2022 Benjamin A. Beasley - 1.1.0-8 - Leaf package: remove i686 support * Wed Dec 21 2022 Benjamin A. Beasley - 1.1.0-7 - Indicate dirs. in files list with trailing slashes * Wed Nov 30 2022 Benjamin A. Beasley - 1.1.0-6 - Drop default -r argument to pyproject_buildrequires * Fri Oct 21 2022 Benjamin A. Beasley - 1.1.0-5 - Confirm License is SPDX EPL-1.0 * Fri Jul 22 2022 Fedora Release Engineering - 1.1.0-4 - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild * Wed Jun 15 2022 Python Maint - 1.1.0-3 - Rebuilt for Python 3.11 * Wed Apr 20 2022 Benjamin A. Beasley - 1.1.0-2 - Stop numbering patches * Wed Feb 02 2022 Benjamin A. Beasley - 1.1.0-1 - Initial package (close RHBZ#2020886)