View Issue Details

IDProjectCategoryView StatusLast Update
0003051Slicer4Core: Extensionspublic2017-06-07 23:27
Reporterfedorov Assigned Tojcfr  
PriorityhighSeverityblockReproducibilityalways
Status closedResolutionfixed 
Product VersionSlicer 4.2.2-1 
Target VersionSlicer 4.3.0Fixed in VersionSlicer 4.3.0 
Summary0003051: CLI from extensions are not working
Description

The dependency dylb fails to load. Reproducible with SkullStripper / April 4 nightly on Mac.

Error(s):
CLI executable:
/Applications/Slicer-April2/Slicer.app/Contents/Extensions-21855/SkullStripper/cli-modules/SkullStripper
dyld: Library not loaded:
@executable_path/../Extensions-21855/SkullStripper/lib/Slicer-4.2/cli-modules/libSkullStripperLib.dylib
Referenced from:
/Applications/Slicer-April2/Slicer.app/Contents/Extensions-21855/SkullStripper/cli-modules/SkullStripper
Reason: image not found

TagsNo tags attached.

Relationships

has duplicate 0003043 closedfedorov CLI built with ChangeTracker is not accessible in the Slicer 

Activities

jcfr

jcfr

2013-04-16 10:53

administrator   ~0008410

This is specific to extension. Regular module are properly fixed up.
Now looking at file "CMake/SlicerExtensionCPackBundleFixup.cmake.in"

jcfr

jcfr

2013-04-16 15:23

administrator   ~0008417

Testing the following topic: https://github.com/jcfr/Slicer/commit/3accaddad2a4e4385825b201c4305fd01252e736

jcfr

jcfr

2013-04-17 15:15

administrator   ~0008432

While working on this problem, a ITKv4 issue has been identified and reported: https://issues.itk.org/jira/browse/ITK-3026

This ITK issue doesn't yet affect Slicer but may be a problem when we will be using BundleUtilities to also generate package on Linux.

jcfr

jcfr

2013-04-24 14:42

administrator   ~0008486

Toy project allowing to reproduce the problem has been fixed: https://github.com/jcfr/CMakeBundleUtilitiesExample/compare/f7a594ffba72b8cb83df9a166d7887bedc49f38b...75fa538

Will now propose the CMake change to upstream and also test it with Slicer.

kikinis

kikinis

2013-04-29 04:24

developer   ~0008531

what is the status?

jcfr

jcfr

2013-04-29 06:10

administrator   ~0008532

CMake topic: http://cmake.org/gitweb?p=stage/cmake.git;a=shortlog;h=refs/heads/tweak-bundleutilities-for-rpath

Slicer topic: https://github.com/jcfr/Slicer/compare/Slicer:master...3051-fix-cli-execution

Still in the process of testing and tweaking the topic.

jcfr

jcfr

2013-04-30 21:22

administrator   ~0008545

Last edited: 2013-04-30 21:29

Topic that should address the problem is: https://github.com/jcfr/Slicer/compare/3051-fix-cli-execution

Considering this is a major change and that I am leaving tomorrow for two weeks, will be integrating the topic when I return.

In the mean time, developer could test the topic "3051-fix-cli-execution" by:

1) build and packaging of Slicer

2) build and packaging of extension against the build tree obtain in (1)

3) To an experimental build + upload of the extension index, and check that cli can run as either a shared library or as executable.

jcfr

jcfr

2013-05-17 14:17

administrator   ~0008660

Fixed in r22023
See http://viewvc.slicer.org/viewvc.cgi/Slicer4?view=revision&revision=22023

Related Changesets

Slicer: 2145-support-for-installing-extension-from-file 178bd4e1

2013-05-17 18:05:19

jcfr

Details Diff
BUG: Ensure library can be loaded from different place using @rpath

Before this commit, attempt have been made (r18311, r18325, r18581) to
install both built-in CLI and extension CLI executable in a folder
located at some depth of the main Slicer executable. This was needed
because all libraries were referenced based on the location of the main
Slicer executable using "@executable_path". This was working *only* in the
case of built-in CLI but wasn't scaling very well for the extension CLI
executable. Indeed, being able to both differentiate the different
installed extension and keeping the depth to 1 level wasn't easily
feasible:

/path/to/Slicer.app/Contents/MacOS/Slicer
/path/to/Slicer.app/Contents/cli-modules/MyCLI
/path/to/Slicer.app/Contents/Extensions-21855/SkullStripper/cli-modules/MyCLI

A solution could have been to install extensions directly in "Slicer.app"
folder and update the cli install sub dir to get something like:

/path/to/Slicer.app/Extensions-21855/SkullStripper/MyCLI

While possible, it would have remain a special case to maintain.

Instead, by using "@rpath", CLI modules can now be installed in the Slicer
standard location "Slicer_CLIMODULES_LIB_DIR" instead of "Slicer_CLIMODULES_SUBDIR".
This commit remove the special case which never worked (issue 0003051)

Waiting the topic "tweak-bundleutilities-for-rpath" is fully matured and
integrated in CMake, use custom version of BundleUtilities and GetPrerequisites.
See http://cmake.org/gitweb?p=stage/cmake.git;a=shortlog;h=refs/heads/tweak-bundleutilities-for-rpath

Since our custom version of the CMake modules now consider "~/usr/.*/lib",
the implementation of "gp_resolved_file_type_override" has been removed.

Remove the hack specific to LibArchive (introduced by commit r19615), since
the library is fixed up using the default library matching pattern, it
will be installed in the expected location.

SlicerExecutionModel has also been updated to link the CLI executable
and library with "-rpath" so that they can resolve the location of Slicer
libraries.

git-svn-id: http://svn.slicer.org/Slicer4/trunk@22023 3bd1e089-480b-0410-8dfb-8563597acbee
mod - Applications/SlicerApp/CMakeLists.txt Diff File
mod - Base/CLI/CMakeLists.txt Diff File
mod - Base/QTCLI/qSlicerCLIExecutableModuleFactory.cxx Diff File
mod - Base/QTCLI/qSlicerCLIModuleFactoryHelper.cxx Diff File
add - CMake/BundleUtilitiesWithRPath.cmake Diff File
add - CMake/GetPrerequisitesWithRPath.cmake Diff File
mod - CMake/SlicerCPack.cmake Diff File
mod - CMake/SlicerCPackBundleFixup.cmake.in Diff File
mod - CMake/SlicerExtensionCPack.cmake Diff File
mod - CMake/SlicerExtensionCPackBundleFixup.cmake.in Diff File
mod - CMake/UseSlicer.cmake.in Diff File
mod - CMakeLists.txt Diff File
mod - SuperBuild/External_SlicerExecutionModel.cmake Diff File

Issue History

Date Modified Username Field Change
2013-04-04 14:35 fedorov New Issue
2013-04-04 14:35 fedorov Status new => assigned
2013-04-04 14:35 fedorov Assigned To => jcfr
2013-04-04 15:16 jcfr Priority normal => high
2013-04-04 15:16 jcfr Target Version => Slicer 4.3.0
2013-04-16 10:53 jcfr Note Added: 0008410
2013-04-16 15:23 jcfr Note Added: 0008417
2013-04-17 15:15 jcfr Note Added: 0008432
2013-04-24 14:42 jcfr Note Added: 0008486
2013-04-29 04:24 kikinis Note Added: 0008531
2013-04-29 06:10 jcfr Note Added: 0008532
2013-04-30 21:22 jcfr Note Added: 0008545
2013-04-30 21:29 jcfr Note Edited: 0008545
2013-05-17 14:17 jcfr Note Added: 0008660
2013-05-17 14:17 jcfr Status assigned => resolved
2013-05-17 14:17 jcfr Fixed in Version => Slicer 4.3.0
2013-05-17 14:17 jcfr Resolution open => fixed
2013-05-25 12:52 fedorov Status resolved => closed
2013-05-29 17:48 jcfr Relationship added has duplicate 0003043
2017-06-07 23:27 jcfr Changeset attached => Slicer 2145-support-for-installing-extension-from-file 178bd4e1