From 382cc39b80a65f538ff3915d3d66c34fab18200f Mon Sep 17 00:00:00 2001 From: Jeena Date: Mon, 9 Jun 2025 23:03:08 +0900 Subject: [PATCH] Add flatpak packaging --- .gitignore | 4 ++ packaging/flatpak/net.jeena.Recoder.yaml | 42 ++++++++++++ packaging/flatpak/release-flatpak.sh | 68 ++++++++++++++++++++ src/resources/net.jeena.Recoder.metainfo.xml | 56 ++++++++++++++++ 4 files changed, 170 insertions(+) create mode 100644 packaging/flatpak/net.jeena.Recoder.yaml create mode 100755 packaging/flatpak/release-flatpak.sh create mode 100644 src/resources/net.jeena.Recoder.metainfo.xml diff --git a/.gitignore b/.gitignore index 1452a03..7095287 100644 --- a/.gitignore +++ b/.gitignore @@ -12,3 +12,7 @@ src/recoder.egg-info/ *.gresource *.compiled + +packaging/flatpack/build-dir +.flatpak-builder +repo/ diff --git a/packaging/flatpak/net.jeena.Recoder.yaml b/packaging/flatpak/net.jeena.Recoder.yaml new file mode 100644 index 0000000..a5ded45 --- /dev/null +++ b/packaging/flatpak/net.jeena.Recoder.yaml @@ -0,0 +1,42 @@ +app-id: net.jeena.Recoder +runtime: org.gnome.Platform +runtime-version: "48" +sdk: org.gnome.Sdk +command: recoder + +finish-args: + - --filesystem=home + - --filesystem=/mnt + - --filesystem=/media + - --filesystem=/run/media + - --filesystem=xdg-data/sounds:ro + - --filesystem=~/.local/share/sounds/recoder:ro + - --socket=wayland + - --socket=x11 + - --socket=pulseaudio + - --talk-name=org.freedesktop.Notifications + - --env=GSETTINGS_SCHEMA_DIR=/app/share/glib-2.0/schemas + - --device=dri + +add-extensions: + org.freedesktop.Platform.ffmpeg-full: + version: "24.08" + directory: lib/ffmpeg + add-ld-path: . + +modules: + - name: recoder + buildsystem: simple + builddir: true + sources: + - type: dir + path: ../../ + build-commands: + - glib-compile-resources src/resources/resources.xml --target=src/recoder/resources.gresource --sourcedir=src/resources + - pip3 install --prefix=/app --no-deps --no-build-isolation . + - install -Dm644 src/resources/net.jeena.Recoder.desktop /app/share/applications/net.jeena.Recoder.desktop + - install -Dm644 src/resources/net.jeena.Recoder.svg /app/share/icons/hicolor/scalable/apps/net.jeena.Recoder.svg + - install -Dm644 src/resources/net.jeena.recoder.gschema.xml /app/share/glib-2.0/schemas/net.jeena.recoder.gschema.xml + - install -Dm644 src/resources/complete.oga /app/share/sounds/complete.oga + - install -Dm644 src/resources/net.jeena.Recoder.metainfo.xml /app/share/metainfo/net.jeena.Recoder.metainfo.xml + - glib-compile-schemas /app/share/glib-2.0/schemas diff --git a/packaging/flatpak/release-flatpak.sh b/packaging/flatpak/release-flatpak.sh new file mode 100755 index 0000000..dd42c5c --- /dev/null +++ b/packaging/flatpak/release-flatpak.sh @@ -0,0 +1,68 @@ +#!/usr/bin/env bash +set -euo pipefail + +APP_ID="net.jeena.Recoder" +MANIFEST="${APP_ID}.yaml" +REPO_DIR="repo" +BRANCH="gh-pages" +WORKTREE_DIR="../../gh-pages" +PUBLISH_SUBDIR="flatpak-repo" +GPG_KEY_ID="1DF6570C929E2C186685046F0D6A8E36B9EE6177" + +# Clean previous build +rm -rf build-dir "${REPO_DIR}" + +# Build Flatpak and create signed repo +flatpak-builder --force-clean \ + --repo="${REPO_DIR}" \ + --default-branch=stable \ + --gpg-sign="${GPG_KEY_ID}" \ + build-dir "${MANIFEST}" + +# Export public key into repo (also used below for flatpakref) +gpg --export --armor "${GPG_KEY_ID}" > "${REPO_DIR}/gpg.key" + +# Clean up existing worktree if any +if [ -d "${WORKTREE_DIR}" ]; then + echo "Removing existing worktree at ${WORKTREE_DIR}..." + git worktree remove --force "${WORKTREE_DIR}" + rm -rf "${WORKTREE_DIR}" +fi + +# Prepare gh-pages worktree +git fetch origin "${BRANCH}" || true +git worktree add -B "${BRANCH}" "${WORKTREE_DIR}" "origin/${BRANCH}" + +# Clear just the publish subdir inside the worktree +rm -rf "${WORKTREE_DIR:?}/${PUBLISH_SUBDIR}" +mkdir -p "${WORKTREE_DIR}/${PUBLISH_SUBDIR}" + +# Copy repo files into the publish subdir +cp -r "${REPO_DIR}/"* "${WORKTREE_DIR}/${PUBLISH_SUBDIR}/" + +# Generate .flatpakref inside worktree root +cat > "${WORKTREE_DIR}/${APP_ID}.flatpakref" < /dev/null +git add "${PUBLISH_SUBDIR}" "${APP_ID}.flatpakref" +git commit -m "Update Flatpak release to version ${VERSION}" || echo "No changes to commit" +git push origin "${BRANCH}" +popd > /dev/null + +# Clean up worktree +git worktree remove "${WORKTREE_DIR}" + +echo "✅ Release uploaded to GitHub Pages with GPG signing!" diff --git a/src/resources/net.jeena.Recoder.metainfo.xml b/src/resources/net.jeena.Recoder.metainfo.xml new file mode 100644 index 0000000..fa9c291 --- /dev/null +++ b/src/resources/net.jeena.Recoder.metainfo.xml @@ -0,0 +1,56 @@ + + + net.jeena.Recoder + Recoder + Batch video transcoder + + +

+ Recoder is a simple and efficient GUI tool for batch video transcoding. + It supports drag-and-drop, presets, progress tracking, and more. +

+
+ + + + https://raw.githubusercontent.com/jeena/recoder/refs/heads/main/docs/screenshot-1.png + + + https://raw.githubusercontent.com/jeena/recoder/refs/heads/main/docs/screenshot-2.png + + + https://raw.githubusercontent.com/jeena/recoder/refs/heads/main/docs/screenshot-3.png + + + https://raw.githubusercontent.com/jeena/recoder/refs/heads/main/docs/screenshot-4.png + + + + net.jeena.Recoder.desktop + Jeena Paradies + GPL-3.0-or-later + CC0-1.0 + + https://github.com/jeena/recoder + https://github.com/jeena/recoder/issues + https://github.com/jeena/recoder/blob/main/docs/HELP.md + + + none + none + none + none + none + none + none + none + + + + + +

Initial release of Recoder.

+
+
+
+