diff --git a/internal/distro/rhel8/bare_metal.go b/internal/distro/rhel8/bare_metal.go new file mode 100644 index 000000000..ef6ed15fc --- /dev/null +++ b/internal/distro/rhel8/bare_metal.go @@ -0,0 +1,310 @@ +package rhel8 + +import ( + "fmt" + + "github.com/osbuild/osbuild-composer/internal/distro" + "github.com/osbuild/osbuild-composer/internal/rpmmd" +) + +func imageInstaller() imageType { + return imageType{ + name: "image-installer", + filename: "installer.iso", + mimeType: "application/x-iso9660-image", + packageSets: map[string]packageSetFunc{ + buildPkgsKey: anacondaBuildPackageSet, + osPkgsKey: bareMetalPackageSet, + installerPkgsKey: anacondaPackageSet, + }, + packageSetChains: map[string][]string{ + osPkgsKey: {osPkgsKey, blueprintPkgsKey}, + }, + rpmOstree: false, + bootISO: true, + bootable: true, + pipelines: imageInstallerPipelines, + buildPipelines: []string{"build"}, + payloadPipelines: []string{"os", "anaconda-tree", "bootiso-tree", "bootiso"}, + exports: []string{"bootiso"}, + } +} + +func tarImgType() imageType { + return imageType{ + name: "tar", + filename: "root.tar.xz", + mimeType: "application/x-tar", + packageSets: map[string]packageSetFunc{ + buildPkgsKey: distroBuildPackageSet, + osPkgsKey: func(t *imageType) rpmmd.PackageSet { + return rpmmd.PackageSet{ + Include: []string{"policycoreutils", "selinux-policy-targeted"}, + Exclude: []string{"rng-tools"}, + } + }, + }, + packageSetChains: map[string][]string{ + osPkgsKey: {osPkgsKey, blueprintPkgsKey}, + }, + pipelines: tarPipelines, + buildPipelines: []string{"build"}, + payloadPipelines: []string{"os", "root-tar"}, + exports: []string{"root-tar"}, + } +} + +func bareMetalPackageSet(t *imageType) rpmmd.PackageSet { + ps := rpmmd.PackageSet{ + Include: []string{ + "@core", + "authselect-compat", + "chrony", + "cockpit-system", + "cockpit-ws", + "dhcp-client", + "dnf", + "dnf-utils", + "dosfstools", + "dracut-norescue", + "iwl1000-firmware", + "iwl100-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", + "lvm2", + "net-tools", + "NetworkManager", + "nfs-utils", + "oddjob", + "oddjob-mkhomedir", + "policycoreutils", + "psmisc", + "python3-jsonschema", + "qemu-guest-agent", + "redhat-release", + "redhat-release-eula", + "rsync", + "selinux-policy-targeted", + "tar", + "tcpdump", + "yum", + }, + Exclude: nil, + }.Append(bootPackageSet(t)).Append(distroSpecificPackageSet(t)) + + // Ensure to not pull in subscription-manager on non-RHEL distro + if t.arch.distro.isRHEL() { + ps = ps.Append(rpmmd.PackageSet{ + Include: []string{ + "subscription-manager-cockpit", + }, + }) + } + + return ps +} + +func installerPackageSet(t *imageType) rpmmd.PackageSet { + ps := rpmmd.PackageSet{ + Include: []string{ + "anaconda-dracut", + "curl", + "dracut-config-generic", + "dracut-network", + "hostname", + "iwl100-firmware", + "iwl1000-firmware", + "iwl105-firmware", + "iwl135-firmware", + "iwl2000-firmware", + "iwl2030-firmware", + "iwl3160-firmware", + "iwl5000-firmware", + "iwl5150-firmware", + "iwl6000-firmware", + "iwl6050-firmware", + "iwl7260-firmware", + "kernel", + "less", + "nfs-utils", + "openssh-clients", + "ostree", + "plymouth", + "prefixdevname", + "rng-tools", + "rpcbind", + "selinux-policy-targeted", + "systemd", + "tar", + "xfsprogs", + "xz", + }, + } + + switch t.arch.Name() { + case distro.X86_64ArchName: + ps = ps.Append(rpmmd.PackageSet{ + Include: []string{ + "biosdevname", + }, + }) + } + + return ps +} + +func anacondaPackageSet(t *imageType) rpmmd.PackageSet { + + // common installer packages + ps := installerPackageSet(t) + + ps = ps.Append(rpmmd.PackageSet{ + Include: []string{ + "aajohan-comfortaa-fonts", + "abattis-cantarell-fonts", + "alsa-firmware", + "alsa-tools-firmware", + "anaconda", + "anaconda-install-env-deps", + "anaconda-widgets", + "audit", + "bind-utils", + "bitmap-fangsongti-fonts", + "bzip2", + "cryptsetup", + "dbus-x11", + "dejavu-sans-fonts", + "dejavu-sans-mono-fonts", + "device-mapper-persistent-data", + "dnf", + "dump", + "ethtool", + "fcoe-utils", + "ftp", + "gdb-gdbserver", + "gdisk", + "gfs2-utils", + "glibc-all-langpacks", + "google-noto-sans-cjk-ttc-fonts", + "gsettings-desktop-schemas", + "hdparm", + "hexedit", + "initscripts", + "ipmitool", + "iwl3945-firmware", + "iwl4965-firmware", + "iwl6000g2a-firmware", + "iwl6000g2b-firmware", + "jomolhari-fonts", + "kacst-farsi-fonts", + "kacst-qurn-fonts", + "kbd", + "kbd-misc", + "kdump-anaconda-addon", + "khmeros-base-fonts", + "libblockdev-lvm-dbus", + "libertas-sd8686-firmware", + "libertas-sd8787-firmware", + "libertas-usb8388-firmware", + "libertas-usb8388-olpc-firmware", + "libibverbs", + "libreport-plugin-bugzilla", + "libreport-plugin-reportuploader", + "libreport-rhel-anaconda-bugzilla", + "librsvg2", + "linux-firmware", + "lklug-fonts", + "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", + "metacity", + "mtr", + "mt-st", + "net-tools", + "nmap-ncat", + "nm-connection-editor", + "nss-tools", + "openssh-server", + "oscap-anaconda-addon", + "pciutils", + "perl-interpreter", + "pigz", + "python3-pyatspi", + "rdma-core", + "redhat-release-eula", + "rpm-ostree", + "rsync", + "rsyslog", + "sg3_utils", + "sil-abyssinica-fonts", + "sil-padauk-fonts", + "sil-scheherazade-fonts", + "smartmontools", + "smc-meera-fonts", + "spice-vdagent", + "strace", + "system-storage-manager", + "thai-scalable-waree-fonts", + "tigervnc-server-minimal", + "tigervnc-server-module", + "udisks2", + "udisks2-iscsi", + "usbutils", + "vim-minimal", + "volume_key", + "wget", + "xfsdump", + "xorg-x11-drivers", + "xorg-x11-fonts-misc", + "xorg-x11-server-utils", + "xorg-x11-server-Xorg", + "xorg-x11-xauth", + }, + }) + + ps = ps.Append(anacondaBootPackageSet(t)) + + switch t.arch.Name() { + case distro.X86_64ArchName: + ps = ps.Append(rpmmd.PackageSet{ + Include: []string{ + "biosdevname", + "dmidecode", + "memtest86+", + }, + }) + + case distro.Aarch64ArchName: + ps = ps.Append(rpmmd.PackageSet{ + Include: []string{ + "dmidecode", + }, + }) + + default: + panic(fmt.Sprintf("unsupported arch: %s", t.arch.Name())) + } + + return ps +} diff --git a/internal/distro/rhel8/distro.go b/internal/distro/rhel8/distro.go index ad7008284..47156f80b 100644 --- a/internal/distro/rhel8/distro.go +++ b/internal/distro/rhel8/distro.go @@ -11,7 +11,6 @@ import ( "github.com/osbuild/osbuild-composer/internal/osbuild" "github.com/osbuild/osbuild-composer/internal/oscap" "github.com/osbuild/osbuild-composer/internal/platform" - "github.com/osbuild/osbuild-composer/internal/rpmmd" "github.com/osbuild/osbuild-composer/internal/runner" ) @@ -215,48 +214,6 @@ func newDistro(name string, minor int) *distribution { bootType: distro.LegacyBootType, } - tarImgType := imageType{ - name: "tar", - filename: "root.tar.xz", - mimeType: "application/x-tar", - packageSets: map[string]packageSetFunc{ - buildPkgsKey: distroBuildPackageSet, - osPkgsKey: func(t *imageType) rpmmd.PackageSet { - return rpmmd.PackageSet{ - Include: []string{"policycoreutils", "selinux-policy-targeted"}, - Exclude: []string{"rng-tools"}, - } - }, - }, - packageSetChains: map[string][]string{ - osPkgsKey: {osPkgsKey, blueprintPkgsKey}, - }, - pipelines: tarPipelines, - buildPipelines: []string{"build"}, - payloadPipelines: []string{"os", "root-tar"}, - exports: []string{"root-tar"}, - } - imageInstaller := imageType{ - name: "image-installer", - filename: "installer.iso", - mimeType: "application/x-iso9660-image", - packageSets: map[string]packageSetFunc{ - buildPkgsKey: anacondaBuildPackageSet, - osPkgsKey: bareMetalPackageSet, - installerPkgsKey: anacondaPackageSet, - }, - packageSetChains: map[string][]string{ - osPkgsKey: {osPkgsKey, blueprintPkgsKey}, - }, - rpmOstree: false, - bootISO: true, - bootable: true, - pipelines: imageInstallerPipelines, - buildPipelines: []string{"build"}, - payloadPipelines: []string{"os", "anaconda-tree", "bootiso-tree", "bootiso"}, - exports: []string{"bootiso"}, - } - ociImgType := qcow2ImgType(rd) ociImgType.name = "oci" @@ -321,7 +278,7 @@ func newDistro(name string, minor int) *distribution { edgeOCIImgType(rd), edgeCommitImgType(rd), edgeInstallerImgType(rd), - imageInstaller, + imageInstaller(), ) gceX86Platform := &platform.X86{ @@ -350,7 +307,7 @@ func newDistro(name string, minor int) *distribution { x86_64.addImageTypes( &platform.X86{}, - tarImgType, + tarImgType(), ) aarch64.addImageTypes( @@ -376,7 +333,7 @@ func newDistro(name string, minor int) *distribution { aarch64.addImageTypes( &platform.Aarch64{}, - tarImgType, + tarImgType(), ) bareMetalAarch64Platform := &platform.Aarch64{ @@ -389,7 +346,7 @@ func newDistro(name string, minor int) *distribution { edgeOCIImgType(rd), edgeCommitImgType(rd), edgeInstallerImgType(rd), - imageInstaller, + imageInstaller(), ) rawAarch64Platform := &platform.Aarch64{ @@ -417,7 +374,7 @@ func newDistro(name string, minor int) *distribution { ppc64le.addImageTypes( &platform.PPC64LE{}, - tarImgType, + tarImgType(), ) s390x.addImageTypes( @@ -433,7 +390,7 @@ func newDistro(name string, minor int) *distribution { s390x.addImageTypes( &platform.S390X{}, - tarImgType, + tarImgType(), ) azureX64Platform := &platform.X86{ diff --git a/internal/distro/rhel8/package_sets.go b/internal/distro/rhel8/package_sets.go index 08ed7edfa..79c227da0 100644 --- a/internal/distro/rhel8/package_sets.go +++ b/internal/distro/rhel8/package_sets.go @@ -241,68 +241,6 @@ func s390xLegacyBootPackageSet(t *imageType) rpmmd.PackageSet { } } -func bareMetalPackageSet(t *imageType) rpmmd.PackageSet { - ps := rpmmd.PackageSet{ - Include: []string{ - "@core", - "authselect-compat", - "chrony", - "cockpit-system", - "cockpit-ws", - "dhcp-client", - "dnf", - "dnf-utils", - "dosfstools", - "dracut-norescue", - "iwl1000-firmware", - "iwl100-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", - "lvm2", - "net-tools", - "NetworkManager", - "nfs-utils", - "oddjob", - "oddjob-mkhomedir", - "policycoreutils", - "psmisc", - "python3-jsonschema", - "qemu-guest-agent", - "redhat-release", - "redhat-release-eula", - "rsync", - "selinux-policy-targeted", - "tar", - "tcpdump", - "yum", - }, - Exclude: nil, - }.Append(bootPackageSet(t)).Append(distroSpecificPackageSet(t)) - - // Ensure to not pull in subscription-manager on non-RHEL distro - if t.arch.distro.isRHEL() { - ps = ps.Append(rpmmd.PackageSet{ - Include: []string{ - "subscription-manager-cockpit", - }, - }) - } - - return ps -} - // packages that are only in some (sub)-distributions func distroSpecificPackageSet(t *imageType) rpmmd.PackageSet { if t.arch.distro.isRHEL() { @@ -312,198 +250,3 @@ func distroSpecificPackageSet(t *imageType) rpmmd.PackageSet { } return rpmmd.PackageSet{} } - -// INSTALLER PACKAGE SET - -func installerPackageSet(t *imageType) rpmmd.PackageSet { - ps := rpmmd.PackageSet{ - Include: []string{ - "anaconda-dracut", - "curl", - "dracut-config-generic", - "dracut-network", - "hostname", - "iwl100-firmware", - "iwl1000-firmware", - "iwl105-firmware", - "iwl135-firmware", - "iwl2000-firmware", - "iwl2030-firmware", - "iwl3160-firmware", - "iwl5000-firmware", - "iwl5150-firmware", - "iwl6000-firmware", - "iwl6050-firmware", - "iwl7260-firmware", - "kernel", - "less", - "nfs-utils", - "openssh-clients", - "ostree", - "plymouth", - "prefixdevname", - "rng-tools", - "rpcbind", - "selinux-policy-targeted", - "systemd", - "tar", - "xfsprogs", - "xz", - }, - } - - switch t.arch.Name() { - case distro.X86_64ArchName: - ps = ps.Append(rpmmd.PackageSet{ - Include: []string{ - "biosdevname", - }, - }) - } - - return ps -} - -func anacondaPackageSet(t *imageType) rpmmd.PackageSet { - - // common installer packages - ps := installerPackageSet(t) - - ps = ps.Append(rpmmd.PackageSet{ - Include: []string{ - "aajohan-comfortaa-fonts", - "abattis-cantarell-fonts", - "alsa-firmware", - "alsa-tools-firmware", - "anaconda", - "anaconda-install-env-deps", - "anaconda-widgets", - "audit", - "bind-utils", - "bitmap-fangsongti-fonts", - "bzip2", - "cryptsetup", - "dbus-x11", - "dejavu-sans-fonts", - "dejavu-sans-mono-fonts", - "device-mapper-persistent-data", - "dnf", - "dump", - "ethtool", - "fcoe-utils", - "ftp", - "gdb-gdbserver", - "gdisk", - "gfs2-utils", - "glibc-all-langpacks", - "google-noto-sans-cjk-ttc-fonts", - "gsettings-desktop-schemas", - "hdparm", - "hexedit", - "initscripts", - "ipmitool", - "iwl3945-firmware", - "iwl4965-firmware", - "iwl6000g2a-firmware", - "iwl6000g2b-firmware", - "jomolhari-fonts", - "kacst-farsi-fonts", - "kacst-qurn-fonts", - "kbd", - "kbd-misc", - "kdump-anaconda-addon", - "khmeros-base-fonts", - "libblockdev-lvm-dbus", - "libertas-sd8686-firmware", - "libertas-sd8787-firmware", - "libertas-usb8388-firmware", - "libertas-usb8388-olpc-firmware", - "libibverbs", - "libreport-plugin-bugzilla", - "libreport-plugin-reportuploader", - "libreport-rhel-anaconda-bugzilla", - "librsvg2", - "linux-firmware", - "lklug-fonts", - "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", - "metacity", - "mtr", - "mt-st", - "net-tools", - "nmap-ncat", - "nm-connection-editor", - "nss-tools", - "openssh-server", - "oscap-anaconda-addon", - "pciutils", - "perl-interpreter", - "pigz", - "python3-pyatspi", - "rdma-core", - "redhat-release-eula", - "rpm-ostree", - "rsync", - "rsyslog", - "sg3_utils", - "sil-abyssinica-fonts", - "sil-padauk-fonts", - "sil-scheherazade-fonts", - "smartmontools", - "smc-meera-fonts", - "spice-vdagent", - "strace", - "system-storage-manager", - "thai-scalable-waree-fonts", - "tigervnc-server-minimal", - "tigervnc-server-module", - "udisks2", - "udisks2-iscsi", - "usbutils", - "vim-minimal", - "volume_key", - "wget", - "xfsdump", - "xorg-x11-drivers", - "xorg-x11-fonts-misc", - "xorg-x11-server-utils", - "xorg-x11-server-Xorg", - "xorg-x11-xauth", - }, - }) - - ps = ps.Append(anacondaBootPackageSet(t)) - - switch t.arch.Name() { - case distro.X86_64ArchName: - ps = ps.Append(rpmmd.PackageSet{ - Include: []string{ - "biosdevname", - "dmidecode", - "memtest86+", - }, - }) - - case distro.Aarch64ArchName: - ps = ps.Append(rpmmd.PackageSet{ - Include: []string{ - "dmidecode", - }, - }) - - default: - panic(fmt.Sprintf("unsupported arch: %s", t.arch.Name())) - } - - return ps -}