Skip to content

Commit

Permalink
Upgrade GYP to r1115
Browse files Browse the repository at this point in the history
  • Loading branch information
ry committed Dec 21, 2011
1 parent f7f8af8 commit 60a9e1e
Show file tree
Hide file tree
Showing 15 changed files with 399 additions and 95 deletions.
81 changes: 70 additions & 11 deletions tools/gyp/buildbot/buildbot_run.py
Original file line number Diff line number Diff line change
Expand Up @@ -13,7 +13,45 @@
import sys


def GypTestFormat(title, format, msvs_version=None):
if sys.platform in ['win32', 'cygwin']:
EXE_SUFFIX = '.exe'
else:
EXE_SUFFIX = ''


BUILDBOT_DIR = os.path.dirname(os.path.abspath(__file__))
TRUNK_DIR = os.path.dirname(BUILDBOT_DIR)
ROOT_DIR = os.path.dirname(TRUNK_DIR)
OUT_DIR = os.path.join(TRUNK_DIR, 'out')
NINJA_PATH = os.path.join(TRUNK_DIR, 'ninja' + EXE_SUFFIX)
NINJA_WORK_DIR = os.path.join(ROOT_DIR, 'ninja_work')


def InstallNinja():
"""Install + build ninja.
Returns:
0 for success, 1 for failure.
"""
print '@@@BUILD_STEP install ninja@@@'
# Delete old version if any.
try:
shutil.rmtree(NINJA_WORK_DIR, ignore_errors=True)
except:
pass
# Sync new copy from git.
subprocess.check_call(
'git clone https://github.com/martine/ninja.git ' + NINJA_WORK_DIR,
shell=True)
# Bootstrap.
subprocess.check_call('./bootstrap.sh', cwd=NINJA_WORK_DIR, shell=True)
# Copy out ninja.
shutil.copyfile(os.path.join(NINJA_WORK_DIR, 'ninja' + EXE_SUFFIX),
NINJA_PATH)
os.chmod(NINJA_PATH, 0777)


def GypTestFormat(title, format=None, msvs_version=None):
"""Run the gyp tests for a given format, emitting annotator tags.
See annotator docs at:
Expand All @@ -23,12 +61,27 @@ def GypTestFormat(title, format, msvs_version=None):
Returns:
0 for sucesss, 1 for failure.
"""
if not format:
format = title

# Install ninja if needed.
# NOTE: as ninja gets installed each time, regressions to ninja can come
# either from changes to ninja itself, or changes to gyp.
if format == 'ninja':
try:
InstallNinja()
except Exception, e:
print '@@@STEP_FAILURE@@@'
print str(e)
return 1

print '@@@BUILD_STEP ' + title + '@@@'
sys.stdout.flush()
buildbot_dir = os.path.dirname(os.path.abspath(__file__))
trunk_dir = os.path.dirname(buildbot_dir)
root_dir = os.path.dirname(trunk_dir)
env = os.environ.copy()
# TODO(bradnelson): remove this when this issue is resolved:
# http://code.google.com/p/chromium/issues/detail?id=108251
if format == 'ninja':
env['NOGOLD'] = '1'
if msvs_version:
env['GYP_MSVS_VERSION'] = msvs_version
retcode = subprocess.call(' '.join(
Expand All @@ -38,7 +91,7 @@ def GypTestFormat(title, format, msvs_version=None):
'--format', format,
'--chdir', 'trunk',
'--path', '../scons']),
cwd=root_dir, env=env, shell=True)
cwd=ROOT_DIR, env=env, shell=True)
if retcode:
# Emit failure tag, and keep going.
print '@@@STEP_FAILURE@@@'
Expand All @@ -49,17 +102,23 @@ def GypTestFormat(title, format, msvs_version=None):
def GypBuild():
# Dump out/ directory.
print '@@@BUILD_STEP cleanup@@@'
print 'Removing out/ ...'
shutil.rmtree('out', ignore_errors=True)
print 'Removing %s...' % OUT_DIR
shutil.rmtree(OUT_DIR, ignore_errors=True)
print 'Removing %s...' % NINJA_WORK_DIR
shutil.rmtree(NINJA_WORK_DIR, ignore_errors=True)
print 'Removing %s...' % NINJA_PATH
shutil.rmtree(NINJA_PATH, ignore_errors=True)
print 'Done.'

retcode = 0
if sys.platform.startswith('linux'):
retcode += GypTestFormat('scons', format='scons')
retcode += GypTestFormat('make', format='make')
retcode += GypTestFormat('ninja')
retcode += GypTestFormat('scons')
retcode += GypTestFormat('make')
elif sys.platform == 'darwin':
retcode += GypTestFormat('xcode', format='xcode')
retcode += GypTestFormat('make', format='make')
retcode += GypTestFormat('ninja')
retcode += GypTestFormat('xcode')
retcode += GypTestFormat('make')
elif sys.platform == 'win32':
retcode += GypTestFormat('msvs-2008', format='msvs', msvs_version='2008')
if os.environ['BUILDBOT_BUILDERNAME'] == 'gyp-win64':
Expand Down
2 changes: 1 addition & 1 deletion tools/gyp/gyptest.py
Original file line number Diff line number Diff line change
Expand Up @@ -212,7 +212,7 @@ def main(argv=None):
'win32': ['msvs'],
'linux2': ['make', 'ninja'],
'linux3': ['make', 'ninja'],
'darwin': ['make', 'xcode'],
'darwin': ['make', 'ninja', 'xcode'],
}[sys.platform]

for format in format_list:
Expand Down
12 changes: 12 additions & 0 deletions tools/gyp/pylib/gyp/common.py
Original file line number Diff line number Diff line change
Expand Up @@ -344,6 +344,18 @@ def close(self):
return Writer()


def GetFlavor(params):
"""Returns |params.flavor| if it's set, the system's default flavor else."""
flavors = {
'darwin': 'mac',
'sunos5': 'solaris',
'freebsd7': 'freebsd',
'freebsd8': 'freebsd',
}
flavor = flavors.get(sys.platform, 'linux')
return params.get('flavor', flavor)


# From Alex Martelli,
# http://aspn.activestate.com/ASPN/Cookbook/Python/Recipe/52560
# ASPN: Python Cookbook: Remove duplicates from a sequence
Expand Down
15 changes: 2 additions & 13 deletions tools/gyp/pylib/gyp/generator/dump_dependency_json.py
Original file line number Diff line number Diff line change
Expand Up @@ -25,21 +25,10 @@
generator_default_variables[unused] = ''


def GetFlavor(params):
"""Returns |params.flavor| if it's set, the system's default flavor else."""
flavors = {
'darwin': 'mac',
'sunos5': 'solaris',
'freebsd7': 'freebsd',
'freebsd8': 'freebsd',
}
flavor = flavors.get(sys.platform, 'linux')
return params.get('flavor', flavor)


def CalculateVariables(default_variables, params):
generator_flags = params.get('generator_flags', {})
default_variables['OS'] = generator_flags.get('os', GetFlavor(params))
default_variables['OS'] = generator_flags.get(
'os', gyp.common.GetFlavor(params))


def CalculateGeneratorInputInfo(params):
Expand Down
16 changes: 2 additions & 14 deletions tools/gyp/pylib/gyp/generator/make.py
Original file line number Diff line number Diff line change
Expand Up @@ -55,25 +55,13 @@
generator_wants_sorted_dependencies = False


def GetFlavor(params):
"""Returns |params.flavor| if it's set, the system's default flavor else."""
flavors = {
'darwin': 'mac',
'sunos5': 'solaris',
'freebsd7': 'freebsd',
'freebsd8': 'freebsd',
}
flavor = flavors.get(sys.platform, 'linux')
return params.get('flavor', flavor)


def CalculateVariables(default_variables, params):
"""Calculate additional variables for use in the build (called by gyp)."""
cc_target = os.environ.get('CC.target', os.environ.get('CC', 'cc'))
default_variables['LINKER_SUPPORTS_ICF'] = \
gyp.system_test.TestLinkerSupportsICF(cc_command=cc_target)

flavor = GetFlavor(params)
flavor = gyp.common.GetFlavor(params)
if flavor == 'mac':
default_variables.setdefault('OS', 'mac')
default_variables.setdefault('SHARED_LIB_SUFFIX', '.dylib')
Expand Down Expand Up @@ -2722,7 +2710,7 @@ def CopyTool(flavor, out_path):

def GenerateOutput(target_list, target_dicts, data, params):
options = params['options']
flavor = GetFlavor(params)
flavor = gyp.common.GetFlavor(params)
generator_flags = params.get('generator_flags', {})
builddir_name = generator_flags.get('output_dir', 'out')
android_ndk_version = generator_flags.get('android_ndk_version', None)
Expand Down
Loading

0 comments on commit 60a9e1e

Please sign in to comment.