Skip to content

Commit

Permalink
do not require dependencies of disabled package to be enabled
Browse files Browse the repository at this point in the history
See #296
  • Loading branch information
muhomorr authored and thestinger committed May 5, 2023
1 parent efbdcd9 commit 779a05a
Showing 1 changed file with 13 additions and 3 deletions.
16 changes: 13 additions & 3 deletions app/src/main/java/app/grapheneos/apps/core/Dependenies.kt
Original file line number Diff line number Diff line change
Expand Up @@ -44,16 +44,26 @@ private fun getDependencies(pkg: RPackage, skipPresent: Boolean, forUpdate: Bool
return emptyList()
}

var requireEnabled = true
if (forUpdate) {
val maybePkgState = PackageStates.maybeGetPackageState(pkg.packageName)
if (maybePkgState?.osPackageInfo?.applicationInfo?.enabled == false) {
// allow dependencies of disabled package to be disabled too
requireEnabled = false
}
}

val visited = ArraySet<String>()
visited.add(pkg.packageName)

val result = ArrayList<RPackage>()
collectDependencies(pkg.packageName, deps, skipPresent, forUpdate, visited, result)
collectDependencies(pkg.packageName, deps, skipPresent, forUpdate, requireEnabled, visited, result)
return result
}

private fun collectDependencies(dependant: String, dependencies: Array<Dependency>,
skipPresent: Boolean, forUpdate: Boolean,
requireEnabled: Boolean,
visited: ArraySet<String>,
result: ArrayList<RPackage>) {
for (dep in dependencies) {
Expand Down Expand Up @@ -82,7 +92,7 @@ private fun collectDependencies(dependant: String, dependencies: Array<Dependenc
val preferredChannel = PackageStates.getPackageState(dep.packageName).preferredReleaseChannel()
val depPackage = findRPackage(matchingVariants, preferredChannel)

collectDependencies(dep.packageName, depPackage.dependencies, skipPresent, forUpdate, visited, result)
collectDependencies(dep.packageName, depPackage.dependencies, skipPresent, forUpdate, requireEnabled, visited, result)

if (skipPresent) {
if (depPackage.common.isSharedLibrary) {
Expand All @@ -106,7 +116,7 @@ private fun collectDependencies(dependant: String, dependencies: Array<Dependenc
throw DependencyResolutionException(err)
}
} else {
if (!pkgInfo.applicationInfo.enabled) {
if (requireEnabled && !pkgInfo.applicationInfo.enabled) {
val err = MissingDependencyError(dependant, dep,
if (forUpdate)
MissingDependencyError.REASON_DEPENDENCY_DISABLED_AFTER_INSTALL
Expand Down

0 comments on commit 779a05a

Please sign in to comment.