in scripts/elf_ubuntu_dependency_analyzer.py [0:0]
def process_binary(binary_path):
"""
Process a single binary file to determine its dependencies.
Args:
binary_path (str): Path to the binary file.
Returns:
tuple: A tuple containing lists of packages, special cases, and missing libraries.
"""
print(f"Binary: {binary_path}\n")
print("Libraries and their corresponding packages:")
packages, special_cases, missing_libraries = [], [], []
ldd_output = run_command(['ldd', binary_path])
if ldd_output is None:
return packages, special_cases, missing_libraries
for line in ldd_output.splitlines():
if "=>" not in line:
continue
parts = line.split('=>')
lib_name = parts[0].strip()
lib_path = parts[1].split()[0].strip()
lib_path = os.path.realpath(lib_path)
if lib_path == "not":
missing_libraries.append(lib_name)
print(f"MISSING: {line.strip()}")
else:
package_info = get_package_info(lib_path)
if package_info:
print(f"{lib_path} => {package_info[1]}")
packages.append(package_info)
else:
special_case = f"{lib_path} is not found and might be a special case"
special_cases.append(special_case)
print(f"{lib_path} => Not found, might be a special case")
print_summary(packages, special_cases, missing_libraries, binary_path)
print("-------------------------------------------")
return packages, special_cases, missing_libraries