[bazel] Sort certain things when compiling in incremental mode

Not doing it can lead to the same input producing "different" outputs.

Change-Id: I31fa1d728c2d26cbf1ad008472ea8fce4310794f
Reviewed-on: https://dart-review.googlesource.com/c/sdk/+/117725
Reviewed-by: Johnni Winther <johnniwinther@google.com>
Commit-Queue: Jens Johansen <jensj@google.com>
This commit is contained in:
Jens Johansen 2019-09-19 09:01:17 +00:00 committed by commit-bot@chromium.org
parent 37111633be
commit cdcec63569

View file

@ -18,7 +18,7 @@ import 'package:bazel_worker/bazel_worker.dart';
import 'package:build_integration/file_system/multi_root.dart';
import 'package:dev_compiler/src/kernel/target.dart';
import 'package:front_end/src/api_unstable/bazel_worker.dart' as fe;
import 'package:kernel/ast.dart' show Component, Library;
import 'package:kernel/ast.dart' show Component, Library, Reference;
import 'package:kernel/target/targets.dart';
import 'package:vm/target/vm.dart';
import 'package:vm/target/flutter.dart';
@ -341,6 +341,19 @@ Future<ComputeKernelResult> computeKernel(List<String> args,
includeSources: false, includeOffsets: false));
}
// Make sure the output is stable.
incrementalComponent.libraries.sort((l1, l2) {
return "${l1.fileUri}".compareTo("${l2.fileUri}");
});
incrementalComponent.problemsAsJson?.sort();
incrementalComponent.computeCanonicalNames();
for (Library library in incrementalComponent.libraries) {
library.additionalExports.sort((Reference r1, Reference r2) {
return "${r1.canonicalName}".compareTo("${r2.canonicalName}");
});
library.problemsAsJson?.sort();
}
return Future.value(fe.serializeComponent(incrementalComponent,
filter: excludeNonSources
? (library) => sources.contains(library.importUri)