mod package#

module package#

Canonical package artifacts shared by foreign imports, bumps, solving, and EasyBuild emission.

Variables

const PACKAGE_SCHEMA_VERSION: u32#
const PROFILE_LOCK_SCHEMA_VERSION: u32#
const STACK_POLICY_SCHEMA_VERSION: u32#

Functions

fn materialize_profile(plan: &PackagePlan, profile_name: &str, environment: &ProfileEnvironment) -> Result<MaterializedProfile, PackageError>#
fn package_plan_to_bom(plan: &PackagePlan) -> Result<Bom, PackageError>#
fn package_plan_to_cyclonedx(plan: &PackagePlan) -> Result<Value, PackageError>#

Enums

enum ConditionExpr#
Always#
Predicate(ConditionPredicate)#
All(Vec<ConditionExpr>)#
Any(Vec<ConditionExpr>)#
Not(Box<ConditionExpr>)#

Implementations

impl ConditionExpr#

Functions

fn evaluate(&self, context: &ConditionContext) -> bool#
enum ConditionPredicate#
PackageVersion#
requirement: String#
Feature#
name: String#
enabled: bool#
DependencyFeature#
dependency: String#
name: String#
enabled: bool#
Compiler#
name: String#
version: Option<String>#
Toolchain#
name: String#
version: Option<String>#
Platform#
name: String#
Architecture#
name: String#
VariableComparison#
left: String#
operator: String#
right: String#

Implementations

impl ConditionPredicate#
enum Confidence#
Exact#
Derived#
Ambiguous#
enum DependencyRole#
Build#
Host#
Run#
Test#
enum PackageError#
UnsupportedSchema(u32)#
ProfileNotFound(String)#
Json(serde_json::Error)#
CycloneDx(String)#
enum PackageOrigin#
CondaForge#
Spack#
EasyBuild#
enum PackageRuleKind#
Conflict#
Requirement#
enum ResidualSeverity#
Mechanical#
Judgment#
Blocking#
enum ResidualStage#
Parse#
Normalize#
Resolve#
Emit#
Build#
Verify#
enum StackPinMode#
Preferred#
Locked#

Structs and Unions

struct BuildSpec#
toolchain: Toolchain#
easyblock: Option<String>#
build_systems: Vec<String>#
config_options: Vec<String>#
moduleclass: Option<String>#
patches: Vec<String>#
struct CandidateExclusion#
name: String#
version_requirement: String#
reason: String#
scope: Option<String>#
struct ConditionContext#
package_version: String#
features: BTreeMap<String, bool>#
dependency_features: BTreeMap<String, BTreeMap<String, bool>>#
compiler: Option<NamedVersion>#
toolchain: Option<Toolchain>#
platform: Option<String>#
architecture: Option<String>#
variables: BTreeMap<String, String>#
struct DependencyIntent#
id: String#
name: String#
eb_name: Option<String>#
constraint: Option<String>#
roles: Vec<DependencyRole>#
condition: ConditionExpr#
virtual_capability: Option<String>#
provenance: Vec<Provenance>#
struct LockedDependency#
name: String#
version: String#
versionsuffix: Option<String>#
toolchain: Toolchain#
easyconfig_path: String#
build: bool#
struct MaterializedProfile#
package: PackageMetadata#
build: BuildSpec#
profile: ProductProfile#
versionsuffix: String#
dependencies: Vec<DependencyIntent>#
rules: Vec<PackageRule>#
struct NamedVersion#
name: String#
version: String#
struct OutputRequest#
profile: String#
stack: String#
struct PackageMetadata#
name: String#
version: String#
homepage: Option<String>#
description: Option<String>#
license: Option<String>#
struct PackagePlan#
schema_version: u32#
origin: PackageOrigin#
package: PackageMetadata#
sources: Vec<SourceArtifact>#
dependencies: Vec<DependencyIntent>#
rules: Vec<PackageRule>#
build: BuildSpec#
profiles: Vec<ProductProfile>#
outputs: Vec<OutputRequest>#
residuals: Vec<Residual>#

Implementations

impl PackagePlan#

Functions

fn from_json_str(input: &str) -> Result<Self, PackageError>#
fn validate_schema(&self) -> Result<(), PackageError>#
struct PackageRule#
id: String#
kind: PackageRuleKind#
spec: String#
when: Option<String>#
condition: ConditionExpr#
message: Option<String>#
provenance: Provenance#
struct ProductProfile#
name: String#
default: bool#
versionsuffix: Vec<String>#
features: BTreeMap<String, bool>#
parameters: BTreeMap<String, String>#
toolchain_options: BTreeMap<String, bool>#
config_options: Vec<String>#
verification_commands: Vec<VerificationCommand>#
struct ProfileEnvironment#
dependency_features: BTreeMap<String, BTreeMap<String, bool>>#
compiler: Option<NamedVersion>#
platform: Option<String>#
architecture: Option<String>#
variables: BTreeMap<String, String>#
struct ProfileLock#
schema_version: u32#
package: String#
version: String#
profile: String#
toolchain: Toolchain#
versionsuffix: String#
dependencies: Vec<LockedDependency>#
pin_outcomes: Vec<StackPinOutcome>#
exclusions: Vec<CandidateExclusion>#
solver: String#
struct Provenance#
span: SourceSpan#
extractor: String#
original: String#
confidence: Confidence#
struct Residual#
id: String#
stage: ResidualStage#
category: String#
severity: ResidualSeverity#
summary: String#
evidence: Option<String>#
provenance: Option<Provenance>#
struct SourceArtifact#
url: Option<String>#
filename: Option<String>#
sha256: Option<String>#
git: Option<String>#
tag: Option<String>#
commit: Option<String>#
target_directory: Option<String>#
provenance: Vec<Provenance>#
struct SourceSpan#
path: String#
start_line: u32#
start_column: u32#
end_line: u32#
end_column: u32#
struct StackPin#
name: String#
version_requirement: String#
toolchain: Option<Toolchain>#
versionsuffix: Option<String>#
mode: StackPinMode#
source: Option<String>#
struct StackPinOutcome#
name: String#
requested: String#
requested_toolchain: Option<Toolchain>#
requested_versionsuffix: Option<String>#
selected_version: Option<String>#
selected_toolchain: Option<Toolchain>#
selected_versionsuffix: Option<String>#
fallback: bool#
fallback_reason: Option<String>#
struct StackPolicy#
schema_version: u32#
name: String#
toolchain: Toolchain#
pins: Vec<StackPin>#
exclusions: Vec<CandidateExclusion>#
struct StackPolicySolve#
selected: Vec<Candidate>#
pin_outcomes: Vec<StackPinOutcome>#
exclusions: Vec<CandidateExclusion>#
struct VerificationCommand#
program: String#
args: Vec<String>#