[Lldb-commits] [lldb] r323450 - Use test-specific module caches to avoid stale header conflicts

Vedant Kumar via lldb-commits lldb-commits at lists.llvm.org
Thu Jan 25 14:04:02 PST 2018


Green: http://lab.llvm.org:8080/green/view/LLDB/job/lldb-cmake/4760/console <http://lab.llvm.org:8080/green/view/LLDB/job/lldb-cmake/4760/console>

> On Jan 25, 2018, at 1:22 PM, Vedant Kumar <vsk at apple.com> wrote:
> 
> Done, r323467
> 
>> On Jan 25, 2018, at 1:20 PM, Davide Italiano <dccitaliano at gmail.com> wrote:
>> 
>> yes, sure, I think that's the right thing to do.
>> 
>> --
>> Davide
>> 
>> On Thu, Jan 25, 2018 at 1:16 PM, Vedant Kumar <vsk at apple.com> wrote:
>>> We *could* x-fail this test on older OS's, but ISTM that we don't need this
>>> test to printf at all, so let's just remove the #include?
>>> 
>>> vedant
>>> 
>>> On Jan 25, 2018, at 1:14 PM, Vedant Kumar <vsk at apple.com> wrote:
>>> 
>>> The test passes locally, but the cmake job is failing in the exact same way
>>> as the Xcode one. Based on the error, it looks like the compiler invocation
>>> has failed.
>>> 
>>> .. and, aha!, here is the failed invocation:
>>> 
>>> green-dragon-23:non-overlapping-index-variable-i buildslave$ make
>>> MAKE_DSYM=NO MAKE_GMODULES=YES ARCH=x86_64
>>> CC="/Users/buildslave/jenkins/workspace/lldb-cmake/host-compiler/bin/clang-7.0"
>>> /Users/buildslave/jenkins/workspace/lldb-cmake/host-compiler/bin/clang-7.0
>>> -std=c++11 -g -O0 -fno-builtin -arch x86_64
>>> -I/Users/buildslave/jenkins/workspace/lldb-cmake/src/llvm/tools/lldb/packages/Python/lldbsuite/test/make/../../../../../include
>>> -include
>>> /Users/buildslave/jenkins/workspace/lldb-cmake/src/llvm/tools/lldb/packages/Python/lldbsuite/test/make/test_common.h
>>> -I/Users/buildslave/jenkins/workspace/lldb-cmake/src/llvm/tools/lldb/packages/Python/lldbsuite/test/make/
>>> -fno-limit-debug-info   -fmodules -gmodules
>>> -fmodules-cache-path=module-cache --driver-mode=g++ -c -o main.o main.cpp
>>> main.cpp:27:9: error: no matching constructor for initialization of 'Point'
>>>       point(0, 0)
>>>       ^     ~~~~
>>> /usr/include/MacTypes.h:538:8: note: candidate constructor (the implicit
>>> copy constructor) not viable: requires 1 argument, but 2 were provided
>>> struct Point {
>>>      ^
>>> /usr/include/MacTypes.h:538:8: note: candidate constructor (the implicit
>>> move constructor) not viable: requires 1 argument, but 2 were provided
>>> /usr/include/MacTypes.h:538:8: note: candidate constructor (the implicit
>>> default constructor) not viable: requires 0 arguments, but 2 were provided
>>> main.cpp:36:23: error: no member named 'x' in 'Point'
>>>       ptr[i]->point.x = i;
>>>       ~~~~~~~~~~~~~ ^
>>> main.cpp:37:23: error: no member named 'y' in 'Point'
>>>       ptr[i]->point.y = i+1;
>>>       ~~~~~~~~~~~~~ ^
>>> main.cpp:47:77: error: no member named 'x' in 'Point'
>>>           printf("data[%d] = %d (%d, %d)\n", i, ptr[i]->id,
>>> ptr[i]->point.x, ptr[i]->point.y);
>>>                                                             ~~~~~~~~~~~~~
>>> ^
>>> main.cpp:47:94: error: no member named 'y' in 'Point'
>>>           printf("data[%d] = %d (%d, %d)\n", i, ptr[i]->id,
>>> ptr[i]->point.x, ptr[i]->point.y);
>>> 
>>> ~~~~~~~~~~~~~ ^
>>> 5 errors generated.
>>> make: *** [main.o] Error 1
>>> 
>>> It looks like we're picking up "struct Point" from /usr/include/MacTypes.h!
>>> 
>>> vedant
>>> 
>>> On Jan 25, 2018, at 1:02 PM, Vedant Kumar <vsk at apple.com> wrote:
>>> 
>>> Taking a look. It may be another instance of a test not actually running
>>> with -fmodules in the -gmodules configuration.
>>> 
>>> vedant
>>> 
>>> On Jan 25, 2018, at 12:40 PM, Davide Italiano <dccitaliano at gmail.com> wrote:
>>> 
>>> The bot started failing recently, and this commit seems the most likely
>>> culprit.
>>> 
>>> http://lab.llvm.org:8080/green/view/LLDB/job/lldb-xcode/4513/
>>> 
>>> 
>>> Can you please take a look, Vedant?
>>> 
>>> Thanks,
>>> 
>>> --
>>> Davide
>>> 
>>> On Thu, Jan 25, 2018 at 10:01 AM, Vedant Kumar via lldb-commits
>>> <lldb-commits at lists.llvm.org> wrote:
>>> 
>>> Author: vedantk
>>> Date: Thu Jan 25 10:01:27 2018
>>> New Revision: 323450
>>> 
>>> URL: http://llvm.org/viewvc/llvm-project?rev=323450&view=rev
>>> Log:
>>> Use test-specific module caches to avoid stale header conflicts
>>> 
>>> Stale global module caches cause problems for the bots. The modules
>>> become invalid when clang headers are updated by version control, and
>>> tests which use these modules fail to compile, e.g:
>>> 
>>> fatal error: file '.../__stddef_max_align_t.h' has been modified since the
>>> module file '/var/.../Darwin.pcm' was built
>>> note: please rebuild precompiled header '/var/.../Darwin.pcm'
>>> 
>>> Eventually we should transition to having just a single module cache to
>>> speed
>>> tests up. This patch should be just enough to fix the spurious bot failures
>>> due
>>> to stale caches.
>>> 
>>> rdar://36479805, also related to llvm.org/PR36048
>>> 
>>> Differential Revision: https://reviews.llvm.org/D42277
>>> 
>>> Modified:
>>> 
>>> lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-cpp/TestDataFormatterCpp.py
>>> 
>>> lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-globals/TestDataFormatterGlobals.py
>>> 
>>> lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/TestDataFormatterLibcxxList.py
>>> 
>>> lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/vector/TestDataFormatterLibcxxVector.py
>>> 
>>> lldb/trunk/packages/Python/lldbsuite/test/lang/objc/modules-auto-import/Makefile
>>> 
>>> lldb/trunk/packages/Python/lldbsuite/test/lang/objc/modules-auto-import/TestModulesAutoImport.py
>>> 
>>> lldb/trunk/packages/Python/lldbsuite/test/lang/objc/modules-incomplete/Makefile
>>> 
>>> lldb/trunk/packages/Python/lldbsuite/test/lang/objc/modules-incomplete/TestIncompleteModules.py
>>> 
>>> lldb/trunk/packages/Python/lldbsuite/test/lang/objc/modules-inline-functions/Makefile
>>> 
>>> lldb/trunk/packages/Python/lldbsuite/test/lang/objc/modules-inline-functions/TestModulesInlineFunctions.py
>>> lldb/trunk/packages/Python/lldbsuite/test/make/Makefile.rules
>>> 
>>> Modified:
>>> lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-cpp/TestDataFormatterCpp.py
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-cpp/TestDataFormatterCpp.py?rev=323450&r1=323449&r2=323450&view=diff
>>> ==============================================================================
>>> ---
>>> lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-cpp/TestDataFormatterCpp.py
>>> (original)
>>> +++
>>> lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-cpp/TestDataFormatterCpp.py
>>> Thu Jan 25 10:01:27 2018
>>> @@ -26,6 +26,8 @@ class CppDataFormatterTestCase(TestBase)
>>>  @expectedFailureAll(
>>>      oslist=["windows"],
>>>      bugnumber="llvm.org/pr24462: Data formatters have problems on
>>> Windows")
>>> +    @skipIf(debug_info="gmodules",
>>> +            bugnumber="https://bugs.llvm.org/show_bug.cgi?id=36048")
>>>  def test_with_run_command(self):
>>>      """Test that that file and class static variables display
>>> correctly."""
>>>      self.build()
>>> 
>>> Modified:
>>> lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-globals/TestDataFormatterGlobals.py
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-globals/TestDataFormatterGlobals.py?rev=323450&r1=323449&r2=323450&view=diff
>>> ==============================================================================
>>> ---
>>> lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-globals/TestDataFormatterGlobals.py
>>> (original)
>>> +++
>>> lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-globals/TestDataFormatterGlobals.py
>>> Thu Jan 25 10:01:27 2018
>>> @@ -9,6 +9,7 @@ import os
>>> import time
>>> import lldb
>>> from lldbsuite.test.lldbtest import *
>>> +from lldbsuite.test.decorators import *
>>> import lldbsuite.test.lldbutil as lldbutil
>>> 
>>> 
>>> @@ -22,6 +23,8 @@ class GlobalsDataFormatterTestCase(TestB
>>>      # Find the line number to break at.
>>>      self.line = line_number('main.cpp', '// Set break point at this
>>> line.')
>>> 
>>> +    @skipIf(debug_info="gmodules",
>>> +            bugnumber="https://bugs.llvm.org/show_bug.cgi?id=36048")
>>>  def test_with_run_command(self):
>>>      """Test that that file and class static variables display
>>> correctly."""
>>>      self.build()
>>> 
>>> Modified:
>>> lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/TestDataFormatterLibcxxList.py
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/TestDataFormatterLibcxxList.py?rev=323450&r1=323449&r2=323450&view=diff
>>> ==============================================================================
>>> ---
>>> lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/TestDataFormatterLibcxxList.py
>>> (original)
>>> +++
>>> lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/list/TestDataFormatterLibcxxList.py
>>> Thu Jan 25 10:01:27 2018
>>> @@ -31,6 +31,8 @@ class LibcxxListDataFormatterTestCase(Te
>>>                               '// Set fourth break point at this line.')
>>> 
>>>  @add_test_categories(["libc++"])
>>> +    @skipIf(debug_info="gmodules",
>>> +            bugnumber="https://bugs.llvm.org/show_bug.cgi?id=36048")
>>>  def test_with_run_command(self):
>>>      """Test that that file and class static variables display
>>> correctly."""
>>>      self.build()
>>> 
>>> Modified:
>>> lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/vector/TestDataFormatterLibcxxVector.py
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/vector/TestDataFormatterLibcxxVector.py?rev=323450&r1=323449&r2=323450&view=diff
>>> ==============================================================================
>>> ---
>>> lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/vector/TestDataFormatterLibcxxVector.py
>>> (original)
>>> +++
>>> lldb/trunk/packages/Python/lldbsuite/test/functionalities/data-formatter/data-formatter-stl/libcxx/vector/TestDataFormatterLibcxxVector.py
>>> Thu Jan 25 10:01:27 2018
>>> @@ -18,6 +18,8 @@ class LibcxxVectorDataFormatterTestCase(
>>>  mydir = TestBase.compute_mydir(__file__)
>>> 
>>>  @add_test_categories(["libc++"])
>>> +    @skipIf(debug_info="gmodules",
>>> +            bugnumber="https://bugs.llvm.org/show_bug.cgi?id=36048")
>>>  def test_with_run_command(self):
>>>      """Test that that file and class static variables display
>>> correctly."""
>>>      self.build()
>>> 
>>> Modified:
>>> lldb/trunk/packages/Python/lldbsuite/test/lang/objc/modules-auto-import/Makefile
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/lang/objc/modules-auto-import/Makefile?rev=323450&r1=323449&r2=323450&view=diff
>>> ==============================================================================
>>> ---
>>> lldb/trunk/packages/Python/lldbsuite/test/lang/objc/modules-auto-import/Makefile
>>> (original)
>>> +++
>>> lldb/trunk/packages/Python/lldbsuite/test/lang/objc/modules-auto-import/Makefile
>>> Thu Jan 25 10:01:27 2018
>>> @@ -1,6 +1,6 @@
>>> LEVEL = ../../../make
>>> OBJC_SOURCES := main.m
>>> 
>>> -CFLAGS += -fmodules -gmodules -g
>>> +CFLAGS += $(MANDATORY_MODULE_BUILD_CFLAGS)
>>> 
>>> include $(LEVEL)/Makefile.rules
>>> 
>>> Modified:
>>> lldb/trunk/packages/Python/lldbsuite/test/lang/objc/modules-auto-import/TestModulesAutoImport.py
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/lang/objc/modules-auto-import/TestModulesAutoImport.py?rev=323450&r1=323449&r2=323450&view=diff
>>> ==============================================================================
>>> ---
>>> lldb/trunk/packages/Python/lldbsuite/test/lang/objc/modules-auto-import/TestModulesAutoImport.py
>>> (original)
>>> +++
>>> lldb/trunk/packages/Python/lldbsuite/test/lang/objc/modules-auto-import/TestModulesAutoImport.py
>>> Thu Jan 25 10:01:27 2018
>>> @@ -26,7 +26,7 @@ class ObjCModulesAutoImportTestCase(Test
>>>      self.line = line_number('main.m', '// Set breakpoint 0 here.')
>>> 
>>>  @skipUnlessDarwin
>>> -    @skipIf(macos_version=["<", "10.12"])
>>> +    @skipIf(macos_version=["<", "10.12"],
>>> debug_info=no_match(["gmodules"]))
>>>  def test_expr(self):
>>>      self.build()
>>>      exe = self.getBuildArtifact("a.out")
>>> 
>>> Modified:
>>> lldb/trunk/packages/Python/lldbsuite/test/lang/objc/modules-incomplete/Makefile
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/lang/objc/modules-incomplete/Makefile?rev=323450&r1=323449&r2=323450&view=diff
>>> ==============================================================================
>>> ---
>>> lldb/trunk/packages/Python/lldbsuite/test/lang/objc/modules-incomplete/Makefile
>>> (original)
>>> +++
>>> lldb/trunk/packages/Python/lldbsuite/test/lang/objc/modules-incomplete/Makefile
>>> Thu Jan 25 10:01:27 2018
>>> @@ -4,5 +4,5 @@ OBJC_SOURCES := main.m myModule.m
>>> 
>>> include $(LEVEL)/Makefile.rules
>>> 
>>> -CFLAGS += -fmodules -I$(PWD)
>>> +CFLAGS += $(MANDATORY_MODULE_BUILD_CFLAGS) -I$(PWD)
>>> LDFLAGS += -framework Foundation
>>> 
>>> Modified:
>>> lldb/trunk/packages/Python/lldbsuite/test/lang/objc/modules-incomplete/TestIncompleteModules.py
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/lang/objc/modules-incomplete/TestIncompleteModules.py?rev=323450&r1=323449&r2=323450&view=diff
>>> ==============================================================================
>>> ---
>>> lldb/trunk/packages/Python/lldbsuite/test/lang/objc/modules-incomplete/TestIncompleteModules.py
>>> (original)
>>> +++
>>> lldb/trunk/packages/Python/lldbsuite/test/lang/objc/modules-incomplete/TestIncompleteModules.py
>>> Thu Jan 25 10:01:27 2018
>>> @@ -24,7 +24,7 @@ class IncompleteModulesTestCase(TestBase
>>> 
>>>  @skipUnlessDarwin
>>>  @unittest2.expectedFailure("rdar://20416388")
>>> -    @skipIf(macos_version=["<", "10.12"])
>>> +    @skipIf(macos_version=["<", "10.12"],
>>> debug_info=no_match(["gmodules"]))
>>>  def test_expr(self):
>>>      self.build()
>>>      exe = self.getBuildArtifact("a.out")
>>> 
>>> Modified:
>>> lldb/trunk/packages/Python/lldbsuite/test/lang/objc/modules-inline-functions/Makefile
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/lang/objc/modules-inline-functions/Makefile?rev=323450&r1=323449&r2=323450&view=diff
>>> ==============================================================================
>>> ---
>>> lldb/trunk/packages/Python/lldbsuite/test/lang/objc/modules-inline-functions/Makefile
>>> (original)
>>> +++
>>> lldb/trunk/packages/Python/lldbsuite/test/lang/objc/modules-inline-functions/Makefile
>>> Thu Jan 25 10:01:27 2018
>>> @@ -6,4 +6,4 @@ OBJC_SOURCES := main.m
>>> 
>>> include $(LEVEL)/Makefile.rules
>>> 
>>> -CFLAGS += -fmodules -I$(PWD)
>>> +CFLAGS += $(MANDATORY_MODULE_BUILD_CFLAGS) -I$(PWD)
>>> 
>>> Modified:
>>> lldb/trunk/packages/Python/lldbsuite/test/lang/objc/modules-inline-functions/TestModulesInlineFunctions.py
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/lang/objc/modules-inline-functions/TestModulesInlineFunctions.py?rev=323450&r1=323449&r2=323450&view=diff
>>> ==============================================================================
>>> ---
>>> lldb/trunk/packages/Python/lldbsuite/test/lang/objc/modules-inline-functions/TestModulesInlineFunctions.py
>>> (original)
>>> +++
>>> lldb/trunk/packages/Python/lldbsuite/test/lang/objc/modules-inline-functions/TestModulesInlineFunctions.py
>>> Thu Jan 25 10:01:27 2018
>>> @@ -27,7 +27,7 @@ class ModulesInlineFunctionsTestCase(Tes
>>>      self.line = line_number('main.m', '// Set breakpoint here.')
>>> 
>>>  @skipUnlessDarwin
>>> -    @skipIf(macos_version=["<", "10.12"])
>>> +    @skipIf(macos_version=["<", "10.12"],
>>> debug_info=no_match(["gmodules"]))
>>>  def test_expr(self):
>>>      self.build()
>>>      exe = self.getBuildArtifact("a.out")
>>> 
>>> Modified: lldb/trunk/packages/Python/lldbsuite/test/make/Makefile.rules
>>> URL:
>>> http://llvm.org/viewvc/llvm-project/lldb/trunk/packages/Python/lldbsuite/test/make/Makefile.rules?rev=323450&r1=323449&r2=323450&view=diff
>>> ==============================================================================
>>> --- lldb/trunk/packages/Python/lldbsuite/test/make/Makefile.rules (original)
>>> +++ lldb/trunk/packages/Python/lldbsuite/test/make/Makefile.rules Thu Jan 25
>>> 10:01:27 2018
>>> @@ -237,13 +237,15 @@ ifeq "$(MAKE_DWO)" "YES"
>>>     CFLAGS += -gsplit-dwarf
>>> endif
>>> 
>>> +CLANG_MODULE_CACHE_DIR := module-cache
>>> +
>>> +MANDATORY_MODULE_BUILD_CFLAGS := -fmodules -gmodules
>>> -fmodules-cache-path=$(CLANG_MODULE_CACHE_DIR)
>>> +
>>> ifeq "$(MAKE_GMODULES)" "YES"
>>> -       CFLAGS += -fmodules -gmodules
>>> +       CFLAGS += $(MANDATORY_MODULE_BUILD_CFLAGS)
>>> endif
>>> 
>>> -CXXFLAGS += -std=c++11
>>> -# FIXME: C++ modules aren't supported on all platforms.
>>> -CXXFLAGS += $(subst -fmodules,, $(CFLAGS))
>>> +CXXFLAGS += -std=c++11 $(CFLAGS)
>>> LD = $(CC)
>>> LDFLAGS ?= $(CFLAGS)
>>> LDFLAGS += $(LD_EXTRAS) $(ARCH_LDFLAGS)
>>> @@ -636,7 +638,7 @@ endif
>>> dsym:  $(DSYM)
>>> all:   $(EXE) $(DSYM)
>>> clean::
>>> -       $(RM) $(OBJECTS) $(PREREQS) $(PREREQS:.d=.d.tmp) $(DWOS)
>>> $(ARCHIVE_NAME) $(ARCHIVE_OBJECTS)
>>> +       $(RM) -rf $(OBJECTS) $(PREREQS) $(PREREQS:.d=.d.tmp) $(DWOS)
>>> $(ARCHIVE_NAME) $(ARCHIVE_OBJECTS) $(CLANG_MODULE_CACHE_DIR)
>>> ifneq "$(DYLIB_NAME)" ""
>>>     $(RM) -r $(DYLIB_FILENAME).dSYM
>>>     $(RM) $(DYLIB_OBJECTS) $(DYLIB_PREREQS) $(DYLIB_PREREQS:.d=.d.tmp)
>>> $(DYLIB_DWOS) $(DYLIB_FILENAME) $(DYLIB_FILENAME).debug
>>> 
>>> 
>>> _______________________________________________
>>> lldb-commits mailing list
>>> lldb-commits at lists.llvm.org
>>> http://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits
>>> 
>>> 
>>> 
>>> 
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20180125/7e0e9590/attachment-0001.html>


More information about the lldb-commits mailing list