[tor-bugs] #6810 [Flashproxy]: Reduce code duplication across client programs

Tor Bug Tracker & Wiki blackhole at torproject.org
Thu Sep 26 16:22:29 UTC 2013


#6810: Reduce code duplication across client programs
-----------------------------+--------------------------
     Reporter:  dcf          |      Owner:  dcf
         Type:  enhancement  |     Status:  needs_review
     Priority:  minor        |  Milestone:
    Component:  Flashproxy   |    Version:
   Resolution:               |   Keywords:
Actual Points:               |  Parent ID:
       Points:               |
-----------------------------+--------------------------

Comment (by infinity0):

 Replying to [comment:14 dcf]:
 > We have a `setup.py` in the top level already, only for py2exe purposes.
 I would be fine with adding library installation code to it, if that's
 convenient.

 We would need to have two separate setup.py scripts (e.g setup.py and
 setup-common.py), there is no easy way to have the same script act on two
 distinct source packages. However, I think I have found the appropriate
 solution.

 Replying to [comment:14 dcf]:
 > Having to set PYTHONPATH is annoying but probably tolerable. I would
 rather not have an `init-dev-env` script; let's just document that you
 have to set PYTHONPATH. (The name `init-dev-env` is mostly unknown to
 Google--is there some other name commonly used by other projects?)

 `setuptools` supports installing a package in "development mode"
 http://pythonhosted.org/distribute/setuptools.html#development-mode which
 hardlinks a dummy system lib to the current directory. This process is
 reversible.

 {{{
 flashproxy$ ./flashproxy-client
 Traceback (most recent call last):
   File "./flashproxy-client", line 23, in <module>
     from flashproxy.util import parse_addr_spec, format_addr
 ImportError: No module named flashproxy.util
 1

 flashproxy$ ( cd common/ && sudo python setup.py develop )
 running develop
 [..]
 Creating /usr/local/lib/python2.7/dist-packages/flashproxy-common.egg-link
 (link to .)
 [..]

 flashproxy$ ./flashproxy-client
 2013-09-26 17:18:53 VERSION-ERROR no-version
 VERSION-ERROR no-version

 No TOR_PT_MANAGED_TRANSPORT_VER found in environment.
 If you are running flashproxy-client from the command line and not from
 a ClientTransportPlugin configuration line, you must use the --external
 option.
 1

 flashproxy$ ( cd common/ && sudo python setup.py develop --uninstall )
 running develop
 [..]
 Removing /usr/local/lib/python2.7/dist-packages/flashproxy-common.egg-link
 (link to .)
 [..]

 flashproxy$ ./flashproxy-client
 Traceback (most recent call last):
   File "./flashproxy-client", line 23, in <module>
     from flashproxy.util import parse_addr_spec, format_addr
 ImportError: No module named flashproxy.util
 1
 }}}

 This is even better than setting your environment, because it's persistent
 across shell sessions. The only annoyance is you do have to `cd common`
 first, but I can document this.

-- 
Ticket URL: <https://trac.torproject.org/projects/tor/ticket/6810#comment:16>
Tor Bug Tracker & Wiki <https://trac.torproject.org/>
The Tor Project: anonymity online


More information about the tor-bugs mailing list