diff --git a/.github/workflows/version-check.py b/.github/workflows/version-check.py new file mode 100755 --- /dev/null +++ b/.github/workflows/version-check.py @@ -0,0 +1,32 @@ +#!/usr/bin/python3 + +from git import Repo +import re +import sys + +version = sys.argv[1] + +repo = Repo() + +tag = repo.git.describe(tags = True, abbrev=0) +m = re.match('llvmorg-([0-9]+)\.([0-9]+)\.([0-9]+)', tag) +if not m: + print("error: Tag is not valid: ", tag) + sys.exit(1) + +expected_major = m.group(1) +expected_minor = m.group(2) +expected_patch = int(m.group(3)) + 1 +expected_version = f"{expected_major}.{expected_minor}.{expected_patch}" + +m = re.match("[0-9]+\.[0-9]+\.[0-9]+", version) +if not m: + print("error: Version is not valid: ", version) + sys.exit(1) + +if version != expected_version: + print("error: Expected version", expected_version, "but found version", version) + sys.exit(1) + +print("Versions match:", version, expected_version) +sys.exit(0) diff --git a/.github/workflows/version-check.yml b/.github/workflows/version-check.yml new file mode 100644 --- /dev/null +++ b/.github/workflows/version-check.yml @@ -0,0 +1,26 @@ +name: LLVM Project Version Check + +on: + push: + branches: + - 'release/**' + pull_request: + + +jobs: + version_check: + runs-on: ubuntu-latest + steps: + - name: Fetch LLVM sources + uses: actions/checkout@v2 + with: + fetch-depth: 0 + + - name: Install dependencies + run: | + pip install -r ./llvm/utils/git/requirements.txt + + - name: Version Check + run: | + version=`grep -o 'LLVM_VERSION_\(MAJOR\|MINOR\|PATCH\) [0-9]\+' llvm/CMakeLists.txt | cut -d ' ' -f 2 | tr "\n" "." | sed 's/.$//g'` + .github/workflows/version-check.py $version