From 585147100908b9c6e0c98dbe000e4d902e124f98 Mon Sep 17 00:00:00 2001 From: holger krekel Date: Fri, 4 Sep 2009 16:51:29 +0200 Subject: [PATCH] fix remaining execnet 3k issues until all tests pass --HG-- branch : trunk --- py/__init__.py | 1 + py/execnet/gwmanage.py | 21 +++++++++++---------- py/execnet/rsync.py | 5 +---- py/execnet/rsync_remote.py | 8 ++++++-- py/execnet/testing/test_rsync.py | 2 +- 5 files changed, 20 insertions(+), 17 deletions(-) diff --git a/py/__init__.py b/py/__init__.py index afd45843f..c8f21a038 100644 --- a/py/__init__.py +++ b/py/__init__.py @@ -147,6 +147,7 @@ initpkg(__name__, 'builtin.print_' : ('./builtin/builtin31.py', 'print_'), 'builtin._reraise' : ('./builtin/builtin31.py', '_reraise'), 'builtin.exec_' : ('./builtin/builtin31.py', 'exec_'), + 'builtin.intern' : ('./builtin/builtin31.py', 'intern'), 'builtin._basestring' : ('./builtin/builtin31.py', '_basestring'), 'builtin._totext' : ('./builtin/builtin31.py', '_totext'), 'builtin._isbytes' : ('./builtin/builtin31.py', '_isbytes'), diff --git a/py/execnet/gwmanage.py b/py/execnet/gwmanage.py index 4d1bbe1d9..d67431ed4 100644 --- a/py/execnet/gwmanage.py +++ b/py/execnet/gwmanage.py @@ -63,26 +63,27 @@ class GatewayManager: """ perform rsync to all remote hosts. """ rsync = HostRSync(source, verbose=verbose, ignores=ignores) - seen = {} + seen = py.builtin.set() + gateways = [] for gateway in self.gateways: spec = gateway.spec if not spec._samefilesystem(): - if spec in seen: - continue - def finished(): - if notify: - notify("rsyncrootready", spec, source) - rsync.add_target_host(gateway, finished=finished) - seen[spec] = gateway + if spec not in seen: + def finished(): + if notify: + notify("rsyncrootready", spec, source) + rsync.add_target_host(gateway, finished=finished) + seen.add(spec) + gateways.append(gateway) if seen: self.hook.pyexecnet_gwmanage_rsyncstart( source=source, - gateways=seen.values(), + gateways=gateways, ) rsync.send() self.hook.pyexecnet_gwmanage_rsyncfinish( source=source, - gateways=seen.values() + gateways=gateways, ) def exit(self): diff --git a/py/execnet/rsync.py b/py/execnet/rsync.py index fba9692f2..9c80fe99e 100644 --- a/py/execnet/rsync.py +++ b/py/execnet/rsync.py @@ -83,9 +83,6 @@ class RSync(object): if checksum is not None and checksum == md5(data).digest(): data = None # not really modified else: - # ! there is a reason for the interning: - # sharing multiple copies of the file's data - data = intern(data) self._report_send_file(channel.gateway, modified_rel_path) channel.send(data) @@ -140,7 +137,7 @@ class RSync(object): """ Adds a remote target specified via a 'gateway' and a remote destination directory. """ - assert finishedcallback is None or callable(finishedcallback) + assert finishedcallback is None or py.builtin.callable(finishedcallback) for name in options: assert name in ('delete',) def itemcallback(req): diff --git a/py/execnet/rsync_remote.py b/py/execnet/rsync_remote.py index 9b5a15571..ea08f8150 100644 --- a/py/execnet/rsync_remote.py +++ b/py/execnet/rsync_remote.py @@ -1,6 +1,10 @@ def f(): - import os, stat, shutil, md5 + import os, stat, shutil + try: + from hashlib import md5 + except ImportError: + from md5 import md5 destdir, options = channel.receive() modifiedfiles = [] @@ -43,7 +47,7 @@ def f(): pass elif msg_mtime != st.st_mtime: f = open(path, 'rb') - checksum = md5.md5(f.read()).digest() + checksum = md5(f.read()).digest() f.close() else: return # already fine diff --git a/py/execnet/testing/test_rsync.py b/py/execnet/testing/test_rsync.py index 536e02bfc..1da39c74f 100644 --- a/py/execnet/testing/test_rsync.py +++ b/py/execnet/testing/test_rsync.py @@ -13,7 +13,7 @@ def teardown_module(mod): class DirSetup: def setup_method(self, method): - name = "%s.%s" %(self.__class__.__name__, method.func_name) + name = "%s.%s" %(self.__class__.__name__, method.__name__) self.tmpdir = t = py.test.ensuretemp(name) self.source = t.join("source") self.dest1 = t.join("dest1")