Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix Fedora 40 Ci Bugs #4937

Merged
merged 3 commits into from
May 3, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 4 additions & 4 deletions ci/test-container.sh
Original file line number Diff line number Diff line change
Expand Up @@ -56,19 +56,19 @@ versionid=$(. /usr/lib/os-release && echo $VERSION_ID)

# Test overrides
case $versionid in
38)
40)
url_suffix=2.16.2/2.fc39/x86_64/ignition-2.16.2-2.fc39.x86_64.rpm
# 2.15.0-3
koji_url="https://koji.fedoraproject.org/koji/buildinfo?buildID=2158585"
koji_kernel_url="https://koji.fedoraproject.org/koji/buildinfo?buildID=2174317"
kver=6.2.8
koji_kernel_url="https://koji.fedoraproject.org/koji/buildinfo?buildID=2435097"
kver=6.8.5
krev=300
;;
39)
url_suffix=2.16.2/1.fc39/x86_64/ignition-2.16.2-1.fc39.x86_64.rpm
# 2.15.0-3
koji_url="https://koji.fedoraproject.org/koji/buildinfo?buildID=2158585"
koji_kernel_url=https://koji.fedoraproject.org/koji/buildinfo?buildID=2294111
koji_kernel_url="https://koji.fedoraproject.org/koji/buildinfo?buildID=2294111"
kver=6.5.5
krev=300
;;
Expand Down
33 changes: 0 additions & 33 deletions docs/administrator-handbook.md
Original file line number Diff line number Diff line change
Expand Up @@ -105,39 +105,6 @@ The install --force-replacefiles option allows this.
# rpm-ostree install --force-replacefiles <pkg>
```

### Modularity

rpm-ostree provides experimental support for modules, a way for the distribution
to ship multiple versions (or "streams") of the same software.

A module can have multiple streams, and each stream can have multiple profiles.
A profile is a set of packages for common use cases (e.g. you can have a
"client" and "server" profile, each installing different packages).

`rpm-ostree ex module enable` enables a module stream and allow you to
individually pick packages to `rpm-ostree install` from that stream.
`rpm-ostree ex module install` installs module stream profiles directly.

For example, to enable the `cri-o:1.20` module stream, use:

```
# rpm-ostree ex module enable cri-o:1.20
```

You can then `rpm-ostree install` individual packages from the enabled module.

Or to install a predefined profile, use e.g.:

```
# rpm-ostree ex module install cri-o:1.20/default
```

For more information about modularity, see
[the Fedora documentation](https://docs.fedoraproject.org/en-US/modularity). In
particular,
[this page](https://docs.fedoraproject.org/en-US/modularity/installing-modules/#_installing_packages)
provides sample syntax invocations.

### Rebasing

```
Expand Down
8 changes: 6 additions & 2 deletions rust/src/client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -336,7 +336,7 @@ pub(crate) fn confirm_or_abort() -> CxxResult<()> {
#[cfg(test)]
mod tests {
use super::*;
use std::env;
use std::{env, path::Path};

#[test]
fn test_is_src_rpm() {
Expand All @@ -358,6 +358,10 @@ mod tests {

#[test]
fn test_running_in_container() {
assert_eq!(env::var("container").is_ok(), running_in_container());
// See also https://bugzilla.redhat.com/show_bug.cgi?id=2278652
let container = env::var_os("container").is_some()
|| Path::new("/run/.containerenv").exists()
|| Path::new("/.dockerenv").exists();
assert_eq!(container, running_in_container());
}
}
4 changes: 0 additions & 4 deletions src/app/rpmostree-builtin-ex.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -40,10 +40,6 @@ static RpmOstreeCommand ex_subcommands[]
(RpmOstreeBuiltinFlags)(RPM_OSTREE_BUILTIN_FLAG_HIDDEN
| RPM_OSTREE_BUILTIN_FLAG_CONTAINER_CAPABLE),
"Rebuild system based on configuration", rpmostree_ex_builtin_rebuild },
/* To graduate out of experimental, simply revert:
* https://github.com/coreos/rpm-ostree/pull/3078 */
{ "module", static_cast<RpmOstreeBuiltinFlags> (0), "Commands to install/uninstall modules",
rpmostree_ex_builtin_module },
{ NULL, (RpmOstreeBuiltinFlags)0, NULL, NULL } };

/*
Expand Down
2 changes: 1 addition & 1 deletion src/app/rpmostree-clientlib.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -770,7 +770,7 @@ rpmostree_print_gpg_info (GVariant *signatures, gboolean verbose, guint max_key_
{
/* +2 for initial leading spaces */
const guint gpgpad = max_key_len + 2 + strlen (": ");
char gpgspaces[gpgpad + 1];
g_autofree char *gpgspaces = (char *)g_malloc (gpgpad + 1);
memset (gpgspaces, ' ', gpgpad);
gpgspaces[gpgpad] = '\0';

Expand Down
42 changes: 1 addition & 41 deletions src/libpriv/rpmostree-core.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -277,12 +277,6 @@ rpmostree_context_new_compose (int userroot_dfd, OstreeRepo *repo,

rpmostree_context_set_cache_root (ret, userroot_dfd);

auto platform_module = treefile_rs.get_platform_module ();
if (!platform_module.empty ())
{
dnf_context_set_platform_module (ret->dnfctx, platform_module.c_str ());
}

// The ref needs special handling as it gets variable-substituted.
auto ref = ret->treefile_rs->get_ref ();
if (ref.length () > 0)
Expand Down Expand Up @@ -1856,12 +1850,6 @@ rpmostree_context_prepare (RpmOstreeContext *self, GCancellable *cancellable, GE
return FALSE;
}

/* All modules are opt-in, so start off with everything disabled. We'll enable/install
* user-provided ones down below. We need to do this before `find_locked_packages` so that it can
* find non-modular versions of a package. */
if (!dnf_context_module_disable_all (dnfctx, error))
return FALSE;

/* Now that we're done adding stuff to the sack, we can actually mark pkgs for install and
* uninstall. We don't want to mix those two steps, otherwise we might confuse libdnf,
* see: https://github.com/rpm-software-management/libdnf/issues/700 */
Expand Down Expand Up @@ -2039,36 +2027,8 @@ rpmostree_context_prepare (RpmOstreeContext *self, GCancellable *cancellable, GE
}
}

gboolean we_got_modules = FALSE;
if (!modules_enable.empty ())
{
g_auto (GStrv) modules = rpmostree_cxx_string_vec_to_strv (modules_enable);
if (!dnf_context_module_enable (dnfctx, (const char **)modules, error))
return FALSE;
we_got_modules = TRUE;
}

if (!modules_install.empty ())
{
g_auto (GStrv) modules = rpmostree_cxx_string_vec_to_strv (modules_install);
if (!dnf_context_module_install (dnfctx, (const char **)modules, error))
return glnx_prefix_error (error, "Installing modules");
we_got_modules = TRUE;
}

/* By default, when enabling a module, trying to install a package "foo" will
* always prioritize the "foo" in the module. This is what we want, but in the
* case of pinned repo packages, we want to be able to override that. So we
* need to fiddle with the modular excludes. */
if (we_got_modules && pinned_pkgs && dnf_packageset_count (pinned_pkgs) > 0)
{
g_autoptr (DnfPackageSet) excludes = dnf_sack_get_module_excludes (sack);
g_autoptr (DnfPackageSet) cloned_pkgs = dnf_packageset_clone (pinned_pkgs);
Map *m = dnf_packageset_get_map (cloned_pkgs);
map_invertall (m);
map_and (dnf_packageset_get_map (excludes), m);
dnf_sack_set_module_excludes (sack, excludes);
}
return glnx_throw (error, "Modularity is no longer supported");

/* And finally, handle packages to install from all enabled repos */
g_autoptr (GPtrArray) missing_pkgs = NULL;
Expand Down
4 changes: 2 additions & 2 deletions tests/compose.sh
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,7 @@ set -euo pipefail

# freeze on a specific commit for tests for reproducibility and since it should
# always work to target older treefiles
FEDORA_COREOS_CONFIG_COMMIT=ce65013fcb9f10bfee1c7c1c27477c6c6ce676b3
FEDORA_COREOS_CONFIG_COMMIT=83f419c54bad614d70149830cc3b25fe4b93433e

dn=$(cd "$(dirname "$0")" && pwd)
topsrcdir=$(cd "$dn/.." && pwd)
Expand Down Expand Up @@ -49,7 +49,7 @@ if [ ! -d compose-cache ]; then
# default; we'll want it to test `install-langs`. This also means that we have
# to add updates-archive to the repo list.
# Also neuter OSTree layers; we don't re-implement cosa's auto-layering sugar
curl -LO https://src.fedoraproject.org/rpms/fedora-repos/raw/f37/f/fedora-updates-archive.repo
curl -LO https://src.fedoraproject.org/rpms/fedora-repos/raw/f40/f/fedora-updates-archive.repo
python3 -c '
import sys, json
y = json.load(sys.stdin)
Expand Down
43 changes: 0 additions & 43 deletions tests/compose/test-basic-unified.sh
Original file line number Diff line number Diff line change
Expand Up @@ -11,13 +11,6 @@ treefile_append "repos" '["test-repo"]'
build_rpm foobar recommends foobar-rec post "test -f /run/ostree-booted"
build_rpm foobar-rec

# check that even a modular version of a pinned pkg is ignored, even if it's
# higher version
build_rpm foobar version 99.9
build_module foo \
stream foo \
rpm foobar-0:99.9-1.x86_64

uinfo_cmd add TEST-SEC-LOW security low
build_rpm vuln-pkg uinfo TEST-SEC-LOW
uinfo_cmd add-ref TEST-SEC-LOW 1 http://example.com/vuln1 "CVE-12-34 vuln1"
Expand All @@ -33,11 +26,6 @@ tf['repo-packages'] = [{
}]
"

treefile_pyedit "tf['modules'] = {
'enable': [],
'install': [],
}"

# also test repovar substitution
treefile_pyedit "tf['repovars'] = {
'foobar': 'yumrepo',
Expand All @@ -46,28 +34,6 @@ treefile_pyedit "tf['repovars'] = {
sed -i -e 's,baseurl=\(.*\)/yumrepo,baseurl=\1/$foobar,' yumrepo.repo
assert_file_has_content_literal yumrepo.repo '$foobar'

build_rpm foomodular requires foomodular-ext
build_rpm foomodular-ext
build_rpm foomodular-optional
build_module foomodular \
stream mystream \
profile myprof:foomodular \
rpm foomodular-0:1.0-1.x86_64 \
rpm foomodular-ext-0:1.0-1.x86_64 \
rpm foomodular-optional-0:1.0-1.x86_64
treefile_pyedit "tf['modules']['install'] += ['foomodular:mystream/myprof']"

build_rpm barmodular requires barmodular-ext
build_rpm barmodular-ext
build_rpm barmodular-optional
build_module barmodular \
stream latest \
rpm barmodular-0:1.0-1.x86_64 \
rpm barmodular-ext-0:1.0-1.x86_64 \
rpm barmodular-optional-0:1.0-1.x86_64
treefile_pyedit "tf['modules']['enable'] += ['barmodular:latest']"
treefile_append "packages" '["barmodular"]'

# Test --print-only. We also
# just in this test (for now) use ${basearch} to test substitution.
# shellcheck disable=SC2016
Expand Down Expand Up @@ -164,15 +130,6 @@ assert_not_file_has_content_literal db-diff-adv.txt TEST-SEC-LOW
assert_file_has_content_literal db-diff-adv.txt TEST-SEC-CRIT
echo "ok db diff --advisories"

rpm-ostree db list --repo="${repo}" "${treeref}" > db-list.txt
assert_file_has_content_literal db-list.txt foomodular-1.0-1.x86_64
assert_file_has_content_literal db-list.txt foomodular-ext-1.0-1.x86_64
assert_not_file_has_content_literal db-list.txt foomodular-optional
assert_file_has_content_literal db-list.txt barmodular-1.0-1.x86_64
assert_file_has_content_literal db-list.txt barmodular-ext-1.0-1.x86_64
assert_not_file_has_content_literal db-list.txt barmodular-optional
echo "ok modules"

build_rpm dodo-base
build_rpm dodo requires dodo-base
build_rpm solitaire
Expand Down
2 changes: 1 addition & 1 deletion tests/kolainst/destructive/client-layering-upgrade
Original file line number Diff line number Diff line change
Expand Up @@ -20,7 +20,7 @@ set -xeuo pipefail

. /etc/os-release
case $VERSION_ID in
39) kernel_release=6.5.6-300.fc39.x86_64
40) kernel_release=6.5.6-300.fc39.x86_64
koji_kernel_url="https://koji.fedoraproject.org/koji/buildinfo?buildID=2302642"
;;
*) echo "Unsupported Fedora version: $VERSION_ID"
Expand Down
8 changes: 4 additions & 4 deletions tests/vmcheck/test-layering-scripts.sh
Original file line number Diff line number Diff line change
Expand Up @@ -149,11 +149,11 @@ vm_rpmostree cleanup -pr
# File triggers are Fedora+
if ! vm_cmd grep -q 'ID=.*centos' /etc/os-release; then
# We use /usr/share/licenses since it's small predictable content
license_combos="zlib-rpm systemd-tar-rpm sed-tzdata"
license_un_combos="zlib systemd-rpm"
license_combos="which-rpm systemd-tar-rpm sed-tzdata"
license_un_combos="which systemd-rpm"
vm_build_rpm scriptpkg4 \
transfiletriggerin "/usr/share/licenses/zlib /usr/share/licenses/rpm" 'sort >/usr/share/transfiletriggerin-license-zlib-rpm.txt' \
transfiletriggerun "/usr/share/licenses/zlib" 'sort >/usr/share/transfiletriggerun-license-zlib.txt' \
transfiletriggerin "/usr/share/licenses/which /usr/share/licenses/rpm" 'sort >/usr/share/transfiletriggerin-license-which-rpm.txt' \
transfiletriggerun "/usr/share/licenses/which" 'sort >/usr/share/transfiletriggerun-license-which.txt' \
transfiletriggerin2 "/usr/share/licenses/xz/COPYING" 'cat > /usr/share/transfiletriggerin-license-file-xz.txt'
vm_build_rpm scriptpkg5 \
transfiletriggerin "/usr/share/licenses/systemd /usr/share/licenses/rpm /usr/share/licenses/tar" 'sort >/usr/share/transfiletriggerin-license-systemd-tar-rpm.txt' \
Expand Down
6 changes: 3 additions & 3 deletions tests/vmcheck/test-override-kernel.sh
Original file line number Diff line number Diff line change
Expand Up @@ -41,11 +41,11 @@ versionid=${versionid:11} # trim off VERSION_ID=
current=$(vm_get_booted_csum)
vm_cmd rpm-ostree db list "${current}" > current-dblist.txt
case $versionid in
38) kernel_release=6.2.9-300.fc38.x86_64
koji_kernel_url="https://koji.fedoraproject.org/koji/buildinfo?buildID=2178613"
40) kernel_release=6.5.6-300.fc39.x86_64
koji_kernel_url=https://koji.fedoraproject.org/koji/buildinfo?buildID=2302642
;;
39) kernel_release=6.5.6-300.fc39.x86_64
koji_kernel_url=https://koji.fedoraproject.org/koji/buildinfo?buildID=2302642
koji_kernel_url="https://koji.fedoraproject.org/koji/buildinfo?buildID=2302642"
;;
*) assert_not_reached "Unsupported Fedora version: $versionid";;
esac
Expand Down
13 changes: 6 additions & 7 deletions tests/vmcheck/test-override-replace-2.sh
Original file line number Diff line number Diff line change
Expand Up @@ -159,17 +159,16 @@ case $versionid in
# XXX: this isn't actually the gold selinux; that one is too old for
# container-selinux and moby-engine. rather than trying to change multiple
# packages, we use one that's in coreos-pool since that also prevents GC
38)
evr=38.25-1.fc38
koji_url='https://koji.fedoraproject.org/koji/buildinfo?buildID=2274128'
# XXX: we need to replace container-selinux too for dep reasons
hack='https://koji.fedoraproject.org/koji/buildinfo?buildID=2281229'
;;
39)
40)
evr=38.28-1.fc39
koji_url=https://koji.fedoraproject.org/koji/buildinfo?buildID=2291271
hack=https://koji.fedoraproject.org/koji/buildinfo?buildID=2291519
;;
39)
evr=38.28-1.fc39
koji_url="https://koji.fedoraproject.org/koji/buildinfo?buildID=2291271"
hack="https://koji.fedoraproject.org/koji/buildinfo?buildID=2291519"
;;
*) assert_not_reached "Unsupported Fedora version: $versionid";;
esac
assert_not_file_has_content current-dblist.txt selinux-policy-$evr
Expand Down
Loading