version.py 2.06 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18
"""
This is the global script that set the version information of TVM.
This script runs and update all the locations that related to versions

List of affected files:
- tvm-root/python/tvm/_ffi/libinfo.py
- tvm-root/include/tvm/runtime/c_runtime_api.h
- tvm-root/web/tvm_runtime.js
- tvm-root/conda/tvm/meta.yaml
- tvm-root/conda/topi/meta.yaml
- tvm-root/conda/nnvm/meta.yaml
- tvm-root/conda/tvm-libs/meta.yaml
"""
import os
import re
# current version
# We use the version of the incoming release for code
# that is under development
ziheng committed
19
__version__ = "0.5"
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48

# Implementations
def update(file_name, pattern, repl):
    update = []
    hit_counter = 0
    need_update = False
    for l in open(file_name):
        result = re.findall(pattern, l)
        if result:
            assert len(result) == 1
            hit_counter += 1
            if result[0] != repl:
                l = re.sub(pattern, repl, l)
                need_update = True
                print("%s: %s->%s" % (file_name, result[0], repl))
            else:
                print("%s: version is already %s" % (file_name, repl))

        update.append(l)
    if hit_counter != 1:
        raise RuntimeError("Cannot find version in %s" % file_name)

    if need_update:
        with open(file_name, "w") as output_file:
            for l in update:
                output_file.write(l)


def main():
49
    proj_root = os.path.dirname(os.path.abspath(os.path.expanduser(__file__)))
50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
    # python path
    update(os.path.join(proj_root, "python", "tvm", "_ffi", "libinfo.py"),
           r"(?<=__version__ = \")[.0-9a-z]+", __version__)
    # C++ header
    update(os.path.join(proj_root, "include", "tvm", "runtime", "c_runtime_api.h"),
           "(?<=TVM_VERSION \")[.0-9a-z]+", __version__)
    # conda
    for path in ["tvm", "topi", "nnvm", "tvm-libs"]:
        update(os.path.join(proj_root, "conda", path, "meta.yaml"),
               "(?<=version = \")[.0-9a-z]+", __version__)
    # web
    update(os.path.join(proj_root, "web", "tvm_runtime.js"),
           "(?<=@version )[.0-9a-z]+", __version__)

if __name__ == "__main__":
    main()