updates to indirect dependencies cause build failures #2468

Closed
opened 2015-07-16 15:24:00 +00:00 by daira · 1 comment
daira commented 2015-07-16 15:24:00 +00:00
Owner

Consider the case where Tahoe initially depends on foo >= X.0, and foo X.0 depends on bar Y.0. Then foo X.1 is released which depends on bar Y.1. (This is a common situation, especially when foo and bar have overlapping development teams.)

Suppose that a particular machine has bar Y.0 installed globally. What is supposed to happen is that, in the case where a Tahoe build on that machine downloads foo X.1, it also downloads bar Y.1 and builds it under support/.

However, that doesn't happen. Instead we get an error:

error: Installed distribution bar Y.0 conflicts with requirement bar>=Y.1

For a concrete example, see https://tahoe-lafs.org/buildbot-tahoe-lafs/builders/memcheck-32/builds/96/steps/compile/logs/stdio:

Need allmydata-tahoe==1.10.1.post5
  found allmydata-tahoe 1.10.1.post5 (/home/bb-tahoe/bb-tahoe/memcheck-32/build/src)
  adding subdependencies [...]; pyasn1-modules>=0.0.5; pyasn1>=0.1.4; [...]

[...]
Need pyasn1-modules>=0.0.5
Searching for pyasn1-modules>=0.0.5
Reading http://pypi.python.org/simple/pyasn1-modules/
Best match: pyasn1-modules 0.0.6
Downloading https://pypi.python.org/packages/2.7/p/pyasn1-modules/pyasn1_modules-0.0.6-py2.7.egg#md5=c5d2ed9c850538f57effed3c7b74bbfb
Processing pyasn1_modules-0.0.6-py2.7.egg
creating /home/bb-tahoe/bb-tahoe/memcheck-32/build/support/lib/python2.7/site-packages/pyasn1_modules-0.0.6-py2.7.egg
Extracting pyasn1_modules-0.0.6-py2.7.egg to /home/bb-tahoe/bb-tahoe/memcheck-32/build/support/lib/python2.7/site-packages
Adding pyasn1-modules 0.0.6 to easy-install.pth file

Installed /home/bb-tahoe/bb-tahoe/memcheck-32/build/support/lib/python2.7/site-packages/pyasn1_modules-0.0.6-py2.7.egg
  found pyasn1-modules 0.0.6 (/home/bb-tahoe/bb-tahoe/memcheck-32/build/support/lib/python2.7/site-packages/pyasn1_modules-0.0.6-py2.7.egg)
  adding subdependency pyasn1>=0.1.8

Need pyasn1>=0.1.4
  found pyasn1 0.1.7 (/usr/lib/python2.7/dist-packages)
  no subdependencies to add

[...]
error: Installed distribution pyasn1 0.1.7 conflicts with requirement pyasn1>=0.1.8

setuptools delenda est.

Consider the case where Tahoe initially depends on foo >= X.0, and foo X.0 depends on bar Y.0. Then foo X.1 is released which depends on bar Y.1. (This is a common situation, especially when foo and bar have overlapping development teams.) Suppose that a particular machine has bar Y.0 installed globally. What is supposed to happen is that, in the case where a Tahoe build on that machine downloads foo X.1, it also downloads bar Y.1 and builds it under `support/`. However, that doesn't happen. Instead we get an error: ``` error: Installed distribution bar Y.0 conflicts with requirement bar>=Y.1 ``` For a concrete example, see <https://tahoe-lafs.org/buildbot-tahoe-lafs/builders/memcheck-32/builds/96/steps/compile/logs/stdio>: ``` Need allmydata-tahoe==1.10.1.post5 found allmydata-tahoe 1.10.1.post5 (/home/bb-tahoe/bb-tahoe/memcheck-32/build/src) adding subdependencies [...]; pyasn1-modules>=0.0.5; pyasn1>=0.1.4; [...] [...] Need pyasn1-modules>=0.0.5 Searching for pyasn1-modules>=0.0.5 Reading http://pypi.python.org/simple/pyasn1-modules/ Best match: pyasn1-modules 0.0.6 Downloading https://pypi.python.org/packages/2.7/p/pyasn1-modules/pyasn1_modules-0.0.6-py2.7.egg#md5=c5d2ed9c850538f57effed3c7b74bbfb Processing pyasn1_modules-0.0.6-py2.7.egg creating /home/bb-tahoe/bb-tahoe/memcheck-32/build/support/lib/python2.7/site-packages/pyasn1_modules-0.0.6-py2.7.egg Extracting pyasn1_modules-0.0.6-py2.7.egg to /home/bb-tahoe/bb-tahoe/memcheck-32/build/support/lib/python2.7/site-packages Adding pyasn1-modules 0.0.6 to easy-install.pth file Installed /home/bb-tahoe/bb-tahoe/memcheck-32/build/support/lib/python2.7/site-packages/pyasn1_modules-0.0.6-py2.7.egg found pyasn1-modules 0.0.6 (/home/bb-tahoe/bb-tahoe/memcheck-32/build/support/lib/python2.7/site-packages/pyasn1_modules-0.0.6-py2.7.egg) adding subdependency pyasn1>=0.1.8 Need pyasn1>=0.1.4 found pyasn1 0.1.7 (/usr/lib/python2.7/dist-packages) no subdependencies to add [...] error: Installed distribution pyasn1 0.1.7 conflicts with requirement pyasn1>=0.1.8 ``` setuptools delenda est.
tahoe-lafs added the
packaging
normal
defect
1.10.1
labels 2015-07-16 15:24:00 +00:00
tahoe-lafs added this to the undecided milestone 2015-07-16 15:24:00 +00:00

If mutable deployment environments are your thing, pip install --upgrade takes care of this now. I'd recommend not upgrading in-place, though. Wipe and re-install clean. Maybe this is awful but it's also awfully practical. And is Tahoe-LAFS really going to fix the Python package management and installation toolchain? Doubtful.

If mutable deployment environments are your thing, `pip install --upgrade` takes care of this now. I'd recommend not upgrading in-place, though. Wipe and re-install clean. Maybe this is awful but it's also awfully practical. And is Tahoe-LAFS really going to fix the Python package management and installation toolchain? Doubtful.
exarkun added the
somebody else's problem
label 2020-01-17 16:19:13 +00:00
Sign in to join this conversation.
No Milestone
No Assignees
2 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Reference: tahoe-lafs/trac-2024-07-25#2468
No description provided.