Project

General

Profile

Bug #20240

OSX builds take an extraordinary amount of time (companion to issue 20079)

Added by Tracy Usher over 1 year ago. Updated 8 months ago.

Status:
Assigned
Priority:
Normal
Assignee:
Target version:
-
Start date:
06/28/2018
Due date:
% Done:

0%

Estimated time:
20.00 h
Scope:
Internal
Experiment:
-
SSI Package:
Co-Assignees:
Duration:

Description

This is related to issue 20079[https://cdcvs.fnal.gov/redmine/issues/20079] but is during the running of cmake to build the makefiles. Again, this step takes a large amount of time and after some investigation it seems due to searching for dependent packages. This gets triggered for every "find_ups_package" listed in the top level CMakeLists file of a larsoft package.

On OSX it appears that if you include a high level package (e.g. larreco) then for some reason include paths to header files in its dependent packages are not included in the top level package being set up. It seems that one needs to specify a "find_ups_package" for every package that will be used by the one being set up (which seems a bit counterintuitive... was it always this way and is this intended?). This means one ends up specifying a number of "find_ups_package"'s in the CMakeLists file, and this means searching for a lot of dependent packages.

The next thing noticed is that the code does not seem to remember when it has already found a dependent package and so initiates a search each time it sees a package. For whatever reason, this searching process is not especially rapid on OSX, taking several seconds per package.

I found the CMake macro definitions for find_ups_product and also for finding root, I inserted a few "message" statements just to watch what was happening. Below is an example of the setup for a single package in my develop area.

I'm wondering if there is anything that can be done to optimize this... The specific problem I'm having now is in getting a build on my laptop of the new split uboonecode area which is something like 13 packages now. Just executing the cmake step takes a long time, in particular given that it seems I need to keep adding "find_ups_product" statements to the CMakeLists files to get the build to work.

A final note - the new split uboonecode builds fine on linux so the behavior noted above regarding dependent packages appears to not be consistent with the OSX builds.

-- Entering find_ups_product looking for sqlite
-- Done finding ups product
-- Entering find_ups_product looking for cetlib_except
-- Done finding ups product
-- Done finding ups product
-- Entering find_ups_product looking for sqlite
-- Done finding ups product
-- Entering find_ups_product looking for fhiclcpp
-- Entering find_ups_product looking for cetlib_except
-- Done finding ups product
-- Entering find_ups_product looking for cetlib
-- Done finding ups product
-- Entering find_ups_product looking for sqlite
-- Done finding ups product
-- Entering find_ups_product looking for python
-- Done finding ups product
-- Done finding ups product
-- Entering find_ups_product looking for python
-- Done finding ups product
-- Entering find_ups_product looking for messagefacility
-- Entering find_ups_product looking for cetlib_except
-- Done finding ups product
-- Entering find_ups_product looking for cetlib
-- Done finding ups product
-- Entering find_ups_product looking for sqlite
-- Done finding ups product
-- Entering find_ups_product looking for fhiclcpp
-- Done finding ups product
-- Entering find_ups_product looking for python
-- Done finding ups product
-- Entering find_ups_product looking for hep_concurrency
-- Entering find_ups_product looking for cppunit
-- Done finding ups product
-- Entering find_ups_product looking for tbb
-- Done finding ups product
-- Done finding ups product
-- Entering find_ups_product looking for cppunit
-- Done finding ups product
-- Entering find_ups_product looking for tbb
-- Done finding ups product
-- Done finding ups product
-- Entering find_ups_product looking for hep_concurrency
-- Done finding ups product
-- Entering find_ups_product looking for tbb
-- Done finding ups product
-- Entering find_ups_product looking for range
-- Done finding ups product
-- Done finding ups product
-- Entering find_ups_product looking for cppunit
-- Done finding ups product
-- Entering find_ups_product looking for clhep
-- Done finding ups product
-- Entering find_ups_product looking for cetlib_except
-- Done finding ups product
-- Entering find_ups_product looking for cetlib
-- Done finding ups product
-- Entering find_ups_product looking for sqlite
-- Done finding ups product
-- Entering find_ups_product looking for fhiclcpp
-- Done finding ups product
-- Entering find_ups_product looking for python
-- Done finding ups product
-- Entering find_ups_product looking for messagefacility
-- Done finding ups product
-- Entering find_ups_product looking for hep_concurrency
-- Done finding ups product
-- Entering find_ups_product looking for tbb
-- Done finding ups product
-- Entering find_ups_product looking for range
-- Done finding ups product
-- Entering find_ups_product looking for larcoreobj
-- Entering find_ups_product looking for canvas
-- Done finding ups product
-- Entering find_ups_product looking for cppunit
-- Done finding ups product
-- Entering find_ups_product looking for clhep
-- Done finding ups product
-- Entering find_ups_product looking for cetlib_except
-- Done finding ups product
-- Entering find_ups_product looking for cetlib
-- Done finding ups product
-- Entering find_ups_product looking for sqlite
-- Done finding ups product
-- Entering find_ups_product looking for fhiclcpp
-- Done finding ups product
-- Entering find_ups_product looking for python
-- Done finding ups product
-- Entering find_ups_product looking for messagefacility
-- Done finding ups product
-- Entering find_ups_product looking for hep_concurrency
-- Done finding ups product
-- Entering find_ups_product looking for tbb
-- Done finding ups product
-- Entering find_ups_product looking for range
-- Done finding ups product
-- Beginning macro to look for root
-- Looking for version
-- Checking for unparsed arguments
-- Matching root string root v6_12_06a f Darwin64bit+17 -z /LArSoft/Products -q c2:debug
-
find_ups_root: ROOT version and qualifier are v6_12_06a c2:debug
-- qualifer: c2, inc:
-- calling set root lib vars
-- calling check prog for genreflex
-- Now check the ups version
-- defining the rootcint executable
-- exiting macro
-- Done finding ups product
-- Beginning macro to look for root
-- exiting macro
-- Done finding ups product
-- Entering find_ups_product looking for larcoreobj
-- Done finding ups product
-- Entering find_ups_product looking for lardataobj
-- Entering find_ups_product looking for canvas
-- Done finding ups product
-- Entering find_ups_product looking for cppunit
-- Done finding ups product
-- Entering find_ups_product looking for clhep
-- Done finding ups product
-- Entering find_ups_product looking for cetlib_except
-- Done finding ups product
-- Entering find_ups_product looking for cetlib
-- Done finding ups product
-- Entering find_ups_product looking for sqlite
-- Done finding ups product
-- Entering find_ups_product looking for fhiclcpp
-- Done finding ups product
-- Entering find_ups_product looking for python
-- Done finding ups product
-- Entering find_ups_product looking for messagefacility
-- Done finding ups product
-- Entering find_ups_product looking for hep_concurrency
-- Done finding ups product
-- Entering find_ups_product looking for tbb
-- Done finding ups product
-- Entering find_ups_product looking for range
-- Done finding ups product
-- Entering find_ups_product looking for larcoreobj
-- Done finding ups product
-- Beginning macro to look for root
-- exiting macro
-- Entering find_ups_product looking for nusimdata
-- Entering find_ups_product looking for canvas
-- Done finding ups product
-- Entering find_ups_product looking for cppunit
-- Done finding ups product
-- Entering find_ups_product looking for clhep
-- Done finding ups product
-- Entering find_ups_product looking for cetlib_except
-- Done finding ups product
-- Entering find_ups_product looking for cetlib
-- Done finding ups product
-- Entering find_ups_product looking for sqlite
-- Done finding ups product
-- Entering find_ups_product looking for fhiclcpp
-- Done finding ups product
-- Entering find_ups_product looking for python
-- Done finding ups product
-- Entering find_ups_product looking for messagefacility
-- Done finding ups product
-- Entering find_ups_product looking for hep_concurrency
-- Done finding ups product
-- Entering find_ups_product looking for tbb
-- Done finding ups product
-- Entering find_ups_product looking for range
-- Done finding ups product
-- Entering find_ups_product looking for dk2nudata
-- Done finding ups product
-- Beginning macro to look for root
-- exiting macro
-- Done finding ups product
-- Entering find_ups_product looking for dk2nudata
-- Done finding ups product
-- Done finding ups product
-- Entering find_ups_product looking for art
-- Entering find_ups_product looking for canvas_root_io
-- Entering find_ups_product looking for canvas
-- Done finding ups product
-- Entering find_ups_product looking for cppunit
-- Done finding ups product
-- Entering find_ups_product looking for clhep
-- Done finding ups product
-- Entering find_ups_product looking for cetlib_except
-- Done finding ups product
-- Entering find_ups_product looking for cetlib
-- Done finding ups product
-- Entering find_ups_product looking for sqlite
-- Done finding ups product
-- Entering find_ups_product looking for fhiclcpp
-- Done finding ups product
-- Entering find_ups_product looking for python
-- Done finding ups product
-- Entering find_ups_product looking for messagefacility
-- Done finding ups product
-- Entering find_ups_product looking for hep_concurrency
-- Done finding ups product
-- Entering find_ups_product looking for tbb
-- Done finding ups product
-- Entering find_ups_product looking for range
-- Done finding ups product
-- Beginning macro to look for root
-- exiting macro
-- Done finding ups product
-- Entering find_ups_product looking for canvas
-- Done finding ups product
-- Entering find_ups_product looking for cppunit
-- Done finding ups product
-- Entering find_ups_product looking for clhep
-- Done finding ups product
-- Entering find_ups_product looking for cetlib_except
-- Done finding ups product
-- Entering find_ups_product looking for cetlib
-- Done finding ups product
-- Entering find_ups_product looking for sqlite
-- Done finding ups product
-- Entering find_ups_product looking for fhiclcpp
-- Done finding ups product
-- Entering find_ups_product looking for python
-- Done finding ups product
-- Entering find_ups_product looking for messagefacility
-- Done finding ups product
-- Entering find_ups_product looking for hep_concurrency
-- Done finding ups product
-- Entering find_ups_product looking for tbb
-- Done finding ups product
-- Entering find_ups_product looking for range
-- Done finding ups product
-- Beginning macro to look for root
-- exiting macro
-- Done finding ups product
-- Entering find_ups_product looking for larcore
-- Entering find_ups_product looking for larcoreobj
-- Done finding ups product
-- Entering find_ups_product looking for canvas
-- Done finding ups product
-- Entering find_ups_product looking for cppunit
-- Done finding ups product
-- Entering find_ups_product looking for clhep
-- Done finding ups product
-- Entering find_ups_product looking for cetlib_except
-- Done finding ups product
-- Entering find_ups_product looking for cetlib
-- Done finding ups product
-- Entering find_ups_product looking for sqlite
-- Done finding ups product
-- Entering find_ups_product looking for fhiclcpp
-- Done finding ups product
-- Entering find_ups_product looking for python
-- Done finding ups product
-- Entering find_ups_product looking for messagefacility
-- Done finding ups product
-- Entering find_ups_product looking for hep_concurrency
-- Done finding ups product
-- Entering find_ups_product looking for tbb
-- Done finding ups product
-- Entering find_ups_product looking for range
-- Done finding ups product
-- Beginning macro to look for root
-- exiting macro
-- Entering find_ups_product looking for larcorealg
-- Done finding ups product
-- Entering find_ups_product looking for art
-- Done finding ups product
-- Entering find_ups_product looking for canvas_root_io
-- Done finding ups product
-- Done finding ups product
-- Entering find_ups_product looking for lardata
-- Done finding ups product
-- Entering find_ups_product looking for larevt
-- Entering find_ups_product looking for larcoreobj
-- Done finding ups product
-- Entering find_ups_product looking for canvas
-- Done finding ups product
-- Entering find_ups_product looking for cppunit
-- Done finding ups product
-- Entering find_ups_product looking for clhep
-- Done finding ups product
-- Entering find_ups_product looking for cetlib_except
-- Done finding ups product
-- Entering find_ups_product looking for cetlib
-- Done finding ups product
-- Entering find_ups_product looking for sqlite
-- Done finding ups product
-- Entering find_ups_product looking for fhiclcpp
-- Done finding ups product
-- Entering find_ups_product looking for python
-- Done finding ups product
-- Entering find_ups_product looking for messagefacility
-- Done finding ups product
-- Entering find_ups_product looking for hep_concurrency
-- Done finding ups product
-- Entering find_ups_product looking for tbb
-- Done finding ups product
-- Entering find_ups_product looking for range
-- Done finding ups product
-- Beginning macro to look for root
-- exiting macro
-- Entering find_ups_product looking for larcorealg
-- Done finding ups product
-- Entering find_ups_product looking for larcore
-- Done finding ups product
-- Entering find_ups_product looking for art
-- Done finding ups product
-- Entering find_ups_product looking for canvas_root_io
-- Done finding ups product
-- Entering find_ups_product looking for lardataobj
-- Done finding ups product
-- Entering find_ups_product looking for nusimdata
-- Done finding ups product
-- Entering find_ups_product looking for dk2nudata
-- Done finding ups product
-- Entering find_ups_product looking for lardata
-- Done finding ups product
-- Entering find_ups_product looking for lardataalg
-- Entering find_ups_product looking for canvas
-- Done finding ups product
-- Entering find_ups_product looking for cppunit
-- Done finding ups product
-- Entering find_ups_product looking for clhep
-- Done finding ups product
-- Entering find_ups_product looking for cetlib_except
-- Done finding ups product
-- Entering find_ups_product looking for cetlib
-- Done finding ups product
-- Entering find_ups_product looking for sqlite
-- Done finding ups product
-- Entering find_ups_product looking for fhiclcpp
-- Done finding ups product
-- Entering find_ups_product looking for python
-- Done finding ups product
-- Entering find_ups_product looking for messagefacility
-- Done finding ups product
-- Entering find_ups_product looking for hep_concurrency
-- Done finding ups product
-- Entering find_ups_product looking for tbb
-- Done finding ups product
-- Entering find_ups_product looking for range
-- Done finding ups product
-- Entering find_ups_product looking for larcoreobj
-- Done finding ups product
-- Beginning macro to look for root
-- exiting macro
-- Entering find_ups_product looking for larcorealg
-- Done finding ups product
-- Done finding ups product
-- Entering find_ups_product looking for nutools
-- Entering find_ups_product looking for art
-- Done finding ups product
-- Entering find_ups_product looking for canvas_root_io
-- Done finding ups product
-- Entering find_ups_product looking for canvas
-- Done finding ups product
-- Entering find_ups_product looking for cppunit
-- Done finding ups product
-- Entering find_ups_product looking for clhep
-- Done finding ups product
-- Entering find_ups_product looking for cetlib_except
-- Done finding ups product
-- Entering find_ups_product looking for cetlib
-- Done finding ups product
-- Entering find_ups_product looking for sqlite
-- Done finding ups product
-- Entering find_ups_product looking for fhiclcpp
-- Done finding ups product
-- Entering find_ups_product looking for python
-- Done finding ups product
-- Entering find_ups_product looking for messagefacility
-- Done finding ups product
-- Entering find_ups_product looking for hep_concurrency
-- Done finding ups product
-- Entering find_ups_product looking for tbb
-- Done finding ups product
-- Entering find_ups_product looking for range
-- Done finding ups product
-- Beginning macro to look for root
-- exiting macro
-- Entering find_ups_product looking for genie
-- Done finding ups product
-- Entering find_ups_product looking for dk2nudata
-- Done finding ups product
-- Entering find_ups_product looking for dk2nugenie
-- Done finding ups product
-- Entering find_ups_product looking for libwda
-- Done finding ups product
-- Entering find_ups_product looking for postgresql
-- Done finding ups product
-- Entering find_ups_product looking for nusimdata
-- Done finding ups product
-- Entering find_ups_product looking for geant4
-- Done finding ups product
-- Entering find_ups_product looking for xerces_c
-- Done finding ups product
-- Done finding ups product
-- Entering find_ups_product looking for genie
-- Done finding ups product
-- Entering find_ups_product looking for dk2nugenie
-- Done finding ups product
-- Entering find_ups_product looking for libwda
-- Done finding ups product
-- Entering find_ups_product looking for postgresql
-- Done finding ups product
-- Entering find_ups_product looking for geant4
-- Done finding ups product
-- Entering find_ups_product looking for xerces_c
-- Done finding ups product
-- Done finding ups product
-- Entering find_ups_product looking for larsim
-- Entering find_ups_product looking for larcoreobj
-- Done finding ups product
-- Entering find_ups_product looking for canvas
-- Done finding ups product
-- Entering find_ups_product looking for cppunit
-- Done finding ups product
-- Entering find_ups_product looking for clhep
-- Done finding ups product
-- Entering find_ups_product looking for cetlib_except
-- Done finding ups product
-- Entering find_ups_product looking for cetlib
-- Done finding ups product
-- Entering find_ups_product looking for sqlite
-- Done finding ups product
-- Entering find_ups_product looking for fhiclcpp
-- Done finding ups product
-- Entering find_ups_product looking for python
-- Done finding ups product
-- Entering find_ups_product looking for messagefacility
-- Done finding ups product
-- Entering find_ups_product looking for hep_concurrency
-- Done finding ups product
-- Entering find_ups_product looking for tbb
-- Done finding ups product
-- Entering find_ups_product looking for range
-- Done finding ups product
-- Beginning macro to look for root
-- exiting macro
-- Entering find_ups_product looking for larcorealg
-- Done finding ups product
-- Entering find_ups_product looking for larcore
-- Done finding ups product
-- Entering find_ups_product looking for art
-- Done finding ups product
-- Entering find_ups_product looking for canvas_root_io
-- Done finding ups product
-- Entering find_ups_product looking for lardataobj
-- Done finding ups product
-- Entering find_ups_product looking for nusimdata
-- Done finding ups product
-- Entering find_ups_product looking for dk2nudata
-- Done finding ups product
-- Entering find_ups_product looking for lardata
-- Done finding ups product
-- Entering find_ups_product looking for lardataalg
-- Done finding ups product
-- Entering find_ups_product looking for nutools
-- Done finding ups product
-- Entering find_ups_product looking for genie
-- Done finding ups product
-- Entering find_ups_product looking for dk2nugenie
-- Done finding ups product
-- Entering find_ups_product looking for libwda
-- Done finding ups product
-- Entering find_ups_product looking for postgresql
-- Done finding ups product
-- Entering find_ups_product looking for geant4
-- Done finding ups product
-- Entering find_ups_product looking for xerces_c
-- Done finding ups product
-- Entering find_ups_product looking for larevt
-- Done finding ups product
-- Entering find_ups_product looking for marley
-- Done finding ups product
-- Entering find_ups_product looking for ifdhc
-- Done finding ups product
-- Done finding ups product
-- Entering find_ups_product looking for larreco
-- Done finding ups product
-- Entering find_ups_product looking for gsl
-- Done finding ups product
-- Entering find_ups_product looking for cetbuildtools
-- Done finding ups product
-- Entering find_ups_product looking for canvas
-- Done finding ups product

History

#1 Updated by Lynn Garren over 1 year ago

  • Project changed from LArSoft to cet-is-public
  • Status changed from New to Assigned
  • Assignee set to Lynn Garren
  • Estimated time set to 20.00 h
  • Experiment deleted (-)

Is this a complaint about the time or about complex mrb builds?

We are aware that High Sierra builds take significantly longer than Sierra builds for the same code. We note that a large fraction of this appears to be system time. We have not found any solutions yet. Be aware that this also affects Jenkins builds and we are motivated to find an answer.

We are able to reproduce the problem building larreco and the split uboone code on macOS. However, it may take some time to investigate and resolve the issue. The workaround is as you suggest: checkout larsoft portions of the code before checking out the uboone code.

#2 Updated by Kyle Knoepfel over 1 year ago

We would like to meet with you regarding this issue when you are at Fermilab this week. Can you please coordinate such a meeting with Lynn, Erica, and Kyle?

#3 Updated by Christopher Green 8 months ago

  • Scope set to Internal
  • Project changed from cet-is-public to cet-is
  • Experiment - added


Also available in: Atom PDF