Ticket #158: pkgcore-0.4.3-rsync-proxy.3.patch

File pkgcore-0.4.3-rsync-proxy.3.patch, 2.4 KB (added by Ford_Prefect, 2 years ago)

patch against pkgcore-0.4.3 to enable proxy support for rsync (feedback from ferringb incorporated)

  • pkgcore/ebuild/portage_conf.py

    diff -urNp pkgcore-0.4.3-orig/pkgcore/ebuild/portage_conf.py pkgcore-0.4.3/pkgcore/ebuild/portage_conf.py
    old new  
    125125    if timeout is not None: 
    126126        base['timeout'] = timeout.strip() 
    127127 
     128    proxy = options.pop('RSYNC_PROXY', None) 
     129    if proxy is not None: 
     130        base['proxy'] = proxy.strip() 
     131 
    128132    excludes = options.pop('RSYNC_EXCLUDEFROM', None) 
    129133    if excludes is not None: 
    130134        extra_opts.extend('--exclude-from=%s' % x 
  • pkgcore/sync/rsync.py

    diff -urNp pkgcore-0.4.3-orig/pkgcore/sync/rsync.py pkgcore-0.4.3/pkgcore/sync/rsync.py
    old new  
    4545 
    4646    pkgcore_config_type = ConfigHint({'basedir':'str', 'uri':'str', 
    4747        'timeout':'str', 'compress':'bool', 'excludes':'list', 
    48         'includes':'list', 'retries':'str', 'extra_opts':'list'}, 
     48        'includes':'list', 'retries':'str', 'extra_opts':'list', 
     49        'proxy':'str'}, 
    4950        typename='syncer') 
    5051 
    5152    def __init__(self, basedir, uri, timeout=default_timeout, 
    5253        compress=False, excludes=(), includes=(), 
    53         retries=default_retries, 
     54        retries=default_retries, proxy=None, 
    5455        extra_opts=[]): 
    5556 
    5657        uri = uri.rstrip(os.path.sep) + os.path.sep 
     
    6768        self.excludes = list(self.default_excludes) + list(excludes) 
    6869        self.includes = list(self.default_includes) + list(includes) 
    6970        self.retries = int(retries) 
     71        self.use_proxy = proxy is not None 
     72        if self.use_proxy: 
     73            self.sets_env = True 
     74            self.env = {'RSYNC_PROXY':proxy} 
    7075        self.is_ipv6 = "--ipv6" in self.opts or "-6" in self.opts 
    7176        self.is_ipv6 = self.is_ipv6 and socket.has_ipv6 
    7277 
     
    7580        return uri[len("rsync://"):].split("@", 1)[-1].split("/", 1)[0] 
    7681 
    7782    def _get_ips(self): 
     83        if self.use_proxy: 
     84            # If we're using a proxy, name resolution is best left to the proxy 
     85            yield self.hostname 
     86            return 
     87 
    7888        af_fam = socket.AF_INET 
    7989        if self.is_ipv6: 
    8090            af_fam = socket.AF_INET6