From 925bd4056a2cea03b8c6a36c4e7ef0007b3dd6e5cf8938a9134e1f1f518aa671 Mon Sep 17 00:00:00 2001 From: Benjamin Greiner Date: Thu, 29 Dec 2022 21:58:01 +0000 Subject: [PATCH 1/2] Accepting request 1045752 from home:bnavigator:branches:devel:languages:python:jupyter - Modernize jupyter packaging: alternatives, config, provides OBS-URL: https://build.opensuse.org/request/show/1045752 OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:jupyter/python-nbdime?expand=0&rev=24 --- nbdime-3.1.1-py2.py3-none-any.whl | 3 - nbdime-3.1.1.tar.gz | 3 + python-nbdime.changes | 5 + python-nbdime.spec | 209 +++++++++++++++++++++--------- 4 files changed, 153 insertions(+), 67 deletions(-) delete mode 100644 nbdime-3.1.1-py2.py3-none-any.whl create mode 100644 nbdime-3.1.1.tar.gz diff --git a/nbdime-3.1.1-py2.py3-none-any.whl b/nbdime-3.1.1-py2.py3-none-any.whl deleted file mode 100644 index 1797a12..0000000 --- a/nbdime-3.1.1-py2.py3-none-any.whl +++ /dev/null @@ -1,3 +0,0 @@ -version https://git-lfs.github.com/spec/v1 -oid sha256:ea4ddf919e3035800ef8bd5552b814522207cb154ca7512565e4539a54c74dbf -size 5308789 diff --git a/nbdime-3.1.1.tar.gz b/nbdime-3.1.1.tar.gz new file mode 100644 index 0000000..5223b2d --- /dev/null +++ b/nbdime-3.1.1.tar.gz @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:67767320e971374f701a175aa59abd3a554723039d39fae908e72d16330d648b +size 7723671 diff --git a/python-nbdime.changes b/python-nbdime.changes index 77be50d..03ff59c 100644 --- a/python-nbdime.changes +++ b/python-nbdime.changes @@ -1,3 +1,8 @@ +------------------------------------------------------------------- +Thu Dec 29 20:15:44 UTC 2022 - Ben Greiner + +- Modernize jupyter packaging: alternatives, config, provides + ------------------------------------------------------------------- Sat Nov 13 15:34:18 UTC 2021 - Ben Greiner diff --git a/python-nbdime.spec b/python-nbdime.spec index db10c85..d6e6a61 100644 --- a/python-nbdime.spec +++ b/python-nbdime.spec @@ -1,7 +1,7 @@ # # spec file for package python-nbdime # -# Copyright (c) 2021 SUSE LLC +# Copyright (c) 2022 SUSE LLC # # All modifications and additions to the file contributed by third parties # remain the property of their copyright owners, unless otherwise agreed @@ -16,18 +16,26 @@ # -%{?!python_module:%define python_module() python3-%{**}} +%if 0%{?suse_version} > 1500 +%bcond_without libalternatives +%else +%bcond_with libalternatives +%endif + %define skip_python2 1 %define mainver 3.1.1 %define jupver 6.1.2 %define labver 2.1.1 +%define mainbins nbdime nbshow nbdiff nbdiff-web nbmerge nbmerge-web +%define gitbins git-nbdifftool git-nbmergetool git-nbdiffdriver git-nbmergedriver +%define hgbins hg-nbdiff hg-nbdiffweb hg-nbmerge hg-nbmergeweb Name: python-nbdime Version: %{mainver} Release: 0 Summary: Tools for diffing and merging Jupyter Notebooks License: BSD-3-Clause URL: https://github.com/jupyter/nbdime -Source: https://files.pythonhosted.org/packages/py2.py3/n/nbdime/nbdime-%{mainver}-py2.py3-none-any.whl +Source: https://files.pythonhosted.org/packages/source/n/nbdime/nbdime-%{mainver}.tar.gz BuildRequires: %{python_module GitPython >= 2.1.6} BuildRequires: %{python_module Jinja2 >= 2.9} BuildRequires: %{python_module Pygments} @@ -38,9 +46,11 @@ BuildRequires: %{python_module jupyter-server} BuildRequires: %{python_module nbformat} BuildRequires: %{python_module pip} BuildRequires: %{python_module requests} +BuildRequires: %{python_module setuptools} BuildRequires: %{python_module tornado} +BuildRequires: %{python_module wheel} BuildRequires: fdupes -BuildRequires: jupyter-jupyterlab-filesystem +BuildRequires: jupyter-rpm-macros BuildRequires: python-rpm-macros # SECTION test requirements BuildRequires: %{python_module jupyter-server-test} @@ -61,12 +71,19 @@ Requires: python-jupyter-server-mathjax >= 0.2.2 Requires: python-nbformat Requires: python-requests Requires: python-tornado +%if %{with libalternatives} +BuildRequires: alts +Requires: alts +%else +Requires(post): update-alternatives +Requires(postun):update-alternatives +%endif Conflicts: python-jupyter_nbdime-git < 1.0.5 Conflicts: python-jupyter_nbdime-hg < 1.0.5 Recommends: python-tabulate Suggests: python-notebook -Provides: python-jupyter_nbdime = %{mainver} -Obsoletes: python-jupyter_nbdime < %{mainver} +Provides: python-jupyter_nbdime = %{mainver}-%{release} +Obsoletes: python-jupyter_nbdime < %{mainver}-%{release} BuildArch: noarch %python_subpackages @@ -79,9 +96,7 @@ This package provides the python interface. %package -n jupyter-nbdime Version: %{jupver} Summary: A JupyterLab extension for showing Notebook diffs -Requires: jupyter-nbformat -Requires: jupyter-notebook -Requires: python3-nbdime = %{mainver} +Requires: (%(echo "%{python_module nbdime = %{version}@or@}" | sed "s/@or@/ or /g" | sed 's/ or\s*$//')) Conflicts: python3-jupyter_nbdime < 1.0.5 %description -n jupyter-nbdime @@ -95,9 +110,7 @@ Version: %{labver} Release: 0 Summary: A JupyterLab extension for showing Notebook diffs Requires: jupyter-jupyterlab -Requires: python3-nbdime = %{mainver} -Provides: python3-jupyter_nbdime_jupyterlab = %{labver} -Obsoletes: python3-jupyter_nbdime_jupyterlab < %{labver} +Requires: (%(echo "%{python_module nbdime = %{version}@or@}" | sed "s/@or@/ or /g" | sed 's/ or\s*$//')) %description -n jupyter-nbdime-jupyterlab The nbdime package provides tools for diffing and merging of @@ -105,97 +118,165 @@ Jupyter Notebooks. This package provides the JupyterLab extension. -%package -n jupyter-nbdime-git -Version: %{jupver} -Summary: Git integration for jupyter-nbdime +%package git +Version: %{mainver} +Summary: Git integration for python-nbdime Requires: git-core -Requires: jupyter-nbdime = %{jupver} -Provides: python3-jupyter_nbdime-git = %{jupver} -Obsoletes: python3-jupyter_nbdime-git < %{jupver} +Requires: python-nbdime = %{mainver} +# python3-jupyter_nbdime-git = JUPVER (!) was provided by a jupyter-nbdime-git package until end of 2022 +Provides: python-jupyter_nbdime-git = %{jupver}-%{release} +Obsoletes: python-jupyter_nbdime-git < %{jupver}-%{release} +%if "%{python_flavor}" == "python3" || "%{python_provides}" == "python3" +Provides: jupyter-nbdime-git = %{jupver}-%{release} +Obsoletes: jupyter-nbdime-git < %{jupver}-%{release} +%endif +%if %{with libalternatives} +Requires: alts +%else +Requires(post): update-alternatives +Requires(postun):update-alternatives +%endif -%description -n jupyter-nbdime-git +%description git The nbdime package provides tools for diffing and merging of Jupyter Notebooks. This package provides git integration. -%package -n jupyter-nbdime-hg -Version: %{jupver} -Summary: Mercurial integration for jupyter-nbdime -Requires: jupyter-nbdime = %{jupver} +%package hg +Version: %{mainver} +Summary: Mercurial integration for python-nbdime Requires: mercurial -Provides: python3-jupyter_nbdime-hg = %{jupver} -Obsoletes: python3-jupyter_nbdime-hg < %{jupver} +Requires: python-nbdime = %{mainver} +# python3-jupyter_nbdime-hg = JUPVER (!) was provided by a jupyter-nbdime-git package until end of 2022 +Provides: python-jupyter_nbdime-hg = %{jupver}-%{release} +Obsoletes: python-jupyter_nbdime-hg < %{jupver}-%{release} +%if "%{python_flavor}" == "python3" || "%{python_provides}" == "python3" +Provides: jupyter-nbdime-hg = %{jupver}-%{release} +Obsoletes: jupyter-nbdime-hg < %{jupver}-%{release} +%endif +%if %{with libalternatives} +Requires: alts +%else +Requires(post): update-alternatives +Requires(postun):update-alternatives +%endif -%description -n jupyter-nbdime-hg +%description hg The nbdime package provides tools for diffing and merging of Jupyter Notebooks. This package provides mercurial integration. %prep -%setup -q -c -T +%autosetup -p1 -n nbdime-%{mainver} +sed -i 's/^import mock/from unittest import mock/' nbdime/tests/test_*.py +find . -type f -name "*.py" -exec sed -i 's/\r$//' {} + +find . -type f -name "*.ipynb" -exec sed -i 's/\r$//' {} + +find ./nbdime/ -type f -name "*.py" -exec sed -i -e '/^#!\//, 1d' {} + +rm nbdime/labextension/schemas/nbdime-jupyterlab/package.json.orig %build -: +%pyproject_wheel %install -%pyproject_install %{SOURCE0} - +%pyproject_install +for b in %mainbins %gitbins %hgbins; do + %python_clone -a %{buildroot}%{_bindir}/$b +done %{jupyter_move_config} -%python_expand sed -i 's/^import mock/from unittest import mock/' %{buildroot}%{$python_sitelib}/nbdime/tests/test_*.py -%python_expand find %{buildroot}%{$python_sitelib} -type f -name "*.py" -exec sed -i 's/\r$//' {} + -%python_expand find %{buildroot}%{$python_sitelib} -type f -name "*.ipynb" -exec sed -i 's/\r$//' {} + -%python_expand find %{buildroot}%{$python_sitelib}/nbdime/ -type f -name "*.py" -exec sed -i -e '/^#!\//, 1d' {} + -%python_expand rm %{buildroot}%{$python_sitelib}/nbdime/labextension/schemas/nbdime-jupyterlab/package.json.orig -%python_compileall -rm %{buildroot}%{_jupyter_prefix}/labextensions/nbdime-jupyterlab/schemas/nbdime-jupyterlab/package.json.orig %python_expand %fdupes %{buildroot}%{$python_sitelib} %fdupes %{buildroot}%{_jupyter_prefix} -cp %{buildroot}%{python3_sitelib}/nbdime-%{mainver}.dist-info/LICENSE.md . %check -export PATH=$PATH:%{buildroot}%{_bindir} +# freshly to be install libalternatives commands are not yet flavorbinned automatically +%if %{with libalternatives} +%{python_expand mkdir -p build/flavorbin +for b in %mainbins %gitbins %hgbins; do + ln -s %{buildroot}%{_bindir}/$b-%{$python_bin_suffix} build/flavorbin/$b +done +} +%endif git config --global user.email "test@test.com" git config --global user.name "tester" +git config --global init.defaultBranch master %pytest --pyargs nbdime +%pre +# remove any non-symlink bin before installing the alternative links +for b in %mainbins; do + [ -f %{_bindir}/$b -a ! -h %{_bindir}/$b ] && rm %{_bindir}/$b +done +%python_libalternatives_reset_alternative nbdime + +%post +%python_install_alternative %mainbins + +%postun +%python_uninstall_alternative nbdime + +%pre git +# remove any non-symlink bin before installing the alternative links +for b in %gitbins; do + [ -f %{_bindir}/$b -a ! -h %{_bindir}/$b ] && rm %{_bindir}/$b +done +%python_libalternatives_reset_alternative git-nbdifftool + +%post git +%python_install_alternative %gitbins + +%postun git +%python_uninstall_alternative git-nbdifftool + +%pre hg +# remove any non-symlink bin before installing the alternative links +for b in %hgbins; do + [ -f %{_bindir}/$b -a ! -h %{_bindir}/$b ] && rm %{_bindir}/$b +done +%python_libalternatives_reset_alternative hg-nbdiff + +%post hg +%python_install_alternative %hgbins + +%postun hg +%python_uninstall_alternative hg-nbdiff + %files %{python_files} %license LICENSE.md +%python_alternative %{_bindir}/nbdime +%python_alternative %{_bindir}/nbshow +%python_alternative %{_bindir}/nbdiff +%python_alternative %{_bindir}/nbdiff-web +%python_alternative %{_bindir}/nbmerge +%python_alternative %{_bindir}/nbmerge-web %{python_sitelib}/nbdime/ %{python_sitelib}/nbdime-%{mainver}.dist-info/ +%files %{python_files git} +%license LICENSE.md +%python_alternative %{_bindir}/git-nbdiffdriver +%python_alternative %{_bindir}/git-nbdifftool +%python_alternative %{_bindir}/git-nbmergedriver +%python_alternative %{_bindir}/git-nbmergetool + +%files %{python_files hg} +%license LICENSE.md +%python_alternative %{_bindir}/hg-nbdiff +%python_alternative %{_bindir}/hg-nbdiffweb +%python_alternative %{_bindir}/hg-nbmerge +%python_alternative %{_bindir}/hg-nbmergeweb + %files -n jupyter-nbdime %license LICENSE.md -%{_bindir}/nbdime -%{_bindir}/nbshow -%{_bindir}/nbdiff -%{_bindir}/nbdiff-web -%{_bindir}/nbmerge -%{_bindir}/nbmerge-web %{_jupyter_nbextension_dir}/nbdime/ -%config %{_jupyter_server_confdir}/nbdime.json -%config %{_jupyter_servextension_confdir}/nbdime.json -%config %{_jupyter_nb_notebook_confdir}/nbdime.json +%_jupyter_config %{_jupyter_server_confdir}/nbdime.json +%_jupyter_config %{_jupyter_servextension_confdir}/nbdime.json +%_jupyter_config %{_jupyter_nb_notebook_confdir}/nbdime.json %files -n jupyter-nbdime-jupyterlab %license LICENSE.md %dir %{_jupyter_prefix}/labextensions -%{_jupyter_prefix}/labextensions/nbdime-jupyterlab -%{_jupyter_prefix}/lab/extensions/nbdime-jupyterlab-%{labver}.tgz - -%files -n jupyter-nbdime-git -%license LICENSE.md -%{_bindir}/git-nbdiffdriver -%{_bindir}/git-nbdifftool -%{_bindir}/git-nbmergedriver -%{_bindir}/git-nbmergetool - -%files -n jupyter-nbdime-hg -%license LICENSE.md -%{_bindir}/hg-nbdiff -%{_bindir}/hg-nbdiffweb -%{_bindir}/hg-nbmerge -%{_bindir}/hg-nbmergeweb +%{_jupyter_labextensions_dir3}/nbdime-jupyterlab +%{_jupyter_labextensions_dir}/nbdime-jupyterlab-%{labver}.tgz %changelog From e77a6fe047b00e3814ef77c4b1ada0e85c6b278f2ea47ecf8a101d161a9232bd Mon Sep 17 00:00:00 2001 From: Benjamin Greiner Date: Thu, 29 Dec 2022 22:36:08 +0000 Subject: [PATCH 2/2] OBS-URL: https://build.opensuse.org/package/show/devel:languages:python:jupyter/python-nbdime?expand=0&rev=25 --- python-nbdime.spec | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/python-nbdime.spec b/python-nbdime.spec index d6e6a61..457b304 100644 --- a/python-nbdime.spec +++ b/python-nbdime.spec @@ -96,7 +96,7 @@ This package provides the python interface. %package -n jupyter-nbdime Version: %{jupver} Summary: A JupyterLab extension for showing Notebook diffs -Requires: (%(echo "%{python_module nbdime = %{version}@or@}" | sed "s/@or@/ or /g" | sed 's/ or\s*$//')) +Requires: (%(echo "%{python_module nbdime = %{mainver}@or@}" | sed "s/@or@/ or /g" | sed 's/ or\s*$//')) Conflicts: python3-jupyter_nbdime < 1.0.5 %description -n jupyter-nbdime @@ -110,7 +110,7 @@ Version: %{labver} Release: 0 Summary: A JupyterLab extension for showing Notebook diffs Requires: jupyter-jupyterlab -Requires: (%(echo "%{python_module nbdime = %{version}@or@}" | sed "s/@or@/ or /g" | sed 's/ or\s*$//')) +Requires: (%(echo "%{python_module nbdime = %{mainver}@or@}" | sed "s/@or@/ or /g" | sed 's/ or\s*$//')) %description -n jupyter-nbdime-jupyterlab The nbdime package provides tools for diffing and merging of @@ -129,6 +129,8 @@ Obsoletes: python-jupyter_nbdime-git < %{jupver}-%{release} %if "%{python_flavor}" == "python3" || "%{python_provides}" == "python3" Provides: jupyter-nbdime-git = %{jupver}-%{release} Obsoletes: jupyter-nbdime-git < %{jupver}-%{release} +%else +Conflicts: jupyter-nbdime-git < %{jupver}-%{release} %endif %if %{with libalternatives} Requires: alts @@ -154,6 +156,8 @@ Obsoletes: python-jupyter_nbdime-hg < %{jupver}-%{release} %if "%{python_flavor}" == "python3" || "%{python_provides}" == "python3" Provides: jupyter-nbdime-hg = %{jupver}-%{release} Obsoletes: jupyter-nbdime-hg < %{jupver}-%{release} +%else +Conflicts: jupyter-nbdime-hg < %{jupver}-%{release} %endif %if %{with libalternatives} Requires: alts