summaryrefslogtreecommitdiff
path: root/abi
diff options
context:
space:
mode:
authorMatthias Maennich <maennich@google.com>2019-03-26 11:46:24 +0000
committerMatthias Maennich <maennich@google.com>2019-04-02 08:45:35 +0100
commitf7d7e4dca29372c591e89e49451a7b0251f85351 (patch)
tree93309d79b0867fa9a16c00033da6ef16ea07243c /abi
parentccb70faeeeca149a3265635043408efc40664ea7 (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/.gitignore1
-rw-r--r--abi/README.md20
-rwxr-xr-xabi/bootstrap62
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