| Index: third_party/mojo/src/mojo/public/tools/dart_pkg.py
|
| diff --git a/third_party/mojo/src/mojo/public/tools/dart_pkg.py b/third_party/mojo/src/mojo/public/tools/dart_pkg.py
|
| index d0f0d6ebb18b767bd5eadfbfdbdab602a40691c7..86ae5d5b83c36ad3eeed10bdbbf916daa853cd27 100755
|
| --- a/third_party/mojo/src/mojo/public/tools/dart_pkg.py
|
| +++ b/third_party/mojo/src/mojo/public/tools/dart_pkg.py
|
| @@ -8,6 +8,7 @@
|
|
|
| import argparse
|
| import errno
|
| +import json
|
| import os
|
| import shutil
|
| import sys
|
| @@ -47,8 +48,9 @@ def mojom_filter(path):
|
|
|
|
|
| def ensure_dir_exists(path):
|
| - if not os.path.exists(path):
|
| - os.makedirs(path)
|
| + abspath = os.path.abspath(path)
|
| + if not os.path.exists(abspath):
|
| + os.makedirs(abspath)
|
|
|
|
|
| def has_pubspec_yaml(paths):
|
| @@ -105,6 +107,13 @@ def copy_or_link(from_root, to_root, filter_func=None):
|
| copy(from_root, to_root, filter_func)
|
|
|
|
|
| +def remove_if_exists(path):
|
| + try:
|
| + os.remove(path)
|
| + except OSError as e:
|
| + if e.errno != errno.ENOENT:
|
| + raise
|
| +
|
| def list_files(from_root, filter_func=None):
|
| file_list = []
|
| for root, dirs, files in os.walk(from_root):
|
| @@ -187,13 +196,39 @@ def main():
|
| help='Directory containing .dart sources',
|
| nargs='*',
|
| default=[])
|
| + parser.add_argument('--sdk-ext-files',
|
| + metavar='sdk_ext_files',
|
| + help='List of .dart files that are part of of sdk_ext.',
|
| + nargs='*',
|
| + default=[])
|
| + parser.add_argument('--sdk-ext-mappings',
|
| + metavar='sdk_ext_mappings',
|
| + help='Mappings for SDK extension libraries.',
|
| + nargs='*',
|
| + default=[])
|
| args = parser.parse_args()
|
|
|
| # We must have a pubspec.yaml.
|
| assert has_pubspec_yaml(args.package_sources)
|
|
|
| - # Copy or symlink package sources into pkg directory.
|
| target_dir = os.path.join(args.pkg_directory, args.package_name)
|
| + lib_path = os.path.join(target_dir, "lib")
|
| +
|
| + mappings = {}
|
| + for mapping in args.sdk_ext_mappings:
|
| + library, path = mapping.split(',', 1)
|
| + mappings[library] = '../sdk_ext/%s' % path
|
| +
|
| + sdkext_path = os.path.join(lib_path, '_sdkext')
|
| + if mappings:
|
| + ensure_dir_exists(lib_path)
|
| + with open(sdkext_path, 'w') as stream:
|
| + json.dump(mappings, stream, sort_keys=True,
|
| + indent=2, separators=(',', ': '))
|
| + else:
|
| + remove_if_exists(sdkext_path)
|
| +
|
| + # Copy or symlink package sources into pkg directory.
|
| common_source_prefix = os.path.commonprefix(args.package_sources)
|
| for source in args.package_sources:
|
| relative_source = os.path.relpath(source, common_source_prefix)
|
| @@ -209,8 +244,12 @@ def main():
|
| relative_source = os.path.relpath(source, common_prefix)
|
| target = os.path.join(sdk_ext_dir, relative_source)
|
| copy_or_link(source, target)
|
| + for source in args.sdk_ext_files:
|
| + common_prefix = os.path.commonprefix(args.sdk_ext_files)
|
| + relative_source = os.path.relpath(source, common_prefix)
|
| + target = os.path.join(sdk_ext_dir, relative_source)
|
| + copy_or_link(source, target)
|
|
|
| - lib_path = os.path.join(target_dir, "lib")
|
| lib_mojom_path = os.path.join(lib_path, "mojom")
|
|
|
| # Copy generated mojom.dart files.
|
|
|