From 830dc50136cc1378dc39015553e3a6b83ce8c263 Mon Sep 17 00:00:00 2001 From: TheAssassin Date: Sat, 10 Nov 2018 01:39:55 +0100 Subject: [PATCH 1/3] Avoid recompiling code if excludelist hasn't changed --- src/core/generate-excludelist.sh | 36 +++++++++++++++++++++++++------- 1 file changed, 28 insertions(+), 8 deletions(-) diff --git a/src/core/generate-excludelist.sh b/src/core/generate-excludelist.sh index ccc8b39..6c698b9 100644 --- a/src/core/generate-excludelist.sh +++ b/src/core/generate-excludelist.sh @@ -10,18 +10,29 @@ set -e -# download excludelist -blacklisted=($(wget --quiet https://raw.githubusercontent.com/probonopd/AppImages/master/excludelist -O - | sort | uniq | grep -v "^#.*" | grep "[^-\s]")) +filename=excludelist.h + +tempfile=$(mktemp -t linuxdeploy-excludelist.h-XXXXXX) + +log_prefix="-- [$(basename $0)]" + +echo "$log_prefix downloading excludelist from GitHub" +url="https://raw.githubusercontent.com/probonopd/AppImages/master/excludelist" +blacklisted=($(wget --quiet "$url" -O - | sort | uniq | grep -v "^#.*" | grep "[^-\s]")) # sanity check if [ "$blacklisted" == "" ]; then exit 1; fi -filename=excludelist.h +# make sure to clean up tempfile in case of errors and on exit +_cleanup() { + [ -f "$tempfile" ] && rm "$tempfile" +} +trap _cleanup EXIT # overwrite existing source file -cat > "$filename" < "$tempfile" <<\EOF /* * List of libraries to exclude for different reasons. * @@ -42,10 +53,19 @@ cat > "$filename" < generatedExcludelist = { EOF -# Create array +# create array for item in ${blacklisted[@]:0:${#blacklisted[@]}-1}; do - echo -e ' "'"$item"'",' >> "$filename" + echo -e ' "'"$item"'",' >> "$tempfile" done -echo -e ' "'"${blacklisted[$((${#blacklisted[@]}-1))]}"'"' >> "$filename" +echo -e ' "'"${blacklisted[$((${#blacklisted[@]}-1))]}"'"' >> "$tempfile" -echo "};" >> "$filename" +echo "};" >> "$tempfile" + +# avoid overwriting if the contents have not changed +# this prevents CMake having to recompile half of linuxdeploy even if nothing changed +if [ "$(sha256sum $filename | awk '{print $1}')" != "$(sha256sum $tempfile | awk '{print $1}')" ]; then + echo "$log_prefix changes detected, updating $filename" + cp "$tempfile" "$filename" +else + echo "$log_prefix no changes detected, not touching $filename" +fi From d6e6cac6e016deac4d50acecc46b68dcfea14497 Mon Sep 17 00:00:00 2001 From: TheAssassin Date: Sat, 10 Nov 2018 01:43:36 +0100 Subject: [PATCH 2/3] Move libraries into directories following package path --- include/linuxdeploy/core/appdir.h | 2 +- .../core/{ => desktopfile}/desktopfile.h | 0 .../core/{ => desktopfile}/desktopfileentry.h | 0 src/core/CMakeLists.txt | 14 ++++++++++---- src/core/copyright/CMakeLists.txt | 7 +++++++ src/core/{ => copyright}/copyright.cpp | 0 src/core/{ => copyright}/copyright.h | 0 .../{ => copyright}/copyright_dpkgquery.cpp | 0 src/core/{ => copyright}/copyright_dpkgquery.h | 0 src/core/desktopfile/CMakeLists.txt | 17 +++++++++++++++++ src/core/{ => desktopfile}/desktopfile.cpp | 2 +- src/core/{ => desktopfile}/desktopfileentry.cpp | 2 +- .../{ => desktopfile}/desktopfilereader.cpp | 2 +- src/core/{ => desktopfile}/desktopfilereader.h | 4 ++-- .../{ => desktopfile}/desktopfilewriter.cpp | 0 src/core/{ => desktopfile}/desktopfilewriter.h | 4 ++-- src/main.cpp | 2 +- src/util/CMakeLists.txt | 10 +++++----- tests/core/test_desktopfile.cpp | 4 ++-- tests/core/test_desktopfileentry.cpp | 2 +- tests/core/test_desktopfilereader.cpp | 2 +- tests/core/test_desktopfilewriter.cpp | 4 ++-- 22 files changed, 54 insertions(+), 24 deletions(-) rename include/linuxdeploy/core/{ => desktopfile}/desktopfile.h (100%) rename include/linuxdeploy/core/{ => desktopfile}/desktopfileentry.h (100%) create mode 100644 src/core/copyright/CMakeLists.txt rename src/core/{ => copyright}/copyright.cpp (100%) rename src/core/{ => copyright}/copyright.h (100%) rename src/core/{ => copyright}/copyright_dpkgquery.cpp (100%) rename src/core/{ => copyright}/copyright_dpkgquery.h (100%) create mode 100644 src/core/desktopfile/CMakeLists.txt rename src/core/{ => desktopfile}/desktopfile.cpp (99%) rename src/core/{ => desktopfile}/desktopfileentry.cpp (98%) rename src/core/{ => desktopfile}/desktopfilereader.cpp (99%) rename src/core/{ => desktopfile}/desktopfilereader.h (94%) rename src/core/{ => desktopfile}/desktopfilewriter.cpp (100%) rename src/core/{ => desktopfile}/desktopfilewriter.h (93%) diff --git a/include/linuxdeploy/core/appdir.h b/include/linuxdeploy/core/appdir.h index 22ecf74..35910e4 100644 --- a/include/linuxdeploy/core/appdir.h +++ b/include/linuxdeploy/core/appdir.h @@ -5,7 +5,7 @@ #include // local includes -#include "linuxdeploy/core/desktopfile.h" +#include "linuxdeploy/core/desktopfile/desktopfile.h" #pragma once diff --git a/include/linuxdeploy/core/desktopfile.h b/include/linuxdeploy/core/desktopfile/desktopfile.h similarity index 100% rename from include/linuxdeploy/core/desktopfile.h rename to include/linuxdeploy/core/desktopfile/desktopfile.h diff --git a/include/linuxdeploy/core/desktopfileentry.h b/include/linuxdeploy/core/desktopfile/desktopfileentry.h similarity index 100% rename from include/linuxdeploy/core/desktopfileentry.h rename to include/linuxdeploy/core/desktopfile/desktopfileentry.h diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index e66c23c..493bc9c 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -13,11 +13,17 @@ execute_process( WORKING_DIRECTORY ${CMAKE_CURRENT_BINARY_DIR} ) -add_library(linuxdeploy_core_copyright STATIC copyright.cpp copyright.h copyright_dpkgquery.cpp copyright_dpkgquery.h) -target_link_libraries(linuxdeploy_core_copyright PUBLIC subprocess ${BOOST_LIBS}) +add_library(linuxdeploy_core_log STATIC log.cpp) +target_include_directories(linuxdeploy_core_log PUBLIC ${PROJECT_SOURCE_DIR}/include) -add_library(linuxdeploy_core STATIC elf.cpp log.cpp appdir.cpp desktopfile.cpp desktopfilereader.cpp desktopfileentry.cpp desktopfilewriter.cpp ${HEADERS}) -target_link_libraries(linuxdeploy_core PUBLIC linuxdeploy_plugin linuxdeploy_util ${BOOST_LIBS} subprocess CImg ${CMAKE_THREAD_LIBS_INIT}) +add_subdirectory(copyright) +add_subdirectory(desktopfile) + +add_library(linuxdeploy_core STATIC elf.cpp appdir.cpp ${HEADERS}) +target_link_libraries(linuxdeploy_core PUBLIC + linuxdeploy_plugin linuxdeploy_core_log linuxdeploy_util linuxdeploy_core_desktopfile + ${BOOST_LIBS} CImg ${CMAKE_THREAD_LIBS_INIT} +) target_link_libraries(linuxdeploy_core PRIVATE linuxdeploy_core_copyright) target_include_directories(linuxdeploy_core PRIVATE ${CMAKE_CURRENT_BINARY_DIR}) target_include_directories(linuxdeploy_core PUBLIC ${PROJECT_SOURCE_DIR}/include) diff --git a/src/core/copyright/CMakeLists.txt b/src/core/copyright/CMakeLists.txt new file mode 100644 index 0000000..f24f40a --- /dev/null +++ b/src/core/copyright/CMakeLists.txt @@ -0,0 +1,7 @@ +cmake_minimum_required(VERSION 3.0) + +add_library(linuxdeploy_core_copyright STATIC copyright.cpp copyright.h copyright_dpkgquery.cpp copyright_dpkgquery.h) + +target_link_libraries(linuxdeploy_core_copyright PUBLIC linuxdeploy_util ${BOOST_LIBS}) + +target_include_directories(linuxdeploy_core_copyright PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) diff --git a/src/core/copyright.cpp b/src/core/copyright/copyright.cpp similarity index 100% rename from src/core/copyright.cpp rename to src/core/copyright/copyright.cpp diff --git a/src/core/copyright.h b/src/core/copyright/copyright.h similarity index 100% rename from src/core/copyright.h rename to src/core/copyright/copyright.h diff --git a/src/core/copyright_dpkgquery.cpp b/src/core/copyright/copyright_dpkgquery.cpp similarity index 100% rename from src/core/copyright_dpkgquery.cpp rename to src/core/copyright/copyright_dpkgquery.cpp diff --git a/src/core/copyright_dpkgquery.h b/src/core/copyright/copyright_dpkgquery.h similarity index 100% rename from src/core/copyright_dpkgquery.h rename to src/core/copyright/copyright_dpkgquery.h diff --git a/src/core/desktopfile/CMakeLists.txt b/src/core/desktopfile/CMakeLists.txt new file mode 100644 index 0000000..14919a7 --- /dev/null +++ b/src/core/desktopfile/CMakeLists.txt @@ -0,0 +1,17 @@ +cmake_minimum_required(VERSION 3.0) + +file(GLOB HEADERS ${PROJECT_SOURCE_DIR}/include/linuxdeploy/core/desktopfile/*.h) + +add_library(linuxdeploy_core_desktopfile STATIC + desktopfile.cpp + desktopfileentry.cpp + desktopfilereader.cpp + desktopfilewriter.cpp + desktopfilereader.h + desktopfilewriter.h + ${HEADERS} +) + +target_include_directories(linuxdeploy_core_desktopfile PUBLIC ${CMAKE_CURRENT_SOURCE_DIR}) + +target_link_libraries(linuxdeploy_core_desktopfile PUBLIC linuxdeploy_util linuxdeploy_core_log ${BOOST_LIBS}) diff --git a/src/core/desktopfile.cpp b/src/core/desktopfile/desktopfile.cpp similarity index 99% rename from src/core/desktopfile.cpp rename to src/core/desktopfile/desktopfile.cpp index 7598378..34c2e53 100644 --- a/src/core/desktopfile.cpp +++ b/src/core/desktopfile/desktopfile.cpp @@ -1,5 +1,5 @@ // local headers -#include "linuxdeploy/core/desktopfile.h" +#include "linuxdeploy/core/desktopfile/desktopfile.h" #include "linuxdeploy/core/log.h" #include "desktopfilereader.h" #include "desktopfilewriter.h" diff --git a/src/core/desktopfileentry.cpp b/src/core/desktopfile/desktopfileentry.cpp similarity index 98% rename from src/core/desktopfileentry.cpp rename to src/core/desktopfile/desktopfileentry.cpp index b13d8c2..1f0bda8 100644 --- a/src/core/desktopfileentry.cpp +++ b/src/core/desktopfile/desktopfileentry.cpp @@ -3,7 +3,7 @@ // local headers #include "linuxdeploy/core/log.h" -#include "linuxdeploy/core/desktopfileentry.h" +#include "linuxdeploy/core/desktopfile/desktopfileentry.h" using boost::lexical_cast; diff --git a/src/core/desktopfilereader.cpp b/src/core/desktopfile/desktopfilereader.cpp similarity index 99% rename from src/core/desktopfilereader.cpp rename to src/core/desktopfile/desktopfilereader.cpp index 261509d..1804cb0 100644 --- a/src/core/desktopfilereader.cpp +++ b/src/core/desktopfile/desktopfilereader.cpp @@ -6,7 +6,7 @@ // local headers #include "linuxdeploy/util/util.h" -#include "linuxdeploy/core/desktopfileentry.h" +#include "linuxdeploy/core/desktopfile/desktopfileentry.h" #include "desktopfilereader.h" namespace bf = boost::filesystem; diff --git a/src/core/desktopfilereader.h b/src/core/desktopfile/desktopfilereader.h similarity index 94% rename from src/core/desktopfilereader.h rename to src/core/desktopfile/desktopfilereader.h index 31ba501..a8dff3f 100644 --- a/src/core/desktopfilereader.h +++ b/src/core/desktopfile/desktopfilereader.h @@ -8,8 +8,8 @@ #include // local includes -#include "linuxdeploy/core/desktopfile.h" -#include "linuxdeploy/core/desktopfileentry.h" +#include "linuxdeploy/core/desktopfile/desktopfile.h" +#include "linuxdeploy/core/desktopfile/desktopfileentry.h" namespace linuxdeploy { namespace core { diff --git a/src/core/desktopfilewriter.cpp b/src/core/desktopfile/desktopfilewriter.cpp similarity index 100% rename from src/core/desktopfilewriter.cpp rename to src/core/desktopfile/desktopfilewriter.cpp diff --git a/src/core/desktopfilewriter.h b/src/core/desktopfile/desktopfilewriter.h similarity index 93% rename from src/core/desktopfilewriter.h rename to src/core/desktopfile/desktopfilewriter.h index 91883d6..6a84f84 100644 --- a/src/core/desktopfilewriter.h +++ b/src/core/desktopfile/desktopfilewriter.h @@ -8,8 +8,8 @@ #include // local includes -#include "linuxdeploy/core/desktopfile.h" -#include "linuxdeploy/core/desktopfileentry.h" +#include "linuxdeploy/core/desktopfile/desktopfile.h" +#include "linuxdeploy/core/desktopfile/desktopfileentry.h" namespace linuxdeploy { namespace core { diff --git a/src/main.cpp b/src/main.cpp index bfb489f..82c4cfb 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -7,7 +7,7 @@ // local headers #include "linuxdeploy/core/appdir.h" -#include "linuxdeploy/core/desktopfile.h" +#include "linuxdeploy/core/desktopfile/desktopfile.h" #include "linuxdeploy/core/elf.h" #include "linuxdeploy/core/log.h" #include "linuxdeploy/plugin/plugin.h" diff --git a/src/util/CMakeLists.txt b/src/util/CMakeLists.txt index 99afe5b..d5c396e 100644 --- a/src/util/CMakeLists.txt +++ b/src/util/CMakeLists.txt @@ -1,7 +1,7 @@ -add_library(linuxdeploy_util STATIC subprocess.cpp) -target_sources(linuxdeploy_util INTERFACE - ${PROJECT_SOURCE_DIR}/include/linuxdeploy/util/util.h - ${PROJECT_SOURCE_DIR}/include/linuxdeploy/util/misc.h -) +cmake_minimum_required(VERSION 3.0) + +file(GLOB HEADERS ${PROJECT_SOURCE_DIR}/include/linuxdeploy/util/*.h) + +add_library(linuxdeploy_util STATIC subprocess.cpp ${HEADERS}) target_include_directories(linuxdeploy_util INTERFACE ${CMAKE_CURRENT_SOURCE_DIR} ${PROJECT_SOURCE_DIR}/include) target_link_libraries(linuxdeploy_util PUBLIC subprocess) diff --git a/tests/core/test_desktopfile.cpp b/tests/core/test_desktopfile.cpp index afdcbcf..01d4491 100644 --- a/tests/core/test_desktopfile.cpp +++ b/tests/core/test_desktopfile.cpp @@ -3,8 +3,8 @@ #include // local headers -#include "linuxdeploy/core/desktopfile.h" -#include "../../src/core/desktopfilereader.h" +#include "linuxdeploy/core/desktopfile/desktopfile.h" +#include "../../src/core/desktopfile/desktopfilereader.h" using boost::bad_lexical_cast; using namespace linuxdeploy::core::desktopfile; diff --git a/tests/core/test_desktopfileentry.cpp b/tests/core/test_desktopfileentry.cpp index c3d4407..dc48da1 100644 --- a/tests/core/test_desktopfileentry.cpp +++ b/tests/core/test_desktopfileentry.cpp @@ -4,7 +4,7 @@ #include // local headers -#include "linuxdeploy/core/desktopfileentry.h" +#include "linuxdeploy/core/desktopfile/desktopfileentry.h" using boost::bad_lexical_cast; using namespace linuxdeploy::core::desktopfile; diff --git a/tests/core/test_desktopfilereader.cpp b/tests/core/test_desktopfilereader.cpp index e033786..a85a284 100644 --- a/tests/core/test_desktopfilereader.cpp +++ b/tests/core/test_desktopfilereader.cpp @@ -3,7 +3,7 @@ #include // local headers -#include "../../src/core/desktopfilereader.h" +#include "../../src/core/desktopfile/desktopfilereader.h" using namespace linuxdeploy::core::desktopfile; namespace bf = boost::filesystem; diff --git a/tests/core/test_desktopfilewriter.cpp b/tests/core/test_desktopfilewriter.cpp index 9bb4fd0..342353b 100644 --- a/tests/core/test_desktopfilewriter.cpp +++ b/tests/core/test_desktopfilewriter.cpp @@ -3,8 +3,8 @@ #include // local headers -#include "../../src/core/desktopfilewriter.h" -#include "../../src/core/desktopfilereader.h" +#include "../../src/core/desktopfile/desktopfilewriter.h" +#include "../../src/core/desktopfile/desktopfilereader.h" using namespace linuxdeploy::core::desktopfile; namespace bf = boost::filesystem; From b97c8b45f5e286ff5b76a405eb3b8fd0dbda922c Mon Sep 17 00:00:00 2001 From: TheAssassin Date: Sat, 10 Nov 2018 02:59:31 +0100 Subject: [PATCH 3/3] Fix linking issue --- src/core/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/src/core/CMakeLists.txt b/src/core/CMakeLists.txt index 493bc9c..2817aa3 100644 --- a/src/core/CMakeLists.txt +++ b/src/core/CMakeLists.txt @@ -15,6 +15,7 @@ execute_process( add_library(linuxdeploy_core_log STATIC log.cpp) target_include_directories(linuxdeploy_core_log PUBLIC ${PROJECT_SOURCE_DIR}/include) +target_link_libraries(linuxdeploy_core_log PUBLIC ${BOOST_LIBS}) add_subdirectory(copyright) add_subdirectory(desktopfile)