hdl / conda-eda

Conda recipes for FPGA EDA tools for simulation, synthesis, place and route and bitstream generation.
https://anaconda.org/LiteX-Hub
Apache License 2.0
95 stars 26 forks source link

CI: Only build the OpenLane package if building Open-PDKs succeeded #277

Open ajelinski opened 1 year ago

ajelinski commented 1 year ago

This change will ensure a problem when testing OpenLane in the same CI that:

It turned out all of the open_pdks packages newer than 1.0.286 have a strict magic version requirement. The just-built magic package will be always preferred in CI so when building open_pdks fail and the CI built a new version of the magic package then this old 1.0.286 Open-PDKs package will be used which doesn't work well with the other latest packages.

Such a run happened in https://github.com/hdl/conda-eda/actions/runs/3828789250/jobs/6551196431#step:7:3305

proppy commented 1 year ago

LGTM! Thanks for pinning this down. Maybe we could also delete version of open_pdks older than 1.0.286? (That could reclaim precious disk space on the channel)

ajelinski commented 1 year ago

LGTM! Thanks for pinning this down. Maybe we could also delete version of open_pdks older than 1.0.286? (That could reclaim precious disk space on the channel)

Are you sure these old packages aren't used by anyone?

Btw. perhaps we should add a constraint to the OpenLane package so that open_pdks has to be newer than that? It can be an optional one, i.e., not making any open_pdks required for running OpenLane. Also it'd be best to have this compatibility set more precisely since now the latest OpenLane allows using any openroad and open_pdks versions but unfortunately I don't know enough about these tools to establish it.

proppy commented 1 year ago

Btw. perhaps we should add a constraint to the OpenLane package so that open_pdks has to be newer than that? It can be an optional one, i.e., not making any open_pdks required for running OpenLane.

Yes, I was thinking about the same thing, maybe it could leverage https://docs.conda.io/projects/conda-build/en/latest/resources/define-metadata.html#run-constrained, like the open_pdks package does with magic: https://github.com/hdl/conda-eda/blob/master/misc/open_pdks/meta.yaml#L47-L48

proppy commented 1 year ago

Also it'd be best to have this compatibility set more precisely since now the latest OpenLane allows using any openroad and open_pdks versions but unfortunately I don't know enough about these tools to establish it.

Something I was thinking was to pin_compatible(min_pin='x.x.x', ...) to make sure we always require at least the version of all dependencies for which the package test passed. WDYT?