[tahoe-lafs-trac-stream] [tahoe-lafs] #1326: don't require newer foolscap if you have older Twisted

tahoe-lafs trac at tahoe-lafs.org
Sun Jan 16 20:46:40 UTC 2011


#1326: don't require newer foolscap if you have older Twisted
---------------------------+------------------------------------------------
     Reporter:  zooko      |       Owner:  somebody                                         
         Type:  defect     |      Status:  new                                              
     Priority:  major      |   Milestone:  1.8.2                                            
    Component:  packaging  |     Version:  1.8.1                                            
   Resolution:             |    Keywords:  review-needed setuptools install foolscap twisted
Launchpad Bug:             |  
---------------------------+------------------------------------------------

Comment (by zooko):

 Replying to [comment:2 davidsarah]:
 > Replying to [ticket:1326 zooko]:
 > > David-Sarah [http://tahoe-lafs.org/pipermail/tahoe-
 dev/2011-January/005867.html proposed] a different approach, in which
 {{{python setup.py build}}} would build a local private copy of
 {{{foolscap >= 0.6.0}}} even if the system already have
 {{{foolscap-0.5.1}}} installed.
 >
 > There must be some confusion -- this is what trunk ''already'' does.

 Hm, yes I didn't understand your proposal. On that mailing list message,
 you wrote:
  'setup.py build', by default, should either:
   - have built a private copy of twisted < 10.2 (always used by bin/tahoe)
    that won't be affected by upgrades of the installed version, or
   - have built a private copy of foolscap 0.6.0 (always used by
 bin/tahoe).

 So if I understand correctly, you prefer for Tahoe-LAFS v1.8.2 to require
 {{{foolscap >= 0.6.0}}} even if {{{Twisted}}} is {{{< 10.2}}} (or
 alternately to require {{{Twisted <= 10.2}}}) for installation, because if
 Tahoe-LAFS v1.8.2 allows {{{foolscap-0.5.1}}} at install time, then the
 user may later upgrade their {{{Twisted}}} to {{{>= 10.2}}} and then
 execute {{{bin/tahoe}}} without re-running {{{python setup.py build}}} and
 they would then get a failure to start due to conflicting version
 requirements.

 This is what trunk currently does.

 The drawback to this approach is [http://tahoe-lafs.org/pipermail/tahoe-
 dev/2011-January/005842.html Brian's original complaint] -- that it means
 Tahoe-LAFS requires {{{foolscap >= 0.6.0}}} when the {{{foolscap-0.5.1}}}
 that comes with Ubuntu Lucid should really be good enough.

 Now, I don't feel so strongly about this, so I'm basically {{{-0}}} on
 leaving trunk as it is, because I can live with it, but I would like to
 understand your motivation better in order to work with you on related
 issues.

 My idea of packaging is that there is a "build/install" step where the
 packaging system can do stuff having to do with dependencies--either
 automatically resolve dependencies (complicated and controversial, but
 handy for users who don't know how to resolve dependencies themselves), or
 at least detect unresolved dependencies and clearly alert the user to the
 problem and exit loudly. Then, at ''run-time'' the packaging system
 ''could'' re-examine dependencies in order to give a better error message
 if a dependency is missing or is of an incompatible version, but it ''must
 not'' resolve dependencies at that time.

 So I have the feeling that if the user changes installed deps after build
 time and before run-time, then we have no responsibility beyond erroring
 out cleanly, but you seem to think we should pay a cost (in the form of a
 higher version requirement on {{{foolscap}}}) in order to make Tahoe-LAFS
 run correctly even if the user has done that,.

-- 
Ticket URL: <http://tahoe-lafs.org/trac/tahoe-lafs/ticket/1326#comment:3>
tahoe-lafs <http://tahoe-lafs.org>
secure decentralized storage


More information about the tahoe-lafs-trac-stream mailing list