Migrate Forgejo from Homebrew to source build #316

Merged
eblume merged 3 commits from build-forgejo-from-source into main 2026-03-28 08:19:24 -07:00
2 changed files with 10 additions and 10 deletions
Showing only changes of commit de8a08ca2d - Show all commits

Fix build instructions: never use make forgejo directly

make forgejo rebuilds with empty TAGS, stripping SQLite support.
Updated docs and role to use mise run build instead, which wraps
make build with the correct tags and creates the hardlink.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Erich Blume 2026-03-28 08:16:19 -07:00

View file

@ -9,13 +9,10 @@
# 2. Add forge mirror as secondary remote:
# ssh indri 'cd ~/code/3rd/forgejo && git remote add forge https://forge.eblu.me/mirrors/forgejo.git'
#
# 3. Set up Go and Node via mise:
# ssh indri 'cd ~/code/3rd/forgejo && mise use go@1.25 node@24'
# 3. Build (mise.toml handles Go/Node versions and build tags):
# ssh indri 'cd ~/code/3rd/forgejo && mise run build'
#
# 4. Build:
# ssh indri 'cd ~/code/3rd/forgejo && TAGS="bindata timetzdata sqlite sqlite_unlock_notify" mise x -- make build && mise x -- make forgejo'
#
# 5. Run ansible to deploy config and LaunchAgent
# 4. Run ansible to deploy config and LaunchAgent
#
# Secrets (lfs_jwt_secret, internal_token, oauth2_jwt_secret) are fetched
# from 1Password in the playbook pre_tasks.
@ -30,7 +27,7 @@
msg: |
Forgejo binary not found at {{ forgejo_binary }}.
Please build from source first:
ssh indri 'cd ~/code/3rd/forgejo && TAGS="bindata timetzdata sqlite sqlite_unlock_notify" mise x -- make build && mise x -- make forgejo'
ssh indri 'cd ~/code/3rd/forgejo && mise run build'
when: not forgejo_binary_stat.stat.exists
- name: Ensure forgejo config directory exists

View file

@ -45,11 +45,14 @@ ssh indri 'cd ~/code/3rd/forgejo && git remote add forge https://forge.eblu.me/m
```fish
ssh indri 'cd ~/code/3rd/forgejo && git fetch --tags && git checkout v14.0.3'
ssh indri 'cd ~/code/3rd/forgejo && mise use go@1.25 node@24'
ssh indri 'cd ~/code/3rd/forgejo && TAGS="bindata timetzdata sqlite sqlite_unlock_notify" mise x -- make build && mise x -- make forgejo'
ssh indri 'cd ~/code/3rd/forgejo && mise run build'
```
Build tags: `bindata` (embed assets), `timetzdata` (embed timezone data), `sqlite sqlite_unlock_notify` (SQLite support). The `make build` target produces `./gitea`; `make forgejo` creates a `./forgejo` hardlink.
The `build` mise task (defined in the repo's `mise.toml`) runs `make build` with the correct tags and creates the `./forgejo` hardlink. It uses `go@1.25.8` and `node@24` as configured by `mise use`.
**WARNING:** Do NOT use `make forgejo` directly — it rebuilds with empty TAGS, stripping SQLite support. Always use `mise run build` or pass TAGS explicitly to `make build` and `ln -f gitea forgejo` afterwards.
Build tags: `bindata` (embed assets), `timetzdata` (embed timezone data), `sqlite sqlite_unlock_notify` (SQLite support).
After building, run `mise run provision-indri -- --tags forgejo` to deploy the config and restart the service.