Bug 1690329

Summary: Missing requirement on python3-sphinx_rtd_theme
Product: [Fedora] Fedora Reporter: Lukas Slebodnik <lslebodn>
Component: python-sphinxAssignee: Miro Hrončok <mhroncok>
Status: CLOSED NOTABUG QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: unspecified Docs Contact:
Priority: unspecified    
Version: rawhideCC: aviso, cstratak, dradez, mhroncok, michel
Target Milestone: ---   
Target Release: ---   
Hardware: Unspecified   
OS: Unspecified   
Whiteboard:
Fixed In Version: Doc Type: If docs needed, set a value
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2019-03-19 12:33:43 UTC Type: Bug
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:
Bug Depends On:    
Bug Blocks: 1685211    

Description Lukas Slebodnik 2019-03-19 09:57:39 UTC
Description of problem:
There were lot of chnges done when upgrading to 2.0.0b1
* remove pyton2-sphinx
* bunch on spec file changes.

But i cannot see explanation why some of dependencies were removed also from python3-sphinx. They were not described in https://fedoraproject.org/wiki/Changes/Sphinx2 or in related dist-git commit
https://src.fedoraproject.org/rpms/python-sphinx/c/d1c43fc6581909d2068b27c4c58a5fa6acd1ab8d?branch=master

Version-Release number of selected component (if applicable):
python3-sphinx-1:2.0.0~b1-1.fc31

How reproducible:
Deterministic

Steps to Reproduce:
1. dnf repoquery --requires python3-sphinx | grep theme

Actual results:
sh# dnf repoquery --requires python3-sphinx | grep theme
Last metadata expiration check: 0:11:39 ago on Tue 19 Mar 2019 10:43:16 AM CET.
sh# echo $?
1

Expected results:
sh# dnf repoquery --requires python3-sphinx | grep theme
Last metadata expiration check: 0:00:46 ago on Tue 19 Mar 2019 09:56:22 AM UTC.
python3-sphinx-theme-alabaster
python3-sphinx_rtd_theme

Comment 1 Lukas Slebodnik 2019-03-19 09:58:39 UTC
Could you explain the reason of that removed requires?

Comment 2 Miro Hrončok 2019-03-19 10:56:06 UTC
This is what you get when you install sphinx:

(sphinx) $ pip install --pre sphinx
Collecting alabaster<0.8,>=0.7 (from sphinx)
Collecting sphinxcontrib-devhelp (from sphinx)
Collecting sphinxcontrib-qthelp (from sphinx)
Collecting babel!=2.0,>=1.3 (from sphinx)
Collecting sphinxcontrib-htmlhelp (from sphinx)
Collecting requests>=2.5.0 (from sphinx)
Collecting sphinxcontrib-serializinghtml (from sphinx)
Collecting sphinxcontrib-applehelp (from sphinx)
Collecting docutils>=0.12 (from sphinx)
Collecting snowballstemmer>=1.1 (from sphinx)
Collecting sphinxcontrib-jsmath (from sphinx)
Collecting packaging (from sphinx)
Collecting imagesize (from sphinx)
Collecting Pygments>=2.0 (from sphinx)
Collecting Jinja2>=2.3 (from sphinx)
...
(sphinx) $ pip freeze
alabaster==0.7.12
Babel==2.6.0
certifi==2019.3.9
chardet==3.0.4
docutils==0.14
idna==2.8
imagesize==1.1.0
Jinja2==2.10
MarkupSafe==1.1.1
packaging==19.0
Pygments==2.3.1
pyparsing==2.3.1
pytz==2018.9
requests==2.21.0
six==1.12.0
snowballstemmer==1.2.1
Sphinx==2.0.0b1
sphinxcontrib-applehelp==1.0.1
sphinxcontrib-devhelp==1.0.1
sphinxcontrib-htmlhelp==1.0.1
sphinxcontrib-jsmath==1.0.1
sphinxcontrib-qthelp==1.0.2
sphinxcontrib-serializinghtml==1.1.1
urllib3==1.24.1

Note that alabaster is the only thing that is a Sphinx theme.

This is what the Fedora package requires:

$ dnf repoquery --repo=rawhide --requires python3-sphinx
/usr/bin/python3
python(abi) = 3.7
python3.7dist(alabaster) < 0.8
python3.7dist(alabaster) >= 0.7
python3.7dist(babel) >= 1.3
python3.7dist(docutils) >= 0.12
python3.7dist(imagesize)
python3.7dist(jinja2) >= 2.3
python3.7dist(packaging)
python3.7dist(pygments) >= 2.0
python3.7dist(requests) >= 2.5.0
python3.7dist(setuptools)
python3.7dist(snowballstemmer) >= 1.1
python3.7dist(sphinxcontrib-applehelp)
python3.7dist(sphinxcontrib-devhelp)
python3.7dist(sphinxcontrib-htmlhelp)
python3.7dist(sphinxcontrib-jsmath)
python3.7dist(sphinxcontrib-qthelp)
python3.7dist(sphinxcontrib-serializinghtml)


Note that alabaster is there.

The dependency on sphinx_rtd_theme is not stated by upstream and I don't understand why we would need to add artificial dependency on a custom theme nor I see a need to describe all dependncy changes in https://fedoraproject.org/wiki/Changes/Sphinx2 or related dist-git commit.


I guess the real question is: Why do you need this?


Is sphinx_rtd_theme an actual dependency that upstream frogot to specify? If that's the case, we should fix this upstream and I'll gladly backport the change.


Or does your project/thing/spec use sphinx_rtd_theme and you only (build)require python3-sphinx, assuming python3-sphinx_rtd_theme will always come with it? In my opinion, assuming a transitive dependency is wrong.

Comment 3 Miro Hrončok 2019-03-19 11:05:14 UTC
For the record, the dependency was added when updating sphinx to 1.3.1

https://src.fedoraproject.org/rpms/python-sphinx/c/e24435f06124df189d5378bfd4c474fcfa5b4188

This is what you get with 1.3.1:

(sphinx) $ pip freeze
alabaster==0.7.12
Babel==2.6.0
docutils==0.14
Jinja2==2.10
MarkupSafe==1.1.1
Pygments==2.3.1
pytz==2018.9
six==1.12.0
snowballstemmer==1.2.1
Sphinx==1.3.1
sphinx-rtd-theme==0.1.9


So yes, it was based on information from upstream back then.

Comment 4 Lukas Slebodnik 2019-03-19 12:21:04 UTC
(In reply to Miro Hrončok from comment #3)
> For the record, the dependency was added when updating sphinx to 1.3.1
> 
> https://src.fedoraproject.org/rpms/python-sphinx/c/
> e24435f06124df189d5378bfd4c474fcfa5b4188
> 
> This is what you get with 1.3.1:
> 
> (sphinx) $ pip freeze
> alabaster==0.7.12
> Babel==2.6.0
> docutils==0.14
> Jinja2==2.10
> MarkupSafe==1.1.1
> Pygments==2.3.1
> pytz==2018.9
> six==1.12.0
> snowballstemmer==1.2.1
> Sphinx==1.3.1
> sphinx-rtd-theme==0.1.9
> 
> 
> So yes, it was based on information from upstream back then.

In another words, it changed in upstream and packagers should not rely on a transitive dependency.
Feel free to close as not a bug.

Comment 5 Miro Hrončok 2019-03-19 12:33:43 UTC
> In another words, it changed in upstream and packagers should not rely on a transitive dependency.

That what I think. If you think that this particular dependency stands out, we can document it explicitly on the change page.

I'm now closing this, but feel free to add a note the the proposal (it's a wiki) or let me know if you think it is needed and I'll eventually add it there.