From 9dbbcb86c48ec56f19297f57b3c995cf91eab723 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Fri, 27 Jan 2023 02:11:44 +0000 Subject: [PATCH] import leapp-0.15.0-4.el8 --- ...get-for-building-RPMs-locally-and-in.patch | 219 ++++++++++++++++++ ...to-use-docker-to-run-tests-and-build.patch | 86 +++++++ ...nt-workaround-for-the-broken-snactor.patch | 35 +++ SOURCES/0005-Improve-wording.patch | 29 +++ ...he-leapp-deprecation-doc-add-v0.15.0.patch | 25 ++ ...ty-check-Add-option-to-ignore-models.patch | 88 +++++++ ...ctor-commands-workflow-sanity_check..patch | 34 +++ ...-regexes-to-align-with-QE-automation.patch | 119 ++++++++++ .../0010-Change-rerun-all-to-rerun-sst.patch | 130 +++++++++++ ...11-Do-not-run-rhsm-tests-in-upstream.patch | 163 +++++++++++++ SOURCES/0012-Set-SOURCE_RELEASE-env-var.patch | 92 ++++++++ ...ssions-for-var-lib-leapp-directory-f.patch | 40 ++++ ...ose-tracebacks-from-actor-exceptions.patch | 111 +++++++++ ...ne-value-to-the-LeappRuntimeError-fi.patch | 25 ++ ...per-args-for-Leapp-exception-classes.patch | 32 +++ SPECS/leapp.spec | 50 +++- 16 files changed, 1272 insertions(+), 6 deletions(-) create mode 100644 SOURCES/0002-Add-Makefile-target-for-building-RPMs-locally-and-in.patch create mode 100644 SOURCES/0003-Add-possibility-to-use-docker-to-run-tests-and-build.patch create mode 100644 SOURCES/0004-Document-workaround-for-the-broken-snactor.patch create mode 100644 SOURCES/0005-Improve-wording.patch create mode 100644 SOURCES/0006-Docs-update-the-leapp-deprecation-doc-add-v0.15.0.patch create mode 100644 SOURCES/0007-snactor.sanity-check-Add-option-to-ignore-models.patch create mode 100644 SOURCES/0008-Update-leapp-snactor-commands-workflow-sanity_check..patch create mode 100644 SOURCES/0009-Tune-tmt-tests-regexes-to-align-with-QE-automation.patch create mode 100644 SOURCES/0010-Change-rerun-all-to-rerun-sst.patch create mode 100644 SOURCES/0011-Do-not-run-rhsm-tests-in-upstream.patch create mode 100644 SOURCES/0012-Set-SOURCE_RELEASE-env-var.patch create mode 100644 SOURCES/0013-change-the-permissions-for-var-lib-leapp-directory-f.patch create mode 100644 SOURCES/0014-Expose-tracebacks-from-actor-exceptions.patch create mode 100644 SOURCES/0015-Add-a-default-None-value-to-the-LeappRuntimeError-fi.patch create mode 100644 SOURCES/0016-Fix-super-args-for-Leapp-exception-classes.patch diff --git a/SOURCES/0002-Add-Makefile-target-for-building-RPMs-locally-and-in.patch b/SOURCES/0002-Add-Makefile-target-for-building-RPMs-locally-and-in.patch new file mode 100644 index 0000000..b180534 --- /dev/null +++ b/SOURCES/0002-Add-Makefile-target-for-building-RPMs-locally-and-in.patch @@ -0,0 +1,219 @@ +From 46f589c539fb9053c5017f02d9303a324bfca6a2 Mon Sep 17 00:00:00 2001 +From: Matej Matuska <75834032+matejmatuska@users.noreply.github.com> +Date: Thu, 4 Aug 2022 17:30:34 +0200 +Subject: [PATCH 02/16] Add Makefile target for building RPMs locally and in + containers + +Add `build` target to build locally and `build_container` to build +locally in a container. Building in containers has the benefit of being +able to build on all the different platforms e.g. both on el7 and el8. + +Run `make build` to build locally. + +Run `make build_container` to build in a container. Note that +BUILD_CONTAINER environment variable must be set. + +Run `clean_containers` to clean up container images used for building. + +The containers are built from Containerfiles in `res/container-builds/`. +Since Containerfiles for all the Fedora versions would differ only in the `FROM` +statement, a generic Containerfile `Containerfile.fedora_generic` is +used and the `FROM` statement is inserted in the Makefile. + +For el7 builds CentOS 7 container is used, because rpm-build package +is not available in ubi7 image. + +Builds cannot be run in parallel because containers operate on the same +files, which would result in them conflicting. + +Also update `.gitignore` to exclude build files from git. +--- + .gitignore | 5 ++ + Makefile | 63 +++++++++++++++++-- + res/container-builds/Containerfile.centos7 | 11 ++++ + .../Containerfile.fedora_generic | 12 ++++ + res/container-builds/Containerfile.ubi8 | 12 ++++ + 5 files changed, 97 insertions(+), 6 deletions(-) + create mode 100644 res/container-builds/Containerfile.centos7 + create mode 100644 res/container-builds/Containerfile.fedora_generic + create mode 100644 res/container-builds/Containerfile.ubi8 + +diff --git a/.gitignore b/.gitignore +index d9ae04d..e9c1edb 100644 +--- a/.gitignore ++++ b/.gitignore +@@ -33,3 +33,8 @@ res/schema/schemas.py + leapp.db + # do not ignore the directory with tests... + !tests/scripts/ ++ ++packaging/BUILD/ ++packaging/RPMS/ ++packaging/SRPMS/ ++packaging/sources/ +diff --git a/Makefile b/Makefile +index 59d5118..22d29a4 100644 +--- a/Makefile ++++ b/Makefile +@@ -76,7 +76,13 @@ help: + @echo " - available containers are: rhel7, rhel8, rhel9" + @echo " test_container_all runs linter and tests in all available containers" + @echo " lint runs just the linter" +- @echo " clean_containers cleans up all testing containers" ++ @echo " build create the RPM" ++ @echo " build_container create the RPM in container" ++ @echo " - set BUILD_CONTAINER to select the container" ++ @echo " - available containers are: el7, el8, f35, f36, rawhide" ++ @echo " - this can't be used to build in parallel," ++ @echo " as build containers operate on the same files" ++ @echo " clean_containers clean container images used for building" + @echo "" + @echo "Possible use:" + @echo " make " +@@ -85,11 +91,12 @@ help: + @echo " PR=7 SUFFIX='my_additional_suffix' make " + @echo " MR=6 COPR_CONFIG='path/to/the/config/copr/file' " + @echo " TEST_CONTAINER=rhel7 make test_container" ++ @echo " BUILD_CONTAINER=el7 make build_container" + @echo "" + + clean: + @echo "--- Clean repo ---" +- @rm -rf packaging/{sources,SRPMS}/ ++ @rm -rf packaging/{sources,SRPMS,BUILD,BUILDROOT,RPMS}/ + @rm -rf build/ dist/ *.egg-info + @find . -name '__pycache__' -exec rm -fr {} + + @find . -name '*.pyc' -exec rm -f {} + +@@ -97,7 +104,7 @@ clean: + + prepare: clean + @echo "--- Prepare build directories ---" +- @mkdir -p packaging/{sources,SRPMS}/ ++ @mkdir -p packaging/{sources,SRPMS,BUILD,BUILDROOT,RPMS}/ + + source: prepare + @echo "--- Create source tarball ---" +@@ -123,6 +130,50 @@ copr_build: srpm + @copr-cli --config $(_COPR_CONFIG) build $(_COPR_REPO) \ + packaging/SRPMS/${PKGNAME}-${VERSION}-${RELEASE}*.src.rpm + ++build: source ++ @echo "--- Build RPM ${PKGNAME}-${VERSION}-${RELEASE}.el$(DIST_VERSION).rpm ---" ++ @cp packaging/$(PKGNAME).spec packaging/$(PKGNAME).spec.bak ++ @sed -i "s/1%{?dist}/$(RELEASE)%{?dist}/g" packaging/$(PKGNAME).spec ++ @rpmbuild -ba packaging/$(PKGNAME).spec \ ++ --define "_sourcedir `pwd`/packaging/sources" \ ++ --define "_srcrpmdir `pwd`/packaging/SRPMS" \ ++ --define "_builddir `pwd`/packaging/BUILD" \ ++ --define "_buildrootdir `pwd`/packaging/BUILDROOT" \ ++ --define "_rpmdir `pwd`/packaging/RPMS" \ ++ --define "rhel $(DIST_VERSION)" \ ++ --define 'dist .el$(DIST_VERSION)' \ ++ --define 'el$(DIST_VERSION) 1' || FAILED=1 ++ @mv packaging/$(PKGNAME).spec.bak packaging/$(PKGNAME).spec ++ ++build_container: ++ @case "$$BUILD_CONTAINER" in \ ++ el7) \ ++ _CONT_FILE="Containerfile.centos7"; \ ++ ;; \ ++ el8) \ ++ _CONT_FILE="Containerfile.ubi8"; \ ++ ;; \ ++ f3[56]|rawhide) \ ++ [ $$BUILD_CONTAINER = rawhide ] && VERSION=latest || VERSION=$${BUILD_CONTAINER: -2}; \ ++ _CONT_FILE=".Containerfile.$${BUILD_CONTAINER}"; \ ++ cp res/container-builds/Containerfile.fedora_generic res/container-builds/$$_CONT_FILE && \ ++ sed -i "1i FROM fedora:$${VERSION}" res/container-builds/$$_CONT_FILE \ ++ ;; \ ++ "") \ ++ echo "BUILD_CONTAINER must be set"; \ ++ exit 1; \ ++ ;; \ ++ *) \ ++ echo "Available containers are el7, el8, f35, f36, rawhide"; \ ++ exit 1; \ ++ ;; \ ++ esac && \ ++ echo "--- Preparing $$BUILD_CONTAINER container for building ---" && \ ++ IMAGE_NAME="leapp-build-$${BUILD_CONTAINER}"; \ ++ podman build -f res/container-builds/$$_CONT_FILE -t $$IMAGE_NAME res/container-builds/ && \ ++ podman run --rm -ti -v $$PWD:/payload:Z --name "$${IMAGE_NAME}-cont" $$IMAGE_NAME && \ ++ [ '$${_CONT_FILE:0:1}' = '.' ] && rm -f res/container-builds/$$_CONT_FILE || : ++ + print_release: + @echo $(RELEASE) + +@@ -179,8 +230,8 @@ test_container_all: + done + + clean_containers: +- @for i in "leapp-tests-rhel"{7,8,9}; do \ +- podman rmi "$$i" > /dev/null 2>&1 || :; \ ++ @for i in "leapp-build-"{el7,el8,f35,f36,rawhide} "leapp-tests-rhel"{7,8,9}; do \ ++ podman rmi "$$i" > /dev/null 2>&1 || :; \ + done + + lint: +@@ -216,4 +267,4 @@ fast_lint: + echo "No files to lint."; \ + fi + +-.PHONY: clean copr_build install install-deps install-test srpm test test_container test_container_all lint fast_lint clean_containers ++.PHONY: clean copr_build build build_container install install-deps install-test srpm test test_container test_container_all lint fast_lint clean_containers +diff --git a/res/container-builds/Containerfile.centos7 b/res/container-builds/Containerfile.centos7 +new file mode 100644 +index 0000000..a3b0ea0 +--- /dev/null ++++ b/res/container-builds/Containerfile.centos7 +@@ -0,0 +1,11 @@ ++FROM centos:7 ++ ++VOLUME /payload ++ ++ENV DIST_VERSION 7 ++ ++RUN yum update -y && \ ++ yum install -y make git rpm-build python-setuptools python-devel ++ ++WORKDIR /payload ++ENTRYPOINT make build +diff --git a/res/container-builds/Containerfile.fedora_generic b/res/container-builds/Containerfile.fedora_generic +new file mode 100644 +index 0000000..c0af2b7 +--- /dev/null ++++ b/res/container-builds/Containerfile.fedora_generic +@@ -0,0 +1,12 @@ ++# FROM statement is inserted in Makefile ++ ++VOLUME /payload ++ ++ENV DIST_VERSION 8 ++ ++RUN dnf update -y && \ ++ dnf install -y python3 make git rpm-build python3-devel ++ #yum install -y python3-pip && \ python3 -m pip install --upgrade pip==20.3.4 ++ ++WORKDIR /payload ++ENTRYPOINT make build +diff --git a/res/container-builds/Containerfile.ubi8 b/res/container-builds/Containerfile.ubi8 +new file mode 100644 +index 0000000..0b2c021 +--- /dev/null ++++ b/res/container-builds/Containerfile.ubi8 +@@ -0,0 +1,12 @@ ++FROM registry.access.redhat.com/ubi8/ubi:latest ++ ++VOLUME /payload ++ ++ENV DIST_VERSION 8 ++ ++RUN dnf update -y && \ ++ dnf install -y python3 make git rpm-build python3-devel ++ #yum install -y python3-pip && \ python3 -m pip install --upgrade pip==20.3.4 ++ ++WORKDIR /payload ++ENTRYPOINT make build +-- +2.39.0 + diff --git a/SOURCES/0003-Add-possibility-to-use-docker-to-run-tests-and-build.patch b/SOURCES/0003-Add-possibility-to-use-docker-to-run-tests-and-build.patch new file mode 100644 index 0000000..9183666 --- /dev/null +++ b/SOURCES/0003-Add-possibility-to-use-docker-to-run-tests-and-build.patch @@ -0,0 +1,86 @@ +From 6ae95a1d2f73e4eb45e97903390f71e03555e841 Mon Sep 17 00:00:00 2001 +From: Matej Matuska +Date: Mon, 26 Sep 2022 08:42:50 +0200 +Subject: [PATCH 03/16] Add possibility to use docker to run tests and build in + containers + +On some systems podman is unavailable. Also, some people prefer docker +over podman. Add possibility to use docker to run tests and build +packages. + +Set the CONTAINER_TOOL environment variable to change the container +tool used for running tests and building packages, for example: +CONTAINER_TOOL="docker" make test_container. + +Unless you are running the Docker daemon in rootless mode, you will have +to run as root. In such case files created in `packaging/` using +`build_container` and in `testenv/` using `test_container` will be owned +by root. To change the ownership back to your user, you can for example +run `chown -R $USER packaging/ testenv/`. + +The `clean_container` target now checks the existency of image before +deleting it, otherwise the command would silently fail when ran without +correct permission. + +Jira ref.: OAMG-7286 +--- + Makefile | 15 ++++++++++----- + 1 file changed, 10 insertions(+), 5 deletions(-) + +diff --git a/Makefile b/Makefile +index 22d29a4..d392765 100644 +--- a/Makefile ++++ b/Makefile +@@ -15,6 +15,9 @@ VERSION=`grep -m1 "^Version:" packaging/$(PKGNAME).spec | grep -om1 "[0-9].[0-9. + _COPR_REPO=$${COPR_REPO:-leapp} + _COPR_CONFIG=$${COPR_CONFIG:-~/.config/copr_rh_oamg.conf} + ++# tool used to run containers for testing and building packages ++_CONTAINER_TOOL=$${CONTAINER_TOOL:-podman} ++ + # container used to run unit tests + _TEST_CONTAINER=$${TEST_CONTAINER:-rhel8} + +@@ -92,6 +95,7 @@ help: + @echo " MR=6 COPR_CONFIG='path/to/the/config/copr/file' " + @echo " TEST_CONTAINER=rhel7 make test_container" + @echo " BUILD_CONTAINER=el7 make build_container" ++ @echo " CONTAINER_TOOL=docker make test_container" + @echo "" + + clean: +@@ -170,8 +174,8 @@ build_container: + esac && \ + echo "--- Preparing $$BUILD_CONTAINER container for building ---" && \ + IMAGE_NAME="leapp-build-$${BUILD_CONTAINER}"; \ +- podman build -f res/container-builds/$$_CONT_FILE -t $$IMAGE_NAME res/container-builds/ && \ +- podman run --rm -ti -v $$PWD:/payload:Z --name "$${IMAGE_NAME}-cont" $$IMAGE_NAME && \ ++ $(_CONTAINER_TOOL) build -f res/container-builds/$$_CONT_FILE -t $$IMAGE_NAME res/container-builds/ && \ ++ $(_CONTAINER_TOOL) run --rm -v $$PWD:/payload:Z --name "$${IMAGE_NAME}-cont" $$IMAGE_NAME && \ + [ '$${_CONT_FILE:0:1}' = '.' ] && rm -f res/container-builds/$$_CONT_FILE || : + + print_release: +@@ -221,8 +225,8 @@ test_container: + esac; \ + export TEST_IMAGE="leapp-tests-$(_TEST_CONTAINER)"; \ + rm -rf testenv/ && \ +- podman build -t $$TEST_IMAGE -f $$_CONT_FILE res/container-tests && \ +- podman run --rm -v $${PWD}:/payload:Z -e PYTHON_VENV=$$_VENV $$TEST_IMAGE ++ $(_CONTAINER_TOOL) build -t $$TEST_IMAGE -f $$_CONT_FILE res/container-tests && \ ++ $(_CONTAINER_TOOL) run --rm -v $${PWD}:/payload:Z -e PYTHON_VENV=$$_VENV $$TEST_IMAGE + + test_container_all: + @for container in "rhel"{7,8,9}; do \ +@@ -231,7 +235,8 @@ test_container_all: + + clean_containers: + @for i in "leapp-build-"{el7,el8,f35,f36,rawhide} "leapp-tests-rhel"{7,8,9}; do \ +- podman rmi "$$i" > /dev/null 2>&1 || :; \ ++ [ -z $$($(_CONTAINER_TOOL) images -q "$$i") ] || \ ++ $(_CONTAINER_TOOL) rmi "$$i" > /dev/null 2>&1 || :; \ + done + + lint: +-- +2.39.0 + diff --git a/SOURCES/0004-Document-workaround-for-the-broken-snactor.patch b/SOURCES/0004-Document-workaround-for-the-broken-snactor.patch new file mode 100644 index 0000000..44a76b7 --- /dev/null +++ b/SOURCES/0004-Document-workaround-for-the-broken-snactor.patch @@ -0,0 +1,35 @@ +From 18f6055615320d721c3ee5f1237a02d31540b03b Mon Sep 17 00:00:00 2001 +From: Jakub Jelen +Date: Thu, 6 Oct 2022 19:21:14 +0200 +Subject: [PATCH 04/16] Document workaround for the broken snactor + +prefer having this documented instead answering everyone questions why it does not work when it is in documentation. At least until it is fixed. +--- + docs/source/el7toel8/actor-rhel7-to-rhel8.md | 11 +++++++++++ + 1 file changed, 11 insertions(+) + +diff --git a/docs/source/el7toel8/actor-rhel7-to-rhel8.md b/docs/source/el7toel8/actor-rhel7-to-rhel8.md +index 4157cfb..b7c1e5c 100644 +--- a/docs/source/el7toel8/actor-rhel7-to-rhel8.md ++++ b/docs/source/el7toel8/actor-rhel7-to-rhel8.md +@@ -327,6 +327,17 @@ data is stored in the database for the current session: + ```shell + snactor run --save-output IPUWorkflowConfig + ``` ++Since the leapp supports several upgrade paths, the `snactor` needs to know target system and upgrade flavor specification for correct execution. ++If you see similar errors when running `snactor` ++``` ++leapp.models.fields.ModelViolationError: The value of "target" field is None, but this is not allowed ++``` ++please, set the following environment variables (adjust the `LEAPP_UPGRADE_PATH_TARGET_RELEASE` as needed): ++``` ++export LEAPP_UPGRADE_PATH_TARGET_RELEASE=8.6 ++export LEAPP_UPGRADE_PATH_FLAVOUR=default ++snactor run --save-output IPUWorkflowConfig ++``` + + ### Executing the whole upgrade workflow with the new actor + +-- +2.39.0 + diff --git a/SOURCES/0005-Improve-wording.patch b/SOURCES/0005-Improve-wording.patch new file mode 100644 index 0000000..7c94b4f --- /dev/null +++ b/SOURCES/0005-Improve-wording.patch @@ -0,0 +1,29 @@ +From d8e01d7b7c54db46fbf7dffde01094399d796f4f Mon Sep 17 00:00:00 2001 +From: Jakub Jelen +Date: Fri, 7 Oct 2022 12:27:28 +0200 +Subject: [PATCH 05/16] Improve wording +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Petr Stodůlka +--- + docs/source/el7toel8/actor-rhel7-to-rhel8.md | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/docs/source/el7toel8/actor-rhel7-to-rhel8.md b/docs/source/el7toel8/actor-rhel7-to-rhel8.md +index b7c1e5c..a6ecf37 100644 +--- a/docs/source/el7toel8/actor-rhel7-to-rhel8.md ++++ b/docs/source/el7toel8/actor-rhel7-to-rhel8.md +@@ -327,7 +327,7 @@ data is stored in the database for the current session: + ```shell + snactor run --save-output IPUWorkflowConfig + ``` +-Since the leapp supports several upgrade paths, the `snactor` needs to know target system and upgrade flavor specification for correct execution. ++Since the leapp upgrade repositories support several upgrade paths, the `snactor` needs to get additional data for the correct execution, like the release of the target system, the flavor specification, etc. + If you see similar errors when running `snactor` + ``` + leapp.models.fields.ModelViolationError: The value of "target" field is None, but this is not allowed +-- +2.39.0 + diff --git a/SOURCES/0006-Docs-update-the-leapp-deprecation-doc-add-v0.15.0.patch b/SOURCES/0006-Docs-update-the-leapp-deprecation-doc-add-v0.15.0.patch new file mode 100644 index 0000000..901fb68 --- /dev/null +++ b/SOURCES/0006-Docs-update-the-leapp-deprecation-doc-add-v0.15.0.patch @@ -0,0 +1,25 @@ +From 14fae66738fbff1ace3407767da3ca97bb852a3b Mon Sep 17 00:00:00 2001 +From: Petr Stodulka +Date: Tue, 18 Oct 2022 10:16:48 +0200 +Subject: [PATCH 06/16] Docs: update the leapp deprecation doc (add v0.15.0) + +--- + docs/source/deprecation.md | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/docs/source/deprecation.md b/docs/source/deprecation.md +index a9e9776..28dbc14 100644 +--- a/docs/source/deprecation.md ++++ b/docs/source/deprecation.md +@@ -17,7 +17,7 @@ such information, see [Deprecated functionality in the el7toel8 repository](el7t + + - nothing yet... + +-## current upstream development (till Mar 2023) ++## v0.15.0 (till Mar 2023) + + - Reporting primitives + - **`leapp.reporting.Flags`** - The `Flags` report primitive has been deprecated in favor of the more general `Groups` one. +-- +2.39.0 + diff --git a/SOURCES/0007-snactor.sanity-check-Add-option-to-ignore-models.patch b/SOURCES/0007-snactor.sanity-check-Add-option-to-ignore-models.patch new file mode 100644 index 0000000..ce5fcd1 --- /dev/null +++ b/SOURCES/0007-snactor.sanity-check-Add-option-to-ignore-models.patch @@ -0,0 +1,88 @@ +From 9b26394f337f7e28a2709d6fd0d1c54deaa43d74 Mon Sep 17 00:00:00 2001 +From: Vinzenz Feenstra +Date: Fri, 27 Nov 2020 22:15:54 +0100 +Subject: [PATCH 07/16] snactor.sanity-check: Add option to ignore models + +Previously, if a Model was being consumed by actor before it was +produced, `snactor sanity-check` reported a failure. This however +blocks some use case in leapp-repository now, where there is the +possibility to supply user data and it is being verified before in a +later stage it actually is used. This sanitization actor causes this +check to fail and would force an ugly workaround by having a dummy actor +pretending to produce the message earlier. + +This patch will introduce two ways of handling this situation by +ignoring the models. Either each model can be specified as a commandline +option --ignore or a path to a file containing a list of such models can +be supplied via --ignorefile. +Any of those specified model names supplied via --ignore or the +ignore file will no longer be considered a failure. + +Signed-off-by: Vinzenz Feenstra +--- + .../snactor/commands/workflow/sanity_check.py | 22 +++++++++++++++---- + 1 file changed, 18 insertions(+), 4 deletions(-) + +diff --git a/leapp/snactor/commands/workflow/sanity_check.py b/leapp/snactor/commands/workflow/sanity_check.py +index 14de28a..6f5db78 100644 +--- a/leapp/snactor/commands/workflow/sanity_check.py ++++ b/leapp/snactor/commands/workflow/sanity_check.py +@@ -1,19 +1,23 @@ + from __future__ import print_function ++ + import sys + +-from leapp.exceptions import LeappError, CommandError ++from leapp.exceptions import CommandError, LeappError + from leapp.logger import configure_logger + from leapp.repository.scan import find_and_scan_repositories + from leapp.snactor.commands.workflow import workflow +-from leapp.utils.clicmd import command_arg ++from leapp.utils.clicmd import command_arg, command_opt + from leapp.utils.output import Color +-from leapp.utils.repository import requires_repository, find_repository_basedir ++from leapp.utils.repository import find_repository_basedir, requires_repository + + _DESCRIPTION = 'The following messages are attempted to be consumed before they are produced: {}' + _LONG_DESCRIPTION = ''' + Perform workflow sanity checks + + - check whether there is a message in the given workflow which is attempted to be consumed before it was produced ++ --ignore can be used to specify one or multiple times to ignore the above condition ++ --ignorefile can be used to specify a file to load a list of ignored models. The list shall be ++ new line separated. Lines beginning with # are considered comments. + + For more information please consider reading the documentation at: + https://red.ht/leapp-docs +@@ -24,10 +28,19 @@ def print_fail(error): + print('{red}FAIL: {error}{reset}'.format(red=Color.red, error=error, reset=Color.reset), file=sys.stderr, end='\n') + + ++def _ignore_file_content(path): ++ if path: ++ with open(path) as f: ++ return [line.strip() for line in f.read().split('\n') if not line.strip().startswith('#')] ++ ++ + @workflow.command('sanity-check', help='Perform workflow sanity checks', description=_LONG_DESCRIPTION) + @command_arg('name') ++@command_opt('ignore', metavar='', action='append', help='Models to ignore in the sanity check.') ++@command_opt('ignorefile', metavar='', help='File with a list of model names to ignore.') + @requires_repository + def cli(params): ++ ignored_models = set(params.ignore or []) | set(_ignore_file_content(params.ignorefile)) + configure_logger() + repository = find_and_scan_repositories(find_repository_basedir('.'), include_locals=True) + try: +@@ -43,6 +56,7 @@ def cli(params): + + instance = wf() + produced_late = set(instance.initial).intersection(set(instance.produces)) +- if produced_late: ++ produced_late_names = [model.__name__ for model in produced_late if model.__name__ not in ignored_models] ++ if produced_late_names: + print_fail(_DESCRIPTION.format(' '.join([m.__name__ for m in produced_late]))) + sys.exit(1) +-- +2.39.0 + diff --git a/SOURCES/0008-Update-leapp-snactor-commands-workflow-sanity_check..patch b/SOURCES/0008-Update-leapp-snactor-commands-workflow-sanity_check..patch new file mode 100644 index 0000000..3beb054 --- /dev/null +++ b/SOURCES/0008-Update-leapp-snactor-commands-workflow-sanity_check..patch @@ -0,0 +1,34 @@ +From 833981217329e43b73840e796bc88978cb3ae272 Mon Sep 17 00:00:00 2001 +From: Vinzenz 'evilissimo' Feenstra +Date: Mon, 31 Oct 2022 14:51:20 +0100 +Subject: [PATCH 08/16] Update leapp/snactor/commands/workflow/sanity_check.py +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +Co-authored-by: Petr Stodůlka +--- + leapp/snactor/commands/workflow/sanity_check.py | 7 ++++--- + 1 file changed, 4 insertions(+), 3 deletions(-) + +diff --git a/leapp/snactor/commands/workflow/sanity_check.py b/leapp/snactor/commands/workflow/sanity_check.py +index 6f5db78..ac98dae 100644 +--- a/leapp/snactor/commands/workflow/sanity_check.py ++++ b/leapp/snactor/commands/workflow/sanity_check.py +@@ -29,9 +29,10 @@ def print_fail(error): + + + def _ignore_file_content(path): +- if path: +- with open(path) as f: +- return [line.strip() for line in f.read().split('\n') if not line.strip().startswith('#')] ++ if not path: ++ return [] ++ with open(path) as f: ++ return [line.strip() for line in f.read().split('\n') if line.strip() and not line.strip().startswith('#')] + + + @workflow.command('sanity-check', help='Perform workflow sanity checks', description=_LONG_DESCRIPTION) +-- +2.39.0 + diff --git a/SOURCES/0009-Tune-tmt-tests-regexes-to-align-with-QE-automation.patch b/SOURCES/0009-Tune-tmt-tests-regexes-to-align-with-QE-automation.patch new file mode 100644 index 0000000..428d18c --- /dev/null +++ b/SOURCES/0009-Tune-tmt-tests-regexes-to-align-with-QE-automation.patch @@ -0,0 +1,119 @@ +From 98a6bcebba640c7645c02465dde4895227cce825 Mon Sep 17 00:00:00 2001 +From: Inessa Vasilevskaya +Date: Thu, 10 Nov 2022 13:19:40 +0100 +Subject: [PATCH 09/16] Tune tmt tests regexes to align with QE automation + +In order for upstream tests and those launched with QE tooling +to produce the comparable set of results it's a wise thing to +do. +--- + .github/workflows/reuse-tests-7to8.yml | 2 +- + .github/workflows/reuse-tests-8to9.yml | 2 +- + .github/workflows/tmt-tests.yml | 16 ++++++++-------- + 3 files changed, 10 insertions(+), 10 deletions(-) + +diff --git a/.github/workflows/reuse-tests-7to8.yml b/.github/workflows/reuse-tests-7to8.yml +index 9d8e0db..b1a9a8e 100644 +--- a/.github/workflows/reuse-tests-7to8.yml ++++ b/.github/workflows/reuse-tests-7to8.yml +@@ -13,7 +13,7 @@ on: + type: string + tmt_plan_regex: + type: string +- default: "^(?!.*c2r)(?!.*sap)(?!.*8to9)" ++ default: "^(?!.*upgrade_plugin)(?!.*c2r)(?!.*sap)(?!.*8to9)" + environment_settings: + type: string + default: '{"provisioning": {"post_install_script": "#!/bin/sh\nsudo sed -i s/.*ssh-rsa/ssh-rsa/ /root/.ssh/authorized_keys"}}' +diff --git a/.github/workflows/reuse-tests-8to9.yml b/.github/workflows/reuse-tests-8to9.yml +index a7adace..828a717 100644 +--- a/.github/workflows/reuse-tests-8to9.yml ++++ b/.github/workflows/reuse-tests-8to9.yml +@@ -13,7 +13,7 @@ on: + type: string + tmt_plan_regex: + type: string +- default: "^(?!.*c2r)(?!.*sap)(?!.*7to8)" ++ default: "^(?!.*upgrade_plugin)(?!.*c2r)(?!.*sap)(?!.*7to8)" + environment_settings: + type: string + default: '{"provisioning": {"post_install_script": "#!/bin/sh\nsudo sed -i s/.*ssh-rsa/ssh-rsa/ /root/.ssh/authorized_keys"}}' +diff --git a/.github/workflows/tmt-tests.yml b/.github/workflows/tmt-tests.yml +index cfad280..6b9a0b4 100644 +--- a/.github/workflows/tmt-tests.yml ++++ b/.github/workflows/tmt-tests.yml +@@ -16,7 +16,7 @@ jobs: + secrets: inherit + with: + copr_artifacts: ${{ needs.call_workflow_copr_build.outputs.artifacts }} +- tmt_plan_regex: "^(?!.*c2r)(?!.*sap)(?!.*8to9)(?!.*morf)" ++ tmt_plan_regex: "^(?!.*upgrade_plugin)(?!.*c2r)(?!.*sap)(?!.*8to9)(?!.*morf)" + pull_request_status_name: "7.9to8.4" + + call_workflow_tests_79to86_integration: +@@ -25,7 +25,7 @@ jobs: + secrets: inherit + with: + copr_artifacts: ${{ needs.call_workflow_copr_build.outputs.artifacts }} +- tmt_plan_regex: "^(?!.*c2r)(?!.*sap)(?!.*8to9)(?!.*morf)" ++ tmt_plan_regex: "^(?!.*upgrade_plugin)(?!.*c2r)(?!.*sap)(?!.*8to9)(?!.*morf)" + variables: 'TARGET_RELEASE=8.6' + pull_request_status_name: "7.9to8.6" + +@@ -35,7 +35,7 @@ jobs: + secrets: inherit + with: + copr_artifacts: ${{ needs.call_workflow_copr_build.outputs.artifacts }} +- tmt_plan_regex: "^(?!.*c2r)(?!.*sap)(?!.*8to9)(.*morf)" ++ tmt_plan_regex: "^(/plans/morf)(?!.*sap)" + pull_request_status_name: "7.9to8.4-sst" + update_pull_request_status: 'false' + if: | +@@ -49,7 +49,7 @@ jobs: + secrets: inherit + with: + copr_artifacts: ${{ needs.call_workflow_copr_build.outputs.artifacts }} +- tmt_plan_regex: "^(?!.*c2r)(?!.*sap)(?!.*8to9)(.*e2e)" ++ tmt_plan_regex: "^(?!.*upgrade_plugin)(?!.*c2r)(?!.*sap)(?!.*8to9)(.*e2e)" + compose: "RHEL-7.9-rhui" + environment_settings: '{"provisioning": {"post_install_script": "#!/bin/sh\nsudo sed -i s/.*ssh-rsa/ssh-rsa/ /root/.ssh/authorized_keys; echo 42; yum-config-manager --enable rhel-7-server-rhui-optional-rpms"}}' + pull_request_status_name: "7to8-aws-e2e" +@@ -61,7 +61,7 @@ jobs: + secrets: inherit + with: + copr_artifacts: ${{ needs.call_workflow_copr_build.outputs.artifacts }} +- tmt_plan_regex: "^(?!.*c2r)(?!.*sap)(?!.*7to8)(?!.*morf)" ++ tmt_plan_regex: "^(?!.*upgrade_plugin)(?!.*c2r)(?!.*sap)(?!.*7to8)(?!.*morf)" + pull_request_status_name: "8.6to9.0" + + call_workflow_tests_87to91_integration: +@@ -70,7 +70,7 @@ jobs: + secrets: inherit + with: + copr_artifacts: ${{ needs.call_workflow_copr_build.outputs.artifacts }} +- tmt_plan_regex: "^(?!.*c2r)(?!.*sap)(?!.*7to8)(?!.*morf)" ++ tmt_plan_regex: "^(?!.*upgrade_plugin)(?!.*c2r)(?!.*sap)(?!.*7to8)(?!.*morf)" + variables: 'LEAPP_DEVEL_TARGET_PRODUCT_TYPE=beta;RHSM_SKU=RH00069;TARGET_RELEASE=9.1;TARGET_KERNEL=el9;RHSM_REPOS=rhel-8-for-x86_64-appstream-rpms,rhel-8-for-x86_64-baseos-rpms' + compose: 'RHEL-8.7.0-Nightly' + pull_request_status_name: "8.7to9.1" +@@ -82,7 +82,7 @@ jobs: + secrets: inherit + with: + copr_artifacts: ${{ needs.call_workflow_copr_build.outputs.artifacts }} +- tmt_plan_regex: "^(?!.*c2r)(?!.*sap)(?!.*7to8)(.*morf)" ++ tmt_plan_regex: "^(/plans/morf)(?!.*sap)" + pull_request_status_name: "8.6to9.0-sst" + update_pull_request_status: 'false' + if: | +@@ -96,7 +96,7 @@ jobs: + secrets: inherit + with: + copr_artifacts: ${{ needs.call_workflow_copr_build.outputs.artifacts }} +- tmt_plan_regex: "^(?!.*c2r)(?!.*sap)(?!.*7to8)(.*e2e)" ++ tmt_plan_regex: "^(?!.*upgrade_plugin)(?!.*c2r)(?!.*sap)(?!.*7to8)(.*e2e)" + compose: "RHEL-8.6-rhui" + environment_settings: '{"provisioning": {"post_install_script": "#!/bin/sh\nsudo sed -i s/.*ssh-rsa/ssh-rsa/ /root/.ssh/authorized_keys"}}' + pull_request_status_name: "8to9-aws-e2e" +-- +2.39.0 + diff --git a/SOURCES/0010-Change-rerun-all-to-rerun-sst.patch b/SOURCES/0010-Change-rerun-all-to-rerun-sst.patch new file mode 100644 index 0000000..690b659 --- /dev/null +++ b/SOURCES/0010-Change-rerun-all-to-rerun-sst.patch @@ -0,0 +1,130 @@ +From 0e732fca2e8519f135ec5a18b032b6facb022c99 Mon Sep 17 00:00:00 2001 +From: Inessa Vasilevskaya +Date: Thu, 10 Nov 2022 13:21:49 +0100 +Subject: [PATCH 10/16] Change /rerun-all to /rerun-sst + +Change the concept from "rerun all tests + morf ones" to +"rerun just the morf tests". +Welcome message updated as well. +--- + .github/workflows/pr-welcome-msg.yml | 4 ++-- + .github/workflows/reuse-copr-build.yml | 2 +- + .github/workflows/tmt-tests.yml | 28 ++++++++++++++++++++++++-- + 3 files changed, 29 insertions(+), 5 deletions(-) + +diff --git a/.github/workflows/pr-welcome-msg.yml b/.github/workflows/pr-welcome-msg.yml +index 1bfcd2b..67393f9 100644 +--- a/.github/workflows/pr-welcome-msg.yml ++++ b/.github/workflows/pr-welcome-msg.yml +@@ -27,8 +27,8 @@ jobs: + To launch regression testing public members of oamg organization can leave the following comment: + - **/rerun** to schedule basic regression tests using this pr build and leapp-repository\*master\* as artifacts + - **/rerun 42** to schedule basic regression tests using this pr build and leapp-repository\*PR42\* as artifacts +- - **/rerun-all** to schedule all tests (including sst) using this pr build and leapp-repository\*master\* as artifacts +- - **/rerun-all 42** to schedule all tests (including sst) using this pr build and leapp-repository\*PR42\* as artifacts ++ - **/rerun-sst** to schedule sst tests using this pr build and leapp-repository\*master\* as artifacts ++ - **/rerun-sst 42** to schedule sst tests using this pr build and leapp-repository\*PR42\* as artifacts + + Please [open ticket](https://url.corp.redhat.com/oamg-ci-issue) in case you experience technical problem with the CI. (RH internal only) + +diff --git a/.github/workflows/reuse-copr-build.yml b/.github/workflows/reuse-copr-build.yml +index ccfee83..bdddc36 100644 +--- a/.github/workflows/reuse-copr-build.yml ++++ b/.github/workflows/reuse-copr-build.yml +@@ -33,7 +33,7 @@ jobs: + id: leapp_repository_pr_regex_match + with: + text: ${{ github.event.comment.body }} +- regex: '^/(rerun|rerun-all)\s+([0-9]+)\s*$' ++ regex: '^/(rerun|rerun-sst)\s+([0-9]+)\s*$' + + - name: Get pull request number + id: pr_nr +diff --git a/.github/workflows/tmt-tests.yml b/.github/workflows/tmt-tests.yml +index 6b9a0b4..15b7eb3 100644 +--- a/.github/workflows/tmt-tests.yml ++++ b/.github/workflows/tmt-tests.yml +@@ -18,6 +18,10 @@ jobs: + copr_artifacts: ${{ needs.call_workflow_copr_build.outputs.artifacts }} + tmt_plan_regex: "^(?!.*upgrade_plugin)(?!.*c2r)(?!.*sap)(?!.*8to9)(?!.*morf)" + pull_request_status_name: "7.9to8.4" ++ if: | ++ github.event.issue.pull_request ++ && ! startsWith(github.event.comment.body, '/rerun-sst') ++ && contains(fromJson('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association) + + call_workflow_tests_79to86_integration: + needs: call_workflow_copr_build +@@ -28,6 +32,10 @@ jobs: + tmt_plan_regex: "^(?!.*upgrade_plugin)(?!.*c2r)(?!.*sap)(?!.*8to9)(?!.*morf)" + variables: 'TARGET_RELEASE=8.6' + pull_request_status_name: "7.9to8.6" ++ if: | ++ github.event.issue.pull_request ++ && ! startsWith(github.event.comment.body, '/rerun-sst') ++ && contains(fromJson('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association) + + call_workflow_tests_79to84_sst: + needs: call_workflow_copr_build +@@ -40,7 +48,7 @@ jobs: + update_pull_request_status: 'false' + if: | + github.event.issue.pull_request +- && startsWith(github.event.comment.body, '/rerun-all') ++ && startsWith(github.event.comment.body, '/rerun-sst') + && contains(fromJson('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association) + + call_workflow_tests_7to8_aws: +@@ -54,6 +62,10 @@ jobs: + environment_settings: '{"provisioning": {"post_install_script": "#!/bin/sh\nsudo sed -i s/.*ssh-rsa/ssh-rsa/ /root/.ssh/authorized_keys; echo 42; yum-config-manager --enable rhel-7-server-rhui-optional-rpms"}}' + pull_request_status_name: "7to8-aws-e2e" + variables: "RHUI=aws" ++ if: | ++ github.event.issue.pull_request ++ && ! startsWith(github.event.comment.body, '/rerun-sst') ++ && contains(fromJson('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association) + + call_workflow_tests_86to90_integration: + needs: call_workflow_copr_build +@@ -63,6 +75,10 @@ jobs: + copr_artifacts: ${{ needs.call_workflow_copr_build.outputs.artifacts }} + tmt_plan_regex: "^(?!.*upgrade_plugin)(?!.*c2r)(?!.*sap)(?!.*7to8)(?!.*morf)" + pull_request_status_name: "8.6to9.0" ++ if: | ++ github.event.issue.pull_request ++ && ! startsWith(github.event.comment.body, '/rerun-sst') ++ && contains(fromJson('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association) + + call_workflow_tests_87to91_integration: + needs: call_workflow_copr_build +@@ -75,6 +91,10 @@ jobs: + compose: 'RHEL-8.7.0-Nightly' + pull_request_status_name: "8.7to9.1" + tmt_context: "distro=rhel-8.7" ++ if: | ++ github.event.issue.pull_request ++ && ! startsWith(github.event.comment.body, '/rerun-sst') ++ && contains(fromJson('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association) + + call_workflow_tests_86to90_sst: + needs: call_workflow_copr_build +@@ -87,7 +107,7 @@ jobs: + update_pull_request_status: 'false' + if: | + github.event.issue.pull_request +- && startsWith(github.event.comment.body, '/rerun-all') ++ && startsWith(github.event.comment.body, '/rerun-sst') + && contains(fromJson('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association) + + call_workflow_tests_8to9_aws: +@@ -101,3 +121,7 @@ jobs: + environment_settings: '{"provisioning": {"post_install_script": "#!/bin/sh\nsudo sed -i s/.*ssh-rsa/ssh-rsa/ /root/.ssh/authorized_keys"}}' + pull_request_status_name: "8to9-aws-e2e" + variables: "RHUI=aws" ++ if: | ++ github.event.issue.pull_request ++ && ! startsWith(github.event.comment.body, '/rerun-sst') ++ && contains(fromJson('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association) +-- +2.39.0 + diff --git a/SOURCES/0011-Do-not-run-rhsm-tests-in-upstream.patch b/SOURCES/0011-Do-not-run-rhsm-tests-in-upstream.patch new file mode 100644 index 0000000..674b8b4 --- /dev/null +++ b/SOURCES/0011-Do-not-run-rhsm-tests-in-upstream.patch @@ -0,0 +1,163 @@ +From 057b2887586e9255c2b45c2ce9463240d1a1b484 Mon Sep 17 00:00:00 2001 +From: Inessa Vasilevskaya +Date: Mon, 28 Nov 2022 12:50:47 +0100 +Subject: [PATCH 11/16] Do not run rhsm tests in upstream + +It was decided to limit test tuns to tier0/tier1, non-RHSM +tests only. +Also this patch will keep github action parameters in sync with +supported upgrade paths. +--- + .github/workflows/reuse-tests-7to8.yml | 2 +- + .github/workflows/reuse-tests-8to9.yml | 2 +- + .github/workflows/tmt-tests.yml | 34 ++++++++++++++------------ + 3 files changed, 21 insertions(+), 17 deletions(-) + +diff --git a/.github/workflows/reuse-tests-7to8.yml b/.github/workflows/reuse-tests-7to8.yml +index b1a9a8e..cfdfb35 100644 +--- a/.github/workflows/reuse-tests-7to8.yml ++++ b/.github/workflows/reuse-tests-7to8.yml +@@ -13,7 +13,7 @@ on: + type: string + tmt_plan_regex: + type: string +- default: "^(?!.*upgrade_plugin)(?!.*c2r)(?!.*sap)(?!.*8to9)" ++ default: "^(?!.*upgrade_plugin)(?!.*tier[2-3].*)(?!.*rhsm)(?!.*c2r)(?!.*sap)(?!.*8to9)" + environment_settings: + type: string + default: '{"provisioning": {"post_install_script": "#!/bin/sh\nsudo sed -i s/.*ssh-rsa/ssh-rsa/ /root/.ssh/authorized_keys"}}' +diff --git a/.github/workflows/reuse-tests-8to9.yml b/.github/workflows/reuse-tests-8to9.yml +index 828a717..5d2e9d5 100644 +--- a/.github/workflows/reuse-tests-8to9.yml ++++ b/.github/workflows/reuse-tests-8to9.yml +@@ -13,7 +13,7 @@ on: + type: string + tmt_plan_regex: + type: string +- default: "^(?!.*upgrade_plugin)(?!.*c2r)(?!.*sap)(?!.*7to8)" ++ default: "^(?!.*upgrade_plugin)(?!.*tier[2-3].*)(?!.*rhsm)(?!.*c2r)(?!.*sap)(?!.*7to8)" + environment_settings: + type: string + default: '{"provisioning": {"post_install_script": "#!/bin/sh\nsudo sed -i s/.*ssh-rsa/ssh-rsa/ /root/.ssh/authorized_keys"}}' +diff --git a/.github/workflows/tmt-tests.yml b/.github/workflows/tmt-tests.yml +index 15b7eb3..2212453 100644 +--- a/.github/workflows/tmt-tests.yml ++++ b/.github/workflows/tmt-tests.yml +@@ -10,14 +10,15 @@ jobs: + uses: ./.github/workflows/reuse-copr-build.yml + secrets: inherit + +- call_workflow_tests_79to84_integration: ++ call_workflow_tests_79to88_integration: + needs: call_workflow_copr_build + uses: ./.github/workflows/reuse-tests-7to8.yml + secrets: inherit + with: + copr_artifacts: ${{ needs.call_workflow_copr_build.outputs.artifacts }} +- tmt_plan_regex: "^(?!.*upgrade_plugin)(?!.*c2r)(?!.*sap)(?!.*8to9)(?!.*morf)" +- pull_request_status_name: "7.9to8.4" ++ tmt_plan_regex: "^(?!.*upgrade_plugin)(?!.*tier[2-3].*)(?!.*rhsm)(?!.*c2r)(?!.*sap)(?!.*8to9)(?!.*morf)" ++ pull_request_status_name: "7.9to8.8" ++ variables: 'TARGET_RELEASE=8.8' + if: | + github.event.issue.pull_request + && ! startsWith(github.event.comment.body, '/rerun-sst') +@@ -29,7 +30,7 @@ jobs: + secrets: inherit + with: + copr_artifacts: ${{ needs.call_workflow_copr_build.outputs.artifacts }} +- tmt_plan_regex: "^(?!.*upgrade_plugin)(?!.*c2r)(?!.*sap)(?!.*8to9)(?!.*morf)" ++ tmt_plan_regex: "^(?!.*upgrade_plugin)(?!.*tier[2-3].*)(?!.*rhsm)(?!.*c2r)(?!.*sap)(?!.*7to8)(?!.*morf)" + variables: 'TARGET_RELEASE=8.6' + pull_request_status_name: "7.9to8.6" + if: | +@@ -37,15 +38,16 @@ jobs: + && ! startsWith(github.event.comment.body, '/rerun-sst') + && contains(fromJson('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association) + +- call_workflow_tests_79to84_sst: ++ call_workflow_tests_79to88_sst: + needs: call_workflow_copr_build + uses: ./.github/workflows/reuse-tests-7to8.yml + secrets: inherit + with: + copr_artifacts: ${{ needs.call_workflow_copr_build.outputs.artifacts }} + tmt_plan_regex: "^(/plans/morf)(?!.*sap)" +- pull_request_status_name: "7.9to8.4-sst" ++ pull_request_status_name: "7.9to8.8-sst" + update_pull_request_status: 'false' ++ variables: 'TARGET_RELEASE=8.8' + if: | + github.event.issue.pull_request + && startsWith(github.event.comment.body, '/rerun-sst') +@@ -57,7 +59,7 @@ jobs: + secrets: inherit + with: + copr_artifacts: ${{ needs.call_workflow_copr_build.outputs.artifacts }} +- tmt_plan_regex: "^(?!.*upgrade_plugin)(?!.*c2r)(?!.*sap)(?!.*8to9)(.*e2e)" ++ tmt_plan_regex: "^(?!.*upgrade_plugin)(?!.*tier[2-3].*)(?!.*rhsm)(?!.*c2r)(?!.*sap)(?!.*8to9)(.*e2e)" + compose: "RHEL-7.9-rhui" + environment_settings: '{"provisioning": {"post_install_script": "#!/bin/sh\nsudo sed -i s/.*ssh-rsa/ssh-rsa/ /root/.ssh/authorized_keys; echo 42; yum-config-manager --enable rhel-7-server-rhui-optional-rpms"}}' + pull_request_status_name: "7to8-aws-e2e" +@@ -73,23 +75,24 @@ jobs: + secrets: inherit + with: + copr_artifacts: ${{ needs.call_workflow_copr_build.outputs.artifacts }} +- tmt_plan_regex: "^(?!.*upgrade_plugin)(?!.*c2r)(?!.*sap)(?!.*7to8)(?!.*morf)" ++ tmt_plan_regex: "^(?!.*upgrade_plugin)(?!.*tier[2-3].*)(?!.*rhsm)(?!.*c2r)(?!.*sap)(?!.*7to8)(?!.*morf)" ++ variables: 'TARGET_RELEASE=9.0;TARGET_KERNEL=el9;RHSM_REPOS=rhel-8-for-x86_64-appstream-eus-rpms,rhel-8-for-x86_64-baseos-eus-rpms' + pull_request_status_name: "8.6to9.0" + if: | + github.event.issue.pull_request + && ! startsWith(github.event.comment.body, '/rerun-sst') + && contains(fromJson('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association) + +- call_workflow_tests_87to91_integration: ++ call_workflow_tests_87to90_integration: + needs: call_workflow_copr_build + uses: ./.github/workflows/reuse-tests-8to9.yml + secrets: inherit + with: + copr_artifacts: ${{ needs.call_workflow_copr_build.outputs.artifacts }} +- tmt_plan_regex: "^(?!.*upgrade_plugin)(?!.*c2r)(?!.*sap)(?!.*7to8)(?!.*morf)" +- variables: 'LEAPP_DEVEL_TARGET_PRODUCT_TYPE=beta;RHSM_SKU=RH00069;TARGET_RELEASE=9.1;TARGET_KERNEL=el9;RHSM_REPOS=rhel-8-for-x86_64-appstream-rpms,rhel-8-for-x86_64-baseos-rpms' ++ tmt_plan_regex: "^(?!.*upgrade_plugin)(?!.*tier[2-3].*)(?!.*rhsm)(?!.*c2r)(?!.*sap)(?!.*7to8)(?!.*morf)" ++ variables: 'TARGET_RELEASE=9.0;TARGET_KERNEL=el9;RHSM_REPOS=rhel-8-for-x86_64-appstream-rpms,rhel-8-for-x86_64-baseos-rpms' + compose: 'RHEL-8.7.0-Nightly' +- pull_request_status_name: "8.7to9.1" ++ pull_request_status_name: "8.7to9.0" + tmt_context: "distro=rhel-8.7" + if: | + github.event.issue.pull_request +@@ -103,6 +106,7 @@ jobs: + with: + copr_artifacts: ${{ needs.call_workflow_copr_build.outputs.artifacts }} + tmt_plan_regex: "^(/plans/morf)(?!.*sap)" ++ variables: 'TARGET_RELEASE=9.0;TARGET_KERNEL=el9;RHSM_REPOS=rhel-8-for-x86_64-appstream-eus-rpms,rhel-8-for-x86_64-baseos-eus-rpms' + pull_request_status_name: "8.6to9.0-sst" + update_pull_request_status: 'false' + if: | +@@ -110,17 +114,17 @@ jobs: + && startsWith(github.event.comment.body, '/rerun-sst') + && contains(fromJson('["OWNER", "MEMBER", "COLLABORATOR"]'), github.event.comment.author_association) + +- call_workflow_tests_8to9_aws: ++ call_workflow_tests_86to90_aws: + needs: call_workflow_copr_build + uses: ./.github/workflows/reuse-tests-8to9.yml + secrets: inherit + with: + copr_artifacts: ${{ needs.call_workflow_copr_build.outputs.artifacts }} +- tmt_plan_regex: "^(?!.*upgrade_plugin)(?!.*c2r)(?!.*sap)(?!.*7to8)(.*e2e)" ++ tmt_plan_regex: "^(?!.*upgrade_plugin)(?!.*tier[2-3].*)(?!.*rhsm)(?!.*c2r)(?!.*sap)(?!.*7to8)(.*e2e)" + compose: "RHEL-8.6-rhui" + environment_settings: '{"provisioning": {"post_install_script": "#!/bin/sh\nsudo sed -i s/.*ssh-rsa/ssh-rsa/ /root/.ssh/authorized_keys"}}' + pull_request_status_name: "8to9-aws-e2e" +- variables: "RHUI=aws" ++ variables: 'TARGET_RELEASE=9.0;TARGET_KERNEL=el9;RHSM_REPOS=rhel-8-for-x86_64-appstream-eus-rpms,rhel-8-for-x86_64-baseos-eus-rpms;RHUI=aws' + if: | + github.event.issue.pull_request + && ! startsWith(github.event.comment.body, '/rerun-sst') +-- +2.39.0 + diff --git a/SOURCES/0012-Set-SOURCE_RELEASE-env-var.patch b/SOURCES/0012-Set-SOURCE_RELEASE-env-var.patch new file mode 100644 index 0000000..b01aa79 --- /dev/null +++ b/SOURCES/0012-Set-SOURCE_RELEASE-env-var.patch @@ -0,0 +1,92 @@ +From 821358f50454108b3b43c1e51623089424a8cc7b Mon Sep 17 00:00:00 2001 +From: Inessa Vasilevskaya +Date: Fri, 16 Dec 2022 11:38:53 +0100 +Subject: [PATCH 12/16] Set SOURCE_RELEASE env var + +Following a change in tmt-tests this is a necessary addition +for upgrade_plugin to correctly choose an upgrade path. +--- + .github/workflows/tmt-tests.yml | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +diff --git a/.github/workflows/tmt-tests.yml b/.github/workflows/tmt-tests.yml +index 2212453..1fd012b 100644 +--- a/.github/workflows/tmt-tests.yml ++++ b/.github/workflows/tmt-tests.yml +@@ -18,7 +18,7 @@ jobs: + copr_artifacts: ${{ needs.call_workflow_copr_build.outputs.artifacts }} + tmt_plan_regex: "^(?!.*upgrade_plugin)(?!.*tier[2-3].*)(?!.*rhsm)(?!.*c2r)(?!.*sap)(?!.*8to9)(?!.*morf)" + pull_request_status_name: "7.9to8.8" +- variables: 'TARGET_RELEASE=8.8' ++ variables: 'SOURCE_RELEASE=7.9;TARGET_RELEASE=8.8' + if: | + github.event.issue.pull_request + && ! startsWith(github.event.comment.body, '/rerun-sst') +@@ -30,8 +30,8 @@ jobs: + secrets: inherit + with: + copr_artifacts: ${{ needs.call_workflow_copr_build.outputs.artifacts }} +- tmt_plan_regex: "^(?!.*upgrade_plugin)(?!.*tier[2-3].*)(?!.*rhsm)(?!.*c2r)(?!.*sap)(?!.*7to8)(?!.*morf)" +- variables: 'TARGET_RELEASE=8.6' ++ tmt_plan_regex: "^(?!.*upgrade_plugin)(?!.*tier[2-3].*)(?!.*rhsm)(?!.*c2r)(?!.*sap)(?!.*8to9)(?!.*morf)" ++ variables: 'SOURCE_RELEASE=7.9;TARGET_RELEASE=8.6' + pull_request_status_name: "7.9to8.6" + if: | + github.event.issue.pull_request +@@ -47,7 +47,7 @@ jobs: + tmt_plan_regex: "^(/plans/morf)(?!.*sap)" + pull_request_status_name: "7.9to8.8-sst" + update_pull_request_status: 'false' +- variables: 'TARGET_RELEASE=8.8' ++ variables: 'SOURCE_RELEASE=7.9;TARGET_RELEASE=8.8' + if: | + github.event.issue.pull_request + && startsWith(github.event.comment.body, '/rerun-sst') +@@ -63,7 +63,7 @@ jobs: + compose: "RHEL-7.9-rhui" + environment_settings: '{"provisioning": {"post_install_script": "#!/bin/sh\nsudo sed -i s/.*ssh-rsa/ssh-rsa/ /root/.ssh/authorized_keys; echo 42; yum-config-manager --enable rhel-7-server-rhui-optional-rpms"}}' + pull_request_status_name: "7to8-aws-e2e" +- variables: "RHUI=aws" ++ variables: 'SOURCE_RELEASE=7.9;TARGET_RELEASE=8.6;RHUI=aws' + if: | + github.event.issue.pull_request + && ! startsWith(github.event.comment.body, '/rerun-sst') +@@ -76,7 +76,7 @@ jobs: + with: + copr_artifacts: ${{ needs.call_workflow_copr_build.outputs.artifacts }} + tmt_plan_regex: "^(?!.*upgrade_plugin)(?!.*tier[2-3].*)(?!.*rhsm)(?!.*c2r)(?!.*sap)(?!.*7to8)(?!.*morf)" +- variables: 'TARGET_RELEASE=9.0;TARGET_KERNEL=el9;RHSM_REPOS=rhel-8-for-x86_64-appstream-eus-rpms,rhel-8-for-x86_64-baseos-eus-rpms' ++ variables: 'SOURCE_RELEASE=8.6;TARGET_RELEASE=9.0;TARGET_KERNEL=el9;RHSM_REPOS=rhel-8-for-x86_64-appstream-eus-rpms,rhel-8-for-x86_64-baseos-eus-rpms' + pull_request_status_name: "8.6to9.0" + if: | + github.event.issue.pull_request +@@ -90,7 +90,7 @@ jobs: + with: + copr_artifacts: ${{ needs.call_workflow_copr_build.outputs.artifacts }} + tmt_plan_regex: "^(?!.*upgrade_plugin)(?!.*tier[2-3].*)(?!.*rhsm)(?!.*c2r)(?!.*sap)(?!.*7to8)(?!.*morf)" +- variables: 'TARGET_RELEASE=9.0;TARGET_KERNEL=el9;RHSM_REPOS=rhel-8-for-x86_64-appstream-rpms,rhel-8-for-x86_64-baseos-rpms' ++ variables: 'SOURCE_RELEASE=8.7;TARGET_RELEASE=9.0;TARGET_KERNEL=el9;RHSM_REPOS=rhel-8-for-x86_64-appstream-rpms,rhel-8-for-x86_64-baseos-rpms' + compose: 'RHEL-8.7.0-Nightly' + pull_request_status_name: "8.7to9.0" + tmt_context: "distro=rhel-8.7" +@@ -106,7 +106,7 @@ jobs: + with: + copr_artifacts: ${{ needs.call_workflow_copr_build.outputs.artifacts }} + tmt_plan_regex: "^(/plans/morf)(?!.*sap)" +- variables: 'TARGET_RELEASE=9.0;TARGET_KERNEL=el9;RHSM_REPOS=rhel-8-for-x86_64-appstream-eus-rpms,rhel-8-for-x86_64-baseos-eus-rpms' ++ variables: 'SOURCE_RELEASE=8.6;TARGET_RELEASE=9.0;TARGET_KERNEL=el9;RHSM_REPOS=rhel-8-for-x86_64-appstream-eus-rpms,rhel-8-for-x86_64-baseos-eus-rpms' + pull_request_status_name: "8.6to9.0-sst" + update_pull_request_status: 'false' + if: | +@@ -124,7 +124,7 @@ jobs: + compose: "RHEL-8.6-rhui" + environment_settings: '{"provisioning": {"post_install_script": "#!/bin/sh\nsudo sed -i s/.*ssh-rsa/ssh-rsa/ /root/.ssh/authorized_keys"}}' + pull_request_status_name: "8to9-aws-e2e" +- variables: 'TARGET_RELEASE=9.0;TARGET_KERNEL=el9;RHSM_REPOS=rhel-8-for-x86_64-appstream-eus-rpms,rhel-8-for-x86_64-baseos-eus-rpms;RHUI=aws' ++ variables: 'SOURCE_RELEASE=8.6;TARGET_RELEASE=9.0;TARGET_KERNEL=el9;RHSM_REPOS=rhel-8-for-x86_64-appstream-eus-rpms,rhel-8-for-x86_64-baseos-eus-rpms;RHUI=aws' + if: | + github.event.issue.pull_request + && ! startsWith(github.event.comment.body, '/rerun-sst') +-- +2.39.0 + diff --git a/SOURCES/0013-change-the-permissions-for-var-lib-leapp-directory-f.patch b/SOURCES/0013-change-the-permissions-for-var-lib-leapp-directory-f.patch new file mode 100644 index 0000000..6a944de --- /dev/null +++ b/SOURCES/0013-change-the-permissions-for-var-lib-leapp-directory-f.patch @@ -0,0 +1,40 @@ +From 895caae0dac1dabd0966b5c4c9e29b86573fe0c8 Mon Sep 17 00:00:00 2001 +From: PeterMocary +Date: Fri, 16 Dec 2022 16:20:49 +0100 +Subject: [PATCH 13/16] change the permissions for /var/lib/leapp directory + from '755' to '700' + +--- + Makefile | 2 +- + packaging/leapp.spec | 2 +- + 2 files changed, 2 insertions(+), 2 deletions(-) + +diff --git a/Makefile b/Makefile +index d392765..2653896 100644 +--- a/Makefile ++++ b/Makefile +@@ -188,7 +188,7 @@ install: + install -dm 0755 ${CONFDIR} + install -m 0744 etc/leapp/leapp.conf ${CONFDIR} + install -m 0744 etc/leapp/logger.conf ${CONFDIR} +- install -dm 0755 ${LIBDIR} ++ install -dm 0700 ${LIBDIR} + umask 177 && $(PYTHON_VENV) -c "import sqlite3; sqlite3.connect('${LIBDIR}/audit.db').executescript(open('res/audit-layout.sql', 'r').read())" + + install-test: +diff --git a/packaging/leapp.spec b/packaging/leapp.spec +index dfca9aa..071ffe7 100644 +--- a/packaging/leapp.spec ++++ b/packaging/leapp.spec +@@ -180,7 +180,7 @@ install -m 0644 -p man/snactor.1 %{buildroot}%{_mandir}/man1/ + install -m 0755 -d %{buildroot}%{_datadir}/leapp + install -m 0755 -d %{buildroot}%{_datadir}/leapp/report_schema + install -m 0644 -p report-schema-v110.json %{buildroot}%{_datadir}/leapp/report_schema/report-schema.json +-install -m 0755 -d %{buildroot}%{_sharedstatedir}/leapp ++install -m 0700 -d %{buildroot}%{_sharedstatedir}/leapp + install -m 0755 -d %{buildroot}%{_sysconfdir}/leapp + install -m 0755 -d %{buildroot}%{_sysconfdir}/leapp/repos.d + install -m 0600 -d %{buildroot}%{_sysconfdir}/leapp/answers +-- +2.39.0 + diff --git a/SOURCES/0014-Expose-tracebacks-from-actor-exceptions.patch b/SOURCES/0014-Expose-tracebacks-from-actor-exceptions.patch new file mode 100644 index 0000000..7ec463d --- /dev/null +++ b/SOURCES/0014-Expose-tracebacks-from-actor-exceptions.patch @@ -0,0 +1,111 @@ +From 3d453d180d9b7bf0e283e313d1b5e294a5b4aeeb Mon Sep 17 00:00:00 2001 +From: Roman Prilipskii +Date: Wed, 9 Nov 2022 07:22:54 +0400 +Subject: [PATCH 14/16] Expose tracebacks from actor exceptions + +Previously when leapp would be running actors, any exceptions raised by +those actors in child processes would only be output to stderr, +while the main process would only have the exit code to examine. + +Consequently, there was no real way to log occuring exceptions - +only providing the aforementioned exit code was possible. + +This patch adds a pipe between the main and the actor processes, +through which a formatted exception + traceback string is provided to +the main process. +This string is then packaged into the LeappRuntimeError thrown from the +process, to be utilized downstream in +workflow/command code. +--- + leapp/exceptions.py | 4 +++- + leapp/repository/actor_definition.py | 31 +++++++++++++++++++++------- + 2 files changed, 27 insertions(+), 8 deletions(-) + +diff --git a/leapp/exceptions.py b/leapp/exceptions.py +index 1bd4222..ef9d647 100644 +--- a/leapp/exceptions.py ++++ b/leapp/exceptions.py +@@ -109,7 +109,9 @@ class UnknownCommandError(LeappError): + + + class LeappRuntimeError(LeappError): +- pass ++ def __init__(self, message, exception_info): ++ super().__init__(message) ++ self.exception_info = exception_info + + + class StopActorExecution(Exception): +diff --git a/leapp/repository/actor_definition.py b/leapp/repository/actor_definition.py +index 7c0beb9..2b5df1a 100644 +--- a/leapp/repository/actor_definition.py ++++ b/leapp/repository/actor_definition.py +@@ -4,9 +4,10 @@ import logging + import os + import pkgutil + import sys ++import traceback + import warnings + from io import UnsupportedOperation +-from multiprocessing import Process, Queue ++from multiprocessing import Process, Queue, Pipe + + import leapp.libraries.actor # noqa # pylint: disable=unused-import + from leapp.actors import get_actor_metadata, get_actors +@@ -56,7 +57,7 @@ class ActorCallContext(object): + self.skip_dialogs = skip_dialogs + + @staticmethod +- def _do_run(stdin, logger, messaging, definition, config_model, skip_dialogs, args, kwargs): ++ def _do_run(stdin, logger, messaging, definition, config_model, skip_dialogs, error_pipe, args, kwargs): + if stdin is not None: + try: + sys.stdin = os.fdopen(stdin) +@@ -69,7 +70,13 @@ class ActorCallContext(object): + target_actor = [actor for actor in get_actors() if actor.name == definition.name][0] + actor_instance = target_actor(logger=logger, messaging=messaging, config_model=config_model, + skip_dialogs=skip_dialogs) +- actor_instance.run(*args, **kwargs) ++ try: ++ actor_instance.run(*args, **kwargs) ++ except Exception: ++ # Send the exception data string to the parent process ++ # and reraise. ++ error_pipe.send(traceback.format_exc()) ++ raise + try: + # By this time this is no longer set, so we have to get it back + os.environ['LEAPP_CURRENT_ACTOR'] = actor_instance.name +@@ -96,15 +103,25 @@ class ActorCallContext(object): + stdin = sys.stdin.fileno() + except UnsupportedOperation: + stdin = None ++ ++ pipe_receiver, pipe_sender = Pipe() + p = Process(target=self._do_run, + args=(stdin, self.logger, self.messaging, self.definition, self.config_model, +- self.skip_dialogs, args, kwargs)) ++ self.skip_dialogs, pipe_sender, args, kwargs)) + p.start() + p.join() + if p.exitcode != 0: +- raise LeappRuntimeError( +- 'Actor {actorname} unexpectedly terminated with exit code: {exitcode}' +- .format(actorname=self.definition.name, exitcode=p.exitcode)) ++ err_message = "Actor {actorname} unexpectedly terminated with exit code: {exitcode}".format( ++ actorname=self.definition.name, exitcode=p.exitcode) ++ ++ exception_info = None ++ # If there's data in the pipe, it's formatted exception info. ++ if pipe_receiver.poll(): ++ exception_info = pipe_receiver.recv() ++ ++ # This LeappRuntimeError will contain an exception traceback ++ # in addition to the above message. ++ raise LeappRuntimeError(err_message, exception_info) + + + class ActorDefinition(object): +-- +2.39.0 + diff --git a/SOURCES/0015-Add-a-default-None-value-to-the-LeappRuntimeError-fi.patch b/SOURCES/0015-Add-a-default-None-value-to-the-LeappRuntimeError-fi.patch new file mode 100644 index 0000000..bdcc69c --- /dev/null +++ b/SOURCES/0015-Add-a-default-None-value-to-the-LeappRuntimeError-fi.patch @@ -0,0 +1,25 @@ +From adc83588e269866d01bde579e075405939b08434 Mon Sep 17 00:00:00 2001 +From: Roman Prilipskii +Date: Wed, 9 Nov 2022 07:24:38 +0400 +Subject: [PATCH 15/16] Add a default None value to the LeappRuntimeError field + +--- + leapp/exceptions.py | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/leapp/exceptions.py b/leapp/exceptions.py +index ef9d647..d6bbf00 100644 +--- a/leapp/exceptions.py ++++ b/leapp/exceptions.py +@@ -109,7 +109,7 @@ class UnknownCommandError(LeappError): + + + class LeappRuntimeError(LeappError): +- def __init__(self, message, exception_info): ++ def __init__(self, message, exception_info=None): + super().__init__(message) + self.exception_info = exception_info + +-- +2.39.0 + diff --git a/SOURCES/0016-Fix-super-args-for-Leapp-exception-classes.patch b/SOURCES/0016-Fix-super-args-for-Leapp-exception-classes.patch new file mode 100644 index 0000000..2bb9c06 --- /dev/null +++ b/SOURCES/0016-Fix-super-args-for-Leapp-exception-classes.patch @@ -0,0 +1,32 @@ +From 2d7ec8f21ea70fd0dc9656cd63a761342cefeb8f Mon Sep 17 00:00:00 2001 +From: Roman Prilipskii +Date: Mon, 28 Nov 2022 07:12:43 +0400 +Subject: [PATCH 16/16] Fix super() args for Leapp exception classes + +--- + leapp/exceptions.py | 4 ++-- + 1 file changed, 2 insertions(+), 2 deletions(-) + +diff --git a/leapp/exceptions.py b/leapp/exceptions.py +index d6bbf00..43c5905 100644 +--- a/leapp/exceptions.py ++++ b/leapp/exceptions.py +@@ -104,13 +104,13 @@ class CommandDefinitionError(LeappError): + + class UnknownCommandError(LeappError): + def __init__(self, command): +- super().__init__('Unknown command: {}'.format(command)) ++ super(UnknownCommandError, self).__init__('Unknown command: {}'.format(command)) + self.requested = command + + + class LeappRuntimeError(LeappError): + def __init__(self, message, exception_info=None): +- super().__init__(message) ++ super(LeappRuntimeError, self).__init__(message) + self.exception_info = exception_info + + +-- +2.39.0 + diff --git a/SPECS/leapp.spec b/SPECS/leapp.spec index b215f58..a19baa0 100644 --- a/SPECS/leapp.spec +++ b/SPECS/leapp.spec @@ -37,7 +37,7 @@ Name: leapp Version: 0.15.0 -Release: 1%{?dist}.1 +Release: 4%{?dist} Summary: OS & Application modernization framework License: ASL 2.0 @@ -65,7 +65,22 @@ Requires: leapp-repository # PATCHES HERE # Patch0001: filename.patch -Patch0001: 0001-Make-checks-for-missing-answers-more-strict.patch +Patch0001: 0001-Make-checks-for-missing-answers-more-strict.patch +Patch0002: 0002-Add-Makefile-target-for-building-RPMs-locally-and-in.patch +Patch0003: 0003-Add-possibility-to-use-docker-to-run-tests-and-build.patch +Patch0004: 0004-Document-workaround-for-the-broken-snactor.patch +Patch0005: 0005-Improve-wording.patch +Patch0006: 0006-Docs-update-the-leapp-deprecation-doc-add-v0.15.0.patch +Patch0007: 0007-snactor.sanity-check-Add-option-to-ignore-models.patch +Patch0008: 0008-Update-leapp-snactor-commands-workflow-sanity_check..patch +Patch0009: 0009-Tune-tmt-tests-regexes-to-align-with-QE-automation.patch +Patch0010: 0010-Change-rerun-all-to-rerun-sst.patch +Patch0011: 0011-Do-not-run-rhsm-tests-in-upstream.patch +Patch0012: 0012-Set-SOURCE_RELEASE-env-var.patch +Patch0013: 0013-change-the-permissions-for-var-lib-leapp-directory-f.patch +Patch0014: 0014-Expose-tracebacks-from-actor-exceptions.patch +Patch0015: 0015-Add-a-default-None-value-to-the-LeappRuntimeError-fi.patch +Patch0016: 0016-Fix-super-args-for-Leapp-exception-classes.patch %description @@ -162,6 +177,21 @@ Requires: findutils # APPLY REGISTERED PATCHES HERE # %%patch0001 -p1 %patch0001 -p1 +%patch0002 -p1 +%patch0003 -p1 +%patch0004 -p1 +%patch0005 -p1 +%patch0006 -p1 +%patch0007 -p1 +%patch0008 -p1 +%patch0009 -p1 +%patch0010 -p1 +%patch0011 -p1 +%patch0012 -p1 +%patch0013 -p1 +%patch0014 -p1 +%patch0015 -p1 +%patch0016 -p1 ################################################## @@ -183,7 +213,7 @@ install -m 0644 -p man/snactor.1 %{buildroot}%{_mandir}/man1/ install -m 0755 -d %{buildroot}%{_datadir}/leapp install -m 0755 -d %{buildroot}%{_datadir}/leapp/report_schema install -m 0644 -p report-schema-v110.json %{buildroot}%{_datadir}/leapp/report_schema/report-schema.json -install -m 0755 -d %{buildroot}%{_sharedstatedir}/leapp +install -m 0700 -d %{buildroot}%{_sharedstatedir}/leapp install -m 0755 -d %{buildroot}%{_sysconfdir}/leapp install -m 0755 -d %{buildroot}%{_sysconfdir}/leapp/repos.d install -m 0600 -d %{buildroot}%{_sysconfdir}/leapp/answers @@ -245,15 +275,23 @@ install -m 0644 -p man/leapp.1 %{buildroot}%{_mandir}/man1/ # no files here %changelog -* Thu Sep 08 2022 Petr Stodulka - 0.15.0-1.1 +* Fri Jan 20 2023 Petr Stodulka - 0.15.0-4 +- Change DAC for /var/lib/leapp to 0700 to make it accessible for root only +- Propagate error messages from leapp actors to the main leapp process +- Resolves: rhbz#2162710 + +* Thu Sep 08 2022 Petr Stodulka - 0.15.0-2 +- Fix the check of missing required answers +- Resolves: rhbz#2124332 + +* Wed Aug 24 2022 Petr Stodulka - 0.15.0-1 - Rebase to v0.15.0 - Bump leapp-framework to 3.1 - Deprecate `reporting.(Tags|Flags)` replaced by `reporting.Groups` - Fix crashes when processing invalid FQDNs - Fix the error msg when a leapp CLI command does not exist - Introduce new report JSON schema v1.2.0 (default: 1.1.0) -- Fix the check of missing required answers -- Resolves: rhbz#2125285 +- Resolves: rhbz#2090992, rhbz#2106065 * Mon Mar 14 2022 Petr Stodulka - 0.14.0-1 - Rebase to v0.14.0