From ee6b5cbf22b4cf9900971f106cd4d25a5d266bdb Mon Sep 17 00:00:00 2001 From: Shaurya Date: Sat, 9 May 2026 13:47:41 +0530 Subject: [PATCH 01/17] Refactor build workflow for AppImages and packages Updated GitHub Actions workflow to build AppImages, deb, and rpm packages using Briefcase. Removed deprecated FPM build steps. --- .github/workflows/build.yml | 106 +++++++++++------------------------- 1 file changed, 32 insertions(+), 74 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9f1eec4..0235d86 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -5,14 +5,20 @@ on: tags: - "v*" - "*-beta" + - "*-dev" workflow_dispatch: jobs: - # for appimage - build-appimage: + # Briefcase for AppImages, deb and rpm (replaces custom script and fpm) + build: + name: Build ${{ matrix.format }} runs-on: ubuntu-latest permissions: contents: write + strategy: + fail-fast: false + matrix: + format: [appimage, deb, rpm] steps: - uses: actions/checkout@v4 @@ -22,48 +28,43 @@ jobs: with: python-version: "3.13" - - name: Install system dependencies + - name: Install Briefcase + run: | + python -m pip install --upgrade pip + pip install briefcase + + - name: Install Build Dependencies run: | sudo apt-get update sudo apt-get install -y \ - wget \ - binutils \ - fuse \ - libfuse2 \ - libglib2.0-0 \ - libgl1 \ - libegl1 \ - libdbus-1-3 \ - ruby-dev\ - build-essential\ - rpm\ - libxcb-cursor0 - - name: Build AppImage - run: | - chmod +x scripts/build-appimage.sh - bash scripts/build-appimage.sh + build-essential git python3-dev \ + libfuse2 binutils \ + debhelper devscripts \ + rpm - - name: Verify AppImage + - name: Build Package run: | - ls -lh Lufus-x86_64.AppImage - file Lufus-x86_64.AppImage - chmod +x Lufus-x86_64.AppImage + briefcase package linux ${{ matrix.format }} --no-docker --non-interactive - - name: Generate checksums + - name: Generate Checksums run: | - sha256sum Lufus-x86_64.AppImage > Lufus-x86_64.AppImage.sha256 - cat Lufus-x86_64.AppImage.sha256 + cd dist + for file in *; do + if [ -f "$file" ]; then + sha256sum "$file" > "$file.sha256" + fi + done - name: Create Release uses: softprops/action-gh-release@v2 with: tag_name: ${{ github.ref_name }} files: | - Lufus-x86_64.AppImage - Lufus-x86_64.AppImage.sha256 + dist/* draft: false prerelease: ${{ contains(github.ref, '-beta') }} generate_release_notes: true + append_body: true # for binary build-tarball: @@ -80,7 +81,7 @@ jobs: - name: Install dependencies run: | - pip install pyinstaller PyQt6 psutil pyudev requests packaging platformdirs requests + pip install pyinstaller PyQt6 psutil pyudev requests packaging platformdirs - name: Build with PyInstaller run: | @@ -90,7 +91,7 @@ jobs: --add-data "src/lufus/gui/assets:lufus/gui/assets" \ --add-data "src/lufus/gui/languages:lufus/gui/languages" \ --add-data "src/lufus/gui/themes:lufus/gui/themes" \ - --collect-all PyQt6 \ + --collect-all PySide6 \ --name "Lufus-x86_64-${{ github.ref_name }}" \ "src/lufus/__main__.py" @@ -109,47 +110,4 @@ jobs: Lufus-x86_64-${{ github.ref_name }}.tar.gz Lufus-x86_64-${{ github.ref_name }}.tar.gz.sha256 append_body: true - - # for fpm packages - build-fpm: - needs: build-tarball - runs-on: ubuntu-latest - permissions: - contents: write - strategy: - matrix: - pkg_type: [deb, rpm] - steps: - - uses: actions/checkout@v4 - - - name: Set up Ruby - uses: actions/setup-ruby@v1 - with: - ruby-version: '3.2' - - - name: Install FPM - run: gem install fpm - - - name: Download tarball from release - run: | - wget https://github.com/${{ github.repository }}/releases/download/${{ github.ref_name }}/Lufus-x86_64-${{ github.ref_name }}.tar.gz - - - name: Build ${{ matrix.pkg_type }} Package - run: | - mkdir tmp_source && tar -xzf Lufus-x86_64-${{ github.ref_name }}.tar.gz -C tmp_source - fpm -s dir -t ${{ matrix.pkg_type }} \ - -n "Lufus" \ - -v "${{ github.ref_name }}" \ - --iteration 1 \ - --prefix /opt/lufus \ - --description "Physical drive imaging and formatting utility" \ - -C tmp_source/Lufus-x86_64-${{ github.ref_name }} . - - - name: Upload to Release - uses: softprops/action-gh-release@v2 - with: - tag_name: ${{ github.ref_name }} - files: | - *.deb - *.rpm - append_body: true + From 06248dc775f681150c77853f220733eb40b1578d Mon Sep 17 00:00:00 2001 From: Shaurya Date: Sat, 9 May 2026 13:56:57 +0530 Subject: [PATCH 02/17] Modify build.yml to use 'system' format and no input Updated build workflow to change package formats and input method. --- .github/workflows/build.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 0235d86..87f860b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -18,7 +18,7 @@ jobs: strategy: fail-fast: false matrix: - format: [appimage, deb, rpm] + format: [appimage, system] steps: - uses: actions/checkout@v4 @@ -44,7 +44,7 @@ jobs: - name: Build Package run: | - briefcase package linux ${{ matrix.format }} --no-docker --non-interactive + briefcase package linux ${{ matrix.format }} --no-docker --no-input - name: Generate Checksums run: | From ad6437cfe865554c21556b0ab2cebb69e2c84e35 Mon Sep 17 00:00:00 2001 From: Shaurya Date: Sat, 9 May 2026 13:59:21 +0530 Subject: [PATCH 03/17] Update pyproject.toml --- pyproject.toml | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 72d532d..e135baa 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -47,6 +47,7 @@ sources = [ test_sources = [ "tests", ] +icon = "src/lufus/gui/assets/icons/lufuslogo" requires = [ "psutil>=7.2", "pyside6", @@ -135,8 +136,8 @@ system_runtime_requires = [ ] [tool.briefcase.app.lufus.linux.appimage] -manylinux = "manylinux_2_28" -system_requires = [] # AppImage needs this section present +manylinux = "manylinux_2014" +system_requires = ["libxcb-cursor0", "libgl1",] # AppImage needs this section present linuxdeploy_plugins = [] [tool.briefcase.app.lufus.linux.flatpak] @@ -144,6 +145,10 @@ flatpak_runtime = "org.kde.Platform" flatpak_runtime_version = "6.9" flatpak_sdk = "org.kde.Sdk" +[tool.briefcase.app.lufus.linux.deb] + +[tool.briefcase.app.lufus.linux.rpm] + # Unsupported platforms [tool.briefcase.app.lufus.windows] From a0f00512f841a2d6cbeea6339ae2378c5a86b77b Mon Sep 17 00:00:00 2001 From: Shaurya Date: Sat, 9 May 2026 14:04:33 +0530 Subject: [PATCH 04/17] Update pyproject.toml --- pyproject.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index e135baa..b456b1a 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -8,6 +8,7 @@ version = "1.0.0" # keep synced with [tool.briefcase] version description = "A rufus clone written in Python and designed to work with Linux." readme = "README.md" license = "MIT" +license-files = ["LICENSE"] requires-python = ">=3.10" dependencies = [ "psutil>=7.2", @@ -136,7 +137,7 @@ system_runtime_requires = [ ] [tool.briefcase.app.lufus.linux.appimage] -manylinux = "manylinux_2014" +manylinux = "manylinux-2014" system_requires = ["libxcb-cursor0", "libgl1",] # AppImage needs this section present linuxdeploy_plugins = [] From 03a9bd7a0e01c16d62a17d4d5e5ddfa90c9b9a62 Mon Sep 17 00:00:00 2001 From: Shaurya Date: Sat, 9 May 2026 14:09:28 +0530 Subject: [PATCH 05/17] Specify MIT license in pyproject.toml Updated license information to specify MIT license and associated file. --- pyproject.toml | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index b456b1a..df086ea 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -33,7 +33,8 @@ project_name = "Lufus" bundle = "com.github.hog185" version = "1.0.0" # keep synced with [project] version url = "https://github.com/Hog185/Lufus" -license.file = "LICENSE" +license = "MIT" +license-files = ["LICENSE"] author = "Hog185" author_email = "example@example.com" From e1b8b009e74538ff0ab016fff98797379e2f7557 Mon Sep 17 00:00:00 2001 From: Shaurya Date: Sat, 9 May 2026 14:12:46 +0530 Subject: [PATCH 06/17] Update pyproject.toml --- pyproject.toml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyproject.toml b/pyproject.toml index df086ea..a5e1024 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -138,7 +138,7 @@ system_runtime_requires = [ ] [tool.briefcase.app.lufus.linux.appimage] -manylinux = "manylinux-2014" +manylinux = "manylinux_2_28" system_requires = ["libxcb-cursor0", "libgl1",] # AppImage needs this section present linuxdeploy_plugins = [] From 9eba3de4c3633fbf5293e93a78a9d6df827c7458 Mon Sep 17 00:00:00 2001 From: Shaurya Date: Sat, 9 May 2026 14:26:15 +0530 Subject: [PATCH 07/17] Refactor GitHub Actions workflow for builds --- .github/workflows/build.yml | 67 +++++++++++++++++++++---------------- 1 file changed, 38 insertions(+), 29 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 87f860b..9cba0e4 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -11,60 +11,69 @@ on: jobs: # Briefcase for AppImages, deb and rpm (replaces custom script and fpm) build: - name: Build ${{ matrix.format }} - runs-on: ubuntu-latest + name: Build ${{ matrix.format }} (${{ matrix.os }}) + runs-on: ${{ matrix.os }} + container: ${{ matrix.container }} permissions: contents: write strategy: fail-fast: false matrix: - format: [appimage, system] + include: + # Job 1: AppImage + - os: ubuntu-latest + format: appimage + args: "--no-docker" + # Job 2: DEB + - os: ubuntu-latest + format: system + args: "" + # Job 3: RPM (Runs inside a Fedora container) + - os: ubuntu-latest + format: system + args: "" + container: fedora:40 steps: - uses: actions/checkout@v4 + - name: Install Build Dependencies (Ubuntu) + if: matrix.container == '' + run: | + sudo apt-get update + sudo apt-get install -y build-essential git python3-dev libfuse2 binutils debhelper devscripts + + - name: Install Build Dependencies (Fedora) + if: matrix.container != '' + run: | + dnf install -y python3-pip python3-devel gcc git rpm-build mesa-libGL libxcb + - name: Set up Python + if: matrix.container == '' uses: actions/setup-python@v5 with: python-version: "3.13" - name: Install Briefcase run: | - python -m pip install --upgrade pip - pip install briefcase - - - name: Install Build Dependencies - run: | - sudo apt-get update - sudo apt-get install -y \ - build-essential git python3-dev \ - libfuse2 binutils \ - debhelper devscripts \ - rpm + python3 -m pip install --upgrade pip + python3 -m pip install briefcase - name: Build Package run: | - briefcase package linux ${{ matrix.format }} --no-docker --no-input + briefcase package linux ${{ matrix.format }} ${{ matrix.args }} --no-input - - name: Generate Checksums + - name: Prepare Artifacts run: | - cd dist - for file in *; do - if [ -f "$file" ]; then - sha256sum "$file" > "$file.sha256" - fi - done + mkdir -p output + find dist/ -type f \( -name "*.AppImage" -o -name "*.deb" -o -name "*.rpm" \) -exec cp {} output/ \; - - name: Create Release + - name: Release uses: softprops/action-gh-release@v2 with: - tag_name: ${{ github.ref_name }} - files: | - dist/* - draft: false - prerelease: ${{ contains(github.ref, '-beta') }} - generate_release_notes: true + files: output/* append_body: true + generate_release_notes: true # for binary build-tarball: From dac9d06abb6d79a82f4cff32da3b690a100c82ef Mon Sep 17 00:00:00 2001 From: Shaurya Date: Sat, 9 May 2026 14:31:53 +0530 Subject: [PATCH 08/17] Update build.yml --- .github/workflows/build.yml | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 9cba0e4..5de6a94 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -20,15 +20,12 @@ jobs: fail-fast: false matrix: include: - # Job 1: AppImage - os: ubuntu-latest format: appimage args: "--no-docker" - # Job 2: DEB - os: ubuntu-latest format: system args: "" - # Job 3: RPM (Runs inside a Fedora container) - os: ubuntu-latest format: system args: "" @@ -47,6 +44,8 @@ jobs: if: matrix.container != '' run: | dnf install -y python3-pip python3-devel gcc git rpm-build mesa-libGL libxcb + # Fix the Fedora packaging conflict + python3 -m pip install --upgrade pip - name: Set up Python if: matrix.container == '' @@ -56,8 +55,8 @@ jobs: - name: Install Briefcase run: | - python3 -m pip install --upgrade pip - python3 -m pip install briefcase + # Use --ignore-installed to bypass the RPM 'packaging' conflict in Fedora + python3 -m pip install briefcase --ignore-installed - name: Build Package run: | @@ -70,6 +69,7 @@ jobs: - name: Release uses: softprops/action-gh-release@v2 + if: startsWith(github.ref, 'refs/tags/') with: files: output/* append_body: true From 369388df91a627235f5cef7a33568a248f147000 Mon Sep 17 00:00:00 2001 From: Shaurya Date: Sat, 9 May 2026 14:42:29 +0530 Subject: [PATCH 09/17] Update build.yml --- .github/workflows/build.yml | 18 ++++++++++-------- 1 file changed, 10 insertions(+), 8 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 5de6a94..67c9c38 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -34,28 +34,30 @@ jobs: steps: - uses: actions/checkout@v4 + # UBUNTU SETUP - name: Install Build Dependencies (Ubuntu) if: matrix.container == '' run: | sudo apt-get update - sudo apt-get install -y build-essential git python3-dev libfuse2 binutils debhelper devscripts + sudo apt-get install -y build-essential git python3-dev libfuse2 binutils debhelper devscripts \ + dosfstools ntfs-3g exfatprogs e2fsprogs udftools btrfs-progs xfsprogs libgl1 libqt6dbus6 libqt6gui6 + # FEDORA SETUP - name: Install Build Dependencies (Fedora) if: matrix.container != '' run: | - dnf install -y python3-pip python3-devel gcc git rpm-build mesa-libGL libxcb - # Fix the Fedora packaging conflict - python3 -m pip install --upgrade pip - - - name: Set up Python - if: matrix.container == '' + dnf install -y python3-pip python3-devel gcc git rpm-build mesa-libGL libxcb \ + btrfs-progs dosfstools e2fsprogs exfatprogs hfsplus-tools ntfs-3g qt6-qtbase-gui udftools xfsprogs + + - name: Set up Python (AppImage only) + if: matrix.format == 'appimage' uses: actions/setup-python@v5 with: python-version: "3.13" - name: Install Briefcase run: | - # Use --ignore-installed to bypass the RPM 'packaging' conflict in Fedora + python3 -m pip install --upgrade pip python3 -m pip install briefcase --ignore-installed - name: Build Package From 5c66a5403e1d6fb5b55ca835977c08e5b3aa923c Mon Sep 17 00:00:00 2001 From: Shaurya Date: Sat, 9 May 2026 20:56:36 +0530 Subject: [PATCH 10/17] Update build.yml --- .github/workflows/build.yml | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 67c9c38..61c5ded 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -39,9 +39,11 @@ jobs: if: matrix.container == '' run: | sudo apt-get update - sudo apt-get install -y build-essential git python3-dev libfuse2 binutils debhelper devscripts \ - dosfstools ntfs-3g exfatprogs e2fsprogs udftools btrfs-progs xfsprogs libgl1 libqt6dbus6 libqt6gui6 - + sudo apt-get install -y \ + build-essential git python3-dev libfuse2 binutils debhelper devscripts \ + dosfstools ntfs-3g exfatprogs e2fsprogs udftools btrfs-progs xfsprogs \ + libgl1 libqt6dbus6 libqt6gui6 libxcb-cursor0 libxcb-icccm4 libxcb-keysyms1 \ + libxcb-shape0 libxkbcommon-x11-0 # FEDORA SETUP - name: Install Build Dependencies (Fedora) if: matrix.container != '' From d8d0bd3002a688d1bd5e6f7701a3268cb542972e Mon Sep 17 00:00:00 2001 From: Shaurya Date: Sat, 9 May 2026 22:21:27 +0530 Subject: [PATCH 11/17] Update build.yml --- .github/workflows/build.yml | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 61c5ded..1ed2366 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -98,13 +98,16 @@ jobs: - name: Build with PyInstaller run: | - pyinstaller --noconfirm --onedir --windowed \ + pyinstaller --noconfirm --onefile --windowed \ --icon "src/lufus/gui/assets/icons/lufuslogo.ico" \ --paths "./src" \ --add-data "src/lufus/gui/assets:lufus/gui/assets" \ --add-data "src/lufus/gui/languages:lufus/gui/languages" \ --add-data "src/lufus/gui/themes:lufus/gui/themes" \ - --collect-all PySide6 \ + --hidden-import "PySide6.QtCore" \ + --hidden-import "PySide6.QtWidgets" \ + --hidden-import "PySide6.QtGui" \ + --collect-binaries PySide6 \ --name "Lufus-x86_64-${{ github.ref_name }}" \ "src/lufus/__main__.py" From 135fdf973bf79656b9a97cfc2d5a9cef36c18fcb Mon Sep 17 00:00:00 2001 From: Shaurya Date: Sun, 10 May 2026 13:06:08 +0530 Subject: [PATCH 12/17] Update build.yml --- .github/workflows/build.yml | 47 +++++++++++++++++++++++++------------ 1 file changed, 32 insertions(+), 15 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 1ed2366..571b00d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -71,13 +71,11 @@ jobs: mkdir -p output find dist/ -type f \( -name "*.AppImage" -o -name "*.deb" -o -name "*.rpm" \) -exec cp {} output/ \; - - name: Release - uses: softprops/action-gh-release@v2 - if: startsWith(github.ref, 'refs/tags/') + - name: Upload Artifacts + uses: actions/upload-artifact@v4 with: - files: output/* - append_body: true - generate_release_notes: true + name: linux-packages-${{ matrix.format }}-${{ matrix.os }} + path: dist/* # for binary build-tarball: @@ -94,7 +92,7 @@ jobs: - name: Install dependencies run: | - pip install pyinstaller PyQt6 psutil pyudev requests packaging platformdirs + pip install pyinstaller PySide6 psutil pyudev requests packaging platformdirs - name: Build with PyInstaller run: | @@ -118,12 +116,31 @@ jobs: cd .. sha256sum Lufus-x86_64-${{ github.ref_name }}.tar.gz > Lufus-x86_64-${{ github.ref_name }}.tar.gz.sha256 - - name: Upload to Release - uses: softprops/action-gh-release@v2 - with: - tag_name: ${{ github.ref_name }} - files: | - Lufus-x86_64-${{ github.ref_name }}.tar.gz - Lufus-x86_64-${{ github.ref_name }}.tar.gz.sha256 - append_body: true + - name: Upload Tarball + uses: actions/upload-artifact@v4 + with: + name: lufus-tarball + path: | + Lufus-*.tar.gz + Lufus-*.sha256 + + release: + name: Create Release + needs: [build, build-tarball] # This waits for both jobs to finish + runs-on: ubuntu-latest + if: startsWith(github.ref, 'refs/tags/') + permissions: + contents: write + steps: + - name: Download all artifacts + uses: actions/download-artifact@v4 + with: + path: release-assets + merge-multiple: true + + - name: Upload to Release + uses: softprops/action-gh-release@v2 + with: + files: release-assets/**/* + generate_release_notes: true From 80310089a8e3ec95ee98752fca171fee74c1c281 Mon Sep 17 00:00:00 2001 From: Shaurya Date: Sun, 10 May 2026 13:12:07 +0530 Subject: [PATCH 13/17] Update build.yml --- .github/workflows/build.yml | 102 +++++++++++++++++------------------- 1 file changed, 48 insertions(+), 54 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 571b00d..4900cf5 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -9,7 +9,6 @@ on: workflow_dispatch: jobs: - # Briefcase for AppImages, deb and rpm (replaces custom script and fpm) build: name: Build ${{ matrix.format }} (${{ matrix.os }}) runs-on: ${{ matrix.os }} @@ -34,7 +33,6 @@ jobs: steps: - uses: actions/checkout@v4 - # UBUNTU SETUP - name: Install Build Dependencies (Ubuntu) if: matrix.container == '' run: | @@ -44,7 +42,7 @@ jobs: dosfstools ntfs-3g exfatprogs e2fsprogs udftools btrfs-progs xfsprogs \ libgl1 libqt6dbus6 libqt6gui6 libxcb-cursor0 libxcb-icccm4 libxcb-keysyms1 \ libxcb-shape0 libxkbcommon-x11-0 - # FEDORA SETUP + - name: Install Build Dependencies (Fedora) if: matrix.container != '' run: | @@ -66,57 +64,54 @@ jobs: run: | briefcase package linux ${{ matrix.format }} ${{ matrix.args }} --no-input - - name: Prepare Artifacts - run: | - mkdir -p output - find dist/ -type f \( -name "*.AppImage" -o -name "*.deb" -o -name "*.rpm" \) -exec cp {} output/ \; - - name: Upload Artifacts uses: actions/upload-artifact@v4 with: - name: linux-packages-${{ matrix.format }}-${{ matrix.os }} - path: dist/* - - # for binary + name: linux-packages-${{ matrix.format }}-${{ matrix.container || 'ubuntu' }} + path: | + dist/*.AppImage + dist/*.deb + dist/*.rpm + build-tarball: - runs-on: ubuntu-latest - permissions: - contents: write - steps: - - uses: actions/checkout@v4 - - - name: Set up Python - uses: actions/setup-python@v5 - with: - python-version: "3.13" - - - name: Install dependencies - run: | - pip install pyinstaller PySide6 psutil pyudev requests packaging platformdirs - - - name: Build with PyInstaller - run: | - pyinstaller --noconfirm --onefile --windowed \ - --icon "src/lufus/gui/assets/icons/lufuslogo.ico" \ - --paths "./src" \ - --add-data "src/lufus/gui/assets:lufus/gui/assets" \ - --add-data "src/lufus/gui/languages:lufus/gui/languages" \ - --add-data "src/lufus/gui/themes:lufus/gui/themes" \ - --hidden-import "PySide6.QtCore" \ - --hidden-import "PySide6.QtWidgets" \ - --hidden-import "PySide6.QtGui" \ - --collect-binaries PySide6 \ - --name "Lufus-x86_64-${{ github.ref_name }}" \ - "src/lufus/__main__.py" - - - name: Create Tarball and Checksum - run: | - cd dist - tar -cvzf ../Lufus-x86_64-${{ github.ref_name }}.tar.gz Lufus-x86_64-${{ github.ref_name }} - cd .. - sha256sum Lufus-x86_64-${{ github.ref_name }}.tar.gz > Lufus-x86_64-${{ github.ref_name }}.tar.gz.sha256 - - - name: Upload Tarball + runs-on: ubuntu-latest + permissions: + contents: write + steps: + - uses: actions/checkout@v4 + + - name: Set up Python + uses: actions/setup-python@v5 + with: + python-version: "3.13" + + - name: Install dependencies + run: | + pip install pyinstaller PySide6 psutil pyudev requests packaging platformdirs + + - name: Build with PyInstaller + run: | + pyinstaller --noconfirm --onefile --windowed \ + --icon "src/lufus/gui/assets/icons/lufuslogo.ico" \ + --paths "./src" \ + --add-data "src/lufus/gui/assets:lufus/gui/assets" \ + --add-data "src/lufus/gui/languages:lufus/gui/languages" \ + --add-data "src/lufus/gui/themes:lufus/gui/themes" \ + --hidden-import "PySide6.QtCore" \ + --hidden-import "PySide6.QtWidgets" \ + --hidden-import "PySide6.QtGui" \ + --collect-binaries PySide6 \ + --name "Lufus-x86_64-${{ github.ref_name }}" \ + "src/lufus/__main__.py" + + - name: Create Tarball and Checksum + run: | + cd dist + tar -cvzf ../Lufus-x86_64-${{ github.ref_name }}.tar.gz Lufus-x86_64-${{ github.ref_name }} + cd .. + sha256sum Lufus-x86_64-${{ github.ref_name }}.tar.gz > Lufus-x86_64-${{ github.ref_name }}.tar.gz.sha256 + + - name: Upload Tarball uses: actions/upload-artifact@v4 with: name: lufus-tarball @@ -126,7 +121,7 @@ jobs: release: name: Create Release - needs: [build, build-tarball] # This waits for both jobs to finish + needs: [build, build-tarball] runs-on: ubuntu-latest if: startsWith(github.ref, 'refs/tags/') permissions: @@ -141,6 +136,5 @@ jobs: - name: Upload to Release uses: softprops/action-gh-release@v2 with: - files: release-assets/**/* - generate_release_notes: true - + files: release-assets/* + generate_release_notes: true From dc4f1e1cbfb96ec196f69221c1ead19615816a19 Mon Sep 17 00:00:00 2001 From: Shaurya Date: Sun, 10 May 2026 13:36:18 +0530 Subject: [PATCH 14/17] Update build.yml --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 4900cf5..ba3b680 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -67,7 +67,7 @@ jobs: - name: Upload Artifacts uses: actions/upload-artifact@v4 with: - name: linux-packages-${{ matrix.format }}-${{ matrix.container || 'ubuntu' }} + name: linux-packages-${{ matrix.format }}-${{replace(matrix.container || 'ubuntu', ':', '-'}} path: | dist/*.AppImage dist/*.deb From c5305a91bf9cfc5a14fbee171ad7064601349325 Mon Sep 17 00:00:00 2001 From: Shaurya Date: Sun, 10 May 2026 13:43:34 +0530 Subject: [PATCH 15/17] Update build.yml --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ba3b680..c8c2d6d 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -67,7 +67,7 @@ jobs: - name: Upload Artifacts uses: actions/upload-artifact@v4 with: - name: linux-packages-${{ matrix.format }}-${{replace(matrix.container || 'ubuntu', ':', '-'}} + name: linux-packages-${{ matrix.format }}-${{replace(matrix.container || 'ubuntu', ':', '-') }} path: | dist/*.AppImage dist/*.deb From 886bb96749b9ff70d57231aba250a16423231a2c Mon Sep 17 00:00:00 2001 From: Shaurya Date: Sun, 10 May 2026 13:46:39 +0530 Subject: [PATCH 16/17] Update build.yml --- .github/workflows/build.yml | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index c8c2d6d..ff62aa8 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -22,13 +22,16 @@ jobs: - os: ubuntu-latest format: appimage args: "--no-docker" + artifact_name: "-appimage" - os: ubuntu-latest format: system args: "" + artifact_name: "-deb" - os: ubuntu-latest format: system args: "" container: fedora:40 + artifact_name: "-rpm" steps: - uses: actions/checkout@v4 @@ -67,7 +70,7 @@ jobs: - name: Upload Artifacts uses: actions/upload-artifact@v4 with: - name: linux-packages-${{ matrix.format }}-${{replace(matrix.container || 'ubuntu', ':', '-') }} + name: linux-packages-${{ matrix.artifact_name }} path: | dist/*.AppImage dist/*.deb From 0bee2ef1f70f6972754231a500ce6e81641871b4 Mon Sep 17 00:00:00 2001 From: Shaurya Date: Sun, 10 May 2026 14:09:46 +0530 Subject: [PATCH 17/17] Update build.yml --- .github/workflows/build.yml | 60 ++++++++++++++++++++----------------- 1 file changed, 33 insertions(+), 27 deletions(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index ff62aa8..639b2cf 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -67,14 +67,17 @@ jobs: run: | briefcase package linux ${{ matrix.format }} ${{ matrix.args }} --no-input - - name: Upload Artifacts - uses: actions/upload-artifact@v4 + - name: Release Packages + uses: softprops/action-gh-release@v2 + if: startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' with: - name: linux-packages-${{ matrix.artifact_name }} - path: | + files: | dist/*.AppImage dist/*.deb dist/*.rpm + tag_name: ${{ github.ref_name }} + append_body: true + generate_release_notes: true build-tarball: runs-on: ubuntu-latest @@ -114,30 +117,33 @@ jobs: cd .. sha256sum Lufus-x86_64-${{ github.ref_name }}.tar.gz > Lufus-x86_64-${{ github.ref_name }}.tar.gz.sha256 - - name: Upload Tarball - uses: actions/upload-artifact@v4 + - name: Release Tarball + uses: softprops/action-gh-release@v2 + if: startsWith(github.ref, 'refs/tags/') || github.event_name == 'workflow_dispatch' with: - name: lufus-tarball - path: | + files: | Lufus-*.tar.gz Lufus-*.sha256 - - release: - name: Create Release - needs: [build, build-tarball] - runs-on: ubuntu-latest - if: startsWith(github.ref, 'refs/tags/') - permissions: - contents: write - steps: - - name: Download all artifacts - uses: actions/download-artifact@v4 - with: - path: release-assets - merge-multiple: true - - - name: Upload to Release - uses: softprops/action-gh-release@v2 - with: - files: release-assets/* + tag_name: ${{ github.ref_name }} + append_body: true generate_release_notes: true + + # release: + # name: Create Release + # needs: [build, build-tarball] + # runs-on: ubuntu-latest + # if: startsWith(github.ref, 'refs/tags/') + # permissions: + # contents: write + # steps: + # - name: Download all artifacts + # uses: actions/download-artifact@v4 + # with: + # path: release-assets + # merge-multiple: true + + # - name: Upload to Release + # uses: softprops/action-gh-release@v2 + # with: + # files: release-assets/* + # generate_release_notes: true