Compare commits

..

No commits in common. "65c531cf4c23dea0581851b0159cfd6689073f70" and "a15f74a421b2dca1f9ada15b7f7e83a5dc519948" have entirely different histories.

37 changed files with 1090 additions and 58 deletions

View File

@ -43,6 +43,7 @@
packages: 'os/Packages'
repodata: 'os/repodata'
iso_map:
xorrisofs: True
iso_level: False
images:
dvd:

View File

@ -43,6 +43,7 @@
packages: 'os/Packages'
repodata: 'os/repodata'
iso_map:
xorrisofs: True
iso_level: False
images:
dvd:

View File

@ -39,6 +39,7 @@
packages: 'os/Packages'
repodata: 'os/repodata'
iso_map:
xorrisofs: False
iso_level: False
images:
dvd:

View File

@ -39,6 +39,7 @@
packages: 'os/Packages'
repodata: 'os/repodata'
iso_map:
xorrisofs: False
iso_level: False
images:
dvd:

View File

@ -39,6 +39,7 @@
packages: 'os/Packages'
repodata: 'os/repodata'
iso_map:
xorrisofs: False
iso_level: False
images:
dvd:

View File

@ -49,6 +49,7 @@
packages: 'os/Packages'
repodata: 'os/repodata'
iso_map:
xorrisofs: True
iso_level: False
images:
dvd:

View File

@ -49,6 +49,7 @@
packages: 'os/Packages'
repodata: 'os/repodata'
iso_map:
xorrisofs: True
iso_level: False
images:
dvd:

View File

@ -49,6 +49,7 @@
packages: 'os/Packages'
repodata: 'os/repodata'
iso_map:
xorrisofs: True
iso_level: False
images:
dvd:

View File

@ -39,6 +39,7 @@
packages: 'os/Packages'
repodata: 'os/repodata'
iso_map:
xorrisofs: True
iso_level: False
images:
dvd:

View File

@ -43,6 +43,8 @@ local_setup_env
{{ make_image }}
{{ isohybrid }}
{{ implantmd5 }}
{{ make_manifest }}

View File

@ -51,6 +51,7 @@ class IsoBuild:
config,
major,
arch=None,
hfs_compat: bool = False,
rc: bool = False,
s3: bool = False,
force_download: bool = False,
@ -142,6 +143,9 @@ class IsoBuild:
#if s3:
# self.s3 = boto3.client('s3')
# arch specific
self.hfs_compat = hfs_compat
# Templates
file_loader = FileSystemLoader(f"{_rootdir}/templates")
self.tmplenv = Environment(loader=file_loader)
@ -258,6 +262,17 @@ class IsoBuild:
if self.release_candidate:
rclevel = '-' + self.rclvl
# This is kind of a hack. Installing xorrisofs sets the alternatives to
# it, so backwards compatibility is sort of guaranteed. But we want to
# emulate as close as possible to what pungi does, so unless we
# explicitly ask for xorr (in el8 and 9), we should NOT be using it.
# For RLN and el10, we'll use xorr all the way through. When 8 is no
# longer getting ISO's, we'll remove this section.
required_pkgs = self.required_pkgs.copy()
if self.iso_map['xorrisofs']:
if 'genisoimage' in required_pkgs and 'xorriso' not in required_pkgs:
required_pkgs.append('xorriso')
mock_iso_template_output = mock_iso_template.render(
arch=self.current_arch,
major=self.major_version,
@ -817,6 +832,17 @@ class IsoBuild:
log_path_command = f'| tee -a {log_root}/{arch}-{image}.log'
# This is kind of a hack. Installing xorrisofs sets the alternatives to
# it, so backwards compatibility is sort of guaranteed. But we want to
# emulate as close as possible to what pungi does, so unless we
# explicitly ask for xorr (in el8 and 9), we should NOT be using it.
# For RLN and el10, we'll use xorr all the way through. When 8 is no
# longer getting ISO's, we'll remove this section.
required_pkgs = self.required_pkgs.copy()
if self.iso_map['xorrisofs']:
if 'genisoimage' in required_pkgs and 'xorriso' not in required_pkgs:
required_pkgs.append('xorriso')
rclevel = ''
if self.release_candidate:
rclevel = '-' + self.rclvl
@ -864,29 +890,35 @@ class IsoBuild:
'iso_name': isoname,
'volid': volid,
'graft_points': grafts,
'use_xorrisofs': self.iso_map['xorrisofs'],
'iso_level': self.iso_map['iso_level'],
}
# Generate a xorriso compatible dialog
with open(grafts) as xp:
xorpoint = xp.read()
xp.close()
xorriso_template_output = xorriso_template.render(
boot_iso=boot_iso,
isoname=isoname,
volid=volid,
graft=xorpoint,
arch=arch,
)
with open(xorriso_template_path, "w+") as xorriso_template_entry:
xorriso_template_entry.write(xorriso_template_output)
xorriso_template_entry.close()
opts['graft_points'] = xorriso_template_path
if opts['use_xorrisofs']:
# Generate a xorriso compatible dialog
with open(grafts) as xp:
xorpoint = xp.read()
xp.close()
xorriso_template_output = xorriso_template.render(
boot_iso=boot_iso,
isoname=isoname,
volid=volid,
graft=xorpoint,
arch=arch,
)
with open(xorriso_template_path, "w+") as xorriso_template_entry:
xorriso_template_entry.write(xorriso_template_output)
xorriso_template_entry.close()
opts['graft_points'] = xorriso_template_path
make_image = '{} {}'.format(
Shared.get_make_image_cmd(opts),
Shared.get_make_image_cmd(
opts,
self.hfs_compat
),
log_path_command
)
isohybrid = Shared.get_isohybrid_cmd(opts)
implantmd5 = Shared.get_implantisomd5_cmd(opts)
make_manifest = Shared.get_manifest_cmd(opts)
@ -895,6 +927,7 @@ class IsoBuild:
arch=arch,
compose_work_iso_dir=self.iso_work_dir,
make_image=make_image,
isohybrid=isohybrid,
implantmd5=implantmd5,
make_manifest=make_manifest,
lorax_pkg_cmd=lorax_pkg_cmd,
@ -1177,7 +1210,11 @@ class IsoBuild:
update=updatables
)
grafters = xorrs
if self.iso_map['xorrisofs']:
grafters = xorrs
else:
grafters = grafts
return grafters
def _get_grafts(self, paths, exclusive_paths=None, exclude=None):
@ -1241,25 +1278,40 @@ class IsoBuild:
# We check first if a file needs to be updated first before relying on
# the boot.iso manifest to exclude a file
with open(xorrspath, "w") as fx:
for zm in sorted(result, key=Idents.sorting):
found = False
replace = False
for upda in update:
if fnmatch(zm, upda):
#print(f'updating: {zm} {upda}')
replace = True
break
for excl in exclude:
if fnmatch(zm, excl):
#print(f'ignoring: {zm} {excl}')
found = True
break
if found:
continue
mcmd = "-update" if replace else "-map"
fx.write("%s %s %s\n" % (mcmd, u[zm], zm))
fx.close()
if self.iso_map['xorrisofs']:
with open(xorrspath, "w") as fx:
for zm in sorted(result, key=Idents.sorting):
found = False
replace = False
for upda in update:
if fnmatch(zm, upda):
#print(f'updating: {zm} {upda}')
replace = True
break
for excl in exclude:
if fnmatch(zm, excl):
#print(f'ignoring: {zm} {excl}')
found = True
break
if found:
continue
mcmd = "-update" if replace else "-map"
fx.write("%s %s %s\n" % (mcmd, u[zm], zm))
fx.close()
else:
with open(filepath, "w") as fh:
self.log.info('%sNothing should be excluded in legacy ' \
'genisoimage. Ignoring exclude list.', Color.WARN)
for zl in sorted(result, key=Idents.sorting):
#found = False
#for excl in exclude:
# if fnmatch(zl, excl):
# found = True
# break
#if found:
# continue
fh.write(f"{zl}={u[zl]}\n")
fh.close()
def run_pull_iso_images(self):
"""
@ -1489,6 +1541,7 @@ class LiveBuild:
rlvars,
config,
major,
hfs_compat: bool = False,
force_download: bool = False,
isolation: str = 'simple',
live_iso_mode: str = 'local',

View File

@ -511,14 +511,78 @@ class Shared:
config_file.close()
return fname
@staticmethod
def quick_sync(src, dest, logger, tmp_dir):
"""
Does a quick sync from one place to another. This determines the method
in which will be used. We will look for fpsync and fall back to
parallel | rsync if that is also available. It will fail if parallel is
not available.
Return true or false on completion?
"""
@staticmethod
def simple_sync(src, dest):
"""
This is for simple syncs only, using rsync or copytree.
"""
@staticmethod
def fpsync_method(src, dest, tmp_dir):
"""
Returns a list for the fpsync command
"""
cmd = '/usr/bin/fpsync'
#rsync_switches = '-av --numeric-ids --no-compress --chown=10004:10005'
rsync_switches = '-v --numeric-ids --no-compress --chown=10004:10005'
if not os.path.exists(cmd):
message = 'fpsync not found'
retval = 1
return message, retval
os.makedirs(tmp_dir, exist_ok=True)
fpsync_cmd = '{} -o "{}" -n 18 -t {} {} {}'.format(
cmd,
rsync_switches,
tmp_dir,
src,
dest
)
process = subprocess.call(
shlex.split(fpsync_cmd),
stdout=subprocess.DEVNULL,
stderr=subprocess.DEVNULL,
)
if process != 0:
message = 'Syncing (fpsync) failed'
retval = process
return message, retval
if os.path.exists(dest):
message = 'Syncing (fpsync) succeeded'
retval = process
else:
message = 'Path synced does not seem to exist for some reason.'
retval = 1
#shutil.rmtree(tmp_dir)
return message, retval
@staticmethod
def rsync_method(src, dest):
"""
Returns a string for the rsync command plus parallel. Yes, this is a
hack.
"""
#find_cmd = '/usr/bin/find'
#parallel_cmd = '/usr/bin/parallel'
cmd = '/usr/bin/rsync'
switches = '-vrlptDSHog --chown=10004:10005 --progress --human-readable --delete'
switches = '-vrlptDSH --chown=10004:10005 --progress --human-readable'
rsync_command = f'{cmd} {switches} {src}/ {dest}'
#os.makedirs(dest, exist_ok=True)
@ -857,21 +921,57 @@ class Shared:
return cmd
@staticmethod
def get_make_image_cmd(opts):
def get_make_image_cmd(opts, hfs_compat):
"""
Generates the command to actually make the image in the first place
"""
cmd = [
'/usr/bin/xorriso',
'-dialog',
'on',
'<',
opts['graft_points'],
'2>&1'
]
isokwargs = {}
isokwargs["boot_args"] = Shared.get_boot_options(
opts['arch'],
os.path.join("$TEMPLATE", "config_files/ppc"),
hfs_compat=hfs_compat,
)
if opts['arch'] in ("ppc64", "ppc64le"):
isokwargs["input_charset"] = None
if opts['use_xorrisofs']:
cmd = [
'/usr/bin/xorriso',
'-dialog',
'on',
'<',
opts['graft_points'],
'2>&1'
]
else:
cmd = Shared.get_mkisofs_cmd(
opts['iso_name'],
volid=opts['volid'],
exclude=["./lost+found"],
grafts=opts['graft_points'],
use_xorrisofs=False,
iso_level=opts['iso_level'],
**isokwargs
)
returned_cmd = ' '.join(cmd)
return returned_cmd
@staticmethod
def get_isohybrid_cmd(opts):
cmd = []
if not opts['use_xorrisofs']:
if opts['arch'] == "x86_64":
cmd = ["/usr/bin/isohybrid"]
cmd.append("--uefi")
cmd.append(opts['iso_name'])
returned_cmd = ' '.join(cmd)
else:
returned_cmd = ''
return returned_cmd
@staticmethod
def get_implantisomd5_cmd(opts):
"""
@ -886,13 +986,19 @@ class Shared:
"""
Gets an ISO manifest
"""
return """/usr/bin/xorriso -dev %s --find |
tail -n+2 |
tr -d "'" |
cut -c2- | sort >> %s.manifest""" % (
shlex.quote(opts['iso_name']),
shlex.quote(opts['iso_name']),
)
if opts['use_xorrisofs']:
return """/usr/bin/xorriso -dev %s --find |
tail -n+2 |
tr -d "'" |
cut -c2- | sort >> %s.manifest""" % (
shlex.quote(opts['iso_name']),
shlex.quote(opts['iso_name']),
)
else:
return "/usr/bin/isoinfo -R -f -i %s | grep -v '/TRANS.TBL$' | sort >> %s.manifest" % (
shlex.quote(opts['iso_name']),
shlex.quote(opts['iso_name']),
)
@staticmethod
def build_repo_list(

Binary file not shown.

9
iso/py/test.py Normal file
View File

@ -0,0 +1,9 @@
#!/usr/bin/env python3
from common import *
import argparse
from util import Checks
rlvars = rldict['9']
r = Checks(rlvars, arch)
r.check_valid_arch()

38
iso/py/test2.py Normal file
View File

@ -0,0 +1,38 @@
#!/usr/bin/env python3
import desert
from attrs import define, field
import typing as t
CONFIG = {
"8": {
"allowed_arches": ["x86_64", "aarch64"],
"repo_url_list": ["some", "shit", "here"]
},
"9": {
"allowed_arches": ["x86_64", "aarch64", "ppc64le", "s390x"],
"repo_url_list": ["some", "other", "shit", "here"]
}
}
@define
class VersionConfig:
allowed_arches: t.List[str] = field()
repo_url_list: t.List[str] = field()
@allowed_arches.validator
def check(self, attribute, value):
if not all(v in ["x86_64", "aarch64", "ppc64le", "s390x"] for v in value):
raise ValueError("Architecture list does not match")
def new(version):
schema = desert.schema(VersionConfig)
config = CONFIG[str(version)]
return schema.load(config)
eight = new(8)
nine = new(9)
print(eight)
print(eight.allowed_arches)
print(nine)

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

50
iso/sh/common Normal file
View File

@ -0,0 +1,50 @@
# To be sourced by scripts to use
# Variables that can be overriden should be noted with optional context. It is
# expected that these values are here in this file (per variable or per set):
#
# * Allowed
# * Allowed with caveats
# * Not Allowed
# * Required
# Set the Rocky Linux version.
# Override: Required
if [ -z "$RLVER" ]; then
echo "RLVER is not defined."
exit 2
fi
# Architecture of the system - Overriding this would be a mistake. Lorax and
# other runroot-like operations should occur on their respective architectures.
# Override: Not Allowed
ARCH="$(uname -p)"
# Source Major common
# Override: Not Allowed
test -f "$(dirname "$0")/common_${RLVER}" && source "$(dirname "$0")/common_${RLVER}"
if [ "$?" -ne 0 ]; then
echo "Could not source common_${RLVER}"
exit 1
fi
DATE_STAMP="$(date +%Y%m%d)"
COMPOSE_ROOT="/mnt/compose/${RLVER}"
COMPOSE_ISO_WORKDIR="${COMPOSE_ROOT}/work/${ARCH}/${DATE_STAMP}"
# ISO Functions
function build_graft_points() {
echo ""
}
function build_lorax_source_list() {
echo ""
}
function build_lorax() {
echo ""
}
function build_extra_iso() {
echo ""
}

4
iso/sh/common_8 Normal file
View File

@ -0,0 +1,4 @@
# To be sourced by scripts to use
# These are the architectures supported for 8
ARCHES=(x86_64 aarch64)

4
iso/sh/common_9 Normal file
View File

@ -0,0 +1,4 @@
# To be sourced by scripts to use
# These are the architectures supported for 9
ARCHES=(x86_64 aarch64 ppc64le s390x)

View File

@ -1,7 +1,7 @@
Release Engineering Mangler Accessories
=======================================
==================================================
This contains mangling tools and other accessories.
This contains Mirror Manager mangling tools and other accessories.
Scripts
-------
@ -14,4 +14,3 @@ Directories
* generators -> A directory of python and bash scripts for pungi/peridot data generation
* ipa -> IPA specific scripts and utilities
* versions -> simple version utilities

View File

@ -0,0 +1,86 @@
# Generated peridot mock config
config_opts['root'] = 'rocky-10-aarch64'
config_opts['target_arch'] = 'noarch'
config_opts['legal_host_arches'] = ['aarch64','noarch']
config_opts['chroot_setup_cmd'] = 'install bash glibc-minimal-langpack gnupg2 rpm-build shadow-utils system-release redhat-rpm-config'
config_opts['dist'] = '%{!?distprefix0:%{?distprefix}}%{expand:%{lua:for i=0,9999 do print("%{?distprefix" .. i .."}") end}}.el10%{?with_bootstrap:~bootstrap}'
config_opts['releasever'] = '10'
config_opts['package_manager'] = 'dnf'
config_opts['extra_chroot_dirs'] = [ '/run/lock' ]
config_opts['rpmbuild_command'] = '/usr/bin/rpmbuild'
config_opts['use_bootstrap_image'] = False
config_opts['plugin_conf']['rpmautospec_enable'] = True
config_opts['plugin_conf']['rpmautospec_opts'] = {
'requires': ['rpmautospec'],
'cmd_base': ['/usr/bin/rpmautospec', 'process-distgit'],
}
config_opts['plugin_conf']['ccache_enable'] = False
config_opts['plugin_conf']['root_cache_enable'] = False
config_opts['plugin_conf']['yum_cache_enable'] = False
config_opts['rpmbuild_networking'] = True
config_opts['use_host_resolv'] = True
config_opts['print_main_output'] = True
config_opts['macros']['%_rpmfilename'] = '%%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm'
config_opts['macros']['%_host'] = 'aarch64-redhat-linux-gnu'
config_opts['macros']['%_host_cpu'] = 'aarch64'
config_opts['macros']['%_vendor'] = "redhat"
config_opts['macros']['%_vendor_host'] = "redhat"
config_opts['module_setup_commands'] = []
config_opts['macros']['%__bootstrap'] = '~bootstrap'
config_opts['macros']['%vendor'] = 'Rocky Enterprise Software Foundation'
config_opts['macros']['%packager'] = 'Rocky Linux Build System (Peridot) <releng@rockylinux.org>'
config_opts['macros']['%distribution'] = 'Rocky Linux 10.0'
config_opts['macros']['%dist'] = '%{!?distprefix0:%{?distprefix}}%{expand:%{lua:for i=0,9999 do print("%{?distprefix" .. i .."}") end}}.el10%{?with_bootstrap:~bootstrap}'
config_opts['macros']['%rhel'] = '10'
config_opts['files']['usr/lib/rpm/macros.d/macros.dist'] = """
%__bootstrap ~bootstrap
%vendor Rocky Enterprise Software Foundation
%packager Rocky Linux Build System (Peridot) <releng@rockylinux.org>
%distribution Rocky Linux 10
%dist %{!?distprefix0:%{?distprefix}}%{expand:%{lua:for i=0,9999 do print("%{?distprefix" .. i .."}") end}}.el10%{?with_bootstrap:~bootstrap}
%rhel 10
"""
config_opts['dnf.conf'] = """
[main]
debuglevel=1
retries=20
obsoletes=1
gpgcheck=0
assumeyes=1
keepcache=1
best=1
syslog_ident=peridotbuilder
syslog_device=
metadata_expire=0
install_weak_deps=0
protected_packages=
reposdir=/dev/null
logfile=/var/log/yum.log
mdpolicy=group:primary
metadata_expire=0
user_agent=peridotbuilder
module_platform_id=platform:el10
[yumrepofs_0]
name=Peridot Internal - Yumrepofs 0
baseurl=https://yumrepofs.build.resf.org/v1/projects/e7b83c0a-b514-4903-b739-6943bbb307f7/repo/all/$arch
gpgcheck=0
enabled=1
priority=0
module_hotfixes=0
skip_if_unavailable=1
[peridotexternal_0]
name=Peridot External 0
baseurl=https://bootstrap9.releng.rockylinux.org/repos_stage1/10.0-BETA/10.0-BETA-bootstrap_$arch/
gpgcheck=0
enabled=1
priority=80
module_hotfixes=0
"""

View File

@ -0,0 +1,86 @@
# Generated peridot mock config
config_opts['root'] = 'rocky-10-ppc64le'
config_opts['target_arch'] = 'noarch'
config_opts['legal_host_arches'] = ['ppc64le','noarch']
config_opts['chroot_setup_cmd'] = 'install bash glibc-minimal-langpack gnupg2 rpm-build shadow-utils system-release redhat-rpm-config'
config_opts['dist'] = '%{!?distprefix0:%{?distprefix}}%{expand:%{lua:for i=0,9999 do print("%{?distprefix" .. i .."}") end}}.el10%{?with_bootstrap:~bootstrap}'
config_opts['releasever'] = '10'
config_opts['package_manager'] = 'dnf'
config_opts['extra_chroot_dirs'] = [ '/run/lock' ]
config_opts['rpmbuild_command'] = '/usr/bin/rpmbuild'
config_opts['use_bootstrap_image'] = False
config_opts['plugin_conf']['rpmautospec_enable'] = True
config_opts['plugin_conf']['rpmautospec_opts'] = {
'requires': ['rpmautospec'],
'cmd_base': ['/usr/bin/rpmautospec', 'process-distgit'],
}
config_opts['plugin_conf']['ccache_enable'] = False
config_opts['plugin_conf']['root_cache_enable'] = False
config_opts['plugin_conf']['yum_cache_enable'] = False
config_opts['rpmbuild_networking'] = True
config_opts['use_host_resolv'] = True
config_opts['print_main_output'] = True
config_opts['macros']['%_rpmfilename'] = '%%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm'
config_opts['macros']['%_host'] = 'ppc64le-redhat-linux-gnu'
config_opts['macros']['%_host_cpu'] = 'ppc64le'
config_opts['macros']['%_vendor'] = "redhat"
config_opts['macros']['%_vendor_host'] = "redhat"
config_opts['module_setup_commands'] = []
config_opts['macros']['%__bootstrap'] = '~bootstrap'
config_opts['macros']['%vendor'] = 'Rocky Enterprise Software Foundation'
config_opts['macros']['%packager'] = 'Rocky Linux Build System (Peridot) <releng@rockylinux.org>'
config_opts['macros']['%distribution'] = 'Rocky Linux 10.0'
config_opts['macros']['%dist'] = '%{!?distprefix0:%{?distprefix}}%{expand:%{lua:for i=0,9999 do print("%{?distprefix" .. i .."}") end}}.el10%{?with_bootstrap:~bootstrap}'
config_opts['macros']['%rhel'] = '10'
config_opts['files']['usr/lib/rpm/macros.d/macros.dist'] = """
%__bootstrap ~bootstrap
%vendor Rocky Enterprise Software Foundation
%packager Rocky Linux Build System (Peridot) <releng@rockylinux.org>
%distribution Rocky Linux 10
%dist %{!?distprefix0:%{?distprefix}}%{expand:%{lua:for i=0,9999 do print("%{?distprefix" .. i .."}") end}}.el10%{?with_bootstrap:~bootstrap}
%rhel 10
"""
config_opts['dnf.conf'] = """
[main]
debuglevel=1
retries=20
obsoletes=1
gpgcheck=0
assumeyes=1
keepcache=1
best=1
syslog_ident=peridotbuilder
syslog_device=
metadata_expire=0
install_weak_deps=0
protected_packages=
reposdir=/dev/null
logfile=/var/log/yum.log
mdpolicy=group:primary
metadata_expire=0
user_agent=peridotbuilder
module_platform_id=platform:el10
[yumrepofs_0]
name=Peridot Internal - Yumrepofs 0
baseurl=https://yumrepofs.build.resf.org/v1/projects/e7b83c0a-b514-4903-b739-6943bbb307f7/repo/all/$arch
gpgcheck=0
enabled=1
priority=0
module_hotfixes=0
skip_if_unavailable=1
[peridotexternal_0]
name=Peridot External 0
baseurl=https://bootstrap9.releng.rockylinux.org/repos_stage1/10.0-BETA/10.0-BETA-bootstrap_$arch/
gpgcheck=0
enabled=1
priority=80
module_hotfixes=0
"""

View File

@ -0,0 +1,86 @@
# Generated peridot mock config
config_opts['root'] = 'rocky-10-s390x'
config_opts['target_arch'] = 'noarch'
config_opts['legal_host_arches'] = ['s390x','noarch']
config_opts['chroot_setup_cmd'] = 'install bash glibc-minimal-langpack gnupg2 rpm-build shadow-utils system-release redhat-rpm-config'
config_opts['dist'] = '%{!?distprefix0:%{?distprefix}}%{expand:%{lua:for i=0,9999 do print("%{?distprefix" .. i .."}") end}}.el10%{?with_bootstrap:~bootstrap}'
config_opts['releasever'] = '10'
config_opts['package_manager'] = 'dnf'
config_opts['extra_chroot_dirs'] = [ '/run/lock' ]
config_opts['rpmbuild_command'] = '/usr/bin/rpmbuild'
config_opts['use_bootstrap_image'] = False
config_opts['plugin_conf']['rpmautospec_enable'] = True
config_opts['plugin_conf']['rpmautospec_opts'] = {
'requires': ['rpmautospec'],
'cmd_base': ['/usr/bin/rpmautospec', 'process-distgit'],
}
config_opts['plugin_conf']['ccache_enable'] = False
config_opts['plugin_conf']['root_cache_enable'] = False
config_opts['plugin_conf']['yum_cache_enable'] = False
config_opts['rpmbuild_networking'] = True
config_opts['use_host_resolv'] = True
config_opts['print_main_output'] = True
config_opts['macros']['%_rpmfilename'] = '%%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm'
config_opts['macros']['%_host'] = 's390x-redhat-linux-gnu'
config_opts['macros']['%_host_cpu'] = 's390x'
config_opts['macros']['%_vendor'] = "redhat"
config_opts['macros']['%_vendor_host'] = "redhat"
config_opts['module_setup_commands'] = []
config_opts['macros']['%__bootstrap'] = '~bootstrap'
config_opts['macros']['%vendor'] = 'Rocky Enterprise Software Foundation'
config_opts['macros']['%packager'] = 'Rocky Linux Build System (Peridot) <releng@rockylinux.org>'
config_opts['macros']['%distribution'] = 'Rocky Linux 10.0'
config_opts['macros']['%dist'] = '%{!?distprefix0:%{?distprefix}}%{expand:%{lua:for i=0,9999 do print("%{?distprefix" .. i .."}") end}}.el10%{?with_bootstrap:~bootstrap}'
config_opts['macros']['%rhel'] = '10'
config_opts['files']['usr/lib/rpm/macros.d/macros.dist'] = """
%__bootstrap ~bootstrap
%vendor Rocky Enterprise Software Foundation
%packager Rocky Linux Build System (Peridot) <releng@rockylinux.org>
%distribution Rocky Linux 10
%dist %{!?distprefix0:%{?distprefix}}%{expand:%{lua:for i=0,9999 do print("%{?distprefix" .. i .."}") end}}.el10%{?with_bootstrap:~bootstrap}
%rhel 10
"""
config_opts['dnf.conf'] = """
[main]
debuglevel=1
retries=20
obsoletes=1
gpgcheck=0
assumeyes=1
keepcache=1
best=1
syslog_ident=peridotbuilder
syslog_device=
metadata_expire=0
install_weak_deps=0
protected_packages=
reposdir=/dev/null
logfile=/var/log/yum.log
mdpolicy=group:primary
metadata_expire=0
user_agent=peridotbuilder
module_platform_id=platform:el10
[yumrepofs_0]
name=Peridot Internal - Yumrepofs 0
baseurl=https://yumrepofs.build.resf.org/v1/projects/e7b83c0a-b514-4903-b739-6943bbb307f7/repo/all/$arch
gpgcheck=0
enabled=1
priority=0
module_hotfixes=0
skip_if_unavailable=1
[peridotexternal_0]
name=Peridot External 0
baseurl=https://bootstrap9.releng.rockylinux.org/repos_stage1/10.0-BETA/10.0-BETA-bootstrap_$arch/
gpgcheck=0
enabled=1
priority=80
module_hotfixes=0
"""

View File

@ -0,0 +1,86 @@
# Generated peridot mock config
config_opts['root'] = 'rocky-10-x86_64'
config_opts['target_arch'] = 'noarch'
config_opts['legal_host_arches'] = ['x86_64','noarch']
config_opts['chroot_setup_cmd'] = 'install bash glibc-minimal-langpack gnupg2 rpm-build shadow-utils system-release redhat-rpm-config'
config_opts['dist'] = '%{!?distprefix0:%{?distprefix}}%{expand:%{lua:for i=0,9999 do print("%{?distprefix" .. i .."}") end}}.el10%{?with_bootstrap:~bootstrap}'
config_opts['releasever'] = '10'
config_opts['package_manager'] = 'dnf'
config_opts['extra_chroot_dirs'] = [ '/run/lock' ]
config_opts['rpmbuild_command'] = '/usr/bin/rpmbuild'
config_opts['use_bootstrap_image'] = False
config_opts['plugin_conf']['rpmautospec_enable'] = True
config_opts['plugin_conf']['rpmautospec_opts'] = {
'requires': ['rpmautospec'],
'cmd_base': ['/usr/bin/rpmautospec', 'process-distgit'],
}
config_opts['plugin_conf']['ccache_enable'] = False
config_opts['plugin_conf']['root_cache_enable'] = False
config_opts['plugin_conf']['yum_cache_enable'] = False
config_opts['rpmbuild_networking'] = True
config_opts['use_host_resolv'] = True
config_opts['print_main_output'] = True
config_opts['macros']['%_rpmfilename'] = '%%{NAME}-%%{VERSION}-%%{RELEASE}.%%{ARCH}.rpm'
config_opts['macros']['%_host'] = 'x86_64-redhat-linux-gnu'
config_opts['macros']['%_host_cpu'] = 'x86_64'
config_opts['macros']['%_vendor'] = "redhat"
config_opts['macros']['%_vendor_host'] = "redhat"
config_opts['module_setup_commands'] = []
config_opts['macros']['%__bootstrap'] = '~bootstrap'
config_opts['macros']['%vendor'] = 'Rocky Enterprise Software Foundation'
config_opts['macros']['%packager'] = 'Rocky Linux Build System (Peridot) <releng@rockylinux.org>'
config_opts['macros']['%distribution'] = 'Rocky Linux 10.0'
config_opts['macros']['%dist'] = '%{!?distprefix0:%{?distprefix}}%{expand:%{lua:for i=0,9999 do print("%{?distprefix" .. i .."}") end}}.el10%{?with_bootstrap:~bootstrap}'
config_opts['macros']['%rhel'] = '10'
config_opts['files']['usr/lib/rpm/macros.d/macros.dist'] = """
%__bootstrap ~bootstrap
%vendor Rocky Enterprise Software Foundation
%packager Rocky Linux Build System (Peridot) <releng@rockylinux.org>
%distribution Rocky Linux 10
%dist %{!?distprefix0:%{?distprefix}}%{expand:%{lua:for i=0,9999 do print("%{?distprefix" .. i .."}") end}}.el10%{?with_bootstrap:~bootstrap}
%rhel 10
"""
config_opts['dnf.conf'] = """
[main]
debuglevel=1
retries=20
obsoletes=1
gpgcheck=0
assumeyes=1
keepcache=1
best=1
syslog_ident=peridotbuilder
syslog_device=
metadata_expire=0
install_weak_deps=0
protected_packages=
reposdir=/dev/null
logfile=/var/log/yum.log
mdpolicy=group:primary
metadata_expire=0
user_agent=peridotbuilder
module_platform_id=platform:el10
[yumrepofs_0]
name=Peridot Internal - Yumrepofs 0
baseurl=https://yumrepofs.build.resf.org/v1/projects/e7b83c0a-b514-4903-b739-6943bbb307f7/repo/all/$arch
gpgcheck=0
enabled=1
priority=0
module_hotfixes=0
skip_if_unavailable=1
[peridotexternal_0]
name=Peridot External 0
baseurl=https://bootstrap9.releng.rockylinux.org/repos_stage1/10.0-BETA/10.0-BETA-bootstrap_$arch/
gpgcheck=0
enabled=1
priority=80
module_hotfixes=0
"""

View File

@ -0,0 +1,42 @@
config_opts['root'] = 'rocky-8.10-aarch64'
config_opts['description'] = 'Rocky Linux 8.10'
config_opts['target_arch'] = 'aarch64'
config_opts['legal_host_arches'] = ('aarch64',)
config_opts['chroot_setup_cmd'] = 'install bash bzip2 coreutils cpio diffutils redhat-release findutils gawk glibc-minimal-langpack grep gzip info patch redhat-rpm-config rpm-build sed tar unzip util-linux which xz'
config_opts['dist'] = 'el8' # only useful for --resultdir variable subst
config_opts['releasever'] = '8'
config_opts['package_manager'] = 'dnf'
config_opts['extra_chroot_dirs'] = [ '/run/lock', ]
config_opts['use_bootstrap_image'] = False
config_opts['dnf.conf'] = """
[main]
keepcache=1
debuglevel=2
reposdir=/dev/null
logfile=/var/log/yum.log
retries=20
obsoletes=1
gpgcheck=0
assumeyes=1
syslog_ident=mock
syslog_device=
metadata_expire=0
mdpolicy=group:primary
best=1
install_weak_deps=0
protected_packages=
module_platform_id=platform:el8
user_agent={{ user_agent }}
[all]
name=Rocky Linux $releasever - All
baseurl=https://kojidev.rockylinux.org/kojifiles/repos/dist-rocky8-lookahead-build/latest/aarch64
gpgcheck=0
enabled=1
metadata_expire=6h
gpgkey=file:///usr/share/distribution-gpg-keys/rocky/RPM-GPG-KEY-Rocky-8
"""

View File

@ -0,0 +1,42 @@
config_opts['root'] = 'rocky-8.10-i686'
config_opts['description'] = 'Rocky Linux 8.10'
config_opts['target_arch'] = 'i686'
config_opts['legal_host_arches'] = ('i686', 'x86_64',)
config_opts['chroot_setup_cmd'] = 'install bash bzip2 coreutils cpio diffutils redhat-release findutils gawk glibc-minimal-langpack grep gzip info patch redhat-rpm-config rpm-build sed tar unzip util-linux which xz'
config_opts['dist'] = 'el8' # only useful for --resultdir variable subst
config_opts['releasever'] = '8'
config_opts['package_manager'] = 'dnf'
config_opts['extra_chroot_dirs'] = [ '/run/lock', ]
config_opts['use_bootstrap_image'] = False
config_opts['dnf.conf'] = """
[main]
keepcache=1
debuglevel=2
reposdir=/dev/null
logfile=/var/log/yum.log
retries=20
obsoletes=1
gpgcheck=0
assumeyes=1
syslog_ident=mock
syslog_device=
metadata_expire=0
mdpolicy=group:primary
best=1
install_weak_deps=0
protected_packages=
module_platform_id=platform:el8
user_agent={{ user_agent }}
[all]
name=Rocky Linux $releasever - All
baseurl=https://kojidev.rockylinux.org/kojifiles/repos/dist-rocky8-lookahead-build/latest/i386
gpgcheck=0
enabled=1
metadata_expire=6h
gpgkey=file:///usr/share/distribution-gpg-keys/rocky/RPM-GPG-KEY-Rocky-8
"""

View File

@ -0,0 +1,42 @@
config_opts['root'] = 'rocky-8.10-x86_64'
config_opts['description'] = 'Rocky Linux 8.10'
config_opts['target_arch'] = 'x86_64'
config_opts['legal_host_arches'] = ('x86_64',)
config_opts['chroot_setup_cmd'] = 'install bash bzip2 coreutils cpio diffutils redhat-release findutils gawk glibc-minimal-langpack grep gzip info patch redhat-rpm-config rpm-build sed tar unzip util-linux which xz'
config_opts['dist'] = 'el8' # only useful for --resultdir variable subst
config_opts['releasever'] = '8'
config_opts['package_manager'] = 'dnf'
config_opts['extra_chroot_dirs'] = [ '/run/lock', ]
config_opts['use_bootstrap_image'] = False
config_opts['dnf.conf'] = """
[main]
keepcache=1
debuglevel=2
reposdir=/dev/null
logfile=/var/log/yum.log
retries=20
obsoletes=1
gpgcheck=0
assumeyes=1
syslog_ident=mock
syslog_device=
metadata_expire=0
mdpolicy=group:primary
best=1
install_weak_deps=0
protected_packages=
module_platform_id=platform:el8
user_agent={{ user_agent }}
[all]
name=Rocky Linux $releasever - All
baseurl=https://kojidev.rockylinux.org/kojifiles/repos/dist-rocky8-lookahead-build/latest/x86_64
gpgcheck=0
enabled=1
metadata_expire=6h
gpgkey=file:///usr/share/distribution-gpg-keys/rocky/RPM-GPG-KEY-Rocky-8
"""

42
mangle/mock/rl9/rl9.2.cfg Normal file
View File

@ -0,0 +1,42 @@
config_opts['root'] = 'rocky-9.2-x86_64'
config_opts['description'] = 'Rocky Linux 9.2'
config_opts['target_arch'] = 'x86_64'
config_opts['legal_host_arches'] = ('x86_64',)
config_opts['chroot_setup_cmd'] = 'install bash bzip2 coreutils cpio diffutils redhat-release findutils gawk glibc-minimal-langpack grep gzip info patch redhat-rpm-config rpm-build sed tar unzip util-linux which xz'
config_opts['dist'] = 'el9' # only useful for --resultdir variable subst
config_opts['releasever'] = '9'
config_opts['package_manager'] = 'dnf'
config_opts['extra_chroot_dirs'] = [ '/run/lock', ]
config_opts['use_bootstrap_image'] = False
config_opts['dnf.conf'] = """
[main]
keepcache=1
debuglevel=2
reposdir=/dev/null
logfile=/var/log/yum.log
retries=20
obsoletes=1
gpgcheck=0
assumeyes=1
syslog_ident=mock
syslog_device=
metadata_expire=0
mdpolicy=group:primary
best=1
install_weak_deps=0
protected_packages=
module_platform_id=platform:el9
user_agent={{ user_agent }}
[all]
name=Rocky Linux $releasever - All
baseurl=https://yumrepofs.build.resf.org/v1/projects/dff20351-7d36-4f7c-9eea-7f039f5026d0/repo/all/$basearch/
gpgcheck=1
enabled=1
metadata_expire=6h
gpgkey=file:///usr/share/distribution-gpg-keys/rocky/RPM-GPG-KEY-Rocky-9
"""

View File

@ -0,0 +1,42 @@
config_opts['root'] = 'rocky-9.3-aarch64'
config_opts['description'] = 'Rocky Linux 9.3'
config_opts['target_arch'] = 'aarch64'
config_opts['legal_host_arches'] = ('aarch64',)
config_opts['chroot_setup_cmd'] = 'install bash bzip2 coreutils cpio diffutils redhat-release findutils gawk glibc-minimal-langpack grep gzip info patch redhat-rpm-config rpm-build sed tar unzip util-linux which xz'
config_opts['dist'] = 'el9' # only useful for --resultdir variable subst
config_opts['releasever'] = '9'
config_opts['package_manager'] = 'dnf'
config_opts['extra_chroot_dirs'] = [ '/run/lock', ]
config_opts['use_bootstrap_image'] = False
config_opts['dnf.conf'] = """
[main]
keepcache=1
debuglevel=2
reposdir=/dev/null
logfile=/var/log/yum.log
retries=20
obsoletes=1
gpgcheck=0
assumeyes=1
syslog_ident=mock
syslog_device=
metadata_expire=0
mdpolicy=group:primary
best=1
install_weak_deps=0
protected_packages=
module_platform_id=platform:el9
user_agent={{ user_agent }}
[all]
name=Rocky Linux $releasever - All
baseurl=https://yumrepofs.build.resf.org/v1/projects/6202c09e-6252-4d3a-bcd3-9c7751682970/repo/all/$basearch/
gpgcheck=1
enabled=1
metadata_expire=6h
gpgkey=file:///usr/share/distribution-gpg-keys/rocky/RPM-GPG-KEY-Rocky-9
"""

View File

@ -0,0 +1,42 @@
config_opts['root'] = 'rocky-9.3-i686'
config_opts['description'] = 'Rocky Linux 9.3'
config_opts['target_arch'] = 'i686'
config_opts['legal_host_arches'] = ('i686', 'x86_64',)
config_opts['chroot_setup_cmd'] = 'install bash bzip2 coreutils cpio diffutils redhat-release findutils gawk glibc-minimal-langpack grep gzip info patch redhat-rpm-config rpm-build sed tar unzip util-linux which xz'
config_opts['dist'] = 'el9' # only useful for --resultdir variable subst
config_opts['releasever'] = '9'
config_opts['package_manager'] = 'dnf'
config_opts['extra_chroot_dirs'] = [ '/run/lock', ]
config_opts['use_bootstrap_image'] = False
config_opts['dnf.conf'] = """
[main]
keepcache=1
debuglevel=2
reposdir=/dev/null
logfile=/var/log/yum.log
retries=20
obsoletes=1
gpgcheck=0
assumeyes=1
syslog_ident=mock
syslog_device=
metadata_expire=0
mdpolicy=group:primary
best=1
install_weak_deps=0
protected_packages=
module_platform_id=platform:el9
user_agent={{ user_agent }}
[all]
name=Rocky Linux $releasever - All
baseurl=https://yumrepofs.build.resf.org/v1/projects/6202c09e-6252-4d3a-bcd3-9c7751682970/repo/all/$basearch/
gpgcheck=1
enabled=1
metadata_expire=6h
gpgkey=file:///usr/share/distribution-gpg-keys/rocky/RPM-GPG-KEY-Rocky-9
"""

View File

@ -0,0 +1,42 @@
config_opts['root'] = 'rocky-9.3-ppc64le'
config_opts['description'] = 'Rocky Linux 9.3'
config_opts['target_arch'] = 'ppc64le'
config_opts['legal_host_arches'] = ('ppc64le',)
config_opts['chroot_setup_cmd'] = 'install bash bzip2 coreutils cpio diffutils redhat-release findutils gawk glibc-minimal-langpack grep gzip info patch redhat-rpm-config rpm-build sed tar unzip util-linux which xz'
config_opts['dist'] = 'el9' # only useful for --resultdir variable subst
config_opts['releasever'] = '9'
config_opts['package_manager'] = 'dnf'
config_opts['extra_chroot_dirs'] = [ '/run/lock', ]
config_opts['use_bootstrap_image'] = False
config_opts['dnf.conf'] = """
[main]
keepcache=1
debuglevel=2
reposdir=/dev/null
logfile=/var/log/yum.log
retries=20
obsoletes=1
gpgcheck=0
assumeyes=1
syslog_ident=mock
syslog_device=
metadata_expire=0
mdpolicy=group:primary
best=1
install_weak_deps=0
protected_packages=
module_platform_id=platform:el9
user_agent={{ user_agent }}
[all]
name=Rocky Linux $releasever - All
baseurl=https://yumrepofs.build.resf.org/v1/projects/6202c09e-6252-4d3a-bcd3-9c7751682970/repo/all/$basearch/
gpgcheck=1
enabled=1
metadata_expire=6h
gpgkey=file:///usr/share/distribution-gpg-keys/rocky/RPM-GPG-KEY-Rocky-9
"""

View File

@ -0,0 +1,42 @@
config_opts['root'] = 'rocky-9.3-s390x'
config_opts['description'] = 'Rocky Linux 9.3'
config_opts['target_arch'] = 's390x'
config_opts['legal_host_arches'] = ('s390x',)
config_opts['chroot_setup_cmd'] = 'install bash bzip2 coreutils cpio diffutils redhat-release findutils gawk glibc-minimal-langpack grep gzip info patch redhat-rpm-config rpm-build sed tar unzip util-linux which xz'
config_opts['dist'] = 'el9' # only useful for --resultdir variable subst
config_opts['releasever'] = '9'
config_opts['package_manager'] = 'dnf'
config_opts['extra_chroot_dirs'] = [ '/run/lock', ]
config_opts['use_bootstrap_image'] = False
config_opts['dnf.conf'] = """
[main]
keepcache=1
debuglevel=2
reposdir=/dev/null
logfile=/var/log/yum.log
retries=20
obsoletes=1
gpgcheck=0
assumeyes=1
syslog_ident=mock
syslog_device=
metadata_expire=0
mdpolicy=group:primary
best=1
install_weak_deps=0
protected_packages=
module_platform_id=platform:el9
user_agent={{ user_agent }}
[all]
name=Rocky Linux $releasever - All
baseurl=https://yumrepofs.build.resf.org/v1/projects/6202c09e-6252-4d3a-bcd3-9c7751682970/repo/all/$basearch/
gpgcheck=1
enabled=1
metadata_expire=6h
gpgkey=file:///usr/share/distribution-gpg-keys/rocky/RPM-GPG-KEY-Rocky-9
"""

View File

@ -0,0 +1,42 @@
config_opts['root'] = 'rocky-9.3-x86_64'
config_opts['description'] = 'Rocky Linux 9.3'
config_opts['target_arch'] = 'x86_64'
config_opts['legal_host_arches'] = ('x86_64',)
config_opts['chroot_setup_cmd'] = 'install bash bzip2 coreutils cpio diffutils redhat-release findutils gawk glibc-minimal-langpack grep gzip info patch redhat-rpm-config rpm-build sed tar unzip util-linux which xz'
config_opts['dist'] = 'el9' # only useful for --resultdir variable subst
config_opts['releasever'] = '9'
config_opts['package_manager'] = 'dnf'
config_opts['extra_chroot_dirs'] = [ '/run/lock', ]
config_opts['use_bootstrap_image'] = False
config_opts['dnf.conf'] = """
[main]
keepcache=1
debuglevel=2
reposdir=/dev/null
logfile=/var/log/yum.log
retries=20
obsoletes=1
gpgcheck=0
assumeyes=1
syslog_ident=mock
syslog_device=
metadata_expire=0
mdpolicy=group:primary
best=1
install_weak_deps=0
protected_packages=
module_platform_id=platform:el9
user_agent={{ user_agent }}
[all]
name=Rocky Linux $releasever - All
baseurl=https://yumrepofs.build.resf.org/v1/projects/6202c09e-6252-4d3a-bcd3-9c7751682970/repo/all/$basearch/
gpgcheck=1
enabled=1
metadata_expire=6h
gpgkey=file:///usr/share/distribution-gpg-keys/rocky/RPM-GPG-KEY-Rocky-9
"""

View File

@ -5,5 +5,41 @@ These scripts assist in syncing to staging and to prod for releases, whether
they are full point releases, simple update releases, or a brand new repository
being added. Each script here has a specific purpose.
Read the [SIG/Core Wiki](https://sig-core.rocky.page/sop/) for more information
and examples of how these scripts are utilized.
What to do?
-----------
When the scripts are being ran, they are usually ran with a specific purpose or
a reason. They are also ran in a certain order.
The below are common vars files. common_X will override what's in common.
```
.
├── common
├── common_8
```
These are for the releases in general. What they do is noted below.
```
├── gen-torrents.sh -> Generates torrents for images
├── minor-release-sync-to-staging.sh -> Syncs a minor release to staging
├── prep-staging-8.sh -> Preps staging updates and signs repos
├── sign-repos-only.sh -> Signs the repomd (only)
├── sync-to-prod.sh -> Syncs staging to production
├── sync-to-staging.sh -> Syncs a provided compose to staging
├── sync-to-staging-sig.sh -> Syncs a sig provided compose to staging
```
Generally, you will only run `minor-release-sync-to-staging.sh` when a full
minor release is being produced. So for example, if 8.5 has been built out, you
would run that after a compose. `gen-torrents.sh` would be ran shortly after.
When doing updates, the order of operations (preferably) would be:
* `sync-to-staging.sh`
* `sync-to-staging-sig.sh` Only if sigs are updated
* `prep-staging-X.sh` -> This is required to ensure the groups, compos, and
module data stay sane. This helps us provide older
packages in the repos.
* `sync-to-prod.sh` -> After the initial testing, it is sent to prod.