imagectl: Update mode for / if needed

This works around https://github.com/coreos/rpm-ostree/pull/5322
so we can ship the fix faster.

Signed-off-by: Colin Walters <walters@verbum.org>
This commit is contained in:
Colin Walters 2025-03-04 17:21:30 -05:00
parent 6a04cddf98
commit ccb2c22ecb
2 changed files with 10 additions and 0 deletions

View file

@ -4,6 +4,7 @@ import os
import os.path as path
import subprocess
import shutil
import stat
import json
import argparse
import sys
@ -30,6 +31,11 @@ def run_build_rootfs(args):
rpmostree_argv.extend([f'/{MANIFESTDIR}/{manifest_path}', target])
# Perform the build
subprocess.run(rpmostree_argv, check=True)
# Work around https://github.com/coreos/rpm-ostree/pull/5322
root_mode = os.lstat(target).st_mode
if (root_mode & stat.S_IXOTH) == 0:
print("Updating rootfs mode")
os.chmod(target, root_mode | (0o555))
# And run the bootc linter for good measure
subprocess.run([
'bootc',

4
tests/rootfs/cases/root-mode Executable file
View file

@ -0,0 +1,4 @@
#!/bin/bash
set -xeuo pipefail
# Verify we didn't lose the executable bit for others on /
test $(($(stat -c '0%a' .) % 2)) = 1