Merge "Remove memberDepsMutator, SdkAware et al" am: 351ca9aa81
am: 8f2dfe4dea
Original change: https://android-review.googlesource.com/c/platform/build/soong/+/2314941 Change-Id: I6cc1c7e6d784fc1f58f49cf9d8faed384c913c3c Signed-off-by: Automerger Merge Worker <android-build-automerger-merge-worker@system.gserviceaccount.com>
This commit is contained in:
131
android/sdk.go
131
android/sdk.go
@@ -23,27 +23,6 @@ import (
|
||||
"github.com/google/blueprint/proptools"
|
||||
)
|
||||
|
||||
// sdkAwareWithoutModule is provided simply to improve code navigation with the IDE.
|
||||
type sdkAwareWithoutModule interface {
|
||||
sdkBase() *SdkBase
|
||||
MakeMemberOf(sdk SdkRef)
|
||||
IsInAnySdk() bool
|
||||
|
||||
// IsVersioned determines whether the module is versioned, i.e. has a name of the form
|
||||
// <name>@<version>
|
||||
IsVersioned() bool
|
||||
|
||||
ContainingSdk() SdkRef
|
||||
MemberName() string
|
||||
}
|
||||
|
||||
// SdkAware is the interface that must be supported by any module to become a member of SDK or to be
|
||||
// built with SDK
|
||||
type SdkAware interface {
|
||||
Module
|
||||
sdkAwareWithoutModule
|
||||
}
|
||||
|
||||
// minApiLevelForSdkSnapshot provides access to the min_sdk_version for MinApiLevelForSdkSnapshot
|
||||
type minApiLevelForSdkSnapshot interface {
|
||||
MinSdkVersion(ctx EarlyModuleContext) SdkSpec
|
||||
@@ -64,116 +43,6 @@ func MinApiLevelForSdkSnapshot(ctx EarlyModuleContext, module Module) ApiLevel {
|
||||
return minApiLevel
|
||||
}
|
||||
|
||||
// SdkRef refers to a version of an SDK
|
||||
type SdkRef struct {
|
||||
Name string
|
||||
Version string
|
||||
}
|
||||
|
||||
// Unversioned determines if the SdkRef is referencing to the unversioned SDK module
|
||||
func (s SdkRef) Unversioned() bool {
|
||||
return s.Version == ""
|
||||
}
|
||||
|
||||
// String returns string representation of this SdkRef for debugging purpose
|
||||
func (s SdkRef) String() string {
|
||||
if s.Name == "" {
|
||||
return "(No Sdk)"
|
||||
}
|
||||
if s.Unversioned() {
|
||||
return s.Name
|
||||
}
|
||||
return s.Name + string(SdkVersionSeparator) + s.Version
|
||||
}
|
||||
|
||||
// SdkVersionSeparator is a character used to separate an sdk name and its version
|
||||
const SdkVersionSeparator = '@'
|
||||
|
||||
// ParseSdkRef parses a `name@version` style string into a corresponding SdkRef struct
|
||||
func ParseSdkRef(ctx BaseModuleContext, str string, property string) SdkRef {
|
||||
tokens := strings.Split(str, string(SdkVersionSeparator))
|
||||
if len(tokens) < 1 || len(tokens) > 2 {
|
||||
ctx.PropertyErrorf(property, "%q does not follow name@version syntax", str)
|
||||
return SdkRef{Name: "invalid sdk name", Version: "invalid sdk version"}
|
||||
}
|
||||
|
||||
name := tokens[0]
|
||||
|
||||
var version string
|
||||
if len(tokens) == 2 {
|
||||
version = tokens[1]
|
||||
}
|
||||
|
||||
return SdkRef{Name: name, Version: version}
|
||||
}
|
||||
|
||||
type SdkRefs []SdkRef
|
||||
|
||||
// Contains tells if the given SdkRef is in this list of SdkRef's
|
||||
func (refs SdkRefs) Contains(s SdkRef) bool {
|
||||
for _, r := range refs {
|
||||
if r == s {
|
||||
return true
|
||||
}
|
||||
}
|
||||
return false
|
||||
}
|
||||
|
||||
type sdkProperties struct {
|
||||
// The SDK that this module is a member of. nil if it is not a member of any SDK
|
||||
ContainingSdk *SdkRef `blueprint:"mutated"`
|
||||
|
||||
// Name of the module that this sdk member is representing
|
||||
Sdk_member_name *string
|
||||
}
|
||||
|
||||
// SdkBase is a struct that is expected to be included in module types to implement the SdkAware
|
||||
// interface. InitSdkAwareModule should be called to initialize this struct.
|
||||
type SdkBase struct {
|
||||
properties sdkProperties
|
||||
module SdkAware
|
||||
}
|
||||
|
||||
func (s *SdkBase) sdkBase() *SdkBase {
|
||||
return s
|
||||
}
|
||||
|
||||
// MakeMemberOf sets this module to be a member of a specific SDK
|
||||
func (s *SdkBase) MakeMemberOf(sdk SdkRef) {
|
||||
s.properties.ContainingSdk = &sdk
|
||||
}
|
||||
|
||||
// IsInAnySdk returns true if this module is a member of any SDK
|
||||
func (s *SdkBase) IsInAnySdk() bool {
|
||||
return s.properties.ContainingSdk != nil
|
||||
}
|
||||
|
||||
// IsVersioned returns true if this module is versioned.
|
||||
func (s *SdkBase) IsVersioned() bool {
|
||||
return strings.Contains(s.module.Name(), "@")
|
||||
}
|
||||
|
||||
// ContainingSdk returns the SDK that this module is a member of
|
||||
func (s *SdkBase) ContainingSdk() SdkRef {
|
||||
if s.properties.ContainingSdk != nil {
|
||||
return *s.properties.ContainingSdk
|
||||
}
|
||||
return SdkRef{Name: "", Version: ""}
|
||||
}
|
||||
|
||||
// MemberName returns the name of the module that this SDK member is overriding
|
||||
func (s *SdkBase) MemberName() string {
|
||||
return proptools.String(s.properties.Sdk_member_name)
|
||||
}
|
||||
|
||||
// InitSdkAwareModule initializes the SdkBase struct. This must be called by all modules including
|
||||
// SdkBase.
|
||||
func InitSdkAwareModule(m SdkAware) {
|
||||
base := m.sdkBase()
|
||||
base.module = m
|
||||
m.AddProperties(&base.properties)
|
||||
}
|
||||
|
||||
// SnapshotBuilder provides support for generating the build rules which will build the snapshot.
|
||||
type SnapshotBuilder interface {
|
||||
// CopyToSnapshot generates a rule that will copy the src to the dest (which is a snapshot
|
||||
|
Reference in New Issue
Block a user