Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
116 changes: 3 additions & 113 deletions engine/src/flutter/build/dart/tools/dart_pkg.py
Original file line number Diff line number Diff line change
Expand Up @@ -14,16 +14,11 @@
import subprocess
import sys

USE_LINKS = sys.platform != 'win32'

DART_ANALYZE = os.path.join(os.path.dirname(os.path.abspath(__file__)), 'dart_analyze.py')


def dart_filter(path):
if os.path.isdir(path):
return True
_, ext = os.path.splitext(path)
# .dart includes '.mojom.dart'
return ext == '.dart'


Expand All @@ -41,21 +36,6 @@ def has_pubspec_yaml(paths):
return False


def link(from_root, to_root):
ensure_dir_exists(os.path.dirname(to_root))
try:
os.unlink(to_root)
except OSError as err:
if err.errno == errno.ENOENT:
pass

try:
os.symlink(from_root, to_root)
except OSError as err:
if err.errno == errno.EEXIST:
pass


def copy(from_root, to_root, filter_func=None):
if not os.path.exists(from_root):
return
Expand Down Expand Up @@ -84,18 +64,6 @@ def copy(from_root, to_root, filter_func=None):
dirs[:] = list(filter(wrapped_filter, dirs))


def copy_or_link(from_root, to_root, filter_func=None):
if USE_LINKS:
link(from_root, to_root)
else:
copy(from_root, to_root, filter_func)


def link_if_possible(from_root, to_root):
if USE_LINKS:
link(from_root, to_root)


def remove_if_exists(path):
try:
os.remove(path)
Expand All @@ -118,47 +86,6 @@ def list_files(from_root, filter_func=None):
return file_list


def remove_broken_symlink(path):
if not USE_LINKS:
return
try:
link_path = os.readlink(path)
except OSError as err:
# Path was not a symlink.
if err.errno == errno.EINVAL:
pass
else:
if not os.path.exists(link_path):
remove_if_exists(path)


def remove_broken_symlinks(root_dir):
if not USE_LINKS:
return
for current_dir, _, child_files in os.walk(root_dir):
for filename in child_files:
path = os.path.join(current_dir, filename)
remove_broken_symlink(path)


def analyze_entrypoints(dart_sdk, package_root, entrypoints):
cmd = ['python', DART_ANALYZE]
cmd.append('--dart-sdk')
cmd.append(dart_sdk)
cmd.append('--entrypoints')
cmd.extend(entrypoints)
cmd.append('--package-root')
cmd.append(package_root)
cmd.append('--no-hints')
try:
subprocess.check_output(cmd, stderr=subprocess.STDOUT)
except subprocess.CalledProcessError as err:
print('Failed analyzing %s' % entrypoints)
print(err.output)
return err.returncode
return 0


def main():
parser = argparse.ArgumentParser(description='Generate a dart-pkg')
parser.add_argument(
Expand All @@ -177,23 +104,10 @@ def main():
help='Directory where dart_pkg should go',
required=True
)
parser.add_argument(
'--package-root', metavar='package_root', help='packages/ directory', required=True
)
parser.add_argument('--stamp-file', metavar='stamp_file', help='timestamp file', required=True)
parser.add_argument(
'--entries-file', metavar='entries_file', help='script entries file', required=True
)
parser.add_argument(
'--package-sources', metavar='package_sources', help='Package sources', nargs='+'
)
parser.add_argument(
'--package-entrypoints',
metavar='package_entrypoints',
help='Package entry points for analyzer',
nargs='*',
default=[]
)
parser.add_argument(
'--sdk-ext-directories',
metavar='sdk_ext_directories',
Expand Down Expand Up @@ -249,14 +163,7 @@ def main():
for source in args.package_sources:
relative_source = os.path.relpath(source, common_source_prefix)
target = os.path.join(target_dir, relative_source)
copy_or_link(source, target)

entrypoint_targets = []
for source in args.package_entrypoints:
relative_source = os.path.relpath(source, common_source_prefix)
target = os.path.join(target_dir, relative_source)
copy_or_link(source, target)
entrypoint_targets.append(target)
copy(source, target)

# Copy sdk-ext sources into pkg directory
sdk_ext_dir = os.path.join(target_dir, 'sdk_ext')
Expand All @@ -266,30 +173,13 @@ def main():
for source in sdk_ext_sources:
relative_source = os.path.relpath(source, common_prefix)
target = os.path.join(sdk_ext_dir, relative_source)
copy_or_link(source, target)
copy(source, target)

common_source_prefix = os.path.dirname(os.path.commonprefix(args.sdk_ext_files))
for source in args.sdk_ext_files:
relative_source = os.path.relpath(source, common_source_prefix)
target = os.path.join(sdk_ext_dir, relative_source)
copy_or_link(source, target)

# Symlink packages/
package_path = os.path.join(args.package_root, args.package_name)
copy_or_link(lib_path, package_path)

# Link dart-pkg/$package/packages to dart-pkg/packages
link_if_possible(args.package_root, target_packages_dir)

# Remove any broken symlinks in target_dir and package root.
remove_broken_symlinks(target_dir)
remove_broken_symlinks(args.package_root)

# If any entrypoints are defined, write them to disk so that the analyzer
# test can find them.
with open(args.entries_file, 'w') as file:
for entrypoint in entrypoint_targets:
file.write(entrypoint + '\n')
copy(source, target)

# Write stamp file.
with open(args.stamp_file, 'w'):
Expand Down
1 change: 0 additions & 1 deletion engine/src/flutter/sky/dist/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@ if (is_android) {
source = "$root_gen_dir/dart-pkg/sky_engine"
dest = "$root_build_dir/dist/packages/sky_engine"

inputs = [ source ]
outputs = [ dest ]

args = [
Expand Down
13 changes: 1 addition & 12 deletions engine/src/flutter/sky/packages/sky_engine/BUILD.gn
Original file line number Diff line number Diff line change
Expand Up @@ -293,9 +293,7 @@ generated_file("_embedder_yaml") {
action("sky_engine") {
package_name = "sky_engine"
pkg_directory = rebase_path("$root_gen_dir/dart-pkg")
package_root = rebase_path("$root_gen_dir/dart-pkg/packages")
stamp_file = "$root_gen_dir/dart-pkg/${package_name}.stamp"
entries_file = "$root_gen_dir/dart-pkg/${package_name}.entries"

sources = [
"LICENSE",
Expand All @@ -322,12 +320,7 @@ action("sky_engine") {
"$service_isolate_dir/vmservice_server.dart",
]

outputs = [
"$root_gen_dir/dart-pkg/${package_name}",
"$root_gen_dir/dart-pkg/${package_name}/pubspec.yaml",
"$root_gen_dir/dart-pkg/packages/${package_name}",
stamp_file,
]
outputs = [ stamp_file ]

script = rebase_path("//flutter/build/dart/tools/dart_pkg.py", ".", "//")

Expand All @@ -340,12 +333,8 @@ action("sky_engine") {
rebase_path(dart_sdk_root),
"--pkg-directory",
pkg_directory,
"--package-root",
package_root,
"--stamp-file",
rebase_path(stamp_file),
"--entries-file",
rebase_path(entries_file),
"--package-sources",
] + rebase_path(sources) + [ "--sdk-ext-directories" ] +
rebase_path(sdk_ext_directory) + [ "--sdk-ext-files" ] +
Expand Down