From 0e0349e591556ba3290c2e328c62d3e2957d7e7b Mon Sep 17 00:00:00 2001 From: Andrew Walbran Date: Wed, 22 Nov 2023 18:32:14 +0000 Subject: Migrate to cargo_embargo. Bug: 293289578 Test: Ran cargo_embargo, compared Android.bp Change-Id: Id047e55002068cb8e044681498da1666a929314b --- Android.bp | 140 ++++++++++++++++++++++------------ cargo2android.json | 19 ----- cargo_embargo.json | 78 +++++++++++++++++++ patches/Android.bp.patch | 194 ++++++++++------------------------------------- 4 files changed, 213 insertions(+), 218 deletions(-) delete mode 100644 cargo2android.json create mode 100644 cargo_embargo.json diff --git a/Android.bp b/Android.bp index ecbb83f..ec19374 100644 --- a/Android.bp +++ b/Android.bp @@ -1,4 +1,4 @@ -// This file is generated by cargo2android.py --config cargo2android.json. +// This file is generated by cargo_embargo. // Do not modify this file as changes will be overridden on upgrade. package { @@ -43,19 +43,14 @@ cc_library_headers { min_sdk_version: "29", } -rust_defaults { - name: "libquiche_defaults", - stem: "libquiche", +rust_library { + name: "libquiche", host_supported: true, crate_name: "quiche", cargo_env_compat: true, + cargo_pkg_version: "0.17.1", srcs: ["src/lib.rs"], edition: "2018", - features: [ - "boringssl", - "default", - ], - // Link all crates statically to create a self-contained .so library. rlibs: [ "liblazy_static", "liblibc", @@ -67,17 +62,38 @@ rust_defaults { "libsmallvec", ], prefer_rlib: true, - // For DnsResolver (Mainline module introduced in Q). + shared_libs: [ + "libcrypto", + "libssl", + ], apex_available: [ "//apex_available:platform", "com.android.resolv", ], + product_available: true, + vendor_available: true, min_sdk_version: "29", } rust_ffi { name: "libquiche_ffi", - defaults: ["libquiche_defaults"], + host_supported: true, + crate_name: "quiche", + cargo_env_compat: true, + cargo_pkg_version: "0.17.1", + srcs: ["src/lib.rs"], + edition: "2018", + rlibs: [ + "liblazy_static", + "liblibc", + "liblibm", + "liblog_rust", + "liboctets", + "libring", + "libslab", + "libsmallvec", + ], + prefer_rlib: true, shared_libs: [ "libcrypto", "libssl", @@ -86,38 +102,56 @@ rust_ffi { "//apex_available:platform", "com.android.resolv", ], + product_available: true, + vendor_available: true, min_sdk_version: "29", } -rust_library { - name: "libquiche", - defaults: ["libquiche_defaults"], +rust_test_host { + name: "quiche_host_test_src_lib", + crate_name: "quiche", + cargo_env_compat: true, + cargo_pkg_version: "0.17.1", + srcs: ["src/lib.rs"], + test_suites: ["general-tests"], + auto_gen_config: true, + test_options: { + unit_test: true, + }, + edition: "2018", + features: [ + "boringssl-vendored", + "default", + ], + rustlibs: [ + "liblazy_static", + "liblibc", + "liblibm", + "liblog_rust", + "libmio", + "liboctets", + "libring", + "libslab", + "libsmallvec", + "liburl", + ], shared_libs: [ "libcrypto", "libssl", ], -} - -// This target is used by doh_unit_test to prevent compatibility issues -// because doh_unit_test needs to be run on the R platform. -rust_library_rlib { - name: "libquiche_static", - defaults: ["libquiche_defaults"], - static_libs: [ - "libcrypto_static", - "libssl", - ], - apex_available: [ - "//apex_available:platform", - "com.android.resolv", + data: [ + "examples/cert.crt", + "examples/cert.key", + "examples/cert-big.crt", + "examples/rootca.crt", ], - min_sdk_version: "29", } -rust_defaults { - name: "quiche_test_defaults", +rust_test { + name: "quiche_device_test_src_lib", crate_name: "quiche", cargo_env_compat: true, + cargo_pkg_version: "0.17.1", srcs: ["src/lib.rs"], test_suites: ["general-tests"], auto_gen_config: true, @@ -138,6 +172,10 @@ rust_defaults { "libsmallvec", "liburl", ], + static_libs: [ + "libcrypto_static", + "libssl", + ], data: [ "examples/cert.crt", "examples/cert.key", @@ -146,25 +184,33 @@ rust_defaults { ], } -rust_test_host { - name: "quiche_host_test_src_lib", - defaults: ["quiche_test_defaults"], - test_options: { - unit_test: true, - }, - shared_libs: [ - "libcrypto", - "libssl", +rust_library_rlib { + name: "libquiche_static", + host_supported: true, + crate_name: "quiche", + cargo_env_compat: true, + cargo_pkg_version: "0.17.1", + srcs: ["src/lib.rs"], + edition: "2018", + rustlibs: [ + "liblazy_static", + "liblibc", + "liblibm", + "liblog_rust", + "liboctets", + "libring", + "libslab", + "libsmallvec", ], -} - -rust_test { - name: "quiche_device_test_src_lib", - defaults: ["quiche_test_defaults"], - // To run this test in R platform, it's required to statically link - // libcrypto and libssl. static_libs: [ "libcrypto_static", "libssl", ], + apex_available: [ + "//apex_available:platform", + "com.android.resolv", + ], + product_available: true, + vendor_available: true, + min_sdk_version: "29", } diff --git a/cargo2android.json b/cargo2android.json deleted file mode 100644 index 1317ea7..0000000 --- a/cargo2android.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "apex-available": [ - "//apex_available:platform", - "com.android.resolv" - ], - "dependencies": true, - "device": true, - "min-sdk-version": "29", - "no-pkg-vers": true, - "patch": "patches/Android.bp.patch", - "run": true, - "test-data": [ - "src/lib.rs=examples/cert.crt", - "src/lib.rs=examples/cert.key", - "src/lib.rs=examples/cert-big.crt", - "src/lib.rs=examples/rootca.crt" - ], - "tests": true -} diff --git a/cargo_embargo.json b/cargo_embargo.json new file mode 100644 index 0000000..e589563 --- /dev/null +++ b/cargo_embargo.json @@ -0,0 +1,78 @@ +{ + "apex_available": [ + "//apex_available:platform", + "com.android.resolv" + ], + "min_sdk_version": "29", + "package": { + "quiche": { + "patch": "patches/Android.bp.patch", + "test_data": { + "src/lib.rs": [ + "examples/cert.crt", + "examples/cert.key", + "examples/cert-big.crt", + "examples/rootca.crt" + ] + } + } + }, + "variants": [ + { + "module_blocklist": [ + "libquiche_static" + ], + "module_name_overrides": { + "libquiche_shared": "libquiche_ffi" + } + }, + { + "module_blocklist": [ + "libquiche", + "libquiche_shared", + "libquiche_static" + ], + "module_name_overrides": { + "quiche_test_src_lib": "quiche_host_test_src_lib" + }, + "tests": true, + "package": { + "quiche": { + "device_supported": false + } + } + }, + { + "module_blocklist": [ + "libquiche", + "libquiche_shared", + "libquiche_static" + ], + "module_name_overrides": { + "libcrypto": "libcrypto_static", + "quiche_test_src_lib": "quiche_device_test_src_lib" + }, + "tests": true, + "package": { + "quiche": { + "host_supported": false + } + } + }, + { + "module_blocklist": [ + "libquiche_shared", + "libquiche_static" + ], + "module_name_overrides": { + "libcrypto": "libcrypto_static", + "libquiche": "libquiche_static" + }, + "package": { + "quiche": { + "force_rlib": true + } + } + } + ] +} diff --git a/patches/Android.bp.patch b/patches/Android.bp.patch index a1b4bf2..f635789 100644 --- a/patches/Android.bp.patch +++ b/patches/Android.bp.patch @@ -1,189 +1,79 @@ diff --git a/Android.bp b/Android.bp -index 884af0e..ecbb83f 100644 +index a810b69..ec19374 100644 --- a/Android.bp +++ b/Android.bp -@@ -43,8 +43,8 @@ cc_library_headers { - min_sdk_version: "29", - } - --rust_ffi_shared { -- name: "libquiche_shared", -+rust_defaults { -+ name: "libquiche_defaults", - stem: "libquiche", - host_supported: true, - crate_name: "quiche", -@@ -52,10 +52,11 @@ rust_ffi_shared { +@@ -51,11 +51,7 @@ rust_library { + cargo_pkg_version: "0.17.1", srcs: ["src/lib.rs"], edition: "2018", - features: [ +- features: [ - "boringssl-vendored", -+ "boringssl", - "default", - ], +- "default", +- ], - rustlibs: [ -+ // Link all crates statically to create a self-contained .so library. + rlibs: [ "liblazy_static", "liblibc", "liblibm", -@@ -65,41 +66,19 @@ rust_ffi_shared { +@@ -65,7 +61,8 @@ rust_library { "libslab", "libsmallvec", ], - static_libs: [ -- "libcrypto", -- "libssl", -- ], + prefer_rlib: true, -+ // For DnsResolver (Mainline module introduced in Q). - apex_available: [ - "//apex_available:platform", - "com.android.resolv", ++ shared_libs: [ + "libcrypto", + "libssl", ], -- product_available: true, -- vendor_available: true, +@@ -78,7 +75,7 @@ rust_library { min_sdk_version: "29", } --rust_library { -- name: "libquiche", -- host_supported: true, -- crate_name: "quiche", -- cargo_env_compat: true, -- srcs: ["src/lib.rs"], -- edition: "2018", +-rust_ffi_shared { ++rust_ffi { + name: "libquiche_ffi", + host_supported: true, + crate_name: "quiche", +@@ -86,11 +83,7 @@ rust_ffi_shared { + cargo_pkg_version: "0.17.1", + srcs: ["src/lib.rs"], + edition: "2018", - features: [ - "boringssl-vendored", - "default", - ], - rustlibs: [ -- "liblazy_static", -- "liblibc", -- "liblibm", -- "liblog_rust", -- "liboctets", -- "libring", -- "libslab", -- "libsmallvec", -- ], ++ rlibs: [ + "liblazy_static", + "liblibc", + "liblibm", +@@ -100,7 +93,8 @@ rust_ffi_shared { + "libslab", + "libsmallvec", + ], - static_libs: [ -+rust_ffi { -+ name: "libquiche_ffi", -+ defaults: ["libquiche_defaults"], ++ prefer_rlib: true, + shared_libs: [ "libcrypto", "libssl", ], -@@ -107,57 +86,41 @@ rust_library { - "//apex_available:platform", - "com.android.resolv", +@@ -141,7 +135,7 @@ rust_test_host { + "libsmallvec", + "liburl", ], -- product_available: true, -- vendor_available: true, - min_sdk_version: "29", - } - --rust_ffi_static { -- name: "libquiche_static", -- stem: "libquiche", -- host_supported: true, -- crate_name: "quiche", -- cargo_env_compat: true, -- srcs: ["src/lib.rs"], -- edition: "2018", -- features: [ -- "boringssl-vendored", -- "default", -- ], -- rustlibs: [ -- "liblazy_static", -- "liblibc", -- "liblibm", -- "liblog_rust", -- "liboctets", -- "libring", -- "libslab", -- "libsmallvec", -+rust_library { -+ name: "libquiche", -+ defaults: ["libquiche_defaults"], +- static_libs: [ + shared_libs: [ -+ "libcrypto", -+ "libssl", - ], -+} -+ -+// This target is used by doh_unit_test to prevent compatibility issues -+// because doh_unit_test needs to be run on the R platform. -+rust_library_rlib { -+ name: "libquiche_static", -+ defaults: ["libquiche_defaults"], - static_libs: [ -- "libcrypto", -+ "libcrypto_static", + "libcrypto", "libssl", ], - apex_available: [ - "//apex_available:platform", - "com.android.resolv", - ], -- product_available: true, -- vendor_available: true, - min_sdk_version: "29", - } - --rust_test { -- name: "quiche_test_src_lib", -- host_supported: true, -+rust_defaults { -+ name: "quiche_test_defaults", - crate_name: "quiche", - cargo_env_compat: true, +@@ -198,10 +192,6 @@ rust_library_rlib { + cargo_pkg_version: "0.17.1", srcs: ["src/lib.rs"], - test_suites: ["general-tests"], - auto_gen_config: true, -- test_options: { -- unit_test: true, -- }, edition: "2018", - features: [ - "boringssl-vendored", -@@ -175,10 +138,6 @@ rust_test { - "libsmallvec", - "liburl", - ], -- static_libs: [ -- "libcrypto", -- "libssl", +- features: [ +- "boringssl-vendored", +- "default", - ], - data: [ - "examples/cert.crt", - "examples/cert.key", -@@ -186,3 +145,26 @@ rust_test { - "examples/rootca.crt", - ], - } -+ -+rust_test_host { -+ name: "quiche_host_test_src_lib", -+ defaults: ["quiche_test_defaults"], -+ test_options: { -+ unit_test: true, -+ }, -+ shared_libs: [ -+ "libcrypto", -+ "libssl", -+ ], -+} -+ -+rust_test { -+ name: "quiche_device_test_src_lib", -+ defaults: ["quiche_test_defaults"], -+ // To run this test in R platform, it's required to statically link -+ // libcrypto and libssl. -+ static_libs: [ -+ "libcrypto_static", -+ "libssl", -+ ], -+} + rustlibs: [ + "liblazy_static", + "liblibc", -- cgit v1.2.3