From 5c1fe496e862339725080b51cac58877eea12819 Mon Sep 17 00:00:00 2001 From: Rail Aliiev Date: Tue, 9 Jul 2013 09:56:28 -0400 Subject: [PATCH] Bug 870173 - Upgrade to clang 3.3. r=ehsan DONTBUILD --- build/unix/build-clang/build-clang.py | 64 +++++++++++++++------------- build/unix/build-clang/no-sse-on-linux.patch | 26 +++++------ 2 files changed, 48 insertions(+), 42 deletions(-) rewrite build/unix/build-clang/no-sse-on-linux.patch (80%) diff --git a/build/unix/build-clang/build-clang.py b/build/unix/build-clang/build-clang.py index ba1323269afa..338fed026168 100755 --- a/build/unix/build-clang/build-clang.py +++ b/build/unix/build-clang/build-clang.py @@ -3,36 +3,38 @@ # License, v. 2.0. If a copy of the MPL was not distributed with this # file, You can obtain one at http://mozilla.org/MPL/2.0/. -llvm_revision = "170890" -moz_version = "moz0" +llvm_revision = "183744" ############################################## import os import os.path import shutil -import tarfile import subprocess import platform import sys import json import collections + def check_run(args): r = subprocess.call(args) assert r == 0 + def run_in(path, args): d = os.getcwd() os.chdir(path) check_run(args) os.chdir(d) + def patch(patch, plevel, srcdir): patch = os.path.realpath(patch) check_run(['patch', '-d', srcdir, '-p%s' % plevel, '-i', patch, '--fuzz=0', '-s']) + def build_package(package_source_dir, package_build_dir, configure_args, make_args): if not os.path.exists(package_build_dir): @@ -42,6 +44,7 @@ def build_package(package_source_dir, package_build_dir, configure_args, run_in(package_build_dir, ["make", "-j8"] + make_args) run_in(package_build_dir, ["make", "install"]) + def with_env(env, f): old_env = os.environ.copy() os.environ.update(env) @@ -49,31 +52,22 @@ def with_env(env, f): os.environ.clear() os.environ.update(old_env) + def build_tar_package(tar, name, base, directory): name = os.path.realpath(name) run_in(base, [tar, "-cjf", name, directory]) + def svn_co(url, directory, revision): check_run(["svn", "co", "-r", revision, url, directory]) -# The directories end up in the debug info, so the easy way of getting -# a reproducible build is to run it in a know absolute directory. -# We use a directory in /builds/slave because the mozilla infrastructure -# cleans it up automatically. -base_dir = "/builds/slave/moz-toolchain" - -source_dir = base_dir + "/src" -build_dir = base_dir + "/build" - -llvm_source_dir = source_dir + "/llvm" -clang_source_dir = source_dir + "/clang" -compiler_rt_source_dir = source_dir + "/compiler-rt" -def build_one_stage(env, stage_dir, is_stage_one): +def build_one_stage(env, stage_dir): def f(): - build_one_stage_aux(stage_dir, is_stage_one) + build_one_stage_aux(stage_dir) with_env(env, f) + def build_tooltool_manifest(): basedir = os.path.split(os.path.realpath(sys.argv[0]))[0] tooltool = basedir + '/tooltool.py' @@ -82,8 +76,8 @@ def build_tooltool_manifest(): check_run(['python', tooltool, '-m', manifest, 'add', setup, 'clang.tar.bz2']) data = json.load(file(manifest), object_pairs_hook=collections.OrderedDict) - data = [{'clang_version' : 'r%s' % llvm_revision }] + data - out = file(manifest,'w') + data = [{'clang_version': 'r%s' % llvm_revision}] + data + out = file(manifest, 'w') json.dump(data, out, indent=0) out.write('\n') @@ -92,7 +86,8 @@ def build_tooltool_manifest(): isDarwin = platform.system() == "Darwin" -def build_one_stage_aux(stage_dir, is_stage_one): + +def build_one_stage_aux(stage_dir): os.mkdir(stage_dir) build_dir = stage_dir + "/build" @@ -114,16 +109,29 @@ def build_one_stage_aux(stage_dir, is_stage_one): build_package(llvm_source_dir, build_dir, configure_opts, []) +# The directories end up in the debug info, so the easy way of getting +# a reproducible build is to run it in a know absolute directory. +# We use a directory in /builds/slave because the mozilla infrastructure +# cleans it up automatically. +base_dir = "/builds/slave/moz-toolchain" + +source_dir = base_dir + "/src" +build_dir = base_dir + "/build" + +llvm_source_dir = source_dir + "/llvm" +clang_source_dir = source_dir + "/clang" +compiler_rt_source_dir = source_dir + "/compiler-rt" + if isDarwin: os.environ['MACOSX_DEPLOYMENT_TARGET'] = '10.7' if not os.path.exists(source_dir): os.makedirs(source_dir) - svn_co("http://llvm.org/svn/llvm-project/llvm/branches/release_32", + svn_co("http://llvm.org/svn/llvm-project/llvm/branches/release_33", llvm_source_dir, llvm_revision) - svn_co("http://llvm.org/svn/llvm-project/cfe/branches/release_32", + svn_co("http://llvm.org/svn/llvm-project/cfe/branches/release_33", clang_source_dir, llvm_revision) - svn_co("http://llvm.org/svn/llvm-project/compiler-rt/branches/release_32", + svn_co("http://llvm.org/svn/llvm-project/compiler-rt/branches/release_33", compiler_rt_source_dir, llvm_revision) os.symlink("../../clang", llvm_source_dir + "/tools/clang") os.symlink("../../compiler-rt", llvm_source_dir + "/projects/compiler-rt") @@ -149,14 +157,12 @@ else: cc = "/usr/bin/gcc" cxx = "/usr/bin/g++" -build_one_stage({"CC" : cc, - "CXX" : cxx }, - stage1_dir, True) +build_one_stage({"CC": cc, "CXX": cxx}, stage1_dir) stage2_dir = build_dir + '/stage2' -build_one_stage({"CC" : stage1_inst_dir + "/bin/clang %s" % extra_cflags, - "CXX" : stage1_inst_dir + "/bin/clang++ %s" % extra_cxxflags}, - stage2_dir, False) +build_one_stage({"CC": stage1_inst_dir + "/bin/clang %s" % extra_cflags, + "CXX": stage1_inst_dir + "/bin/clang++ %s" % extra_cxxflags}, + stage2_dir) build_tar_package("tar", "clang.tar.bz2", stage2_dir, "clang") build_tooltool_manifest() diff --git a/build/unix/build-clang/no-sse-on-linux.patch b/build/unix/build-clang/no-sse-on-linux.patch dissimilarity index 80% index 1d6f9149f852..6ba20b647de4 100644 --- a/build/unix/build-clang/no-sse-on-linux.patch +++ b/build/unix/build-clang/no-sse-on-linux.patch @@ -1,13 +1,13 @@ -Index: lib/Driver/Tools.cpp -=================================================================== ---- lib/Driver/Tools.cpp (revision 167750) -+++ lib/Driver/Tools.cpp (working copy) -@@ -1179,7 +1179,7 @@ - else if (getToolChain().getArch() == llvm::Triple::x86) - // All x86 devices running Android have core2 as their common - // denominator. This makes a better choice than pentium4. -- CPUName = isAndroid ? "core2" : "pentium4"; -+ CPUName = "i686"; - } - } - +Index: lib/Driver/Tools.cpp +=================================================================== +--- lib/Driver/Tools.cpp (revision 181515) ++++ lib/Driver/Tools.cpp (working copy) +@@ -1245,7 +1245,7 @@ + // All x86 devices running Android have core2 as their common + // denominator. This makes a better choice than pentium4. + if (Triple.getEnvironment() == llvm::Triple::Android) +- return "core2"; ++ return "686"; + + // Fallback to p4. + return "pentium4"; -- 2.11.4.GIT