Enhanced build system

Description

Onionspray needs a stateful update mechanism.

This would allow for better build and upgrade procedures.

In special, it makes easier to achieve idempotency for configuration management such as Onionspray Ansible Role.

Tasks

  • Build procedure:
    • Keep per platform build info in files (!114 (merged)).
    • Keep per dependency build info files (Tor and OpenResty).
    • Try to determine platform automatically (!119 (merged)).
    • Implement simpler build commands: ./onionspray <build|deps|compile> (!119 (merged)).
    • Don't build if already built (but accept --force). Onionspray should only build if platform or dependency versions changed (!116 (merged)).
    • Reflect the updates in Onionspray Ansible Role (tpo/onion-services/ansible/onionspray-role#1 (closed)).
  • Upgrade procedure:
    • Implement a simpler upgrade procedure: ./onionspray <update|upgrade> (!119 (merged)).
    • Optionally add a command to list available binaries/versions (Tor and NGINX). This is already done by ./onionspray version.
    • Optionally implement a command to check if binaries are already on their latest versions (!120 (merged)).
    • Reflect the updates in Onionspray Ansible Role (tpo/onion-services/ansible/onionspray-role#1 (closed)).
  • Documentation:
    • Update the tutorial (!121 (merged)).
    • Update the install documentation (!121 (merged)).
    • Update the upgrade documentation (!121 (merged)).

Time estimation

  • Complexity: small (1 day)
  • Uncertainty: low (x1.1)
  • Reference (adapted)
Edited Sep 11, 2025 by Silvio Rhatto
Assignee Loading
Time tracking Loading