Zoxcore / qTox_enhanced

qTox is a chat, voice, video, and file transfer IM client using the encrypted peer-to-peer Tox protocol.
GNU General Public License v3.0
48 stars 5 forks source link

Building on Debian Trixie/sid: Error in coreav.h for ‘TOXAV_CALL_COMM_INFO’ #17

Closed tkapias closed 10 months ago

tkapias commented 11 months ago

Introduction

I tried to build qTox Enhanced but make failed at coreav, saying that ‘TOXAV_CALL_COMM_INFO’ has not been declared.

OS: Debian GNU/Linux trixie/sid, Linux 6.5.0-4-amd64 qTox version: zoxcore/push_notification, tag: v1.17.6.026, tag: nightly Commit hash: 939fd3cc7b55e0ef5b7cf6aff78e9f2fdbe69e78 toxcore: 0.2.18 (commit 7cfe35dff2209f09ca4a08433a7f16b09e8683f3) Qt: 5.15.10 & 6.4.2

Reproducible: Always

Build Process

sudo apt install asciidoc automake autotools-dev build-essential check checkinstall cmake cmake-extras cmake-qt-gui cmake-vala ffmpeg git libalut-dev libavcodec-dev libavdevice-dev libavformat-dev libavutil-dev libconfig-dev libcurl4-openssl-dev libexif-dev libgdk-pixbuf2.0-dev libgtk2.0-dev libkf5sonnet-dev libncurses-dev libnotify-dev libopenal-dev libopenal-dev libopenal1 libopus-dev libqrencode-dev libqrencode-dev libqt5concurrent5 libqt5core5a libqt5gui5 libqt5network5 libqt5networkauth5 libqt5networkauth5-dev libqt5opengl5 libqt5opengl5-dev libqt5svg5 libqt5svg5-dev libqt5widgets5 libqt5xml5 libqt5xmlpatterns5 libqt5xmlpatterns5-dev libqt6concurrent6 libqt6core5compat6 libqt6core6 libqt6gui6 libqt6network6 libqt6networkauth6 libqt6opengl6 libqt6openglwidgets6 libqt6svg6 libqt6svgwidgets6 libqt6widgets6 libqt6xml6 libsodium-dev libsqlcipher-dev libsqlcipher-dev libssl-dev libswscale-dev libtool libvpx-dev libx11-dev libxss-dev manpages-dev pkg-config python3-dev qml-module-org-kde-sonnet qttools5-dev qttools5-dev-tools sonnet-plugins zlib1g-dev
mkdir ~/Builds && cd ~/Builds
git clone --recurse-submodules --depth=1 https://github.com/toktok/c-toxcore
cd c-toxcore/
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local -DBOOTSTRAP_DAEMON=OFF -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)
sudo make install
sudo ldconfig
mkdir ~/Builds && cd ~/Builds
git clone --depth=1 https://github.com/toxext/toxext
cd toxext
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local
make -j$(nproc)
sudo make install
sudo ldconfig
mkdir ~/Builds && cd ~/Builds
git clone --depth=1 https://github.com/toxext/tox_extension_messages
cd tox_extension_messages
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local
make -j$(nproc)
sudo make install
sudo ldconfig
mkdir ~/Builds && cd ~/Builds
git clone --depth=1 https://github.com/Zoxcore/qTox_enhanced
cd qTox_enhanced/
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local
make -j$(nproc)
sudo make install

ERROR at when building qTox Enhanced with make

[ 39%] Building CXX object CMakeFiles/qtox_static.dir/src/nexus.cpp.o
In file included from /home/tomasz/Builds/qTox_enhanced/src/nexus.cpp:24:
/home/tomasz/Builds/qTox_enhanced/src/core/coreav.h:144:70: error: ‘TOXAV_CALL_COMM_INFO’ has not been declared
  144 |     static void videoCommCallback(ToxAV *av, uint32_t friend_number, TOXAV_CALL_COMM_INFO comm_value,
      |                                                                      ^~~~~~~~~~~~~~~~~~~~
In file included from /home/tomasz/Builds/qTox_enhanced/build/qtox_static_autogen/PRMOGMWJPH/moc_coreav.cpp:10,
                 from /home/tomasz/Builds/qTox_enhanced/build/qtox_static_autogen/mocs_compilation.cpp:14:
/home/tomasz/Builds/qTox_enhanced/build/qtox_static_autogen/PRMOGMWJPH/../../../src/core/coreav.h:144:70: error: ‘TOXAV_CALL_COMM_INFO’ has not been declared
  144 |     static void videoCommCallback(ToxAV *av, uint32_t friend_number, TOXAV_CALL_COMM_INFO comm_value,
      |                                                                      ^~~~~~~~~~~~~~~~~~~~
make[2]: *** [CMakeFiles/qtox_static.dir/build.make:206: CMakeFiles/qtox_static.dir/src/nexus.cpp.o] Error 1
make[2]: *** Waiting for unfinished jobs....
make[2]: *** [CMakeFiles/qtox_static.dir/build.make:136: CMakeFiles/qtox_static.dir/qtox_static_autogen/mocs_compilation.cpp.o] Error 1
make[1]: *** [CMakeFiles/Makefile2:342: CMakeFiles/qtox_static.dir/all] Error 2
make: *** [Makefile:146: all] Error 2

Additional Info

I search for this part in the codebase and it's not from upstream, it was intruduced in a commit name "Video: super HQ video" in Oct 26, 2022.

For information, I built the Toxic client just before and it worked fine with the same libraries.

zoff99 commented 11 months ago

qtox enhanced needs also enhanced toxcore. if you want to build for debian run this (you need docker on your system):

git clone https://github.com/Zoxcore/qTox_enhanced
cd qTox_enhanced/.localrun/
./docker_it_deb11.sh build
./docker_it_deb11.sh

this builds qtox enhanced for debian 11

zoff99 commented 11 months ago

also please be aware that qt5 ist EOL since june 2023

tkapias commented 11 months ago

Thank you, I like to use a common build environment and reading these dockerfiles gave me the missing infos.

I will try qTox features tomorrow but the build was successful and qTox is running.

About qt5, I knew about the EOL but I think that it will stay available for a long time, just like gtk3 or even gtk2 libraries are still there in Debian. I hope that it's not an issue for the continuation of the project, I was really happy to find that there is still some clients maintained for Tox (qTox Enhanced, Toxic, aTox and Trifa).

My updated Build Process for Tox Desktop clients

Dependencies

sudo apt install asciidoc autoconf automake autotools-dev build-essential ca-certificates check checkinstall cmake cmake-extras cmake-qt-gui cmake-vala curl desktop-file-utils extra-cmake-modules ffmpeg flite-dev git lcov libalut-dev libaom-dev libarchive-dev libasound-dev libass-dev libavc1394-dev libavcodec-dev libavdevice-dev libavfilter-dev libavformat-dev libavutil-dev libbluray-dev libbrotli-dev libbs2b-dev libbz2-dev libcaca-dev libcairo-dev libcdio-cdda-dev libcdio-dev libcdio-paranoia-dev libchromaprint-dev libcodec2-dev libconfig-dev libcurl4-gnutls-dev libdav1d-dev libdc1394-dev libdrm-dev libexif-dev libfuse-dev libgdk-pixbuf2.0-dev libglib2.0-dev libgme-dev libgnutls28-dev libgpgme-dev libgsm1-dev libgssapi-krb5-2 libgtk2.0-dev libidn2-dev libiec61883-dev libinotifytools0-dev libjack-jackd2-dev libk5crypto3 libkf5sonnet-dev libkrb5-dev libldap2-dev liblz4-dev liblzma-dev libmfx-dev libmp3lame-dev libmysofa-dev libncurses-dev libnghttp2-dev libnotify-dev libopenal-dev libopenal1 libopencv-core-dev libopencv-imgproc-dev libopenjp2-7-dev libopenmpt-dev libopus-dev libpsl-dev libpulse-dev libqrencode-dev libqt5concurrent5 libqt5core5a libqt5gui5 libqt5network5 libqt5networkauth5 libqt5networkauth5-dev libqt5opengl5 libqt5opengl5-dev libqt5svg5 libqt5svg5-dev libqt5widgets5 libqt5xml5 libqt5xmlpatterns5 libqt5xmlpatterns5-dev libqt6concurrent6 libqt6core5compat6 libqt6core6 libqt6gui6 libqt6network6 libqt6networkauth6 libqt6opengl6 libqt6openglwidgets6 libqt6svg6 libqt6svgwidgets6 libqt6widgets6 libqt6xml6 librav1e-dev libraw1394-dev librsvg2-dev librtmp-dev librubberband-dev libsdl2-dev libshine-dev libsnappy-dev libsndio-dev libsodium-dev libsoxr-dev libspeex-dev libsqlcipher-dev libssh-dev libssh2-1-dev libssl-dev libsvtav1enc-dev libswresample-dev libswscale-dev libtheora-dev libtool libtwolame-dev libva-dev libva-drm2 libva-x11-2 libvdpau-dev libvorbis-dev libvorbisenc2 libvpl-dev libvpx-dev libwavpack-dev libwebp-dev libwebpmux3 libx11-dev libx264-dev libx265-dev libxml2-dev libxss-dev libxv-dev libxvidcore-dev libzmq5-dev libzstd-dev libzstd1 libzvbi-dev manpages-dev nettle-dev opencl-c-headers opencl-dev patchelf pkg-config python3-dev qml-module-org-kde-sonnet qt5-qmake qtbase5-dev qtbase5-dev-tools qtchooser qttools5-dev qttools5-dev-tools sonnet-plugins wget xdg-utils xxd zlib1g-dev zsync
mkdir ~/Builds && cd ~/Builds
git clone --recurse-submodules --depth=1 https://github.com/zoff99/c-toxcore
cd c-toxcore/
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local -DBOOTSTRAP_DAEMON=OFF -DCMAKE_BUILD_TYPE=Release
make -j$(nproc)
sudo make install
sudo ldconfig
mkdir ~/Builds && cd ~/Builds
git clone --depth=1 https://github.com/toxext/toxext
cd toxext
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local
make -j$(nproc)
sudo make install
sudo ldconfig
mkdir ~/Builds && cd ~/Builds
git clone --depth=1 https://github.com/toxext/tox_extension_messages
cd tox_extension_messages
mkdir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local
make -j$(nproc)
sudo make install
sudo ldconfig

KDE SnoreNotify

mkdir ~/Builds && cd ~/Builds
git clone --depth=1 https://github.com/KDE/snorenotify
cd snorenotify
mdkir build && cd build
cmake .. -DCMAKE_INSTALL_PREFIX=/usr/local
cmake --build . -- -j$(nproc)
sudo cmake --install .
sudo ldconfig

qTox Enhanced

mkdir ~/Builds && cd ~/Builds
git clone --depth=1 https://github.com/Zoxcore/qTox_enhanced
cd qTox_enhanced/
mkdir build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release -DUPDATE_CHECK=ON -DSTRICT_OPTIONS=OFF -DCODE_COVERAGE=ON -DDESKTOP_NOTIFICATIONS=ON -DCMAKE_INSTALL_PREFIX=/usr/local
cmake --build . -- -j$(nproc)
sudo cmake --install .

Toxic

mkdir ~/Builds && cd ~/Builds
git clone --depth=1 https://github.com/JFreegman/toxic
cd toxic
ENABLE_RELEASE=1 PREFIX=/usr/local make
ENABLE_RELEASE=1 PREFIX=/usr/local sudo make install
zoff99 commented 11 months ago

i don't think currently anybody is working on porting qtox_enhanced to qt6. you can the the experimental: https://github.com/Zoxcore/trifa_material

zoff99 commented 11 months ago

@tkapias can we close this as solved?

zoff99 commented 10 months ago

i think this is now solved, so closing