https://bugs.kde.org/show_bug.cgi?id=424483

            Bug ID: 424483
           Summary: Build errors if PREFIX is different from ECM's PREFIX
           Product: frameworks-plasma
           Version: 5.70.0
          Platform: Other
                OS: Linux
            Status: REPORTED
          Severity: normal
          Priority: NOR
         Component: libplasmaquick
          Assignee: notm...@gmail.com
          Reporter: h.goe...@crazy-compilers.com
                CC: plasma-b...@kde.org
  Target Milestone: ---

When plasma-framework and extra-cmake-modules reside in different prefixes,
building packages depending on PlasmaQuick fails with

  File or directory
  /gnu/store/…-extra-cmake-modules-5.70.0/include/KF5
  referenced by variable PlasmaQuick_INCLUDE_DIR does not exist !

"/gnu/store/…-extra-cmake-modules-5.70.0" is the of PREFIX of ECM - and
obviously PlasmaQuick_INCLUDE_DIR should not point there but to the PREFIX of
plasma-framework.



STEPS TO REPRODUCE
====================

1. Ensure you have guile 3.x and guile-gcrypt installed.

   If these are not availalbe for you distribution, a quick way to get them is
   by installing guix:
   a. Install guix alongside your distribution (this can be remove easily
later)
      <http://guix.gnu.org/manual/en/html_node/Installation.html#Installation>
      When using the supplied isntaller-script, this is a matter of a
      few minutes.

2. Clone and build guix:

   git clone https://gitlab.digitalcourage.de:htgoebel/guix.git
   cd guix
   git checkout kde-plasma-bug  #  <<--- important
   ./bootstrap
   ./configure --localstatedir=/var
   make scripts/guix make-go

3. Try to build `kscreen`:

   ./pre-inst-env guix build kscreen

OBSERVED RESULT
====================
Build/configure fails with the messae above.

EXPECTED RESULT
====================
Build/configure passes.

SOFTWARE/OS VERSIONS
====================
plasma-framwork 5.70.1
kscreen         5.70.1

ADDITIONAL INFORMATION
=========================

(1) PlasmaQuick_INCLUDE_DIR is based on PACKAGE_PREFIX_DIR (see
KF5PlasmaQuickConfig.cmake). Within KF5PlasmaQuickConfig.cmake,
PACKAGE_PREFIX_DIR is okay up to the call of `find_dependency(KF5Plasma
"5.70.0")`. After this call, PACKAGE_PREFIX_DIR points to extra-cmake-modules.

(2) I was able to inhibit this change by removing the call to
`"(find_package(ECM …)` in KF5PlasmaMacros.cmake.

(3) The repo mentioned above already contains some package definitions to help
debugging and playing around:
   * the relevant file is gnu/packages/kde-plasma.scm
   * around line 610 there a copy of KF5PlasmaQuickMacros.cmake is provided
     which you can easily play with. Tracing PACKAGE_PREFIX_DIR is
     already in there.
   * around line 600 there is code prepared for removing the
     `find_pachage(ECM …)`

(4.1) Seems like `find_pachage(ECM …)` is required to set ECM_KDE_MODULE_DIR
(see KF5PlasmaMacros.cmake). Within all KDE-framework packages
ECM_KDE_MODULE_DIR is only used in to cmake-files:
- KF5Package/KF5PackageMacros.cmake
- KF5Plasma/KF5PlasmaMacros.cmake

$ grep -rh ECM_KDE_MODULE_DIR  /gnu/store/*/lib/cmake/ | sort -u
include(${ECM_KDE_MODULE_DIR}/KDEInstallDirs.cmake)
$ grep -rl ECM_KDE_MODULE_DIR  /gnu/store/*/lib/cmake/ | sed
's!.*/lib/cmake/!!' | sort -u
KF5Package/KF5PackageMacros.cmake
KF5Plasma/KF5PlasmaMacros.cmake

(4.2) ECM_KDE_MODULE_DIR is only used in
`include(${ECM_KDE_MODULE_DIR}/KDEInstallDirs.cmake)`, which also is only used
in these two cmake files.

$ grep -rh KDEInstallDirs.cmake  /gnu/store/*/lib/cmake/ | sort -u
include(${ECM_KDE_MODULE_DIR}/KDEInstallDirs.cmake)
$ grep -rl KDEInstallDirs.cmake  /gnu/store/*/lib/cmake/ | sed
's!.*/lib/cmake/!!' | sort -u
KF5Package/KF5PackageMacros.cmake
KF5Plasma/KF5PlasmaMacros.cmake

(4.3) Maybe these are left-overs and can be removed?

-- 
You are receiving this mail because:
You are watching all bug changes.

Reply via email to