Skip to content

Architecture-specific filtering of dependencies. #3429

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Closed
wants to merge 1 commit into from

Conversation

terjekv
Copy link
Contributor

@terjekv terjekv commented Sep 2, 2020

  • Done in the superclass for all EasyConfigs
  • Supports a list of dependencies to hard ignore for a given
    architecture.
  • Required to avoid Yasm on aarch64, but Yasm is required on
    x86_64 for performance when building x26[45].

Fixes easybuilders/easybuild-easyconfigs#11190

  - Done in the superclass for all EasyConfigs
  - Supports a list of dependencies to hard ignore for a given
    architecture.
  - Required to avoid Yasm on aarch64, but Yasm is required on
    x86_64 for performance when building x26[45].
@ocaisa
Copy link
Member

ocaisa commented Sep 4, 2020

@boegel This looks ok to me, but I'd like to get your input on the approach

@ocaisa
Copy link
Member

ocaisa commented Sep 4, 2020

@boegel Is it possible for us to override ARCH_HARD_FILTER in the tests so a test can be added for this in https://github.com/easybuilders/easybuild-framework/blob/develop/test/framework/easyconfig.py#L1332?

@migueldiascosta migueldiascosta added aarch64 Related to Arm 64-bit (aarch64) enhancement labels Sep 9, 2020
@migueldiascosta migueldiascosta added this to the next release (4.3.0) milestone Sep 9, 2020
@terjekv
Copy link
Contributor Author

terjekv commented Sep 16, 2020

The warning about hard filtering will be added irrespective of the filtered easyconfig being a dependency or not. Would it be preferable to only add the warning if the dependency is actually in use? (And if so, is there a pretty way to know that?)

@@ -96,6 +97,9 @@
# prefix for names of local variables in easyconfig files
LOCAL_VAR_PREFIX = 'local_'

ARCH_HARD_FILTER = {
AARCH64: ['Yasm'],
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hmm, I'm not a big fan of this approach...

I would rather implement something more flexible, where you can configure EasyBuild to opt-in to or opt-out of optional dependencies based on certain condition (i.e. aarch64, GPU system, etc.).

In this particular case, configuring EasyBuild with --filter-deps=Yasm should be sufficient?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

It's ugly for sure. Using --filter-deps=Yasm should work, but it would need to always be done so for aarch64.

Dynamic dependencies would be interesting, could spiral into "we depend on cuda if we see a compatible GPU", but absolute exceptions like Yasm would need to be defined somewhere in EasyBuild itself. I have no good/better ideas on how to achieve that.

@akesandgren
Copy link
Contributor

#3506 solves this on a case by case basis which should be enough to move forward.

@terjekv
Copy link
Contributor Author

terjekv commented Feb 23, 2021

I agree, #3506 is a much better solution. Closing this.

@terjekv terjekv closed this Feb 23, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
aarch64 Related to Arm 64-bit (aarch64) enhancement
Projects
None yet
Development

Successfully merging this pull request may close these issues.

yasm-1.3.0-GCCcore-9.3.0 fails to build on arm/aarch64 as its self-built re2c segfaults.
5 participants