How to reload library map?

Dear Rooters,

Within ROOT. I need update DynamicPath and then reload the map between libraries and classes. But it seems that the map loading is done via TCint::EnableAutoLoading() during ROOT startup and the member "fMapfile" of TCint would be defined at that time which prevents it from updating the map and reloading. For ROOT-5.16 and later, TCint provides a public function LoadLibraryMap(const char *rootmapfile). So I can still add individual mapfile. Is there any way to do reloading the library map? My application together with thousands of libraries runs in ROOT-5.14, so I would like to find a solution feasible with ROOT-5.14.

–Shuwei

Hi Shuwei,

I ran into the same issues . Unfortunately gSystem->SetDynamicPath()
does not rescan the library-maps across the new dynamic path .

In my opinion the proper thing to do is to first unload unload the
shared library maps and then to reload the maps along the new dynamic
path, this way avoiding possible contradictions between old and new maps.

About 2 weeks ago I submitted a patch to Fons that contains this
functionality . I added to TCint the following functions:

  • Int_t RescanLibraryMap();
  • Int_t ReloadAllSharedLibraryMaps();
  • Int_t UnloadAllSharedLibraryMaps();

After setting the new dynmaic path, one has to do a “RescanLibraryMap()”

I attach to this post a “svn diff”.

Eddy
meta.txt (8.94 KB)