Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
26 changes: 16 additions & 10 deletions src/core/src/package_managers/YumPackageManager.py
Original file line number Diff line number Diff line change
Expand Up @@ -119,10 +119,8 @@ def invoke_package_manager_advanced(self, command, raise_on_exception=True):
raise Exception(error_msg, "[{0}]".format(Constants.ERROR_ADDED_TO_STATUS))
# more return codes should be added as appropriate
else: # verbose diagnostic log
self.composite_logger.log_verbose("\n\n==[SUCCESS]===============================================================")
self.composite_logger.log_debug(" - Return code from package manager: " + str(code))
self.composite_logger.log_debug(" - Output from package manager: \n|\t" + "\n|\t".join(out.splitlines()))
self.composite_logger.log_verbose("==========================================================================\n\n")
self.composite_logger.log_debug("=[Success]=" + "\n - Return code from package manager: " + str(code) +
"\n - Output from package manager: \n|\t" + "\n|\t".join(out.splitlines()))
return out, code

# region Classification-based (incl. All) update check
Expand Down Expand Up @@ -194,6 +192,7 @@ def extract_packages_and_versions_including_duplicates(self, output):
packages = []
versions = []
package_extensions = ['.x86_64', '.noarch', '.i686']
debug_output = ""

def is_package(chunk):
# Using a list comprehension to determine if chunk is a package
Expand Down Expand Up @@ -223,8 +222,9 @@ def is_package(chunk):
versions.append(line[1])
line_index += 1
else:
self.composite_logger.log_debug(" - Inapplicable line (" + str(line_index) + "): " + lines[line_index])
debug_output += "\nInapplicable line (" + str(line_index) + "): " + lines[line_index]

self.composite_logger.log_debug(debug_output)
return packages, versions
# endregion
# endregion
Expand Down Expand Up @@ -269,13 +269,17 @@ def is_package_version_installed(self, package_name, package_version):
cmd = self.single_package_check_installed.replace('<PACKAGE-NAME>', package_name)
output = self.invoke_package_manager(cmd)
packages, package_versions = self.extract_packages_and_versions_including_duplicates(output)
debug_output = ""

for index, package in enumerate(packages):
if package == package_name and (package_versions[index] == package_version):
self.composite_logger.log_debug(" - Installed version match found.")
debug_output += "\nInstalled version match found."
self.composite_logger.log_debug(debug_output)
return True
else:
self.composite_logger.log_debug(" - Did not match: " + package + " (" + package_versions[index] + ")")
debug_output += "\nDid not match: " + package + " (" + package_versions[index] + ")"

self.composite_logger.log_debug(debug_output)

# sometimes packages are removed entirely from the system during installation of other packages
# so let's check that the package is still needed before
Expand All @@ -301,22 +305,24 @@ def extract_dependencies(self, output, packages):

dependencies = []
lines = output.strip().split('\n')
debug_output = ""

for line in lines:
if line.find(" will be updated") < 0 and line.find(" will be an update") < 0 and line.find(" will be installed") < 0:
self.composite_logger.log_debug(" - Inapplicable line: " + str(line))
continue

updates_line = re.split(r'\s+', line.strip())
if len(updates_line) != 7:
self.composite_logger.log_debug(" - Inapplicable line: " + str(line))
debug_output += "\nInapplicable line: " + str(line)
continue

dependent_package_name = self.get_product_name(updates_line[2])
if len(dependent_package_name) != 0 and dependent_package_name not in packages:
self.composite_logger.log_debug(" - Dependency detected: " + dependent_package_name)
debug_output += "\nDependency detected: " + dependent_package_name
dependencies.append(dependent_package_name)

self.composite_logger.log_debug(debug_output)

return dependencies

def get_dependent_list(self, packages):
Expand Down