From fed16a3f16099ad4097c5294fe7529d0cea5e860 Mon Sep 17 00:00:00 2001 From: Alex Xu Date: Tue, 22 Sep 2026 17:45:07 -0700 Subject: [PATCH] initial commit --- .github/workflows/package-linux.yml | 79 ++++++++++++++++++++--------- packaging/appimage/kcc.desktop | 7 +++ 2 files changed, 62 insertions(+), 24 deletions(-) create mode 100644 packaging/appimage/kcc.desktop diff --git a/.github/workflows/package-linux.yml b/.github/workflows/package-linux.yml index 91dcebd1..3e7609f4 100644 --- a/.github/workflows/package-linux.yml +++ b/.github/workflows/package-linux.yml @@ -22,47 +22,78 @@ on: - '.dockerignore' jobs: - build: - runs-on: ubuntu-22.04 + build-appimage: + name: Build AppImage (${{ matrix.arch }}) + runs-on: ${{ matrix.runs-on }} + + strategy: + matrix: + include: + - runs-on: ubuntu-latest + arch: x86_64 + - runs-on: ubuntu-24.04-arm + arch: aarch64 + + container: ghcr.io/pkgforge-dev/archlinux:latest steps: - uses: actions/checkout@v7 + + - name: Prepare container + uses: pkgforge-dev/anylinux-setup-action@v2 + - name: Set up Python uses: actions/setup-python@v7 with: python-version: 3.11 cache: 'pip' + - name: Install python dependencies run: | sudo apt-get update - sudo apt-get install -y libpng-dev libjpeg-dev p7zip-full p7zip-rar python3-pip squashfs-tools libfuse2 libxcb-cursor0 - python -m pip install --upgrade pip certifi pyinstaller --no-binary pyinstaller + sudo apt-get install -y libpng-dev libjpeg-dev p7zip-full p7zip-rar python3-pip squashfs-tools libxcb-cursor0 + python -m pip install --upgrade pip python -m pip install -r requirements.txt - - name: build binary + + - name: Install kcc run: | - python setup.py build_binary - chmod +x dist/kcc_linux* -# issue with this action, disabled and commented out -# see https://github.com/AppImageCrafters/build-appimage/issues/5 -# see https://appimage-builder.readthedocs.io/en/latest/intro/install.html#install-appimagetool -# - name: Build AppImage -# uses: AppImageCrafters/build-appimage-action@master -# env: -# UPDATE_INFO: gh-releases-zsync|ciromattia|kcc|latest|*x86_64.AppImage.zsync -# with: -# recipe: AppImageBuilder.yml + python -m pip install --break-system-packages . + + - name: Determine version + id: version + run: | + if [[ "${{ github.event_name }}" == "release" ]]; then + echo "version=${GITHUB_REF_NAME#v}" >> "$GITHUB_OUTPUT" + else + echo "version=dev-${GITHUB_SHA::7}" >> "$GITHUB_OUTPUT" + fi + - name: Build AppImage + env: + ARCH: ${{ matrix.arch }} + ICON: ${{ github.workspace }}/icons/comic2ebook.png + DESKTOP: ${{ github.workspace }}/packaging/appimage/kcc.desktop + DEPLOY_PYTHON: 1 + OUTPATH: ${{ github.workspace }}/dist + OUTNAME: kcc-${{ steps.version.outputs.version }}-${{ matrix.arch }}.AppImage run: | - wget -O appimage-builder-x86_64.AppImage https://github.com/AppImageCrafters/appimage-builder/releases/download/v1.1.0/appimage-builder-1.1.0-x86_64.AppImage - chmod +x appimage-builder-x86_64.AppImage - sudo mv appimage-builder-x86_64.AppImage /usr/local/bin/appimage-builder - appimage-builder --recipe AppImageBuilder.yml --skip-test + mkdir -p dist + quick-sharun "$(which cli-chess)" + quick-sharun --make-appimage + + - name: Test AppImage + run: | + quick-sharun --simple-test ./dist/*.AppImage env: UPDATE_INFO: gh-releases-zsync|ciromattia|kcc|latest|*x86_64.AppImage.zsync + - name: upload artifact uses: actions/upload-artifact@v7 with: - name: AppImage - path: './*.AppImage*' + name: kcc-${{ steps.version.outputs.version }}-${{ matrix.arch }} + path: | + dist/*.AppImage + dist/*.AppImage.zsync + - name: Release uses: softprops/action-gh-release@v3 if: startsWith(github.ref, 'refs/tags/') @@ -70,5 +101,5 @@ jobs: prerelease: true generate_release_notes: false files: | - LICENSE.txt - *.AppImage* + dist/*.AppImage + dist/*.AppImage.zsync diff --git a/packaging/appimage/kcc.desktop b/packaging/appimage/kcc.desktop new file mode 100644 index 00000000..ce1abe42 --- /dev/null +++ b/packaging/appimage/kcc.desktop @@ -0,0 +1,7 @@ +[Desktop Entry] +Name=kcc +Comment=Optimize comics/manga for eink +Exec=kcc +Icon=comic2ebook +Type=Application +Terminal=false