Refactor and cleanup codes. No functional changes.

This commit is contained in:
KongQun Yang
2019-01-23 15:16:31 -08:00
parent 84f66d2320
commit 93265ab9d1
207 changed files with 14893 additions and 3332 deletions

View File

@@ -1,6 +1,6 @@
#!/bin/bash
################################################################################
# Copyright 2016 Google Inc.
# Copyright 2016 Google LLC.
#
# This software is licensed under the terms defined in the Widevine Master
# License Agreement. For a copy of this agreement, please contact
@@ -17,33 +17,101 @@
# - Protocol compiler: https://github.com/google/protobuf#protocol-compiler-installation
# On Ubuntu: sudo apt-get install protobuf-compiler
# - Protobuf Python runtime (version 3.0 or later): sudo pip install protobuf
# - swig: http://www.swig.org/download.html
set -e
hash protoc 2>/dev/null || { echo >&2 "protobuf is required but not installed. Aborting."; exit 1; }
# - CLIF: https://github.com/google/clif
# Environment Variables:
# - TOOLS_PATH: colon-delimited paths to additional tools such as protoc.
# - CLIF_PREFIX: prefix path to CLIF installation.
set -ex
cd "$(dirname "$0")"
rm -rf test_genfiles
mkdir test_genfiles
if [[ -v TOOLS_PATH ]]; then
export PATH=$PATH:$TOOLS_PATH
fi
protoc -I="$(pwd)" --python_out="$(pwd)/test_genfiles" "$(pwd)/protos/public/client_identification.proto"
protoc -I="$(pwd)" --python_out="$(pwd)/test_genfiles" "$(pwd)/protos/public/provisioned_device_info.proto"
protoc -I="$(pwd)" --python_out="$(pwd)/test_genfiles" "$(pwd)/protos/public/certificate_provisioning.proto"
protoc -I="$(pwd)" --python_out="$(pwd)/test_genfiles" "$(pwd)/protos/public/signed_device_certificate.proto"
if ! which protoc 2>/dev/null; then
echo >&2 "Protobuf is required but not found (did you set TOOLS_PATH?). Aborting."
exit 1
fi
if ! [[ -v CLIF_PREFIX ]]; then
echo >&2 "CLIF_PREFIX not set. Defaulting to '$HOME/opt'."
export CLIF_PREFIX=$HOME/opt
fi
PYCLIF="$CLIF_PREFIX/clif/bin/pyclif"
PYCLIF_PROTO="$CLIF_PREFIX/clif/bin/pyclif_proto"
CLIF_INC="-I$CLIF_PREFIX"
if ! [[ -x $PYCLIF ]]; then
echo >&2 "CLIF is required but not found."
exit 1
fi
# Get the path of the native python C++ header files.
PYTHON_INC="-I$(printf "from distutils.sysconfig import get_python_inc\nprint(get_python_inc())\n" | python)"
SRC_DIR="$(pwd)"
GEN_DIR="$(pwd)/test_genfiles"
PROTO_GEN_DIR="$GEN_DIR/protos/public"
COMMON_GEN_DIR="$GEN_DIR/common/python"
SDK_PYTHON_GEN_DIR="$GEN_DIR/provisioning_sdk/public/python"
export PYEXT_BUILD_DIR="$(pwd)/python_ext_build"
PYEXT_INSTALL_DIR="$(pwd)/python_env"
rm -rf "$GEN_DIR"
rm -rf "$PYEXT_BUILD_DIR"
rm -rf "$PYEXT_INSTALL_DIR"
mkdir -p "$PROTO_GEN_DIR"
mkdir -p "$COMMON_GEN_DIR"
mkdir -p "$SDK_PYTHON_GEN_DIR"
mkdir -p "$PYEXT_BUILD_DIR"
# Generate C++ outputs.
# The protos are needed to compile the public header provisioning_engine.h.
protoc -I="$SRC_DIR" --cpp_out="$GEN_DIR" "$SRC_DIR/protos/public/client_identification.proto"
protoc -I="$SRC_DIR" --cpp_out="$GEN_DIR" "$SRC_DIR/protos/public/remote_attestation.proto"
protoc -I="$SRC_DIR" --cpp_out="$GEN_DIR" "$SRC_DIR/protos/public/certificate_provisioning.proto"
# Generate py outputs.
protoc -I="$SRC_DIR" --python_out="$GEN_DIR" "$SRC_DIR/protos/public/client_identification.proto"
protoc -I="$SRC_DIR" --python_out="$GEN_DIR" "$SRC_DIR/protos/public/remote_attestation.proto"
protoc -I="$SRC_DIR" --python_out="$GEN_DIR" "$SRC_DIR/protos/public/provisioned_device_info.proto"
protoc -I="$SRC_DIR" --python_out="$GEN_DIR" "$SRC_DIR/protos/public/certificate_provisioning.proto"
protoc -I="$SRC_DIR" --python_out="$GEN_DIR" "$SRC_DIR/protos/public/signed_drm_certificate.proto"
# Generate CLIF Python wrappers.
"$PYCLIF_PROTO" --source_dir="$SRC_DIR/protos/public" --ccdeps_out="$PROTO_GEN_DIR/certificate_provisioning_pyclif.cc" --header_out="$PROTO_GEN_DIR/certificate_provisioning_pyclif.h" certificate_provisioning.proto
"$PYCLIF" --modname certificate_type --ccdeps_out="$COMMON_GEN_DIR/certificate_type.cc" --ccinit_out="$COMMON_GEN_DIR/initcertificate_type.cc" --header_out="$COMMON_GEN_DIR/certificate_type.h" --cc_flags="-std=c++11 -I$SRC_DIR $PYTHON_INC $CLIF_INC" "$SRC_DIR/common/python/certificate_type.clif"
"$PYCLIF" --modname provisioning_status --ccdeps_out="$SDK_PYTHON_GEN_DIR/provisioning_status.cc" --ccinit_out="$SDK_PYTHON_GEN_DIR/initprovisioning_status.cc" --header_out="$SDK_PYTHON_GEN_DIR/provisioning_status.h" --cc_flags="-std=c++11 -I$SRC_DIR $PYTHON_INC $CLIF_INC" "$SRC_DIR/provisioning_sdk/public/python/provisioning_status.clif"
"$PYCLIF" --modname provisioning_session --ccdeps_out="$SDK_PYTHON_GEN_DIR/provisioning_session.cc" --ccinit_out="$SDK_PYTHON_GEN_DIR/initprovisioning_session.cc" --header_out="$SDK_PYTHON_GEN_DIR/provisioning_session.h" --cc_flags="-std=c++11 -I$SRC_DIR -I$GEN_DIR $PYTHON_INC $CLIF_INC" --include_paths="$GEN_DIR" "$SRC_DIR/provisioning_sdk/public/python/provisioning_session.clif"
"$PYCLIF" --modname provisioning_engine --ccdeps_out="$SDK_PYTHON_GEN_DIR/provisioning_engine.cc" --ccinit_out="$SDK_PYTHON_GEN_DIR/initprovisioning_engine.cc" --header_out="$SDK_PYTHON_GEN_DIR/provisioning_engine.h" --cc_flags="-std=c++11 -I$SRC_DIR -I$GEN_DIR $PYTHON_INC $CLIF_INC" --include_paths="$GEN_DIR" "$SRC_DIR/provisioning_sdk/public/python/provisioning_engine.clif"
# Create virtual Python environment, build extensions, and install onto virtual
# environment.
cp -a provisioning_sdk/public/python/* test_genfiles/
cd test_genfiles
python setup.py build_ext --inplace
rm -rf "$PYEXT_INSTALL_DIR"
virtualenv "$PYEXT_INSTALL_DIR"
"$PYEXT_INSTALL_DIR/bin/python" "$PYEXT_INSTALL_DIR/bin/pip" install enum34
"$PYEXT_INSTALL_DIR/bin/python" "$PYEXT_INSTALL_DIR/bin/pip" install protobuf
"$PYEXT_INSTALL_DIR/bin/python" "$PYEXT_INSTALL_DIR/bin/pip" install cryptography
"$PYEXT_INSTALL_DIR/bin/python" certificate_type_setup.py build --build-base="$PYEXT_BUILD_DIR" install
"$PYEXT_INSTALL_DIR/bin/python" provisioning_status_setup.py build --build-base="$PYEXT_BUILD_DIR" install
"$PYEXT_INSTALL_DIR/bin/python" provisioning_session_setup.py build --build-base="$PYEXT_BUILD_DIR" install
"$PYEXT_INSTALL_DIR/bin/python" provisioning_engine_setup.py build --build-base="$PYEXT_BUILD_DIR" install
shopt -s globstar
for d in "protos"/**/; do
touch -- "$d/__init__.py";
done;
done
python init_engine_test.py
python set_certificate_status_list_test.py
python drm_intermediate_certificate_test.py
python engine_generate_certificate_test.py
python new_session_test.py
"$PYEXT_INSTALL_DIR/bin/python" init_engine_test.py
"$PYEXT_INSTALL_DIR/bin/python" set_certificate_status_list_test.py
"$PYEXT_INSTALL_DIR/bin/python" drm_intermediate_certificate_test.py
"$PYEXT_INSTALL_DIR/bin/python" engine_generate_certificate_test.py
"$PYEXT_INSTALL_DIR/bin/python" new_session_test.py