Skip to content

Release 6.0.2 - #324

Merged
Dramelac merged 5 commits into
masterfrom
dev
Oct 17, 2026
Merged

Dramelac merged 5 commits into
masterfrom
dev

Conversation

@Dramelac

Copy link
Copy Markdown
Member

Exegol wrapper 6.0.2

Description

A new helper is now available with exegol activate when a license is available but the exegol directory is under /root instead of the user's home directory. This migration is optional but if needed can be automated.

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

It introduces a large, security-sensitive migration mechanism and changes core config/env resolution paths, which warrants careful human validation beyond automated review.

1 open issue
What changed in this PR

This PR releases Exegol wrapper 6.0.2 by adding a sudo-aware configuration directory migration flow (legacy /root/.exegol → ~user/.exegol) and centralizing sudo user/environment resolution so Exegol can correctly operate when invoked via sudo.

Changes:

  • Add a secure filesystem migration engine plus an interactive manager to propose/apply the /root → user-home config migration during exegol activate.
  • Introduce SudoInfo and update path/environment resolution across the codebase to be sudo-invoker aware (instead of root’s HOME).
  • Improve operational behavior in shell completion mode (avoid writing/upgrading config) and add explicit handling for Docker request timeouts.
File Description
exegol/​utils/​SignalHandler.py Adds “reason” support for deferred Ctrl+C messaging in critical sections.
exegol/​utils/​SessionHandler.py Improves support logging with explicit license folder origin and safe Rich markup escaping.
exegol/​utils/​LocalDatastore.py Adds close/reopen support and exposes datastore path for migration/debug flows.
exegol/​utils/​DataFileUtils.py Prevents config directory/file writes/upgrades in argcomplete completion mode; switches to sudo-aware path expansion.
exegol/​utils/​ConfigDirMigration.py New no-follow, fd-walk filesystem migration engine for legacy root config directories.
exegol/​sentinel/​SentinelProfileManager.py Uses sudo-aware expansion for local source paths.
exegol/​profile/​ProfileUserConfigTier.py Uses sudo-aware home resolution when validating host paths.
exegol/​profile/​ContainerProfileManager.py Uses sudo-aware expansion for local source paths.
exegol/​model/​ExegolContainer.py Adds ReadTimeout handling for Docker operations and related logging.
exegol/​model/​ContainerConfig.py Uses sudo-aware expansion for user-entered paths (workspace, VPN, volumes, etc.).
exegol/​manager/​UpdateManager.py Uses sudo-aware expansion when resolving local component source paths.
exegol/​manager/​ExegolManager.py Hooks config-dir location checks/migration into activate; adds debug banner path reporting.
exegol/​manager/​ConfigDirManager.py New interactive manager that detects legacy root config and drives migration/ownership repairs.
exegol/​console/​cli/​SentinelCompleter.py Uses sudo-aware expansion for completion-time profile root discovery.
exegol/​console/​cli/​ExegolCompleter.py Uses sudo-aware expansion when completing build/profile paths.
exegol/​config/​UserConfig.py Avoids expensive/dynamic network probing during completion mode; uses sudo-aware path expansion.
exegol/​config/​SudoInfo.py New module to resolve sudo-invoker identity, home, and parent environment safely.
exegol/​config/​EnvInfo.py Delegates sudo-related environment/shell logic to SudoInfo.
exegol/​config/​ConstantConfig.py Bumps version to 6.0.2; adds EXEGOL_HOME override and robust config-dir resolution/validation.

Review effort: Lite

Comment thread exegol/model/ExegolContainer.py Resolved
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🔵 Needs a closer look

It adds ~1,150 lines of new code performing a destructive, root-privileged filesystem migration of user config/license data that cannot be exercised in this environment and warrants careful human review.

No open issues 🎉

1 previously missed issue

In code that hasn't changed since last review

Medium severity Dead raise after logger.critical() in ReadTimeout handling

exegol/​model/​ExegolContainer.py:204

The raise here is unreachable: logger.critical() always terminates the process (it calls exit(1), or raises RuntimeError in "raise" mode — see ExeLog.py:94-97), so it never returns to execute the following raise. The "retry later" wording suggests you intend to propagate the ReadTimeout so a higher level can recover, which is the pattern used for the same exception in rename_as_old below (logger.error(...) then raise). Consider using logger.error here so the raise actually re-raises the timeout; otherwise drop the dead raise.

This issue also appears on line 410 of the same file.

1 resolved since last review

Review effort: Balanced

@Dramelac
Dramelac merged commit a65effe into master Oct 17, 2026
21 checks passed

This branch was successfully deployed

1 active deployment
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.

3 participants