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

Commit 8df5bd08 authored by Narayan Kamath's avatar Narayan Kamath
Browse files

Explicitly list out the list of cache subdirs to prune.

We don't want directories like profiles and the former
profile-cache from being included in the prune. SELinux would
have prevented the move, but that's very brittle.

bug: 15677279

Change-Id: I2ff5db056757ffacaf108bb07b02dc0cac7172dd
parent 0d28bb47
Loading
Loading
Loading
Loading
+3 −2
Original line number Diff line number Diff line
@@ -24,6 +24,7 @@ import android.util.Slog;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.List;

public final class Installer {
    private static final String TAG = "Installer";
@@ -335,8 +336,8 @@ public final class Installer {
        }
    }

    public int pruneDexCache() {
        return execute("prunedexcache");
    public int pruneDexCache(String cacheSubDir) {
        return execute("prunedexcache " + cacheSubDir);
    }

    public int freeCache(long freeStorageSize) {
+9 −4
Original line number Diff line number Diff line
@@ -1437,9 +1437,6 @@ public class PackageManagerService extends IPackageManager.Stub {
                // changed. Consider this significant, and wipe away all other
                // existing dexopt files to ensure we don't leave any dangling around.
                //
                // Additionally, delete all dex files from the root directory
                // since there shouldn't be any there anyway.
                //
                // TODO: This should be revisited because it isn't as good an indicator
                // as it used to be. It used to include the boot classpath but at some point
                // DexFile.isDexOptNeeded started returning false for the boot
@@ -1447,7 +1444,15 @@ public class PackageManagerService extends IPackageManager.Stub {
                // small maintenance release update that the library and tool
                // jars may be unchanged but APK could be removed resulting in
                // unused dalvik-cache files.
                mInstaller.pruneDexCache();
                for (String instructionSet : instructionSets) {
                    mInstaller.pruneDexCache(instructionSet);
                }
                // Additionally, delete all dex files from the root directory
                // since there shouldn't be any there anyway, unless we're upgrading
                // from an older OS version or a build that contained the "old" style
                // flat scheme.
                mInstaller.pruneDexCache(".");
            }
            // Collect vendor overlay packages.