Skip to content

Instantly share code, notes, and snippets.

@jacobabrahamb4
Last active October 1, 2024 12:28
Show Gist options
  • Save jacobabrahamb4/af02cc037e995776763f9d47fe3edef6 to your computer and use it in GitHub Desktop.
Save jacobabrahamb4/af02cc037e995776763f9d47fe3edef6 to your computer and use it in GitHub Desktop.
Pythin script to search and replace revisions in repo manifests
import xml.dom.minidom, collections
import xml.etree.ElementTree as ET
#snap_combined_jc
effective_manifest_gitlab = xml.dom.minidom.parse('./qcm_test_1/effective_manifest_1.xml')
snap_combined_manifest_kernel = xml.dom.minidom.parse('./qcm_test_1/snap_combined_manifest_kernel.xml')
snap_combined_manifest_qssi = xml.dom.minidom.parse('./qcm_test_1/snap_combined_manifest_qssi.xml')
snap_combined_manifest_vendor = xml.dom.minidom.parse('./qcm_test_1/snap_combined_manifest_vendor.xml')
#effective_manifest = xml.dom.minidom.parse('effective_manifest.xml')
projects_gitlab = effective_manifest_gitlab.getElementsByTagName('project')
projects_qcom_kernel = snap_combined_manifest_kernel.getElementsByTagName('project')
projects_qcom_qssi = snap_combined_manifest_qssi.getElementsByTagName('project')
projects_qcom_vendor = snap_combined_manifest_vendor.getElementsByTagName('project')
all_projects_and_revisions_gitlab = {}
all_projects_and_revisions_qcom = {}
for project in projects_gitlab:
name = project.getAttribute("name")
revision = project.getAttribute("revision")
all_projects_and_revisions_gitlab[name] = revision
for project in projects_qcom_kernel:
name = project.getAttribute("name")
revision = project.getAttribute("revision")
all_projects_and_revisions_qcom[name] = revision
for project in projects_qcom_qssi:
name = project.getAttribute("name")
revision = project.getAttribute("revision")
all_projects_and_revisions_qcom[name] = revision
for project in projects_qcom_vendor:
name = project.getAttribute("name")
revision = project.getAttribute("revision")
all_projects_and_revisions_qcom[name] = revision
all_projects_and_revisions_gitlab_sorted = collections.OrderedDict(sorted(all_projects_and_revisions_gitlab.items()))
all_projects_and_revisions_qcom_sorted = collections.OrderedDict(sorted(all_projects_and_revisions_qcom.items()))
diffs_and_revisions = {}
for key in all_projects_and_revisions_qcom_sorted:
if key not in all_projects_and_revisions_gitlab_sorted.keys():
print("Not present --> ", key)
for key in all_projects_and_revisions_qcom_sorted:
try:
if all_projects_and_revisions_qcom_sorted[key] != all_projects_and_revisions_gitlab_sorted[key]:
#print("Differs --> ", key, " --> ", all_projects_and_revisions_qcom_sorted[key])
diffs_and_revisions[key] = all_projects_and_revisions_qcom_sorted[key]
except KeyError:
#print("Key error: --> ", key)
pass
for key in diffs_and_revisions:
print("Differs ---------> ", key, " --> ", diffs_and_revisions[key])
#qssi_xml = xml.dom.minidom.parse('./existing/qssi.xml')
#vendor_standalone_xml = xml.dom.minidom.parse('./existing/vendor_standalone.xml')
##tree_qssi = ET.ElementTree(file='./existing/qssi.xml')
#tree_vendor = ET.ElementTree(file='./existing/vendor_standalone.xml')
#root_qssi = tree_qssi.getroot()
#root_vendor = tree_vendor.getroot()
#for project in root_qssi.iter('project'):
# name = project.get('name')
# if name in diffs_and_revisions.keys():
# #project.remove('revision')
# project.set('revision', diffs_and_revisions[name])
#for project in root_vendor.iter('project'):
# name = project.get('name')
# if name in diffs_and_revisions.keys():
# #project.remove('revision')
# project.set('revision', diffs_and_revisions[name])
#tree_qssi.write('./existing/qssi_m.xml')
#tree_vendor.write('./existing/vendor_standalone_m.xml')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment