xref: /aosp_15_r20/external/flatbuffers/conan/build.py (revision 890232f25432b36107d06881e0a25aaa6b473652)
1#!/usr/bin/env python
2# -*- coding: utf-8 -*-
3import os
4import re
5import subprocess
6from cpt.packager import ConanMultiPackager
7
8
9
10def get_branch():
11    try:
12        for line in subprocess.check_output("git branch", shell=True).decode().splitlines():
13            line = line.strip()
14            if line.startswith("*") and " (HEAD detached" not in line:
15                return line.replace("*", "", 1).strip()
16        return ""
17    except Exception:
18        pass
19    return ""
20
21
22def get_version():
23    version = get_branch()
24    if os.getenv("TRAVIS", False):
25        version = os.getenv("TRAVIS_BRANCH")
26
27    if os.getenv("APPVEYOR", False):
28        version = os.getenv("APPVEYOR_REPO_BRANCH")
29        if os.getenv("APPVEYOR_REPO_TAG") == "true":
30            version = os.getenv("APPVEYOR_REPO_TAG_NAME")
31
32    match = re.search(r"v(\d+\.\d+\.\d+.*)", version)
33    if match:
34        return match.group(1)
35    return version
36
37
38def get_reference(username):
39    return "flatbuffers/{}@google/stable".format(get_version())
40
41
42if __name__ == "__main__":
43    login_username = os.getenv("CONAN_LOGIN_USERNAME", "aardappel")
44    username = os.getenv("CONAN_USERNAME", "google")
45    upload = os.getenv("CONAN_UPLOAD", "https://api.bintray.com/conan/aardappel/flatbuffers")
46    stable_branch_pattern = os.getenv("CONAN_STABLE_BRANCH_PATTERN", r"v\d+\.\d+\.\d+.*")
47    test_folder = os.getenv("CPT_TEST_FOLDER", os.path.join("conan", "test_package"))
48    upload_only_when_stable = os.getenv("CONAN_UPLOAD_ONLY_WHEN_STABLE", True)
49
50    builder = ConanMultiPackager(reference=get_reference(username),
51                                 username=username,
52                                 login_username=login_username,
53                                 upload=upload,
54                                 stable_branch_pattern=stable_branch_pattern,
55                                 upload_only_when_stable=upload_only_when_stable,
56                                 test_folder=test_folder)
57    builder.add_common_builds(pure_c=False)
58    builder.run()
59