-
Notifications
You must be signed in to change notification settings - Fork 3
Description
Currently ci-fusesoc-action uses container based action (https://docs.github.com/en/actions/creating-actions/creating-a-docker-container-action) to run fusesoc which makes easy to pull in fusesoc + all the required dependencies into the workflow environment.
But sometime projects like https://github.com/GuzTech/misato, leverage additional generators (in misato's case: amaranth) that require to have their dependencies installed prior to running fusesoc, see: https://github.com/GuzTech/misato/blob/main/.github/workflows/openlane.yml#L19
This makes it challenging to compose with additional workflow steps, because the (contained) ci-fusesoc-action python environment into which fusesoc runs is different from the main workflow's one and wouldn't have the python package installed from previous steps, see https://github.com/proppy/misato/blob/f81bdeb1592000aaf70e7ed9af5071fe5cbc1136/.github/workflows/openlane.yml#L15 which currently failes with a ModuleNotFoundError: No module named \'amaranth\' error: https://github.com/proppy/misato/runs/4897990390?check_suite_focus=true
Since fusesoc thru https://github.com/olofk/edalize/blob/master/scripts/el_docker is already capable of launching tools packaged as container, one possible way to address this would be to provide a composite variant of the action (https://docs.github.com/en/actions/creating-actions/creating-a-composite-action), and delegate the container management to fusesoc itself if the corresponding tools requires it.
I made a proof of concept here https://github.com/proppy/ci-fusesoc-action/blob/main/action.yml which seems to work https://github.com/proppy/misato/runs/4899664576?check_suite_focus=true but I'm unsure on the best way to submit it for inclusion in the ci-fusesoc-action project, should we have it as a different actions file, or live in a different branch, or be a different project altogether?