From c76b814c5488f4cad31024b1f86c0b032b879ae7 Mon Sep 17 00:00:00 2001 From: Zahin Azmayeen Date: Thu, 30 Apr 2026 00:10:17 +0600 Subject: [PATCH 1/8] fix: move CPACK_PACKAGE_FILE_NAME after CPACK_PACKAGE_NAME is set The package filename was being set before CPACK_PACKAGE_NAME was defined, resulting in packages named for example '_3.0.0-distro.rpm' instead of 'ibus-openbangla_3.0.0-distro.rpm'. --- CMakeLists.txt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index 7d3419de..d4ceb934 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -151,7 +151,6 @@ set(CPACK_RPM_EXCLUDE_FROM_AUTO_FILELIST_ADDITION "/usr/share/applications" "/us "/usr/share/icons/hicolor/32x32" "/usr/share/icons/hicolor/32x32/apps" "/usr/share/icons/hicolor/48x48" "/usr/share/icons/hicolor/48x48/apps" "/usr/share/icons/hicolor/512x512" "/usr/share/icons/hicolor/512x512/apps") -set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}_${PROJECT_VERSION}-$ENV{DIST}") # Configure CPack on the basis of which backend we are building for. if(ENABLE_IBUS) ## IBUS @@ -183,4 +182,7 @@ elseif(APPLE) set(CPACK_PRODUCTBUILD_BACKGROUND_DARKAQUA_ALIGNMENT "left") endif() +# Set package filename after CPACK_PACKAGE_NAME is defined +set(CPACK_PACKAGE_FILE_NAME "${CPACK_PACKAGE_NAME}_${PROJECT_VERSION}-$ENV{DIST}") + include(CPack) From f7e6477e04c8aaa7c691dcb960cd137e2e57a45c Mon Sep 17 00:00:00 2001 From: Zahin Azmayeen Date: Thu, 30 Apr 2026 11:43:28 +0600 Subject: [PATCH 2/8] fix: add Qt version check for startSystemMove (requires Qt 5.15+) QWindow::startSystemMove() was added in Qt 5.15, but Ubuntu 20.04 ships with Qt 5.12. Use preprocessor check to conditionally compile this code. --- src/frontend/TopBar.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/frontend/TopBar.cpp b/src/frontend/TopBar.cpp index 3b847023..9ddaf37f 100644 --- a/src/frontend/TopBar.cpp +++ b/src/frontend/TopBar.cpp @@ -379,12 +379,16 @@ bool TopBar::eventFilter(QObject *object, QEvent *event) { // Mouse release event was missed; stop dragging. canMoveTopbar = false; ui->buttonIcon->setCursor(Qt::ArrowCursor); - } else if(this->windowHandle()->startSystemMove()){ + } +#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0) + else if(this->windowHandle()->startSystemMove()){ // The window manager now owns the drag and will consume the // mouse release event, so reset our drag state immediately. canMoveTopbar = false; ui->buttonIcon->setCursor(Qt::ArrowCursor); - } else { + } +#endif + else { ui->buttonIcon->setCursor(Qt::ClosedHandCursor); move(e->globalX() - pressedMouseX, e->globalY() - pressedMouseY); } From a8541e2225ec4ceac5c21fabaea18bb605d7d770 Mon Sep 17 00:00:00 2001 From: Zahin Azmayeen Date: Thu, 30 Apr 2026 17:42:49 +0600 Subject: [PATCH 3/8] add aarch64 build support to deploy workflow --- .github/workflows/deploy.yml | 62 ++++++++++++++++++++++++++++++++++-- 1 file changed, 59 insertions(+), 3 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 76b49c5c..0d8002de 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -6,7 +6,7 @@ on: tags-ignore: [ '**' ] jobs: - build: + build-x64: if: contains(github.event.head_commit.message, 'deploy+') || contains(github.event.head_commit.message, 'pkg+') strategy: matrix: @@ -64,12 +64,68 @@ jobs: - name: upload-artifacts uses: actions/upload-artifact@v4 with: - name: pkg-${{ steps.sanitizer.outputs.sanitized_container }}-${{ matrix.ime }} + name: pkg-x64-${{ steps.sanitizer.outputs.sanitized_container }}-${{ matrix.ime }} + path: artifact + + build-arm64: + if: contains(github.event.head_commit.message, 'deploy+') || contains(github.event.head_commit.message, 'pkg+') + strategy: + matrix: + # Note: opensuse doesn't have official arm64v8 images on Docker Hub + container: [ "ubuntu:20.04", "ubuntu:22.04", "ubuntu:24.04", "debian:11", "debian:12", "fedora:40", "fedora:41" ] + ime: [ "ibus", "fcitx" ] + # Some distributions doesn't have the required version of fcitx library, so we exclude them. + exclude: + - container: "ubuntu:20.04" + ime: "fcitx" + runs-on: "ubuntu-24.04-arm" + container: + image: arm64v8/${{ matrix.container }} + env: + DIST: ${{ matrix.container }} + IME: ${{ matrix.ime }} + DEBIAN_FRONTEND: noninteractive + steps: + - name: install-git + run: | + # Install Git based on distro + if command -v apt-get >/dev/null; then + apt-get update -y + apt-get install -y git + elif command -v dnf >/dev/null; then + dnf install -y git + elif command -v zypper >/dev/null; then + zypper install -y git + elif command -v pacman >/dev/null; then + pacman -Sy git --noconfirm + fi + + - name: checkout-source + uses: actions/checkout@v4 + with: + submodules: recursive + + - name: run-builder + shell: bash + run: ./tools/build.sh + + - name: Sanitize container name + id: sanitizer + shell: bash + run: | + # Replace colons and slashes with dashes + SANITIZED_CONTAINER=$(echo "${{ matrix.container }}" | sed 's/[:\\/]/-/g') + echo "sanitized_container=$SANITIZED_CONTAINER" >> $GITHUB_OUTPUT + + - name: upload-artifacts + uses: actions/upload-artifact@v4 + with: + name: pkg-arm64-${{ steps.sanitizer.outputs.sanitized_container }}-${{ matrix.ime }} path: artifact release: if: contains(github.event.head_commit.message, 'deploy+') - needs: build + needs: [build-x64, build-arm64] runs-on: "ubuntu-latest" steps: - name: checkout-source From bc989995b3b270f1237c8b7cb0f236656edcbe94 Mon Sep 17 00:00:00 2001 From: Zahin Azmayeen Date: Sat, 2 May 2026 23:25:48 +0600 Subject: [PATCH 4/8] replace duplicate platfrom code with matrix and ternaries --- .github/workflows/deploy.yml | 69 +++++------------------------------- 1 file changed, 8 insertions(+), 61 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 0d8002de..f50731e0 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -6,10 +6,11 @@ on: tags-ignore: [ '**' ] jobs: - build-x64: + build: if: contains(github.event.head_commit.message, 'deploy+') || contains(github.event.head_commit.message, 'pkg+') strategy: matrix: + platform: [ "ubuntu-latest", "ubuntu-24.04-arm" ] # container: [ "ubuntu:18.04", "ubuntu:20.04", "ubuntu:22.04", "ubuntu:23.04", "debian:11", "fedora:37", "fedora:38", "archlinux:latest" ] container: [ "ubuntu:20.04", "ubuntu:22.04", "ubuntu:24.04", "debian:11", "debian:12", "fedora:40", "fedora:41", "opensuse/tumbleweed" ] # this list should be updated from time to time by consulting these pages: @@ -22,65 +23,11 @@ jobs: exclude: - container: "ubuntu:20.04" ime: "fcitx" - runs-on: "ubuntu-latest" - container: - image: ${{ matrix.container }} - env: - DIST: ${{ matrix.container }} - IME: ${{ matrix.ime }} - DEBIAN_FRONTEND: noninteractive - steps: - - name: install-git - run: | - # Install Git based on distro - if command -v apt-get >/dev/null; then - apt-get update -y - apt-get install -y git - elif command -v dnf >/dev/null; then - dnf install -y git - elif command -v zypper >/dev/null; then - zypper install -y git - elif command -v pacman >/dev/null; then - pacman -Sy git --noconfirm - fi - - - name: checkout-source - uses: actions/checkout@v4 - with: - submodules: recursive - - - name: run-builder - shell: bash - run: ./tools/build.sh - - - name: Sanitize container name - id: sanitizer - shell: bash - run: | - # Replace colons and slashes with dashes - SANITIZED_CONTAINER=$(echo "${{ matrix.container }}" | sed 's/[:\\/]/-/g') - echo "sanitized_container=$SANITIZED_CONTAINER" >> $GITHUB_OUTPUT - - - name: upload-artifacts - uses: actions/upload-artifact@v4 - with: - name: pkg-x64-${{ steps.sanitizer.outputs.sanitized_container }}-${{ matrix.ime }} - path: artifact - - build-arm64: - if: contains(github.event.head_commit.message, 'deploy+') || contains(github.event.head_commit.message, 'pkg+') - strategy: - matrix: - # Note: opensuse doesn't have official arm64v8 images on Docker Hub - container: [ "ubuntu:20.04", "ubuntu:22.04", "ubuntu:24.04", "debian:11", "debian:12", "fedora:40", "fedora:41" ] - ime: [ "ibus", "fcitx" ] - # Some distributions doesn't have the required version of fcitx library, so we exclude them. - exclude: - - container: "ubuntu:20.04" - ime: "fcitx" - runs-on: "ubuntu-24.04-arm" + - platform: "ubuntu-24.04-arm" + container: "opensuse/tumbleweed" + runs-on: ${{ matrix.platform }} container: - image: arm64v8/${{ matrix.container }} + image: ${{ matrix.platform == 'ubuntu-24.04-arm' && format('arm64v8/{0}', matrix.container) || matrix.container }} env: DIST: ${{ matrix.container }} IME: ${{ matrix.ime }} @@ -120,12 +67,12 @@ jobs: - name: upload-artifacts uses: actions/upload-artifact@v4 with: - name: pkg-arm64-${{ steps.sanitizer.outputs.sanitized_container }}-${{ matrix.ime }} + name: pkg-${{ matrix.platform == 'ubuntu-24.04-arm' && 'arm64' || 'x64' }}-${{ steps.sanitizer.outputs.sanitized_container }}-${{ matrix.ime }} path: artifact release: if: contains(github.event.head_commit.message, 'deploy+') - needs: [build-x64, build-arm64] + needs: build runs-on: "ubuntu-latest" steps: - name: checkout-source From 5ba313b6afb594ec8bade176ae434de892d83240 Mon Sep 17 00:00:00 2001 From: Zahin Azmayeen Date: Wed, 6 May 2026 21:44:43 +0600 Subject: [PATCH 5/8] Revert Qt 5.15 check for startSystemMove This reverts commit f7e6477e04c8aaa7c691dcb960cd137e2e57a45c. Qt 5.15 is a hard dependency - remove the builders that don't have Qt 5.15 instead. --- src/frontend/TopBar.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/frontend/TopBar.cpp b/src/frontend/TopBar.cpp index 9ddaf37f..3b847023 100644 --- a/src/frontend/TopBar.cpp +++ b/src/frontend/TopBar.cpp @@ -379,16 +379,12 @@ bool TopBar::eventFilter(QObject *object, QEvent *event) { // Mouse release event was missed; stop dragging. canMoveTopbar = false; ui->buttonIcon->setCursor(Qt::ArrowCursor); - } -#if QT_VERSION >= QT_VERSION_CHECK(5, 15, 0) - else if(this->windowHandle()->startSystemMove()){ + } else if(this->windowHandle()->startSystemMove()){ // The window manager now owns the drag and will consume the // mouse release event, so reset our drag state immediately. canMoveTopbar = false; ui->buttonIcon->setCursor(Qt::ArrowCursor); - } -#endif - else { + } else { ui->buttonIcon->setCursor(Qt::ClosedHandCursor); move(e->globalX() - pressedMouseX, e->globalY() - pressedMouseY); } From dd253c60ea2ea90fcb527e75c5668b4a03a39bf3 Mon Sep 17 00:00:00 2001 From: Zahin Azmayeen Date: Wed, 6 May 2026 23:20:51 +0600 Subject: [PATCH 6/8] remove builders debian 11, ubuntu 20.04 because they don't have qt 5.15 --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index f50731e0..34abfadd 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -12,7 +12,7 @@ jobs: matrix: platform: [ "ubuntu-latest", "ubuntu-24.04-arm" ] # container: [ "ubuntu:18.04", "ubuntu:20.04", "ubuntu:22.04", "ubuntu:23.04", "debian:11", "fedora:37", "fedora:38", "archlinux:latest" ] - container: [ "ubuntu:20.04", "ubuntu:22.04", "ubuntu:24.04", "debian:11", "debian:12", "fedora:40", "fedora:41", "opensuse/tumbleweed" ] + container: [ "ubuntu:22.04", "ubuntu:24.04", "debian:12", "fedora:40", "fedora:41", "opensuse/tumbleweed" ] # this list should be updated from time to time by consulting these pages: # https://releases.ubuntu.com/ # https://wiki.debian.org/DebianReleases#Production_Releases From 37dd30e583c686750c808b9e6a1e2b58f9c29b66 Mon Sep 17 00:00:00 2001 From: Zahin Azmayeen Date: Wed, 6 May 2026 23:22:17 +0600 Subject: [PATCH 7/8] remove opensuse tumbleweed builder because of build failures --- .github/workflows/deploy.yml | 4 +--- 1 file changed, 1 insertion(+), 3 deletions(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index 34abfadd..ae205151 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -12,7 +12,7 @@ jobs: matrix: platform: [ "ubuntu-latest", "ubuntu-24.04-arm" ] # container: [ "ubuntu:18.04", "ubuntu:20.04", "ubuntu:22.04", "ubuntu:23.04", "debian:11", "fedora:37", "fedora:38", "archlinux:latest" ] - container: [ "ubuntu:22.04", "ubuntu:24.04", "debian:12", "fedora:40", "fedora:41", "opensuse/tumbleweed" ] + container: [ "ubuntu:22.04", "ubuntu:24.04", "debian:12", "fedora:40", "fedora:41" ] # this list should be updated from time to time by consulting these pages: # https://releases.ubuntu.com/ # https://wiki.debian.org/DebianReleases#Production_Releases @@ -23,8 +23,6 @@ jobs: exclude: - container: "ubuntu:20.04" ime: "fcitx" - - platform: "ubuntu-24.04-arm" - container: "opensuse/tumbleweed" runs-on: ${{ matrix.platform }} container: image: ${{ matrix.platform == 'ubuntu-24.04-arm' && format('arm64v8/{0}', matrix.container) || matrix.container }} From e46f38ff1f9a5250b745add4cdcc6e6a7f17897a Mon Sep 17 00:00:00 2001 From: Zahin Azmayeen Date: Wed, 6 May 2026 23:27:12 +0600 Subject: [PATCH 8/8] change container image from arm64v8/${matrix.container} to matrix.container --- .github/workflows/deploy.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/deploy.yml b/.github/workflows/deploy.yml index ae205151..94dc2ac2 100644 --- a/.github/workflows/deploy.yml +++ b/.github/workflows/deploy.yml @@ -25,7 +25,7 @@ jobs: ime: "fcitx" runs-on: ${{ matrix.platform }} container: - image: ${{ matrix.platform == 'ubuntu-24.04-arm' && format('arm64v8/{0}', matrix.container) || matrix.container }} + image: ${{ matrix.container }} env: DIST: ${{ matrix.container }} IME: ${{ matrix.ime }}