[Lldb-commits] [lldb] r251886 - Tighten up sys.path, and use absolute imports everywhere.

Zachary Turner via lldb-commits lldb-commits at lists.llvm.org
Mon Nov 2 22:26:11 PST 2015


Also, one last thing.  The reason this is probably wreaking havoc on your
stuff internally is because I removed scriptDir from sys.path (diff the
changes of dotest.py to see).  I think it should stay removed upstream
(mucking with sys.path so you can import from a parent directory is a bad
thing to do), but if you have a fork it might be worth putting it back into
the fork temporarily to get things green?  Note that technically stuff will
still be "broken" the same way it was before (importing a second copy of a
module), but that only ever leads to an actual problem fi you rely on
global state from the module - which upstream anyway we were only ever
doing for lldbtest_config.

If worse comes to worse we can revert, but if so I think somehow we should
figure out a strategy for getting this back in, because it definitely seems
like "the right way"

On Mon, Nov 2, 2015 at 10:14 PM Zachary Turner <zturner at google.com> wrote:

> Also as far as I can tell, X has to be in the following set: [lldbutil,
> lldbtest, lldbinline, lldbbench].  In theory there are other possibilities
> (any .py file that is in packages/Python/lldbsuite/test is fair game) but I
> don't think I encountered any aside from those 4.
>
> On Mon, Nov 2, 2015 at 10:12 PM Zachary Turner <zturner at google.com> wrote:
>
>> On Mon, Nov 2, 2015 at 10:02 PM Todd Fiala <todd.fiala at gmail.com> wrote:
>>
>>> Do you have a script you used to tweak these?
>>>
>>> (We have a ton of stuff broken internally on this that I need to fix up).
>>>
>>> We're starting to need to do quite a bit of extra typing for the package
>>> structure :-/
>>>
>>
>> No, I just used a recursive regex replacement.  I had to find a few
>> different patterns:
>>
>> from X import foo     # from lldbsuite.test.X import foo
>> import X   # import lldbsuite.test.X as X
>> import foo, X   #import foo\nimport lldbsuite.test.X as X
>>
>> and I handled each one on a case-by-case basis.
>>
>> Luckily the extra typing only comes at the import site.  If you use the
>> syntax I suggested in #2 and #3 above (import lldbsuite.test.X as X) then
>> the syntax at any sites where you use a definition from inside the module
>> are the same.
>>
>> I was a little bit annoyed at the extra typing myself, but when I look
>> into it, it's considered a "feature".  See PEP 0328 - Imports:
>> Multi-Line and Absolute/Relative
>> <https://www.python.org/dev/peps/pep-0328/> and as far as I can tell the
>> way we were doing things before was considered "wrong"  :(
>>
>> How much of a problem is this going to be on your side?  Is there an
>> equally "good" solution that doesn't require so much fixup on your side?
>>
>> the only fixup I encountered was in individual test cases and test suites
>> (i.e. files that are loaded by unittest2).  Does this account for all the
>> test failures on your side as well, or is there something else going on I
>> missed?
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20151103/cc48de99/attachment.html>


More information about the lldb-commits mailing list