diff --git a/.github/workflows/nightly-debian.yml b/.github/workflows/nightly-debian.yml index f201729db..d24df05a0 100644 --- a/.github/workflows/nightly-debian.yml +++ b/.github/workflows/nightly-debian.yml @@ -9,9 +9,7 @@ env: BUILDDIR: /build SRCDIR: ${{ github.workspace }} CMAKE_ARGS: | - -DWEBVIEW_FORCE_WEBKIT=1 -DKDE_INSTALL_USE_QT_SYS_PATHS=ON - -DWITH_PYTHONQT=OFF" -DCMAKE_BUILD_TYPE=Debug jobs: diff --git a/.github/workflows/nightly-neon.yml b/.github/workflows/nightly-neon.yml index b0c576721..daa04a215 100644 --- a/.github/workflows/nightly-neon.yml +++ b/.github/workflows/nightly-neon.yml @@ -9,9 +9,7 @@ env: BUILDDIR: /build SRCDIR: ${{ github.workspace }} CMAKE_ARGS: | - -DWEBVIEW_FORCE_WEBKIT=1 -DKDE_INSTALL_USE_QT_SYS_PATHS=ON - -DWITH_PYTHONQT=OFF" -DCMAKE_BUILD_TYPE=Debug jobs: diff --git a/.github/workflows/nightly-opensuse.yml b/.github/workflows/nightly-opensuse.yml index 0bc0e74e7..0ad5d058e 100644 --- a/.github/workflows/nightly-opensuse.yml +++ b/.github/workflows/nightly-opensuse.yml @@ -9,9 +9,7 @@ env: BUILDDIR: /build SRCDIR: ${{ github.workspace }} CMAKE_ARGS: | - -DWEBVIEW_FORCE_WEBKIT=1 -DKDE_INSTALL_USE_QT_SYS_PATHS=ON - -DWITH_PYTHONQT=OFF" -DCMAKE_BUILD_TYPE=Debug jobs: diff --git a/CMakeModules/KPMcoreHelper.cmake b/CMakeModules/KPMcoreHelper.cmake index 05dff18dd..d0cb95239 100644 --- a/CMakeModules/KPMcoreHelper.cmake +++ b/CMakeModules/KPMcoreHelper.cmake @@ -7,21 +7,49 @@ # # Finds KPMcore and consistently sets API flags based on the version. # -if ( NOT KPMcore_searched_for ) - set( KPMcore_searched_for TRUE ) +# If KPMcore is not found, still create calamares::kpmcore interface +# library, which will add definition WITHOUT_KPMcore. +# +if(NOT KPMcore_searched_for AND NOT TARGET calapmcore) + set(KPMcore_searched_for TRUE) - find_package( KPMcore 21.12.0 ) + find_package(KPMcore 20.04.0) set_package_properties( - KPMcore PROPERTIES + KPMcore + PROPERTIES URL "https://invent.kde.org/kde/kpmcore" DESCRIPTION "KDE Partitioning library" TYPE RECOMMENDED PURPOSE "For disk partitioning support" ) - if( KPMcore_FOUND ) - set( KPMcore_API_DEFINITIONS "" ) + # Create an internal Calamares interface to KPMcore + # and give it a nice alias name. If kpmcore is not found, + # then make a "no KPMcore" library. + add_library(calapmcore INTERFACE) + + if(KPMcore_FOUND) + find_package(Qt5 REQUIRED DBus) # Needed for KPMCore + find_package(KF5 REQUIRED I18n WidgetsAddons) # Needed for KPMCore + + target_link_libraries(calapmcore INTERFACE kpmcore Qt5::DBus KF5::I18n KF5::WidgetsAddons) + target_include_directories(calapmcore INTERFACE ${KPMCORE_INCLUDE_DIR}) + set(KPMcore_API_DEFINITIONS "") else() - set( KPMcore_API_DEFINITIONS WITHOUT_KPMcore ) + set(KPMcore_API_DEFINITIONS WITHOUT_KPMcore) + endif() + + foreach(d ${KPMcore_API_DEFINITIONS}) + target_compile_definitions(calapmcore INTERFACE ${d}) + endforeach() + + add_library(calamares::kpmcore ALIAS calapmcore) +else() + if(TARGET calapmcore) + message(STATUS "KPMcore has already been found") + set(KPMcore_FOUND TRUE) + else() + message(STATUS "KPMcore has been searched-for and not found") + set(KPMcore_FOUND FALSE) endif() endif() diff --git a/src/libcalamares/CMakeLists.txt b/src/libcalamares/CMakeLists.txt index 2a0738ec0..c12bcf2bd 100644 --- a/src/libcalamares/CMakeLists.txt +++ b/src/libcalamares/CMakeLists.txt @@ -130,13 +130,6 @@ endif() include(KPMcoreHelper) if(KPMcore_FOUND) - find_package(Qt5 REQUIRED DBus) # Needed for KPMCore - find_package(KF5 REQUIRED I18n WidgetsAddons) # Needed for KPMCore - - foreach(d ${KPMcore_API_DEFINITIONS}) - add_definitions(-D${d}) - endforeach() - include_directories(${KPMCORE_INCLUDE_DIR}) target_sources( calamares PRIVATE @@ -145,7 +138,7 @@ if(KPMcore_FOUND) partition/PartitionIterator.cpp partition/PartitionQuery.cpp ) - target_link_libraries(calamares PRIVATE kpmcore) + target_link_libraries(calamares PRIVATE calamares::kpmcore) endif() ### LIBRARY @@ -260,8 +253,8 @@ calamares_add_test(libcalamaresnetworktest SOURCES network/Tests.cpp) calamares_add_test(libcalamarespackagestest SOURCES packages/Tests.cpp) if(KPMcore_FOUND) - calamares_add_test(libcalamarespartitiontest SOURCES partition/Global.cpp partition/Tests.cpp LIBRARIES kpmcore) - calamares_add_test(libcalamarespartitionkpmtest SOURCES partition/KPMTests.cpp LIBRARIES kpmcore) + calamares_add_test(libcalamarespartitiontest SOURCES partition/Global.cpp partition/Tests.cpp LIBRARIES calamares::kpmcore) + calamares_add_test(libcalamarespartitionkpmtest SOURCES partition/KPMTests.cpp LIBRARIES calamares::kpmcore) endif() calamares_add_test(libcalamaresutilstest SOURCES utils/Tests.cpp utils/Runner.cpp) diff --git a/src/libcalamares/partition/Global.h b/src/libcalamares/partition/Global.h index b76c74c58..64c221240 100644 --- a/src/libcalamares/partition/Global.h +++ b/src/libcalamares/partition/Global.h @@ -20,6 +20,8 @@ #include "FileSystem.h" #include "JobQueue.h" +// TODO: this assumes KPMcore is present, but the header and TU +// are used always. #include namespace CalamaresUtils diff --git a/src/modules/fsresizer/CMakeLists.txt b/src/modules/fsresizer/CMakeLists.txt index 189e7c1dc..f4c94bc8b 100644 --- a/src/modules/fsresizer/CMakeLists.txt +++ b/src/modules/fsresizer/CMakeLists.txt @@ -9,7 +9,7 @@ find_package(KF5WidgetsAddons CONFIG) include(KPMcoreHelper) -if(KPMcore_FOUND AND Qt5DBus_FOUND AND KF5CoreAddons_FOUND AND KF5Config_FOUND) +if(KPMcore_FOUND) include_directories(${KPMCORE_INCLUDE_DIR} ${CMAKE_SOURCE_DIR}/src/modules/partition) # The PartitionIterator is a small class, and it's easiest -- but also a @@ -20,7 +20,7 @@ if(KPMcore_FOUND AND Qt5DBus_FOUND AND KF5CoreAddons_FOUND AND KF5Config_FOUND) SOURCES ResizeFSJob.cpp LINK_PRIVATE_LIBRARIES - kpmcore + calamares::kpmcore COMPILE_DEFINITIONS ${KPMcore_API_DEFINITIONS} SHARED_LIB ) diff --git a/src/modules/partition/CMakeLists.txt b/src/modules/partition/CMakeLists.txt index 6d07ec281..3b6269854 100644 --- a/src/modules/partition/CMakeLists.txt +++ b/src/modules/partition/CMakeLists.txt @@ -49,9 +49,7 @@ find_package(KF5Config CONFIG) find_package(KF5I18n CONFIG) find_package(KF5WidgetsAddons CONFIG) -if(KPMcore_FOUND AND Qt5DBus_FOUND AND KF5CoreAddons_FOUND AND KF5Config_FOUND) - list(APPEND _partition_defs ${KPMcore_API_DEFINITIONS}) - include_directories(${KPMCORE_INCLUDE_DIR}) +if(KPMcore_FOUND) include_directories(${PROJECT_BINARY_DIR}/src/libcalamaresui) add_subdirectory(tests) @@ -118,7 +116,7 @@ if(KPMcore_FOUND AND Qt5DBus_FOUND AND KF5CoreAddons_FOUND AND KF5Config_FOUND) gui/ReplaceWidget.ui gui/VolumeGroupBaseDialog.ui LINK_PRIVATE_LIBRARIES - kpmcore + calamares::kpmcore KF5::CoreAddons COMPILE_DEFINITIONS ${_partition_defs} SHARED_LIB diff --git a/src/modules/partition/tests/CMakeLists.txt b/src/modules/partition/tests/CMakeLists.txt index 26a1d83f9..9c5dd3257 100644 --- a/src/modules/partition/tests/CMakeLists.txt +++ b/src/modules/partition/tests/CMakeLists.txt @@ -25,14 +25,14 @@ calamares_add_test( ${PartitionModule_SOURCE_DIR}/jobs/DeletePartitionJob.cpp ${PartitionModule_SOURCE_DIR}/jobs/PartitionJob.cpp ${PartitionModule_SOURCE_DIR}/jobs/ResizePartitionJob.cpp - LIBRARIES kpmcore + LIBRARIES calamares::kpmcore DEFINITIONS ${_partition_defs} ) calamares_add_test( partitionclearmountsjobtest SOURCES ${PartitionModule_SOURCE_DIR}/jobs/ClearMountsJob.cpp ClearMountsJobTests.cpp - LIBRARIES kpmcore + LIBRARIES calamares::kpmcore DEFINITIONS ${_partition_defs} ) @@ -45,7 +45,7 @@ calamares_add_test( ${PartitionModule_SOURCE_DIR}/core/PartitionLayout.cpp ${PartitionModule_SOURCE_DIR}/core/PartUtils.cpp ${PartitionModule_SOURCE_DIR}/core/DeviceModel.cpp - LIBRARIES kpmcore Calamares::calamaresui + LIBRARIES calamares::kpmcore Calamares::calamaresui DEFINITIONS ${_partition_defs} ) @@ -58,6 +58,6 @@ calamares_add_test( calamares_add_test( partitiondevicestest SOURCES DevicesTests.cpp ${PartitionModule_SOURCE_DIR}/core/DeviceList.cpp - LIBRARIES kpmcore + LIBRARIES calamares::kpmcore DEFINITIONS ${_partition_defs} )