Adds initial support for adding license modules to the sdk, along with any referenced license text files. There is a number of minor improvements to be made but the core of the support is there and it works for ART sdks. Basically, this change will automatically add license modules referenced from any sdk member module as an internal sdk member. An internal module has an sdk snapshot specific name that will not conflict with the source module and which cannot be referenced from outside the sdk snapshot. Bug: 181569894 Test: m art-module-sdk art-module-host-exports art-module-test-exports - diff output before and after this change made sure that every prebuilt had a licenses field and that the license modules were added Change-Id: I0c5ccabf58f4ef487e42ef8e61a5b2a74c0e81af
127 lines
2.9 KiB
Go
127 lines
2.9 KiB
Go
// Copyright (C) 2021 The Android Open Source Project
|
|
//
|
|
// 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 sdk
|
|
|
|
import (
|
|
"testing"
|
|
|
|
"android/soong/android"
|
|
)
|
|
|
|
func TestSnapshotWithPackageDefaultLicense(t *testing.T) {
|
|
result := android.GroupFixturePreparers(
|
|
prepareForSdkTestWithJava,
|
|
android.PrepareForTestWithLicenses,
|
|
android.PrepareForTestWithLicenseDefaultModules,
|
|
android.MockFS{
|
|
"NOTICE1": nil,
|
|
"NOTICE2": nil,
|
|
}.AddToFixture(),
|
|
).RunTestWithBp(t, `
|
|
package {
|
|
default_applicable_licenses: ["mylicense"],
|
|
}
|
|
|
|
license {
|
|
name: "mylicense",
|
|
license_kinds: [
|
|
"SPDX-license-identifier-Apache-2.0",
|
|
"legacy_unencumbered",
|
|
],
|
|
license_text: [
|
|
"NOTICE1",
|
|
"NOTICE2",
|
|
],
|
|
}
|
|
|
|
sdk {
|
|
name: "mysdk",
|
|
java_header_libs: ["myjavalib"],
|
|
}
|
|
|
|
java_library {
|
|
name: "myjavalib",
|
|
srcs: ["Test.java"],
|
|
system_modules: "none",
|
|
sdk_version: "none",
|
|
}
|
|
`)
|
|
|
|
CheckSnapshot(t, result, "mysdk", "",
|
|
checkUnversionedAndroidBpContents(`
|
|
// This is auto-generated. DO NOT EDIT.
|
|
|
|
java_import {
|
|
name: "myjavalib",
|
|
prefer: false,
|
|
visibility: ["//visibility:public"],
|
|
apex_available: ["//apex_available:platform"],
|
|
licenses: ["mysdk_mylicense"],
|
|
jars: ["java/myjavalib.jar"],
|
|
}
|
|
|
|
license {
|
|
name: "mysdk_mylicense",
|
|
visibility: ["//visibility:private"],
|
|
license_kinds: [
|
|
"SPDX-license-identifier-Apache-2.0",
|
|
"legacy_unencumbered",
|
|
],
|
|
license_text: [
|
|
"licenses/NOTICE1",
|
|
"licenses/NOTICE2",
|
|
],
|
|
}
|
|
`),
|
|
checkVersionedAndroidBpContents(`
|
|
// This is auto-generated. DO NOT EDIT.
|
|
|
|
java_import {
|
|
name: "mysdk_myjavalib@current",
|
|
sdk_member_name: "myjavalib",
|
|
visibility: ["//visibility:public"],
|
|
apex_available: ["//apex_available:platform"],
|
|
licenses: ["mysdk_mylicense@current"],
|
|
jars: ["java/myjavalib.jar"],
|
|
}
|
|
|
|
license {
|
|
name: "mysdk_mylicense@current",
|
|
sdk_member_name: "mylicense",
|
|
visibility: ["//visibility:private"],
|
|
license_kinds: [
|
|
"SPDX-license-identifier-Apache-2.0",
|
|
"legacy_unencumbered",
|
|
],
|
|
license_text: [
|
|
"licenses/NOTICE1",
|
|
"licenses/NOTICE2",
|
|
],
|
|
}
|
|
|
|
sdk_snapshot {
|
|
name: "mysdk@current",
|
|
visibility: ["//visibility:public"],
|
|
java_header_libs: ["mysdk_myjavalib@current"],
|
|
}
|
|
`),
|
|
checkAllCopyRules(`
|
|
.intermediates/myjavalib/android_common/turbine-combined/myjavalib.jar -> java/myjavalib.jar
|
|
NOTICE1 -> licenses/NOTICE1
|
|
NOTICE2 -> licenses/NOTICE2
|
|
`),
|
|
)
|
|
}
|