easybuilders / easybuild-framework

EasyBuild is a software installation framework in Python that allows you to install software in a structured and robust way.
https://easybuild.io
GNU General Public License v2.0
147 stars 199 forks source link

Building an easystack.yml with --job results in redundant/conflicting build jobs for common dependencies #4558

Open stderr-enst opened 4 weeks ago

stderr-enst commented 4 weeks ago

If an easystack.yml contains two packages with the same dependent package (e.g. "GCCcore"), building the easystack file with -r and --job results in multiple submitted build jobs for that package.

Of course the first job wins and builds happily, but subsequent attempts fail with different failure modes.

@ocaisa suggested in a slack discussion:

For your use case, you'd have to retain some knowledge of what has been submitted. It just needs some design, a dict perhaps that gets updated with submitted jobs, if you get a hit you link the job id, if not you submit a job and add to the dict

ocaisa commented 4 weeks ago

I looked into it a bit, one way to do it is