Skip to content

Failed to build on Windows #85

Open

Description

@DonatelloX

Hello,
I’m not able to compile flutterpi on Windows.

flutter --version
Flutter 3.38.9 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 67323de285 (9 days ago) • 2026-01-28 13:43:12 -0800
Engine • hash 5eb06b7ad5bb8cbc22c5230264c7a00ceac7674b (revision 587c18f873) (9 days ago) • 2026-01-27 23:23:03.000Z
Tools • Dart 3.10.8 • DevTools 2.51.1
flutter clean
flutter pub get
flutterpi_tool build --arch=arm64 --cpu=pi4 --release
Target dart_build failed: ProcessException: Failed to find "which" in the search path.
  Command: which
#0      LocalProcessManager.run (package:process/src/interface/local_process_manager.dart:87:7)
#1      ErrorHandlingProcessManager.run.<anonymous closure> (package:flutter_tools/src/base/error_handling_io.dart:628:26)
#2      _run (package:flutter_tools/src/base/error_handling_io.dart:514:20)
#3      ErrorHandlingProcessManager.run (package:flutter_tools/src/base/error_handling_io.dart:626:12)
#4      cCompilerConfigLinux (package:flutter_tools/src/isolated/native_assets/linux/native_assets.dart:29:66)
#5      LinuxAssetTarget.setCCompilerConfig (package:flutter_tools/src/isolated/native_assets/targets.dart:249:35)
#6      FlutterNativeAssetsBuildRunnerImpl.setCCompilerConfig (package:flutter_tools/src/isolated/native_assets/native_assets.dart:262:75)
#7      runFlutterSpecificHooks (package:flutter_tools/src/isolated/native_assets/native_assets.dart:82:23)
<asynchronous suspension>
#8      DartBuild.build (package:flutter_tools/src/build_system/targets/native_assets.dart:76:14)
<asynchronous suspension>
#9      _BuildInstance._invokeInternal (package:flutter_tools/src/build_system/build_system.dart:895:9)
<asynchronous suspension>
#10     Future.wait.<anonymous closure> (dart:async/future.dart:546:21)
<asynchronous suspension>
#11     _BuildInstance.invokeTarget (package:flutter_tools/src/build_system/build_system.dart:833:32)
<asynchronous suspension>
#12     Future.wait.<anonymous closure> (dart:async/future.dart:546:21)
<asynchronous suspension>
#13     _BuildInstance.invokeTarget (package:flutter_tools/src/build_system/build_system.dart:833:32)
<asynchronous suspension>
#14     FlutterBuildSystem.build (package:flutter_tools/src/build_system/build_system.dart:653:16)
<asynchronous suspension>
#15     AppBuilder.build (package:flutterpi_tool/src/build_system/build_app.dart:134:22)
<asynchronous suspension>
#16     BuildCommand.runCommand (package:flutterpi_tool/src/cli/commands/build.dart:174:5)
<asynchronous suspension>
#17     FlutterpiCommandMixin.run.<anonymous closure> (package:flutterpi_tool/src/cli/flutterpi_command.dart:448:7)
<asynchronous suspension>
#18     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:154:19)
<asynchronous suspension>
#19     FlutterpiCommandMixin.run (package:flutterpi_tool/src/cli/flutterpi_command.dart:439:12)
<asynchronous suspension>
#20     CommandRunner.runCommand (package:args/command_runner.dart:212:13)
<asynchronous suspension>
#21     main.<anonymous closure> (package:flutterpi_tool/src/executable.dart:60:9)
<asynchronous suspension>
#22     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:154:19)
<asynchronous suspension>
#23     runInContext (package:flutterpi_tool/src/context.dart:26:10)
<asynchronous suspension>
#24     main (package:flutterpi_tool/src/executable.dart:57:3)
<asynchronous suspension>
#25     main (file:///C:/Users/Test/AppData/Local/Pub/Cache/hosted/pub.dev/flutterpi_tool-0.10.1/bin/flutterpi_tool.dart:4:3)
<asynchronous suspension>

Target copy_flutterpi_assets_flutter-pi_release failed: PathNotFoundException: Cannot copy file to 'build\flutter-pi\pi4-64\NativeAssetsManifest.json', path =
'D:\test\dart_tool\flutter_build\697c5e033aca9e6d7d88fd1ba1937abd\native_assets.json' (OS Error: Impossibile trovare il file specificato, errno = 2)
#0      _checkForErrorResponse (dart:io/common.dart:58:9)
#1      _File.copy.<anonymous closure> (dart:io/file_impl.dart:410:7)
#2      _rootRunUnary (dart:async/zone.dart:1538:47)
#3      _CustomZone.runUnary (dart:async/zone.dart:1429:19)
<asynchronous suspension>
#4      ForwardingFile.copy (package:file/src/forwarding/forwarding_file.dart:29:51)
<asynchronous suspension>
#5      ForwardingFile.copy (package:file/src/forwarding/forwarding_file.dart:29:51)
<asynchronous suspension>
#6      copyAssets.<anonymous closure> (package:flutter_tools/src/build_system/targets/assets.dart:164:13)
<asynchronous suspension>
#7      Future.wait.<anonymous closure> (dart:async/future.dart:546:21)
<asynchronous suspension>
#8      copyAssets (package:flutter_tools/src/build_system/targets/assets.dart:111:3)
<asynchronous suspension>
#9      CopyFlutterAssets.build (package:flutterpi_tool/src/build_system/targets.dart:536:21)
<asynchronous suspension>
#10     _BuildInstance._invokeInternal (package:flutter_tools/src/build_system/build_system.dart:895:9)
<asynchronous suspension>
#11     Future.wait.<anonymous closure> (dart:async/future.dart:546:21)
<asynchronous suspension>
#12     _BuildInstance.invokeTarget (package:flutter_tools/src/build_system/build_system.dart:833:32)
<asynchronous suspension>
#13     FlutterBuildSystem.build (package:flutter_tools/src/build_system/build_system.dart:653:16)
<asynchronous suspension>
#14     AppBuilder.build (package:flutterpi_tool/src/build_system/build_app.dart:134:22)
<asynchronous suspension>
#15     BuildCommand.runCommand (package:flutterpi_tool/src/cli/commands/build.dart:174:5)
<asynchronous suspension>
#16     FlutterpiCommandMixin.run.<anonymous closure> (package:flutterpi_tool/src/cli/flutterpi_command.dart:448:7)
<asynchronous suspension>
#17     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:154:19)
<asynchronous suspension>
#18     FlutterpiCommandMixin.run (package:flutterpi_tool/src/cli/flutterpi_command.dart:439:12)
<asynchronous suspension>
#19     CommandRunner.runCommand (package:args/command_runner.dart:212:13)
<asynchronous suspension>
#20     main.<anonymous closure> (package:flutterpi_tool/src/executable.dart:60:9)
<asynchronous suspension>
#21     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:154:19)
<asynchronous suspension>
#22     runInContext (package:flutterpi_tool/src/context.dart:26:10)
<asynchronous suspension>
#23     main (package:flutterpi_tool/src/executable.dart:57:3)
<asynchronous suspension>
#24     main (file:///C:/Users/Test/AppData/Local/Pub/Cache/hosted/pub.dev/flutterpi_tool-0.10.1/bin/flutterpi_tool.dart:4:3)
<asynchronous suspension>

Building Flutter-Pi bundle...                                           
Failed to build bundle.

Activity

  1. DonatelloX commented on Feb 6, 2026

    @DonatelloX
    Author

    Flutter 3.38.x introduced native assets support that calls cCompilerConfigLinux() even when cross-compiling from Windows. This function uses the which command (Linux-only) to find clang++, which doesn't exist on Windows.

    Edit the file:
    <Flutter SDK>/packages/flutter_tools/lib/src/isolated/native_assets/linux/native_assets.dart
    Add an early return at the beginning of the cCompilerConfigLinux() function:

    Future<CCompilerConfig?> cCompilerConfigLinux({required bool throwIfNotFound}) async {
      // Skip C compiler config on Windows (cross-compilation for Linux)
      if (io.Platform.isWindows) {
        return null;
      }
      // ... rest of the function unchanged
    }
    

    Delete these two files from /bin/cache/:
    flutter_tools.stamp
    flutter_tools.snapshot

    dart pub global deactivate flutterpi_tool
    dart pub global activate flutterpi_tool
    
  2. ardera commented on Feb 6, 2026

    @ardera
    Owner

    Thanks for the report, I'll fix this ASAP, and maybe add a CI test for windows

  3. ardera commented on Feb 7, 2026

    @ardera
    Owner

    Ah, I thought this was broken in general; it's just apps with native assets it seems

    Your change does not really fix it though, unfortunately. It'll just skip the native asset from being built, so you'll then just have errors at runtime instead. calling cCompilerConfigLinux should be correct, as it's trying to build for linux

    @DonatelloX Do you know which package it is that has native assets, in your dependency tree?

    I can implement some custom lookup logic so you can at least try cross-compiling with mingw on windows.

  4. DonatelloX commented on Feb 8, 2026

    @DonatelloX
    Author

    @ardera there are native assets in my dependency tree:

    path_provider 2.1.5
     > path_provider_foundation 2.6.0
      > objective_c 9.2.5
       > native_toolchain_c 0.17.4
    

    path_provider_foundation and objective_c are only used for iOS/macOS.

    The workaround is safe for my specific use case. I understand this isn't a proper fix for the general case. If you implement MinGW cross-compilation support, that would be the correct solution for proper native asset compilation from Windows to Linux. Thank you.

  5. ardera commented on Feb 9, 2026

    @ardera
    Owner

    @DonatelloX ah okay, so it already looks up the cCompilerConfig, even if it's never used
    in that case you're absolutely right, it's fine to skip it

    I'm working on a PR here to fix it: #86

  6. webbrain-one commented on Aug 10, 2026

    @webbrain-one

    Hi!

    I've just opened #98 to fix this. It resolves the Windows build failure caused by the tool calling the which command, which isn't available on Windows.

    Thanks for reporting this! 🐧💻

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions