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

            Bug ID: 415029
           Summary: Fails do compile due to Q_FOREACH
           Product: plasma-pass
           Version: 1.1.0
          Platform: Debian stable
                OS: Linux
            Status: REPORTED
          Severity: normal
          Priority: NOR
         Component: General
          Assignee: dvra...@kde.org
          Reporter: xu...@findomundo.gal
  Target Milestone: ---

SUMMARY

While compiling from scratch, I get this error:

[ 45%] Building CXX object
plugin/CMakeFiles/plasmapass.dir/passwordprovider.cpp.o
In file included from /usr/include/KF5/KService/kplugininfo.h:28,
                 from /usr/include/KF5/plasma/package.h:25,
                 from /usr/include/KF5/plasma/pluginloader.h:23,
                 from /usr/include/KF5/Plasma/PluginLoader:1,
                 from
/tmp/tmp.3V2PlGdnUp/Descargas/plasma-pass-1.1.0/plugin/passwordprovider.cpp:33:
/usr/include/KF5/KConfigCore/kconfiggroup.h: In member function ‘QList<T>
KConfigGroup::readEntry(const char*, const QList<T>&) const’:
/usr/include/KF5/KConfigCore/kconfiggroup.h:734:16: error: expected
primary-expression before ‘const’
     Q_FOREACH (const T &value, defaultValue) {
                ^~~~~
/usr/include/KF5/KConfigCore/kconfiggroup.h:734:45: error: expected ‘;’ before
‘{’ token
     Q_FOREACH (const T &value, defaultValue) {
                                             ^~
                                             ;
/usr/include/KF5/KConfigCore/kconfiggroup.h:739:16: error: expected
primary-expression before ‘const’
     Q_FOREACH (const QVariant &value, readEntry<QVariantList>(key, data)) {
                ^~~~~
/usr/include/KF5/KConfigCore/kconfiggroup.h:739:5: error: there are no
arguments to ‘Q_FOREACH’ that depend on a template parameter, so a declaration
of ‘Q_FOREACH’ must be available [-fpermissive]
     Q_FOREACH (const QVariant &value, readEntry<QVariantList>(key, data)) {
     ^~~~~~~~~
/usr/include/KF5/KConfigCore/kconfiggroup.h:739:5: note: (if you use
‘-fpermissive’, G++ will accept your code, but allowing the use of an
undeclared name is deprecated)
/usr/include/KF5/KConfigCore/kconfiggroup.h:739:74: error: expected ‘;’ before
‘{’ token
     Q_FOREACH (const QVariant &value, readEntry<QVariantList>(key, data)) {
                                                                          ^~
                                                                          ;
/usr/include/KF5/KConfigCore/kconfiggroup.h: In member function ‘void
KConfigGroup::writeEntry(const char*, const QList<T>&,
KConfigBase::WriteConfigFlags)’:
/usr/include/KF5/KConfigCore/kconfiggroup.h:760:16: error: expected
primary-expression before ‘const’
     Q_FOREACH (const T &value, list) {
                ^~~~~
/usr/include/KF5/KConfigCore/kconfiggroup.h:760:37: error: expected ‘;’ before
‘{’ token
     Q_FOREACH (const T &value, list) {
                                     ^~
                                     ;
make[2]: *** [plugin/CMakeFiles/plasmapass.dir/build.make:126:
plugin/CMakeFiles/plasmapass.dir/passwordprovider.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:596: plugin/CMakeFiles/plasmapass.dir/all]
Error 2
make: *** [Makefile:141: all] Error 2

STEPS TO REPRODUCE
1. Download and extract 1.1.0 tar
2. Run cmake
3. Run make

OBSERVED RESULT
A compiler error

EXPECTED RESULT
A compiled binary

SOFTWARE/OS VERSIONS
Linux/KDE Plasma: Debian GNU/Linux "Buster" 10.2
(available in About System)
KDE Plasma Version: 5.14.5.1
KDE Frameworks Version: 5.54.0
Qt Version: 5.11.3

ADDITIONAL INFORMATION

Investigating the issue, I found the following commit:
https://cgit.kde.org/plasma-pass.git/commit/?id=d5999a0b6a7c3d1d126cd6afb25f38e573aa7d57

There, it claims Q_FOREACH is not needed, and sets a flag to disable it.
Looks like the project itself doesn't use Q_FOREACH, but an indirect import
does.
I removed the line:
add_definitions(-DQT_NO_FOREACH)
from the "CMakeLists.txt" file and everything compiled fine.

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

Reply via email to