We can side step the dependency graphing and ordering issue by looking at
the list of curently installed packages via pip freeze and not installing
dependencies (pip install --no-deps)

After looking into this further here are the known issues:

* Partial capping won't work [0], so we need to pin all dependencies, we
can generate this list per file via "pip install -r" and "pip freeze", but
this doesn't address the issue of apt-get vs pip install. For example in
the stable gate we use suds 0.4.1 but only suds 0.4.0 is available via pip.
* Not all packages are installed in are standard dsvm-tempest env, so using
pip-freeze from that isn't enough
* We need to run this per requirements file and move to using pip install
--no-deps everywhere. As the global-requirements sync wouldn't work the
first time since files don't list all transient dependencies yet.
* We can still break if a package version is removed from pypi
* in pip-freeze we sometimes install versions lower then our minimum
version (python-libvirt!)



[0]
http://lists.openstack.org/pipermail/openstack-dev/2015-January/054156.html

On Fri, Jan 16, 2015 at 5:07 AM, Jeremy Stanley <fu...@yuggoth.org> wrote:

> On 2015-01-15 08:44:58 -0500 (-0500), Sean Dague wrote:
> [...]
> > The other thing that happened was partial capping doesn't work,
> > because something else moves forward and breaks you from below. So
> > the patch will need to hit everything at once.
>
> Right, and we _have_ to start using stable branches on all
> clients/libraries to backport fixes as part of that. This means that
> the stable branch management workflow is about to become pervasive
> across some teams who were previously (blissfully?) ignorant of it.
>
> > Unresolved entirely is the tertiary dependencies (not direct
> > dependencies of any OpenStack project). That will need another
> > mechanism to seed them before any installation happens.
> [...]
>
> I won't go so far as to call it intractable, but I took a stab at it
> about a year ago and building the dependency graph properly to be
> able to do a depth-first ordering is nontrivial (enough that after
> about a week hacking on possible solutions I gave up and switched to
> more productive tasks). The primary complications I ran into were
> identifying setup_requires in transitive dependencies and dealing
> with platform/version-specific dependencies. That said, there's a
> very good chance that more recent improvements in setuptools, pip
> and virtualenv could make this task easier.
>
> > That's the things I can think off from the top of my head.
>
> The implementation, from a devstack-gate perspective, is also going
> to require a decision on whether we stick with stable/relname for
> branches of libraries too or switch to some extended branch mapping
> mechanism to be able to track stable/relnum branches for those. And
> we're going to need more jobs to ensure that clients (specifically)
> retain backward-compatibility from an appdev and end user
> perspective since they'll no longer get any testing as server
> dependencies on stable branches (due to being capped there).
> --
> Jeremy Stanley
>
> __________________________________________________________________________
> OpenStack Development Mailing List (not for usage questions)
> Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
> http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev
>
__________________________________________________________________________
OpenStack Development Mailing List (not for usage questions)
Unsubscribe: openstack-dev-requ...@lists.openstack.org?subject:unsubscribe
http://lists.openstack.org/cgi-bin/mailman/listinfo/openstack-dev

Reply via email to