diff options
author | 2024-09-23 21:45:25 +0000 | |
---|---|---|
committer | 2024-09-25 20:46:39 +0000 | |
commit | b5c82a45d16138f757be54d895e60fb90dba8cbb (patch) | |
tree | 5d498ebb2ca292d93d86d151b45f4299102ebe71 /java/sdk_library_external.go | |
parent | 1c4625a5ec6f6726ca44962947e6e353077c05de (diff) |
Remove checkPartitionsForJavaDependency()
The check adds restriction on inter-partition dependencies. This is
now a no-op given that the container enforcement serves the same
purpose. Also, the error guides the user to depend on java_sdk_library
for inter-partition dependency, while depending on java_sdk_library
directly is now restricted.
Test: m nothing
Bug: 308827369
Change-Id: I29f88b7b61e3d98d047e185e8757b9ffcf09582e
Diffstat (limited to 'java/sdk_library_external.go')
-rw-r--r-- | java/sdk_library_external.go | 119 |
1 files changed, 0 insertions, 119 deletions
diff --git a/java/sdk_library_external.go b/java/sdk_library_external.go deleted file mode 100644 index 4f8398194..000000000 --- a/java/sdk_library_external.go +++ /dev/null @@ -1,119 +0,0 @@ -// Copyright 2020 Google Inc. All rights reserved. -// -// Licensed under the Apache License, Version 2.0 (the "License"); -// you may not use this file except in compliance with the License. -// You may obtain a copy of the License at -// -// http://www.apache.org/licenses/LICENSE-2.0 -// -// Unless required by applicable law or agreed to in writing, software -// distributed under the License is distributed on an "AS IS" BASIS, -// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. -// See the License for the specific language governing permissions and -// limitations under the License. - -package java - -import ( - "android/soong/android" -) - -type partitionGroup int - -// Representation of partition group for checking inter-partition library dependencies. -// Between system and system_ext, there are no restrictions of dependencies, -// so we can treat these partitions as the same in terms of inter-partition dependency. -// Same policy is applied between vendor and odm partiton. -const ( - partitionGroupNone partitionGroup = iota - // group for system, and system_ext partition - partitionGroupSystem - // group for vendor and odm partition - partitionGroupVendor - // product partition - partitionGroupProduct -) - -func (g partitionGroup) String() string { - switch g { - case partitionGroupSystem: - return "system" - case partitionGroupVendor: - return "vendor" - case partitionGroupProduct: - return "product" - } - - return "" -} - -// Get partition group of java module that can be used at inter-partition dependency check. -// We currently have three groups -// -// (system, system_ext) => system partition group -// (vendor, odm) => vendor partition group -// (product) => product partition group -func (j *Module) partitionGroup(ctx android.EarlyModuleContext) partitionGroup { - // system and system_ext partition can be treated as the same in terms of inter-partition dependency. - if j.Platform() || j.SystemExtSpecific() { - return partitionGroupSystem - } - - // vendor and odm partition can be treated as the same in terms of inter-partition dependency. - if j.SocSpecific() || j.DeviceSpecific() { - return partitionGroupVendor - } - - // product partition is independent. - if j.ProductSpecific() { - return partitionGroupProduct - } - - panic("Cannot determine partition type") -} - -func (j *Module) allowListedInterPartitionJavaLibrary(ctx android.EarlyModuleContext) bool { - return inList(j.Name(), ctx.Config().InterPartitionJavaLibraryAllowList()) -} - -func (j *Module) syspropWithPublicStubs() bool { - return j.deviceProperties.SyspropPublicStub != "" -} - -type javaSdkLibraryEnforceContext interface { - Name() string - allowListedInterPartitionJavaLibrary(ctx android.EarlyModuleContext) bool - partitionGroup(ctx android.EarlyModuleContext) partitionGroup - syspropWithPublicStubs() bool -} - -var _ javaSdkLibraryEnforceContext = (*Module)(nil) - -func (j *Module) checkPartitionsForJavaDependency(ctx android.EarlyModuleContext, propName string, dep javaSdkLibraryEnforceContext) { - if dep.allowListedInterPartitionJavaLibrary(ctx) { - return - } - - if dep.syspropWithPublicStubs() { - return - } - - // If product interface is not enforced, skip check between system and product partition. - // But still need to check between product and vendor partition because product interface flag - // just represents enforcement between product and system, and vendor interface enforcement - // that is enforced here by precondition is representing enforcement between vendor and other partitions. - if !ctx.Config().EnforceProductPartitionInterface() { - productToSystem := j.partitionGroup(ctx) == partitionGroupProduct && dep.partitionGroup(ctx) == partitionGroupSystem - systemToProduct := j.partitionGroup(ctx) == partitionGroupSystem && dep.partitionGroup(ctx) == partitionGroupProduct - - if productToSystem || systemToProduct { - return - } - } - - // If module and dependency library is inter-partition - if j.partitionGroup(ctx) != dep.partitionGroup(ctx) { - errorFormat := "dependency on java_library (%q) is not allowed across the partitions (%s -> %s), use java_sdk_library instead" - ctx.PropertyErrorf(propName, errorFormat, dep.Name(), j.partitionGroup(ctx), dep.partitionGroup(ctx)) - } -} |