Skip to content
This repository has been archived by the owner on Dec 7, 2018. It is now read-only.

Commit

Permalink
switch from file to readelf for gaining the files hash for the debug …
Browse files Browse the repository at this point in the history
…symbols (arangodb#3410)

* switch from file to readelf for gaining the files hash for the debug symbols.

* sharpen regex

* remove debug
  • Loading branch information
dothebart authored and fceller committed Oct 13, 2017
1 parent 5eaf676 commit db433ea
Show file tree
Hide file tree
Showing 3 changed files with 20 additions and 20 deletions.
2 changes: 1 addition & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -552,7 +552,7 @@ if (USE_MAINTAINER_MODE)
endif ()

include(debugInformation)
find_program(FILE_EXECUTABLE file)
find_program(READELF_EXECUTABLE readelf)
detect_binary_id_type(CMAKE_DEBUG_FILENAMES_SHA_SUM)

################################################################################
Expand Down
36 changes: 18 additions & 18 deletions cmake/debugInformation.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -12,23 +12,23 @@ macro(install_debinfo
if (TLEN EQUAL 0)
message(FATAL_ERROR "empty target specified for creating debug file")
endif()

set(SUB_DEBINFO_DIR ${USER_SUB_DEBINFO_DIR})
set(FILE ${USER_OUTPUT_DIRECTORY}/${USER_TARGET}${CMAKE_EXECUTABLE_SUFFIX})
set(STRIP_FILE ${STRIP_DIR}/${USER_TARGET}${CMAKE_EXECUTABLE_SUFFIX})

if (NOT MSVC AND CMAKE_STRIP AND FILE_EXECUTABLE AND STRIP_FILE)
if (NOT MSVC AND CMAKE_STRIP AND READELF_EXECUTABLE AND STRIP_FILE)
execute_process(COMMAND ${CMAKE_COMMAND} -E make_directory ${STRIP_DIR})
execute_process(COMMAND ${CMAKE_COMMAND} -E remove ${STRIP_FILE})

execute_process(
COMMAND ${FILE_EXECUTABLE} ${FILE}
OUTPUT_VARIABLE FILE_RESULT)
COMMAND ${READELF_EXECUTABLE} -n ${FILE}
OUTPUT_VARIABLE READELF_RESULT)

string(REGEX
REPLACE ".*=([a-z0-9]*),.*" "\\1"
REPLACE ".*ID: *([a-f0-9]*).*" "\\1"
FILE_CHECKSUM
${FILE_RESULT}
"${READELF_RESULT}"
)
string(LENGTH ${FILE_CHECKSUM} FILE_CHECKSUM_LEN)

Expand All @@ -51,17 +51,17 @@ endmacro()
# Detect whether this system has SHA checksums
macro(detect_binary_id_type sourceVar)
set(${sourceVar} false)
if (NOT MSVC AND CMAKE_STRIP AND FILE_EXECUTABLE)
if (NOT MSVC AND CMAKE_STRIP AND READELF_EXECUTABLE)
execute_process(
COMMAND ${FILE_EXECUTABLE} ${FILE_EXECUTABLE}
OUTPUT_VARIABLE FILE_RESULT)
COMMAND ${READELF_EXECUTABLE} -n ${READELF_EXECUTABLE}
OUTPUT_VARIABLE READELF_RESULT)

string(REGEX
REPLACE ".*=([a-z0-9]*),.*" "\\1"
REPLACE ".*ID: *([a-f0-9]*).*" "\\1"
FILE_CHECKSUM
${FILE_RESULT}
"${READELF_RESULT}"
)
string(LENGTH ${FILE_CHECKSUM} FILE_CHECKSUM_LEN)
string(LENGTH "${FILE_CHECKSUM}" FILE_CHECKSUM_LEN)
if (FILE_CHECKSUM_LEN EQUAL 40)
set(${sourceVar} true)
endif()
Expand All @@ -73,7 +73,7 @@ macro(strip_install_bin_and_config
INTERMEDIATE_STRIP_DIR
TARGET_DIR
BIND_TARGET)

string(LENGTH "${TARGET}" TLEN)
if (TLEN EQUAL 0)
message(FATAL_ERROR "empty target specified for creating stripped file")
Expand All @@ -85,10 +85,10 @@ macro(strip_install_bin_and_config
ExternalProject_Add("${TARGET_NAME}"
DEPENDS ${BIND_TARGET}
SOURCE_DIR ${CMAKE_RUNTIME_OUTPUT_DIRECTORY_X}

CONFIGURE_COMMAND ${CMAKE_COMMAND} -E make_directory ${INTERMEDIATE_STRIP_DIR}
COMMENT "creating strip directory"

BUILD_COMMAND ${CMAKE_STRIP} ${FILE} -o ${STRIP_FILE}
COMMENT "stripping binary"
INSTALL_COMMAND ""
Expand Down
2 changes: 1 addition & 1 deletion cmake/packages/dbg/deb.txt
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ set(CMAKE_INSTALL_DEBINFO_DIR @CMAKE_INSTALL_DEBINFO_DIR@)

set(CMAKE_OBJCOPY @CMAKE_OBJCOPY@)

set(FILE_EXECUTABLE @FILE_EXECUTABLE@)
set(READELF_EXECUTABLE @READELF_EXECUTABLE@)

set(INSTALL_CONFIGFILES_LIST)
set(PACKAGING_HANDLE_CONFIG_FILES false)
Expand Down

0 comments on commit db433ea

Please sign in to comment.