| #!/usr/bin/env python3 |
| """Download IREE host compiler from the snapshot release.""" |
| |
| import os |
| import sys |
| import tarfile |
| import argparse |
| import requests |
| import wget |
| |
| iree_compiler_dir = os.getenv("IREE_COMPILER_DIR") |
| if not iree_compiler_dir: |
| print("Please run 'source build/setup.sh' first") |
| sys.exit(-1) |
| |
| parser = argparse.ArgumentParser( |
| description="Download IREE host compiler from snapshot releases") |
| parser.add_argument( |
| "--tag_name", action="store", default="", |
| help="snapshot tag to download. If not set, download the latest") |
| args = parser.parse_args() |
| r = requests.get( |
| "https://api.github.com/repos/google/iree/releases?per_page=60", auth=( |
| 'user', 'pass')) |
| |
| if r.status_code != 200: |
| print("Not getting the right snapshot information. Status code: %d", |
| r.status_code) |
| sys.exit(-1) |
| |
| TAG_FOUND = False |
| if args.tag_name: |
| for x in r.json(): |
| if x["tag_name"] == args.tag_name: |
| TAG_FOUND = True |
| snapshot = x |
| break |
| else: |
| TAG_FOUND = True |
| snapshot = r.json()[0] |
| |
| if not TAG_FOUND: |
| print("!!!!!IREE snapshot can't be found with tag %s, please try a " |
| "different tag!!!!!" % args.tag_name) |
| sys.exit(-1) |
| |
| tag_name = snapshot["tag_name"] |
| commit_sha = snapshot["target_commitish"] |
| |
| print("Snapshot: %s" % tag_name) |
| |
| tag_file = os.path.join(iree_compiler_dir, "tag") |
| |
| # Check the tag of the existing download. |
| TAG_MATCH = False |
| if os.path.isfile(tag_file): |
| file = open(tag_file, "r") |
| for line in file: |
| if tag_name == line.replace("\n", ""): |
| TAG_MATCH = True |
| file.close() |
| break |
| file.close() |
| |
| if TAG_MATCH: |
| print("IREE compiler is up-to-date") |
| sys.exit(0) |
| |
| # Install IREE TFLite tool |
| # Python whl version can be found in tag_name as "snapshot-<version>" |
| version=tag_name[9:] |
| cmd = ("pip3 install iree-tools-tflite-snapshot==%s -f " |
| "https://github.com/google/iree/releases/ --no-cache-dir" % version) |
| os.system(cmd) |
| |
| # Find the linux tarball and download it. |
| TAR_MATCH = False |
| for asset in snapshot["assets"]: |
| download_url = asset["browser_download_url"] |
| tar_name = asset["name"] |
| if "linux-x86_64.tar" in tar_name: |
| TAR_MATCH = True |
| break |
| |
| if not TAR_MATCH: |
| print("linux-x86_64 tarball is not found") |
| sys.exit(-1) |
| |
| print("Download %s from %s" % (tar_name, download_url)) |
| |
| tmp_dir = os.path.join(os.getenv("OUT"), "tmp") |
| |
| if not os.path.isdir(tmp_dir): |
| os.mkdir(tmp_dir) |
| |
| tar_file = os.path.join(tmp_dir, tar_name) |
| wget.download(download_url, out=tar_file) |
| |
| # Extract the tarball to ${iree_compiler_dir}/install |
| install_dir = os.path.join(iree_compiler_dir, "install") |
| if not install_dir: |
| os.mkdir(install_dir) |
| |
| tar = tarfile.open(tar_file) |
| tar.extractall(path=install_dir) |
| tar.close() |
| |
| os.remove(tar_file) |
| print("\nIREE compiler is installed") |
| |
| # Add tag file for future checks |
| with open(tag_file, "w") as f: |
| f.write("%s\ncommit_sha: %s\n" % (tag_name, commit_sha)) |