- setup scripts for running environment added
authorrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 1 Dec 2006 15:52:26 +0000 (15:52 +0000)
committerrichterm <richterm@f7af4fe6-9843-0410-8265-dc069ae4e863>
Fri, 1 Dec 2006 15:52:26 +0000 (15:52 +0000)
- bugfix in configure which caused the check for PubSub components
  to fail on some architectures
- ComponentHandler takes ROOT dynamic library loader as fallback if
  dlopen is not available
- minor changes to avoid effC++ and other warnings
- work on the Task chain processing

18 files changed:
HLT/BASE/AliHLTComponent.cxx
HLT/BASE/AliHLTComponent.h
HLT/BASE/AliHLTComponentHandler.cxx
HLT/BASE/AliHLTConfiguration.cxx
HLT/BASE/AliHLTDataBuffer.cxx
HLT/BASE/AliHLTDataBuffer.h
HLT/BASE/AliHLTDataSink.cxx
HLT/BASE/AliHLTDataSource.cxx
HLT/BASE/AliHLTLogging.cxx
HLT/BASE/AliHLTSystem.cxx
HLT/BASE/AliHLTSystem.h
HLT/BASE/AliHLTTask.h
HLT/BASE/HLTbaseLinkDef.h
HLT/BASE/Makefile.am
HLT/BASE/setenv.csh.in [new file with mode: 0644]
HLT/BASE/setenv.sh.in [new file with mode: 0644]
HLT/ChangeLog
HLT/configure.ac

index 1347a56..7ddeecd 100644 (file)
@@ -35,8 +35,8 @@ ClassImp(AliHLTComponent)
 
 AliHLTComponent::AliHLTComponent()
   :
-  fCurrentEvent(0),
-  fEnvironment()
+  fEnvironment(),
+  fCurrentEvent(0)
 { 
   memset(&fEnvironment, 0, sizeof(AliHLTComponentEnvironment));
   if (fpComponentHandler)
@@ -81,6 +81,19 @@ int AliHLTComponent::Deinit()
   return iResult;
 }
 
+int AliHLTComponent::DoInit( int argc, const char** argv )
+{
+  if (argc==0 && argv==NULL) {
+    // this is currently just to get rid of the warning "unused parameter"
+  }
+  return 0;
+}
+
+int AliHLTComponent::DoDeinit()
+{
+  return 0;
+}
+
 void AliHLTComponent::DataType2Text( const AliHLTComponent_DataType& type, char output[14] ) {
 memset( output, 0, 14 );
 strncat( output, type.fOrigin, 4 );
index dd46622..c20410e 100644 (file)
@@ -210,17 +210,13 @@ class AliHLTComponent : public AliHLTLogging {
    * Default method for the internal initialization.
    * The method is called by @ref Init
    */
-  virtual int DoInit( int argc, const char** argv ){
-    return 0;
-  }
+  virtual int DoInit( int argc, const char** argv );
 
   /**
    * Default method for the internal clean-up.
    * The method is called by @ref Deinit
    */
-  virtual int DoDeinit(){
-    return 0;
-  }
+  virtual int DoDeinit();
 
   /**
    * General memory allocation method.
index ebb7c21..a2786b0 100644 (file)
 #if __GNUC__>= 3
 using namespace std;
 #endif
-
+//#undef HAVE_DLFCN_H
+#ifdef HAVE_DLFCN_H
 #include <dlfcn.h>
+#else
+//#include <Riostream.h>
+#include <TSystem.h>
+#endif //HAVE_DLFCN_H
 #include "AliHLTStdIncludes.h"
 #include "AliHLTComponentHandler.h"
 #include "AliHLTComponent.h"
@@ -89,7 +94,12 @@ Int_t AliHLTComponentHandler::RegisterComponent(AliHLTComponent* pSample)
 
 int AliHLTComponentHandler::DeregisterComponent( const char* componentID )
 {
-  return 0;
+  int iResult=0;
+  if (componentID) {
+  } else {
+    iResult=-EINVAL;
+  }
+  return iResult;
 }
 
 Int_t AliHLTComponentHandler::ScheduleRegister(AliHLTComponent* pSample)
@@ -191,7 +201,17 @@ int AliHLTComponentHandler::LoadLibrary( const char* libraryPath )
   int iResult=0;
   if (libraryPath) {
     AliHLTComponent::SetGlobalComponentHandler(this);
-    AliHLTLibHandle hLib=dlopen(libraryPath, RTLD_NOW);
+    AliHLTLibHandle hLib=NULL;
+#ifdef HAVE_DLFCN_H
+    // use interface to the dynamic linking loader
+    hLib=dlopen(libraryPath, RTLD_NOW);
+#else
+    // use ROOT dynamic loader
+    if (gSystem->Load(libraryPath)==0) {
+      // create TString object to store library path and use pointer as handle 
+      hLib=reinterpret_cast<AliHLTLibHandle>(new TString(libraryPath));
+    }
+#endif //HAVE_DLFCN_H
     if (hLib) {
       HLTInfo("library %s loaded", libraryPath);
       fLibraryList.push_back(hLib);
@@ -206,7 +226,9 @@ int AliHLTComponentHandler::LoadLibrary( const char* libraryPath )
       }
     } else {
       HLTError("can not load library %s", libraryPath);
+#ifdef HAVE_DLFCN_H
       HLTError("dlopen error: %s", dlerror());
+#endif //HAVE_DLFCN_H
       iResult=-ELIBACC;
     }
     AliHLTComponent::UnsetGlobalComponentHandler();
@@ -219,6 +241,10 @@ int AliHLTComponentHandler::LoadLibrary( const char* libraryPath )
 int AliHLTComponentHandler::UnloadLibrary( const char* libraryPath )
 {
   int iResult=0;
+  if (libraryPath) {
+  } else {
+    iResult=-EINVAL;
+  }
   return iResult;
 }
 
@@ -227,7 +253,13 @@ int AliHLTComponentHandler::UnloadLibraries()
   int iResult=0;
   vector<AliHLTLibHandle>::iterator element=fLibraryList.begin();
   while (element!=fLibraryList.end()) {
+#ifdef HAVE_DLFCN_H
     dlclose(*element);
+#else
+    TString* libraryPath=reinterpret_cast<TString*>(*element);
+    gSystem->Unload(libraryPath->Data());
+    delete libraryPath;
+#endif //HAVE_DLFCN_H
     element++;
   }
   return iResult;
index df29649..2fc1734 100644 (file)
@@ -43,11 +43,11 @@ AliHLTConfiguration::AliHLTConfiguration()
   fComponent(NULL),
   fStringSources(NULL),
   fNofSources(-1),
+  fListSources(),
+  fListSrcElement(),
   fArguments(NULL),
   fArgc(-1),
-  fArgv(NULL),
-  fListSources(),
-  fListSrcElement()
+  fArgv(NULL)
 { 
   fListSrcElement=fListSources.begin();
 }
@@ -58,11 +58,11 @@ AliHLTConfiguration::AliHLTConfiguration(const char* id, const char* component,
   fComponent(component),
   fStringSources(sources),
   fNofSources(-1),
+  fListSources(),
+  fListSrcElement(),
   fArguments(arguments),
   fArgc(-1),
-  fArgv(NULL),
-  fListSources(),
-  fListSrcElement()
+  fArgv(NULL)
 {
   fListSrcElement=fListSources.begin();
   if (id && component) {
@@ -76,15 +76,17 @@ AliHLTConfiguration::AliHLTConfiguration(const char* id, const char* component,
 
 AliHLTConfiguration::AliHLTConfiguration(const AliHLTConfiguration&)
   :
+  TObject(),
+  AliHLTLogging(),
   fID(NULL),
   fComponent(NULL),
   fStringSources(NULL),
   fNofSources(-1),
+  fListSources(),
+  fListSrcElement(),
   fArguments(NULL),
   fArgc(-1),
-  fArgv(NULL),
-  fListSources(),
-  fListSrcElement()
+  fArgv(NULL)
 { 
   fListSrcElement=fListSources.begin();
   HLTFatal("copy constructor untested");
@@ -366,36 +368,37 @@ AliHLTTask::AliHLTTask()
   :
   fpConfiguration(NULL),
   fpComponent(NULL),
-  fpBlockDataArray(NULL),
-  fBlockDataArraySize(0),
   fpDataBuffer(NULL),
   fListTargets(),
-  fListDependencies()
+  fListDependencies(),
+  fpBlockDataArray(NULL),
+  fBlockDataArraySize(0)
 {
 }
 
-AliHLTTask::AliHLTTask(AliHLTConfiguration* fConf, AliHLTComponentHandler* pCH)
+AliHLTTask::AliHLTTask(AliHLTConfiguration* pConf)
   :
-  fpConfiguration(NULL),
+  fpConfiguration(pConf),
   fpComponent(NULL),
-  fpBlockDataArray(NULL),
-  fBlockDataArraySize(0),
   fpDataBuffer(NULL),
   fListTargets(),
-  fListDependencies()
+  fListDependencies(),
+  fpBlockDataArray(NULL),
+  fBlockDataArraySize(0)
 {
-  Init(fConf, pCH);
 }
 
 AliHLTTask::AliHLTTask(const AliHLTTask&)
   :
+  TObject(),
+  AliHLTLogging(),
   fpConfiguration(NULL),
   fpComponent(NULL),
-  fpBlockDataArray(NULL),
-  fBlockDataArraySize(0),
   fpDataBuffer(NULL),
   fListTargets(),
-  fListDependencies()
+  fListDependencies(),
+  fpBlockDataArray(NULL),
+  fBlockDataArraySize(0)
 {
   HLTFatal("copy constructor untested");
 }
@@ -414,29 +417,42 @@ AliHLTTask::~AliHLTTask()
   fpBlockDataArray=NULL;
 }
 
-int AliHLTTask::Init(AliHLTConfiguration* fConf, AliHLTComponentHandler* pCH)
+int AliHLTTask::Init(AliHLTConfiguration* pConf, AliHLTComponentHandler* pCH)
 {
   int iResult=0;
-  if (fConf) {
-    fpConfiguration=fConf;
+  if (fpConfiguration!=NULL && fpConfiguration!=pConf) {
+    HLTWarning("overriding previous reference to configuration object %p (%s) by %p",
+              fpConfiguration, GetName(), pConf);
+  }
+  if (pConf!=NULL) fpConfiguration=pConf;
+  if (fpConfiguration) {
     if (pCH) {
       int argc=0;
       const char** argv=NULL;
-      if ((iResult=fConf->GetArguments(&argv))>=0) {
+      if ((iResult=fpConfiguration->GetArguments(&argv))>=0) {
        argc=iResult; // just to make it clear
-       iResult=pCH->CreateComponent(fConf->GetComponentID(), NULL, argc, argv, fpComponent);
+       iResult=pCH->CreateComponent(fpConfiguration->GetComponentID(), NULL, argc, argv, fpComponent);
        if (fpComponent) {
        } else {
-         HLTError("can not find component \"%s\"", fConf->GetComponentID());
+         HLTError("can not find component \"%s\"", fpConfiguration->GetComponentID());
        }
       }
+    } else {
+      HLTError("component handler instance needed for task initialization");
+      iResult=-EINVAL;
     }
   } else {
+    HLTError("configuration object instance needed for task initialization");
     iResult=-EINVAL;
   }
   return iResult;
 }
 
+int AliHLTTask::Deinit()
+{
+  return 0;
+}
+
 const char *AliHLTTask::GetName() const
 {
   if (fpConfiguration)
index c937ddf..7a4a773 100644 (file)
@@ -48,6 +48,8 @@ AliHLTConsumerDescriptor::AliHLTConsumerDescriptor(AliHLTComponent* pConsumer)
 
 AliHLTConsumerDescriptor::AliHLTConsumerDescriptor(const AliHLTConsumerDescriptor& desc)
   :
+  TObject(),
+  AliHLTLogging(),
   fpConsumer(desc.fpConsumer),
   fSegments()
 {
@@ -141,6 +143,8 @@ AliHLTDataBuffer::AliHLTDataBuffer()
 
 AliHLTDataBuffer::AliHLTDataBuffer(const AliHLTDataBuffer&)
   :
+  TObject(),
+  AliHLTLogging(),
   fSegments(),
   fConsumers(),
   fActiveConsumers(),
index 18efe0c..00e111b 100644 (file)
@@ -83,7 +83,7 @@ struct AliHLTRawBuffer {
  *
  * @ingroup alihlt_system
  */
-class AliHLTConsumerDescriptor : public AliHLTLogging, public TObject {
+class AliHLTConsumerDescriptor : public TObject, public AliHLTLogging {
  private:
   AliHLTComponent* fpConsumer;
   vector<AliHLTDataSegment> fSegments;
@@ -163,7 +163,7 @@ class AliHLTConsumerDescriptor : public AliHLTLogging, public TObject {
  *
  * @ingroup alihlt_system
  */
-class AliHLTDataBuffer : public AliHLTLogging, public TObject {
+class AliHLTDataBuffer : public TObject, public AliHLTLogging {
  public:
   ////////////////////////////////////////////////////////////////////////////////////////////////////////////////
   // condtructors and destructors
index 83d8293..e67b70e 100644 (file)
@@ -47,6 +47,13 @@ int AliHLTDataSink::ProcessEvent( const AliHLTComponent_EventData& evtData,
                                    AliHLTComponent_EventDoneData*& edd )
 {
   int iResult=0;
+  if (outputPtr==NULL
+      && size==0 
+      && outputBlockCnt==0 
+      && outputBlocks==NULL
+      && edd==NULL) {
+    // this is currently just to get rid of the warning "unused parameter"
+  }
   vector<AliHLTComponent_BlockData> blockData;
   iResult=DumpEvent(evtData, blocks, trigData);
   return iResult;
index ad053ca..3bf57c1 100644 (file)
@@ -47,6 +47,9 @@ int AliHLTDataSource::ProcessEvent( const AliHLTComponent_EventData& evtData,
                                    AliHLTComponent_EventDoneData*& edd )
 {
   int iResult=0;
+  if (blocks) {
+    // this is currently just to get rid of the warning "unused parameter"
+  }
   vector<AliHLTComponent_BlockData> blockData;
   if (evtData.fBlockCnt > 0) {
     HLTWarning("Data source component skips imput data blocks");
index 3e5cad9..2650e6e 100644 (file)
@@ -39,18 +39,18 @@ ClassImp(AliHLTLogging)
 
 AliHLTLogging::AliHLTLogging()
   :
-  fpDefaultKeyword(NULL),
-  fpCurrentKeyword(NULL),
   //fLocalLogFilter(kHLTLogDefault),
-  fLocalLogFilter(kHLTLogAll)
+  fLocalLogFilter(kHLTLogAll),
+  fpDefaultKeyword(NULL),
+  fpCurrentKeyword(NULL)
 {
 }
 
 AliHLTLogging::AliHLTLogging(const AliHLTLogging&)
   :
+  fLocalLogFilter(kHLTLogAll),
   fpDefaultKeyword(NULL),
-  fpCurrentKeyword(NULL),
-  fLocalLogFilter(kHLTLogAll)
+  fpCurrentKeyword(NULL)
 {
   HLTFatal("copy constructor untested");
 }
@@ -79,6 +79,9 @@ int AliHLTLogging::Init(AliHLTfctLogging pFun)
 
 int AliHLTLogging::Message(void *param, AliHLTComponent_LogSeverity severity, const char* origin, const char* keyword, const char* message) {
   int iResult=0;
+  if (param==NULL) {
+    // this is currently just to get rid of the warning "unused parameter"
+  }
   const char* strSeverity="";
   switch (severity) {
   case kHLTLogBenchmark: 
index 1414763..f140e0d 100644 (file)
@@ -62,6 +62,7 @@ AliHLTSystem::AliHLTSystem()
 
 AliHLTSystem::AliHLTSystem(const AliHLTSystem&)
   :
+  AliHLTLogging(),
   fpComponentHandler(NULL),
   fpConfigurationHandler(NULL),
   fTaskList()
@@ -92,18 +93,33 @@ AliHLTSystem::~AliHLTSystem()
 int AliHLTSystem::AddConfiguration(AliHLTConfiguration* pConf)
 {
   int iResult=0;
+  if (pConf) {
+  } else {
+    iResult=-EINVAL;
+  }
   return iResult;
 }
 
 int AliHLTSystem::InsertConfiguration(AliHLTConfiguration* pConf, AliHLTConfiguration* pPrec)
 {
   int iResult=0;
+  if (pConf) {
+    if (pPrec) {
+      // find the position
+    }
+  } else {
+    iResult=-EINVAL;
+  }
   return iResult;
 }
 
 int AliHLTSystem::DeleteConfiguration(AliHLTConfiguration* pConf)
 {
   int iResult=0;
+  if (pConf) {
+  } else {
+    iResult=-EINVAL;
+  }
   return iResult;
 }
 
@@ -122,7 +138,7 @@ int AliHLTSystem::BuildTaskList(AliHLTConfiguration* pConf)
        HLTError("configuration \"%s\" has unresolved sources, aborting ...", pConf->GetName());
        iResult=-ENOLINK;
     } else {
-      pTask=new AliHLTTask(pConf, NULL);
+      pTask=new AliHLTTask(pConf);
       if (pTask==NULL) {
        iResult=-ENOMEM;
       }
@@ -244,10 +260,67 @@ void AliHLTSystem::PrintTaskList()
   }
 }
 
-int AliHLTSystem::Run() 
+int AliHLTSystem::Run(Int_t iNofEvents) 
 {
   int iResult=0;
-  HLTError("function not yet implemented");
-  iResult=-ENOSYS;
+  if ((iResult=StartTasks())>=0) {
+    for (int i=0; i<iNofEvents && iResult>=0; i++) {
+      iResult=ProcessTasks(i);
+    }
+    StopTasks();
+  } else {
+    HLTError("can not start task list");
+  }
+  return iResult;
+}
+
+int AliHLTSystem::StartTasks()
+{
+  int iResult=0;
+  TObjLink *lnk=fTaskList.FirstLink();
+  while (lnk && iResult>=0) {
+    TObject* obj=lnk->GetObject();
+    if (obj) {
+      AliHLTTask* pTask=(AliHLTTask*)obj;
+      iResult=pTask->StartRun();
+    } else {
+    }
+    lnk = lnk->Next();
+  }
+  if (iResult<0) {
+  }
+  return iResult;
+}
+
+int AliHLTSystem::ProcessTasks(Int_t eventNo)
+{
+  int iResult=0;
+  HLTDebug("processing event no %d", eventNo);
+  TObjLink *lnk=fTaskList.FirstLink();
+  while (lnk && iResult>=0) {
+    TObject* obj=lnk->GetObject();
+    if (obj) {
+      AliHLTTask* pTask=(AliHLTTask*)obj;
+      iResult=pTask->ProcessTask();
+    } else {
+    }
+    lnk = lnk->Next();
+  }
+  return iResult;
+}
+
+int AliHLTSystem::StopTasks()
+{
+  int iResult=0;
+  TObjLink *lnk=fTaskList.FirstLink();
+  while (lnk && iResult>=0) {
+    TObject* obj=lnk->GetObject();
+    if (obj) {
+      AliHLTTask* pTask=(AliHLTTask*)obj;
+      iResult=pTask->EndRun();
+    } else {
+    }
+    lnk = lnk->Next();
+  }
   return iResult;
 }
index eccb368..77b2283 100644 (file)
@@ -114,9 +114,36 @@ class AliHLTSystem : public AliHLTLogging {
    */
   void PrintTaskList();
 
-  /* run the task list
+  /**
+   * Run the task list.
+   * All tasks of the list will be subsequently processed for each event.
+   * @param iNofEvents number of events
+   * @return neg error code if failed
+   */
+  int Run(Int_t iNofEvents=1);
+
+  /**
+   * Start task list.
+   * The @ref AliHLTTask::StartRun method is called for each task, the components
+   * will be prepared for event processing.
+   * @return neg error code if failed
+   */
+  int StartTasks();
+
+  /**
+   * Process task list.
+   * The @ref AliHLTTask::ProcessTask method is called for each task.
+   * @return neg error code if failed
+   */
+  int ProcessTasks(Int_t eventNo);
+
+  /**
+   * Stop task list.
+   * The @ref AliHLTTask::EndRun method is called for each task, the components
+   * will be cleaned after event processing.
+   * @return neg error code if failed
    */
-  int Run();
+  int StopTasks();
 
  protected:
   int ProcessTask();
@@ -131,7 +158,7 @@ class AliHLTSystem : public AliHLTLogging {
   TList fTaskList;
 
  private:
-  ClassDef(AliHLTSystem, 0);
+  ClassDef(AliHLTSystem, 1);
 };
 #endif
 
index 394dbcb..43898fc 100644 (file)
@@ -29,11 +29,15 @@ class AliHLTComponentHandler;
  * A task collects all the information which is necessary to process a certain
  * step in the HLT data processing chain.
  * - the instance of the component
+ *   the task object creates and deletes the component object
  * - the data buffer which receives the result of the component and provides
  *   the data to other tasks/components
  * - a list of all dependencies
  * - a list of consumers
- * - the task object holds the configuration object 
+ * - the task object holds an external pointer to the configuration object; 
+ *   \b Note: the configuration object must exist through the existence of the
+ *   task object!!!
+ *  
  *
  * @note This class is only used for the @ref alihlt_system.
  *
@@ -45,9 +49,8 @@ class AliHLTTask : public TObject, public AliHLTLogging {
   AliHLTTask();
   /** constructor 
       @param pConf pointer to configuration descriptor
-      @param pCH   the HLT component handler
    */
-  AliHLTTask(AliHLTConfiguration* pConf, AliHLTComponentHandler* pCH);
+  AliHLTTask(AliHLTConfiguration* pConf);
   /** not a valid copy constructor, defined according to effective C++ style */
   AliHLTTask(const AliHLTTask&);
   /** not a valid assignment op, but defined according to effective C++ style */
@@ -59,12 +62,19 @@ class AliHLTTask : public TObject, public AliHLTLogging {
    * Initialize the task.
    * The task is initialized with a configuration descriptor. It needs a
    * component handler instance to create the analysis component.
-   * @param pConf pointer to configuration descriptor
+   * @param pConf pointer to configuration descriptor, can be NULL if it
+   *              was already provided to the constructor
    * @param pCH   the HLT component handler
    */
   int Init(AliHLTConfiguration* pConf, AliHLTComponentHandler* pCH);
 
   /**
+   * De-Initialize the task.
+   * Final cleanup after the run. The analysis component is deleted.
+   */
+  int Deinit();
+
+  /**
    * Get the name of the object.
    * This is an overridden TObject function in order to return the configuration
    * name instead of the class name. Enables use of TList standard functions.
@@ -269,9 +279,9 @@ class AliHLTTask : public TObject, public AliHLTLogging {
   int GetNofSources() {return fListDependencies.GetSize();}
 
  private:
-  /** the configuration descriptor */
+  /** the configuration descriptor (external pointer) */
   AliHLTConfiguration* fpConfiguration;
-  /** the component described by this task */
+  /** the component described by this task (created and deleted by the task object) */
   AliHLTComponent* fpComponent;
   /** the data buffer for the component processing */
   AliHLTDataBuffer* fpDataBuffer;
@@ -289,7 +299,7 @@ class AliHLTTask : public TObject, public AliHLTLogging {
   /** size of the block data array */
   int fBlockDataArraySize;
 
-  ClassDef(AliHLTTask, 0);
+  ClassDef(AliHLTTask, 1);
 };
 
 #endif
index 479bd00..91330bb 100644 (file)
@@ -15,6 +15,8 @@
 #pragma link C++ class AliHLTTask;
 #pragma link C++ class AliHLTLogging;
 #pragma link C++ class AliHLTDataBuffer;
+#pragma link C++ class AliHLTDataSource;
+#pragma link C++ class AliHLTDataSink;
 
 #endif
 
index 1deb437..754e90c 100644 (file)
@@ -5,6 +5,8 @@ MODULE                          = HLTbase
 
 AM_CPPFLAGS                    = -DMODULE=$(MODULE)
 
+bin_SCRIPTS                    = setenv.sh setenv.csh
+
 # library definition
 lib_LTLIBRARIES                        =  libHLTbase.la
 
@@ -36,9 +38,8 @@ CLASS_HDRS                    =  AliHLTComponent.h \
 pkginclude_HEADERS             =  $(CLASS_HDRS) \
                                   AliHLTDataTypes.h \
                                   AliHLT_C_Component_WrapperInterface.h \
-                                  AliHLTDefinitions.h
-
-noinst_HEADERS                 =  AliHLTStdIncludes.h
+                                  AliHLTDefinitions.h \
+                                  AliHLTStdIncludes.h
 
 # version info for the library
 libHLTbase_la_LDFLAGS          =  -version-info 1:1:0
diff --git a/HLT/BASE/setenv.csh.in b/HLT/BASE/setenv.csh.in
new file mode 100644 (file)
index 0000000..e7798e7
--- /dev/null
@@ -0,0 +1,27 @@
+#!/bin/csh
+# setup script for the alice-hlt package
+# the LD_LIBRARY_PATH variable is set according to the package configuration
+
+set prefix=@prefix@
+set exec_prefix=@exec_prefix@
+set bindir=@bindir@
+set libdir=@libdir@
+
+setenv ROOTSYS @ROOTSYS@
+set ADD_LIBDIR=
+set ADD_LIBDIR="$ADD_LIBDIR @ROOTLIBDIR@"
+set ADD_LIBDIR="$ADD_LIBDIR @ALIROOTLIBDIR@"
+set ADD_LIBDIR="$ADD_LIBDIR ${libdir}"
+set ADD_LIBDIR="$ADD_LIBDIR @HOMER_LIBDIR@"
+if ( $?LD_LIBRARY_PATH == 0 ) setenv LD_LIBRARY_PATH ""
+foreach i ($ADD_LIBDIR)
+  setenv LD_LIBRARY_PATH "${i}:$LD_LIBRARY_PATH"
+end
+
+set ADD_BINDIR=
+set ADD_BINDIR="$ADD_BINDIR $bindir"
+set ADD_BINDIR="$ADD_BINDIR @HOMER_BINDIR@"
+if ( $?PATH == 0 ) setenv PATH ""
+foreach i ($ADD_BINDIR)
+  setenv PATH "${i}:$PATH"
+end
diff --git a/HLT/BASE/setenv.sh.in b/HLT/BASE/setenv.sh.in
new file mode 100644 (file)
index 0000000..49004eb
--- /dev/null
@@ -0,0 +1,19 @@
+#!/bin/bash
+# setup script for the alice-hlt package
+# the LD_LIBRARY_PATH variable is set according to the package configuration
+
+prefix=@prefix@
+exec_prefix=@exec_prefix@
+bindir=@bindir@
+libdir=@libdir@
+
+export ROOTSYS=@ROOTSYS@ 
+ADD_LIBDIR="$ADD_LIBDIR @ROOTLIBDIR@"
+ADD_LIBDIR="$ADD_LIBDIR @ALIROOTLIBDIR@"
+ADD_LIBDIR="$ADD_LIBDIR ${libdir}"
+ADD_LIBDIR="$ADD_LIBDIR @HOMER_LIBDIR@"
+for i in $ADD_LIBDIR ; do export LD_LIBRARY_PATH="$i:$LD_LIBRARY_PATH"; done
+
+ADD_BINDIR="$ADD_BINDIR $bindir"
+ADD_BINDIR="$ADD_BINDIR @HOMER_BINDIR@"
+for i in $ADD_BINDIR ; do export PATH="${i}:$PATH"; done
index 6220e8c..ab3fcac 100644 (file)
@@ -1,3 +1,9 @@
+2006-11-30 intermediate version
+       - setup scripts for running environment added
+       - ComponentHandler takes ROOT dynamic library loader as fallback if
+         dlopen is not available
+       - minor changes to avoid effC++ and other warnings
+       - work on the Task chain processing
 2006-11-08
        - configure adapted to the new directory structure of the HOMER module in
          PubSub
index 0dc2c41..a77b683 100644 (file)
@@ -33,6 +33,7 @@ dnl Check for ROOT
 dnl
 ROOT_PATH(, [have_root=1], [AC_ERROR([Stop! The HLT package needs ROOT.])])
 AM_CONDITIONAL(HAVE_ROOT, test "x$have_root" = "x1" )
+AC_SUBST([ROOTSYS])
 
 dnl ------------------------------------------------------------------
 # TODO: make this configurable through arguments
@@ -225,15 +226,12 @@ if test ! "x$have_aliroot" = "xno" ; then
   CPPFLAGS=$save_CPPFLAGS
   LDFLAGS=$save_LDFLAGS
   LIBS=$save_LIBS
-  if test ! "x$have_aliroot" = "xno" ; then
-    CPPFLAGS="$CPPFLAGS -DALIROOTVERSION=\\\"Unknown\\\""
-  fi
 fi
 AC_LANG_POP(C++)
 AC_SUBST([ALIROOT_CPPFLAGS])
 AC_SUBST([ALIROOT_LDFLAGS])
+AC_SUBST([ALIROOTLIBDIR])
 AC_SUBST([ALIROOT_LIBS])
-CPPFLAGS="$CPPFLAGS -DROOTVERSION=\\\"`${ROOTCONF} --version`\\\""
 
 dnl ------------------------------------------------------------------
 dnl check for the HLT PubSub Framework
@@ -268,7 +266,9 @@ if test "x$with_pubsub" != "xno" ; then
     # fall back if include files were not installed (versions before Sep 06)
     HOMER_CPPFLAGS="-I${with_pubsub}/src/Util/HOMER/reader/include -I${with_pubsub}/src/Util/HOMER/data/include"
   fi
-  HOMER_LDFLAGS="-L${with_pubsub}/lib/`uname -s`-`uname -m`"
+  HOMER_BINDIR="${with_pubsub}/bin/`uname -s`-`uname -m`"
+  HOMER_LIBDIR="${with_pubsub}/lib/`uname -s`-`uname -m`"
+  HOMER_LDFLAGS="-L${HOMER_LIBDIR}"
   CPPFLAGS="$save_CPPFLAGS $HOMER_CPPFLAGS"
   LDFLAGS="$save_LDFLAGS $HOMER_LDFLAGS"
   LIBS="$save_LIBS "
@@ -310,6 +310,8 @@ if test "x$with_pubsub" != "xno" ; then
 fi
 AC_SUBST([HOMER_CPPFLAGS])
 AC_SUBST([HOMER_LDFLAGS])
+AC_SUBST([HOMER_LIBDIR])
+AC_SUBST([HOMER_BINDIR])
 AC_SUBST([HOMER_LIBS])
 
 dnl ------------------------------------------------------------------
@@ -420,6 +422,18 @@ fi
 AC_MSG_RESULT([$enable_rowhough])
 
 dnl ------------------------------------------------------------------
+dnl The ROOTVERSION and ALIROOTVERSION defines were used by the old
+dnl stand-alone build system. This is most likely something old we can
+dnl get rid off later, or do something more reasonable. Since the define
+dnl needs the quotes they have to be  escaped. This works well for the
+dnl Makefile but not for the configure script. So we have to add the
+dnl defines after all the other checks.
+CPPFLAGS="$CPPFLAGS -DROOTVERSION=\\\"`${ROOTCONF} --version`\\\""
+if test ! "x$have_aliroot" = "xno" ; then
+  CPPFLAGS="$CPPFLAGS -DALIROOTVERSION=\\\"Unknown\\\""
+fi
+
+dnl ------------------------------------------------------------------
 dnl
 dnl Documentation
 dnl
@@ -447,6 +461,8 @@ fi
 dnl ------------------------------------------------------------------
 AC_CONFIG_FILES([Makefile 
                 BASE/Makefile
+                BASE/setenv.sh
+                BASE/setenv.csh
                 SampleLib/Makefile
                 TPCLib/Makefile
                 TPCLib/mapping2array.cxx