mujx / nheko

No longer maintained - Desktop client for the Matrix protocol (active fork https://github.com/Nheko-Reborn)
GNU General Public License v3.0
395 stars 65 forks source link

Huge binary executable? #210

Closed alphapapa closed 6 years ago

alphapapa commented 6 years ago

I noticed my latest backup with Restic increased in size by an unusually large amount. Upon closer investigation, I see that the nheko binary is 81 MB. This was not the case before; previously I think it was around 5 MB or less.

What happened? D:

mujx commented 6 years ago

Nothing changed as you can see in the releases. It's probably something related to your backup.

alphapapa commented 6 years ago

No, I mean the binary executable created by the nheko build process is 81 MB. I only noticed because I noticed the size of my backup increased, which was due to that file.

mujx commented 6 years ago

You can do a git bisect to find the problem.

alphapapa commented 6 years ago

Ok, apparently this is not a new problem, and I was mistaken about the earlier binary sizes. The earliest nheko binary I have backed up is from 2018-01-06, and it was 73 MB. I ran a bisect script to find binaries smaller than about 20 MB:

#!/bin/bash

function die {
    exit 125
}

cd ~/tmp/src/nheko || die

git clean -dxf || die

export CC=clang-3.6 CXX=clang++-3.6

ni make clean || die
ni cmake -H. -Bbuild -DCMAKE_PREFIX_PATH=/opt/qt59/ || die
ni make -C build || die

size=($(du -b build/nheko)) || die

[[ ${size[0]} -lt 20000000 ]]

And it stopped when it got to commit f8505fe0bc2f8c7481067c9dca0ba597591059cf from Sun Aug 13 21:04:43 2017 +0300, which built a 22 MB nheko executable.

Since then, features have been added, so the size increased, I guess.

But why is the binary so large? ldd shows that it links to many libraries:

$ ldd nheko
        linux-vdso.so.1 =>  (0x00007ffddfdf0000)
        libQt5Widgets.so.5 => /opt/qt59/lib/libQt5Widgets.so.5 (0x00007fc43dfa4000)
        libQt5Concurrent.so.5 => /opt/qt59/lib/libQt5Concurrent.so.5 (0x00007fc43df9c000)
        liblmdb.so.0 => /usr/lib/x86_64-linux-gnu/liblmdb.so.0 (0x00007fc43dd54000)
        libQt5Multimedia.so.5 => /opt/qt59/lib/libQt5Multimedia.so.5 (0x00007fc43dc44000)
        libQt5Network.so.5 => /opt/qt59/lib/libQt5Network.so.5 (0x00007fc43dabd000)
        libQt5Gui.so.5 => /opt/qt59/lib/libQt5Gui.so.5 (0x00007fc43d554000)
        libQt5Core.so.5 => /opt/qt59/lib/libQt5Core.so.5 (0x00007fc43d01b000)
        libstdc++.so.6 => /usr/lib/x86_64-linux-gnu/libstdc++.so.6 (0x00007fc43cd08000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fc43ca01000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fc43c7ea000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fc43c421000)
        /lib64/ld-linux-x86-64.so.2 (0x00005628f602c000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fc43c202000)
        libpulse.so.0 => /usr/lib/x86_64-linux-gnu/libpulse.so.0 (0x00007fc43bfb9000)
        libz.so.1 => /lib/x86_64-linux-gnu/libz.so.1 (0x00007fc43bd9f000)
        libGL.so.1 => /usr/lib/fglrx/libGL.so.1 (0x00007fc43bba2000)
        libpng12.so.0 => /lib/x86_64-linux-gnu/libpng12.so.0 (0x00007fc43b97c000)
        libicui18n.so.52 => /usr/lib/x86_64-linux-gnu/libicui18n.so.52 (0x00007fc43b574000)
        libicuuc.so.52 => /usr/lib/x86_64-linux-gnu/libicuuc.so.52 (0x00007fc43b1fb000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fc43aff7000)
        libglib-2.0.so.0 => /lib/x86_64-linux-gnu/libglib-2.0.so.0 (0x00007fc43acee000)
        libjson-c.so.2 => /lib/x86_64-linux-gnu/libjson-c.so.2 (0x00007fc43aae3000)
        libpulsecommon-4.0.so => /usr/lib/x86_64-linux-gnu/pulseaudio/libpulsecommon-4.0.so (0x00007fc43a87b000)
        libdbus-1.so.3 => /lib/x86_64-linux-gnu/libdbus-1.so.3 (0x00007fc43a636000)
        libXext.so.6 => /usr/lib/x86_64-linux-gnu/libXext.so.6 (0x00007fc43a424000)
        libicudata.so.52 => /usr/lib/x86_64-linux-gnu/libicudata.so.52 (0x00007fc438bb6000)
        libpcre.so.3 => /lib/x86_64-linux-gnu/libpcre.so.3 (0x00007fc438978000)
        libxcb.so.1 => /usr/lib/x86_64-linux-gnu/libxcb.so.1 (0x00007fc438758000)
        libwrap.so.0 => /lib/x86_64-linux-gnu/libwrap.so.0 (0x00007fc43854e000)
        libsndfile.so.1 => /usr/lib/x86_64-linux-gnu/libsndfile.so.1 (0x00007fc4382e6000)
        libasyncns.so.0 => /usr/lib/x86_64-linux-gnu/libasyncns.so.0 (0x00007fc4380df000)
        librt.so.1 => /lib/x86_64-linux-gnu/librt.so.1 (0x00007fc437ed7000)
        libX11.so.6 => /usr/lib/x86_64-linux-gnu/libX11.so.6 (0x00007fc437ba2000)
        libXau.so.6 => /usr/lib/x86_64-linux-gnu/libXau.so.6 (0x00007fc43799d000)
        libXdmcp.so.6 => /usr/lib/x86_64-linux-gnu/libXdmcp.so.6 (0x00007fc437797000)
        libnsl.so.1 => /lib/x86_64-linux-gnu/libnsl.so.1 (0x00007fc43757d000)
        libFLAC.so.8 => /usr/lib/x86_64-linux-gnu/libFLAC.so.8 (0x00007fc43734b000)
        libvorbisenc.so.2 => /usr/lib/x86_64-linux-gnu/libvorbisenc.so.2 (0x00007fc436e7c000)
        libvorbis.so.0 => /usr/lib/x86_64-linux-gnu/libvorbis.so.0 (0x00007fc436c4f000)
        libogg.so.0 => /usr/lib/x86_64-linux-gnu/libogg.so.0 (0x00007fc436a45000)
        libresolv.so.2 => /lib/x86_64-linux-gnu/libresolv.so.2 (0x00007fc43682a000)

So what is causing the binary to be so large? 81 MB is just crazy big.

mujx commented 6 years ago

That's odd. The AppImage is only 50MB (check releases) and has everything copied over (not dynamically linked). Please add some info about your system, compiler and build type.

e.g In my system (Arch linux) a RelWithDebInfo build is 6.9MB. On macOs a Debug build is 16MB.

mujx commented 6 years ago

Just to be sure. Try make clean and make release and post binary's size.

alphapapa commented 6 years ago

Well, now I can't build it anymore:

$ make clean; cmake -H. -Bbuild -DCMAKE_PREFIX_PATH=/opt/qt59/; ni make -C build
rm -rf build
-- The C compiler identification is Clang 3.6.0
-- The CXX compiler identification is Clang 3.6.0
-- Check for working C compiler: /usr/bin/clang-3.6
-- Check for working C compiler: /usr/bin/clang-3.6 -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/clang++-3.6
-- Check for working CXX compiler: /usr/bin/clang++-3.6 -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found LMDB: /usr/include  
Setting build type to 'Debug'
-- Version: 0.1.0-c4fa8c8
-- Found Doxygen: /usr/local/bin/doxygen (found version "1.8.9.1") 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/me/tmp/src/nheko/build
make: Entering directory `/home/me/tmp/src/nheko/build'
make[1]: Entering directory `/home/me/tmp/src/nheko/build'
make[2]: Entering directory `/home/me/tmp/src/nheko/build'
make[2]: Entering directory `/home/me/tmp/src/nheko/build'
Scanning dependencies of target LANG_QRC
Scanning dependencies of target matrix_structs
make[2]: Leaving directory `/home/me/tmp/src/nheko/build'
make[2]: Entering directory `/home/me/tmp/src/nheko/build'
[  0%] [  1%] [  1%] Generating nheko_de.qm
Generating nheko_el.qm
Updating '/home/me/tmp/src/nheko/build/nheko_el.qm'...
    Generated 34 translation(s) (34 finished and 0 unfinished)
Generating nheko_nl.qm
make[2]: Leaving directory `/home/me/tmp/src/nheko/build'
Updating '/home/me/tmp/src/nheko/build/nheko_nl.qm'...
    Generated 34 translation(s) (33 finished and 1 unfinished)
make[2]: Entering directory `/home/me/tmp/src/nheko/build'
[  1%] Updating '/home/me/tmp/src/nheko/build/nheko_de.qm'...
    Generated 34 translation(s) (34 finished and 0 unfinished)
[  2%] Generating nheko_en.qm
[  2%] Updating '/home/me/tmp/src/nheko/build/nheko_en.qm'...
    Generated 34 translation(s) (34 finished and 0 unfinished)
[  3%] make[2]: Leaving directory `/home/me/tmp/src/nheko/build'
Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events.cpp.o
Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/requests.cpp.o                                
Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/aliases.cpp.o                          
[  3%] Built target LANG_QRC
[  3%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/avatar.cpp.o
[  4%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/canonical_alias.cpp.o           
[  4%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/common.cpp.o                    
[  4%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/create.cpp.o                    
[  5%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/guest_access.cpp.o              
[  5%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/history_visibility.cpp.o        
[  6%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/join_rules.cpp.o                
[  6%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/member.cpp.o                    
[  7%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/name.cpp.o                      
[  7%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/pinned_events.cpp.o             
[  8%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/power_levels.cpp.o              
[  8%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/redaction.cpp.o                 
[  8%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/topic.cpp.o                     
[  9%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/messages/audio.cpp.o            
[  9%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/messages/emote.cpp.o            
[ 10%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/messages/file.cpp.o             
[ 10%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/messages/image.cpp.o            
[ 11%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/messages/notice.cpp.o           
[ 11%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/messages/text.cpp.o             
[ 12%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/messages/video.cpp.o            
[ 12%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/responses/common.cpp.o                 
[ 12%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/responses/login.cpp.o                  
[ 13%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/responses/messages.cpp.o               
[ 13%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/responses/profile.cpp.o                
[ 14%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/responses/sync.cpp.o                   
[ 14%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/responses/version.cpp.o                
Linking CXX static library libmatrix_structs.a
make[2]: Leaving directory `/home/me/tmp/src/nheko/build'
[ 14%] Built target matrix_structs
make[2]: Entering directory `/home/me/tmp/src/nheko/build'
[ 15%] [ 16%] [ 16%] [ 16%] Generating include/dialogs/moc_CreateRoom.cpp
Generating include/dialogs/moc_InviteUsers.cpp
Generating include/dialogs/moc_PreviewImageOverlay.cpp
Generating include/dialogs/moc_ImageOverlay.cpp
[ 16%] [ 17%] [ 17%] [ 18%] Generating include/dialogs/moc_JoinRoom.cpp
Generating include/dialogs/moc_Logout.cpp
Generating include/dialogs/moc_LeaveRoom.cpp
Generating include/dialogs/moc_ReadReceipts.cpp
[ 18%] [ 19%] [ 20%] [ 20%] Generating include/emoji/moc_Category.cpp
Generating include/emoji/moc_ItemDelegate.cpp
Generating include/emoji/moc_Panel.cpp
Generating include/emoji/moc_PickButton.cpp
[ 20%] [ 21%] [ 21%] Generating include/timeline/moc_TimelineItem.cpp
[ 21%] Generating include/timeline/moc_TimelineViewManager.cpp
Generating include/timeline/moc_TimelineView.cpp
Generating include/timeline/widgets/moc_AudioItem.cpp
[ 22%] [ 22%] [ 23%] Generating include/timeline/widgets/moc_FileItem.cpp
Generating include/timeline/widgets/moc_ImageItem.cpp
Generating include/timeline/widgets/moc_VideoItem.cpp
[ 23%] [ 24%] [ 24%] Generating include/ui/moc_Avatar.cpp
[ 25%] Generating include/ui/moc_Badge.cpp
Generating include/ui/moc_FlatButton.cpp
Generating include/ui/moc_LoadingIndicator.cpp
[ 25%] [ 25%] [ 25%] [ 26%] Generating include/ui/moc_Label.cpp
Generating include/ui/moc_ScrollBar.cpp
Generating include/ui/moc_OverlayWidget.cpp
Generating include/ui/moc_FloatingButton.cpp
[ 27%] [ 27%] [ 28%] [ 28%] Generating include/ui/moc_SnackBar.cpp
Generating include/ui/moc_RaisedButton.cpp
Generating include/ui/moc_RippleOverlay.cpp
Generating include/ui/moc_Ripple.cpp
[ 29%] [ 29%] [ 29%] Generating include/ui/moc_TextField.cpp
[ 30%] Generating include/ui/moc_Theme.cpp
Generating include/ui/moc_ToggleButton.cpp
Generating include/ui/moc_ThemeManager.cpp
[ 30%] [ 31%] [ 31%] Generating include/moc_AvatarProvider.cpp
[ 32%] Generating include/moc_CommunitiesList.cpp
Generating include/moc_CommunitiesListItem.cpp
Generating include/moc_ChatPage.cpp
[ 32%] Generating include/moc_Community.cpp
[ 33%] [ 33%] [ 33%] Generating include/moc_LoginPage.cpp
[ 34%] Generating include/moc_MainWindow.cpp
Generating include/moc_InviteeItem.cpp
Generating include/moc_MatrixClient.cpp
[ 34%] [ 35%] [ 35%] [ 36%] Generating include/moc_QuickSwitcher.cpp
Generating include/moc_RegisterPage.cpp
Generating include/moc_RoomInfoListItem.cpp
Generating include/moc_RoomList.cpp
[ 36%] [ 37%] [ 37%] Generating include/moc_SideBarActions.cpp
[ 37%] Generating include/moc_Splitter.cpp
Generating include/moc_TopRoomBar.cpp
Generating include/moc_TextInputWidget.cpp
[ 38%] [ 38%] [ 39%] Generating include/moc_TrayIcon.cpp
[ 39%] Generating include/moc_TypingDisplay.cpp
Generating include/moc_UserInfoWidget.cpp
Generating include/moc_UserSettingsPage.cpp
[ 40%] [ 40%] [ 41%] Generating include/moc_WelcomePage.cpp
Generating qrc_res.cpp
Generating qrc_translations.cpp
Scanning dependencies of target nheko
make[2]: Leaving directory `/home/me/tmp/src/nheko/build'
make[2]: Entering directory `/home/me/tmp/src/nheko/build'
[ 42%] [ 42%] [ 42%] [ 43%] Building CXX object CMakeFiles/nheko.dir/src/dialogs/CreateRoom.cc.o
Building CXX object CMakeFiles/nheko.dir/src/dialogs/InviteUsers.cc.o                                                   
Building CXX object CMakeFiles/nheko.dir/src/dialogs/ImageOverlay.cc.o                                                  
Building CXX object CMakeFiles/nheko.dir/src/dialogs/PreviewImageOverlay.cc.o                                           
[ 44%] Building CXX object CMakeFiles/nheko.dir/src/dialogs/JoinRoom.cc.o                                               
[ 44%] Building CXX object CMakeFiles/nheko.dir/src/dialogs/LeaveRoom.cc.o                                              
[ 44%] Building CXX object CMakeFiles/nheko.dir/src/dialogs/Logout.cc.o                                                 
[ 45%] Building CXX object CMakeFiles/nheko.dir/src/dialogs/ReadReceipts.cc.o                                           
[ 45%] Building CXX object CMakeFiles/nheko.dir/src/emoji/Category.cc.o                                                 
[ 46%] Building CXX object CMakeFiles/nheko.dir/src/emoji/ItemDelegate.cc.o                                             
[ 46%] Building CXX object CMakeFiles/nheko.dir/src/emoji/Panel.cc.o                                                    
[ 47%] Building CXX object CMakeFiles/nheko.dir/src/emoji/PickButton.cc.o                                               
[ 47%] Building CXX object CMakeFiles/nheko.dir/src/emoji/Provider.cc.o                                                 
[ 48%] Building CXX object CMakeFiles/nheko.dir/src/timeline/TimelineViewManager.cc.o                                   
[ 48%] Building CXX object CMakeFiles/nheko.dir/src/timeline/TimelineItem.cc.o                                          
[ 49%] Building CXX object CMakeFiles/nheko.dir/src/timeline/TimelineView.cc.o                                          
[ 49%] Building CXX object CMakeFiles/nheko.dir/src/timeline/widgets/AudioItem.cc.o                                     
[ 49%] Building CXX object CMakeFiles/nheko.dir/src/timeline/widgets/FileItem.cc.o                                      
[ 50%] Building CXX object CMakeFiles/nheko.dir/src/timeline/widgets/ImageItem.cc.o                                     
[ 50%] Building CXX object CMakeFiles/nheko.dir/src/timeline/widgets/VideoItem.cc.o                                     
[ 51%] Building CXX object CMakeFiles/nheko.dir/src/ui/Avatar.cc.o                                                      
[ 51%] Building CXX object CMakeFiles/nheko.dir/src/ui/Badge.cc.o                                                       
[ 52%] Building CXX object CMakeFiles/nheko.dir/src/ui/LoadingIndicator.cc.o                                            
[ 52%] Building CXX object CMakeFiles/nheko.dir/src/ui/FlatButton.cc.o                                                  
[ 53%] Building CXX object CMakeFiles/nheko.dir/src/ui/FloatingButton.cc.o                                              
[ 53%] Building CXX object CMakeFiles/nheko.dir/src/ui/Label.cc.o                                                       
[ 53%] Building CXX object CMakeFiles/nheko.dir/src/ui/OverlayModal.cc.o                                                
[ 54%] Building CXX object CMakeFiles/nheko.dir/src/ui/ScrollBar.cc.o                                                   
[ 54%] Building CXX object CMakeFiles/nheko.dir/src/ui/SnackBar.cc.o                                                    
[ 55%] Building CXX object CMakeFiles/nheko.dir/src/ui/RaisedButton.cc.o                                                
[ 55%] Building CXX object CMakeFiles/nheko.dir/src/ui/Ripple.cc.o                                                      
[ 56%] Building CXX object CMakeFiles/nheko.dir/src/ui/RippleOverlay.cc.o                                               
[ 56%] Building CXX object CMakeFiles/nheko.dir/src/ui/OverlayWidget.cc.o                                               
[ 57%] Building CXX object CMakeFiles/nheko.dir/src/ui/TextField.cc.o                                                   
[ 57%] Building CXX object CMakeFiles/nheko.dir/src/ui/ToggleButton.cc.o                                                
[ 57%] Building CXX object CMakeFiles/nheko.dir/src/ui/Theme.cc.o                                                       
[ 58%] Building CXX object CMakeFiles/nheko.dir/src/ui/ThemeManager.cc.o                                                
[ 58%] Building CXX object CMakeFiles/nheko.dir/src/AvatarProvider.cc.o                                                 
[ 59%] Building CXX object CMakeFiles/nheko.dir/src/Cache.cc.o                                                          
[ 59%] Building CXX object CMakeFiles/nheko.dir/src/ChatPage.cc.o                                                       
[ 60%] Building CXX object CMakeFiles/nheko.dir/src/CommunitiesListItem.cc.o                                            
[ 60%] Building CXX object CMakeFiles/nheko.dir/src/CommunitiesList.cc.o                                                
[ 61%] Building CXX object CMakeFiles/nheko.dir/src/Community.cc.o                                                      
[ 61%] Building CXX object CMakeFiles/nheko.dir/src/Deserializable.cc.o                                                 
[ 61%] Building CXX object CMakeFiles/nheko.dir/src/InviteeItem.cc.o                                                    
[ 62%] Building CXX object CMakeFiles/nheko.dir/src/InputValidator.cc.o                                                 
[ 62%] Building CXX object CMakeFiles/nheko.dir/src/Login.cc.o                                                          
[ 63%] Building CXX object CMakeFiles/nheko.dir/src/LoginPage.cc.o                                                      
[ 63%] Building CXX object CMakeFiles/nheko.dir/src/MainWindow.cc.o                                                     
[ 64%] Building CXX object CMakeFiles/nheko.dir/src/MatrixClient.cc.o                                                   
[ 64%] Building CXX object CMakeFiles/nheko.dir/src/QuickSwitcher.cc.o                                                  
[ 65%] Building CXX object CMakeFiles/nheko.dir/src/Register.cc.o                                                       
[ 65%] Building CXX object CMakeFiles/nheko.dir/src/RegisterPage.cc.o                                                   
[ 65%] Building CXX object CMakeFiles/nheko.dir/src/RoomInfoListItem.cc.o                                               
[ 66%] Building CXX object CMakeFiles/nheko.dir/src/RoomList.cc.o                                                       
/home/me/tmp/src/nheko/src/RoomInfoListItem.cc:62:18: error: no viable conversion from 'typename
      std::remove_reference<InvitedRoom &>::type' (aka 'mtx::responses::InvitedRoom') to
      'std::vector<events::collections::StrippedEvents>'
  , invitedRoom_{std::move(room)}
                 ^~~~~~~~~~~~~~~
/usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/stl_vector.h:320:7: note: candidate
      constructor not viable: no known conversion from 'typename std::remove_reference<InvitedRoom &>::type'
      (aka 'mtx::responses::InvitedRoom') to 'const
      std::vector<mpark::variant<mtx::events::StrippedEvent<mtx::events::state::Aliases>,
      mtx::events::StrippedEvent<mtx::events::state::Avatar>,
      mtx::events::StrippedEvent<mtx::events::state::CanonicalAlias>,
      mtx::events::StrippedEvent<mtx::events::state::Create>,
      mtx::events::StrippedEvent<mtx::events::state::GuestAccess>,
      mtx::events::StrippedEvent<mtx::events::state::HistoryVisibility>,
      mtx::events::StrippedEvent<mtx::events::state::JoinRules>, mtx::events::StrippedEvent<mtx::events::state::Member>,
      mtx::events::StrippedEvent<mtx::events::state::Name>,
      mtx::events::StrippedEvent<mtx::events::state::PinnedEvents>,
      mtx::events::StrippedEvent<mtx::events::state::PowerLevels>, mtx::events::StrippedEvent<mtx::events::state::Topic>
      >, std::allocator<mpark::variant<mtx::events::StrippedEvent<mtx::events::state::Aliases>,
      mtx::events::StrippedEvent<mtx::events::state::Avatar>,
      mtx::events::StrippedEvent<mtx::events::state::CanonicalAlias>,
      mtx::events::StrippedEvent<mtx::events::state::Create>,
      mtx::events::StrippedEvent<mtx::events::state::GuestAccess>,
      mtx::events::StrippedEvent<mtx::events::state::HistoryVisibility>,
      mtx::events::StrippedEvent<mtx::events::state::JoinRules>, mtx::events::StrippedEvent<mtx::events::state::Member>,
      mtx::events::StrippedEvent<mtx::events::state::Name>,
      mtx::events::StrippedEvent<mtx::events::state::PinnedEvents>,
      mtx::events::StrippedEvent<mtx::events::state::PowerLevels>, mtx::events::StrippedEvent<mtx::events::state::Topic>
      > > > &' for 1st argument
      vector(const vector& __x)
      ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/stl_vector.h:337:7: note: candidate
      constructor not viable: no known conversion from 'typename std::remove_reference<InvitedRoom &>::type'
      (aka 'mtx::responses::InvitedRoom') to
      'std::vector<mpark::variant<mtx::events::StrippedEvent<mtx::events::state::Aliases>,
      mtx::events::StrippedEvent<mtx::events::state::Avatar>,
      mtx::events::StrippedEvent<mtx::events::state::CanonicalAlias>,
      mtx::events::StrippedEvent<mtx::events::state::Create>,
      mtx::events::StrippedEvent<mtx::events::state::GuestAccess>,
      mtx::events::StrippedEvent<mtx::events::state::HistoryVisibility>,
      mtx::events::StrippedEvent<mtx::events::state::JoinRules>, mtx::events::StrippedEvent<mtx::events::state::Member>,
      mtx::events::StrippedEvent<mtx::events::state::Name>,
      mtx::events::StrippedEvent<mtx::events::state::PinnedEvents>,
      mtx::events::StrippedEvent<mtx::events::state::PowerLevels>, mtx::events::StrippedEvent<mtx::events::state::Topic>
      >, std::allocator<mpark::variant<mtx::events::StrippedEvent<mtx::events::state::Aliases>,
      mtx::events::StrippedEvent<mtx::events::state::Avatar>,
      mtx::events::StrippedEvent<mtx::events::state::CanonicalAlias>,
      mtx::events::StrippedEvent<mtx::events::state::Create>,
      mtx::events::StrippedEvent<mtx::events::state::GuestAccess>,
      mtx::events::StrippedEvent<mtx::events::state::HistoryVisibility>,
      mtx::events::StrippedEvent<mtx::events::state::JoinRules>, mtx::events::StrippedEvent<mtx::events::state::Member>,
      mtx::events::StrippedEvent<mtx::events::state::Name>,
      mtx::events::StrippedEvent<mtx::events::state::PinnedEvents>,
      mtx::events::StrippedEvent<mtx::events::state::PowerLevels>, mtx::events::StrippedEvent<mtx::events::state::Topic>
      > > > &&' for 1st argument
      vector(vector&& __x) noexcept
      ^
/usr/bin/../lib/gcc/x86_64-linux-gnu/6.3.0/../../../../include/c++/6.3.0/bits/stl_vector.h:375:7: note: candidate
      constructor not viable: no known conversion from 'typename std::remove_reference<InvitedRoom &>::type'
      (aka 'mtx::responses::InvitedRoom') to 'initializer_list<value_type>' for 1st argument
      vector(initializer_list<value_type> __l,
      ^
1 error generated.
make[2]: *** [CMakeFiles/nheko.dir/src/RoomInfoListItem.cc.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: Leaving directory `/home/me/tmp/src/nheko/build'
make[1]: *** [CMakeFiles/nheko.dir/all] Error 2
make[1]: Leaving directory `/home/me/tmp/src/nheko/build'
make: *** [all] Error 2

I have no idea why. It worked fine before I ran the bisect script, i.e. an hour ago. Nothing else has changed on my computer. git clean -dfx doesn't find anything to delete other than build/.

Ubuntu Trusty 14.04, Qt 5.9 installed in /opt/qt59.

mujx commented 6 years ago

https://github.com/mujx/nheko/issues/179

alphapapa commented 6 years ago

Argh. So here's what happened:

  1. The bisect script ran make clean.
  2. When certain older commits were checked out, make clean ran git clean -dfx, which deleted my make.sh script I used to build everything correctly, with Clang 3.8.
  3. After that happened, I found an older copy of the script from another directory, used with commits when Clang 3.6 was working.
  4. I used the commands in that to recreate the build process now, not realizing the Clang version was different.
alphapapa commented 6 years ago

Okay, I built it again, and now it's bigger.

$ export CC=clang-3.8 CXX=clang++-3.8; git submodule update --init --recursive; make clean; cmake -H. -Bbuild -DCMAKE_PREFIX_PATH=/opt/qt59/; ni make release; ls -l build/nheko
rm -rf build
-- The C compiler identification is Clang 3.8.0
-- The CXX compiler identification is Clang 3.8.0
-- Check for working C compiler: /usr/bin/clang-3.8
-- Check for working C compiler: /usr/bin/clang-3.8 -- works
-- Detecting C compiler ABI info
-- Detecting C compiler ABI info - done
-- Detecting C compile features
-- Detecting C compile features - done
-- Check for working CXX compiler: /usr/bin/clang++-3.8
-- Check for working CXX compiler: /usr/bin/clang++-3.8 -- works
-- Detecting CXX compiler ABI info
-- Detecting CXX compiler ABI info - done
-- Detecting CXX compile features
-- Detecting CXX compile features - done
-- Found LMDB: /usr/include  
Setting build type to 'Debug'
-- Version: 0.1.0-af5663b
-- Found Doxygen: /usr/local/bin/doxygen (found version "1.8.9.1") 
-- Configuring done
-- Generating done
-- Build files have been written to: /home/me/tmp/src/nheko/build
Build type set to 'RelWithDebInfo'
-- Version: 0.1.0-af5663b
-- Configuring done
-- Generating done
-- Build files have been written to: /home/me/tmp/src/nheko/build
make[1]: Entering directory `/home/me/tmp/src/nheko/build'
make[1]: warning: jobserver unavailable: using -j1.  Add `+' to parent make rule.
make[2]: Entering directory `/home/me/tmp/src/nheko/build'
make[3]: Entering directory `/home/me/tmp/src/nheko/build'
Scanning dependencies of target LANG_QRC
make[3]: Leaving directory `/home/me/tmp/src/nheko/build'
make[3]: Entering directory `/home/me/tmp/src/nheko/build'
[  0%] Generating nheko_el.qm
Updating '/home/me/tmp/src/nheko/build/nheko_el.qm'...
    Generated 34 translation(s) (34 finished and 0 unfinished)
[  0%] Generating nheko_de.qm
Updating '/home/me/tmp/src/nheko/build/nheko_de.qm'...
    Generated 34 translation(s) (34 finished and 0 unfinished)
[  1%] Generating nheko_nl.qm
Updating '/home/me/tmp/src/nheko/build/nheko_nl.qm'...
    Generated 34 translation(s) (33 finished and 1 unfinished)
[  1%] Generating nheko_en.qm
Updating '/home/me/tmp/src/nheko/build/nheko_en.qm'...
    Generated 34 translation(s) (34 finished and 0 unfinished)
make[3]: Leaving directory `/home/me/tmp/src/nheko/build'
[  1%] Built target LANG_QRC
make[3]: Entering directory `/home/me/tmp/src/nheko/build'
Scanning dependencies of target matrix_structs
make[3]: Leaving directory `/home/me/tmp/src/nheko/build'
make[3]: Entering directory `/home/me/tmp/src/nheko/build'
[  2%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events.cpp.o
[  2%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/requests.cpp.o                         
[  3%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/aliases.cpp.o                   
[  3%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/avatar.cpp.o                    
[  4%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/canonical_alias.cpp.o           
[  4%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/common.cpp.o                    
[  4%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/create.cpp.o                    
[  5%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/guest_access.cpp.o              
[  5%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/history_visibility.cpp.o        
[  6%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/join_rules.cpp.o                
[  6%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/member.cpp.o                    
[  7%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/name.cpp.o                      
[  7%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/pinned_events.cpp.o             
[  8%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/power_levels.cpp.o              
[  8%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/redaction.cpp.o                 
[  8%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/topic.cpp.o                     
[  9%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/messages/audio.cpp.o            
[  9%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/messages/emote.cpp.o            
[ 10%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/messages/file.cpp.o             
[ 10%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/messages/image.cpp.o            
[ 11%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/messages/notice.cpp.o           
[ 11%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/messages/text.cpp.o             
[ 12%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/events/messages/video.cpp.o            
[ 12%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/responses/common.cpp.o                 
[ 12%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/responses/login.cpp.o                  
[ 13%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/responses/messages.cpp.o               
[ 13%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/responses/profile.cpp.o                
[ 14%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/responses/sync.cpp.o                   
[ 14%] Building CXX object libs/matrix-structs/CMakeFiles/matrix_structs.dir/src/responses/version.cpp.o                
Linking CXX static library libmatrix_structs.a
make[3]: Leaving directory `/home/me/tmp/src/nheko/build'
[ 14%] Built target matrix_structs
make[3]: Entering directory `/home/me/tmp/src/nheko/build'
[ 15%] Generating include/dialogs/moc_CreateRoom.cpp
[ 15%] Generating include/dialogs/moc_ImageOverlay.cpp
[ 16%] Generating include/dialogs/moc_PreviewImageOverlay.cpp
[ 16%] Generating include/dialogs/moc_InviteUsers.cpp
[ 16%] Generating include/dialogs/moc_JoinRoom.cpp
[ 17%] Generating include/dialogs/moc_LeaveRoom.cpp
[ 17%] Generating include/dialogs/moc_Logout.cpp
[ 18%] Generating include/dialogs/moc_ReadReceipts.cpp
[ 18%] Generating include/emoji/moc_Category.cpp
[ 19%] Generating include/emoji/moc_ItemDelegate.cpp
[ 19%] Generating include/emoji/moc_Panel.cpp
[ 20%] Generating include/emoji/moc_PickButton.cpp
[ 20%] Generating include/timeline/moc_TimelineItem.cpp
[ 20%] Generating include/timeline/moc_TimelineView.cpp
[ 21%] Generating include/timeline/moc_TimelineViewManager.cpp
[ 21%] Generating include/timeline/widgets/moc_AudioItem.cpp
[ 22%] Generating include/timeline/widgets/moc_FileItem.cpp
[ 22%] Generating include/timeline/widgets/moc_ImageItem.cpp
[ 23%] Generating include/timeline/widgets/moc_VideoItem.cpp
[ 23%] Generating include/ui/moc_Avatar.cpp
[ 24%] Generating include/ui/moc_Badge.cpp
[ 24%] Generating include/ui/moc_LoadingIndicator.cpp
[ 25%] Generating include/ui/moc_FlatButton.cpp
[ 25%] Generating include/ui/moc_Label.cpp
[ 25%] Generating include/ui/moc_FloatingButton.cpp
[ 26%] Generating include/ui/moc_OverlayWidget.cpp
[ 26%] Generating include/ui/moc_ScrollBar.cpp
[ 27%] Generating include/ui/moc_SnackBar.cpp
[ 27%] Generating include/ui/moc_RaisedButton.cpp
[ 28%] Generating include/ui/moc_Ripple.cpp
[ 28%] Generating include/ui/moc_RippleOverlay.cpp
[ 29%] Generating include/ui/moc_TextField.cpp
[ 29%] Generating include/ui/moc_ToggleButton.cpp
[ 29%] Generating include/ui/moc_Theme.cpp
[ 30%] Generating include/ui/moc_ThemeManager.cpp
[ 30%] Generating include/moc_AvatarProvider.cpp
[ 31%] Generating include/moc_ChatPage.cpp
[ 31%] Generating include/moc_CommunitiesListItem.cpp
[ 32%] Generating include/moc_CommunitiesList.cpp
[ 32%] Generating include/moc_Community.cpp
[ 33%] Generating include/moc_LoginPage.cpp
[ 33%] Generating include/moc_MainWindow.cpp
[ 33%] Generating include/moc_InviteeItem.cpp
[ 34%] Generating include/moc_MatrixClient.cpp
[ 34%] Generating include/moc_QuickSwitcher.cpp
[ 35%] Generating include/moc_RegisterPage.cpp
[ 35%] Generating include/moc_RoomInfoListItem.cpp
[ 36%] Generating include/moc_RoomList.cpp
[ 36%] Generating include/moc_SideBarActions.cpp
[ 37%] Generating include/moc_Splitter.cpp
[ 37%] Generating include/moc_TextInputWidget.cpp
[ 37%] Generating include/moc_TopRoomBar.cpp
[ 38%] Generating include/moc_TrayIcon.cpp
[ 38%] Generating include/moc_TypingDisplay.cpp
[ 39%] Generating include/moc_UserInfoWidget.cpp
[ 39%] Generating include/moc_UserSettingsPage.cpp
[ 40%] Generating include/moc_WelcomePage.cpp
[ 40%] Generating qrc_res.cpp
[ 41%] Generating qrc_translations.cpp
Scanning dependencies of target nheko
make[3]: Leaving directory `/home/me/tmp/src/nheko/build'
make[3]: Entering directory `/home/me/tmp/src/nheko/build'
[ 42%] Building CXX object CMakeFiles/nheko.dir/src/dialogs/CreateRoom.cc.o
[ 42%] Building CXX object CMakeFiles/nheko.dir/src/dialogs/ImageOverlay.cc.o                                           
[ 43%] Building CXX object CMakeFiles/nheko.dir/src/dialogs/PreviewImageOverlay.cc.o                                    
[ 43%] Building CXX object CMakeFiles/nheko.dir/src/dialogs/InviteUsers.cc.o                                            
[ 44%] Building CXX object CMakeFiles/nheko.dir/src/dialogs/JoinRoom.cc.o                                               
[ 44%] Building CXX object CMakeFiles/nheko.dir/src/dialogs/LeaveRoom.cc.o                                              
[ 44%] Building CXX object CMakeFiles/nheko.dir/src/dialogs/Logout.cc.o                                                 
[ 45%] Building CXX object CMakeFiles/nheko.dir/src/dialogs/ReadReceipts.cc.o                                           
[ 45%] Building CXX object CMakeFiles/nheko.dir/src/emoji/Category.cc.o                                                 
[ 46%] Building CXX object CMakeFiles/nheko.dir/src/emoji/ItemDelegate.cc.o                                             
[ 46%] Building CXX object CMakeFiles/nheko.dir/src/emoji/Panel.cc.o                                                    
[ 47%] Building CXX object CMakeFiles/nheko.dir/src/emoji/PickButton.cc.o                                               
[ 47%] Building CXX object CMakeFiles/nheko.dir/src/emoji/Provider.cc.o                                                 
[ 48%] Building CXX object CMakeFiles/nheko.dir/src/timeline/TimelineViewManager.cc.o                                   
[ 48%] Building CXX object CMakeFiles/nheko.dir/src/timeline/TimelineItem.cc.o                                          
[ 49%] Building CXX object CMakeFiles/nheko.dir/src/timeline/TimelineView.cc.o                                          
[ 49%] Building CXX object CMakeFiles/nheko.dir/src/timeline/widgets/AudioItem.cc.o                                     
[ 49%] Building CXX object CMakeFiles/nheko.dir/src/timeline/widgets/FileItem.cc.o                                      
[ 50%] Building CXX object CMakeFiles/nheko.dir/src/timeline/widgets/ImageItem.cc.o                                     
[ 50%] Building CXX object CMakeFiles/nheko.dir/src/timeline/widgets/VideoItem.cc.o                                     
[ 51%] Building CXX object CMakeFiles/nheko.dir/src/ui/Avatar.cc.o                                                      
[ 51%] Building CXX object CMakeFiles/nheko.dir/src/ui/Badge.cc.o                                                       
[ 52%] Building CXX object CMakeFiles/nheko.dir/src/ui/LoadingIndicator.cc.o                                            
[ 52%] Building CXX object CMakeFiles/nheko.dir/src/ui/FlatButton.cc.o                                                  
[ 53%] Building CXX object CMakeFiles/nheko.dir/src/ui/FloatingButton.cc.o                                              
[ 53%] Building CXX object CMakeFiles/nheko.dir/src/ui/Label.cc.o                                                       
[ 53%] Building CXX object CMakeFiles/nheko.dir/src/ui/OverlayModal.cc.o                                                
[ 54%] Building CXX object CMakeFiles/nheko.dir/src/ui/ScrollBar.cc.o                                                   
[ 54%] Building CXX object CMakeFiles/nheko.dir/src/ui/SnackBar.cc.o                                                    
[ 55%] Building CXX object CMakeFiles/nheko.dir/src/ui/RaisedButton.cc.o                                                
[ 55%] Building CXX object CMakeFiles/nheko.dir/src/ui/Ripple.cc.o                                                      
[ 56%] Building CXX object CMakeFiles/nheko.dir/src/ui/RippleOverlay.cc.o                                               
[ 56%] Building CXX object CMakeFiles/nheko.dir/src/ui/OverlayWidget.cc.o                                               
[ 57%] Building CXX object CMakeFiles/nheko.dir/src/ui/TextField.cc.o                                                   
[ 57%] Building CXX object CMakeFiles/nheko.dir/src/ui/ToggleButton.cc.o                                                
[ 57%] Building CXX object CMakeFiles/nheko.dir/src/ui/Theme.cc.o                                                       
[ 58%] Building CXX object CMakeFiles/nheko.dir/src/ui/ThemeManager.cc.o                                                
[ 58%] Building CXX object CMakeFiles/nheko.dir/src/AvatarProvider.cc.o                                                 
[ 59%] Building CXX object CMakeFiles/nheko.dir/src/Cache.cc.o                                                          
[ 59%] Building CXX object CMakeFiles/nheko.dir/src/ChatPage.cc.o                                                       
[ 60%] Building CXX object CMakeFiles/nheko.dir/src/CommunitiesListItem.cc.o                                            
[ 60%] Building CXX object CMakeFiles/nheko.dir/src/CommunitiesList.cc.o                                                
[ 61%] Building CXX object CMakeFiles/nheko.dir/src/Community.cc.o                                                      
[ 61%] Building CXX object CMakeFiles/nheko.dir/src/Deserializable.cc.o                                                 
[ 61%] Building CXX object CMakeFiles/nheko.dir/src/InviteeItem.cc.o                                                    
[ 62%] Building CXX object CMakeFiles/nheko.dir/src/InputValidator.cc.o                                                 
[ 62%] Building CXX object CMakeFiles/nheko.dir/src/Login.cc.o                                                          
[ 63%] Building CXX object CMakeFiles/nheko.dir/src/LoginPage.cc.o                                                      
[ 63%] Building CXX object CMakeFiles/nheko.dir/src/MainWindow.cc.o                                                     
[ 64%] Building CXX object CMakeFiles/nheko.dir/src/MatrixClient.cc.o                                                   
[ 64%] Building CXX object CMakeFiles/nheko.dir/src/QuickSwitcher.cc.o                                                  
[ 65%] Building CXX object CMakeFiles/nheko.dir/src/Register.cc.o                                                       
[ 65%] Building CXX object CMakeFiles/nheko.dir/src/RegisterPage.cc.o                                                   
[ 65%] Building CXX object CMakeFiles/nheko.dir/src/RoomInfoListItem.cc.o                                               
[ 66%] Building CXX object CMakeFiles/nheko.dir/src/RoomList.cc.o                                                       
[ 66%] Building CXX object CMakeFiles/nheko.dir/src/RoomMessages.cc.o                                                   
[ 67%] Building CXX object CMakeFiles/nheko.dir/src/RoomState.cc.o                                                      
[ 67%] Building CXX object CMakeFiles/nheko.dir/src/RunGuard.cc.o                                                       
[ 68%] Building CXX object CMakeFiles/nheko.dir/src/SideBarActions.cc.o                                                 
[ 68%] Building CXX object CMakeFiles/nheko.dir/src/Splitter.cc.o                                                       
[ 69%] Building CXX object CMakeFiles/nheko.dir/src/TextInputWidget.cc.o                                                
[ 69%] Building CXX object CMakeFiles/nheko.dir/src/TopRoomBar.cc.o                                                     
[ 69%] Building CXX object CMakeFiles/nheko.dir/src/TrayIcon.cc.o                                                       
[ 70%] Building CXX object CMakeFiles/nheko.dir/src/TypingDisplay.cc.o                                                  
[ 70%] Building CXX object CMakeFiles/nheko.dir/src/Utils.cc.o                                                          
[ 71%] Building CXX object CMakeFiles/nheko.dir/src/UserInfoWidget.cc.o                                                 
[ 71%] Building CXX object CMakeFiles/nheko.dir/src/UserSettingsPage.cc.o                                               
[ 72%] Building CXX object CMakeFiles/nheko.dir/src/WelcomePage.cc.o                                                    
[ 72%] Building CXX object CMakeFiles/nheko.dir/src/main.cc.o                                                           
[ 73%] Building CXX object CMakeFiles/nheko.dir/include/dialogs/moc_CreateRoom.cpp.o                                    
[ 73%] Building CXX object CMakeFiles/nheko.dir/include/dialogs/moc_ImageOverlay.cpp.o                                  
[ 74%] Building CXX object CMakeFiles/nheko.dir/include/dialogs/moc_PreviewImageOverlay.cpp.o                           
[ 74%] Building CXX object CMakeFiles/nheko.dir/include/dialogs/moc_InviteUsers.cpp.o                                   
[ 74%] Building CXX object CMakeFiles/nheko.dir/include/dialogs/moc_JoinRoom.cpp.o                                      
[ 75%] Building CXX object CMakeFiles/nheko.dir/include/dialogs/moc_LeaveRoom.cpp.o                                     
[ 75%] Building CXX object CMakeFiles/nheko.dir/include/dialogs/moc_Logout.cpp.o                                        
[ 76%] Building CXX object CMakeFiles/nheko.dir/include/dialogs/moc_ReadReceipts.cpp.o                                  
[ 76%] Building CXX object CMakeFiles/nheko.dir/include/emoji/moc_Category.cpp.o                                        
[ 77%] Building CXX object CMakeFiles/nheko.dir/include/emoji/moc_ItemDelegate.cpp.o                                    
[ 77%] Building CXX object CMakeFiles/nheko.dir/include/emoji/moc_Panel.cpp.o                                           
[ 78%] Building CXX object CMakeFiles/nheko.dir/include/emoji/moc_PickButton.cpp.o                                      
[ 78%] Building CXX object CMakeFiles/nheko.dir/include/timeline/moc_TimelineItem.cpp.o
[ 78%] Building CXX object CMakeFiles/nheko.dir/include/timeline/moc_TimelineView.cpp.o
[ 79%] Building CXX object CMakeFiles/nheko.dir/include/timeline/moc_TimelineViewManager.cpp.o
[ 79%] Building CXX object CMakeFiles/nheko.dir/include/timeline/widgets/moc_AudioItem.cpp.o
[ 80%] Building CXX object CMakeFiles/nheko.dir/include/timeline/widgets/moc_FileItem.cpp.o
[ 80%] Building CXX object CMakeFiles/nheko.dir/include/timeline/widgets/moc_ImageItem.cpp.o
[ 81%] Building CXX object CMakeFiles/nheko.dir/include/timeline/widgets/moc_VideoItem.cpp.o
[ 81%] Building CXX object CMakeFiles/nheko.dir/include/ui/moc_Avatar.cpp.o
[ 82%] Building CXX object CMakeFiles/nheko.dir/include/ui/moc_Badge.cpp.o
[ 82%] Building CXX object CMakeFiles/nheko.dir/include/ui/moc_LoadingIndicator.cpp.o
[ 82%] Building CXX object CMakeFiles/nheko.dir/include/ui/moc_FlatButton.cpp.o
[ 83%] Building CXX object CMakeFiles/nheko.dir/include/ui/moc_Label.cpp.o
[ 83%] Building CXX object CMakeFiles/nheko.dir/include/ui/moc_FloatingButton.cpp.o
[ 84%] Building CXX object CMakeFiles/nheko.dir/include/ui/moc_OverlayWidget.cpp.o
[ 84%] Building CXX object CMakeFiles/nheko.dir/include/ui/moc_ScrollBar.cpp.o
[ 85%] Building CXX object CMakeFiles/nheko.dir/include/ui/moc_SnackBar.cpp.o
[ 85%] Building CXX object CMakeFiles/nheko.dir/include/ui/moc_RaisedButton.cpp.o
[ 86%] Building CXX object CMakeFiles/nheko.dir/include/ui/moc_Ripple.cpp.o
[ 86%] Building CXX object CMakeFiles/nheko.dir/include/ui/moc_RippleOverlay.cpp.o
[ 86%] Building CXX object CMakeFiles/nheko.dir/include/ui/moc_TextField.cpp.o
[ 87%] Building CXX object CMakeFiles/nheko.dir/include/ui/moc_ToggleButton.cpp.o
[ 87%] Building CXX object CMakeFiles/nheko.dir/include/ui/moc_Theme.cpp.o
[ 88%] Building CXX object CMakeFiles/nheko.dir/include/ui/moc_ThemeManager.cpp.o
[ 88%] Building CXX object CMakeFiles/nheko.dir/include/moc_AvatarProvider.cpp.o
[ 89%] Building CXX object CMakeFiles/nheko.dir/include/moc_ChatPage.cpp.o
[ 89%] Building CXX object CMakeFiles/nheko.dir/include/moc_CommunitiesListItem.cpp.o
[ 90%] Building CXX object CMakeFiles/nheko.dir/include/moc_CommunitiesList.cpp.o
[ 90%] Building CXX object CMakeFiles/nheko.dir/include/moc_Community.cpp.o
[ 90%] Building CXX object CMakeFiles/nheko.dir/include/moc_LoginPage.cpp.o
[ 91%] Building CXX object CMakeFiles/nheko.dir/include/moc_MainWindow.cpp.o
[ 91%] Building CXX object CMakeFiles/nheko.dir/include/moc_InviteeItem.cpp.o
[ 92%] Building CXX object CMakeFiles/nheko.dir/include/moc_MatrixClient.cpp.o
[ 92%] Building CXX object CMakeFiles/nheko.dir/include/moc_QuickSwitcher.cpp.o
[ 93%] Building CXX object CMakeFiles/nheko.dir/include/moc_RegisterPage.cpp.o
[ 93%] Building CXX object CMakeFiles/nheko.dir/include/moc_RoomInfoListItem.cpp.o
[ 94%] Building CXX object CMakeFiles/nheko.dir/include/moc_RoomList.cpp.o
[ 94%] Building CXX object CMakeFiles/nheko.dir/include/moc_SideBarActions.cpp.o
[ 94%] Building CXX object CMakeFiles/nheko.dir/include/moc_Splitter.cpp.o
[ 95%] Building CXX object CMakeFiles/nheko.dir/include/moc_TextInputWidget.cpp.o
[ 95%] Building CXX object CMakeFiles/nheko.dir/include/moc_TopRoomBar.cpp.o
[ 96%] Building CXX object CMakeFiles/nheko.dir/include/moc_TrayIcon.cpp.o
[ 96%] Building CXX object CMakeFiles/nheko.dir/include/moc_TypingDisplay.cpp.o
[ 97%] Building CXX object CMakeFiles/nheko.dir/include/moc_UserInfoWidget.cpp.o
[ 97%] Building CXX object CMakeFiles/nheko.dir/include/moc_UserSettingsPage.cpp.o
[ 98%] Building CXX object CMakeFiles/nheko.dir/include/moc_WelcomePage.cpp.o
[ 98%] Building CXX object CMakeFiles/nheko.dir/qrc_res.cpp.o
[ 99%] Building CXX object CMakeFiles/nheko.dir/qrc_translations.cpp.o
Linking CXX executable nheko
make[3]: Leaving directory `/home/me/tmp/src/nheko/build'
[100%] Built target nheko
make[2]: Leaving directory `/home/me/tmp/src/nheko/build'
make[1]: Leaving directory `/home/me/tmp/src/nheko/build'

-rwxrwxr-x 1 me me 99M Jan 16 08:03 build/nheko*

That's current master.

mujx commented 6 years ago

Could you try running strip build/nheko and see if the size changed?

alphapapa commented 6 years ago

Indeed:

$ strip build/nheko; ll build/nheko
-rwxrwxr-x 1 me me 7.1M Jan 16 08:21 build/nheko*

And the binary seems to work correctly afterward.

mujx commented 6 years ago

I just tested the build (RelWithDebInfo) produced by docker and it has the same size (104 MB). So apparently the extra space is for the debug symbols. Switching to a Release builds (i.e without debug symbols) fixes the issue.

alphapapa commented 6 years ago

Does Makefile need to be updated then? It uses RelWithDebInfo for make release: https://github.com/mujx/nheko/blob/master/Makefile#L11

mujx commented 6 years ago

No, the debug symbols are needed to produce human friendly backtraces.

alphapapa commented 6 years ago

Sorry, I don't understand. Shouldn't the debug symbols be in a debug build? Shouldn't make release make a Release build?

mujx commented 6 years ago

The point is to help the user extract a useful backtrace if the app crashes, without the need to build anything.

PureTryOut commented 6 years ago

If you want a release build, just use cmake with -DCMAKE_BUILD_TYPE=Release. On my system the nheko binary is 6.9MB because of it.

alphapapa commented 6 years ago

@PureTryOut Thanks, but that doesn't seem to work for me. I ran this:

export CC=clang-3.8 CXX=clang++-3.8
git submodule update --init --recursive
make clean
cmake -H. -Bbuild -DCMAKE_BUILD_TYPE=Release -DCMAKE_PREFIX_PATH=/opt/qt59/
make release

But the resulting binary was still 81 MB, and I had to run strip manually.