Commit 8a049c09 authored by brettw's avatar brettw Committed by Commit bot

Revert of Simplify landmines code a bit now that all branches of all platforms...

Revert of Simplify landmines code a bit now that all branches of all platforms are on ninja (patchset #2 id:20001 of https://codereview.chromium.org/2071463002/ )

Reason for revert:
I just synced on Windows and this is giving me:

________ running 'D:\depot_tools\python276_bin\python.exe src/build/landmines.py
' in 'D:\src\src1'
Traceback (most recent call last):
  File "D:\src\src1\src\build\get_landmines.py", line 16, in <module>
    builder = landmine_utils.builder
AttributeError: 'module' object has no attribute 'builder'
Clobbering due to:
--- old_landmines       Tue Aug 12 16:34:51 2014
+++ new_landmines       Fri Jul 29 15:16:56 2016
@@ -1,17 +0,0 @@
-Compile on cc_unittests fails due to symbols removed in r185063.
-Improper dependency for create_nmf.py broke in r240802, fixed in r240860.
-Switch to VS2015 Update 2
-Need to clobber everything due to an IDL change in r154579 (blink)
-Need to clobber everything due to gen file moves in r175513 (Blink)
-Clobber to get rid of obselete test plugin after r248358
-Clobber to rebuild GN files for V8
-Clobber to get rid of stale generated mojom.h files
-Need to clobber everything due to build_nexe change in nacl r13424
-[chromium-dev] PSA: clobber build needed for IDR_INSPECTOR_* compil...
-blink_resources.grd changed: crbug.com/400860
-ninja dependency cycle: crbug.com/408192
-Clobber to fix missing NaCl gyp dependencies (crbug.com/427427).
-Another clobber for missing NaCl gyp deps (crbug.com/427427).
-Clobber to fix GN not picking up increased ID range (crbug.com/444902)
-Remove NaCl toolchains from the output dir (crbug.com/456902)
-Clobber to delete stale generated files (crbug.com/510086)

Original issue's description:
> Simplify landmines code a bit now that all branches of all platforms are on ninja
>
> BUG=none
>
> Committed: https://crrev.com/7491d14275670fad399837445b6c1e76ff498a50
> Cr-Commit-Position: refs/heads/master@{#408739}

TBR=iannucci@chromium.org,thakis@chromium.org
# Skipping CQ checks because original CL landed less than 1 days ago.
NOPRESUBMIT=true
NOTREECHECKS=true
NOTRY=true
BUG=none

Review-Url: https://codereview.chromium.org/2198583002
Cr-Commit-Position: refs/heads/master@{#408784}
parent dc54866f
......@@ -30,26 +30,27 @@ def print_landmines():
# dependency problems, fix the dependency problems instead of adding a
# landmine.
if distributor() == 'goma' and platform() == 'win32':
if (distributor() == 'goma' and platform() == 'win32' and
builder() == 'ninja'):
print 'Need to clobber winja goma due to backend cwd cache fix.'
if platform() == 'android':
print 'Clobber: to handle new way of suppressing findbugs failures.'
print 'Clobber to fix gyp not rename package name (crbug.com/457038)'
if platform() == 'win':
if platform() == 'win' and builder() == 'ninja':
print 'Compile on cc_unittests fails due to symbols removed in r185063.'
if platform() == 'linux':
if platform() == 'linux' and builder() == 'ninja':
print 'Builders switching from make to ninja will clobber on this.'
if platform() == 'mac':
print 'Switching from bundle to unbundled dylib (issue 14743002).'
if platform() in ('win', 'mac'):
print ('Improper dependency for create_nmf.py broke in r240802, '
'fixed in r240860.')
if (platform() == 'win' and
if (platform() == 'win' and builder() == 'ninja' and
gyp_msvs_version() == '2012' and
gyp_defines().get('target_arch') == 'x64' and
gyp_defines().get('dcheck_always_on') == '1'):
print "Switched win x64 trybots from VS2010 to VS2012."
if (platform() == 'win' and
if (platform() == 'win' and builder() == 'ninja' and
gyp_msvs_version().startswith('2013')):
print "Switch to VS2013"
if (platform() == 'win' and gyp_msvs_version().startswith('2015')):
......
......@@ -47,27 +47,27 @@ def gyp_defines():
return dict(arg.split('=', 1)
for arg in shlex.split(os.environ.get('GYP_DEFINES', '')))
@memoize()
def gyp_generator_flags():
"""Parses and returns GYP_GENERATOR_FLAGS env var as a dictionary."""
return dict(arg.split('=', 1)
for arg in shlex.split(os.environ.get('GYP_GENERATOR_FLAGS', '')))
@memoize()
def gyp_msvs_version():
return os.environ.get('GYP_MSVS_VERSION', '')
@memoize()
def distributor():
"""
Returns a string which is the distributed build engine in use (if any).
Possible values: 'goma', None
Possible values: 'goma', 'ib', ''
"""
if 'goma' in gyp_defines():
return 'goma'
elif IsWindows():
if 'CHROME_HEADLESS' in os.environ:
return 'ib' # use (win and !goma and headless) as approximation of ib
@memoize()
......@@ -87,3 +87,34 @@ def platform():
return 'linux'
else:
return 'mac'
@memoize()
def builder():
"""
Returns a string representing the build engine (not compiler) to use.
Possible values: 'make', 'ninja', 'xcode', 'msvs', 'scons'
"""
if 'GYP_GENERATORS' in os.environ:
# for simplicity, only support the first explicit generator
generator = os.environ['GYP_GENERATORS'].split(',')[0]
if generator.endswith('-android'):
return generator.split('-')[0]
elif generator.endswith('-ninja'):
return 'ninja'
else:
return generator
else:
if platform() == 'android':
# Good enough for now? Do any android bots use make?
return 'ninja'
elif platform() == 'ios':
return 'xcode'
elif IsWindows():
return 'ninja'
elif IsLinux():
return 'ninja'
elif IsMac():
return 'ninja'
else:
assert False, 'Don\'t know what builder we\'re using!'
......@@ -27,28 +27,35 @@ import clobber
import landmine_utils
def get_build_dir(src_dir):
def get_build_dir(build_tool, src_dir, is_iphone=False):
"""
Returns output directory absolute path dependent on build and targets.
Examples:
r'c:\b\build\slave\win\build\src\out'
'/mnt/data/b/build/slave/linux/build/src/out'
'/b/build/slave/ios_rel_device/build/src/out'
'/b/build/slave/ios_rel_device/build/src/xcodebuild'
Keep this function in sync with tools/build/scripts/slave/compile.py
"""
if 'CHROMIUM_OUT_DIR' in os.environ:
output_dir = os.environ.get('CHROMIUM_OUT_DIR').strip()
if not output_dir:
raise Error('CHROMIUM_OUT_DIR environment variable is set but blank!')
ret = None
if build_tool == 'xcode':
ret = os.path.join(src_dir, 'xcodebuild')
elif build_tool in ['make', 'ninja', 'ninja-ios']: # TODO: Remove ninja-ios.
if 'CHROMIUM_OUT_DIR' in os.environ:
output_dir = os.environ.get('CHROMIUM_OUT_DIR').strip()
if not output_dir:
raise Error('CHROMIUM_OUT_DIR environment variable is set but blank!')
else:
output_dir = landmine_utils.gyp_generator_flags().get('output_dir', 'out')
ret = os.path.join(src_dir, output_dir)
else:
output_dir = landmine_utils.gyp_generator_flags().get('output_dir', 'out')
return os.path.abspath(os.path.join(src_dir, output_dir))
raise NotImplementedError('Unexpected GYP_GENERATORS (%s)' % build_tool)
return os.path.abspath(ret)
def clobber_if_necessary(new_landmines, src_dir):
"""Does the work of setting, planting, and triggering landmines."""
out_dir = get_build_dir(src_dir)
out_dir = get_build_dir(landmine_utils.builder(), src_dir)
landmines_path = os.path.normpath(os.path.join(src_dir, '.landmines'))
try:
os.makedirs(out_dir)
......@@ -122,6 +129,9 @@ def process_options():
def main():
options = process_options()
if landmine_utils.builder() in ('dump_dependency_json', 'eclipse'):
return 0
gyp_environment.SetEnvironment()
landmines = []
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment