Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit a77d41e2 authored by Tao Bao's avatar Tao Bao
Browse files

releasetools: Fix the bug when deleting files.

For file-based OTAs, we used to remove unneeded files in ascending
order, which failed to delete non-empty directories. Reverse the order
to fix the issue.

For example, now we have the following in our generated script:
  delete("/system/app/Calculator/arm/Calculator.odex",
         "/system/app/Calculator/arm/",
         "/system/app/Calculator/Calculator.apk",
         "/system/app/Calculator/");

Bug: 22960996
Change-Id: I0d36d29b7862fb53bf55bf5685a990180f9c0b3b
parent c6c9c61d
Loading
Loading
Loading
Loading
+7 −5
Original line number Diff line number Diff line
@@ -1072,11 +1072,13 @@ class FileDifference(object):
      script.FileCheck(tf.name, tf.sha1)

  def RemoveUnneededFiles(self, script, extras=()):
    script.DeleteFiles(
        ["/" + i[0] for i in self.verbatim_targets] +
        ["/" + i for i in sorted(self.source_data)
         if i not in self.target_data and i not in self.renames] +
        list(extras))
    file_list = ["/" + i[0] for i in self.verbatim_targets]
    file_list += ["/" + i for i in self.source_data
                  if i not in self.target_data and i not in self.renames]
    file_list += list(extras)
    # Sort the list in descending order, which removes all the files first
    # before attempting to remove the folder. (Bug: 22960996)
    script.DeleteFiles(sorted(file_list, reverse=True))

  def TotalPatchSize(self):
    return sum(i[1].size for i in self.patch_list)