Skip to content
Snippets Groups Projects
  1. Jul 15, 2017
  2. Jul 14, 2017
  3. Jul 13, 2017
  4. Jul 12, 2017
    • Vassil Vassilev's avatar
    • Enrico Guiraud's avatar
      [TDF] Fix memory leak in non-jitted actions · 923774f9
      Enrico Guiraud authored
      The shared_ptr-on-the-heap trick is only needed for jitted actions,
      but we were using it for all of them -- forgetting to delete the
      shared_ptr in the non-jitted case.
      
      Now only the code path with jitting makes use of the heap-allocated
      shared_ptr, removing the leak.
      923774f9
    • Raphael Isemann's avatar
      Add ROOTCLING_ targets that allow more parallel rootcling invocations. · a9d16ccc
      Raphael Isemann authored
      So far GENERATE_DICTIONARY depends on all the targets passed to its
      DEPENDENCIES argument. However, this means for some targets not
      only the generation of PCMs, rootmaps etc, but also the linking of
      this target (as for example the target `Hist` generates Hist.pcm
      and then also links libHist.so). We only care about the files
      generated by rootcling when we specify the dependencies here,
      so we can improve build performance here.
      
      This patch creates a new target for each dictionary generation
      command called ROOTCLING_{MODULE} which can be refernced by other
      rootcling invocations to state that they depend on the
      rootcling files (PCMs, rootmap, root-PCMs) of this module, but
      not on a fully built module. We then start checking for each
      dependency passed to GENERATE_DICTIONARY if there is a
      ROOTCLING_MODULE target and depend on this if possible.
      
      This should cause that all the rootcling invocations can be
      started earlier and the linking of modules and rootcling
      invocations of its dependencies now run in parallel.
      a9d16ccc
    • Raphael Isemann's avatar
      Add BUILTINS arg to ROOT_GENERATE_DICTIONARY · c6bfed1a
      Raphael Isemann authored
      Right now rootcling doesn't know if the headers depend on a
      target that is provided by a BUILTIN. This patch adds a new
      parameter that allows expressing if thie rootcling invocation
      depends on a certain BUILTIN in a way that is identical to the
      ROOT_LINKER_LIBRARY way of handling this.
      c6bfed1a
    • Raphael Isemann's avatar
      Fixed dependencies between rootcling invocations and linking. · 82ecb5f0
      Raphael Isemann authored
      The naming of the library in the two function calls ROOT_GENERATE_DICTIONARY
      and ROOT_LINKER_LIBRARY was often not matching. This causes that
      ROOT_LINKER_LIBRARY couldn't correctly set its dependencies to the output
      file of ROOT_GENERATE_DICTIONARY and therefore causes race conditions in
      the build system.
      
      Note: We're attached all dependencies to a custom target, and
      NOT to the output files generated by rootcling. This should mitigate
      the race conditions we experience when multiple targets in different
      Make jobs request the same output file as a dependency and then
      suffer from this Make problem that is described here:
      https://cmake.org/Bug/view.php?id=10082
      
      This patch also adds a (commented out) piece of code that can print
      warnings if we don't have a fitting G__*.cxx file for a
      ROOT_LINKER_LIBRARY call. This is sometimes intended, so I didn't
      enable this warning by default. We should enable this code
      by default in the future once we have a way to express if we
      intentionally don't provide the G__*.cxx file when calling
      ROOT_LINKER_LIBRARY.
      82ecb5f0
    • Raphael Isemann's avatar
      Use pid in temp. file names to mitigate race conditions. · b74835ec
      Raphael Isemann authored
      In case CMake spawns multiple instances of a rootcling invocation
      (which can happen as CMake doesn't have a good mechanism for ensuring
      that we only spawn one when using the make build system), we now
      choose process-unique file names for the temporaries to prevent the
      build errors when multiple rootcling invocations try to work
      on the same temporary file.
      
      This isn't a real fix, but as renaming files from temporary to the
      real name is usually FS atomic, this will mitigate any future race
      conditions we have in this problematic part of the building process
      on obscure build systems. Those systems possible don't strictly follow the
      order in which they are supposed to build those targets, so this hopefully
      makes the consequences of any race conditions less intrusive  (e.g. Visual
      Studio also seems to suffer from this problem according to the mailing
      list).
      b74835ec
Loading