start python conversion

This commit is contained in:
Louis Abel 2022-05-20 01:13:57 -07:00
parent 7602ae1a44
commit b0bd9a8367
Signed by untrusted user: label
GPG Key ID: B37E62D143879B36
10 changed files with 235 additions and 0 deletions

4
iso/py/.gitignore vendored Normal file
View File

@ -0,0 +1,4 @@
__pycache__/
*.py[cod]
*$py.class
*.so

19
iso/py/README.md Normal file
View File

@ -0,0 +1,19 @@
iso
===
scripts
-------
* sync-variant-pungi
* sync-variant-peridot
* sync-all-pungi
* sync-all-peridot
* sync-sig
* build-all-iso
* sign-repos-only
wrappers
--------
* lorax-generators
* sync-generators

57
iso/py/common.py Normal file
View File

@ -0,0 +1,57 @@
# All imports are here
import platform
import time
import glob
import rpm
import yaml
# These are a bunch of colors we may use in terminal output
class Color:
RED = '\033[91m'
GREEN = '\033[92m'
PURPLE = '\033[95m'
CYAN = '\033[96m'
DARKCYAN = '\033[36m'
BLUE = '\033[94m'
YELLOW = '\033[93m'
UNDERLINE = '\033[4m'
BOLD = '\033[1m'
END = '\033[0m'
# vars and additional checks
#RLVER = rpm.expandMacro('%rhel')
RLVER = '9'
rldict = {}
arch = platform.machine()
# Importing the config from yaml
for conf in glob.iglob('configs/*.yaml'):
with open(conf, 'r', encoding="utf-8") as file:
rldict.update(yaml.safe_load(file))
# The system needs to be a RHEL-like system. It cannot be Fedora or SuSE.
#if "%rhel" in RLVER:
# raise SystemExit(Color.BOLD + 'This is not a RHEL-like system.' + Color.END
# + '\n\nPlease verify you are running on a RHEL-like system that is '
# 'not Fedora nor SuSE. This means that the %rhel macro will be '
# 'defined with a value equal to the version you are targetting. RHEL'
# ' and its derivatives have this set.')
# Generic rlvars for the particular EL release we're on. This does not have to
# be used. A different one can be assigned based on script need.
rlvars = rldict[RLVER]
# Is our arch allowed for this particular release? Some previous releases do
# not support ppc or s390x
if arch not in rlvars['allowed_arches']:
raise SystemExit(Color.BOLD + 'This architecture is not supported.'
+ Color.END + '\n\nEnsure that the architecture you are building '
'for is supported for this compose process.')
date_stamp = time.strftime("%Y%m%d", time.localtime())
COMPOSE_ROOT = "/mnt/compose/" + RLVER
COMPOSE_ISO_WORKDIR = COMPOSE_ROOT + "work/" + arch + "/" + date_stamp
STAGING_ROOT = "/mnt/repos-staging"
PRODUCTION_ROOT = "/mnt/repos-production"
CATEGORY_STUB = "/mirror/pub/rocky"
REVISION = rlvars['revision'] + '-' + rlvars['rclvl']

45
iso/py/configs/el8.yaml Normal file
View File

@ -0,0 +1,45 @@
---
'8':
revision: '8.6'
rclvl: 'RC2'
allowed_arches:
- x86_64
- aarch64
provide_multilib: False
repo_url_list: []
required_packages:
- 'lorax'
- 'genisoimage'
- 'isomd5sum'
symlink_refs:
devel: 'Devel'
NFV: 'nfv'
all_repos:
- 'BaseOS'
- 'AppStream'
- 'HighAvailability'
- 'ResilientStorage'
- 'PowerTools'
- 'RT'
- 'NFV'
- 'extras'
- 'devel'
- 'plus'
- 'rockyrpi'
no_comps_or_groups:
- 'extras'
- 'devel'
- 'plus'
- 'rockyrpi'
comps_or_groups:
- 'BaseOS'
- 'AppStream'
- 'HighAvailability'
- 'ResilientStorage'
- 'PowerTools'
- 'RT'
- 'NFV'
has_modules:
- 'AppStream'
- 'PowerTools'
...

66
iso/py/configs/el9.yaml Normal file
View File

@ -0,0 +1,66 @@
---
'9':
revision: '9.0'
rclvl: 'RC1'
allowed_arches:
- x86_64
- aarch64
- ppc64le
- s390x
provide_multilib: True
repo_url_list:
- 'https://yumrepofs.build.resf.org/v1/projects/55b17281-bc54-4929-8aca-a8a11d628738/repo/all'
- 'https://yumrepofs.build.resf.org/v1/projects/55b17281-bc54-4929-8aca-a8a11d628738/repo/BaseOS'
- 'https://yumrepofs.build.resf.org/v1/projects/55b17281-bc54-4929-8aca-a8a11d628738/repo/AppStream'
- 'https://yumrepofs.build.resf.org/v1/projects/55b17281-bc54-4929-8aca-a8a11d628738/repo/CRB'
- 'https://yumrepofs.build.resf.org/v1/projects/55b17281-bc54-4929-8aca-a8a11d628738/repo/HighAvailability'
- 'https://yumrepofs.build.resf.org/v1/projects/55b17281-bc54-4929-8aca-a8a11d628738/repo/ResilientStorage'
- 'https://yumrepofs.build.resf.org/v1/projects/55b17281-bc54-4929-8aca-a8a11d628738/repo/RT'
- 'https://yumrepofs.build.resf.org/v1/projects/55b17281-bc54-4929-8aca-a8a11d628738/repo/NFV'
- 'https://yumrepofs.build.resf.org/v1/projects/55b17281-bc54-4929-8aca-a8a11d628738/repo/SAP'
- 'https://yumrepofs.build.resf.org/v1/projects/55b17281-bc54-4929-8aca-a8a11d628738/repo/SAPHANA'
- 'https://yumrepofs.build.resf.org/v1/projects/55b17281-bc54-4929-8aca-a8a11d628738/repo/extras'
- 'https://yumrepofs.build.resf.org/v1/projects/55b17281-bc54-4929-8aca-a8a11d628738/repo/devel'
- 'https://yumrepofs.build.resf.org/v1/projects/55b17281-bc54-4929-8aca-a8a11d628738/repo/plus'
required_packages:
- 'lorax'
- 'genisoimage'
- 'isomd5sum'
symlink_refs:
devel: 'Devel'
NFV: 'nfv'
renames:
all: 'nplb'
all_repos:
- 'nplb'
- 'BaseOS'
- 'AppStream'
- 'HighAvailability'
- 'ResilientStorage'
- 'CRB'
- 'RT'
- 'NFV'
- 'SAP'
- 'SAPHANA'
- 'extras'
- 'devel'
- 'plus'
no_comps_or_groups:
- 'nplb'
- 'extras'
- 'devel'
- 'plus'
comps_or_groups:
- 'BaseOS'
- 'AppStream'
- 'HighAvailability'
- 'ResilientStorage'
- 'CRB'
- 'RT'
- 'NFV'
- 'SAP'
- 'SAPHANA'
has_modules:
- 'AppStream'
- 'CRB'
...

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

@ -0,0 +1,6 @@
#!/usr/bin/env python3
from common import *
print(platform.machine())
print(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)