platform_build_soong/sdk
Paul Duffin c61783b20d Improve error reporting when depending on prebuilt implementation jar
The sdk snapshot must not be including implementation code for boot
libraries, the implementation is provided by dex jars within the
corresponding APEX. However, the snapshot does need a module for each
boot library so that the build can seamlessly access the dex files from
the APEX.

A java_library boot library (like core-oj) is represented in the
snapshot by a java_import module which requires a jar file to be
provided, otherwise it is disabled. However, that is provided purely
to keep Soong happy and should never be used.

Previously, the snapshot would contain an empty file for the jar. As
an empty file is an invalid jar any tool (like compiler) that tried
to consume it would fail which was the correct behavior. Unfortunately,
the error message that was produced was not very helpful, it was just
some variant on `invalid file` which lead to a lot of bugs being
raised.

This change replaces that empty file with a reference to the output
from a genrule which runs a script which produces a more useful error
message, with information on how to fix the issue, and fails the build.

It also adds a Name() method to the SdkMemberProperties type as that is
needed in AddInternalModule() to construct the name of the additional
module.

Tested as follows:

In AOSP/master make the following changes:
1. Temporarily set visibility on core-oj and core-libart to
   //visibility:public.
2. Run packages/modules/common/build/mainline_modules_sdks.py to create
   the snapshots.

For each of the S, T and latest snapshots I did the following in the
s-aml-prebuilt-test, t-aml-prebuilt-test and aosp/master branches:

1. Created an Android.bp file containing the following:
  java_library {
    name: "broken",
    static_libs: [
      "prebuilt_core-libart",
      "prebuilt_core-oj",
    ],
  }

2. Fix the visibility issues and run `m broken` where it fails with an
   invalid file.

3. Delete the contents of the prebuilts/module_sdk/art/current/sdk
   directory.

4. Unpack the relevant version of the art-module-sdk snapshot into the
   directory.

5. Run `m broken` where it fails with the helpful message.

6. Test the instructions on how to use the ninja -t path tool to
   identify the cause of the problem and fix it.

Bug: 257969510
Test: See above.
Change-Id: I125bde2d7202afff84c97daebcef37e21c548a3a
2022-11-14 10:14:10 +00:00
..
Android.bp Support handling build releases in sdk snapshot 2021-10-01 17:17:34 +01:00
bootclasspath_fragment_sdk_test.go Improve error reporting when depending on prebuilt implementation jar 2022-11-14 10:14:10 +00:00
bp.go Remove support for generating versioned snapshots 2022-05-24 20:10:05 +00:00
bp_test.go Replace AssertPanic with AssertPanicMessageContains 2021-03-20 12:08:51 +00:00
build_release.go Add UpsideDownCake to the releases for which snapshots can be built 2022-09-30 09:41:08 +01:00
build_release_test.go Add UpsideDownCake to the releases for which snapshots can be built 2022-09-30 09:41:08 +01:00
cc_sdk_test.go Remove support for generating versioned snapshots 2022-05-24 20:10:05 +00:00
compat_config_sdk_test.go Export any platform_compat_config used by apex to sdk snapshot 2022-07-20 14:18:24 +00:00
exports.go Remove support for generating versioned snapshots 2022-05-24 20:10:05 +00:00
exports_test.go Remove support for generating versioned snapshots 2022-05-24 20:10:05 +00:00
java_sdk_test.go Improve error reporting when depending on prebuilt implementation jar 2022-11-14 10:14:10 +00:00
license_sdk_test.go Remove support for generating versioned snapshots 2022-05-24 20:10:05 +00:00
member_trait.go Reformat build/soong for go 1.19 2022-08-17 10:43:13 -07:00
member_trait_test.go Remove support for generating versioned snapshots 2022-05-24 20:10:05 +00:00
member_type.go Reformat build/soong for go 1.19 2022-08-17 10:43:13 -07:00
sdk.go Remove support for generating versioned snapshots 2022-05-24 20:10:05 +00:00
sdk_test.go Add sdk:"keep" tag support 2022-09-26 18:28:56 +01:00
systemserverclasspath_fragment_sdk_test.go Improve error reporting when depending on prebuilt implementation jar 2022-11-14 10:14:10 +00:00
testing.go Add current build release 2022-08-19 17:39:49 +00:00
update.go Improve error reporting when depending on prebuilt implementation jar 2022-11-14 10:14:10 +00:00