Enabling Python Generators
Summary
This change enables the ability to choose to use the Python module dependency generator for packages that provide Python Egg/Wheel metadata.
Owner
- Name: Igor Gnatenko, Neal Gompa
- Email: ignatenkobrain@fedoraproject.org, ngompa13@gmail.com
- Release notes owner:
Current status
- Targeted release: Fedora 28
- Last updated: 2018-01-19
- Tracker bug: <will be assigned by the Wrangler>
Detailed Description
... For F28 this is opt-in, in F29 we plan to propose to make this opt-out.
Benefit to Fedora
- Packagers do not need to specify runtime dependencies manually anymore
- No more errors in runtime due to missing dependencies (see example below)
Packager of python-fasteners forgot to add Requires: python3-monotonic >= 0.1 so when anyone does "import fasteners", it fails with traceback:
Traceback (most recent call last):
File "/builddir/build/BUILD/jenkins-job-builder-2.0.0/tests/yamlparser/test_yamlparser.py", line 42, in test_incorrect_template_dimensions reg = registry.ModuleRegistry(config) File "/builddir/build/BUILD/jenkins-job-builder-2.0.0/jenkins_jobs/registry.py", line 50, in __init__ Mod = entrypoint.load() File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2407, in load self.require(*args, **kwargs) File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 2430, in require items = working_set.resolve(reqs, env, installer, extras=self.extras) File "/usr/lib/python3.6/site-packages/pkg_resources/__init__.py", line 870, in resolve raise DistributionNotFound(req, requirers)
pkg_resources.DistributionNotFound: The 'monotonic>=0.1' distribution was not found and is required by fasteners
With automatic dependency management this should never happen.
Scope
- Proposal owners:
- Other developers: N/A (not a System Wide Change)
- Release engineering: #Releng issue number (a check of an impact with Release Engineering is needed)
- List of deliverables: N/A (not a System Wide Change)
- Policies and guidelines: N/A (not a System Wide Change)
Packaging:Python Guidelines need to reference how to turn on the feature (simple variable override).
- Trademark approval: N/A (not needed for this Change)
Upgrade/compatibility impact
Some new dependencies might be automatically added, but this is rather good because it fixes real bugs.
N/A (not a System Wide Change)
How To Test
1. Remove all requires for python modules 2. Add following line to spec: %python_enable_depgen 3. Rebuild package
Every dependency mentioned in egg/wheel (e.g. generated by setuptools/distutils from setup.py) should be automatically added.
N/A (not a System Wide Change)
User Experience
N/A (not a System Wide Change)
Dependencies
N/A (not a System Wide Change)
Contingency Plan
- Contingency mechanism: (What to do? Who will do it?) N/A (not a System Wide Change)
- Contingency deadline: N/A (not a System Wide Change)
- Blocks release? N/A (not a System Wide Change), Yes/No
- Blocks product? product
Documentation
N/A (not a System Wide Change)