diff --git a/.appveyor.yml b/.appveyor.yml index 72b790d7..6df0cd1d 100644 --- a/.appveyor.yml +++ b/.appveyor.yml @@ -18,7 +18,7 @@ install: build_script: - git submodule update --init - mkdir build - - c:\cygwin-root\bin\sh -lc "cd $APPVEYOR_BUILD_FOLDER/build; ../configure --enable-charset --enable-zlib --enable-openssl --enable-perl --enable-python --enable-cyrus --enable-argon < /dev/null; result=$?; cmake --system-information > config.log; appveyor PushArtifact config.log; exit $result" + - c:\cygwin-root\bin\sh -lc "cd $APPVEYOR_BUILD_FOLDER/build; env ZNC_QT_VER=5 ../configure --enable-charset --enable-zlib --enable-openssl --enable-perl --enable-python --enable-cyrus --enable-argon < /dev/null; result=$?; cmake --system-information > config.log; appveyor PushArtifact config.log; exit $result" - c:\cygwin-root\bin\sh -lc "cd $APPVEYOR_BUILD_FOLDER/build; make VERBOSE=1 -j2 < /dev/null" - c:\cygwin-root\bin\sh -lc "cd $APPVEYOR_BUILD_FOLDER/build; make install < /dev/null" - c:\cygwin-root\bin\sh -lc "znc --version" @@ -27,4 +27,4 @@ build_script: - c:\cygwin-root\bin\sh -lc "rebase -s -v $(cat /tmp/files-to-rebase)" test_script: - c:\cygwin-root\bin\sh -lc "cd $APPVEYOR_BUILD_FOLDER/build; make VERBOSE=1 unittest < /dev/null" - - c:\cygwin-root\bin\sh -lc "cd $APPVEYOR_BUILD_FOLDER/build; make VERBOSE=1 inttest < /dev/null" + - c:\cygwin-root\bin\sh -lc "cd $APPVEYOR_BUILD_FOLDER/build; env ZNC_QT_VER=5 make VERBOSE=1 inttest < /dev/null" diff --git a/.github/build.sh b/.github/build.sh index 14214901..33a56ed3 100644 --- a/.github/build.sh +++ b/.github/build.sh @@ -6,7 +6,7 @@ ls -la cpanm --local-lib=~/perl5 local::lib eval $(perl -I ~/perl5/lib/perl5/ -Mlocal::lib) cpanm --notest Devel::Cover::Report::Clover -pip3 install --user coverage +pip3 install --user --break-system-packages coverage export ZNC_MODPERL_COVERAGE=1 #export ZNC_MODPYTHON_COVERAGE=1 @@ -39,7 +39,7 @@ ls -lRa case "${CC:-gcc}" in gcc) - lcov --directory . --capture --output-file lcov-coverage.txt + lcov --directory . --capture --output-file lcov-coverage.txt --ignore-errors mismatch lcov --list lcov-coverage.txt ;; clang) diff --git a/.github/ubuntu_deps.sh b/.github/ubuntu_deps.sh index 2e6d12b2..bc0bec58 100644 --- a/.github/ubuntu_deps.sh +++ b/.github/ubuntu_deps.sh @@ -1,4 +1,4 @@ sudo apt-get update -sudo apt-get install -y tcl-dev libsasl2-dev libicu-dev swig qtbase5-dev libboost-locale-dev libperl-dev libargon2-dev cpanminus gettext clang llvm lcov +sudo apt-get install -y tcl-dev libsasl2-dev libicu-dev swig qt6-base-dev libboost-locale-dev libperl-dev libargon2-dev cpanminus gettext clang llvm lcov sudo apt-get upgrade -y diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 007bf287..07090ea9 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -6,7 +6,7 @@ on: jobs: gcc: name: GCC - runs-on: ubuntu-20.04 + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 with: @@ -23,7 +23,7 @@ jobs: tarball: name: Tarball - runs-on: ubuntu-20.04 + runs-on: ubuntu-24.04 steps: - uses: actions/checkout@v4 with: @@ -48,7 +48,7 @@ jobs: # can be removed when asan below is fixed clang: name: Clang - runs-on: ubuntu-20.04 + runs-on: ubuntu-24.04 env: CXX: clang++ CC: clang @@ -69,7 +69,7 @@ jobs: #clang_asan: #name: Clang ASAN - #runs-on: ubuntu-20.04 + #runs-on: ubuntu-24.04 #env: #CXX: clang++ #CC: clang @@ -85,7 +85,7 @@ jobs: #clang_tsan: #name: Clang TSAN - #runs-on: ubuntu-20.04 + #runs-on: ubuntu-24.04 #env: #CXX: clang++ #CC: clang @@ -119,7 +119,7 @@ jobs: submodules: true - run: | brew update - brew install icu4c qt5 gettext pkg-config cpanminus boost + brew install icu4c qt6 gettext pkg-config cpanminus boost argon2 swig - run: source .github/build.sh - uses: codecov/codecov-action@v3 diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index d00529a9..5b72f88b 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -2,7 +2,7 @@ name: "CodeQL" on: push: - branches: [ 'master', '1.6.x' ] + branches: [ 'master', '1.9.x' ] pull_request: # The branches below must be a subset of the branches above branches: [ 'master' ] @@ -12,7 +12,7 @@ on: jobs: analyze: name: Analyze - runs-on: ubuntu-20.04 + runs-on: ubuntu-24.04 permissions: actions: read contents: read @@ -28,7 +28,10 @@ jobs: uses: actions/checkout@v4 with: submodules: true - - run: source .github/ubuntu_deps.sh + - run: | + source .github/ubuntu_deps.sh + sudo apt-get remove -y qt6-base-dev + sudo apt-get install -y qtbase5-dev - name: Initialize CodeQL uses: github/codeql-action/init@v3 @@ -36,6 +39,8 @@ jobs: languages: ${{ matrix.language }} - run: source .github/build.sh + env: + ZNC_QT_VER: "5" - name: Perform CodeQL Analysis uses: github/codeql-action/analyze@v3 diff --git a/cmake/use_homebrew.cmake b/cmake/use_homebrew.cmake index 52e0270a..547b860e 100644 --- a/cmake/use_homebrew.cmake +++ b/cmake/use_homebrew.cmake @@ -54,12 +54,17 @@ if(brew_python_f EQUAL 0) "${brew_python}/Frameworks/Python.framework") endif() -execute_process(COMMAND "${brew}" --prefix qt5 - RESULT_VARIABLE brew_qt5_f - OUTPUT_VARIABLE brew_qt5 OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET) -if(brew_qt5_f EQUAL 0) - find_package_message(brew_qt5 "Qt5 via Homebrew: ${brew_qt5}" - "${brew_qt5}") +if(DEFINED ENV{ZNC_QT_VER}) + set(ZNC_QT_VER $ENV{ZNC_QT_VER}) +else() + set(ZNC_QT_VER 6) +endif() +execute_process(COMMAND "${brew}" --prefix qt${ZNC_QT_VER} + RESULT_VARIABLE brew_qt_f + OUTPUT_VARIABLE brew_qt OUTPUT_STRIP_TRAILING_WHITESPACE ERROR_QUIET) +if(brew_qt_f EQUAL 0) + find_package_message(brew_qt "Qt via Homebrew: ${brew_qt}" + "${brew_qt}") endif() execute_process(COMMAND "${brew}" --prefix gettext diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt index a13cbdb0..da9ed54f 100644 --- a/test/CMakeLists.txt +++ b/test/CMakeLists.txt @@ -90,7 +90,7 @@ externalproject_add(inttest_bin "-DGTEST_ROOT:path=${GTEST_ROOT}" "-DGMOCK_ROOT:path=${GMOCK_ROOT}" "-DZNC_BIN_DIR:path=${CMAKE_INSTALL_FULL_BINDIR}" - "-DQt5_HINTS:path=${brew_qt5}") + "-DQt_HINTS:path=${brew_qt}") add_custom_target(inttest COMMAND # MAKEFLAGS: # Prevent a warning from test of znc-buildmod, when inner make diff --git a/test/integration/CMakeLists.txt b/test/integration/CMakeLists.txt index 62a70ada..e1c0653f 100644 --- a/test/integration/CMakeLists.txt +++ b/test/integration/CMakeLists.txt @@ -24,7 +24,13 @@ set(CMAKE_THREAD_PREFER_PTHREAD true) set(THREADS_PREFER_PTHREAD_FLAG true) find_package(Threads REQUIRED) -find_package(Qt5Network 5.4 REQUIRED HINTS ${Qt5_HINTS}) +if(DEFINED ENV{ZNC_QT_VER}) + set(ZNC_QT_VER $ENV{ZNC_QT_VER}) +else() + set(ZNC_QT_VER 6) +endif() + +find_package(Qt${ZNC_QT_VER}Network 5.4 REQUIRED HINTS ${Qt_HINTS}) # Force the simple internal regex engine to get consistent behavior on all # platforms. See @@ -42,7 +48,7 @@ add_executable(inttest "${GTEST_ROOT}/src/gtest-all.cc" "${GMOCK_ROOT}/src/gmock-all.cc") -target_link_libraries(inttest Qt5::Network Threads::Threads) +target_link_libraries(inttest Qt${ZNC_QT_VER}::Network Threads::Threads) target_include_directories(inttest PUBLIC "${PROJECT_SOURCE_DIR}/framework" "${PROJECT_BINARY_DIR}" diff --git a/test/integration/framework/znctest.cpp b/test/integration/framework/znctest.cpp index 1b81db6a..7cee7842 100644 --- a/test/integration/framework/znctest.cpp +++ b/test/integration/framework/znctest.cpp @@ -14,6 +14,7 @@ * limitations under the License. */ +#include #include "znctest.h" #ifndef ZNC_BIN_DIR @@ -119,6 +120,12 @@ std::unique_ptr ZNCTest::HandleHttp(QNetworkReply* reply) { std::cout << "Got HTTP reply" << std::endl; loop.quit(); }); +#if (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0)) + QObject::connect(reply, &QNetworkReply::errorOccurred, + [&](QNetworkReply::NetworkError e) { + ADD_FAILURE() << reply->errorString().toStdString(); + }); +#else QObject::connect( reply, static_cast( @@ -126,6 +133,7 @@ std::unique_ptr ZNCTest::HandleHttp(QNetworkReply* reply) { [&](QNetworkReply::NetworkError e) { ADD_FAILURE() << reply->errorString().toStdString(); }); +#endif QTimer::singleShot(30000 /* msec */, &loop, [&]() { ADD_FAILURE() << "connection timeout"; loop.quit(); @@ -160,7 +168,7 @@ void ZNCTest::InstallModule(QString name, QString content) { QStringList lines = content.split("\n"); int maxoffset = -1; for (const QString& line : lines) { - int nonspace = line.indexOf(QRegExp("\\S")); + int nonspace = line.indexOf(QRegularExpression("\\S")); if (nonspace == -1) continue; if (nonspace < maxoffset || maxoffset == -1) maxoffset = nonspace; }