Ensure package check is run for java_library in APEX

Package checks were not being run for java libraries that were in an
APEX and not on the platform. This change fixes that and updates the
script to report all failing classes to make it easier to update the
list of packages.

Test: m java
Bug: 157633658
Change-Id: I28044e08d3a40e9f3464bb2158ef6a28d57264d1
This commit is contained in:
Paul Duffin 2020-05-28 11:36:14 +01:00
parent 9a37d4a602
commit 63d8febd35
2 changed files with 25 additions and 2 deletions

View file

@ -69,7 +69,26 @@ func (library *Library) AndroidMkEntries() []android.AndroidMkEntries {
if !library.ApexModuleBase.AvailableFor(android.AvailableToPlatform) {
hideFromMake = true
}
if !hideFromMake {
if hideFromMake {
// May still need to add some additional dependencies. This will be called
// once for the platform variant (even if it is not being used) and once each
// for the APEX specific variants. In order to avoid adding the dependency
// multiple times only add it for the platform variant.
checkedModulePaths := library.additionalCheckedModules
if library.IsForPlatform() && len(checkedModulePaths) != 0 {
mainEntries = android.AndroidMkEntries{
Class: "FAKE",
// Need at least one output file in order for this to take effect.
OutputFile: android.OptionalPathForPath(checkedModulePaths[0]),
Include: "$(BUILD_PHONY_PACKAGE)",
ExtraEntries: []android.AndroidMkExtraEntriesFunc{
func(entries *android.AndroidMkEntries) {
entries.AddStrings("LOCAL_ADDITIONAL_CHECKED_MODULE", checkedModulePaths.Strings()...)
},
},
}
}
} else {
mainEntries = android.AndroidMkEntries{
Class: "JAVA_LIBRARIES",
DistFile: android.OptionalPathForPath(library.distFile),

View file

@ -52,6 +52,7 @@ zip_contents=`zipinfo -1 $jar_file`
# Check all class file names against the expected prefixes.
old_ifs=${IFS}
IFS=$'\n'
failed=false
for zip_entry in ${zip_contents}; do
# Check the suffix.
if [[ "${zip_entry}" = *.class ]]; then
@ -65,8 +66,11 @@ for zip_entry in ${zip_contents}; do
done
if [[ "${found}" == "false" ]]; then
echo "Class file ${zip_entry} is outside specified packages."
exit 1
failed=true
fi
fi
done
if [[ "${failed}" == "true" ]]; then
exit 1
fi
IFS=${old_ifs}