From 9b409bcd10cec5c64b12494a6ada05a7dd65a721 Mon Sep 17 00:00:00 2001 From: Jiyong Park Date: Fri, 11 Oct 2019 14:59:13 +0900 Subject: Create scripts to update and freeze a module SDK `m ` generates two scripts each of which is use to update the current snapshot of the SDK and to freeze ToT as a new version, respectively. Executing the scripts will copy necessary files (stub libraries, AIDL files, etc.) along with Android.bp into the ./ directory under the directory where the sdk is defined. This change also introduces a new module type 'sdk_snapshot' that represents a snapshot of an SDK. It will be auto-generated by the above scripts, so developers are not expected to write this manually. The module type 'sdk' is now used to simply specify the list of modules that an SDK has. Finally, this change changes the version separator from '#' to '@' because '#' confuses Make. Bug: 138182343 Test: m Change-Id: Ifcbc3a39a2f6ad5b4f4b200ba55a1ce3281498cf --- android/sdk.go | 31 ++++++++++++------------------- 1 file changed, 12 insertions(+), 19 deletions(-) (limited to 'android/sdk.go') diff --git a/android/sdk.go b/android/sdk.go index 52c392f4d..616fbe19d 100644 --- a/android/sdk.go +++ b/android/sdk.go @@ -39,25 +39,17 @@ type SdkRef struct { Version string } -const ( - // currentVersion refers to the in-development version of an SDK - currentVersion = "current" -) - -// IsCurrentVersion determines if the SdkRef is referencing to an in-development version of an SDK -func (s SdkRef) IsCurrentVersion() bool { - return s.Version == currentVersion +// Unversioned determines if the SdkRef is referencing to the unversioned SDK module +func (s SdkRef) Unversioned() bool { + return s.Version == "" } -// IsCurrentVersionOf determines if the SdkRef is referencing to an in-development version of the -// specified SDK -func (s SdkRef) IsCurrentVersionOf(name string) bool { - return s.Name == name && s.IsCurrentVersion() -} +// 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 +// 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, "#") + 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"} @@ -65,7 +57,7 @@ func ParseSdkRef(ctx BaseModuleContext, str string, property string) SdkRef { name := tokens[0] - version := currentVersion // If version is omitted, defaults to "current" + var version string if len(tokens) == 2 { version = tokens[1] } @@ -75,6 +67,7 @@ func ParseSdkRef(ctx BaseModuleContext, str string, property string) SdkRef { 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 { @@ -105,7 +98,7 @@ func (s *SdkBase) sdkBase() *SdkBase { return s } -// MakeMemberof sets this module to be a member of a specific SDK +// MakeMemberOf sets this module to be a member of a specific SDK func (s *SdkBase) MakeMemberOf(sdk SdkRef) { s.properties.ContainingSdk = &sdk } @@ -120,10 +113,10 @@ func (s *SdkBase) ContainingSdk() SdkRef { if s.properties.ContainingSdk != nil { return *s.properties.ContainingSdk } - return SdkRef{Name: "", Version: currentVersion} + return SdkRef{Name: "", Version: ""} } -// Membername returns the name of the module that this SDK member is overriding +// 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) } -- cgit v1.2.3-59-g8ed1b