Previously we use command line variable BUILD_MODULES_IN_PATHS which
causes kati to regenerate build.ninja if any variable value changes.
TODO: Remove the old rules of BUILD_MODULES_IN_PATHS in
build/core/main.mk and ninja.mk once users have re-sourced envsetup.sh.
Probably in a few weeks.
Caveat: With this change, if a user sources the new envsetup.sh, mma/mmma
won't work in old branches from the same shell.
Bug: 24309760
Change-Id: I212e82aeebaaa2bd4114e2066f1995da8886b5e2
Nothing else was being imported from system/core yet, and a path under
development makes more sense for this.
Bug: http://b/22881740
Change-Id: Ib0beb02137805b3e382535514a2bc067b7fd1d33
We used to rely on envsetup.sh to set up PATH before doing kernel build.
Now we have new kernel build process.
Also the variable doesn't work any more as we don't have corresponding arm-eabi
toolchain for the latest arm-linux-androideabi toolchain.
Change-Id: I99443fdc58e94f57f4f1f7e88da6dd127f3b2fac
There's an adb Python interface now, and system/core needs to be in
the PYTHONPATH for `import adb` to find it.
Change-Id: I712767a2ba96cb017ce5857dc367e4cacf2ec51f
For historical reason, the aosp_* products were named full_*.
We keep the full, full_x86 and full_mips in case some tools still
reference these legacy names; But no reason the have the full_* product
names for the new 64-bit archs.
Change-Id: I240ed0c6ded0ded2d80603bd0c5ff24750999afc
Blocking these sequences on Darwin has false positives (Terminal.app)
and false negatives (Eclipse CDT on Linux). Instead let's ask the
terminal what it supports.
Change-Id: I907942925a8b30abc1ea920f077b5fc3af815ba4
Signed-off-by: Greg Hackmann <ghackmann@google.com>
gdbclient looks for 'x86_64-linux-androideabi-gdb' whereas the prebuilts
have gdb as 'x86_64-linux-android-gdb'
$ cd $ANDROID_BUILD_TOP
$ find prebuilts -iname *x86*gdb
prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.9/bin/x86_64-linux-android-gdb
prebuilts/gcc/linux-x86/x86/x86_64-linux-android-4.8/bin/x86_64-linux-android-gdb
prebuilts/gcc/darwin-x86/x86/x86_64-linux-android-4.9/bin/x86_64-linux-android-gdb
prebuilts/gcc/darwin-x86/x86/x86_64-linux-android-4.8/bin/x86_64-linux-android-gdb
Change-Id: Ib940ecd6f345ea501da79834168b91cc0f6e5a96
We had discussed the idea of making all host tools default to using
ASAN. Even if we don't make it the default, this makes it easy for the
user to switch all host binaries over.
Change-Id: I64a5c741b1b4e9aefed3a6be8dcd4f386e06b29c
1. Some devices do not set ro.product.device in which
case take it from ro.hardware
2. Add path to tapas symbols to sysroot and solib-search-path
for tapas users only
Change-Id: I4eed2d3c3aefd95070beebdbfba4464a524c3066
Proper selinux labeling support for files on rootfs was
never completely implemented. Instead of putting coredump
files on rootfs, put them on tmpfs instead.
See: http://www.mail-archive.com/seandroid-list@tycho.nsa.gov/msg01815.html
Bug: 18227650
Change-Id: I2eeabee4fe1a14bfbf990a4a518d538d6b4b6e87
Differences between this implementation and the old one:
1. Resolves symbols/gdb based on device information (lunch
target is irrelevant)
2. Works with downloaded from build-server symbols
3. Does not require user to specify exe file - detects it automatically
Bug: 18208329
(cherry picked from commit 9b8e4b3772)
Change-Id: I13ae2debb6e2d827b9aa55e93864b5d60c2bd32e
Differences between this implementation and the old one:
1. Resolves symbols/gdb based on device information (lunch
target is irrelevant)
2. Works with downloaded from build-server symbols
3. Does not require user to specify exe file - detects it automatically
Change-Id: I4e7ce0a51868634593a9f104fe3f2fa67b54ca9f
The shell functions in this patch enable crashing processes with the core limit
set correctly to dump core in directory /cores. They do so by remounting the
root partition, which is RAM-backed, and by creating the 0777-chmodded /cores
under it. They also set the core file pattern in /proc/sys/kernel/core_pattern
to be /cores/core.%p, such that a core dump will have the crashing process' PID
appended to it. You enable core-dump generation once per boot, as follows:
coredump-setup
If a process does not have its core-size rlimit set (as most do not), you can
either set it manually by typing "adb shell prlimit <pid> 4 -1 -1", or by
typing coredump-enable <name>, e.g.
coredump-enable $(pid mediaserver)
Alternatively, you can cause a running process to dump core by sending it a
SIGSEGV via the shell function core <name>, e.g.:
core $(pid mediaserver)
Change-Id: Ib174e7ee95515fb9866fa6bf0d5b5bf23f3ec61b
Signed-off-by: Iliyan Malchev <malchev@google.com>
It allows overriding the density the app
is built for. Currently only used in the
GMS core APK's gradle file.
Change-Id: I3606df313a3110208cd8e6acade5f558261c921f
(cherry picked from commit 7e3d2341570681e566872216796dc4f79c8695ef)
If you are debugging a native process, SIGSEGV gets ignored by default.
Make it so that the special ART gdb macro is only called when debugging
app_processXX.
Bug: 17815162
Change-Id: Idba86860dfd94e7483f2668beeb76b3e6032fb34
This fixes mmma broken due to quotes stripped in the argument passing.
(cherry picked from commit dcc8b3729d)
Change-Id: Ic8c4bb8e7cb347c1f80b5bc1648f63e58a010e8d
Due to a bad previous merge, everytime 'lunch' is called, a new
instance of prebuilts/android-emulator/<system>/ will be added
to your PATH.
This patch fixes the issue by removing the duplicate code that
should have been removed during the merge. Note that android-emulator
is still being added once to the PATH by code that appears before
in the script.
BUG=17524154
Change-Id: Iaa03159b0c81b15ef4c7c420e2f76e0a48aba789
I've been told this is no longer in use, and it's the only user of
external/grub, which is distressingly out of date.
Change-Id: I434a55e0d68f6db97fa71e294e983ff1802e9ba6
(cherry picked from commit de21059acf)
I've been told this is no longer in use, and it's the only user of
external/grub, which is distressingly out of date.
Change-Id: I434a55e0d68f6db97fa71e294e983ff1802e9ba6
Use 4.9 mips64el toolchain for both 64- and 32-bit builds.
Tell ld when 32-bit links are required.
Override 4.9's changed defaults for mips floating point
register use, to get same assembler rules as 4.8 and earlier.
Also: drop unused soft-fp build targets, cleanout redundant
compiler options, and remove extraneous Android.mk file.
(cherry picked from commit 6670e24aed)
Change-Id: I34d2f8fc6113c9d1670e3acff1aff48634b9fe1b
Use 4.9 mips64el toolchain for both 64- and 32-bit builds.
Tell ld when 32-bit links are required.
Override 4.9's changed defaults for mips floating point
register use, to get same assembler rules as 4.8 and earlier.
Also: drop unused soft-fp build targets, cleanout redundant
compiler options, and remove extraneous Android.mk file.
Change-Id: I86f1075266349edb2b08a7709b9f5472d8cfda32
Use /data/local/tmp for runhat reports, instead of the sdcard.
system_server isn't allowed to handle sdcard file descriptors, since
the sdcard could be ejected at any time, causing the kernel to kill the
system process.
This addresses the following SELinux denial:
W/main ( 9906): type=1400 audit(0.0:16): avc: denied { read write } for path="/mnt/shell/emulated/0/hprof-600" dev="fuse" ino=3077890536 scontext=u:r:system_server:s0 tcontext=u:object_r:fuse:s0 tclass=file
Bug: 16375996
Change-Id: I4c2053c327526c2f8e6812f4ed911a712ae9a9b8
Read out the ELF header to see if the executable is 64-bit or 32-bit,
then call the appropriate debuggerd. In bash. Ugh.
Change-Id: I6550fe92e775659cd0370bcb70f40dd59238ad8f
Now gdbclient accepts a fully qualified pathname for EXEs, which it will
not modify, or a relative pathname, to which it will prefix
"/system/bin". As an example, each of the following now works.
Fully qualified:
adb shell gdbserver :5039 /system/bin/ping
bg
gdbclient /system/bin/ping :5039 /system/bin/ping
Relative:
adb shell gdbserver :5039 /system/bin/ping
bg
gdbclient ping :5039 /system/bin/ping
Change-Id: I1e4c9fca64c4fbc52c255271cc7f83f35c258509
Now a program run through gdbclient will not automatically have
/system/bin added to its path, so programs not in /system/bin will no
longer need to be prefixed with ../../.
The following now works as an example:
adb shell gdbserver :5039 /system/xbin/crasher
bg
gdbclient /system/xbin/crasher :5039 /system/xbin/crasher
And the following now no longer works:
adb shell gdbserver :5039 /system/xbin/crasher
bg
gdbclient ../../system/xbin/crasher :5039 /system/xbin/crasher
Change-Id: I299b66d03915aeb1dc300e43a81c9a51f0bd7dec
CALLED_FROM_SETUP and BUILD_SYSTEM set in get_build_var before make execution
no need to set them before calling get_build_var function
Change-Id: Ia79e11e5e3aa5c7fd337b989c16d50750b6c1442
Signed-off-by: Andrey Belous <belous.andrey@gmail.com>
* commit '423242b59ea01dffbb7f79c7c045528f7c351c4b':
set a prebuilt directory name for the 2nd arch
add vendor directories to gdb shared library search path
add 2nd arch gcc to the path
fix paths when 2nd arch gcc is a different version
* commit '828b518377f69516ea6cbb9ad160d81ced6980d5':
set a prebuilt directory name for the 2nd arch
add vendor directories to gdb shared library search path
add 2nd arch gcc to the path
fix paths when 2nd arch gcc is a different version
arm64 is using gcc 4.9, arm is using gcc 4.8. Fix setpaths() to
get a separate version for the 2nd arch.
Change-Id: I7bde01308fc7718360e7d0fbd46b3ae8c5f55fa7
This patch changes the setpaths() function in envsetup.sh to probe
for prebuilts/android-emulator/<host>/, and prepend it to PATH if
it exists.
See https://android-review.googlesource.com/#/c/93399/
for a related patch that adds the binaries.
BUG=13747402
Change-Id: I30794ea52f6dfc58908e6271f2c0da8e2f0b68e8
This patch changes the setpaths() function in envsetup.sh to probe
for prebuilts/android-emulator/<host>/, and prepend it to PATH if
it exists.
See https://googleplex-android-review.googlesource.com/#/c/459741/
for a related patch that adds the binaries.
BUG=13747402
Change-Id: I30794ea52f6dfc58908e6271f2c0da8e2f0b68e8
Specifying the major version rather than hard coding
to a minor version.
(cherry-picked from commit 13b2e19ef2)
Change-Id: Ie2c08d35fcff2129b26c1dfa8a2e5cd7b19c4b49
On architectures other than "arm", the combination of
ANDROID_KERNEL_TOOLCHAIN_PATH being empty, and CODE_REVIEWS being empty,
leads to adding a :: into the user's PATH, which is highly undesirable.
Neither CODE_REVIEWS nor the mips toolchaindir is ever used, so just
remove them, and make sure we only include the extra colon when setting
the kernel toolchain path to a non-empty value.
Change-Id: I2dfa7d3a322b56b6abbc47476082dc6ae4dd6a82
tapas with multiple app names currently works in bash but discards all
but the first app in others (specifically, zsh). Use shell
constructions that are more universal.
Change-Id: I2f836ddf75b89019ac04ef99647d782ffe79cfee
Correct the solib-search-path for 64-bit to look in /system/lib64
for all libraries including those in subdirectories.
Change-Id: I606a0eae1137a857564facc79306ad83097d9659
All introduce a flag LEGACY_USE_JAVA6 to force java6 builds.
This is an unsupported configuration, and provided temporarily
to iron out regressions and compare build output (if required.).
- Increment the version check sequence number.
- Move a more specific check (OpenJDK vs non OpenJDK) after
the more general version check.
- Update the link in the version check error message to the
"initializing" page instead of the "download" page. The latter
talks about repo, mainly.
bug: 8992787
Change-Id: I313e17b1911768d4f3bc318c4162c53dec6eaf0d
Conflicts:
core/main.mk
Analyzer needed by WITH_STATIC_ANALYZER and WITH_SYNTAX_CHECK is
moved from prebuilts/clang/{linux-x86,darwin-x86}/host/3.3 to
prebuilts/misc/{linux-x86,darwin-x86}/analyzer
See https://android-review.googlesource.com/#/c/83852/
BUG=13243591
Usage:
"WITH_SYNTAX_CHECK=1 make ..." instructs build system to invoke "clang -fsyntax-only"
to utilize clang's better diagnostics before calling LOCAL_CC/LOCAL_CXX for code generation.
The compilation time is slightly longer, and the generated object file should be the same as
w/o WITH_SYNTAX_CHECK
"WITH_STATIC_ANALYZER=1 m/mm/mmm/mma/mmma ..." instructs build system to run static
analyzer via "clang --analyze" on a successful build. If analyzer finds any issue, instruction
to open report is displayed. See http://clang-analyzer.llvm.org/scan-build.html for details.
WITH_STATIC_ANALYZER trumps WITH_SYNTAX_CHECK if both exist. Project use lots of GCC extensions
(eg. nested function) not supported by clang may opt out by adding LOCAL_NO_STATIC_ANALYZER:=true
Change-Id: Ib3dda3ffb0fd3aaf2eadec867a966d1dd2868fb1
It can detect and support 3 different scenarios:
- 32-bit exe / 32-bit OS
- 64-bit exe / 64-bit OS
- 32-bit exe / 64-bit OS
Change-Id: I799a91277a5e2331aebf4b2f031e9a79f7ab5bb0
68895a96 has introduced the possibility to limit the modules being
built by mmm. In many occasions this can save a lot of developement
time since it allows to build one target without processing all the
makefiles in the Android tree. Unfortunatelly this nice feature is
undocumented. This CL adds the one line documentation.
Change-Id: I6ded32c4774047599e9c44e5ea71c07e65731cda
Note that despite the location of this change, this function
is run only during "lunch" and not during ". build/envsetup.sh"
Also, make it easier to switch back and forth between java6 and 7
on the same session.
bug: 8992787
Change-Id: I56ec0ba8552b46c04204a8b96b9abc0180f7605f
dumpvar doesn't work right if we're not called from the toplevel;
due to the way the build system works internally, -C does not
suffice. This was already done in get_abs_build_var.
Redundant -C calls removed since we're at the toplevel already.
Change-Id: Iaaa48982547d099186922cc3ddc417a82c85e9a5
Signed-off-by: Andrew Boie <andrew.p.boie@intel.com>
Add x86_64 Android builds. Compiler is expected to be able to understand
-m64 code generation option.
Change-Id: I99e7337c5a5766afc5e528a481bd21631ff44dd5
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
The new option WITH_STATIC_ANALYZER=1 instructs build system to
run static analyzer via "clang --analyze" on a successful build.
If analyzer finds any issue, instruction to open report is displayed.
See http://clang-analyzer.llvm.org/scan-build.html for details.
WITH_STATIC_ANALYZER trumps WITH_SYNTAX_CHECK if both exist.
Project use lots of GCC extensions (eg. nested function) not supported
by clang may opt out by adding LOCAL_NO_STATIC_ANALYZER:=true
Change-Id: I9970560560bd52ce5f0fd7129c3488629627c735
Switch from gcc-4.7 32-bit only to gcc-4.7 multilib (32/x32/64) compiler.
Tested x86 image build on Linux and Darwin.
This bionic patch is required:
https://android-review.googlesource.com/#/c/64183
Change-Id: Ifc2c6c5d6a4a1b71a00a87af072bb7f67b1c284d
Signed-off-by: Pavel Chupin <pavel.v.chupin@intel.com>
It can be used as a goal of mm/mmm.
It prints out modules' install paths, which can be used by the runtest
utility.
Change-Id: If113e4c990b672acbacf723104583c0157d43c3b
o Add -Wno-unused-parameter -Wno-unused-but-set-parameter to suppress
new warnings.
o Define GCC_COLORS to enable colorful diagnostic messages.
Change-Id: Icbd62300b0e6f39d4e514edec2431a06b4d72421
(cherry picked from internal commit ccd8e6082b)
The new --exact flag for pid does an exact match on the
process name, rather than grepping anywhere in the ps
output, which helps target a specific process if its name is
a substring of another process name. (Nothing else about
pid's output, including inclusion of the ps header if it
matches, is affected.)
qpid ("quick pid" or "quiet pid") lists all processes in the
following simplified format:
<pid> <procname>
It also helpfully strips off the header line from ps.
With an argument, qpid will search for processes or pids
matching the argument. With --exact it matches process names
exactly (as does pid, above).
Change-Id: I28a201df40281a66cb1a2918b7ee3a0b2d7b6ffd
AndroidProducts.mk allows for a maxdepth of 4 in device and vendor while
vendorsetup.sh and BoardConfig.mk only allow for smaller depth.
Make search depth consistent for these files.
Change-Id: I406770c1423d4f27fe097956a7c705a0da937e35
Signed-off-by: Beare, Bruce J <bruce.j.beare@intel.com>
Signed-off-by: Laurent Fert <laurent.fert@intel.com>
Signed-off-by: Guilhem Imberton <guilhem.imberton@intel.com>
Author: Laurent Fert <laurent.fert@intel.com>
Summary: We must use the -P flag for pwd to properly get $PWD from the environment *with* symlinks. Otherwise symlink
detection is broken and anything we do using $(gettop) at the top of a symlinked path won't work properly. I noticed this
issue while running on a system that has a SSD RAID symlinked to my android build home directory, which is ~/ssd_storage.
The top in this instance is a symlink, which means that gettop() returns my home path, or the path above the symlink
directory (but not the symlinked directory). This is a major issue in case developers choose to use $(gettop),
$ANDROID_BUILD_TOP, or $T (doesn't really matter either way).
Test Plan: Create a symlink and sync android source into the path. Open up the symlink, run envsetup.sh, and check
$(gettop) output.
While this isn't the best solution, it fixes an issue without creating new issues.
Change-Id: I65bc345753805e6161098d2af6e0bee0b07d37b1
One of the adb commands in runhat was not using the adbOptions and would
fail if specifying a single serial device with multiple connected devices.
Change-Id: I804a6fccc51090cdc78dc2af76bbc0a24d843e3d
pez is a new bash function that can be prepended to existing functions
or commands to clearly show a colored exit status.
Example:
$ pez mmm frameworks/base/etc
will print all the usual output, and at the end either a green "SUCCESS"
line or a red "FAILURE" line.
Change-Id: I7e369b0280d6ece16fb0be1895278c26922491fe
Use gdbwrapper() for launching gdb. This can be redefined to launch
one of the many gdb wrappers instead.
Example:
function gdbwrapper()
{
ddd --debugger $ANDROID_TOOLCHAIN/$GDB -x "$@"
}
Change-Id: I3cce8a2ca1bae6d531e2388a93cb52075b21a42c
Saves any existing traces, dumps stacks from the target process,
then restores the original traces.
(cherry picked from commit f582437162)
Change-Id: I2513f0de0d90cccd56c4949ca7d218e430439c00
Saves any existing traces, dumps stacks from the target process,
then restores the original traces.
Change-Id: I2513f0de0d90cccd56c4949ca7d218e430439c00
augmented mm/mmm:
Their usages are the same as mm/mmm.
They build not only all modules in given path(s), but also their
dependencies.
With them, to run mm/mmm you don't need to run a full build first now:
Just run mma/mmma first.
Note that mma/mmma need to load all the makefiles in the source tree
so they are much slower than mm/mmm.
You should run mma/mmma the first time, and then mm/mmm for
incremental build.
Bug: 8163814
Change-Id: I554a97c0a23343b65c50870406225eb0064e0651