mod package_emit

module package_emit

Deterministic EasyBuild recipe-set emission from materialized package profiles.

Emission targets conventional EasyBuild style used by easybuilders/easyconfigs:

  • primary GitHub tag archives use github_account / GITHUB_SOURCE / SOURCELOWER_TAR_GZ when they match the package identity;

  • dependency tuples omit the toolchain when the lock identity sits on the package toolchain or a hierarchy member (GCCcore/gompi under foss, …);

  • cross-generation pins keep an explicit four-element tuple.

Functions

fn emit_profile_easyconfigs(plan: &PackagePlan, locks: &[ProfileLock]) -> Result<Vec<EmittedEasyconfig>, PackageEmitError>

Render one easyconfig per profile, using each profile’s lock.

Enums

enum PackageEmitError

Why an easyconfig could not be rendered.

Materialize(String)

The profile’s conditions could not be resolved.

MissingLock(String)

No lock was supplied for a profile that needs one.

LockIdentity

The supplied lock is for a different package or version.

profile: String

Profile whose lock disagrees.

package: String

Package the lock names.

version: String

Version the lock names.

LockConfiguration(String)

The lock does not match the profile’s configuration.

InvalidEasyconfigParameter(String)

A raw parameter is not a name EasyBuild recognises.

Structs and Unions

struct EmittedEasyconfig

One rendered easyconfig, in memory.

profile: String

Profile it was emitted for.

filename: String

Conventional EasyBuild filename.

text: String

The recipe source.