diff --git a/pkgs/development/compilers/flutter/default.nix b/pkgs/development/compilers/flutter/default.nix index e3b060777e70..2cc1844801ff 100644 --- a/pkgs/development/compilers/flutter/default.nix +++ b/pkgs/development/compilers/flutter/default.nix @@ -1,12 +1,12 @@ { callPackage, fetchzip, dart }: let - mkFlutter = { version, patches, dart, src }: callPackage ./flutter.nix { inherit version patches dart src; }; + mkFlutter = { version, engineVersion, patches, dart, src }: callPackage ./flutter.nix { inherit version engineVersion patches dart src; }; wrapFlutter = flutter: callPackage ./wrapper.nix { inherit flutter; }; getPatches = dir: let files = builtins.attrNames (builtins.readDir dir); in map (f: dir + ("/" + f)) files; - flutterDrv = { version, dartVersion, hash, dartHash, patches }: mkFlutter { - inherit version patches; + flutterDrv = { version, engineVersion, dartVersion, hash, dartHash, patches }: mkFlutter { + inherit version engineVersion patches; dart = dart.override { version = dartVersion; sources = { @@ -32,6 +32,7 @@ in inherit mkFlutter wrapFlutter flutterDrv flutter3Patches flutter2Patches; stable = flutterDrv { version = "3.7.12"; + engineVersion = "1a65d409c7a1438a34d21b60bf30a6fd5db59314"; dartVersion = "2.19.6"; hash = "sha256-5ExDBQXIpoZ5NwS66seY3m9/V8xDiyq/RdzldAyHdEE="; dartHash = { @@ -43,6 +44,7 @@ in v2 = flutterDrv { version = "2.10.5"; + engineVersion = "57d3bac3dd5cb5b0e464ab70e7bc8a0d8cf083ab"; dartVersion = "2.16.2"; hash = "sha256-MxaWvlcCfXN8gsC116UMzqb4LgixHL3YjrGWy7WYgW4="; dartHash = { diff --git a/pkgs/development/compilers/flutter/flutter.nix b/pkgs/development/compilers/flutter/flutter.nix index a566a543e418..92d635be9678 100644 --- a/pkgs/development/compilers/flutter/flutter.nix +++ b/pkgs/development/compilers/flutter/flutter.nix @@ -1,4 +1,5 @@ { version +, engineVersion , patches , dart , src @@ -29,9 +30,7 @@ let engineArtifactDirectory = let - engineArtifacts = callPackage ./engine-artifacts { - engineVersion = lib.removeSuffix "\n" (builtins.readFile (src + /bin/internal/engine.version)); - }; + engineArtifacts = callPackage ./engine-artifacts { inherit engineVersion; }; in runCommandLocal "flutter-engine-artifacts-${version}" { } ( @@ -81,6 +80,13 @@ let buildInputs = [ git ]; + preConfigure = '' + if [ "$(< bin/internal/engine.version)" != '${engineVersion}' ]; then + echo 1>&2 "The given engine version (${engineVersion}) does not match the version required by the Flutter SDK ($(< bin/internal/engine.version))." + exit 1 + fi + ''; + postPatch = '' patchShebangs --build ./bin/ '';