Skip to content

Commit ae69ba5

Browse files
committed
docs: define generic provider mapping
1 parent 6cb9625 commit ae69ba5

4 files changed

Lines changed: 48 additions & 2 deletions

File tree

‎README.md‎

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -118,6 +118,12 @@ build policy, and independently installable profiles live in package config.
118118
Each profile emits one `.eb` file; MPI/OpenMP toolchain options alone do not
119119
require a suffix.
120120

121+
Aliases use `foreign = "EasyBuild"` when both names share a version domain.
122+
Component-to-provider mappings use
123+
`foreign = { provider = "EasyBuild", constraint = "drop" }`, so a component
124+
release such as a Python package version is never imposed on its containing
125+
EasyBuild provider.
126+
121127
```sh
122128
eb-stack package plan \
123129
--source fixtures/foreign_ingest/conda_eon/recipe.yaml \

‎docs/orgmode/explanation/architecture.org‎

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,15 @@ variants, conflicts, requirements, source metadata, and source spans.
3939
Adapters do not choose EasyBuild dependency versions or emit placeholder
4040
recipes. Their output is package intent plus explicit residuals.
4141

42+
* Provider mapping
43+
44+
Layered package policy maps foreign dependency identities to EasyBuild
45+
providers after syntax parsing. Direct aliases preserve constraints when the
46+
two ecosystems use the same version domain. Component-to-provider aliases can
47+
drop a component constraint that has no meaning for the containing provider.
48+
The mapping is data, not parser control flow, and dependency provenance keeps
49+
the foreign evidence available for review.
50+
4251
* Canonical package model
4352

4453
~PackagePlan~ is schema-versioned and shared by foreign imports and bumps. It

‎docs/orgmode/howto/new-package.org‎

Lines changed: 25 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -65,8 +65,31 @@ eb-stack package inspect \
6565
A package layer can replace or extend parser-derived metadata without changing
6666
the parser. ~examples/packages/common.toml~ provides cross-ecosystem aliases;
6767
later layers may replace package metadata, build policy, aliases, virtuals,
68-
solver exclusions, and profiles. A QMCPACK profile set commonly contains a
69-
default MPI+OpenMP build and a separate ~-complex~ recipe:
68+
solver exclusions, and profiles.
69+
70+
An alias maps a foreign dependency identity to an EasyBuild provider. Use the
71+
short string form when both names use the same version domain:
72+
73+
#+begin_src toml
74+
[dependencies.aliases]
75+
libcurl = "cURL"
76+
#+end_src
77+
78+
Use the structured form when the foreign dependency is a component supplied by
79+
a larger EasyBuild package. ~constraint = "drop"~ prevents the component's
80+
version from being interpreted as the provider's version:
81+
82+
#+begin_src toml
83+
[dependencies.aliases]
84+
"py-setuptools" = { provider = "Python", constraint = "drop" }
85+
#+end_src
86+
87+
The original foreign spelling and constraint remain in dependency provenance.
88+
Aliases only control robot matching and solving; they do not teach the parser
89+
about a package.
90+
91+
A QMCPACK profile set commonly contains a default MPI+OpenMP build and a
92+
separate ~-complex~ recipe:
7093

7194
#+begin_src toml
7295
schema_version = 1

‎skills/new-package/SKILL.md‎

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -31,6 +31,14 @@ use `[dependencies.virtuals]` for capabilities and
3131
`dependencies.exclude_from_solve` for foreign runtime metadata that remains
3232
visible in the manifest/SBOM but is not an EasyBuild dependency.
3333

34+
Use `foreign = "EasyBuild"` only when the foreign component and EasyBuild
35+
provider share a version domain. When an EasyBuild package contains a foreign
36+
component, use
37+
`foreign = { provider = "EasyBuild", constraint = "drop" }`. This keeps a
38+
component release from becoming a false provider constraint while provenance
39+
retains the original foreign requirement. Do not repair this mismatch with a
40+
package-name parser branch.
41+
3442
The `[package]` and `[build]` tables own EasyBuild spelling, release spelling,
3543
easyblock policy, module class, build options, and patches. `easyblock =
3644
"auto"` omits the parameter so EasyBuild can select a software-specific

0 commit comments

Comments
 (0)