[PR #5016] [CLOSED] fix(hopper): repair embedded Python runtime readiness #6734

Closed
opened 2026-11-01 21:42:39 +00:00 by bsakaguchi · 0 comments
Owner

📋 Pull Request Information

Original PR: https://github.com/morluto/rea/pull/5016
Author: @therahimulislam
Created: 10/18/2026
Status: ❌ Closed

Base: main ← Head: therahimulislam-fix/5015-hopper-python-bootstrap


📝 Commits (8)

  • 9956e49 fix(hopper): install embedded Python runtime
  • ff6817b fix(hopper): repair embedded Python runtime readiness
  • a6d31fe test(hopper): cover embedded runtime repair
  • 203a332 fix(hopper): harden embedded Python readiness
  • 16b8abb fix(hopper): bind runtime dependencies to release
  • 995c199 fix(hopper): avoid repairing unknown runtimes
  • 9eaaecf fix(hopper): close unsupported runtime paths
  • cd42592 fix(hopper): probe embedded Python through loader

📊 Changes

39 files changed (+840 additions, -219 deletions)

View changed files

📝 docs/installation.md (+1 -1)
📝 docs/user-visible-errors.csv (+2 -2)
📝 src/application/Doctor.test.ts (+1 -1)
📝 src/application/Doctor.ts (+14 -0)
📝 src/application/DoctorDiagnostics.ts (+16 -1)
📝 src/application/HopperReleaseFeed.ts (+1 -0)
📝 src/application/LinuxHopper.test.ts (+109 -6)
📝 src/application/LinuxHopper.ts (+79 -4)
📝 src/application/Setup.configuration.test.ts (+41 -0)
📝 src/application/Setup.fixture.ts (+23 -0)
📝 src/application/Setup.recovery.test.ts (+1 -1)
📝 src/application/SetupHost.ts (+1 -1)
📝 src/application/SetupInstallFailure.test.ts (+9 -0)
📝 src/application/SetupInstallFailure.ts (+9 -0)
📝 src/application/SetupPlan.ts (+14 -3)
📝 src/doctorRuntime.test.ts (+131 -2)
📝 src/doctorRuntime.ts (+72 -1)
📝 website/locales/ar/messages.po (+16 -10)
📝 website/locales/de/messages.po (+16 -10)
📝 website/locales/el/messages.po (+16 -10)

...and 19 more files

📄 Description

Summary

Fixes #5015.

Linux Hopper can finish analyzing a file but fail when it starts its embedded Python bridge because the required Python 3.12 shared library is missing.

What was wrong

The earlier fix added the runtime package for new Hopper installations, but existing installations could still look healthy because readiness checked Xvfb and launcher libraries without checking Hopper's embedded Python library. Ubuntu releases were also handled too broadly for the verified Python ABI package, and future Hopper feed rows could otherwise be installed with an unverified runtime assumption.

What changed

  • Added a separate embedded-Python readiness check and used failures to select Hopper repair.
  • Probe the matching 64-bit embedded Python library through the loader environment inherited by Hopper, including LD_LIBRARY_PATH, rather than relying on ldconfig cache membership.
  • Limited automatic repair to actionable missing-dependency results; unknown runtime status no longer triggers reinstall.
  • Bound runtime dependencies to an explicit verified Hopper release mapping: 6.6.0 uses libpython3.12.so.1.0.
  • Rejected future or unmapped Hopper releases before download or package mutation with distinct recovery guidance.
  • Limited RPM runtime remediation to verified Fedora 41+ and Nobara 44+ hosts.
  • Limited automated Ubuntu Hopper setup to verified Ubuntu 24.04 and selected libpython3.12t64 only there.
  • Kept the existing Arch Linux package behavior unchanged.
  • Updated installation, recovery, and public get-started guidance to match the verified Ubuntu support range; regenerated translation catalogs.
  • Added regression coverage for loader-aware runtime checks, restricted PATH, unknown repair gating, unsupported package mappings, release/package selection, unmapped release rejection, Ubuntu/Fedora package plans, and existing-install repair.

Validation

  • Focused Hopper, setup, doctor, and runtime tests: 86 tests passed
  • Hopper release-feed tests: 16 passed
  • Hopper publisher boundary tests: 10 executed, 20 skipped by platform/fixture gates
  • npm run check:fast passed
  • npm run format:check passed
  • git diff --check passed
  • Website translation extraction completed and website checks validated 1,728 source messages and 399 generated pages

The website check could not prepare its sharing image because native Cairo (libcairo) is unavailable in the macOS environment. Live Linux package installation, package-repository availability, and Hopper 6.6.0 bootstrap testing were not available in this environment.


🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.

## 📋 Pull Request Information **Original PR:** https://github.com/morluto/rea/pull/5016 **Author:** [@therahimulislam](https://github.com/therahimulislam) **Created:** 10/18/2026 **Status:** ❌ Closed **Base:** `main` ← **Head:** `therahimulislam-fix/5015-hopper-python-bootstrap` --- ### 📝 Commits (8) - [`9956e49`](https://github.com/morluto/rea/commit/9956e4944a749fc3cb65827847fd43e44892cd03) fix(hopper): install embedded Python runtime - [`ff6817b`](https://github.com/morluto/rea/commit/ff6817b7c59f1db7971e3248b764e4ba134004b5) fix(hopper): repair embedded Python runtime readiness - [`a6d31fe`](https://github.com/morluto/rea/commit/a6d31fe930122860f9969e346674fb1b8dcd7745) test(hopper): cover embedded runtime repair - [`203a332`](https://github.com/morluto/rea/commit/203a332b32f7d5a9f5cc4fc236f6cdb3cb6b80b7) fix(hopper): harden embedded Python readiness - [`16b8abb`](https://github.com/morluto/rea/commit/16b8abb7e3d58bc3187eaa6cba04fa4b26461839) fix(hopper): bind runtime dependencies to release - [`995c199`](https://github.com/morluto/rea/commit/995c199553a00446896454754b1cbf1b40cbe35a) fix(hopper): avoid repairing unknown runtimes - [`9eaaecf`](https://github.com/morluto/rea/commit/9eaaecfe2f354020dc99e63c86e6750752cca79b) fix(hopper): close unsupported runtime paths - [`cd42592`](https://github.com/morluto/rea/commit/cd42592a4b560354bd2055528dce9aee55397874) fix(hopper): probe embedded Python through loader ### 📊 Changes **39 files changed** (+840 additions, -219 deletions) <details> <summary>View changed files</summary> 📝 `docs/installation.md` (+1 -1) 📝 `docs/user-visible-errors.csv` (+2 -2) 📝 `src/application/Doctor.test.ts` (+1 -1) 📝 `src/application/Doctor.ts` (+14 -0) 📝 `src/application/DoctorDiagnostics.ts` (+16 -1) 📝 `src/application/HopperReleaseFeed.ts` (+1 -0) 📝 `src/application/LinuxHopper.test.ts` (+109 -6) 📝 `src/application/LinuxHopper.ts` (+79 -4) 📝 `src/application/Setup.configuration.test.ts` (+41 -0) 📝 `src/application/Setup.fixture.ts` (+23 -0) 📝 `src/application/Setup.recovery.test.ts` (+1 -1) 📝 `src/application/SetupHost.ts` (+1 -1) 📝 `src/application/SetupInstallFailure.test.ts` (+9 -0) 📝 `src/application/SetupInstallFailure.ts` (+9 -0) 📝 `src/application/SetupPlan.ts` (+14 -3) 📝 `src/doctorRuntime.test.ts` (+131 -2) 📝 `src/doctorRuntime.ts` (+72 -1) 📝 `website/locales/ar/messages.po` (+16 -10) 📝 `website/locales/de/messages.po` (+16 -10) 📝 `website/locales/el/messages.po` (+16 -10) _...and 19 more files_ </details> ### 📄 Description ## Summary Fixes #5015. Linux Hopper can finish analyzing a file but fail when it starts its embedded Python bridge because the required Python 3.12 shared library is missing. ## What was wrong The earlier fix added the runtime package for new Hopper installations, but existing installations could still look healthy because readiness checked Xvfb and launcher libraries without checking Hopper's embedded Python library. Ubuntu releases were also handled too broadly for the verified Python ABI package, and future Hopper feed rows could otherwise be installed with an unverified runtime assumption. ## What changed - Added a separate embedded-Python readiness check and used failures to select Hopper repair. - Probe the matching 64-bit embedded Python library through the loader environment inherited by Hopper, including `LD_LIBRARY_PATH`, rather than relying on `ldconfig` cache membership. - Limited automatic repair to actionable missing-dependency results; unknown runtime status no longer triggers reinstall. - Bound runtime dependencies to an explicit verified Hopper release mapping: 6.6.0 uses `libpython3.12.so.1.0`. - Rejected future or unmapped Hopper releases before download or package mutation with distinct recovery guidance. - Limited RPM runtime remediation to verified Fedora 41+ and Nobara 44+ hosts. - Limited automated Ubuntu Hopper setup to verified Ubuntu 24.04 and selected `libpython3.12t64` only there. - Kept the existing Arch Linux package behavior unchanged. - Updated installation, recovery, and public get-started guidance to match the verified Ubuntu support range; regenerated translation catalogs. - Added regression coverage for loader-aware runtime checks, restricted `PATH`, unknown repair gating, unsupported package mappings, release/package selection, unmapped release rejection, Ubuntu/Fedora package plans, and existing-install repair. ## Validation - Focused Hopper, setup, doctor, and runtime tests: 86 tests passed - Hopper release-feed tests: 16 passed - Hopper publisher boundary tests: 10 executed, 20 skipped by platform/fixture gates - `npm run check:fast` passed - `npm run format:check` passed - `git diff --check` passed - Website translation extraction completed and website checks validated 1,728 source messages and 399 generated pages The website check could not prepare its sharing image because native Cairo (`libcairo`) is unavailable in the macOS environment. Live Linux package installation, package-repository availability, and Hopper 6.6.0 bootstrap testing were not available in this environment. --- <sub>🔄 This issue represents a GitHub Pull Request. It cannot be merged through Gitea due to API limitations.</sub>
bsakaguchi 2026-11-01 21:42:39 +00:00
bsakaguchi changed title from [PR #5016] [CLOSED] fix(hopper): repair embedded Python runtime readiness to [PR #5016] fix(hopper): repair embedded Python runtime readiness 2026-11-03 13:34:01 +00:00
bsakaguchi changed title from [PR #5016] fix(hopper): repair embedded Python runtime readiness to [PR #5016] [CLOSED] fix(hopper): repair embedded Python runtime readiness 2026-11-03 14:35:48 +00:00
bsakaguchi changed title from [PR #5016] [CLOSED] fix(hopper): repair embedded Python runtime readiness to [PR #5016] fix(hopper): repair embedded Python runtime readiness 2026-11-03 19:45:52 +00:00
bsakaguchi changed title from [PR #5016] fix(hopper): repair embedded Python runtime readiness to [PR #5016] [CLOSED] fix(hopper): repair embedded Python runtime readiness 2026-11-03 20:47:58 +00:00
Sign in to join this conversation.
No milestone
No project
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set.

Reference
morluto/rea#6734
No description provided.