-
Notifications
You must be signed in to change notification settings - Fork 291
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
Clarify "default" feature #298
Clarify "default" feature #298
Conversation
/azp run |
Azure Pipelines successfully started running 1 pipeline(s). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
That's what I see for now, mostly looks good and I like the clarification.
/azp run |
Azure Pipelines successfully started running 1 pipeline(s). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
minor stuff, but mostly looks really good! Thanks @ras0219-msft!
0a5af2c
to
81bf32f
Compare
…ev/roschuma/fullpkgspec
c787df0
to
5ba94ea
Compare
…ev/roschuma/fullpkgspec
PR microsoft#298 introduced a regression during ABI calculation for packages that do not have features. It removed the implicit entry "core" from InstallPlanAction::feature_list, which meant that packages without features would end up with an empty ABI tag for their features list. We consider an empty ABI tag in the features list to indicate that a value could not be calculated and therefore that the package cannot be cached (no ABI). This then resulted in a crash during CI which assumes that all packages have ABIs.
This PR extracts out core refactoring exposed by #295. Specifically, this PR seeks to clarify where in the code we are using "parsed-notation" (no features implies defaults,
[core]
implies not defaults) versus internal notation ([default]
implies defaults).The primary change to accomplish this is the introduction of
struct InternalFeatureSet : std::vector<std::string>
to denote when this handoff occurs. By type:Dependency
is parse-notationParsedQualifiedSpecifier
is parse-notationFullPackageSpec
is internal-notationFeatureSpec
is internal-notationTherefore, the core conversions to internal notation happen as part of
Dependency::to_full_spec()
andParsedQualifiedSpecifier::to_full_spec()
(shared vianormalize_feature_list()
).filter_dependencies()
usesDependency::to_full_spec()
.