INTRODUCTION
I've been working on many aspect of porting NOMAD, DZero, CLE0 software among different platforms. Recently I worked on a port of 800+ packages from Solaris to Linux for CLEO collaboration.

ENVIRONMENT
Three platform has been officially supported:
  • Tru64/OSF1
  • SunOS 2.6 and Solaris 2.8, 9, 10
  • Linux, RedHat 9, RedHat Enterprise 3, 4, Scientific Linux

PROBLEM'S DISCOVERED
There were several categories solved during this transition:
  • compiler/preprocessor/linker bugs
  • STL-related bugs
  • OS-specific bugs
  • user-related bugs.

WHAT WAS DONE
The table below summirizes a platform specific compiler options applied during this transition:
Tool/OS Tru64 Solaris Linux
compiler cxx/f77 CC/f77 g++/g77
version Compaq v6.2/Digital X5.2 Sun WorkShop 6, v5.3 v3.2.2
debugger ladebug dbx gdb
C++ flags cxx -O -Wall -nopt -nocompress CC -instances=global -KPIC -mt -O g++ -I- -O -fPIC
Fortran flags f77 -O -u static f77 -O -u -KPIC -mt f77 -I- -O -fPIC -MM -fno-automatic -fno-second-underscore -finit-local-zero
A common set of Makefile rules has been applied to every package. A particular example can be found here (please note that all rights are reserved by CLEO collaboration and Cornell University).

RESULTS
We successfully deployed over 800 packages between Tru64, Solaris and Linux platforms.