# Bundled venv contains pre-compiled .so files — suppress debuginfo generation %global debug_package %{nil} %define __strip /bin/true Name: forge Version: 0.1.0 Release: 1%{?dist} Summary: AI-powered SDLC orchestrator License: MIT URL: https://github.com/forge-sdlc/forge Source0: forge-%{version}.tar.gz BuildRequires: python3 >= 3.11 BuildRequires: python3-pip BuildRequires: git BuildRequires: systemd-rpm-macros Requires: podman Requires: git Recommends: redis Requires(pre): shadow-utils %description Forge is an AI-powered SDLC orchestrator that automates software development workflows using LangGraph, FastAPI, and Claude. It processes Jira tickets through a multi-stage workflow: PRD generation, spec writing, epic decomposition, task implementation via ephemeral Podman containers, and automated PR creation with CI management. %prep %setup -q %build python3 -m venv venv venv/bin/pip install --upgrade pip --no-index --find-links=vendor/ --quiet venv/bin/pip install --no-index --find-links=vendor/ . --quiet %install # Application venv mkdir -p %{buildroot}/usr/lib/forge cp -a venv %{buildroot}/usr/lib/forge/venv # Default skills cp -a skills %{buildroot}/usr/lib/forge/skills # Container image build context mkdir -p %{buildroot}/usr/lib/forge/containers cp -a containers/. %{buildroot}/usr/lib/forge/containers/ # systemd units install -D -m 644 packaging/forge-api.service \ %{buildroot}%{_unitdir}/forge-api.service install -D -m 644 packaging/forge-worker.service \ %{buildroot}%{_unitdir}/forge-worker.service # Config install -D -m 640 packaging/forge.env.example \ %{buildroot}/etc/forge/forge.env.example # Runtime directory install -d -m 750 %{buildroot}/var/lib/forge # Wrapper script install -d %{buildroot}%{_bindir} printf '#!/bin/sh\nexec /usr/lib/forge/venv/bin/forge "$@"\n' \ > %{buildroot}%{_bindir}/forge chmod 755 %{buildroot}%{_bindir}/forge %pre getent group forge >/dev/null || groupadd -r forge getent passwd forge >/dev/null || \ useradd -r -g forge -d /var/lib/forge -s /bin/bash \ -c "Forge service account" forge # Rootless Podman requires subuid/subgid entries for the service user grep -q "^forge:" /etc/subuid 2>/dev/null || \ echo "forge:100000:65536" >> /etc/subuid grep -q "^forge:" /etc/subgid 2>/dev/null || \ echo "forge:100000:65536" >> /etc/subgid exit 0 %post %systemd_post forge-api.service forge-worker.service %preun %systemd_preun forge-api.service forge-worker.service %postun %systemd_postun_with_restart forge-api.service forge-worker.service %files %license LICENSE %doc README.md /usr/lib/forge/ %{_bindir}/forge %{_unitdir}/forge-api.service %{_unitdir}/forge-worker.service %config(noreplace) /etc/forge/forge.env.example %attr(750, forge, forge) /var/lib/forge %changelog * Tue Apr 29 2026 Forge Team - 0.1.0-1 - Initial RPM release