[lldb-dev] check-lldb will start using in-tree clang by default

Zachary Turner via lldb-dev lldb-dev at lists.llvm.org
Fri Oct 27 13:28:01 PDT 2017


Maybe make it a dependency of the `check-lldb` target instead of the `lldb`
target?

On Fri, Oct 27, 2017 at 1:26 PM Davide Italiano <dccitaliano at gmail.com>
wrote:

> I'm testing with the following change.
> Should I shove the dependency instead in test/CmakeLists.txt ?
>
> $ git diff HEAD
> diff --git a/CMakeLists.txt b/CMakeLists.txt
> index c6b082e..b6d24f8 100644
> --- a/CMakeLists.txt
> +++ b/CMakeLists.txt
> @@ -65,6 +65,7 @@ if(LLDB_INCLUDE_TESTS)
>    if (TARGET clang)
>      set(LLDB_DEFAULT_TEST_C_COMPILER
> "${LLVM_BINARY_DIR}/bin/clang${CMAKE_EXECUTABLE_SUFFIX}")
>      set(LLDB_DEFAULT_TEST_CXX_COMPILER
> "${LLVM_BINARY_DIR}/bin/clang++${CMAKE_EXECUTABLE_SUFFIX}")
> +    add_dependencies(lldb clang)
>    else()
>      set(LLDB_DEFAULT_TEST_C_COMPILER "")
>      set(LLDB_DEFAULT_TEST_CXX_COMPILER "")
>
> Thanks!
>
> --
> Davide
>
> On Fri, Oct 27, 2017 at 1:16 PM, Zachary Turner <zturner at google.com>
> wrote:
> > Agree we should just build clang as a dependency.  We're already building
> > most of it anyway since we require it for the expression parser, so
> spitting
> > out the executabatle as well should not be too controversial.
> >
> > On Fri, Oct 27, 2017 at 12:58 PM Davide Italiano via lldb-dev
> > <lldb-dev at lists.llvm.org> wrote:
> >>
> >> Mind if I try to write a patch for this one or you want to do it?
> >>
> >> On Fri, Oct 27, 2017 at 12:56 PM, Pavel Labath <labath at google.com>
> wrote:
> >> > Yes, listing clang as a dependency sounds like a good idea.
> >> >
> >> > On 27 October 2017 at 12:45, Davide Italiano <dccitaliano at gmail.com>
> >> > wrote:
> >> >> So, I wiped out my directory for the build and then I created it
> again
> >> >> using
> >> >> cmake -GNinja ../
> >> >>
> >> >> I found out what the bug/problem is, BTW (was going to reply to this
> >> >> e-mail but you've beaten me to the punch).
> >> >> You switched LLDB to build with an in-tree clang, but ninja
> check-lldb
> >> >> doesn't really require clang to be built.
> >> >> As such, once I cleaned up my checkout, I ended up typing just `ninja
> >> >> check-lldb` and that failed because clang wasn't built.
> >> >> I claim that `ninja check-lldb` should list clang as dependency when
> >> >> we're running the tests with the in-tree clang.
> >> >> WDYT?
> >> >>
> >> >> Thanks!
> >> >>
> >> >> --
> >> >> Davide
> >> >>
> >> >>
> >> >>
> >> >> On Fri, Oct 27, 2017 at 12:41 PM, Pavel Labath <labath at google.com>
> >> >> wrote:
> >> >>> Did you clean your cmake cache before runinng this? Does
> >> >>> '/home/davide/work/build-lldb/bin/clang' correctly refer to a clang
> >> >>> binary you just built?
> >> >>>
> >> >>> On 27 October 2017 at 12:39, Davide Italiano <dccitaliano at gmail.com
> >
> >> >>> wrote:
> >> >>>> Yes, it seems `configuration.compiler` is None, so this explodes:
> >> >>>>
> >> >>>> [...]
> >> >>>>         if not is_exe(configuration.compiler):
> >> >>>>
> >> >>>> [...]
> >> >>>>
> >> >>>> On Fri, Oct 27, 2017 at 12:37 PM, Davide Italiano
> >> >>>> <dccitaliano at gmail.com> wrote:
> >> >>>>> I think that this change (or some change nearby) broke
> `check-lldb`
> >> >>>>> on Fedora.
> >> >>>>>
> >> >>>>> I'm investigating, but in the meanwhile, here's the log.
> >> >>>>>
> >> >>>>> $ ninja check-lldb
> >> >>>>> [2/2] Testing LLDB (parallel execution, with a separate subprocess
> >> >>>>> per test)
> >> >>>>> Traceback (most recent call last):
> >> >>>>>   File "/home/davide/work/llvm-lldb/tools/lldb/test/dotest.py",
> line
> >> >>>>> 7, in <module>
> >> >>>>>     lldbsuite.test.run_suite()
> >> >>>>>   File
> >> >>>>>
> "/home/davide/work/llvm-lldb/tools/lldb/packages/Python/lldbsuite/test/dotest.py",
> >> >>>>> line 1099, in run_suite
> >> >>>>>     parseOptionsAndInitTestdirs()
> >> >>>>>   File
> >> >>>>>
> "/home/davide/work/llvm-lldb/tools/lldb/packages/Python/lldbsuite/test/dotest.py",
> >> >>>>> line 282, in parseOptionsAndInitTestdirs
> >> >>>>>     if not is_exe(configuration.compiler):
> >> >>>>>   File
> >> >>>>>
> "/home/davide/work/llvm-lldb/tools/lldb/packages/Python/lldbsuite/test/dotest.py",
> >> >>>>> line 54, in is_exe
> >> >>>>>     return os.path.isfile(fpath) and os.access(fpath, os.X_OK)
> >> >>>>>   File "/usr/lib64/python2.7/genericpath.py", line 37, in isfile
> >> >>>>>     st = os.stat(path)
> >> >>>>> TypeError: coercing to Unicode: need string or buffer, NoneType
> >> >>>>> found
> >> >>>>> FAILED: cd /home/davide/work/build-lldb/tools/lldb/test &&
> >> >>>>> /usr/bin/python2.7
> >> >>>>> /home/davide/work/llvm-lldb/tools/lldb/test/dotest.py -q
> >> >>>>> --arch=x86_64
> >> >>>>> --executable /home/davide/work/build-lldb/bin/lldb -s
> >> >>>>> /home/davide/work/build-lldb/lldb-test-traces -S nm -u CXXFLAGS -u
> >> >>>>> CFLAGS -C /home/davide/work/build-lldb/bin/clang --env
> >> >>>>> ARCHIVER=/usr/bin/ar --env OBJCOPY=/usr/bin/objcopy
> >> >>>>> ninja: build stopped: subcommand failed.
> >> >>>>>
> >> >>>>> On Thu, Oct 26, 2017 at 7:18 PM, Pavel Labath via lldb-dev
> >> >>>>> <lldb-dev at lists.llvm.org> wrote:
> >> >>>>>> I am going to check in a change (D39215) which causes the
> >> >>>>>> check-lldb
> >> >>>>>> target to use the just-built clang for compiling the test
> inferiors
> >> >>>>>> (instead of the system compiler, which was the old default). The
> >> >>>>>> main
> >> >>>>>> reason for this is to provide better reproducibility of test
> >> >>>>>> results
> >> >>>>>> between different machines/developers, by removing one of the
> main
> >> >>>>>> sources of nondeterminism. This behavior can be overridden by
> >> >>>>>> setting
> >> >>>>>> the LLDB_TEST_C_COMPILER and LLDB_TEST_CXX_COMPILER cmake
> >> >>>>>> variables.
> >> >>>>>>
> >> >>>>>> For the change to take effect you will need to clean your build
> >> >>>>>> folder
> >> >>>>>> (or at least, remove the affected variables from your
> >> >>>>>> CMakeCache.txt).
> >> >>>>>> After this you may observe a change in the test results from the
> >> >>>>>> check-lldb run.
> >> >>>>>>
> >> >>>>>> Note that this change only affect cmake code -- if you run your
> >> >>>>>> tests
> >> >>>>>> by running dotest.py directly, nothing will change for you.
> >> >>>>>>
> >> >>>>>> regards,
> >> >>>>>> pavel
> >> >>>>>> _______________________________________________
> >> >>>>>> lldb-dev mailing list
> >> >>>>>> lldb-dev at lists.llvm.org
> >> >>>>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
> >> _______________________________________________
> >> lldb-dev mailing list
> >> lldb-dev at lists.llvm.org
> >> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-dev
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-dev/attachments/20171027/fc7eed24/attachment-0001.html>


More information about the lldb-dev mailing list