iced/build/build-python

167 lines
3.1 KiB
Plaintext
Raw Normal View History

2020-11-28 00:32:59 +00:00
#!/bin/sh
set -e
root_dir=$(dirname "$0")
root_dir=$(cd "$root_dir/.." && pwd)
if [ ! -f "$root_dir/LICENSE.txt" ]; then
echo "Couldn't find the root dir"
exit 1
fi
pysrc_dir="$root_dir/src/rust/iced-x86-py"
if [ "$OSTYPE" = "msys" ]; then
is_windows=y
else
is_windows=n
fi
if [ "$is_windows" = "y" ]; then
python=python
else
python=python3
fi
pip=pip
full_check=y
gen_docs=y
sdist_only=n
wheel_only=n
set_rustflags=y
new_func() {
echo
echo "****************************************************************"
echo "$1"
echo "****************************************************************"
echo
}
generate_sdist() {
new_func "Generate sdist"
curr_dir=$(pwd)
cd "$pysrc_dir"
2020-11-29 12:06:51 +00:00
# Include the license file
cp "$root_dir/LICENSE.txt" .
# Update setup.cfg so it references this LICENSE file
sed -i -e 's!\.\./\.\./\.\./LICENSE\.txt!LICENSE.txt!' setup.cfg
# It should use iced-x86 on crates.io
sed -i -e 's!path\s*=.*/iced-x86"!!' Cargo.toml
2020-11-28 00:32:59 +00:00
$python setup.py sdist
2020-11-29 12:06:51 +00:00
rm LICENSE.txt
git checkout setup.cfg Cargo.toml
2020-11-28 00:32:59 +00:00
cd "$curr_dir"
}
generate_wheel() {
new_func "Generate wheel"
curr_dir=$(pwd)
cd "$pysrc_dir"
$python setup.py bdist_wheel
cd "$curr_dir"
}
generate_docs() {
new_func "Generate docs"
curr_dir=$(pwd)
cd "$pysrc_dir"
# Depends on generate_wheel output.
# It needs to load all modules, so copy the built file to the correct place.
# It has a *.{pyd,dylib,so} extension
2020-11-28 13:49:13 +00:00
built_file=$(ls build/lib/iced_x86/_iced_x86_py.*.*)
2020-11-28 00:32:59 +00:00
if [ ! -f "$built_file" ]; then
2020-11-28 13:49:13 +00:00
echo "Couldn't find the built _iced_x86_py.*.* file"
2020-11-28 00:32:59 +00:00
exit 1
fi
dest_filename="iced_x86/$(basename "$built_file")"
cp "$built_file" "$dest_filename"
sphinx-build --color -n -W --keep-going -b html docs docs/_build
rm "$dest_filename"
cd "$curr_dir"
}
misc_tests() {
new_func "pylint, mypy"
curr_dir=$(pwd)
cd "$pysrc_dir"
echo "mypy"
mypy iced_x86
2020-11-28 00:32:59 +00:00
echo "pylint"
2020-11-28 13:49:13 +00:00
# It will fail to load _iced_x86_py since it's not in the correct dir, so disable the error
pylint iced_x86 -d import-error --rcfile="$pysrc_dir/../pylintrc"
2020-11-28 00:32:59 +00:00
cd "$curr_dir"
}
while [ "$#" -gt 0 ]; do
case $1 in
--quick-check) full_check=n ;;
--sdist-only) sdist_only=y ;;
--wheel-only) wheel_only=y ;;
--python) shift; python=$1 ;;
--pip) shift; pip=$1 ;;
--no-docs) gen_docs=n ;;
--no-set-rustflags) set_rustflags=n ;;
*) echo "Unknown arg: $1"; exit 1 ;;
esac
shift
done
echo
echo "=================================================="
echo "Python build"
echo "=================================================="
echo
if [ "$set_rustflags" = "y" ]; then
export RUSTFLAGS="-D warnings"
fi
echo "rustup show"
rustup show
echo "cargo version"
cargo --version
echo "Rust version"
rustc --version
echo "Python version"
$python --version
echo "pip version"
$pip --version
if [ "$sdist_only" = "y" ]; then
generate_sdist
exit 0
fi
if [ "$wheel_only" = "y" ]; then
generate_wheel
exit 0
fi
2020-11-28 13:49:13 +00:00
if [ "$full_check" = "y" ] && [ "$gen_docs" = "y" ]; then
echo "sphinx-build version"
sphinx-build --version
fi
2020-11-28 00:32:59 +00:00
generate_sdist
generate_wheel
if [ "$full_check" = "y" ]; then
misc_tests
if [ "$gen_docs" = "y" ]; then
generate_docs
fi
fi