Cet build-packaging work - day two

Marc and Kurt's notes for case 4.

document that need ups tools (setup)
document that you need to setup art
need best practice guide:
  • recommended directory structure
  • product name as top level source code directory
  • -- include path
  • tool to make directory structure (cet_new_product)
  • CMakeLists.txt for top and all subdirectories
  • commented out example stuff
  • comments must be very explicit - "here's how"
  • executable, tests, dynamic libraries, static libraries
  • working example would be nice
  • cleanup extra stuff - how?
  • unless have cleanup, prefer that generated cruft is example/how-to rather than bogus code
  • "give me examples" optional command to copy in ToyCmake or something
  • need corresponding "remove examples"
  • fill out contents of ups directory
  • must write setup_for_development
  • -- need to know dependencies
  • -- product name and product version, qualifier if needed (min req version should be the same?)
  • Tool to add new dependency.
  • Look at table file and check for consistency.

install header macro should have exclude option

We note that keeping minimum required version up to date in CMakeLists.txt is a problem.

purpose of cet_cmake_env is unclear - documentation..

write list of products -- what qualifier to stitch there
add by hand - comment area for +$CETPKG_QUAL$extraqual

Range is possible, but how do we know what the range is until we get there?

Check dependency command?? Tool is linker. Can set flag to fail with unresolved dependencies. Can't do this when using root.
Possible to build root differently to allow this, but heading to uncharted territory.
Some root libraries depend on static initialization order. Can build root with libraries internally linked. Not sure if this solves the static initialization problem.

Qualifiers are a nightmare for users - most complex thing in system.

Art has large list of dependencies. Just want to depend on art.
CMakeLists.txt file...
Need art cmake thing to be used by find_package...
-- library list (link time)

current setup_for_development
-- write to log and echo problems to screen (aka buildtool)

Tool to add products -- add/remove/modify
For anytime where you have to change more than one place.

Better error messages
-- find_library - error is not helpful
-- symbol undefined - "not found"
-- see Marc & Kurt's notes
FAQ is OK if too hard

buildtool h
writes to stderr

how to test installed product
go to new shell and try using it
can this be easier?
general problem is hard
Chris has plan to check for execs - spawn shell, setup product,
command: here are the executables and libraries that will be installed?

Dependency check - suggest missing dependencies
is this even possible?

ups setup needs to fail properly

best practice recommendation
list all DIRECT dependencies