tfiala added a comment.

In http://reviews.llvm.org/D13880#271483, @tfiala wrote:

> In http://reviews.llvm.org/D13880#270742, @zturner wrote:
>
> > Todd, do you have any good ideas on how to organize this and make it play 
> > nicely with python's module / package system?  `dotest` is just an 
> > arbitrary script under lldb/test and is not part of any installed package 
> > or anything.  At the same time, third party code needs to be in a 
> > centralized place at the top-level in case it needs to be tracked or 
> > audited by legal people.  So I don't think we can put six under `test` (nor 
> > would it even make sense to, since that wouldn't help people under 
> > lldb/scripts who also want to use it).
> >
> > So somehow `lldb/scripts` and `lldb/test` both need to be able to import 
> > from `lldb/third_party/Python/modules`.
> >
> > I know this isn't really the "pythonic" way, because it expects everything 
> > to be nicely organized packages with a nice hierarchy, but dotest is 
> > treated as a one-off script.  I don't really want people to have to install 
> > `six` via setuptools or anything because it just adds an unnecessary extra 
> > step which is a regression from the status quo.
> >
> > Do absolute imports help us?  
> > (https://docs.python.org/2.5/whatsnew/pep-328.html)
> >
> > I think this question speaks to a more general problem of: "How do we 
> > re-use python code across tests and scripts?"  Do you have any suggestions 
> > that can make this work cleanly?
>
>
> Hmm, registering that I see the question.  I need to think about it.
>
> Generally I have an upper level script (such as dotest.py in our case) that 
> gets called directly, and adds paths relative to its script directory to set 
> up all the other bits it needs to find.  One example of where I do this in 
> lldb is a util that probably nobody else uses, 
> utils/sync-source/syncsource.py.  It imports os and sys, and from that, 
> bootstraps its sys.path (PYTHONPATH) by adding the script-file-relative lib 
> dir to the python path.
>
> So the technique is find an anchor point (in the case above, dotest.py) and 
> have it add the script-relative path to the python path.
>
> I do the same thing to adjust the pylint .pylintrc python path, so that 
> pylint can find not only the lldbtest path, but also the lldb module 
> executable (via lldb[.exe] -P).


That example would be in test/lldb_pylint_helper.py (which also documents how 
to use it to adjust your global pylintrc to make this all work, which becomes a 
bootstrap process much like what I think you're asking about here, albeit in 
the context of getting the python path setup for pylint rather than for the 
file itself --- but each file could have a little loader that does something 
like that).

> Not sure if that helps?



http://reviews.llvm.org/D13880



_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to