---
name: package-release
description: Package voxtype for release. Creates deb and rpm packages from binaries. Use when building distribution packages.
user-invocable: true
allowed-tools:
- Bash
- Read
- Glob
---
# Package Release
Build distribution packages (deb, rpm) for voxtype releases.
## Prerequisites
- `fpm` - Install with `gem install fpm`
- `rpmbuild` - Install with `sudo dnf install rpm-build` or `sudo pacman -S rpm-tools`
- Pre-built binaries in `releases/${VERSION}/`
## Quick Package
If binaries already exist:
```bash
./scripts/package.sh --skip-build ${VERSION}
```
## Full Build + Package
Build binaries and create packages:
```bash
./scripts/package.sh ${VERSION}
```
## Options
| Flag | Description |
|------|-------------|
| `--skip-build` | Use existing binaries, don't rebuild |
| `--deb-only` | Build only Debian package |
| `--rpm-only` | Build only RPM package |
| `--no-validate` | Skip package validation |
| `--release N` | Set package release number (default: 1) |
| `--arch ARCH` | Target architecture: x86_64 or aarch64 |
## Output
Packages are created in `releases/${VERSION}/`:
- `voxtype_${VERSION}-1_amd64.deb`
- `voxtype-${VERSION}-1.x86_64.rpm`
## Validation
The script automatically:
1. Validates binaries for CPU instruction contamination
2. Checks deb package structure for duplicate fields
3. Verifies required control file fields
## Workflow
1. Build binaries (Docker for AVX2/Vulkan, local for AVX-512)
2. Verify binary versions match expected version
3. Run `./scripts/package.sh --skip-build ${VERSION}`
4. Test package installation in a VM or container
## Common Issues
**Binary not found:**
```
Error: Binary not found: releases/0.4.14/voxtype-0.4.14-linux-x86_64-avx2
```
Build binaries first or check the version number.
**fpm not found:**
```bash
gem install fpm
```
**Validation failed:**
Check the specific error. Usually means Docker cache is stale.