[Solved] Interface build fails at quazip (Linux)


#1

Not even the courtesy of informative errors.

Ubuntu Linux 16.10 (fresh install and updated with latest kernel)
I already have quazip and quazip-dev on my machine. It was detected by cmake in the build process. Not sure why it would need to be compiled…

[ 39%] Performing build step for 'quazip'
    CMake Error at /hifi/build/ext/makefiles/quazip/project/src/quazip-stamp/quazip-build-.cmake:16 (message):
      Command failed: 2
   'make'

  See also

    /hifi/build/ext/makefiles/quazip/project/src/quazip-stamp/quazip-build-*.log


ext/makefiles/quazip/CMakeFiles/quazip.dir/build.make:111: recipe for target 'ext/makefiles/quazip/project/src/quazip-stamp/quazip-build' failed
make[3]: *** [ext/makefiles/quazip/project/src/quazip-stamp/quazip-build] Error 1
CMakeFiles/Makefile2:2002: recipe for target 'ext/makefiles/quazip/CMakeFiles/quazip.dir/all' failed
make[2]: *** [ext/makefiles/quazip/CMakeFiles/quazip.dir/all] Error 2
CMakeFiles/Makefile2:3182: recipe for target 'interface/CMakeFiles/interface.dir/rule' failed
make[1]: *** [interface/CMakeFiles/interface.dir/rule] Error 2
Makefile:990: recipe for target 'interface' failed
make: *** [interface] Error 2

$ tail -f /hifi/build/ext/makefiles/quazip/project/src/quazip-stamp/quazip-build-*.log

==> /hifi/build/ext/makefiles/quazip/project/src/quazip-stamp/quazip-build-err.log <==
 ^
/opt/Qt5.8.0/5.8/gcc_64/include/QtCore/qtypeinfo.h:258:1: note: in expansion of macro ‘Q_DECLARE_TYPEINFO_BODY’
 Q_DECLARE_TYPEINFO_BODY(TYPE, FLAGS)
 ^
/opt/Qt5.8.0/5.8/gcc_64/include/QtCore/qtypeinfo.h:293:1: note: in expansion of macro ‘Q_DECLARE_TYPEINFO’
 Q_DECLARE_TYPEINFO(bool, Q_PRIMITIVE_TYPE);
 ^
make[6]: *** [quazip/CMakeFiles/quazip_static.dir/JlCompress.cpp.o] Error 1
make[5]: *** [quazip/CMakeFiles/quazip_static.dir/all] Error 2
make[4]: *** [all] Error 2

==> /hifi/build/ext/makefiles/quazip/project/src/quazip-stamp/quazip-build-out.log <==
[  1%] Building CXX object quazip/CMakeFiles/quazip_static.dir/JlCompress.cpp.o
quazip/CMakeFiles/quazip_static.dir/build.make:174: recipe for target 'quazip/CMakeFiles/quazip_static.dir/JlCompress.cpp.o' failed
CMakeFiles/Makefile2:124: recipe for target 'quazip/CMakeFiles/quazip_static.dir/all' failed
Makefile:127: recipe for target 'all' failed

#2

The solution is to use c++11 flag or just update your compiler to g++/gcc version 6.3 (uses c++14 as default).


#3

Yes - thank you very much, you also see this within the dedicated log files.
Within my basic script it looks like:

export CC='gcc -std=c11'
export CXX='g++ -std=c++11' 

Based on my old gcc/g++ compiler, which has the c11 option, but not as default.


#4

Well little add on from me here, maybe of some interest for other people:

I have here an Linux mint with version 18.1 (Serena). With installing the package of other forum members I didn’t had the excess over all. The last problem which arise was, that on my distribution I don’t have the qtwebkit, so the solution for that was to get the full QT environment (I choose version 8.6), and compile that one…
(Yes I knew, to much packages, but I will solve this issue later).

After that I had a problem with quazip, but @Cracker.Hax gives us the solution for that - Thank you so much.

After that I had problems with sdl2 package to compile within the ‘interface’ part (here some problem based on the ‘struct signation action’ definition (size of action isn’t known and it was no typo err).

So I had the idea that I try some gcc/g++ standard options for the compilers.
(Because I knew there are changing the basic standards (POSIX and other things…) over the different versions of the compiler, BUT I want the minimal requirements that I need 4 compile all Hifi packages to get to the 100% on each part)

I have here gcc/g++ with versions: 5.4.0

So my solution now:

export CC='gcc -std=gnu11'
export CXX='g++ -std=gnu++14' 

With this gcc/g++ standards I’m now be able to compile all my hifi packages on Linux mint 18.1 :slight_smile:

I have here now:

alex@Desktop-ViveVR ~/dev/hifi/build $ ls -alh assignment-client/assignment-client
-rwxr-xr-x 1 alex alex 161M Jun  9 11:15 assignment-client/assignment-client
alex@Desktop-ViveVR ~/dev/hifi/build $ ls -alh domain-server/domain-server
-rwxr-xr-x 1 alex alex 38M Jun  9 11:08 domain-server/domain-server
alex@Desktop-ViveVR ~/dev/hifi/build $ ls -alh interface/interface
-rwxr-xr-x 1 alex alex 321M Jun  9 11:20 interface/interface

Now I will check optimizations, minimal necessary QT packages within a normal:-) Linux distribution…

Hope this info will help some others here…


#5

Just to add, I had this issue when building the Pi versions, which resulted in Quazip not wanting to play ball. My solution was to execute the following before compiling:
export CXXFLAGS="-std=c++11"

I believe this was occurring when building with Qt5.8.


#6

Yes, absolute right @FlameSoulis

But I had an additional problem within the interface part with sdl2 and solve this with the gnu extensions to the -std=c++11

Thank you so much!

I investigate yesterday that Qt5.8 also compile some stuff intern with -std=c++1z (which is experimental with gcc in 2017, https://gcc.gnu.org/projects/cxx-status.html), so I force your -std=c++11 for the rest of the Qt5.8 compile session).

Now I have the minimal extern (Qt) and packages with Linux mint run the full compilation process for hifi.

Well I like this software, hope getting into this deeper…

If someone need my complete doing on this stuff, I would write it here…

Thank you Highfidelity members for this great software stuff! I like it!