go.mod,vendor: update to images v0.177.0

This commit is contained in:
Michael Vogt 2025-08-18 13:27:13 +02:00 committed by Tomáš Hozza
parent c0cf23ded7
commit 36ccbf19b2
113 changed files with 61854 additions and 58639 deletions

View file

@ -40,8 +40,6 @@ image_types:
container:
filename: container.tar
image_func: container
build_pipelines: ["build"]
payload_pipelines: ["os", "container"]
exports: ["container"]
platforms:
- arch: "x86_64"
@ -53,12 +51,6 @@ image_types:
With that the "images" library can now create a "container"
image type that is available on x86_64 and only adds "bash".
For the build_pipelines, payload_pipelines, exports some
knowledge about the inner workings of osbuild is required,
it is recommended to use the existing image types as examples.
We are exploring infering the pipelines from `image_func`
information.
Now only a `data/repositories/simonos-1.json` file is needed
to make a complete new distro.

View file

@ -12,6 +12,149 @@
- "geolite2-country"
- "plymouth"
anaconda_pkgset: &anaconda_pkgset
include:
- "aajohan-comfortaa-fonts"
- "abattis-cantarell-fonts"
- "alsa-firmware"
- "alsa-tools-firmware"
- "anaconda"
- "anaconda-dracut"
- "anaconda-install-img-deps"
- "anaconda-widgets"
- "atheros-firmware"
- "audit"
- "bind-utils"
- "bitmap-fangsongti-fonts"
- "brcmfmac-firmware"
- "bzip2"
- "cryptsetup"
- "curl"
- "dbus-x11"
- "dejavu-sans-fonts"
- "dejavu-sans-mono-fonts"
- "device-mapper-persistent-data"
- "dmidecode"
- "dnf"
- "dracut-config-generic"
- "dracut-network"
- "efibootmgr"
- "ethtool"
- "fcoe-utils"
- "ftp"
- "gdb-gdbserver"
- "gdisk"
- "glibc-all-langpacks"
- "gnome-kiosk"
- "google-noto-sans-cjk-ttc-fonts"
- "grub2-tools"
- "grub2-tools-extra"
- "grub2-tools-minimal"
- "grubby"
- "gsettings-desktop-schemas"
- "hdparm"
- "hexedit"
- "hostname"
- "initscripts"
- "ipmitool"
- "iwlwifi-dvm-firmware"
- "iwlwifi-mvm-firmware"
- "jomolhari-fonts"
- "kacst-farsi-fonts"
- "kacst-qurn-fonts"
- "kbd"
- "kbd-misc"
- "kdump-anaconda-addon"
- "kernel"
- "khmeros-base-fonts"
- "less"
- "libblockdev-lvm-dbus"
- "libibverbs"
- "libreport-plugin-bugzilla"
- "libreport-plugin-reportuploader"
- "librsvg2"
- "linux-firmware"
- "lldpad"
- "lohit-assamese-fonts"
- "lohit-bengali-fonts"
- "lohit-devanagari-fonts"
- "lohit-gujarati-fonts"
- "lohit-gurmukhi-fonts"
- "lohit-kannada-fonts"
- "lohit-odia-fonts"
- "lohit-tamil-fonts"
- "lohit-telugu-fonts"
- "lsof"
- "madan-fonts"
- "mtr"
- "mt-st"
- "net-tools"
- "nfs-utils"
- "nmap-ncat"
- "nm-connection-editor"
- "nss-tools"
- "openssh-clients"
- "openssh-server"
- "ostree"
- "pciutils"
- "perl-interpreter"
- "pigz"
- "plymouth"
- "prefixdevname"
- "python3-pyatspi"
- "rdma-core"
- "realtek-firmware"
- "rit-meera-new-fonts"
- "rng-tools"
- "rpcbind"
- "rpm-ostree"
- "rsync"
- "rsyslog"
- "selinux-policy-targeted"
- "sg3_utils"
- "sil-abyssinica-fonts"
- "sil-padauk-fonts"
- "sil-scheherazade-new-fonts"
- "smartmontools"
- "spice-vdagent"
- "strace"
- "systemd"
- "tar"
- "thai-scalable-waree-fonts"
- "tigervnc-server-minimal"
- "tigervnc-server-module"
- "udisks2"
- "udisks2-iscsi"
- "usbutils"
- "vim-minimal"
- "volume_key"
- "wget"
- "xfsdump"
- "xfsprogs"
- "xorg-x11-drivers"
- "xorg-x11-fonts-misc"
- "xorg-x11-server-Xorg"
- "xorg-x11-xauth"
- "metacity"
- "xrdb"
- "xz"
conditions:
"x86_64 specific anaconda pkgs":
when:
arch: "x86_64"
append:
include:
- "biosdevname"
- "dmidecode"
- "grub2-tools-efi"
- "memtest86+"
"aarch64 specific anaconda pkgs":
when:
arch: "aarch64"
append:
include:
- "dmidecode"
cloud_init_services: &cloud_init_services
- "cloud-init.service"
- "cloud-config.service"
@ -90,11 +233,35 @@
image_format: "raw"
packages:
<<: *x86_64_bios_platform_packages
firmware:
booting:
- "biosdevname"
- "grub2-pc-modules"
- "grub2-tools-efi"
- "grub2-tools"
- "grub2-tools-extra"
- "shim-ia32"
- "grub2-efi-ia32-cdboot"
firmware:
- "microcode_ctl"
- "amd-gpu-firmware"
- "amd-ucode-firmware"
- "atheros-firmware"
- "atmel-firmware"
- "b43-openfwwf"
- "brcmfmac-firmware"
- "intel-gpu-firmware"
- "iwlegacy-firmware"
- "iwlwifi-dvm-firmware"
- "iwlwifi-mvm-firmware"
- "microcode_ctl"
- "libertas-firmware"
- "linux-firmware"
- "mt7xxx-firmware"
- "nvidia-gpu-firmware"
- "nxpwireless-firmware"
- "qed-firmware"
- "realtek-firmware"
- "tiwilink-firmware"
- "zd1211-firmware"
bootloader: "grub2"
aarch64_platform: &aarch64_platform
arch: "aarch64"
@ -114,20 +281,41 @@
uefi_vendor: "fedora"
packages:
<<: *aarch64_uefi_platform_packages
firmware:
booting:
- "arm-image-installer"
- "grub2-efi-aa64-cdboot"
- "uboot-images-armv8"
- "uboot-tools"
firmware:
- "amd-gpu-firmware"
- "atheros-firmware"
- "atmel-firmware"
- "b43-openfwwf"
- "bcm2711-firmware"
- "bcm2835-firmware"
- "bcm283x-firmware"
- "brcmfmac-firmware"
- "intel-gpu-firmware"
- "iwlegacy-firmware"
- "iwlwifi-dvm-firmware"
- "iwlwifi-mvm-firmware"
- "libertas-firmware"
- "linux-firmware"
- "mt7xxx-firmware"
- "nvidia-gpu-firmware"
- "nxpwireless-firmware"
- "qcom-firmware"
- "qed-firmware"
- "realtek-firmware"
- "uboot-images-armv8"
- "tiwilink-firmware"
- "zd1211-firmware"
bootloader: "grub2"
ppc64le_bios_platform: &ppc64le_bios_platform
arch: "ppc64le"
bios_platform: "powerpc-ieee1275"
image_format: "qcow2"
qcow2_compat: "1.1"
packages:
packages: &ppc64le_bios_platform_packages
bios:
- "dracut-config-generic"
- "powerpc-utils"
@ -138,6 +326,36 @@
- "grub2-ppc64le"
- "grub2-ppc64le-modules"
bootloader: "grub2"
ppc64le_installer_platform: &ppc64le_installer_platform
<<: *ppc64le_bios_platform
image_format: "qcow2"
packages:
<<: *ppc64le_bios_platform_packages
booting:
- "lsvpd"
- "ppc64-diag"
- "grub2-tools"
- "grub2-tools-minimal"
- "grub2-tools-extra"
firmware:
- "amd-gpu-firmware"
- "atheros-firmware"
- "atmel-firmware"
- "b43-openfwwf"
- "brcmfmac-firmware"
- "intel-gpu-firmware"
- "iwlegacy-firmware"
- "iwlwifi-dvm-firmware"
- "iwlwifi-mvm-firmware"
- "libertas-firmware"
- "linux-firmware"
- "mt7xxx-firmware"
- "nvidia-gpu-firmware"
- "nxpwireless-firmware"
- "qed-firmware"
- "realtek-firmware"
- "tiwilink-firmware"
- "zd1211-firmware"
s390x_zipl_platform: &s390x_zipl_platform
arch: "s390x"
zipl_support: true
@ -169,6 +387,7 @@
installer_config: &default_installer_config
iso_rootfs_type: "squashfs"
enabled_anaconda_modules: &install_config_enabled_anaconda_modules
- "org.fedoraproject.Anaconda.Modules.Localization"
- "org.fedoraproject.Anaconda.Modules.Network"
@ -180,8 +399,8 @@
additional_dracut_modules:
- "net-lib"
- "dbus-broker"
squashfs_rootfs: true
conditions:
default_menu: 1
conditions: &default_installer_config_conditions
"f41 dracut requires ifcfg, rootfs is squashfs":
when:
version_equal: "41"
@ -189,14 +408,11 @@
additional_dracut_modules:
- "ifcfg"
- "dbus-broker"
"f40 and lower uses ifcfg in dracut and squashfs+ext4 rootfs":
"x86_64 uses grub2":
when:
version_less_than: "41"
arch: "x86_64"
shallow_merge:
additional_dracut_modules:
- "ifcfg"
- "dbus-broker"
squashfs_rootfs: false
iso_boot_type: "grub2"
image_config:
iot_enabled_services: &image_config_iot_enabled_services
@ -553,8 +769,6 @@ image_types:
bootable: true
default_size: 5_368_709_120 # 5 * datasizes.GibiByte
image_func: "disk"
build_pipelines: ["build"]
payload_pipelines: ["os", "image", "vagrant", "archive"]
exports: ["archive"]
required_partition_sizes: *default_required_dir_sizes
image_config: &image_config_vagrant
@ -615,8 +829,6 @@ image_types:
bootable: true
default_size: 5_368_709_120 # 5 * datasizes.GibiByte
image_func: "disk"
build_pipelines: ["build"]
payload_pipelines: ["os", "image", "qcow2"]
exports: ["qcow2"]
required_partition_sizes: *default_required_dir_sizes
image_config: &image_config_qcow2
@ -657,7 +869,6 @@ image_types:
name_aliases: ["ami", "aws"]
filename: "image.raw"
mime_type: "application/octet-stream"
payload_pipelines: ["os", "image"]
exports: ["image"]
environment: *ec2_env
platforms:
@ -691,7 +902,6 @@ image_types:
name_aliases: ["vhd", "azure"]
filename: "disk.vhd"
mime_type: "application/x-vhd"
payload_pipelines: ["os", "image", "vpc"]
exports: ["vpc"]
environment: *azure_env
platforms:
@ -718,8 +928,6 @@ image_types:
bootable: true
default_size: 2_147_483_648 # 2 * datasizes.GibiByte
image_func: "disk"
build_pipelines: ["build"]
payload_pipelines: ["os", "image", "vmdk"]
exports: ["vmdk"]
required_partition_sizes: *default_required_dir_sizes
platforms:
@ -768,7 +976,6 @@ image_types:
name_aliases: ["ova", "vsphere-ova"]
filename: "image.ova"
mime_type: "application/ovf"
payload_pipelines: ["os", "image", "vmdk", "ovf", "archive"]
exports: ["archive"]
platforms:
- <<: *x86_64_bios_platform
@ -782,8 +989,6 @@ image_types:
filename: "commit.tar"
mime_type: "application/x-tar"
image_func: "iot_commit"
build_pipelines: ["build"]
payload_pipelines: ["os", "ostree-commit", "commit-archive"]
exports: ["commit-archive"]
required_partition_sizes: *default_required_dir_sizes
image_config: &image_config_iot_commit
@ -902,12 +1107,6 @@ image_types:
- "xz"
- "zram-generator"
conditions:
"f40 and below use dnsmasq":
when:
version_less_than: "41"
append:
include:
- "dnsmasq"
"f41 and below uses parsec/zezere":
when:
version_less_than: "42"
@ -943,8 +1142,6 @@ image_types:
filename: "container.tar"
mime_type: "application/x-tar"
image_func: "iot_container"
build_pipelines: ["build"]
payload_pipelines: ["os", "ostree-commit", "container-tree", "container"]
exports: ["container"]
required_partition_sizes: *default_required_dir_sizes
image_config:
@ -960,14 +1157,12 @@ image_types:
filename: "image.raw.xz"
compression: "xz"
mime_type: "application/xz"
default_size: 4_294_967_296 # 4 * datasizes.GibiByte
default_size: 5_368_709_120 # 5 * datasizes.GibiByte
bootable: true
image_func: "iot"
ostree:
name: "fedora-iot"
remote_name: "fedora-iot"
build_pipelines: ["build"]
payload_pipelines: ["ostree-deployment", "image", "xz"]
exports: ["xz"]
# Passing an empty map into the required partition sizes disables the
# default partition sizes normally set so our `basePartitionTables` can
@ -1045,8 +1240,6 @@ image_types:
ostree:
name: "fedora-iot"
remote_name: "fedora-iot"
build_pipelines: ["build"]
payload_pipelines: ["ostree-deployment", "image", "qcow2"]
exports: ["qcow2"]
required_partition_sizes: *default_required_dir_sizes
image_config:
@ -1068,8 +1261,6 @@ image_types:
filename: "iot-bootable-container.tar"
mime_type: "application/x-tar"
image_func: "bootable_container"
build_pipelines: ["build"]
payload_pipelines: ["os", "ostree-commit", "ostree-encapsulate"]
exports: ["ostree-encapsulate"]
required_partition_sizes: *default_required_dir_sizes
image_config:
@ -1219,8 +1410,6 @@ image_types:
bootable: true
default_size: 2_147_483_648 # 2 * datasizes.GibiByte
image_func: "disk"
build_pipelines: ["build"]
payload_pipelines: ["os", "image", "xz"]
exports: ["xz"]
required_partition_sizes: *default_required_dir_sizes
platforms:
@ -1310,196 +1499,8 @@ image_types:
name_aliases: []
filename: "disk.raw.zst"
compression: zstd
payload_pipelines: ["os", "image", "zstd"]
exports: ["zstd"]
installer:
package_sets:
os:
- *minimal_raw_pkgset
installer:
- &installer_pkgset
include:
- "anaconda-dracut"
- "atheros-firmware"
- "brcmfmac-firmware"
- "curl"
- "dracut-config-generic"
- "dracut-network"
- "hostname"
- "iwlwifi-dvm-firmware"
- "iwlwifi-mvm-firmware"
- "kernel"
- "linux-firmware"
- "less"
- "nfs-utils"
- "openssh-clients"
- "ostree"
- "plymouth"
- "realtek-firmware"
- "rng-tools"
- "rpcbind"
- "selinux-policy-targeted"
- "systemd"
- "tar"
- "xfsprogs"
- "xz"
anaconda: &anaconda
installer_config: *default_installer_config
image_config:
locale: "en_US.UTF-8"
# ideally we would centralize the iso_rootfs_type here - but
# some installers (like coreos_installer) do things differently
# than the anaconda iso so we do not want to disturb whatever
# special things they expect in their images.
package_sets:
os:
- *minimal_raw_pkgset
installer:
- &anaconda_pkgset
include:
- "aajohan-comfortaa-fonts"
- "abattis-cantarell-fonts"
- "alsa-firmware"
- "alsa-tools-firmware"
- "anaconda"
- "anaconda-dracut"
- "anaconda-install-img-deps"
- "anaconda-widgets"
- "atheros-firmware"
- "audit"
- "bind-utils"
- "bitmap-fangsongti-fonts"
- "brcmfmac-firmware"
- "bzip2"
- "cryptsetup"
- "curl"
- "dbus-x11"
- "dejavu-sans-fonts"
- "dejavu-sans-mono-fonts"
- "device-mapper-persistent-data"
- "dmidecode"
- "dnf"
- "dracut-config-generic"
- "dracut-network"
- "efibootmgr"
- "ethtool"
- "fcoe-utils"
- "ftp"
- "gdb-gdbserver"
- "gdisk"
- "glibc-all-langpacks"
- "gnome-kiosk"
- "google-noto-sans-cjk-ttc-fonts"
- "grub2-tools"
- "grub2-tools-extra"
- "grub2-tools-minimal"
- "grubby"
- "gsettings-desktop-schemas"
- "hdparm"
- "hexedit"
- "hostname"
- "initscripts"
- "ipmitool"
- "iwlwifi-dvm-firmware"
- "iwlwifi-mvm-firmware"
- "jomolhari-fonts"
- "kacst-farsi-fonts"
- "kacst-qurn-fonts"
- "kbd"
- "kbd-misc"
- "kdump-anaconda-addon"
- "kernel"
- "khmeros-base-fonts"
- "less"
- "libblockdev-lvm-dbus"
- "libibverbs"
- "libreport-plugin-bugzilla"
- "libreport-plugin-reportuploader"
- "librsvg2"
- "linux-firmware"
- "lldpad"
- "lohit-assamese-fonts"
- "lohit-bengali-fonts"
- "lohit-devanagari-fonts"
- "lohit-gujarati-fonts"
- "lohit-gurmukhi-fonts"
- "lohit-kannada-fonts"
- "lohit-odia-fonts"
- "lohit-tamil-fonts"
- "lohit-telugu-fonts"
- "lsof"
- "madan-fonts"
- "mtr"
- "mt-st"
- "net-tools"
- "nfs-utils"
- "nmap-ncat"
- "nm-connection-editor"
- "nss-tools"
- "openssh-clients"
- "openssh-server"
- "ostree"
- "pciutils"
- "perl-interpreter"
- "pigz"
- "plymouth"
- "prefixdevname"
- "python3-pyatspi"
- "rdma-core"
- "realtek-firmware"
- "rit-meera-new-fonts"
- "rng-tools"
- "rpcbind"
- "rpm-ostree"
- "rsync"
- "rsyslog"
- "selinux-policy-targeted"
- "sg3_utils"
- "sil-abyssinica-fonts"
- "sil-padauk-fonts"
- "sil-scheherazade-new-fonts"
- "smartmontools"
- "spice-vdagent"
- "strace"
- "systemd"
- "tar"
- "thai-scalable-waree-fonts"
- "tigervnc-server-minimal"
- "tigervnc-server-module"
- "udisks2"
- "udisks2-iscsi"
- "usbutils"
- "vim-minimal"
- "volume_key"
- "wget"
- "xfsdump"
- "xfsprogs"
- "xorg-x11-drivers"
- "xorg-x11-fonts-misc"
- "xorg-x11-server-Xorg"
- "xorg-x11-xauth"
- "metacity"
- "xrdb"
- "xz"
conditions:
"x86_64 specific anaconda pkgs":
when:
arch: "x86_64"
append:
include:
- "biosdevname"
- "dmidecode"
- "grub2-tools-efi"
- "memtest86+"
"aarch64 specific anaconda pkgs":
when:
arch: "aarch64"
append:
include:
- "dmidecode"
"iot-installer":
<<: *rpm_ostree_imgtype_common
name_aliases: ["fedora-iot-installer"]
@ -1512,30 +1513,14 @@ image_types:
ostree:
name: "fedora-iot"
remote_name: "fedora-iot"
build_pipelines: ["build"]
payload_pipelines:
- "anaconda-tree"
- "efiboot-tree"
- "bootiso-tree"
- "bootiso"
exports: ["bootiso"]
required_partition_sizes: *default_required_dir_sizes
installer_config: *default_installer_config
installer_config:
<<: *default_installer_config
default_menu: 0
image_config:
<<: *image_config_iot_enabled_services
locale: "en_US.UTF-8"
iso_rootfs_type: "squashfs"
conditions:
"f40 and below uses ext4 based iso rootfs":
when:
version_less_than: "41"
shallow_merge:
iso_rootfs_type: "squashfs-ext4"
"x86_64 uses grub2":
when:
arch: "x86_64"
shallow_merge:
iso_boot_type: "grub2"
package_sets:
installer:
- *anaconda_pkgset
@ -1553,29 +1538,25 @@ image_types:
boot_iso: true
image_func: "live_installer"
iso_label: "Workstation"
build_pipelines: ["build"]
payload_pipelines:
- "anaconda-tree"
- "efiboot-tree"
- "bootiso-tree"
- "bootiso"
exports: ["bootiso"]
required_partition_sizes: *default_required_dir_sizes
installer_config: *default_installer_config
installer_config:
<<: *default_installer_config
# for some reason the live-installer never had or never took into account
# the additional dracut modules. This might be a bug but for now we reset
# them to empty to avoid changing the live-installer definition
additional_dracut_modules: []
# also reset the condition that adds dracut modules
conditions:
<<: *default_installer_config_conditions
"f41 dracut requires ifcfg, rootfs is squashfs":
when:
version_equal: "41"
shallow_merge:
additional_dracut_modules: []
image_config:
locale: "en_US.UTF-8"
iso_rootfs_type: "squashfs"
conditions:
"f40 and below uses ext4 based iso rootfs":
when:
version_less_than: "41"
shallow_merge:
iso_rootfs_type: "squashfs-ext4"
"x86_64 uses grub2":
when:
arch: "x86_64"
shallow_merge:
iso_boot_type: "grub2"
package_sets:
installer:
- include:
@ -1616,7 +1597,6 @@ image_types:
- *aarch64_installer_platform
"minimal-installer":
<<: *anaconda
name_aliases: ["image-installer", "fedora-image-installer"]
filename: "installer.iso"
mime_type: "application/x-iso9660-image"
@ -1627,13 +1607,6 @@ image_types:
iso_label: "Unknown"
# We don't know the variant that goes into the OS pipeline that gets installed
variant: "Unknown"
build_pipelines: ["build"]
payload_pipelines:
- "anaconda-tree"
- "efiboot-tree"
- "os"
- "bootiso-tree"
- "bootiso"
exports: ["bootiso"]
required_partition_sizes: *default_required_dir_sizes
installer_config:
@ -1656,29 +1629,20 @@ image_types:
- "org.fedoraproject.Anaconda.Modules.Users"
image_config:
locale: "en_US.UTF-8"
iso_rootfs_type: "squashfs"
conditions:
"on f40 and below we used ext4 on squashfs":
when:
version_less_than: "41"
shallow_merge:
iso_rootfs_type: "squashfs-ext4"
"x86_64 uses grub2":
when:
arch: "x86_64"
shallow_merge:
iso_boot_type: "grub2"
platforms:
- *x86_64_installer_platform
- *aarch64_installer_platform
package_sets:
os:
- *minimal_raw_pkgset
installer:
- *anaconda_pkgset
container: &container
filename: "container.tar"
mime_type: "application/x-tar"
image_func: "container"
bootable: false
build_pipelines: ["build"]
payload_pipelines: ["os", "container"]
exports: ["container"]
required_partition_sizes: *default_required_dir_sizes
platforms:
@ -1750,8 +1714,6 @@ image_types:
compression: "xz"
mime_type: "application/x-tar"
image_func: "tar"
build_pipelines: ["build"]
payload_pipelines: ["os", "archive", "xz"]
exports: ["xz"]
required_partition_sizes: *default_required_dir_sizes
platforms:
@ -1859,18 +1821,11 @@ image_types:
ostree:
name: "fedora"
remote_name: "fedora-iot"
build_pipelines: ["build"]
payload_pipelines:
- "ostree-deployment"
- "image"
- "xz"
- "coi-tree"
- "efiboot-tree"
- "bootiso-tree"
- "bootiso"
exports: ["bootiso"]
required_partition_sizes: *default_required_dir_sizes
installer_config: *default_installer_config
installer_config:
<<: *default_installer_config
default_menu: 0
image_config:
<<: *image_config_iot
ignition_platform: "metal"
@ -1878,11 +1833,13 @@ image_types:
<<: *iot_simplified_installer_partition_tables
package_sets:
installer:
- *installer_pkgset
- include:
- "anaconda-dracut"
- "atheros-firmware"
- "attr"
- "basesystem"
- "binutils"
- "brcmfmac-firmware"
- "bsdtar"
- "clevis-dracut"
- "clevis-luks"
@ -1890,48 +1847,61 @@ image_types:
- "coreos-installer"
- "coreos-installer-dracut"
- "coreutils"
- "curl"
- "device-mapper-multipath"
- "dosfstools"
- "dracut-config-generic"
- "dracut-live"
- "dracut-network"
- "e2fsprogs"
- "fcoe-utils"
- "fdo-init"
- "fedora-logos"
- "gdisk"
- "gzip"
- "hostname"
- "ima-evm-utils"
- "iproute"
- "iptables"
- "iputils"
- "iscsi-initiator-utils"
- "iwlwifi-dvm-firmware"
- "iwlwifi-mvm-firmware"
- "kernel"
- "keyutils"
- "less"
- "linux-firmware"
- "lldpad"
- "lvm2"
- "mdadm"
- "nfs-utils"
- "nss-softokn"
- "openssh-clients"
- "ostree"
- "plymouth"
- "policycoreutils"
- "policycoreutils-python-utils"
- "procps-ng"
- "realtek-firmware"
- "rng-tools"
- "rootfiles"
- "rpcbind"
- "selinux-policy-targeted"
- "setools-console"
- "shadow-utils" # includes passwd
- "sudo"
- "systemd"
- "tar"
- "traceroute"
- "util-linux"
- "shadow-utils" # includes passwd
conditions:
"dnsmasq got deprecated in f41":
when:
version_less_than: "41"
append:
include:
- "dnsmasq" # deprecated for F41+
- "xfsprogs"
- "xz"
platforms:
- <<: *x86_64_uefi_platform
packages:
<<: *x86_64_uefi_platform_packages
firmware:
- "grub2-efi-x64"
- "grub2-efi-x64-cdboot"
- "grub2-tools"
- "grub2-tools-minimal"
- "efibootmgr"
@ -1948,7 +1918,6 @@ image_types:
- "arm-image-installer"
- "bcm283x-firmware"
- "grub2-efi-aa64"
- "grub2-efi-aa64-cdboot"
- "grub2-tools"
- "grub2-tools-minimal"
- "efibootmgr"
@ -1958,3 +1927,115 @@ image_types:
- "iwlwifi-mvm-firmware"
- "realtek-firmware"
- "uboot-images-armv8"
# Based on lorax runtime-install.tmpl
"everything-netinst":
name_aliases: ["netinst"]
filename: "netinst.iso"
mime_type: "application/x-iso9660-image"
bootable: true
boot_iso: true
image_func: "netinst"
iso_label: "Everything"
variant: "Everything"
exports: ["bootiso"]
required_partition_sizes: *default_required_dir_sizes
installer_config: *default_installer_config
image_config:
locale: "en_US.UTF-8"
package_sets:
installer:
- include:
- anaconda
- anaconda-widgets
- anaconda-install-img-deps
- ostree
- rpm-ostree
- pigz
- audit
- bind-utils
- kernel
- kernel-modules
- kernel-modules-extra
- grubby
- glibc-all-langpacks
- plymouth
- anaconda-dracut
- dracut-network
- dracut-config-generic
- initscripts
- cryptsetup
- rpcbind
- kbd
- kbd-misc
- tar
- xz
- curl
- bzip2
- rsyslog
- device-mapper-persistent-data
- xfsdump
- volume_key
- nss-tools
- selinux-policy-targeted
- audit
- ethtool
- openssh-server
- nfs-utils
- openssh-clients
- tigervnc-server-minimal
- tigervnc-server-module
- net-tools
- bridge-utils
- nmap-ncat
- prefixdevname
- pciutils
- usbutils
- ipmitool
- mt-st
- smartmontools
- hdparm
- rdma-core
- rng-tools
- nvme-cli
- default-fonts-core-sans
- default-fonts-other-sans
- google-noto-sans-cjk-fonts
- gdb-gdbserver
- libreport-plugin-bugzilla
- libreport-plugin-reportuploader
- fpaste
- python3-pyatspi
- nano
- nano-default-editor
- vim-minimal
- strace
- lsof
- dump
- less
- wget2-wget
- rsync
- bind-utils
- ftp
- mtr
- vconfig
- spice-vdagent
- gdisk
- hexedit
- sg3_utils
conditions:
"x86_64 specific anaconda pkgs":
when:
arch: "x86_64"
append:
include:
- dmidecode
"aarch64 specific anaconda pkgs":
when:
arch: "aarch64"
append:
include:
- dmidecode
platforms:
- *x86_64_installer_platform
- *aarch64_installer_platform

View file

@ -123,7 +123,7 @@
zipl:
- "s390utils-base"
installer_config: &default_installer_config
default_installer_config: &default_installer_config
enabled_anaconda_modules: &install_config_enabled_anaconda_modules
- "org.fedoraproject.Anaconda.Modules.Network"
- "org.fedoraproject.Anaconda.Modules.Payloads"
@ -137,6 +137,14 @@
- "ipmi_msghandler"
# see commit c6bfb22f54, controls the kickstart location
iso_root_kickstart: true
default_menu: 1
iso_rootfs_type: "squashfs"
conditions:
"x86_64 uses grub2":
when:
arch: "x86_64"
shallow_merge:
iso_boot_type: "grub2"
sapapps_image_config: &sapapps_image_config
selinux_config:
@ -650,6 +658,82 @@
grub2_config:
<<: *azure_common_grub2_config
terminal: ["console"]
azure_base_pkgset: &azure_base_pkgset
include:
- "@Server"
- "bzip2"
- "cloud-init"
- "cloud-utils-growpart"
- "dracut-config-generic"
- "efibootmgr"
- "hyperv-daemons"
- "langpacks-en"
- "lvm2"
- "NetworkManager"
- "NetworkManager-cloud-setup"
- "nvme-cli"
- "patch"
- "rng-tools"
- "selinux-policy-targeted"
- "system-reinstall-bootc"
- "uuid"
- "WALinuxAgent"
- "yum-utils"
exclude:
- "aic94xx-firmware"
- "alsa-firmware"
- "alsa-lib"
- "alsa-sof-firmware"
- "alsa-tools-firmware"
- "biosdevname"
- "bolt"
- "buildah"
- "cockpit-podman"
- "containernetworking-plugins"
- "dnf-plugin-spacewalk"
- "dracut-config-rescue"
- "glibc-all-langpacks"
- "iprutils"
- "ivtv-firmware"
- "iwl100-firmware"
- "iwl1000-firmware"
- "iwl105-firmware"
- "iwl135-firmware"
- "iwl2000-firmware"
- "iwl2030-firmware"
- "iwl3160-firmware"
- "iwl3945-firmware"
- "iwl4965-firmware"
- "iwl5000-firmware"
- "iwl5150-firmware"
- "iwl6000-firmware"
- "iwl6000g2a-firmware"
- "iwl6000g2b-firmware"
- "iwl6050-firmware"
- "iwl7260-firmware"
- "libertas-sd8686-firmware"
- "libertas-sd8787-firmware"
- "libertas-usb8388-firmware"
- "microcode_ctl"
- "NetworkManager-config-server"
- "plymouth"
- "podman"
- "python3-dnf-plugin-spacewalk"
- "python3-hwdata"
- "python3-rhnlib"
- "rhn-check"
- "rhn-client-tools"
- "rhn-setup"
- "rhnlib"
- "rhnsd"
- "usb_modeswitch"
conditions:
"add insights client on rhel":
when:
distro_name: "rhel"
append:
include:
- "insights-client"
image_config:
default:
@ -732,8 +816,6 @@ image_types:
bootable: true
default_size: 10_737_418_240 # 10 * datasizes.GibiByte
image_func: "disk"
build_pipelines: ["build"]
payload_pipelines: ["os", "image", "qcow2"]
exports: ["qcow2"]
required_partition_sizes: *default_required_dir_sizes
platforms:
@ -841,8 +923,6 @@ image_types:
bootable: true
default_size: 10_737_418_240 # 10 * datasizes.GibiByte
image_func: "disk"
build_pipelines: ["build"]
payload_pipelines: ["os", "image", "vagrant", "archive"]
exports: ["archive"]
required_partition_sizes: *default_required_dir_sizes
platforms:
@ -891,7 +971,6 @@ image_types:
filename: "disk.vhd"
mime_type: "application/x-vhd"
default_size: 4_294_967_296 # 4 * datasizes.GibiByte
payload_pipelines: ["os", "image", "vpc"]
exports: ["vpc"]
# note that unlike fedora no "environment.Azure" is used here for
# unknown reasons
@ -930,89 +1009,10 @@ image_types:
<<: *default_partition_tables
package_sets:
os:
- &vhd_pkgset
include:
- "@Server"
- "bzip2"
- "cloud-init"
- "cloud-utils-growpart"
- "dracut-config-generic"
- "efibootmgr"
- "hyperv-daemons"
- "kernel-core"
- "kernel-modules"
- "kernel"
- "langpacks-en"
- "lvm2"
- "NetworkManager"
- "NetworkManager-cloud-setup"
- "nvme-cli"
- "patch"
- "rng-tools"
- "selinux-policy-targeted"
- "system-reinstall-bootc"
- "uuid"
- "WALinuxAgent"
- "yum-utils"
exclude:
- "aic94xx-firmware"
- "alsa-firmware"
- "alsa-lib"
- "alsa-sof-firmware"
- "alsa-tools-firmware"
- "biosdevname"
- "bolt"
- "buildah"
- "cockpit-podman"
- "containernetworking-plugins"
- "dnf-plugin-spacewalk"
- "dracut-config-rescue"
- "glibc-all-langpacks"
- "iprutils"
- "ivtv-firmware"
- "iwl100-firmware"
- "iwl1000-firmware"
- "iwl105-firmware"
- "iwl135-firmware"
- "iwl2000-firmware"
- "iwl2030-firmware"
- "iwl3160-firmware"
- "iwl3945-firmware"
- "iwl4965-firmware"
- "iwl5000-firmware"
- "iwl5150-firmware"
- "iwl6000-firmware"
- "iwl6000g2a-firmware"
- "iwl6000g2b-firmware"
- "iwl6050-firmware"
- "iwl7260-firmware"
- "libertas-sd8686-firmware"
- "libertas-sd8787-firmware"
- "libertas-usb8388-firmware"
- "microcode_ctl"
- "NetworkManager-config-server"
- "plymouth"
- "podman"
- "python3-dnf-plugin-spacewalk"
- "python3-hwdata"
- "python3-rhnlib"
- "rhn-check"
- "rhn-client-tools"
- "rhn-setup"
- "rhnlib"
- "rhnsd"
- "usb_modeswitch"
conditions:
"add insights client on rhel":
when:
distro_name: "rhel"
append:
include:
- "insights-client"
- *azure_base_pkgset
"azure": &azure
<<: *vhd
payload_pipelines: ["os", "image", "vpc", "xz"]
exports: ["xz"]
compression: "xz"
filename: "disk.vhd.xz"
@ -1120,7 +1120,7 @@ image_types:
<<: [*image_config_vhd, *sap_image_config]
package_sets:
os:
- *vhd_pkgset
- *azure_base_pkgset
- *sap_base_pkgset
- *sap_extras_pkgset
@ -1133,15 +1133,13 @@ image_types:
<<: [*image_config_vhd, *sapapps_image_config]
package_sets:
os:
- *vhd_pkgset
- *azure_base_pkgset
- *sap_base_pkgset
tar:
filename: "root.tar.xz"
mime_type: "application/x-tar"
image_func: "tar"
build_pipelines: ["build"]
payload_pipelines: ["os", "archive"]
exports: ["archive"]
package_sets:
os:
@ -1163,8 +1161,6 @@ image_types:
bootable: true
default_size: 4_294_967_296 # 4 * datasizes.GibiByte
image_func: "disk"
build_pipelines: ["build"]
payload_pipelines: ["os", "image", "vmdk"]
exports: ["vmdk"]
required_partition_sizes: *default_required_dir_sizes
platforms:
@ -1194,7 +1190,6 @@ image_types:
name_aliases: ["vsphere-ova"]
filename: "image.ova"
mime_type: "application/ovf"
payload_pipelines: ["os", "image", "vmdk", "ovf", "archive"]
exports: ["archive"]
platforms:
- <<: *x86_64_bios_platform
@ -1205,8 +1200,6 @@ image_types:
filename: "image.raw"
mime_type: "application/octet-stream"
image_func: "disk"
build_pipelines: ["build"]
payload_pipelines: ["os", "image"]
exports: ["image"]
bootable: true
default_size: 10_737_418_240 # 10 * datasizes.GibiByte
@ -1386,7 +1379,6 @@ image_types:
# we have to reset the aliases otherwise this type
# will inherit the name aliases causing a conflict
name_aliases: []
payload_pipelines: ["os", "image", "xz"]
exports: ["xz"]
filename: "image.raw.xz"
compression: "xz"
@ -1442,8 +1434,6 @@ image_types:
filename: "image.wsl"
mime_type: "application/x-tar"
image_func: "tar"
build_pipelines: ["build"]
payload_pipelines: ["os", "archive", "xz"]
exports: ["xz"]
compression: "xz"
platforms:
@ -1574,23 +1564,8 @@ image_types:
image_func: "image_installer"
# We don't know the variant of the OS pipeline being installed
iso_label: "Unknown"
build_pipelines: ["build"]
payload_pipelines:
- "anaconda-tree"
- "efiboot-tree"
- "os"
- "bootiso-tree"
- "bootiso"
exports: ["bootiso"]
required_partition_sizes: *default_required_dir_sizes
image_config:
iso_rootfs_type: "squashfs"
conditions:
"x86_64 uses grub2":
when:
arch: "x86_64"
shallow_merge:
iso_boot_type: "grub2"
installer_config: *default_installer_config
platforms:
- *x86_64_installer_platform
@ -1743,8 +1718,6 @@ image_types:
filename: "image.tar.gz"
mime_type: "application/gzip"
image_func: "disk"
build_pipelines: ["build"]
payload_pipelines: ["os", "image", "archive"]
exports: ["archive"]
bootable: true
default_size: 21_474_836_480 # 20 * datasizes.GibiByte
@ -1917,7 +1890,6 @@ image_types:
<<: *vhd
filename: "disk.vhd.xz"
mime_type: "application/xz"
payload_pipelines: ["os", "image", "vpc", "xz"]
exports: ["xz"]
compression: "xz"
default_size: 34_359_738_368 # 32 * datasizes.GibiByte
@ -1992,14 +1964,18 @@ image_types:
- "cloud-init"
- "cloud-utils-growpart"
- "cryptsetup"
- "langpacks-en"
- "lvm2"
- "NetworkManager-cloud-setup"
- "nvme-cli"
- "openssh-server"
- "redhat-cloud-client-configuration"
- "redhat-release"
- "tpm2-tools"
- "uuid"
- "WALinuxAgent"
- "yum-utils"
- exclude:
exclude:
- "dracut-config-rescue"
- "grubby"
- "iwl*"

View file

@ -262,8 +262,6 @@ image_types:
mime_type: "application/xz"
image_func: "disk"
default_size: 68_719_476_736 # 64 * datasizes.GibiByte
build_pipelines: ["build"]
payload_pipelines: ["os", "image", "vpc", "xz"]
exports: ["xz"]
compression: "xz"
bootable: true
@ -419,8 +417,6 @@ image_types:
filename: "image.raw.xz"
mime_type: "application/xz"
image_func: "disk"
build_pipelines: ["build"]
payload_pipelines: ["os", "image", "xz"]
exports: ["xz"]
compression: "xz"
bootable: true
@ -576,8 +572,6 @@ image_types:
bootable: true
default_size: 10_737_418_240 # 10 * datasizes.GibiByte
image_func: "disk"
build_pipelines: ["build"]
payload_pipelines: ["os", "image", "qcow2"]
exports: ["qcow2"]
required_partition_sizes: *default_required_dir_sizes
disk_image_part_tool: sgdisk

View file

@ -871,6 +871,14 @@
iso_root_kickstart: true
additional_dracut_modules:
- "ifcfg"
default_menu: 1
iso_rootfs_type: "squashfs-ext4"
conditions:
"x86_64 uses syslinux":
when:
arch: "x86_64"
shallow_merge:
iso_boot_type: "syslinux"
partitioning:
ids:
@ -1275,8 +1283,6 @@ image_types:
filename: "image.raw"
mime_type: "application/octet-stream"
image_func: "disk"
build_pipelines: ["build"]
payload_pipelines: ["os", "image"]
exports: ["image"]
bootable: true
default_size: 10_737_418_240 # 10 * datasizes.GibiByte
@ -1317,7 +1323,6 @@ image_types:
filename: "image.raw.xz"
mime_type: "application/xz"
compression: "xz"
payload_pipelines: ["os", "image", "xz"]
exports: ["xz"]
image_config:
<<: *ec2_image_config
@ -1428,8 +1433,6 @@ image_types:
bootable: true
default_size: 10_737_418_240 # 10 * datasizes.GibiByte
image_func: "disk"
build_pipelines: ["build"]
payload_pipelines: ["os", "image", "qcow2"]
exports: ["qcow2"]
required_partition_sizes: *default_required_dir_sizes
platforms:
@ -1477,8 +1480,6 @@ image_types:
mime_type: "application/x-vhd"
image_func: "disk"
default_size: 4_294_967_296 # 4 * datasizes.GibiByte
build_pipelines: ["build"]
payload_pipelines: ["os", "image", "vpc"]
exports: ["vpc"]
bootable: true
# note that unlike fedora no "environment.Azure" is used here for
@ -1638,8 +1639,6 @@ image_types:
mime_type: "application/xz"
image_func: "disk"
default_size: 68_719_476_736 # 64 * datasizes.GibiByte
build_pipelines: ["build"]
payload_pipelines: ["os", "image", "vpc", "xz"]
exports: ["xz"]
compression: "xz"
bootable: true
@ -1797,23 +1796,8 @@ image_types:
image_func: "image_installer"
# We don't know the variant of the OS pipeline being installed
iso_label: "Unknown"
build_pipelines: ["build"]
payload_pipelines:
- "anaconda-tree"
- "efiboot-tree"
- "os"
- "bootiso-tree"
- "bootiso"
exports: ["bootiso"]
required_partition_sizes: *default_required_dir_sizes
image_config:
iso_rootfs_type: "squashfs-ext4"
conditions:
"x86_64 uses syslinux":
when:
arch: "x86_64"
shallow_merge:
iso_boot_type: "syslinux"
installer_config: *default_installer_config
platforms:
- *x86_64_installer_platform
@ -1829,8 +1813,6 @@ image_types:
filename: "root.tar.xz"
mime_type: "application/x-tar"
image_func: "tar"
build_pipelines: ["build"]
payload_pipelines: ["os", "archive"]
exports: ["archive"]
platforms:
- arch: "x86_64"
@ -1851,8 +1833,6 @@ image_types:
mime_type: "application/x-tar"
rpm_ostree: true
image_func: "iot_commit"
build_pipelines: ["build"]
payload_pipelines: ["os", "ostree-commit", "commit-archive"]
exports: ["commit-archive"]
platforms:
- *x86_64_bios_platform
@ -2039,23 +2019,11 @@ image_types:
variant: "edge"
ostree:
name: "rhel-edge"
build_pipelines: ["build"]
payload_pipelines:
- "anaconda-tree"
- "efiboot-tree"
- "bootiso-tree"
- "bootiso"
exports: ["bootiso"]
required_partition_sizes: *default_required_dir_sizes
image_config:
iso_rootfs_type: "squashfs-ext4"
conditions:
"x86_64 uses syslinux":
when:
arch: "x86_64"
shallow_merge:
iso_boot_type: "syslinux"
installer_config: *default_installer_config
installer_config:
<<: *default_installer_config
default_menu: 0
platforms:
- *x86_64_uefi_platform
- *aarch64_platform
@ -2086,8 +2054,6 @@ image_types:
name: "rhel-edge"
remote_name: "rhel-edge"
use_ostree_remotes: true
build_pipelines: ["build"]
payload_pipelines: ["ostree-deployment", "image", "xz"]
exports: ["xz"]
platforms:
- <<: *x86_64_installer_platform
@ -2125,15 +2091,6 @@ image_types:
remote_name: "rhel-edge"
# XXX: find better name
use_ostree_remotes: true
build_pipelines: ["build"]
payload_pipelines:
- "ostree-deployment"
- "image"
- "xz"
- "coi-tree"
- "efiboot-tree"
- "bootiso-tree"
- "bootiso"
exports: ["bootiso"]
required_partition_sizes: *default_required_dir_sizes
installer_config:
@ -2222,8 +2179,6 @@ image_types:
mime_type: "application/x-tar"
rpm_ostree: true
image_func: "iot_container"
build_pipelines: ["build"]
payload_pipelines: ["os", "ostree-commit", "container-tree", "container"]
exports: ["container"]
required_partition_sizes: *default_required_dir_sizes
platforms:
@ -2242,8 +2197,6 @@ image_types:
bootable: true
default_size: 4_294_967_296 # 4 * datasizes.GibiByte
image_func: "disk"
build_pipelines: ["build"]
payload_pipelines: ["os", "image", "vmdk"]
exports: ["vmdk"]
required_partition_sizes: *default_required_dir_sizes
platforms:
@ -2274,7 +2227,6 @@ image_types:
name_aliases: ["vsphere-ova"]
filename: "image.ova"
mime_type: "application/ovf"
payload_pipelines: ["os", "image", "vmdk", "ovf", "archive"]
exports: ["archive"]
platforms:
- <<: *x86_64_bios_platform
@ -2287,8 +2239,6 @@ image_types:
filename: "image.tar.gz"
mime_type: "application/gzip"
image_func: "disk"
build_pipelines: ["build"]
payload_pipelines: ["os", "image", "archive"]
exports: ["archive"]
bootable: true
default_size: 21_474_836_480 # 20 * datasizes.GibiByte
@ -2456,8 +2406,6 @@ image_types:
filename: "image.wsl"
mime_type: "application/x-tar"
image_func: "tar"
build_pipelines: ["build"]
payload_pipelines: ["os", "archive", "xz"]
exports: ["xz"]
compression: "xz"
platforms:
@ -2582,8 +2530,6 @@ image_types:
bootable: true
default_size: 2_147_483_648 # 2 * datasizes.GibiByte
image_func: "disk"
build_pipelines: ["build"]
payload_pipelines: ["os", "image", "xz"]
exports: ["xz"]
required_partition_sizes: *default_required_dir_sizes
image_config:

View file

@ -202,6 +202,84 @@
append:
include:
- "system-reinstall-bootc"
azure_base_pkgset: &azure_base_pkgset
include:
- "@Server"
- "bzip2"
- "cloud-init"
- "cloud-utils-growpart"
- "dracut-config-generic"
- "efibootmgr"
- "gdisk"
- "hyperv-daemons"
- "langpacks-en"
- "lvm2"
- "NetworkManager"
- "NetworkManager-cloud-setup"
- "nvme-cli"
- "patch"
- "rng-tools"
- "selinux-policy-targeted"
- "uuid"
- "WALinuxAgent"
- "yum-utils"
exclude:
- "aic94xx-firmware"
- "alsa-firmware"
- "alsa-lib"
- "alsa-sof-firmware"
- "alsa-tools-firmware"
- "biosdevname"
- "bolt"
- "buildah"
- "cockpit-podman"
- "containernetworking-plugins"
- "dnf-plugin-spacewalk"
- "dracut-config-rescue"
- "glibc-all-langpacks"
- "iprutils"
- "ivtv-firmware"
- "iwl100-firmware"
- "iwl1000-firmware"
- "iwl105-firmware"
- "iwl135-firmware"
- "iwl2000-firmware"
- "iwl2030-firmware"
- "iwl3160-firmware"
- "iwl3945-firmware"
- "iwl4965-firmware"
- "iwl5000-firmware"
- "iwl5150-firmware"
- "iwl6000-firmware"
- "iwl6000g2a-firmware"
- "iwl6000g2b-firmware"
- "iwl6050-firmware"
- "iwl7260-firmware"
- "libertas-sd8686-firmware"
- "libertas-sd8787-firmware"
- "libertas-usb8388-firmware"
- "NetworkManager-config-server"
- "plymouth"
- "podman"
- "python3-dnf-plugin-spacewalk"
- "python3-hwdata"
- "python3-rhnlib"
- "rhn-check"
- "rhn-client-tools"
- "rhn-setup"
- "rhnlib"
- "rhnsd"
- "usb_modeswitch"
conditions:
<<: *conditions_pkgsets_insights_client_on_rhel
"rhel-9.6+ gets system-reinstall-bootc and drops microcode_ctl":
when:
version_greater_or_equal: "9.6"
append:
include:
- "system-reinstall-bootc"
exclude:
- "microcode_ctl"
sapapps_image_config: &sapapps_image_config
selinux_config:
@ -1088,6 +1166,13 @@
- "cuse"
- "ipmi_devintf"
- "ipmi_msghandler"
default_menu: 1
conditions:
"x86_64 uses syslinux":
when:
arch: "x86_64"
shallow_merge:
iso_boot_type: "syslinux"
image_config:
default:
@ -1172,8 +1257,6 @@ image_types:
bootable: true
default_size: 10_737_418_240 # 10 * datasizes.GibiByte
image_func: "disk"
build_pipelines: ["build"]
payload_pipelines: ["os", "image", "qcow2"]
exports: ["qcow2"]
required_partition_sizes: *default_required_dir_sizes
platforms:
@ -1285,8 +1368,6 @@ image_types:
bootable: true
default_size: 10_737_418_240 # 10 * datasizes.GibiByte
image_func: "disk"
build_pipelines: ["build"]
payload_pipelines: ["os", "image", "vagrant", "archive"]
exports: ["archive"]
required_partition_sizes: *default_required_dir_sizes
platforms:
@ -1335,7 +1416,6 @@ image_types:
filename: "disk.vhd"
mime_type: "application/x-vhd"
default_size: 4_294_967_296 # 4 * datasizes.GibiByte
payload_pipelines: ["os", "image", "vpc"]
exports: ["vpc"]
platforms:
- <<: *x86_64_bios_platform
@ -1378,92 +1458,11 @@ image_types:
<<: *default_partition_tables
package_sets:
os:
- &vhd_pkgset
include:
- "@Server"
- "bzip2"
- "cloud-init"
- "cloud-utils-growpart"
- "dracut-config-generic"
- "efibootmgr"
- "gdisk"
- "hyperv-daemons"
- "kernel-core"
- "kernel-modules"
- "kernel"
- "langpacks-en"
- "lvm2"
- "NetworkManager"
- "NetworkManager-cloud-setup"
- "nvme-cli"
- "patch"
- "rng-tools"
- "selinux-policy-targeted"
- "uuid"
- "WALinuxAgent"
- "yum-utils"
exclude:
- "aic94xx-firmware"
- "alsa-firmware"
- "alsa-lib"
- "alsa-sof-firmware"
- "alsa-tools-firmware"
- "biosdevname"
- "bolt"
- "buildah"
- "cockpit-podman"
- "containernetworking-plugins"
- "dnf-plugin-spacewalk"
- "dracut-config-rescue"
- "glibc-all-langpacks"
- "iprutils"
- "ivtv-firmware"
- "iwl100-firmware"
- "iwl1000-firmware"
- "iwl105-firmware"
- "iwl135-firmware"
- "iwl2000-firmware"
- "iwl2030-firmware"
- "iwl3160-firmware"
- "iwl3945-firmware"
- "iwl4965-firmware"
- "iwl5000-firmware"
- "iwl5150-firmware"
- "iwl6000-firmware"
- "iwl6000g2a-firmware"
- "iwl6000g2b-firmware"
- "iwl6050-firmware"
- "iwl7260-firmware"
- "libertas-sd8686-firmware"
- "libertas-sd8787-firmware"
- "libertas-usb8388-firmware"
- "NetworkManager-config-server"
- "plymouth"
- "podman"
- "python3-dnf-plugin-spacewalk"
- "python3-hwdata"
- "python3-rhnlib"
- "rhn-check"
- "rhn-client-tools"
- "rhn-setup"
- "rhnlib"
- "rhnsd"
- "usb_modeswitch"
conditions:
<<: *conditions_pkgsets_insights_client_on_rhel
"rhel-9.6+ gets system-reinstall-bootc and drops microcode_ctl":
when:
version_greater_or_equal: "9.6"
append:
include:
- "system-reinstall-bootc"
exclude:
- "microcode_ctl"
- *azure_base_pkgset
"azure": &azure
<<: *vhd
mime_type: "application/xz"
payload_pipelines: ["os", "image", "vpc", "xz"]
exports: ["xz"]
compression: "xz"
filename: "disk.vhd.xz"
@ -1628,7 +1627,7 @@ image_types:
<<: [*image_config_vhd, *sap_image_config]
package_sets:
os:
- *vhd_pkgset
- *azure_base_pkgset
- *sap_base_pkgset
- *sap_extras_pkgset
@ -1641,15 +1640,13 @@ image_types:
<<: [*image_config_vhd, *sapapps_image_config]
package_sets:
os:
- *vhd_pkgset
- *azure_base_pkgset
- *sap_base_pkgset
tar:
filename: "root.tar.xz"
mime_type: "application/x-tar"
image_func: "tar"
build_pipelines: ["build"]
payload_pipelines: ["os", "archive"]
exports: ["archive"]
platforms:
- arch: "x86_64"
@ -1671,8 +1668,6 @@ image_types:
bootable: true
default_size: 4_294_967_296 # 4 * datasizes.GibiByte
image_func: "disk"
build_pipelines: ["build"]
payload_pipelines: ["os", "image", "vmdk"]
exports: ["vmdk"]
required_partition_sizes: *default_required_dir_sizes
platforms:
@ -1702,7 +1697,6 @@ image_types:
name_aliases: ["vsphere-ova"]
filename: "image.ova"
mime_type: "application/ovf"
payload_pipelines: ["os", "image", "vmdk", "ovf", "archive"]
exports: ["archive"]
platforms:
- <<: *x86_64_bios_platform
@ -1711,8 +1705,6 @@ image_types:
ec2: &ec2
filename: "image.raw.xz"
mime_type: "application/xz"
build_pipelines: ["build"]
payload_pipelines: ["os", "image", "xz"]
exports: ["xz"]
compression: "xz"
image_func: "disk"
@ -1860,7 +1852,6 @@ image_types:
name_aliases: ["aws"]
mime_type: "application/octet-stream"
filename: "image.raw"
payload_pipelines: ["os", "image"]
exports: ["image"]
compression: ""
@ -1939,8 +1930,6 @@ image_types:
filename: "image.wsl"
mime_type: "application/x-tar"
image_func: "tar"
build_pipelines: ["build"]
payload_pipelines: ["os", "archive"]
exports: ["xz"]
compression: "xz"
platforms:
@ -2067,13 +2056,6 @@ image_types:
image_func: "image_installer"
# We don't know the variant of the OS pipeline being installed
iso_label: "Unknown"
build_pipelines: ["build"]
payload_pipelines:
- "anaconda-tree"
- "efiboot-tree"
- "os"
- "bootiso-tree"
- "bootiso"
exports: ["bootiso"]
required_partition_sizes: *default_required_dir_sizes
platforms:
@ -2092,12 +2074,6 @@ image_types:
installer_config: *default_installer_config
image_config:
locale: "C.UTF-8"
conditions:
"x86_64 uses syslinux":
when:
arch: "x86_64"
shallow_merge:
iso_boot_type: "syslinux"
package_sets:
<<: *bare_metal_pkgset
installer:
@ -2111,8 +2087,6 @@ image_types:
filename: "image.tar.gz"
mime_type: "application/gzip"
image_func: "disk"
build_pipelines: ["build"]
payload_pipelines: ["os", "image", "archive"]
exports: ["archive"]
bootable: true
default_size: 21_474_836_480 # 20 * datasizes.GibiByte
@ -2271,8 +2245,6 @@ image_types:
bootable: true
default_size: 2_147_483_648 # 2 * datasizes.GibiByte
image_func: "disk"
build_pipelines: ["build"]
payload_pipelines: ["os", "image", "xz"]
exports: ["xz"]
required_partition_sizes: *default_required_dir_sizes
platforms:
@ -2408,8 +2380,6 @@ image_types:
mime_type: "application/x-tar"
rpm_ostree: true
image_func: "iot_commit"
build_pipelines: ["build"]
payload_pipelines: ["os", "ostree-commit", "commit-archive"]
exports: ["commit-archive"]
platforms:
- *x86_64_bios_platform
@ -2581,8 +2551,6 @@ image_types:
mime_type: "application/x-tar"
rpm_ostree: true
image_func: "iot_container"
build_pipelines: ["build"]
payload_pipelines: ["os", "ostree-commit", "container-tree", "container"]
exports: ["container"]
<<: *edge_commit
@ -2591,8 +2559,6 @@ image_types:
filename: "image.raw.xz"
compression: "xz"
mime_type: "application/xz"
build_pipelines: ["build"]
payload_pipelines: ["ostree-deployment", "image", "xz"]
exports: ["xz"]
default_size: 10_737_418_240 # 10 * datasizes.GibiByte
rpm_ostree: true
@ -2651,27 +2617,17 @@ image_types:
variant: "edge"
ostree:
name: "rhel-edge"
build_pipelines: ["build"]
payload_pipelines:
- "anaconda-tree"
- "efiboot-tree"
- "bootiso-tree"
- "bootiso"
exports: ["bootiso"]
required_partition_sizes: *default_required_dir_sizes
platforms:
- *x86_64_uefi_platform
- *aarch64_platform
installer_config: *default_installer_config
installer_config:
<<: *default_installer_config
default_menu: 0
image_config:
enabled_services: *enabled_services_edge
locale: "en_US.UTF-8"
conditions:
"x86_64 uses syslinux":
when:
arch: "x86_64"
shallow_merge:
iso_boot_type: "syslinux"
package_sets:
installer:
- *installer_pkgset
@ -2697,15 +2653,6 @@ image_types:
remote_name: "rhel-edge"
# XXX: find better name
use_ostree_remotes: true
build_pipelines: ["build"]
payload_pipelines:
- "ostree-deployment"
- "image"
- "xz"
- "coi-tree"
- "efiboot-tree"
- "bootiso-tree"
- "bootiso"
exports: ["bootiso"]
required_partition_sizes: *default_required_dir_sizes
installer_config:
@ -2797,8 +2744,6 @@ image_types:
filename: "image.raw"
mime_type: "application/octet-stream"
default_size: 10_737_418_240 # 10 * datasizes.GibiByte
build_pipelines: ["build"]
payload_pipelines: ["ostree-deployment", "image"]
exports: ["image"]
rpm_ostree: true
bootable: true
@ -2853,7 +2798,6 @@ image_types:
<<: *edge_ami
filename: "image.vmdk"
mime_type: "application/x-vmdk"
payload_pipelines: ["ostree-deployment", "image", "vmdk"]
exports: ["vmdk"]
platforms:
- <<: *x86_64_bios_platform
@ -2880,7 +2824,6 @@ image_types:
<<: *vhd
filename: "disk.vhd.xz"
mime_type: "application/xz"
payload_pipelines: ["os", "image", "vpc", "xz"]
exports: ["xz"]
compression: "xz"
default_size: 34_359_738_368 # 32 * datasizes.GibiByte
@ -2956,14 +2899,18 @@ image_types:
- "cloud-init"
- "cloud-utils-growpart"
- "cryptsetup"
- "langpacks-en"
- "lvm2"
- "NetworkManager-cloud-setup"
- "nvme-cli"
- "openssh-server"
- "redhat-cloud-client-configuration"
- "redhat-release"
- "tpm2-tools"
- "uuid"
- "WALinuxAgent"
- "yum-utils"
- exclude:
exclude:
- "dracut-config-rescue"
- "iwl*"
- "linux-firmware*"

View file

@ -2,7 +2,7 @@
"x86_64": [
{
"name": "fedora",
"metalink": "https://mirrors.fedoraproject.org/metalink?repo=fedora-rawhide&arch=x86_64",
"metalink": "https://mirrors.fedoraproject.org/metalink?repo=fedora-43&arch=x86_64",
"gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBGa23M8BEAC47NwKLi/g2S9I2p5JtUbJ0y3m2St9zqkSENmYw/+R+WKvaP3S\nKSFQF3Qi6pqGXJ88ADJUkFYpOGGyoc0dieLCmIPqtWbwGvBVMxBRBeU3+hClwbSQ\nsysVnr8VxUwidfsIjNJavCZwB0ZoZbxdCPMQMOgQyTLX4OI/uKlPUzeymDHwxjb/\ntllflSTOGtdYe3giRzidxN+xbCb6UoXkl0+lJEFbsmp41O5D/Ur5N05lBrsEXoDu\nFr99Kfv3Av7f3JfzDlkqC/EhmfxZEZvWj3hRdAfi2fFmtVcrdLfGIpQg6Y2Baphp\nPhaHqKl9zD5GWqu5GSXGoLaGXusBvwBKjS/g+VLo7pJfMsUF3sUduJNG3UThAsrp\nQLV3wQz0AMHVElRErOWdBDY0ddAKLPL7/mtxj39pGEpZ/dNtQkzgm7VCdP10QnQZ\nrwR2l8k7CPu0pylPCXmXvKFWV1uv9RnztlWY6BRmufKn+lJsN3Blh7ndi5rlCjR6\nmHVrQD/l6+8VmSD3/mDnbEXPyzBkSY5D1wpR7M5VXN5jVHROc4ZA5M88SyI48ESG\nNmeAwtGar45/X+wG47+EC4+JXpNO7BQrEvHgJxBdyoQ6KLDrEaqn/OQpxB4Gfmcv\nSwkWDpSk8wFm/pGlFK6J4b+ba7eOetW+aXrWSiFB1sTAg0OY+gds67OpWQARAQAB\ntDFGZWRvcmEgKDQzKSA8ZmVkb3JhLTQzLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQJSBBMBCAA8FiEExufwgc+A4TFGZ26IgptgZjFkVTEFAma23M8CGw8FCwkI\nBwIDIgIBBhUKCQgLAgQWAgMBAh4HAheAAAoJEIKbYGYxZFUxagQP/RYWw5j0Gfvv\nlWkDQTjTVAnHtbKuQLYM13Lx5d3W1k0g6Xdrolf4yPjh4YPYVQDXksB4i6ULLbMo\n8u46UCPMQwCXTd3Ax9imYn+V74Isl/CkBbKQD9YfSJjhW3mSlPa27jo2uhqpdV0S\nxp05NWYnWrZN+GbtCUs1+rNTBevagOURtlZ8f0iPVRA/PxWzpjbRaGrCHlIYc3JO\nGKLUuQueLvOUg2pP8dtpll7S3xUe5Abyq2ifT34T0wHi6hJA3bfpXo1uNXRvGrNw\ngbJ7V6P7ioTcvyhS1h4zjelKFyvTnOKOy5D08HKmvTMWZQWEL7kDNymh1jMV7Abg\n4TPp808EiPF1GGAzXU56feaURSvIuix3MkjhGZsSQQH2kkkEIzq6j/EwmpyEMW38\ndtql4T2bVS/cTk/hRaqUKZlyrsL657g/4mFA1wDDM3895fYkHOpYF4JZ9SeDrhuc\nTgpC7/TW55l6vSiFtnQvcMfjpfCA6mCA4b75k+/xG9RxxBnYU0qVuUo/8pON31yQ\nD2AM2v7WbJBYVRYLlqPrkAZU5fe7+2wY7P7N0IAPwVA0TFJ1x6as3Kezdi/304mg\noC98DBLjHaUpX2bTxKMtCzlmeqPiwtyNkA9O9IQO7qQzArBKxmAgof4wblN5SL8i\nfsjiJUqsK/gTYwJ744I/tzxOy5FXjA7z\n=Bqds\n-----END PGP PUBLIC KEY BLOCK-----\n",
"check_gpg": true
}
@ -10,7 +10,7 @@
"aarch64": [
{
"name": "fedora",
"metalink": "https://mirrors.fedoraproject.org/metalink?repo=fedora-rawhide&arch=aarch64",
"metalink": "https://mirrors.fedoraproject.org/metalink?repo=fedora-43&arch=aarch64",
"gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBGa23M8BEAC47NwKLi/g2S9I2p5JtUbJ0y3m2St9zqkSENmYw/+R+WKvaP3S\nKSFQF3Qi6pqGXJ88ADJUkFYpOGGyoc0dieLCmIPqtWbwGvBVMxBRBeU3+hClwbSQ\nsysVnr8VxUwidfsIjNJavCZwB0ZoZbxdCPMQMOgQyTLX4OI/uKlPUzeymDHwxjb/\ntllflSTOGtdYe3giRzidxN+xbCb6UoXkl0+lJEFbsmp41O5D/Ur5N05lBrsEXoDu\nFr99Kfv3Av7f3JfzDlkqC/EhmfxZEZvWj3hRdAfi2fFmtVcrdLfGIpQg6Y2Baphp\nPhaHqKl9zD5GWqu5GSXGoLaGXusBvwBKjS/g+VLo7pJfMsUF3sUduJNG3UThAsrp\nQLV3wQz0AMHVElRErOWdBDY0ddAKLPL7/mtxj39pGEpZ/dNtQkzgm7VCdP10QnQZ\nrwR2l8k7CPu0pylPCXmXvKFWV1uv9RnztlWY6BRmufKn+lJsN3Blh7ndi5rlCjR6\nmHVrQD/l6+8VmSD3/mDnbEXPyzBkSY5D1wpR7M5VXN5jVHROc4ZA5M88SyI48ESG\nNmeAwtGar45/X+wG47+EC4+JXpNO7BQrEvHgJxBdyoQ6KLDrEaqn/OQpxB4Gfmcv\nSwkWDpSk8wFm/pGlFK6J4b+ba7eOetW+aXrWSiFB1sTAg0OY+gds67OpWQARAQAB\ntDFGZWRvcmEgKDQzKSA8ZmVkb3JhLTQzLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQJSBBMBCAA8FiEExufwgc+A4TFGZ26IgptgZjFkVTEFAma23M8CGw8FCwkI\nBwIDIgIBBhUKCQgLAgQWAgMBAh4HAheAAAoJEIKbYGYxZFUxagQP/RYWw5j0Gfvv\nlWkDQTjTVAnHtbKuQLYM13Lx5d3W1k0g6Xdrolf4yPjh4YPYVQDXksB4i6ULLbMo\n8u46UCPMQwCXTd3Ax9imYn+V74Isl/CkBbKQD9YfSJjhW3mSlPa27jo2uhqpdV0S\nxp05NWYnWrZN+GbtCUs1+rNTBevagOURtlZ8f0iPVRA/PxWzpjbRaGrCHlIYc3JO\nGKLUuQueLvOUg2pP8dtpll7S3xUe5Abyq2ifT34T0wHi6hJA3bfpXo1uNXRvGrNw\ngbJ7V6P7ioTcvyhS1h4zjelKFyvTnOKOy5D08HKmvTMWZQWEL7kDNymh1jMV7Abg\n4TPp808EiPF1GGAzXU56feaURSvIuix3MkjhGZsSQQH2kkkEIzq6j/EwmpyEMW38\ndtql4T2bVS/cTk/hRaqUKZlyrsL657g/4mFA1wDDM3895fYkHOpYF4JZ9SeDrhuc\nTgpC7/TW55l6vSiFtnQvcMfjpfCA6mCA4b75k+/xG9RxxBnYU0qVuUo/8pON31yQ\nD2AM2v7WbJBYVRYLlqPrkAZU5fe7+2wY7P7N0IAPwVA0TFJ1x6as3Kezdi/304mg\noC98DBLjHaUpX2bTxKMtCzlmeqPiwtyNkA9O9IQO7qQzArBKxmAgof4wblN5SL8i\nfsjiJUqsK/gTYwJ744I/tzxOy5FXjA7z\n=Bqds\n-----END PGP PUBLIC KEY BLOCK-----\n",
"check_gpg": true
}
@ -18,7 +18,7 @@
"ppc64le": [
{
"name": "fedora",
"metalink": "https://mirrors.fedoraproject.org/metalink?repo=fedora-rawhide&arch=ppc64le",
"metalink": "https://mirrors.fedoraproject.org/metalink?repo=fedora-43&arch=ppc64le",
"gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBGa23M8BEAC47NwKLi/g2S9I2p5JtUbJ0y3m2St9zqkSENmYw/+R+WKvaP3S\nKSFQF3Qi6pqGXJ88ADJUkFYpOGGyoc0dieLCmIPqtWbwGvBVMxBRBeU3+hClwbSQ\nsysVnr8VxUwidfsIjNJavCZwB0ZoZbxdCPMQMOgQyTLX4OI/uKlPUzeymDHwxjb/\ntllflSTOGtdYe3giRzidxN+xbCb6UoXkl0+lJEFbsmp41O5D/Ur5N05lBrsEXoDu\nFr99Kfv3Av7f3JfzDlkqC/EhmfxZEZvWj3hRdAfi2fFmtVcrdLfGIpQg6Y2Baphp\nPhaHqKl9zD5GWqu5GSXGoLaGXusBvwBKjS/g+VLo7pJfMsUF3sUduJNG3UThAsrp\nQLV3wQz0AMHVElRErOWdBDY0ddAKLPL7/mtxj39pGEpZ/dNtQkzgm7VCdP10QnQZ\nrwR2l8k7CPu0pylPCXmXvKFWV1uv9RnztlWY6BRmufKn+lJsN3Blh7ndi5rlCjR6\nmHVrQD/l6+8VmSD3/mDnbEXPyzBkSY5D1wpR7M5VXN5jVHROc4ZA5M88SyI48ESG\nNmeAwtGar45/X+wG47+EC4+JXpNO7BQrEvHgJxBdyoQ6KLDrEaqn/OQpxB4Gfmcv\nSwkWDpSk8wFm/pGlFK6J4b+ba7eOetW+aXrWSiFB1sTAg0OY+gds67OpWQARAQAB\ntDFGZWRvcmEgKDQzKSA8ZmVkb3JhLTQzLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQJSBBMBCAA8FiEExufwgc+A4TFGZ26IgptgZjFkVTEFAma23M8CGw8FCwkI\nBwIDIgIBBhUKCQgLAgQWAgMBAh4HAheAAAoJEIKbYGYxZFUxagQP/RYWw5j0Gfvv\nlWkDQTjTVAnHtbKuQLYM13Lx5d3W1k0g6Xdrolf4yPjh4YPYVQDXksB4i6ULLbMo\n8u46UCPMQwCXTd3Ax9imYn+V74Isl/CkBbKQD9YfSJjhW3mSlPa27jo2uhqpdV0S\nxp05NWYnWrZN+GbtCUs1+rNTBevagOURtlZ8f0iPVRA/PxWzpjbRaGrCHlIYc3JO\nGKLUuQueLvOUg2pP8dtpll7S3xUe5Abyq2ifT34T0wHi6hJA3bfpXo1uNXRvGrNw\ngbJ7V6P7ioTcvyhS1h4zjelKFyvTnOKOy5D08HKmvTMWZQWEL7kDNymh1jMV7Abg\n4TPp808EiPF1GGAzXU56feaURSvIuix3MkjhGZsSQQH2kkkEIzq6j/EwmpyEMW38\ndtql4T2bVS/cTk/hRaqUKZlyrsL657g/4mFA1wDDM3895fYkHOpYF4JZ9SeDrhuc\nTgpC7/TW55l6vSiFtnQvcMfjpfCA6mCA4b75k+/xG9RxxBnYU0qVuUo/8pON31yQ\nD2AM2v7WbJBYVRYLlqPrkAZU5fe7+2wY7P7N0IAPwVA0TFJ1x6as3Kezdi/304mg\noC98DBLjHaUpX2bTxKMtCzlmeqPiwtyNkA9O9IQO7qQzArBKxmAgof4wblN5SL8i\nfsjiJUqsK/gTYwJ744I/tzxOy5FXjA7z\n=Bqds\n-----END PGP PUBLIC KEY BLOCK-----\n",
"check_gpg": true
}
@ -26,7 +26,7 @@
"s390x": [
{
"name": "fedora",
"metalink": "https://mirrors.fedoraproject.org/metalink?repo=fedora-rawhide&arch=s390x",
"metalink": "https://mirrors.fedoraproject.org/metalink?repo=fedora-43&arch=s390x",
"gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBGa23M8BEAC47NwKLi/g2S9I2p5JtUbJ0y3m2St9zqkSENmYw/+R+WKvaP3S\nKSFQF3Qi6pqGXJ88ADJUkFYpOGGyoc0dieLCmIPqtWbwGvBVMxBRBeU3+hClwbSQ\nsysVnr8VxUwidfsIjNJavCZwB0ZoZbxdCPMQMOgQyTLX4OI/uKlPUzeymDHwxjb/\ntllflSTOGtdYe3giRzidxN+xbCb6UoXkl0+lJEFbsmp41O5D/Ur5N05lBrsEXoDu\nFr99Kfv3Av7f3JfzDlkqC/EhmfxZEZvWj3hRdAfi2fFmtVcrdLfGIpQg6Y2Baphp\nPhaHqKl9zD5GWqu5GSXGoLaGXusBvwBKjS/g+VLo7pJfMsUF3sUduJNG3UThAsrp\nQLV3wQz0AMHVElRErOWdBDY0ddAKLPL7/mtxj39pGEpZ/dNtQkzgm7VCdP10QnQZ\nrwR2l8k7CPu0pylPCXmXvKFWV1uv9RnztlWY6BRmufKn+lJsN3Blh7ndi5rlCjR6\nmHVrQD/l6+8VmSD3/mDnbEXPyzBkSY5D1wpR7M5VXN5jVHROc4ZA5M88SyI48ESG\nNmeAwtGar45/X+wG47+EC4+JXpNO7BQrEvHgJxBdyoQ6KLDrEaqn/OQpxB4Gfmcv\nSwkWDpSk8wFm/pGlFK6J4b+ba7eOetW+aXrWSiFB1sTAg0OY+gds67OpWQARAQAB\ntDFGZWRvcmEgKDQzKSA8ZmVkb3JhLTQzLXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQJSBBMBCAA8FiEExufwgc+A4TFGZ26IgptgZjFkVTEFAma23M8CGw8FCwkI\nBwIDIgIBBhUKCQgLAgQWAgMBAh4HAheAAAoJEIKbYGYxZFUxagQP/RYWw5j0Gfvv\nlWkDQTjTVAnHtbKuQLYM13Lx5d3W1k0g6Xdrolf4yPjh4YPYVQDXksB4i6ULLbMo\n8u46UCPMQwCXTd3Ax9imYn+V74Isl/CkBbKQD9YfSJjhW3mSlPa27jo2uhqpdV0S\nxp05NWYnWrZN+GbtCUs1+rNTBevagOURtlZ8f0iPVRA/PxWzpjbRaGrCHlIYc3JO\nGKLUuQueLvOUg2pP8dtpll7S3xUe5Abyq2ifT34T0wHi6hJA3bfpXo1uNXRvGrNw\ngbJ7V6P7ioTcvyhS1h4zjelKFyvTnOKOy5D08HKmvTMWZQWEL7kDNymh1jMV7Abg\n4TPp808EiPF1GGAzXU56feaURSvIuix3MkjhGZsSQQH2kkkEIzq6j/EwmpyEMW38\ndtql4T2bVS/cTk/hRaqUKZlyrsL657g/4mFA1wDDM3895fYkHOpYF4JZ9SeDrhuc\nTgpC7/TW55l6vSiFtnQvcMfjpfCA6mCA4b75k+/xG9RxxBnYU0qVuUo/8pON31yQ\nD2AM2v7WbJBYVRYLlqPrkAZU5fe7+2wY7P7N0IAPwVA0TFJ1x6as3Kezdi/304mg\noC98DBLjHaUpX2bTxKMtCzlmeqPiwtyNkA9O9IQO7qQzArBKxmAgof4wblN5SL8i\nfsjiJUqsK/gTYwJ744I/tzxOy5FXjA7z\n=Bqds\n-----END PGP PUBLIC KEY BLOCK-----\n",
"check_gpg": true
}

View file

@ -2,7 +2,7 @@
"x86_64": [
{
"name": "fedora",
"metalink": "https://mirrors.fedoraproject.org/metalink?repo=fedora-rawhide&arch=x86_64",
"metalink": "https://mirrors.fedoraproject.org/metalink?repo=fedora-44&arch=x86_64",
"gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBGeGrzsBEAC4UV5Ij9oz6h6abEKIRoiezttFfnLhwOAfE9tWtfIFMRmhY91u\nL88PKf12n2xHBd3oc5ahBzGeTBhaMV+VJAppoQMSOIMI5q966D9GQ0LkJT+E5bwn\nxGRJKp7qccevh2KFOUt2vHtFskhDOuAIupoKfo5FgI9PkvAVBsrUpO/22yjNv0V/\naeDXxZhRX8m/8FKJ77VcZtBRPcp7M41bCmW9gV9IDpD81hAdTjYoQr1Y3KU0FTm5\nW4l1mf9mZcKMskOk08TyzQeC2YRB20EYRK439XCGJ4P7BFiOl96EbPpky2pHe2FV\nAvX474o3QEecTK3KxZrsRjmXOqpjRPy5YyMfKEYBM9j3zBDvpDFk79Mfuw5n2Nr5\nU4Wn/rqfhKLUKkfpfCow97nzq8NqynwS09yVobIfjHCKRtjwun6ife+s7R4L2nAu\nrTWPAHqzIjjW5nnjaFtoSulIadVKx+KibKajA6gRAc6K7xMyMTHfqZeTAIcawvX6\nh2d/nd8xCfogM5FTI5obNSUVNaMv5vQg6vcV1fb6oRgodF0Bi+1dssq5EMQpHFJM\nnIQ5NVwuzSjCLt3X2mWUp0mfIt2K9oBpBct12uXho7Nm1bSC5UFNYsvw+rj6vTqZ\nilK9pyfcYmELv7a/NPkyuACsBFGoc66nBfrEvk57kW9FaJK9mjSqGftykQARAQAB\ntDFGZWRvcmEgKDQ0KSA8ZmVkb3JhLTQ0LXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQJSBBMBCAA8FiEENvYS3PJ/fRpIqDXk2/z3HG2fkKYFAmeGrzsCGw8FCwkI\nBwIDIgIBBhUKCQgLAgQWAgMBAh4HAheAAAoJENv89xxtn5CmIU0P/iaFVxJjVi4P\nyu8A04PbdGy2vuBBCceIjYn5HaMDwJMRjdJT6uMS494pSKNEl/JJ8K5rRdigfUV1\n2Z22X3kI5aNb4k2wpaPg5Xq0JQS9FvG4Pjm//kNy5WplmEA8HVg4MVkvySWiXay4\n+tkCelhE8aQDstYEm3uh+lZ6udgoInfprwFMn6H+8RXkakTW1z5NkuAA8PpMDA9o\nSOFc4Hk6bhE6exEp4VNwBEkxwh4z9CGjarlXL4QEyM1UK60vtbXIHVjITjFfKVQP\nj6ifdn5X69oSuK+1mUFXEV+l9pc1mVjTVTwOrG3EMBsoekFyICp1pPtfMo1dxBed\nR8BFHqQFsFdmIG+59ycFznFOXzDRfaVn6OTEAk7T8nDqnpe/T4GlybLYic6KMKcM\nnbMLaJZjHZ97qJb5Scpsd1TWB5TDERi4VPB7NAVC/EwxMPC3IJUbRej/s05gNjg0\n+2yyuV/U/DDnNGWnLTJDFLUaE8HhQBMvNSfmdMA47mo5CCuYmpzX/3M9vlVsv8/R\nxJBxFLIj9VFCPFNgXPeu9gyyytXeWgsIpDzMNJil9tgbBuQ1dX5GFMkWtK/kPexM\nKfiSU0JgJFfFSm0OKI/KXcRlbA1zP3IF+2YwbL+P5ePinHsDiAPLCQt/dWgw2tfB\nZZLj9c3Ukew6Qobuy3V1knl564qQ6wjf\n=1m7R\n-----END PGP PUBLIC KEY BLOCK-----",
"check_gpg": true
}
@ -10,7 +10,7 @@
"aarch64": [
{
"name": "fedora",
"metalink": "https://mirrors.fedoraproject.org/metalink?repo=fedora-rawhide&arch=aarch64",
"metalink": "https://mirrors.fedoraproject.org/metalink?repo=fedora-44&arch=aarch64",
"gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBGeGrzsBEAC4UV5Ij9oz6h6abEKIRoiezttFfnLhwOAfE9tWtfIFMRmhY91u\nL88PKf12n2xHBd3oc5ahBzGeTBhaMV+VJAppoQMSOIMI5q966D9GQ0LkJT+E5bwn\nxGRJKp7qccevh2KFOUt2vHtFskhDOuAIupoKfo5FgI9PkvAVBsrUpO/22yjNv0V/\naeDXxZhRX8m/8FKJ77VcZtBRPcp7M41bCmW9gV9IDpD81hAdTjYoQr1Y3KU0FTm5\nW4l1mf9mZcKMskOk08TyzQeC2YRB20EYRK439XCGJ4P7BFiOl96EbPpky2pHe2FV\nAvX474o3QEecTK3KxZrsRjmXOqpjRPy5YyMfKEYBM9j3zBDvpDFk79Mfuw5n2Nr5\nU4Wn/rqfhKLUKkfpfCow97nzq8NqynwS09yVobIfjHCKRtjwun6ife+s7R4L2nAu\nrTWPAHqzIjjW5nnjaFtoSulIadVKx+KibKajA6gRAc6K7xMyMTHfqZeTAIcawvX6\nh2d/nd8xCfogM5FTI5obNSUVNaMv5vQg6vcV1fb6oRgodF0Bi+1dssq5EMQpHFJM\nnIQ5NVwuzSjCLt3X2mWUp0mfIt2K9oBpBct12uXho7Nm1bSC5UFNYsvw+rj6vTqZ\nilK9pyfcYmELv7a/NPkyuACsBFGoc66nBfrEvk57kW9FaJK9mjSqGftykQARAQAB\ntDFGZWRvcmEgKDQ0KSA8ZmVkb3JhLTQ0LXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQJSBBMBCAA8FiEENvYS3PJ/fRpIqDXk2/z3HG2fkKYFAmeGrzsCGw8FCwkI\nBwIDIgIBBhUKCQgLAgQWAgMBAh4HAheAAAoJENv89xxtn5CmIU0P/iaFVxJjVi4P\nyu8A04PbdGy2vuBBCceIjYn5HaMDwJMRjdJT6uMS494pSKNEl/JJ8K5rRdigfUV1\n2Z22X3kI5aNb4k2wpaPg5Xq0JQS9FvG4Pjm//kNy5WplmEA8HVg4MVkvySWiXay4\n+tkCelhE8aQDstYEm3uh+lZ6udgoInfprwFMn6H+8RXkakTW1z5NkuAA8PpMDA9o\nSOFc4Hk6bhE6exEp4VNwBEkxwh4z9CGjarlXL4QEyM1UK60vtbXIHVjITjFfKVQP\nj6ifdn5X69oSuK+1mUFXEV+l9pc1mVjTVTwOrG3EMBsoekFyICp1pPtfMo1dxBed\nR8BFHqQFsFdmIG+59ycFznFOXzDRfaVn6OTEAk7T8nDqnpe/T4GlybLYic6KMKcM\nnbMLaJZjHZ97qJb5Scpsd1TWB5TDERi4VPB7NAVC/EwxMPC3IJUbRej/s05gNjg0\n+2yyuV/U/DDnNGWnLTJDFLUaE8HhQBMvNSfmdMA47mo5CCuYmpzX/3M9vlVsv8/R\nxJBxFLIj9VFCPFNgXPeu9gyyytXeWgsIpDzMNJil9tgbBuQ1dX5GFMkWtK/kPexM\nKfiSU0JgJFfFSm0OKI/KXcRlbA1zP3IF+2YwbL+P5ePinHsDiAPLCQt/dWgw2tfB\nZZLj9c3Ukew6Qobuy3V1knl564qQ6wjf\n=1m7R\n-----END PGP PUBLIC KEY BLOCK-----\n",
"check_gpg": true
}
@ -18,7 +18,7 @@
"ppc64le": [
{
"name": "fedora",
"metalink": "https://mirrors.fedoraproject.org/metalink?repo=fedora-rawhide&arch=ppc64le",
"metalink": "https://mirrors.fedoraproject.org/metalink?repo=fedora-44&arch=ppc64le",
"gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBGeGrzsBEAC4UV5Ij9oz6h6abEKIRoiezttFfnLhwOAfE9tWtfIFMRmhY91u\nL88PKf12n2xHBd3oc5ahBzGeTBhaMV+VJAppoQMSOIMI5q966D9GQ0LkJT+E5bwn\nxGRJKp7qccevh2KFOUt2vHtFskhDOuAIupoKfo5FgI9PkvAVBsrUpO/22yjNv0V/\naeDXxZhRX8m/8FKJ77VcZtBRPcp7M41bCmW9gV9IDpD81hAdTjYoQr1Y3KU0FTm5\nW4l1mf9mZcKMskOk08TyzQeC2YRB20EYRK439XCGJ4P7BFiOl96EbPpky2pHe2FV\nAvX474o3QEecTK3KxZrsRjmXOqpjRPy5YyMfKEYBM9j3zBDvpDFk79Mfuw5n2Nr5\nU4Wn/rqfhKLUKkfpfCow97nzq8NqynwS09yVobIfjHCKRtjwun6ife+s7R4L2nAu\nrTWPAHqzIjjW5nnjaFtoSulIadVKx+KibKajA6gRAc6K7xMyMTHfqZeTAIcawvX6\nh2d/nd8xCfogM5FTI5obNSUVNaMv5vQg6vcV1fb6oRgodF0Bi+1dssq5EMQpHFJM\nnIQ5NVwuzSjCLt3X2mWUp0mfIt2K9oBpBct12uXho7Nm1bSC5UFNYsvw+rj6vTqZ\nilK9pyfcYmELv7a/NPkyuACsBFGoc66nBfrEvk57kW9FaJK9mjSqGftykQARAQAB\ntDFGZWRvcmEgKDQ0KSA8ZmVkb3JhLTQ0LXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQJSBBMBCAA8FiEENvYS3PJ/fRpIqDXk2/z3HG2fkKYFAmeGrzsCGw8FCwkI\nBwIDIgIBBhUKCQgLAgQWAgMBAh4HAheAAAoJENv89xxtn5CmIU0P/iaFVxJjVi4P\nyu8A04PbdGy2vuBBCceIjYn5HaMDwJMRjdJT6uMS494pSKNEl/JJ8K5rRdigfUV1\n2Z22X3kI5aNb4k2wpaPg5Xq0JQS9FvG4Pjm//kNy5WplmEA8HVg4MVkvySWiXay4\n+tkCelhE8aQDstYEm3uh+lZ6udgoInfprwFMn6H+8RXkakTW1z5NkuAA8PpMDA9o\nSOFc4Hk6bhE6exEp4VNwBEkxwh4z9CGjarlXL4QEyM1UK60vtbXIHVjITjFfKVQP\nj6ifdn5X69oSuK+1mUFXEV+l9pc1mVjTVTwOrG3EMBsoekFyICp1pPtfMo1dxBed\nR8BFHqQFsFdmIG+59ycFznFOXzDRfaVn6OTEAk7T8nDqnpe/T4GlybLYic6KMKcM\nnbMLaJZjHZ97qJb5Scpsd1TWB5TDERi4VPB7NAVC/EwxMPC3IJUbRej/s05gNjg0\n+2yyuV/U/DDnNGWnLTJDFLUaE8HhQBMvNSfmdMA47mo5CCuYmpzX/3M9vlVsv8/R\nxJBxFLIj9VFCPFNgXPeu9gyyytXeWgsIpDzMNJil9tgbBuQ1dX5GFMkWtK/kPexM\nKfiSU0JgJFfFSm0OKI/KXcRlbA1zP3IF+2YwbL+P5ePinHsDiAPLCQt/dWgw2tfB\nZZLj9c3Ukew6Qobuy3V1knl564qQ6wjf\n=1m7R\n-----END PGP PUBLIC KEY BLOCK-----\n",
"check_gpg": true
}
@ -26,7 +26,7 @@
"s390x": [
{
"name": "fedora",
"metalink": "https://mirrors.fedoraproject.org/metalink?repo=fedora-rawhide&arch=s390x",
"metalink": "https://mirrors.fedoraproject.org/metalink?repo=fedora-44&arch=s390x",
"gpgkey": "-----BEGIN PGP PUBLIC KEY BLOCK-----\n\nmQINBGeGrzsBEAC4UV5Ij9oz6h6abEKIRoiezttFfnLhwOAfE9tWtfIFMRmhY91u\nL88PKf12n2xHBd3oc5ahBzGeTBhaMV+VJAppoQMSOIMI5q966D9GQ0LkJT+E5bwn\nxGRJKp7qccevh2KFOUt2vHtFskhDOuAIupoKfo5FgI9PkvAVBsrUpO/22yjNv0V/\naeDXxZhRX8m/8FKJ77VcZtBRPcp7M41bCmW9gV9IDpD81hAdTjYoQr1Y3KU0FTm5\nW4l1mf9mZcKMskOk08TyzQeC2YRB20EYRK439XCGJ4P7BFiOl96EbPpky2pHe2FV\nAvX474o3QEecTK3KxZrsRjmXOqpjRPy5YyMfKEYBM9j3zBDvpDFk79Mfuw5n2Nr5\nU4Wn/rqfhKLUKkfpfCow97nzq8NqynwS09yVobIfjHCKRtjwun6ife+s7R4L2nAu\nrTWPAHqzIjjW5nnjaFtoSulIadVKx+KibKajA6gRAc6K7xMyMTHfqZeTAIcawvX6\nh2d/nd8xCfogM5FTI5obNSUVNaMv5vQg6vcV1fb6oRgodF0Bi+1dssq5EMQpHFJM\nnIQ5NVwuzSjCLt3X2mWUp0mfIt2K9oBpBct12uXho7Nm1bSC5UFNYsvw+rj6vTqZ\nilK9pyfcYmELv7a/NPkyuACsBFGoc66nBfrEvk57kW9FaJK9mjSqGftykQARAQAB\ntDFGZWRvcmEgKDQ0KSA8ZmVkb3JhLTQ0LXByaW1hcnlAZmVkb3JhcHJvamVjdC5v\ncmc+iQJSBBMBCAA8FiEENvYS3PJ/fRpIqDXk2/z3HG2fkKYFAmeGrzsCGw8FCwkI\nBwIDIgIBBhUKCQgLAgQWAgMBAh4HAheAAAoJENv89xxtn5CmIU0P/iaFVxJjVi4P\nyu8A04PbdGy2vuBBCceIjYn5HaMDwJMRjdJT6uMS494pSKNEl/JJ8K5rRdigfUV1\n2Z22X3kI5aNb4k2wpaPg5Xq0JQS9FvG4Pjm//kNy5WplmEA8HVg4MVkvySWiXay4\n+tkCelhE8aQDstYEm3uh+lZ6udgoInfprwFMn6H+8RXkakTW1z5NkuAA8PpMDA9o\nSOFc4Hk6bhE6exEp4VNwBEkxwh4z9CGjarlXL4QEyM1UK60vtbXIHVjITjFfKVQP\nj6ifdn5X69oSuK+1mUFXEV+l9pc1mVjTVTwOrG3EMBsoekFyICp1pPtfMo1dxBed\nR8BFHqQFsFdmIG+59ycFznFOXzDRfaVn6OTEAk7T8nDqnpe/T4GlybLYic6KMKcM\nnbMLaJZjHZ97qJb5Scpsd1TWB5TDERi4VPB7NAVC/EwxMPC3IJUbRej/s05gNjg0\n+2yyuV/U/DDnNGWnLTJDFLUaE8HhQBMvNSfmdMA47mo5CCuYmpzX/3M9vlVsv8/R\nxJBxFLIj9VFCPFNgXPeu9gyyytXeWgsIpDzMNJil9tgbBuQ1dX5GFMkWtK/kPexM\nKfiSU0JgJFfFSm0OKI/KXcRlbA1zP3IF+2YwbL+P5ePinHsDiAPLCQt/dWgw2tfB\nZZLj9c3Ukew6Qobuy3V1knl564qQ6wjf\n=1m7R\n-----END PGP PUBLIC KEY BLOCK-----\n",
"check_gpg": true
}

View file

@ -371,8 +371,6 @@ type ImageTypeYAML struct {
DefaultSize uint64 `yaml:"default_size"`
// the image func name: disk,container,live-installer,...
Image string `yaml:"image_func"`
BuildPipelines []string `yaml:"build_pipelines"`
PayloadPipelines []string `yaml:"payload_pipelines"`
Exports []string `yaml:"exports"`
RequiredPartitionSizes map[string]uint64 `yaml:"required_partition_sizes"`

View file

@ -113,12 +113,6 @@ type ImageType interface {
// Returns the corresponding boot mode ("legacy", "uefi", "hybrid") or "none"
BootMode() platform.BootMode
// Returns the names of the pipelines that set up the build environment (buildroot).
BuildPipelines() []string
// Returns the names of the pipelines that create the image.
PayloadPipelines() []string
// Returns the package set names safe to install custom packages via custom repositories.
PayloadPackageSets() []string
@ -154,13 +148,6 @@ type BasePartitionTableMap map[string]disk.PartitionTable
// function from below.
// Example: Exports() simply returns "assembler" for older image type
// implementations that didn't produce v1 manifests that have named pipelines.
func BuildPipelinesFallback() []string {
return []string{"build"}
}
func PayloadPipelinesFallback() []string {
return []string{"os", "assembler"}
}
func ExportsFallback() []string {
return []string{"assembler"}

View file

@ -230,7 +230,7 @@ func DistroFactory(idStr string) distro.Distro {
return nil
}
if err != nil {
panic(err)
panic(fmt.Errorf("%w with distro %s", err, idStr))
}
return distro
}

View file

@ -318,6 +318,56 @@ func osCustomizations(t *imageType, osPackageSet rpmmd.PackageSet, options distr
return osc, nil
}
func installerCustomizations(t *imageType, c *blueprint.Customizations) (manifest.InstallerCustomizations, error) {
isc := manifest.InstallerCustomizations{}
isc.FIPS = c.GetFIPS()
isc.UseLegacyAnacondaConfig = t.ImageTypeYAML.UseLegacyAnacondaConfig
installerConfig, err := t.getDefaultInstallerConfig()
if err != nil {
return isc, err
}
if installerConfig != nil {
isc.EnabledAnacondaModules = append(isc.EnabledAnacondaModules, installerConfig.EnabledAnacondaModules...)
isc.AdditionalDracutModules = append(isc.AdditionalDracutModules, installerConfig.AdditionalDracutModules...)
isc.AdditionalDrivers = append(isc.AdditionalDrivers, installerConfig.AdditionalDrivers...)
if menu := installerConfig.DefaultMenu; menu != nil {
isc.DefaultMenu = *menu
}
if isoroot := installerConfig.ISORootfsType; isoroot != nil {
isc.ISORootfsType = *isoroot
}
if isoboot := installerConfig.ISOBootType; isoboot != nil {
isc.ISOBoot = *isoboot
}
// Put the kickstart file in the root of the iso, some image
// types (like rhel10/image-installer) put them there, some
// others (like fedora/image-installer) do not and because
// its not uniform we need to make it configurable.
// XXX: unify with rhel-11 ? or rhel-10.x?
if rootkickstart := installerConfig.ISORootKickstart; rootkickstart != nil {
isc.ISORootKickstart = *rootkickstart
}
}
installerCust, err := c.GetInstaller()
if err != nil {
return isc, err
}
if installerCust != nil && installerCust.Modules != nil {
isc.EnabledAnacondaModules = append(isc.EnabledAnacondaModules, installerCust.Modules.Enable...)
isc.DisabledAnacondaModules = append(isc.DisabledAnacondaModules, installerCust.Modules.Disable...)
}
return isc, nil
}
func ostreeDeploymentCustomizations(
t *imageType,
c *blueprint.Customizations) (manifest.OSTreeDeploymentCustomizations, error) {
@ -525,24 +575,12 @@ func liveInstallerImage(workload workload.Workload,
if locale := imgConfig.Locale; locale != nil {
img.Locale = *locale
}
if isoroot := imgConfig.ISORootfsType; isoroot != nil {
img.RootfsType = *isoroot
}
if isoboot := imgConfig.ISOBootType; isoboot != nil {
img.ISOBoot = *isoboot
}
installerConfig, err := t.getDefaultInstallerConfig()
img.InstallerCustomizations, err = installerCustomizations(t, bp.Customizations)
if err != nil {
return nil, err
}
if installerConfig != nil {
img.AdditionalDracutModules = append(img.AdditionalDracutModules, installerConfig.AdditionalDracutModules...)
img.AdditionalDrivers = append(img.AdditionalDrivers, installerConfig.AdditionalDrivers...)
if installerConfig.SquashfsRootfs != nil && *installerConfig.SquashfsRootfs {
img.RootfsType = manifest.SquashfsRootfs
}
}
return img, nil
}
@ -565,8 +603,6 @@ func imageInstallerImage(workload workload.Workload,
return nil, err
}
img.UseLegacyAnacondaConfig = t.ImageTypeYAML.UseLegacyAnacondaConfig
img.Kickstart, err = kickstart.New(customizations)
if err != nil {
return nil, err
@ -575,45 +611,27 @@ func imageInstallerImage(workload workload.Workload,
img.Kickstart.Keyboard = img.OSCustomizations.Keyboard
img.Kickstart.Timezone = &img.OSCustomizations.Timezone
instCust, err := customizations.GetInstaller()
if err != nil {
return nil, err
}
if instCust != nil && instCust.Modules != nil {
img.EnabledAnacondaModules = append(img.EnabledAnacondaModules, instCust.Modules.Enable...)
img.DisabledAnacondaModules = append(img.DisabledAnacondaModules, instCust.Modules.Disable...)
}
img.EnabledAnacondaModules = append(img.EnabledAnacondaModules, anaconda.ModuleUsers)
img.Platform = t.platform
img.Workload = workload
img.ExtraBasePackages = packageSets[installerPkgsKey]
img.InstallerCustomizations, err = installerCustomizations(t, bp.Customizations)
if err != nil {
return nil, err
}
installerConfig, err := t.getDefaultInstallerConfig()
if err != nil {
return nil, err
}
if installerConfig != nil {
img.EnabledAnacondaModules = append(img.EnabledAnacondaModules, installerConfig.EnabledAnacondaModules...)
img.AdditionalDracutModules = append(img.AdditionalDracutModules, installerConfig.AdditionalDracutModules...)
img.AdditionalDrivers = append(img.AdditionalDrivers, installerConfig.AdditionalDrivers...)
if installerConfig.SquashfsRootfs != nil && *installerConfig.SquashfsRootfs {
img.RootfsType = manifest.SquashfsRootfs
}
if img.Kickstart.Unattended {
img.AdditionalKernelOpts = append(img.AdditionalKernelOpts, installerConfig.KickstartUnattendedExtraKernelOpts...)
}
// XXX these bits should move into the `installerCustomization` function
// XXX directly
img.InstallerCustomizations.EnabledAnacondaModules = append(img.InstallerCustomizations.EnabledAnacondaModules, anaconda.ModuleUsers)
// Put the kickstart file in the root of the iso, some image
// types (like rhel10/image-installer) put them there, some
// others (like fedora/image-installer) do not and because
// its not uniform we need to make it configurable.
// XXX: unify with rhel-11 ? or rhel-10.x?
if installerConfig.ISORootKickstart != nil {
img.ISORootKickstart = *installerConfig.ISORootKickstart
}
if img.Kickstart.Unattended {
img.InstallerCustomizations.AdditionalKernelOpts = append(img.InstallerCustomizations.AdditionalKernelOpts, installerConfig.KickstartUnattendedExtraKernelOpts...)
}
d := t.arch.distro
@ -633,13 +651,6 @@ func imageInstallerImage(workload workload.Workload,
img.Filename = t.Filename()
img.RootfsCompression = "xz" // This also triggers using the bcj filter
imgConfig := t.getDefaultImageConfig()
if isoroot := imgConfig.ISORootfsType; isoroot != nil {
img.RootfsType = *isoroot
}
if isoboot := imgConfig.ISOBootType; isoboot != nil {
img.ISOBoot = *isoboot
}
return img, nil
}
@ -774,10 +785,8 @@ func iotInstallerImage(workload workload.Workload,
img := image.NewAnacondaOSTreeInstaller(commit)
customizations := bp.Customizations
img.FIPS = customizations.GetFIPS()
img.Platform = t.platform
img.ExtraBasePackages = packageSets[installerPkgsKey]
img.UseLegacyAnacondaConfig = t.ImageTypeYAML.UseLegacyAnacondaConfig
img.Kickstart, err = kickstart.New(customizations)
if err != nil {
@ -793,31 +802,17 @@ func iotInstallerImage(workload workload.Workload,
// kickstart though kickstart does support setting them
img.Kickstart.Timezone, _ = customizations.GetTimezoneSettings()
instCust, err := customizations.GetInstaller()
if err != nil {
return nil, err
}
if instCust != nil && instCust.Modules != nil {
img.EnabledAnacondaModules = append(img.EnabledAnacondaModules, instCust.Modules.Enable...)
img.DisabledAnacondaModules = append(img.DisabledAnacondaModules, instCust.Modules.Disable...)
}
img.InstallerCustomizations, err = installerCustomizations(t, bp.Customizations)
installerConfig, err := t.getDefaultInstallerConfig()
if err != nil {
return nil, err
}
if installerConfig != nil {
img.AdditionalDracutModules = append(img.AdditionalDracutModules, installerConfig.AdditionalDracutModules...)
img.AdditionalDrivers = append(img.AdditionalDrivers, installerConfig.AdditionalDrivers...)
img.EnabledAnacondaModules = append(img.EnabledAnacondaModules, installerConfig.EnabledAnacondaModules...)
if installerConfig.SquashfsRootfs != nil && *installerConfig.SquashfsRootfs {
img.RootfsType = manifest.SquashfsRootfs
}
}
// XXX these bits should move into the `installerCustomization` function
// XXX directly
if len(img.Kickstart.Users)+len(img.Kickstart.Groups) > 0 {
// only enable the users module if needed
img.EnabledAnacondaModules = append(img.EnabledAnacondaModules, anaconda.ModuleUsers)
img.InstallerCustomizations.EnabledAnacondaModules = append(img.InstallerCustomizations.EnabledAnacondaModules, anaconda.ModuleUsers)
}
img.Product = d.Product()
@ -838,12 +833,6 @@ func iotInstallerImage(workload workload.Workload,
if locale := imgConfig.Locale; locale != nil {
img.Locale = *locale
}
if isoroot := imgConfig.ISORootfsType; isoroot != nil {
img.RootfsType = *isoroot
}
if isoboot := imgConfig.ISOBootType; isoboot != nil {
img.ISOBoot = *isoboot
}
return img, nil
}
@ -980,6 +969,55 @@ func iotSimplifiedInstallerImage(workload workload.Workload,
return img, nil
}
// Make an Anaconda installer boot.iso
func netinstImage(workload workload.Workload,
t *imageType,
bp *blueprint.Blueprint,
options distro.ImageOptions,
packageSets map[string]rpmmd.PackageSet,
containers []container.SourceSpec,
rng *rand.Rand) (image.ImageKind, error) {
customizations := bp.Customizations
img := image.NewAnacondaNetInstaller()
language, _ := customizations.GetPrimaryLocale()
if language != nil {
img.Language = *language
}
img.Platform = t.platform
img.Workload = workload
img.ExtraBasePackages = packageSets[installerPkgsKey]
var err error
img.InstallerCustomizations, err = installerCustomizations(t, bp.Customizations)
if err != nil {
return nil, err
}
d := t.arch.distro
img.Product = d.Product()
img.Variant = t.Variant
img.OSVersion = d.OsVersion()
img.Release = fmt.Sprintf("%s %s", d.Product(), d.OsVersion())
img.Preview = d.DistroYAML.Preview
img.ISOLabel, err = t.ISOLabel()
if err != nil {
return nil, err
}
img.Filename = t.Filename()
img.RootfsCompression = "xz" // This also triggers using the bcj filter
return img, nil
}
// Create an ostree SourceSpec to define an ostree parent commit using the user
// options and the default ref for the image type. Additionally returns the
// ref to be used for the new commit to be created.

View file

@ -67,6 +67,8 @@ func newImageTypeFrom(d *distribution, ar *architecture, imgYAML defs.ImageTypeY
it.image = iotSimplifiedInstallerImage
case "tar":
it.image = tarImage
case "netinst":
it.image = netinstImage
default:
err := fmt.Errorf("unknown image func: %v for %v", imgYAML.Image, imgYAML.Name())
panic(err)
@ -125,14 +127,6 @@ func (t *imageType) Size(size uint64) uint64 {
return size
}
func (t *imageType) BuildPipelines() []string {
return t.ImageTypeYAML.BuildPipelines
}
func (t *imageType) PayloadPipelines() []string {
return t.ImageTypeYAML.PayloadPipelines
}
func (t *imageType) PayloadPackageSets() []string {
return []string{blueprintPkgsKey}
}

View file

@ -10,7 +10,6 @@ import (
"github.com/osbuild/images/pkg/customizations/subscription"
"github.com/osbuild/images/pkg/customizations/users"
"github.com/osbuild/images/pkg/customizations/wsl"
"github.com/osbuild/images/pkg/manifest"
"github.com/osbuild/images/pkg/osbuild"
)
@ -135,13 +134,6 @@ type ImageConfig struct {
// instead of writing to /etc/fstab
MountUnits *bool `yaml:"mount_units,omitempty"`
// ISORootfsType defines what rootfs (squashfs, erofs,ext4)
// is used
ISORootfsType *manifest.RootfsType `yaml:"iso_rootfs_type,omitempty"`
// ISOBootType defines what type of bootloader is used for the iso
ISOBootType *manifest.ISOBootType `yaml:"iso_boot_type,omitempty"`
// Indicates if rhc should be set to permissive when creating the registration script
PermissiveRHC *bool `yaml:"permissive_rhc,omitempty"`
@ -169,8 +161,8 @@ func shallowMerge[T any](child *T, parent *T) *T {
// Only container types or pointer are supported.
// The reason is that with basic types, we can't distinguish between unset value and zero value.
if kind := field.Kind(); kind != reflect.Ptr && kind != reflect.Slice && kind != reflect.Map {
panic(fmt.Sprintf("unsupported field type: %s (only container types or pointer are supported)",
field.Kind()))
panic(fmt.Sprintf("unsupported field type for %s: %s (only container types or pointer are supported)",
fieldName, field.Kind()))
}
if field.IsNil() {

View file

@ -1,5 +1,9 @@
package distro
import (
"github.com/osbuild/images/pkg/manifest"
)
// InstallerConfig represents a configuration for the installer
// part of an Installer image type.
type InstallerConfig struct {
@ -14,8 +18,15 @@ type InstallerConfig struct {
KickstartUnattendedExtraKernelOpts []string `yaml:"kickstart_unattended_extra_kernel_opts"`
ISORootKickstart *bool `yaml:"iso_root_kickstart"`
// SquashfsRootfs will set SquashfsRootfs as rootfs in the iso image
SquashfsRootfs *bool `yaml:"squashfs_rootfs"`
// DefaultMenu will set the grub2 iso menu's default setting
DefaultMenu *int `yaml:"default_menu"`
// RootfsType defines what rootfs (squashfs, erofs,ext4)
// is used
ISORootfsType *manifest.ISORootfsType `yaml:"iso_rootfs_type,omitempty"`
// BootType defines what type of bootloader is used for the iso
ISOBootType *manifest.ISOBootType `yaml:"iso_boot_type,omitempty"`
}
// InheritFrom inherits unset values from the provided parent configuration and

View file

@ -225,14 +225,6 @@ func (t *TestImageType) BootMode() platform.BootMode {
return platform.BOOT_HYBRID
}
func (t *TestImageType) BuildPipelines() []string {
return distro.BuildPipelinesFallback()
}
func (t *TestImageType) PayloadPipelines() []string {
return distro.PayloadPipelinesFallback()
}
func (t *TestImageType) PayloadPackageSets() []string {
return []string{blueprintPkgsKey}
}

View file

@ -20,12 +20,11 @@ import (
type AnacondaContainerInstaller struct {
Base
Platform platform.Platform
ExtraBasePackages rpmmd.PackageSet
Platform platform.Platform
InstallerCustomizations manifest.InstallerCustomizations
ExtraBasePackages rpmmd.PackageSet
RootfsCompression string
RootfsType manifest.RootfsType
ISOBoot manifest.ISOBootType
ISOLabel string
Product string
@ -40,22 +39,8 @@ type AnacondaContainerInstaller struct {
Filename string
EnabledAnacondaModules []string
DisabledAnacondaModules []string
AdditionalDracutModules []string
AdditionalDrivers []string
FIPS bool
Kickstart *kickstart.Options
UseRHELLoraxTemplates bool
// Uses the old, deprecated, Anaconda config option "kickstart-modules".
// Only for RHEL 8.
UseLegacyAnacondaConfig bool
// Locale for the installer. This should be set to the same locale as the
// ISO OS payload, if known.
Locale string
@ -90,29 +75,25 @@ func (img *AnacondaContainerInstaller) InstantiateManifest(m *manifest.Manifest,
img.Preview,
)
anacondaPipeline.UseRHELLoraxTemplates = img.UseRHELLoraxTemplates
anacondaPipeline.UseLegacyAnacondaConfig = img.UseLegacyAnacondaConfig
anacondaPipeline.ExtraPackages = img.ExtraBasePackages.Include
anacondaPipeline.ExcludePackages = img.ExtraBasePackages.Exclude
anacondaPipeline.ExtraRepos = img.ExtraBasePackages.Repositories
anacondaPipeline.Variant = img.Variant
anacondaPipeline.Biosdevname = (img.Platform.GetArch() == arch.ARCH_X86_64)
anacondaPipeline.Checkpoint()
anacondaPipeline.EnabledAnacondaModules = img.EnabledAnacondaModules
anacondaPipeline.DisabledAnacondaModules = img.DisabledAnacondaModules
if img.FIPS {
anacondaPipeline.EnabledAnacondaModules = append(
anacondaPipeline.EnabledAnacondaModules,
anacondaPipeline.InstallerCustomizations = img.InstallerCustomizations
if anacondaPipeline.InstallerCustomizations.FIPS {
anacondaPipeline.InstallerCustomizations.EnabledAnacondaModules = append(
anacondaPipeline.InstallerCustomizations.EnabledAnacondaModules,
anaconda.ModuleSecurity,
)
}
anacondaPipeline.AdditionalDracutModules = img.AdditionalDracutModules
anacondaPipeline.AdditionalDrivers = img.AdditionalDrivers
anacondaPipeline.Locale = img.Locale
var rootfsImagePipeline *manifest.ISORootfsImg
switch img.RootfsType {
switch img.InstallerCustomizations.ISORootfsType {
case manifest.SquashfsExt4Rootfs:
rootfsImagePipeline = manifest.NewISORootfsImg(buildPipeline, anacondaPipeline)
rootfsImagePipeline.Size = 4 * datasizes.GibiByte
@ -132,7 +113,7 @@ func (img *AnacondaContainerInstaller) InstantiateManifest(m *manifest.Manifest,
}
bootTreePipeline.KernelOpts = []string{fmt.Sprintf("inst.stage2=hd:LABEL=%s", img.ISOLabel), fmt.Sprintf("inst.ks=hd:LABEL=%s:%s", img.ISOLabel, img.Kickstart.Path)}
if img.FIPS {
if anacondaPipeline.InstallerCustomizations.FIPS {
bootTreePipeline.KernelOpts = append(bootTreePipeline.KernelOpts, "fips=1")
}
@ -142,15 +123,15 @@ func (img *AnacondaContainerInstaller) InstantiateManifest(m *manifest.Manifest,
isoTreePipeline.Kickstart = img.Kickstart
isoTreePipeline.RootfsCompression = img.RootfsCompression
isoTreePipeline.RootfsType = img.RootfsType
isoTreePipeline.RootfsType = img.InstallerCustomizations.ISORootfsType
// For ostree installers, always put the kickstart file in the root of the ISO
isoTreePipeline.PayloadPath = "/container"
isoTreePipeline.PayloadRemoveSignatures = img.ContainerRemoveSignatures
isoTreePipeline.ContainerSource = &img.ContainerSource
isoTreePipeline.ISOBoot = img.ISOBoot
if img.FIPS {
isoTreePipeline.ISOBoot = img.InstallerCustomizations.ISOBoot
if anacondaPipeline.InstallerCustomizations.FIPS {
isoTreePipeline.KernelOpts = append(isoTreePipeline.KernelOpts, "fips=1")
}
@ -158,7 +139,7 @@ func (img *AnacondaContainerInstaller) InstantiateManifest(m *manifest.Manifest,
isoPipeline := manifest.NewISO(buildPipeline, isoTreePipeline, img.ISOLabel)
isoPipeline.SetFilename(img.Filename)
isoPipeline.ISOBoot = img.ISOBoot
isoPipeline.ISOBoot = img.InstallerCustomizations.ISOBoot
artifact := isoPipeline.Export()
return artifact, nil

View file

@ -17,15 +17,14 @@ import (
type AnacondaLiveInstaller struct {
Base
Platform platform.Platform
Environment environment.Environment
Workload workload.Workload
Platform platform.Platform
InstallerCustomizations manifest.InstallerCustomizations
Environment environment.Environment
Workload workload.Workload
ExtraBasePackages rpmmd.PackageSet
RootfsCompression string
RootfsType manifest.RootfsType
ISOBoot manifest.ISOBootType
ISOLabel string
Product string
@ -36,8 +35,6 @@ type AnacondaLiveInstaller struct {
Filename string
AdditionalKernelOpts []string
// Locale for the installer. This should be set to the same locale as the
// ISO OS payload, if known.
Locale string
@ -76,6 +73,7 @@ func (img *AnacondaLiveInstaller) InstantiateManifest(m *manifest.Manifest,
livePipeline.Variant = img.Variant
livePipeline.Biosdevname = (img.Platform.GetArch() == arch.ARCH_X86_64)
livePipeline.Locale = img.Locale
livePipeline.InstallerCustomizations = img.InstallerCustomizations
// The live installer has SELinux enabled and targeted
livePipeline.SELinux = "targeted"
@ -83,7 +81,7 @@ func (img *AnacondaLiveInstaller) InstantiateManifest(m *manifest.Manifest,
livePipeline.Checkpoint()
var rootfsImagePipeline *manifest.ISORootfsImg
switch img.RootfsType {
switch img.InstallerCustomizations.ISORootfsType {
case manifest.SquashfsExt4Rootfs:
rootfsImagePipeline = manifest.NewISORootfsImg(buildPipeline, livePipeline)
rootfsImagePipeline.Size = 8 * datasizes.GibiByte
@ -94,6 +92,7 @@ func (img *AnacondaLiveInstaller) InstantiateManifest(m *manifest.Manifest,
bootTreePipeline.Platform = img.Platform
bootTreePipeline.UEFIVendor = img.Platform.GetUEFIVendor()
bootTreePipeline.ISOLabel = img.ISOLabel
bootTreePipeline.DefaultMenu = img.InstallerCustomizations.DefaultMenu
kernelOpts := []string{
fmt.Sprintf("root=live:CDLABEL=%s", img.ISOLabel),
@ -102,7 +101,7 @@ func (img *AnacondaLiveInstaller) InstantiateManifest(m *manifest.Manifest,
"rhgb",
}
kernelOpts = append(kernelOpts, img.AdditionalKernelOpts...)
kernelOpts = append(kernelOpts, img.InstallerCustomizations.AdditionalKernelOpts...)
bootTreePipeline.KernelOpts = kernelOpts
@ -111,14 +110,14 @@ func (img *AnacondaLiveInstaller) InstantiateManifest(m *manifest.Manifest,
isoTreePipeline.Release = img.Release
isoTreePipeline.KernelOpts = kernelOpts
isoTreePipeline.ISOBoot = img.ISOBoot
isoTreePipeline.ISOBoot = img.InstallerCustomizations.ISOBoot
isoTreePipeline.RootfsCompression = img.RootfsCompression
isoTreePipeline.RootfsType = img.RootfsType
isoTreePipeline.RootfsType = img.InstallerCustomizations.ISORootfsType
isoPipeline := manifest.NewISO(buildPipeline, isoTreePipeline, img.ISOLabel)
isoPipeline.SetFilename(img.Filename)
isoPipeline.ISOBoot = img.ISOBoot
isoPipeline.ISOBoot = img.InstallerCustomizations.ISOBoot
artifact := isoPipeline.Export()

View file

@ -0,0 +1,128 @@
package image
import (
"fmt"
"math/rand"
"github.com/osbuild/images/internal/environment"
"github.com/osbuild/images/internal/workload"
"github.com/osbuild/images/pkg/arch"
"github.com/osbuild/images/pkg/artifact"
"github.com/osbuild/images/pkg/customizations/anaconda"
"github.com/osbuild/images/pkg/datasizes"
"github.com/osbuild/images/pkg/manifest"
"github.com/osbuild/images/pkg/platform"
"github.com/osbuild/images/pkg/rpmmd"
"github.com/osbuild/images/pkg/runner"
)
type AnacondaNetInstaller struct {
Base
Platform platform.Platform
InstallerCustomizations manifest.InstallerCustomizations
Environment environment.Environment
Workload workload.Workload
ExtraBasePackages rpmmd.PackageSet
RootfsCompression string
ISOLabel string
Product string
Variant string
OSVersion string
Release string
Preview bool
Filename string
Language string
}
func NewAnacondaNetInstaller() *AnacondaNetInstaller {
return &AnacondaNetInstaller{
Base: NewBase("netinst"),
}
}
func (img *AnacondaNetInstaller) InstantiateManifest(m *manifest.Manifest,
repos []rpmmd.RepoConfig,
runner runner.Runner,
rng *rand.Rand) (*artifact.Artifact, error) {
buildPipeline := addBuildBootstrapPipelines(m, runner, repos, nil)
buildPipeline.Checkpoint()
installerType := manifest.AnacondaInstallerTypeNetinst
anacondaPipeline := manifest.NewAnacondaInstaller(
installerType,
buildPipeline,
img.Platform,
repos,
"kernel",
img.Product,
img.OSVersion,
img.Preview,
)
anacondaPipeline.ExtraPackages = img.ExtraBasePackages.Include
anacondaPipeline.ExcludePackages = img.ExtraBasePackages.Exclude
anacondaPipeline.ExtraRepos = img.ExtraBasePackages.Repositories
anacondaPipeline.Variant = img.Variant
anacondaPipeline.Biosdevname = (img.Platform.GetArch() == arch.ARCH_X86_64)
anacondaPipeline.InstallerCustomizations = img.InstallerCustomizations
if anacondaPipeline.InstallerCustomizations.FIPS {
anacondaPipeline.InstallerCustomizations.EnabledAnacondaModules = append(
anacondaPipeline.InstallerCustomizations.EnabledAnacondaModules,
anaconda.ModuleSecurity,
)
}
anacondaPipeline.Locale = img.Language
anacondaPipeline.Checkpoint()
var rootfsImagePipeline *manifest.ISORootfsImg
switch img.InstallerCustomizations.ISORootfsType {
case manifest.SquashfsExt4Rootfs:
rootfsImagePipeline = manifest.NewISORootfsImg(buildPipeline, anacondaPipeline)
rootfsImagePipeline.Size = 5 * datasizes.GibiByte
default:
}
bootTreePipeline := manifest.NewEFIBootTree(buildPipeline, img.Product, img.OSVersion)
bootTreePipeline.Platform = img.Platform
bootTreePipeline.UEFIVendor = img.Platform.GetUEFIVendor()
bootTreePipeline.ISOLabel = img.ISOLabel
bootTreePipeline.DefaultMenu = img.InstallerCustomizations.DefaultMenu
kernelOpts := []string{fmt.Sprintf("inst.stage2=hd:LABEL=%s", img.ISOLabel)}
if anacondaPipeline.InstallerCustomizations.FIPS {
kernelOpts = append(kernelOpts, "fips=1")
}
kernelOpts = append(kernelOpts, img.InstallerCustomizations.AdditionalKernelOpts...)
bootTreePipeline.KernelOpts = kernelOpts
isoTreePipeline := manifest.NewAnacondaInstallerISOTree(buildPipeline, anacondaPipeline, rootfsImagePipeline, bootTreePipeline)
// TODO: the partition table is required - make it a ctor arg or set a default one in the pipeline
isoTreePipeline.PartitionTable = efiBootPartitionTable(rng)
isoTreePipeline.Release = img.Release
isoTreePipeline.RootfsCompression = img.RootfsCompression
isoTreePipeline.RootfsType = img.InstallerCustomizations.ISORootfsType
isoTreePipeline.KernelOpts = img.InstallerCustomizations.AdditionalKernelOpts
if anacondaPipeline.InstallerCustomizations.FIPS {
isoTreePipeline.KernelOpts = append(isoTreePipeline.KernelOpts, "fips=1")
}
isoTreePipeline.ISOBoot = img.InstallerCustomizations.ISOBoot
isoPipeline := manifest.NewISO(buildPipeline, isoTreePipeline, img.ISOLabel)
isoPipeline.SetFilename(img.Filename)
isoPipeline.ISOBoot = img.InstallerCustomizations.ISOBoot
artifact := isoPipeline.Export()
return artifact, nil
}

View file

@ -20,8 +20,9 @@ import (
type AnacondaOSTreeInstaller struct {
Base
Platform platform.Platform
ExtraBasePackages rpmmd.PackageSet
Platform platform.Platform
InstallerCustomizations manifest.InstallerCustomizations
ExtraBasePackages rpmmd.PackageSet
Kickstart *kickstart.Options
@ -29,8 +30,6 @@ type AnacondaOSTreeInstaller struct {
Subscription *subscription.ImageOptions
RootfsCompression string
RootfsType manifest.RootfsType
ISOBoot manifest.ISOBootType
ISOLabel string
Product string
@ -43,18 +42,6 @@ type AnacondaOSTreeInstaller struct {
Filename string
EnabledAnacondaModules []string
DisabledAnacondaModules []string
AdditionalDracutModules []string
AdditionalDrivers []string
FIPS bool
// Uses the old, deprecated, Anaconda config option "kickstart-modules".
// Only for RHEL 8.
UseLegacyAnacondaConfig bool
// Locale for the installer. This should be set to the same locale as the
// ISO OS payload, if known.
Locale string
@ -97,21 +84,19 @@ func (img *AnacondaOSTreeInstaller) InstantiateManifest(m *manifest.Manifest,
anacondaPipeline.Biosdevname = (img.Platform.GetArch() == arch.ARCH_X86_64)
anacondaPipeline.Checkpoint()
anacondaPipeline.UseLegacyAnacondaConfig = img.UseLegacyAnacondaConfig
anacondaPipeline.AdditionalDracutModules = img.AdditionalDracutModules
anacondaPipeline.EnabledAnacondaModules = img.EnabledAnacondaModules
if img.FIPS {
anacondaPipeline.EnabledAnacondaModules = append(
anacondaPipeline.EnabledAnacondaModules,
anacondaPipeline.InstallerCustomizations = img.InstallerCustomizations
if anacondaPipeline.InstallerCustomizations.FIPS {
anacondaPipeline.InstallerCustomizations.EnabledAnacondaModules = append(
anacondaPipeline.InstallerCustomizations.EnabledAnacondaModules,
anaconda.ModuleSecurity,
)
}
anacondaPipeline.DisabledAnacondaModules = img.DisabledAnacondaModules
anacondaPipeline.AdditionalDrivers = img.AdditionalDrivers
anacondaPipeline.Locale = img.Locale
var rootfsImagePipeline *manifest.ISORootfsImg
switch img.RootfsType {
switch img.InstallerCustomizations.ISORootfsType {
case manifest.SquashfsExt4Rootfs:
rootfsImagePipeline = manifest.NewISORootfsImg(buildPipeline, anacondaPipeline)
rootfsImagePipeline.Size = 4 * datasizes.GibiByte
@ -122,6 +107,7 @@ func (img *AnacondaOSTreeInstaller) InstantiateManifest(m *manifest.Manifest,
bootTreePipeline.Platform = img.Platform
bootTreePipeline.UEFIVendor = img.Platform.GetUEFIVendor()
bootTreePipeline.ISOLabel = img.ISOLabel
bootTreePipeline.DefaultMenu = img.InstallerCustomizations.DefaultMenu
if img.Kickstart == nil || img.Kickstart.OSTree == nil {
return nil, fmt.Errorf("kickstart options not set for ostree installer")
@ -130,7 +116,7 @@ func (img *AnacondaOSTreeInstaller) InstantiateManifest(m *manifest.Manifest,
img.Kickstart.Path = osbuild.KickstartPathOSBuild
}
bootTreePipeline.KernelOpts = []string{fmt.Sprintf("inst.stage2=hd:LABEL=%s", img.ISOLabel), fmt.Sprintf("inst.ks=hd:LABEL=%s:%s", img.ISOLabel, img.Kickstart.Path)}
if img.FIPS {
if anacondaPipeline.InstallerCustomizations.FIPS {
bootTreePipeline.KernelOpts = append(bootTreePipeline.KernelOpts, "fips=1")
}
@ -145,20 +131,20 @@ func (img *AnacondaOSTreeInstaller) InstantiateManifest(m *manifest.Manifest,
isoTreePipeline.Release = img.Release
isoTreePipeline.Kickstart = img.Kickstart
isoTreePipeline.RootfsCompression = img.RootfsCompression
isoTreePipeline.RootfsType = img.RootfsType
isoTreePipeline.RootfsType = img.InstallerCustomizations.ISORootfsType
isoTreePipeline.PayloadPath = "/ostree/repo"
isoTreePipeline.OSTreeCommitSource = &img.Commit
isoTreePipeline.ISOBoot = img.ISOBoot
if img.FIPS {
isoTreePipeline.ISOBoot = img.InstallerCustomizations.ISOBoot
if anacondaPipeline.InstallerCustomizations.FIPS {
isoTreePipeline.KernelOpts = append(isoTreePipeline.KernelOpts, "fips=1")
}
isoTreePipeline.SubscriptionPipeline = subscriptionPipeline
isoPipeline := manifest.NewISO(buildPipeline, isoTreePipeline, img.ISOLabel)
isoPipeline.SetFilename(img.Filename)
isoPipeline.ISOBoot = img.ISOBoot
isoPipeline.ISOBoot = img.InstallerCustomizations.ISOBoot
artifact := isoPipeline.Export()
return artifact, nil

View file

@ -40,25 +40,17 @@ func efiBootPartitionTable(rng *rand.Rand) *disk.PartitionTable {
type AnacondaTarInstaller struct {
Base
Platform platform.Platform
OSCustomizations manifest.OSCustomizations
Environment environment.Environment
Workload workload.Workload
Platform platform.Platform
OSCustomizations manifest.OSCustomizations
InstallerCustomizations manifest.InstallerCustomizations
Environment environment.Environment
Workload workload.Workload
ExtraBasePackages rpmmd.PackageSet
// If set, the kickstart file will be added to the bootiso-tree at the
// default path for osbuild, otherwise any kickstart options will be
// configured in the default location for interactive defaults in the
// rootfs. Enabling UnattendedKickstart automatically enables this option
// because automatic installations cannot be configured using interactive
// defaults.
ISORootKickstart bool
Kickstart *kickstart.Options
Kickstart *kickstart.Options
RootfsCompression string
RootfsType manifest.RootfsType
ISOBoot manifest.ISOBootType
ISOLabel string
Product string
@ -68,17 +60,6 @@ type AnacondaTarInstaller struct {
Preview bool
Filename string
AdditionalKernelOpts []string
EnabledAnacondaModules []string
DisabledAnacondaModules []string
AdditionalDracutModules []string
AdditionalDrivers []string
// Uses the old, deprecated, Anaconda config option "kickstart-modules".
// Only for RHEL 8.
UseLegacyAnacondaConfig bool
}
func NewAnacondaTarInstaller() *AnacondaTarInstaller {
@ -101,10 +82,10 @@ func (img *AnacondaTarInstaller) InstantiateManifest(m *manifest.Manifest,
if img.Kickstart.Unattended {
// if we're building an unattended installer, override the
// ISORootKickstart option
img.ISORootKickstart = true
img.InstallerCustomizations.ISORootKickstart = true
}
if img.ISORootKickstart {
if img.InstallerCustomizations.ISORootKickstart {
// kickstart file will be in the iso root and not interactive-defaults,
// so let's make sure the kickstart path option is set
if img.Kickstart.Path == "" {
@ -135,22 +116,20 @@ func (img *AnacondaTarInstaller) InstantiateManifest(m *manifest.Manifest,
anacondaPipeline.Variant = img.Variant
anacondaPipeline.Biosdevname = (img.Platform.GetArch() == arch.ARCH_X86_64)
anacondaPipeline.UseLegacyAnacondaConfig = img.UseLegacyAnacondaConfig
anacondaPipeline.EnabledAnacondaModules = img.EnabledAnacondaModules
anacondaPipeline.InstallerCustomizations = img.InstallerCustomizations
if img.OSCustomizations.FIPS {
anacondaPipeline.EnabledAnacondaModules = append(
anacondaPipeline.EnabledAnacondaModules,
anacondaPipeline.InstallerCustomizations.EnabledAnacondaModules = append(
anacondaPipeline.InstallerCustomizations.EnabledAnacondaModules,
anaconda.ModuleSecurity,
)
}
anacondaPipeline.DisabledAnacondaModules = img.DisabledAnacondaModules
anacondaPipeline.AdditionalDracutModules = img.AdditionalDracutModules
anacondaPipeline.AdditionalDrivers = img.AdditionalDrivers
anacondaPipeline.Locale = img.OSCustomizations.Language
tarPath := "/liveimg.tar.gz"
if !img.ISORootKickstart {
if !img.InstallerCustomizations.ISORootKickstart {
payloadPath := filepath.Join("/run/install/repo/", tarPath)
anacondaPipeline.InteractiveDefaults = manifest.NewAnacondaInteractiveDefaults(fmt.Sprintf("file://%s", payloadPath))
}
@ -158,7 +137,7 @@ func (img *AnacondaTarInstaller) InstantiateManifest(m *manifest.Manifest,
anacondaPipeline.Checkpoint()
var rootfsImagePipeline *manifest.ISORootfsImg
switch img.RootfsType {
switch img.InstallerCustomizations.ISORootfsType {
case manifest.SquashfsExt4Rootfs:
rootfsImagePipeline = manifest.NewISORootfsImg(buildPipeline, anacondaPipeline)
rootfsImagePipeline.Size = 5 * datasizes.GibiByte
@ -169,15 +148,17 @@ func (img *AnacondaTarInstaller) InstantiateManifest(m *manifest.Manifest,
bootTreePipeline.Platform = img.Platform
bootTreePipeline.UEFIVendor = img.Platform.GetUEFIVendor()
bootTreePipeline.ISOLabel = img.ISOLabel
bootTreePipeline.DefaultMenu = img.InstallerCustomizations.DefaultMenu
kernelOpts := []string{fmt.Sprintf("inst.stage2=hd:LABEL=%s", img.ISOLabel)}
if img.ISORootKickstart {
if img.InstallerCustomizations.ISORootKickstart {
kernelOpts = append(kernelOpts, fmt.Sprintf("inst.ks=hd:LABEL=%s:%s", img.ISOLabel, img.Kickstart.Path))
}
if img.OSCustomizations.FIPS {
kernelOpts = append(kernelOpts, "fips=1")
}
kernelOpts = append(kernelOpts, img.AdditionalKernelOpts...)
kernelOpts = append(kernelOpts, img.InstallerCustomizations.AdditionalKernelOpts...)
kernelOpts = append(kernelOpts, img.OSCustomizations.KernelOptionsAppend...)
bootTreePipeline.KernelOpts = kernelOpts
osPipeline := manifest.NewOS(buildPipeline, img.Platform, repos)
@ -191,24 +172,25 @@ func (img *AnacondaTarInstaller) InstantiateManifest(m *manifest.Manifest,
isoTreePipeline.Release = img.Release
isoTreePipeline.Kickstart = img.Kickstart
isoTreePipeline.PayloadPath = tarPath
if img.ISORootKickstart {
if img.InstallerCustomizations.ISORootKickstart {
isoTreePipeline.Kickstart.Path = img.Kickstart.Path
}
isoTreePipeline.RootfsCompression = img.RootfsCompression
isoTreePipeline.RootfsType = img.RootfsType
isoTreePipeline.RootfsType = img.InstallerCustomizations.ISORootfsType
isoTreePipeline.OSPipeline = osPipeline
isoTreePipeline.KernelOpts = img.AdditionalKernelOpts
isoTreePipeline.KernelOpts = img.InstallerCustomizations.AdditionalKernelOpts
isoTreePipeline.KernelOpts = append(isoTreePipeline.KernelOpts, img.OSCustomizations.KernelOptionsAppend...)
if img.OSCustomizations.FIPS {
isoTreePipeline.KernelOpts = append(isoTreePipeline.KernelOpts, "fips=1")
}
isoTreePipeline.ISOBoot = img.ISOBoot
isoTreePipeline.ISOBoot = img.InstallerCustomizations.ISOBoot
isoPipeline := manifest.NewISO(buildPipeline, isoTreePipeline, img.ISOLabel)
isoPipeline.SetFilename(img.Filename)
isoPipeline.ISOBoot = img.ISOBoot
isoPipeline.ISOBoot = img.InstallerCustomizations.ISOBoot
artifact := isoPipeline.Export()

View file

@ -19,6 +19,7 @@ type AnacondaInstallerType int
const (
AnacondaInstallerTypeLive AnacondaInstallerType = iota + 1
AnacondaInstallerTypePayload
AnacondaInstallerTypeNetinst
)
// An Anaconda represents the installer tree as found on an ISO this can be either
@ -31,6 +32,9 @@ type AnacondaInstaller struct {
// manifest.
Type AnacondaInstallerType
// InstallerCustomizations to apply to the installer pipeline(s)
InstallerCustomizations InstallerCustomizations
// Packages to install and/or exclude in addition to the ones required by the
// pipeline.
ExtraPackages []string
@ -65,24 +69,8 @@ type AnacondaInstaller struct {
// properties are ignored.
InteractiveDefaultsKickstart *kickstart.Options
// Additional anaconda modules to enable
EnabledAnacondaModules []string
// Anaconda modules to explicitly disable
DisabledAnacondaModules []string
// Additional dracut modules and drivers to enable
AdditionalDracutModules []string
AdditionalDrivers []string
Files []*fsnode.File
// Temporary
UseRHELLoraxTemplates bool
// Uses the old, deprecated, Anaconda config option "kickstart-modules".
// Only for RHEL 8.
UseLegacyAnacondaConfig bool
// SELinux policy, when set it enables the labeling of the installer
// tree with the selected profile and selects the required package
// for depsolving
@ -157,7 +145,7 @@ func (p *AnacondaInstaller) getBuildPackages(Distro) []string {
"shadow-utils", // The pipeline always creates a root and installer user
)
if p.UseRHELLoraxTemplates {
if p.InstallerCustomizations.UseRHELLoraxTemplates {
packages = append(packages,
"lorax-templates-rhel",
)
@ -179,6 +167,9 @@ func (p *AnacondaInstaller) getBuildPackages(Distro) []string {
func (p *AnacondaInstaller) getPackageSetChain(Distro) []rpmmd.PackageSet {
packages := p.anacondaBootPackageSet()
// Install firmware packages and other platform specific packages
packages = append(packages, p.platform.GetPackages()...)
if p.Biosdevname {
packages = append(packages, "biosdevname")
}
@ -265,7 +256,7 @@ func (p *AnacondaInstaller) serialize() osbuild.Pipeline {
panic("anaconda installer type live does not support interactive defaults")
}
pipeline.AddStages(p.liveStages()...)
case AnacondaInstallerTypePayload:
case AnacondaInstallerTypePayload, AnacondaInstallerTypeNetinst:
pipeline.AddStages(p.payloadStages()...)
default:
panic("invalid anaconda installer type")
@ -305,16 +296,19 @@ func (p *AnacondaInstaller) payloadStages() []*osbuild.Stage {
}
stages = append(stages, osbuild.NewUsersStage(usersStageOptions))
var anacondaStageOptions *osbuild.AnacondaStageOptions
if p.UseLegacyAnacondaConfig {
anacondaStageOptions = osbuild.NewAnacondaStageOptionsLegacy(p.EnabledAnacondaModules, p.DisabledAnacondaModules)
} else {
anacondaStageOptions = osbuild.NewAnacondaStageOptions(p.EnabledAnacondaModules, p.DisabledAnacondaModules)
// Limit the Anaconda spokes on non-netinst iso types
if p.Type != AnacondaInstallerTypeNetinst {
var anacondaStageOptions *osbuild.AnacondaStageOptions
if p.InstallerCustomizations.UseLegacyAnacondaConfig {
anacondaStageOptions = osbuild.NewAnacondaStageOptionsLegacy(p.InstallerCustomizations.EnabledAnacondaModules, p.InstallerCustomizations.DisabledAnacondaModules)
} else {
anacondaStageOptions = osbuild.NewAnacondaStageOptions(p.InstallerCustomizations.EnabledAnacondaModules, p.InstallerCustomizations.DisabledAnacondaModules)
}
stages = append(stages, osbuild.NewAnacondaStage(anacondaStageOptions))
}
stages = append(stages, osbuild.NewAnacondaStage(anacondaStageOptions))
LoraxPath := "99-generic/runtime-postinstall.tmpl"
if p.UseRHELLoraxTemplates {
if p.InstallerCustomizations.UseRHELLoraxTemplates {
LoraxPath = "80-rhel/runtime-postinstall.tmpl"
}
stages = append(stages, osbuild.NewLoraxScriptStage(&osbuild.LoraxScriptStageOptions{
@ -424,16 +418,16 @@ func (p *AnacondaInstaller) dracutStageOptions() *osbuild.DracutStageOptions {
EarlyMicrocode: false,
AddModules: []string{"pollcdrom", "qemu", "qemu-net"},
Extra: []string{"--xz"},
AddDrivers: p.AdditionalDrivers,
AddDrivers: p.InstallerCustomizations.AdditionalDrivers,
}
options.AddModules = append(options.AddModules, p.AdditionalDracutModules...)
options.AddModules = append(options.AddModules, p.InstallerCustomizations.AdditionalDracutModules...)
if p.Biosdevname {
options.AddModules = append(options.AddModules, "biosdevname")
}
switch p.Type {
case AnacondaInstallerTypePayload:
case AnacondaInstallerTypePayload, AnacondaInstallerTypeNetinst:
// Lorax calls the boot.iso dracut with:
// --nomdadmconf --nolvmconf --xz --install '/.buildstamp' --no-early-microcode
// --add 'fips anaconda pollcdrom qemu qemu-net prefixdevname-tools'
@ -456,6 +450,8 @@ func (p *AnacondaInstaller) dracutStageOptions() *osbuild.DracutStageOptions {
"dmsquash-live",
"convertfs",
}...)
default:
panic(fmt.Errorf("unknown AnacondaInstallerType %v in dracutStageOptions", p.Type))
}
return &options

View file

@ -17,16 +17,16 @@ import (
"github.com/osbuild/images/pkg/ostree"
)
type RootfsType uint64
type ISORootfsType uint64
// These constants are used by the ISO images to control the style of the root filesystem
const ( // Rootfs type enum
SquashfsExt4Rootfs RootfsType = iota // Create an EXT4 rootfs compressed by Squashfs
SquashfsRootfs // Create a plain squashfs rootfs
ErofsRootfs // Create a plain erofs rootfs
SquashfsExt4Rootfs ISORootfsType = iota // Create an EXT4 rootfs compressed by Squashfs
SquashfsRootfs // Create a plain squashfs rootfs
ErofsRootfs // Create a plain erofs rootfs
)
func (r *RootfsType) UnmarshalJSON(data []byte) error {
func (r *ISORootfsType) UnmarshalJSON(data []byte) error {
var s string
if err := json.Unmarshal(data, &s); err != nil {
return err
@ -39,13 +39,13 @@ func (r *RootfsType) UnmarshalJSON(data []byte) error {
case "erofs":
*r = ErofsRootfs
default:
return fmt.Errorf("unknown RootfsType: %q", s)
return fmt.Errorf("unknown ISORootfsType: %q", s)
}
return nil
}
func (r *RootfsType) UnmarshalYAML(unmarshal func(any) error) error {
func (r *ISORootfsType) UnmarshalYAML(unmarshal func(any) error) error {
return common.UnmarshalYAMLviaJSON(r, unmarshal)
}
@ -106,7 +106,7 @@ type AnacondaInstallerISOTree struct {
isoLabel string
RootfsCompression string
RootfsType RootfsType
RootfsType ISORootfsType
OSPipeline *OS
OSTreeCommitSource *ostree.SourceSpec
@ -242,14 +242,18 @@ var installerBootExcludePaths = []string{
func (p *AnacondaInstallerISOTree) NewSquashfsStage() *osbuild.Stage {
var squashfsOptions osbuild.SquashfsStageOptions
if p.anacondaPipeline.Type == AnacondaInstallerTypePayload {
switch p.anacondaPipeline.Type {
case AnacondaInstallerTypePayload, AnacondaInstallerTypeNetinst:
squashfsOptions = osbuild.SquashfsStageOptions{
Filename: "images/install.img",
}
} else if p.anacondaPipeline.Type == AnacondaInstallerTypeLive {
case AnacondaInstallerTypeLive:
squashfsOptions = osbuild.SquashfsStageOptions{
Filename: "LiveOS/squashfs.img",
}
default:
// Shouldn't be possible, but catch it anyway
panic(fmt.Errorf("unknown AnacondaInstallerType %v in NewSquashfsStage", p.anacondaPipeline.Type))
}
if p.RootfsCompression != "" {
@ -281,14 +285,18 @@ func (p *AnacondaInstallerISOTree) NewSquashfsStage() *osbuild.Stage {
func (p *AnacondaInstallerISOTree) NewErofsStage() *osbuild.Stage {
var erofsOptions osbuild.ErofsStageOptions
if p.anacondaPipeline.Type == AnacondaInstallerTypePayload {
switch p.anacondaPipeline.Type {
case AnacondaInstallerTypePayload, AnacondaInstallerTypeNetinst:
erofsOptions = osbuild.ErofsStageOptions{
Filename: "images/install.img",
}
} else if p.anacondaPipeline.Type == AnacondaInstallerTypeLive {
case AnacondaInstallerTypeLive:
erofsOptions = osbuild.ErofsStageOptions{
Filename: "LiveOS/squashfs.img",
}
default:
// Shouldn't be possible, but catch it anyway
panic(fmt.Errorf("unknown AnacondaInstallerType %v in NewErofsStage", p.anacondaPipeline.Type))
}
var compression osbuild.ErofsCompression
@ -367,7 +375,8 @@ func (p *AnacondaInstallerISOTree) serialize() osbuild.Pipeline {
kernelOpts := []string{}
if p.anacondaPipeline.Type == AnacondaInstallerTypePayload {
if p.anacondaPipeline.Type == AnacondaInstallerTypePayload ||
p.anacondaPipeline.Type == AnacondaInstallerTypeNetinst {
kernelOpts = append(kernelOpts, fmt.Sprintf("inst.stage2=hd:LABEL=%s", p.isoLabel))
if p.Kickstart != nil && p.Kickstart.Path != "" {
kernelOpts = append(kernelOpts, fmt.Sprintf("inst.ks=hd:LABEL=%s:%s", p.isoLabel, p.Kickstart.Path))
@ -441,6 +450,13 @@ func (p *AnacondaInstallerISOTree) serialize() osbuild.Pipeline {
stage := osbuild.NewISOLinuxStage(options, p.anacondaPipeline.Name())
pipeline.AddStage(stage)
} else if p.ISOBoot == Grub2ISOBoot {
var grub2config *osbuild.Grub2Config
if p.anacondaPipeline.InstallerCustomizations.DefaultMenu > 0 {
grub2config = &osbuild.Grub2Config{
Default: p.anacondaPipeline.InstallerCustomizations.DefaultMenu,
}
}
options := &osbuild.Grub2ISOLegacyStageOptions{
Product: osbuild.Product{
Name: p.anacondaPipeline.product,
@ -452,6 +468,7 @@ func (p *AnacondaInstallerISOTree) serialize() osbuild.Pipeline {
},
ISOLabel: p.isoLabel,
FIPS: p.anacondaPipeline.platform.GetFIPSMenu(),
Config: grub2config,
}
stage := osbuild.NewGrub2ISOLegacyStage(options)

View file

@ -17,7 +17,9 @@ import (
// is not predictable nor reproducible. For the purposes of building the
// build pipeline, we do use the build host's filesystem, this means we should
// make minimal assumptions about what's available there.
//
// Any pipeline that implements the "Build" interface will be returned
// from "Manifest.BuildPipeline()"
type Build interface {
Name() string
Checkpoint()

View file

@ -18,6 +18,9 @@ type EFIBootTree struct {
ISOLabel string
KernelOpts []string
// Default Grub2 menu on the ISO
DefaultMenu int
}
func NewEFIBootTree(buildPipeline Build, product, version string) *EFIBootTree {
@ -43,6 +46,13 @@ func (p *EFIBootTree) serialize() osbuild.Pipeline {
panic("unsupported architecture")
}
var grub2config *osbuild.Grub2Config
if p.DefaultMenu > 0 {
grub2config = &osbuild.Grub2Config{
Default: p.DefaultMenu,
}
}
grubOptions := &osbuild.GrubISOStageOptions{
Product: osbuild.Product{
Name: p.product,
@ -56,6 +66,7 @@ func (p *EFIBootTree) serialize() osbuild.Pipeline {
Architectures: architectures,
Vendor: p.UEFIVendor,
FIPS: p.Platform.GetFIPSMenu(),
Config: grub2config,
}
grub2Stage := osbuild.NewGrubISOStage(grubOptions)
pipeline.AddStage(grub2Stage)

View file

@ -0,0 +1,35 @@
package manifest
// Contains all configuration applied to installer type images such as
// Anaconda or CoreOS installer ones.
type InstallerCustomizations struct {
FIPS bool
AdditionalKernelOpts []string
EnabledAnacondaModules []string
DisabledAnacondaModules []string
AdditionalDracutModules []string
AdditionalDrivers []string
// Uses the old, deprecated, Anaconda config option "kickstart-modules".
// Only for RHEL 8.
UseLegacyAnacondaConfig bool
// Temporary
UseRHELLoraxTemplates bool
ISORootfsType ISORootfsType
ISOBoot ISOBootType
DefaultMenu int
// If set, the kickstart file will be added to the bootiso-tree at the
// default path for osbuild, otherwise any kickstart options will be
// configured in the default location for interactive defaults in the
// rootfs. Enabling UnattendedKickstart automatically enables this option
// because automatic installations cannot be configured using interactive
// defaults.
ISORootKickstart bool
}

View file

@ -234,6 +234,28 @@ func (m Manifest) GetExports() []string {
return exports
}
func (m *Manifest) pipelineRoles() (build []string, payload []string) {
for _, pipeline := range m.pipelines {
switch pipeline.(type) {
case Build:
build = append(build, pipeline.Name())
default:
payload = append(payload, pipeline.Name())
}
}
return build, payload
}
func (m *Manifest) PayloadPipelines() []string {
_, payload := m.pipelineRoles()
return payload
}
func (m *Manifest) BuildPipelines() []string {
build, _ := m.pipelineRoles()
return build
}
// filterRepos returns a list of repositories that specify the given pipeline
// name in their PackageSets list in addition to any global repositories
// (global repositories are ones that do not specify any PackageSets).

View file

@ -12,6 +12,8 @@ type Grub2ISOLegacyStageOptions struct {
ISOLabel string `json:"isolabel"`
FIPS bool `json:"fips,omitempty"`
Config *Grub2Config `json:"config,omitempty"`
}
func (Grub2ISOLegacyStageOptions) isStageOptions() {}

View file

@ -16,6 +16,8 @@ type GrubISOStageOptions struct {
Vendor string `json:"vendor,omitempty"`
FIPS bool `json:"fips,omitempty"`
Config *Grub2Config `json:"config,omitempty"`
}
func (GrubISOStageOptions) isStageOptions() {}
@ -51,6 +53,15 @@ type ISOKernel struct {
Opts []string `json:"opts,omitempty"`
}
type Grub2Config struct {
// Override the default grub menu timeout
// Note: 0 means to not override the stage default
Timeout int `json:"timeout,omitempty"`
// Override the default boot menu entry
Default int `json:"default,omitempty"`
}
// Assemble a file system tree for a bootable ISO
func NewGrubISOStage(options *GrubISOStageOptions) *Stage {
if err := options.validate(); err != nil {