Commit Graph

560 Commits

Author SHA1 Message Date
Jeff Vander Stoep
b06dd5c7e2 c2a: make Rust version matchin regex less exact
Allow custom version like 1.65.0.p1 (added in aosp/2404317).

Resolves warning:
WARNING: cannot find RustDefaultVersion in
development/scripts/../../build/soong/rust/config/global.go
Change-Id: I6fced7695473e025b0f739f9986df932d2c3f5fe

Test: cargo2android.py --config cargo2android.py
no warning

Change-Id: I43ff81f061477fc0322f27fef1c950954130dbc6
2023-02-01 14:23:40 +01:00
Jeffrey Vander Stoep
6e50b8e094 Merge "Include non-local tests by path" 2023-02-01 07:42:21 +00:00
Jeff Vander Stoep
408e5db8d9 Include non-local tests by path
Import paths for non-local tests because including tests
directly has proven to be fragile and burdensome. For example,
whenever a project removes or renames a test, all the TEST_MAPPING
files for its reverse dependencies must be updated or we get test
breakages. That can be many tens of projects that must updated to
prevent the reported breakage of tests that no longer exist.
Similarly when a test is added, it won't be run when the reverse
dependencies change unless/until update_crate_tests.py is run for its
depenencies. Importing TEST_MAPPING files instead of tests solves
both of these problems. When tests are removed, renamed, or added,
only files local to the project need to be modified. The downside is
that we potentially miss some tests. But this seems like a reasonable
tradeoff since it's primarily unit tests that are missing, and all
unit tests are always run on the host for every presubmit.

See aosp/2400500 as an example of what test mapping files now
look like after this change.

Test: run it over all projects in external/rust/crates
Change-Id: I2b644f9ebf97968c9928f5b1756b2ab199e8e7ca
2023-01-30 13:10:25 +01:00
Chris Wailes
13b1ca483d Add a rename mapping for libatomic to libatomic_rust
Bug: 229895468
Test: cargo2andoid.py --config cargo2android.json
Change-Id: Icf542d1398f9cd378bba845445b2dab34bb0b317
2023-01-24 16:31:14 -08:00
Shuo Wang Hsu
be3f0d9d11 Support building crate variants.
The cargo2android.json config file now supports the key "variants" with
a list of entries containing keys and build name suffix. Each entry
will produce a different library (or binary). Keys supplied for each
variant will overwrite any existing ones specified in the config file.

See an example of the protobuf crate on aosp/2368788.

Test: None
Change-Id: Iaca67c7f22718c27b3cb118d9794f1ff01d31c84
2022-12-28 15:39:42 -08:00
Treehugger Robot
af6aef5d2b Merge "update_crate_tests.py: update location of bazel binary" 2022-12-13 16:22:35 +00:00
Jeff Vander Stoep
2f3afc25d5 update_crate_tests.py: update location of bazel binary
The binary for bazel moved from tools/bazel to build/bazel/bin/bazel.

Test: run update_crate_tests.py in a Rust crate. Verify results.
Change-Id: I2e586b59876bfd7146cd92efc90055828bf60eac
2022-12-13 15:43:05 +01:00
Shaju Mathew
91f544f227 Now ignoring adb shell service return error code in acov-llvm.py
Bug: 261529166

Ignore failures when sending the flush signal.  Some processes may have
exited after we run `adb shell ps` but before we could send the flush signal.

Test: Successful run of coverage metrics using acov-llvm (as documented in go/android-native-coverage-local-workflow

Change-Id: I2fc0f71bf5f6d810b4124e28d7dd69ebfc2579b3
Signed-off-by: Shaju Mathew <shaju@google.com>
2022-12-06 19:31:22 +00:00
Treehugger Robot
cc18ab77b1 Merge "Get latest stable version rather than absolute latest." 2022-11-28 16:55:39 +00:00
Andrew Walbran
b5ef53e335 Get latest stable version rather than absolute latest.
We don't want to import alpha versions, generally.

Test: get_rust_pkg.py -add3prf zerocopy
Change-Id: If51a5f9786ccbae8b8f858ae51153a0ffb5ffe7f
2022-11-18 15:35:09 +00:00
Christopher Ferris
e6e02b0e22 Only add files in GlobSymbolsDir.
I previously skipped directories, but that can still lead to problems.
So instead, only add paths that are files.

Test: Ran over a stack that failed when trying to run llvm-readelf
Test: on a directory. After this fix, everything get line numbers.
Change-Id: Ide39c5a118d78a822057cc3977d0f532595f798b
2022-11-08 17:47:37 -08:00
Christopher Ferris
29fcc84e82 Fix build id check for libraries.
The current build id check uses the file utility. Unfortunately, it
doesn't work on all systems. Replace with a call to llvm-readelf and
get the bitness and build id using that data.

Other small modifications:
- Only attempt to get the full path for a library once for each library.
- Do not add directories into the symbol libraries.

Test: Unit tests pass.
Test: Running using a libart.so that file doesn't understand and
Test: verifying the line numbers are correct.
Change-Id: I12c3d3c4599d201c3c01feeb48448fee6c633d71
2022-11-02 17:55:57 -07:00
Treehugger Robot
a063ff34e4 Merge "Use gdb-remote without host if not given" 2022-10-19 18:38:57 +00:00
Florian Mayer
b61f795aa4 Use gdb-remote without host if not given
Test: lldbclient.py -r ls
Change-Id: I162d318fa30c44f180b6104b31e61e7521fb6a48
2022-10-19 01:16:11 +00:00
Elliott Hughes
f8b9b91130 Remove scripts that haven't yet been updated for python3.
That seems like a sign none of these are used. (Two of them haven't been
touched since their initial import in 2009!)

Test: treehugger
Change-Id: I76042f6c8fab84669c83aa72cd0b5df13f01ed7c
2022-10-18 21:41:59 +00:00
Christopher Ferris
99d580a123 Remove obsolete script.
In addition, remove the test for it and the test file.

Test: NA
Change-Id: Ib5124749c523177805f494d9a6daf2400b6fc84c
2022-10-13 16:38:34 -07:00
Krzysztof Kosiński
45c7ebda06 Remove Python enables identical to global defaults.
Bug: 245854393
Test: presubmit
Change-Id: I9bb5cbd972432a26afcb13d7c2a6bbc73fb0991f
2022-09-17 11:33:50 +00:00
Matthew Maurer
b59698e2e9 c2a: Legacy cleanup
* Removed import of print function - we only support py3 now
* Switched from set() to a set literal

Bug: None
Test: Regenerated argh_derive
Change-Id: I78bc86ad22c747c5f6ad88e2caa5e707e1ffc381
2022-09-12 13:03:32 -07:00
Matthew Maurer
ae5da710b3 c2a: Parse new cargo output
Cargo now outputs
'unittests src/lib.rs'
where before it output
'unittests'.

Bug: 246384761
Test: Add "test": true to argh_derive, regenerate, observe same bp file
Change-Id: Ieeab83761f5fe7cff88af1ce8293818736a6bb9b
2022-09-12 12:55:47 -07:00
Pierre-Clément Tosi
fd12b5feed c2a: Clean-up no-ops with 'pass'
Bug: 243662244
Test: -
Change-Id: Ib62b19c18da7e3a44c74303a72a9c27f9d8b3315
2022-08-24 17:41:08 +01:00
Pierre-Clément Tosi
e5342d134a c2a: Crate: Don't parse -Wclippy, -D, and -W flags
Don't fail the generation of the Android.bp file when those flags are
encountered.

Bug: 243662244
Test: Used on gdbstub, which fixed issues seen in aosp/2191020
Change-Id: I80a6ecd8df7980234552a98ddb1149dc29542ac7
2022-08-24 17:41:08 +01:00
Pierre-Clément Tosi
435dfe58d1 c2a: Crate: Parse unquoted rustc args
Prevent the script from missing flags (minus-prefixed arguments) due to
the CLI argument being quoted (making the "-" its second character).

This removes the need to manually unquote the args in the few cases
where the code already handles them being in quotes.

Bug: 243662244
Test: -
Change-Id: I37b9aa96dcbbeb04616bddfca657d066b998d7c7
2022-08-24 17:40:23 +01:00
Pierre-Clément Tosi
dde806f72d c2a: Extend unquote() to single quotes
Bug: 243662244
Test: -
Change-Id: I4de409b3135369425f8fa934f490e701505cd55d
2022-08-24 16:36:34 +01:00
Frederick Mayle
9f0dd71b8a cargo2android: fix test detection when there is exactly 1 test
Example where it failed:

    tests::sock_send_recv_event: test

    1 test, 0 benchmarks
       Doc-tests vm_control
    0 tests, 0 benchmarks

the "1 test, 0 benchmarks" line wouldn't match the test regex, so it
would mistakenly parse the doc tests line instead and then fail to
generate a rust_test module.

Test: ran on crosvm repo

Change-Id: Id0286165405b58bf84b7261db842e272442c91e8
2022-08-17 20:36:45 +00:00
Matthew Maurer
b1d8a2de5f Merge changes I4c3744e0,I91d8de92
* changes:
  c2a: Our cargo works again, re-enable defaulting.
  c2a: Fix rust_version calculation
2022-08-17 16:08:32 +00:00
Matthew Maurer
51ec016f76 rust: addr3prf: Support COPYING files
Previously, we only looked for LICENSE* files. This adds support for
detecting COPYING* files as an alternate representation of the license.

Bug: 234563254
Test: get_rust_pkg.py -add3prf quiche
Change-Id: Ic04ef42f349879be18a4307bd863288dfa81b5fc
2022-08-10 15:29:24 -07:00
Frederick Mayle
71722b10e5 cargo2android: Fix edge case in --add_workspace feature
If the last line of a Cargo.toml was a `[*]`, then appending
`[workspace]` without newlines would result in an invalid toml file.

external/crosvm/tracing/Cargo.toml is an example.

Test: ran on crosvm
Change-Id: Ib949e7f92d0205b1bc6433d1e231924832ddb536
2022-07-27 00:13:52 +00:00
Jeffrey Vander Stoep
3a293c7bba Merge "Revert "c2a: add option to use Cargo.toml.orig"" 2022-07-07 08:24:42 +00:00
Jeffrey Vander Stoep
6529bcaf6a Revert "c2a: add option to use Cargo.toml.orig"
This reverts commit 2adbd7ed89.

Reason for revert: This doesn't work in all cases. For now I'll
instead use local patches for Cargo.toml :(

Change-Id: I0621796e694e2654a01fe9a38a307fd0a4ab8b15
2022-07-06 12:34:37 +00:00
Treehugger Robot
1da99cc99e Merge "c2a: add option to use Cargo.toml.orig" 2022-06-23 15:34:41 +00:00
Jeff Vander Stoep
2adbd7ed89 c2a: add option to use Cargo.toml.orig
`Cargo --publish` strips dev-dependencies from Cargo.toml, an issue
that won't be fixed until [1] is resolved, which doesn't seem
likely as it has been open for ~5 years now.

cargo2android needs dev-dependencies listed in Cargo.toml in order
to generate the rust_test in Android.bp, add an option that tells
cargo2android to use the cargo.toml.orig instead of the cargo.toml.

With this change there are now two options that temporarily
update Cargo.toml, so I've pulled these out into a separate class
to clean up the code a bit.

[1] https://github.com/rust-lang/cargo/issues/4242

Test: run against projects with --add_workspace and
--orig-cargo-toml

Change-Id: I3b8633a807c9734981ebde0bef9b73868acf6774
2022-06-23 16:38:08 +02:00
Treehugger Robot
d0e21e93fb Merge "c2a: Automatically make crates APEX available" 2022-06-22 19:25:58 +00:00
Matthew Maurer
ce53b80d81 c2a: Our cargo works again, re-enable defaulting.
Bug: 234744235
Test: Run cargo2android.py without --cargo_bin
Test: Run in the sandbox without providing --cargo_bin
Change-Id: I4c3744e0e391ab7e4fb6a857483fde5c0015f0ff
2022-06-16 13:53:26 -07:00
Matthew Maurer
1231af292c c2a: Fix rust_version calculation
string-typed result groups would cause the comparison to fail with a
type error. Explicitly casting results to integer for comparison, then
back to string for concatenation causes things to work again.

Bug: 234744235
Test: Run tool with no --cargo_bin option (and the following patch)
(thus using local cargo version detection) and observe success.

Change-Id: I91d8de925c1b6eca7c9905ea85e1ad90e01fb1f9
2022-06-16 13:53:21 -07:00
Matthew Maurer
a9fb65d155 c2a: Automatically make crates APEX available
The bulk of Rust packages in external/ are OS agnostic and do not care
about individual platform features. This change is intended to reduce
the churn of repeatedly adding new `apex_available` attributes to crates
by defaulting to availability. When landing a new crate which is either
platform revision specific or has an unstable file format, prefer to
set `apex_available: ["//apex_available:platform"]` until you have
thought things through.

Bug: 174862583
Test: Regenerate with no apex_available, see universal availability
Test: Regenerate with apex_available: [], see []
Test: Regenerate with apex_available: [foo], see [foo]
Change-Id: I958597789bfc966caec043d051996284dab7a927
2022-06-16 13:07:12 -07:00
Elliott Hughes
d70c7045c1 Merge "Work around an lldb bug with "localhost"." 2022-06-15 14:26:05 +00:00
Elliott Hughes
fc6da790d9 Work around an lldb bug with "localhost".
Bug: http://b/234034124
Test: reputed to work
Change-Id: I3414201712ffe0f808899e2a2f206e813bb609a7
2022-06-14 17:59:32 -07:00
Matthew Maurer
e1d07ba872 c2a: Only use postsubmit when configured
Previous logic would place tests in both presubmit and postsubmit if the
postsubmit_tests configuration was not specified. This is both
unnecessary and wastes resources because presubmit tests are also run in
postsubmit.

Bug: 236006683
Test: Regenerate all TEST_MAPPINGs, manually check postsubmit removal
Change-Id: Ie8ff0e351776711e07bf7646efd916d970254e9c
2022-06-14 16:28:36 -07:00
Matthew Maurer
037b445ed8 c2a: Denylist additional Rust tests modules
These modules are not suitable for direct execution on cuttlefish, but
are still built as `rust_test` to get the harness.

Bug: 233924440
Test: Regenerate all TEST_MAPPINGs, pass presubmit
Change-Id: I4aebdb5e36cf3a80780483e0a7ebeb83e9735d29
2022-06-14 14:32:15 -07:00
Matthew Maurer
3f7f7e2236 c2a: Do not assume test_mapping.json exists
update_crate_tests would previously assume test_mapping.json existed
when trying to generate a TEST_MAPPING update. This made updating
mappings for the majority of existing crates fail.

Bug: 233924440
Test: Regenerate all Rust TEST_MAPPINGs
Change-Id: I4d9b906f4db233ee0223a3035c1b63bf1ca681f4
2022-06-14 14:32:00 -07:00
Christopher Ferris
7d4d527a1c Modify any lines with libc.so!libc.so to libc.so.
I had made this change if there was an offset on the line,
but I didn't make if there is no offset present. Add the
no offset present case.

Bug: 206463081

Test: Ran unit tests.
Test: Modified a normal stack line with libart.so to be
Test: libart.so!libart.so and verified the line numbers
Test: are still present.
Change-Id: I75e3fbe5eaa3a5419a2dca2c4542731c61c7b971
2022-05-05 15:14:01 -07:00
Christopher Ferris
53c707781a Merge "Allow fixup of apex directories." 2022-05-03 19:02:24 +00:00
Ivan Lozano
d7438cff3b Add test_mapping_config to update_crate_tests
Adds support for configuring TEST_MAPPING output in
update_crate_tests.py by defining a test_mapping_config.json.

The initial option that can be set is whether a test should be a
postsubmit test instead of a presubmit test.

Bug: 229727993
Test: update_crate_tests.py with test_mapping_config.json produces
      postsubmit tests
Change-Id: I2f5a336c1af12630cc5df9d2c32ab63ac6099af8
2022-04-26 13:04:08 -04:00
Christopher Ferris
598cc3607b Allow fixup of apex directories.
For some reason, apex directory structure in the symbols directory
is not the same as on device.

This means that a directory on device like:

  /apex/com.android.art/lib64/libart.so

Is really found in symbols as:

  /apex/com.google.android.art/lib64/libart.so

Modify the script to look in both places for libraries.

Bug: 206463081

Test: Verified that libart.so in a backtrace now finds the symbols
Test: libart.so.
Change-Id: I67610e3a236765cc92397c70a769c4aa705f13ce
2022-04-22 14:37:56 -07:00
Edward Liaw
22e9c50ec0 gdbclient: use host ip when connecting to gdb
When the device is not on localhost, gdbclient won't connect to it
properly.  If the serial is a tcp address, parse the host and pass that
to gdb-remote.

Bug: 228371506
Test: gdbclient.py -r /system/bin/ls /bin
Change-Id: I635d4bdc483a66ab908f5aa02aa94e2504976a45
2022-04-07 00:46:07 +00:00
Roland Levillain
e6d2736cf4 Fix typo in documentation of script acov-llvm.py.
Test: n/a (comment-only change)
Change-Id: I1c10bfd65477dd2550ed86732f9bf077c59b5a59
2022-04-05 11:00:01 +01:00
David LeGare
d3bbf8cb7f Add open_then_run to TEST_EXCLUDE
Test: manual - Performed bulk update of crate TEST_MAPPING files
Change-Id: I39f7696eb1a0633d002a534ad21cc5f460eeee8c
2022-03-15 16:01:49 +00:00
Ivan Lozano
7abb3b9ee4 Merge "Exclude additional rust_tests." 2022-03-04 21:11:19 +00:00
Ivan Lozano
69030b3994 Exclude additional rust_tests.
aidl_test_rust_service_async is a helper binary and shouldn't be added
to TEST_MAPPINGs. diced_client_test does not work in presubmit yet.

Test: update_crate_tests.py no longer adds those tests.
Change-Id: I565680d2bee31e30bf5db224c46428385ed279a3
2022-03-04 14:24:24 -05:00
Peter Collingbourne
ba5482675f gdbclient.py: Implement --chroot argument.
This allows executables to be debugged inside a chroot (such as the ART
testing chroot).

Change-Id: I1b790c3c2307e240d37ed0afb9a930d00957acec
2022-03-03 12:33:26 -08:00