## START: Set by rpmautospec ## (rpmautospec version 0.3.5) ## RPMAUTOSPEC: autorelease, autochangelog %define autorelease(e:s:pb:n) %{?-p:0.}%{lua: release_number = 11; 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 # Conditionals for different bindings # # Drop python3-catch22 (https://pypi.org/project/catch22/) beginning with F40 # since these bindings are obsolete; a new python-pycatch22 package for # https://pypi.org/project/pycatch22/ is needed. %bcond Py %{expr:%{defined fedora} && 0%{?fedora} < 40} # Only supports Matlab at the moment # https://github.com/chlubba/catch22/issues/12 %bcond octave 0 # Package native R package separately: # https://github.com/chlubba/catch22/wiki/Installation-and-Testing#r says that is to be preferred # https://github.com/hendersontrent/Rcatch22 Name: catch22 Version: 0.4.0 Release: %autorelease Summary: CAnonical Time-series CHaracteristics # The Matlab code is certainly GPL-3.0-or-later, but everything else is # ambiguously “GPLv3.” We conservatively assume GPL-3.0-only for now, but have # asked for clarification (Please clarify GPL version, # https://github.com/DynamicsAndNeuralSystems/catch22/issues/32). License: GPL-3.0-only URL: https://github.com/chlubba/catch22 Source0: %{url}/archive/v%{version}/%{name}-%{version}.tar.gz # Helper script for content-aware comparison of CSV file output from tests Source1: compare_output # Hand-written for Fedora in groff_man(7) format based on --help text Source2: run_features.1 # Backport upstream commit 135fb01bbd71c98fea01a7a2612abdca531b44f6 “Python # version numbering fixed” # # Fixes: # # Python package version mismatch # https://github.com/DynamicsAndNeuralSystems/catch22/issues/27 Patch: %{url}/commit/135fb01bbd71c98fea01a7a2612abdca531b44f6.patch BuildRequires: gcc BuildRequires: python3-devel %if %{without Py} Obsoletes: python3-catch22 < 0.4.0-9 %endif %global _description %{expand: catch22 is a collection of 22 time-series features coded in C that can be run from Python, R, Matlab, and Julia. The catch22 features are a high-performing subset of the over 7000 features in hctsa. Features were selected based on their classification performance across a collection of 93 real-world time-series classification problems, as described in our open-access paper: - Lubba et al. (2019). catch22: CAnonical Time-series CHaracteristics (https://doi.org/10.1007/s10618-019-00647-x) The computational pipeline used to generate the catch22 feature set is in the op_importance (https://github.com/chlubba/op_importance) repository. For catch22-related information and resources, including a list of publications using catch22, see the catch22 wiki (https://github.com/chlubba/catch22/wiki).} %description %_description %if %{with Py} %package -n python3-%{name} Summary: %{summary} # See the comment above the base package License field License: GPL-3.0-only %description -n python3-%{name} %_description %endif %if %{with octave} %global octpkg %{name} %package -n octave-%{name} Summary: %{summary} License: GPL-3.0-or-later BuildRequires: octave-devel Requires: octave(api) = %{octave_api} Requires(post): octave Requires(postun): octave %description -n octave-%{name} %_description %endif %prep %autosetup -p1 find . -name ".gitignore" -print -delete %if %{with Py} pushd wrap_Python # Default setup.py should be the Python 2 version: mv setup.py setup_P2.py mv setup_P3.py setup.py popd %endif %if %{with octave} # Set up for Octave install echo "Does not yet support Octave." %endif %generate_buildrequires %if %{with Py} pushd wrap_Python >/dev/null %pyproject_buildrequires popd >/dev/null %endif %build pushd C %set_build_flags # https://github.com/chlubba/catch22/wiki/Installation-and-Testing "${CC-gcc}" ${CFLAGS} -o run_features \ main.c \ CO_AutoCorr.c \ DN_HistogramMode_10.c \ DN_HistogramMode_5.c \ DN_OutlierInclude.c \ FC_LocalSimple.c \ IN_AutoMutualInfoStats.c \ MD_hrv.c \ PD_PeriodicityWang.c \ SB_BinaryStats.c \ SB_CoarseGrain.c \ SB_MotifThree.c \ SB_TransitionMatrix.c \ SC_FluctAnal.c \ SP_Summaries.c \ DN_Mean.c \ DN_Spread_Std.c \ butterworth.c \ fft.c \ helper_functions.c \ histcounts.c \ splinefit.c \ stats.c \ ${LDFLAGS} -lm popd %if %{with Py} pushd wrap_Python %pyproject_wheel popd %endif %if %{with octave} echo "Does not yet support Octave." %endif %install pushd C install -p -m 0755 run_features -Dt %{buildroot}/%{_bindir} popd install -t '%{buildroot}%{_mandir}/man1' -D -p -m 0644 '%{SOURCE2}' %if %{with Py} pushd wrap_Python %pyproject_install %pyproject_save_files %{name} %{name}_C popd %endif %if %{with octave} echo "Does not yet support Octave." %endif %check find testData -type f -name '*_output.txt' \ -execdir cp -v -p '{}' '{}.expected' ';' PATH="${PATH}:%{buildroot}%{_bindir}" ./testData/runtests.sh for x in testData/*.expected do %{python3} '%{SOURCE1}' \ --ignore-extra='DN_Mean' \ --ignore-extra='DN_Spread_Std' \ "${x}" "$(echo "${x}" | sed -r 's/\.expected$//')" done %if %{with Py} pushd wrap_Python PYTHONPATH='%{buildroot}/%{python3_sitearch}' %{python3} testing.py popd %endif %if %{with octave} %post %octave_cmd pkg rebuild %preun %octave_pkg_preun %postun %octave_cmd pkg rebuild %endif %files %license LICENSE %doc README.md featureList.txt %{_bindir}/run_features %{_mandir}/man1/run_features.1* %if %{with Py} %files -n python3-%{name} -f %{pyproject_files} %license LICENSE %doc README.md featureList.txt %endif %if %{with octave} %files -n octave-%{name} %license LICENSE %doc featureList.txt %{octpkglibdir} %dir %{octpkgdir} %{octpkgdir}/*.m %doc %{octpkgdir}/doc-cache %{octpkgdir}/packinfo %endif %changelog * Thu Sep 28 2023 Benjamin A. Beasley - 0.4.0-10 - Fix leading blank lines in descriptions * Thu Sep 28 2023 Benjamin A. Beasley - 0.4.0-9 - Drop obsolete python3-catch22 bindings in F40+ * Thu Sep 28 2023 Benjamin A. Beasley - 0.4.0-8 - Convert to SPDX - Ask upstream for further license clarification * Thu Sep 28 2023 Benjamin A. Beasley - 0.4.0-7 - Use new (rpm 4.17.1+) bcond style * Thu Sep 28 2023 Benjamin A. Beasley - 0.4.0-6 - Add a trivial hand-written man page * Wed Jul 19 2023 Fedora Release Engineering - 0.4.0-5 - Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild * Tue Jun 13 2023 Python Maint - 0.4.0-4 - Rebuilt for Python 3.12 * Wed Jan 18 2023 Fedora Release Engineering - 0.4.0-3 - Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild * Wed Jul 20 2022 Fedora Release Engineering - 0.4.0-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild * Tue Jul 12 2022 Benjamin A. Beasley - 0.4.0-1 - Update to 0.4.0 (close RHBZ#2095508) - Add a Python helper script “compare_output” to validate test output while allowing for small differences in floating-point values across architectures * Wed Jun 15 2022 Benjamin A. Beasley - 0.3.1-1 - Update to 0.3.1 (close RHBZ#2095508) - Drop “forge” macros since they are not doing much here - Switch to pyproject-rpm-macros * Mon Jun 13 2022 Python Maint - 0.2.1-3 - Rebuilt for Python 3.11 * Wed Jan 19 2022 Fedora Release Engineering - 0.2.1-2 - Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild * Tue Aug 10 2021 Ankur Sinha - 0.2.1-1 - Correct location of LDFLAGS - Move linker flags to end * Mon Aug 09 2021 Ankur Sinha - 0.2.1-1 - Add sub-package specific licenses - Add LDFLAGS - Preserve time stamps - Remove R sub-package: package Rcatch22 separately - Run python test - Add basic C test * Thu Jul 08 2021 Ankur Sinha - 0.2.1-1 - Initial build