diff options
author | Matthias Maennich <maennich@google.com> | 2019-04-02 03:02:50 -0700 |
---|---|---|
committer | android-build-merger <android-build-merger@google.com> | 2019-04-02 03:02:50 -0700 |
commit | 4cd41f0a3ff28623ea9384b0f985c36dffc3a0f9 (patch) | |
tree | 6a8272e3705cdcf7392328ebe387218eb91cd548 | |
parent | 3d5669113b1a06abbe386def5652b3efa50223e1 (diff) | |
parent | ea2f60b2bc2b568aede5970644b2088df2cb98bf (diff) |
add build_abi.sh to create ABI dumps from build.sh builds
am: ea2f60b2bc
Change-Id: I904482063eb1247321e27f19512b3c9f647a8be8
-rw-r--r-- | abi/README.md | 8 | ||||
-rwxr-xr-x | build_abi.sh | 60 |
2 files changed, 68 insertions, 0 deletions
diff --git a/abi/README.md b/abi/README.md index 23541b7..55cefcb 100644 --- a/abi/README.md +++ b/abi/README.md @@ -28,6 +28,14 @@ there is only one option: 'libabigail' (default). A sample invocation looks as follows: $ dump_abi --linux-tree path/to/out --out-file /path/to/abidump.out +To ensure a consistent environment and stable toolchain, a wrapper script is +provided at the topmost directory of this project: `build_abi.sh`. It builds +the kernel using `build.sh` and therefore accepts the same environment +variables to customize the build, such as BUILD_CONFIG, CC and the various +SKIP_* variables to speed up incremental builds. Following a successful build, +`build_abi.sh` will create an ABI dump in the DIST_DIR of the build. A sample +invocation from the top of the repo tree looks as follows: + $ BUILD_CONFIG=path/to/build.config build/build_abi.sh Comparing ABI dumps ------------------- diff --git a/build_abi.sh b/build_abi.sh new file mode 100755 index 0000000..12d125e --- /dev/null +++ b/build_abi.sh @@ -0,0 +1,60 @@ +#!/bin/bash + +# Copyright (C) 2019 The Android Open Source Project +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. + +# Usage: +# build/build_abi.sh +# +# The following environment variables are considered during execution: +# +# ABI_OUT_TAG +# Customize the output file name for the abi dump. If undefined, the tag is +# derived from `git describe`. + +export ROOT_DIR=$(readlink -f $(dirname $0)/..) + +set -e +set -a + +source "${ROOT_DIR}/build/envsetup.sh" + +# inject CONFIG_DEBUG_INFO=y +export POST_DEFCONFIG_CMDS="${POST_DEFCONFIG_CMDS} : && update_config_for_abi_dump" +function update_config_for_abi_dump() { + ${KERNEL_DIR}/scripts/config --file ${OUT_DIR}/.config \ + -e CONFIG_DEBUG_INFO + (cd ${OUT_DIR} && \ + make O=${OUT_DIR} $archsubarch CROSS_COMPILE=${CROSS_COMPILE} olddefconfig) +} + +# delegate the actual build to build.sh +${ROOT_DIR}/build/build.sh $* + +echo "========================================================" +echo " Creating ABI dump" + +# create abi dump +COMMON_OUT_DIR=$(readlink -m ${OUT_DIR:-${ROOT_DIR}/out/${BRANCH}}) +id=${ABI_OUT_TAG:-$(git -C $KERNEL_DIR describe --dirty --always)} +abi_out_file=abi-${id}.out +${ROOT_DIR}/build/abi/dump_abi \ + --linux-tree $OUT_DIR \ + --out-file ${DIST_DIR}/${abi_out_file} + +ln -sf ${abi_out_file} ${DIST_DIR}/abi.out + +echo "========================================================" +echo " ABI dump has been created at ${DIST_DIR}/${abi_out_file}" + |