This is an automated email from the ASF dual-hosted git repository.

jshao pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/gravitino.git


The following commit(s) were added to refs/heads/main by this push:
     new 268045075 [#4695] Fix (python-client): Fix gradlew 
:clients:client-python:build failed if the package does not contain .git 
directory (#4700)
268045075 is described below

commit 2680450754886258a1acc368cead7642815accde
Author: Yuhui <[email protected]>
AuthorDate: Tue Aug 27 16:35:01 2024 +0800

    [#4695] Fix (python-client): Fix gradlew :clients:client-python:build 
failed if the package does not contain .git directory (#4700)
    
    ### What changes were proposed in this pull request?
    
    Fix gradlew :clients:client-python:build failed if the package does not
    contain .git directory
    
    ### Why are the changes needed?
    
    Fix: #4695
    
    ### Does this PR introduce _any_ user-facing change?
    
    NO
    
    ### How was this patch tested?
    
    Manually test
---
 clients/client-python/gravitino/constants/root.py |  1 +
 clients/client-python/scripts/generate_version.py | 24 +++++++++++++++++++----
 2 files changed, 21 insertions(+), 4 deletions(-)

diff --git a/clients/client-python/gravitino/constants/root.py 
b/clients/client-python/gravitino/constants/root.py
index 613983f1f..101a62bc5 100644
--- a/clients/client-python/gravitino/constants/root.py
+++ b/clients/client-python/gravitino/constants/root.py
@@ -21,4 +21,5 @@ from pathlib import Path
 
 MODULE_NAME = "gravitino"
 PROJECT_HOME = Path(__file__).parent.parent.parent
+PROJECT_ROOT = PROJECT_HOME.parent.parent
 GRAVITINO_DIR = PROJECT_HOME / MODULE_NAME
diff --git a/clients/client-python/scripts/generate_version.py 
b/clients/client-python/scripts/generate_version.py
index bf7e8c449..226f71530 100644
--- a/clients/client-python/scripts/generate_version.py
+++ b/clients/client-python/scripts/generate_version.py
@@ -17,10 +17,12 @@ specific language governing permissions and limitations
 under the License.
 """
 
+# coding=utf-8
+
 import re
 import configparser
-import subprocess
 from datetime import datetime
+from gravitino.constants.root import PROJECT_ROOT
 
 from gravitino.constants.version import Version, VERSION_INI, SETUP_FILE
 from gravitino.exceptions.base import GravitinoRuntimeException
@@ -28,6 +30,22 @@ from gravitino.exceptions.base import 
GravitinoRuntimeException
 VERSION_PATTERN = r"version\s*=\s*['\"]([^'\"]+)['\"]"
 
 
+def get_git_commit_id():
+    try:
+        commit_id = ""
+        git_path = f"{PROJECT_ROOT}/.git/"
+        with open(git_path + "HEAD", "r", encoding="utf-8") as file:
+            ref = file.readline().strip()
+
+        if ref.startswith("ref:"):
+            ref_path = ref.split(" ")[1]
+            with open(git_path + ref_path, "r", encoding="utf-8") as file:
+                commit_id = file.readline().strip()
+        return commit_id
+    except (FileNotFoundError, IOError):
+        return ""
+
+
 def main():
     with open(SETUP_FILE, "r", encoding="utf-8") as f:
         setup_content = f.read()
@@ -37,9 +55,7 @@ def main():
         else:
             raise GravitinoRuntimeException("Can't find valid version info in 
setup.py")
 
-    git_commit = (
-        subprocess.check_output(["git", "rev-parse", 
"HEAD"]).decode("ascii").strip()
-    )
+    git_commit = get_git_commit_id()
 
     compile_date = datetime.now().strftime("%d/%m/%Y %H:%M:%S")
 

Reply via email to