add end-to-end test for --minimal-toolchains#1619
add end-to-end test for --minimal-toolchains#1619boegel merged 19 commits intoeasybuilders:developfrom
Conversation
|
EasyBuild framework unit test suite FAILed. See https://jenkins1.ugent.be/job/easybuild-framework-pr-builder/2711/console for more details. Please fix the reported issues by pushing additional commits to the branch corresponding with this pull request; contact @boegel if you're not sure what to do. |
|
Test fails as it should: |
|
let's retest now that #1614 is merged... Jenkins: test this please |
| ec = robot_find_easyconfig(dep['name'], det_full_ec_version(dep)) | ||
| ec = process_easyconfig(ec, validate=False)[0] | ||
| alldeps = [ec['ec']['toolchain']] + ec['ec']['dependencies'] | ||
| alldeps = [ec['ec']['toolchain']] + parsed_ec['dependencies'] |
There was a problem hiding this comment.
You sure this is correct? I think this was originally almost correct - what was the error? I think it should probably be
alldeps = [ec['ec']['toolchain']] + ec['ec']['dependencies'] + [dep['toolchain'] for dep in ec['ec']['dependencies']]
There was a problem hiding this comment.
Argh, I'm confused by this! But I think the line above will solve it. Your change is not focussed enough on toolchains. We only care about what toolchains are being used, the proposed line looks at the toolchains of deps, the deps of deps and the toolchains of the deps of deps. We will overpopulate the list but that's ok, because we do a set later.
There was a problem hiding this comment.
@ocaisa: the problem is that the previous line was taking the dependencies of the dependencies...
Say we're parsing GCC-4.9.3-2.25.eb; the dependencies are GCCcore and binutils, which are listed in parsed_ec['dependencies']
We also want to take into account the toolchain for each of these dependencies, so [ec['ec']['toolchain']]
We're adding the same list of deps over and over again now, so I need to change this to:
deps_tcs = [d['name'] for d in parsed_ec['dependencies']]
for dep in parsed_ec['dependencies']:
# also add toolchains of each dep
or something like that (I'll look into it later)
There was a problem hiding this comment.
Ok, but you're going backwards. The reason this was changed originally in #1576 was for iccifort built on GCCcore. iccifort depends on icc/ifort which then depend on GCCcore/binutils. Your proposal wouldn't cover this case. You need toolchains of deps and deps of deps and toolchains of deps of deps. Yes this is overkill but who cares, you've already parsed the deps anyway and we select only the toolchain we're interested in later and then make sure we have uniqueness.
There was a problem hiding this comment.
OK, I'll add a testcase for iccifort and make sure that works too.
|
EasyBuild framework unit test suite FAILed. See https://jenkins1.ugent.be/job/easybuild-framework-pr-builder/2714/console for more details. Please fix the reported issues by pushing additional commits to the branch corresponding with this pull request; contact @boegel if you're not sure what to do. |
|
EasyBuild framework unit test suite FAILed. See https://jenkins1.ugent.be/job/easybuild-framework-pr-builder/2715/console for more details. Please fix the reported issues by pushing additional commits to the branch corresponding with this pull request; contact @boegel if you're not sure what to do. |
|
EasyBuild framework unit test suite FAILed. See https://jenkins1.ugent.be/job/easybuild-framework-pr-builder/2716/console for more details. Please fix the reported issues by pushing additional commits to the branch corresponding with this pull request; contact @boegel if you're not sure what to do. |
| @@ -567,6 +567,14 @@ def test_get_toolchain_hierarchy(self): | |||
| {'name': 'gompi', 'version': '1.4.10'}, | |||
There was a problem hiding this comment.
gompi is a bit of a broken choice when you try to add dummy, because the underlying GCC doesn't actually have any dependencies on anything built with dummy which is (currently) required. I guess we should hard-include dummy when the relevant option is there
There was a problem hiding this comment.
This would solve the first failing test
There was a problem hiding this comment.
Wait, this problem is also the cause of the second test failure, it must be related to the change you made in the toolchain hierarchy generator
There was a problem hiding this comment.
It's the caching for toolchain hierarchy screwing up the tests... We'll need to reset the cache.
There was a problem hiding this comment.
I don't think gompi is a broken choice, because we always include the toolchain too, not only the deps.
So, dummy is considered as a subtoolchain because GCC is built with dummy
There was a problem hiding this comment.
Agreed, my mistake
On 18 Feb 2016 21:06, "Kenneth Hoste" <[email protected]mailto:[email protected]> wrote:
In test/framework/robot.pyhttps://github.com//pull/1619#discussion_r53374477:
@@ -567,6 +567,14 @@ def test_get_toolchain_hierarchy(self):
{'name': 'gompi', 'version': '1.4.10'},
I don't think gompi is a broken choice, because we always include the toolchain too, not only the deps.
So, dummy is considered as a subtoolchain because GCC is built with dummy
—
Reply to this email directly or view it on GitHubhttps://github.com//pull/1619/files#r53374477.
Forschungszentrum Juelich GmbH
52425 Juelich
Sitz der Gesellschaft: Juelich
Eingetragen im Handelsregister des Amtsgerichts Dueren Nr. HR B 3498
Vorsitzender des Aufsichtsrats: MinDir Dr. Karl Eugen Huthmacher
Geschaeftsfuehrung: Prof. Dr.-Ing. Wolfgang Marquardt (Vorsitzender),
Karsten Beneke (stellv. Vorsitzender), Prof. Dr.-Ing. Harald Bolt,
Prof. Dr. Sebastian M. Schmidt
Test minimal toolchains
…_hierarchy Allow cache clearing for toolchain hierarchy
|
EasyBuild framework unit test suite FAILed. See https://jenkins1.ugent.be/job/easybuild-framework-pr-builder/2722/console for more details. Please fix the reported issues by pushing additional commits to the branch corresponding with this pull request; contact @boegel if you're not sure what to do. |
Add the cache clearing
…_hierarchy Update robot.py
|
EasyBuild framework unit test suite PASSed (see https://jenkins1.ugent.be/job/easybuild-framework-pr-builder/2725/console for more details). This pull request is now ready for review/testing. Please try and find someone who can tackle this; contact @boegel if you're not sure what to do. |
|
EasyBuild framework unit test suite FAILed. See https://jenkins1.ugent.be/job/easybuild-framework-pr-builder/2728/console for more details. Please fix the reported issues by pushing additional commits to the branch corresponding with this pull request; contact @boegel if you're not sure what to do. |
|
EasyBuild framework unit test suite FAILed. See https://jenkins1.ugent.be/job/easybuild-framework-pr-builder/2729/console for more details. Please fix the reported issues by pushing additional commits to the branch corresponding with this pull request; contact @boegel if you're not sure what to do. |
|
EasyBuild framework unit test suite FAILed. See https://jenkins1.ugent.be/job/easybuild-framework-pr-builder/2731/console for more details. Please fix the reported issues by pushing additional commits to the branch corresponding with this pull request; contact @boegel if you're not sure what to do. |
|
EasyBuild framework unit test suite PASSed (see https://jenkins1.ugent.be/job/easybuild-framework-pr-builder/2732/console for more details). This pull request is now ready for review/testing. Please try and find someone who can tackle this; contact @boegel if you're not sure what to do. |
|
@ocaisa: can you give this another look? Should be good to go. |
|
|
||
| # search the toolchain+dependencies for the version of the subtoolchain | ||
| dep_tcs = [] | ||
| dep_tcs = [d for d in parsed_ec['dependencies'] if d['name'] == subtoolchain_name] |
There was a problem hiding this comment.
I know this is a little pedantic since we have solved the particular problem with icc/ifort but...
Originally this function only dealt with toolchains from the depenencies, now it is dealing with dependencies and the toolchains of dependencies but these are not the same. Dependencies can have a versionsuffix which toolchains don't, so if we are adding dependencies we need to add them as
{'name': d['name'], 'version': '%s%s' % (d['version'], d['versionsuffix'])}
Same is true when adding dependencies below (basically need a repeat of this line). And I still think we should also be adding toolchains of deps of deps, since we've already parsed the deps it comes at zero cost (for example, if you had decided to comment out the GCCcore dependency rather than binutils in icc/ifort we wouldn't have picked up the GCCcore version even though it is available as the toolchain of binutils).
There was a problem hiding this comment.
OK, makes sense to me, thanks for the feedback.
There was a problem hiding this comment.
@ocaisa: fixed now, please rererererererererereview?
|
lgtm |
|
EasyBuild framework unit test suite PASSed (see https://jenkins1.ugent.be/job/easybuild-framework-pr-builder/2735/console for more details). This pull request is now ready for review/testing. Please try and find someone who can tackle this; contact @boegel if you're not sure what to do. |
|
EasyBuild framework unit test suite PASSed (see https://jenkins1.ugent.be/job/easybuild-framework-pr-builder/2736/console for more details). This pull request is now ready for review/testing. Please try and find someone who can tackle this; contact @boegel if you're not sure what to do. |
|
Going in, thanks for the excellent feedback @ocaisa! |
add end-to-end test for --minimal-toolchains
This reproduces the issue in #1606.
Without #1614 included in
develop, this test will fail.cc @ocaisa, @damianam: please review?