diff --git a/.gitignore b/.gitignore index 85be4b5..8624a3d 100644 --- a/.gitignore +++ b/.gitignore @@ -5,3 +5,137 @@ /snakemake-6.8.0.tar.gz /snakemake-6.12.3.tar.gz /snakemake-6.13.1.tar.gz +/snakemake-7.8.5.tar.gz +/snakemake-7.9.0.tar.gz +/snakemake-7.11.0.tar.gz +/snakemake-7.12.0.tar.gz +/snakemake-7.12.1.tar.gz +/snakemake-7.13.0.tar.gz +/snakemake-7.17.2.tar.gz +/snakemake-7.18.0.tar.gz +/snakemake-7.18.1.tar.gz +/snakemake-7.18.2.tar.gz +/snakemake-7.19.1.tar.gz +/snakemake-7.20.0.tar.gz +/snakemake-7.21.0.tar.gz +/snakemake-7.22.0.tar.gz +/snakemake-7.24.1.tar.gz +/snakemake-7.25.2.tar.gz +/snakemake-7.25.3.tar.gz +/snakemake-7.26.0.tar.gz +/snakemake-7.30.1.tar.gz +/snakemake-7.31.1.tar.gz +/snakemake-7.32.0.tar.gz +/snakemake-7.32.2.tar.gz +/snakemake-7.32.3.tar.gz +/snakemake-7.32.4.tar.gz +/snakemake-8.1.2.tar.gz +/snakemake-8.2.1.tar.gz +/snakemake-8.2.3.tar.gz +/snakemake-8.4.3.tar.gz +/snakemake-8.4.4.tar.gz +/snakemake-8.4.6.tar.gz +/snakemake-8.4.7.tar.gz +/snakemake-8.4.8.tar.gz +/snakemake-8.4.9.tar.gz +/snakemake-8.4.12.tar.gz +/snakemake-8.5.2.tar.gz +/snakemake-8.5.3.tar.gz +/snakemake-8.5.4.tar.gz +/snakemake-8.5.5.tar.gz +/snakemake-8.6.0.tar.gz +/snakemake-8.7.0.tar.gz +/snakemake-8.8.0.tar.gz +/snakemake-8.9.0.tar.gz +/snakemake-8.10.4.tar.gz +/snakemake-8.10.6.tar.gz +/snakemake-8.10.7.tar.gz +/snakemake-8.10.8.tar.gz +/snakemake-8.11.0.tar.gz +/snakemake-8.11.1.tar.gz +/snakemake-8.11.3.tar.gz +/snakemake-8.11.6.tar.gz +/snakemake-8.12.0.tar.gz +/snakemake-8.13.0.tar.gz +/snakemake-8.14.0.tar.gz +/snakemake-8.15.2.tar.gz +/snakemake-8.16.0.tar.gz +/snakemake-8.17.0.tar.gz +/snakemake-8.18.0.tar.gz +/snakemake-8.18.2.tar.gz +/snakemake-8.30.0.tar.gz +/snakemake-8.30.0-assets.tar.zst +/snakemake-9.3.3.tar.gz +/snakemake-9.3.3-assets.tar.zst +/snakemake-9.3.4.tar.gz +/snakemake-9.3.4-assets.tar.zst +/snakemake-9.4.0.tar.gz +/snakemake-9.4.0-assets.tar.zst +/snakemake-9.5.1.tar.gz +/snakemake-9.5.1-assets.tar.zst +/snakemake-6dee2b55fbfff3bdad33cecdbeb8bd55ff4586bc.tar.gz +/snakemake-6dee2b55fbfff3bdad33cecdbeb8bd55ff4586bc-assets.tar.zst +/snakemake-9.6.1.tar.gz +/snakemake-9.6.1-assets.tar.zst +/snakemake-9.6.2.tar.gz +/snakemake-9.6.2-assets.tar.zst +/snakemake-9.7.1.tar.gz +/snakemake-9.7.1-assets.tar.zst +/snakemake-9.8.0.tar.gz +/snakemake-9.8.0-assets.tar.zst +/snakemake-9.8.1.tar.gz +/snakemake-9.8.1-assets.tar.zst +/snakemake-9.8.2.tar.gz +/snakemake-9.8.2-assets.tar.zst +/snakemake-9.9.0.tar.gz +/snakemake-9.9.0-assets.tar.zst +/snakemake-9.10.0.tar.gz +/snakemake-9.10.0-assets.tar.zst +/snakemake-9.10.1.tar.gz +/snakemake-9.10.1-assets.tar.zst +/snakemake-9.11.0.tar.gz +/snakemake-9.11.0-assets.tar.zst +/snakemake-9.11.2.tar.gz +/snakemake-9.11.2-assets.tar.zst +/snakemake-9.11.3.tar.gz +/snakemake-9.11.3-assets.tar.zst +/snakemake-9.11.4.tar.gz +/snakemake-9.11.4-assets.tar.zst +/snakemake-9.11.5.tar.gz +/snakemake-9.11.5-assets.tar.zst +/snakemake-9.11.6.tar.gz +/snakemake-9.11.6-assets.tar.zst +/snakemake-9.11.7.tar.gz +/snakemake-9.11.7-assets.tar.zst +/snakemake-9.11.8.tar.gz +/snakemake-9.11.8-assets.tar.zst +/snakemake-9.11.9.tar.gz +/snakemake-9.11.9-assets.tar.zst +/snakemake-9.12.0.tar.gz +/snakemake-9.12.0-assets.tar.zst +/snakemake-9.13.0.tar.gz +/snakemake-9.13.0-assets.tar.zst +/snakemake-9.13.1.tar.gz +/snakemake-9.13.1-assets.tar.zst +/snakemake-9.13.2.tar.gz +/snakemake-9.13.2-assets.tar.zst +/snakemake-9.13.3.tar.gz +/snakemake-9.13.3-assets.tar.zst +/snakemake-9.13.4.tar.gz +/snakemake-9.13.4-assets.tar.zst +/snakemake-9.13.5.tar.gz +/snakemake-9.13.5-assets.tar.zst +/snakemake-9.13.6.tar.gz +/snakemake-9.13.6-assets.tar.zst +/snakemake-9.13.7.tar.gz +/snakemake-9.13.7-assets.tar.zst +/snakemake-9.14.2.tar.gz +/snakemake-9.14.2-assets.tar.zst +/snakemake-9.14.3.tar.gz +/snakemake-9.14.3-assets.tar.zst +/snakemake-9.14.4.tar.gz +/snakemake-9.14.4-assets.tar.zst +/snakemake-9.14.5.tar.gz +/snakemake-9.14.5-assets.tar.zst +/snakemake-9.14.6.tar.gz +/snakemake-9.14.6-assets.tar.zst diff --git a/chanegelog b/chanegelog deleted file mode 100644 index bce324f..0000000 --- a/chanegelog +++ /dev/null @@ -1,32 +0,0 @@ -* Mon Jan 24 2022 Vanessa Christopher - 6.13.1-2 -- autorelease - -* Sun Jan 23 2022 Vanessa Christopher - 6.13.1-1 -- Version update to v6.13.1 - -* Sat Jan 22 2022 Fedora Release Engineering - 6.12.3-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild - -* Sat Dec 18 2021 Aniket Pradhan - 6.12.3-1 -- Version update to v6.12.3 -- Use pyproject macros - -* Thu Sep 09 2021 Aniket Pradhan - 6.8.0-1 -- Version update to v6.8.0 - -* Tue Aug 17 2021 Aniket Pradhan - 6.7.0-1 -- Version update to v6.7.0 - -* Fri Jul 23 2021 Fedora Release Engineering - 6.6.0-2 -- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild - -* Sat Jul 17 2021 Aniket Pradhan - 6.6.0-1 -- Version update to v6.6.0 -- Remove patches for documentation as they are no longer needed - -* Mon Jul 05 2021 Aniket Pradhan - 6.5.2-2 -- Correct the import path of napoleon extension -- Use pytest macro - -* Sat Jul 03 2021 Aniket Pradhan - 6.5.2-1 -- Initial build diff --git a/changelog b/changelog new file mode 100644 index 0000000..0b1bd0e --- /dev/null +++ b/changelog @@ -0,0 +1,179 @@ +* Fri Dec 22 2023 Benjamin A. Beasley - 7.32.4-2 +- Fix mis-named “chanegelog” in repo + +* Mon Sep 18 2023 Packit - 7.32.4-1 +- [packit] 7.32.4 upstream release + +* Thu Aug 10 2023 Benjamin A. Beasley - 7.32.3-1 +- Update to 7.32.3 + +* Thu Aug 10 2023 Packit - 7.32.2-1 +- [packit] 7.32.2 upstream release + +* Thu Aug 10 2023 Ankur Sinha (Ankur Sinha Gmail) - 7.32.0-8 +- chore(packit): re-add upstream_tag_template + +* Thu Aug 10 2023 Ankur Sinha (Ankur Sinha Gmail) - 7.32.0-7 +- chore(packit): add koji job + +* Thu Aug 10 2023 Ankur Sinha (Ankur Sinha Gmail) - 7.32.0-6 +- chore(packit): limit PRs to rawhide + +* Wed Aug 09 2023 Ankur Sinha (Ankur Sinha Gmail) - 7.32.0-5 +- Revert "chore(packit): define upstream tag template" + +* Wed Aug 09 2023 Ankur Sinha (Ankur Sinha Gmail) - 7.32.0-4 +- chore(packit): define upstream tag template + +* Sat Aug 05 2023 Benjamin A. Beasley - 7.32.0-3 +- Don’t allow packit to report issues upstream + +* Fri Aug 04 2023 Ankur Sinha (Ankur Sinha Gmail) - 7.32.0-2 +- chore: add packit conf + +* Fri Aug 04 2023 Benjamin A. Beasley - 7.32.0-1 +- Update to 7.32.0 (close RHBZ#2229001) + +* Wed Aug 02 2023 Benjamin A. Beasley - 7.31.1-1 +- Update to 7.31.1 (close RHBZ#2224675) + +* Sat Jul 22 2023 Fedora Release Engineering - 7.30.1-4 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Mon Jul 17 2023 Benjamin A. Beasley - 7.30.1-3 +- Fix FTBFS due to SyntaxWarnings in Python 3.12 (fix RHBZ#2220595) + +* Thu Jul 13 2023 Python Maint - 7.30.1-2 +- Rebuilt for Python 3.12 + +* Thu Jun 29 2023 Benjamin A. Beasley - 7.30.1-1 +- Update to 7.30.1 (close RHBZ#2214110) +- Adds a metapackage for the new “azure” extra + +* Thu Jun 29 2023 Benjamin A. Beasley - 7.26.0-6 +- Use new (rpm 4.17.1+) bcond style + +* Mon May 22 2023 Benjamin A. Beasley - 7.26.0-5 +- Install nano syntax highlighting support + +* Mon May 22 2023 Benjamin A. Beasley - 7.26.0-4 +- Install vim syntax highlighting support + +* Mon May 22 2023 Benjamin A. Beasley - 7.26.0-3 +- Install bash completions + +* Mon May 22 2023 Benjamin A. Beasley - 7.26.0-2 +- Add a generated man page + +* Mon May 22 2023 Benjamin A. Beasley - 7.26.0-1 +- Update to 7.26.0 (close RHBZ#2203471) + +* Sat May 06 2023 Benjamin A. Beasley - 7.25.3-1 +- Update to 7.25.3 (close RHBZ#2193279J) + +* Sat Apr 29 2023 Benjamin A. Beasley - 7.25.2-1 +- Update to 7.25.2 (close RHBZ#2178275) + +* Sat Mar 11 2023 Benjamin A. Beasley - 7.24.1-1 +- Update to 7.24.1 (close RHBZ#2171148) + +* Mon Feb 13 2023 Benjamin A. Beasley - 7.22.0-1 +- Update to 7.22.0 (close RHBZ#2169240) + +* Wed Feb 08 2023 Benjamin A. Beasley - 7.21.0-1 +- Update to 7.21.0 (close RHBZ#2166983) + +* Sun Jan 22 2023 Benjamin A. Beasley - 7.20.0-1 +- Update to 7.20.0 (close RHBZ#2162603) + +* Sat Jan 21 2023 Fedora Release Engineering - 7.19.1-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Wed Jan 04 2023 Benjamin A. Beasley - 7.19.1-1 +- Update to 7.19.1 (close RHBZ#2153168) + +* Fri Dec 09 2022 Benjamin A. Beasley - 7.18.2-1 +- Update to 7.8.12 (close RHBZ#2139921) + +* Thu Dec 08 2022 Benjamin A. Beasley - 7.18.1-1 +- Update to 7.18.1 + +* Tue Nov 01 2022 Benjamin A. Beasley - 7.18.0-1 +- Update to 7.18.0 (close RHBZ#2138985) + +* Tue Nov 01 2022 Benjamin A. Beasley - 7.17.2-4 +- Remove an obsolete spec file comment + +* Tue Nov 01 2022 Benjamin A. Beasley - 7.17.2-3 +- Confirm the License is SPDX MIT + +* Tue Nov 01 2022 Benjamin A. Beasley - 7.17.2-2 +- Simplify references to the -doc subpackage + +* Sun Oct 30 2022 Benjamin A. Beasley - 7.17.2-1 +- Update to 7.17.2 (close RHBZ#2130414) + +* Fri Aug 26 2022 Benjamin A. Beasley - 7.13.0-1 +- Update to 7.13.0 (close RHBZ#2121550) + +* Mon Aug 22 2022 Benjamin A. Beasley - 7.12.1-2 +- Use rsvg-convert instead of inkscape + +* Thu Aug 11 2022 Benjamin A. Beasley - 7.12.1-1 +- Update to 7.12.1 (close RHBZ#2117565) + +* Sun Jul 31 2022 Benjamin A. Beasley - 7.12.0-1 +- Update to 7.12.0 + +* Wed Jul 27 2022 Benjamin A. Beasley - 7.11.0-1 +- Update to 7.11.0 + +* Sun Jul 24 2022 Benjamin A. Beasley - 7.9.0-2 +- Build documentation as PDF instead of HTML + +* Sun Jul 24 2022 Benjamin A. Beasley - 7.9.0-1 +- Update to 7.9.0 (close RHBZ#2039280, fix RHBZ#2099173) +- Add “extras” metapackages +- Generate BuildRequires for documentation + +* Sat Jul 23 2022 Fedora Release Engineering - 6.13.1-5 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Thu Jun 16 2022 Python Maint - 6.13.1-4 +- Rebuilt for Python 3.11 + +* Mon Jan 24 2022 Vanessa_kris - 6.13.1-3 +- added autochanelog + +* Mon Jan 24 2022 Vanessa Christopher - 6.13.1-2 +- autorelease + +* Sun Jan 23 2022 Vanessa Christopher - 6.13.1-1 +- Version update to v6.13.1 + +* Sat Jan 22 2022 Fedora Release Engineering - 6.12.3-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Sat Dec 18 2021 Aniket Pradhan - 6.12.3-1 +- Version update to v6.12.3 +- Use pyproject macros + +* Thu Sep 09 2021 Aniket Pradhan - 6.8.0-1 +- Version update to v6.8.0 + +* Tue Aug 17 2021 Aniket Pradhan - 6.7.0-1 +- Version update to v6.7.0 + +* Fri Jul 23 2021 Fedora Release Engineering - 6.6.0-2 +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Sat Jul 17 2021 Aniket Pradhan - 6.6.0-1 +- Version update to v6.6.0 +- Remove patches for documentation as they are no longer needed + +* Mon Jul 05 2021 Aniket Pradhan - 6.5.2-2 +- Correct the import path of napoleon extension +- Use pytest macro + +* Sat Jul 03 2021 Aniket Pradhan - 6.5.2-1 +- Initial build diff --git a/get_assets b/get_assets new file mode 100755 index 0000000..c69a1cd --- /dev/null +++ b/get_assets @@ -0,0 +1,88 @@ +#!/bin/sh +set -o nounset +set -o errexit + +DIST_GIT="$(cd "$(dirname "$0")"; pwd)" +SPEC="${DIST_GIT}/snakemake.spec" + +WORKDIR="$(mktemp -d)" +trap "rm -rf '${WORKDIR}'" INT TERM EXIT +cd "${WORKDIR}" +# Make sure we have an absolute path to the working directory. +WORKDIR="${PWD}" + +echo "==== Download source archive ====" 1>&2 +SOURCE0="$( + spectool --list-files "${SPEC}" | + awk '$1 == "Source0:" { print $2 }' +)" +TARNAME="$(basename "${SOURCE0}")" +XDIR="$(basename "${TARNAME}" '.tar.gz')" +spectool --get-files "${SPEC}" + +echo "==== Extract source archive ====" 1>&2 +tar -xzf "${TARNAME}" +# Capture modification time from the original source archive, before we touch +# anything; everything in our asset archive will have this mtime for better +# reproducibility. +MTIME="$(stat --format='%Y' "${XDIR}/src/snakemake/assets/")" + +echo "==== Apply patches ====" 1>&2 +spectool --list-files "${SPEC}" | + awk '/^Patch/ && !/modified-assets/ { print $2 }' | + while read -r patchfile + do + set -o nounset + set -o errexit + echo "--> ${patchfile}" 1>&2 + cd "${WORKDIR}/${XDIR}" + patch -p1 < "${DIST_GIT}/$(basename "${patchfile}")" + done + +echo "==== Download assets ====" 1>&2 +PYTHONPATH="${PWD}/${XDIR}/src/snakemake" python3 <<'EOF' +from assets import Assets +Assets.deploy() +EOF + +echo "==== Modify assets ====" 1>&2 +echo "--> Remove array-flat-polyfill (CC0-1.0 code, unused)" 1>&2 +target='src/snakemake/assets/data/vega-lite/vega-lite.js' +echo "To be removed from ${target}:" 1>&2 +grep -E '^[[:blank:]]*Array\.prototype\.flat[[:blank:]]*\|\|' \ + "${XDIR}/${target}" 1>&2 +sed -r -i '/^[[:blank:]]*Array\.prototype\.flat[[:blank:]]*\|\|/d' \ + "${XDIR}/${target}" +echo '--> Search for vestiges of array-flat-polyfill' 1>&2 +if grep -ErinI 'defineProperty\(Array\.prototype,[[:blank:]]*.flat' \ + "${XDIR}/src/snakemake/assets" +then + echo 'MANUAL AUDIT REQUIRED' 1>&2 + exit 1 +fi +# Remove license file and the directory containing it +rm -rv "${XDIR}/src/snakemake/assets/data/array-flat-polyfill" +echo "--> Search for missed CC0-1.0 licenses" 1>&2 +if grep -ErinI '\bCC0\b' "${XDIR}/src/snakemake/assets" +then + echo 'MANUAL AUDIT REQUIRED' 1>&2 + exit 1 +fi + +echo "==== Archive assets ====" 1>&2 +RESULT="${XDIR}-assets.tar.zst" +ls -ld "${XDIR}/src/snakemake/assets/" +# https://www.gnu.org/software/tar/manual/html_section/Reproducibility.html +TZ=UTC LC_ALL=C tar \ + --create \ + --sort=name \ + --format=posix \ + --numeric-owner --owner=0 --group=0 \ + --mode=go+u,go-w \ + --pax-option='delete=atime,delete=ctime' \ + --clamp-mtime --mtime="@${MTIME}" \ + --directory="${XDIR}" \ + src/snakemake/assets/data | + zstdmt --ultra -22 > "${RESULT}" + +mv -v "${RESULT}" "${DIST_GIT}" diff --git a/snakemake-9.1.1-modified-assets.patch b/snakemake-9.1.1-modified-assets.patch new file mode 100644 index 0000000..6aa4419 --- /dev/null +++ b/snakemake-9.1.1-modified-assets.patch @@ -0,0 +1,44 @@ +diff -Naur snakemake-9.1.1-original/src/snakemake/assets/__init__.py snakemake-9.1.1/src/snakemake/assets/__init__.py +--- snakemake-9.1.1-original/src/snakemake/assets/__init__.py 2025-03-21 14:49:12.112309938 -0400 ++++ snakemake-9.1.1/src/snakemake/assets/__init__.py 2025-03-21 14:49:56.495171724 -0400 +@@ -379,9 +379,12 @@ + version="0.6.2", + ), + # End copied/derived/adapted code in vega, included in vega/vega.js ++ # Fedora patch: We have removed array-flat-polyfill from the bundle ++ # since its CC0-1.0 code is not-allowed for code; the checksum of the ++ # packaged bundle therefore differs from that of the published one. + "vega-lite/vega-lite.js": Asset( + url="https://cdnjs.cloudflare.com/ajax/libs/vega-lite/{version}/vega-lite.js", +- sha256="6eb7f93121cd9f44cf8640244f87c5e143f87c7a0b6cd113da4a9e41e3adf0aa", ++ sha256="5b9880c2bf7c1daac912ca1e80b384daf2e7dedc3c6b62bc5159ed86d3c51c7b", + version="5.2.0", + ), + "vega-lite/LICENSE": Asset( +@@ -428,13 +431,6 @@ + sha256="c2cfccb812fe482101a8f04597dfc5a9991a6b2748266c47ac91b6a5aae15383", + version="2.1.1", + ), +- "array-flat-polyfill/LICENSE": Asset( +- # Releases are not tagged in git; we use the commit hash +- # corresponding to the 1.0.1 release +- url="https://raw.githubusercontent.com/jonathantneal/array-flat-polyfill/362d855cb6ea2ef12f0676b116c5f9e4233b6f31/LICENSE.md", +- sha256="597756adcb51f243ef4fb386920377f61d012ace0904364e1a8ee9aaec6afc84", +- version="1.0.1", +- ), + "clone/LICENSE": Asset( + url="https://raw.githubusercontent.com/pvorb/clone/refs/tags/v{version}/LICENSE", + sha256="3fb0857ef0133928cf72c88dfc464e931486e88778961eedec25585e2321507f", +diff -Naur snakemake-9.1.1-original/src/snakemake/report/html_reporter/data/packages.py snakemake-9.1.1/src/snakemake/report/html_reporter/data/packages.py +--- snakemake-9.1.1-original/src/snakemake/report/html_reporter/data/packages.py 2025-03-21 14:49:08.721489278 -0400 ++++ snakemake-9.1.1/src/snakemake/report/html_reporter/data/packages.py 2025-03-21 14:49:56.496478714 -0400 +@@ -143,9 +143,6 @@ + "@types-clone": Package( + license_path="@types-clone/LICENSE", + ), +- "array-flat-polyfill": Package( +- license_path="array-flat-polyfill/LICENSE", +- ), + "clone": Package( + license_path="clone/LICENSE", + ), diff --git a/snakemake.rpmlintrc b/snakemake.rpmlintrc new file mode 100644 index 0000000..b0e2093 --- /dev/null +++ b/snakemake.rpmlintrc @@ -0,0 +1,12 @@ +# It is normal that extras metapackages should not have documentation, or any +# files at all. +addFilter(r"\+\w+.noarch: W: no-documentation") +# Removed in Snakemake 9.6 with no equivalent replacement. +addFilter(r" obsolete-not-provided snakemake\+(messaging)$") +# The -doc subpackage was removed and has no equivalent replacement. +addFilter(r" obsolete-not-provided snakemake-doc$") +# This is, unfortunately, intentional. See the comments in the spec file. +addFilter(r" python-leftover-require python-unversioned-command$") +# The assets bundle needs to be generated with a script, so it has no URL (and +# .tar.zst is perfectly legitimate). +addFilter(r" (invalid-url|inconsistent-file-extension).* snakemake-.*-assets\.tar\.zst") diff --git a/snakemake.spec b/snakemake.spec index c6ab718..6bb8fdb 100644 --- a/snakemake.spec +++ b/snakemake.spec @@ -1,7 +1,396 @@ -%bcond_without tests -%global debug_package %{nil} +# Work around a series of circular test dependencies: +# +# ⬐─python-snakemake-logger-plugin-rich🠔────╮ +# python-snakemake-interface-logger-plugins─╯ +# │↑python-snakemake-interface-scheduler-plugins +# │││↑ python-snakemake-interface-report-plugins +# ↓│↓│ ↓↑ ⬐───╮ +# snakemake → python-snakemake-interface-executor-plugins⬎ +# ↑↑↑ │ ⬑────────────────────python-snakemake-executor-plugin-cluster-generic +# │││ ↳python-snakemake-interface-storage-plugins─────────────────╮ +# │││ ↓────────────────╮│ +# ││╰────────────────────────python-snakemake-storage-plugin-http││ +# │╰─────────────────────────python-snakemake-storage-plugin-s3🠔─╯│ +# ╰──────────────────────────python-snakemake-storage-plugin-fs🠔──╯ +# +# A good build order is: +# +# 1. BOOTSTRAP: +# python-snakemake-interface-common +# 2. BOOTSTRAP: +# python-snakemake-interface-executor-plugins +# python-snakemake-interface-logger-plugins +# python-snakemake-interface-report-plugins +# python-snakemake-interface-scheduler-plugins +# python-snakemake-interface-storage-plugins +# 3. BOOTSTRAP: snakemake +# 4. python-snakemake-executor-plugin-cluster-generic +# python-snakemake-logger-plugin-rich +# python-snakemake-storage-plugin-fs +# python-snakemake-storage-plugin-http +# python-snakemake-storage-plugin-s3 +# 5. snakemake +# python-snakemake-interface-executor-plugins +# python-snakemake-interface-logger-plugins +# python-snakemake-interface-report-plugins +# python-snakemake-interface-scheduler-plugins +# python-snakemake-interface-storage-plugins +%bcond bootstrap 0 +%bcond tests %{without bootstrap} +# Run tests that require network access? This only makes sense for local mock +# builds in combination with --enable-network. +%bcond network_tests 0 +# Almost all of the conda tests require network access, but there are also +# other failures that are not straightforward to understand. +%bcond conda_tests 0 +%bcond gcs_tests 1 -%global pypi_name snakemake +Name: snakemake +Version: 9.14.6 +%global srcversion %(echo '%{version}' | cut -d '^' -f 1) +Release: %autorelease +Summary: Workflow management system to create reproducible and scalable data analyses + +# The primary license for Snakemake is MIT; web assets contribute a variety of +# other licenses. +# +# Apache-2.0 AND BSD-2-Clause AND BSD-3-CLause AND ISC AND MIT AND MIT-0: +# - src/snakemake/assets/data/vega/vega.js +# +# BSD-3-Clause AND MIT: +# - src/snakemake/assets/data/vega-lite/vega-lite.js +# +# BSD-3-Clause AND ISC AND MIT: +# - src/snakemake/assets/data/vega-embed/vega-embed.js +# +# MIT: +# - All Snakemake code unless otherwise noted +# - heroicons: It is unclear if anything derived from heroicons is actually +# present in the package, but upstream carries a copy of its license file, so +# we mention the possibility. +# - src/snakemake/assets/data/prop-types/prop-types.min.js +# - src/snakemake/assets/data/tailwindcss/tailwind.css +# +# == License breakdown: src/snakemake/assets/data/vega/vega.js == +# +# The primary license for npm(vega) is BSD-3-Clause. The bundle contains: +# +# Apache-2.0: +# - apache-commons-math, from which an implementation of erfinv is derived +# BSD-2-Clause: +# - npm(esprima), bundled as a copied, derived, or adapted snippet +# BSD-3-Clause: +# - npm(vega) and various npm(vega-*) libraries +# - npm(d3-contour), bundled as a copied, derived, or adapted snippet +# - npm(d3-regression), bundled as a copied, derived, or adapted snippet +# - npm(science), bundled as a copied, derived, or adapted snippet +# - npm(shapefile), bundled as a copied, derived, or adapted snippet +# ISC: +# - various npm(d3-*) libraries +# - npm(delaunator) +# - npm(quickselect) +# - npm(topojson-client) +# ISC AND MIT: +# - npm(d3-geo) (MIT is due to some code being derived from GeographicLib) +# - npm(d3-geo-projection) (MIT is due to some code being derived from +# https://github.com/scijs/integrate-adaptive-simpson) +# MIT: +# - npm(@types/estree) +# - npm(hashlru), bundled as a copied, derived, or adapted snippet +# - npm(regression), bundled as a copied, derived, or adapted snippet +# MIT-0: +# - npm(fabric), bundled as a copied, derived, or adapted snippet +# +# == License breakdown: src/snakemake/assets/data/vega-lite/vega-lite.js == +# +# The primary license for npm(vega-lite) is BSD-3-Clause. The bundle contains: +# +# BSD-3-Clause: +# - npm(vega-lite) and various npm(vega-*) libraries +# MIT: +# - npm(@types/clone) +# - npm(@types/estree) +# - npm(clone) +# - npm(fast-deep-equal) +# - npm(fast-json-stable-stringify) +# - npm(hashlru), bundled as a copied, derived, or adapted snippet +# - npm(json-stringify-pretty-compact) +# +# == License breakdown: src/snakemake/assets/data/vega-embed/vega-embed.js == +# +# The primary license for npm(vega-embed) is BSD-3-Clause. The bundle contains: +# +# BSD-3-Clause: +# - npm(vega-embed) and various npm(vega-*) libraries +# ISC: +# - npm(semver) +# MIT: +# - npm(fast-json-patch) +# - npm(json-stringify-pretty-compact) +License: %{shrink: + Apache-2.0 AND + BSD-2-Clause AND + BSD-3-Clause AND + ISC AND + MIT AND + MIT-0 + } +URL: https://snakemake.readthedocs.io/en/stable/index.html +%global forgeurl https://github.com/snakemake/snakemake +# We could use the PyPI sdist, which already contains the HTML report assets, +# but we would lose at least the vim extensions and changelog, and we would +# have to nontrivially modify the sdist to remove a CC0-1.0-licensed polyfill +# before uploading it to the lookaside cache, so doing so would not be +# meaningfully easier than using the GitHub archive with an additional source +# for the assets. +Source0: %{forgeurl}/archive/v%{version}/snakemake-%{version}.tar.gz +# The assets for HTML reports are normally downloaded in setup.py when creating +# the sdist. We use a script, Source2, executed with no arguments (implicitly +# relying on the spec file in the same directory) to download the assets, +# modify them as necessary, and pack them into an additional source archive. +Source1: snakemake-%{version}-assets.tar.zst +Source2: get_assets + +# Downstream-only: adjust the asset metadata in the sources, including +# checksums, for any adjustments that happened in the get_assets script. +# +# When the get_assets script unpacks and patches Source0 in order to use it to +# download assets, it skips this patch, because we need to first fetch the +# original assets in order to then modify them. The signal for this behavior is +# the substring "modified-assets" in the patch name. +Patch: snakemake-9.1.1-modified-assets.patch + +BuildSystem: pyproject +# Generate BR’s for all supported extras to ensure they do not FTI +BuildOption(generate_buildrequires): -x reports +BuildOption(install): -l snakemake +BuildOption(check): %{shrink: + -e '*.tests*' + %{?!with_gcs_tests:-e 'snakemake.executors.google_lifesciences_helper'} + } + +BuildArch: noarch + +BuildRequires: help2man + +# Snakemake uses (unversioned) "python" as the default remote execution +# command. Because remote hosts could be Windows machines, and those are likely +# to lack "python3.exe" (see https://github.com/python/cpython/issues/99185), +# we didn’t try to convince upstream to change this. Instead, we (reluctantly) +# just make sure that our own Snakemake installations are compatible by +# depending on python-unversioned-command. +BuildRequires: python-unversioned-command +Requires: python-unversioned-command + +BuildRequires: vim-filesystem +Requires: vim-filesystem + +# Required for snakemake.script.RScript, snakemake.notebook.RJupyterNotebook +# (Some of the tests in tests/tests_using_conda.py require this.) +BuildRequires: R-core +Recommends: R-core + +Provides: vim-snakemake = %{version}-%{release} + +# Regarding pre-compiled/pre-minified JavaScript, see: +# - https://pagure.io/fesco/issue/3177 +# - https://pagure.io/packaging-committee/pull-request/1370 +# Regarding CSS, see: +# - https://pagure.io/fesco/issue/3269 +# - https://pagure.io/packaging-committee/pull-request/1402 + +# Styles from Pygments are bundled in generated HTML reports (thus the presence +# of a Pygments license file), but the styles come from the system +# python3-pygments package and are not actually bundled in this package. + +# tailwind.css 3.4.16 is src/snakemake/assets/data/tailwindcss/tailwind.css, +# but we do not normally treat CSS frameworks as bundled dependencies, and it +# is not clear how we should name a virtusl Provides if we added one. + +# src/snakemake/assets/data/react/react.production.min.js +Provides: bundled(npm(react)) = 18.2.0 +# src/snakemake/assets/data/react/react-dom.production.min.js +Provides: bundled(npm(react-dom)) = 18.2.0 + +# src/snakemake/assets/data/vega/vega.js +Provides: bundled(npm(vega)) = 5.21.0 +# Bundled in src/snakemake/assets/data/vega/vega.js as dependencies: +# For versions of vega-* packages, see: +# https://github.com/vega/vega/blob/v5.21.0/packages +Provides: bundled(npm(vega-crossfilter)) = 4.0.5 +Provides: bundled(npm(vega-dataflow)) = 5.7.4 +Provides: bundled(npm(vega-encode)) = 4.8.3 +Provides: bundled(npm(vega-event-selector)) = 3.0.0 +Provides: bundled(npm(vega-expression)) = 5.0.0 +Provides: bundled(npm(vega-force)) = 4.0.7 +Provides: bundled(npm(vega-format)) = 1.0.4 +Provides: bundled(npm(vega-functions)) = 5.12.1 +Provides: bundled(npm(vega-geo)) = 4.3.8 +Provides: bundled(npm(vega-hierarchy)) = 4.0.9 +Provides: bundled(npm(vega-label)) = 1.1.0 +Provides: bundled(npm(vega-loader)) = 4.4.1 +Provides: bundled(npm(vega-parser)) = 6.1.4 +Provides: bundled(npm(vega-projection)) = 1.4.5 +Provides: bundled(npm(vega-regression)) = 1.0.9 +Provides: bundled(npm(vega-runtime)) = 6.1.3 +Provides: bundled(npm(vega-scale)) = 7.1.1 +Provides: bundled(npm(vega-scenegraph)) = 4.9.4 +Provides: bundled(npm(vega-statistics)) = 5.3.1 +Provides: bundled(npm(vega-time)) = 2.0.4 +Provides: bundled(npm(vega-transforms)) = 4.9.5 +Provides: bundled(npm(vega-typings)) = 0.22.0 +Provides: bundled(npm(vega-util)) = 1.17.0 +Provides: bundled(npm(vega-view)) = 5.10.1 +Provides: bundled(npm(vega-view-transforms)) = 4.5.8 +Provides: bundled(npm(vega-voronoi)) = 4.1.5 +Provides: bundled(npm(vega-wordcloud)) = 4.1.3 +# For these, see notes in src/snakemake/assets/__init__.py. +Provides: bundled(npm(@types/estree)) = 0.0.50 +Provides: bundled(npm(d3-array)) = 2.12.1 +Provides: bundled(npm(d3-color)) = 2.0.0 +Provides: bundled(npm(d3-delaunay)) = 5.2.0 +Provides: bundled(npm(d3-dispatch)) = 2.0.0 +Provides: bundled(npm(d3-dsv)) = 2.0.0 +Provides: bundled(npm(d3-force)) = 2.1.1 +Provides: bundled(npm(d3-format)) = 2.0.0 +Provides: bundled(npm(d3-geo)) = 2.0.2 +Provides: bundled(npm(d3-geo-projection)) = 3.0.0 +Provides: bundled(npm(d3-hierarchy)) = 2.0.0 +Provides: bundled(npm(d3-interpolate)) = 2.0.1 +Provides: bundled(npm(d3-path)) = 2.0.0 +Provides: bundled(npm(d3-quadtree)) = 2.0.0 +Provides: bundled(npm(d3-scale)) = 3.3.0 +Provides: bundled(npm(d3-shape)) = 2.1.0 +Provides: bundled(npm(d3-time)) = 2.1.1 +Provides: bundled(npm(d3-time-format)) = 3.0.0 +Provides: bundled(npm(d3-timer)) = 2.0.0 +Provides: bundled(npm(delaunator)) = 4.0.1 +Provides: bundled(npm(topojson-client)) = 3.1.0 +# Present in src/snakemake/assets/data/vega/vega.js in the form of copied, +# derived, or adapted snippets. See notes in src/snakemake/assets/__init__.py. +# Implementation of erfinv is based on: +Provides: bundled(apache-commons-math) = 3.6.1 +# Expression parser is based on: +Provides: bundled(esprima) = 2.2.0 +Provides: bundled(fabric) = 2.4.5 +Provides: bundled(npm(d3-contour)) = 1.3.2 +Provides: bundled(npm(d3-regression)) = 1.2.1 +Provides: bundled(npm(hashlru)) = 1.0.4 +Provides: bundled(npm(quickselect)) = 2.0.0 +Provides: bundled(npm(regression)) = 2.0.1 +Provides: bundled(npm(science)) = 1.9.3 +Provides: bundled(npm(shapefile)) = 0.6.2 + +# src/snakemake/assets/data/vega-lite/vega-lite.js +Provides: bundled(npm(vega-lite)) = 5.2.0 +# NOTE: Some of the following virtual Provides are commented out. These are +# correct, and need to be considered when determining the license of +# vega-lite.js, but they do not need to be repeated in the spec file because +# they duplicate virtual Provides from vega.js. +# +# Bundled in src/snakemake/assets/data/vega-lite/vega-lite.js as dependencies: +# See notes in src/snakemake/assets/__init__.py. +Provides: bundled(npm(@types/clone)) = 2.1.1 +Provides: bundled(npm(clone)) = 2.1.2 +Provides: bundled(npm(fast-deep-equal)) = 3.1.3 +Provides: bundled(npm(fast-json-stable-stringify)) = 2.1.0 +Provides: bundled(npm(json-stringify-pretty-compact)) = 3.0.0 +# See notes in src/snakemake/assets/__init__.py, as well as dependencies in +# https://github.com/vega/vega-lite/blob/v5.2.0/package.json, and for versions, +# see https://github.com/vega/vega-lite/blob/v5.2.0/yarn.lock; these correspond +# to those associated with vega 5.2.1. +#Provides: bundled(npm(@types/estree)) = 0.0.50 +#Provides: bundled(npm(vega-event-selector)) = 3.0.0 +#Provides: bundled(npm(vega-expression)) = 5.0.0 +#Provides: bundled(npm(vega-util)) = 1.17.0 +# Present in src/snakemake/assets/data/vega-lite/vega-lite.js in the form of +# copied, derived, or adapted snippets. See notes in +# src/snakemake/assets/__init__.py. +#Provides: bundled(npm(hashlru)) = 1.0.4 + +# src/snakemake/assets/data/vega-embed/vega-embed.js +Provides: bundled(npm(vega-embed)) = 6.20.8 +# NOTE: Some of the following virtual Provides are commented out. These are +# correct, and need to be considered when determining the license of +# vega-embed.js, but they do not need to be repeated in the spec file because +# they duplicate virtual Provides from vega.js and/or vega-lite.js. +# +# Bundled in src/snakemake/assets/data/vega-embed/vega-embed.js as +# dependencies: +# See notes in src/snakemake/assets/__init__.py. +Provides: bundled(npm(fast-json-patch)) = 3.1.0 +#Provides: bundled(npm(json-stringify-pretty-compact)) = 3.0.0 +Provides: bundled(npm(semver)) = 7.3.5 +# See notes in src/snakemake/assets/__init__.py, as well as dependencies in +# https://github.com/vega/vega-embed/blob/v6.20.8/package.json, and for +# versions, see https://github.com/vega/vega-embed/blob/v6.20.8/yarn.lock; +# these correspond to those associated with vega 5.2.1. +Provides: bundled(npm(vega-interpreter)) = 1.0.4 +Provides: bundled(npm(vega-schema-url-parser)) = 2.2.0 +Provides: bundled(npm(vega-themes)) = 2.10.0 +Provides: bundled(npm(vega-tooltip)) = 0.28.0 +#Provides: bundled(npm(vega-util)) = 1.17.0 +# Present in src/snakemake/assets/data/vega-embed/vega-embed.js in the form of +# copied, derived, or adapted snippets. See notes in +# src/snakemake/assets/__init__.py. +#Provides: bundled(npm(hashlru)) = 1.0.4 +# _areEquals() is based on: +#Provides: bundled(npm(fast-deep-equal)) = 3.1.3 + +# It is unclear if anything derived from heroicons is actually present in the +# package, but upstream carries a copy of its license file, so we dutifully add +# the virtual Provides, just in case we have missed something. +Provides: bundled(npm(heroicons)) = 1.0.3 + +# src/snakemake/assets/data/prop-types/prop-types.min.js +Provides: bundled(npm(prop-types)) = 15.7.2 + +# We no longer build Sphinx-generated PDF documentation. Beginning with 8.2.3, +# this would require patching out sphinxawesome-theme from docs/conf.py. It’s +# possible but tedious. +Obsoletes: snakemake-doc < 8.2.1-2 +# Removed in 9.6.0; keep the Obsoletes through Fedora 45. +Obsoletes: snakemake+messaging < 9.6.1-1 + +%if %{with tests} +# For several tests (either apptainer or singularity-ce should work): +BuildRequires: (apptainer or singularity-ce) +%if %{with conda_tests} +# We need this for test_jupyter_notebook*, even if we are not running tests +# that have conda in their names. When the conda_tests bcond is enabled, this +# is also needed for tests/tests_using_conda.py. +BuildRequires: conda +# For test_conda_pin_file, test_conda_named, test_conda_function +BuildRequires: ripgrep +# For test_script_xsh +BuildRequires: xonsh +%endif +# For test_env_modules: +BuildRequires: environment-modules +# For test_filegraph and test_env_modules, which use dot: +BuildRequires: graphviz +# For test_github_issue1158: +BuildRequires: strace +# For test_benchmark and test_benchmark_jsonl: +BuildRequires: stress-ng + +# See test-environment.yml for a listing of test dependencies, along with a lot +# of other cruft. +BuildRequires: %{py3_dist boto3} +BuildRequires: %{py3_dist pandas} +BuildRequires: %{py3_dist pytest} +BuildRequires: %{py3_dist pytest-mock} +BuildRequires: %{py3_dist snakemake-executor-plugin-cluster-generic} +BuildRequires: %{py3_dist snakemake-storage-plugin-http} +BuildRequires: %{py3_dist snakemake-storage-plugin-fs} +BuildRequires: %{py3_dist snakemake-storage-plugin-s3} +%endif +# For import-testing snakemake.gui +BuildRequires: %{py3_dist flask} +%if %{with gcs_tests} +# For import-testing snakemake.executors.google_lifesciences_helper: +BuildRequires: %{py3_dist google-cloud-storage} +%endif %global _description %{expand: The Snakemake workflow management system is a tool to create reproducible and @@ -11,105 +400,200 @@ cloud environments, without the need to modify the workflow definition. Finally, Snakemake workflows can entail a description of required software, which will be automatically deployed to any execution environment.} -Name: %{pypi_name} -Version: 6.13.1 -Release: %autorelease -Summary: Workflow management system to create reproducible and scalable data analyses - -License: MIT -URL: https://snakemake.readthedocs.io/en/stable/index.html -Source0: https://github.com/%{pypi_name}/%{pypi_name}/archive/v%{version}/%{pypi_name}-%{version}.tar.gz - -BuildArch: noarch - -BuildRequires: python3-devel -BuildRequires: make - -Requires: %{py3_dist smart_open} - -%if %{with tests} -BuildRequires: %{py3_dist pytest} -BuildRequires: %{py3_dist pytest-cov} -BuildRequires: %{py3_dist requests-mock} -BuildRequires: %{py3_dist numpy} -BuildRequires: %{py3_dist pandas} -BuildRequires: %{py3_dist networkx} -BuildRequires: %{py3_dist graphviz} -BuildRequires: %{py3_dist configargparse} -BuildRequires: %{py3_dist boto3} -%endif - -%py_provides %{pypi_name} - -%generate_buildrequires -%pyproject_buildrequires -r - %description %_description -%package -n snakemake-doc -Summary: %{summary} +# No metapackage for “pep” extra because the following are not packaged: +# - python3-eido +# - python3-peppy +# Therefore, also no metapakge for “all” extra +%pyproject_extras_subpkg -n snakemake reports -BuildArch: noarch - -BuildRequires: %{py3_dist sphinx} -BuildRequires: %{py3_dist sphinx-argparse} -BuildRequires: %{py3_dist sphinx_rtd_theme} -BuildRequires: %{py3_dist recommonmark} -BuildRequires: %{py3_dist docutils} -BuildRequires: %{py3_dist configargparse} -BuildRequires: %{py3_dist appdirs} -BuildRequires: %{py3_dist myst-parser} - -%description -n snakemake-doc %_description %prep -%autosetup -n %{pypi_name}-%{version} +%autosetup -n snakemake-%{version} -p1 +%setup -q -T -D -a 1 -c -n snakemake-%{version} -rm -rf %{pypi_name}.egg-info -find %{pypi_name}/ -name "*.cpp" -print -delete -find . -type f -name "*.py" -exec sed -i '/^#![ ]*\/usr\/bin\/env.*$/ d' {} 2>/dev/null ';' +# Copy and rename nano and vim extensions readmes for use in the main +# documentation directory. +for editor in nano vim +do + cp -vp "misc/${editor}/README.md" "README-${editor}.md" +done -# Remove shebang from non-executable script -sed -i '1d' snakemake/executors/jobscript.sh +# The CDN URL for tailwind.css does not deliver a file with a stable checksum, +# so upstream has not recorded a checksum in src/snakemake/assets/__init__.py. +# A consequence of this is that setup.py will *always* re-download +# tailwind.css, even if it is already present, when building an sdist or +# bdist/wheel. Of course, this is not acceptable in an offline build, so we +# record the actual checksum of the tailwind.css file we are packaging. +cat >> src/snakemake/assets/__init__.py < %{buildroot}%{_mandir}/man1/snakemake.1 + +# Install nano syntax highlighting +install -t '%{buildroot}%{_datadir}/nano' -D -m 0644 -p \ + misc/nano/syntax/snakemake.nanorc + +# Install vim syntax highlighting +install -d '%{buildroot}%{_datadir}/vim/vimfiles' +cp -vrp misc/vim/* '%{buildroot}%{_datadir}/vim/vimfiles' +find '%{buildroot}%{_datadir}/vim/vimfiles' \ + -type f -name 'README.*' -print -delete + + +%check -a %if %{with tests} -export PYTHONPATH=%{buildroot}%{python3_sitelib} - -# tests/test_tibanna needs a network connection, therefore disabled. -# tests/test_google_lifesciences.py requires the Google Cloud library for python -# tests/test_tes.py requires py-tes. Currently not packaged for Fedora -%pytest\ - --ignore tests/test_google_lifesciences.py\ - --deselect tests/test_tibanna.py\ - --deselect tests/test_tes.py +%if %{without network_tests} +# The following require network access (at least DNS) and pass if it is +# available. +k="${k-}${k+ and }not test_ancient" +k="${k-}${k+ and }not test_dynamic_container" +k="${k-}${k+ and }not test_github_issue78" +k="${k-}${k+ and }not test_issue1083" +k="${k-}${k+ and }not test_issue3361_pass" +k="${k-}${k+ and }not test_keep_local" +k="${k-}${k+ and }not test_modules_prefix" +k="${k-}${k+ and }not test_report_after_run" +k="${k-}${k+ and }not test_retrieve" +k="${k-}${k+ and }not test_shell_exec" %endif -%files -f %{pyproject_files} -%doc README.md -%{_bindir}/%{pypi_name} -%{_bindir}/%{pypi_name}-bash-completion +# These use the s3_storage test fixture, which sets up a server on the local +# loopback interface. For some reason, this does not seem to work in mock, with +# or without network access enabled. It is very likely that this is a quirk of +# the build environment rather than a real issue. +k="${k-}${k+ and }not test_default_storage" +k="${k-}${k+ and }not test_default_storage_local_job" +k="${k-}${k+ and }not test_output_file_cache_storage" +k="${k-}${k+ and }not test_storage" + +# The following requires cwltool, +# https://github.com/common-workflow-language/cwltool, which is not packaged. +k="${k-}${k+ and }not test_cwl_singularity" + +# The following requires polars, which is not packaged. +k="${k-}${k+ and }not test_params_pickling" +k="${k-}${k+ and }not test_validate" + +# The following require the “pep” extra. They might also require network +# access. +k="${k-}${k+ and }not test_modules_peppy" +k="${k-}${k+ and }not test_pep_pathlib" +k="${k-}${k+ and }not test_peppy" + +%if %{without conda_tests} +# All of these try to call conda info --json. We might experiment with making +# conda an unconditional BuildRequires, or with enabling the conda_tests bcond +# and filtering out the tests we cannot run, but we should wait for: +# +# F43FailsToInstall: python3-conda +# https://bugzilla.redhat.com/show_bug.cgi?id=2371696 +k="${k-}${k+ and }not test_jupyter_notebook" +k="${k-}${k+ and }not test_jupyter_notebook_nbconvert" +k="${k-}${k+ and }not test_jupyter_notebook_draft" +%endif + +# Flaky; so far, we have not attempted to understand or report these. +# +# FAILED ../tests/tests.py::test_update_flag - AssertionError: wrong result +# produced for file 'test.txt': +# ------found------ +# foo +# -----expected----- +# foo +# bar +# ----------------- +k="${k-}${k+ and }not test_update_flag" +# FAILED ../tests/tests.py::test_queue_input_dryrun - +# snakemake_interface_common.exceptions.WorkflowError: At least one job did not +# complete successfully. +# (produces no other useful output) + +# Hangs on s390x; we have not attempted to understand or report this, although +# it would be nice to do so. For simplicity, we just skip it on all +# architectures. +k="${k-}${k+ and }not test_github_issue1158" + +# Workaround for Python path issues +cd src/ + +# See discussion in https://github.com/snakemake/snakemake/issues/2961 +# regarding running individual tests explicitly rather than letting pytest +# discover them freely, and see the “Running the full test suite” section in +# docs/project_info/contributing.rst for the list of tests that should be run. +# - tests/test_api.py requires network access and S3 credentials +%pytest -v -k "${k-}" ${ignore-} \ + ../tests/tests.py \ +%if %{with conda_tests} + ../tests/tests_using_conda.py \ +%endif + ../tests/test_expand.py \ + ../tests/test_io.py \ + ../tests/test_schema.py \ + ../tests/test_linting.py \ + ../tests/test_executor_test_suite.py \ + ../tests/test_internals.py +%endif + + +%files -f %{pyproject_files} +%doc CHANGELOG.md +%doc README.md +%doc README-nano.md +%doc README-vim.md + +%{_bindir}/snakemake +%{_mandir}/man1/snakemake.1* + +# This is not owned by the filesystem package, and there is no nano-filesystem +# subpackage, so we co-own the directory to avoid depending on nano. +%dir %{_datadir}/nano/ +%{_datadir}/nano/snakemake.nanorc + +%{_datadir}/vim/vimfiles/ftdetect/snakemake.vim +%{_datadir}/vim/vimfiles/ftplugin/snakemake/ +%{_datadir}/vim/vimfiles/syntax/snakemake.vim -%files -n snakemake-doc -%license LICENSE.md -%doc docs/_build/html docs/_build/doctrees %changelog %autochangelog diff --git a/sources b/sources index 972fde1..ac14f3c 100644 --- a/sources +++ b/sources @@ -1 +1,2 @@ -SHA512 (snakemake-6.13.1.tar.gz) = 545bc08bffa35e1a4b4a4bbfea8c322e01e7a77d7168d56c00e56b48437130c60881398f61e58417cb935e6ad8659bda5298272e20e07e9b39cf754bb8a758ef +SHA512 (snakemake-9.14.6.tar.gz) = 3858d5610271fbf3617e3b88b10b55546ddb2eafffa929a882bf5584c91f85280fa7c5b25bae8951e4feb5aa9568ba51c0979c35b37472d03e1efc239392f1ae +SHA512 (snakemake-9.14.6-assets.tar.zst) = c58043d640c14cdb4057b515ee65d8c8eb76a4abf34d7ebae70cc929023df780ef234dd5a8fa9d76a96bb1aceda8dab1c8f5337d72ff6bb9ae7d6b82c10a16a7