blob: be718d63793474f67ed709889f09f88eae5bdf1b [file] [log] [blame]
#!/usr/bin/env python3
# -*- coding: utf-8 -*-
# Copyright 2021 Efabless Corporation
#
# Licensed 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.
import os
import sys
import subprocess
class NoGitException(Exception):
pass
def get_tag() -> str:
try:
if os.path.exists("/git_version"):
return open("/git_version").read().strip()
try:
subprocess.run(
["git", "status"], stdout=subprocess.PIPE, stderr=subprocess.PIPE
)
except FileNotFoundError:
raise NoGitException(
"Cannot find the git binary. Please specify OPENLANE_IMAGE_NAME manually."
)
branch_name_data: subprocess.CompletedProcess = subprocess.run(
["git", "branch", "--show-current"],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
)
if branch_name_data.returncode != 0:
raise NoGitException(
f"Cannot determine git branch. Please specify OPENLANE_IMAGE_NAME manually.\nFull output: {branch_name_data.stderr.decode('utf8').strip()}"
)
branch_name = branch_name_data.stdout.decode("utf8").strip()
if branch_name != "":
if branch_name not in ["main", "master"]:
return f"{branch_name}-dev"
process_data: subprocess.CompletedProcess = subprocess.run(
["git", "rev-parse", "HEAD"],
stdout=subprocess.PIPE,
stderr=subprocess.PIPE,
)
if process_data.returncode != 0:
raise NoGitException(
f"Failed to get commit. Please specify OPENLANE_IMAGE_NAME manually.\nFull output: {process_data.stderr.decode('utf8').strip()}"
)
return process_data.stdout.decode("utf8").strip()
except NoGitException as e:
raise e
except Exception as e:
raise Exception(
f"An unexpected error has occurred when trying to find the OpenLane version: {e}."
)
if __name__ == "__main__":
try:
print(get_tag(), end="")
except Exception as e:
print(e, file=sys.stderr)
sys.exit(os.EX_UNAVAILABLE)