forked from sig_core/toolkit
use pycdlib to get iso label
This commit is contained in:
parent
df4bb47691
commit
a4d6899601
@ -771,6 +771,7 @@ class IsoBuild:
|
|||||||
if not os.path.exists(lorax_path):
|
if not os.path.exists(lorax_path):
|
||||||
self.log.error(Color.FAIL + 'Lorax not found at all. This is considered fatal.')
|
self.log.error(Color.FAIL + 'Lorax not found at all. This is considered fatal.')
|
||||||
|
|
||||||
|
# do we need to do a hard exit here?
|
||||||
raise SystemExit()
|
raise SystemExit()
|
||||||
|
|
||||||
grafts = self._generate_graft_points(
|
grafts = self._generate_graft_points(
|
||||||
@ -779,7 +780,12 @@ class IsoBuild:
|
|||||||
self.iso_map['images'][y]['repos'],
|
self.iso_map['images'][y]['repos'],
|
||||||
reposcan=reposcan
|
reposcan=reposcan
|
||||||
)
|
)
|
||||||
self._extra_iso_local_config(a, y, grafts, work_root, volname)
|
try:
|
||||||
|
self._extra_iso_local_config(a, y, grafts, work_root)
|
||||||
|
except ValueError as exc:
|
||||||
|
self.log.error(Color.FAIL + f'An error occured while configuring extra ISO build {exc}')
|
||||||
|
self.log.error(Color.FAIL + f'Error: {exc}')
|
||||||
|
continue
|
||||||
|
|
||||||
if self.extra_iso_mode == 'local':
|
if self.extra_iso_mode == 'local':
|
||||||
self._extra_iso_local_run(a, y, work_root)
|
self._extra_iso_local_run(a, y, work_root)
|
||||||
@ -799,7 +805,7 @@ class IsoBuild:
|
|||||||
|
|
||||||
self._extra_iso_podman_run(arches_to_build, images_to_build_podman, work_root)
|
self._extra_iso_podman_run(arches_to_build, images_to_build_podman, work_root)
|
||||||
|
|
||||||
def _extra_iso_local_config(self, arch, image, grafts, work_root, volname):
|
def _extra_iso_local_config(self, arch, image, grafts, work_root):
|
||||||
"""
|
"""
|
||||||
Local ISO build configuration - This generates the configuration for
|
Local ISO build configuration - This generates the configuration for
|
||||||
both mock and podman entries
|
both mock and podman entries
|
||||||
@ -839,12 +845,15 @@ class IsoBuild:
|
|||||||
if self.updated_image:
|
if self.updated_image:
|
||||||
datestamp = '-' + self.updated_image_date
|
datestamp = '-' + self.updated_image_date
|
||||||
|
|
||||||
volid = f'{self.shortname}-{self.major_version}-{self.minor_version}{rclevel}-{arch}-{volname}'
|
volid = Idents.get_vol_id(boot_iso)
|
||||||
isoname = f'{self.shortname}-{self.release}{rclevel}{datestamp}-{arch}-{image}.iso'
|
isoname = f'{self.shortname}-{self.release}{rclevel}{datestamp}-{arch}-{image}.iso'
|
||||||
generic_isoname = f'{self.shortname}-{arch}-{image}.iso'
|
generic_isoname = f'{self.shortname}-{arch}-{image}.iso'
|
||||||
latest_isoname = f'{self.shortname}-{self.major_version}-latest-{arch}-{image}.iso'
|
latest_isoname = f'{self.shortname}-{self.major_version}-latest-{arch}-{image}.iso'
|
||||||
required_pkgs = self.iso_map['lorax']['required_pkgs']
|
required_pkgs = self.iso_map['lorax']['required_pkgs']
|
||||||
|
|
||||||
|
if not volid:
|
||||||
|
raise ValueError('Volume ID could not be determined')
|
||||||
|
|
||||||
lorax_pkg_cmd = '/usr/bin/dnf install {} -y {}'.format(
|
lorax_pkg_cmd = '/usr/bin/dnf install {} -y {}'.format(
|
||||||
' '.join(required_pkgs),
|
' '.join(required_pkgs),
|
||||||
log_path_command
|
log_path_command
|
||||||
@ -882,6 +891,8 @@ class IsoBuild:
|
|||||||
'iso_level': self.iso_map['iso_level'],
|
'iso_level': self.iso_map['iso_level'],
|
||||||
}
|
}
|
||||||
|
|
||||||
|
self.log.info(Color.INFO + f'boot.iso volume name: {volid}')
|
||||||
|
|
||||||
# Generate a xorriso compatible dialog
|
# Generate a xorriso compatible dialog
|
||||||
with open(grafts) as xp:
|
with open(grafts) as xp:
|
||||||
xorpoint = xp.read()
|
xorpoint = xp.read()
|
||||||
|
@ -13,6 +13,7 @@ import boto3
|
|||||||
import xmltodict
|
import xmltodict
|
||||||
import productmd.treeinfo
|
import productmd.treeinfo
|
||||||
import productmd.composeinfo
|
import productmd.composeinfo
|
||||||
|
import pycdlib
|
||||||
import empanadas
|
import empanadas
|
||||||
import kobo.shortcuts
|
import kobo.shortcuts
|
||||||
from empanadas.common import Color
|
from empanadas.common import Color
|
||||||
@ -24,8 +25,13 @@ class ArchCheck:
|
|||||||
archfile = {
|
archfile = {
|
||||||
'x86_64': [
|
'x86_64': [
|
||||||
'isolinux/vmlinuz',
|
'isolinux/vmlinuz',
|
||||||
|
'images/efiboot.img',
|
||||||
|
'images/eltorito.img',
|
||||||
'images/grub.conf',
|
'images/grub.conf',
|
||||||
'EFI/BOOT/BOOTX64.EFI'
|
'images/install.img',
|
||||||
|
'boot/grub2/grub.cfg',
|
||||||
|
'EFI/BOOT/BOOTX64.EFI',
|
||||||
|
'EFI/BOOT/grub.cfg'
|
||||||
],
|
],
|
||||||
'aarch64': [
|
'aarch64': [
|
||||||
'EFI/BOOT/BOOTAA64.EFI'
|
'EFI/BOOT/BOOTAA64.EFI'
|
||||||
@ -1337,10 +1343,21 @@ class Idents:
|
|||||||
return False
|
return False
|
||||||
|
|
||||||
@staticmethod
|
@staticmethod
|
||||||
def get_vol_id(opts):
|
def get_vol_id(i):
|
||||||
"""
|
"""
|
||||||
Gets a volume ID
|
Gets a volume ID of a given ISO
|
||||||
"""
|
"""
|
||||||
|
iso = pycdlib.PyCdlib()
|
||||||
|
try:
|
||||||
|
iso.open(i)
|
||||||
|
except pycdlib.pycdlibexception.PyCdlibInvalidISO as exc:
|
||||||
|
print(exc)
|
||||||
|
return False
|
||||||
|
|
||||||
|
pvd = iso.pvd
|
||||||
|
volume_id = pvd.volume_identifier.decode('UTF-8').strip()
|
||||||
|
iso.close()
|
||||||
|
return volume_id
|
||||||
|
|
||||||
class Syncs:
|
class Syncs:
|
||||||
"""
|
"""
|
||||||
|
24
iso/empanadas/poetry.lock
generated
24
iso/empanadas/poetry.lock
generated
@ -206,6 +206,17 @@ files = [
|
|||||||
{file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
|
{file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"},
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "file-magic"
|
||||||
|
version = "0.4.1"
|
||||||
|
description = "Python front end for libmagic(3)"
|
||||||
|
optional = false
|
||||||
|
python-versions = ">=2.7"
|
||||||
|
files = [
|
||||||
|
{file = "file-magic-0.4.1.tar.gz", hash = "sha256:a91d1483117f7ed48cd0238ad9be36b04824d57e9c38ea7523113989e81b9c53"},
|
||||||
|
{file = "file_magic-0.4.1-py3-none-any.whl", hash = "sha256:cb9496a1656baf75cadd771479f63b53081095e968d0be72b9b7a7ed538e4fb8"},
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "gitdb"
|
name = "gitdb"
|
||||||
version = "4.0.11"
|
version = "4.0.11"
|
||||||
@ -443,6 +454,17 @@ files = [
|
|||||||
{file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"},
|
{file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"},
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "pycdlib"
|
||||||
|
version = "1.14.0"
|
||||||
|
description = "Pure python ISO manipulation library"
|
||||||
|
optional = false
|
||||||
|
python-versions = "*"
|
||||||
|
files = [
|
||||||
|
{file = "pycdlib-1.14.0-py2.py3-none-any.whl", hash = "sha256:a905827335f0066af3fd416c5cf9b1f29dffaf4d0914b714555213d1809f38d4"},
|
||||||
|
{file = "pycdlib-1.14.0.tar.gz", hash = "sha256:8ec306b31d9c850f28c5fda52438d904edd1e8fcf862c5ffd756272efac9f422"},
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "pytest"
|
name = "pytest"
|
||||||
version = "5.4.3"
|
version = "5.4.3"
|
||||||
@ -695,4 +717,4 @@ type = ["pytest-mypy"]
|
|||||||
[metadata]
|
[metadata]
|
||||||
lock-version = "2.0"
|
lock-version = "2.0"
|
||||||
python-versions = ">=3.9,<4"
|
python-versions = ">=3.9,<4"
|
||||||
content-hash = "331e1b11d9e6285ee16d66f8658ca7df0d247054f27a9de1e560fd017d86bb73"
|
content-hash = "60742cc3e07d8fe7b8bbe48db7be51cb2b5e09c194eedb0c4aef064f2d2c5eba"
|
||||||
|
@ -18,6 +18,8 @@ requests = "^2.32.2"
|
|||||||
kobo = "^0.37.0"
|
kobo = "^0.37.0"
|
||||||
attrs = "^24.2.0"
|
attrs = "^24.2.0"
|
||||||
GitPython = ">=3.1.30"
|
GitPython = ">=3.1.30"
|
||||||
|
file-magic = ">=0.4.0"
|
||||||
|
pycdlib = ">=1.14.0"
|
||||||
|
|
||||||
[tool.poetry.dev-dependencies]
|
[tool.poetry.dev-dependencies]
|
||||||
pytest = "~5"
|
pytest = "~5"
|
||||||
|
Loading…
Reference in New Issue
Block a user