From 661789825a8de9a644b58996652d54eebc9f10c1 Mon Sep 17 00:00:00 2001
From: Adriaan de Groot <groot@kde.org>
Date: Sat, 23 Dec 2017 10:07:42 -0500
Subject: [PATCH] [plasmalnf] Make the module optional

 - Check for presence of KDE Frameworks for Plasma & Package
 - Explain when module is skipped
---
 src/modules/plasmalnf/CMakeLists.txt | 55 +++++++++++++++++++---------
 1 file changed, 37 insertions(+), 18 deletions(-)

diff --git a/src/modules/plasmalnf/CMakeLists.txt b/src/modules/plasmalnf/CMakeLists.txt
index 8148a80e9..15897f98c 100644
--- a/src/modules/plasmalnf/CMakeLists.txt
+++ b/src/modules/plasmalnf/CMakeLists.txt
@@ -1,22 +1,41 @@
 find_package(ECM ${ECM_VERSION} REQUIRED NO_MODULE)
 
-find_package( KF5 5.29 REQUIRED CoreAddons Plasma Package )
+# Requires a sufficiently recent Plasma framework, but also
+# needs a runtime support component (which we don't test for).
+set( lnf_ver 5.41 )
 
-calamares_add_plugin( plasmalnf
-    TYPE viewmodule
-    EXPORT_MACRO PLUGINDLLEXPORT_PRO
-    SOURCES
-        PlasmaLnfViewStep.cpp
-        PlasmaLnfPage.cpp
-        PlasmaLnfJob.cpp
-        ThemeWidget.cpp
-    RESOURCES
-        page_plasmalnf.qrc
-    UI
-        page_plasmalnf.ui
-    LINK_PRIVATE_LIBRARIES
-        calamaresui
-        KF5::Package
-        KF5::Plasma
-    SHARED_LIB
+find_package( KF5Plasma ${lnf_ver} )
+find_package( KF5Package ${lnf_ver} )
+set_package_properties(
+    KF5Plasma PROPERTIES
+    PURPOSE "For Plasma Look-and-Feel selection"
 )
+set_package_properties(
+    KF5Package PROPERTIES
+    PURPOSE "For Plasma Look-and-Feel selection"
+)
+
+if ( KF5Plasma_FOUND AND KF5Package_FOUND )
+    find_package( KF5 ${lnf_ver} REQUIRED CoreAddons Plasma Package )
+
+    calamares_add_plugin( plasmalnf
+        TYPE viewmodule
+        EXPORT_MACRO PLUGINDLLEXPORT_PRO
+        SOURCES
+            PlasmaLnfViewStep.cpp
+            PlasmaLnfPage.cpp
+            PlasmaLnfJob.cpp
+            ThemeWidget.cpp
+        RESOURCES
+            page_plasmalnf.qrc
+        UI
+            page_plasmalnf.ui
+        LINK_PRIVATE_LIBRARIES
+            calamaresui
+            KF5::Package
+            KF5::Plasma
+        SHARED_LIB
+    )
+else()
+    calamares_skip_module( "plasmalnf (missing requirements)" )
+endif()