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