Skip to content

Ewoks install bootstrap - #348

Draft
woutdenolf wants to merge 4 commits into
mainfrom
ewoks_install_bootstrap
Draft

woutdenolf wants to merge 4 commits into
mainfrom
ewoks_install_bootstrap

Conversation

@woutdenolf

@woutdenolf woutdenolf commented Oct 8, 2026 •

Copy link
Copy Markdown
Member

Closes #341.

Install the environment of a workflow with only a package manager, no ewoks needed:

curl -LsSf https://ewoks.readthedocs.io/en/stable/ewoks-install.sh | sh -s -- demo.json --package-manager-name uv

What changes

  • New bootstrap scripts ewoks-install.sh (Linux/macOS) and ewoks-install.ps1 (Windows, or PowerShell anywhere):
    • Create a cached environment with the ewoks version (and engine) of the workflow.
    • Run ewoks install in it with the remaining arguments.
    • --install-package-manager installs uv, pixi, poetry or conda when missing.
    • --print-command only prints the command.
  • Workflow requirements now also record the engine that saved the workflow.
  • ewoks install prints an execute command that works without ewoks outside the environment.

Review guide

  1. Python side: requirements metadata and CLI output.
  2. The bootstrap scripts, their tests and the CI job tests-package-manager-install (Linux, macOS, Windows).
  3. Docs.

AI Disclosure

  • No AI used
  • AI tool Claude used to create the shell scripts, docs and tests.

@woutdenolf
woutdenolf requested a review from a team October 8, 2026 12:58
@woutdenolf

woutdenolf commented Oct 9, 2026 •

Copy link
Copy Markdown
Member Author

Print the command to execute ewoks from another terminal.

Edit: done.

@woutdenolf
woutdenolf removed the request for review from a team October 9, 2026 12:41
@woutdenolf
woutdenolf marked this pull request as draft October 9, 2026 12:41
@codecov

codecov Bot commented Oct 9, 2026 •

Copy link
Copy Markdown

Codecov Report

❌ Patch coverage is 71.42857% with 10 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
src/ewoks/__main__.py 30.76% 9 Missing ⚠️
src/ewoks/_engines.py 87.50% 1 Missing ⚠️

📢 Thoughts on this report? Let us know!

@woutdenolf
woutdenolf force-pushed the ewoks_install_bootstrap branch 6 times, most recently from 51b86e4 to 9b44994 Compare October 10, 2026 12:43
…e command

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@woutdenolf
woutdenolf force-pushed the ewoks_install_bootstrap branch from 9b44994 to 70665cd Compare October 10, 2026 13:14
woutdenolf and others added 2 commits October 10, 2026 15:19
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@woutdenolf
woutdenolf force-pushed the ewoks_install_bootstrap branch from 70665cd to c5a956b Compare October 10, 2026 13:19
Neither "=" nor "@" can be part of a distribution name or version.

  case                     name
  -----------------------  -----------------------------------------
  ewoks only               ewoks=7.0.0@python=3.12
  with engine              ewoks=7.0.0@ewoksorange=6.0.0@python=3.12
  --bootstrap-requirement  custom=<hash>@python=3.12
  no ewoks version         ewoks=latest@python=3.12
@woutdenolf

woutdenolf commented Oct 12, 2026 •

Copy link
Copy Markdown
Member Author

@loichuder Maybe we should not stick to the oneliner approach?

curl -LsSf https://ewoks.readthedocs.io/en/stable/ewoks-install.sh | sh -s -- demo.json --package-manager-name uv

This does four this:

  • download the bootstrap script
  • create the bootstrap environment
  • run ewoks install in the bootstrap environment (opt-out with the --print-command argument) which create the final enviroment (unless --in-place), ewoks install also prints how the cleanup the environment
  • print the pixi run ewoks execute command (or whatever it is)

Especially in terms of arguments this might be confusing. On the other hand for people who do not care and just want it to be done, the oneliner for installation is more convenient.

@loichuder

loichuder commented Oct 12, 2026 •

Copy link
Copy Markdown
Member

Since the oneliner is a convenience thing, I would not go for parametrization.

Either you use the oneliner and you don't have to touch jack. Or you wish to have more control and in this case, you do use the "classical" approach: install ewoks, run ewoks install, etc.

This branch has not been deployed

No deployments
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.

Ewoks install: find way to bootstrap

2 participants