diff options
author | Matthias Maennich <maennich@google.com> | 2019-03-26 11:46:24 +0000 |
---|---|---|
committer | Matthias Maennich <maennich@google.com> | 2019-04-02 08:45:35 +0100 |
commit | f7d7e4dca29372c591e89e49451a7b0251f85351 (patch) | |
tree | 93309d79b0867fa9a16c00033da6ef16ea07243c /abi | |
parent | ccb70faeeeca149a3265635043408efc40664ea7 (diff) |
ABI Monitoring: add bootstrap
Add the `bootstrap` script that is installing all the prerequisites that
are necessary to run the ABI utilities. In particular, the script takes
care of installing GitPython and all required dependencies for building
libabigail. It finally builds the abigail tools from source and
provides instructions to make them available in PATH.
Bug: 111449103
Co-authored-by: Jayant Chowdhary <jchowdhary@google.com>
Signed-off-by: Matthias Maennich <maennich@google.com>
Change-Id: Id44efe6874f7b51bc64abca9ac3d879612180f85
Diffstat (limited to 'abi')
-rw-r--r-- | abi/.gitignore | 1 | ||||
-rw-r--r-- | abi/README.md | 20 | ||||
-rwxr-xr-x | abi/bootstrap | 62 |
3 files changed, 83 insertions, 0 deletions
diff --git a/abi/.gitignore b/abi/.gitignore new file mode 100644 index 0000000..3438f57 --- /dev/null +++ b/abi/.gitignore @@ -0,0 +1 @@ +abigail-* diff --git a/abi/README.md b/abi/README.md new file mode 100644 index 0000000..4b8544a --- /dev/null +++ b/abi/README.md @@ -0,0 +1,20 @@ +ABI Monitoring Utilities +======================== + +This directory contains scripts and utilities to compare, track and mitigate +changes to the kernel ABI. The comparison framework used is +[libabigail](https://sourceware.org/libabigail/), but this might change in the +future. Follow the instructions below to set up the current prerequisites. + +Set up the prerequisites +------------------------ +The script `bootstrap` will install the system prerequisites + - libxml2-dev + - elfutils + +It will then acquire the libabigail sources and build the required binaries. +At the very end the script will print instructions how to add the binaries to +the local `${PATH}` to be used by the remaining utilities. + +You can skip this step if your host system provides a suitable version of the +libabigail tooling including the binaries `abidw` and `abidiff`. diff --git a/abi/bootstrap b/abi/bootstrap new file mode 100755 index 0000000..30ea3e3 --- /dev/null +++ b/abi/bootstrap @@ -0,0 +1,62 @@ +#!/bin/bash -e + +# 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. + +ABIGAIL_VERSION=1.5 + +NUM_CORES=$(cat /proc/cpuinfo | grep -c proc) +BASE_DIR=$(readlink -f $(dirname $0)) +OUT_DIR="${BASE_DIR}/abigail-inst/${ABIGAIL_VERSION}" +LIBABIGAIL_SRC="${BASE_DIR}/abigail-src" + +# Check output dir. +if [ -e "${OUT_DIR}" ]; then + echo "WARN: ${OUT_DIR} exists. Press enter to continue or Ctrl-C to abort." + read +fi + +set -x + +# Install the dependencies. +sudo apt-get install libxml2-dev elfutils libdw-dev + +if [ ! -d "${LIBABIGAIL_SRC}" ]; then + git clone git://sourceware.org/git/libabigail.git "${LIBABIGAIL_SRC}" +else + git -C ${LIBABIGAIL_SRC} fetch +fi + +git -C ${LIBABIGAIL_SRC} checkout libabigail-${ABIGAIL_VERSION} + +# Build libabigail +pushd "${LIBABIGAIL_SRC}" + #git clean -dfx + autoreconf -i --force + mkdir -p build/ + pushd build/ + ../configure --prefix="${OUT_DIR}" --enable-cxx11=yes --disable-shared +# make -j${NUM_CORES} + make -j${NUM_CORES} install-exec + popd +popd + +set +x + +echo +echo "Note: Export following environment before running the executables:" +echo +echo "export PATH=\"${OUT_DIR}/bin:\${PATH}\"" +echo +echo |