[ci] use env for format and support arm64 hosts (flutter/engine#56268)

Fixes running x64 binaries on arm64 hosts, this fixes systems like Raspberry Pi's, Apple Silicon, and Ampere.

Before, I would get something like:
```
Checking GN formatting...
Completed checking 0 GN files with no formatting problems.
Checking Java formatting...
No Java files with changes, skipping Java format check.
Checking Python formatting...
All python files formatted correctly.
Checking for trailing whitespace on 1 source file...
No trailing whitespace found.
No header files with changes, skipping header guard check.
Checking C++/ObjC/Shader formatting...
ERROR: Formatter command '/home/ross/flutter-engine/src/flutter/buildtools/linux-x64/clang/bin/clang-format --style=file shell/platform/linux/fl_application_test.cc' failed with exit code 255. Command output follows:

qemu-x86_64: Could not open '/lib64/ld-linux-x86-64.so.2': No such file or directory

Completed checking 0 C++/ObjC/Shader files with no formatting problems
```

Now it just works, I also changed the shell script to use env since `/bin/bash` doesn't exist on NixOS so using env is a more portable solution.

*List which issues are fixed by this PR. You must list at least one issue.*

*If you had to change anything in the [flutter/tests] repo, include a link to the migration guide as per the [breaking change policy].*

[C++, Objective-C, Java style guides]: https://github.com/flutter/engine/blob/main/CONTRIBUTING.md#style
This commit is contained in:
Tristan Ross 2024-12-02 11:04:32 -08:00 committed by GitHub
parent 9f76c9d47e
commit 3ca2049252
2 changed files with 11 additions and 12 deletions

View File

@ -6,6 +6,7 @@
// //
// Run with --help for usage. // Run with --help for usage.
import 'dart:ffi';
import 'dart:io'; import 'dart:io';
import 'package:args/args.dart'; import 'package:args/args.dart';
@ -312,17 +313,15 @@ class ClangFormatChecker extends FormatChecker {
super.allFiles, super.allFiles,
super.messageCallback, super.messageCallback,
}) { }) {
/*late*/ String clangOs; final clangOs = switch (Abi.current()) {
if (Platform.isLinux) { Abi.linuxArm64 => 'linux-arm64',
clangOs = 'linux-x64'; Abi.linuxX64 => 'linux-x64',
} else if (Platform.isMacOS) { Abi.macosArm64 => 'mac-arm64',
clangOs = 'mac-x64'; Abi.macosX64 => 'mac-x64',
} else if (Platform.isWindows) { Abi.windowsX64 => 'windows-x64',
clangOs = 'windows-x64'; (_) => throw FormattingException(
} else { "Unknown operating system: don't know how to run clang-format here.")
throw FormattingException( };
"Unknown operating system: don't know how to run clang-format here.");
}
clangFormat = File( clangFormat = File(
path.join( path.join(
srcDir.absolute.path, srcDir.absolute.path,

View File

@ -1,4 +1,4 @@
#!/bin/bash #!/usr/bin/env bash
# #
# Copyright 2013 The Flutter Authors. All rights reserved. # Copyright 2013 The Flutter Authors. All rights reserved.
# 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