From 16a1ae3010d92d42398023d5c58c045f3093a245 Mon Sep 17 00:00:00 2001 From: WerWolv Date: Mon, 1 Feb 2021 17:26:05 +0100 Subject: [PATCH] Properly pack all dependencies into nightlies on all platforms (#153) * Properly bundle all files in linux install step * Run make install on linux build * Use correct default magic database * Set default magic db permissions correctly * Fixed magic file detection issues * Don't install default magic file if none was found * Try fix windows packing issues --- .github/workflows/build.yml | 14 +++++++++--- CMakeLists.txt | 1 - cmake/build_helpers.cmake | 44 ++++++++++++++++++++++++------------- 3 files changed, 40 insertions(+), 19 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 615c27ba3..ee20b10a7 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -39,16 +39,24 @@ jobs: - name: ✋ Build run: | + # Get path to magic db + MAGICDB_PATH=$(file --version | grep -oP "(?<=magic file from ).+") + mkdir build cd build - CC=gcc-10 CXX=g++-10 cmake -DCMAKE_BUILD_TYPE=$BUILD_TYPE .. - make -j 4 + CC=gcc-10 CXX=g++-10 cmake \ + -DCMAKE_BUILD_TYPE=$BUILD_TYPE \ + -DCMAKE_INSTALL_PREFIX="$PWD/install" \ + -DEXTRA_MAGICDBS="$MAGICDB_PATH" \ + .. + make -j 4 install - name: 📦 Upload ELF uses: actions/upload-artifact@v2 with: name: Linux ELF - path: build/imhex + path: | + build/install/* win: runs-on: windows-latest diff --git a/CMakeLists.txt b/CMakeLists.txt index 295184d20..08f4b8501 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -18,7 +18,6 @@ set(PLUGINS set(MAGICDBS magic_dbs/nintendo_magic ) -createMagicDbList() findLibraries() diff --git a/cmake/build_helpers.cmake b/cmake/build_helpers.cmake index c5eee0d4c..09371210f 100644 --- a/cmake/build_helpers.cmake +++ b/cmake/build_helpers.cmake @@ -187,17 +187,39 @@ macro(createPackage) ]]) endif() + if (UNIX AND NOT APPLE) + install(TARGETS libimhex DESTINATION ${CMAKE_INSTALL_PREFIX}) + + string(REPLACE ":" ";" EXTRA_MAGICDBS "${EXTRA_MAGICDBS}") + + endif () + + if (NOT EXTRA_MAGICDBS STREQUAL "") + list(GET EXTRA_MAGICDBS -1 EXTRA_MAGICDBS) + + if (NOT EXTRA_MAGICDBS STREQUAL "NOTFOUND") + if (EXTRA_MAGICDBS MATCHES ".*\\.mgc") + install(FILES "${EXTRA_MAGICDBS}" DESTINATION magic/) + else () + install(FILES "${EXTRA_MAGICDBS}.mgc" DESTINATION magic/) + endif () + endif () + endif () + # Compile the imhex-specific magicdb add_custom_target(magic_dbs ALL - SOURCES magic_dbs/nintendo_magic + SOURCES ${MAGICDBS} ) add_custom_command(TARGET magic_dbs COMMAND file -C -m ${CMAKE_SOURCE_DIR}/magic_dbs ) + foreach (plugin IN LISTS PLUGINS) + install(FILES "$" DESTINATION plugins/) + endforeach () + # Install the magicdb files. install(FILES ${CMAKE_CURRENT_BINARY_DIR}/magic_dbs.mgc DESTINATION magic/ RENAME imhex.mgc) - install(FILES ${EXTRA_MAGICDBS} DESTINATION magic/) if (CREATE_BUNDLE) include(PostprocessBundle) @@ -216,7 +238,11 @@ macro(createPackage) install(TARGETS imhex BUNDLE DESTINATION .) else() - install(TARGETS imhex RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + if (WIN32) + install(TARGETS imhex RUNTIME DESTINATION ${CMAKE_INSTALL_BINDIR}) + else () + install(TARGETS imhex RUNTIME DESTINATION ${CMAKE_INSTALL_PREFIX}) + endif () endif() @@ -236,18 +262,6 @@ function(JOIN OUTPUT GLUE) set(${OUTPUT} "${_TMP_RESULT}" PARENT_SCOPE) endfunction() -macro(createMagicDbList) - if (DEFINED MAGICDBS) - if (WIN32) - join(EXTRA_MAGICDBS "\;" ${MAGICDBS}) - else() - join(EXTRA_MAGICDBS ":" ${MAGICDBS}) - endif() - else() - set(EXTRA_MAGICDBS "") - endif() -endmacro() - macro(setDefaultBuiltTypeIfUnset) if (NOT CMAKE_BUILD_TYPE AND NOT CMAKE_CONFIGURATION_TYPES) set(CMAKE_BUILD_TYPE "Release" CACHE STRING "Using Release build type as it was left unset" FORCE)