dart-lang / sdk

The Dart SDK, including the VM, JS and Wasm compilers, analysis, core libraries, and more.
https://dart.dev
BSD 3-Clause "New" or "Revised" License
10.26k stars 1.58k forks source link

Flutter 3H 'build_tests' step requires CMake update #44033

Open karlklose opened 4 years ago

karlklose commented 4 years ago

The step requires a version of CMake that is currently not available on our builders:


[   +5 ms] executing: [build/linux/debug/] cmake -G Ninja -DCMAKE_BUILD_TYPE=Debug /b/s/w/ir/cache/builder/flutter/dev/integration_tests/flutter_gallery/linux
[ +906 ms] CMake Error at CMakeLists.txt:1 (cmake_minimum_required):
[        ]   CMake 3.10 or higher is required.  You are running version 3.5.1
[        ] -- Configuring incomplete, errors occurred!
[   +8 ms] Building Linux application... (completed in 921ms)
[        ] "flutter linux" took 10,653ms.
[   +4 ms] Unable to generate build files
[        ] 
           #0      throwToolExit (package:flutter_tools/src/base/common.dart:14:3)
           #1      _runCmake (package:flutter_tools/src/linux/build_linux.dart:109:5)
           <asynchronous suspension>
           #2      buildLinux (package:flutter_tools/src/linux/build_linux.dart:52:11)
           #3      BuildLinuxCommand.runCommand (package:flutter_tools/src/commands/build_linux.dart:46:11)
           #4      FlutterCommand.verifyThenRunCommand (package:flutter_tools/src/runner/flutter_command.dart:1074:18)
           #5      _rootRunUnary (dart:async/zone.dart:1198:47)
           #6      _CustomZone.runUnary (dart:async/zone.dart:1100:19)
           #7      _FutureListener.handleValue (dart:async/future_impl.dart:143:18)
           #8      Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:696:45)
           #9      Future._propagateToListeners (dart:async/future_impl.dart:725:32)
           #10     Future._completeWithValue (dart:async/future_impl.dart:529:5)
           #11     Future._asyncCompleteWithValue.<anonymous closure> (dart:async/future_impl.dart:567:7)
           #12     _rootRun (dart:async/zone.dart:1190:13)
           #13     _CustomZone.run (dart:async/zone.dart:1093:19)
           #14     _CustomZone.runGuarded (dart:async/zone.dart:997:7)
           #15     _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1037:23)
           #16     _microtaskLoop (dart:async/schedule_microtask.dart:41:21)
           #17     _startMicrotaskLoop (dart:async/schedule_microtask.dart:50:5)
           #18     _runPendingImmediateCallback (dart:isolate-patch/isolate_patch.dart:120:13)
           #19     _RawReceivePortImpl._handleMessage (dart:isolate-patch/isolate_patch.dart:185:5)```
athomas commented 4 years ago

CMake 3.10 doesn't have a Xenial backport, and all our bots are running Chromium's Ubuntu xenial images (Flutter uses Fuchsia's Debian 9 images). Our options are:

~1) Get Flutter to allow CMake 3.5.1 (Daco commented here: https://github.com/flutter/gallery/commit/14ad50774f2de7704e82c929a0ffa9e7f76eeb96#r43795916)~ ~2) Get Flutter to use GN (which is available as a portable CIPD) instead of CMake (not sure if that is feasible).~ 3) Upgrade a single bot to Bionic and run 3xH testing only on that machine. 4) Drop support for Xenial and move all infra to Bionic. 5) Try to find some way of getting CMake 3.10 run on Xenial and distribute it to the bots.

@a-siva, @alexmarkov, @dcharkes

Edit: Flutter is unable/unwilling to help with 1) or 2); Added feasible options to 5).

stuartmorgan commented 4 years ago

See my response there.

  • Get Flutter to use GN (which is available as a portable CIPD) instead of CMake (not sure if that is feasible).

This is a non-starter; we're not changing the build system out from under the entire Flutter community and breaking all existing Linux plugins. (And beyond that, I evaluated GN as an option and there are specific reasons I chose CMake over GN as the supported build system for Linux Flutter.)