Bug 670223

Summary: VersionConflict: (CherryPy 3.1.2 (/usr/lib/python2.7/site-packages), Requirement.parse('Che >> > rryPy>=2.3.0,<3.0.0alpha'))
Product: [Fedora] Fedora Reporter: Adrian Reber <adrian>
Component: TurboGearsAssignee: Luke Macken <lmacken>
Status: CLOSED ERRATA QA Contact: Fedora Extras Quality Assurance <extras-qa>
Severity: medium Docs Contact:
Priority: low    
Version: 14CC: a.badger, fschwarz, lmacken, matt_domsch, pfrields, satyaakam, tremble
Target Milestone: ---   
Target Release: ---   
Hardware: x86_64   
OS: Unspecified   
Whiteboard:
Fixed In Version: TurboGears-1.0.9-8.fc14 Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 2011-07-06 21:32:47 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description Adrian Reber 2011-01-17 15:50:12 UTC
Description of problem:
I am running MirrorManager on Fedora 14 and it is no longer working as wsgi. It used to work on Fedora 12 but after the upgrade to Fedora 14 it does not any more.

If I start MirrorManager from the command line with "./start-mirrormanager.py dev-rpmfusion.cfg" it works.

Running as a wsgi it does not work:



[Mon Jan 17 13:25:14 2011] [error] [client 130.59.10.36] mod_wsgi (pid=6932): Target WSGI script '/home/staff/adrian/mm/server/
mirrormanager.wsgi' cannot be loaded as Python module.
[Mon Jan 17 13:25:14 2011] [error] [client 130.59.10.36] mod_wsgi (pid=6932): Exception occurred processing WSGI script '/home/
staff/adrian/mm/server/mirrormanager.wsgi'.
[Mon Jan 17 13:25:14 2011] [error] [client 130.59.10.36] Traceback (most recent call last):
[Mon Jan 17 13:25:14 2011] [error] [client 130.59.10.36]   File "/home/staff/adrian/mm/server/mirrormanager.wsgi", line 8, in <
module>
[Mon Jan 17 13:25:14 2011] [error] [client 130.59.10.36]     pkg_resources.require("TurboGears")
[Mon Jan 17 13:25:14 2011] [error] [client 130.59.10.36]   File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 654, in require
[Mon Jan 17 13:25:14 2011] [error] [client 130.59.10.36]     needed = self.resolve(parse_requirements(requirements))
[Mon Jan 17 13:25:14 2011] [error] [client 130.59.10.36]   File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 556, in resolve
[Mon Jan 17 13:25:14 2011] [error] [client 130.59.10.36]     raise VersionConflict(dist,req) # XXX put more info here
[Mon Jan 17 13:25:14 2011] [error] [client 130.59.10.36] VersionConflict: (CherryPy 3.1.2 (/usr/lib/python2.7/site-packages), Requirement.parse('CherryPy>=2.3.0,<3.0.0alpha'))
[Mon Jan 17 13:25:14 2011] [error] Exception KeyError: KeyError(139669700868096,) in <module 'threading' from '/usr/lib64/python2.7/threading.pyo'> ignored
[Mon Jan 17 13:25:15 2011] [error] Exception KeyError: KeyError(139669700868096,) in <module 'threading' from '/usr/lib64/python2.7/threading.pyo'> ignored
[Mon Jan 17 13:25:16 2011] [error] Exception KeyError: KeyError(139669700868096,) in <module 'threading' from '/usr/lib64/python2.7/threading.pyo'> ignored
Version-Release number of selected component (if applicable):

TurboGears-1.0.9-6.fc14.noarch
python-cherrypy-3.1.2-5.fc14.noarch
python-cherrypy2-2.3.0-14.fc14.noarch

Comment 1 Toshio Ernie Kuratomi 2011-01-17 17:24:06 UTC
On IRC we tried this in the .wsgi file:

Replace __requires__ = 'Turbogears[future]' with

  import __main__
  __main__.__requires__ = 'Turbogears[future]'

and it works.

This bug is latent in earlier versions of Fedora but you wouldn't see it if the particular machine didn't have both python-cherrypy (3) and python-cherrypy2 installed.  It's been brought to the fore now because python-cherrypy is being required by python-paste-script (it was bundling a module from python-cherrypy and we've changed it to use the system copy from python-paste-script now) and python-paste-script is required by TurboGears.

So on the one hand, this is something that probably should be changed in the apps that use TurboGears since it will happen if the right combination of packages are installed.  OTOH, we might want to have python-paste-script not require python-cherrypy as that is the change that causes this to be more visible (but we'd then need to figure out what we should do about the bundled code in python-paste-script.)

Comment 2 Matt Domsch 2011-05-01 14:55:21 UTC
I got bit by this again this week in testing some newer MM features.  New quickstarted apps fail on this as well.

Comment 3 Fedora Update System 2011-06-26 16:48:01 UTC
TurboGears-1.0.9-8.fc14 has been submitted as an update for Fedora 14.
https://admin.fedoraproject.org/updates/TurboGears-1.0.9-8.fc14

Comment 4 Toshio Ernie Kuratomi 2011-06-26 16:49:39 UTC
New version of TurboGears that should fix the quickstart templates failing.  MM should be updated to use:

  import __main__
  __main__.__requires__ = 'Turbogears[future]'

Unfortunately, the quickstart templates don't have a sample .wsgi file so I don't have a place to document that well in the package.

Comment 5 Fedora Update System 2011-06-27 23:51:38 UTC
Package TurboGears-1.0.9-8.fc14:
* should fix your issue,
* was pushed to the Fedora 14 testing repository,
* should be available at your local mirror within two days.
Update it with:
# su -c 'yum update --enablerepo=updates-testing TurboGears-1.0.9-8.fc14'
as soon as you are able to.
Please go to the following url:
https://admin.fedoraproject.org/updates/TurboGears-1.0.9-8.fc14
then log in and leave karma (feedback).

Comment 6 Fedora Update System 2011-07-06 21:32:42 UTC
TurboGears-1.0.9-8.fc14 has been pushed to the Fedora 14 stable repository.  If problems still persist, please make note of it in this bug report.

Comment 7 satyaakam 2011-08-05 12:46:56 UTC
i downloaded the package from http://koji.fedoraproject.org/koji/buildinfo?buildID=250386

i still get the following errors


$python
Python 2.7 (r27:82500, Sep 16 2010, 18:02:00) 
[GCC 4.5.1 20100907 (Red Hat 4.5.1-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import turbogears
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/usr/lib/python2.7/site-packages/turbogears/__init__.py", line 5, in <module>
    from turbogears import config
  File "/usr/lib/python2.7/site-packages/turbogears/config.py", line 4, in <module>
    pkg_resources.require("CherryPy<3.0")
  File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 654, in require
    needed = self.resolve(parse_requirements(requirements))
  File "/usr/lib/python2.7/site-packages/pkg_resources.py", line 556, in resolve
    raise VersionConflict(dist,req) # XXX put more info here
pkg_resources.VersionConflict: (CherryPy 3.1.2 (/usr/lib/python2.7/site-packages), Requirement.parse('CherryPy<3.0'))

Comment 8 Toshio Ernie Kuratomi 2011-08-05 14:58:39 UTC
That's nonoptimal but expected.  Do you get an error if you do this?

$ python                                                            (07:54:29):2786
Python 2.7 (r27:82500, Sep 16 2010, 18:02:00) 
[GCC 4.5.1 20100907 (Red Hat 4.5.1-3)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import __main__
>>> __main__.__requires__=['TurboGears']
>>> import pkg_resources # Note TG has this import so it's not strictly necessary to do it explicitly here
>>> import turbogears
>>>

If you get an error doing this, that would be a bug.  Otherwise it's just the way compatibility packages work.