blob: 3d387a2a236974c7dd621db980c111329308964a [file] [log] [blame] [view]
# Python packaging scripts.
Note that packages will be placed in `packaging/python/dist` with the canonical
instructions. However, the setup scripts can be run from anywhere and will
create `build` and `dist` directories where run. Wheels can be installed with
`pip3 install --user dist/*.whl`.
## Building core wheels with CMake
Most of IREE is built/packaged with CMake. For the parts that build with CMake,
this is preferred.
Canonical instructions follow:
### Linux
```shell
export LDFLAGS=-fuse-ld=/usr/bin/ld.lld
export PYIREE_CMAKE_BUILD_ROOT="${HOME?}/build-iree-release"
export IREE_SRC="${HOME?}/src/iree"
rm -Rf "${PYIREE_CMAKE_BUILD_ROOT?}"; mkdir -p "${PYIREE_CMAKE_BUILD_ROOT?}"
cmake -GNinja -B"${PYIREE_CMAKE_BUILD_ROOT?}" -H"${IREE_SRC}" \
-DCMAKE_BUILD_TYPE=Release \
-DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ \
-DIREE_BUILD_PYTHON_BINDINGS=ON -DIREE_BUILD_SAMPLES=OFF
(cd "${PYIREE_CMAKE_BUILD_ROOT?}" && ninja)
(cd "${IREE_SRC?}/packaging/python" && (
rm -Rf build;
python3 setup_compiler.py bdist_wheel;
rm -Rf build;
python3 setup_rt.py bdist_wheel))
```
## Building IREE/TensorFlow wheels
If building TensorFlow integration wheels, then this must be done via Bazel. In
this case, it can be easiest to just package everything from a Bazel build to
avoid multiple steps.
Canonical instructions follow:
### Env Setup
```shell
IREE_SRC=$HOME/src/iree
export PYIREE_BAZEL_BUILD_ROOT="$IREE_SRC/bazel-bin"
if which cygpath; then
export PYIREE_BAZEL_BUILD_ROOT="$(cygpath -w "$PYIREE_BAZEL_BUILD_ROOT")"
fi
```
### Building:
Optionally add: `--define=PYIREE_TF_DISABLE_KERNELS=1` to build a 'thin' (less
functional) version without TensorFlow kernels. This should not be done for
released binaries but can help while developing.
Note that bazel does not always build properly named artifacts. See the tool
`hack_python_package_from_runfiles.py` to extract and fixup artifacts from a
bazel-bin directory. If using this mechanism, then the environment variable
`PYIREE_PYTHON_ROOT` should be set to a suitable temp directory.
```shell
cd $IREE_SRC
bazel build -c opt \
//packaging/python:all_pyiree_packages
```
# Packaging
```shell
(cd $IREE_SRC/packaging/python && (
rm -Rf build;
python3 setup_tf.py bdist_wheel))
```
```shell
(cd $IREE_SRC/packaging/python && (
rm -Rf build;
python3 setup_compiler.py bdist_wheel))
```
```shell
(cd $IREE_SRC/packaging/python && (
rm -Rf build;
python3 setup_rt.py bdist_wheel))
```