[tahoe-lafs-trac-stream] [Tahoe-LAFS] #2077: pip packaging plan

Tahoe-LAFS trac at tahoe-lafs.org
Tue May 5 20:26:03 UTC 2015


#2077: pip packaging plan
---------------------------+--------------------------------------
     Reporter:  daira      |      Owner:
         Type:  defect     |     Status:  new
     Priority:  normal     |  Milestone:  undecided
    Component:  packaging  |    Version:  1.10.0
   Resolution:             |   Keywords:  pip packaging setuptools
Launchpad Bug:             |
---------------------------+--------------------------------------

Comment (by daira):

 1. The
 `Requirement.parse('zope.interface==3.6.0,==3.6.1,==3.6.2,>=3.6.5')` error
 is already fixed on trunk. (Note that this was due to an incompatible,
 undocumented change in setuptools and we would have had this problem
 anyway if we had been using upstream setuptools or pip rather than
 zetuptoolz. In any case it is fixed, so please do not get distracted by
 it.)

 2. A couple of other difficulties with using pip have just been fixed on a
 branch, and will be in the Tahoe-LAFS v1.10.1 release.

 3. This ticket was filed some time ago, and I know more about pip and its
 relation with virtualenv and setuptools than I did then.

 4. Forking zetuptoolz was probably a mistake, and failing to keep up with
 changes to upstream for this long certainly was. You don't need to
 reiterate that; we get it.

 5. I've had a migraine today; actually this is the third time I've had a
 bad migraine after spending the previous night thinking about
 setuptools/pkg_resources. So forgive me if I sound a bit snappy or
 irritated.

 6. Tahoe-LAFS in fact does have an OS X installer, which will be in
 1.10.1. It may also have a Windows installer if that is finished in time.
 However you're right that it is independent of this ticket.

 7. Several issues are non-negotiable:

 * We need "download some file, extract it, run `python setup.py build`" to
 Just Work, given that Python is already installed. It must not rely on the
 user performing extra manual steps, ''especially'' not steps that vary by
 platform. (In particular Windows must work like any other platform.)

 * The file that the user downloads must contain only source; no binary
 blobs. It's acceptable for precompiled binaries of dependencies to be
 downloaded from other sites over https. Ideally this download would be
 separable from build or install, although `python setup.py build` should
 download dependencies by default. (There may be a different download that
 includes all dependencies, but that is a "nice to have", not a required
 feature.)

 8. We don't trust `pkg_resources` to correctly set up a `sys.path` that
 will result in importing the versions of dependencies asked for in
 `setup_requires` (there are several known cases where it doesn't, and
 these are ''not'' only associated with the use of eggs, nor are they
 easily fixable given the variety of ways in which dependent packages may
 have been installed on a user's system). To work around this problem, we
 explicitly check the versions that were actually imported. We do this in a
 way that does not involve duplicating information about version
 requirements in multiple places, and we would not want to lose that
 property.

--
Ticket URL: <https://tahoe-lafs.org/trac/tahoe-lafs/ticket/2077#comment:19>
Tahoe-LAFS <https://Tahoe-LAFS.org>
secure decentralized storage


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