Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Migrated to Confluence 4.0

...

There

...

are

...

two

...

needed

...

external

...

libraries

...

that

...

have

...

yet

...

to

...

be

...

incorporated

...

into

...

SCons

...

(for

...

rhel4

...

machines):

...

  Obf and OmniOrb. As of today, Obf and OmniOrb have been installed for the rhel4 machines, so what remains is them being incorporated into Scons.  This will happen today.

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

Package (failed to build)

Comment

Status

AnalysisNtuple

A linking error occurs when it tries to link against FluxSvc:
Builds the shared library fine, but throws an error when AnalysisNtuple tries to link against it:
/usr/local/lib/libf2c.a(main.o)(.text+0x10c):

...

In

...

function

...

`main':

...


: undefined reference to `MAIN__'

...


lib/redhat4-i686-32bit/libFluxSvc.so:

...

undefined

...

reference

...

to

...

`__ctype_b'

...


collect2:

...

ld

...

returned

...

1

...

exit

...

status 
Solution
I had to make some changes to FluxSvc/SConscript.

...

  The

...

FluxSvc

...

shared

...

library

...

had

...

to

...

be built

...

a

...

certain

...

way.

...

  See

...

FluxSvc

...

further

...

down

...

in

...

this

...

table.

...


Pass

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

-HepRepCorba/build/redhat4-i686-32bit/src/HepRep.hh:6:28:

...

omniORB4/CORBA.h:

...

No

...

such

...

file

...

or

...

directory

...

(

...

-

...

depends

...

on

...

OmniOrb

...

)-

...

-

Pass

ldfReader

depends on Obf

Pass

digiRootData

depends on Obf

Pass

RootAnalysis

looks like this depends on digiRootData

Pass

calibGenCAL

calibGenCAL/build/redhat4-i686-32bit/src/Optical/fitMuonCalibTkr.o(.text+0x392):

...

In

...

function

...

`main':

...


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

...


collect2:

...

ld

...

returned

...

1

...

exit

...

status
{*}scons:

...

*

...

*

...

*

...

[calibGenCAL/build/redhat4-i686-32bit/fitMuonCalibTkr

...

]

...

Error

...

1{*}

...


I verified the following, with no success:
(1) CalUtil was added to the list of libraries to link against and this still produces an error
(2) #include "CalUtil/SimpleCalCalib/CalAsym.h"

...

is

...

properly

...

included

...

in

...

fitMuonCalibTkr.cxx

...


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. 

In the SConscript file, there is a call to a tool, 'registerObjects.'  One of the parameters is, "includes = listFiles(...),"

...

which

...

specifies

...

the

...

public

...

headers

...

that

...

need

...

to

...

be

...

copied

...

over.

...

  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

I Need to resolve some undefined references.  Strange linking errors when trying to build the test application:
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

...

calibGenCAL.

...

  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

In violation of package convention (GeoConstants.h is located in calibTkrUtil/src/test/)-

...

,

...

but

...

should

...

be

...

in

...

calibTkrUtil/calibTkrUtil.

...

  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.  Waiting for response...
Solution
After the "ok" from Johann, I moved the calibTkrUtil/src/test/GeoConstants.h

...

to

...

the

...

calibTkrUtil/calibTkrUtil.

...


Pass

FluxSvc (Passed)

Builds the shared library fine, but throws an error when AnalysisNtuple tries to link against it:
/usr/local/lib/libf2c.a(main.o)(.text+0x10c):

...

In

...

function

...

`main':

...


: undefined reference to `MAIN__'

...


lib/redhat4-i686-32bit/libFluxSvc.so:

...

undefined

...

reference

...

to

...

`__ctype_b'

...


collect2:

...

ld

...

returned

...

1

...

exit

...

status

Solution
(here)
Basically I had to do two things
(1) Create a source file, which I arbitrarily named "flux_c_type_fix.cxx."

...

  The

...

source

...

file

...

contains

...

the

...

source from here here

ctype_fix=tempEnv1.SharedObject(source

...

=

...

['src/flux_c_type_fix.cxx'

...

])
           FluxSvc = libEnv.SharedLibrary('FluxSvc',

...

[ExposureAlg,FluxAlg_os,FluxSvc_os,FluxSvcRandom_os,

...


                                OrbitSvc_os,PointInfoAlg_os,PointInfo_os,FluxSvc_dll_os,FluxSvc_load_os

...

]

...

+

...

[

...

ctype_fix

...

])

...