#!/usr/bin/env bash # Licensed to the Apache Software Foundation (ASF) under one # or more contributor license agreements. See the NOTICE file # distributed with this work for additional information # regarding copyright ownership. The ASF licenses this file # to you 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. set -exu ###################################################### # Write current test version and rc number here ###################################################### # NOTE about "rc": # 1. Required for test candidate, such as "rc0" # 2. Not required for release, leave blank "" ###################################################### version="v0.16.0" rc="rc0" ###################################################### # This script is used test release (cancdidate) # packages uploading to apache.org, github.com # before release vote starts or release. # # The release (candidate) package contains files # below: # 1. apache-tvm-src-${version_rc}.tar.gz.asc # 2. apache-tvm-src-${version_rc}.tar.gz.sha512 # 3. apache-tvm-src-${version_rc}.tar.gz ###################################################### version_rc="${version}" apache_prefix="${version}" if [ "$rc" != "" ]; then apache_prefix="${version_rc}-${rc}" version_rc="${version_rc}.${rc}" fi mkdir test_tvm_${version_rc} cd test_tvm_${version_rc} echo "[setup] Create an isolated virtualenv ..." # Used for the build, dependency install, and import below so this script never # pollutes the caller's environment and works on PEP 668 "externally-managed" # system pythons. Requires the venv module (e.g. the python3-venv package on Debian). python3 -m venv .venv export PATH="$PWD/.venv/bin:$PATH" python3 -m pip install --upgrade pip echo "[1/10] Downloading from apache.org ..." mkdir apache cd apache wget -c https://dist.apache.org/repos/dist/dev/tvm/tvm-${apache_prefix}/apache-tvm-src-${version_rc}.tar.gz.sha512 wget -c https://dist.apache.org/repos/dist/dev/tvm/tvm-${apache_prefix}/apache-tvm-src-${version_rc}.tar.gz.asc wget -c https://dist.apache.org/repos/dist/dev/tvm/tvm-${apache_prefix}/apache-tvm-src-${version_rc}.tar.gz md5sum ./* > ./md5sum.txt cd - echo "[2/10] Downloading from github.com ..." mkdir github cd github wget -c https://github.com/apache/tvm/releases/download/${version_rc}/apache-tvm-src-${version_rc}.tar.gz.sha512 wget -c https://github.com/apache/tvm/releases/download/${version_rc}/apache-tvm-src-${version_rc}.tar.gz.asc wget -c https://github.com/apache/tvm/releases/download/${version_rc}/apache-tvm-src-${version_rc}.tar.gz md5sum ./* > ./md5sum.txt cd - echo "[3/10] Check difference between github.com and apache.org ..." diff github/md5sum.txt ./apache/md5sum.txt echo "[4/10] Checking asc ..." cd github gpg --verify ./apache-tvm-src-${version_rc}.tar.gz.asc ./apache-tvm-src-${version_rc}.tar.gz echo "[5/10] Checking sha512 ..." sha512sum -c ./apache-tvm-src-${version_rc}.tar.gz.sha512 echo "[6/10] Unzip ..." tar -zxf apache-tvm-src-${version_rc}.tar.gz echo "[7/10] Checking whether binary in source code ..." output=`find apache-tvm-src-${version} -type f -exec file {} + | grep -w "ELF\|shared object" || true` if [[ -n "$output" ]]; then echo "Error: ELF or shared object files found:" echo "$output" exit 1 fi echo "[8/10] Compile and Python Import on Linux ..." cd apache-tvm-src-${version} mkdir build cd build cp ../cmake/config.cmake . cmake .. make -j16 cd .. echo "[9/10] Install Python runtime dependencies (declared in the source pyproject.toml) ..." # Single source of truth: install exactly the runtime deps the release declares, so # this never needs version/list maintenance when the project's dependencies change. deps=$(python3 - <<'PY' import re text = open("pyproject.toml").read() match = re.search(r"(?ms)^dependencies\s*=\s*\[(.*?)\]", text) print(" ".join(re.findall(r'"([^"]+)"', match.group(1)))) PY ) echo "Installing declared runtime deps: ${deps}" python3 -m pip install ${deps} echo "[10/10] Import TVM and print path ..." export TVM_HOME=$(pwd) export PYTHONPATH=$TVM_HOME/python:${PYTHONPATH:-} python3 -c "import tvm; print(tvm.__path__)"