Add a post-sync hook to generate the package_config.json file.
Change-Id: I19967e8ae7eaa4e3071e335e43932e27128d8173
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/235764
Reviewed-by: Alexander Thomas <athom@google.com>
Commit-Queue: Devon Carew <devoncarew@google.com>
diff --git a/DEPS b/DEPS
index ea1fd32..3da1ec8 100644
--- a/DEPS
+++ b/DEPS
@@ -698,6 +698,12 @@
hooks = [
{
+ # Generate the .dart_tool/package_confg.json file.
+ 'name': 'Generate .dart_tool/package_confg.json',
+ 'pattern': '.',
+ 'action': ['python3', 'sdk/tools/generate_package_config.py'],
+ },
+ {
# Pull Debian sysroot for i386 Linux
'name': 'sysroot_i386',
'pattern': '.',
diff --git a/tools/generate_package_config.py b/tools/generate_package_config.py
new file mode 100644
index 0000000..b763b3d
--- /dev/null
+++ b/tools/generate_package_config.py
@@ -0,0 +1,48 @@
+#!/usr/bin/env python3
+# Copyright (c) 2022, the Dart project authors. Please see the AUTHORS file
+# for details. All rights reserved. Use of this source code is governed by a
+# BSD-style license that can be found in the LICENSE file.
+
+# Invoke the `tools/generate_package_config.dart` script.
+
+import os
+import os.path
+import platform
+import subprocess
+import sys
+
+USE_PYTHON3 = True
+
+
+def is_windows():
+ os_id = platform.system()
+ return os_id == 'Windows'
+
+
+def checked_in_sdk_path():
+ tools_dir = os.path.dirname(os.path.realpath(__file__))
+ return os.path.join(tools_dir, 'sdks', 'dart-sdk')
+
+
+def checked_in_sdk_executable():
+ name = 'dart'
+ if is_windows():
+ name = 'dart.exe'
+ return os.path.join(checked_in_sdk_path(), 'bin', name)
+
+
+def generate_package_config():
+ tools_dir = os.path.dirname(os.path.realpath(__file__))
+ process = subprocess.run([
+ checked_in_sdk_executable(),
+ os.path.join(tools_dir, 'generate_package_config.dart')
+ ])
+ return process.returncode
+
+
+def Main():
+ sys.exit(generate_package_config())
+
+
+if __name__ == '__main__':
+ Main()