xref: /aosp_15_r20/external/vulkan-validation-layers/build-gn/commit_id.py (revision b7893ccf7851cd6a48cc5a1e965257d8a5cdcc70)
1*b7893ccfSSadaf Ebrahimi#!/usr/bin/env python
2*b7893ccfSSadaf Ebrahimi
3*b7893ccfSSadaf Ebrahimi# Copyright (C) 2018 The ANGLE Project Authors.
4*b7893ccfSSadaf Ebrahimi#
5*b7893ccfSSadaf Ebrahimi# Licensed under the Apache License, Version 2.0 (the "License");
6*b7893ccfSSadaf Ebrahimi# you may not use this file except in compliance with the License.
7*b7893ccfSSadaf Ebrahimi# You may obtain a copy of the License at
8*b7893ccfSSadaf Ebrahimi#
9*b7893ccfSSadaf Ebrahimi#     https://www.apache.org/licenses/LICENSE-2.0
10*b7893ccfSSadaf Ebrahimi#
11*b7893ccfSSadaf Ebrahimi# Unless required by applicable law or agreed to in writing, software
12*b7893ccfSSadaf Ebrahimi# distributed under the License is distributed on an "AS IS" BASIS,
13*b7893ccfSSadaf Ebrahimi# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*b7893ccfSSadaf Ebrahimi# See the License for the specific language governing permissions and
15*b7893ccfSSadaf Ebrahimi# limitations under the License.
16*b7893ccfSSadaf Ebrahimi
17*b7893ccfSSadaf Ebrahimi# Generate commit.h with git commit hash.
18*b7893ccfSSadaf Ebrahimi#
19*b7893ccfSSadaf Ebrahimi
20*b7893ccfSSadaf Ebrahimiimport subprocess as sp
21*b7893ccfSSadaf Ebrahimiimport sys
22*b7893ccfSSadaf Ebrahimiimport os
23*b7893ccfSSadaf Ebrahimi
24*b7893ccfSSadaf Ebrahimiusage = """\
25*b7893ccfSSadaf EbrahimiUsage: commit_id.py check <angle_dir>                - check if git is present
26*b7893ccfSSadaf Ebrahimi       commit_id.py gen <angle_dir> <file_to_write>  - generate commit.h"""
27*b7893ccfSSadaf Ebrahimi
28*b7893ccfSSadaf Ebrahimidef grab_output(command, cwd):
29*b7893ccfSSadaf Ebrahimi    return sp.Popen(command, stdout=sp.PIPE, shell=True, cwd=cwd).communicate()[0].strip()
30*b7893ccfSSadaf Ebrahimi
31*b7893ccfSSadaf Ebrahimiif len(sys.argv) < 3:
32*b7893ccfSSadaf Ebrahimi    sys.exit(usage)
33*b7893ccfSSadaf Ebrahimi
34*b7893ccfSSadaf Ebrahimioperation = sys.argv[1]
35*b7893ccfSSadaf Ebrahimicwd = sys.argv[2]
36*b7893ccfSSadaf Ebrahimi
37*b7893ccfSSadaf Ebrahimiif operation == 'check':
38*b7893ccfSSadaf Ebrahimi    index_path = os.path.join(cwd, '.git', 'index')
39*b7893ccfSSadaf Ebrahimi    if os.path.exists(index_path):
40*b7893ccfSSadaf Ebrahimi        print("1")
41*b7893ccfSSadaf Ebrahimi    else:
42*b7893ccfSSadaf Ebrahimi        print("0")
43*b7893ccfSSadaf Ebrahimi    sys.exit(0)
44*b7893ccfSSadaf Ebrahimi
45*b7893ccfSSadaf Ebrahimiif len(sys.argv) < 4 or operation != 'gen':
46*b7893ccfSSadaf Ebrahimi    sys.exit(usage)
47*b7893ccfSSadaf Ebrahimi
48*b7893ccfSSadaf Ebrahimioutput_file = sys.argv[3]
49*b7893ccfSSadaf Ebrahimicommit_id_size = 12
50*b7893ccfSSadaf Ebrahimi
51*b7893ccfSSadaf Ebrahimitry:
52*b7893ccfSSadaf Ebrahimi    commit_id = grab_output('git rev-parse --short=%d HEAD' % commit_id_size, cwd)
53*b7893ccfSSadaf Ebrahimi    commit_date = grab_output('git show -s --format=%ci HEAD', cwd)
54*b7893ccfSSadaf Ebrahimiexcept:
55*b7893ccfSSadaf Ebrahimi    commit_id = 'invalid-hash'
56*b7893ccfSSadaf Ebrahimi    commit_date = 'invalid-date'
57*b7893ccfSSadaf Ebrahimi
58*b7893ccfSSadaf Ebrahimihfile = open(output_file, 'w')
59*b7893ccfSSadaf Ebrahimi
60*b7893ccfSSadaf Ebrahimihfile.write('#define ANGLE_COMMIT_HASH "%s"\n'    % commit_id)
61*b7893ccfSSadaf Ebrahimihfile.write('#define ANGLE_COMMIT_HASH_SIZE %d\n' % commit_id_size)
62*b7893ccfSSadaf Ebrahimihfile.write('#define ANGLE_COMMIT_DATE "%s"\n'    % commit_date)
63*b7893ccfSSadaf Ebrahimi
64*b7893ccfSSadaf Ebrahimihfile.close()
65