diff --git a/.gitignore b/.gitignore index 41d20bd..7635a3f 100644 --- a/.gitignore +++ b/.gitignore @@ -16,3 +16,16 @@ /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 diff --git a/README.packit b/README.packit new file mode 100644 index 0000000..786c2a0 --- /dev/null +++ b/README.packit @@ -0,0 +1,3 @@ +This repository is maintained by packit. +https://packit.dev/ +The file was generated using packit 0.80.0.post8+gf2b5fcbc. diff --git a/snakemake.spec b/snakemake.spec index 1881de7..46fd73f 100644 --- a/snakemake.spec +++ b/snakemake.spec @@ -1,7 +1,7 @@ -%bcond_without tests +%bcond tests 1 # Sphinx-generated HTML documentation is not suitable for packaging; see # https://bugzilla.redhat.com/show_bug.cgi?id=2006555 for discussion. -%bcond_without doc_pdf +%bcond doc_pdf 1 %global _description %{expand: The Snakemake workflow management system is a tool to create reproducible and @@ -12,15 +12,18 @@ Finally, Snakemake workflows can entail a description of required software, which will be automatically deployed to any execution environment.} Name: snakemake -Version: 7.19.1 +Version: 7.32.4 Release: %autorelease Summary: Workflow management system to create reproducible and scalable data analyses # The entire project is (SPDX) MIT, except: -# - versioneer.py is LicenseRef-Fedora-Public-Domain (“License: Public Domain”) -# but does not contribute to the license of the binary RPM -# SPDX -License: MIT +# - versioneer.py is Unlicense +# - snakemake/_version.py says: +# This file is released into the public domain. +# which would be LicenseRef-Fedora-Public-Domain, except that the comments in +# versioneer.py make it clear that Unlicense is intended for the generated +# files as well. +License: MIT AND Unlicense URL: https://snakemake.readthedocs.io/en/stable/index.html Source0: https://github.com/snakemake/snakemake/archive/v%{version}/snakemake-%{version}.tar.gz @@ -32,6 +35,13 @@ Patch: snakemake-7.11.0-docs-no-animated-demo.patch BuildRequires: python3-devel +BuildRequires: help2man + +BuildRequires: vim-filesystem +Requires: vim-filesystem + +Provides: vim-snakemake = %{version}-%{release} + %if %{with tests} # See test-environment.yml for a listing of test dependencies, along with a lot # of other cruft. @@ -67,7 +77,7 @@ BuildRequires: /usr/bin/rsvg-convert # No metapackage for “pep” extra because the following are not packaged: # - python3-eido # - python3-peppy -%pyproject_extras_subpkg -n snakemake reports messaging google-cloud +%pyproject_extras_subpkg -n snakemake reports messaging google-cloud azure %prep %autosetup -n snakemake-%{version} -p1 @@ -83,10 +93,16 @@ sed -r -i 's@"python"@"%{python3}"@g' tests/test_linting.py sed -r -i '/sphinxcontrib-napoleon/d' docs/requirements.txt # Since pdflatex cannot handle Unicode inputs in general: echo "latex_engine = 'xelatex'" >> docs/conf.py +# 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 %generate_buildrequires # Generate BR’s for all supported extras to ensure they do not FTI -%pyproject_buildrequires -x reports,messaging,google-cloud %{?with_doc_pdf:docs/requirements.txt} +%pyproject_buildrequires -x reports,messaging,google-cloud,azure %{?with_doc_pdf:docs/requirements.txt} %build %pyproject_wheel @@ -108,6 +124,37 @@ PYTHONPATH="${PWD}" %make_build -C docs latexpdf SPHINXOPTS='%{?_smp_mflags}' %pyproject_install %pyproject_save_files snakemake +# We wait until %%install to generate the man page so that we can use the +# proper script entry point. The generated man page is not perfect, but it is +# good enough to be useful. +install -d %{buildroot}%{_mandir}/man1 +PATH="${PATH-}:%{buildroot}%{_bindir}" \ + PYTHONPATH='%{buildroot}%{python3_sitelib}' \ + help2man --no-info --name='%{summary}' snakemake \ + > %{buildroot}%{_mandir}/man1/snakemake.1 +# No man page for snakemake-bash-completion since it is not intended for manual +# invocation. + +# Generate and install shell completions. +install -d %{buildroot}%{bash_completions_dir} +# Since 7.29.0, snakemake --bash-completion no longer works without a Snakefile +# https://github.com/snakemake/snakemake/issues/2336 +touch Snakefile +PATH="${PATH-}:%{buildroot}%{_bindir}" \ + PYTHONPATH='%{buildroot}%{python3_sitelib}' \ + snakemake --bash-completion \ + > %{buildroot}%{bash_completions_dir}/snakemake.bash + +# 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 %if %{with tests} # Lint output “Migrate long run directives into scripts or notebooks …” is @@ -120,19 +167,46 @@ k="${k-}${k+ and }not test_tes" # Require a running slurm instance; maybe this is possible to set up # temporarily in the offline build environment, but we don’t know how. k="${k-}${k+ and }not test_slurm_" -# tests/test_google_lifesciences.py needs a network connection (and GCP credentials) -%pytest -v -k "${k-}" --ignore tests/test_google_lifesciences.py + +# Needs a network connection (and GCP credentials): +ignore="${ignore-} --ignore=tests/test_google_lifesciences.py" +# ______ ERROR collecting tests/test_conda_python_script/test_script.py ______ +# import file mismatch: +# imported module 'test_script' has this __file__ attribute: +# /builddir/build/BUILD/snakemake-7.31.1/tests/test_conda_python_3_7_script/test_script.py +# which is not the same as the test file we want to collect: +# /builddir/build/BUILD/snakemake-7.31.1/tests/test_conda_python_script/test_script.py +# HINT: remove __pycache__ / .pyc files and/or use a unique basename for your test file modules +# +# Plus, this would add an unwanted BuildRequires on %%{py3_dist Pillow}. +ignore="${ignore-} --ignore-glob=tests/test_conda_python_3_7_script/*" + +%pytest -v -k "${k-}" ${ignore-} %endif %files -f %{pyproject_files} %{_bindir}/snakemake +%{_mandir}/man1/snakemake.1* + %{_bindir}/snakemake-bash-completion +%{bash_completions_dir}/snakemake.bash + +# 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 doc %license LICENSE.md %doc CHANGELOG.md %doc CODE_OF_CONDUCT.md %doc README.md +%doc README-nano.md +%doc README-vim.md %if %{with doc_pdf} %doc docs/_build/latex/Snakemake.pdf %endif diff --git a/sources b/sources index 928268b..41d1ecb 100644 --- a/sources +++ b/sources @@ -1 +1 @@ -SHA512 (snakemake-7.19.1.tar.gz) = d35d4f61eef4f25a7f4b5f1869e10e259fe9aad11704ee59cd4f9c0ba1a2f58cde197be57eee6ed478bedc865971b584c1a3802e2044bb9817be5d5c4d1800d1 +SHA512 (snakemake-7.32.4.tar.gz) = 34fef61528b18facab798652c88ed5c698ef02161e023255fdd024b7c7781c4e582cdb04b2740fdff9b6f3600acaec719742984acee57920bb48ef3b5af99d9a