Build process

TCS

The build process works mostly on makefiles. Those are hand edited to compile. Build can be started only from the topmost directory, as components hard link object files from other directories if they need those (e.g. almost everybody needs share memory access, so the processes gets linked with GshmVar.o).

Supplied makefile:
  • translates *.ui (Qt forms) using moc to c++ source files
  • compiles all *.cpp files
  • link .o with system .o to produce output binary

Makefile enviromental variables

Those can be set from shell, using export <variable_name>[=value] command. You need to set those before starting the build.

  • VERBOSE allows to see commands being performed and their output.
  • BUILD passes build string as __BUILD__ macro. Build number can be retrieved in code as TCS_Version (declared in GshmSum.hpp) or as NetworkConfig::myVersion() (declared in NetworkConfig.hpp). Build should have form yyyy[A-Z], where yyyy is buid year.

Please note that patchname is never included in binaries. The version is, and that should signal a patch.

Makefiles libraries variables

Lots of settings affect which libraries will get linked,.. Those are set in .build/environment files, which are include from Makefile.

Supporting scripts

Those scripts assumes TCS files resides under /lbt/tcs/ directory, with /lbt/tcs/current soft-linking to the TCS build.

bundle.sh

Correctly sets build environment (OS variables BUILD,..) and build the software. Overwrites .buildtag before the build.

install.sh

The only supplied parametr is build name. Builds TCS using bundle.sh script, and install it in /lbt/tcs/.

patch.py

Distributes path to mountain servers (tcs2.mountain.lbto.org hardcoded as target host; as binary files resides on NFS mount, that will distribute binaries to all TCS and OBS computers). You need to call ./bundle.sh before. Makes sure .debug files are copied as well.

activate.py, activate.sh

Activates patches. Does not restarts subsystems.

showpatches.sh

Lists available patches per subsystem.

lbtconfdiff (in tools SVN)

Compares configuration files, making it easy to spot what should be changed when new build is installed.
Topic revision: r3 - 05 Jan 2018, PetrKubanek
This site is powered by FoswikiCopyright © by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding Foswiki? Send feedback