Edit

kc3-lang/brotli/scripts/fix-win-bazel-build.py

Branch :

  • Show log

    Commit

  • Author : Eugene Kliuchnikov
    Date : 2018-06-04 17:53:16
    Hash : 1e7ea1d8
    Message : Inverse bazel project/workspace tree (#677) * Inverse bazel workspace tree. Now each subproject directly depends on root (c) project. This helps to mitigate Bazel bug bazelbuild/bazel#2391; short summary: Bazel does not work if referenced subproject `WORKSPACE` uses any repositories that embedding project does not. Bright side: building C project is much faster; no need to download closure, go and JDK...

  • scripts/fix-win-bazel-build.py
  • import fnmatch
    import os
    import os.path
    from shutil import copyfile
    
    print('Searching for manifests...')
    
    matches = []
    for root, dirnames, filenames in os.walk('bazel-bin\\org\\brotli'):
      for filename in fnmatch.filter(filenames, '*.runfiles_manifest'):
        matches.append(os.path.join(root, filename))
    
    for match in matches:
      print('Scanning manifest ' + match)
      runfiles = match[:-len('_manifest')]
      with open(match) as manifest:
        for entry in manifest:
          entry = entry.strip()
          if not entry.startswith("org_brotli_java"):
            continue
          if entry.startswith('org_brotli_java/external'):
            continue
          (alias, space, link) = entry.partition(' ')
          if alias.endswith('.jar') or alias.endswith('.exe'):
            continue
          link = link.replace('/', '\\')
          alias = alias.replace('/', '\\')
          dst = os.path.join(runfiles, alias)
          if not os.path.exists(dst):
            print(link + ' -> ' + dst)
            parent = os.path.dirname(dst)
            if not os.path.exists(parent):
              os.makedirs(parent)
            copyfile(link, dst)
    
    print('Finished resolving symlinks')