When --add3prf is set, `get_rust_pkg.py` script `cd` into the crate directory and run `add3prf.py`. However, `add3prf.py` doesn't exist in the newly downloaded crate directory. This CL ensures that we reference to the existing `add3prf.py` script.
Test: development/scripts/get_rust_pkg.py -add3prf -v -o /tmp tinyjson-2.5.1
Change-Id: I4273d4f2b6a1f353960adbbab9abbb96bf3e68f3
Adding per-file line for cargo2rulesmk.py such that
it can be maintained by members of the platsec Rust
and Trusty teams.
Bug: 281857510
Change-Id: I9aedee5a76c4d463d4cf3d0851c60193d96a7696
Add script that generates rules.mk files from Rust crates.
Based on and inspired by cargo2android.py script to generate
blueprint files for the Android build system.
The script has only been tested on the vendored crates used to
build Trusty (see external/rust/crates) and does not support
the full range of crate types or cargo features.
Bug: 281857510
Change-Id: I1951f75476c36b9a1b794c4a51483f2c7387b1f5
The new argument makes the generator write the VSCode launch.json config
into a file instead of stdout.
The generator uses marker lines to insert the config. This way the user
can control where in the file the launch config is written.
Test: atest gdbclient_test
Test: lldbclient.py --setup-forwarding vscode-lldb \
--vscode-launch-props= \
'{"internalConsoleOptions" : "openOnSessionStart"}' \
--vscode-launch-file=.vscode/launch.json -r test
Change-Id: I92b3f479b5ebcb722933938f52d0f23ff098beac
The current cargo2android.py doesn't work well w/ `--cargo_bin`. It would use the full path rustc(/<HOME>/.rustup/toolchains/nightly-x86_64-unknown-linux-gnu/bin/rustc) instead of basename(`rustc`). The `RUSTC_PAT` and `RUSTC_VV_CMD_ARGS` regex doesn't match the full path.
This CL uses `(.*\/)?` to match the path if it exists.
Change-Id: If5e4060410c1cd45ad6c9612ebe856552aa14d08
Add the path to the existing architecture-specific runtime directory,
in preparation for when lldb-server is added to the toolchain build by
Iba7efaa62e7d3cc8e3bd1080d9b4a67bc241faf2.
Test: `gdbclient.py -r surfaceflinger` connected to a riscv64 board
Change-Id: I1654378a7ba92fcd7ffe478d2b491f426655e6f1
Redshell unfortunately uses this old version, while the union operator
for dictionaries was only added in Python 3.9.
Test: Ran cargo2android.py on a crate with variants
Change-Id: I7a875acde11c23a3b789ef384f3ab32100d7c6d5
The new argument allows the user to pass a JSON of properties to merge
into the generated launch.json config when setting up vscode-lldb
forwarding. This way the user can add pre-build tasks, extra init
commands etc.
Test: atest gdbclient_test
Test: lldbclient.py --setup-forwarding=vscode-lldb
--vscode-launch-props='{"sourceMap": {"test1": "test2"},
"postDebugTask": "Stop LLDB client", "processCreateCommands" :
["test"]}' -r test
Change-Id: I763dd15dde10421e86bc0a6ddfde974156ef1588
In a couple cases it exposed unused arguments or type errors. This
change fixes those as well.
Test: mypy development/scripts/gdbclient.py
Test: gdbclient -r /system/bin/date
Change-Id: If471a1853b813e01c89e321eab3d424f1c256f2d
A downstream project has an invalid branching structure, so we can't
actually rename `libsyn` to `libsyn-legacy` like we normally would.
Instead, we must allow the legacy package to squat on the `libsyn` name
until the branching structure is fixed to unblock the upgrade to
syn-2.x.
Test: TreeHugger
Bug: 276463929
Bug: 278978404
Change-Id: If72d389dd5238299cc1b35818e0b5596b0469cb1
This adds a suffix to all dependencies, which may be useful for no_std
crates.
Bug: 279614907
Test: Ran on external/rust/crates/ciborium
Change-Id: I4d504fbfdcd079a946814dcf953b42baa0ca3563
Variant test and cargo flags were being ignored.
Bug: 279614907
Test: Ran on external/rust/crates/serde
Change-Id: I9c6cf71c8d04944cc7c532cfb53b50c2efc3e375
These allow most no_std crates to be supported without extra patches.
Bug: 279614907
Test: Ran on external/rust/crates/half
Change-Id: I1a69ff7950fb63320ef7c87d6cd45b20915df801
As it turns out, gdbclient.py is broken when connecting to a host:port
$ANDROID_SERIAL where the host is something other than localhost,
because it will try to connect to a TCP socket on the host named in
$ANDROID_SERIAL, while lldb-server is not even set up to listen on a TCP
socket on the device (it listens on a Unix socket which gets forwarded
by adb forward to localhost).
Fix it by entirely removing the code that tries to connect directly to
the host if the $ANDROID_SERIAL is of the form host:port.
Change-Id: I91a04aa811b246c9cac82ef3b0779dc284364edf
Replaced with ARCH_IS_32BIT since that's the only thing truly
necessary to work.
This also makes the register regex much more lenient, but it appears
to be strict enough that it doesn't seem to capture arbitrary lines
when run through logcat.
Removed the StripPC function and verified that an arm crash that
ends in 1 still works.
Removed the architecture.py script, it is old and I don't see anyone
using it.
Modify the reading of the lines to ignore any errors in the input.
Test: All unit tests pass.
Test: Symbolized arm and arm64 tombstones
Test: Symbolized x86 and x86_64 tombstones
Test: Ran through a logcat and verified it caught the bug but
Test: didn't print any extra information.
Change-Id: I6a65ecaad68da1d56864db32ff434512e4df0d89
Test: Ran with a BUILD_NUMBER as parameter.
Change-Id: I1048cc8bcb6565e14be00563da565eb3b8ce7989
Signed-off-by: xutianqi <xutianqi@xiaomi.corp-partner.google.com>
This is used for managing 3p crates, and the vast majority of them
should be available to both vendor and product. Enable support by
default.
Bug: 270690570
Test: Regenerate external/rust/crates/*
Change-Id: Ie5cb4b8d00de5e6ae37c5a69cb2ee0c0cc6f573a
The ring crate hasn't had a non-alpha release in over two years, and
may need to be updated to an alpha release. Modify the version regex
in cargo2android.py to recognize the alpha version as part of the
version suffix.
Test: manually run cargo2android.py in redshell
Change-Id: If48d5be339d10bc3e6651485b0038b7219403077
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
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
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
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>
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
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
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
* 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
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
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