[PATCH] D68863: [LNT] Python 3 support: don't assume order of cmake args

Thomas Preud'homme via Phabricator via llvm-commits llvm-commits at lists.llvm.org
Thu Dec 12 03:04:57 PST 2019


thopre added inline comments.


================
Comment at: tests/runtest/test_suite-cache.shtest:18
+# RUN: FileCheck  --check-prefix CHECK-CACHE1 < %t.cmake-cache.log %s
+# CHECK-CACHE1: Execute: {{.*}}cmake {{(.+ )?}}-DCMAKE_CXX_COMPILER:FILEPATH={{.*}}/FakeCompilers/clang++-r154331
+# RUN: FileCheck  --check-prefix CHECK-CACHE2 < %t.cmake-cache.log %s
----------------
rogfer01 wrote:
> thopre wrote:
> > rogfer01 wrote:
> > > My reading from this
> > > 
> > > ```lang=python
> > > for key in ['CMAKE_C_COMPILER:FILEPATH',                          
> > >             'CMAKE_CXX_COMPILER:FILEPATH']:                       
> > >     value = defs.pop(key, None)                                   
> > >     if value is not None:                                         
> > >         early_defs[key] = value                                   
> > >                                                                   
> > > cmake_cmd = ([cmake_cmd] +                                        
> > >              ['-D%s=%s' % (k, v) for k, v in early_defs.items()] +
> > >              cmake_flags + [self._test_suite_dir()] +             
> > >              ['-D%s=%s' % (k, v) for k, v in defs.items()])       
> > > ```
> > > 
> > > is that we may still want to check that the compilers and the cache appear in the specific order (right after the `cmake`). 
> > > 
> > > The other ones, whose order is unpredictable, (`-DFOO=BAR`, `-DBAR=BAZ`) we do want to check them individually,
> > > 
> > > Does this make sense?
> > It does, good catch! How about now?
> Would it be possible to ensure the `-C flag` does appear right after the compilers?
> 
> It occurs to me that either we make Python 2 deterministic here using an `OrderedDict` for `early_defs` (and then we can write a simples check: first C, then CXX, then the cache file) or we write a check like the one below (untested!) where we allow any order and then the cache file
> 
> ```
> # We allow compilers in either order for Python 2 compat
> # CHECK-CACHE1: Execute: {{.*}}cmake {{(-DCMAKE_CXX_COMPILER:FILEPATH=.*/FakeCompilers/clang\+\+-r154331 -DCMAKE_C_COMPILER:FILEPATH=.*/FakeCompilers/clang-r154331 )|(-DCMAKE_C_COMPILER:FILEPATH=.*/FakeCompilers/clang-r154331 -DCMAKE_CXX_COMPILER:FILEPATH=.*/FakeCompilers/clang\+\+-r154331 )}} -C {{.*}}/Release.cmake
> ```
> 
> (cmake documentation does not seem clear to me regarding the positional behaviour of `-C` and `-D` but I imagine `early_defs` exists for a reason)
Oh I see, early_defs, then cmake_flags (which includes -C option), then test_suite_dir then macro definitions.


CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D68863/new/

https://reviews.llvm.org/D68863





More information about the llvm-commits mailing list