2 from changes import Changes
4 # assumes that the new/current and older distributions are unzipped in /tmp/distro_new and
5 # /tmp_distro_old respectively
8 class DistCompare(object):
9 def __init__(self, remote_url):
11 self.remote_url = remote_url
14 def get_project_names():
15 # TODO: when autorelease starts publishing the dependencies.log artifact, this function (or the consumer
16 # of this tool) can take the latest dependencies.log from jenkins lastSuccessfulArtifacts and put it
17 # in /tmp/ For now the functionality to read the projects from that file are commented.
20 with open("/tmp/dependencies.log") as dep_file:
23 projects.append(line.split(":")[0])
27 # this hard coded list of projects was taken from Oxygen dependencies.log - late January 2018
29 "integration/distribution",
66 project_names = self.get_project_names()
67 extracted_distro_locations = {
68 "new": "/tmp/distro_new",
69 "old": "/tmp/distro_old",
72 new_changes = Changes(
74 extracted_distro_locations["new"],
81 new_projects = new_changes.run_cmd()
82 new_changes.pretty_print_projects(new_projects)
84 old_changes = Changes(
86 extracted_distro_locations["old"],
93 old_projects = old_changes.run_cmd()
94 old_changes.pretty_print_projects(old_projects)
97 print("\nPatch differences:\n------------------")
98 for project_name, values in new_projects.items():
99 new_gerrits = values["includes"]
100 for gerrit in new_gerrits:
101 if gerrit not in old_projects[project_name]["includes"]:
102 patchset_diff.append(gerrit)
104 "{:<20}{}\t{}".format(
105 project_name, gerrit["url"], gerrit["subject"]
109 print("\n%s different patches between the two distros." % len(patchset_diff))
114 parser = argparse.ArgumentParser(
115 description="Returns the list of patches found in the unzipped distribution at "
116 "/tmp/distro_new that are not found in the distribution at "
117 "/tmp/distro_old. This should result in a listing of what new changes "
118 "were made between the two distributions."
124 default=Changes.REMOTE_URL,
125 help="git remote url to use for gerrit",
127 options = parser.parse_args()
129 distc = DistCompare(options.remote_url)
133 if __name__ == "__main__":