From ccae1045b3ecd0867d8d9b664bd0657e04ae0aba Mon Sep 17 00:00:00 2001 From: Louis Abel Date: Wed, 8 Nov 2023 14:16:49 -0700 Subject: [PATCH] update versions of empanadas --- iso/empanadas/empanadas/configs/el9.yaml | 2 +- .../empanadas/scripts/build_image.py | 4 +- .../empanadas/scripts/generate_compose.py | 23 +- iso/empanadas/empanadas/util/dnf_utils.py | 28 +- iso/empanadas/empanadas/util/iso_utils.py | 28 +- iso/empanadas/empanadas/util/shared.py | 6 +- iso/empanadas/poetry.lock | 697 +++++++++--------- iso/empanadas/pyproject.toml | 16 +- mangle/generators/get_module_rpm_to_list.sh | 12 + mangle/generators/lh_to_beta_modules.sh | 57 ++ mangle/generators/lh_to_beta_rpms.sh | 21 + 11 files changed, 483 insertions(+), 411 deletions(-) create mode 100644 mangle/generators/get_module_rpm_to_list.sh create mode 100644 mangle/generators/lh_to_beta_modules.sh create mode 100644 mangle/generators/lh_to_beta_rpms.sh diff --git a/iso/empanadas/empanadas/configs/el9.yaml b/iso/empanadas/empanadas/configs/el9.yaml index 2b8f8e5..175ea73 100644 --- a/iso/empanadas/empanadas/configs/el9.yaml +++ b/iso/empanadas/empanadas/configs/el9.yaml @@ -16,7 +16,7 @@ - ppc64le - s390x provide_multilib: True - project_id: 'dff20351-7d36-4f7c-9eea-7f039f5026d0' + project_id: '6202c09e-6252-4d3a-bcd3-9c7751682970' repo_symlinks: NFV: 'nfv' renames: diff --git a/iso/empanadas/empanadas/scripts/build_image.py b/iso/empanadas/empanadas/scripts/build_image.py index a69ccec..79aca71 100644 --- a/iso/empanadas/empanadas/scripts/build_image.py +++ b/iso/empanadas/empanadas/scripts/build_image.py @@ -257,9 +257,9 @@ class ImageBuild: def kickstart_imagefactory_args(self) -> List[str]: if not self.kickstart_path.is_file(): - log.warn(f"Kickstart file is not available: {self.kickstart_path}") + log.warning(f"Kickstart file is not available: {self.kickstart_path}") if not debug: - log.warn("Exiting because debug mode is not enabled.") + log.warning("Exiting because debug mode is not enabled.") exit(2) return ["--file-parameter", "install_script", str(self.kickstart_path)] diff --git a/iso/empanadas/empanadas/scripts/generate_compose.py b/iso/empanadas/empanadas/scripts/generate_compose.py index e39ab8f..88ce69e 100755 --- a/iso/empanadas/empanadas/scripts/generate_compose.py +++ b/iso/empanadas/empanadas/scripts/generate_compose.py @@ -1,5 +1,6 @@ # This script can be called to do single syncs or full on syncs. +import os import argparse import logging import sys @@ -16,6 +17,7 @@ parser = argparse.ArgumentParser(description="Peridot Sync and Compose") parser.add_argument('--release', type=str, help="Major Release Version or major-type (eg 9-beta)", required=True) parser.add_argument('--sig', type=str, help="SIG Name if applicable") parser.add_argument('--symlink', action='store_true', help="symlink to latest") +parser.add_argument('--copy-old-compose', action='store_true', help="Runs an rsync from previous compose") parser.add_argument('--logger', type=str) # Parse them @@ -59,16 +61,21 @@ def run(): date_stamp, logger ) + compose_latest_dir = os.path.join( + config['compose_root'], + major, + "latest-{}-{}".format( + shortname, + profile, + ) + ) + if results.copy_old_compose: + if os.path.exists(compose_latest_dir): + previous_compose_path = os.path.realpath(compose_latest_dir) + else: + log.warning('No symlink exists; we cannot copy from the old compose') if results.symlink: - compose_latest_dir = os.path.join( - config['compose_root'], - major, - "latest-{}-{}".format( - shortname, - profile, - ) - ) if os.path.exists(compose_latest_dir): os.remove(compose_latest_dir) diff --git a/iso/empanadas/empanadas/util/dnf_utils.py b/iso/empanadas/empanadas/util/dnf_utils.py index ed33c99..d3a17a1 100644 --- a/iso/empanadas/empanadas/util/dnf_utils.py +++ b/iso/empanadas/empanadas/util/dnf_utils.py @@ -280,7 +280,7 @@ class RepoSync: raise SystemExit() if self.fullrun and self.refresh_extra_files: - self.log.warn(Color.WARN + 'A full run implies extra files are also deployed.') + self.log.warning(Color.WARN + 'A full run implies extra files are also deployed.') if not self.skip_all: self.sync(self.repo, sync_root, work_root, log_root, global_work_root, self.arch) @@ -1020,7 +1020,7 @@ class RepoSync: ) self.log.error(e) else: - self.log.warn(Color.WARN + repo_name + ' ' + a + ' os .treeinfo already exists') + self.log.warning(Color.WARN + repo_name + ' ' + a + ' os .treeinfo already exists') if not os.path.exists(os_disc_path) or (os.path.exists(os_disc_path) and refresh): try: @@ -1036,7 +1036,7 @@ class RepoSync: ) self.log.error(e) else: - self.log.warn(Color.WARN + repo_name + ' ' + a + + self.log.warning(Color.WARN + repo_name + ' ' + a + ' os .discinfo already exists' ) @@ -1053,7 +1053,7 @@ class RepoSync: ) self.log.error(e) else: - self.log.warn(Color.WARN + repo_name + ' ' + a + + self.log.warning(Color.WARN + repo_name + ' ' + a + ' os media.repo already exists' ) @@ -1075,7 +1075,7 @@ class RepoSync: ) self.log.error(e) else: - self.log.warn(Color.WARN + repo_name + ' ' + a + + self.log.warning(Color.WARN + repo_name + ' ' + a + ' kickstart .treeinfo already exists' ) @@ -1093,7 +1093,7 @@ class RepoSync: ) self.log.error(e) else: - self.log.warn(Color.FAIL + repo_name + ' ' + a + + self.log.warning(Color.FAIL + repo_name + ' ' + a + ' kickstart .discinfo already exists' ) @@ -1110,7 +1110,7 @@ class RepoSync: ) self.log.error(e) else: - self.log.warn(Color.WARN + repo_name + ' ' + a + + self.log.warning(Color.WARN + repo_name + ' ' + a + ' kickstart media.repo already exists' ) @@ -1153,7 +1153,7 @@ class RepoSync: ) self.log.error(e) else: - self.log.warn(Color.WARN + r + ' ' + a + + self.log.warning(Color.WARN + r + ' ' + a + ' debug .treeinfo already exists' ) @@ -1171,7 +1171,7 @@ class RepoSync: ) self.log.error(e) else: - self.log.warn(Color.WARN + r + ' ' + a + + self.log.warning(Color.WARN + r + ' ' + a + ' debug .discinfo already exists' ) @@ -1188,7 +1188,7 @@ class RepoSync: ) self.log.error(e) else: - self.log.warn(Color.WARN + repo_name + ' ' + a + + self.log.warning(Color.WARN + repo_name + ' ' + a + ' debug media.repo already exists' ) @@ -1227,7 +1227,7 @@ class RepoSync: self.log.error(Color.FAIL + repo_name + ' source os .treeinfo could not be written') self.log.error(e) else: - self.log.warn(Color.WARN + repo_name + ' source os .treeinfo already exists') + self.log.warning(Color.WARN + repo_name + ' source os .treeinfo already exists') if not os.path.exists(source_disc_path) or (os.path.exists(source_disc_path) and refresh): try: @@ -1241,7 +1241,7 @@ class RepoSync: self.log.error(Color.FAIL + repo_name + ' source os .discinfo could not be written') self.log.error(e) else: - self.log.warn(Color.WARN + repo_name + ' source .discinfo already exists') + self.log.warning(Color.WARN + repo_name + ' source .discinfo already exists') if not os.path.exists(source_media_path) or (os.path.exists(source_media_path) and refresh): try: @@ -1254,7 +1254,7 @@ class RepoSync: self.log.error(Color.FAIL + repo_name + ' source os media.repo could not be written') self.log.error(e) else: - self.log.warn(Color.WARN + repo_name + ' source media.repo already exists') + self.log.warning(Color.WARN + repo_name + ' source media.repo already exists') def tweak_treeinfo(self, repo, sync_root, arch): """ @@ -1911,7 +1911,7 @@ class SigRepoSync: raise SystemExit() if self.fullrun and self.refresh_extra_files: - self.log.warn(Color.WARN + 'A full run implies extra files are also deployed.') + self.log.warning(Color.WARN + 'A full run implies extra files are also deployed.') self.sync(self.sigrepo, sync_root, work_root, log_root, global_work_root, self.arch) diff --git a/iso/empanadas/empanadas/util/iso_utils.py b/iso/empanadas/empanadas/util/iso_utils.py index b82df0d..ed6dfdb 100644 --- a/iso/empanadas/empanadas/util/iso_utils.py +++ b/iso/empanadas/empanadas/util/iso_utils.py @@ -462,7 +462,7 @@ class IsoBuild: if not force_unpack: file_check = os.path.join(unpack_dir, 'lorax/.treeinfo') if os.path.exists(file_check): - self.log.warn(Color.WARN + 'Artifact (' + arch + ') already unpacked') + self.log.warning(Color.WARN + 'Artifact (' + arch + ') already unpacked') return self.log.info('Unpacking %s' % tarball) @@ -498,7 +498,7 @@ class IsoBuild: if not force_unpack: file_check = os.path.join(path_to_image, '.treeinfo') if os.path.exists(file_check): - self.log.warn(Color.WARN + 'Lorax image for ' + image + ' already exists') + self.log.warning(Color.WARN + 'Lorax image for ' + image + ' already exists') return self.log.info('Copying base lorax to %s directory...' % image) @@ -544,7 +544,7 @@ class IsoBuild: if not force_unpack: file_check = isobootpath if os.path.exists(file_check): - self.log.warn(Color.WARN + 'Boot image (' + discname + ') already exists') + self.log.warning(Color.WARN + 'Boot image (' + discname + ') already exists') return self.log.info('Copying %s boot iso to work directory...' % arch) @@ -643,7 +643,7 @@ class IsoBuild: found_files.append('/images/boot.iso') if len(found_files) > 0: - self.log.warn(Color.WARN + 'Images and data for ' + repo + ' and ' + arch + ' already exists.') + self.log.warning(Color.WARN + 'Images and data for ' + repo + ' and ' + arch + ' already exists.') return self.log.info(Color.INFO + 'Copying images and data for ' + repo + ' ' + arch) @@ -1371,7 +1371,7 @@ class IsoBuild: # latest_artifacts should have at least 1 result if has_variants, else == 1 if not len(latest_artifacts[name][variantname]) > 0: - self.log.warn(Color.WARN + 'No images found for ' + variantname + + self.log.warning(Color.WARN + 'No images found for ' + variantname + '. This means it will be skipped.') del imagename @@ -1403,7 +1403,7 @@ class IsoBuild: ) if arch not in keysect: - self.log.warn(Color.WARN + 'This architecture (' + arch + ') does not exist for this image orvar is a string.') + self.log.warning(Color.WARN + 'This architecture (' + arch + ') does not exist for this image orvar is a string.') continue source_path = keysect[arch] @@ -1648,7 +1648,7 @@ class LiveBuild: self.log.info(self.revision) if not os.path.exists(self.compose_latest_dir): - self.log.warn(Color.WARN + 'A compose directory was not found ' + + self.log.warning(Color.WARN + 'A compose directory was not found ' + 'here. If there is a failure, it may be due to it ' + 'missing. You may want to generate a fake compose if ' + 'you are simply making your own live images and you run ' + @@ -1841,8 +1841,8 @@ class LiveBuild: bad_exit_list = [] checksum_list = [] entry_name_list = [] - self.log.warn(Color.WARN + 'There is no support for podman in empanadas.') - self.log.warn(Color.WARN + "If this fails, it's on you to determine the fix.") + self.log.warning(Color.WARN + 'There is no support for podman in empanadas.') + self.log.warning(Color.WARN + "If this fails, it's on you to determine the fix.") for i in images: image_name = i entry_name = f'buildLiveImage-{arch}-{i}.sh' @@ -1947,11 +1947,11 @@ class LiveBuild: if self.justcopyit: if os.path.exists(os.path.join(live_dir_arch, isoname)): - self.log.warn(Color.WARN + 'Image already exists.') + self.log.warning(Color.WARN + 'Image already exists.') if self.force_build: - self.log.warn(Color.WARN + 'Building anyway.') + self.log.warning(Color.WARN + 'Building anyway.') else: - self.log.warn(Color.WARN + 'Skipping.') + self.log.warning(Color.WARN + 'Skipping.') return live_iso_cmd = f'/bin/bash {entries_dir}/liveisobuild-{arch}-{image}.sh' @@ -1962,11 +1962,11 @@ class LiveBuild: self.log.error('See the logs for more information.') raise SystemExit() - self.log.warn( + self.log.warning( Color.WARN + 'This is meant for builds done in peridot or ' + 'locally for an end user.' ) - self.log.warn( + self.log.warning( Color.WARN + 'If you are looping images, your built image may get ' + 'overwritten. Ensure you have justcopyit enabled to avoid this.' diff --git a/iso/empanadas/empanadas/util/shared.py b/iso/empanadas/empanadas/util/shared.py index 5b27539..0c95998 100644 --- a/iso/empanadas/empanadas/util/shared.py +++ b/iso/empanadas/empanadas/util/shared.py @@ -621,7 +621,7 @@ class Shared: s3 = boto3.client('s3') if os.path.exists(dest): if not force_download: - logger.warn( + logger.warning( '[' + Color.BOLD + Color.YELLOW + 'WARN' + Color.END + '] ' + 'Artifact at ' + dest + ' already exists' ) @@ -703,7 +703,7 @@ class Shared: """ if os.path.exists(dest): if not force_download: - logger.warn( + logger.warning( '[' + Color.BOLD + Color.YELLOW + 'WARN' + Color.END + '] ' + 'Artifact at ' + dest + ' already exists' ) @@ -1157,7 +1157,7 @@ class Shared: shutil.copy2(src, extra_files_dir) shutil.copy2(src, metadata_dir) except: - logger.warn(Color.WARN + 'Extra file not copied: ' + src) + logger.warning(Color.WARN + 'Extra file not copied: ' + src) try: shutil.rmtree(tmpclone) diff --git a/iso/empanadas/poetry.lock b/iso/empanadas/poetry.lock index b6dbe65..b451e61 100644 --- a/iso/empanadas/poetry.lock +++ b/iso/empanadas/poetry.lock @@ -1,32 +1,46 @@ +# This file is automatically @generated by Poetry 1.5.1 and should not be changed by hand. + [[package]] name = "atomicwrites" version = "1.4.1" description = "Atomic file writes." -category = "dev" optional = false python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ + {file = "atomicwrites-1.4.1.tar.gz", hash = "sha256:81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11"}, +] [[package]] name = "attrs" -version = "21.4.0" +version = "23.1.0" description = "Classes Without Boilerplate" -category = "main" optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +python-versions = ">=3.7" +files = [ + {file = "attrs-23.1.0-py3-none-any.whl", hash = "sha256:1f28b4522cdc2fb4256ac1a020c78acf9cba2c6b461ccd2c126f3aa8e8335d04"}, + {file = "attrs-23.1.0.tar.gz", hash = "sha256:6279836d581513a26f1bf235f9acd333bc9115683f14f7e8fae46c98fc50e015"}, +] + +[package.dependencies] +importlib-metadata = {version = "*", markers = "python_version < \"3.8\""} [package.extras] -dev = ["cloudpickle", "coverage[toml] (>=5.0.2)", "furo", "hypothesis", "mypy", "pre-commit", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "six", "sphinx", "sphinx-notfound-page", "zope.interface"] -docs = ["furo", "sphinx", "sphinx-notfound-page", "zope.interface"] -tests = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "six", "zope.interface"] -tests-no-zope = ["cloudpickle", "coverage[toml] (>=5.0.2)", "hypothesis", "mypy", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "six"] +cov = ["attrs[tests]", "coverage[toml] (>=5.3)"] +dev = ["attrs[docs,tests]", "pre-commit"] +docs = ["furo", "myst-parser", "sphinx", "sphinx-notfound-page", "sphinxcontrib-towncrier", "towncrier", "zope-interface"] +tests = ["attrs[tests-no-zope]", "zope-interface"] +tests-no-zope = ["cloudpickle", "hypothesis", "mypy (>=1.1.1)", "pympler", "pytest (>=4.3.0)", "pytest-mypy-plugins", "pytest-xdist[psutil]"] [[package]] name = "boto3" version = "1.28.81" description = "The AWS SDK for Python" -category = "main" optional = false python-versions = ">= 3.7" +files = [ + {file = "boto3-1.28.81-py3-none-any.whl", hash = "sha256:66e457b5f1580eb1f29855d867dec743eeec42b3935372eee5e6730e5e3124df"}, + {file = "boto3-1.28.81.tar.gz", hash = "sha256:6ec7da884eed5c07e679d251bd5c66e4e2f64755ed98270a20323b241c54a743"}, +] [package.dependencies] botocore = ">=1.31.81,<1.32.0" @@ -40,9 +54,12 @@ crt = ["botocore[crt] (>=1.21.0,<2.0a0)"] name = "botocore" version = "1.31.81" description = "Low-level, data-driven core of boto 3." -category = "main" optional = false python-versions = ">= 3.7" +files = [ + {file = "botocore-1.31.81-py3-none-any.whl", hash = "sha256:eeb09a77c3e931667c9442565e8697e89e685089912a96d95f65b63e4b2c8c71"}, + {file = "botocore-1.31.81.tar.gz", hash = "sha256:afb0886c5a5a542f763cc1644b1c1b4a783698d79980eb48052d1676d6b3d14e"}, +] [package.dependencies] jmespath = ">=0.7.1,<2.0.0" @@ -59,338 +76,20 @@ crt = ["awscrt (==0.16.26)"] name = "certifi" version = "2023.7.22" description = "Python package for providing Mozilla's CA Bundle." -category = "main" optional = false python-versions = ">=3.6" +files = [ + {file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"}, + {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"}, +] [[package]] name = "charset-normalizer" version = "3.3.2" description = "The Real First Universal Charset Detector. Open, modern and actively maintained alternative to Chardet." -category = "main" optional = false python-versions = ">=3.7.0" - -[[package]] -name = "colorama" -version = "0.4.6" -description = "Cross-platform colored terminal text." -category = "dev" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" - -[[package]] -name = "idna" -version = "3.4" -description = "Internationalized Domain Names in Applications (IDNA)" -category = "main" -optional = false -python-versions = ">=3.5" - -[[package]] -name = "importlib-metadata" -version = "6.7.0" -description = "Read metadata from Python packages" -category = "dev" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""} -zipp = ">=0.5" - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -perf = ["ipython"] -testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] - -[[package]] -name = "importlib-resources" -version = "5.12.0" -description = "Read resources from Python packages" -category = "main" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] - -[[package]] -name = "jinja2" -version = "2.11.3" -description = "A very fast and expressive template engine." -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" - -[package.dependencies] -MarkupSafe = ">=0.23" - -[package.extras] -i18n = ["Babel (>=0.8)"] - -[[package]] -name = "jmespath" -version = "1.0.1" -description = "JSON Matching Expressions" -category = "main" -optional = false -python-versions = ">=3.7" - -[[package]] -name = "kobo" -version = "0.24.2" -description = "A pile of python modules used by Red Hat release engineering to build their tools" -category = "main" -optional = false -python-versions = ">2.6" - -[package.dependencies] -six = "*" - -[[package]] -name = "markupsafe" -version = "2.0.1" -description = "Safely add untrusted strings to HTML/XML markup." -category = "main" -optional = false -python-versions = ">=3.6" - -[[package]] -name = "more-itertools" -version = "9.1.0" -description = "More routines for operating on iterables, beyond itertools" -category = "dev" -optional = false -python-versions = ">=3.7" - -[[package]] -name = "packaging" -version = "23.2" -description = "Core utilities for Python packages" -category = "dev" -optional = false -python-versions = ">=3.7" - -[[package]] -name = "pluggy" -version = "0.13.1" -description = "plugin and hook calling mechanisms for python" -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" - -[package.dependencies] -importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} - -[package.extras] -dev = ["pre-commit", "tox"] - -[[package]] -name = "productmd" -version = "1.33" -description = "Product, compose and installation media metadata library" -category = "main" -optional = false -python-versions = "*" - -[package.dependencies] -six = "*" - -[[package]] -name = "py" -version = "1.11.0" -description = "library with cross-python path, ini-parsing, io, code, log facilities" -category = "dev" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" - -[[package]] -name = "pytest" -version = "5.4.3" -description = "pytest: simple powerful testing with Python" -category = "dev" -optional = false -python-versions = ">=3.5" - -[package.dependencies] -atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} -attrs = ">=17.4.0" -colorama = {version = "*", markers = "sys_platform == \"win32\""} -importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} -more-itertools = ">=4.0.0" -packaging = "*" -pluggy = ">=0.12,<1.0" -py = ">=1.5.0" -wcwidth = "*" - -[package.extras] -checkqa-mypy = ["mypy (==v0.761)"] -testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] - -[[package]] -name = "python-dateutil" -version = "2.8.2" -description = "Extensions to the standard Python datetime module" -category = "main" -optional = false -python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" - -[package.dependencies] -six = ">=1.5" - -[[package]] -name = "pyyaml" -version = "6.0.1" -description = "YAML parser and emitter for Python" -category = "main" -optional = false -python-versions = ">=3.6" - -[[package]] -name = "requests" -version = "2.31.0" -description = "Python HTTP for Humans." -category = "main" -optional = false -python-versions = ">=3.7" - -[package.dependencies] -certifi = ">=2017.4.17" -charset-normalizer = ">=2,<4" -idna = ">=2.5,<4" -urllib3 = ">=1.21.1,<3" - -[package.extras] -socks = ["PySocks (>=1.5.6,!=1.5.7)"] -use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] - -[[package]] -name = "rpm" -version = "0.1.0" -description = "Shim RPM module for use in virtualenvs." -category = "main" -optional = false -python-versions = ">=3.6" - -[package.extras] -testing = ["tox"] - -[[package]] -name = "s3transfer" -version = "0.7.0" -description = "An Amazon S3 Transfer Manager" -category = "main" -optional = false -python-versions = ">= 3.7" - -[package.dependencies] -botocore = ">=1.12.36,<2.0a.0" - -[package.extras] -crt = ["botocore[crt] (>=1.20.29,<2.0a.0)"] - -[[package]] -name = "six" -version = "1.16.0" -description = "Python 2 and 3 compatibility utilities" -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" - -[[package]] -name = "typing-extensions" -version = "4.7.1" -description = "Backported and Experimental Type Hints for Python 3.7+" -category = "dev" -optional = false -python-versions = ">=3.7" - -[[package]] -name = "urllib3" -version = "1.26.18" -description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" -optional = false -python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" - -[package.extras] -brotli = ["brotli (==1.0.9)", "brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] -secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] -socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] - -[[package]] -name = "urllib3" -version = "2.0.7" -description = "HTTP library with thread-safe connection pooling, file post, and more." -category = "main" -optional = false -python-versions = ">=3.7" - -[package.extras] -brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] -secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"] -socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] -zstd = ["zstandard (>=0.18.0)"] - -[[package]] -name = "wcwidth" -version = "0.2.9" -description = "Measures the displayed width of unicode strings in a terminal" -category = "dev" -optional = false -python-versions = "*" - -[[package]] -name = "xmltodict" -version = "0.13.0" -description = "Makes working with XML feel like you are working with JSON" -category = "main" -optional = false -python-versions = ">=3.4" - -[[package]] -name = "zipp" -version = "3.15.0" -description = "Backport of pathlib-compatible object wrapper for zip files" -category = "main" -optional = false -python-versions = ">=3.7" - -[package.extras] -docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] -testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] - -[metadata] -lock-version = "1.1" -python-versions = ">=3.7,<4" -content-hash = "d02a16fa718931c809fe8c7cfe4c993082e037ee2b290859a90b4f02d93d02d6" - -[metadata.files] -atomicwrites = [ - {file = "atomicwrites-1.4.1.tar.gz", hash = "sha256:81b2c9071a49367a7f770170e5eec8cb66567cfbbc8c73d20ce5ca4a8d71cf11"}, -] -attrs = [ - {file = "attrs-21.4.0-py2.py3-none-any.whl", hash = "sha256:2d27e3784d7a565d36ab851fe94887c5eccd6a463168875832a1be79c82828b4"}, - {file = "attrs-21.4.0.tar.gz", hash = "sha256:626ba8234211db98e869df76230a137c4c40a12d72445c45d5f5b716f076e2fd"}, -] -boto3 = [ - {file = "boto3-1.28.81-py3-none-any.whl", hash = "sha256:66e457b5f1580eb1f29855d867dec743eeec42b3935372eee5e6730e5e3124df"}, - {file = "boto3-1.28.81.tar.gz", hash = "sha256:6ec7da884eed5c07e679d251bd5c66e4e2f64755ed98270a20323b241c54a743"}, -] -botocore = [ - {file = "botocore-1.31.81-py3-none-any.whl", hash = "sha256:eeb09a77c3e931667c9442565e8697e89e685089912a96d95f65b63e4b2c8c71"}, - {file = "botocore-1.31.81.tar.gz", hash = "sha256:afb0886c5a5a542f763cc1644b1c1b4a783698d79980eb48052d1676d6b3d14e"}, -] -certifi = [ - {file = "certifi-2023.7.22-py3-none-any.whl", hash = "sha256:92d6037539857d8206b8f6ae472e8b77db8058fec5937a1ef3f54304089edbb9"}, - {file = "certifi-2023.7.22.tar.gz", hash = "sha256:539cc1d13202e33ca466e88b2807e29f4c13049d6d87031a3c110744495cb082"}, -] -charset-normalizer = [ +files = [ {file = "charset-normalizer-3.3.2.tar.gz", hash = "sha256:f30c3cb33b24454a82faecaf01b19c18562b1e89558fb6c56de4d9118a032fd5"}, {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:25baf083bf6f6b341f4121c2f3c548875ee6f5339300e08be3f2b2ba1721cdd3"}, {file = "charset_normalizer-3.3.2-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:06435b539f889b1f6f4ac1758871aae42dc3a8c0e24ac9e60c2384973ad73027"}, @@ -482,34 +181,116 @@ charset-normalizer = [ {file = "charset_normalizer-3.3.2-cp39-cp39-win_amd64.whl", hash = "sha256:b01b88d45a6fcb69667cd6d2f7a9aeb4bf53760d7fc536bf679ec94fe9f3ff3d"}, {file = "charset_normalizer-3.3.2-py3-none-any.whl", hash = "sha256:3e4d1f6587322d2788836a99c69062fbb091331ec940e02d12d179c1d53e25fc"}, ] -colorama = [ + +[[package]] +name = "colorama" +version = "0.4.6" +description = "Cross-platform colored terminal text." +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,!=3.3.*,!=3.4.*,!=3.5.*,!=3.6.*,>=2.7" +files = [ {file = "colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6"}, {file = "colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44"}, ] -idna = [ + +[[package]] +name = "idna" +version = "3.4" +description = "Internationalized Domain Names in Applications (IDNA)" +optional = false +python-versions = ">=3.5" +files = [ {file = "idna-3.4-py3-none-any.whl", hash = "sha256:90b77e79eaa3eba6de819a0c442c0b4ceefc341a7a2ab77d7562bf49f425c5c2"}, {file = "idna-3.4.tar.gz", hash = "sha256:814f528e8dead7d329833b91c5faa87d60bf71824cd12a7530b5526063d02cb4"}, ] -importlib-metadata = [ + +[[package]] +name = "importlib-metadata" +version = "6.7.0" +description = "Read metadata from Python packages" +optional = false +python-versions = ">=3.7" +files = [ {file = "importlib_metadata-6.7.0-py3-none-any.whl", hash = "sha256:cb52082e659e97afc5dac71e79de97d8681de3aa07ff18578330904a9d18e5b5"}, {file = "importlib_metadata-6.7.0.tar.gz", hash = "sha256:1aaf550d4f73e5d6783e7acb77aec43d49da8017410afae93822cc9cca98c4d4"}, ] -importlib-resources = [ + +[package.dependencies] +typing-extensions = {version = ">=3.6.4", markers = "python_version < \"3.8\""} +zipp = ">=0.5" + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +perf = ["ipython"] +testing = ["flufl.flake8", "importlib-resources (>=1.3)", "packaging", "pyfakefs", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-mypy (>=0.9.1)", "pytest-perf (>=0.9.2)", "pytest-ruff"] + +[[package]] +name = "importlib-resources" +version = "5.12.0" +description = "Read resources from Python packages" +optional = false +python-versions = ">=3.7" +files = [ {file = "importlib_resources-5.12.0-py3-none-any.whl", hash = "sha256:7b1deeebbf351c7578e09bf2f63fa2ce8b5ffec296e0d349139d43cca061a81a"}, {file = "importlib_resources-5.12.0.tar.gz", hash = "sha256:4be82589bf5c1d7999aedf2a45159d10cb3ca4f19b2271f8792bc8e6da7b22f6"}, ] -jinja2 = [ + +[package.dependencies] +zipp = {version = ">=3.1.0", markers = "python_version < \"3.10\""} + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["flake8 (<5)", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] + +[[package]] +name = "jinja2" +version = "2.11.3" +description = "A very fast and expressive template engine." +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ {file = "Jinja2-2.11.3-py2.py3-none-any.whl", hash = "sha256:03e47ad063331dd6a3f04a43eddca8a966a26ba0c5b7207a9a9e4e08f1b29419"}, {file = "Jinja2-2.11.3.tar.gz", hash = "sha256:a6d58433de0ae800347cab1fa3043cebbabe8baa9d29e668f1c768cb87a333c6"}, ] -jmespath = [ + +[package.dependencies] +MarkupSafe = ">=0.23" + +[package.extras] +i18n = ["Babel (>=0.8)"] + +[[package]] +name = "jmespath" +version = "1.0.1" +description = "JSON Matching Expressions" +optional = false +python-versions = ">=3.7" +files = [ {file = "jmespath-1.0.1-py3-none-any.whl", hash = "sha256:02e2e4cc71b5bcab88332eebf907519190dd9e6e82107fa7f83b1003a6252980"}, {file = "jmespath-1.0.1.tar.gz", hash = "sha256:90261b206d6defd58fdd5e85f478bf633a2901798906be2ad389150c5c60edbe"}, ] -kobo = [ - {file = "kobo-0.24.2.tar.gz", hash = "sha256:1b3c17260a93d933d2238884373fbf3485ecd417d930acf984285dc012410e2b"}, + +[[package]] +name = "kobo" +version = "0.33.0" +description = "A pile of python modules used by Red Hat release engineering to build their tools" +optional = false +python-versions = ">=3.6" +files = [ + {file = "kobo-0.33.0-py3-none-any.whl", hash = "sha256:50f2eef41d1e528eba0bcdc04e6d88073353e6815abb86bf4fe3b1a7be449039"}, + {file = "kobo-0.33.0.tar.gz", hash = "sha256:34711f4ad0f38600bf7aafe6039b24d94458212de8b2b67c4b0c3144d47ef617"}, ] -markupsafe = [ + +[package.dependencies] +six = "*" + +[[package]] +name = "markupsafe" +version = "2.0.1" +description = "Safely add untrusted strings to HTML/XML markup." +optional = false +python-versions = ">=3.6" +files = [ {file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:d8446c54dc28c01e5a2dbac5a25f071f6653e6e40f3a8818e8b45d790fe6ef53"}, {file = "MarkupSafe-2.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:36bc903cbb393720fad60fc28c10de6acf10dc6cc883f3e24ee4012371399a38"}, {file = "MarkupSafe-2.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2d7d807855b419fc2ed3e631034685db6079889a1f01d5d9dac950f764da3dad"}, @@ -580,35 +361,118 @@ markupsafe = [ {file = "MarkupSafe-2.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:693ce3f9e70a6cf7d2fb9e6c9d8b204b6b39897a2c4a1aa65728d5ac97dcc1d8"}, {file = "MarkupSafe-2.0.1.tar.gz", hash = "sha256:594c67807fb16238b30c44bdf74f36c02cdf22d1c8cda91ef8a0ed8dabf5620a"}, ] -more-itertools = [ + +[[package]] +name = "more-itertools" +version = "9.1.0" +description = "More routines for operating on iterables, beyond itertools" +optional = false +python-versions = ">=3.7" +files = [ {file = "more-itertools-9.1.0.tar.gz", hash = "sha256:cabaa341ad0389ea83c17a94566a53ae4c9d07349861ecb14dc6d0345cf9ac5d"}, {file = "more_itertools-9.1.0-py3-none-any.whl", hash = "sha256:d2bc7f02446e86a68911e58ded76d6561eea00cddfb2a91e7019bbb586c799f3"}, ] -packaging = [ + +[[package]] +name = "packaging" +version = "23.2" +description = "Core utilities for Python packages" +optional = false +python-versions = ">=3.7" +files = [ {file = "packaging-23.2-py3-none-any.whl", hash = "sha256:8c491190033a9af7e1d931d0b5dacc2ef47509b34dd0de67ed209b5203fc88c7"}, {file = "packaging-23.2.tar.gz", hash = "sha256:048fb0e9405036518eaaf48a55953c750c11e1a1b68e0dd1a9d62ed0c092cfc5"}, ] -pluggy = [ + +[[package]] +name = "pluggy" +version = "0.13.1" +description = "plugin and hook calling mechanisms for python" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*" +files = [ {file = "pluggy-0.13.1-py2.py3-none-any.whl", hash = "sha256:966c145cd83c96502c3c3868f50408687b38434af77734af1e9ca461a4081d2d"}, {file = "pluggy-0.13.1.tar.gz", hash = "sha256:15b2acde666561e1298d71b523007ed7364de07029219b604cf808bfa1c765b0"}, ] -productmd = [ - {file = "productmd-1.33-py3-none-any.whl", hash = "sha256:467dfeb84e74834b6a65508536ccd8ec2d81c24a0ecee5e77d2c358e97eae164"}, - {file = "productmd-1.33.tar.gz", hash = "sha256:aaf49bdd2a5cb97f7c6b5011f669dbed153efc7bc61e6935fa796a1b94d16b7e"}, + +[package.dependencies] +importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} + +[package.extras] +dev = ["pre-commit", "tox"] + +[[package]] +name = "productmd" +version = "1.37" +description = "Product, compose and installation media metadata library" +optional = false +python-versions = "*" +files = [ + {file = "productmd-1.37-py3-none-any.whl", hash = "sha256:9f037ca1807f3ec293a61be2c989da52956c10ffd09b05f2166c8d26f70a17f0"}, + {file = "productmd-1.37.tar.gz", hash = "sha256:8d9057d9874f159a0a581e8c3b5e0c39fff9794fc010ad379d0c88d81c7adccd"}, ] -py = [ + +[package.dependencies] +six = "*" + +[[package]] +name = "py" +version = "1.11.0" +description = "library with cross-python path, ini-parsing, io, code, log facilities" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*" +files = [ {file = "py-1.11.0-py2.py3-none-any.whl", hash = "sha256:607c53218732647dff4acdfcd50cb62615cedf612e72d1724fb1a0cc6405b378"}, {file = "py-1.11.0.tar.gz", hash = "sha256:51c75c4126074b472f746a24399ad32f6053d1b34b68d2fa41e558e6f4a98719"}, ] -pytest = [ + +[[package]] +name = "pytest" +version = "5.4.3" +description = "pytest: simple powerful testing with Python" +optional = false +python-versions = ">=3.5" +files = [ {file = "pytest-5.4.3-py3-none-any.whl", hash = "sha256:5c0db86b698e8f170ba4582a492248919255fcd4c79b1ee64ace34301fb589a1"}, {file = "pytest-5.4.3.tar.gz", hash = "sha256:7979331bfcba207414f5e1263b5a0f8f521d0f457318836a7355531ed1a4c7d8"}, ] -python-dateutil = [ + +[package.dependencies] +atomicwrites = {version = ">=1.0", markers = "sys_platform == \"win32\""} +attrs = ">=17.4.0" +colorama = {version = "*", markers = "sys_platform == \"win32\""} +importlib-metadata = {version = ">=0.12", markers = "python_version < \"3.8\""} +more-itertools = ">=4.0.0" +packaging = "*" +pluggy = ">=0.12,<1.0" +py = ">=1.5.0" +wcwidth = "*" + +[package.extras] +checkqa-mypy = ["mypy (==v0.761)"] +testing = ["argcomplete", "hypothesis (>=3.56)", "mock", "nose", "requests", "xmlschema"] + +[[package]] +name = "python-dateutil" +version = "2.8.2" +description = "Extensions to the standard Python datetime module" +optional = false +python-versions = "!=3.0.*,!=3.1.*,!=3.2.*,>=2.7" +files = [ {file = "python-dateutil-2.8.2.tar.gz", hash = "sha256:0123cacc1627ae19ddf3c27a5de5bd67ee4586fbdd6440d9748f8abb483d3e86"}, {file = "python_dateutil-2.8.2-py2.py3-none-any.whl", hash = "sha256:961d03dc3453ebbc59dbdea9e4e11c5651520a876d0f4db161e8674aae935da9"}, ] -pyyaml = [ + +[package.dependencies] +six = ">=1.5" + +[[package]] +name = "pyyaml" +version = "6.0.1" +description = "YAML parser and emitter for Python" +optional = false +python-versions = ">=3.6" +files = [ {file = "PyYAML-6.0.1-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:d858aa552c999bc8a8d57426ed01e40bef403cd8ccdd0fc5f6f04a00414cac2a"}, {file = "PyYAML-6.0.1-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:fd66fc5d0da6d9815ba2cebeb4205f95818ff4b79c3ebe268e75d961704af52f"}, {file = "PyYAML-6.0.1-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:69b023b2b4daa7548bcfbd4aa3da05b3a74b772db9e23b982788168117739938"}, @@ -660,41 +524,152 @@ pyyaml = [ {file = "PyYAML-6.0.1-cp39-cp39-win_amd64.whl", hash = "sha256:510c9deebc5c0225e8c96813043e62b680ba2f9c50a08d3724c7f28a747d1486"}, {file = "PyYAML-6.0.1.tar.gz", hash = "sha256:bfdf460b1736c775f2ba9f6a92bca30bc2095067b8a9d77876d1fad6cc3b4a43"}, ] -requests = [ + +[[package]] +name = "requests" +version = "2.31.0" +description = "Python HTTP for Humans." +optional = false +python-versions = ">=3.7" +files = [ {file = "requests-2.31.0-py3-none-any.whl", hash = "sha256:58cd2187c01e70e6e26505bca751777aa9f2ee0b7f4300988b709f44e013003f"}, {file = "requests-2.31.0.tar.gz", hash = "sha256:942c5a758f98d790eaed1a29cb6eefc7ffb0d1cf7af05c3d2791656dbd6ad1e1"}, ] -rpm = [ + +[package.dependencies] +certifi = ">=2017.4.17" +charset-normalizer = ">=2,<4" +idna = ">=2.5,<4" +urllib3 = ">=1.21.1,<3" + +[package.extras] +socks = ["PySocks (>=1.5.6,!=1.5.7)"] +use-chardet-on-py3 = ["chardet (>=3.0.2,<6)"] + +[[package]] +name = "rpm" +version = "0.1.0" +description = "Shim RPM module for use in virtualenvs." +optional = false +python-versions = ">=3.6" +files = [ {file = "rpm-0.1.0-py3-none-any.whl", hash = "sha256:3664381f6f3cf050e97f49619cf57abacf3e77d68ddd3bfea3e7459c7c5f03f9"}, {file = "rpm-0.1.0.tar.gz", hash = "sha256:0e320a806fb61c3980c0cd0c5f5faec97c73c347432902ba2955a08a7b1a034f"}, ] -s3transfer = [ + +[package.extras] +testing = ["tox"] + +[[package]] +name = "s3transfer" +version = "0.7.0" +description = "An Amazon S3 Transfer Manager" +optional = false +python-versions = ">= 3.7" +files = [ {file = "s3transfer-0.7.0-py3-none-any.whl", hash = "sha256:10d6923c6359175f264811ef4bf6161a3156ce8e350e705396a7557d6293c33a"}, {file = "s3transfer-0.7.0.tar.gz", hash = "sha256:fd3889a66f5fe17299fe75b82eae6cf722554edca744ca5d5fe308b104883d2e"}, ] -six = [ + +[package.dependencies] +botocore = ">=1.12.36,<2.0a.0" + +[package.extras] +crt = ["botocore[crt] (>=1.20.29,<2.0a.0)"] + +[[package]] +name = "six" +version = "1.16.0" +description = "Python 2 and 3 compatibility utilities" +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*" +files = [ {file = "six-1.16.0-py2.py3-none-any.whl", hash = "sha256:8abb2f1d86890a2dfb989f9a77cfcfd3e47c2a354b01111771326f8aa26e0254"}, {file = "six-1.16.0.tar.gz", hash = "sha256:1e61c37477a1626458e36f7b1d82aa5c9b094fa4802892072e49de9c60c4c926"}, ] -typing-extensions = [ + +[[package]] +name = "typing-extensions" +version = "4.7.1" +description = "Backported and Experimental Type Hints for Python 3.7+" +optional = false +python-versions = ">=3.7" +files = [ {file = "typing_extensions-4.7.1-py3-none-any.whl", hash = "sha256:440d5dd3af93b060174bf433bccd69b0babc3b15b1a8dca43789fd7f61514b36"}, {file = "typing_extensions-4.7.1.tar.gz", hash = "sha256:b75ddc264f0ba5615db7ba217daeb99701ad295353c45f9e95963337ceeeffb2"}, ] -urllib3 = [ + +[[package]] +name = "urllib3" +version = "1.26.18" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*, !=3.4.*, !=3.5.*" +files = [ {file = "urllib3-1.26.18-py2.py3-none-any.whl", hash = "sha256:34b97092d7e0a3a8cf7cd10e386f401b3737364026c45e622aa02903dffe0f07"}, {file = "urllib3-1.26.18.tar.gz", hash = "sha256:f8ecc1bba5667413457c529ab955bf8c67b45db799d159066261719e328580a0"}, +] + +[package.extras] +brotli = ["brotli (==1.0.9)", "brotli (>=1.0.9)", "brotlicffi (>=0.8.0)", "brotlipy (>=0.6.0)"] +secure = ["certifi", "cryptography (>=1.3.4)", "idna (>=2.0.0)", "ipaddress", "pyOpenSSL (>=0.14)", "urllib3-secure-extra"] +socks = ["PySocks (>=1.5.6,!=1.5.7,<2.0)"] + +[[package]] +name = "urllib3" +version = "2.0.7" +description = "HTTP library with thread-safe connection pooling, file post, and more." +optional = false +python-versions = ">=3.7" +files = [ {file = "urllib3-2.0.7-py3-none-any.whl", hash = "sha256:fdb6d215c776278489906c2f8916e6e7d4f5a9b602ccbcfdf7f016fc8da0596e"}, {file = "urllib3-2.0.7.tar.gz", hash = "sha256:c97dfde1f7bd43a71c8d2a58e369e9b2bf692d1334ea9f9cae55add7d0dd0f84"}, ] -wcwidth = [ + +[package.extras] +brotli = ["brotli (>=1.0.9)", "brotlicffi (>=0.8.0)"] +secure = ["certifi", "cryptography (>=1.9)", "idna (>=2.0.0)", "pyopenssl (>=17.1.0)", "urllib3-secure-extra"] +socks = ["pysocks (>=1.5.6,!=1.5.7,<2.0)"] +zstd = ["zstandard (>=0.18.0)"] + +[[package]] +name = "wcwidth" +version = "0.2.9" +description = "Measures the displayed width of unicode strings in a terminal" +optional = false +python-versions = "*" +files = [ {file = "wcwidth-0.2.9-py2.py3-none-any.whl", hash = "sha256:9a929bd8380f6cd9571a968a9c8f4353ca58d7cd812a4822bba831f8d685b223"}, {file = "wcwidth-0.2.9.tar.gz", hash = "sha256:a675d1a4a2d24ef67096a04b85b02deeecd8e226f57b5e3a72dbb9ed99d27da8"}, ] -xmltodict = [ + +[[package]] +name = "xmltodict" +version = "0.13.0" +description = "Makes working with XML feel like you are working with JSON" +optional = false +python-versions = ">=3.4" +files = [ {file = "xmltodict-0.13.0-py2.py3-none-any.whl", hash = "sha256:aa89e8fd76320154a40d19a0df04a4695fb9dc5ba977cbb68ab3e4eb225e7852"}, {file = "xmltodict-0.13.0.tar.gz", hash = "sha256:341595a488e3e01a85a9d8911d8912fd922ede5fecc4dce437eb4b6c8d037e56"}, ] -zipp = [ + +[[package]] +name = "zipp" +version = "3.15.0" +description = "Backport of pathlib-compatible object wrapper for zip files" +optional = false +python-versions = ">=3.7" +files = [ {file = "zipp-3.15.0-py3-none-any.whl", hash = "sha256:48904fc76a60e542af151aded95726c1a5c34ed43ab4134b597665c86d7ad556"}, {file = "zipp-3.15.0.tar.gz", hash = "sha256:112929ad649da941c23de50f356a2b5570c954b65150642bccdd66bf194d224b"}, ] + +[package.extras] +docs = ["furo", "jaraco.packaging (>=9)", "jaraco.tidelift (>=1.4)", "rst.linker (>=1.9)", "sphinx (>=3.5)", "sphinx-lint"] +testing = ["big-O", "flake8 (<5)", "jaraco.functools", "jaraco.itertools", "more-itertools", "pytest (>=6)", "pytest-black (>=0.3.7)", "pytest-checkdocs (>=2.4)", "pytest-cov", "pytest-enabler (>=1.3)", "pytest-flake8", "pytest-mypy (>=0.9.1)"] + +[metadata] +lock-version = "2.0" +python-versions = ">=3.7,<4" +content-hash = "3653594c6605d2e9b01929eb7df2dd4824b3db249983e3d4607566fce19a54d8" diff --git a/iso/empanadas/pyproject.toml b/iso/empanadas/pyproject.toml index 983db42..a566d02 100644 --- a/iso/empanadas/pyproject.toml +++ b/iso/empanadas/pyproject.toml @@ -1,22 +1,22 @@ [tool.poetry] name = "empanadas" -version = "0.6.1" +version = "0.6.2" description = "hand crafted ISOs with love and spice" authors = ["Louis Abel ", "Neil Hanlon "] [tool.poetry.dependencies] python = ">=3.7,<4" rpm = ">=0.1.0" -MarkupSafe = "<=2.0.1" -PyYAML = "~6.0" +MarkupSafe = "<=2.1.3" +PyYAML = "~6.0.1" Jinja2 = "~2" -productmd = "~1.33" +productmd = "~1.37" importlib-resources = "^5.8.0" -boto3 = "^1.24.12" +boto3 = "^1.28.80" xmltodict = "^0.13.0" -requests = "^2.28.0" -kobo = "^0.24.1" -attrs = "^21.4.0" +requests = "^2.31.0" +kobo = "^0.33.0" +attrs = "^23.1.0" [tool.poetry.dev-dependencies] pytest = "~5" diff --git a/mangle/generators/get_module_rpm_to_list.sh b/mangle/generators/get_module_rpm_to_list.sh new file mode 100644 index 0000000..015fe40 --- /dev/null +++ b/mangle/generators/get_module_rpm_to_list.sh @@ -0,0 +1,12 @@ +#!/bin/bash +for x in $(cat list); do + NAME=$(echo $x | cut -d ':' -f 1) + STREAM=$(echo $x | cut -d ':' -f 2) + git clone ssh://git.rockylinux.org:22220/staging/modules/${NAME} -b r8s-stream-${STREAM} + if [ $? -eq 0 ]; then + pushd $NAME + cat ${NAME}.yaml | yq '.data.components.rpms | keys[]' | sed 's/"//g' > ../${NAME}:${STREAM}.list + popd + rm -rf ${NAME} + fi +done diff --git a/mangle/generators/lh_to_beta_modules.sh b/mangle/generators/lh_to_beta_modules.sh new file mode 100644 index 0000000..f1be6d6 --- /dev/null +++ b/mangle/generators/lh_to_beta_modules.sh @@ -0,0 +1,57 @@ +function reloop_modules_to_beta() { + FILE="${1}" + RHELVER="${2}" + MAJOR="$(echo ${RHELVER} | cut -d '.' -f1)" + MINOR="$(echo ${RHELVER} | cut -d '.' -f2)" + + if [ "${#MINOR}" -eq 1 ]; then + MINOR="0${MINOR}" + fi + + DATE="$(date +%Y%m%d%H%M%S)" + + if [ ! -f "${FILE}" ]; then + echo "Not a file" + return 1 + fi + + if [ -z "$RHELVER" ]; then + echo "verion required" + return 1 + fi + + if [ -f "${FILE}" ]; then + grep -q ".*:.*" ${FILE} + ret_val=$? + if [ $ret_val -ne 0 ]; then + echo "File not formatted correctly" + return 1 + fi + fi + + for x in $(cat ${FILE}); do + NAME=$(echo ${x} | cut -d':' -f1) + STREAM=$(echo ${x} | cut -d':' -f2) + TAG="imports/c${MAJOR}-beta-stream-${STREAM}/${NAME}-${STREAM}-${MAJOR}${MINOR}00${DATE}.deadbeef" + SBRANCH="c${MAJOR}s-stream-${STREAM}" + BRANCH="c${MAJOR}-beta-stream-${STREAM}" + + git clone ssh://src.enterpriselinux.social/modules/${NAME}.git -b "${SBRANCH}" + if [ $? -ne 0 ]; then + echo "!! Branch does not exist?" + continue + fi + pushd ${NAME} + git push --delete origin $(git tag | grep c${MAJOR}-beta-stream-${STREAM}) + # just in case + git branch -D "${BRANCH}" + git checkout -b "${BRANCH}" + sed -i "s|ref: .*|ref: c${MAJOR}-beta-stream-${STREAM}|g" *.yaml + git add *.yaml + git commit -m 'update' + git tag -a ${TAG} -m 'update' + git push origin ${BRANCH} ${TAG} -f + popd + rm -rf $(pwd)/${NAME} + done +} diff --git a/mangle/generators/lh_to_beta_rpms.sh b/mangle/generators/lh_to_beta_rpms.sh new file mode 100644 index 0000000..11b77dc --- /dev/null +++ b/mangle/generators/lh_to_beta_rpms.sh @@ -0,0 +1,21 @@ +#!/bin/bash +for x in $(ls *.list) ; do + NAME=$(echo $x | cut -d ':' -f 1) + STREAM=$(echo ${x/.list/} | cut -d ':' -f 2) + for rpm in $(cat ${x}); do + git clone ssh://git.rockylinux.org:22220/staging/rpms/${rpm}.git -b r8s-stream-${STREAM} + if [ $? -eq 0 ]; then + pushd $rpm + git push --delete origin $(git tag | grep r8-beta-stream-${STREAM}) + git checkout -b r8-beta-stream-${STREAM} + #git tag -a imports/r8-beta-stream-${STREAM}/20231015200000.deadbeef -m '9.3' + git push -f origin imports/r8-beta-stream-${STREAM}/20231015200000.deadbeef r8-beta-stream-${STREAM} + popd + rm -rf $rpm + else + echo "error" + echo "$rpm" >> errors + continue + fi + done +done