Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Wiki Markup
There are two needed external libraries that have yet to be incorporated into SCons (for rhel4 machines):

...

All packages have been uilt with the exception of the following:

...

Package (failed to build)

...

Comment

...

Status

...

AnalysisNtuple

...

  *Obf* and *OmniOrb*. {color:#006600}{*}As of today, Obf and OmniOrb have been installed for the rhel4 machines{*}{color}, so what remains is them being incorporated into Scons.  This will happen today.

All packages have been uilt with the exception of the following:
|| Package {color:#ff0000}(failed to build){color}\\ || Comment || Status ||
| AnalysisNtuple | {color:#ff0000}{*}A linking error occurs when it tries to link against FluxSvc:*{color} \\  {color:#ff0000}{*}Builds the shared library fine, but throws an error when AnalysisNtuple tries to link against it:*{color} \\  {color:#ff0000}*/usr/local/lib/libf2c.a(main.o)(.text+0x10c): In function `main':

...

*{color} \\  {color:#ff0000}*: undefined reference to `MAIN__'

...

*{color} \\  {color:#ff0000}{*}lib/redhat4-i686-32bit/libFluxSvc.so: undefined reference to `__ctype_b'

...

*{color} \\  {color:#ff0000}{*}collect2: ld returned 1 exit

...

CRflux

...

I need to resolve some undefined references, possibly via editing the SConscript and CRfluxLib.py files

...

Pass

...

OnboardFilterTds

...

depends on Obf

...

Pass

...

CalRecon

...

depends on (header files from) CalXtalResponse

...

Pass

...

RootConvert

...

depends on Obf 

...

Pass

...

RootIo

...

depends on headers from RootConvert package

...

Pass

...

G4Generator

...

I Need to resolve some undefined references.  This either has to do with the SConscript or directory structure of the package.

...

Pass

...

G4Propagator

...

depends on G4Propagator conforming to coding conventions. The header file missing here is located in G4Generator package, specifically G4Generator/src)

...

Pass 

...

GCRCalib

...

depends on ITkrFilterTool.h from TkrRecon, but source files are not pointing to the correct location for ITkrFilterTool.h.  Also, TkrRecon should have that header file "ITkrFilterTool.h" (used by external packages), put in the appropriate directory. 

...

Pass

...

HepRepCorba

 status{*}{color}  \\
*{+}Solution{+}*\\
I had to make some changes to FluxSvc/SConscript.  The FluxSvc shared library had to built a certain way.  See FluxSvc further down in this table. \\ | {color:#006600}{*}Pass{*}{color} |
| CRflux | {color:#ff0000}{*}{-}I need to resolve some undefined references, possibly via editing the SConscript and CRfluxLib.py files{-}{*}{color}\\ | {color:#006600}{*}Pass{*}{color} \\ |
| OnboardFilterTds | {color:#ff0000}{*}{-}depends on Obf{-}{*}{color}\\ | {color:#006600}{*}Pass{*}{color} |
| CalRecon | {color:#ff0000}{*}{-}depends on (header files from) CalXtalResponse{-}{*}{color}\\ | {color:#006600}{*}Pass{*}{color} \\ |
| RootConvert | {color:#ff0000}{*}{-}depends on Obf -{*}{color} | {color:#006600}{*}Pass{*}{color} |
| RootIo | {color:#ff0000}{*}{-}depends on headers from RootConvert package{-}{*}{color}\\ | {color:#006600}{*}Pass{*}{color} |
| G4Generator | {color:#ff0000}{*}{-}I Need to resolve some undefined references.  This either has to do with the SConscript or directory structure of the package.-{*}{color}\\ | {color:#006600}{*}Pass{*}{color} \\ |
| G4Propagator | {color:#ff0000}{*}depends on G4Propagator conforming to coding conventions. The header file missing here is located in G4Generator package, specifically G4Generator/src)*{color} | {color:#006600}{*}Pass{*}{color}  \\ |
| GCRCalib | {color:#ff0000}{*}depends on ITkrFilterTool.h from TkrRecon, but source files are not pointing to the correct location for ITkrFilterTool.h.  Also, TkrRecon should have that header file "*{color}{color:#ff0000}{*}ITkrFilterTool.h"*{color} {color:#ff0000}*(used by external packages), put in the appropriate directory. *{color} \\ | {color:#006600}{*}Pass{*}{color} \\ |
| HepRepCorba | -\-HepRepCorba/build/redhat4-i686-32bit/src/HepRep.hh:6:28: omniORB4/CORBA.h: No such file or directory (-\-{color:#cc0000}{*}{-}depends on OmniOrb{-}{*}{color})-

...

Pass

...

ldfReader

...

depends on Obf

...

Pass

...

digiRootData

...

depends on Obf

...

Pass

...

RootAnalysis

...

looks like this depends on digiRootData

...

Pass

...

calibGenCAL

\- \\ | {color:#006600}{*}Pass{*}{color} |
| ldfReader | {color:#cc0000}{*}{-}depends on Obf{-}{*}{color}\\ | {color:#009900}{*}Pass{*}{color} |
| digiRootData | {color:#cc0000}{*}{-}depends on Obf{-}{*}{color} | {color:#009900}{*}Pass{*}{color} |
| RootAnalysis | {color:#cc0000}{*}{-}looks like this depends on digiRootData{-}{*}{color}\\ | {color:#009900}{*}Pass{*}{color} \\ |
| {color:#333300}calibGenCAL{color} | {color:#ff0000}{*}{-}calibGenCAL/build/redhat4-i686-32bit/src/Optical/fitMuonCalibTkr.o(.text+0x392): In function `main':

...

-{*}{color} \\  {color:#ff0000}{*}-: undefined reference to `CalUtil::CalAsym::CalAsym()'

...

-{*}{color} \\  {color:#ff0000}{*}{-}collect2: ld returned 1 exit

...

 status{-}{*}{color} \\  {color:#ff0000}{-}{*}scons: \*\*

...

-{color}{color:#ff0000}-\* \[calibGenCAL/build/redhat4-i686-32bit/fitMuonCalibTkr\] Error 1{*}{-

...

}{color} \\  {color:#333300}{-}I verified the following, with no success:-{color} \\  {color:#333300}-(1) CalUtil was added to the list of libraries to link against and this still produces an error{-}{color} \\  {color:#333300}-(2) #include "CalUtil/SimpleCalCalib/CalAsym.h" is properly included in{-}{color} {color:#333300}{-}fitMuonCalibTkr.cxx

...

{-}{color}\\
*{+}Solution{+}* \\
The function in the SConscript file, used to copy the public headers of a package to the top-level includes/<package> directory, "listFiles," has a bug in it. Sometimes it does not copy everything.&nbsp; \\
\\
In the SConscript file, there is a call to a tool, 'registerObjects.'&nbsp; One of the parameters is, "includes = listFiles(...)," which specifies the public headers that need to be copied over.

...

&nbsp; I manually copied the entire public directory of CalUtil to the top level includes/CalUtil directory via

...

 \\
cp \-r CalUtil/CalUtil includes/CalUtil

...

 \\
Next, I deleted the CVS directories that I copied over.

...

Pass

...

calibGenACD

...

depends on digiRootData

...

Pass

...

calibGenTKR

...

Pass

...

OnboardFilter

...

depends on Obf 

...

Pass

...

CalXtalResponse

...

&nbsp;&nbsp; \\ | {color:#009900}{*}Pass{*}{color} |
| calibGenACD | {color:#cc0000}{*}{-}depends on digiRootData{-}{*}{color}\\ | {color:#009900}{*}Pass{*}{color} |
| calibGenTKR | \\ | {color:#009900}{*}Pass{*}{color} |
| OnboardFilter \\ | {color:#cc0000}{*}{-}depends on Obf&nbsp;-{*}{color} | {color:#009900}{*}Pass{*}{color} |
| CalXtalResponse | {color:#ff0000}{*}{-}I Need to resolve some undefined references.&nbsp; Strange linking errors when trying to build the test application:-{*}{color}\\
I get a series of errors similar to \\
In function `test_CalCalibSvc::TestCalibSet::TestCalibSet()':

...

 \\
: undefined reference to `CalUtil::CalAsym::CalAsym()'

...

 \\
This error is the above error for {color:#333300}calibGenCAL.

...

&nbsp; My guess is that resolving the errors for calibGenCal will resolve the errors for this package.

...

Pass

...

Event

...

Need to resolve some undefined references

...

Pass

...

calibTkrUtil

...

{color} \\ | {color:#009900}{*}Pass{*}{color} \\ |
| Event | {color:#ff0000}{*}{-}Need to resolve some undefined references{-}{*}{color}\\ | {color:#006600}{*}Pass{*}{color}\\ |
| calibTkrUtil | {color:#ff0000}{*}{-}In violation of package convention (GeoConstants.h is located in calibTkrUtil/src/test/)-{*}{color}\-, but should be in calibTkrUtil/calibTkrUtil.

...

&nbsp; A header in the public directory needs this file, so its causing compiler errors:\-

...

 \\
-calibTkrUtil/build/redhat4-i686-32bit/calibTkrUtil/TkrNoiseOcc.h:17:26: GeoConstants.h: No such file or

...

 directory- \\
-In file included from calibTkrUtil/src/TkrNoiseOcc.cxx:1:

...

- \\
-calibTkrUtil/build/redhat4-i686-32bit/calibTkrUtil/TkrNoiseOcc.h:34: error: `g_nTower' was not declared in this

...

 scope- \\
-calibTkrUtil/build/redhat4-i686-32bit/calibTkrUtil/TkrNoiseOcc.h:34: error: `g_nTkrLayer' was not declared in this

...

 scope- \\
-calibTkrUtil/build/redhat4-i686-32bit/calibTkrUtil/TkrNoiseOcc.h:34: error: `g_nView' was not declared in this

...

 scope- \\
-calibTkrUtil/build/redhat4-i686-32bit/calibTkrUtil/TkrNoiseOcc.h:35: error: `g_nTower' was not declared in this

...

 scope- \\
-etc...

...

- \\
*{-}{+}Status{+}{-}* \\
-I emailed the package owner, explained the problem, and requested the reorganization of the package.&nbsp; Waiting for response...- \\
*{+}Solution{+}* \\
After the "ok" from Johann, I moved the calibTkrUtil/src/test/GeoConstants.h to the calibTkrUtil/calibTkrUtil.

...

Pass

...

FluxSvc

...

 \\ | {color:#006600}{*}Pass{*}{color} |
| FluxSvc | {color:#ff0000}{*}Builds the shared library fine, but throws an error when AnalysisNtuple tries to link against it:*{color} \\  {color:#ff0000}*/usr/local/lib/libf2c.a(main.o)(.text+0x10c): In function `main':

...

*{color} \\  {color:#ff0000}*: undefined reference to `MAIN__'

...

*{color} \\  {color:#ff0000}{*}lib/redhat4-i686-32bit/libFluxSvc.so: undefined reference to `__ctype_b'

...

*{color} \\  {color:#ff0000}{*}collect2: ld returned 1 exit

...

 status{*}{color} \\ \\
*{+}Solution{+}*\\
(see http://oss.sgi.com/projects/inventor/mail/info-inventor-dev/msg00512.html)\\
Basically I had to do two things\\
(1) Create a source file, which I arbitrarily named "flux_c_type_fix.cxx."&nbsp; The source file contains the following source#include <ctype.h>

    extern "C" {
    __const unsigned short int **__wrap___ctype_b (void) {
      return __ctype_b_loc();
    }
    }(2) Add the following link options (e.g., libEnv.AppendUnique(SHLINKFLAGS = \['-Wl,--wrap,__ctype_b'\]) ):\\
 \\
 -Wl,--wrap,__ctype_b\\ \\
(3) When creating the shared library, FluxSvc, also link the source files against flux_c_type_fix.cxx:\\
&nbsp; &nbsp; &nbsp;&nbsp; &nbsp;&nbsp;&nbsp; {color:#003366}{*}ctype_fix{*}{color}=tempEnv1.SharedObject(source = \['src/flux_c_type_fix.cxx'\])\\
 &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; FluxSvc = libEnv.SharedLibrary('FluxSvc', \[ExposureAlg,FluxAlg_os,FluxSvc_os,FluxSvcRandom_os,\\
 &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; OrbitSvc_os,PointInfoAlg_os,PointInfo_os,FluxSvc_dll_os,FluxSvc_load_os\] + \[{color:#003366}{*}ctype_fix{*}{color}\])\\
 \\
 &nbsp; | {color:#006600}{*}Pass{*}{color} |
\\