-P means PID to affect (default $PPID), while -p means Pipe buffer (512 bytes), we should use -P here.
Bug: 234049197
Test: Perform ". build/envsetup.sh" in host, then run "coredump_enable $PID".
Change-Id: Id373f2a7adc56d6a40720ec900b2561c9dbea2b1
Devices that only support 32-bit are very uncommon. Default
to the arch that module authors are most likely to be using.
Test: banchan com.android.sdkext | grep TARGET_PRODUCT
Test: banchan com.android.sdkext arm | grep TARGET_PRODUCT
Test: banchan com.android.sdkext arm64 | grep TARGET_PRODUCT
Change-Id: I31734660318eabbe3279214980b5cdecb55ab80b
The adb module has been moved from system/core to packages/modules/adb.
Update the path to the adb tab completion script accordingly.
Also teach envsetup.sh to complain if completion files are not found.
Test: manual: adb tab completion works
Test: source build/envsetup.sh && declare -F _adb
Change-Id: I7d6fda3813b95e64de7b1953675f66659e750c31
aosp/2045666 attempted to permit passing the `--skip-soong-tests` flag
through the `b` command to `soong_ui`, but it has been causing problems.
Test: b build '...' --skip-soong-tests is not recognized
Test: build/bazel/ci/bp2build.sh
Change-Id: I02487841d8081218dc941cb04bfa1a9e148ab6af
cl/2045666 allowed the --skip-soong-tests flag to pass through
invocations of the `b` command to soong_ui. But when the flag was
missing, an extra `""` argument was passed instead which caused soong_ui
to invoke a build of the droid target.
Test: m clean && b build '...' # verify Soong does not run a build
Change-Id: I7b99437d225786eb1698a88d0c755ce897550e70
Sometimes it is very handy during testing to temporarily skip Soong
tests, but there is not easy method to allow this without changing the
envsetup.sh file and re-sourcing before/after enabling/disabling the
skip-tests flag.
Test: b build '...' --skip-soong-tests
Change-Id: I6dcad3ba0336cfd1c4d2c4357b852900792445c3
Updates the lunch menu text to make it clearer that the choices in lunch
menu are not fully comprehensive. As the list comes from common lunch
choices the text now refers to 'common combinations' and informs that
you can 'specify your own'. This should help developers who are unsure
why they cannot find their desired lunch target in the list.
Change-Id: Ib9d55ee46b7037c30a8f4b43fdd552ea66e887e8
Test: source build/envsetup.sh && lunch
Add a keys argument to tapas that allows specifying devkeys to
use internal aosp_devkeys_* products that use the internal
devkeys, which will allow building unbundled apps that use platform
keys for testing.
Bug: 216553104
Test: tapas CarMediaApp devkeys
Change-Id: I2161be9e15f99713e11d22901d6eb7ad3c420093
Merged-In: I2161be9e15f99713e11d22901d6eb7ad3c420093
Add a keys argument to tapas that allows specifying devkeys to
use internal aosp_devkeys_* products that use the internal
devkeys, which will allow building unbundled apps that use platform
keys for testing.
Bug: 216553104
Test: tapas CarMediaApp devkeys
Change-Id: I2161be9e15f99713e11d22901d6eb7ad3c420093
Test: lunch armv8
- Check that PATH has no "::".
- Check that an executable script in CWD doesn't get executed.
Change-Id: I3a97eb661c614ff2e09723e9ccca0bdeb63dbdc5
We no longer need these since we switched to config files and I missed removing them. So removing them now
Bug: b/202340353
Change-Id: Ibab8ab8d4a45e01d2c98632ccee2684ea600ff69
The -s flag must be passed before the adb command,
as in `adb -s emulator-5554 install myapp.apk`
instead of `adb install -s emulator-5554 myapp.apk`.
Parse it and move it to the correct location if it
exists.
Test: Manually
Change-Id: I4b296d7fe4efbe3b25d21d33a8082b321787651a
This wasn't adding much value, let's remove it for now until we decide
on how mixed builds will be exposed for users later.
Test: USE_BAZEL_ANALYSIS=1 m droid
Change-Id: I16465fd7759646964ea8c50aab6ab91f47c5e8d1
This should have been submitted in the pertinent topic, but I messed by
git repositories up.
Test: Presubmits.
Change-Id: I7f3e9648c1961169ff40c8e2ddaf3d893498f625
This is to nudge developers to use RBE especially when they run into
long builds and do NOT have RBE turned on.
Change-Id: I7da94763f5387310e522931bf650f9d7c01dc7f2
This is so that developers don't have to remember to source a separate
script to source RBE related variables.
I'll modify the docs once this change is submitted.
Test:
Ran forrest build with fix for previous build failure - https://android-build.googleplex.com/builds/abtd/run/L72300000950316038
Bug: b/193407413
Change-Id: I16f057086e2ee4f5918816ea70dbb33d0f5e99ab
This is so that developers don't have to remember to source a separate
script to source RBE related variables.
I'll modify the docs once this change is submitted.
Test:
USE_RBE=true source build/envsetup.sh sources RBE variables.
USE_RBE=false source build/envsetup.sh does NOT source RBE variables.
source build/envsetup.sh does NOT source RBE variables.
Bug: b/193407413
Change-Id: Ib8abf4c307b02fbb0c63b8a62d7aeda8be42d0fb
This CL extends the `m` function to short circuit to Bazel iff:
1) USE_BAZEL_ANALYSIS is set to 1 or true
2) There is only 1 Soong module requested to be built
3) The Soong module has a corresponding Bazel alias target in @soong_injection//targets/BUILD to the real target in out/soong/workspace.
Test: TH
Change-Id: I976ffa53106c0b52c75b71f1e0e1e8b3ef5cb3d1
This is less surprising than trying to use --config=bp2build as the only args, which is invalid.
Test: source build/envsetup.sh; b
Change-Id: I0b3724d05b8cc149268e660eb672192fe9bad19d
`b` is a function that combines:
1. Integrated generation of a synthetic bazel workspace, containing
symlinks to BUILD and bzl files alongside symlinks to the source tree.
This is the --package_path of the bazel build.
2. Running the Bazel build itself with b's entire argv.
A user accustomed to typing `bazel build <targets>` would
now type `b build <targets>`.
Test: source build/envsetup.sh; b build //bionic/...; b cquery --output=label_kind //bionic/...
Fixes: 188490434
Change-Id: I36e366108b024c09945d764a1115786658e03681
When metrics collection is enabled but
there's no gcert, print a warning and ask the user to run gcert so that
metrics collection can work.
Bug: b/184040091
Change-Id: Ib79c61e89a42dc7da9ef452b7101dac955859a7d
Test: m <tab><tab> before having done a full build.
Test: m <tab><tab> after having done a full build.
Change-Id: I35154151e6902d0337a26eab27d9d4fc797beed7
An old TARGET_PRODUCT value pointing to a removed product or an invalid
TARGET_BUILD_VARIANT value cause lunch to fail to read
COMMON_LUNCH_CHOICES, clear them before calling into the build with
get_build_var.
Test: TARGET_PRODUCT=foobar TARGET_BUILD_VARIANT=foobar lunch
Change-Id: I53d205784149ba7e32cc093f9d81d1a82c08bfc0
Necessary since the products used for APEX modules are different in
internal builds.
Test: banchan com.android.art
Test: banchan com.android.art arm
Test: banchan com.android.art art_module_arm
Test: banchan com.android.art module_arm
Test: banchan com.android.art x86_64
Test: banchan com.android.art art_module_x86_64
Bug: 179779520
Change-Id: Ib59a86b70e409537aaad7258465b6874b589b858
It currently uses TARGET_BUILD_APPS just like tapas, but the use case is
different and it may diverge more in the future.
Test: banchan com.android.art
Test: banchan help
Test: banchan
Test: hmm
Bug: 179779520
Change-Id: Iae718e65a2a7212c741c397e03c6f9a6d5ee8951
New ktgrep is added and sgrep/treegrep also scan *.kt files.
Test: kgrep/sgrep/treegrep for Kotlin files.
Signed-off-by: Taesu Lee <taesu82.lee@samsung.com>
Change-Id: Ie615aa86c4958310785392f18ee7bddaf64706a9
It will query module-info.json for modules inside a given directory.
Test: . build/envsetup.sh ; dirmods frameworks/base
Change-Id: Iad3dcb038315f49c156764e34fb5f52ec3ad29be
rgrep is a common alias for 'grep -r' and this new macro was confusing.
Test: cd external/rust/crates
rsgrep test
Change-Id: If71cdcc926455983a04a80982356e9feb61968fe
These are analogs to pathmod/gomod that find/install
the module's apk instead of cd'ing to its source
directory.
Bug: None
Change-Id: Iad750e154397f7cfcdd620f1ed6478b05c1225bb
Test: Manually, with bash and zsh
Some host tools (launch_cvd, etc.) have been using HOST_OUT.
As their dependencies are now installed by soong, the tools should refer
to SOONG_HOST_OUT. Export it as ANDROID_SOONG_HOST_OUT.
Bug: 172065015
Test: build aosp_cf_x86_phone, execute launch_cvd
Change-Id: Ie175049f15b89485feec0d33d82e756b12a7ad8a
Get a relative path to out by using $(get_build_var PRODUCT_OUT)
instead of hardcoding it to out/target/product/$TARGET_DEVICE.
That will correctly return the path to the out directory
when setting an external OUT_DIR_COMMON_BASE.
Change-Id: I8a990b710222bc72755c6b6b88fd0c9e80711e14
When sourcing the envsetup.sh script from a deep directory
inside of the repo, the vendorsetup.sh scripts are not being
sourced. This was causing the ANDROID_ENABLE_METRICS_UPLOAD
not to be set and developer's metrics were not being uploaded.
Provided the top directory to each directory path. Also cleaned
up the function to handle whitespacing correctly.
Bug: b/169699936
Test: *Ran source ../../build/envsetup.sh from external/libchrome dir
*Renamed repo dir to "aosp master" and source build/envsetup.sh
*Ran the script in zsh command line interpretor
*Ran the script in MacOS
Change-Id: I96eb73d50a1923cdda782792778b0d185a341cf9
oh-my-zsh common-aliases plugin defines `alias -g T='| tail'`, which causes an
error with the line `local T dir f`.
Making these lines more explicit resolves this issue, while also being clearer
that the intent is to clear out the local variables.
Bug: 169191000
Fix: 169191000
Test: source build/envsetup.sh; lunch <target>; m
Change-Id: Ief27aa3d9f541d0c39c6c11d7d771818d6493d31
This function:
- disables verity on the device
- reboots the device only if it is needed
- remounts partitions on the device
Bug: 167697453
Test: syswrite
Change-Id: I23c3e88daaa2b334233f4faf7fe8f8244cd56225
This is similar to the old `m showcommands`, but operates on specific
output paths instead and does not require a build aside from the
initial invocation of soong to generate the ninja files. The
`--regenerate` option is accepted that causes the ninja file to be
regenerated first, but this is not the default because it is slow.
Just note that without this flag results may be stale.
It unfortunately doesn't work for everything in out. For example,
`$OUT/system/lib/libc.so` won't work because it is a symlink that
isn't in the build graph, but `$OUT/system/lib/bootstrap/libc.so`
works.
Test: showcommands out/target/product/walleye/system/lib/libz.so
Bug: None
Change-Id: I4cfded3db994044870fc71ae4bcf9a69224b1e15
This reverts commit d92718356d.
Reason for revert: Adding the opening brace to the end of the function breaks lunch.
Change-Id: Ia3a9ff01964de0e616a534058d568150de32558a
This also affects pathmod here.
Since it's updating module-info.json, we could say that as well (this
should affect any tools which parse this file), but I haven't seen any
indication it's necessary in this context.
Bug: N/A
Test: N/A
Change-Id: Iecb6f454112b5c0095ee7063bc5442fdb1e3bd09
In some environments (e.g. with the master-art branch), the default
product (aosp_arm-eng) cannot be built, and thus prevents `lunch` from
printing the lunch menu (as it cannot initialize the build system in
order to fetch the common lunch choices). When this happens, show an
explicit error message from `lunch` instead of a Soong UI error.
Test: Check that this command line displays the expected error message:
unset TARGET_PRODUCT && . build/envsetup.sh && lunch
Bug: 152762648
Change-Id: I40c66bca5b075d88dbc8364b36b2db713e6ad93e
Make it explicit that we will build *and* install all the modules under
the directories. And that 'mm[m]' is now the same as 'mm[m][a]'.
Test: hmm
Change-Id: I86c42229f8cdc24922fb3014777ad13d72a1c0ea
zsh doesn't split variables (by default), but it will split command
output. bash will split both. Apparently a portable way to do this in
both is to just turn it into another command: "$(echo $var)".
Test: source build/envsetup.sh; lunch (see list; repeat in bash and zsh)
Change-Id: I9716a8d77aefdf05da8923deb9e37e0b6132b549
Arrays are zero indexed in bash and one indexed in zsh by default. This
leads to an off-by-one issue in the `godir` and `choosevariant` commands: when
prompted to chose an option, in order to pick option "n" you have to input
"n+1".
In those two specific instances, by using "substring expansion" instead of
array indexing, one can get consistent behaviour between bash and zsh
(equivalent to zero indexing).
Test: manual -
# godir
$ zsh
$ source build/envsetup.sh
$ godir SurfaceFlinger # There should be many options
# Pick 1, check that you end up in the right location
$ godir SurfaceFlinger.cpp # There should be only one possibility
# make sure you end up in the right location
# repeat with bash (to ensure compatibility is not broken)
# choosevariant
$ zsh
$ source build/envsetup.h
$ choosevariant # pick whatever variant you want
$ printconfig # make sure the variant matches your choice
# repeat with bash (to ensure compatibility is not broken)
Change-Id: I998d8fb48b708066b6db28a2129a2b09785fb0b1
Right now, leaks are disabled globally on host. This is problematic
because:
a). people write leaks in new code
b). if we fix leaks in old code, it doesn't get tested
c). fixing leaks in old code is harder because when we set
ASAN_OPTIONS="" locally, other targets start hitting errors,
and we have to set __asan_default_options there
Fixes: 141313466
Test: host ASAN build passes
Change-Id: I89298c7518c016e6a30884c75d7b791db16a5217
Get the lunch choices before starting to print the lunch menu prompt
so that it doesn't sit at `Lunch menu... pick a combo:` with no
choices for a few seconds.
Fixes: 138719635
Test: lunch
Change-Id: I2bb373ec037bff0ab1d7e4f5ff8a8bd3b57f3263
Currently when switching between internal to aosp, PYTHONPATH will be
contaminated. This CL is to ensure PYTHONPATH will be as clean as
opening a new terminal and source/lunch.
Bug: 121106770
Test: internal:
$ source build/envsetup.sh; lunch; echo $PYTHONPATH| sed 's/:/\n/g'
will see VENDOR_PYTHONPATH in PYTHONPATH.
switch to aosp:
$ source build/envsetup.sh; lunch; echo $PYTHONPATH| sed 's/:/\n/g'
won't see VENDOR_PYTHONPATH in PYTHONPATH.
Change-Id: Id1916673000ee3fad55e9611d0c47cc80de86645
Fix this error:
rprichard@cashew:/x/aosp/out/target/product/walleye/system/bin$ ls
bash: ./ls: cannot execute binary file: Exec format error
Bug: none
Test: lunch a target, "echo $PATH | grep ::"
Test: lunch an arm target, cd $OUT/system/bin, ls (
Change-Id: I2c0d5ece85964dffa14d6ac8df168dd4e733162e
This reverts commit 610b6302cf.
Reason for revert: m mlibc from root dir works. Create a tmp dir and then cd in to tmp. Run the same command and it fails.
Change-Id: I0f0c056d7e668da621ae99d347a055ecdf2dec07
The functionality of m* envsetup.sh commands has been implemented in
soong_ui. The bash functionality of m* commands can be replaced by
soong's modules-in* build commands.
Fixes: b/130049705
Test: * Loaded the envsetup.sh on a new environment
* Executed each m* command.
* Verified with "type <build command>" to make sure
the function generation is correct.
* Ran on Darwin environment.
Change-Id: I8792e4f1f1727aba2ca6ee4bdfe657f6ac42302a
Very few vendorsetup.sh files are needed anymore, since add_lunch_combo
has been deprecated. So add a way so that only approved vendorsetup.sh
files can be loaded into the shell, and others will be skipped.
This further limits the amount of code that can run outside the build
sandbox, and makes this list more visible to tree maintainers before
they're used instead of after.
Test: no allowed-vendorsetup_sh-files
Test: empty allowed-vendorsetup_sh-files
Test: one file in allowed-vendorsetup_sh-files
Test: two files in allowed-vendorsetup_sh-files
Test: non-present file in allowed-vendorsetup_sh-files
Change-Id: Ia23d1c9d11a7295d5be5abd10cf56edbdec80483
Remove atest/acloud/aidegen functions and append prebuilt path
in PATH. Use local built by default; if there is no local built,
use the prebuilt one instead.
Bug:
Test: $ source build/envsetup.sh; lunch
$ echo $PATH|sed 's/:/\n/g' | egrep "out|asuite"
# will see out/host prioritises prebuilts/asuite.
Change-Id: I1e5869bcb81cf7058cf8971f480a47d2c8f8b6f0
If ANDROID_QUIET_BUILD environment variable is set, do not print
build timing and colorized summary result.
Test: treehugger
Change-Id: I7ae3f8eb407df470837560706f06e5785911828c
Remove atest/acloud/aidegen functions and append prebuilt path
in PATH. Use local built by default; if there is no local built,
use the prebuilt one instead.
Bug:
Test: $ source build/envsetup.sh; lunch
$ echo $PATH|sed 's/:/\n/g' | egrep "out|asuite"
# will see out/host prioritises prebuilts/asuite.
Change-Id: I16c3e85c195b878d3c629149afbd96636ed1f0e1
When target directories are specified, mmm now scans their parent
direcotries to when searching for build config files. Also make it look
more like mm as minor refactoring.
Bug: 62899341
Test: Manual builds.
Change-Id: Ic9c081090e1baeb0849508e9086f2976b108c0ee
After running "lunch" multiple times, the global variable
PYTHONPATH grows larger and larger with repetively content.
This patch is to prevent PYTHONPATH from prepending redundant path.
Bug: b/121110600
Test: $ source build/envsetup.sh && lunch
$ echo $PYTHONPATH | sed 's/:/\n/g'
$ lunch; lunch
$ echo $PYTHONPATH | sed 's/:/\n/g' # not growing.
Change-Id: Ifc36d071fb63bb1494bb0a94fdff477a41708c74
A function name with dashes is apparently not universally recognized
by shell versions/variants(?). Using underscore in place of dashes
solves this problem.
Test: ./development/vndk/tools/header-checker/utils/create_reference_dumps.py -l libGLESv1_CM
Change-Id: Id7d701600760140dae9e4762a11f4abd64947d10
Usage:
...aosp/$ gomod libbase
...aosp/system/core/base$
Using in alias:
alias g=gomod
complete -F _complete-android-module-names g
...aosp/$ g libbase
...aosp/system/core/base$
Nothing in Android keeps an up to date index of all Android modules
and their locations between builds. However, there is a target
'module-info.json' which is used to contain some of that information.
This module can be updated using the command 'refreshmod' added
here, but it will also be updated during a normal Android build.
This also adds auto-complete for m.
Bug: N/A
Test: manual
Change-Id: I06b0b87c308b9fe2798dbc29225906cc30fe59fe
toybox xxd treats -ps as -p -s with a missing argument to -s, rather
than as a bizarre synonym for -p.
Test: manual
Change-Id: Ia576861588a4ddeac9885bce8d718929b74f31b1
There are plenty of .hpp files in the AOSP sources.
$ find . -name \*.hpp | wc -l
2430
They were already grepped in cgrep(), but were missing in
sgrep and treegrep.
Test: manual - run the script
Change-Id: I1fb3f576f6cdcc2b492e2beadf11ced98cb3938e
Atest will run in the sequence of built -> prebuilt -> source code.
Bug: b/118801769
Test: source build/envsetup.sh; lunch
and atest will run in the appearing sequence above.
Change-Id: I0494aeab99c390c31bb02641c6c1c11afd5642a2
I call "compinit -i" in my .zshrc, to allow loading autocompletion from
"unsafe" locations. envsetup.sh breaks that. Change behavior to only
call compinit if bash-style completion is not already enabled.
This is a minimal fix; an alternative would be to rely on the user
to call 'bashcompinit' in their .zshrc instead, and just skip all
autocomplete functionality if they don't.
Test: manual - source ./envsetup.sh in {bash, zsh, zsh -f} and test
completion for lunch
Change-Id: Ibb10eb68a96d69c19b9db9b21e0546fe8ae299b2
(zsh)$ source build/envsetup.sh; lunch 23
will result in selecting #22 because array in zsh starts from 1
instead of 0. This CL is to fix this issue.
Bug: b/117202855
Test: below commands should have the same output:
(zsh)$ source build/envsetup.sh; lunch 23
(zsh)$ source build/envsetup.sh; lunch aosp_walleye-userdebug
Change-Id: I0570585417878bc7c73eda0e1a416232fe147fb4
Now Atest can autocomplete module names, dir and filenames with
tab completion, and zsh users can benefit from it.
Bug: 110629292
Test: In both bash and zsh environments:
source build/envsetup.sh && lunch aosp_arm-eng
atest <tab><tab> # has candidates
adb <tab><tab> # has candidates
ENVSETUP_NO_COMPLETION=atest:adb . build/envsetup.sh && lunch aosp_arm-eng
atest <tab><tab> # no candidates
adb <tab><tab> # no candidates
Change-Id: Ib1c9e02feeb8aaf75c0b97821ae26e13ba8df350
Make it so that these can be used in other scripts by moving them from
functions defined in envsetup.sh to standalone scripts.
Test: stacks zygote64
Change-Id: Id8e5ce5b4da80e57f4226eb34edaf82b87393834
Fix stacks for the change in ANR trace location by using `debuggerd -j`
instead of manually fetching the traces file.
Also, dump zygote/zygote64 as native processes, since they don't
respond to SIGQUIT.
Test: stacks zygote
Test: stacks adbd
Test: stacks com.android.settings
Change-Id: I015458bdc2dd45624940204d42614365aacf8304
Many Android.bp files are now no longer needed (since they
are all scanned and subdirs are deprecated), so there are many
places in a tree where they aren't hit.
This still suffers from one bug, given this directory structure:
A/B/Android.bp
A/B/C/D/Android.bp
A/B/C/
A/B/C/E/Android.bp
if you call 'mma' from 'A/B/C', then it will make
MODULES-IN-A-B.
However, for now, this change makes it so given the following
directory structure:
A/B/C/D/Android.bp
A/B/C/
A/B/C/E/Android.bp
if you call 'mma' from 'A/B/C', then it will make
MODULES-IN-A-B-C as expected (since there are no makefiles in
parent directories). This is the expected behavior in this case
and it is common in directories where Android.bps have been
removed (since they only referenced subdirs) or outside of
git projects.
The reason why this usecase is supported is so that given this:
A/B/C/D/Android.bp
A/B/C/D/include/D/foo.h
You can, from A/B/C/D/include/D/ (for instance) do an mma, and
it will still make the modules defined in A/B/C/D/ which are
presumably related to this.
This change doesn't fix mm or other binaries. In the long term,
either we should just consider mma to make the current directory
(and not look for parent directories for the above 'feature') or
we should move more of the complexity in the build system itself
so that it can intelligently find the first parent directory
which contains a makefile in a subdirectory.
Fixes: 65407300
Test: mma from following dirs
system/tools/hidl/test/hash_test/bad/hash/1.0 MODULES-IN-system-tools-hidl-test-hash_test
system/tools/hidl/test/hash_test/ MODULES-IN-system-tools-hidl-test-hash_test
system/ MODULES-IN-system
hardware/ril/ MODULES-IN-hardware-ril
Change-Id: I072d3f382d40cd360ec3d14f8f5b060a4bde9289
Now most of the other noise is gone, we should probably quiet down too.
Bug: N/A
Test: `source build/envsetup.sh`
Change-Id: Ic5b169b1771163488e70d732276372efbf304bae