--- a/build/build-clang/build-clang.py
+++ b/build/build-clang/build-clang.py
@@ -12,26 +12,27 @@ import json
import argparse
import tempfile
import glob
import errno
import re
from contextlib import contextmanager
import sys
import which
+from distutils.dir_util import copy_tree
def symlink(source, link_name):
os_symlink = getattr(os, "symlink", None)
if callable(os_symlink):
os_symlink(source, link_name)
else:
if os.path.isdir(source):
# Fall back to copying the directory :(
- copy_dir_contents(source, link_name)
+ copy_tree(source, link_name)
def check_run(args):
print >> sys.stderr, ' '.join(args)
r = subprocess.call(args)
assert r == 0
@@ -87,37 +88,16 @@ def build_tar_package(tar, name, base, d
name = re.sub(r'^([A-Za-z]):', f, name)
run_in(base, [tar,
"-c",
"-%s" % ("J" if ".xz" in name else "j"),
"-f",
name, directory])
-def copy_dir_contents(src, dest):
- for f in glob.glob("%s/*" % src):
- try:
- destname = "%s/%s" % (dest, os.path.basename(f))
- if os.path.isdir(f):
- shutil.copytree(f, destname)
- else:
- shutil.copy2(f, destname)
- except OSError as e:
- if e.errno == errno.ENOTDIR:
- shutil.copy2(f, destname)
- elif e.errno == errno.EEXIST:
- if os.path.isdir(f):
- copy_dir_contents(f, destname)
- else:
- os.remove(destname)
- shutil.copy2(f, destname)
- else:
- raise Exception('Directory not copied. Error: %s' % e)
-
-
def mkdir_p(path):
try:
os.makedirs(path)
except OSError as e:
if e.errno != errno.EEXIST or not os.path.isdir(path):
raise
@@ -135,23 +115,23 @@ def install_libgcc(gcc_dir, clang_dir):
out = subprocess.check_output([os.path.join(gcc_dir, "bin", "gcc"),
'-print-libgcc-file-name'])
libgcc_dir = os.path.dirname(out.rstrip())
clang_lib_dir = os.path.join(clang_dir, "lib", "gcc",
"x86_64-unknown-linux-gnu",
os.path.basename(libgcc_dir))
mkdir_p(clang_lib_dir)
- copy_dir_contents(libgcc_dir, clang_lib_dir)
+ copy_tree(libgcc_dir, clang_lib_dir)
libgcc_dir = os.path.join(gcc_dir, "lib64")
clang_lib_dir = os.path.join(clang_dir, "lib")
- copy_dir_contents(libgcc_dir, clang_lib_dir)
+ copy_tree(libgcc_dir, clang_lib_dir)
include_dir = os.path.join(gcc_dir, "include")
clang_include_dir = os.path.join(clang_dir, "include")
- copy_dir_contents(include_dir, clang_include_dir)
+ copy_tree(include_dir, clang_include_dir)
def install_import_library(build_dir, clang_dir):
shutil.copy2(os.path.join(build_dir, "lib", "clang.lib"),
os.path.join(clang_dir, "lib"))
def svn_co(source_dir, url, directory, revision):