Page MenuHomePhabricator

Autoload modules not installed on MITK based projects
Closed, ResolvedPublic

Description

It has been reported that projects based on MITK (such as the ProjectTemplate ) have an issue getting their own autoload modules installed. Should be reproducible by the following steps:

  1. Check out the ProjectTemplate
  2. Create an autoload module within the ProjectTemplate
  3. Build installer

Correct:
The autoload module dll is copied during installer build

Expected:
It is not.

The difference to T16505 as I see it is, that this task does not concern itself with collecting the dependencies of the autoload modules, instead just with the autoload module itself.

@zelzer wrote
Hi,

what "application" are you referring to?

BlueBerry based applications are installed such that at some point the MITK install macros call

MITK_INSTALL_TARGETS(EXECUTABLES ${_APP_NAME} LIBRARY_DIRS ${_APP_LIBRARY_DIRS} GLOB_PLUGINS )

and the "GLOB_PLUGINS" options (should) ensure that all "plugins" (qt plugins, ctk plugins, and auto-load modules) are fixed up, which means that their dependencies are pulled in (if they can be found in the used search paths).

If you do "make install VERBOSE=1" and look at the output which prints the list of globbed plugins and search paths, do you see your auto-load module and the search path containing its dependencies?

Cheers,

Sascha

On 11/30/2015 08:44 AM, @engelm
Hi Ralf,

this sounds exactly like the issue described in T16505.
DLLs that are only used in modules that are auto-loaded will not be found correctly when building INSTALL or PACKAGE.

In the bug you mentioned we had a ‘fix/hack’ for this issue by extending mitkFunctionInstallAutoLoadModules()
to return a list of these missing DLLs and installing those ‘manually’.

Right now, we do no longer use this ‘fix’ as it was not considered a good solution by Sascha, but install our missing dependencies hard codedly.

So, I do not have a solution, but I’m facing the same problem!

Best regards,
Markus

From: @floca

Hello,

I have the following setup in my application for a special data format.

I have one Module “MyFormat” which contains some wrapping code and introduces the package dependency to the external data format lib.

Within “MyFormat” I have a sub module “MyFormatIO” which defines some IO services, registers them and should be autoloaded with MitkCore.

If I start the application directly (e.g. From Visual Studio) everything works fine.

If I make a package the DLLs for MyFormat, MyFormatIO and the external package are not copied but forgotten.

May this be correlated with T16505: mitkFunctionInstallAutoLoadModules does not install dependencies?

How can I solve this problem? I would appreciate to not use a hard coded linkage to the module to enforce the install dependency. (I just reworked into autoload, to get read of this ugly hack ;)

Thanks.

Best Regards,
Ralf

Event Timeline

goch triaged this task as Normal priority.

I have made an obversation.

If my ProjectTemplate autoload module is configured in CMAKE to auto load with MITKCore, I have the described problemes.
If I configure it to auto load with a module defined in my ProjectTemplate, packaging works fine and it lands in my installer.

Seems to have been solved with the switch to external directories in T23775: "ExtensionPoint" support for SuperBuild. External autoload modules are included in the installer.