Skip to content

Port Web2py appliance to TurnKey 19 - #12

Open
lirazsiri wants to merge 6 commits into
masterfrom
pr/v19-trixie
Open

Port Web2py appliance to TurnKey 19#12
lirazsiri wants to merge 6 commits into
masterfrom
pr/v19-trixie

Conversation

@lirazsiri

Copy link
Copy Markdown
Member

Summary

  • migrate the Web2py appliance to Debian 13 Trixie;
  • update the application and integration to the supported source described below;
  • preserve normal firstboot credentials and the appliance identity-defining behavior;
  • document and verify the supported update path;
  • add focused v19 appliance acceptance coverage.

Source and update path

  • Installed version: Web2py 3.3.3 on Python 3.13.5
  • Source: official Web2py v3.3.3 Git tag at a729b848ff6b6471a2792cae8156bf087afc2456 with pinned official submodules
  • Updater channel: official supported Web2py 3.x Git tags
  • Updater evidence: up to date at Web2py 3.3.3 commit a729b848ff6b6471a2792cae8156bf087afc2456
  • Updater procedure: web2py-update --check; web2py-update --apply --dry-run
  • Integrity evidence: main commit a729b848ff6b6471a2792cae8156bf087afc2456 with pinned PyDAL, Rocket3 and YATL submodule commits

Validation

  • Exact run: 20260826t031723z-720-6453
  • Report SHA-256: 0b617c4cde69b68890475d1324f266c8751e6d59a77409e071475e03728e341f
  • Runtime checks: normal init; Apache HTTP and HTTPS sample; firstboot administrator login; Web2py DAL and MariaDB readback
  • Verdict: PASS

The exact behavioral build used source commit 0a200200f777813c18b50c2635a10fa5e3a57edf. The accepted PR tip adds the reviewed evidence and testing-documentation delta recorded in the commit history.

Known limitation: Docker runtime does not exercise installer, kernel, or hardware behavior. The Docker kernel rejects the appliance hostname firstboot call and systemd-sysctl unit; application services are checked explicitly.

The Docker acceptance exercises the normal systemd and firstboot path, primary authentication, identity-defining behavior, persistence, required services, package provenance, and updater evidence. It deliberately does not repeat ISO or installer testing because the Core/TKLDev v19 format path was exercised separately.

Install the supported Web2py 3.3.3 release from its exact official tag and submodule commits while retaining the appliance's Apache WSGI and HTTPS administration behavior. Add MariaDB-backed runtime proof, safer firstboot password handling, and a supervised updater constrained to official Web2py 3.x tags.

Document the v19 acceptance boundary and add focused tests for firstboot administrator access, the welcome application, database connectivity, source integrity, and update discovery. Verified with shell syntax, Python parsing, shellcheck, and diff hygiene before appliance acceptance.
MySQL cursor fetches return a tuple of rows, while the build and acceptance checks required a list. Assert the exact row count and exact scalar value instead so the checks preserve the database-connectivity contract across the driver's native container type.

The first exact Wave 2 build reached this DAL query after source and submodule integrity checks passed; it failed only on the prior container-type comparison.
The disposable acceptance runtime inspects the Web2py source as root while the installed framework is correctly owned by www-data. Git therefore rejects the pinned submodule checks as dubious ownership even though the main repository check already carries a per-command trust exception.

Scope safe.directory to each read-only submodule revision check. This preserves Git ownership protection globally while allowing acceptance to verify the exact PyDAL, Rocket3, and YATL commits installed by the appliance.
The focused migration now has a retained passing Docker run, so replace the testing placeholder with the exact run, source, harness, runtime, update, and cleanup evidence. Include the lock timeout and Docker storage limit in the documented command so it reproduces the validated Wave 2 invocation.
The updater changed the www-data-owned source tree and then queried its submodules as root. Git rejected those provenance reads as dubious ownership, which could leave updated code paired with stale metadata.

Run the three read-only revision queries as www-data, matching the checkout and submodule operations without broadening Git trust. Add a disposable actual-apply fixture that advances local tagged repositories and verifies revisions, clean worktrees, provenance output, and Apache recovery.

Verified with Bash syntax checks, shellcheck, diff hygiene, trust inspection, and the disposable apply fixture.
The acceptance document still named the pre-fix run and source, so it did not identify the review candidate that resolved the updater ownership failure.

Record the retained PASS run, source and harness commits, archive and tree hashes, disposable actual-apply proof, and the nonblocking curl argument exposure. This keeps the documented evidence aligned with the artifacts available for independent review.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant