Making licenseModule SdkAware caused two breakages in the build. The breakages were both caused by having an SdkAware module that was depended upon by a versioned sdk snapshot but which was not itself versioned and so did not have the member_name property set. That occured because some default licenses have been added to the packages containing prebuilts, e.g. prebuilts_runtime_license in prebuilts/runtime/Android.bp. They apply to both the versioned and unversioned members. Once license support has been added to the sdk most of those will be removed and replaced with properly versioned license modules. However, in the meantime it is necessary to support that. This change avoids the issue by checking to see whether the module is itself versioned before relying on the member_name property. It also improves the error message when a panic is recovered to make it easier to identify where it originates. Bug: 181569894 Test: m nothing Change-Id: I0e7da2e0c4a30a6f814c2faab821b185aaed2135
85 lines
2.3 KiB
Go
85 lines
2.3 KiB
Go
// 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 android
|
|
|
|
import (
|
|
"github.com/google/blueprint"
|
|
)
|
|
|
|
type licenseKindDependencyTag struct {
|
|
blueprint.BaseDependencyTag
|
|
}
|
|
|
|
var (
|
|
licenseKindTag = licenseKindDependencyTag{}
|
|
)
|
|
|
|
func init() {
|
|
RegisterLicenseBuildComponents(InitRegistrationContext)
|
|
}
|
|
|
|
// Register the license module type.
|
|
func RegisterLicenseBuildComponents(ctx RegistrationContext) {
|
|
ctx.RegisterModuleType("license", LicenseFactory)
|
|
}
|
|
|
|
type licenseProperties struct {
|
|
// Specifies the kinds of license that apply.
|
|
License_kinds []string
|
|
// Specifies a short copyright notice to use for the license.
|
|
Copyright_notice *string
|
|
// Specifies the path or label for the text of the license.
|
|
License_text []string `android:"path"`
|
|
// Specifies the package name to which the license applies.
|
|
Package_name *string
|
|
// Specifies where this license can be used
|
|
Visibility []string
|
|
}
|
|
|
|
type licenseModule struct {
|
|
ModuleBase
|
|
DefaultableModuleBase
|
|
SdkBase
|
|
|
|
properties licenseProperties
|
|
}
|
|
|
|
func (m *licenseModule) DepsMutator(ctx BottomUpMutatorContext) {
|
|
ctx.AddVariationDependencies(nil, licenseKindTag, m.properties.License_kinds...)
|
|
}
|
|
|
|
func (m *licenseModule) GenerateAndroidBuildActions(ctx ModuleContext) {
|
|
// Nothing to do.
|
|
}
|
|
|
|
func LicenseFactory() Module {
|
|
module := &licenseModule{}
|
|
|
|
base := module.base()
|
|
module.AddProperties(&base.nameProperties, &module.properties)
|
|
|
|
base.generalProperties = module.GetProperties()
|
|
base.customizableProperties = module.GetProperties()
|
|
|
|
// The visibility property needs to be checked and parsed by the visibility module.
|
|
setPrimaryVisibilityProperty(module, "visibility", &module.properties.Visibility)
|
|
|
|
InitSdkAwareModule(module)
|
|
initAndroidModuleBase(module)
|
|
InitDefaultableModule(module)
|
|
|
|
return module
|
|
}
|