Skip to content

Docker container for LCE builds

It is usually not needed to build LCE in a Docker container, and we recommend first following this guide (benchmark binaries) or this guide (converter) to try and build LCE outside of a Docker container.

There are scenarios in which building in the Docker container is preferred: - To build a manylinux2010-compatible pip package - To build a benchmark binary for Android - When the build outside of the container fails and can't be fixed.

We recommend to use Docker volumes to migrate the build targets in-between the host machine and the container.

To be able to build the LCE converter's manylinux2010 compatible PIP package, we need to use the tensorflow:custom-op-ubuntu16 image.

First, download the Docker image:

docker pull tensorflow/tensorflow:custom-op-ubuntu16

Clone the LCE repository on the host machine:

mkdir lce-volume
git clone https://github.com/larq/compute-engine.git lce-volume

Start the container and map the lce-volume directory to the /tmp/lce-volume directory inside the container:

docker run -it -v $PWD/lce-volume:/tmp/lce-volume \
    -w /tmp/lce-volume tensorflow/tensorflow:custom-op-ubuntu16 /bin/bash

Now, you will be able to build bazel targets inside the container, by following the normal build instructions. Some build artifacts are stored in the bazel-bin folder which is not visible from from outside the Docker container. Simply copy a file from bazel-bin into the main folder /tmp/lce-volume to be able to access it.

Building a manylinux2010 pip package

To make the larq-compute-engine pip package manylinux2010 compatible, some extra setup steps need to be taken, which have been collected in this script.

We recommend running this as follows, from inside the Docker container. Please change the Python version to the desired version:

cd /tmp/lce-volume
export PYTHON_VERSION="3.8"
.github/tools/release_linux.sh

The .whl file will then be available in the artifacts folder, and it can be installed on the host system.