BTW, is your buildbot not just using "ninja check-lldb"?  So far I haven't
been able to reproduce any problems by using ninja check-lldb, but if I
know what command line is being used maybe I can reproduce a failure and
diagnose it.

On Mon, Nov 2, 2015 at 11:51 AM Zachary Turner <ztur...@google.com> wrote:

> The other part of the patch should be in now (r251822).  Can you make sure
> the bot is passing by running the top-level script now?  If not let me know.
>
> On Mon, Nov 2, 2015 at 11:50 AM Pavel Labath <lab...@google.com> wrote:
>
>> It doesn't matter to me which dotest to run, I just want to know what is
>> the "right way". Due to enrico's patch, I couldn't run one dotest, so I
>> switched to another one. Now, with your patch, the other way is also
>> broken. Could you also go through with the other part of your change
>> (reverting enrico's commit), as we are out of ways to run the test suite?
>> (I have now switched back the builtbots to using test/dotest.py).
>>
>> pl
>>
>> On 2 November 2015 at 11:30, Zachary Turner <ztur...@google.com> wrote:
>>
>>> Sorry for the email spam.  I still think the buildbot should run the
>>> version in lldb/test though.  `test` should be a top-level folder, it makes
>>> it easy for people who clone the repo to instantly look and figure out how
>>> our test suite works.  So I think that's the flow that the buildbot should
>>> test.  Developer convenience should come second.
>>>
>>> On Mon, Nov 2, 2015 at 11:28 AM Zachary Turner <ztur...@google.com>
>>> wrote:
>>>
>>>> If you want to have a way to run the test suite without typing a long
>>>> relative path to go into the packages tree, then one thing that might work
>>>> is to make a new file packages/Python/dotest.py.
>>>>
>>>> Then make it a copy of test/dotest.py.  Not real crazy about copying
>>>> code, but let me know what you think about that.
>>>>
>>>> On Mon, Nov 2, 2015 at 11:24 AM Zachary Turner <ztur...@google.com>
>>>> wrote:
>>>>
>>>>> Don't change your buildbot to not use it.  That's an error.
>>>>>  packages/Python/lldbsuite/test/dotest *must* be imported, as it depends 
>>>>> on
>>>>> its __init__.py being run.  If your buildbot doesn't use it anymore, then 
>>>>> I
>>>>> think the patch I just submitted (r251819) will break your buildbot,
>>>>> because I added this code:
>>>>>
>>>>>
>>>>> if __name__ == "__main__":
>>>>>     print(__file__ + " is for use as a module only.  It should not be
>>>>> run as a standalone script.")
>>>>>     sys.exit(-1)
>>>>>
>>>>> to packages/Python/lldbsuite/test/dotest/dotest.py
>>>>>
>>>>> On Mon, Nov 2, 2015 at 11:22 AM Pavel Labath <lab...@google.com>
>>>>> wrote:
>>>>>
>>>>>> BTW, is lldb/test/dotest.py here to stay? I thought it was there just
>>>>>> to avoid breaking anybody who runs dotest directly (instead of ninja
>>>>>> check-lldb), and therefore we will remove it once everybody gets a chance
>>>>>> to migrate (I have already changed our buildbots to not use it).
>>>>>>
>>>>>> Is that correct or I am misunderstanding something?
>>>>>>
>>>>>> pl
>>>>>>
>>>>>>
>>>>>> On 2 November 2015 at 11:11, Zachary Turner via lldb-commits <
>>>>>> lldb-commits@lists.llvm.org> wrote:
>>>>>>
>>>>>>> I looked into this some more, and unfortunately I can't reproduce
>>>>>>> it.  That being said, I'm not convinced this patch fixes anything.  The
>>>>>>> reason is that when you import something, whether it be through the
>>>>>>> `__import__` function or the `import` statement, the module itself is
>>>>>>> cached in `sys.modules`.  Whether the *name* for that module is 
>>>>>>> introduced
>>>>>>> globally (as is done in this patch) or locally (as is done when you use 
>>>>>>> an
>>>>>>> `import` statement) is irrelevant.  Because the next time someone else
>>>>>>> imports it, it will still find the same instance of the module in
>>>>>>> `sys.modules` and just create a new name.  It won't import it anew.
>>>>>>>
>>>>>>> If this patch does actually fix something, I think it must be a
>>>>>>> coincidence.  That said, I do have an idea as to what the problem might
>>>>>>> be.  Or at the very least, I know of a problem that would definitely 
>>>>>>> lead
>>>>>>> to strange behavior.
>>>>>>>
>>>>>>> `lldbsuite` is now a package, and it relies on the code in its
>>>>>>> `__init__.py` being run.  If you run
>>>>>>> `packages/python/lldbsuite/test/dotest.py` manually, then `__init__.py`
>>>>>>> doesn't get run, and `lldbExec` doesn't get initialized properly.
>>>>>>>
>>>>>>> Of course, this isn't what you're doing, but it *is* what `dosep`
>>>>>>> does internally.  `dosep` manually constructs a path to 
>>>>>>> `packages/python/lldbsuite/test/dotest.py`
>>>>>>> and execs it.  I have a patch that fixes this and makes `dosep` exec
>>>>>>> `lldb/test/dotest.py` instead, which will then lead to the package being
>>>>>>> imported, and `__init__.py` being run, and everything being initialized
>>>>>>> properly.
>>>>>>>
>>>>>>> I'm going to commit that patch by itself, and then I will submit a
>>>>>>> followup patch that reverts the change from this patch (since I can't
>>>>>>> reproduce this problem, I can't check whether or not my patch fixes it).
>>>>>>> So if my revert breaks you again, feel free to revert the revert.  
>>>>>>> Although
>>>>>>> if there's any way you can investigate a bit to understand what's going 
>>>>>>> on
>>>>>>> a little bit more, but I would be very grateful.  In particular, I 
>>>>>>> wonder
>>>>>>> about the following things:
>>>>>>>
>>>>>>> 1) When lldbExec is not initialized properly, is this in the same
>>>>>>> process instance that you ran from the command line, or is it in the
>>>>>>> multiprocessing fork?
>>>>>>> 2) If you add code to `lldbsuite/__init__.py` to print the process
>>>>>>> id and the value of `lldb_root`, and then add code in `dotest.py` to 
>>>>>>> print
>>>>>>> the process id and the value of lldbExec, what does the output look 
>>>>>>> like?
>>>>>>>  (Each line should be printed up to twice, due to the multiprocessing 
>>>>>>> fork).
>>>>>>>
>>>>>>> Anyway, I'll get those 2 patches submitted to fix the dosep issue
>>>>>>> and revert this change, and see what happens.
>>>>>>>
>>>>>>> On Fri, Oct 30, 2015 at 1:53 PM Jim Ingham <jing...@apple.com>
>>>>>>> wrote:
>>>>>>>
>>>>>>>> Note, the other important step was that you had to have an lldb
>>>>>>>> installed in /usr/bin/lldb that FAILED this test.  If you have a more
>>>>>>>> recent lldb there, the test will succeed, and you won't notice you 
>>>>>>>> aren't
>>>>>>>> testing your newly built sources.
>>>>>>>>
>>>>>>>> Jim
>>>>>>>>
>>>>>>>> > On Oct 30, 2015, at 1:25 PM, Enrico Granata via lldb-commits <
>>>>>>>> lldb-commits@lists.llvm.org> wrote:
>>>>>>>> >
>>>>>>>> > I think what I was doing is be in lldb/test and do
>>>>>>>> >
>>>>>>>> > $ ./dotest.py
>>>>>>>> ../packages/python/lldbsuite/functionalities/completion
>>>>>>>> >
>>>>>>>> >> On Oct 30, 2015, at 12:22 PM, Zachary Turner <ztur...@google.com>
>>>>>>>> wrote:
>>>>>>>> >>
>>>>>>>> >> Can you give me a command line which will reproduce the original
>>>>>>>> problem?  Because I ran through the entire test suite and nothing 
>>>>>>>> failed,
>>>>>>>> so I want to make sure we're doing the same thing.  I'm still a little
>>>>>>>> confused about how this happens, but I plan to look into it when I'm 
>>>>>>>> back
>>>>>>>> on Monday and see if I can understand it better to identify a better 
>>>>>>>> fix.
>>>>>>>> >>
>>>>>>>> >> On Fri, Oct 30, 2015 at 11:58 AM Enrico Granata <
>>>>>>>> egran...@apple.com> wrote:
>>>>>>>> >>> On Oct 29, 2015, at 11:31 PM, Zachary Turner <
>>>>>>>> ztur...@google.com> wrote:
>>>>>>>> >>>
>>>>>>>> >>> Wow.  That's a weird problem.  Thanks for finding it!
>>>>>>>> >>>
>>>>>>>> >>> Would it work if we move the definition of the
>>>>>>>> `lldbtest_config` class into lldbsuite/test/__init__.py?  This way the
>>>>>>>> configuration should be part of the global package state of the
>>>>>>>> lldbsuite.test package, which all the tests are already members of the 
>>>>>>>> same
>>>>>>>> package, so they wouldn't even need to import anything (I think).
>>>>>>>> >>>
>>>>>>>> >>
>>>>>>>> >> I think the problem is exactly that we want lldbtest_config to
>>>>>>>> be *global* state and not package local state.
>>>>>>>> >> Honestly, I think if we are not content with the fix as it
>>>>>>>> stands, the right way would be to change the way unittest2 imports test
>>>>>>>> cases as to use the package-level global scope instead of the global 
>>>>>>>> global
>>>>>>>> state as it is now.
>>>>>>>> >>
>>>>>>>> >>> On Oct 30, 2015, at 8:32 AM, Zachary Turner <ztur...@google.com>
>>>>>>>> wrote:
>>>>>>>> >>>
>>>>>>>> >>> I'm also still a little confused why this worked before my
>>>>>>>> patch.  How is unittest2 importing the individual tests in a way that
>>>>>>>> behaves differently when dotest is a package (now) versus a standalone
>>>>>>>> script (before)?
>>>>>>>> >>>
>>>>>>>> >>
>>>>>>>> >> That is a good question. One to which “because Python” is the
>>>>>>>> only answer I can think of. I suspect scripts live at the global scope
>>>>>>>> anyway, so we were just getting lucky with those imports making it 
>>>>>>>> through
>>>>>>>> correctly.
>>>>>>>> >>
>>>>>>>> >>> On Thu, Oct 29, 2015 at 6:12 PM Enrico Granata via lldb-commits
>>>>>>>> <lldb-commits@lists.llvm.org> wrote:
>>>>>>>> >>> Author: enrico
>>>>>>>> >>> Date: Thu Oct 29 20:09:54 2015
>>>>>>>> >>> New Revision: 251678
>>>>>>>> >>>
>>>>>>>> >>> URL: http://llvm.org/viewvc/llvm-project?rev=251678&view=rev
>>>>>>>> >>> Log:
>>>>>>>> >>> Some test cases that need the lldbExec path were failing
>>>>>>>> because lldbExec was turning out to be None even though it was being
>>>>>>>> validly set by dotest.py
>>>>>>>> >>>
>>>>>>>> >>> It turns out that lldbtest_config was being imported locally to
>>>>>>>> "lldbsuite.test" instead of globally, so when the test cases got
>>>>>>>> individually brought by a global import via __import__ by unittest2, 
>>>>>>>> they
>>>>>>>> did not see the lldbtest_config import, and ended up importing a new
>>>>>>>> separate copy of it, with lldbExec unset
>>>>>>>> >>>
>>>>>>>> >>> This is a simple hackaround that brings lldbtest_config to
>>>>>>>> global visibility and makes sure the configuration data is correctly 
>>>>>>>> shared
>>>>>>>> >>>
>>>>>>>> >>>
>>>>>>>> >>> Modified:
>>>>>>>> >>>     lldb/trunk/packages/Python/lldbsuite/test/dotest.py
>>>>>>>> >>>
>>>>>>>> >>> Modified: lldb/trunk/packages/Python/lldbsuite/test/dotest.py
>>>>>>>> >>> URL:
>>>>>>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/dotest.py?rev=251678&r1=251677&r2=251678&view=diff
>>>>>>>> >>>
>>>>>>>> ==============================================================================
>>>>>>>> >>> --- lldb/trunk/packages/Python/lldbsuite/test/dotest.py
>>>>>>>> (original)
>>>>>>>> >>> +++ lldb/trunk/packages/Python/lldbsuite/test/dotest.py Thu Oct
>>>>>>>> 29 20:09:54 2015
>>>>>>>> >>> @@ -21,6 +21,10 @@ for available options.
>>>>>>>> >>>  """
>>>>>>>> >>>
>>>>>>>> >>>  from __future__ import print_function
>>>>>>>> >>> +# this module needs to have global visibility, otherwise test
>>>>>>>> cases
>>>>>>>> >>> +# will import it anew in their local namespace, essentially
>>>>>>>> losing access
>>>>>>>> >>> +# to all the configuration data
>>>>>>>> >>> +globals()['lldbtest_config'] = __import__('lldbtest_config')
>>>>>>>> >>>
>>>>>>>> >>>  import use_lldb_suite
>>>>>>>> >>>
>>>>>>>> >>> @@ -42,7 +46,6 @@ import test_results
>>>>>>>> >>>  from test_results import EventBuilder
>>>>>>>> >>>  import inspect
>>>>>>>> >>>  import unittest2
>>>>>>>> >>> -import lldbtest_config
>>>>>>>> >>>  import test_categories
>>>>>>>> >>>
>>>>>>>> >>>  import six
>>>>>>>> >>>
>>>>>>>> >>>
>>>>>>>> >>> _______________________________________________
>>>>>>>> >>> lldb-commits mailing list
>>>>>>>> >>> lldb-commits@lists.llvm.org
>>>>>>>> >>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
>>>>>>>> >>
>>>>>>>> >>
>>>>>>>> >> Thanks,
>>>>>>>> >> - Enrico
>>>>>>>> >> 📩 egranata@.com ☎️ 27683
>>>>>>>> >>
>>>>>>>> >
>>>>>>>> >
>>>>>>>> > Thanks,
>>>>>>>> > - Enrico
>>>>>>>> > 📩 egranata@.com ☎️ 27683
>>>>>>>> >
>>>>>>>> > _______________________________________________
>>>>>>>> > lldb-commits mailing list
>>>>>>>> > lldb-commits@lists.llvm.org
>>>>>>>> > http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
>>>>>>>>
>>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> lldb-commits mailing list
>>>>>>> lldb-commits@lists.llvm.org
>>>>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
>>>>>>>
>>>>>>>
>>>>>>
>>
_______________________________________________
lldb-commits mailing list
lldb-commits@lists.llvm.org
http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to