mirror of
https://github.com/flutter/flutter.git
synced 2025-06-03 00:51:18 +00:00
Make hash script for Frob (#157390)
All engine hashing is required to be version controlled, otherwise you'll be broken.
This commit is contained in:
parent
b2026572db
commit
4af4a9b282
@ -2238,6 +2238,7 @@ const Set<String> kExecutableAllowlist = <String>{
|
|||||||
|
|
||||||
'dev/tools/gen_keycodes/bin/gen_keycodes',
|
'dev/tools/gen_keycodes/bin/gen_keycodes',
|
||||||
'dev/tools/repackage_gradle_wrapper.sh',
|
'dev/tools/repackage_gradle_wrapper.sh',
|
||||||
|
'dev/tools/bin/engine_hash.sh',
|
||||||
|
|
||||||
'packages/flutter_tools/bin/macos_assemble.sh',
|
'packages/flutter_tools/bin/macos_assemble.sh',
|
||||||
'packages/flutter_tools/bin/tool_backend.sh',
|
'packages/flutter_tools/bin/tool_backend.sh',
|
||||||
|
@ -2,6 +2,14 @@
|
|||||||
// Use of this source code is governed by a BSD-style license that can be
|
// Use of this source code is governed by a BSD-style license that can be
|
||||||
// found in the LICENSE file.
|
// found in the LICENSE file.
|
||||||
|
|
||||||
|
// ---------------------------------- NOTE ----------------------------------
|
||||||
|
//
|
||||||
|
// We must keep the logic in this file consistent with the logic in the
|
||||||
|
// `engine_hash.sh` script in the same directory to ensure that Flutter
|
||||||
|
// continues to work across all platforms!
|
||||||
|
//
|
||||||
|
// --------------------------------------------------------------------------
|
||||||
|
|
||||||
import 'dart:async';
|
import 'dart:async';
|
||||||
import 'dart:convert';
|
import 'dart:convert';
|
||||||
import 'dart:io';
|
import 'dart:io';
|
||||||
@ -91,7 +99,7 @@ Future<String> engineHash(
|
|||||||
<String>[
|
<String>[
|
||||||
'git',
|
'git',
|
||||||
'merge-base',
|
'merge-base',
|
||||||
'upstream/main',
|
'upstream/master',
|
||||||
'HEAD',
|
'HEAD',
|
||||||
],
|
],
|
||||||
);
|
);
|
||||||
|
74
dev/tools/bin/engine_hash.sh
Executable file
74
dev/tools/bin/engine_hash.sh
Executable file
@ -0,0 +1,74 @@
|
|||||||
|
#!/usr/bin/env bash
|
||||||
|
# Copyright 2014 The Flutter Authors. All rights reserved.
|
||||||
|
# Use of this source code is governed by a BSD-style license that can be
|
||||||
|
# found in the LICENSE file.
|
||||||
|
|
||||||
|
# ---------------------------------- NOTE ---------------------------------- #
|
||||||
|
#
|
||||||
|
# We must keep the logic in this file consistent with the logic in the
|
||||||
|
# `engine_hash.dart` script in the same directory to ensure that Flutter
|
||||||
|
# continues to work across all platforms!
|
||||||
|
#
|
||||||
|
# -------------------------------------------------------------------------- #
|
||||||
|
|
||||||
|
# TODO(codefu): Add a test that this always outputs the same hash as
|
||||||
|
# `engine_hash.dart` when the repositories are merged
|
||||||
|
|
||||||
|
STRATEGY=head
|
||||||
|
|
||||||
|
HELP=$(
|
||||||
|
cat <<EOF
|
||||||
|
Calculate the hash signature for the Flutter Engine\n
|
||||||
|
\t-s|--strategy\t<head,mergeBase>\n
|
||||||
|
\t\tthead: hash from git HEAD\n
|
||||||
|
\t\tmergeBase: hash from the merge-base of HEAD and upstream/master\n
|
||||||
|
EOF
|
||||||
|
)
|
||||||
|
|
||||||
|
function print_help() {
|
||||||
|
if [ "${1:-0}" -eq 0 ]; then
|
||||||
|
echo -e $HELP
|
||||||
|
exit 0
|
||||||
|
else
|
||||||
|
echo >&2 -e $HELP
|
||||||
|
exit $1
|
||||||
|
fi
|
||||||
|
}
|
||||||
|
|
||||||
|
while [[ "$#" -gt 0 ]]; do
|
||||||
|
case $1 in
|
||||||
|
-s | --strategy)
|
||||||
|
STRATEGY="$2"
|
||||||
|
shift # past argument
|
||||||
|
shift # past value
|
||||||
|
;;
|
||||||
|
-h | --help)
|
||||||
|
print_help
|
||||||
|
;;
|
||||||
|
-* | --*)
|
||||||
|
echo >&2 -e "Unknown option $1\n"
|
||||||
|
print_help 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
done
|
||||||
|
|
||||||
|
BASE=HEAD
|
||||||
|
case $STRATEGY in
|
||||||
|
head) ;;
|
||||||
|
mergeBase)
|
||||||
|
BASE=$(git merge-base upstream/master HEAD)
|
||||||
|
;;
|
||||||
|
*)
|
||||||
|
echo >&2 -e "Unknown strategy $1\n"
|
||||||
|
print_help 1
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
|
||||||
|
LSTREE=$(git ls-tree -r $BASE engine DEPS)
|
||||||
|
if [ ${#LSTREE} -eq 0 ]; then
|
||||||
|
echo >&2 Error calculating engine hash: Not in a monorepo
|
||||||
|
exit 1
|
||||||
|
else
|
||||||
|
HASH=$(echo "$LSTREE" | sha1sum | head -c 40)
|
||||||
|
echo $HASH
|
||||||
|
fi
|
@ -16,7 +16,7 @@ void main() {
|
|||||||
(
|
(
|
||||||
exe: 'git',
|
exe: 'git',
|
||||||
command: 'merge-base',
|
command: 'merge-base',
|
||||||
rest: <String>['upstream/main', 'HEAD'],
|
rest: <String>['upstream/master', 'HEAD'],
|
||||||
exitCode: 0,
|
exitCode: 0,
|
||||||
stdout: 'abcdef1234',
|
stdout: 'abcdef1234',
|
||||||
stderr: null
|
stderr: null
|
||||||
|
Loading…
Reference in New Issue
Block a user