BundleUtilities: Avoid a cryptic and unhelpful error message
When the path to "resolved_embedded_item" was shorter than the path to the bundle being fixed up, fixup_bundle would fail with a cmake error like: "string end index: 110 is out of range 0 - 85" Detect when the path of resolved_embedded_item is too short to be embedded in the bundle, and report the proper error message, so the poor developer reading it has a snowball's chance of actually fixing the issue.
This commit is contained in:
parent
8af1eaf499
commit
8f0667c113
|
@ -546,13 +546,25 @@ function(fixup_bundle_item resolved_embedded_item exepath dirs)
|
||||||
#
|
#
|
||||||
get_dotapp_dir("${exepath}" exe_dotapp_dir)
|
get_dotapp_dir("${exepath}" exe_dotapp_dir)
|
||||||
string(LENGTH "${exe_dotapp_dir}/" exe_dotapp_dir_length)
|
string(LENGTH "${exe_dotapp_dir}/" exe_dotapp_dir_length)
|
||||||
|
string(LENGTH "${resolved_embedded_item}" resolved_embedded_item_length)
|
||||||
|
set(path_too_short 0)
|
||||||
|
set(is_embedded 0)
|
||||||
|
if(${resolved_embedded_item_length} LESS ${exe_dotapp_dir_length})
|
||||||
|
set(path_too_short 1)
|
||||||
|
endif()
|
||||||
|
if(NOT path_too_short)
|
||||||
string(SUBSTRING "${resolved_embedded_item}" 0 ${exe_dotapp_dir_length} item_substring)
|
string(SUBSTRING "${resolved_embedded_item}" 0 ${exe_dotapp_dir_length} item_substring)
|
||||||
if(NOT "${exe_dotapp_dir}/" STREQUAL "${item_substring}")
|
if("${exe_dotapp_dir}/" STREQUAL "${item_substring}")
|
||||||
|
set(is_embedded 1)
|
||||||
|
endif()
|
||||||
|
endif()
|
||||||
|
if(NOT is_embedded)
|
||||||
message(" exe_dotapp_dir/='${exe_dotapp_dir}/'")
|
message(" exe_dotapp_dir/='${exe_dotapp_dir}/'")
|
||||||
message(" item_substring='${item_substring}'")
|
message(" item_substring='${item_substring}'")
|
||||||
message(" resolved_embedded_item='${resolved_embedded_item}'")
|
message(" resolved_embedded_item='${resolved_embedded_item}'")
|
||||||
message("")
|
message("")
|
||||||
message("Install or copy the item into the bundle before calling fixup_bundle")
|
message("Install or copy the item into the bundle before calling fixup_bundle.")
|
||||||
|
message("Or maybe there's a typo or incorrect path in one of the args to fixup_bundle?")
|
||||||
message("")
|
message("")
|
||||||
message(FATAL_ERROR "cannot fixup an item that is not in the bundle...")
|
message(FATAL_ERROR "cannot fixup an item that is not in the bundle...")
|
||||||
endif()
|
endif()
|
||||||
|
|
Loading…
Reference in New Issue