Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Find requirement specs in a Plone buildout setup

I have a Plone site (something around 4.2.4, telling from a version.txt in the root directory) which I'd like to update to a recent version (I found this how-to) (as of now, 4.3.4); I have inherited a plethora of pinned versions which are not documented and might be outdated.

When commenting out my versions.cfg, using http://dist.plone.org/release/4.3-latest/versions.cfg instead and re-running buildout with -vvv, I get:

Develop: '.../src/collective.mathjax'
in: '.../src/collective.mathjax'
/tmp/tmpbXsnpD -q develop -mxN -d .../develop-eggs/tmp2yhe9ubuild
...
Installing 'zc.recipe.egg'.
We have the best distribution that satisfies 'zc.recipe.egg<2dev'.
Picked: zc.recipe.egg = 1.3.2
...
There is a version conflict.
We already have: zc.recipe.egg 1.3.2.
While:
  Installing.
  Getting section test.
  Initializing section test.
  Installing recipe zc.recipe.testrunner.

So there seems to be some requirement for a sub-2 version of zc.recipe.egg, but I can't find it. (In my versions.cfg it is pinned to 2.0.1 - which used to work, surprisingly.)

I searched the tree with find and grep, looking for rc.recipe.egg in version*.cfg and setup.py files, but I couldn't find anything but in my project root directory. I even searched every single file below .../src/collective.mathjax, without success.

How can I ferret out this dependency? Thank you!

like image 269
Tobias Avatar asked Apr 23 '15 14:04

Tobias


2 Answers

Basically there's three places to look for version-pinnings:

1.) The requires-files of eggs released on PyPi, like Luca Fabbri pointed out, which you can search for pins like this:

grep -r --include=requires.txt "dependency.to.search.for" path/to/eggs-cache

2.) The setup.py-files of development-eggs, similar searchable like:

grep -r --include=setup.py "dependency.to.search.for" path/to/dev-eggs-cache

3.) The [versions]-part of config-files, where in this case the version.cfg is pulling more version-configs in, via its extends-option and the pulled one's might also specify more configs via extends.

You're lucky, admired M. v. Rees has shared a snippet, on how to get all pinnings of all Plone versions: https://gist.github.com/mauritsvanrees/99cb4a25b622479e7dc3

like image 126
Ida Avatar answered Nov 10 '22 06:11

Ida


but a better way to upgrade the existing installation is probably to get a standard buildout for the plone version you want to upgrade to, and then add your non-standard eggs to this buildout. Finally move your database and blobs over to the new installation, and follow the upgrade guide.

like image 3
sunew Avatar answered Nov 10 '22 06:11

sunew