From 2c84ac567b10d65e3d7e9516b500945dca5c488e Mon Sep 17 00:00:00 2001 From: Shengqi Chen Date: Tue, 25 Mar 2025 10:34:47 +0800 Subject: [PATCH 1/9] ci: bump to latest actions Signed-off-by: Shengqi Chen --- .github/workflows/macOS.yml | 20 ++++++++++++++------ .github/workflows/ubuntu.yml | 20 ++++++++++++++------ .github/workflows/windows.yml | 24 ++++++++++++++++-------- 3 files changed, 44 insertions(+), 20 deletions(-) diff --git a/.github/workflows/macOS.yml b/.github/workflows/macOS.yml index d5f9a2f..72de201 100644 --- a/.github/workflows/macOS.yml +++ b/.github/workflows/macOS.yml @@ -1,19 +1,27 @@ name: macOS -on: [push] +on: + push: + branches: + - master + pull_request: + branches: + - master + workflow_dispatch: + env: targetName: danmaQ jobs: build: name: Build - runs-on: macos-10.15 + runs-on: macos-latest steps: - name: Install Qt - uses: jurplel/install-qt-action@v2 + uses: jurplel/install-qt-action@v4 with: version: 5.15.2 modules: 'qtwebengine' - cached: 'false' - - uses: actions/checkout@v2 + cache: true + - uses: actions/checkout@v4 with: fetch-depth: 1 - name: Build MacOS @@ -21,7 +29,7 @@ jobs: cmake . && make translations cmake -B build -DCMAKE_INSTALL_PREFIX=/app -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_BUILD_TYPE=Release cd build && make dmg - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@v4 with: name: ${{ env.targetName }}.macos.amd64.dmg path: build/${{ env.targetName }}.dmg diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index 25b318f..3175c25 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -1,5 +1,13 @@ name: Ubuntu -on: [push] +on: + push: + branches: + - master + pull_request: + branches: + - master + workflow_dispatch: + env: targetName: danmaQ jobs: @@ -8,19 +16,19 @@ jobs: runs-on: ${{ matrix.os }} strategy: matrix: - os: [ubuntu-20.04] + os: [ubuntu-latest] qt_ver: [5.15.2] qt_arch: [gcc_64] steps: - name: Install Qt - uses: jurplel/install-qt-action@v2 + uses: jurplel/install-qt-action@v4 with: version: ${{ matrix.qt_ver }} modules: 'qtcharts qtwebengine' - cached: 'false' + cache: true - name: ubuntu install run: sudo apt-get install -y libqt5x11extras5-dev cmake flatpak flatpak-builder - - uses: actions/checkout@v2 + - uses: actions/checkout@v4 with: fetch-depth: 1 - name: build flatpak @@ -30,7 +38,7 @@ jobs: sudo flatpak-builder --repo=repo --force-clean build-dir org.tuna.danmaQ.local.json sudo flatpak build-bundle repo danmaQ.flatpak org.tuna.danmaQ working-directory: flatpak - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@v4 with: name: ${{ env.targetName }}.linux.amd64.flatpak path: flatpak/danmaQ.flatpak diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 44a7cfe..035e2fe 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -1,45 +1,53 @@ name: Windows -on: [push] +on: + push: + branches: + - master + pull_request: + branches: + - master + workflow_dispatch: + env: targetName: danmaQ jobs: build: name: Build - runs-on: windows-2019 + runs-on: windows-latest strategy: matrix: include: - qt_ver: 5.15.2 qt_arch: win64_msvc2019_64 msvc_arch: x64 - qt_arch_install: msvc2019_64 steps: - name: Install Qt - uses: jurplel/install-qt-action@v2.13.0 + uses: jurplel/install-qt-action@v4 with: version: ${{ matrix.qt_ver }} modules: 'qtwebengine' arch: ${{ matrix.qt_arch }} - - uses: actions/checkout@v2 + cache: true + - uses: actions/checkout@v4 with: fetch-depth: 1 - name: MSVC Build id: build shell: cmd run: | - call "C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{ matrix.msvc_arch }} + call "C:\Program Files (x86)\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{ matrix.msvc_arch }} cmake -B . -DCMAKE_INSTALL_PREFIX=/app -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_BUILD_TYPE=Release msbuild ALL_BUILD.vcxproj - name: Package Qt env: - VCINSTALLDIR: 'C:\Program Files (x86)\Microsoft Visual Studio\2019\Enterprise\VC' + VCINSTALLDIR: 'C:\Program Files (x86)\Microsoft Visual Studio\2022\Enterprise\VC' shell: pwsh run: | New-Item -ItemType Directory ${env:targetName} Copy-Item src\Debug\${{ env.targetName }}.exe ${env:targetName}\ windeployqt ${env:targetName}\${env:targetName}.exe Compress-Archive -Path ${env:targetName} ${env:targetName}'.zip' - - uses: actions/upload-artifact@v2 + - uses: actions/upload-artifact@v4 with: name: ${{ env.targetName }}.win.${{ matrix.msvc_arch }}.zip path: ${{ env.targetName }}.zip From 0ab7c93426b619293ada7397954b19c006c09bf5 Mon Sep 17 00:00:00 2001 From: Shengqi Chen Date: Tue, 25 Mar 2025 10:43:59 +0800 Subject: [PATCH 2/9] ci: various fixes Signed-off-by: Shengqi Chen --- .github/workflows/macOS.yml | 4 ++-- .github/workflows/ubuntu.yml | 6 +++--- .github/workflows/windows.yml | 8 ++++---- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/.github/workflows/macOS.yml b/.github/workflows/macOS.yml index 72de201..84d173c 100644 --- a/.github/workflows/macOS.yml +++ b/.github/workflows/macOS.yml @@ -13,7 +13,7 @@ env: jobs: build: name: Build - runs-on: macos-latest + runs-on: macos-13 steps: - name: Install Qt uses: jurplel/install-qt-action@v4 @@ -33,7 +33,7 @@ jobs: with: name: ${{ env.targetName }}.macos.amd64.dmg path: build/${{ env.targetName }}.dmg - - name: uploadRelease + - name: Update to release if: startsWith(github.event.ref, 'refs/tags/') uses: svenstaro/upload-release-action@v2 with: diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index 3175c25..3f356fa 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -26,12 +26,12 @@ jobs: version: ${{ matrix.qt_ver }} modules: 'qtcharts qtwebengine' cache: true - - name: ubuntu install + - name: Install other dependencies run: sudo apt-get install -y libqt5x11extras5-dev cmake flatpak flatpak-builder - uses: actions/checkout@v4 with: fetch-depth: 1 - - name: build flatpak + - name: Build flatpak run: | sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo sudo flatpak install flathub org.kde.Sdk//5.15 io.qt.qtwebengine.BaseApp//5.15 -y @@ -42,7 +42,7 @@ jobs: with: name: ${{ env.targetName }}.linux.amd64.flatpak path: flatpak/danmaQ.flatpak - - name: uploadRelease + - name: Update to release if: startsWith(github.event.ref, 'refs/tags/') uses: svenstaro/upload-release-action@v2 with: diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 035e2fe..d23c495 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -35,12 +35,12 @@ jobs: id: build shell: cmd run: | - call "C:\Program Files (x86)\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{ matrix.msvc_arch }} + call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{ matrix.msvc_arch }} cmake -B . -DCMAKE_INSTALL_PREFIX=/app -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_BUILD_TYPE=Release - msbuild ALL_BUILD.vcxproj + cmake --build . - name: Package Qt env: - VCINSTALLDIR: 'C:\Program Files (x86)\Microsoft Visual Studio\2022\Enterprise\VC' + VCINSTALLDIR: 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC' shell: pwsh run: | New-Item -ItemType Directory ${env:targetName} @@ -51,7 +51,7 @@ jobs: with: name: ${{ env.targetName }}.win.${{ matrix.msvc_arch }}.zip path: ${{ env.targetName }}.zip - - name: Upload Release + - name: Update to release if: startsWith(github.event.ref, 'refs/tags/') uses: svenstaro/upload-release-action@v2 with: From b6db713dc05da25b55aba1ad18ed031b2de677c6 Mon Sep 17 00:00:00 2001 From: Shengqi Chen Date: Tue, 25 Mar 2025 11:24:50 +0800 Subject: [PATCH 3/9] build: update to Qt6 Signed-off-by: Shengqi Chen --- CMakeLists.txt | 43 +++++++++++++++------------------ src/CMakeLists.txt | 33 +++++++++---------------- src/DMCanvas.cpp | 9 +++---- src/DMMainWindow.cpp | 1 - src/Danmaku.cpp | 1 - src/i18n.qrc | 7 ------ src/main.cpp | 9 ++----- src/translations/CMakeLists.txt | 28 --------------------- 8 files changed, 37 insertions(+), 94 deletions(-) delete mode 100644 src/i18n.qrc delete mode 100644 src/translations/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 14811f7..57764ff 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,4 +1,4 @@ -cmake_minimum_required(VERSION 2.8.12) +cmake_minimum_required(VERSION 3.16) PROJECT(danmaQ) @@ -6,35 +6,32 @@ option(ENABLE_TEST "Enable test program build" Off) set(VERSION "0.3.0") -set(CMAKE_CXX_STANDARD 14) +set(CMAKE_CXX_STANDARD 20) set(CMAKE_EXPORT_COMPILE_COMMANDS True) IF (WIN32 AND NOT MINGW AND NOT CYGWIN) set(CMAKE_PREFIX_PATH "$ENV{QTDIR} ${CMAKE_PREFIX_PATH}") ENDIF() -# From https://github.com/Homebrew/homebrew-core/issues/8392 -if(APPLE) -if(EXISTS /usr/local/opt/qt5) - # Because Qt5 is key-only, Homebrew installs Qt5 in - # /usr/local/qt5, ensure it can be found by CMake since - # it is not in the default /usr/local prefix. - list(APPEND CMAKE_PREFIX_PATH "/usr/local/opt/qt5") - set(CMAKE_MACDEPLOYQT_PATH "/usr/local/opt/qt5/bin/macdeployqt") - set(CMAKE_MACOSX_RPATH 1) - # set (_frameworks ${CMAKE_FRAMEWORK_PATH} $ENV{CMAKE_FRAMEWORK_PATH} ~/Library/Frameworks /usr/local/Frameworks ${CMAKE_SYSTEM_FRAMEWORK_PATH}) - # list (REMOVE_DUPLICATES _frameworks) - set(CMAKE_INSTALL_RPATH "$INSTALL_DIR/lib") - # set(CMAKE_INSTALL_RPATH_USE_LINK_PATH 1) -else() - set(CMAKE_MACDEPLOYQT_PATH "macdeployqt") -endif() -endif() +find_package(Qt6 REQUIRED COMPONENTS Core Widgets Network WebEngineWidgets LinguistTools) -find_package(Qt5Core) -find_package(Qt5Widgets) -find_package(Qt5Network) -find_package(Qt5WebEngineWidgets) +# # From https://github.com/Homebrew/homebrew-core/issues/8392 +# if(APPLE) +# if(EXISTS /usr/local/opt/qt5) +# # Because Qt5 is key-only, Homebrew installs Qt5 in +# # /usr/local/qt5, ensure it can be found by CMake since +# # it is not in the default /usr/local prefix. +# list(APPEND CMAKE_PREFIX_PATH "/usr/local/opt/qt5") +# set(CMAKE_MACDEPLOYQT_PATH "/usr/local/opt/qt5/bin/macdeployqt") +# set(CMAKE_MACOSX_RPATH 1) +# # set (_frameworks ${CMAKE_FRAMEWORK_PATH} $ENV{CMAKE_FRAMEWORK_PATH} ~/Library/Frameworks /usr/local/Frameworks ${CMAKE_SYSTEM_FRAMEWORK_PATH}) +# # list (REMOVE_DUPLICATES _frameworks) +# set(CMAKE_INSTALL_RPATH "$INSTALL_DIR/lib") +# # set(CMAKE_INSTALL_RPATH_USE_LINK_PATH 1) +# else() +# set(CMAKE_MACDEPLOYQT_PATH "macdeployqt") +# endif() +# endif() IF (UNIX) set(CMAKE_CXX_FLAGS "-Wall ${CMAKE_CXX_FLAGS}") diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index e0e36c1..85639ca 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -18,35 +18,24 @@ set(danmaQ_HEADERS common.h ) +qt_standard_project_setup(I18N_TRANSLATED_LANGUAGES zh_CN zh_TW ja_JP) + set(CMAKE_AUTOMOC ON) set(CMAKE_AUTOUIC ON) set(CMAKE_AUTORCC ON) -add_subdirectory(translations) add_subdirectory(resource) -set(danmaQ_RESOURCES icons.qrc i18n.qrc socket.qrc) - -add_custom_target(resources ALL DEPENDS ${danmaQ_RESOURCES}) -add_dependencies(resources translations) - -qt5_add_resources(danmaQ_RCC_SRCS ${danmaQ_RESOURCES}) - -add_executable(${CMAKE_PROJECT_NAME} ${danmaQ_SOURCES} ${danmaQ_HEADERS_MOC} ${danmaQ_RCC_SRCS}) -add_dependencies(${CMAKE_PROJECT_NAME} resources) - -set(DANMAQ_LIBRARIES Qt5::Widgets Qt5::Core Qt5::Network Qt5::WebEngineCore Qt5::WebEngineWidgets) - -if(CMAKE_SYSTEM_NAME STREQUAL Linux) - find_package(Qt5X11Extras REQUIRED) - set(DANMAQ_LIBRARIES ${DANMAQ_LIBRARIES} Qt5::X11Extras) +set(danmaQ_RESOURCES icons.qrc socket.qrc) +file(GLOB danmqQ_TRANSLATIONS translations/*.ts) - find_package(X11 REQUIRED) - set(DANMAQ_LIBRARIES ${DANMAQ_LIBRARIES} ${X11_LIBRARIES}) +qt_add_resources(danmaQ_RCC_SRCS ${danmaQ_RESOURCES}) +qt_add_executable(${CMAKE_PROJECT_NAME} ${danmaQ_SOURCES} ${danmaQ_HEADERS_MOC} ${danmaQ_RCC_SRCS}) +qt_add_translations(${CMAKE_PROJECT_NAME} + TS_FILES ${danmqQ_TRANSLATIONS} +) - # find_library(X_LIB X11 Xext) - # set(DANMAQ_LIBRARIES ${DANMAQ_LIBRARIES} ${X_LIB}) -endif() +set(DANMAQ_LIBRARIES Qt6::Widgets Qt6::Core Qt6::Network Qt6::WebEngineCore Qt6::WebEngineWidgets) -target_link_libraries(${CMAKE_PROJECT_NAME} ${DANMAQ_LIBRARIES}) +target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE ${DANMAQ_LIBRARIES}) install(TARGETS ${CMAKE_PROJECT_NAME} DESTINATION bin) diff --git a/src/DMCanvas.cpp b/src/DMCanvas.cpp index 954c861..3779e6f 100644 --- a/src/DMCanvas.cpp +++ b/src/DMCanvas.cpp @@ -19,9 +19,8 @@ #include #include #include -#include #include -#include +#include #include #include @@ -155,9 +154,9 @@ int DMCanvas::slot_y(int slot) QString DMCanvas::escape_text(QString & text) { QString escaped = text.toHtmlEscaped(); - escaped.replace(QRegExp("([^\\\\])\\\\n"), "\\1
"); - escaped.replace(QRegExp("\\\\\\\\n"), "\\n"); - escaped.replace(QRegExp("\\[s\\](.+)\\[/s\\]"), "\\1"); + escaped.replace(QRegularExpression("([^\\\\])\\\\n"), "\\1
"); + escaped.replace(QRegularExpression("\\\\\\\\n"), "\\n"); + escaped.replace(QRegularExpression("\\[s\\](.+)\\[/s\\]"), "\\1"); return escaped; } diff --git a/src/DMMainWindow.cpp b/src/DMMainWindow.cpp index 5a74216..412c911 100644 --- a/src/DMMainWindow.cpp +++ b/src/DMMainWindow.cpp @@ -16,7 +16,6 @@ */ #include -#include #include #include #include diff --git a/src/Danmaku.cpp b/src/Danmaku.cpp index b350057..a1afaea 100644 --- a/src/Danmaku.cpp +++ b/src/Danmaku.cpp @@ -17,7 +17,6 @@ #include #include -#include #include #include #include diff --git a/src/i18n.qrc b/src/i18n.qrc deleted file mode 100644 index f786c66..0000000 --- a/src/i18n.qrc +++ /dev/null @@ -1,7 +0,0 @@ - - - translations/zh_CN.qm - translations/zh_TW.qm - translations/ja_JP.qm - - diff --git a/src/main.cpp b/src/main.cpp index 1a80a41..c1ecd26 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -20,7 +20,6 @@ #include #include #include -#include #include #include @@ -35,19 +34,15 @@ #endif int main(int argc, char *argv[]) { - Q_INIT_RESOURCE(i18n); -#if QT_VERSION >= QT_VERSION_CHECK(5, 6, 0) - QApplication::setAttribute(Qt::AA_EnableHighDpiScaling); -#endif QApplication app(argc, argv); std::srand(std::time(0)); - QDir dir(":translations"); + QDir dir(":/i18n"); QStringList fileNames = dir.entryList(QStringList("*.qm"), QDir::Files, QDir::Name); + myDebug << "Available translations:" << fileNames; QString systemLocale = QLocale::system().name(); - myDebug << "System locale:" << systemLocale; // if system language is zh_CN, then first look for zh_CN, then zh_* diff --git a/src/translations/CMakeLists.txt b/src/translations/CMakeLists.txt deleted file mode 100644 index 12922a2..0000000 --- a/src/translations/CMakeLists.txt +++ /dev/null @@ -1,28 +0,0 @@ -set(danmaQ_I18N_SRC - zh_CN.ts - zh_TW.ts - ja_JP.ts) - -find_package(Qt5LinguistTools) - -add_custom_target(update_all_ts_files ALL) -add_custom_target(create_all_qm_files ALL) -add_dependencies(create_all_qm_files update_all_ts_files) - -set(danmaQ_I18N_FILES) -foreach(I18N_SRC ${danmaQ_I18N_SRC}) - get_filename_component(I18N_NAME ${I18N_SRC} NAME_WE) - set(TS_TARGET_NAME "update_ts_file_${I18N_NAME}") - add_custom_target(${TS_TARGET_NAME} - COMMAND Qt5::lupdate ${CMAKE_SOURCE_DIR} -ts ${I18N_SRC}) - add_dependencies(update_all_ts_files ${TS_TARGET_NAME}) - set(QM_TARGET_NAME "create_qm_file_${I18N_NAME}") - set(QM_FILE "${CMAKE_CURRENT_BINARY_DIR}/${I18N_NAME}.qm") - add_custom_target(${QM_TARGET_NAME} - COMMAND Qt5::lrelease ${I18N_SRC} -qm ${QM_FILE} - BYPRODUCTS ${QM_FILE}) - add_dependencies(${QM_TARGET_NAME} ${TS_TARGET_NAME}) - add_dependencies(create_all_qm_files ${QM_TARGET_NAME}) - list(APPEND danmaQ_I18N_FILES ${QM_FILE}) -endforeach() -add_custom_target(translations ALL DEPENDS create_all_qm_files ${danmaQ_I18N_FILES}) \ No newline at end of file From 8c5c7fd7be1fb1bedb77c9ca6c4b710bd458c13d Mon Sep 17 00:00:00 2001 From: Shengqi Chen Date: Tue, 25 Mar 2025 11:26:48 +0800 Subject: [PATCH 4/9] ci: use qt6 Signed-off-by: Shengqi Chen --- .github/workflows/macOS.yml | 4 ++-- .github/workflows/ubuntu.yml | 6 +++--- .github/workflows/windows.yml | 4 ++-- 3 files changed, 7 insertions(+), 7 deletions(-) diff --git a/.github/workflows/macOS.yml b/.github/workflows/macOS.yml index 84d173c..08aa229 100644 --- a/.github/workflows/macOS.yml +++ b/.github/workflows/macOS.yml @@ -13,12 +13,12 @@ env: jobs: build: name: Build - runs-on: macos-13 + runs-on: macos-latest steps: - name: Install Qt uses: jurplel/install-qt-action@v4 with: - version: 5.15.2 + version: 6.8.2 modules: 'qtwebengine' cache: true - uses: actions/checkout@v4 diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index 3f356fa..2c7e67b 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -17,17 +17,17 @@ jobs: strategy: matrix: os: [ubuntu-latest] - qt_ver: [5.15.2] + qt_ver: [6.8.2] qt_arch: [gcc_64] steps: - name: Install Qt uses: jurplel/install-qt-action@v4 with: version: ${{ matrix.qt_ver }} - modules: 'qtcharts qtwebengine' + modules: 'qtwebengine' cache: true - name: Install other dependencies - run: sudo apt-get install -y libqt5x11extras5-dev cmake flatpak flatpak-builder + run: sudo apt-get install -y cmake ninja-build flatpak flatpak-builder - uses: actions/checkout@v4 with: fetch-depth: 1 diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index d23c495..7aa19d2 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -17,8 +17,8 @@ jobs: strategy: matrix: include: - - qt_ver: 5.15.2 - qt_arch: win64_msvc2019_64 + - qt_ver: 6.8.2 + qt_arch: win64_msvc2022_64 msvc_arch: x64 steps: - name: Install Qt From c4e9c8eb8bfa9b7c69b694bc1a57c1f7e2caa0da Mon Sep 17 00:00:00 2001 From: Shengqi Chen Date: Tue, 25 Mar 2025 11:31:16 +0800 Subject: [PATCH 5/9] ci: remove outdated travisci config Signed-off-by: Shengqi Chen --- .travisci/.travis.sh | 12 ------------ .travisci/Dockerfile.debian | 18 ------------------ .travisci/Dockerfile.fedora | 14 -------------- .travisci/Dockerfile.leap | 15 --------------- .travisci/Dockerfile.ubuntu | 17 ----------------- 5 files changed, 76 deletions(-) delete mode 100755 .travisci/.travis.sh delete mode 100644 .travisci/Dockerfile.debian delete mode 100644 .travisci/Dockerfile.fedora delete mode 100644 .travisci/Dockerfile.leap delete mode 100644 .travisci/Dockerfile.ubuntu diff --git a/.travisci/.travis.sh b/.travisci/.travis.sh deleted file mode 100755 index 41401c9..0000000 --- a/.travisci/.travis.sh +++ /dev/null @@ -1,12 +0,0 @@ -#!/bin/bash -mkdir build-release/ -cd build-release/ -cmake .. -DCMAKE_BUILD_TYPE=Release -make -cd .. - -mkdir build-debug/ -cd build-debug/ -cmake .. -DCMAKE_BUILD_TYPE=Debug -make -cd .. diff --git a/.travisci/Dockerfile.debian b/.travisci/Dockerfile.debian deleted file mode 100644 index fa1847d..0000000 --- a/.travisci/Dockerfile.debian +++ /dev/null @@ -1,18 +0,0 @@ -# Build Debian 8 image -FROM debian:8 - -# see https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/#/run -RUN apt-get update && \ - apt-get install -y --no-install-recommends \ - g++ \ - qt5-default \ - qttools5-dev \ - qttools5-dev-tools \ - libqt5x11extras5-dev \ - make \ - cmake - -RUN mkdir -p /usr/src/app -WORKDIR /usr/src/app - -COPY . /usr/src/app diff --git a/.travisci/Dockerfile.fedora b/.travisci/Dockerfile.fedora deleted file mode 100644 index f9d9e91..0000000 --- a/.travisci/Dockerfile.fedora +++ /dev/null @@ -1,14 +0,0 @@ -# Build Fedora 25 image -FROM fedora:25 - -RUN dnf -y install \ - gcc-c++ \ - qt5-qtx11extras-devel \ - qt5-linguist \ - qt5-devel \ - cmake - -RUN mkdir -p /usr/src/app -WORKDIR /usr/src/app - -COPY . /usr/src/app diff --git a/.travisci/Dockerfile.leap b/.travisci/Dockerfile.leap deleted file mode 100644 index ef5d162..0000000 --- a/.travisci/Dockerfile.leap +++ /dev/null @@ -1,15 +0,0 @@ - -# Build the latest openSUSE Leap (42.x) image -FROM opensuse:leap - -RUN zypper --non-interactive in --no-recommends \ - gcc-c++ \ - libqt5-qtx11extras-devel \ - libqt5-linguist-devel \ - libqt5-qtbase-devel \ - cmake - -RUN mkdir -p /usr/src/app -WORKDIR /usr/src/app - -COPY . /usr/src/app diff --git a/.travisci/Dockerfile.ubuntu b/.travisci/Dockerfile.ubuntu deleted file mode 100644 index 24e4e23..0000000 --- a/.travisci/Dockerfile.ubuntu +++ /dev/null @@ -1,17 +0,0 @@ -# Build Ubuntu 18.04 image -FROM ubuntu:18.04 - -# see https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/#/run -RUN apt-get update && \ - apt-get install -y --no-install-recommends \ - g++ \ - qt5-default \ - qttools5-dev-tools \ - libqt5x11extras5-dev \ - make \ - cmake - -RUN mkdir -p /usr/src/app -WORKDIR /usr/src/app - -COPY . /usr/src/app From 345b9dabed4e1b5abf439e84cd0d82a765edd71f Mon Sep 17 00:00:00 2001 From: Shengqi Chen Date: Tue, 25 Mar 2025 11:39:13 +0800 Subject: [PATCH 6/9] ci: disable flatpak for now, add missing qt modules Signed-off-by: Shengqi Chen --- .github/workflows/macOS.yml | 7 +++--- .github/workflows/ubuntu.yml | 47 +++++++++++++++++++++-------------- .github/workflows/windows.yml | 6 ++--- CMakeLists.txt | 22 ++-------------- src/CMakeLists.txt | 2 +- 5 files changed, 37 insertions(+), 47 deletions(-) diff --git a/.github/workflows/macOS.yml b/.github/workflows/macOS.yml index 08aa229..c9c791c 100644 --- a/.github/workflows/macOS.yml +++ b/.github/workflows/macOS.yml @@ -19,16 +19,15 @@ jobs: uses: jurplel/install-qt-action@v4 with: version: 6.8.2 - modules: 'qtwebengine' + modules: "qtwebengine qtwebchannel qtpositioning" # latter two are required by webengine cache: true - uses: actions/checkout@v4 with: fetch-depth: 1 - name: Build MacOS run: | - cmake . && make translations - cmake -B build -DCMAKE_INSTALL_PREFIX=/app -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_BUILD_TYPE=Release - cd build && make dmg + cmake -B build -DCMAKE_INSTALL_PREFIX=/app -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo -DQT_DEBUG_FIND_PACKAGE=ON + cd build && make dmg - uses: actions/upload-artifact@v4 with: name: ${{ env.targetName }}.macos.amd64.dmg diff --git a/.github/workflows/ubuntu.yml b/.github/workflows/ubuntu.yml index 2c7e67b..c280359 100644 --- a/.github/workflows/ubuntu.yml +++ b/.github/workflows/ubuntu.yml @@ -24,30 +24,39 @@ jobs: uses: jurplel/install-qt-action@v4 with: version: ${{ matrix.qt_ver }} - modules: 'qtwebengine' + modules: "qtwebengine qtwebchannel qtpositioning" # latter two are required by webengine cache: true - name: Install other dependencies run: sudo apt-get install -y cmake ninja-build flatpak flatpak-builder - uses: actions/checkout@v4 with: fetch-depth: 1 - - name: Build flatpak + - name: Build native run: | - sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo - sudo flatpak install flathub org.kde.Sdk//5.15 io.qt.qtwebengine.BaseApp//5.15 -y - sudo flatpak-builder --repo=repo --force-clean build-dir org.tuna.danmaQ.local.json - sudo flatpak build-bundle repo danmaQ.flatpak org.tuna.danmaQ - working-directory: flatpak - - uses: actions/upload-artifact@v4 + cmake -B build -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo -GNinja -DQT_DEBUG_FIND_PACKAGE=ON + cmake --build build + - name: Upload build result + uses: actions/upload-artifact@v4 with: - name: ${{ env.targetName }}.linux.amd64.flatpak - path: flatpak/danmaQ.flatpak - - name: Update to release - if: startsWith(github.event.ref, 'refs/tags/') - uses: svenstaro/upload-release-action@v2 - with: - repo_token: ${{ secrets.GITHUB_TOKEN }} - file: flatpak/danmaQ.flatpak - asset_name: ${{ env.targetName }}.linux.amd64.flatpak - tag: ${{ github.ref }} - overwrite: true + name: ${{ env.targetName }}.linux.amd64 + path: build/src/danmaQ + # - name: Build flatpak + # run: | + # sudo flatpak remote-add --if-not-exists flathub https://flathub.org/repo/flathub.flatpakrepo + # sudo flatpak install flathub org.kde.Sdk//5.15 io.qt.qtwebengine.BaseApp//5.15 -y + # sudo flatpak-builder --repo=repo --force-clean build-dir org.tuna.danmaQ.local.json + # sudo flatpak build-bundle repo danmaQ.flatpak org.tuna.danmaQ + # working-directory: flatpak + # - uses: actions/upload-artifact@v4 + # with: + # name: ${{ env.targetName }}.linux.amd64.flatpak + # path: flatpak/danmaQ.flatpak + # - name: Update to release + # if: startsWith(github.event.ref, 'refs/tags/') + # uses: svenstaro/upload-release-action@v2 + # with: + # repo_token: ${{ secrets.GITHUB_TOKEN }} + # file: flatpak/danmaQ.flatpak + # asset_name: ${{ env.targetName }}.linux.amd64.flatpak + # tag: ${{ github.ref }} + # overwrite: true diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 7aa19d2..1f74bc3 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -25,7 +25,7 @@ jobs: uses: jurplel/install-qt-action@v4 with: version: ${{ matrix.qt_ver }} - modules: 'qtwebengine' + modules: "qtwebengine qtwebchannel qtpositioning" # latter two are required by webengine arch: ${{ matrix.qt_arch }} cache: true - uses: actions/checkout@v4 @@ -36,8 +36,8 @@ jobs: shell: cmd run: | call "C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC\Auxiliary\Build\vcvarsall.bat" ${{ matrix.msvc_arch }} - cmake -B . -DCMAKE_INSTALL_PREFIX=/app -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_BUILD_TYPE=Release - cmake --build . + cmake -B build -DCMAKE_INSTALL_PREFIX=/app -DCMAKE_VERBOSE_MAKEFILE=ON -DCMAKE_BUILD_TYPE=RelWithDebInfo -DQT_DEBUG_FIND_PACKAGE=ON + cmake --build build - name: Package Qt env: VCINSTALLDIR: 'C:\Program Files\Microsoft Visual Studio\2022\Enterprise\VC' diff --git a/CMakeLists.txt b/CMakeLists.txt index 57764ff..aa7b402 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -15,24 +15,6 @@ ENDIF() find_package(Qt6 REQUIRED COMPONENTS Core Widgets Network WebEngineWidgets LinguistTools) -# # From https://github.com/Homebrew/homebrew-core/issues/8392 -# if(APPLE) -# if(EXISTS /usr/local/opt/qt5) -# # Because Qt5 is key-only, Homebrew installs Qt5 in -# # /usr/local/qt5, ensure it can be found by CMake since -# # it is not in the default /usr/local prefix. -# list(APPEND CMAKE_PREFIX_PATH "/usr/local/opt/qt5") -# set(CMAKE_MACDEPLOYQT_PATH "/usr/local/opt/qt5/bin/macdeployqt") -# set(CMAKE_MACOSX_RPATH 1) -# # set (_frameworks ${CMAKE_FRAMEWORK_PATH} $ENV{CMAKE_FRAMEWORK_PATH} ~/Library/Frameworks /usr/local/Frameworks ${CMAKE_SYSTEM_FRAMEWORK_PATH}) -# # list (REMOVE_DUPLICATES _frameworks) -# set(CMAKE_INSTALL_RPATH "$INSTALL_DIR/lib") -# # set(CMAKE_INSTALL_RPATH_USE_LINK_PATH 1) -# else() -# set(CMAKE_MACDEPLOYQT_PATH "macdeployqt") -# endif() -# endif() - IF (UNIX) set(CMAKE_CXX_FLAGS "-Wall ${CMAKE_CXX_FLAGS}") ENDIF () @@ -68,14 +50,14 @@ if (APPLE) COMMAND mkdir -p ${CMAKE_PROJECT_NAME}.app/Contents/Resources COMMAND touch ${CMAKE_PROJECT_NAME}.app/Contents/Resources/empty.lproj COMMAND cp Icon.icns ${CMAKE_PROJECT_NAME}.app/Contents/Resources/ - COMMAND ${CMAKE_MACDEPLOYQT_PATH} ${CMAKE_PROJECT_NAME}.app -no-strip + COMMAND macdeployqt ${CMAKE_PROJECT_NAME}.app -no-strip DEPENDS ${CMAKE_BINARY_DIR}/src/${CMAKE_PROJECT_NAME} DEPENDS ${CMAKE_BINARY_DIR}/Icon.icns OUTPUT ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}.app ) add_custom_command( COMMAND cp -r ${CMAKE_PROJECT_NAME}.app ${CMAKE_PROJECT_NAME}.app.bak - COMMAND ${CMAKE_MACDEPLOYQT_PATH} ${CMAKE_PROJECT_NAME}.app -dmg + COMMAND macdeployqt ${CMAKE_PROJECT_NAME}.app -dmg COMMAND rm -rf ${CMAKE_PROJECT_NAME}.app COMMAND mv ${CMAKE_PROJECT_NAME}.app.bak ${CMAKE_PROJECT_NAME}.app DEPENDS ${CMAKE_BINARY_DIR}/${CMAKE_PROJECT_NAME}.app diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index 85639ca..eaa578c 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -35,7 +35,7 @@ qt_add_translations(${CMAKE_PROJECT_NAME} TS_FILES ${danmqQ_TRANSLATIONS} ) -set(DANMAQ_LIBRARIES Qt6::Widgets Qt6::Core Qt6::Network Qt6::WebEngineCore Qt6::WebEngineWidgets) +set(DANMAQ_LIBRARIES Qt6::Widgets Qt6::Core Qt6::Network Qt6::WebEngineWidgets) target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE ${DANMAQ_LIBRARIES}) install(TARGETS ${CMAKE_PROJECT_NAME} DESTINATION bin) From fdaa0f26e1497feca0d10c4f2feb16f087825a36 Mon Sep 17 00:00:00 2001 From: Shengqi Chen Date: Tue, 25 Mar 2025 12:14:10 +0800 Subject: [PATCH 7/9] Define #NOMINMAX to fix error in MSVC Signed-off-by: Shengqi Chen --- src/Danmaku.cpp | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/Danmaku.cpp b/src/Danmaku.cpp index a1afaea..ce19d5c 100644 --- a/src/Danmaku.cpp +++ b/src/Danmaku.cpp @@ -15,6 +15,10 @@ * along with this program. If not, see . */ +#if defined _MSC_VER +#define NOMINMAX +#endif + #include #include #include From 40052c92efdf14d3e82e753b5df69b769f446040 Mon Sep 17 00:00:00 2001 From: Shengqi Chen Date: Tue, 25 Mar 2025 12:19:40 +0800 Subject: [PATCH 8/9] ci: fix build path on Windows Signed-off-by: Shengqi Chen --- .github/workflows/windows.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/windows.yml b/.github/workflows/windows.yml index 1f74bc3..ff47735 100644 --- a/.github/workflows/windows.yml +++ b/.github/workflows/windows.yml @@ -44,7 +44,7 @@ jobs: shell: pwsh run: | New-Item -ItemType Directory ${env:targetName} - Copy-Item src\Debug\${{ env.targetName }}.exe ${env:targetName}\ + Copy-Item build\src\Debug\${{ env.targetName }}.exe ${env:targetName}\ windeployqt ${env:targetName}\${env:targetName}.exe Compress-Archive -Path ${env:targetName} ${env:targetName}'.zip' - uses: actions/upload-artifact@v4 From 5c49cfcbe53c5f3a8aab65b1b96086c961c2ab4e Mon Sep 17 00:00:00 2001 From: Shengqi Chen Date: Tue, 25 Mar 2025 12:21:49 +0800 Subject: [PATCH 9/9] build: set NOMINMAX globally on Windows Signed-off-by: Shengqi Chen --- CMakeLists.txt | 2 +- src/Danmaku.cpp | 3 --- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index aa7b402..f91e657 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -20,7 +20,7 @@ IF (UNIX) ENDIF () IF (WIN32 AND NOT MINGW AND NOT CYGWIN) - set(CMAKE_CXX_FLAGS "/permissive- /MP ${CMAKE_CXX_FLAGS}") + set(CMAKE_CXX_FLAGS "/permissive- /MP /DNOMINMAX ${CMAKE_CXX_FLAGS}") SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} /SUBSYSTEM:WINDOWS /ENTRY:\"mainCRTStartup\"") ENDIF() diff --git a/src/Danmaku.cpp b/src/Danmaku.cpp index ce19d5c..2ce2ad8 100644 --- a/src/Danmaku.cpp +++ b/src/Danmaku.cpp @@ -15,9 +15,6 @@ * along with this program. If not, see . */ -#if defined _MSC_VER -#define NOMINMAX -#endif #include #include