steps:
# Clone tensorflow
# TODO(mattsoulanille): Specify branch with variable.
- name: 'tensorflow/build@sha256:47f8603647612f797f9ad9279c55620dc4ceb9980a5f9fe6ae35882b96ec0ac0'
  entrypoint: 'git'
  id: 'clone'
  args: ['clone', '--branch', 'r2.7', '--single-branch', '--depth', '1', 'https://github.com/tensorflow/tensorflow.git']

# Configure tensorflow
- name: 'tensorflow/build@sha256:47f8603647612f797f9ad9279c55620dc4ceb9980a5f9fe6ae35882b96ec0ac0'
  entrypoint: 'bash'
  id: 'configure'
  dir: 'tensorflow'
  args: ['./configure']
  env:
    - 'PYTHON_BIN_PATH=/usr/bin/python3'
    - 'PYTHON_LIB_PATH=/usr/lib/python3/dist-packages'
    - 'TF_NEED_ROCM=false'
    - 'TF_NEED_CUDA=false'
    - 'TF_DOWNLOAD_CLANG=false'
    - 'CC_OPT_FLAGS=-Wno-sign-compare'
    - 'TF_SET_ANDROID_WORKSPACE=false'


# Build tensorflow
# First, hide system openssl.
# https://github.com/tensorflow/tensorflow/issues/48401#issuecomment-818377995
- name: 'tensorflow/build@sha256:47f8603647612f797f9ad9279c55620dc4ceb9980a5f9fe6ae35882b96ec0ac0'
  entrypoint: 'bash'
  id: 'build'
  dir: 'tensorflow'
  args:
    - '-eEuo'
    - 'pipefail'
    - '-c'
    - |-
      mv /usr/include/openssl /usr/include/openssl.original
      bazel build --jobs=16 -c opt --config=elinux_aarch64 //tensorflow:libtensorflow.so //tensorflow:libtensorflow_framework.so

# Copy results to a staging directory and tar them
- name: 'tensorflow/build@sha256:47f8603647612f797f9ad9279c55620dc4ceb9980a5f9fe6ae35882b96ec0ac0'
  entrypoint: 'bash'
  id: 'copy-results'
  args:
    - '-eEuo'
    - 'pipefail'
    - '-c'
    - |-
      mkdir tf_build
      mkdir tf_build/lib
      cp -P tensorflow/bazel-bin/tensorflow/libtensorflow*.so* tf_build/lib
      mkdir -p tf_build/include/tensorflow/core/platform
      mkdir -p tf_build/include/tensorflow/c/eager
      cp tensorflow/tensorflow/core/platform/ctstring.h tf_build/include/tensorflow/core/platform/
      cp tensorflow/tensorflow/core/platform/ctstring_internal.h tf_build/include/tensorflow/core/platform/
      cp tensorflow/tensorflow/c/c_api.h tf_build/include/tensorflow/c/
      cp tensorflow/tensorflow/c/c_api_experimental.h tf_build/include/tensorflow/c/
      cp tensorflow/tensorflow/c/c_api_macros.h tf_build/include/tensorflow/c/
      cp tensorflow/tensorflow/c/tensor_interface.h tf_build/include/tensorflow/c/
      cp tensorflow/tensorflow/c/tf_attrtype.h tf_build/include/tensorflow/c/
      cp tensorflow/tensorflow/c/tf_datatype.h tf_build/include/tensorflow/c/
      cp tensorflow/tensorflow/c/tf_file_statistics.h tf_build/include/tensorflow/c/
      cp tensorflow/tensorflow/c/tf_status.h tf_build/include/tensorflow/c/
      cp tensorflow/tensorflow/c/tf_tensor.h tf_build/include/tensorflow/c/
      cp tensorflow/tensorflow/c/tf_tstring.h tf_build/include/tensorflow/c/
      cp tensorflow/tensorflow/c/eager/c_api.h tf_build/include/tensorflow/c/eager/
      cp tensorflow/tensorflow/c/eager/c_api_experimental.h tf_build/include/tensorflow/c/eager/
      cp tensorflow/tensorflow/c/eager/c_api_unified_experimental.h tf_build/include/tensorflow/c/eager/
      cp tensorflow/tensorflow/c/eager/dlpack.h tf_build/include/tensorflow/c/eager/
      cd tf_build
      tar czf libtensorflow_r2_7_linux_arm64.tar.gz ./lib ./include

# Push results to bucket
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
  entrypoint: 'gsutil'
  id: 'push'
  args: ['cp', 'tf_build/libtensorflow_r2_7_linux_arm64.tar.gz', 'gs://tf-builds']

timeout: 7200s
options:
  logStreamingOption: 'STREAM_ON'
  machineType: 'E2_HIGHCPU_32'
  substitution_option: 'ALLOW_LOOSE'

