Fixes to Handling Multiple Architectures#2261
Conversation
|
@tgamblin: After looking over the
The first method is more general, but requires updating the database fields for the benefit of allowing a single Spack instance to handle installs that span different platforms (which I'm not sure is something that would be done very often if at all). With that being said, which of these methods seems preferable to you (or do you have a better alternative in mind)? Please let me know whenever you get a chance! |
|
@xjrc: I don't think we need to be as general as (1), as the platform metadata isn't needed unless you are actually building on the host. The way we've separated things out for other parts of Spack, like compilers, is to have a So the way I would do this is to pull an |
|
@tgamblin: The concept makes sense, and I can certainly envision how this could be used to replace the current functionality for generating architecture information from the Spack database. I'm not entirely sure how to go about implementing |
|
@tgamblin: I finished implementing a preliminary version of the |
e54e7c5 to
41b8782
Compare
|
@xjrc: this is actually looking really good. The fact that it also adapts the compilers could also fix another current problem: the compilers can't currently differentiate from each other by target. We see this on the I will take a more detailed look tonight, but it looks close to merge-able to me. |
|
@xjrc Can you check the box that lets us push to your PR? |
|
@becker33: It looks to me like the box is already checked. Are you having problems pushing? |
|
@xjrc I get 403 Forbidden error when attempting to push to this branch, I would assume that's from that setting being messed up but I'm sure it could come from something else. |
|
@becker33: you need to use the git URL for the remote to be able to authenticate with ssh and push to branches like this one. |
|
@tgamblin I only switched to https because I got a similar fatal error when trying to push to the same branch through ssh. |
5788cd0 to
abd39ab
Compare
|
Pushing issues resolved. I'll resolve the merge conflicts. |
abd39ab to
09881e7
Compare
…s the new architecture specs.
Removed a number of unused architecture functions.
…ail. Added a couple of additional regression tests related to architecture parsing/specification. Fixed a few bugs with setting reserved os/target values on "ArchSpec" objects. Removed a number of unnecessary functions in the "spack.architecture" and "spack.concretize" modules.
Updated the tests to use a uniform architecture to improve reliability. Fixed a few minor style issues.
Improved error detection for multiple arch components in a spec.
09881e7 to
414bd06
Compare
414bd06 to
f0e93c6
Compare
* Added some notes about how multiarch detection could be fixed. * Implemented a preliminary version of the "spack.spec.ArchSpec" class. * Updated the "spack.spec.Spec" class to use "ArchSpec" instead of "Arch". * Fixed a number of small bugs in the "spack.spec.ArchSpec" class. * Fixed the 'Concretizer.concretize_architecture' method so that it uses the new architecture specs. * Updated the package class to properly use arch specs. Removed a number of unused architecture functions. * Fixed up a number of bugs that were causing the regression tests to fail. Added a couple of additional regression tests related to architecture parsing/specification. Fixed a few bugs with setting reserved os/target values on "ArchSpec" objects. Removed a number of unnecessary functions in the "spack.architecture" and "spack.concretize" modules. * Fixed a few bugs with reading architecture information from specs. Updated the tests to use a uniform architecture to improve reliability. Fixed a few minor style issues. * Adapted the compiler component of Spack to use arch specs. * Implemented more test cases for the extended architecture spec features. Improved error detection for multiple arch components in a spec. * Fix for backwards compatibility with v0.8 and prior * Changed os to unknown for compatibility specs * Use `spack09` instead of `spackcompat` for the platform of old specs.
* Added some notes about how multiarch detection could be fixed. * Implemented a preliminary version of the "spack.spec.ArchSpec" class. * Updated the "spack.spec.Spec" class to use "ArchSpec" instead of "Arch". * Fixed a number of small bugs in the "spack.spec.ArchSpec" class. * Fixed the 'Concretizer.concretize_architecture' method so that it uses the new architecture specs. * Updated the package class to properly use arch specs. Removed a number of unused architecture functions. * Fixed up a number of bugs that were causing the regression tests to fail. Added a couple of additional regression tests related to architecture parsing/specification. Fixed a few bugs with setting reserved os/target values on "ArchSpec" objects. Removed a number of unnecessary functions in the "spack.architecture" and "spack.concretize" modules. * Fixed a few bugs with reading architecture information from specs. Updated the tests to use a uniform architecture to improve reliability. Fixed a few minor style issues. * Adapted the compiler component of Spack to use arch specs. * Implemented more test cases for the extended architecture spec features. Improved error detection for multiple arch components in a spec. * Fix for backwards compatibility with v0.8 and prior * Changed os to unknown for compatibility specs * Use `spack09` instead of `spackcompat` for the platform of old specs.
Fixes #2249. Fixes #1815.
The changes in this pull request will fix the issues described in issue #2249 and generally improve architecture handling in Spack. These changes include the following updates:
spack.spec.ArchSpectype to represent abstract architecture requirements (e.g. likespack.spec.CompilerSpecdoes for compilers).spack.spec.Spectype withspack.spec.ArchSpecto facilitate better ambiguous architecture handling.spack.spec.ArchSpecworks properly.