Re: [tahoe-dev] new foolscap version requirement

2011-01-11 Thread Zooko O'Whielacronx
On Fri, Jan 7, 2011 at 2:10 PM, David-Sarah Hopwood
 wrote:
>> 3. You have Twisted < 10.2 and Foolscap < 0.6.0 installed.
...
> The situation shouldn't occur because '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).

Hrm. I can see how this could work, and could avoid the problem that
could occur if someone were to subsequently upgrade their Twisted
without upgrading their foolscap. However, I'm not sure that most
users would be okay with this--it runs contrary to the principle of
using the system-wide install of a library if possible. I'm not sure
that if I were a user I would like the Tahoe-LAFS build to do this,
and if I understand Greg Troxel's comment on this thread, it sounds
like he might have reservations too.

(Currently, the Tahoe-LAFS build scheme will automatically build a
private copy of a library but will not do so if there is already a
copy available which is of a sufficiently new version number.)

In any case, I don't want to try to implement that (plus deciding if
it is really a good idea according to users) for v1.8.2, but I *would*
be happy to apply my patch before v1.8.2, which as far as I can tell
would be strictly better than the current trunk, even if you prefer
the "aggressive private copy" scheme above even more.

So, can I get at least a +0 from David-Sarah on my patch for v1.8.2?

And also from Brian, whose begrudging complaint^W^Wuseful bug report
prompted my patch?

Regards,

Zooko
___
tahoe-dev mailing list
tahoe-dev@tahoe-lafs.org
http://tahoe-lafs.org/cgi-bin/mailman/listinfo/tahoe-dev


Re: [tahoe-dev] new foolscap version requirement

2011-01-07 Thread David-Sarah Hopwood
On 2011-01-07 06:25, Zooko O'Whielacronx wrote:
> On Thu, Jan 6, 2011 at 4:45 PM, David-Sarah Hopwood
>  wrote:
>>>
>>> http://tahoe-lafs.org/trac/tahoe-lafs/browser/trunk/src/allmydata/_auto_deps.py?annotate=blame&rev=4893#L99
>>
>> That code doesn't always work (in particular, due to the side-by-side
>> installation problem in #1246 and #1258). Note that the code at
>> 
>> does work in those cases.
> 
> Okay. I would be okay with using the current code even though it has
> issues #1246/#1258, or with merging your improvements if we can do
> that for v1.8.2. (As far as I understand, it often works, currently,
> despite those issues.)

The problem is that the circumstances under which it works are somewhat
unpredictable. It's not even feasible to reliably avoid the situation that
creates the problem. For example, the Windows installers for Twisted and
pywin32 can create it (as can package managers on other OSes).

I take a very hard line on testing the right code, and the same code that
is run. Any circumstance where you have asked the system to test or run
some code and it has actually tested or run different code, is unacceptable
because it invalidates debugging techniques, and can lead to a huge amount
of wasted time. That's why I marked #1287 as critical. The aspect of
#1246 and #1258 that can result in us silently passing tests that should
have failed is also critical. (I believe that the test_import_in_repl
patch attached to #1258 fixes that aspect.)

> Here's the quiz:
> 
> 1. You have Twisted < 10.2 installed on your system. You download
> Tahoe-LAFS v1.8.2 and run "python setup.py build". What do you want
> the build system to do?
> 
> option a: require foolscap >= 0.5.1
> 
> (Note: this was an easy question just to get you started.)

Require any version of foolscap that will work.

It is desirable for the requirement isn't too tight or recent, but not
at the expense of reducing the set of cases in which the resulting
Tahoe-LAFS build will work correctly. In particular, cases in which the
build succeeds and then the application fails at runtime are to be
minimized. It is somewhat OK if the *build* fails due to a conflict
with existing installed packages, provided that it fails with a message
that identifies the name and path of at least one of the conflicting
installations.

(Note, however, that it is perfectly possible not to use the installed
versions. That's my preferred default behaviour when there is a
conflict. The build system may have an option to force using the
installed versions, in which case the build should fail.)

> 2. You have Twisted >= 10.2 installed. You build Tahoe-LAFS v1.8.2.
> What do you want it to do?
> 
> option a: require foolscap >= 0.6.0
> 
> (Okay that was another easy one.)

Yes (because >= 0.6.0 is a version of foolscap that will work).

> 3. You have Twisted < 10.2 and Foolscap < 0.6.0 installed. You build
> Tahoe-LAFS. It is satisfied with the packages already installed
> (because 1=>a).

Nope, because I didn't answer 1=>a ;-)

> Then you manually upgrade your Twisted to == 10.2.
> Then you do *not* run Tahoe-LAFS's "python setup.py build" again, but
> you do run "tahoe start".

I think you mean 'bin/tahoe start'.

> What do you want it to do?
> 
> option a: emit a clear error message saying that it has Foolscap
> v0.5.1 installed but it needs Foolscap v0.6.0 and stop.
> 
> option b: ?

The situation shouldn't occur because '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).

(I assume we're talking about upgrading the installed twisted. Replacing
the copy under support/, if there is one, should cause an error message.)

> 4. Please write in your own quiz question here and answer it.

If I run 'bin/tahoe --version-and-path', modify a Python source file
below one of the given directories, and then run 'bin/tahoe' again
without doing a build, what should happen?

option a: it should use the modified source file

(This answer need not apply to frozen builds using bb-freeze/py2exe/etc.)

-- 
David-Sarah Hopwood  ⚥  http://davidsarah.livejournal.com



signature.asc
Description: OpenPGP digital signature
___
tahoe-dev mailing list
tahoe-dev@tahoe-lafs.org
http://tahoe-lafs.org/cgi-bin/mailman/listinfo/tahoe-dev


Re: [tahoe-dev] new foolscap version requirement

2011-01-07 Thread Greg Troxel

quick comment (without reading the whole foolscap/twisted discussion as
thorougly as I should):

  it is totally fair to expect the OS/packaging system to have versions
  of foolscap and twisted that work *with each other*

  it is not reasonable to demand versions of dependencies that haven't
  been out for at least 3-6 months unless there is some really critical
  reason why the grief is outweighed by the benefit

  tahoe should be able to cope with either bleeding edge
  foolscap/twisted or the ones that work together and were current 3
  months ago



as to your quiz

  3. You have Twisted < 10.2 and Foolscap < 0.6.0 installed. You build
  Tahoe-LAFS. It is satisfied with the packages already installed
  (because 1=>a). Then you manually upgrade your Twisted to == 10.2.
  Then you do *not* run Tahoe-LAFS's "python setup.py build" again, but
  you do run "tahoe start". What do you want it to do?

  option a: emit a clear error message saying that it has Foolscap
  v0.5.1 installed but it needs Foolscap v0.6.0 and stop.

  option b: ?

user has broken their install because they updated twisted and not
foolscap, and new twisted requires new foolscap so option a is totally
fine.

I am firmly in the "fail if things are not ok" camp vs the "do magic to
make it work" camp.


pgp7GvV6Z4OGj.pgp
Description: PGP signature
___
tahoe-dev mailing list
tahoe-dev@tahoe-lafs.org
http://tahoe-lafs.org/cgi-bin/mailman/listinfo/tahoe-dev


Re: [tahoe-dev] new foolscap version requirement

2011-01-06 Thread Zooko O'Whielacronx
On Thu, Jan 6, 2011 at 4:45 PM, David-Sarah Hopwood
 wrote:
>>
>> Good point, but how could it be otherwise? The only thing that could
>> avoid this would be if executing tahoe at runtime triggered automatic
>> installation of new versions of dependencies. I'm sure nobody here
>> wants that. :-)
>
> Er, setuptools support scripts will *use* newly installed versions of
> dependencies automatically, whenever they satisfy the requirements.

Okay. The part I'm still not quite getting is what behavior you and/or
Brian want from your ideal build system. I'll write a quiz below.

> Compare the effect of the code you posted with what is on current trunk:
>
>  - on trunk, foolscap >= 0.6.0 is a requirement so upgrading to
>   twisted 10.2 will not break anything.
>  - with your code, upgrading to twisted 10.2 will break an existing
>   Tahoe build/install.

This is entirely due to my code relaxing the requirement on foolscap
from >= v0.6 to >= v0.5.1, which I thought was what Brian wanted.

>> The best thing we could do in that case, I believe, is emit a specific
>> error message saying that we require foolscap >= 0.6, perhaps with an
>> associated comment saying that the reason we require foolscap >= 0.6
>> is that we have Twisted >= 10.2.
>>
>> Hm, oh look! That's exactly what tahoe will do:
>>
>> http://tahoe-lafs.org/trac/tahoe-lafs/browser/trunk/src/allmydata/_auto_deps.py?annotate=blame&rev=4893#L99
>
> That code doesn't always work (in particular, due to the side-by-side
> installation problem in #1246 and #1258). Note that the code at
> 
> does work in those cases.

Okay. I would be okay with using the current code even though it has
issues #1246/#1258, or with merging your improvements if we can do
that for v1.8.2. (As far as I understand, it often works, currently,
despite those issues.)


Here's the quiz:

1. You have Twisted < 10.2 installed on your system. You download
Tahoe-LAFS v1.8.2 and run "python setup.py build". What do you want
the build system to do?

option a: require foolscap >= 0.5.1

(Note: this was an easy question just to get you started.)

2. You have Twisted >= 10.2 installed. You build Tahoe-LAFS v1.8.2.
What do you want it to do?

option a: require foolscap >= 0.6.0

(Okay that was another easy one.)

3. You have Twisted < 10.2 and Foolscap < 0.6.0 installed. You build
Tahoe-LAFS. It is satisfied with the packages already installed
(because 1=>a). Then you manually upgrade your Twisted to == 10.2.
Then you do *not* run Tahoe-LAFS's "python setup.py build" again, but
you do run "tahoe start". What do you want it to do?

option a: emit a clear error message saying that it has Foolscap
v0.5.1 installed but it needs Foolscap v0.6.0 and stop.

option b: ?

4. Please write in your own quiz question here and answer it.

Regards,

Zooko
___
tahoe-dev mailing list
tahoe-dev@tahoe-lafs.org
http://tahoe-lafs.org/cgi-bin/mailman/listinfo/tahoe-dev


Re: [tahoe-dev] new foolscap version requirement

2011-01-06 Thread David-Sarah Hopwood
On 2011-01-06 14:54, Zooko O'Whielacronx wrote:
> On Thu, Jan 6, 2011 at 2:11 AM, David-Sarah Hopwood
>  wrote:
>>
>> This checks the Twisted version at the time of the build. If the user later
>> installs Twisted 10.2 but still has foolscap 0.5.1, the Tahoe installation
>> will break, and the user will have to rebuild it.
> 
> Good point, but how could it be otherwise? The only thing that could
> avoid this would be if executing tahoe at runtime triggered automatic
> installation of new versions of dependencies. I'm sure nobody here
> wants that. :-)

Er, setuptools support scripts will *use* newly installed versions of
dependencies automatically, whenever they satisfy the requirements.

Compare the effect of the code you posted with what is on current trunk:

 - on trunk, foolscap >= 0.6.0 is a requirement so upgrading to
   twisted 10.2 will not break anything.
 - with your code, upgrading to twisted 10.2 will break an existing
   Tahoe build/install.

> The best thing we could do in that case, I believe, is emit a specific
> error message saying that we require foolscap >= 0.6, perhaps with an
> associated comment saying that the reason we require foolscap >= 0.6
> is that we have Twisted >= 10.2.
> 
> Hm, oh look! That's exactly what tahoe will do:
> 
> http://tahoe-lafs.org/trac/tahoe-lafs/browser/trunk/src/allmydata/_auto_deps.py?annotate=blame&rev=4893#L99

That code doesn't always work (in particular, due to the side-by-side
installation problem in #1246 and #1258). Note that the code at

does work in those cases.

(The reason this is attached to the bb-freeze ticket, is that
importing pkg_resources, as needed by require_auto_deps(), was also
causing problems for bb-freeze. But I'd planned to make this change
anyway, since I've essentially lost confidence in pkg_resources.require
to return reliable information.)

-- 
David-Sarah Hopwood  ⚥  http://davidsarah.livejournal.com



signature.asc
Description: OpenPGP digital signature
___
tahoe-dev mailing list
tahoe-dev@tahoe-lafs.org
http://tahoe-lafs.org/cgi-bin/mailman/listinfo/tahoe-dev


Re: [tahoe-dev] new foolscap version requirement

2011-01-06 Thread Zooko O'Whielacronx
On Thu, Jan 6, 2011 at 2:11 AM, David-Sarah Hopwood
 wrote:
>
> This checks the Twisted version at the time of the build. If the user later
> installs Twisted 10.2 but still has foolscap 0.5.1, the Tahoe installation
> will break, and the user will have to rebuild it.

Good point, but how could it be otherwise? The only thing that could
avoid this would be if executing tahoe at runtime triggered automatic
installation of new versions of dependencies. I'm sure nobody here
wants that. :-)

The best thing we could do in that case, I believe, is emit a specific
error message saying that we require foolscap >= 0.6, perhaps with an
associated comment saying that the reason we require foolscap >= 0.6
is that we have Twisted >= 10.2.

Hm, oh look! That's exactly what tahoe will do:

http://tahoe-lafs.org/trac/tahoe-lafs/browser/trunk/src/allmydata/_auto_deps.py?annotate=blame&rev=4893#L99

Regards,

Zooko
___
tahoe-dev mailing list
tahoe-dev@tahoe-lafs.org
http://tahoe-lafs.org/cgi-bin/mailman/listinfo/tahoe-dev


Re: [tahoe-dev] new foolscap version requirement

2011-01-06 Thread David-Sarah Hopwood
On 2011-01-06 07:38, Zooko O'Whielacronx wrote:
> On Wed, Jan 5, 2011 at 11:48 AM, Brian Warner  wrote:
>>
>>> -  "foolscap[secure_connections] >= 0.5.1",
>>> +  # foolscap < 0.6 is incompatible with Twisted 10.2.0.
>>> +  "foolscap[secure_connections] >= 0.6.0",
> ...
>> But for everyone else, this introduces a needless incompatibility. For
>> example, the folks running on the current Ubuntu long-term support
>> release ("Lucid") get twisted-10.0 and foolscap-0.5.1, which Tahoe
>> handled just fine a few days ago. My local development tree just stopped
>> working after pulling the change, because I've got twisted-10.1 and
>> foolscap-0.5.1 .
> 
> Does the following fix the specific problem described above?
> 
> def get_package_version_tuple_from_setuptools(pkgname):
> try:
> return 
> pkg_resources.parse_version(pkg_resources.require(pkgname)[0].version)
> except pkg_resources.DistributionNotFound:
> return None
> 
> install_requires.append('Twisted >= 2.4.0')
> twistedver = get_package_version_from_setuptools('Twisted')
>
> if twistedver and (twistedverstr < pkg_resources.parse_version('10.2')):
> # If you already have Twisted < 10.2 installed, then you need
> # foolscap >= 0.5.1.
> install_requires.append('foolscap >= 0.5.1')
> else:
> # Else, you need foolscap >= 0.6. (This is because you either
> # already have Twisted >= 10.2 installed, or you have no version
> # of Twisted installed, and when this build system automatically
> # downloads one for you it is going to get one >= 10.2. If you end
> # up with Twisted >= 10.2 then you require foolscap >= 0.6.)
> install_requires.append('foolscap >= 0.6.0')

This checks the Twisted version at the time of the build. If the user later
installs Twisted 10.2 but still has foolscap 0.5.1, the Tahoe installation
will break, and the user will have to rebuild it.

-- 
David-Sarah Hopwood  ⚥  http://davidsarah.livejournal.com



signature.asc
Description: OpenPGP digital signature
___
tahoe-dev mailing list
tahoe-dev@tahoe-lafs.org
http://tahoe-lafs.org/cgi-bin/mailman/listinfo/tahoe-dev


Re: [tahoe-dev] new foolscap version requirement

2011-01-05 Thread Zooko O'Whielacronx
Okay here is a version that I actually manually tested and that
actually works on my machine. I would be satisfied with including this
in trunk provided all the buildslaves passed tests with this patch.

1 patch for repository zo...@dev.allmydata.org:/home/darcs/tahoe-lafs/trunk:

Thu Jan  6 00:48:40 MST 2011  zo...@zooko.com
  * setup: don't require foolscap >= 0.6.0 if you already have an
installation of Twisted < 10.2
  If you already have a Twisted < 10.2 then you can certainly get by
with a foolscap >= 0.5.1. If you do not already have an installation
of Twisted < 10.2 then you almost certainly need a foolscap >= 0.6.0.

New patches:

[setup: don't require foolscap >= 0.6.0 if you already have an
installation of Twisted < 10.2
zo...@zooko.com**20110106074840
 Ignore-this: d2c0eaa1519a276aa15b87ddb488f6e
 If you already have a Twisted < 10.2 then you can certainly get by
with a foolscap >= 0.5.1. If you do not already have an installation
of Twisted < 10.2 then you almost certainly need a foolscap >= 0.6.0.
] {
hunk ./src/allmydata/_auto_deps.py 1
+import pkg_resources
+
 # Note: do not import any module from Tahoe-LAFS itself in this
 # file. Also please avoid importing modules from other packages than
 # the Python Standard Library if at all possible (exception: we rely
hunk ./src/allmydata/_auto_deps.py 7
 # on importing pkg_resources, which is provided by setuptools,
-# zetuptoolz, distribute, and perhaps in the future distutils2, for
-# the require_auto_deps() function.)
+# zetuptoolz, distribute, and perhaps in the future distutils2).

 install_requires=[
   # we require newer versions of setuptools (actually
hunk ./src/allmydata/_auto_deps.py 22
   "zope.interface",
   "Twisted >= 2.4.0",

-  # foolscap < 0.5.1 had a performance bug which spent
-  # O(N**2) CPU for transferring large mutable files
-  # of size N.
-  # foolscap < 0.6 is incompatible with Twisted 10.2.0.
-  "foolscap[secure_connections] >= 0.6.0",
   "Nevow >= 0.6.0",

   # Needed for SFTP. pyasn1 is needed by
twisted.conch in Twisted >= 9.0.
hunk ./src/allmydata/_auto_deps.py 33
   #"windmill >= 1.3",
   ]

+def get_package_version_tuple_from_setuptools(pkgname):
+try:
+return
pkg_resources.parse_version(pkg_resources.require(pkgname)[0].version)
+except pkg_resources.DistributionNotFound:
+return None
+
+twistedver = get_package_version_tuple_from_setuptools('Twisted')
+if twistedver and (twistedver < pkg_resources.parse_version('10.2')):
+# If you already have Twisted < 10.2 installed, then you need
+# foolscap >= 0.5.1. foolscap < 0.5.1 had a performance bug which
+# spent O(N**2) CPU for transferring large mutable files of size
+# N.
+install_requires.append('foolscap[secure_connections] >= 0.5.1')
+else:
+# Else, you need foolscap >= 0.6. (This is because you either
+# already have Twisted >= 10.2 installed, or you have no version
+# of Twisted installed, and when this build system automatically
+# downloads one for you it is going to get one >= 10.2. If you end
+# up with Twisted >= 10.2 then you require foolscap >= 0.6.)
+install_requires.append('foolscap[secure_connections] >= 0.6.0')
+
 import platform
 if platform.machine().lower() in ['i386', 'x86_64', 'amd64', 'x86', '']:
 # pycryptopp v0.5.20 fixes bugs in SHA-256 and AES on x86 or amd64
hunk ./src/allmydata/_auto_deps.py 126
 """
 require_python_version()

-import pkg_resources
 for requirement in install_requires:
 try:
 pkg_resources.require(requirement)
}

Context:

[NEWS: 'top' for node processes, WUI formatting, removal of GUI apps,
documentation updates, foolscap dependency. refs #174, #1219, #1225
david-sa...@jacaranda.org**20110106005727
 Ignore-this: f61ac58b4d10e635feb6f7391b1b48fe
]
[Makefile: update 'clean' target for files in bin/
david-sa...@jacaranda.org**20110103052738
 Ignore-this: 2bdbc4a50e13e508b66d0f65718c79b2
]
[bin/tahoe-script.template: On non-Windows, invoke support/bin/tahoe
directly as a script (rather than via python), so that 'top' for
example will show it as 'tahoe'. On Windows, simplify some code that
set argv[0], which is never used. fixes #174
david-sa...@jacaranda.org**20101127232650
 Ignore-this: 42a86f3eecfdc1ea7b76a7cc68626898
]
[test_runner: avoid unnecessary use of non-ASCII.
david-sa...@jacaranda.org**20110101100101
 Ignore-this: e2ff40dce6bb3b021306f2913d4e75df
]
[docs/quickstart.html: fix redundant, badly nested tag. refs #1284
david-sa...@jacaranda.org**20110102175159
 Ignore-this: 2ae9cc0b47d2e87b9eb64a0f517c4eef
]
[docs/quickstart.html: information about 'troublesome dependencies'
and 'verified systems' de-emphasized by smaller italic font. Re-wrap
so that the HTML source is readable (just about) as text. Minor
wording tweaks. 

Re: [tahoe-dev] new foolscap version requirement

2011-01-05 Thread Zooko O'Whielacronx
On Wed, Jan 5, 2011 at 11:48 AM, Brian Warner  wrote:
>
>> -                  "foolscap[secure_connections] >= 0.5.1",
>> +                  # foolscap < 0.6 is incompatible with Twisted 10.2.0.
>> +                  "foolscap[secure_connections] >= 0.6.0",
...
> But for everyone else, this introduces a needless incompatibility. For
> example, the folks running on the current Ubuntu long-term support
> release ("Lucid") get twisted-10.0 and foolscap-0.5.1, which Tahoe
> handled just fine a few days ago. My local development tree just stopped
> working after pulling the change, because I've got twisted-10.1 and
> foolscap-0.5.1 .

Does the following fix the specific problem described above?

def get_package_version_tuple_from_setuptools(pkgname):
try:
return 
pkg_resources.parse_version(pkg_resources.require(pkgname)[0].version)
except pkg_resources.DistributionNotFound:
return None

install_requires.append('Twisted >= 2.4.0')
twistedver = get_package_version_from_setuptools('Twisted')
if twistedver and (twistedverstr < pkg_resources.parse_version('10.2')):
# If you already have Twisted < 10.2 installed, then you need
# foolscap >= 0.5.1.
install_requires.append('foolscap >= 0.5.1')
else:
# Else, you need foolscap >= 0.6. (This is because you either
# already have Twisted >= 10.2 installed, or you have no version
# of Twisted installed, and when this build system automatically
# downloads one for you it is going to get one >= 10.2. If you end
# up with Twisted >= 10.2 then you require foolscap >= 0.6.)
install_requires.append('foolscap >= 0.6.0')
___
tahoe-dev mailing list
tahoe-dev@tahoe-lafs.org
http://tahoe-lafs.org/cgi-bin/mailman/listinfo/tahoe-dev


Re: [tahoe-dev] new foolscap version requirement

2011-01-05 Thread Brian Warner
On 1/5/11 5:15 PM, David-Sarah Hopwood wrote:
> 
> Unfortunately, there is no way that I know of to declare a conditional
> dependency on 'foolscap[secure_connections] >= 0.6.0' if the version
> of Twisted we are using is 10.2.

Yup. I'm just venting :).

> 'setup.py build' should download a foolscap 0.6.0 egg and use it,
> assuming that a network connection to tahoe-lafs.org or
> foolscap.lothar.com is available. Why didn't this work for you?

Probably because I'm working from a git-bridged tree, and all sorts of
setuptoolsy things break routinely for me. When I tried it just now, I
got this:

> 20:war...@host-3-212% python setup.py build
> running darcsver
> setup.py darcsver: using extant version file ['src/allmydata/_version.py']
> running develop
> Not found: tahoe-deps
> running egg_info
> writing requirements to src/allmydata_tahoe.egg-info/requires.txt
> writing src/allmydata_tahoe.egg-info/PKG-INFO
> writing top-level names to src/allmydata_tahoe.egg-info/top_level.txt
> writing dependency_links to src/allmydata_tahoe.egg-info/dependency_links.txt
> writing entry points to src/allmydata_tahoe.egg-info/entry_points.txt
> Failure to get the list of managed files from darcs -- if you are building a 
> package with 'setup.py sdist', 'setup.py bdist_egg', or other 
> package-building commands, then the resulting package might be missing some 
> files.  If you are not building a package then you can ignore this warning.
> reading manifest file 'src/allmydata_tahoe.egg-info/SOURCES.txt'
> writing manifest file 'src/allmydata_tahoe.egg-info/SOURCES.txt'
> running build_ext
> error: 
> /Users/warner2/stuff/tahoe/tahoe-git-hanford/setuptools-0.6c16dev2.egg/setuptools/site-patch.py:
>  No such file or directory

It may be that I have something stale in my tree, or I deleted something
out of frustration. I note that I see both setuptools-0.6c16dev2.egg and
setuptools-0.6c16dev3.egg directories at the top level of my tree.

(ah, deleting the dev2 .egg directory allows 'setup.py build' to
proceed, and it cheerfully downloaded something labeled "foolscap" from
my friendly local MitM and ran it, and now ./bin/tahoe works again.
Yay! :-)

> (This might not be what people who prefer their OS package manager to
> handle dependencies would like, but it isn't an incompatible change,
> when it works.)

Yeah. It's a bit of a drag that the 'setup.py build' step is necessary
at random intervals, but the overall feedback path isn't too bad: "if
you see a VersionConflict exception, run 'setup.py build' and try
again".

thanks,
 -Brian
___
tahoe-dev mailing list
tahoe-dev@tahoe-lafs.org
http://tahoe-lafs.org/cgi-bin/mailman/listinfo/tahoe-dev


Re: [tahoe-dev] new foolscap version requirement

2011-01-05 Thread David-Sarah Hopwood
On 2011-01-05 18:48, Brian Warner wrote:
> 
>> Author: david-sarah 
>> Date:   Thu Dec 30 22:00:39 2010 -0800
>>
>> Update foolscap version requirement to 0.6.0, to address
>> http://foolscap.lothar.com/trac/ticket/167
>>
>> -  "foolscap[secure_connections] >= 0.5.1",
>> +  # foolscap < 0.6 is incompatible with Twisted 10.2.0.
>> +  "foolscap[secure_connections] >= 0.6.0",
> 
> Sigh. While I understand the utility of this change, and I'm not sure I
> could suggest something better, it makes me sad, because we don't
> actually need the newer foolscap most of the time. Very few people are
> using Twisted-10.2 right now, because it's only been out for a month, so
> it's not in any linux/bsd distributions: the only way to get it is to
> install it yourself (or if tahoe's "setup.py build" decides to fetch
> it), and in that case you're probably also installing foolscap yourself.

Unfortunately, there is no way that I know of to declare a conditional
dependency on 'foolscap[secure_connections] >= 0.6.0' if the version of
Twisted we are using is 10.2. All of the requirements need to be specified
at once, and then setuptools will do its thing (which may or may not
satisfy the dependencies). I am not defending setuptools; I think we need
to get rid of it post-haste (but not in a point release).

The alternative would be to declare the Twisted dependency as excluding
10.2.

> But for everyone else, this introduces a needless incompatibility. For
> example, the folks running on the current Ubuntu long-term support
> release ("Lucid") get twisted-10.0 and foolscap-0.5.1, which Tahoe
> handled just fine a few days ago. My local development tree just stopped
> working after pulling the change, because I've got twisted-10.1 and
> foolscap-0.5.1 .

'setup.py build' should download a foolscap 0.6.0 egg and use it, assuming
that a network connection to tahoe-lafs.org or foolscap.lothar.com is
available. Why didn't this work for you?

(This might not be what people who prefer their OS package manager to handle
dependencies would like, but it isn't an incompatible change, when it works.)

-- 
David-Sarah Hopwood  ⚥  http://davidsarah.livejournal.com



signature.asc
Description: OpenPGP digital signature
___
tahoe-dev mailing list
tahoe-dev@tahoe-lafs.org
http://tahoe-lafs.org/cgi-bin/mailman/listinfo/tahoe-dev