Files
coop/flathub/README.md
Ren Amamiya a52e1877fe chore: add prepare flathub script (#24)
Reviewed-on: #24
Co-authored-by: Ren Amamiya <reya@lume.nu>
Co-committed-by: Ren Amamiya <reya@lume.nu>
2026-03-20 06:20:06 +00:00

3.7 KiB

Flathub Submission for Coop

This directory contains the files needed to submit Coop to Flathub.

Prerequisites

  • Flatpak installed
  • flatpak-builder installed
  • Rust/Cargo installed (for vendoring)

Quick Start

Run the preparation script from the repo root:

./script/prepare-flathub.sh

This will:

  1. Vendor all Rust dependencies (crates.io + git)
  2. Generate the metainfo.xml with proper release info
  3. Create su.reya.coop.yml - the Flatpak manifest for Flathub

Files Generated

File Purpose
su.reya.coop.yml Main Flatpak manifest (submit this to Flathub)
su.reya.coop.metainfo.xml AppStream metadata with release info
vendor.tar.gz Vendored Rust dependencies
cargo-config.toml Cargo configuration for offline builds
release-info.xml Release info snippet for metainfo

Testing Locally

Before submitting to Flathub, test the build:

cd flathub

# Build and install locally
flatpak-builder --user --install --force-clean build su.reya.coop.yml

# Test the app
flatpak run su.reya.coop

# Run the Flathub linter (must pass!)
flatpak run --command=flatpak-builder-lint org.flatpak.Builder manifest su.reya.coop.yml
flatpak run --command=flatpak-builder-lint org.flatpak.Builder repo repo

Submitting to Flathub

1. Prepare Your Release

Ensure you have:

  • Committed all changes
  • Tagged the release: git tag -a v1.0.0-beta2 -m "Release v1.0.0-beta2"
  • Pushed the tag: git push origin v1.0.0-beta2
  • Run ./script/prepare-flathub.sh to regenerate files

2. Fork and Submit

# Fork https://github.com/flathub/flathub on GitHub first

# Clone your fork (use the new-pr branch!)
git clone --branch=new-pr git@github.com:YOUR_USERNAME/flathub.git
cd flathub

# Create a new branch
git checkout -b su.reya.coop

# Copy ONLY the manifest file from your project
cp /path/to/coop/flathub/su.reya.coop.yml .

# Commit and push
git add su.reya.coop.yml
git commit -m "Add su.reya.coop"
git push origin su.reya.coop

3. Open Pull Request

  1. Go to your fork on GitHub
  2. Click "Compare & pull request"
  3. Important: Set base branch to new-pr (not master!)
  4. Fill in the PR template
  5. Submit and wait for review

What Happens Next?

  1. Flathub's automated CI will build your app
  2. A maintainer will review your submission
  3. Once approved, a new repo flathub/su.reya.coop will be created
  4. You'll get write access to maintain the app
  5. Future updates: Push new commits to flathub/su.reya.coop

Updating the App

To release a new version:

  1. Update version in workspace Cargo.toml
  2. Tag the new release: git tag -a v1.0.0-beta3 -m "Release v1.0.0-beta3"
  3. Push the tag: git push origin v1.0.0-beta3
  4. Run ./script/prepare-flathub.sh to regenerate
  5. Clone the flathub repo: git clone https://github.com/flathub/su.reya.coop.git
  6. Update the manifest with new commit/tag and hashes
  7. Submit PR to flathub/su.reya.coop

Troubleshooting

Build fails with "network access not allowed"

  • Make sure CARGO_NET_OFFLINE=true is set in the manifest
  • Ensure vendor.tar.gz is properly extracted before building

Linter complains about metainfo

  • Ensure su.reya.coop.metainfo.xml has at least one <release> entry
  • Check that screenshots are accessible URLs

Missing dependencies

  • If new git dependencies are added, re-run prepare-flathub.sh
  • The script vendors all dependencies from Cargo.lock

Resources