Page 1 of 1

Qt5 build failing on latest sources

Posted: Sat Jul 08, 2017 12:04 pm
by siegmund
Hey guys,

I'm having trouble to build the latest sources. After issuing

Code: Select all

qmake && make -j4 && sudo make install
It gives me the following bunch of errors.

Code: Select all

In file included from webaccessauth.cpp:26:0:
webaccessauth.h: In constructor ‘WebAccessUser::WebAccessUser()’:
webaccessauth.h:59:13: error: ‘WebAccessUserLevel’ is not a class or namespace
     , level(WebAccessUserLevel::GUEST)
             ^
webaccessauth.cpp: In member function ‘bool WebAccessAuth::loadPasswordsFile(const QString&)’:
webaccessauth.cpp:49:30: error: ‘QIODevice::OpenModeFlag’ is not a class or namespace
     if(!file.open(QIODevice::OpenModeFlag::ReadOnly | QIODevice::Text))
                              ^
webaccessauth.cpp:57:9: error: ‘auto’ changes meaning in C++11; please remove it [-Werror=c++0x-compat]
         auto parts = line.split(':');
         ^
webaccessauth.cpp:57:14: error: ‘parts’ does not name a type
         auto parts = line.split(':');
              ^
webaccessauth.cpp:59:12: error: ‘parts’ was not declared in this scope
         if(parts.size() < 2)
            ^
webaccessauth.cpp:65:9: error: ‘auto’ changes meaning in C++11; please remove it [-Werror=c++0x-compat]
         auto username = parts[0];
         ^
webaccessauth.cpp:65:14: error: ‘username’ does not name a type
         auto username = parts[0];
              ^
webaccessauth.cpp:66:9: error: ‘auto’ changes meaning in C++11; please remove it [-Werror=c++0x-compat]
         auto passwordHash = parts[1];
         ^
webaccessauth.cpp:66:14: error: ‘passwordHash’ does not name a type
         auto passwordHash = parts[1];
              ^
webaccessauth.cpp:67:26: error: ‘parts’ was not declared in this scope
         int userLevel = (parts.size() >= 3) ? (parts[2].toInt()) : (WebAccessUserLevel::NOT_PROVIDED);
                          ^
webaccessauth.cpp:67:69: error: ‘WebAccessUserLevel’ is not a class or namespace
         int userLevel = (parts.size() >= 3) ? (parts[2].toInt()) : (WebAccessUserLevel::NOT_PROVIDED);
                                                                     ^
webaccessauth.cpp:69:28: error: ‘username’ was not declared in this scope
         WebAccessUser user(username, passwordHash, (WebAccessUserLevel)userLevel);
                            ^
webaccessauth.cpp:69:38: error: ‘passwordHash’ was not declared in this scope
         WebAccessUser user(username, passwordHash, (WebAccessUserLevel)userLevel);
                                      ^
webaccessauth.cpp: In member function ‘bool WebAccessAuth::savePasswordsFile() const’:
webaccessauth.cpp:85:31: error: ‘QIODevice::OpenModeFlag’ is not a class or namespace
     if(! file.open(QIODevice::OpenModeFlag::WriteOnly | QIODevice::Text))
                               ^
webaccessauth.cpp:90:9: error: ‘auto’ changes meaning in C++11; please remove it [-Werror=c++0x-compat]
     for(auto& username : m_passwords.keys())
         ^
webaccessauth.cpp:90:15: error: ISO C++ forbids declaration of ‘username’ with no type [-fpermissive]
     for(auto& username : m_passwords.keys())
               ^
webaccessauth.cpp:90:26: error: range-based ‘for’ loops are not allowed in C++98 mode
     for(auto& username : m_passwords.keys())
                          ^
webaccessauth.cpp:92:9: error: ‘auto’ changes meaning in C++11; please remove it [-Werror=c++0x-compat]
         auto user = m_passwords.value(username);
         ^
webaccessauth.cpp:92:14: error: ‘user’ does not name a type
         auto user = m_passwords.value(username);
              ^
webaccessauth.cpp:93:19: error: ‘user’ was not declared in this scope
         stream << user.username << ':' << user.passwordHash << ':' << (int)user.level << endl;
                   ^
webaccessauth.cpp:90:15: error: unused variable ‘username’ [-Werror=unused-variable]
     for(auto& username : m_passwords.keys())
               ^
webaccessauth.cpp: In member function ‘WebAccessUser WebAccessAuth::authenticateRequest(const QHttpRequest*, QHttpResponse*) const’:
webaccessauth.cpp:103:29: error: expected primary-expression before ‘(’ token
         return WebAccessUser("", "", WebAccessUserLevel::NOT_PROVIDED);
                             ^
webaccessauth.cpp:103:38: error: ‘WebAccessUserLevel’ is not a class or namespace
         return WebAccessUser("", "", WebAccessUserLevel::NOT_PROVIDED);
                                      ^
webaccessauth.cpp:115:5: error: ‘auto’ changes meaning in C++11; please remove it [-Werror=c++0x-compat]
     auto authentication = QString(QByteArray::fromBase64(auth.right(auth.size() - 6).toUtf8()));
     ^
webaccessauth.cpp:115:10: error: ‘authentication’ does not name a type
     auto authentication = QString(QByteArray::fromBase64(auth.right(auth.size() - 6).toUtf8()));
          ^
webaccessauth.cpp:116:22: error: ‘authentication’ was not declared in this scope
     int colonIndex = authentication.indexOf(':');
                      ^
webaccessauth.cpp:124:5: error: ‘auto’ changes meaning in C++11; please remove it [-Werror=c++0x-compat]
     auto username = authentication.left(colonIndex);
     ^
webaccessauth.cpp:124:10: error: ‘username’ does not name a type
     auto username = authentication.left(colonIndex);
          ^
webaccessauth.cpp:125:5: error: ‘auto’ changes meaning in C++11; please remove it [-Werror=c++0x-compat]
     auto passwordHash = this->hashPassword(authentication.mid(colonIndex + 1));
     ^
webaccessauth.cpp:125:10: error: ‘passwordHash’ does not name a type
     auto passwordHash = this->hashPassword(authentication.mid(colonIndex + 1));
          ^
webaccessauth.cpp:127:5: error: ‘auto’ changes meaning in C++11; please remove it [-Werror=c++0x-compat]
     auto userIterator = m_passwords.find(username);
     ^
webaccessauth.cpp:127:10: error: ‘userIterator’ does not name a type
     auto userIterator = m_passwords.find(username);
          ^
webaccessauth.cpp:128:8: error: ‘userIterator’ was not declared in this scope
     if(userIterator == m_passwords.end() || (*userIterator).passwordHash != passwordHash)
        ^
webaccessauth.cpp:128:77: error: ‘passwordHash’ was not declared in this scope
     if(userIterator == m_passwords.end() || (*userIterator).passwordHash != passwordHash)
                                                                             ^
webaccessauth.cpp:133:13: error: ‘userIterator’ was not declared in this scope
     return *userIterator;
             ^
webaccessauth.cpp: In member function ‘bool WebAccessAuth::setUserLevel(const QString&, WebAccessUserLevel)’:
webaccessauth.cpp:144:5: error: ‘auto’ changes meaning in C++11; please remove it [-Werror=c++0x-compat]
     auto userIt = m_passwords.find(username);
     ^
webaccessauth.cpp:144:10: error: ‘userIt’ does not name a type
     auto userIt = m_passwords.find(username);
          ^
webaccessauth.cpp:145:8: error: ‘userIt’ was not declared in this scope
     if(userIt == m_passwords.end())
        ^
webaccessauth.cpp:148:7: error: ‘userIt’ was not declared in this scope
     (*userIt).level = level;
       ^
webaccessauth.cpp: In member function ‘QString WebAccessAuth::hashPassword(const QString&) const’:
webaccessauth.cpp:187:76: error: ‘QCryptographicHash::Algorithm’ is not a class or namespace
     return QCryptographicHash::hash(password.toUtf8(), PASSWORD_HASH_ALGORITHM).toHex();
                                                                            ^
webaccessauth.cpp: In member function ‘bool WebAccessAuth::hasAtLeastOneAdmin() const’:
webaccessauth.cpp:192:9: error: ‘auto’ changes meaning in C++11; please remove it [-Werror=c++0x-compat]
     for(auto& user : m_passwords)
         ^
webaccessauth.cpp:192:15: error: ISO C++ forbids declaration of ‘user’ with no type [-fpermissive]
     for(auto& user : m_passwords)
               ^
webaccessauth.cpp:192:22: error: range-based ‘for’ loops are not allowed in C++98 mode
     for(auto& user : m_passwords)
                      ^
webaccessauth.cpp:194:17: error: request for member ‘level’ in ‘user’, which is of non-class type ‘int’
         if(user.level >= WebAccessUserLevel::SUPER_ADMIN)
                 ^
webaccessauth.cpp:194:26: error: ‘WebAccessUserLevel’ is not a class or namespace
         if(user.level >= WebAccessUserLevel::SUPER_ADMIN)
                          ^
webaccessauth.cpp: In member function ‘WebAccessUser WebAccessAuth::authenticateRequest(const QHttpRequest*, QHttpResponse*) const’:
webaccessauth.cpp:134:1: error: control reaches end of non-void function [-Werror=return-type]
 }
 ^
webaccessauth.cpp: In member function ‘QString WebAccessAuth::hashPassword(const QString&) const’:
webaccessauth.cpp:188:1: error: control reaches end of non-void function [-Werror=return-type]
 }
 ^
cc1plus: all warnings being treated as errors
make[2]: *** [webaccessauth.o] Fehler 1
make[2]: *** Auf noch nicht beendete Prozesse wird gewartet …
In file included from webaccessconfiguration.cpp:23:0:
webaccessauth.h: In constructor ‘WebAccessUser::WebAccessUser()’:
webaccessauth.h:59:13: error: ‘WebAccessUserLevel’ is not a class or namespace
     , level(WebAccessUserLevel::GUEST)
             ^
webaccessconfiguration.cpp: In static member function ‘static QString WebAccessConfiguration::getPasswordsConfigHTML(WebAccessAuth*)’:
webaccessconfiguration.cpp:227:5: error: ‘auto’ changes meaning in C++11; please remove it [-Werror=c++0x-compat]
     auto users = auth->getUsers();
     ^
webaccessconfiguration.cpp:227:10: error: ‘users’ does not name a type
     auto users = auth->getUsers();
          ^
webaccessconfiguration.cpp:229:9: error: ‘auto’ changes meaning in C++11; please remove it [-Werror=c++0x-compat]
     for(auto& user : users)
         ^
webaccessconfiguration.cpp:229:15: error: ISO C++ forbids declaration of ‘user’ with no type [-fpermissive]
     for(auto& user : users)
               ^
webaccessconfiguration.cpp:229:22: error: range-based ‘for’ loops are not allowed in C++98 mode
     for(auto& user : users)
                      ^
webaccessconfiguration.cpp:229:22: error: ‘users’ was not declared in this scope
webaccessconfiguration.cpp:231:9: error: ‘auto’ changes meaning in C++11; please remove it [-Werror=c++0x-compat]
         auto& username = user.username;
         ^
webaccessconfiguration.cpp:231:15: error: ISO C++ forbids declaration of ‘username’ with no type [-fpermissive]
         auto& username = user.username;
               ^
webaccessconfiguration.cpp:231:31: error: request for member ‘username’ in ‘user’, which is of non-class type ‘int’
         auto& username = user.username;
                               ^
webaccessconfiguration.cpp:232:26: error: request for member ‘level’ in ‘user’, which is of non-class type ‘int’
         int level = user.level;
                          ^
webaccessconfiguration.cpp:234:51: error: invalid operands of types ‘const char*’ and ‘const char [3]’ to binary ‘operator+’
         html += "<tr id=\"auth-row-" + username + "\">";
                                                   ^
webaccessconfiguration.cpp:235:37: error: invalid operands of types ‘const char*’ and ‘const char [6]’ to binary ‘operator+’
         html += "<td>" + username + "</td>";
                                     ^
webaccessconfiguration.cpp:237:17: error: invalid operands of types ‘const char*’ and ‘const char [16]’ to binary ‘operator+’
                 " placeholder=\"" + tr("Leave blank to not change") + "\"></td>";
                 ^
webaccessconfiguration.cpp:239:61: error: invalid operands of types ‘const char*’ and ‘const char [3]’ to binary ‘operator+’
             html += "<select id=\"auth-level-" + username + "\">";
                                                             ^
webaccessconfiguration.cpp:241:58: error: ‘WebAccessUserLevel’ is not a class or namespace
             html += "<option value=\"" + QString::number(WebAccessUserLevel::VC_ONLY) + "\"";
                                                          ^
webaccessconfiguration.cpp:242:25: error: ‘WebAccessUserLevel’ is not a class or namespace
             if(level >= WebAccessUserLevel::VC_ONLY && level < WebAccessUserLevel::SIMPLE_DESK_AND_VC)
                         ^
webaccessconfiguration.cpp:242:64: error: ‘WebAccessUserLevel’ is not a class or namespace
             if(level >= WebAccessUserLevel::VC_ONLY && level < WebAccessUserLevel::SIMPLE_DESK_AND_VC)
                                                                ^
webaccessconfiguration.cpp:246:58: error: ‘WebAccessUserLevel’ is not a class or namespace
             html += "<option value=\"" + QString::number(WebAccessUserLevel::SIMPLE_DESK_AND_VC) + "\"";
                                                          ^
webaccessconfiguration.cpp:247:25: error: ‘WebAccessUserLevel’ is not a class or namespace
             if(level >= WebAccessUserLevel::SIMPLE_DESK_AND_VC && level < WebAccessUserLevel::SUPER_ADMIN)
                         ^
webaccessconfiguration.cpp:247:75: error: ‘WebAccessUserLevel’ is not a class or namespace
             if(level >= WebAccessUserLevel::SIMPLE_DESK_AND_VC && level < WebAccessUserLevel::SUPER_ADMIN)
                                                                           ^
webaccessconfiguration.cpp:251:58: error: ‘WebAccessUserLevel’ is not a class or namespace
             html += "<option value=\"" + QString::number(WebAccessUserLevel::SUPER_ADMIN) + "\"";
                                                          ^
webaccessconfiguration.cpp:252:25: error: ‘WebAccessUserLevel’ is not a class or namespace
             if(level >= WebAccessUserLevel::SUPER_ADMIN)
                         ^
webaccessconfiguration.cpp:259:87: error: invalid operands of types ‘const char*’ and ‘const char [5]’ to binary ‘operator+’
             html += "<button role=\"button\" onclick=\"authChangeUser('" + username + "')\">"
                                                                                       ^
webaccessconfiguration.cpp:261:87: error: invalid operands of types ‘const char*’ and ‘const char [5]’ to binary ‘operator+’
             html += "<button role=\"button\" onclick=\"authDeleteUser('" + username + "')\">"
                                                                                       ^
webaccessconfiguration.cpp:273:54: error: ‘WebAccessUserLevel’ is not a class or namespace
         html += "<option value=\"" + QString::number(WebAccessUserLevel::VC_ONLY) + "\">" 
                                                      ^
webaccessconfiguration.cpp:275:54: error: ‘WebAccessUserLevel’ is not a class or namespace
         html += "<option value=\"" + QString::number(WebAccessUserLevel::SIMPLE_DESK_AND_VC) + "\">"
                                                      ^
webaccessconfiguration.cpp:277:54: error: ‘WebAccessUserLevel’ is not a class or namespace
         html += "<option value=\"" + QString::number(WebAccessUserLevel::SUPER_ADMIN) + "\">" 
                                                      ^
webaccessconfiguration.cpp: At global scope:
webaccessconfiguration.cpp:215:9: error: unused parameter ‘auth’ [-Werror=unused-parameter]
 QString WebAccessConfiguration::getPasswordsConfigHTML(WebAccessAuth *auth)
         ^
cc1plus: all warnings being treated as errors
make[2]: *** [webaccessconfiguration.o] Fehler 1
In file included from webaccess.cpp:26:0:
webaccessauth.h: In constructor ‘WebAccessUser::WebAccessUser()’:
webaccessauth.h:59:13: error: ‘WebAccessUserLevel’ is not a class or namespace
     , level(WebAccessUserLevel::GUEST)
             ^
webaccess.cpp: In member function ‘void WebAccess::slotHandleRequest(QHttpRequest*, QHttpResponse*)’:
webaccess.cpp:115:25: error: ‘WebAccessUserLevel’ is not a class or namespace
         if(user.level < WebAccessUserLevel::LOGGED_IN)
                         ^
webaccess.cpp:150:35: error: ‘WebAccessUserLevel’ is not a class or namespace
         if(m_auth && user.level < WebAccessUserLevel::SUPER_ADMIN)
                                   ^
webaccess.cpp:185:35: error: ‘WebAccessUserLevel’ is not a class or namespace
         if(m_auth && user.level < WebAccessUserLevel::SUPER_ADMIN)
                                   ^
webaccess.cpp:218:35: error: ‘WebAccessUserLevel’ is not a class or namespace
         if(m_auth && user.level < WebAccessUserLevel::SUPER_ADMIN)
                                   ^
webaccess.cpp:227:35: error: ‘WebAccessUserLevel’ is not a class or namespace
         if(m_auth && user.level < WebAccessUserLevel::SIMPLE_DESK_AND_VC)
                                   ^
webaccess.cpp:237:35: error: ‘WebAccessUserLevel’ is not a class or namespace
         if(m_auth && user.level < WebAccessUserLevel::SUPER_ADMIN)
                                   ^
webaccess.cpp: In member function ‘void WebAccess::slotHandleWebSocketRequest(QHttpConnection*, QString)’:
webaccess.cpp:319:44: error: ‘WebAccessUserLevel’ is not a class or namespace
         if(m_auth && user && user->level < WebAccessUserLevel::SUPER_ADMIN)
                                            ^
webaccess.cpp:386:34: error: ‘WebAccessUserLevel’ is not a class or namespace
         if(user && user->level < WebAccessUserLevel::SUPER_ADMIN)
                                  ^
webaccess.cpp:447:44: error: ‘WebAccessUserLevel’ is not a class or namespace
         if(m_auth && user && user->level < WebAccessUserLevel::SUPER_ADMIN)
                                            ^
webaccess.cpp:491:44: error: ‘WebAccessUserLevel’ is not a class or namespace
         if(m_auth && user && user->level < WebAccessUserLevel::VC_ONLY)
                                            ^
webaccess.cpp:619:48: error: ‘WebAccessUserLevel’ is not a class or namespace
             if(m_auth && user && user->level < WebAccessUserLevel::SIMPLE_DESK_AND_VC)
                                                ^
webaccess.cpp:635:48: error: ‘WebAccessUserLevel’ is not a class or namespace
             if(m_auth && user && user->level < WebAccessUserLevel::SIMPLE_DESK_AND_VC)
                                                ^
webaccess.cpp:650:48: error: ‘WebAccessUserLevel’ is not a class or namespace
             if(m_auth && user && user->level < WebAccessUserLevel::SIMPLE_DESK_AND_VC)
                                                ^
webaccess.cpp:666:44: error: ‘WebAccessUserLevel’ is not a class or namespace
         if(m_auth && user && user->level < WebAccessUserLevel::SIMPLE_DESK_AND_VC)
                                            ^
webaccess.cpp:684:40: error: ‘WebAccessUserLevel’ is not a class or namespace
     if(m_auth && user && user->level < WebAccessUserLevel::VC_ONLY)
                                        ^
make[2]: *** [webaccess.o] Fehler 1
make[2]: Verzeichnis »/home/siegmund/qlcplus/qlcplus/webaccess/src« wird verlassen
make[1]: *** [sub-src-make_first] Fehler 2
make[1]: Verzeichnis »/home/siegmund/qlcplus/qlcplus/webaccess« wird verlassen
make: *** [sub-webaccess-make_first-ordered] Fehler 2
Are there any new dependencies since merging the webaccess feature, that I'm missing?
Trying to build with Qt 5.2.1 on Xubuntu 14.04 64Bit.

Any help is much appreciated!

Regards,
siegmund

[EDIT: Already tried "make distclean" and a fresh clone of the repo]

Re: Qt5 build failing on latest sources

Posted: Sat Jul 08, 2017 3:43 pm
by mcallegari
Moved to development.

Please try again. Now it should build everywhere.

Re: Qt5 build failing on latest sources

Posted: Sat Jul 08, 2017 4:56 pm
by siegmund
Thanks, build is passing again!
Btw, why did the CI builds pass for the commit anyway?

Re: Qt5 build failing on latest sources

Posted: Sun Jul 09, 2017 11:08 am
by mcallegari
siegmund wrote: Sat Jul 08, 2017 4:56 pm Thanks, build is passing again!
Btw, why did the CI builds pass for the commit anyway?
It is actually a mistery, especially on the Travis Qt4 flavour. It shouldn't have built there, cause Qt4 doesn't even provide Sha256 encryption.
I might run through the old build logs and try to understand...if I have some time

[EDIT] old builds actualy errored but didn't fail !! (https://travis-ci.org/mcallegari/qlcplus/jobs/251437281)
I might have introduced some shit when I switched to the new build syntax and added coverage target. As usual, my fault :sad: