603c61a033
rpm-ostree is moving to unified core composes and this is now working for Silverblue & Kinoite. This is untested for IoT but they should move to os-build with Fedora 37. See: https://github.com/coreos/rpm-ostree/issues/729 Merges: https://pagure.io/pungi/pull-request/1626 Signed-off-by: Timothée Ravier <tim@siosm.fr>
491 lines
16 KiB
ReStructuredText
491 lines
16 KiB
ReStructuredText
.. _examples:
|
|
|
|
Big picture examples
|
|
====================
|
|
|
|
Actual Pungi configuration files can get very large. This pages brings two
|
|
examples of (almost) full configuration for two different composes.
|
|
|
|
Fedora Rawhide compose
|
|
----------------------
|
|
|
|
This is a shortened configuration for Fedora Radhide compose as of 2019-10-14.
|
|
|
|
::
|
|
|
|
release_name = 'Fedora'
|
|
release_short = 'Fedora'
|
|
release_version = 'Rawhide'
|
|
release_is_layered = False
|
|
|
|
bootable = True
|
|
comps_file = {
|
|
'scm': 'git',
|
|
'repo': 'https://pagure.io/fedora-comps.git',
|
|
'branch': 'master',
|
|
'file': 'comps-rawhide.xml',
|
|
# Merge translations by running make. This command will generate the file.
|
|
'command': 'make comps-rawhide.xml'
|
|
}
|
|
module_defaults_dir = {
|
|
'scm': 'git',
|
|
'repo': 'https://pagure.io/releng/fedora-module-defaults.git',
|
|
'branch': 'main',
|
|
'dir': '.'
|
|
}
|
|
# Optional module obsoletes configuration which is merged
|
|
# into the module index and gets resolved
|
|
module_obsoletes_dir = {
|
|
'scm': 'git',
|
|
'repo': 'https://pagure.io/releng/fedora-module-defaults.git',
|
|
'branch': 'main',
|
|
'dir': 'obsoletes'
|
|
}
|
|
|
|
variants_file='variants-fedora.xml'
|
|
sigkeys = ['12C944D0']
|
|
|
|
# Put packages into subdirectories hashed by their initial letter.
|
|
hashed_directories = True
|
|
|
|
# There is a special profile for use with compose. It makes Pungi
|
|
# authenticate automatically as rel-eng user.
|
|
koji_profile = 'compose_koji'
|
|
|
|
# RUNROOT settings
|
|
runroot = True
|
|
runroot_channel = 'compose'
|
|
runroot_tag = 'f32-build'
|
|
|
|
# PKGSET
|
|
pkgset_source = 'koji'
|
|
pkgset_koji_tag = 'f32'
|
|
pkgset_koji_inherit = False
|
|
|
|
filter_system_release_packages = False
|
|
|
|
# GATHER
|
|
gather_method = {
|
|
'^.*': { # For all variants
|
|
'comps': 'deps', # resolve dependencies for packages from comps file
|
|
'module': 'nodeps', # but not for packages from modules
|
|
}
|
|
}
|
|
gather_backend = 'dnf'
|
|
gather_profiler = True
|
|
check_deps = False
|
|
greedy_method = 'build'
|
|
|
|
repoclosure_backend = 'dnf'
|
|
|
|
# CREATEREPO
|
|
createrepo_deltas = False
|
|
createrepo_database = True
|
|
createrepo_use_xz = True
|
|
createrepo_extra_args = ['--zck', '--zck-dict-dir=/usr/share/fedora-repo-zdicts/rawhide']
|
|
|
|
# CHECKSUMS
|
|
media_checksums = ['sha256']
|
|
media_checksum_one_file = True
|
|
media_checksum_base_filename = '%(release_short)s-%(variant)s-%(version)s-%(arch)s-%(date)s%(type_suffix)s.%(respin)s'
|
|
|
|
# CREATEISO
|
|
iso_hfs_ppc64le_compatible = False
|
|
|
|
# BUILDINSTALL
|
|
buildinstall_method = 'lorax'
|
|
buildinstall_skip = [
|
|
# No installer for Modular variant
|
|
('^Modular$', {'*': True}),
|
|
# No 32 bit installer for Everything.
|
|
('^Everything$', {'i386': True}),
|
|
]
|
|
|
|
# Enables macboot on x86_64 for all variants and disables upgrade image building
|
|
# everywhere.
|
|
lorax_options = [
|
|
('^.*$', {
|
|
'x86_64': {
|
|
'nomacboot': False
|
|
},
|
|
'ppc64le': {
|
|
# Use 3GB image size for ppc64le.
|
|
'rootfs_size': 3
|
|
},
|
|
'*': {
|
|
'noupgrade': True
|
|
}
|
|
})
|
|
]
|
|
|
|
additional_packages = [
|
|
('^(Server|Everything)$', {
|
|
'*': [
|
|
# Add all architectures of dracut package.
|
|
'dracut.*',
|
|
# All all packages matching this pattern
|
|
'autocorr-*',
|
|
],
|
|
}),
|
|
|
|
('^Everything$', {
|
|
# Everything should include all packages from the tag. This only
|
|
# applies to the native arch. Multilib will still be pulled in
|
|
# according to multilib rules.
|
|
'*': ['*'],
|
|
}),
|
|
]
|
|
|
|
filter_packages = [
|
|
("^.*$", {"*": ["glibc32", "libgcc32"]}),
|
|
('(Server)$', {
|
|
'*': [
|
|
'kernel*debug*',
|
|
'kernel-kdump*',
|
|
]
|
|
}),
|
|
]
|
|
|
|
multilib = [
|
|
('^Everything$', {
|
|
'x86_64': ['devel', 'runtime'],
|
|
})
|
|
]
|
|
|
|
# These packages should never be multilib on any arch.
|
|
multilib_blacklist = {
|
|
'*': [
|
|
'kernel', 'kernel-PAE*', 'kernel*debug*', 'java-*', 'php*', 'mod_*', 'ghc-*'
|
|
],
|
|
}
|
|
|
|
# These should be multilib even if they don't match the rules defined above.
|
|
multilib_whitelist = {
|
|
'*': ['wine', '*-static'],
|
|
}
|
|
|
|
createiso_skip = [
|
|
# Keep binary ISOs for Server, but not source ones.
|
|
('^Server$', {'src': True}),
|
|
|
|
# Remove all other ISOs.
|
|
('^Everything$', {'*': True, 'src': True}),
|
|
('^Modular$', {'*': True, 'src': True}),
|
|
]
|
|
|
|
# Image name respecting Fedora's image naming policy
|
|
image_name_format = '%(release_short)s-%(variant)s-%(disc_type)s-%(arch)s-%(version)s-%(date)s%(type_suffix)s.%(respin)s.iso'
|
|
# Use the same format for volume id
|
|
image_volid_formats = [
|
|
'%(release_short)s-%(variant)s-%(disc_type)s-%(arch)s-%(version)s'
|
|
]
|
|
# Used by Pungi to replace 'Cloud' with 'C' (etc.) in ISO volume IDs.
|
|
# There is a hard 32-character limit on ISO volume IDs, so we use
|
|
# these to try and produce short enough but legible IDs. Note this is
|
|
# duplicated in Koji for live images, as livemedia-creator does not
|
|
# allow Pungi to tell it what volume ID to use. Note:
|
|
# https://fedoraproject.org/wiki/User:Adamwill/Draft_fedora_image_naming_policy
|
|
volume_id_substitutions = {
|
|
'Beta': 'B',
|
|
'Rawhide': 'rawh',
|
|
'Silverblue': 'SB',
|
|
'Cinnamon': 'Cinn',
|
|
'Cloud': 'C',
|
|
'Design_suite': 'Dsgn',
|
|
'Electronic_Lab': 'Elec',
|
|
'Everything': 'E',
|
|
'Scientific_KDE': 'SciK',
|
|
'Security': 'Sec',
|
|
'Server': 'S',
|
|
'Workstation': 'WS',
|
|
}
|
|
|
|
disc_types = {
|
|
'boot': 'netinst',
|
|
'live': 'Live',
|
|
}
|
|
|
|
translate_paths = [
|
|
('/mnt/koji/compose/', 'https://kojipkgs.fedoraproject.org/compose/'),
|
|
]
|
|
|
|
# These will be inherited by live_media, live_images and image_build
|
|
global_ksurl = 'git+https://pagure.io/fedora-kickstarts.git?#HEAD'
|
|
global_release = '!RELEASE_FROM_LABEL_DATE_TYPE_RESPIN'
|
|
global_version = 'Rawhide'
|
|
# live_images ignores this in favor of live_target
|
|
global_target = 'f32'
|
|
|
|
image_build = {
|
|
'^Container$': [
|
|
{
|
|
'image-build': {
|
|
'format': [('docker', 'tar.xz')],
|
|
'name': 'Fedora-Container-Base',
|
|
'kickstart': 'fedora-container-base.ks',
|
|
'distro': 'Fedora-22',
|
|
'disk_size': 5,
|
|
'arches': ['armhfp', 'aarch64', 'ppc64le', 's390x', 'x86_64'],
|
|
'repo': 'Everything',
|
|
'install_tree_from': 'Everything',
|
|
'subvariant': 'Container_Base',
|
|
'failable': ['*'],
|
|
},
|
|
'factory-parameters': {
|
|
'dockerversion': "1.10.1",
|
|
'docker_cmd': '[ "/bin/bash" ]',
|
|
'docker_env': '[ "DISTTAG=f32container", "FGC=f32", "container=oci" ]',
|
|
'docker_label': '{ "name": "fedora", "license": "MIT", "vendor": "Fedora Project", "version": "32"}',
|
|
},
|
|
},
|
|
],
|
|
}
|
|
|
|
live_media = {
|
|
'^Workstation$': [
|
|
{
|
|
'name': 'Fedora-Workstation-Live',
|
|
'kickstart': 'fedora-live-workstation.ks',
|
|
# Variants.xml also contains aarch64 and armhfp, but there
|
|
# should be no live media for those arches.
|
|
'arches': ['x86_64', 'ppc64le'],
|
|
'failable': ['ppc64le'],
|
|
# Take packages and install tree from Everything repo.
|
|
'repo': 'Everything',
|
|
'install_tree_from': 'Everything',
|
|
}
|
|
],
|
|
'^Spins': [
|
|
# There are multiple media for Spins variant. They use subvariant
|
|
# field so that they can be identified in the metadata.
|
|
{
|
|
'name': 'Fedora-KDE-Live',
|
|
'kickstart': 'fedora-live-kde.ks',
|
|
'arches': ['x86_64'],
|
|
'repo': 'Everything',
|
|
'install_tree_from': 'Everything',
|
|
'subvariant': 'KDE'
|
|
|
|
},
|
|
{
|
|
'name': 'Fedora-Xfce-Live',
|
|
'kickstart': 'fedora-live-xfce.ks',
|
|
'arches': ['x86_64'],
|
|
'failable': ['*'],
|
|
'repo': 'Everything',
|
|
'install_tree_from': 'Everything',
|
|
'subvariant': 'Xfce'
|
|
},
|
|
],
|
|
}
|
|
|
|
failable_deliverables = [
|
|
# Installer and ISOs for server failing do not abort the compose.
|
|
('^Server$', {
|
|
'*': ['buildinstall', 'iso'],
|
|
}),
|
|
('^.*$', {
|
|
# Buildinstall is not blocking
|
|
'src': ['buildinstall'],
|
|
# Nothing on i386, ppc64le blocks the compose
|
|
'i386': ['buildinstall', 'iso'],
|
|
'ppc64le': ['buildinstall', 'iso'],
|
|
's390x': ['buildinstall', 'iso'],
|
|
})
|
|
]
|
|
|
|
live_target = 'f32'
|
|
live_images_no_rename = True
|
|
live_images = [
|
|
('^Workstation$', {
|
|
'armhfp': {
|
|
'kickstart': 'fedora-arm-workstation.ks',
|
|
'name': 'Fedora-Workstation-armhfp',
|
|
# Again workstation takes packages from Everything.
|
|
'repo': 'Everything',
|
|
'type': 'appliance',
|
|
'failable': True,
|
|
}
|
|
}),
|
|
('^Server$', {
|
|
# But Server has its own repo.
|
|
'armhfp': {
|
|
'kickstart': 'fedora-arm-server.ks',
|
|
'name': 'Fedora-Server-armhfp',
|
|
'type': 'appliance',
|
|
'failable': True,
|
|
}
|
|
}),
|
|
]
|
|
|
|
ostree = {
|
|
"^Silverblue$": {
|
|
"version": "!OSTREE_VERSION_FROM_LABEL_DATE_TYPE_RESPIN",
|
|
# To get config, clone master branch from this repo and take
|
|
# treefile from there.
|
|
"treefile": "fedora-silverblue.yaml",
|
|
"config_url": "https://pagure.io/workstation-ostree-config.git",
|
|
"config_branch": "master",
|
|
# Consume packages from Everything
|
|
"repo": "Everything",
|
|
# Don't create a reference in the ostree repo (signing automation does that).
|
|
"tag_ref": False,
|
|
# Don't use change detection in ostree.
|
|
"force_new_commit": True,
|
|
# Use unified core mode for rpm-ostree composes
|
|
"unified_core": True,
|
|
# This is the location for the repo where new commit will be
|
|
# created. Note that this is outside of the compose dir.
|
|
"ostree_repo": "/mnt/koji/compose/ostree/repo/",
|
|
"ostree_ref": "fedora/rawhide/${basearch}/silverblue",
|
|
"arches": ["x86_64", "ppc64le", "aarch64"],
|
|
"failable": ['*'],
|
|
}
|
|
}
|
|
|
|
ostree_installer = [
|
|
("^Silverblue$", {
|
|
"x86_64": {
|
|
"repo": "Everything",
|
|
"release": None,
|
|
"rootfs_size": "8",
|
|
# Take templates from this repository.
|
|
'template_repo': 'https://pagure.io/fedora-lorax-templates.git',
|
|
'template_branch': 'master',
|
|
# Use following templates.
|
|
"add_template": ["ostree-based-installer/lorax-configure-repo.tmpl",
|
|
"ostree-based-installer/lorax-embed-repo.tmpl",
|
|
"ostree-based-installer/lorax-embed-flatpaks.tmpl"],
|
|
# And add these variables for the templates.
|
|
"add_template_var": [
|
|
"ostree_install_repo=https://kojipkgs.fedoraproject.org/compose/ostree/repo/",
|
|
"ostree_update_repo=https://ostree.fedoraproject.org",
|
|
"ostree_osname=fedora",
|
|
"ostree_oskey=fedora-32-primary",
|
|
"ostree_contenturl=mirrorlist=https://ostree.fedoraproject.org/mirrorlist",
|
|
"ostree_install_ref=fedora/rawhide/x86_64/silverblue",
|
|
"ostree_update_ref=fedora/rawhide/x86_64/silverblue",
|
|
"flatpak_remote_name=fedora",
|
|
"flatpak_remote_url=oci+https://registry.fedoraproject.org",
|
|
"flatpak_remote_refs=runtime/org.fedoraproject.Platform/x86_64/f30 app/org.gnome.Baobab/x86_64/stable",
|
|
],
|
|
'failable': ['*'],
|
|
},
|
|
})
|
|
]
|
|
|
|
|
|
RCM Tools compose
|
|
-----------------
|
|
|
|
This is a small compose used to deliver packages to Red Hat internal users. The
|
|
configuration is split into two files.
|
|
|
|
::
|
|
|
|
# rcmtools-common.conf
|
|
|
|
release_name = "RCM Tools"
|
|
release_short = "RCMTOOLS"
|
|
release_version = "2.0"
|
|
release_type = "updates"
|
|
release_is_layered = True
|
|
createrepo_c = True
|
|
createrepo_checksum = "sha256"
|
|
|
|
# PKGSET
|
|
pkgset_source = "koji"
|
|
koji_profile = "brew"
|
|
pkgset_koji_inherit = True
|
|
|
|
|
|
# GENERAL SETTINGS
|
|
bootable = False
|
|
comps_file = "rcmtools-comps.xml"
|
|
variants_file = "rcmtools-variants.xml"
|
|
sigkeys = ["3A3A33A3"]
|
|
|
|
|
|
# RUNROOT settings
|
|
runroot = False
|
|
|
|
|
|
# GATHER
|
|
gather_method = "deps"
|
|
check_deps = True
|
|
|
|
additional_packages = [
|
|
('.*', {
|
|
'*': ['puddle', 'rcm-nexus'],
|
|
}
|
|
),
|
|
]
|
|
|
|
# Set repoclosure_strictness to fatal to avoid installation dependency
|
|
# issues in production composes
|
|
repoclosure_strictness = [
|
|
("^.*$", {
|
|
"*": "fatal"
|
|
})
|
|
]
|
|
|
|
|
|
Configuration specific for different base products is split into separate files.
|
|
|
|
::
|
|
|
|
# rcmtools-common.conf
|
|
from rcmtools-common import *
|
|
|
|
# BASE PRODUCT
|
|
base_product_name = "Red Hat Enterprise Linux"
|
|
base_product_short = "RHEL"
|
|
base_product_version = "7"
|
|
|
|
# PKGSET
|
|
pkgset_koji_tag = "rcmtools-rhel-7-compose"
|
|
|
|
# remove i386 arch on rhel7
|
|
tree_arches = ["aarch64", "ppc64le", "s390x", "x86_64"]
|
|
|
|
check_deps = False
|
|
|
|
# Packages in these repos are available to satisfy dependencies inside the
|
|
# compose, but will not be pulled in.
|
|
gather_lookaside_repos = [
|
|
("^Client|Client-optional$", {
|
|
"x86_64": [
|
|
"http://example.redhat.com/rhel/7/Client/x86_64/os/",
|
|
"http://example.redhat.com/rhel/7/Client/x86_64/optional/os/",
|
|
],
|
|
}),
|
|
("^Workstation|Workstation-optional$", {
|
|
"x86_64": [
|
|
"http://example.redhat.com/rhel/7/Workstation/x86_64/os/",
|
|
"http://example.redhat.com/rhel/7/Workstation/x86_64/optional/os/",
|
|
],
|
|
}),
|
|
("^Server|Server-optional$", {
|
|
"aarch64": [
|
|
"http://example.redhat.com/rhel/7/Server/aarch64/os/",
|
|
"http://example.redhat.com/rhel/7/Server/aarch64/optional/os/",
|
|
],
|
|
"ppc64": [
|
|
"http://example.redhat.com/rhel/7/Server/ppc64/os/",
|
|
"http://example.redhat.com/rhel/7/Server/ppc64/optional/os/",
|
|
],
|
|
"ppc64le": [
|
|
"http://example.redhat.com/rhel/7/Server/ppc64le/os/",
|
|
"http://example.redhat.com/rhel/7/Server/ppc64le/optional/os/",
|
|
],
|
|
"s390x": [
|
|
"http://example.redhat.com/rhel/7/Server/s390x/os/",
|
|
"http://example.redhat.com/rhel/7/Server/s390x/optional/os/",
|
|
],
|
|
"x86_64": [
|
|
"http://example.redhat.com/rhel/7/Server/x86_64/os/",
|
|
"http://example.redhat.com/rhel/7/Server/x86_64/optional/os/",
|
|
],
|
|
})
|
|
]
|