74 lines
2.5 KiB
Diff
74 lines
2.5 KiB
Diff
|
From 25fcebfeb0e63ce395bdbbf710d4c79888e57130 Mon Sep 17 00:00:00 2001
|
||
|
From: Jonathan Lebon <jonathan@jlebon.com>
|
||
|
Date: Thu, 26 Aug 2021 21:42:21 -0400
|
||
|
Subject: [PATCH] extensions: support enabling/installing modules
|
||
|
|
||
|
Fix that gap now since RHCOS does use modular packages in its
|
||
|
extensions. This ended up being easier than I thought because we're just
|
||
|
converting to a treefile underneath.
|
||
|
---
|
||
|
docs/extensions.md | 11 +++++++++++
|
||
|
rust/src/extensions.rs | 3 +++
|
||
|
rust/src/treefile.rs | 2 +-
|
||
|
3 files changed, 15 insertions(+), 1 deletion(-)
|
||
|
|
||
|
diff --git a/docs/extensions.md b/docs/extensions.md
|
||
|
index a754b185..9dbc6230 100644
|
||
|
--- a/docs/extensions.md
|
||
|
+++ b/docs/extensions.md
|
||
|
@@ -30,6 +30,17 @@ extension packages and places them in an output directory.
|
||
|
The format of the `extensions.yaml` file is as follow:
|
||
|
|
||
|
```yaml
|
||
|
+# Any additional repos to enable on top of treefile repos
|
||
|
+repos:
|
||
|
+ - myrepo
|
||
|
+
|
||
|
+# Any modules to enable/install
|
||
|
+modules:
|
||
|
+ enable:
|
||
|
+ - foo:bar
|
||
|
+ install:
|
||
|
+ - baz:boo/default
|
||
|
+
|
||
|
# The top-level object is a dict. The only supported key
|
||
|
# right now is `extensions`, which is a dict of extension
|
||
|
# names to extension objects.
|
||
|
diff --git a/rust/src/extensions.rs b/rust/src/extensions.rs
|
||
|
index ad2fe19b..6cb1a3a6 100644
|
||
|
--- a/rust/src/extensions.rs
|
||
|
+++ b/rust/src/extensions.rs
|
||
|
@@ -25,6 +25,8 @@ pub struct Extensions {
|
||
|
extensions: HashMap<String, Extension>,
|
||
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||
|
repos: Option<Vec<String>>,
|
||
|
+ #[serde(skip_serializing_if = "Option::is_none")]
|
||
|
+ modules: Option<crate::treefile::ModulesConfig>,
|
||
|
}
|
||
|
|
||
|
#[derive(Serialize, Deserialize, Debug)]
|
||
|
@@ -162,6 +164,7 @@ impl Extensions {
|
||
|
repos: Some(repos),
|
||
|
packages: Some(self.get_os_extension_packages()),
|
||
|
releasever: src.parsed.releasever.clone(),
|
||
|
+ modules: self.modules.clone(),
|
||
|
..Default::default()
|
||
|
};
|
||
|
Ok(Box::new(Treefile::new_from_config(ret, None)?))
|
||
|
diff --git a/rust/src/treefile.rs b/rust/src/treefile.rs
|
||
|
index 421f2b6c..eeb21a50 100644
|
||
|
--- a/rust/src/treefile.rs
|
||
|
+++ b/rust/src/treefile.rs
|
||
|
@@ -1290,7 +1290,7 @@ pub(crate) struct RepoPackage {
|
||
|
pub(crate) packages: Vec<String>,
|
||
|
}
|
||
|
|
||
|
-#[derive(Serialize, Deserialize, Debug, Default, PartialEq, Eq)]
|
||
|
+#[derive(Serialize, Deserialize, Debug, Default, PartialEq, Eq, Clone)]
|
||
|
pub(crate) struct ModulesConfig {
|
||
|
#[serde(skip_serializing_if = "Option::is_none")]
|
||
|
pub(crate) enable: Option<Vec<String>>,
|
||
|
--
|
||
|
2.31.1
|
||
|
|