| Index: pylib/gyp/mac_tool.py
|
| diff --git a/pylib/gyp/mac_tool.py b/pylib/gyp/mac_tool.py
|
| index eeeaceb0c7aa2388635855260b3d63edc58cd73a..8a6fe964ea830ce2ecb49e1d2e6e015a90522b82 100755
|
| --- a/pylib/gyp/mac_tool.py
|
| +++ b/pylib/gyp/mac_tool.py
|
| @@ -8,6 +8,7 @@
|
| These functions are executed via gyp-mac-tool when using the Makefile generator.
|
| """
|
|
|
| +import errno
|
| import fcntl
|
| import fnmatch
|
| import glob
|
| @@ -153,7 +154,7 @@ class MacTool(object):
|
|
|
| # Go through all the environment variables and replace them as variables in
|
| # the file.
|
| - IDENT_RE = re.compile(r'[/\s]')
|
| + IDENT_RE = re.compile(r'[/\s_-]')
|
| for key in os.environ:
|
| if key.startswith('_'):
|
| continue
|
| @@ -341,6 +342,64 @@ class MacTool(object):
|
| command_line.extend(map(os.path.abspath, inputs))
|
| subprocess.check_call(command_line)
|
|
|
| + def _EnsureDirExists(self, dir_path):
|
| + if not os.path.exists(dir_path):
|
| + try:
|
| + os.makedirs(dir_path)
|
| + except OSError as exc:
|
| + if exc.errno != errno.EEXIST:
|
| + raise
|
| +
|
| + def _MakeStamp(self, stamp):
|
| + self._EnsureDirExists(os.path.dirname(stamp))
|
| + subprocess.check_call(['touch', stamp])
|
| +
|
| + def ExecCopySwiftLibs(self, executable_path, platform, dst_path, codesign_key,
|
| + stamp):
|
| + args = [
|
| + 'xcrun', 'swift-stdlib-tool', '--copy',
|
| + '--scan-executable', executable_path,
|
| + '--platform', platform,
|
| + '--destination', dst_path,
|
| + ]
|
| + if codesign_key:
|
| + args.extend(['--sign', codesign_key])
|
| +
|
| + # Using only PATH variable from environment,
|
| + # to prevent swift-stdlib-tool from using variables like
|
| + # CODE_SIGNING_REQUIRED which may be set by Xcode
|
| + env = {'PATH' : os.environ.get('PATH', '')}
|
| + p = subprocess.Popen(args, env=env)
|
| + retcode = p.wait()
|
| + if retcode != 0:
|
| + raise subprocess.CalledProcessError(retcode, args)
|
| +
|
| + self._MakeStamp(stamp)
|
| +
|
| + def ExecBuildModuleMapFile(self, module_name, umbrella_header, map_file,
|
| + stamp):
|
| + self._EnsureDirExists(os.path.dirname(map_file))
|
| + with open(map_file, 'w') as f:
|
| + f.write(
|
| + 'framework module %s {\n'
|
| + ' umbrella header \"%s\"\n'
|
| + ' export *\n'
|
| + ' module * { export * }\n'
|
| + '}\n' % (module_name, umbrella_header))
|
| +
|
| + self._MakeStamp(stamp)
|
| +
|
| + def ExecAppendSwiftToModuleMapFile(self, module_name, swift_header, map_file,
|
| + stamp):
|
| + self._EnsureDirExists(os.path.dirname(map_file))
|
| + with open(map_file, 'a') as f:
|
| + f.write(
|
| + 'module %s.Swift {\n'
|
| + ' header \"%s\"\n'
|
| + '}\n' % (module_name, swift_header))
|
| +
|
| + self._MakeStamp(stamp)
|
| +
|
| def ExecMergeInfoPlist(self, output, *inputs):
|
| """Merge multiple .plist files into a single .plist file."""
|
| merged_plist = {}
|
|
|