Contributing
Getting Startedβ
- Fork the repository
- Clone your fork:
git clone https://github.com/YOUR_USER/github-copr.git - Create a feature branch:
git checkout -b my-feature
Adding a New Packageβ
1. Create the Source Directoryβ
mkdir -p src/my-package-1.0.0
2. Create the Spec Fileβ
Create src/my-package.spec:
Name: my-package
Version: 1.0.0
Release: 1%{?dist}
Summary: My package description
License: MIT
URL: https://example.com
Source0: %{name}-%{version}.tar.gz
%description
My package description.
%prep
%autosetup
%build
# Build commands
%install
# Install commands
%files
# Files to package
%changelog
* Thu Mar 12 2026 Your Name <you@example.com> - 1.0.0-1
- Initial package
3. Create Source Filesβ
Add your source code to src/my-package-1.0.0/
4. Create Tarballβ
cd src
tar -czf my-package-1.0.0.tar.gz my-package-1.0.0
5. Test Buildβ
./scripts/build-local.sh my-package fedora-43-x86_64
6. Commit and Pushβ
git add src/
git commit -m "Add my-package"
git push origin main
Adding New Build Targetsβ
To add support for a new distribution:
-
Check if mock-core-configs supports it:
docker run --rm fedora:43 bash -c "dnf install -y mock-core-configs && ls /etc/mock/" | grep <distro> -
Update
justfilewith new target recipes -
Update
.github/workflows/build.ymlwith new targets -
Test:
just build <new-target>
Code Styleβ
- Shell scripts: Use
set -euo pipefail - Python: Follow PEP 8
- YAML: 2 spaces indentation
- Commit messages: Imperative mood ("Add feature" not "Added feature")
Testingβ
Before submitting a PR:
# Test all x86_64 targets
just build-x86_64
# Test specific target
./scripts/build-local.sh <package> <target>
# Verify GPG setup
just verify-gpg
Pull Request Processβ
- Update documentation if needed
- Test locally if possible
- Push to your fork
- Open PR with clear description
- Ensure CI passes
Package Naming Conventionsβ
- Use lowercase, hyphens:
my-packagenotMyPackage - Match upstream name when possible
- Version in spec should match upstream release
- Use semantic versioning
Securityβ
- Never commit secrets or keys
- Use GitHub Secrets for sensitive data
- GPG keys should be in
.gitignore