Difference between revisions of "Online builds 10-apr-2013"

From GlueXWiki
Jump to: navigation, search
m
m
Line 97: Line 97:
 
         |          `-- test
 
         |          `-- test
 
         `-- SCONS
 
         `-- SCONS
 +
 +
 +
 +
= Example SCONS Scripts =
 +
 +
 +
#  SConscript for libsrc
 +
#
 +
#  to customize fill in package dependencies
 +
#
 +
#  ejw, 16-apr-2013
 +
 
 +
 +
Import('*')
 +
from init_env import modify_environment
 +
from util import buildLib
 +
 +
 +
#  set package dependencies
 +
modify_environment(libEnv,'cmsg')
 +
 +
 +
 +
#  build the lib
 +
buildLib(libEnv)

Revision as of 17:01, 6 May 2013

File structure for release area

Simple but cluttered:

-- builds
   `-- devel
       |-- aPackage
       |-- anotherPackage
       |-- cMsg2et
       |   |-- doc
       |   |-- java
       |       `-- org
       |           `-- jlab
       |               `-- halld
       |   |-- jar
       |   |-- Linux_RHEL6-x86_64-gcc4.8.0
       |   |   |-- bin
       |   |   |-- include
       |   |   |-- lib
       |   |   `-- scripts
       |   `-- src
       |       |-- binsrc
       |       |-- examples
       |       |-- libsrc
       |       |   `-- cMsg2et -> .
       |       |-- scripts
       |       `-- test
       |-- doc
       |-- jar
       |-- Linux_RHEL6-x86_64-gcc4.8.0
       |   |-- bin
       |   |-- include
       |   |-- lib
       |   `-- scripts
       `-- SCONS


Build System

  • Based on SCONS and Python/Perl scripts (by Maurizio, Elliott and Dave L).
  • Allows for only one library per package, but allows multiple executables and test programs.
  • A package may just have a library or executables, or maybe just some include files and scripts.
  • System builds libsrc,binsrc and installs libsrc,binsrc,scripts into $INSTALL_DIR (default is package directory).
  • Copies include files from libsrc into include directory in $INSTALL_DIR.
  • Builds test area but only installs it locally (i.e. ignores INSTALL_DIR env var)
  • Ignores any other directories in src (e.g. examples dir).
  • Include statements MUST be qualified by package name (e.g. #include <cMsg2et/cMsg2et.h>) (thus the soft link in libsrc dir).


File structure for release area

  • Below is a proposed release directory structure.
  • Official release area is /gluex/builds.
  • Release area only writeable from hdsys account, read-only from all other accounts.
  • Package directories are what gets checked into SVN.
  • Packages can be checked in/out by anyone.
  • Anyone can build and install packages in their own area.
  • Only hdsys can release a package into official release area.
  • Notes:
    • Should SCONS dir be under packages? Should it be installed?
    • Need to develop scripts to check out and build everything in one command.


-- builds
   `-- devel
       |-- doc
       |-- jar
       |-- Linux_RHEL6-x86_64-gcc4.8.0
       |   |-- bin
       |   |-- include
       |   |-- lib
       |   `-- scripts
       |-- packages
       |   |-- aPackage
       |   |-- anotherPackage
       |   `-- cMsg2et
       |       |-- doc
       |       |-- java
       |           `-- org
       |               `-- jlab
       |                   `-- halld
       |       |-- jar
       |       |-- Linux_RHEL6-x86_64-gcc4.8.0
       |       |   |-- bin
       |       |   |-- include
       |       |   |-- lib
       |       |   `-- scripts
       |       `-- src
       |           |-- binsrc
       |           |-- examples
       |           |-- libsrc
       |           |   `-- cMsg2et -> .
       |           |-- scripts
       |           `-- test
       `-- SCONS


Example SCONS Scripts

#  SConscript for libsrc
#
#  to customize fill in package dependencies
#
#  ejw, 16-apr-2013
 

Import('*')
from init_env import modify_environment
from util import buildLib


#  set package dependencies
modify_environment(libEnv,'cmsg')



#  build the lib
buildLib(libEnv)