General Changes

* Remove live directory as empanadas handles it
* update readmes accordingly
* add a quick-bump script for bumping release tags quickly
This commit is contained in:
Louis Abel 2022-12-20 02:05:53 -07:00
parent 13daeeb975
commit bb2c8d1965
Signed by: label
GPG Key ID: B37E62D143879B36
4 changed files with 136 additions and 39 deletions

View File

@ -13,8 +13,7 @@ What does this have?
* analyze -> Analysis utilities (such as download stats)
* chat -> mattermost related utilities
* func -> (mostly defunct) testing scripts and tools to test base functionality
* iso -> ISO, Compose, and Sync related utilities, primarily for Rocky Linux 9+
* live -> Live image related utilities
* iso -> Contains `empanadas`, which provides ISO, Compose, and Sync related utilities.
* mangle -> Manglers and other misc stuff
* sync -> Sync tools, primarily for Rocky Linux 8 and will eventually be deprecated
@ -24,11 +23,13 @@ How can I help?
Fork this repository and open a PR with your changes. Keep these things in mind
when you make changes:
* Have pre-commit installed
* Have shellcheck installed
* Have pre-commit installed if possible
* Have shellcheck installed if possible
* Shell Scripts: These must pass a shellcheck test!
* Python scripts: Try your best to follow PEP8 guidelines (even the best linters get things wrong)
* Note that not everything has to pass. Just try your best.
Your PR should be against the devel branch at all times. PR's against the main
branch will be closed.

View File

@ -1,34 +0,0 @@
# To be sourced by scripts that build live images
# 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
# Temporary probably. This makes it so if RLVER=... is called before the script
# it will set the version for the variables to call up. This was easier than
# creating duplicates of a bunch of stuff. Default version is 8.
# Override: Required
if [ -z "$RLVER" ]; then
echo "RLVER is not defined."
exit 2
fi
# Set git branch name scheme
# Override: Allowed with caveats
GIT_BRANCH="r${RLVER}"
# 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
# Used to iterate over types of live images
VARIANTS=(XFCE KDE Workstation Workstation-Lite)

View File

@ -1 +1,15 @@
# Mirrormanager Mangling tools and other Accessories
Release Engineering Mangler Accessories
==================================================
This contains Mirror Manager mangling tools and other accessories.
Scripts
-------
* validate_repos -> Simple utility to validate mirror manager repositories
* quick-bump.py -> Simple utility to quickly bump a release version for a rebuild
Directories
-----------
* generators -> A directory of python and bash scripts for pungi/peridot data generation

116
mangle/quick-bump.py Executable file
View File

@ -0,0 +1,116 @@
#!/usr/bin/env python3
#
# quick-bump.py - Quickly bumps a release version for a rebuild. This is mostly
# used in cases of */src/* package rebuilds like for SIG's. It
# should be rare that the base distribution needs this.
import os
import subprocess
import sys
import argparse
import subprocess
parser = argparse.ArgumentParser()
parser.add_argument("--pkg", help="Package name to bump (can be comma delimited list)", required=True)
parser.add_argument("--branch", help="Package branch", required=True)
parser.add_argument("--sig", help="Name of SIG package", required=True)
parser.add_argument("--peridot-import", help="Tell peridot to import",
required=False, action='store_true')
parser.add_argument("--peridot-endpoint",
help="Peridot API Endpoint (PERIDOT_ENDPOINT)",
required=False, default="peridot-api.build.resf.org")
parser.add_argument("--peridot-hdr-endpoint",
help="Peridot HDR Endpoint (PERIDOT_HDR_ENDPOINT)",
required=False, default="hdr.build.resf.org")
parser.add_argument("--peridot-project-id",
help="Peridot project ID (PERIDOT_PROJECT_ID)",
required=False)
parser.add_argument("--peridot-client-id",
help="Peridot client ID (PERIDOT_CLIENT_ID)",
required=False)
parser.add_argument("--peridot-client-secret",
help="Peridot client secret (PERIDOT_CLIENT_SECRET)",
required=False)
parser.add_argument("--dry", help="Do a dry bump for testing",
required=False, action='store_true')
parser.add_argument("--git-user", default="Release Engineering")
parser.add_argument("--git-email", default="releng@rockylinux.org")
args = parser.parse_args()
user = 'Release Engineering <releng@rockylinux.org>'
comment = 'Release tag bump for rebuild (https://sig-core.rocky.page/rebuild/)'
if args.peridot_import:
peridot_api_endpoint = os.environ.get('PERIDOT_ENDPOINT') or args.peridot_endpoint
peridot_hdr_endpoint = os.environ.get('PERIDOT_HDR_ENDPOINT') or args.peridot_hdr_endpoint
peridot_project_id = os.environ.get('PERIDOT_PROJECT_ID') or args.peridot_project_id
peridot_client_id = os.environ.get('PERIDOT_CLIENT_ID') or args.peridot_client_id
peridot_client_secret = os.environ.get('PERIDOT_CLIENT_SECRET') or args.peridot_client_secret
print('Peridot import not supported yet')
sys.exit(1)
default_url = 'ssh://git@git.rockylinux.org:22220/staging/src/%s.git' % args.pkg
if args.sig:
default_url = 'ssh://git@git.rockylinux.org:22220/sig/%s/src/%s.git' % (args.sig, args.pkg)
# functions
workdir = '/var/tmp'
environment = os.environ
pkgs = args.pkg.split(',')
def runcmd(cmd, action, package, env, pwd=workdir):
"""
Runs a command using subprocess and returns 0 or 1
"""
try:
subprocess.check_call(cmd, env=env, cwd=pwd)
except subprocess.CalledProcessError as err:
sys.stderr.write('%s failed %s: %s\n' % (package, action, err))
return 1
return 0
for pkg in pkgs:
joined_dir = os.path.join(workdir, pkg)
spec_dir = os.path.join(workdir, pkg, 'SPECS')
print('Checking out ' + pkg)
gitcmd = ['git', 'clone', default_url, '--branch', args.branch,
joined_dir]
if runcmd(gitcmd, 'git clone', pkg, environment):
continue
files = os.listdir(spec_dir)
spec = ''
for file in files:
if file.endswith('.spec'):
spec = os.path.join(spec_dir, file)
break
if not spec:
sys.stderr.write('Failed to find a spec for %s\n' % pkg)
continue
print('Bumping release of %s' % spec)
bumprel = ['rpmdev-bumpspec', '-D', '-u', user, '-c', comment, spec]
if runcmd(bumprel, 'rpmdev-bumpspec', pkg, environment):
continue
print('Setting git user and email for this operation')
git_name = ['git', 'config', 'user.name', args.git_user]
git_mail = ['git', 'config', 'user.email', args.git_email]
if runcmd(git_name, 'git_name', pkg, environment, pwd=joined_dir):
continue
if runcmd(git_mail, 'git_mail', pkg, environment, pwd=joined_dir):
continue
print('Committing changes')
commit = ['git', 'commit', '-asm', comment, '--allow-empty']
if runcmd(commit, 'commit', pkg, environment, pwd=joined_dir):
continue
if not args.dry:
push = ['git', 'push']
print('Pushing changes for %s' % pkg)
if runcmd(push, 'push', pkg, environment, pwd=joined_dir):
continue