| #!/usr/bin/env python3 |
| |
| import datetime |
| import os |
| import pprint |
| import shutil |
| import subprocess |
| import sys |
| import tempfile |
| import time |
| |
| from library_submodules import * |
| |
| __dir__ = os.path.dirname(__file__) |
| |
| |
| def main(args): |
| assert len(args) == 2 or len(args) == 3, args |
| |
| if len(args) == 3: |
| r = args.pop(0) |
| assert r == '--revert', r |
| revert = 'old-' |
| else: |
| revert = '' |
| |
| src_dir = os.path.abspath(args.pop(0)) |
| out_dir = os.path.abspath(args.pop(0)) |
| |
| assert os.path.exists(src_dir), src_dir |
| src_lib_dir = os.path.join(src_dir, "skywater-pdk", "libraries") |
| assert os.path.exists(src_lib_dir), src_lib_dir |
| |
| lib_versions = {} |
| for l in libraries.keys(): |
| lib_dir = os.path.join(src_lib_dir, l) |
| assert os.path.exists(lib_dir), lib_dir |
| versions = [tuple(int(x) for x in v[1:].split('.')) for v in os.listdir(lib_dir) if v.startswith('v')] |
| versions.sort() |
| lib_versions[l] = tuple(versions) |
| print(l, versions) |
| for v in versions: |
| ov = out_v(v, versions) |
| print(' ', v, ov) |
| |
| print() |
| print() |
| assert os.path.exists(out_dir), out_dir |
| git_clone_dir = os.path.join(out_dir, "skywater-pdk") |
| assert os.path.exists(git_clone_dir), git_clone_dir |
| |
| # Check everything first |
| for l in libraries.keys(): |
| git_out_dir = os.path.join(git_clone_dir, l) |
| assert os.path.exists(git_out_dir), git_out_dir |
| assert os.path.exists(os.path.join(git_out_dir, ".git")), "Git directory was not created in:"+git_out_dir |
| |
| for l in libraries.keys(): |
| git_out_dir = os.path.join(git_clone_dir, l) |
| assert os.path.exists(git_out_dir), git_out_dir |
| print() |
| print() |
| print('Doing push for', l) |
| print('='*75, flush=True) |
| versions = lib_versions[l] |
| for i, v in enumerate(versions): |
| pv = previous_v(v, versions) |
| ov = out_v(v, versions) |
| |
| v_branch = "branch-{}.{}.{}".format(*ov) |
| v_tag = "v{}.{}.{}".format(*ov) |
| |
| print("Pushing", v_branch) |
| git('push origin --force {1}{0}:{0}'.format(v_branch, revert), git_out_dir) |
| git('push origin --force {0}'.format(v_tag), git_out_dir) |
| |
| git('push origin --force {1}{0}:{0}'.format(v_branch, revert), git_out_dir) |
| git('push origin --force master', git_out_dir) |
| print('='*75, flush=True) |
| |
| |
| |
| if __name__ == "__main__": |
| sys.exit(main(sys.argv[1:])) |