enhance Cargo constructor to avoid processing list of crates multiple times into sources#2934
Merged
Micket merged 2 commits intoeasybuilders:developfrom May 24, 2023
Merged
Conversation
… times into sources
ac4b2ed to
8c16623
Compare
This was referenced May 24, 2023
update easyconfig for Longshot 0.4.5 to use Cargo easyblock
easybuilders/easybuild-easyconfigs#17666
Merged
Merged
ocaisa
reviewed
May 24, 2023
Flamefire
added a commit
to Flamefire/easybuild-easyblocks
that referenced
this pull request
Aug 7, 2024
The issue intended to be fixed with easybuilders#2934 is actually cause by Pythons MRO: CargoPythonPackage explicitely calls `__init__` of **both** `Cargo` and `PythonPackage` 1. `super().__init__` in Cargo calls `ExtensionEasyBlock->EasyBlock->Extension` 2. Then `PythonPackage.__init__` is called by `CargoPythonPackage` 3. `super().__init__` in PythonPackage calls `Cargo.__init__` again(!) 4. Then all other methods are called again as per 1. The MRO order is `[CargoPythonPackage, PythonPackage, Cargo, ExtensionEasyBlock, EasyBlock, Extension]` which explains that. Fix is to consistently use `super()` in the CargoPythonPackage inheritance chain.
Flamefire
added a commit
to Flamefire/easybuild-easyblocks
that referenced
this pull request
Aug 7, 2024
The issue intended to be fixed with easybuilders#2934 is actually cause by Pythons MRO: CargoPythonPackage explicitely calls `__init__` of **both** `Cargo` and `PythonPackage` 1. `super().__init__` in Cargo calls `ExtensionEasyBlock->EasyBlock` stop (Could then call `Extension` but `ExtensionEasyBlock does not use `super`) 2. Then `PythonPackage.__init__` is called by `CargoPythonPackage` 3. `super().__init__` in PythonPackage calls `Cargo.__init__` again(!) 4. Then all other methods are called again as per 1. The MRO order is `[CargoPythonPackage, PythonPackage, Cargo, ExtensionEasyBlock, EasyBlock, Extension]` which explains that. Fix is to consistently use `super()` in the CargoPythonPackage inheritance chain.
Flamefire
added a commit
to Flamefire/easybuild-easyblocks
that referenced
this pull request
Aug 7, 2024
The issue intended to be fixed with easybuilders#2934 is actually caused by Pythons MRO: CargoPythonPackage explicitely calls `__init__` of **both** `Cargo` and `PythonPackage` 1. `super().__init__` in Cargo calls `ExtensionEasyBlock->EasyBlock` stop (Could then call `Extension` but `ExtensionEasyBlock does not use `super`) 2. Then `PythonPackage.__init__` is called by `CargoPythonPackage` 3. `super().__init__` in PythonPackage calls `Cargo.__init__` again(!) 4. Then all other methods are called again as per 1. The MRO order is `[CargoPythonPackage, PythonPackage, Cargo, ExtensionEasyBlock, EasyBlock, Extension]` which explains that. Fix is to consistently use `super()` in the CargoPythonPackage inheritance chain.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
(created using
eb --new-pr)