Notes on adding a check-out option to builds

  • needed for sim-recon, hdds, ccdb, and jana
  • two tags: version and url, mutually exclusive, drive access method
    • if no version and no url, checkout latest
  • new tag: dirtag, added to end of both tarball and check-out directory names
    • dir name for checkout = package-name [+ dirtag]
    • dir name for tarball = tar-determined name [+ dirtag]
  • prereqs:
    • if prereq package from tar file, there is a version number encoded in directory name, dirname is in home variable, get the version number from there
    • if prereq package from checkout, home directory is sufficient to get url of repository location, that info can be written as url tag

re-make of sim-recon does a recompile when not necessary

trying it on ltmarki, halld/sim-recon-2012-09-26

The re-compilation:

g++ -I. -I.. -I../include -I/home/marki/halld/sim-recon-2012-09-26/include -I/home/marki/halld/sim-recon-2012-09-26/include -D_FILE_OFFSET_BITS=64 -I/usr/local/gluex/jana/prod/include -I/usr/local/gluex/xerces-c/prod/include -D_ROOT_ -DROOT_MAJOR=5 -DROOT_MINOR=34 -pthread -m32 -I/usr/local/gluex/root/prod/include -I/usr/local/gluex/root/prod/include -O2 -Wall   -c -o DEventSourceHDDM.o DEventSourceHDDM.cc
^Cmake[3]: *** wait: No child processes.  Stop.
make[3]: *** Waiting for unfinished jobs….
make[3]: *** wait: No child processes.  Stop.
make[2]: *** [library] Error 2
make[1]: *** [HDDM] Interrupt
make: *** [libraries] Interrupt

same deal on multiple makes
only repeats for LOCAL_HALLD_HOME

Solved: 12/20/12

Changed the makefile in sim-recon/src/external/xstream/src to preserve timestamps when doing the install. This prevents unnecessary re-compilation in libraries/HDDM. This was only happening with the top-level make since only then did a make install get repeated in the external directory.

problem with green field build of sim-recon (solved)

make -C HDDM install
which: no hddm-c in (/home/marki/halld_my/bin/Linux_Fedora13-i686-gcc4.4.4:/scratch/gluex_test_complete/sim-recon/prod/bin/Linux_Fedora13-i686-gcc4.4.4:/scratch/gluex_test_complete/cernlib/2006/bin:/scratch/gluex_test_complete/root/prod/bin:.:/home/marki/bin:/usr/lib/qt-3.3/bin:/usr/local/bin:/usr/bin:/bin)
make[4]: Entering directory `/home/scratch/gluex_test_complete/sim-recon/sim-recon/src/libraries/HDDM'
error: hddm-c not in path
make[4]: *** [env_check] Error 1
make[4]: Leaving directory `/home/scratch/gluex_test_complete/sim-recon/sim-recon/src/libraries/HDDM'
make[3]: *** [HDDM] Error 2
make[3]: Leaving directory `/home/scratch/gluex_test_complete/sim-recon/sim-recon/src/libraries'
make[2]: *** [libraries] Error 2
make[2]: Leaving directory `/home/scratch/gluex_test_complete/sim-recon/sim-recon/src'
make[1]: *** [make_halld] Error 2
make[1]: Leaving directory `/home/scratch/gluex_test_complete/sim-recon'
make: *** [sim-recon_make] Error 2
> shenv halld_home
HALLD_HOME=/scratch/gluex_test_complete/sim-recon/prod
  • Green field build does not have a prod link yet. So hddm-c is not in path. So build of HDDM library fails.
  • Green field build needs to have a HALLD_HOME defined that refers to itself.
  • The fact that it worked before was fortuitous; always depended on a pre-existing build. And that is not strictly correct. Pre-existing version could be inconsistent with the current build.
  • Chicken and egg problem.
  • When building with LOCAL_HALLD_HOME, add local bin directory to the path in the top-level makefile. This fixes the issue.