tree: f7862fd028f7cf329ac6adb19d2a959f4af55c1d [path history] [tgz]
  1. aarch64-linux-gnu/
  2. bin/
  3. cargo_home/
  4. meson-0.53.2/
  5. rustup_home/
  6. wayland-include/
  7. wayland-protocols/
  8. x86_64-linux-gnu/
  9. crosvm-build.sh
  10. policy_inliner.sh
  11. README.md
cf-host-package/README.md

Continuous crosvm build in aosp

This directory holds a set of scripts for compiling crosvm continuously in go/ab, to be retired when crosvm is integrated in android build.

To get started locally:

First, install packages that are expected to be available for Python build scripts and ARM64 cross builds:

pip install absl-py
pip install urlfetch
sudo -n apt-install -y pkg-config
sudo -n apt-install -y crossbuild-essential-arm64
sudo -n ln -s /usr/share/pkg-config-crosswrapper /usr/bin/aarch64-linux-gnu/pkg-config

mkdir aosp
cd aosp
repo init -u https://android.googlesource.com/platform/manifest -b emu-master-dev --depth=1
repo sync

(TODO: Remove when merged) Pick https://android-review.googlesource.com/q/topic:%22gfxstream-crosvm-build%22+(status:open%20OR%20status:merged)

cd emu/external/qemu
python android/build/python/cmake.py --crosvm

Then the resulting crosvm host package for Cuttlefish is in ./objs/distribution/cf-host-package, containing both x86_64 and `aarch64 builds:

# Host package for aarch64
objs/distribution/cf-host-package/aarch64-linux-gnu
# Host package for x86_64
objs/distribution/cf-host-package/x86_64-linux-gnu

and can be dropped in an existing Cuttlefish build environment by copying contents of objs/distribution/cf-host-package/x86_64-linux-gnu to out/host/linux-x86/bin/x86_64-linux-gnu, then it's picked up by launch_cvd

How to pick from build server and generate new device/google/cuttlefish_vmm

Grab go/ab/emu-master-dev target gfxstream_sdk_tools_linux, then unzip contents of sdk-repo-linux-crosvm-host-package-(x86_64|aarch64)-<buildId>.zip into binaries directory corresponding to the architecture

Known issues

Build currently assumes system glibc 2.29, via log2 function from libvirglrenderer.so.1. Since I don't know the config of the machines on which the aarch64 build run, we may need to downgrade the glibc associated with the aarch64 build (This is in contrast to the x86_64 build which has been tested in presubmit via the full presubmit from AOSP).