From 84d3ad073a6acfd4019caffa68f3cad0fa7b9bc6 Mon Sep 17 00:00:00 2001 From: Danilo Reyes Date: Thu, 19 Feb 2026 10:37:36 -0600 Subject: [PATCH] build rpm --- .gitea/workflows/build-rpm.yml | 24 ++++++++++++++++++++++++ flake.nix | 9 +++++++++ packaging/prem2resolve.spec | 32 ++++++++++++++++++++++++++++++++ scripts/build-rpm.sh | 33 +++++++++++++++++++++++++++++++++ 4 files changed, 98 insertions(+) create mode 100644 .gitea/workflows/build-rpm.yml create mode 100644 packaging/prem2resolve.spec create mode 100755 scripts/build-rpm.sh diff --git a/.gitea/workflows/build-rpm.yml b/.gitea/workflows/build-rpm.yml new file mode 100644 index 0000000..f2d5f68 --- /dev/null +++ b/.gitea/workflows/build-rpm.yml @@ -0,0 +1,24 @@ +name: build-rpm + +on: + push: + branches: + - main + - master + tags: + - 'v*' + +jobs: + rpm: + runs-on: nixos + steps: + - uses: actions/checkout@v4 + + - name: Build RPM + run: nix develop .#rpm --command ./scripts/build-rpm.sh + + - name: Upload RPM artifact + uses: actions/upload-artifact@v3 + with: + name: prem2resolve-rpm + path: rpmbuild/RPMS/**/*.rpm diff --git a/flake.nix b/flake.nix index 481168b..cb03246 100644 --- a/flake.nix +++ b/flake.nix @@ -45,6 +45,15 @@ pkgs.ffmpeg ]; }; + + devShells.rpm = pkgs.mkShell { + buildInputs = [ + pkgs.git + pkgs.gzip + pkgs.python3 + pkgs.rpm-build + ]; + }; } ); } diff --git a/packaging/prem2resolve.spec b/packaging/prem2resolve.spec new file mode 100644 index 0000000..0134c61 --- /dev/null +++ b/packaging/prem2resolve.spec @@ -0,0 +1,32 @@ +Name: prem2resolve +Version: 0.1.0 +Release: 1%{?dist} +Summary: Convert Premiere Pro XML exports for DaVinci Resolve on Linux +License: 0BSD +BuildArch: noarch + +Source0: %{name}-%{version}.tar.gz + +BuildRequires: python3 +Requires: python3 +Requires: ffmpeg + +%description +Command-line tool that updates Adobe Premiere Pro XML exports for DaVinci Resolve +on Linux, optionally re-encoding MP4 media into Resolve-friendly MOV codecs. + +%prep +%setup -q + +%build +# No build step required for this Python script. + +%install +install -D -m 0755 premiere_to_resolve.py %{buildroot}%{_bindir}/prem2resolve + +%files +%{_bindir}/prem2resolve + +%changelog +* Thu Feb 19 2026 Danilo Reyes - 0.1.0-1 +- Initial RPM packaging diff --git a/scripts/build-rpm.sh b/scripts/build-rpm.sh new file mode 100755 index 0000000..7e27d1d --- /dev/null +++ b/scripts/build-rpm.sh @@ -0,0 +1,33 @@ +#!/usr/bin/env bash +set -euo pipefail + +ROOT_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd) +SPEC_FILE="$ROOT_DIR/packaging/prem2resolve.spec" + +if ! command -v rpmspec >/dev/null 2>&1; then + echo "rpmspec not found. Install rpm-build." >&2 + exit 1 +fi + +VERSION=$(rpmspec -q --qf '%{version}\n' "$SPEC_FILE" | head -n1) +NAME=$(rpmspec -q --qf '%{name}\n' "$SPEC_FILE" | head -n1) + +DIST_DIR="$ROOT_DIR/dist" +TOPDIR="$ROOT_DIR/rpmbuild" +TARBALL="$DIST_DIR/${NAME}-${VERSION}.tar.gz" + +mkdir -p "$DIST_DIR" "$TOPDIR/BUILD" "$TOPDIR/RPMS" "$TOPDIR/SOURCES" "$TOPDIR/SPECS" "$TOPDIR/SRPMS" + +if ! git -C "$ROOT_DIR" rev-parse --is-inside-work-tree >/dev/null 2>&1; then + echo "Not a git repository; cannot create source archive." >&2 + exit 1 +fi + +git -C "$ROOT_DIR" archive --format=tar --prefix="${NAME}-${VERSION}/" HEAD | gzip -n > "$TARBALL" + +cp "$SPEC_FILE" "$TOPDIR/SPECS/" +cp "$TARBALL" "$TOPDIR/SOURCES/" + +rpmbuild --define "_topdir $TOPDIR" -ba "$TOPDIR/SPECS/$(basename "$SPEC_FILE")" + +echo "Built RPM(s) in: $TOPDIR/RPMS"