Hi, hard to give you specific tipps for your own extensions but typically there 
are two reasons that lead to missing binaries in packages:


(1)    The dependencies could not be found because they are not located in the 
search paths

(2)    You do either not link during link-time to the dependencies but 
dynamically in runtime either directly or indirectly because of the plugin 
architecture.

As far as I know CPack crawls the executables low-level to figure out their 
true dependencies. As soon as it found a link to VMTK for example it is 
supposed to add the VMTK libraries to the package. There’s one place in the 
whole packaging script where we tell CPack/Cmake about the executables and the 
plugins as they are no link-time dependencies of the executables.

I’m not sure about (1) as on macOS dependencies tend to be written in absolute 
paths in the binaries. You can easily check the depednencies with the otool (-L 
parameter). Usually you’ll get an idea whats going on especially when comparing 
your packaged binaries with the build-tree binaries.

Besides all that, I would recommend to perform the install step of VMTK in the 
superbuild. We already set the install path of all external projects to the ep 
folder. If VMTK does not provide the typical Targets.cmake file you still have 
the PackageConfig files in CMake/PackageDepends to set things up and/or the 
possibility to add a FindVMTK.cmake file to the CMake folder.

From: José Alonso Solís Lemus [mailto:alonso.j...@gmail.com]
Sent: Tuesday, June 25, 2019 2:01 PM
To: Dinkelacker, Stefan <s.dinkelac...@dkfz-heidelberg.de>
Cc: mitk-users@lists.sourceforge.net
Subject: Re: [mitk-users] [Migrating to MITK v2018.04.2] Problems with external 
applications

Dear all,

We are experiencing a problem packaging our application in macOS.

First, let me provide some context. We are implementing our application running 
as an external project over an MITK build (2018.04.2), we followed the 
Extension project template and through recent time and help from this mailing 
list, we managed to make our project compile in both ubuntu and macOS. We are 
also using an external project (VMTK), which is cloned and built into the 
ep/src successfully.

The problem we are running into comes when packaging, i.e running a make 
package in the MITK-build directory. Everything seems to be linked and copied 
correctly, except for our external project VMTK. I'll first get errors 
regarding libraries not being copied correctly, and when actually trying to 
link the files, we get the bigger error that stops the packaging:


208/530: copying '@rpath/libvtkvmtkComputationalGeometry.dylib'

Error copying file "@rpath/libvtkvmtkComputationalGeometry.dylib" to 
"/path/to/mitk-super/MITK-build/_CPack_Packages/Darwin/DragNDrop/MITK-v2018.04.2-local_changes-macos-x86_64/MitkMainApp.app/Contents/MacOS/libvtkvmtkComputationalGeometry.dylib".

...

...

error: /Library/Developer/CommandLineTools/usr/bin/install_name_tool: can't 
open file: 
/path/to/mitk-super/MITK-build/_CPack_Packages/Darwin/DragNDrop/MITK-v2018.04.2-local_changes-macos-x86_64/MitkMainApp.app/Contents/MacOS/libvtkvmtkCommon.dylib
 (No such file or directory)

CMake Error at /path/to/mitk-src/CMake/BundleUtilities.cmake:883 (message):

  Command failed:



   'install_name_tool' '-id' '@executable_path/../MacOS/libvtkvmtkCommon.dylib' 
'/path/to/mitk-super/MITK-build/_CPack_Packages/Darwin/DragNDrop/MITK-v2018.04.2-local_changes-macos-x86_64/MitkMainApp.app/Contents/MacOS/libvtkvmtkCommon.dylib'



I have two hypotheses as to why this is happening and how to fix it:
First: VMTK does not have an install target built, therefore it is not possible 
to do a make install, and its libraries are not being copied into the ep/lib/ 
folder.
Second: I remember the FixMacOSInstaller.cmake file, which is not linking any 
of the libraries from the external projects. I thought I could add something 
there.. but I'm not sure how.

I wonder if (in the meantime) it would suffice to copy VMTK's libraries (which 
are properly being generated) into the ep/lib folder. Any ideas?

Thank you very much for your time, looking forward to your answer.

Kind regards,
José Alonso

On Wed, 5 Jun 2019 at 09:07, Dinkelacker, Stefan 
<s.dinkelac...@dkfz-heidelberg.de<mailto:s.dinkelac...@dkfz-heidelberg.de>> 
wrote:
Thank you! We plan to add an example app in near future to the project template 
and your input will probably save us quite some time. :-)

Regarding the shortlinks it is a dirty workaround for now as far as I remember. 
The thing is, there shouldn’t be a compile-time or link-time dependence to any 
autoload module, making the autoloading pretty much pointless, right? However, 
we didn’t notice we have one of such a dependency last minute before the actual 
release and it only showed up on macOs so we decided to work around this by 
creating symlinks to autoload modules beside the application executable until 
the affected module is restructured accordingly.

We also run into the CMake warning regarding CMP0042 but as far as I can tell 
it doesn’t lead to any issues.

Best,
Stefan

From: José Alonso Solís Lemus 
[mailto:alonso.j...@gmail.com<mailto:alonso.j...@gmail.com>]
Sent: Tuesday, June 4, 2019 4:46 PM
To: Dinkelacker, Stefan 
<s.dinkelac...@dkfz-heidelberg.de<mailto:s.dinkelac...@dkfz-heidelberg.de>>
Cc: mitk-users@lists.sourceforge.net<mailto:mitk-users@lists.sourceforge.net>
Subject: Re: [mitk-users] [Migrating to MITK v2018.04.2] Problems with external 
applications

Hi all!
Regarding the ID issue, I did three things on the Applications/CMakeLists.txt 
in my project folder. (For context, I have a variable called MY_APP_NAME, which 
I'll reference in the text below:

1. Removed the _plugins variable. Before I would have only the plugins I 
thought I needed for our project, I removed it in favour of building all MITK 
plugins. I added a variable _exclude_plugins which I add to the 
mitkFunctionCreateBlueBerryApplication macro. The excluded plugins are exactly 
the same as the ones set in the Workbench.
2. Added the meta-dependencies.
if(TARGET ${CMAKE_PROJECT_NAME}-autoload)
    add_dependencies(${MY_APP_NAME} ${CMAKE_PROJECT_NAME}-autoload)
endif()
3. Added a build time dependency to  legacy BlueBerry bundles.
  if(MITK_MODULES_ENABLED_PLUGINS)
    add_dependencies(${MY_APP_NAME} ${MITK_MODULES_ENABLED_PLUGINS})
  endif()

After that, it all seemed to work! If it still doesn't make sense for you, I'm 
happy to have a look into my git changes, but I'm 95% sure I did nothing 
outside these three aspects.

Regarding the macOS installation, thank you for the hint. I'll try digging to 
see what can find, the only difference I see is some symlinks being created. 
Although, you did make me question whether I have the right MITK tag (I think I 
have a different one on the Mac than on linux, so I'll check).

The problem I'm seeing is that I see no error or flag being raised. The MITK 
build seems to work perfectly fine, but at the end of the make command, I do 
not see the "[100%] Built target MyApp" I would expect to see and of course, 
the MITK-build/bin folder does not have MyApp anywhere.

The only thing that seems different is when running make, just after the 
summary of all modules being built, I get the following:


CMake Warning (dev):

  Policy CMP0042 is not set: MACOSX_RPATH is enabled by default.  Run "cmake

  --help-policy CMP0042" for policy details.  Use the cmake_policy command to

  set the policy and suppress this warning.



  MACOSX_RPATH is not specified for the following targets:



   CppMicroServices

   TestModuleA

   TestModuleA2

   TestModuleAL

   TestModuleAL2

   TestModuleAL2_1

   TestModuleAL_1

   TestModuleB

   TestModuleH

   TestModuleM

   TestModuleR

   TestModuleRA

   TestModuleRL

   TestModuleS

   TestModuleSL1

   TestModuleSL3

   TestModuleSL4

   mymodule



This warning is for project developers.  Use -Wno-dev to suppress it.

Do you think this is related? I have no idea how to fix this. In fact, I think 
MITK already addresses this?

Will keep in touch :)

Kind regards,
José Alonso

On Tue, 4 Jun 2019 at 13:26, Dinkelacker, Stefan 
<s.dinkelac...@dkfz-heidelberg.de<mailto:s.dinkelac...@dkfz-heidelberg.de>> 
wrote:
Hi, good to hear. Do you have any hints on the missing ID issue?

Regarding macOS packaging, well, it’s complicated and we would need specific 
information on what is going wrong. Getting our packaging script right on macOS 
was a little nightmare and we still have a custom fix script after the actual 
packaging to get things working (maybe that’s already a good hint): 
https://github.com/MITK/MITK/blob/v2018.04.2/CMake/FixMacOSInstaller.cmake

Best,
Stefan

From: José Alonso Solís Lemus 
[mailto:alonso.j...@gmail.com<mailto:alonso.j...@gmail.com>]
Sent: Tuesday, June 4, 2019 12:59 PM
To: Dinkelacker, Stefan 
<s.dinkelac...@dkfz-heidelberg.de<mailto:s.dinkelac...@dkfz-heidelberg.de>>
Cc: mitk-users@lists.sourceforge.net<mailto:mitk-users@lists.sourceforge.net>
Subject: Re: [mitk-users] [Migrating to MITK v2018.04.2] Problems with external 
applications

Hello!

I've managed to compile properly the project properly by following both the 
Diffusion app and the Workbench. It works well on Ubuntu, even the packaging.

Now our focus is building the app for macOS. We have managed to make the 
project compile, however our app is not being packaged properly. Do you have 
any ideas?

Kind regards,
José Alonso

On Fri, 24 May 2019 at 20:02, José Alonso Solís Lemus 
<alonso.j...@gmail.com<mailto:alonso.j...@gmail.com>> wrote:
Hello!

Thank you for your reply. I started following the Workbench. I got it to work 
(compiled+running), it is now not "finding the editor". I followed both the 
Workbench and the Diffusion app. I'll be happy to give more information as 
needed. So if I get it to work, I'll reply back to this thread.

Thank you for confirming I'm on the right track!

Kind regards,
José Alonso

On Fri, 24 May 2019 at 16:45, Dinkelacker, Stefan 
<s.dinkelac...@dkfz-heidelberg.de<mailto:s.dinkelac...@dkfz-heidelberg.de>> 
wrote:
Hi Jose, recently two colleagues stumbled upon the same id problem. One person 
started from the Diffusion app as an example and run into the problem, the 
second person did it as well at the same time but it worked and they continued 
with that version then. It possibly will take a few days but we try to identify 
the difference and may give you an answer. Please tell us if you figure it out 
by yourself, though. :)

From: José Alonso Solís Lemus 
[mailto:alonso.jasl+...@gmail.com<mailto:alonso.jasl%2b...@gmail.com>]
Sent: Thursday, May 23, 2019 4:01 PM
To: mitk-users@lists.sourceforge.net<mailto:mitk-users@lists.sourceforge.net>
Subject: [mitk-users] [Migrating to MITK v2018.04.2] Problems with external 
applications

Dear MITKers,

Thank you very much for your help so far.

We have other inquiries regarding the upgrade of our app. For context, I'll 
repeat some of the things I've said already in this thread. We are in the 
process of migrating our application from v2016.03 to v2018.04.2, following the 
external project template. We used to have an application, for which in the 
2016 build would have its Apps directory, which we took from the external 
project template in v2016.

Right now, we got the MITK build to compile with our external Modules and 
Plugins, some of them even come through nicely in the Workbench. However, as 
mentioned before, we used to have a standalone app developed. The external 
projects template only includes examples for modules, plugins and command line 
applications. I looked through the ./CMakeLists.txt and noticed that it is 
possible to have an Applications folder, so I tried adapting our original Apps 
directory into an Applications, following roughly the Applications folder in 
the MITK source. The whole MITK build finishes successfully, however, when 
trying to run it, we get an error message, which in summary shows the following:

0.325! WARNING: Application launch failed: Application Exception: No 
application id has been found.
...
!0.325! WARNING: Startup error: Application Exception: No application id has 
been found.
...
Segmentation fault (core dumped)

Perhaps a problem with libMitkAppUtil, of some of the CTK libraries? I'm not 
sure. I'm pasting the full error message at the bottom of this.

Specifically, if we're aiming to produce a standalone application in which our 
developments can then be later be packaged into binaries, do we need to do 
something extra that is not in the External Project Template? Is there a place 
we could check how to make it work or perhaps a checklist of places we could 
try looking into?

I hope I explained the problem well, please ask any questions you might still 
have. Looking forward to your response.

Kind regards,
Jose Alonso

Full error:
0.325! WARNING: Application launch failed: Application Exception: No 
application id has been found.
at 0x7f9fe1830837: ??? + 0xe1830837 in 
/home/jsl19/dev/mitk-cemrg/ep/src/CTK-build/CTK-build/bin/libCTKCore.so.0.1
at 0x7f9fe18303a1: ctkBackTrace::ctkBackTrace(unsigned long) + 0xd3 in 
/home/jsl19/dev/mitk-cemrg/ep/src/CTK-build/CTK-build/bin/libCTKCore.so.0.1
at 0x7f9fe18594af: ctkException::ctkException(QString const&) + 0x49 in 
/home/jsl19/dev/mitk-cemrg/ep/src/CTK-build/CTK-build/bin/libCTKCore.so.0.1
at 0x7f9fe8a723c7: ctkApplicationException::ctkApplicationException(int, 
QString const&) + 0x35 in 
/home/jsl19/dev/mitk-cemrg/ep/src/CTK-build/CTK-build/bin/libCTKPluginFramework.so.0.1
at 0x7f9fc4ba538b: ??? + 0xc4ba538b in 
/home/jsl19/dev/mitk-cemrg/MITK-build/lib/plugins/liborg_blueberry_core_runtime.so
at 0x7f9fc4c11287: ??? + 0xc4c11287 in 
/home/jsl19/dev/mitk-cemrg/MITK-build/lib/plugins/liborg_blueberry_core_runtime.so
at 0x7f9fe8a004e7: ??? + 0xe8a004e7 in 
/home/jsl19/dev/mitk-cemrg/ep/src/CTK-build/CTK-build/bin/libCTKPluginFramework.so.0.1
at 0x7f9fe89ffd80: ??? + 0xe89ffd80 in 
/home/jsl19/dev/mitk-cemrg/ep/src/CTK-build/CTK-build/bin/libCTKPluginFramework.so.0.1
at 0x7f9fe8a3307a: ctkPluginFrameworkLauncher::run(QVariant const&) + 0x2f6 in 
/home/jsl19/dev/mitk-cemrg/ep/src/CTK-build/CTK-build/bin/libCTKPluginFramework.so.0.1
at 0x7f9fe8a32981: ctkPluginFrameworkLauncher::run(QRunnable*, QVariant const&) 
+ 0x159 in 
/home/jsl19/dev/mitk-cemrg/ep/src/CTK-build/CTK-build/bin/libCTKPluginFramework.so.0.1
at 0x7f9fe9db79d1: 
mitk::BaseApplication::main(std::vector<std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> >, 
std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> > > > const&) + 0x15d in 
/home/jsl19/dev/mitk-cemrg/MITK-build/lib/libMitkAppUtil.so
at 0x7f9fe87848ae: Poco::Util::Application::run() + 0x6a in 
/home/jsl19/dev/mitk-cemrg/ep/lib/libPocoUtild.so.60
at 0x7f9fe9dba7f4: mitk::BaseApplication::run() + 0x64 in 
/home/jsl19/dev/mitk-cemrg/MITK-build/lib/libMitkAppUtil.so
at 0x401130: ??? + 0x401130 in ./MITK-build/bin/CemrgApp
at 0x7f9fe8ccd830: __libc_start_main + 0xf0 in /lib/x86_64-linux-gnu/libc.so.6
at 0x400f39: ??? + 0x400f39 in ./MITK-build/bin/CemrgApp
!0.325! WARNING: Startup error: Application Exception: No application id has 
been found.
at 0x7f9fe1830837: ??? + 0xe1830837 in 
/home/jsl19/dev/mitk-cemrg/ep/src/CTK-build/CTK-build/bin/libCTKCore.so.0.1
at 0x7f9fe18303a1: ctkBackTrace::ctkBackTrace(unsigned long) + 0xd3 in 
/home/jsl19/dev/mitk-cemrg/ep/src/CTK-build/CTK-build/bin/libCTKCore.so.0.1
at 0x7f9fe18594af: ctkException::ctkException(QString const&) + 0x49 in 
/home/jsl19/dev/mitk-cemrg/ep/src/CTK-build/CTK-build/bin/libCTKCore.so.0.1
at 0x7f9fe8a723c7: ctkApplicationException::ctkApplicationException(int, 
QString const&) + 0x35 in 
/home/jsl19/dev/mitk-cemrg/ep/src/CTK-build/CTK-build/bin/libCTKPluginFramework.so.0.1
at 0x7f9fc4ba538b: ??? + 0xc4ba538b in 
/home/jsl19/dev/mitk-cemrg/MITK-build/lib/plugins/liborg_blueberry_core_runtime.so
at 0x7f9fc4c11287: ??? + 0xc4c11287 in 
/home/jsl19/dev/mitk-cemrg/MITK-build/lib/plugins/liborg_blueberry_core_runtime.so
at 0x7f9fe8a004e7: ??? + 0xe8a004e7 in 
/home/jsl19/dev/mitk-cemrg/ep/src/CTK-build/CTK-build/bin/libCTKPluginFramework.so.0.1
at 0x7f9fe89ffd80: ??? + 0xe89ffd80 in 
/home/jsl19/dev/mitk-cemrg/ep/src/CTK-build/CTK-build/bin/libCTKPluginFramework.so.0.1
at 0x7f9fe8a3307a: ctkPluginFrameworkLauncher::run(QVariant const&) + 0x2f6 in 
/home/jsl19/dev/mitk-cemrg/ep/src/CTK-build/CTK-build/bin/libCTKPluginFramework.so.0.1
at 0x7f9fe8a32981: ctkPluginFrameworkLauncher::run(QRunnable*, QVariant const&) 
+ 0x159 in 
/home/jsl19/dev/mitk-cemrg/ep/src/CTK-build/CTK-build/bin/libCTKPluginFramework.so.0.1
at 0x7f9fe9db79d1: 
mitk::BaseApplication::main(std::vector<std::__cxx11::basic_string<char, 
std::char_traits<char>, std::allocator<char> >, 
std::allocator<std::__cxx11::basic_string<char, std::char_traits<char>, 
std::allocator<char> > > > const&) + 0x15d in 
/home/jsl19/dev/mitk-cemrg/MITK-build/lib/libMitkAppUtil.so
at 0x7f9fe87848ae: Poco::Util::Application::run() + 0x6a in 
/home/jsl19/dev/mitk-cemrg/ep/lib/libPocoUtild.so.60
at 0x7f9fe9dba7f4: mitk::BaseApplication::run() + 0x64 in 
/home/jsl19/dev/mitk-cemrg/MITK-build/lib/libMitkAppUtil.so
at 0x401130: ??? + 0x401130 in ./MITK-build/bin/CemrgApp
at 0x7f9fe8ccd830: __libc_start_main + 0xf0 in /lib/x86_64-linux-gnu/libc.so.6
at 0x400f39: ??? + 0x400f39 in ./MITK-build/bin/CemrgApp
Segmentation fault (core dumped)


--
- José Alonso Solís Lemus -


--
- José Alonso Solís Lemus -


--
- José Alonso Solís Lemus -


--
- José Alonso Solís Lemus -
_______________________________________________
mitk-users mailing list
mitk-users@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mitk-users

Reply via email to