Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit e64490da authored by John Wu's avatar John Wu
Browse files

[Ravenwood] Move stats generation out of critical path

Move stats generation into its own genrule outside of the bytecode
processing pipeline to improve efficiency.

We also take the chance to clean up Framework.bp.

Bug: 292141694
Flag: EXEMPT host side change only
Test: f/b/r/scripts/run-ravenwood-tests.sh
Change-Id: Ibe09d88f3f3b5dc8f5fc29e8be2bdd3a712538f5
parent b9e6e0b5
Loading
Loading
Loading
Loading
+16 −12
Original line number Diff line number Diff line
@@ -314,21 +314,25 @@ sh_test_host {
    src: "scripts/ravenwood-stats-checker.sh",
    test_suites: ["general-tests"],
    device_common_data: [
        ":framework-minus-apex.ravenwood-base_all{hoststubgen_framework-minus-apex_apis.csv}",
        ":framework-minus-apex.ravenwood-base_all{hoststubgen_framework-minus-apex_keep_all.txt}",
        ":framework-minus-apex.ravenwood-base_all{hoststubgen_framework-minus-apex_dump.txt}",
        ":framework-minus-apex.ravenwood-stats{hoststubgen_framework-minus-apex_apis.csv}",
        ":framework-minus-apex.ravenwood-stats{hoststubgen_framework-minus-apex_keep_all.txt}",
        ":framework-minus-apex.ravenwood-stats{hoststubgen_framework-minus-apex_dump.txt}",

        ":services.core.ravenwood-base{hoststubgen_services.core_apis.csv}",
        ":services.core.ravenwood-base{hoststubgen_services.core_keep_all.txt}",
        ":services.core.ravenwood-base{hoststubgen_services.core_dump.txt}",
        ":services.core.ravenwood-stats{hoststubgen_services.core_apis.csv}",
        ":services.core.ravenwood-stats{hoststubgen_services.core_keep_all.txt}",
        ":services.core.ravenwood-stats{hoststubgen_services.core_dump.txt}",

        ":framework-configinfrastructure.ravenwood-base{framework-configinfrastructure_apis.csv}",
        ":framework-configinfrastructure.ravenwood-base{framework-configinfrastructure_keep_all.txt}",
        ":framework-configinfrastructure.ravenwood-base{framework-configinfrastructure_dump.txt}",
        ":framework-configinfrastructure.ravenwood-stats{framework-configinfrastructure_apis.csv}",
        ":framework-configinfrastructure.ravenwood-stats{framework-configinfrastructure_keep_all.txt}",
        ":framework-configinfrastructure.ravenwood-stats{framework-configinfrastructure_dump.txt}",

        ":framework-statsd.ravenwood-base{framework-statsd_apis.csv}",
        ":framework-statsd.ravenwood-base{framework-statsd_keep_all.txt}",
        ":framework-statsd.ravenwood-base{framework-statsd_dump.txt}",
        ":framework-statsd.ravenwood-stats{framework-statsd_apis.csv}",
        ":framework-statsd.ravenwood-stats{framework-statsd_keep_all.txt}",
        ":framework-statsd.ravenwood-stats{framework-statsd_dump.txt}",

        ":framework-graphics.ravenwood-stats{framework-graphics_apis.csv}",
        ":framework-graphics.ravenwood-stats{framework-graphics_keep_all.txt}",
        ":framework-graphics.ravenwood-stats{framework-graphics_dump.txt}",
    ],
}

+200 −172
Original line number Diff line number Diff line
@@ -15,6 +15,25 @@
// This file hosts all the genrule and module definitions for all Android specific
// code that needs further post-processing by hoststubgen to support Ravenwood.

///////////////////////
// ravenwood defaults
///////////////////////

ravenwood_common_options = "@$(location :ravenwood-standard-options) " +
    "@$(location :ravenwood-common-options) " +
    "--policy-override-file $(location :ravenwood-common-policies) "

genrule_defaults {
    name: "ravenwood_hsg_defaults",
    srcs: [
        ":ravenwood-common-policies",
        ":ravenwood-standard-options",
        ":ravenwood-common-options",
        ":ravenwood-annotation-allowed-classes",
    ],
    visibility: ["//visibility:private"],
}

/////////////////////////
// framework-minus-apex
/////////////////////////
@@ -27,116 +46,92 @@

genrule_defaults {
    name: "framework-minus-apex.ravenwood-base_defaults",
    tools: ["hoststubgen"],
    defaults: ["ravenwood_hsg_defaults"],
    srcs: [
        ":framework-minus-apex-for-host",
        ":ravenwood-common-policies",
        ":ravenwood-framework-policies",
        ":ravenwood-standard-options",
        ":ravenwood-common-options",
        ":ravenwood-annotation-allowed-classes",
    ],
    out: [
        "ravenwood.jar",
        "hoststubgen_framework-minus-apex.log",
    ],
    visibility: ["//visibility:private"],
    out: ["hoststubgen_framework-minus-apex.log"],
}

framework_minus_apex_cmd = "$(location hoststubgen) " +
    "@$(location :ravenwood-standard-options) " +
    "@$(location :ravenwood-common-options) " +
framework_minus_apex_options = ravenwood_common_options +
    "--debug-log $(location hoststubgen_framework-minus-apex.log) " +
    "--out-jar $(location ravenwood.jar) " +
    "--in-jar $(location :framework-minus-apex-for-host) " +
    "--policy-override-file $(location :ravenwood-common-policies) " +
    "--policy-override-file $(location :ravenwood-framework-policies) " +
    "--annotation-allowed-classes-file $(location :ravenwood-annotation-allowed-classes) "

genrule_defaults {
    name: "framework-minus-apex.ravenwood-shard_defaults",
    defaults: ["framework-minus-apex.ravenwood-base_defaults"],
    tools: ["hoststubgen"],
    out: ["ravenwood.jar"],
}

framework_minus_apex_cmd = "$(location hoststubgen) " +
    framework_minus_apex_options +
    "--out-jar $(location ravenwood.jar) "

java_genrule {
    name: "framework-minus-apex.ravenwood-base_X0",
    defaults: ["framework-minus-apex.ravenwood-base_defaults"],
    defaults: ["framework-minus-apex.ravenwood-shard_defaults"],
    cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 0",
}

java_genrule {
    name: "framework-minus-apex.ravenwood-base_X1",
    defaults: ["framework-minus-apex.ravenwood-base_defaults"],
    defaults: ["framework-minus-apex.ravenwood-shard_defaults"],
    cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 1",
}

java_genrule {
    name: "framework-minus-apex.ravenwood-base_X2",
    defaults: ["framework-minus-apex.ravenwood-base_defaults"],
    defaults: ["framework-minus-apex.ravenwood-shard_defaults"],
    cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 2",
}

java_genrule {
    name: "framework-minus-apex.ravenwood-base_X3",
    defaults: ["framework-minus-apex.ravenwood-base_defaults"],
    defaults: ["framework-minus-apex.ravenwood-shard_defaults"],
    cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 3",
}

java_genrule {
    name: "framework-minus-apex.ravenwood-base_X4",
    defaults: ["framework-minus-apex.ravenwood-base_defaults"],
    defaults: ["framework-minus-apex.ravenwood-shard_defaults"],
    cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 4",
}

java_genrule {
    name: "framework-minus-apex.ravenwood-base_X5",
    defaults: ["framework-minus-apex.ravenwood-base_defaults"],
    defaults: ["framework-minus-apex.ravenwood-shard_defaults"],
    cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 5",
}

java_genrule {
    name: "framework-minus-apex.ravenwood-base_X6",
    defaults: ["framework-minus-apex.ravenwood-base_defaults"],
    defaults: ["framework-minus-apex.ravenwood-shard_defaults"],
    cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 6",
}

java_genrule {
    name: "framework-minus-apex.ravenwood-base_X7",
    defaults: ["framework-minus-apex.ravenwood-base_defaults"],
    defaults: ["framework-minus-apex.ravenwood-shard_defaults"],
    cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 7",
}

java_genrule {
    name: "framework-minus-apex.ravenwood-base_X8",
    defaults: ["framework-minus-apex.ravenwood-base_defaults"],
    defaults: ["framework-minus-apex.ravenwood-shard_defaults"],
    cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 8",
}

java_genrule {
    name: "framework-minus-apex.ravenwood-base_X9",
    defaults: ["framework-minus-apex.ravenwood-base_defaults"],
    defaults: ["framework-minus-apex.ravenwood-shard_defaults"],
    cmd: framework_minus_apex_cmd + " --num-shards 10 --shard-index 9",
}

// Build framework-minus-apex.ravenwood-base without sharding.
// We extract the various dump files from this one, rather than the sharded ones, because
// some dumps use the output from other classes (e.g. base classes) which may not be in the
// same shard. Also some of the dump files ("apis") may be slow even when sharded, because
// the output contains the information from all the input classes, rather than the output classes.
// Not using sharding is fine for this module because it's only used for collecting the
// dump / stats files, which don't have to happen regularly.
java_genrule {
    name: "framework-minus-apex.ravenwood-base_all",
    defaults: ["framework-minus-apex.ravenwood-base_defaults"],
    cmd: framework_minus_apex_cmd +
        "--supported-api-list-file $(location hoststubgen_framework-minus-apex_apis.csv) " +

        "--gen-keep-all-file $(location hoststubgen_framework-minus-apex_keep_all.txt) " +
        "--gen-input-dump-file $(location hoststubgen_framework-minus-apex_dump.txt) ",

    out: [
        "hoststubgen_framework-minus-apex_keep_all.txt",
        "hoststubgen_framework-minus-apex_dump.txt",
        "hoststubgen_framework-minus-apex_apis.csv",
    ],
}

// Marge all the sharded jars
// Merge all the sharded jars
java_genrule {
    name: "framework-minus-apex.ravenwood",
    defaults: ["ravenwood-internal-only-visibility-java"],
@@ -159,6 +154,22 @@ java_genrule {
    ],
}

java_genrule {
    name: "framework-minus-apex.ravenwood-stats",
    defaults: ["framework-minus-apex.ravenwood-base_defaults"],
    tools: ["ravenhelper"],
    cmd: "$(location ravenhelper) stats " +
        framework_minus_apex_options +
        "--supported-api-list-file $(location hoststubgen_framework-minus-apex_apis.csv) " +
        "--gen-keep-all-file $(location hoststubgen_framework-minus-apex_keep_all.txt) " +
        "--gen-input-dump-file $(location hoststubgen_framework-minus-apex_dump.txt) ",
    out: [
        "hoststubgen_framework-minus-apex_keep_all.txt",
        "hoststubgen_framework-minus-apex_dump.txt",
        "hoststubgen_framework-minus-apex_apis.csv",
    ],
}

//////////////////
// services.core
//////////////////
@@ -173,43 +184,48 @@ java_library {
    visibility: ["//visibility:private"],
}

genrule_defaults {
    name: "services.core.ravenwood-base_defaults",
    defaults: ["ravenwood_hsg_defaults"],
    srcs: [
        ":services.core-for-host",
        ":ravenwood-services-policies",
    ],
    out: ["hoststubgen_services.core.log"],
}

services_core_options = ravenwood_common_options +
    "--debug-log $(location hoststubgen_services.core.log) " +
    "--in-jar $(location :services.core-for-host) " +
    "--policy-override-file $(location :ravenwood-services-policies) " +
    "--annotation-allowed-classes-file $(location :ravenwood-annotation-allowed-classes) "

java_genrule {
    name: "services.core.ravenwood-base",
    defaults: ["services.core.ravenwood-base_defaults"],
    tools: ["hoststubgen"],
    cmd: "$(location hoststubgen) " +
        "@$(location :ravenwood-standard-options) " +
        "@$(location :ravenwood-common-options) " +
        services_core_options +
        "--out-jar $(location ravenwood.jar) ",
    out: [
        "ravenwood.jar",
    ],
}

        "--debug-log $(location hoststubgen_services.core.log) " +
java_genrule {
    name: "services.core.ravenwood-stats",
    defaults: ["services.core.ravenwood-base_defaults"],
    tools: ["ravenhelper"],
    cmd: "$(location ravenhelper) stats " +
        services_core_options +
        "--supported-api-list-file $(location hoststubgen_services.core_apis.csv) " +
        "--gen-keep-all-file $(location hoststubgen_services.core_keep_all.txt) " +
        "--gen-input-dump-file $(location hoststubgen_services.core_dump.txt) " +

        "--out-jar $(location ravenwood.jar) " +
        "--in-jar $(location :services.core-for-host) " +

        "--policy-override-file $(location :ravenwood-common-policies) " +
        "--policy-override-file $(location :ravenwood-services-policies) " +
        "--annotation-allowed-classes-file $(location :ravenwood-annotation-allowed-classes) ",
    srcs: [
        ":services.core-for-host",
        ":ravenwood-common-policies",
        ":ravenwood-services-policies",
        ":ravenwood-standard-options",
        ":ravenwood-common-options",
        ":ravenwood-annotation-allowed-classes",
    ],
        "--gen-input-dump-file $(location hoststubgen_services.core_dump.txt) ",
    out: [
        "ravenwood.jar",

        // Following files are created just as FYI.
        "hoststubgen_services.core_keep_all.txt",
        "hoststubgen_services.core_dump.txt",

        "hoststubgen_services.core.log",
        "hoststubgen_services.core_apis.csv",
    ],
    visibility: ["//visibility:private"],
}

// This is used by unit tests too (so tests will be able to access HSG-processed implementation)
@@ -236,42 +252,45 @@ java_library {
// core-icu4j
///////////////

java_genrule {
    name: "core-icu4j-for-host.ravenwood-base",
    tools: ["hoststubgen"],
    cmd: "$(location hoststubgen) " +
        "@$(location :ravenwood-standard-options) " +
        "@$(location :ravenwood-common-options) " +

core_icu4j_options = ravenwood_common_options +
    "--debug-log $(location hoststubgen_core-icu4j-for-host.log) " +
        "--supported-api-list-file $(location hoststubgen_core-icu4j-for-host_apis.csv) " +
        "--gen-keep-all-file $(location hoststubgen_core-icu4j-for-host_keep_all.txt) " +
        "--gen-input-dump-file $(location hoststubgen_core-icu4j-for-host_dump.txt) " +

        "--out-jar $(location ravenwood.jar) " +
    "--in-jar $(location :core-icu4j-for-host) " +
    "--policy-override-file $(location :icu-ravenwood-policies) "

        "--policy-override-file $(location :ravenwood-common-policies) " +
        "--policy-override-file $(location :icu-ravenwood-policies) ",
genrule_defaults {
    name: "core-icu4j-for-host.ravenwood_defaults",
    defaults: ["ravenwood_hsg_defaults"],
    srcs: [
        ":core-icu4j-for-host",

        ":ravenwood-common-policies",
        ":icu-ravenwood-policies",
        ":ravenwood-standard-options",
        ":ravenwood-common-options",
    ],
    out: [
        "ravenwood.jar",
    out: ["hoststubgen_core-icu4j-for-host.log"],
}

java_genrule {
    name: "core-icu4j-for-host.ravenwood-base",
    defaults: ["core-icu4j-for-host.ravenwood_defaults"],
    tools: ["hoststubgen"],
    cmd: "$(location hoststubgen) " +
        core_icu4j_options +
        "--out-jar $(location ravenwood.jar) ",
    out: ["ravenwood.jar"],
}

        // Following files are created just as FYI.
java_genrule {
    name: "core-icu4j-for-host.ravenwood-stats",
    defaults: ["core-icu4j-for-host.ravenwood_defaults"],
    tools: ["ravenhelper"],
    cmd: "$(location ravenhelper) stats " +
        core_icu4j_options +
        "--supported-api-list-file $(location hoststubgen_core-icu4j-for-host_apis.csv) " +
        "--gen-keep-all-file $(location hoststubgen_core-icu4j-for-host_keep_all.txt) " +
        "--gen-input-dump-file $(location hoststubgen_core-icu4j-for-host_dump.txt) ",
    out: [
        "hoststubgen_core-icu4j-for-host_keep_all.txt",
        "hoststubgen_core-icu4j-for-host_dump.txt",

        "hoststubgen_core-icu4j-for-host.log",
        "hoststubgen_core-icu4j-for-host_apis.csv",
    ],
    visibility: ["//visibility:private"],
}

java_import {
@@ -284,42 +303,45 @@ java_import {
// framework-configinfrastructure
///////////////////////////////////

java_genrule {
    name: "framework-configinfrastructure.ravenwood-base",
    tools: ["hoststubgen"],
    cmd: "$(location hoststubgen) " +
        "@$(location :ravenwood-standard-options) " +
        "@$(location :ravenwood-common-options) " +

config_infra_options = ravenwood_common_options +
    "--debug-log $(location framework-configinfrastructure.log) " +
        "--supported-api-list-file $(location framework-configinfrastructure_apis.csv) " +
        "--gen-keep-all-file $(location framework-configinfrastructure_keep_all.txt) " +
        "--gen-input-dump-file $(location framework-configinfrastructure_dump.txt) " +

        "--out-impl-jar $(location ravenwood.jar) " +
    "--in-jar $(location :framework-configinfrastructure.impl{.jar}) " +
    "--policy-override-file $(location :framework-configinfrastructure-ravenwood-policies) "

        "--policy-override-file $(location :ravenwood-common-policies) " +
        "--policy-override-file $(location :framework-configinfrastructure-ravenwood-policies) ",
genrule_defaults {
    name: "framework-configinfrastructure.ravenwood_defaults",
    defaults: ["ravenwood_hsg_defaults"],
    srcs: [
        ":framework-configinfrastructure.impl{.jar}",

        ":ravenwood-common-policies",
        ":framework-configinfrastructure-ravenwood-policies",
        ":ravenwood-standard-options",
        ":ravenwood-common-options",
    ],
    out: [
        "ravenwood.jar",
    out: ["framework-configinfrastructure.log"],
}

        // Following files are created just as FYI.
java_genrule {
    name: "framework-configinfrastructure.ravenwood-base",
    defaults: ["framework-configinfrastructure.ravenwood_defaults"],
    tools: ["hoststubgen"],
    cmd: "$(location hoststubgen) " +
        config_infra_options +
        "--out-jar $(location ravenwood.jar) ",
    out: ["ravenwood.jar"],
}

java_genrule {
    name: "framework-configinfrastructure.ravenwood-stats",
    defaults: ["framework-configinfrastructure.ravenwood_defaults"],
    tools: ["ravenhelper"],
    cmd: "$(location ravenhelper) stats " +
        config_infra_options +
        "--supported-api-list-file $(location framework-configinfrastructure_apis.csv) " +
        "--gen-keep-all-file $(location framework-configinfrastructure_keep_all.txt) " +
        "--gen-input-dump-file $(location framework-configinfrastructure_dump.txt) ",
    out: [
        "framework-configinfrastructure_keep_all.txt",
        "framework-configinfrastructure_dump.txt",

        "framework-configinfrastructure.log",
        "framework-configinfrastructure_apis.csv",
    ],
    visibility: ["//visibility:private"],
}

java_import {
@@ -328,46 +350,49 @@ java_import {
    jars: [":framework-configinfrastructure.ravenwood-base{ravenwood.jar}"],
}

///////////////////////////////////
/////////////////////
// framework-statsd
///////////////////////////////////

java_genrule {
    name: "framework-statsd.ravenwood-base",
    tools: ["hoststubgen"],
    cmd: "$(location hoststubgen) " +
        "@$(location :ravenwood-standard-options) " +
        "@$(location :ravenwood-common-options) " +
/////////////////////

statsd_options = ravenwood_common_options +
    "--debug-log $(location framework-statsd.log) " +
        "--supported-api-list-file $(location framework-statsd_apis.csv) " +
        "--gen-keep-all-file $(location framework-statsd_keep_all.txt) " +
        "--gen-input-dump-file $(location framework-statsd_dump.txt) " +

        "--out-impl-jar $(location ravenwood.jar) " +
    "--in-jar $(location :framework-statsd.impl{.jar}) " +
    "--policy-override-file $(location :framework-statsd-ravenwood-policies) "

        "--policy-override-file $(location :ravenwood-common-policies) " +
        "--policy-override-file $(location :framework-statsd-ravenwood-policies) ",
genrule_defaults {
    name: "framework-statsd.ravenwood_defaults",
    defaults: ["ravenwood_hsg_defaults"],
    srcs: [
        ":framework-statsd.impl{.jar}",

        ":ravenwood-common-policies",
        ":framework-statsd-ravenwood-policies",
        ":ravenwood-standard-options",
        ":ravenwood-common-options",
    ],
    out: [
        "ravenwood.jar",
    out: ["framework-statsd.log"],
}

        // Following files are created just as FYI.
java_genrule {
    name: "framework-statsd.ravenwood-base",
    defaults: ["framework-statsd.ravenwood_defaults"],
    tools: ["hoststubgen"],
    cmd: "$(location hoststubgen) " +
        statsd_options +
        "--out-jar $(location ravenwood.jar) ",
    out: ["ravenwood.jar"],
}

java_genrule {
    name: "framework-statsd.ravenwood-stats",
    defaults: ["framework-statsd.ravenwood_defaults"],
    tools: ["ravenhelper"],
    cmd: "$(location ravenhelper) stats " +
        statsd_options +
        "--supported-api-list-file $(location framework-statsd_apis.csv) " +
        "--gen-keep-all-file $(location framework-statsd_keep_all.txt) " +
        "--gen-input-dump-file $(location framework-statsd_dump.txt) ",
    out: [
        "framework-statsd_keep_all.txt",
        "framework-statsd_dump.txt",

        "framework-statsd.log",
        "framework-statsd_apis.csv",
    ],
    visibility: ["//visibility:private"],
}

java_import {
@@ -380,42 +405,45 @@ java_import {
// framework-graphics
//////////////////////

java_genrule {
    name: "framework-graphics.ravenwood-base",
    tools: ["hoststubgen"],
    cmd: "$(location hoststubgen) " +
        "@$(location :ravenwood-standard-options) " +
        "@$(location :ravenwood-common-options) " +

graphics_options = ravenwood_common_options +
    "--debug-log $(location framework-graphics.log) " +
        "--supported-api-list-file $(location framework-graphics_apis.csv) " +
        "--gen-keep-all-file $(location framework-graphics_keep_all.txt) " +
        "--gen-input-dump-file $(location framework-graphics_dump.txt) " +

        "--out-impl-jar $(location ravenwood.jar) " +
    "--in-jar $(location :framework-graphics.impl{.jar}) " +
    "--policy-override-file $(location :framework-graphics-ravenwood-policies) "

        "--policy-override-file $(location :ravenwood-common-policies) " +
        "--policy-override-file $(location :framework-graphics-ravenwood-policies) ",
genrule_defaults {
    name: "framework-graphics.ravenwood_defaults",
    defaults: ["ravenwood_hsg_defaults"],
    srcs: [
        ":framework-graphics.impl{.jar}",

        ":ravenwood-common-policies",
        ":framework-graphics-ravenwood-policies",
        ":ravenwood-standard-options",
        ":ravenwood-common-options",
    ],
    out: [
        "ravenwood.jar",
    out: ["framework-graphics.log"],
}

java_genrule {
    name: "framework-graphics.ravenwood-base",
    defaults: ["framework-graphics.ravenwood_defaults"],
    tools: ["hoststubgen"],
    cmd: "$(location hoststubgen) " +
        graphics_options +
        "--out-jar $(location ravenwood.jar) ",
    out: ["ravenwood.jar"],
}

        // Following files are created just as FYI.
java_genrule {
    name: "framework-graphics.ravenwood-stats",
    defaults: ["framework-graphics.ravenwood_defaults"],
    tools: ["ravenhelper"],
    cmd: "$(location ravenhelper) stats " +
        graphics_options +
        "--supported-api-list-file $(location framework-graphics_apis.csv) " +
        "--gen-keep-all-file $(location framework-graphics_keep_all.txt) " +
        "--gen-input-dump-file $(location framework-graphics_dump.txt) ",
    out: [
        "framework-graphics_keep_all.txt",
        "framework-graphics_dump.txt",

        "framework-graphics.log",
        "framework-graphics_apis.csv",
    ],
    visibility: ["//visibility:private"],
}

java_import {
Loading