diff --git a/0031-Deal-with-EPEL-repositories-create-by-user-mannally.patch b/0031-Deal-with-EPEL-repositories-create-by-user-mannally.patch new file mode 100644 index 0000000000000000000000000000000000000000..a18f34574bd7f1a1ddf3c7fafb7a58dd8cdb32dc --- /dev/null +++ b/0031-Deal-with-EPEL-repositories-create-by-user-mannally.patch @@ -0,0 +1,103 @@ +From 37ab9cda0fa62dd1526f5fd4f4b1c7f81cbb9dab Mon Sep 17 00:00:00 2001 +From: Weisson +Date: Sun, 16 Oct 2022 18:31:15 +0800 +Subject: [PATCH] Deal with EPEL repositories create by user mannally. + +Signed-off-by: Weisson +--- + .../el7toel8/actors/rpmscanner/actor.py | 67 +++++++++++++++++++ + 1 file changed, 67 insertions(+) + +diff --git a/repos/system_upgrade/el7toel8/actors/rpmscanner/actor.py b/repos/system_upgrade/el7toel8/actors/rpmscanner/actor.py +index 27fe4b3..589e8a6 100644 +--- a/repos/system_upgrade/el7toel8/actors/rpmscanner/actor.py ++++ b/repos/system_upgrade/el7toel8/actors/rpmscanner/actor.py +@@ -4,6 +4,9 @@ from leapp.libraries.common.rpms import get_installed_rpms + from leapp.models import InstalledRPM, RPM + from leapp.tags import IPUWorkflowTag, FactsPhaseTag + ++import os ++from leapp.libraries import stdlib ++ + + class RpmScanner(Actor): + """ +@@ -17,6 +20,14 @@ class RpmScanner(Actor): + produces = (InstalledRPM,) + tags = (IPUWorkflowTag, FactsPhaseTag) + ++ epel_package_name = "epel-release" ++ ++ def epel_but_not_in_source(self): ++ epel_not_from_source = os.system("rpm -q %s" % self.epel_package_name) ++ epel_exists = not os.system("yum repolist | grep -q '^epel'") ++ ++ return epel_not_from_source and epel_exists ++ + def process(self): + output = get_installed_rpms() + pkg_repos = get_package_repository_data() +@@ -37,4 +48,60 @@ class RpmScanner(Actor): + release=release, + pgpsig=pgpsig, + repository=repository)) ++ ++ import subprocess ++ import re ++ ++ if self.epel_but_not_in_source(): ++ # disable epel repository ++ subprocess.check_output("yum install -y yum-utils", shell=True) ++ ++ repos = str(subprocess.check_output("yum repolist | grep -v '^repolist: ' | grep -v '^repo id ' | grep -v '^ * ' |" \ ++ "grep -v '^Loaded plugins: ' | grep -v '^Loading ' | awk '{ print $1 }' | xargs", shell=True)).strip() ++ ++ disable_repo_command = "yum-config-manager --disable " ++ ++ # repos = [ repo.split('/')[0] for repo in repos.split() ] ++ for repo_raw in repos.split(): ++ repo = repo_raw.split('/')[0].replace('!', '').replace('*', '') ++ if re.match(r"^epel", repo): ++ subprocess.check_output(disable_repo_command + repo, shell=True) ++ ++ # epel-release repository file backup ++ repo_paths = str(subprocess.check_output("repoquery -l %s | egrep '\.repo$'" % self.epel_package_name, shell=True)).strip().split() ++ for repo_path in repo_paths: ++ if os.path.exists(repo_path): ++ os.rename(repo_path, repo_path + ".bak") ++ ++ # replace epel repo with yum source to ensure that epel stabe during migration ++ subprocess.check_output("yum install -y %s" % self.epel_package_name, shell=True) ++ ++ rpm_cmd = [ ++ '/bin/rpm', ++ '-q', ++ self.epel_package_name, ++ '--queryformat', ++ r'%{NAME}|%{VERSION}|%{RELEASE}|%|EPOCH?{%{EPOCH}}:{(none)}||%|PACKAGER?{%{PACKAGER}}:{(none)}||%|' ++ r'ARCH?{%{ARCH}}:{}||%|DSAHEADER?{%{DSAHEADER:pgpsig}}:{%|RSAHEADER?{%{RSAHEADER:pgpsig}}:{(none)}|}|\n' ++ ] ++ try: ++ entries = stdlib.run(rpm_cmd, split=True)['stdout'] ++ ++ # append epel-release entry to RPMs ++ for entry in entries: ++ name, version, release, epoch, packager, arch, pgpsig = entry.split('|') ++ result.items.append(RPM( ++ name=name, ++ version=version, ++ epoch=epoch, ++ packager=packager, ++ arch=arch, ++ release=release, ++ pgpsig=pgpsig, ++ repository='', ++ )) ++ ++ except stdlib.CalledProcessError as err: ++ error = 'Execution of {CMD} returned {RC}. Unable to find installed packages.'.format(CMD=err.command, RC=err.exit_code) ++ stdlib.api.current_logger().error(error) + self.produce(result) +-- +2.31.1 + diff --git a/leapp-repository.spec b/leapp-repository.spec index b0e58985497ff6c6e1a2857d62321180b48037b5..f7d217f7a146b5a862fbcb4c9819e8e72dd7ed64 100644 --- a/leapp-repository.spec +++ b/leapp-repository.spec @@ -11,7 +11,7 @@ }\ py2_byte_compile "%1" "%2"} -%define anolis_release 6 +%define anolis_release 7 Name: leapp-repository Version: 0.13.0 @@ -56,6 +56,7 @@ Patch27: 0027-upgrade-write-efi-vars-for-ecs-firmware.patch Patch28: 0028-add-disablerepo-option-to-upgrade-kernel-to-RHCK.patch Patch29: 0029-Service-configuration-remains-after-migration.patch Patch30: 0030-fix-subprocess-check_output-method-for-backup-service-configuration.patch +Patch31: 0031-Deal-with-EPEL-repositories-create-by-user-mannally.patch BuildArch: noarch BuildRequires: python-devel @@ -178,6 +179,9 @@ done; # no files here %changelog +* Thu Sep 29 2022 Weisson - 0.13.0-2.7 +- deal with user create EPEL repository file + * Tue Sep 13 2022 mgb01105731 - 0.13.0-2.6 - add disablerepo option to upgrade kernel to RHCK diff --git a/leapp_upgrade_repositories.repo b/leapp_upgrade_repositories.repo index 5c24268d09711ca620c311435d458cba68dc28ad..aca4db5b1ef4e22026f9b2cd0e854a1de87621c1 100644 --- a/leapp_upgrade_repositories.repo +++ b/leapp_upgrade_repositories.repo @@ -23,3 +23,9 @@ name=anolis plus baseurl=https://mirrors.openanolis.cn/anolis/8/Plus/$basearch/os gpgcheck=0 enabled=1 + +[anolis_extras] +name=anolis extras +baseurl=http://mirrors.openanolis.cn/anolis/$releasever/Extras/$basearch/os +enabled=1 +gpgcheck=0