From 1adcfd58b393a0df6e64ac2ff4d66c790fbe66a4 Mon Sep 17 00:00:00 2001 From: Colin Walters Date: Nov 17 2021 18:59:48 +0000 Subject: https://github.com/coreos/rpm-ostree/releases/tag/v2021.14 --- diff --git a/0001-extensions-Add-support-for-per-extension-repos-and-m.patch b/0001-extensions-Add-support-for-per-extension-repos-and-m.patch deleted file mode 100644 index 0f3dafe..0000000 --- a/0001-extensions-Add-support-for-per-extension-repos-and-m.patch +++ /dev/null @@ -1,155 +0,0 @@ -From 9b4b19cda21c84fa68496e1874a31044e099d742 Mon Sep 17 00:00:00 2001 -From: Colin Walters -Date: Wed, 29 Sep 2021 14:33:04 -0400 -Subject: [PATCH] extensions: Add support for per-extension repos and modules - -While we support arch-specific extensions today, the state of -repos and modules are global. Which means if a module-using -extension is only available on one architecture (as is the -case in RHEL8/OCP with the `av` module) then it's not -possible to build on other architectures. - -The most powerful mechanism here is the `arch-include` design -that we have in the treefile, but...since we already have -an architecture filter per extension, it's easier to add -repos and modules per extension. - -Note that the repos and modules are still *global* state, so -we're not supporting actively conflicting extensions right now -still. - -Closes: https://github.com/coreos/rpm-ostree/issues/3150 ---- - docs/extensions.md | 12 +++++++++++ - rust/src/extensions.rs | 46 ++++++++++++++++++++++++++++++++++++++++++ - rust/src/treefile.rs | 2 +- - 3 files changed, 59 insertions(+), 1 deletion(-) - -diff --git a/docs/extensions.md b/docs/extensions.md -index 9dbc6230..bc3d0d7b 100644 ---- a/docs/extensions.md -+++ b/docs/extensions.md -@@ -55,6 +55,18 @@ extensions: - packages: - - strace - - ltrace -+ # Optional additional repos (still added globally). -+ # The reason use per-extension `repos` and `modules` -+ # is that it more closely groups them (where relevant) -+ # and further these are only added after architecture conditionals -+ # apply, so one can use repositories that only exist -+ # on a particular architecture. -+ repos: -+ - sooper-repo -+ # Optional additional modules (this also affects global state) -+ modules: -+ enable: -+ - sooper:latest - # Optional list of architectures on which this extension - # is valid. These are RPM basearches. If omitted, - # defaults to all architectures. -diff --git a/rust/src/extensions.rs b/rust/src/extensions.rs -index e667f886..df37b792 100644 ---- a/rust/src/extensions.rs -+++ b/rust/src/extensions.rs -@@ -34,6 +34,10 @@ pub struct Extensions { - pub struct Extension { - packages: Vec, - #[serde(skip_serializing_if = "Option::is_none")] -+ repos: Option>, -+ #[serde(skip_serializing_if = "Option::is_none")] -+ modules: Option, -+ #[serde(skip_serializing_if = "Option::is_none")] - architectures: Option>, - #[serde(skip_serializing_if = "Option::is_none")] - match_base_evr: Option, -@@ -74,6 +78,14 @@ fn extensions_load_stream( - .collect(); - - for (_, ext) in parsed.extensions.iter_mut() { -+ // Extend the global extension state with the per-extension repos and modules, -+ // after we've done architecture filtering. -+ if let Some(repos) = parsed.repos.as_mut() { -+ repos.extend(ext.repos.take().unwrap_or_default()); -+ } else { -+ parsed.repos = ext.repos.take(); -+ } -+ crate::treefile::merge_modules(&mut parsed.modules, &mut ext.modules); - if ext.kind == ExtensionKind::OsExtension { - for pkg in &ext.packages { - if base_pkgs.contains_key(pkg.as_str()) { -@@ -264,10 +276,17 @@ extensions: - #[test] - fn basearch_filter() { - let buf = r###" -+repos: -+ - baserepo -+modules: -+ enable: -+ - virt:av - extensions: - bazboo: - packages: - - bazboo -+ repos: -+ - bazboo-repo - architectures: - - x86_64 - dodo: -@@ -276,13 +295,40 @@ extensions: - - dada - architectures: - - s390x -+ foo: -+ modules: -+ enable: -+ - foo:stable -+ packages: -+ - foo -+ repos: -+ - foo-repo -+ architectures: -+ - ppc64le - "###; - let mut input = std::io::BufReader::new(buf.as_bytes()); - let extensions = extensions_load_stream(&mut input, "x86_64", &base_rpmdb()).unwrap(); - assert!(extensions.get_os_extension_packages() == vec!["bazboo"]); -+ assert_eq!(extensions.get_repos().len(), 2); -+ assert_eq!(extensions.get_repos()[1], "bazboo-repo"); -+ let modules = extensions.modules.unwrap(); -+ assert_eq!(modules.enable.unwrap(), vec!["virt:av"]); -+ assert!(modules.install.is_none()); -+ - let mut input = std::io::BufReader::new(buf.as_bytes()); - let extensions = extensions_load_stream(&mut input, "s390x", &base_rpmdb()).unwrap(); - assert!(extensions.get_os_extension_packages() == vec!["dodo", "dada"]); -+ assert_eq!(extensions.get_repos().len(), 1); -+ assert_eq!(extensions.get_repos()[0], "baserepo"); -+ -+ let mut input = std::io::BufReader::new(buf.as_bytes()); -+ let extensions = extensions_load_stream(&mut input, "ppc64le", &base_rpmdb()).unwrap(); -+ assert_eq!(extensions.get_os_extension_packages(), vec!["foo"]); -+ assert_eq!(extensions.get_repos().len(), 2); -+ assert_eq!(extensions.get_repos()[1], "foo-repo"); -+ let modules = extensions.modules.unwrap(); -+ assert_eq!(modules.enable.unwrap(), vec!["foo:stable", "virt:av"]); -+ assert!(modules.install.is_none()); - } - - #[test] -diff --git a/rust/src/treefile.rs b/rust/src/treefile.rs -index 2c9af278..9f6c6581 100644 ---- a/rust/src/treefile.rs -+++ b/rust/src/treefile.rs -@@ -324,7 +324,7 @@ fn merge_hashset_field( - } - - /// Merge modules fields. --fn merge_modules(dest: &mut Option, src: &mut Option) { -+pub(crate) fn merge_modules(dest: &mut Option, src: &mut Option) { - if let Some(mut srcv) = src.take() { - if let Some(mut destv) = dest.take() { - merge_vec_field(&mut destv.enable, &mut srcv.enable); --- -2.31.1 - diff --git a/0001-move-ostree-parsing-to-daemon.patch b/0001-move-ostree-parsing-to-daemon.patch deleted file mode 100644 index 88aea9b..0000000 --- a/0001-move-ostree-parsing-to-daemon.patch +++ /dev/null @@ -1,50 +0,0 @@ -From d0d3e3f6e1e4710a49be2b159705e69fe8bafbc9 Mon Sep 17 00:00:00 2001 -From: Jonathan Lebon -Date: Tue, 2 Nov 2021 12:50:16 -0400 -Subject: [PATCH] Move `ostree://` parsing to daemon - -Follow-up to df8315a262 (#3157). - -GNOME Software uses the D-Bus API directly, not the CLI. So let's move -handling of `ostree://` there. - -The test added in #3157 will verify that we're parsing it correctly. - -Closes: #3192 ---- - src/app/rpmostree-builtin-rebase.cxx | 5 ----- - src/daemon/rpmostreed-transaction-types.cxx | 5 +++++ - 2 files changed, 5 insertions(+), 5 deletions(-) - -diff --git a/src/app/rpmostree-builtin-rebase.cxx b/src/app/rpmostree-builtin-rebase.cxx -index 2b434b438..902b7dcf0 100644 ---- a/src/app/rpmostree-builtin-rebase.cxx -+++ b/src/app/rpmostree-builtin-rebase.cxx -@@ -132,11 +132,6 @@ rpmostree_builtin_rebase (int argc, - } - (void)new_refspec_owned; /* Pacify static analysis */ - -- // We previously supported prefixing with ostree:// - so continue to parse this for now. -- // https://gitlab.gnome.org/GNOME/gnome-software/-/issues/1463#note_1279157 -- if (g_str_has_prefix (new_provided_refspec, "ostree://")) -- new_provided_refspec += strlen ("ostree://"); -- - RpmOstreeRefspecType refspectype; - if (!rpmostree_refspec_classify (new_provided_refspec, &refspectype, error)) - return FALSE; -diff --git a/src/daemon/rpmostreed-transaction-types.cxx b/src/daemon/rpmostreed-transaction-types.cxx -index a1cdf5ffa..dbe208a35 100644 ---- a/src/daemon/rpmostreed-transaction-types.cxx -+++ b/src/daemon/rpmostreed-transaction-types.cxx -@@ -68,6 +68,11 @@ change_origin_refspec (GVariantDict *options, - gchar **out_new_refspec, - GError **error) - { -+ // We previously supported prefixing with ostree:// - so continue to parse this for now. -+ // https://gitlab.gnome.org/GNOME/gnome-software/-/issues/1463#note_1279157 -+ if (g_str_has_prefix (refspec, "ostree://")) -+ refspec += strlen ("ostree://"); -+ - RpmOstreeRefspecType refspectype; - if (!rpmostree_refspec_classify (refspec, &refspectype, error)) - return FALSE; diff --git a/rpm-ostree.spec b/rpm-ostree.spec index bc2d88a..8e0f240 100644 --- a/rpm-ostree.spec +++ b/rpm-ostree.spec @@ -3,7 +3,7 @@ Summary: Hybrid image/package system Name: rpm-ostree -Version: 2021.13 +Version: 2021.14 Release: 2%{?dist} License: LGPLv2+ URL: https://github.com/coreos/rpm-ostree @@ -11,8 +11,6 @@ URL: https://github.com/coreos/rpm-ostree # in the upstream git. It also contains vendored Rust sources. Source0: https://github.com/coreos/rpm-ostree/releases/download/v%{version}/rpm-ostree-%{version}.tar.xz -Patch01: 0001-move-ostree-parsing-to-daemon.patch - ExclusiveArch: %{rust_arches} BuildRequires: make @@ -223,6 +221,9 @@ $PYTHON autofiles.py > files.devel \ %files devel -f files.devel %changelog +* Wed Nov 17 2021 Colin Walters - 2021.14-2 +- https://github.com/coreos/rpm-ostree/releases/tag/v2021.14 + * Wed Nov 03 2021 Luca BRUNO - 2021.13-2 - Backport patch to fix F35 rebases through DBus https://github.com/coreos/rpm-ostree/pull/3199