Skip to content

Commit 04269e1

Browse files
authored
Merge pull request #2744 from OSInside/fix_ppc_live_iso
Lookup CHRP loader instead of using a static name
2 parents fdcc309 + 8223834 commit 04269e1

File tree

6 files changed

+102
-5
lines changed

6 files changed

+102
-5
lines changed
Lines changed: 49 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,49 @@
1+
<?xml version="1.0" encoding="utf-8"?>
2+
3+
<image schemaversion="7.5" name="kiwi-test-image-live">
4+
<description type="system">
5+
<author>Marcus Schaefer</author>
6+
<contact>[email protected]</contact>
7+
<specification>Fedora Rawhide Live</specification>
8+
</description>
9+
<preferences>
10+
<version>2.0.0</version>
11+
<packagemanager>dnf5</packagemanager>
12+
<bootsplash-theme>charge</bootsplash-theme>
13+
<bootloader-theme>breeze</bootloader-theme>
14+
<locale>en_US</locale>
15+
<keytable>us</keytable>
16+
<timezone>UTC</timezone>
17+
<rpm-check-signatures>false</rpm-check-signatures>
18+
</preferences>
19+
<preferences>
20+
<type image="iso" flags="overlay" firmware="ofw" hybridpersistent_filesystem="ext4" hybridpersistent="true" kernelcmdline="console=ttyS0">
21+
<bootloader name="grub2" console="serial" timeout="10"/>
22+
</type>
23+
</preferences>
24+
<users>
25+
<user password="$1$wYJUgpM5$RXMMeASDc035eX.NbYWFl0" home="/root" name="root" groups="root"/>
26+
</users>
27+
<repository type="rpm-md">
28+
<source path="obsrepositories:/"/>
29+
</repository>
30+
<packages type="image">
31+
<package name="grub2"/>
32+
<package name="grubby"/>
33+
<package name="kernel"/>
34+
<package name="plymouth-theme-charge"/>
35+
<package name="grub2-breeze-theme"/>
36+
<package name="selinux-policy-targeted"/>
37+
<package name="dhclient"/>
38+
<package name="glibc-all-langpacks"/>
39+
<package name="vim"/>
40+
<package name="tzdata"/>
41+
<package name="NetworkManager"/>
42+
</packages>
43+
<packages type="bootstrap">
44+
<package name="filesystem"/>
45+
<package name="basesystem"/>
46+
<package name="fedora-release"/>
47+
<package name="dracut-kiwi-live"/>
48+
</packages>
49+
</image>

helper/build_status.sh

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ for project in \
88
Virtualization:Appliances:SelfContained:universal \
99
Virtualization:Appliances:Images:Testing_x86:tumbleweed \
1010
Virtualization:Appliances:Images:Testing_x86:rawhide \
11+
Virtualization:Appliances:Images:Testing_ppc:rawhide \
1112
Virtualization:Appliances:Images:Testing_x86:leap \
1213
Virtualization:Appliances:Images:Testing_x86:centos \
1314
Virtualization:Appliances:Images:Testing_x86:fedora \

kiwi/bootloader/config/grub2.py

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -975,12 +975,15 @@ def _setup_chrp_config(self, mbrid):
975975
<chrp-boot>
976976
<description>{os_name}</description>
977977
<os-name>{os_name}</os-name>
978-
<boot-script>boot &device;:1,\\boot\\grub2\\powerpc-ieee1275\\grub.elf</boot-script>
978+
<boot-script>boot &device;:1,\\boot\\grub2\\powerpc-ieee1275\\{chrp_loader}</boot-script>
979979
</chrp-boot>
980980
''').strip() + os.linesep
981981
with open(chrp_bootinfo_file, 'w') as chrp_bootinfo:
982982
chrp_bootinfo.write(
983-
chrp_config.format(os_name=self.get_menu_entry_install_title())
983+
chrp_config.format(
984+
os_name=self.get_menu_entry_install_title(),
985+
chrp_loader=Defaults.get_grub_chrp_loader(self.boot_dir)
986+
)
984987
)
985988

986989
def _setup_platform_image(self, mbrid, lookup_path=None):

kiwi/defaults.py

Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -975,6 +975,29 @@ def get_unsigned_grub_loader(
975975
return unsigned_grub_file
976976
return None
977977

978+
@staticmethod
979+
def get_grub_chrp_loader(boot_path: str) -> str:
980+
"""
981+
Lookup CHRP boot loader (ppc)
982+
983+
:param string boot_path: boot path
984+
985+
:return: file base name
986+
987+
:rtype: str
988+
"""
989+
for chrp_loader in ['grub.elf', 'core.elf']:
990+
for grub_chrp in glob.iglob(
991+
os.sep.join(
992+
[boot_path, 'boot/grub*/powerpc-ieee1275', chrp_loader]
993+
)
994+
):
995+
log.info(f'Found CHRP loader at: {grub_chrp}')
996+
return os.path.basename(grub_chrp)
997+
raise KiwiBootLoaderGrubDataError(
998+
f'CHRP loader not found in {boot_path}'
999+
)
1000+
9781001
@staticmethod
9791002
def get_grub_platform_core_loader(root_path):
9801003
"""

test/unit/bootloader/config/grub2_test.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1749,6 +1749,7 @@ def side_effect_glob(arg):
17491749
@patch('kiwi.bootloader.config.base.BootLoaderConfigBase.get_boot_path')
17501750
@patch('kiwi.bootloader.config.grub2.Defaults.get_unsigned_grub_loader')
17511751
@patch('kiwi.bootloader.config.grub2.Defaults.get_grub_platform_core_loader')
1752+
@patch('kiwi.bootloader.config.grub2.Defaults.get_grub_chrp_loader')
17521753
@patch('kiwi.bootloader.config.grub2.Command.run')
17531754
@patch('kiwi.bootloader.config.grub2.Path.which')
17541755
@patch('kiwi.bootloader.config.grub2.Path.create')
@@ -1758,10 +1759,11 @@ def side_effect_glob(arg):
17581759
def test_setup_install_boot_images_ppc(
17591760
self, mock_shutil_copy2, mock_exists, mock_sync,
17601761
mock_Path_create, mock_Path_which, mock_command,
1761-
mock_get_grub_platform_core_loader, mock_get_unsigned_grub_loader,
1762-
mock_get_boot_path
1762+
mock_get_grub_chrp_loader, mock_get_grub_platform_core_loader,
1763+
mock_get_unsigned_grub_loader, mock_get_boot_path
17631764
):
17641765
Defaults.set_platform_name('ppc64le')
1766+
mock_get_grub_chrp_loader.return_value = 'grub.elf'
17651767
mock_get_grub_platform_core_loader.return_value = None
17661768
mock_Path_which.return_value = '/path/to/grub2-mkimage'
17671769
mock_get_boot_path.return_value = '/boot'

test/unit/defaults_test.py

Lines changed: 20 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,18 @@
33

44
import sys
55
from unittest.mock import MagicMock
6-
from pytest import fixture
6+
from pytest import (
7+
fixture, raises
8+
)
79

810
from .test_helper import argv_kiwi_tests
911

1012
from kiwi.defaults import Defaults
1113
from kiwi.defaults import grub_loader_type
1214
from kiwi.defaults import shim_loader_type
1315

16+
from kiwi.exceptions import KiwiBootLoaderGrubDataError
17+
1418

1519
class TestDefaults:
1620
@fixture(autouse=True)
@@ -222,3 +226,18 @@ def test_get_min_volume_mbytes(self):
222226
assert Defaults.get_min_volume_mbytes('btrfs') == 120
223227
assert Defaults.get_min_volume_mbytes('xfs') == 300
224228
assert Defaults.get_min_volume_mbytes('some') == 30
229+
230+
@patch('glob.iglob')
231+
def test_get_grub_chrp_loader(self, mock_glob_iglob):
232+
mock_glob_iglob.return_value = []
233+
with raises(KiwiBootLoaderGrubDataError):
234+
Defaults.get_grub_chrp_loader('some-boot')
235+
236+
mock_glob_iglob.reset_mock()
237+
mock_glob_iglob.return_value = [
238+
'/some-boot/boot/grub2/powerpc-ieee1275/grub.elf'
239+
]
240+
assert Defaults.get_grub_chrp_loader('some-boot') == 'grub.elf'
241+
mock_glob_iglob.assert_called_once_with(
242+
'some-boot/boot/grub*/powerpc-ieee1275/grub.elf'
243+
)

0 commit comments

Comments
 (0)