Skip to content

Commit 1de8fb1

Browse files
committed
fix metadata naming, add shellcheck requirement, remove bincache/pkgcache separation
1 parent 4ee360d commit 1de8fb1

7 files changed

Lines changed: 41 additions & 52 deletions

File tree

about.md

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,9 +43,8 @@ The main package repository with 500+ SBUILD recipes, automated CI builds, and m
4343

4444
- **July 2023**: [Toolpacks](https://github.com/Azathothas/Toolpacks) created — scripts for fetching precompiled binaries
4545
- **Nov 2023**: [Hysp](https://github.com/pwnwriter/hysp), the first package manager for Toolpacks
46-
- **Sep 2024**: pkgcache created for portable package formats (AppImage, FlatImage, etc.)
4746
- **Oct 2024**: [Soar](https://github.com/pkgforge/soar) receives its first commit
48-
- **Nov 2024**: [PkgForge](https://github.com/pkgforge) organization created, soarpkgs unifies bincache + pkgcache
47+
- **Nov 2024**: [PkgForge](https://github.com/pkgforge) organization created, soarpkgs established
4948
- **Jan 2025**: Toolpacks archived, fully replaced by soarpkgs
5049

5150
## Resources

contributing/creating-packages.md

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -51,24 +51,18 @@ Key things to remember:
5151
## Step 3: Validate
5252

5353
```bash
54-
# Install sbuild
55-
soar install sbuild
54+
# Install sbuild and shellcheck
55+
soar install sbuild shellcheck
5656
5757
# Validate your SBUILD
5858
sbuild lint ./myapp.yaml
59-
60-
# Check YAML syntax
61-
# Visit: https://www.yamllint.com/
62-
63-
# Check shell syntax
64-
# Visit: https://www.shellcheck.net/
6559
```
6660

6761
## Step 4: Test Locally
6862

6963
```bash
7064
# Run the build
71-
sbuild ./myapp.yaml
65+
sbuild build ./myapp.yaml
7266
```
7367

7468
## Step 5: Submit

repositories/custom-repos.md

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,12 @@ soar install sbuild
3939

4040
Or grab them from [sbuilder releases](https://github.com/pkgforge/sbuilder/releases).
4141

42-
Pushing to GHCR requires [oras](https://oras.land/). Install it with:
42+
Additional requirements:
43+
- [oras](https://oras.land/) — for pushing packages to GHCR
44+
- [shellcheck](https://www.shellcheck.net/) — for linting shell scripts in recipes
4345

4446
```bash
45-
soar install oras
47+
soar install oras shellcheck
4648
```
4749

4850
### 2. Build Packages
@@ -90,10 +92,7 @@ This scans your recipe directories, queries GHCR for package info, and produces
9092

9193
```
9294
metadata/
93-
├── bincache/
94-
│ └── x86_64-linux.json
95-
└── pkgcache/
96-
└── x86_64-linux.json
95+
└── x86_64-linux.json
9796
```
9897

9998
Key `sbuild meta generate` options:
@@ -104,7 +103,6 @@ Key `sbuild meta generate` options:
104103
| `--recipes` | Recipe directories to scan |
105104
| `--output` | Output directory for JSON files |
106105
| `--ghcr-owner` | GHCR owner/organization |
107-
| `--cache-type` | Generate `bincache`, `pkgcache`, or `all` (default: all) |
108106
| `--parallel` | Number of parallel workers (default: 4) |
109107

110108
### 4. Host Metadata

repositories/index.md

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -12,8 +12,7 @@ soarpkgs (github.com/pkgforge/soarpkgs)
1212
│ ├── Publishes to ghcr.io/pkgforge/*
1313
│ └── Generates metadata
1414
├── GitHub Releases
15-
│ ├── bincache-{arch}.sdb.zstd (static binaries metadata)
16-
│ ├── pkgcache-{arch}.sdb.zstd (portable packages metadata)
15+
│ ├── metadata-{arch}-linux.sdb.zstd (package metadata)
1716
│ └── Minisign signatures
1817
└── Soar fetches metadata → downloads packages from ghcr.io
1918
```
@@ -27,16 +26,13 @@ soarpkgs (github.com/pkgforge/soarpkgs)
2726
5. Metadata is signed with minisign
2827
6. Soar downloads metadata → installs packages from ghcr.io
2928

30-
## Metadata Views
29+
## Metadata
3130

32-
Metadata is split into two views:
31+
Metadata is published as a compressed SQLite database (`.sdb.zstd`) per architecture:
3332

34-
| View | Contents | URL Pattern |
35-
|---|---|---|
36-
| **bincache** | Static binaries | `soarpkgs/releases/.../bincache-{arch}-Linux.sdb.zstd` |
37-
| **pkgcache** | Portable packages (AppImage, FlatImage, etc.) | `soarpkgs/releases/.../pkgcache-{arch}-Linux.sdb.zstd` |
38-
39-
Format: compressed SQLite database (`.sdb.zstd`)
33+
```
34+
soarpkgs/releases/.../metadata-{arch}-linux.sdb.zstd
35+
```
4036

4137
Supported architectures: `x86_64-Linux`, `aarch64-Linux`, `riscv64-Linux`
4238

repositories/metadata.md

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,18 @@
11
# Metadata
22

3-
soarpkgs generates metadata for all prebuilt packages, split into two views:
4-
5-
- **bincache** — static binary metadata
6-
- **pkgcache** — portable package metadata (AppImage, FlatImage, etc.)
3+
soarpkgs generates metadata for all prebuilt packages — a single metadata file per architecture.
74

85
## URLs
96

107
Metadata is available in JSON and SQLite formats:
118

129
```
13-
https://github.com/pkgforge/soarpkgs/releases/latest/download/bincache-${HOST}.json
14-
https://github.com/pkgforge/soarpkgs/releases/latest/download/pkgcache-${HOST}.json
10+
https://github.com/pkgforge/soarpkgs/releases/latest/download/metadata-${ARCH}-linux.json.zstd
1511
```
1612

17-
Append `.zstd` for compressed versions. SQLite format uses `.sdb` / `.sdb.zstd`.
13+
Also available as `.json`, `.sdb`, or `.sdb.zstd`.
1814

19-
`${HOST}` is one of: `aarch64-Linux`, `x86_64-Linux`
15+
`${ARCH}` is one of: `aarch64`, `x86_64`
2016

2117
## Fields
2218

@@ -80,11 +76,11 @@ snapshots: "@array" // Version tags
8076

8177
```bash
8278
# List all packages
83-
curl -qfsSL "https://github.com/pkgforge/soarpkgs/releases/latest/download/bincache-$(uname -m)-$(uname -s).json" \
79+
curl -qfsSL "https://github.com/pkgforge/soarpkgs/releases/latest/download/metadata-$(uname -m)-linux.json" \
8480
| jq -r '.[] | .pkg'
8581

8682
# Search for a package
87-
curl -qfsSL "https://github.com/pkgforge/soarpkgs/releases/latest/download/bincache-$(uname -m)-$(uname -s).json" \
83+
curl -qfsSL "https://github.com/pkgforge/soarpkgs/releases/latest/download/metadata-$(uname -m)-linux.json" \
8884
| jq -r '.[] | select(.pkg | test("qbittorrent"; "i"))'
8985
```
9086

repositories/soarpkgs.md

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,6 @@ We'll help fix any issues and provide feedback. See [Creating Packages](/contrib
3030

3131
Inspired by the AUR concept but curated — packages are reviewed by maintainers before inclusion.
3232

33-
### What is bincache/pkgcache?
34-
35-
These are metadata views generated from soarpkgs:
36-
- **bincache**: prebuilt static binaries
37-
- **pkgcache**: prebuilt portable packages (AppImage, FlatImage, etc.)
38-
3933
### GLIBC vs MUSL
4034

4135
MUSL binaries use [mimalloc](https://github.com/microsoft/mimalloc) for performance parity with GLIBC. LTO and PIE optimizations are also applied.

sbuild/linting.md

Lines changed: 20 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,14 @@
11
# Linting
22

3-
The `sbuild` tool includes a built-in linter that validates SBUILD recipes before execution. It checks for required fields, correct types, and valid values.
3+
The `sbuild` tool includes a built-in linter that validates SBUILD recipes before execution. It checks for required fields, correct types, valid values, and runs [shellcheck](https://www.shellcheck.net/) on shell scripts.
4+
5+
## Prerequisites
6+
7+
- [shellcheck](https://www.shellcheck.net/) — used to validate `x_exec.run` and `x_exec.pkgver` blocks
8+
9+
```bash
10+
soar install shellcheck
11+
```
412

513
## Installation
614

@@ -19,8 +27,14 @@ sbuild lint ./myapp.yaml
1927
# Validate multiple files
2028
sbuild lint ./packages/*.yaml
2129

22-
# Validate with verbose output
23-
sbuild lint -v ./myapp.yaml
30+
# Validate in parallel
31+
sbuild lint -p 8 ./packages/*.yaml
32+
33+
# Run in pkgver mode (execute pkgver scripts)
34+
sbuild lint -P ./myapp.yaml
35+
36+
# Skip shellcheck validation
37+
sbuild lint --no-shellcheck ./myapp.yaml
2438
```
2539

2640
## What It Checks
@@ -29,8 +43,8 @@ sbuild lint -v ./myapp.yaml
2943
- **Field types**: Arrays must be arrays, strings must be strings
3044
- **Valid values**: `pkg_type` must be a recognized format, `category` must match FreeDesktop spec
3145
- **Name constraints**: `pkg`, `pkg_id`, `app_id` only allow `[a-zA-Z0-9+\-_.]`
32-
- **Shell syntax**: Validation of `x_exec.pkgver` and `x_exec.run` blocks via shellcheck
33-
- **URL format**: `src_url`, `homepage`, and `build_asset.url` entries must be valid URLs
46+
- **Shell syntax**: Validates `x_exec.pkgver` and `x_exec.run` blocks via shellcheck
47+
- **URL format**: `src_url`, `homepage` entries must be valid URLs
3448
- **Host triples**: `x_exec.host` entries must match `{arch}-{os}` format
3549

3650
## Common Errors
@@ -64,6 +78,4 @@ The `run` block must contain actual shell commands.
6478
Before submitting an SBUILD to soarpkgs:
6579

6680
1. Run `sbuild lint` — no errors
67-
2. Check YAML syntax with [yamllint](https://www.yamllint.com/)
68-
3. Check shell syntax with [ShellCheck](https://www.shellcheck.net/)
69-
4. Test the build locally with `sbuild`
81+
2. Test the build locally with `sbuild build`

0 commit comments

Comments
 (0)