[Product-Developers] Infinite setuptools recursion with paster entry points

Mikko Ohtamaa mikko+plone at redinnovation.com
Tue Sep 22 11:17:27 UTC 2009


Hi,

Paster Plone skeletons create the following entry points for Plone apps (at
least AT apps) by default:

      # -*- entry_points -*- 
      [distutils.setup_keywords]
      paster_plugins = setuptools.dist:assert_string_list

      [egg_info.writers]
      paster_plugins.txt = setuptools.command.egg_info:write_arg

They are needed to use paster addcontent command for Plone.

However sometimes (always?) this leads to infinite recursion when you run
buildout and there already exists .egg-info folders for the product from
previous buildout run:

Develop: '/srv/plone/saariselka/src/collective.mountpoint'
Traceback (most recent call last):
  File "/tmp/tmpWfiFy9", line 11, in ?
    execfile('/srv/plone/saariselka/src/collective.mountpoint/setup.py')
  File "/srv/plone/saariselka/src/collective.mountpoint/setup.py", line 72,
in ?
    paster_plugins = ["ZopeSkel"],
  File "/usr/lib/python2.4/distutils/core.py", line 110, in setup
    _setup_distribution = dist = klass(attrs)
  File
"/srv/plone/saariselka/eggs/setuptools-0.6c9-py2.4.egg/setuptools/dist.py",
line 223, in __init__
    _Distribution.__init__(self,attrs)
  File "/usr/lib/python2.4/distutils/dist.py", line 240, in __init__
    self.finalize_options()
  File
"/srv/plone/saariselka/eggs/setuptools-0.6c9-py2.4.egg/setuptools/dist.py",
line 255, in finalize_options
    ep.require(installer=self.fetch_build_egg)
  File
"/srv/plone/saariselka/eggs/setuptools-0.6c9-py2.4.egg/pkg_resources.py",
line 1925, in require
    working_set.resolve(self.dist.requires(self.extras),env,installer))
  File
"/srv/plone/saariselka/eggs/setuptools-0.6c9-py2.4.egg/pkg_resources.py",
line 522, in resolve
    dist = best[req.key] = env.best_match(req, self, installer)
  File
"/srv/plone/saariselka/eggs/setuptools-0.6c9-py2.4.egg/pkg_resources.py",
line 758, in best_match
    return self.obtain(req, installer) # try and download/install
  File
"/srv/plone/saariselka/eggs/setuptools-0.6c9-py2.4.egg/pkg_resources.py",
line 770, in obtain
    return installer(requirement)
  File
"/srv/plone/saariselka/eggs/setuptools-0.6c9-py2.4.egg/setuptools/dist.py",
line 286, in fetch_build_egg
    return cmd.easy_install(req)
  File
"/srv/plone/saariselka/eggs/setuptools-0.6c9-py2.4.egg/setuptools/command/easy_install.py",
line 446, in easy_install
    return self.install_item(spec, dist.location, tmpdir, deps)
  File
"/srv/plone/saariselka/eggs/setuptools-0.6c9-py2.4.egg/setuptools/command/easy_install.py",
line 476, in install_item
    dists = self.install_eggs(spec, download, tmpdir)
  File
"/srv/plone/saariselka/eggs/setuptools-0.6c9-py2.4.egg/setuptools/command/easy_install.py",
line 655, in install_eggs
    return self.build_and_install(setup_script, setup_base)
  File
"/srv/plone/saariselka/eggs/setuptools-0.6c9-py2.4.egg/setuptools/command/easy_install.py",
line 930, in build_and_install
    self.run_setup(setup_script, setup_base, args)
  File
"/srv/plone/saariselka/eggs/setuptools-0.6c9-py2.4.egg/setuptools/command/easy_install.py",
line 921, in run_setup
    raise DistutilsError("Setup script exited with %s" % (v.args[0],))
distutils.errors.DistutilsError: Setup script exited with error: Setup
script exited with error: Setup script exited with error: Setup script
exited with error: Setup script exited with error: Setup script exited with
error: Setup script exited with error: Setup script exited with error: Setup
script exited with error: Setup script exited with error: Setup script
exited with error: Setup script exited with error: Setup script exited with
error: Setup script exited with error: Setup script exited with error: Setup
script exited with error: Setup script exited with error: Setup script
exited with error: Setup script exited with error: Setup script exited with
error: Setup script exited with error: Setup script exited with error:
Numerical result out of range
While:
  Installing.

The cure is run this before running buildout:

find src -iname "*.egg-info" | xargs rm -rf 

But is there any more elegant solution available?

- Fix paster templates?

- Fix buildout?

- Fix setuptools?

Cheers,
Mikko
-- 
View this message in context: http://n2.nabble.com/Infinite-setuptools-recursion-with-paster-entry-points-tp3692450p3692450.html
Sent from the Product Developers mailing list archive at Nabble.com.




More information about the Product-Developers mailing list