#
#  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.
#

# Basic toplevel package includes
include COMMITTERS.rst
include CONTRIBUTING.rst
include LICENSE
include NOTICE
include NEWS
include README.rst

# Cython files
recursive-include src/buildstream *.pyx
recursive-include src/buildstream *.pxd

# Data files required by BuildStream's generic source tests
graft src/buildstream/_testing/_sourcetests/project

# Documentation package includes
include doc/Makefile
include doc/badges.py
include doc/bst2html.py
include doc/source/conf.py
include doc/source/plugin.rsttemplate
recursive-include doc/source *.rst
recursive-include doc/source *.py
recursive-include doc/source *.in
recursive-include doc/source *.html
recursive-include doc/source *.odg
recursive-include doc/source *.svg
recursive-include doc/examples *
recursive-include doc/sessions *.run

# Tests
graft tests
include tox.ini
include .coveragerc
include .pylintrc

# Protocol Buffers
recursive-include src/buildstream/_protos *.proto

# Requirements files
recursive-include requirements *.in
recursive-include requirements *.txt

# Versioneer
include versioneer.py

# setuptools.build_meta don't include setup.py by default. Add it
include setup.py

# bundled binaries should only be in the bdist packages
recursive-exclude src/buildstream/subprojects *
