omegafox/patches/ostree-mozboot.patch

100 lines
3.6 KiB
Diff

diff --git a/python/mozboot/mozboot/centosfedora.py b/python/mozboot/mozboot/centosfedora.py
index 37aa0e8eaa..7e7cf84481 100644
--- a/python/mozboot/mozboot/centosfedora.py
+++ b/python/mozboot/mozboot/centosfedora.py
@@ -21,9 +21,8 @@ class CentOSFedoraBootstrapper(LinuxBootstrapper, BaseBootstrapper):
def install_packages(self, packages):
if self.version >= 33 and "perl" in packages:
packages.append("perl-FindBin")
- # watchman is not available on centos/rocky
- if self.distro in ("centos", "rocky", "oracle"):
- packages = [p for p in packages if p != "watchman"]
+ # watchman is not available on centos/rocky/f42
+ packages = [p for p in packages if p != "watchman"]
self.dnf_install(*packages)
def upgrade_mercurial(self, current):
@@ -33,7 +32,41 @@ class CentOSFedoraBootstrapper(LinuxBootstrapper, BaseBootstrapper):
self.dnf_update("mercurial")
def dnf_install(self, *packages):
- if which("dnf"):
+ if which("rpm-ostree"):
+
+ def not_installed(package):
+ is_installed = subprocess.run(
+ ["rpm", "-q", package],
+ stdout=subprocess.DEVNULL,
+ stderr=subprocess.DEVNULL,
+ )
+ return is_installed.returncode !=0
+
+ packages = list(filter(not_installed, packages))
+ if len(packages) == 0:
+ return
+
+ command = ["rpm-ostree", "install"]
+ command.extend(packages)
+ subprocess.run(command, check=True)
+
+ reboot_confirmation = (
+ input(
+ "Packages installed successfully. "
+ "A system reboot is required. "
+ "Do you want to reboot now? (y/n): "
+ ).strip().lower()
+ )
+
+ if reboot_confirmation == 'y':
+ print("Rebooting...")
+ subprocess.run(["systemctl", "reboot"])
+ else:
+ raise Exception(
+ f'Reboot deferred. Please reboot to continue mozboot.'
+ )
+
+ elif which("dnf"):
def not_installed(package):
# We could check for "Error: No matching Packages to list", but
@@ -68,7 +101,39 @@ class CentOSFedoraBootstrapper(LinuxBootstrapper, BaseBootstrapper):
self.run_as_root(command)
def dnf_update(self, *packages):
- if which("dnf"):
+ if which("rpm-ostree"):
+ command = ["rpm-ostree", "upgrade"]
+
+ result = subprocess.run(
+ command,
+ stdout=subprocess.PIPE,
+ stderr=subprocess.PIPE,
+ text=True,
+ check=True
+ )
+
+ output = result.stdout + result.stderr
+
+ if "No upgrade available" in output:
+ return
+ else:
+ reboot_confirmation = (
+ input(
+ "System upgraded successfully. "
+ "A system reboot is required to continue. "
+ "Do you want to reboot now? (y/n): "
+ ).strip().lower()
+ )
+
+ if reboot_confirmation == 'y':
+ print("Rebooting...")
+ subprocess.run(["systemctl", "reboot"])
+ else:
+ raise Exception(
+ f'Reboot deferred. Please reboot to continue mozboot.'
+ )
+
+ elif which("dnf"):
command = ["dnf", "update"]
else:
command = ["yum", "update"]