diff --git a/build_pip_package.sh b/tools/build_pip_package.sh similarity index 66% rename from build_pip_package.sh rename to tools/build_pip_package.sh index 13031afae..de90d2477 100755 --- a/build_pip_package.sh +++ b/tools/build_pip_package.sh @@ -14,37 +14,26 @@ # limitations under the License. # # Tool to build the TensorFlow Privacy pip package. -# -# Usage: -# bazel run //tensorflow_privacy:build_pip_package -- \ -# "/tmp/tensorflow_privacy" -# -# Arguments: -# output_dir: An output directory. set -e -die() { - echo >&2 "$@" - exit 1 -} - main() { - local output_dir="$1" - - if [[ ! -d "${output_dir}" ]]; then - die "The output directory '${output_dir}' does not exist." - fi + # Create a working directory. + local temp_dir="$(mktemp -d)" + trap "rm -rf ${temp_dir}" EXIT # Create a virtual environment - python3 -m venv "venv" - source "venv/bin/activate" + python3 -m venv "${temp_dir}/venv" + source "${temp_dir}/venv/bin/activate" + python --version pip install --upgrade pip + pip --version - # Build pip package + # Build the pip package pip install --upgrade setuptools wheel python "setup.py" sdist bdist_wheel - cp "dist/"* "${output_dir}" + # Cleanup. + deactivate } main "$@" diff --git a/tools/publish_pip_package.sh b/tools/publish_pip_package.sh new file mode 100755 index 000000000..3faa3a11e --- /dev/null +++ b/tools/publish_pip_package.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash +# Copyright 2020, The TensorFlow Privacy Authors. +# +# 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. +# +# Tool to publish the TensorFlow Privacy pip package. +set -e + +main() { + # Create a working directory. + local temp_dir="$(mktemp -d)" + trap "rm -rf ${temp_dir}" EXIT + + # Create a virtual environment + python3 -m venv "${temp_dir}/venv" + source "${temp_dir}/venv/bin/activate" + python --version + pip install --upgrade pip + pip --version + + # Publish the pip package. + package="$(ls "dist/"*".whl" | head -n1)" + pip install --upgrade twine + twine check "${package}" + twine upload "${package}" + + # Cleanup. + deactivate +} + +main "$@" diff --git a/tools/test_pip_package.sh b/tools/test_pip_package.sh new file mode 100755 index 000000000..8dc075fd4 --- /dev/null +++ b/tools/test_pip_package.sh @@ -0,0 +1,41 @@ +#!/usr/bin/env bash +# Copyright 2020, The TensorFlow Privacy Authors. +# +# 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. +# +# Tool to build the TensorFlow Privacy pip package. +set -e + +main() { + # Create a working directory. + local temp_dir="$(mktemp -d)" + trap "rm -rf ${temp_dir}" EXIT + + # Create a virtual environment + python3 -m venv "${temp_dir}/venv" + source "${temp_dir}/venv/bin/activate" + python --version + pip install --upgrade pip + pip --version + + # Publish the pip package. + package="$(ls "dist/"*".whl" | head -n1)" + pip install --upgrade "${package}" + pip freeze + python -c "import tensorflow_privacy as tfp; print(tfp.__version__)" + + # Cleanup. + deactivate +} + +main "$@"