diff --git a/.github/workflows/build_llvm_libraries.yml b/.github/workflows/build_llvm_libraries.yml index b82b89e6..7ef1dd63 100644 --- a/.github/workflows/build_llvm_libraries.yml +++ b/.github/workflows/build_llvm_libraries.yml @@ -26,9 +26,13 @@ jobs: - name: checkout uses: actions/checkout@v3 + - name: install dependencies + run: /usr/bin/env python3 -m pip install -r requirements.txt + working-directory: build-scripts + - name: retrive the last commit ID id: get_last_commit - run: echo "last_commit=$(/usr/bin/env python3 ./build_llvm.py --llvm-ver)" >> $GITHUB_OUTPUT + run: echo "last_commit=$(GH_TOKEN=${{ secrets.GITHUB_TOKEN }} /usr/bin/env python3 ./build_llvm.py --llvm-ver)" >> $GITHUB_OUTPUT working-directory: build-scripts # Bump the prefix number to evict all previous caches and diff --git a/build-scripts/build_llvm.py b/build-scripts/build_llvm.py index dd211f30..1531895c 100755 --- a/build-scripts/build_llvm.py +++ b/build-scripts/build_llvm.py @@ -7,6 +7,7 @@ import argparse import os import pathlib +import requests import shlex import shutil import subprocess @@ -27,11 +28,23 @@ def clone_llvm(dst_dir, llvm_repo, llvm_branch): return llvm_dir -def query_llvm_version(llvm_dir): - GIT_LOG_CMD = f"git log --format=format:'%h' -1" - return subprocess.check_output( - shlex.split(GIT_LOG_CMD), cwd=llvm_dir, universal_newlines=True, text=True - ) +def query_llvm_version(llvm_info): + github_token = os.environ['GH_TOKEN'] + owner_project = llvm_info['repo'].replace("https://github.com/", "").replace(".git", "") + url = f"https://api.github.com/repos/{owner_project}/commits/{llvm_info['branch']}" + headers = { + 'Authorization': f"Bearer {github_token}" + } + + try: + response = requests.request("GET", url, headers=headers, data={}) + response.raise_for_status() + except requests.exceptions.HTTPError as error: + print (error) # for debugging purpose + return None + + response = response.json() + return response['sha'] def build_llvm(llvm_dir, platform, backends, projects, use_clang=False): @@ -253,13 +266,13 @@ def main(): try: llvm_info = llvm_repo_and_branch.get(platform, llvm_repo_and_branch["default"]) - llvm_dir = clone_llvm(deps_dir, llvm_info["repo"], llvm_info["branch"]) if options.llvm_ver: - commit_hash = query_llvm_version(llvm_dir) + commit_hash = query_llvm_version(llvm_info) print(commit_hash) return commit_hash is not None - + + llvm_dir = clone_llvm(deps_dir, llvm_info["repo"], llvm_info["branch"]) if ( build_llvm( llvm_dir, platform, options.arch, options.project, options.use_clang diff --git a/build-scripts/requirements.txt b/build-scripts/requirements.txt new file mode 100644 index 00000000..bf0d9d41 --- /dev/null +++ b/build-scripts/requirements.txt @@ -0,0 +1 @@ +requests==2.28.2 \ No newline at end of file