|
Packit Service |
509fd4 |
package rhel84
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
import (
|
|
Packit Service |
509fd4 |
"encoding/json"
|
|
Packit Service |
509fd4 |
"errors"
|
|
Packit Service |
509fd4 |
"fmt"
|
|
Packit Service |
509fd4 |
"io"
|
|
Packit Service |
509fd4 |
"math/rand"
|
|
Packit Service |
509fd4 |
"sort"
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
"github.com/osbuild/osbuild-composer/internal/disk"
|
|
Packit Service |
509fd4 |
"github.com/osbuild/osbuild-composer/internal/distro"
|
|
Packit Service |
15f37d |
osbuild "github.com/osbuild/osbuild-composer/internal/osbuild1"
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
"github.com/google/uuid"
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
"github.com/osbuild/osbuild-composer/internal/blueprint"
|
|
Packit Service |
509fd4 |
"github.com/osbuild/osbuild-composer/internal/crypt"
|
|
Packit Service |
509fd4 |
"github.com/osbuild/osbuild-composer/internal/rpmmd"
|
|
Packit Service |
509fd4 |
)
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
const name = "rhel-84"
|
|
Packit Service |
bcdfb1 |
const centosName = "centos-8"
|
|
Packit Service |
509fd4 |
const modulePlatformID = "platform:el8"
|
|
Packit Service |
bcdfb1 |
const ostreeRef = "rhel/8/%s/edge"
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
type distribution struct {
|
|
Packit Service |
509fd4 |
arches map[string]architecture
|
|
Packit Service |
15f37d |
imageTypes map[string]distro.ImageType
|
|
Packit Service |
509fd4 |
buildPackages []string
|
|
Packit Service |
bcdfb1 |
isCentos bool
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
type architecture struct {
|
|
Packit Service |
509fd4 |
distro *distribution
|
|
Packit Service |
509fd4 |
name string
|
|
Packit Service |
509fd4 |
bootloaderPackages []string
|
|
Packit Service |
509fd4 |
buildPackages []string
|
|
Packit Service |
509fd4 |
legacy string
|
|
Packit Service |
509fd4 |
uefi bool
|
|
Packit Service |
15f37d |
imageTypes map[string]distro.ImageType
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
type imageType struct {
|
|
Packit Service |
509fd4 |
arch *architecture
|
|
Packit Service |
509fd4 |
name string
|
|
Packit Service |
509fd4 |
filename string
|
|
Packit Service |
509fd4 |
mimeType string
|
|
Packit Service |
509fd4 |
packages []string
|
|
Packit Service |
509fd4 |
excludedPackages []string
|
|
Packit Service |
509fd4 |
enabledServices []string
|
|
Packit Service |
509fd4 |
disabledServices []string
|
|
Packit Service |
509fd4 |
defaultTarget string
|
|
Packit Service |
509fd4 |
kernelOptions string
|
|
Packit Service |
509fd4 |
bootable bool
|
|
Packit Service |
509fd4 |
rpmOstree bool
|
|
Packit Service |
509fd4 |
defaultSize uint64
|
|
Packit Service |
509fd4 |
partitionTableGenerator func(imageOptions distro.ImageOptions, arch distro.Arch, rng *rand.Rand) disk.PartitionTable
|
|
Packit Service |
509fd4 |
assembler func(pt *disk.PartitionTable, options distro.ImageOptions, arch distro.Arch) *osbuild.Assembler
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
func (a *architecture) Distro() distro.Distro {
|
|
Packit Service |
509fd4 |
return a.distro
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
func (t *imageType) Arch() distro.Arch {
|
|
Packit Service |
509fd4 |
return t.arch
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
func (d *distribution) ListArches() []string {
|
|
Packit Service |
509fd4 |
archs := make([]string, 0, len(d.arches))
|
|
Packit Service |
509fd4 |
for name := range d.arches {
|
|
Packit Service |
509fd4 |
archs = append(archs, name)
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
sort.Strings(archs)
|
|
Packit Service |
509fd4 |
return archs
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
func (d *distribution) GetArch(arch string) (distro.Arch, error) {
|
|
Packit Service |
509fd4 |
a, exists := d.arches[arch]
|
|
Packit Service |
509fd4 |
if !exists {
|
|
Packit Service |
509fd4 |
return nil, errors.New("invalid architecture: " + arch)
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
return &a, nil
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
bcdfb1 |
func (d *distribution) addArches(arches ...architecture) {
|
|
Packit Service |
bcdfb1 |
if d.arches == nil {
|
|
Packit Service |
bcdfb1 |
d.arches = map[string]architecture{}
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
|
|
Packit Service |
509fd4 |
for _, a := range arches {
|
|
Packit Service |
509fd4 |
d.arches[a.name] = architecture{
|
|
Packit Service |
509fd4 |
distro: d,
|
|
Packit Service |
509fd4 |
name: a.name,
|
|
Packit Service |
509fd4 |
bootloaderPackages: a.bootloaderPackages,
|
|
Packit Service |
509fd4 |
buildPackages: a.buildPackages,
|
|
Packit Service |
509fd4 |
uefi: a.uefi,
|
|
Packit Service |
509fd4 |
imageTypes: a.imageTypes,
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
func (a *architecture) Name() string {
|
|
Packit Service |
509fd4 |
return a.name
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
func (a *architecture) ListImageTypes() []string {
|
|
Packit Service |
509fd4 |
formats := make([]string, 0, len(a.imageTypes))
|
|
Packit Service |
509fd4 |
for name := range a.imageTypes {
|
|
Packit Service |
509fd4 |
formats = append(formats, name)
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
sort.Strings(formats)
|
|
Packit Service |
509fd4 |
return formats
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
func (a *architecture) GetImageType(imageType string) (distro.ImageType, error) {
|
|
Packit Service |
509fd4 |
t, exists := a.imageTypes[imageType]
|
|
Packit Service |
509fd4 |
if !exists {
|
|
Packit Service |
509fd4 |
return nil, errors.New("invalid image type: " + imageType)
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
15f37d |
return t, nil
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
bcdfb1 |
func (a *architecture) addImageTypes(imageTypes ...imageType) {
|
|
Packit Service |
bcdfb1 |
if a.imageTypes == nil {
|
|
Packit Service |
15f37d |
a.imageTypes = map[string]distro.ImageType{}
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
509fd4 |
for _, it := range imageTypes {
|
|
Packit Service |
15f37d |
a.imageTypes[it.name] = &imageType{
|
|
Packit Service |
509fd4 |
arch: a,
|
|
Packit Service |
509fd4 |
name: it.name,
|
|
Packit Service |
509fd4 |
filename: it.filename,
|
|
Packit Service |
509fd4 |
mimeType: it.mimeType,
|
|
Packit Service |
509fd4 |
packages: it.packages,
|
|
Packit Service |
509fd4 |
excludedPackages: it.excludedPackages,
|
|
Packit Service |
509fd4 |
enabledServices: it.enabledServices,
|
|
Packit Service |
509fd4 |
disabledServices: it.disabledServices,
|
|
Packit Service |
509fd4 |
defaultTarget: it.defaultTarget,
|
|
Packit Service |
509fd4 |
kernelOptions: it.kernelOptions,
|
|
Packit Service |
509fd4 |
bootable: it.bootable,
|
|
Packit Service |
509fd4 |
rpmOstree: it.rpmOstree,
|
|
Packit Service |
509fd4 |
defaultSize: it.defaultSize,
|
|
Packit Service |
509fd4 |
partitionTableGenerator: it.partitionTableGenerator,
|
|
Packit Service |
509fd4 |
assembler: it.assembler,
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
15f37d |
// For the secondary implementation of image type.
|
|
Packit Service |
15f37d |
// Temporary; for supporting the new Manifest schema, until everything is
|
|
Packit Service |
15f37d |
// ported.
|
|
Packit Service |
15f37d |
func (a *architecture) addS2ImageTypes(imageTypes ...imageTypeS2) {
|
|
Packit Service |
15f37d |
for _, it := range imageTypes {
|
|
Packit Service |
15f37d |
a.imageTypes[it.name] = &imageTypeS2{
|
|
Packit Service |
15f37d |
arch: a,
|
|
Packit Service |
15f37d |
name: it.name,
|
|
Packit Service |
15f37d |
filename: it.filename,
|
|
Packit Service |
15f37d |
mimeType: it.mimeType,
|
|
Packit Service |
15f37d |
packageSets: it.packageSets,
|
|
Packit Service |
15f37d |
enabledServices: it.enabledServices,
|
|
Packit Service |
15f37d |
disabledServices: it.disabledServices,
|
|
Packit Service |
15f37d |
defaultTarget: it.defaultTarget,
|
|
Packit Service |
15f37d |
kernelOptions: it.kernelOptions,
|
|
Packit Service |
15f37d |
bootable: it.bootable,
|
|
Packit Service |
15f37d |
rpmOstree: it.rpmOstree,
|
|
Packit Service |
15f37d |
defaultSize: it.defaultSize,
|
|
Packit Service |
15f37d |
bootISO: it.bootISO,
|
|
Packit Service |
15f37d |
}
|
|
Packit Service |
15f37d |
}
|
|
Packit Service |
15f37d |
}
|
|
Packit Service |
15f37d |
|
|
Packit Service |
509fd4 |
func (t *imageType) Name() string {
|
|
Packit Service |
509fd4 |
return t.name
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
func (t *imageType) Filename() string {
|
|
Packit Service |
509fd4 |
return t.filename
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
func (t *imageType) MIMEType() string {
|
|
Packit Service |
509fd4 |
return t.mimeType
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
bcdfb1 |
func (t *imageType) OSTreeRef() string {
|
|
Packit Service |
bcdfb1 |
if t.rpmOstree {
|
|
Packit Service |
bcdfb1 |
return fmt.Sprintf(ostreeRef, t.arch.name)
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
return ""
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
|
|
Packit Service |
509fd4 |
func (t *imageType) Size(size uint64) uint64 {
|
|
Packit Service |
509fd4 |
const MegaByte = 1024 * 1024
|
|
Packit Service |
509fd4 |
// Microsoft Azure requires vhd images to be rounded up to the nearest MB
|
|
Packit Service |
509fd4 |
if t.name == "vhd" && size%MegaByte != 0 {
|
|
Packit Service |
509fd4 |
size = (size/MegaByte + 1) * MegaByte
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
if size == 0 {
|
|
Packit Service |
509fd4 |
size = t.defaultSize
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
return size
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
func (t *imageType) Packages(bp blueprint.Blueprint) ([]string, []string) {
|
|
Packit Service |
509fd4 |
packages := append(t.packages, bp.GetPackages()...)
|
|
Packit Service |
509fd4 |
timezone, _ := bp.Customizations.GetTimezoneSettings()
|
|
Packit Service |
509fd4 |
if timezone != nil {
|
|
Packit Service |
509fd4 |
packages = append(packages, "chrony")
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
if t.bootable {
|
|
Packit Service |
509fd4 |
packages = append(packages, t.arch.bootloaderPackages...)
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
bcdfb1 |
if t.arch.distro.isCentos {
|
|
Packit Service |
bcdfb1 |
// drop insights from centos, it's not available there
|
|
Packit Service |
bcdfb1 |
packages = removePackage(packages, "insights-client")
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
|
|
Packit Service |
509fd4 |
return packages, t.excludedPackages
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
func (t *imageType) BuildPackages() []string {
|
|
Packit Service |
509fd4 |
packages := append(t.arch.distro.buildPackages, t.arch.buildPackages...)
|
|
Packit Service |
509fd4 |
if t.rpmOstree {
|
|
Packit Service |
509fd4 |
packages = append(packages, "rpm-ostree")
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
return packages
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
15f37d |
func (t *imageType) PackageSets(bp blueprint.Blueprint) map[string]rpmmd.PackageSet {
|
|
Packit Service |
15f37d |
includePackages, excludePackages := t.Packages(bp)
|
|
Packit Service |
15f37d |
return map[string]rpmmd.PackageSet{
|
|
Packit Service |
15f37d |
"packages": {
|
|
Packit Service |
15f37d |
Include: includePackages,
|
|
Packit Service |
15f37d |
Exclude: excludePackages,
|
|
Packit Service |
15f37d |
},
|
|
Packit Service |
15f37d |
"build-packages": {
|
|
Packit Service |
15f37d |
Include: t.BuildPackages(),
|
|
Packit Service |
15f37d |
},
|
|
Packit Service |
15f37d |
}
|
|
Packit Service |
15f37d |
}
|
|
Packit Service |
15f37d |
|
|
Packit Service |
15f37d |
func (t *imageType) Exports() []string {
|
|
Packit Service |
15f37d |
return []string{"assembler"}
|
|
Packit Service |
15f37d |
}
|
|
Packit Service |
15f37d |
|
|
Packit Service |
509fd4 |
func (t *imageType) Manifest(c *blueprint.Customizations,
|
|
Packit Service |
509fd4 |
options distro.ImageOptions,
|
|
Packit Service |
509fd4 |
repos []rpmmd.RepoConfig,
|
|
Packit Service |
15f37d |
packageSpecSets map[string][]rpmmd.PackageSpec,
|
|
Packit Service |
509fd4 |
seed int64) (distro.Manifest, error) {
|
|
Packit Service |
509fd4 |
source := rand.NewSource(seed)
|
|
Packit Service |
509fd4 |
rng := rand.New(source)
|
|
Packit Service |
15f37d |
pipeline, err := t.pipeline(c, options, repos, packageSpecSets["packages"], packageSpecSets["build-packages"], rng)
|
|
Packit Service |
509fd4 |
if err != nil {
|
|
Packit Service |
509fd4 |
return distro.Manifest{}, err
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
return json.Marshal(
|
|
Packit Service |
509fd4 |
osbuild.Manifest{
|
|
Packit Service |
15f37d |
Sources: *sources(append(packageSpecSets["packages"], packageSpecSets["build-packages"]...)),
|
|
Packit Service |
509fd4 |
Pipeline: *pipeline,
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
)
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
func (d *distribution) Name() string {
|
|
Packit Service |
bcdfb1 |
if d.isCentos {
|
|
Packit Service |
bcdfb1 |
return centosName
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
509fd4 |
return name
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
func (d *distribution) ModulePlatformID() string {
|
|
Packit Service |
509fd4 |
return modulePlatformID
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
func sources(packages []rpmmd.PackageSpec) *osbuild.Sources {
|
|
Packit Service |
509fd4 |
files := &osbuild.FilesSource{
|
|
Packit Service |
509fd4 |
URLs: make(map[string]osbuild.FileSource),
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
for _, pkg := range packages {
|
|
Packit Service |
509fd4 |
fileSource := osbuild.FileSource{
|
|
Packit Service |
509fd4 |
URL: pkg.RemoteLocation,
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
if pkg.Secrets == "org.osbuild.rhsm" {
|
|
Packit Service |
509fd4 |
fileSource.Secrets = &osbuild.Secret{
|
|
Packit Service |
509fd4 |
Name: "org.osbuild.rhsm",
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
files.URLs[pkg.Checksum] = fileSource
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
return &osbuild.Sources{
|
|
Packit Service |
509fd4 |
"org.osbuild.files": files,
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
func (t *imageType) pipeline(c *blueprint.Customizations, options distro.ImageOptions, repos []rpmmd.RepoConfig, packageSpecs, buildPackageSpecs []rpmmd.PackageSpec, rng *rand.Rand) (*osbuild.Pipeline, error) {
|
|
Packit Service |
bcdfb1 |
|
|
Packit Service |
bcdfb1 |
if kernelOpts := c.GetKernel(); kernelOpts != nil && kernelOpts.Append != "" && t.rpmOstree {
|
|
Packit Service |
bcdfb1 |
return nil, fmt.Errorf("kernel boot parameter customizations are not supported for ostree types")
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
|
|
Packit Service |
509fd4 |
var pt *disk.PartitionTable
|
|
Packit Service |
509fd4 |
if t.partitionTableGenerator != nil {
|
|
Packit Service |
509fd4 |
table := t.partitionTableGenerator(options, t.arch, rng)
|
|
Packit Service |
509fd4 |
pt = &table
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
p := &osbuild.Pipeline{}
|
|
Packit Service |
bcdfb1 |
if t.arch.distro.isCentos {
|
|
Packit Service |
bcdfb1 |
p.SetBuild(t.buildPipeline(repos, *t.arch, buildPackageSpecs), "org.osbuild.centos8")
|
|
Packit Service |
bcdfb1 |
} else {
|
|
Packit Service |
bcdfb1 |
p.SetBuild(t.buildPipeline(repos, *t.arch, buildPackageSpecs), "org.osbuild.rhel84")
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
if t.arch.Name() == "s390x" {
|
|
Packit Service |
509fd4 |
if pt == nil {
|
|
Packit Service |
509fd4 |
panic("s390x image must have a partition table, this is a programming error")
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
rootPartition := pt.RootPartition()
|
|
Packit Service |
509fd4 |
if rootPartition == nil {
|
|
Packit Service |
509fd4 |
panic("s390x image must have a root partition, this is a programming error")
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
p.AddStage(osbuild.NewKernelCmdlineStage(&osbuild.KernelCmdlineStageOptions{
|
|
Packit Service |
3a6627 |
RootFsUUID: rootPartition.Filesystem.UUID,
|
|
Packit Service |
3a6627 |
KernelOpts: t.kernelOptions,
|
|
Packit Service |
509fd4 |
}))
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
p.AddStage(osbuild.NewRPMStage(t.rpmStageOptions(*t.arch, repos, packageSpecs)))
|
|
Packit Service |
509fd4 |
p.AddStage(osbuild.NewFixBLSStage())
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
if pt != nil {
|
|
Packit Service |
509fd4 |
p.AddStage(osbuild.NewFSTabStage(pt.FSTabStageOptions()))
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
if t.bootable {
|
|
Packit Service |
509fd4 |
if t.arch.Name() != "s390x" {
|
|
Packit Service |
15f37d |
p.AddStage(osbuild.NewGRUB2Stage(t.grub2StageOptions(pt, t.kernelOptions, c.GetKernel(), packageSpecs, t.arch.uefi, t.arch.legacy)))
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
// TODO support setting all languages and install corresponding langpack-* package
|
|
Packit Service |
509fd4 |
language, keyboard := c.GetPrimaryLocale()
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
if language != nil {
|
|
Packit Service |
509fd4 |
p.AddStage(osbuild.NewLocaleStage(&osbuild.LocaleStageOptions{Language: *language}))
|
|
Packit Service |
509fd4 |
} else {
|
|
Packit Service |
15f37d |
p.AddStage(osbuild.NewLocaleStage(&osbuild.LocaleStageOptions{Language: "en_US.UTF-8"}))
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
if keyboard != nil {
|
|
Packit Service |
509fd4 |
p.AddStage(osbuild.NewKeymapStage(&osbuild.KeymapStageOptions{Keymap: *keyboard}))
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
if hostname := c.GetHostname(); hostname != nil {
|
|
Packit Service |
509fd4 |
p.AddStage(osbuild.NewHostnameStage(&osbuild.HostnameStageOptions{Hostname: *hostname}))
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
timezone, ntpServers := c.GetTimezoneSettings()
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
if timezone != nil {
|
|
Packit Service |
509fd4 |
p.AddStage(osbuild.NewTimezoneStage(&osbuild.TimezoneStageOptions{Zone: *timezone}))
|
|
Packit Service |
3a6627 |
} else {
|
|
Packit Service |
3a6627 |
p.AddStage(osbuild.NewTimezoneStage(&osbuild.TimezoneStageOptions{Zone: "America/New_York"}))
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
if len(ntpServers) > 0 {
|
|
Packit Service |
509fd4 |
p.AddStage(osbuild.NewChronyStage(&osbuild.ChronyStageOptions{Timeservers: ntpServers}))
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
if groups := c.GetGroups(); len(groups) > 0 {
|
|
Packit Service |
509fd4 |
p.AddStage(osbuild.NewGroupsStage(t.groupStageOptions(groups)))
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
if users := c.GetUsers(); len(users) > 0 {
|
|
Packit Service |
509fd4 |
options, err := t.userStageOptions(users)
|
|
Packit Service |
509fd4 |
if err != nil {
|
|
Packit Service |
509fd4 |
return nil, err
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
p.AddStage(osbuild.NewUsersStage(options))
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
3a6627 |
if services := c.GetServices(); services != nil || t.enabledServices != nil || t.disabledServices != nil || t.defaultTarget != "" {
|
|
Packit Service |
509fd4 |
p.AddStage(osbuild.NewSystemdStage(t.systemdStageOptions(t.enabledServices, t.disabledServices, services, t.defaultTarget)))
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
if firewall := c.GetFirewall(); firewall != nil {
|
|
Packit Service |
509fd4 |
p.AddStage(osbuild.NewFirewallStage(t.firewallStageOptions(firewall)))
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
if t.arch.Name() == "s390x" {
|
|
Packit Service |
509fd4 |
p.AddStage(osbuild.NewZiplStage(&osbuild.ZiplStageOptions{}))
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
p.AddStage(osbuild.NewSELinuxStage(t.selinuxStageOptions()))
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
bcdfb1 |
// These are the current defaults for the sysconfig stage. This can be changed to be image type exclusive if different configs are needed.
|
|
Packit Service |
bcdfb1 |
p.AddStage(osbuild.NewSysconfigStage(&osbuild.SysconfigStageOptions{
|
|
Packit Service |
bcdfb1 |
Kernel: osbuild.SysconfigKernelOptions{
|
|
Packit Service |
bcdfb1 |
UpdateDefault: true,
|
|
Packit Service |
bcdfb1 |
DefaultKernel: "kernel",
|
|
Packit Service |
bcdfb1 |
},
|
|
Packit Service |
bcdfb1 |
Network: osbuild.SysconfigNetworkOptions{
|
|
Packit Service |
bcdfb1 |
Networking: true,
|
|
Packit Service |
bcdfb1 |
NoZeroConf: true,
|
|
Packit Service |
bcdfb1 |
},
|
|
Packit Service |
bcdfb1 |
}))
|
|
Packit Service |
bcdfb1 |
|
|
Packit Service |
509fd4 |
if t.rpmOstree {
|
|
Packit Service |
509fd4 |
p.AddStage(osbuild.NewRPMOSTreeStage(&osbuild.RPMOSTreeStageOptions{
|
|
Packit Service |
509fd4 |
EtcGroupMembers: []string{
|
|
Packit Service |
509fd4 |
// NOTE: We may want to make this configurable.
|
|
Packit Service |
509fd4 |
"wheel", "docker",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
}))
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
if options.Subscription != nil {
|
|
Packit Service |
509fd4 |
commands := []string{
|
|
Packit Service |
509fd4 |
fmt.Sprintf("/usr/sbin/subscription-manager register --org=%d --activationkey=%s --serverurl %s --baseurl %s", options.Subscription.Organization, options.Subscription.ActivationKey, options.Subscription.ServerUrl, options.Subscription.BaseUrl),
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
if options.Subscription.Insights {
|
|
Packit Service |
509fd4 |
commands = append(commands, "/usr/bin/insights-client --register")
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
p.AddStage(osbuild.NewFirstBootStage(&osbuild.FirstBootStageOptions{
|
|
Packit Service |
509fd4 |
Commands: commands,
|
|
Packit Service |
509fd4 |
WaitForNetwork: true,
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
))
|
|
Packit Service |
bcdfb1 |
} else {
|
|
Packit Service |
bcdfb1 |
// RHSM DNF plugins should be by default disabled on RHEL Guest KVM images
|
|
Packit Service |
bcdfb1 |
if t.Name() == "qcow2" {
|
|
Packit Service |
bcdfb1 |
p.AddStage(osbuild.NewRHSMStage(&osbuild.RHSMStageOptions{
|
|
Packit Service |
bcdfb1 |
DnfPlugins: &osbuild.RHSMStageOptionsDnfPlugins{
|
|
Packit Service |
bcdfb1 |
ProductID: &osbuild.RHSMStageOptionsDnfPlugin{
|
|
Packit Service |
bcdfb1 |
Enabled: false,
|
|
Packit Service |
bcdfb1 |
},
|
|
Packit Service |
bcdfb1 |
SubscriptionManager: &osbuild.RHSMStageOptionsDnfPlugin{
|
|
Packit Service |
bcdfb1 |
Enabled: false,
|
|
Packit Service |
bcdfb1 |
},
|
|
Packit Service |
bcdfb1 |
},
|
|
Packit Service |
bcdfb1 |
}))
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
p.Assembler = t.assembler(pt, options, t.arch)
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
return p, nil
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
func (t *imageType) buildPipeline(repos []rpmmd.RepoConfig, arch architecture, buildPackageSpecs []rpmmd.PackageSpec) *osbuild.Pipeline {
|
|
Packit Service |
509fd4 |
p := &osbuild.Pipeline{}
|
|
Packit Service |
509fd4 |
p.AddStage(osbuild.NewRPMStage(t.rpmStageOptions(arch, repos, buildPackageSpecs)))
|
|
Packit Service |
509fd4 |
p.AddStage(osbuild.NewSELinuxStage(t.selinuxStageOptions()))
|
|
Packit Service |
509fd4 |
return p
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
func (t *imageType) rpmStageOptions(arch architecture, repos []rpmmd.RepoConfig, specs []rpmmd.PackageSpec) *osbuild.RPMStageOptions {
|
|
Packit Service |
509fd4 |
var gpgKeys []string
|
|
Packit Service |
509fd4 |
for _, repo := range repos {
|
|
Packit Service |
509fd4 |
if repo.GPGKey == "" {
|
|
Packit Service |
509fd4 |
continue
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
gpgKeys = append(gpgKeys, repo.GPGKey)
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
var packages []osbuild.RPMPackage
|
|
Packit Service |
509fd4 |
for _, spec := range specs {
|
|
Packit Service |
509fd4 |
pkg := osbuild.RPMPackage{
|
|
Packit Service |
509fd4 |
Checksum: spec.Checksum,
|
|
Packit Service |
509fd4 |
CheckGPG: spec.CheckGPG,
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
packages = append(packages, pkg)
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
return &osbuild.RPMStageOptions{
|
|
Packit Service |
509fd4 |
GPGKeys: gpgKeys,
|
|
Packit Service |
509fd4 |
Packages: packages,
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
func (t *imageType) userStageOptions(users []blueprint.UserCustomization) (*osbuild.UsersStageOptions, error) {
|
|
Packit Service |
509fd4 |
options := osbuild.UsersStageOptions{
|
|
Packit Service |
509fd4 |
Users: make(map[string]osbuild.UsersStageOptionsUser),
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
for _, c := range users {
|
|
Packit Service |
509fd4 |
if c.Password != nil && !crypt.PasswordIsCrypted(*c.Password) {
|
|
Packit Service |
509fd4 |
cryptedPassword, err := crypt.CryptSHA512(*c.Password)
|
|
Packit Service |
509fd4 |
if err != nil {
|
|
Packit Service |
509fd4 |
return nil, err
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
c.Password = &cryptedPassword
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
user := osbuild.UsersStageOptionsUser{
|
|
Packit Service |
509fd4 |
Groups: c.Groups,
|
|
Packit Service |
509fd4 |
Description: c.Description,
|
|
Packit Service |
509fd4 |
Home: c.Home,
|
|
Packit Service |
509fd4 |
Shell: c.Shell,
|
|
Packit Service |
509fd4 |
Password: c.Password,
|
|
Packit Service |
509fd4 |
Key: c.Key,
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
user.UID = c.UID
|
|
Packit Service |
509fd4 |
user.GID = c.GID
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
options.Users[c.Name] = user
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
return &options, nil
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
func (t *imageType) groupStageOptions(groups []blueprint.GroupCustomization) *osbuild.GroupsStageOptions {
|
|
Packit Service |
509fd4 |
options := osbuild.GroupsStageOptions{
|
|
Packit Service |
509fd4 |
Groups: map[string]osbuild.GroupsStageOptionsGroup{},
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
for _, group := range groups {
|
|
Packit Service |
509fd4 |
groupData := osbuild.GroupsStageOptionsGroup{
|
|
Packit Service |
509fd4 |
Name: group.Name,
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
groupData.GID = group.GID
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
options.Groups[group.Name] = groupData
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
return &options
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
func (t *imageType) firewallStageOptions(firewall *blueprint.FirewallCustomization) *osbuild.FirewallStageOptions {
|
|
Packit Service |
509fd4 |
options := osbuild.FirewallStageOptions{
|
|
Packit Service |
509fd4 |
Ports: firewall.Ports,
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
if firewall.Services != nil {
|
|
Packit Service |
509fd4 |
options.EnabledServices = firewall.Services.Enabled
|
|
Packit Service |
509fd4 |
options.DisabledServices = firewall.Services.Disabled
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
return &options
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
func (t *imageType) systemdStageOptions(enabledServices, disabledServices []string, s *blueprint.ServicesCustomization, target string) *osbuild.SystemdStageOptions {
|
|
Packit Service |
509fd4 |
if s != nil {
|
|
Packit Service |
509fd4 |
enabledServices = append(enabledServices, s.Enabled...)
|
|
Packit Service |
509fd4 |
disabledServices = append(disabledServices, s.Disabled...)
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
return &osbuild.SystemdStageOptions{
|
|
Packit Service |
509fd4 |
EnabledServices: enabledServices,
|
|
Packit Service |
509fd4 |
DisabledServices: disabledServices,
|
|
Packit Service |
509fd4 |
DefaultTarget: target,
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
15f37d |
func (t *imageType) grub2StageOptions(pt *disk.PartitionTable, kernelOptions string, kernel *blueprint.KernelCustomization, packages []rpmmd.PackageSpec, uefi bool, legacy string) *osbuild.GRUB2StageOptions {
|
|
Packit Service |
509fd4 |
if pt == nil {
|
|
Packit Service |
509fd4 |
panic("partition table must be defined for grub2 stage, this is a programming error")
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
rootPartition := pt.RootPartition()
|
|
Packit Service |
509fd4 |
if rootPartition == nil {
|
|
Packit Service |
509fd4 |
panic("root partition must be defined for grub2 stage, this is a programming error")
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
15f37d |
stageOptions := osbuild.GRUB2StageOptions{
|
|
Packit Service |
15f37d |
RootFilesystemUUID: uuid.MustParse(rootPartition.Filesystem.UUID),
|
|
Packit Service |
15f37d |
KernelOptions: kernelOptions,
|
|
Packit Service |
15f37d |
Legacy: legacy,
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
if uefi {
|
|
Packit Service |
bcdfb1 |
var vendor string
|
|
Packit Service |
bcdfb1 |
if t.arch.distro.isCentos {
|
|
Packit Service |
bcdfb1 |
vendor = "centos"
|
|
Packit Service |
bcdfb1 |
} else {
|
|
Packit Service |
bcdfb1 |
vendor = "redhat"
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
15f37d |
stageOptions.UEFI = &osbuild.GRUB2UEFI{
|
|
Packit Service |
bcdfb1 |
Vendor: vendor,
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
if !uefi {
|
|
Packit Service |
15f37d |
stageOptions.Legacy = t.arch.legacy
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
15f37d |
if kernel != nil {
|
|
Packit Service |
15f37d |
if kernel.Append != "" {
|
|
Packit Service |
15f37d |
stageOptions.KernelOptions += " " + kernel.Append
|
|
Packit Service |
15f37d |
}
|
|
Packit Service |
15f37d |
for _, pkg := range packages {
|
|
Packit Service |
15f37d |
if pkg.Name == kernel.Name {
|
|
Packit Service |
15f37d |
stageOptions.SavedEntry = "ffffffffffffffffffffffffffffffff-" + pkg.Version + "-" + pkg.Release + "." + pkg.Arch
|
|
Packit Service |
15f37d |
break
|
|
Packit Service |
15f37d |
}
|
|
Packit Service |
15f37d |
}
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
15f37d |
|
|
Packit Service |
15f37d |
return &stageOptions
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
func (t *imageType) selinuxStageOptions() *osbuild.SELinuxStageOptions {
|
|
Packit Service |
509fd4 |
return &osbuild.SELinuxStageOptions{
|
|
Packit Service |
509fd4 |
FileContexts: "etc/selinux/targeted/contexts/files/file_contexts",
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
func defaultPartitionTable(imageOptions distro.ImageOptions, arch distro.Arch, rng *rand.Rand) disk.PartitionTable {
|
|
Packit Service |
509fd4 |
if arch.Name() == "x86_64" {
|
|
Packit Service |
509fd4 |
return disk.PartitionTable{
|
|
Packit Service |
509fd4 |
Size: imageOptions.Size,
|
|
Packit Service |
509fd4 |
UUID: "D209C89E-EA5E-4FBD-B161-B461CCE297E0",
|
|
Packit Service |
509fd4 |
Type: "gpt",
|
|
Packit Service |
509fd4 |
Partitions: []disk.Partition{
|
|
Packit Service |
509fd4 |
{
|
|
Packit Service |
509fd4 |
Bootable: true,
|
|
Packit Service |
509fd4 |
Size: 2048,
|
|
Packit Service |
509fd4 |
Start: 2048,
|
|
Packit Service |
509fd4 |
Type: "21686148-6449-6E6F-744E-656564454649",
|
|
Packit Service |
509fd4 |
UUID: "FAC7F1FB-3E8D-4137-A512-961DE09A5549",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
{
|
|
Packit Service |
509fd4 |
Start: 4096,
|
|
Packit Service |
509fd4 |
Size: 204800,
|
|
Packit Service |
509fd4 |
Type: "C12A7328-F81F-11D2-BA4B-00A0C93EC93B",
|
|
Packit Service |
509fd4 |
UUID: "68B2905B-DF3E-4FB3-80FA-49D1E773AA33",
|
|
Packit Service |
509fd4 |
Filesystem: &disk.Filesystem{
|
|
Packit Service |
509fd4 |
Type: "vfat",
|
|
Packit Service |
509fd4 |
UUID: "7B77-95E7",
|
|
Packit Service |
509fd4 |
Mountpoint: "/boot/efi",
|
|
Packit Service |
509fd4 |
FSTabOptions: "defaults,uid=0,gid=0,umask=077,shortname=winnt",
|
|
Packit Service |
509fd4 |
FSTabFreq: 0,
|
|
Packit Service |
509fd4 |
FSTabPassNo: 2,
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
{
|
|
Packit Service |
509fd4 |
Start: 208896,
|
|
Packit Service |
509fd4 |
Type: "0FC63DAF-8483-4772-8E79-3D69D8477DE4",
|
|
Packit Service |
509fd4 |
UUID: "6264D520-3FB9-423F-8AB8-7A0A8E3D3562",
|
|
Packit Service |
509fd4 |
Filesystem: &disk.Filesystem{
|
|
Packit Service |
509fd4 |
Type: "xfs",
|
|
Packit Service |
509fd4 |
UUID: uuid.Must(newRandomUUIDFromReader(rng)).String(),
|
|
Packit Service |
509fd4 |
Label: "root",
|
|
Packit Service |
509fd4 |
Mountpoint: "/",
|
|
Packit Service |
509fd4 |
FSTabOptions: "defaults",
|
|
Packit Service |
509fd4 |
FSTabFreq: 0,
|
|
Packit Service |
509fd4 |
FSTabPassNo: 0,
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
} else if arch.Name() == "aarch64" {
|
|
Packit Service |
509fd4 |
return disk.PartitionTable{
|
|
Packit Service |
509fd4 |
Size: imageOptions.Size,
|
|
Packit Service |
509fd4 |
UUID: "D209C89E-EA5E-4FBD-B161-B461CCE297E0",
|
|
Packit Service |
509fd4 |
Type: "gpt",
|
|
Packit Service |
509fd4 |
Partitions: []disk.Partition{
|
|
Packit Service |
509fd4 |
{
|
|
Packit Service |
509fd4 |
Start: 2048,
|
|
Packit Service |
509fd4 |
Size: 204800,
|
|
Packit Service |
509fd4 |
Type: "C12A7328-F81F-11D2-BA4B-00A0C93EC93B",
|
|
Packit Service |
509fd4 |
UUID: "68B2905B-DF3E-4FB3-80FA-49D1E773AA33",
|
|
Packit Service |
509fd4 |
Filesystem: &disk.Filesystem{
|
|
Packit Service |
509fd4 |
Type: "vfat",
|
|
Packit Service |
509fd4 |
UUID: "7B77-95E7",
|
|
Packit Service |
509fd4 |
Mountpoint: "/boot/efi",
|
|
Packit Service |
509fd4 |
FSTabOptions: "defaults,uid=0,gid=0,umask=077,shortname=winnt",
|
|
Packit Service |
509fd4 |
FSTabFreq: 0,
|
|
Packit Service |
509fd4 |
FSTabPassNo: 2,
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
{
|
|
Packit Service |
509fd4 |
Start: 206848,
|
|
Packit Service |
509fd4 |
Type: "0FC63DAF-8483-4772-8E79-3D69D8477DE4",
|
|
Packit Service |
509fd4 |
UUID: "6264D520-3FB9-423F-8AB8-7A0A8E3D3562",
|
|
Packit Service |
509fd4 |
Filesystem: &disk.Filesystem{
|
|
Packit Service |
509fd4 |
Type: "xfs",
|
|
Packit Service |
509fd4 |
UUID: uuid.Must(newRandomUUIDFromReader(rng)).String(),
|
|
Packit Service |
509fd4 |
Label: "root",
|
|
Packit Service |
509fd4 |
Mountpoint: "/",
|
|
Packit Service |
509fd4 |
FSTabOptions: "defaults",
|
|
Packit Service |
509fd4 |
FSTabFreq: 0,
|
|
Packit Service |
509fd4 |
FSTabPassNo: 0,
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
} else if arch.Name() == "ppc64le" {
|
|
Packit Service |
509fd4 |
return disk.PartitionTable{
|
|
Packit Service |
509fd4 |
Size: imageOptions.Size,
|
|
Packit Service |
509fd4 |
UUID: "0x14fc63d2",
|
|
Packit Service |
509fd4 |
Type: "dos",
|
|
Packit Service |
509fd4 |
Partitions: []disk.Partition{
|
|
Packit Service |
509fd4 |
{
|
|
Packit Service |
509fd4 |
Size: 8192,
|
|
Packit Service |
509fd4 |
Type: "41",
|
|
Packit Service |
509fd4 |
Bootable: true,
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
{
|
|
Packit Service |
509fd4 |
Start: 10240,
|
|
Packit Service |
509fd4 |
Filesystem: &disk.Filesystem{
|
|
Packit Service |
509fd4 |
Type: "xfs",
|
|
Packit Service |
509fd4 |
UUID: uuid.Must(newRandomUUIDFromReader(rng)).String(),
|
|
Packit Service |
509fd4 |
Mountpoint: "/",
|
|
Packit Service |
509fd4 |
FSTabOptions: "defaults",
|
|
Packit Service |
509fd4 |
FSTabFreq: 0,
|
|
Packit Service |
509fd4 |
FSTabPassNo: 0,
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
} else if arch.Name() == "s390x" {
|
|
Packit Service |
509fd4 |
return disk.PartitionTable{
|
|
Packit Service |
509fd4 |
Size: imageOptions.Size,
|
|
Packit Service |
509fd4 |
UUID: "0x14fc63d2",
|
|
Packit Service |
509fd4 |
Type: "dos",
|
|
Packit Service |
509fd4 |
Partitions: []disk.Partition{
|
|
Packit Service |
509fd4 |
{
|
|
Packit Service |
509fd4 |
Start: 2048,
|
|
Packit Service |
509fd4 |
Bootable: true,
|
|
Packit Service |
509fd4 |
Filesystem: &disk.Filesystem{
|
|
Packit Service |
509fd4 |
Type: "xfs",
|
|
Packit Service |
509fd4 |
UUID: uuid.Must(newRandomUUIDFromReader(rng)).String(),
|
|
Packit Service |
509fd4 |
Mountpoint: "/",
|
|
Packit Service |
509fd4 |
FSTabOptions: "defaults",
|
|
Packit Service |
509fd4 |
FSTabFreq: 0,
|
|
Packit Service |
509fd4 |
FSTabPassNo: 0,
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
panic("unknown arch: " + arch.Name())
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
func qemuAssembler(pt *disk.PartitionTable, format string, filename string, imageOptions distro.ImageOptions, arch distro.Arch) *osbuild.Assembler {
|
|
Packit Service |
509fd4 |
options := pt.QEMUAssemblerOptions()
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
options.Format = format
|
|
Packit Service |
509fd4 |
options.Filename = filename
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
if arch.Name() == "x86_64" {
|
|
Packit Service |
509fd4 |
options.Bootloader = &osbuild.QEMUBootloader{
|
|
Packit Service |
509fd4 |
Type: "grub2",
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
} else if arch.Name() == "ppc64le" {
|
|
Packit Service |
509fd4 |
options.Bootloader = &osbuild.QEMUBootloader{
|
|
Packit Service |
509fd4 |
Type: "grub2",
|
|
Packit Service |
509fd4 |
Platform: "powerpc-ieee1275",
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
} else if arch.Name() == "s390x" {
|
|
Packit Service |
509fd4 |
options.Bootloader = &osbuild.QEMUBootloader{
|
|
Packit Service |
509fd4 |
Type: "zipl",
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
return osbuild.NewQEMUAssembler(&options)
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
func tarAssembler(filename, compression string) *osbuild.Assembler {
|
|
Packit Service |
509fd4 |
return osbuild.NewTarAssembler(
|
|
Packit Service |
509fd4 |
&osbuild.TarAssemblerOptions{
|
|
Packit Service |
509fd4 |
Filename: filename,
|
|
Packit Service |
509fd4 |
Compression: compression,
|
|
Packit Service |
509fd4 |
})
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
func ostreeCommitAssembler(options distro.ImageOptions, arch distro.Arch) *osbuild.Assembler {
|
|
Packit Service |
509fd4 |
return osbuild.NewOSTreeCommitAssembler(
|
|
Packit Service |
509fd4 |
&osbuild.OSTreeCommitAssemblerOptions{
|
|
Packit Service |
bcdfb1 |
Ref: options.OSTree.Ref,
|
|
Packit Service |
509fd4 |
Parent: options.OSTree.Parent,
|
|
Packit Service |
509fd4 |
Tar: osbuild.OSTreeCommitAssemblerTarOptions{
|
|
Packit Service |
509fd4 |
Filename: "commit.tar",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
)
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
func newRandomUUIDFromReader(r io.Reader) (uuid.UUID, error) {
|
|
Packit Service |
509fd4 |
var id uuid.UUID
|
|
Packit Service |
509fd4 |
_, err := io.ReadFull(r, id[:])
|
|
Packit Service |
509fd4 |
if err != nil {
|
|
Packit Service |
509fd4 |
return uuid.Nil, err
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
id[6] = (id[6] & 0x0f) | 0x40 // Version 4
|
|
Packit Service |
509fd4 |
id[8] = (id[8] & 0x3f) | 0x80 // Variant is 10
|
|
Packit Service |
509fd4 |
return id, nil
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
bcdfb1 |
func removePackage(packages []string, packageToRemove string) []string {
|
|
Packit Service |
bcdfb1 |
for i, pkg := range packages {
|
|
Packit Service |
bcdfb1 |
if pkg == packageToRemove {
|
|
Packit Service |
bcdfb1 |
// override the package with the last one from the list
|
|
Packit Service |
bcdfb1 |
packages[i] = packages[len(packages)-1]
|
|
Packit Service |
bcdfb1 |
|
|
Packit Service |
bcdfb1 |
// drop the last package from the slice
|
|
Packit Service |
bcdfb1 |
return packages[:len(packages)-1]
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
return packages
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
|
|
Packit Service |
509fd4 |
// New creates a new distro object, defining the supported architectures and image types
|
|
Packit Service |
509fd4 |
func New() distro.Distro {
|
|
Packit Service |
bcdfb1 |
return newDistro(false)
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
|
|
Packit Service |
bcdfb1 |
func NewCentos() distro.Distro {
|
|
Packit Service |
bcdfb1 |
return newDistro(true)
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
|
|
Packit Service |
bcdfb1 |
func newDistro(isCentos bool) distro.Distro {
|
|
Packit Service |
509fd4 |
const GigaByte = 1024 * 1024 * 1024
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
edgeImgTypeX86_64 := imageType{
|
|
Packit Service |
509fd4 |
name: "rhel-edge-commit",
|
|
Packit Service |
509fd4 |
filename: "commit.tar",
|
|
Packit Service |
509fd4 |
mimeType: "application/x-tar",
|
|
Packit Service |
509fd4 |
packages: []string{
|
|
Packit Service |
509fd4 |
"redhat-release", // TODO: is this correct for Edge?
|
|
Packit Service |
509fd4 |
"glibc", "glibc-minimal-langpack", "nss-altfiles",
|
|
Packit Service |
509fd4 |
"dracut-config-generic", "dracut-network",
|
|
Packit Service |
509fd4 |
"basesystem", "bash", "platform-python",
|
|
Packit Service |
509fd4 |
"shadow-utils", "chrony", "setup", "shadow-utils",
|
|
Packit Service |
509fd4 |
"sudo", "systemd", "coreutils", "util-linux",
|
|
Packit Service |
509fd4 |
"curl", "vim-minimal",
|
|
Packit Service |
509fd4 |
"rpm", "rpm-ostree", "polkit",
|
|
Packit Service |
509fd4 |
"lvm2", "cryptsetup", "pinentry",
|
|
Packit Service |
509fd4 |
"e2fsprogs", "dosfstools",
|
|
Packit Service |
509fd4 |
"keyutils", "gnupg2",
|
|
Packit Service |
509fd4 |
"attr", "xz", "gzip",
|
|
Packit Service |
509fd4 |
"firewalld", "iptables",
|
|
Packit Service |
509fd4 |
"NetworkManager", "NetworkManager-wifi", "NetworkManager-wwan",
|
|
Packit Service |
509fd4 |
"wpa_supplicant",
|
|
Packit Service |
509fd4 |
"dnsmasq", "traceroute",
|
|
Packit Service |
509fd4 |
"hostname", "iproute", "iputils",
|
|
Packit Service |
509fd4 |
"openssh-clients", "procps-ng", "rootfiles",
|
|
Packit Service |
509fd4 |
"openssh-server", "passwd",
|
|
Packit Service |
509fd4 |
"policycoreutils", "policycoreutils-python-utils",
|
|
Packit Service |
509fd4 |
"selinux-policy-targeted", "setools-console",
|
|
Packit Service |
509fd4 |
"less", "tar", "rsync",
|
|
Packit Service |
509fd4 |
"fwupd", "usbguard",
|
|
Packit Service |
509fd4 |
"bash-completion", "tmux",
|
|
Packit Service |
509fd4 |
"ima-evm-utils",
|
|
Packit Service |
509fd4 |
"audit",
|
|
Packit Service |
509fd4 |
"podman", "container-selinux", "skopeo", "criu",
|
|
Packit Service |
509fd4 |
"slirp4netns", "fuse-overlayfs",
|
|
Packit Service |
509fd4 |
"clevis", "clevis-dracut", "clevis-luks",
|
|
Packit Service |
509fd4 |
"greenboot", "greenboot-grub2", "greenboot-rpm-ostree-grub2", "greenboot-reboot", "greenboot-status",
|
|
Packit Service |
509fd4 |
// x86 specific
|
|
Packit Service |
509fd4 |
"grub2", "grub2-efi-x64", "efibootmgr", "shim-x64", "microcode_ctl",
|
|
Packit Service |
509fd4 |
"iwl1000-firmware", "iwl100-firmware", "iwl105-firmware", "iwl135-firmware",
|
|
Packit Service |
509fd4 |
"iwl2000-firmware", "iwl2030-firmware", "iwl3160-firmware", "iwl5000-firmware",
|
|
Packit Service |
509fd4 |
"iwl5150-firmware", "iwl6000-firmware", "iwl6050-firmware", "iwl7260-firmware",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
excludedPackages: []string{
|
|
Packit Service |
509fd4 |
"rng-tools",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
enabledServices: []string{
|
|
Packit Service |
509fd4 |
"NetworkManager.service", "firewalld.service", "sshd.service",
|
|
Packit Service |
509fd4 |
"greenboot-grub2-set-counter", "greenboot-grub2-set-success", "greenboot-healthcheck",
|
|
Packit Service |
509fd4 |
"greenboot-rpm-ostree-grub2-check-fallback", "greenboot-status", "greenboot-task-runner",
|
|
Packit Service |
509fd4 |
"redboot-auto-reboot", "redboot-task-runner",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
rpmOstree: true,
|
|
Packit Service |
509fd4 |
assembler: func(pt *disk.PartitionTable, options distro.ImageOptions, arch distro.Arch) *osbuild.Assembler {
|
|
Packit Service |
509fd4 |
return ostreeCommitAssembler(options, arch)
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
edgeImgTypeAarch64 := imageType{
|
|
Packit Service |
509fd4 |
name: "rhel-edge-commit",
|
|
Packit Service |
509fd4 |
filename: "commit.tar",
|
|
Packit Service |
509fd4 |
mimeType: "application/x-tar",
|
|
Packit Service |
509fd4 |
packages: []string{
|
|
Packit Service |
509fd4 |
"redhat-release", // TODO: is this correct for Edge?
|
|
Packit Service |
509fd4 |
"glibc", "glibc-minimal-langpack", "nss-altfiles",
|
|
Packit Service |
509fd4 |
"dracut-config-generic", "dracut-network",
|
|
Packit Service |
509fd4 |
"basesystem", "bash", "platform-python",
|
|
Packit Service |
509fd4 |
"shadow-utils", "chrony", "setup", "shadow-utils",
|
|
Packit Service |
509fd4 |
"sudo", "systemd", "coreutils", "util-linux",
|
|
Packit Service |
509fd4 |
"curl", "vim-minimal",
|
|
Packit Service |
509fd4 |
"rpm", "rpm-ostree", "polkit",
|
|
Packit Service |
509fd4 |
"lvm2", "cryptsetup", "pinentry",
|
|
Packit Service |
509fd4 |
"e2fsprogs", "dosfstools",
|
|
Packit Service |
509fd4 |
"keyutils", "gnupg2",
|
|
Packit Service |
509fd4 |
"attr", "xz", "gzip",
|
|
Packit Service |
509fd4 |
"firewalld", "iptables",
|
|
Packit Service |
509fd4 |
"NetworkManager", "NetworkManager-wifi", "NetworkManager-wwan",
|
|
Packit Service |
509fd4 |
"wpa_supplicant",
|
|
Packit Service |
509fd4 |
"dnsmasq", "traceroute",
|
|
Packit Service |
509fd4 |
"hostname", "iproute", "iputils",
|
|
Packit Service |
509fd4 |
"openssh-clients", "procps-ng", "rootfiles",
|
|
Packit Service |
509fd4 |
"openssh-server", "passwd",
|
|
Packit Service |
509fd4 |
"policycoreutils", "policycoreutils-python-utils",
|
|
Packit Service |
509fd4 |
"selinux-policy-targeted", "setools-console",
|
|
Packit Service |
509fd4 |
"less", "tar", "rsync",
|
|
Packit Service |
509fd4 |
"fwupd", "usbguard",
|
|
Packit Service |
509fd4 |
"bash-completion", "tmux",
|
|
Packit Service |
509fd4 |
"ima-evm-utils",
|
|
Packit Service |
509fd4 |
"audit",
|
|
Packit Service |
509fd4 |
"podman", "container-selinux", "skopeo", "criu",
|
|
Packit Service |
509fd4 |
"slirp4netns", "fuse-overlayfs",
|
|
Packit Service |
509fd4 |
"clevis", "clevis-dracut", "clevis-luks",
|
|
Packit Service |
509fd4 |
"greenboot", "greenboot-grub2", "greenboot-rpm-ostree-grub2", "greenboot-reboot", "greenboot-status",
|
|
Packit Service |
509fd4 |
// aarch64 specific
|
|
Packit Service |
509fd4 |
"grub2-efi-aa64", "efibootmgr", "shim-aa64",
|
|
Packit Service |
509fd4 |
"iwl7260-firmware",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
excludedPackages: []string{
|
|
Packit Service |
509fd4 |
"rng-tools",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
enabledServices: []string{
|
|
Packit Service |
509fd4 |
"NetworkManager.service", "firewalld.service", "sshd.service",
|
|
Packit Service |
509fd4 |
"greenboot-grub2-set-counter", "greenboot-grub2-set-success", "greenboot-healthcheck",
|
|
Packit Service |
509fd4 |
"greenboot-rpm-ostree-grub2-check-fallback", "greenboot-status", "greenboot-task-runner",
|
|
Packit Service |
509fd4 |
"redboot-auto-reboot", "redboot-task-runner",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
rpmOstree: true,
|
|
Packit Service |
509fd4 |
assembler: func(pt *disk.PartitionTable, options distro.ImageOptions, arch distro.Arch) *osbuild.Assembler {
|
|
Packit Service |
509fd4 |
return ostreeCommitAssembler(options, arch)
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
amiImgType := imageType{
|
|
Packit Service |
509fd4 |
name: "ami",
|
|
Packit Service |
509fd4 |
filename: "image.raw",
|
|
Packit Service |
509fd4 |
mimeType: "application/octet-stream",
|
|
Packit Service |
509fd4 |
packages: []string{
|
|
Packit Service |
509fd4 |
"checkpolicy",
|
|
Packit Service |
509fd4 |
"chrony",
|
|
Packit Service |
509fd4 |
"cloud-init",
|
|
Packit Service |
509fd4 |
"cloud-init",
|
|
Packit Service |
509fd4 |
"cloud-utils-growpart",
|
|
Packit Service |
509fd4 |
"@core",
|
|
Packit Service |
509fd4 |
"dhcp-client",
|
|
Packit Service |
509fd4 |
"gdisk",
|
|
Packit Service |
509fd4 |
"insights-client",
|
|
Packit Service |
509fd4 |
"langpacks-en",
|
|
Packit Service |
509fd4 |
"net-tools",
|
|
Packit Service |
509fd4 |
"NetworkManager",
|
|
Packit Service |
509fd4 |
"redhat-release",
|
|
Packit Service |
509fd4 |
"redhat-release-eula",
|
|
Packit Service |
509fd4 |
"rsync",
|
|
Packit Service |
509fd4 |
"selinux-policy-targeted",
|
|
Packit Service |
509fd4 |
"tar",
|
|
Packit Service |
509fd4 |
"yum-utils",
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
// TODO this doesn't exist in BaseOS or AppStream
|
|
Packit Service |
509fd4 |
// "rh-amazon-rhui-client",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
excludedPackages: []string{
|
|
Packit Service |
509fd4 |
"aic94xx-firmware",
|
|
Packit Service |
509fd4 |
"alsa-firmware",
|
|
Packit Service |
509fd4 |
"alsa-lib",
|
|
Packit Service |
509fd4 |
"alsa-tools-firmware",
|
|
Packit Service |
509fd4 |
"biosdevname",
|
|
Packit Service |
509fd4 |
"dracut-config-rescue",
|
|
Packit Service |
509fd4 |
"firewalld",
|
|
Packit Service |
509fd4 |
"iprutils",
|
|
Packit Service |
509fd4 |
"ivtv-firmware",
|
|
Packit Service |
509fd4 |
"iwl1000-firmware",
|
|
Packit Service |
509fd4 |
"iwl100-firmware",
|
|
Packit Service |
509fd4 |
"iwl105-firmware",
|
|
Packit Service |
509fd4 |
"iwl135-firmware",
|
|
Packit Service |
509fd4 |
"iwl2000-firmware",
|
|
Packit Service |
509fd4 |
"iwl2030-firmware",
|
|
Packit Service |
509fd4 |
"iwl3160-firmware",
|
|
Packit Service |
509fd4 |
"iwl3945-firmware",
|
|
Packit Service |
509fd4 |
"iwl4965-firmware",
|
|
Packit Service |
509fd4 |
"iwl5000-firmware",
|
|
Packit Service |
509fd4 |
"iwl5150-firmware",
|
|
Packit Service |
509fd4 |
"iwl6000-firmware",
|
|
Packit Service |
509fd4 |
"iwl6000g2a-firmware",
|
|
Packit Service |
509fd4 |
"iwl6000g2b-firmware",
|
|
Packit Service |
509fd4 |
"iwl6050-firmware",
|
|
Packit Service |
509fd4 |
"iwl7260-firmware",
|
|
Packit Service |
509fd4 |
"libertas-sd8686-firmware",
|
|
Packit Service |
509fd4 |
"libertas-sd8787-firmware",
|
|
Packit Service |
509fd4 |
"libertas-usb8388-firmware",
|
|
Packit Service |
509fd4 |
"plymouth",
|
|
Packit Service |
509fd4 |
"rng-tools",
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
// TODO this cannot be removed, because the kernel (?)
|
|
Packit Service |
509fd4 |
// depends on it. The ec2 kickstart force-removes it.
|
|
Packit Service |
509fd4 |
// "linux-firmware",
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
// TODO setfiles failes because of usr/sbin/timedatex. Exlude until
|
|
Packit Service |
509fd4 |
// https://errata.devel.redhat.com/advisory/47339 lands
|
|
Packit Service |
509fd4 |
"timedatex",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
defaultTarget: "multi-user.target",
|
|
Packit Service |
509fd4 |
kernelOptions: "console=ttyS0,115200n8 console=tty0 net.ifnames=0 rd.blacklist=nouveau nvme_core.io_timeout=4294967295 crashkernel=auto",
|
|
Packit Service |
509fd4 |
bootable: true,
|
|
Packit Service |
509fd4 |
defaultSize: 6 * GigaByte,
|
|
Packit Service |
509fd4 |
partitionTableGenerator: defaultPartitionTable,
|
|
Packit Service |
509fd4 |
assembler: func(pt *disk.PartitionTable, options distro.ImageOptions, arch distro.Arch) *osbuild.Assembler {
|
|
Packit Service |
509fd4 |
return qemuAssembler(pt, "raw", "image.raw", options, arch)
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
qcow2ImageType := imageType{
|
|
Packit Service |
509fd4 |
name: "qcow2",
|
|
Packit Service |
509fd4 |
filename: "disk.qcow2",
|
|
Packit Service |
509fd4 |
mimeType: "application/x-qemu-disk",
|
|
Packit Service |
509fd4 |
packages: []string{
|
|
Packit Service |
509fd4 |
"@core",
|
|
Packit Service |
3a6627 |
"authselect-compat",
|
|
Packit Service |
509fd4 |
"chrony",
|
|
Packit Service |
3a6627 |
"cloud-init",
|
|
Packit Service |
3a6627 |
"cloud-utils-growpart",
|
|
Packit Service |
3a6627 |
"cockpit-system",
|
|
Packit Service |
3a6627 |
"cockpit-ws",
|
|
Packit Service |
3a6627 |
"dhcp-client",
|
|
Packit Service |
509fd4 |
"dnf",
|
|
Packit Service |
3a6627 |
"dnf-utils",
|
|
Packit Service |
509fd4 |
"dosfstools",
|
|
Packit Service |
3a6627 |
"dracut-norescue",
|
|
Packit Service |
3a6627 |
"insights-client",
|
|
Packit Service |
3a6627 |
"NetworkManager",
|
|
Packit Service |
509fd4 |
"nfs-utils",
|
|
Packit Service |
3a6627 |
"oddjob",
|
|
Packit Service |
3a6627 |
"oddjob-mkhomedir",
|
|
Packit Service |
3a6627 |
"psmisc",
|
|
Packit Service |
509fd4 |
"python3-jsonschema",
|
|
Packit Service |
509fd4 |
"qemu-guest-agent",
|
|
Packit Service |
509fd4 |
"redhat-release",
|
|
Packit Service |
509fd4 |
"redhat-release-eula",
|
|
Packit Service |
3a6627 |
"rsync",
|
|
Packit Service |
3a6627 |
"subscription-manager-cockpit",
|
|
Packit Service |
3a6627 |
"tar",
|
|
Packit Service |
3a6627 |
"tcpdump",
|
|
Packit Service |
3a6627 |
"yum",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
excludedPackages: []string{
|
|
Packit Service |
509fd4 |
"aic94xx-firmware",
|
|
Packit Service |
509fd4 |
"alsa-firmware",
|
|
Packit Service |
509fd4 |
"alsa-lib",
|
|
Packit Service |
509fd4 |
"alsa-tools-firmware",
|
|
Packit Service |
3a6627 |
"biosdevname",
|
|
Packit Service |
3a6627 |
"dnf-plugin-spacewalk",
|
|
Packit Service |
3a6627 |
"dracut-config-rescue",
|
|
Packit Service |
3a6627 |
"fedora-release",
|
|
Packit Service |
3a6627 |
"fedora-repos",
|
|
Packit Service |
509fd4 |
"firewalld",
|
|
Packit Service |
3a6627 |
"fwupd",
|
|
Packit Service |
3a6627 |
"iprutils",
|
|
Packit Service |
509fd4 |
"ivtv-firmware",
|
|
Packit Service |
509fd4 |
"iwl100-firmware",
|
|
Packit Service |
3a6627 |
"iwl1000-firmware",
|
|
Packit Service |
509fd4 |
"iwl105-firmware",
|
|
Packit Service |
509fd4 |
"iwl135-firmware",
|
|
Packit Service |
509fd4 |
"iwl2000-firmware",
|
|
Packit Service |
509fd4 |
"iwl2030-firmware",
|
|
Packit Service |
509fd4 |
"iwl3160-firmware",
|
|
Packit Service |
509fd4 |
"iwl3945-firmware",
|
|
Packit Service |
509fd4 |
"iwl4965-firmware",
|
|
Packit Service |
509fd4 |
"iwl5000-firmware",
|
|
Packit Service |
509fd4 |
"iwl5150-firmware",
|
|
Packit Service |
509fd4 |
"iwl6000-firmware",
|
|
Packit Service |
509fd4 |
"iwl6000g2a-firmware",
|
|
Packit Service |
509fd4 |
"iwl6000g2b-firmware",
|
|
Packit Service |
509fd4 |
"iwl6050-firmware",
|
|
Packit Service |
509fd4 |
"iwl7260-firmware",
|
|
Packit Service |
3a6627 |
"langpacks-*",
|
|
Packit Service |
3a6627 |
"langpacks-en",
|
|
Packit Service |
3a6627 |
"langpacks-en",
|
|
Packit Service |
509fd4 |
"libertas-sd8686-firmware",
|
|
Packit Service |
509fd4 |
"libertas-sd8787-firmware",
|
|
Packit Service |
509fd4 |
"libertas-usb8388-firmware",
|
|
Packit Service |
3a6627 |
"nss",
|
|
Packit Service |
509fd4 |
"plymouth",
|
|
Packit Service |
509fd4 |
"rng-tools",
|
|
Packit Service |
3a6627 |
"udisks2",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
3a6627 |
defaultTarget: "multi-user.target",
|
|
Packit Service |
509fd4 |
kernelOptions: "console=tty0 console=ttyS0,115200n8 no_timer_check net.ifnames=0 crashkernel=auto",
|
|
Packit Service |
509fd4 |
bootable: true,
|
|
Packit Service |
509fd4 |
defaultSize: 10 * GigaByte,
|
|
Packit Service |
509fd4 |
partitionTableGenerator: defaultPartitionTable,
|
|
Packit Service |
509fd4 |
assembler: func(pt *disk.PartitionTable, options distro.ImageOptions, arch distro.Arch) *osbuild.Assembler {
|
|
Packit Service |
509fd4 |
return qemuAssembler(pt, "qcow2", "disk.qcow2", options, arch)
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
openstackImgType := imageType{
|
|
Packit Service |
509fd4 |
name: "openstack",
|
|
Packit Service |
509fd4 |
filename: "disk.qcow2",
|
|
Packit Service |
509fd4 |
mimeType: "application/x-qemu-disk",
|
|
Packit Service |
509fd4 |
packages: []string{
|
|
Packit Service |
509fd4 |
// Defaults
|
|
Packit Service |
509fd4 |
"@Core",
|
|
Packit Service |
509fd4 |
"langpacks-en",
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
// From the lorax kickstart
|
|
Packit Service |
509fd4 |
"selinux-policy-targeted",
|
|
Packit Service |
509fd4 |
"cloud-init",
|
|
Packit Service |
509fd4 |
"qemu-guest-agent",
|
|
Packit Service |
509fd4 |
"spice-vdagent",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
excludedPackages: []string{
|
|
Packit Service |
509fd4 |
"dracut-config-rescue",
|
|
Packit Service |
509fd4 |
"rng-tools",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
kernelOptions: "ro net.ifnames=0",
|
|
Packit Service |
509fd4 |
bootable: true,
|
|
Packit Service |
509fd4 |
defaultSize: 4 * GigaByte,
|
|
Packit Service |
509fd4 |
partitionTableGenerator: defaultPartitionTable,
|
|
Packit Service |
509fd4 |
assembler: func(pt *disk.PartitionTable, options distro.ImageOptions, arch distro.Arch) *osbuild.Assembler {
|
|
Packit Service |
509fd4 |
return qemuAssembler(pt, "qcow2", "disk.qcow2", options, arch)
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
tarImgType := imageType{
|
|
Packit Service |
509fd4 |
name: "tar",
|
|
Packit Service |
509fd4 |
filename: "root.tar.xz",
|
|
Packit Service |
509fd4 |
mimeType: "application/x-tar",
|
|
Packit Service |
509fd4 |
packages: []string{
|
|
Packit Service |
509fd4 |
"policycoreutils",
|
|
Packit Service |
509fd4 |
"selinux-policy-targeted",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
excludedPackages: []string{
|
|
Packit Service |
509fd4 |
"rng-tools",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
bootable: false,
|
|
Packit Service |
509fd4 |
kernelOptions: "ro net.ifnames=0",
|
|
Packit Service |
509fd4 |
assembler: func(pt *disk.PartitionTable, options distro.ImageOptions, arch distro.Arch) *osbuild.Assembler {
|
|
Packit Service |
509fd4 |
return tarAssembler("root.tar.xz", "xz")
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
vhdImgType := imageType{
|
|
Packit Service |
509fd4 |
name: "vhd",
|
|
Packit Service |
509fd4 |
filename: "disk.vhd",
|
|
Packit Service |
509fd4 |
mimeType: "application/x-vhd",
|
|
Packit Service |
509fd4 |
packages: []string{
|
|
Packit Service |
509fd4 |
// Defaults
|
|
Packit Service |
509fd4 |
"@Core",
|
|
Packit Service |
509fd4 |
"langpacks-en",
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
// From the lorax kickstart
|
|
Packit Service |
509fd4 |
"selinux-policy-targeted",
|
|
Packit Service |
509fd4 |
"chrony",
|
|
Packit Service |
509fd4 |
"WALinuxAgent",
|
|
Packit Service |
509fd4 |
"python3",
|
|
Packit Service |
509fd4 |
"net-tools",
|
|
Packit Service |
509fd4 |
"cloud-init",
|
|
Packit Service |
509fd4 |
"cloud-utils-growpart",
|
|
Packit Service |
509fd4 |
"gdisk",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
excludedPackages: []string{
|
|
Packit Service |
509fd4 |
"dracut-config-rescue",
|
|
Packit Service |
509fd4 |
"rng-tools",
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
// TODO setfiles failes because of usr/sbin/timedatex. Exlude until
|
|
Packit Service |
509fd4 |
// https://errata.devel.redhat.com/advisory/47339 lands
|
|
Packit Service |
509fd4 |
"timedatex",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
enabledServices: []string{
|
|
Packit Service |
509fd4 |
"sshd",
|
|
Packit Service |
509fd4 |
"waagent",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
defaultTarget: "multi-user.target",
|
|
Packit Service |
509fd4 |
kernelOptions: "ro biosdevname=0 rootdelay=300 console=ttyS0 earlyprintk=ttyS0 net.ifnames=0",
|
|
Packit Service |
509fd4 |
bootable: true,
|
|
Packit Service |
509fd4 |
defaultSize: 4 * GigaByte,
|
|
Packit Service |
509fd4 |
partitionTableGenerator: defaultPartitionTable,
|
|
Packit Service |
509fd4 |
assembler: func(pt *disk.PartitionTable, options distro.ImageOptions, arch distro.Arch) *osbuild.Assembler {
|
|
Packit Service |
509fd4 |
return qemuAssembler(pt, "vpc", "disk.vhd", options, arch)
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
vmdkImgType := imageType{
|
|
Packit Service |
509fd4 |
name: "vmdk",
|
|
Packit Service |
509fd4 |
filename: "disk.vmdk",
|
|
Packit Service |
509fd4 |
mimeType: "application/x-vmdk",
|
|
Packit Service |
509fd4 |
packages: []string{
|
|
Packit Service |
509fd4 |
"@core",
|
|
Packit Service |
509fd4 |
"chrony",
|
|
Packit Service |
509fd4 |
"firewalld",
|
|
Packit Service |
509fd4 |
"langpacks-en",
|
|
Packit Service |
509fd4 |
"open-vm-tools",
|
|
Packit Service |
509fd4 |
"selinux-policy-targeted",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
excludedPackages: []string{
|
|
Packit Service |
509fd4 |
"dracut-config-rescue",
|
|
Packit Service |
509fd4 |
"rng-tools",
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
// TODO setfiles failes because of usr/sbin/timedatex. Exlude until
|
|
Packit Service |
509fd4 |
// https://errata.devel.redhat.com/advisory/47339 lands
|
|
Packit Service |
509fd4 |
"timedatex",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
kernelOptions: "ro net.ifnames=0",
|
|
Packit Service |
509fd4 |
bootable: true,
|
|
Packit Service |
509fd4 |
defaultSize: 4 * GigaByte,
|
|
Packit Service |
509fd4 |
partitionTableGenerator: defaultPartitionTable,
|
|
Packit Service |
509fd4 |
assembler: func(pt *disk.PartitionTable, options distro.ImageOptions, arch distro.Arch) *osbuild.Assembler {
|
|
Packit Service |
509fd4 |
return qemuAssembler(pt, "vmdk", "disk.vmdk", options, arch)
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
r := distribution{
|
|
Packit Service |
15f37d |
imageTypes: map[string]distro.ImageType{},
|
|
Packit Service |
509fd4 |
buildPackages: []string{
|
|
Packit Service |
509fd4 |
"dnf",
|
|
Packit Service |
509fd4 |
"dosfstools",
|
|
Packit Service |
509fd4 |
"e2fsprogs",
|
|
Packit Service |
509fd4 |
"glibc",
|
|
Packit Service |
509fd4 |
"policycoreutils",
|
|
Packit Service |
509fd4 |
"python36",
|
|
Packit Service |
bcdfb1 |
"python3-iniparse", // dependency of org.osbuild.rhsm stage
|
|
Packit Service |
509fd4 |
"qemu-img",
|
|
Packit Service |
509fd4 |
"selinux-policy-targeted",
|
|
Packit Service |
509fd4 |
"systemd",
|
|
Packit Service |
509fd4 |
"tar",
|
|
Packit Service |
509fd4 |
"xfsprogs",
|
|
Packit Service |
509fd4 |
"xz",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
bcdfb1 |
isCentos: isCentos,
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
509fd4 |
x8664 := architecture{
|
|
Packit Service |
509fd4 |
distro: &r,
|
|
Packit Service |
509fd4 |
name: "x86_64",
|
|
Packit Service |
509fd4 |
bootloaderPackages: []string{
|
|
Packit Service |
509fd4 |
"dracut-config-generic",
|
|
Packit Service |
509fd4 |
"grub2-pc",
|
|
Packit Service |
509fd4 |
"grub2-efi-x64",
|
|
Packit Service |
509fd4 |
"shim-x64",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
buildPackages: []string{
|
|
Packit Service |
509fd4 |
"grub2-pc",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
legacy: "i386-pc",
|
|
Packit Service |
509fd4 |
uefi: true,
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
15f37d |
|
|
Packit Service |
15f37d |
edgeOCIImgTypeX86_64 := imageTypeS2{
|
|
Packit Service |
15f37d |
name: "rhel-edge-container",
|
|
Packit Service |
15f37d |
filename: "rhel84-container.tar",
|
|
Packit Service |
15f37d |
mimeType: "application/x-tar",
|
|
Packit Service |
15f37d |
packageSets: map[string]rpmmd.PackageSet{
|
|
Packit Service |
15f37d |
"packages": {
|
|
Packit Service |
15f37d |
Include: edgeImgTypeX86_64.packages,
|
|
Packit Service |
15f37d |
Exclude: edgeImgTypeX86_64.excludedPackages,
|
|
Packit Service |
15f37d |
},
|
|
Packit Service |
15f37d |
"container": {Include: []string{"httpd"}},
|
|
Packit Service |
15f37d |
},
|
|
Packit Service |
15f37d |
enabledServices: edgeImgTypeX86_64.enabledServices,
|
|
Packit Service |
15f37d |
rpmOstree: true,
|
|
Packit Service |
15f37d |
bootISO: false,
|
|
Packit Service |
15f37d |
}
|
|
Packit Service |
15f37d |
|
|
Packit Service |
15f37d |
edgeBuildPkgs := []string{
|
|
Packit Service |
15f37d |
"dnf",
|
|
Packit Service |
15f37d |
"dosfstools",
|
|
Packit Service |
15f37d |
"e2fsprogs",
|
|
Packit Service |
15f37d |
"grub2-pc",
|
|
Packit Service |
15f37d |
"policycoreutils",
|
|
Packit Service |
15f37d |
"python36",
|
|
Packit Service |
15f37d |
"python3-iniparse",
|
|
Packit Service |
15f37d |
"qemu-img",
|
|
Packit Service |
15f37d |
"rpm-ostree",
|
|
Packit Service |
15f37d |
"systemd",
|
|
Packit Service |
15f37d |
"tar",
|
|
Packit Service |
15f37d |
"xfsprogs",
|
|
Packit Service |
15f37d |
"xz",
|
|
Packit Service |
15f37d |
"selinux-policy-targeted",
|
|
Packit Service |
15f37d |
"genisoimage",
|
|
Packit Service |
15f37d |
"isomd5sum",
|
|
Packit Service |
15f37d |
"xorriso",
|
|
Packit Service |
15f37d |
"syslinux",
|
|
Packit Service |
15f37d |
"lorax-templates-generic",
|
|
Packit Service |
15f37d |
"lorax-templates-rhel",
|
|
Packit Service |
15f37d |
"syslinux-nonlinux",
|
|
Packit Service |
15f37d |
"squashfs-tools",
|
|
Packit Service |
15f37d |
"grub2-pc-modules",
|
|
Packit Service |
15f37d |
"grub2-tools",
|
|
Packit Service |
15f37d |
"grub2-efi-x64",
|
|
Packit Service |
15f37d |
"shim-x64",
|
|
Packit Service |
15f37d |
"efibootmgr",
|
|
Packit Service |
15f37d |
"grub2-tools-minimal",
|
|
Packit Service |
15f37d |
"grub2-tools-extra",
|
|
Packit Service |
15f37d |
"grub2-tools-efi",
|
|
Packit Service |
15f37d |
"grub2-efi-x64",
|
|
Packit Service |
15f37d |
"grub2-efi-x64-cdboot",
|
|
Packit Service |
15f37d |
"shim-ia32",
|
|
Packit Service |
15f37d |
"grub2-efi-ia32-cdboot",
|
|
Packit Service |
15f37d |
}
|
|
Packit Service |
15f37d |
|
|
Packit Service |
15f37d |
edgeInstallerPkgs := []string{
|
|
Packit Service |
15f37d |
"anaconda",
|
|
Packit Service |
15f37d |
"anaconda-widgets",
|
|
Packit Service |
15f37d |
"kdump-anaconda-addon",
|
|
Packit Service |
15f37d |
"anaconda-install-env-deps",
|
|
Packit Service |
15f37d |
"oscap-anaconda-addon",
|
|
Packit Service |
15f37d |
"redhat-release-eula",
|
|
Packit Service |
15f37d |
"dnf",
|
|
Packit Service |
15f37d |
"rpm-ostree",
|
|
Packit Service |
15f37d |
"ostree",
|
|
Packit Service |
15f37d |
"ostree",
|
|
Packit Service |
15f37d |
"pigz",
|
|
Packit Service |
15f37d |
"kernel",
|
|
Packit Service |
15f37d |
"kernel-modules",
|
|
Packit Service |
15f37d |
"kernel-modules-extra",
|
|
Packit Service |
15f37d |
"grubby",
|
|
Packit Service |
15f37d |
"iwl100-firmware",
|
|
Packit Service |
15f37d |
"iwl1000-firmware",
|
|
Packit Service |
15f37d |
"iwl105-firmware",
|
|
Packit Service |
15f37d |
"iwl135-firmware",
|
|
Packit Service |
15f37d |
"iwl2000-firmware",
|
|
Packit Service |
15f37d |
"iwl2030-firmware",
|
|
Packit Service |
15f37d |
"iwl3160-firmware",
|
|
Packit Service |
15f37d |
"iwl3945-firmware",
|
|
Packit Service |
15f37d |
"iwl4965-firmware",
|
|
Packit Service |
15f37d |
"iwl5000-firmware",
|
|
Packit Service |
15f37d |
"iwl5150-firmware",
|
|
Packit Service |
15f37d |
"iwl6000-firmware",
|
|
Packit Service |
15f37d |
"iwl6000g2a-firmware",
|
|
Packit Service |
15f37d |
"iwl6000g2b-firmware",
|
|
Packit Service |
15f37d |
"iwl6050-firmware",
|
|
Packit Service |
15f37d |
"iwl7260-firmware",
|
|
Packit Service |
15f37d |
"libertas-sd8686-firmware",
|
|
Packit Service |
15f37d |
"libertas-sd8787-firmware",
|
|
Packit Service |
15f37d |
"libertas-usb8388-firmware",
|
|
Packit Service |
15f37d |
"libertas-usb8388-olpc-firmware",
|
|
Packit Service |
15f37d |
"linux-firmware",
|
|
Packit Service |
15f37d |
"alsa-firmware",
|
|
Packit Service |
15f37d |
"alsa-tools-firmware",
|
|
Packit Service |
15f37d |
"glibc-all-langpacks",
|
|
Packit Service |
15f37d |
"grub2-tools-efi",
|
|
Packit Service |
15f37d |
"efibootmgr",
|
|
Packit Service |
15f37d |
"shim-x64",
|
|
Packit Service |
15f37d |
"grub2-efi-x64-cdboot",
|
|
Packit Service |
15f37d |
"shim-ia32",
|
|
Packit Service |
15f37d |
"grub2-efi-ia32-cdboot",
|
|
Packit Service |
15f37d |
"biosdevname",
|
|
Packit Service |
15f37d |
"memtest86+",
|
|
Packit Service |
15f37d |
"syslinux",
|
|
Packit Service |
15f37d |
"grub2-tools",
|
|
Packit Service |
15f37d |
"grub2-tools-minimal",
|
|
Packit Service |
15f37d |
"grub2-tools-extra",
|
|
Packit Service |
15f37d |
"plymouth",
|
|
Packit Service |
15f37d |
"anaconda-dracut",
|
|
Packit Service |
15f37d |
"dracut-network",
|
|
Packit Service |
15f37d |
"dracut-config-generic",
|
|
Packit Service |
15f37d |
"initscripts",
|
|
Packit Service |
15f37d |
"cryptsetup",
|
|
Packit Service |
15f37d |
"rpcbind",
|
|
Packit Service |
15f37d |
"kbd",
|
|
Packit Service |
15f37d |
"kbd-misc",
|
|
Packit Service |
15f37d |
"tar",
|
|
Packit Service |
15f37d |
"xz",
|
|
Packit Service |
15f37d |
"curl",
|
|
Packit Service |
15f37d |
"bzip2",
|
|
Packit Service |
15f37d |
"systemd",
|
|
Packit Service |
15f37d |
"systemd",
|
|
Packit Service |
15f37d |
"rsyslog",
|
|
Packit Service |
15f37d |
"xorg-x11-drivers",
|
|
Packit Service |
15f37d |
"xorg-x11-server-Xorg",
|
|
Packit Service |
15f37d |
"xorg-x11-server-utils",
|
|
Packit Service |
15f37d |
"xorg-x11-xauth",
|
|
Packit Service |
15f37d |
"dbus-x11",
|
|
Packit Service |
15f37d |
"metacity",
|
|
Packit Service |
15f37d |
"metacity",
|
|
Packit Service |
15f37d |
"gsettings-desktop-schemas",
|
|
Packit Service |
15f37d |
"gsettings-desktop-schemas",
|
|
Packit Service |
15f37d |
"nm-connection-editor",
|
|
Packit Service |
15f37d |
"librsvg2",
|
|
Packit Service |
15f37d |
"librsvg2",
|
|
Packit Service |
15f37d |
"xfsprogs",
|
|
Packit Service |
15f37d |
"xfsprogs",
|
|
Packit Service |
15f37d |
"gfs2-utils",
|
|
Packit Service |
15f37d |
"system-storage-manager",
|
|
Packit Service |
15f37d |
"device-mapper-persistent-data",
|
|
Packit Service |
15f37d |
"xfsdump",
|
|
Packit Service |
15f37d |
"udisks2",
|
|
Packit Service |
15f37d |
"udisks2-iscsi",
|
|
Packit Service |
15f37d |
"hostname",
|
|
Packit Service |
15f37d |
"libblockdev-lvm-dbus",
|
|
Packit Service |
15f37d |
"libblockdev-lvm-dbus",
|
|
Packit Service |
15f37d |
"volume_key",
|
|
Packit Service |
15f37d |
"nss-tools",
|
|
Packit Service |
15f37d |
"selinux-policy-targeted",
|
|
Packit Service |
15f37d |
"audit",
|
|
Packit Service |
15f37d |
"ethtool",
|
|
Packit Service |
15f37d |
"openssh-server",
|
|
Packit Service |
15f37d |
"nfs-utils",
|
|
Packit Service |
15f37d |
"openssh-clients",
|
|
Packit Service |
15f37d |
"tigervnc-server-minimal",
|
|
Packit Service |
15f37d |
"tigervnc-server-module",
|
|
Packit Service |
15f37d |
"net-tools",
|
|
Packit Service |
15f37d |
"nmap-ncat",
|
|
Packit Service |
15f37d |
"prefixdevname",
|
|
Packit Service |
15f37d |
"pciutils",
|
|
Packit Service |
15f37d |
"usbutils",
|
|
Packit Service |
15f37d |
"ipmitool",
|
|
Packit Service |
15f37d |
"mt-st",
|
|
Packit Service |
15f37d |
"smartmontools",
|
|
Packit Service |
15f37d |
"hdparm",
|
|
Packit Service |
15f37d |
"libibverbs",
|
|
Packit Service |
15f37d |
"libibverbs",
|
|
Packit Service |
15f37d |
"rdma-core",
|
|
Packit Service |
15f37d |
"rdma-core",
|
|
Packit Service |
15f37d |
"rng-tools",
|
|
Packit Service |
15f37d |
"dmidecode",
|
|
Packit Service |
15f37d |
"bitmap-fangsongti-fonts",
|
|
Packit Service |
15f37d |
"dejavu-sans-fonts",
|
|
Packit Service |
15f37d |
"dejavu-sans-mono-fonts",
|
|
Packit Service |
15f37d |
"kacst-farsi-fonts",
|
|
Packit Service |
15f37d |
"kacst-qurn-fonts",
|
|
Packit Service |
15f37d |
"lklug-fonts",
|
|
Packit Service |
15f37d |
"lohit-assamese-fonts",
|
|
Packit Service |
15f37d |
"lohit-bengali-fonts",
|
|
Packit Service |
15f37d |
"lohit-devanagari-fonts",
|
|
Packit Service |
15f37d |
"lohit-gujarati-fonts",
|
|
Packit Service |
15f37d |
"lohit-gurmukhi-fonts",
|
|
Packit Service |
15f37d |
"lohit-kannada-fonts",
|
|
Packit Service |
15f37d |
"lohit-odia-fonts",
|
|
Packit Service |
15f37d |
"lohit-tamil-fonts",
|
|
Packit Service |
15f37d |
"lohit-telugu-fonts",
|
|
Packit Service |
15f37d |
"madan-fonts",
|
|
Packit Service |
15f37d |
"smc-meera-fonts",
|
|
Packit Service |
15f37d |
"thai-scalable-waree-fonts",
|
|
Packit Service |
15f37d |
"sil-abyssinica-fonts",
|
|
Packit Service |
15f37d |
"xorg-x11-fonts-misc",
|
|
Packit Service |
15f37d |
"aajohan-comfortaa-fonts",
|
|
Packit Service |
15f37d |
"abattis-cantarell-fonts",
|
|
Packit Service |
15f37d |
"sil-scheherazade-fonts",
|
|
Packit Service |
15f37d |
"jomolhari-fonts",
|
|
Packit Service |
15f37d |
"khmeros-base-fonts",
|
|
Packit Service |
15f37d |
"sil-padauk-fonts",
|
|
Packit Service |
15f37d |
"google-noto-sans-cjk-ttc-fonts",
|
|
Packit Service |
15f37d |
"gdb-gdbserver",
|
|
Packit Service |
15f37d |
"libreport-plugin-bugzilla",
|
|
Packit Service |
15f37d |
"libreport-plugin-reportuploader",
|
|
Packit Service |
15f37d |
"libreport-rhel-anaconda-bugzilla",
|
|
Packit Service |
15f37d |
"python3-pyatspi",
|
|
Packit Service |
15f37d |
"vim-minimal",
|
|
Packit Service |
15f37d |
"strace",
|
|
Packit Service |
15f37d |
"lsof",
|
|
Packit Service |
15f37d |
"dump",
|
|
Packit Service |
15f37d |
"xz",
|
|
Packit Service |
15f37d |
"less",
|
|
Packit Service |
15f37d |
"rsync",
|
|
Packit Service |
15f37d |
"bind-utils",
|
|
Packit Service |
15f37d |
"ftp",
|
|
Packit Service |
15f37d |
"mtr",
|
|
Packit Service |
15f37d |
"wget",
|
|
Packit Service |
15f37d |
"spice-vdagent",
|
|
Packit Service |
15f37d |
"gdisk",
|
|
Packit Service |
15f37d |
"hexedit",
|
|
Packit Service |
15f37d |
"sg3_utils",
|
|
Packit Service |
15f37d |
"perl-interpreter",
|
|
Packit Service |
15f37d |
}
|
|
Packit Service |
15f37d |
edgeInstImgTypeX86_64 := imageTypeS2{
|
|
Packit Service |
15f37d |
name: "rhel-edge-installer",
|
|
Packit Service |
15f37d |
filename: "rhel84-boot.iso",
|
|
Packit Service |
15f37d |
mimeType: "application/x-iso9660-image",
|
|
Packit Service |
15f37d |
packageSets: map[string]rpmmd.PackageSet{
|
|
Packit Service |
15f37d |
"build": {
|
|
Packit Service |
15f37d |
Include: edgeBuildPkgs,
|
|
Packit Service |
15f37d |
},
|
|
Packit Service |
15f37d |
"packages": {
|
|
Packit Service |
15f37d |
Include: edgeImgTypeX86_64.packages,
|
|
Packit Service |
15f37d |
Exclude: edgeImgTypeX86_64.excludedPackages,
|
|
Packit Service |
15f37d |
},
|
|
Packit Service |
15f37d |
"installer": {Include: edgeInstallerPkgs},
|
|
Packit Service |
15f37d |
},
|
|
Packit Service |
15f37d |
enabledServices: edgeImgTypeX86_64.enabledServices,
|
|
Packit Service |
15f37d |
rpmOstree: true,
|
|
Packit Service |
15f37d |
bootISO: true,
|
|
Packit Service |
15f37d |
}
|
|
Packit Service |
15f37d |
|
|
Packit Service |
15f37d |
edgeOCIImgTypeAarch64 := imageTypeS2{
|
|
Packit Service |
15f37d |
name: "rhel-edge-container",
|
|
Packit Service |
15f37d |
filename: "rhel84-container.tar",
|
|
Packit Service |
15f37d |
mimeType: "application/x-tar",
|
|
Packit Service |
15f37d |
packageSets: map[string]rpmmd.PackageSet{
|
|
Packit Service |
15f37d |
"packages": {
|
|
Packit Service |
15f37d |
Include: edgeImgTypeAarch64.packages,
|
|
Packit Service |
15f37d |
Exclude: edgeImgTypeAarch64.excludedPackages,
|
|
Packit Service |
15f37d |
},
|
|
Packit Service |
15f37d |
"container": {Include: []string{"httpd"}},
|
|
Packit Service |
15f37d |
},
|
|
Packit Service |
15f37d |
enabledServices: edgeImgTypeAarch64.enabledServices,
|
|
Packit Service |
15f37d |
rpmOstree: true,
|
|
Packit Service |
15f37d |
bootISO: false,
|
|
Packit Service |
15f37d |
}
|
|
Packit Service |
15f37d |
|
|
Packit Service |
bcdfb1 |
x8664.addImageTypes(
|
|
Packit Service |
509fd4 |
amiImgType,
|
|
Packit Service |
509fd4 |
qcow2ImageType,
|
|
Packit Service |
509fd4 |
openstackImgType,
|
|
Packit Service |
509fd4 |
tarImgType,
|
|
Packit Service |
509fd4 |
vhdImgType,
|
|
Packit Service |
509fd4 |
vmdkImgType,
|
|
Packit Service |
509fd4 |
)
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
bcdfb1 |
if !isCentos {
|
|
Packit Service |
bcdfb1 |
x8664.addImageTypes(edgeImgTypeX86_64)
|
|
Packit Service |
15f37d |
x8664.addS2ImageTypes(edgeOCIImgTypeX86_64, edgeInstImgTypeX86_64)
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
|
|
Packit Service |
509fd4 |
aarch64 := architecture{
|
|
Packit Service |
509fd4 |
distro: &r,
|
|
Packit Service |
509fd4 |
name: "aarch64",
|
|
Packit Service |
509fd4 |
bootloaderPackages: []string{
|
|
Packit Service |
509fd4 |
"dracut-config-generic",
|
|
Packit Service |
509fd4 |
"efibootmgr",
|
|
Packit Service |
509fd4 |
"grub2-efi-aa64",
|
|
Packit Service |
509fd4 |
"grub2-tools",
|
|
Packit Service |
509fd4 |
"shim-aa64",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
uefi: true,
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
bcdfb1 |
aarch64.addImageTypes(
|
|
Packit Service |
509fd4 |
amiImgType,
|
|
Packit Service |
509fd4 |
qcow2ImageType,
|
|
Packit Service |
509fd4 |
openstackImgType,
|
|
Packit Service |
509fd4 |
tarImgType,
|
|
Packit Service |
509fd4 |
)
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
bcdfb1 |
if !isCentos {
|
|
Packit Service |
bcdfb1 |
aarch64.addImageTypes(edgeImgTypeAarch64)
|
|
Packit Service |
15f37d |
aarch64.addS2ImageTypes(edgeOCIImgTypeAarch64)
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
bcdfb1 |
|
|
Packit Service |
509fd4 |
ppc64le := architecture{
|
|
Packit Service |
509fd4 |
distro: &r,
|
|
Packit Service |
509fd4 |
name: "ppc64le",
|
|
Packit Service |
509fd4 |
bootloaderPackages: []string{
|
|
Packit Service |
509fd4 |
"dracut-config-generic",
|
|
Packit Service |
509fd4 |
"powerpc-utils",
|
|
Packit Service |
509fd4 |
"grub2-ppc64le",
|
|
Packit Service |
509fd4 |
"grub2-ppc64le-modules",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
buildPackages: []string{
|
|
Packit Service |
509fd4 |
"grub2-ppc64le",
|
|
Packit Service |
509fd4 |
"grub2-ppc64le-modules",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
legacy: "powerpc-ieee1275",
|
|
Packit Service |
509fd4 |
uefi: false,
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
bcdfb1 |
ppc64le.addImageTypes(
|
|
Packit Service |
509fd4 |
qcow2ImageType,
|
|
Packit Service |
509fd4 |
tarImgType,
|
|
Packit Service |
509fd4 |
)
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
s390x := architecture{
|
|
Packit Service |
509fd4 |
distro: &r,
|
|
Packit Service |
509fd4 |
name: "s390x",
|
|
Packit Service |
509fd4 |
bootloaderPackages: []string{
|
|
Packit Service |
509fd4 |
"dracut-config-generic",
|
|
Packit Service |
509fd4 |
"s390utils-base",
|
|
Packit Service |
509fd4 |
},
|
|
Packit Service |
509fd4 |
uefi: false,
|
|
Packit Service |
509fd4 |
}
|
|
Packit Service |
bcdfb1 |
s390x.addImageTypes(
|
|
Packit Service |
509fd4 |
tarImgType,
|
|
Packit Service |
509fd4 |
qcow2ImageType,
|
|
Packit Service |
509fd4 |
)
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
bcdfb1 |
r.addArches(x8664, aarch64, ppc64le)
|
|
Packit Service |
bcdfb1 |
|
|
Packit Service |
bcdfb1 |
if !isCentos {
|
|
Packit Service |
bcdfb1 |
r.addArches(s390x)
|
|
Packit Service |
bcdfb1 |
}
|
|
Packit Service |
509fd4 |
|
|
Packit Service |
509fd4 |
return &r
|
|
Packit Service |
509fd4 |
}
|