| Summary: | 5.4.0: generated macros ignore fact that @CMAKECONFIG_INSTALL_DIR@ can be absolute | ||
|---|---|---|---|
| Product: | [Developer tools] buildsystem | Reporter: | Arkadiusz Miskiewicz <arekm> |
| Component: | general | Assignee: | Alex Merry <alex.merry> |
| Status: | REPORTED --- | ||
| Severity: | normal | CC: | caslav.ilic, kdelibs-bugs-null, tu4manjohn |
| Priority: | NOR | ||
| Version First Reported In: | unspecified | ||
| Target Milestone: | --- | ||
| Platform: | Other | ||
| OS: | Linux | ||
| Latest Commit: | Version Fixed/Implemented In: | ||
| Sentry Crash Report: | |||
Is this issue specific to Ki18n, or some other frameworks exhibit it too? I can see this pattern ("${PACKAGE_PREFIX_DIR}/@SOME_INSTALL_DIR@") in config files of many other frameworks. I could make some sort of quick fix, but I'd prefer a more uniform solution.
Also, how should I actually invoke cmake to create this problem?
More. kauth, kded, k18n, kjs and probably some others. cmake was invoked like this: + CC=x86_64-pld-linux-gcc CXX=x86_64-pld-linux-g++ CPPFLAGS= /usr/bin/cmake '-DCMAKE_VERBOSE_MAKEFILE=ON' '-DCMAKE_BUILD_TYPE=PLD' '-DCMAKE_INSTALL_BINDIR:PATH=/usr/bin' '-DCMAKE_INSTALL_SBINDIR:PATH=/usr/sbin' '-DCMAKE_INSTALL_LIBEXECDIR:PATH=/usr/lib64' '-DCMAKE_INSTALL_SYSCONFDIR:PATH=/etc' '-DCMAKE_INSTALL_SHAREDSTATEDIRPATH:PATH=/var/lib' '-DCMAKE_INSTALL_LOCALSTATEDIRPATH:PATH=/var' '-DCMAKE_INSTALL_LIBDIR:PATH=/usr/lib64' '-DCMAKE_INSTALL_INCLUDEDIR:PATH=/usr/include' '-DCMAKE_INSTALL_OLDINCLUDEDIR:PATH=/usr/include' '-DCMAKE_INSTALL_DATAROOTDIR:PATH=/usr/share' '-DCMAKE_INSTALL_DATADIR:PATH=/usr/share' '-DCMAKE_INSTALL_INFODIR:PATH=/usr/share/info' '-DCMAKE_INSTALL_LOCALEDIR:PATH=/usr/share/locale' '-DCMAKE_INSTALL_MANDIR:PATH=/usr/share/man' '-DCMAKE_INSTALL_DOCDIR:PATH=/usr/share/doc' '-DCMAKE_INSTALL_PREFIX:PATH=/usr' '-DSYSCONF_INSTALL_DIR:PATH=/etc' '-DCMAKE_CXX_FLAGS_PLD=-O2 -fwrapv -pipe -Wformat -Werror=format-security -gdwarf-4 -fno-debug-types-section -fvar-tracking-assignments -g2 -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -fPIC -march=x86-64 -gdwarf-4 -fno-debug-types-section -fvar-tracking-assignments -g2 -DNDEBUG -DQT_NO_DEBUG' '-DCMAKE_C_FLAGS_PLD=-O2 -fwrapv -pipe -Wformat -Werror=format-security -gdwarf-4 -fno-debug-types-section -fvar-tracking-assignments -g2 -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -fPIC -march=x86-64 -gdwarf-4 -fno-debug-types-section -fvar-tracking-assignments -g2 -DNDEBUG -DQT_NO_DEBUG' '-DCMAKE_Fortran_FLAGS_PLD=-O2 -fwrapv -pipe -Wformat -Werror=format-security -gdwarf-4 -fno-debug-types-section -fvar-tracking-assignments -g2 -Wp,-D_FORTIFY_SOURCE=2 -fstack-protector --param=ssp-buffer-size=4 -fPIC -march=x86-64 -gdwarf-4 -fno-debug-types-section -fvar-tracking-assignments -g2 -DNDEBUG -DQT_NO_DEBUG' '-DCMAKE_EXE_LINKER_FLAGS_PLD=-Wl,--as-needed -Wl,--no-copy-dt-needed-entries -Wl,-z,relro -Wl,-z,combreloc ' '-DCMAKE_SHARED_LINKER_FLAGS_PLD=-Wl,--as-needed -Wl,--no-copy-dt-needed-entries -Wl,-z,relro -Wl,-z,combreloc ' '-DCMAKE_MODULE_LINKER_FLAGS_PLD=-Wl,--as-needed -Wl,--no-copy-dt-needed-entries -Wl,-z,relro -Wl,-z,combreloc ' '-DLIB_SUFFIX=64' '-DBUILD_SHARED_LIBS:BOOL=ON' '-DKDE_INSTALL_USE_QT_SYS_PATHS=ON' ../ https://bugs.kde.org/show_bug.cgi?id=341714 Ah yes, reassigning to buildsystem, that's a good idea :) |
./KF5I18nConfig.cmake.in:set(KI18N_MODULE_DIR "${PACKAGE_PREFIX_DIR}/@CMAKECONFIG_INSTALL_DIR@") but CMAKECONFIG_INSTALL_DIR can be absolute path (and this is perfect configuration). Unortunately KF5I18nConfig.cmake concatenates prefix and absolute CMAKECONFIG_INSTALL_DIR which ends like this: /usr/lib64/cmake/KF5I18n/KF5I18nConfig.cmake:set(KI18N_MODULE_DIR "${PACKAGE_PREFIX_DIR}//usr/lib64/cmake/KF5I18n") so double prefix. Reproducible: Always Steps to Reproduce: 1. Set cmake variables, so CMAKECONFIG_INSTALL_DIR ends up being absolute 2. 3.