# Copyright 2022 The IREE Authors
#
# Licensed under the Apache License v2.0 with LLVM Exceptions.
# See https://llvm.org/LICENSE.txt for license information.
# SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception

# When building, we make the entire repository the Docker build context so that
# we can reuse scripts across the project, but we don't actually want to
# transfer the entire directory (including any local files, submodules, etc) to
# the Docker daemon. Instead we start out by ignoring everything and then add
# back only the files we actually want to use in our Docker images.

# Ignore everything
**
# A directory specifically for things used when building containers, but not
# elsewhere.
!build_tools/docker/context/**
# Avoid duplicating dependency requirement information
!runtime/bindings/python/iree/runtime/build_requirements.txt
!integrations/tensorflow/test/requirements.txt
# Keep the Bazel version in only one place
!.bazelversion
