diff --git a/pkgs/development/compilers/flutter/engine/package.nix b/pkgs/development/compilers/flutter/engine/package.nix index 19c0e7691302..76300ee2b5ed 100644 --- a/pkgs/development/compilers/flutter/engine/package.nix +++ b/pkgs/development/compilers/flutter/engine/package.nix @@ -165,7 +165,11 @@ stdenv.mkDerivation (finalAttrs: { NIX_CFLAGS_COMPILE = [ "-I${finalAttrs.toolchain}/include" ] - ++ lib.optional (!isOptimized) "-U_FORTIFY_SOURCE"; + ++ lib.optional (!isOptimized) "-U_FORTIFY_SOURCE" + ++ lib.optionals (lib.versionAtLeast flutterVersion "3.35") [ + "-Wno-macro-redefined" + "-Wno-error=macro-redefined" + ]; nativeCheckInputs = lib.optionals stdenv.hostPlatform.isLinux [ xorg.xorgserver @@ -254,6 +258,13 @@ stdenv.mkDerivation (finalAttrs: { done popd + '' + # error: 'close_range' is missing exception specification 'noexcept(true)' + + lib.optionalString (lib.versionAtLeast flutterVersion "3.35") '' + substituteInPlace src/flutter/third_party/dart/runtime/bin/process_linux.cc \ + --replace-fail "(unsigned int first, unsigned int last, int flags)" "(unsigned int first, unsigned int last, int flags) noexcept(true)" + '' + + '' popd ''; diff --git a/pkgs/development/compilers/flutter/flutter-tools.nix b/pkgs/development/compilers/flutter/flutter-tools.nix index 299d4a93c500..4eb71e2afabe 100644 --- a/pkgs/development/compilers/flutter/flutter-tools.nix +++ b/pkgs/development/compilers/flutter/flutter-tools.nix @@ -4,6 +4,7 @@ systemPlatform, buildDartApplication, runCommand, + writeTextFile, git, which, dart, @@ -11,8 +12,22 @@ flutterSrc, patches ? [ ], pubspecLock, + engineVersion, }: +let + # https://github.com/flutter/flutter/blob/17c92b7ba68ea609f4eb3405211d019c9dbc4d27/engine/src/flutter/tools/engine_tool/test/commands/stamp_command_test.dart#L125 + engine_stamp = writeTextFile { + name = "engine_stamp"; + text = builtins.toJSON { + build_date = "2025-06-27T12:30:00.000Z"; + build_time_ms = 1751027400000; + git_revision = engineVersion; + git_revision_date = "2025-06-27T17:11:53-07:00"; + content_hash = "1111111111111111111111111111111111111111"; + }; + }; +in buildDartApplication.override { inherit dart; } rec { pname = "flutter-tools"; inherit version; @@ -32,6 +47,12 @@ buildDartApplication.override { inherit dart; } rec { + lib.optionalString stdenv.hostPlatform.isDarwin '' substituteInPlace lib/src/ios/xcodeproj.dart \ --replace-fail arm64e arm64 + '' + # need network + + lib.optionalString (lib.versionAtLeast version "3.35.0") '' + cp ${engine_stamp} ../../bin/cache/engine_stamp.json + substituteInPlace lib/src/flutter_cache.dart \ + --replace-fail "registerArtifact(FlutterEngineStamp(this, logger));" "" ''; # When the JIT snapshot is being built, the application needs to run. diff --git a/pkgs/development/compilers/flutter/flutter.nix b/pkgs/development/compilers/flutter/flutter.nix index f5a9f42a3c61..e1aed72276e1 100644 --- a/pkgs/development/compilers/flutter/flutter.nix +++ b/pkgs/development/compilers/flutter/flutter.nix @@ -54,10 +54,14 @@ let flutterTools = args.flutterTools or (callPackage ./flutter-tools.nix { - inherit dart version; + inherit + dart + engineVersion + patches + pubspecLock + version + ; flutterSrc = src; - inherit patches; - inherit pubspecLock; systemPlatform = stdenv.hostPlatform.system; }); diff --git a/pkgs/development/compilers/flutter/versions/3_35/data.json b/pkgs/development/compilers/flutter/versions/3_35/data.json new file mode 100644 index 000000000000..9a17781b89f2 --- /dev/null +++ b/pkgs/development/compilers/flutter/versions/3_35/data.json @@ -0,0 +1,1080 @@ +{ + "version": "3.35.0-0.3.pre", + "engineVersion": "659d9553df45256ed2aa388aae7ed5a1a4f51bae", + "engineSwiftShaderHash": "sha256-ATVcuxqPHqHOWYyO7DoX9LdgUiO3INUi7m9Mc6ccc1M=", + "engineSwiftShaderRev": "d040a5bab638bf7c226235c95787ba6288bb6416", + "channel": "beta", + "engineHashes": { + "aarch64-linux": { + "aarch64-linux": "sha256-M1DdrGsI0qEpk/DxSlZwN3eRw87ytBZkudfWPrkgbcA=", + "x86_64-linux": "sha256-M1DdrGsI0qEpk/DxSlZwN3eRw87ytBZkudfWPrkgbcA=" + }, + "x86_64-linux": { + "aarch64-linux": "sha256-fYd3T5t2kxJQr6VHqQWn/Cx/djYj3G4cHS6wNT656Rs=", + "x86_64-linux": "sha256-fYd3T5t2kxJQr6VHqQWn/Cx/djYj3G4cHS6wNT656Rs=" + } + }, + "dartVersion": "3.9.0-333.2.beta", + "dartHash": { + "x86_64-linux": "sha256-1QnclBC2IKuHNl2Xc1OXeG+/Owp46z4Uac3+3smimY8=", + "aarch64-linux": "sha256-g/zDpFjzTc7NEuER1jxo8hL/yzaRZeoN2Q+oa1Vs4yM=", + "x86_64-darwin": "sha256-K6DJ9O8//F3MVCmJd9vGjJg/qC83XtVrqd4pwaQeOng=", + "aarch64-darwin": "sha256-a85QVapUKgFovzC0CuLzSPSWXu8tm3HuK+AxfuwlrUI=" + }, + "flutterHash": "sha256-K1Z/SzFK1tGC7qTbbnLXbb1fVb/wsqSvtBGUaIjKpPE=", + "artifactHashes": { + "android": { + "aarch64-darwin": "sha256-xxWlavfiKXlEfTbYgk0+4VM4zsORuXRAaNwzYpRdU08=", + "aarch64-linux": "sha256-Wg0yuh4TJ9VroTpJqCeIwDK4uyucPUxa3f4XN7SAzUI=", + "x86_64-darwin": "sha256-xxWlavfiKXlEfTbYgk0+4VM4zsORuXRAaNwzYpRdU08=", + "x86_64-linux": "sha256-Wg0yuh4TJ9VroTpJqCeIwDK4uyucPUxa3f4XN7SAzUI=" + }, + "fuchsia": { + "aarch64-darwin": "sha256-zzrbl7IPIGW8IniM5xTg8ydrXvgDg9R6d1Yr+q1pMwk=", + "aarch64-linux": "sha256-zzrbl7IPIGW8IniM5xTg8ydrXvgDg9R6d1Yr+q1pMwk=", + "x86_64-darwin": "sha256-zzrbl7IPIGW8IniM5xTg8ydrXvgDg9R6d1Yr+q1pMwk=", + "x86_64-linux": "sha256-zzrbl7IPIGW8IniM5xTg8ydrXvgDg9R6d1Yr+q1pMwk=" + }, + "ios": { + "aarch64-darwin": "sha256-qH5UzFC4N+3limzSFRSGaT3bSoNXeV1kgnj0ASgwU3U=", + "aarch64-linux": "sha256-qH5UzFC4N+3limzSFRSGaT3bSoNXeV1kgnj0ASgwU3U=", + "x86_64-darwin": "sha256-qH5UzFC4N+3limzSFRSGaT3bSoNXeV1kgnj0ASgwU3U=", + "x86_64-linux": "sha256-qH5UzFC4N+3limzSFRSGaT3bSoNXeV1kgnj0ASgwU3U=" + }, + "linux": { + "aarch64-darwin": "sha256-AfB55jB4bNv0j5fyyLZEPO0W/9I6xhn7Sh5gVppbu5o=", + "aarch64-linux": "sha256-AfB55jB4bNv0j5fyyLZEPO0W/9I6xhn7Sh5gVppbu5o=", + "x86_64-darwin": "sha256-I1jE7iGN9GNVhNi68dVNoDKuF+OxI1tM3+gttncBKfk=", + "x86_64-linux": "sha256-I1jE7iGN9GNVhNi68dVNoDKuF+OxI1tM3+gttncBKfk=" + }, + "macos": { + "aarch64-darwin": "sha256-oR9gomhLORmE0jaUHS9SX92lfCaeGebZUC0NLiR5jEM=", + "aarch64-linux": "sha256-oR9gomhLORmE0jaUHS9SX92lfCaeGebZUC0NLiR5jEM=", + "x86_64-darwin": "sha256-oR9gomhLORmE0jaUHS9SX92lfCaeGebZUC0NLiR5jEM=", + "x86_64-linux": "sha256-oR9gomhLORmE0jaUHS9SX92lfCaeGebZUC0NLiR5jEM=" + }, + "universal": { + "aarch64-darwin": "sha256-Uu7H2iltu7hYMzNfn0TyUoBQcrII5zmTCMLArs2oBSA=", + "aarch64-linux": "sha256-ba7ayG8Hsb2TLFVIo6HMQrm1RKDfpcAMoBH9FDVhGN0=", + "x86_64-darwin": "sha256-NF/RKJ28q88MbKXr9gcPZmPg9Q+4IatwCiqXeVIRr/A=", + "x86_64-linux": "sha256-B1GCfIYemqzMs8ozAfqa3QmBM04dT1eKihGjyw9EZ2A=" + }, + "web": { + "aarch64-darwin": "sha256-SnhSlHAmkVdZKXH6TCsdz8HDKz2E17jIfIgpoTJ82eU=", + "aarch64-linux": "sha256-SnhSlHAmkVdZKXH6TCsdz8HDKz2E17jIfIgpoTJ82eU=", + "x86_64-darwin": "sha256-SnhSlHAmkVdZKXH6TCsdz8HDKz2E17jIfIgpoTJ82eU=", + "x86_64-linux": "sha256-SnhSlHAmkVdZKXH6TCsdz8HDKz2E17jIfIgpoTJ82eU=" + }, + "windows": { + "x86_64-darwin": "sha256-2N+IkOUbbFs2gtWwbpP4rdzHi0R7iMIiMwpHZUPr6C8=", + "x86_64-linux": "sha256-2N+IkOUbbFs2gtWwbpP4rdzHi0R7iMIiMwpHZUPr6C8=" + } + }, + "pubspecLock": { + "packages": { + "_fe_analyzer_shared": { + "dependency": "direct main", + "description": { + "name": "_fe_analyzer_shared", + "sha256": "e55636ed79578b9abca5fecf9437947798f5ef7456308b5cb85720b793eac92f", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "82.0.0" + }, + "analyzer": { + "dependency": "direct main", + "description": { + "name": "analyzer", + "sha256": "904ae5bb474d32c38fb9482e2d925d5454cda04ddd0e55d2e6826bc72f6ba8c0", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "7.4.5" + }, + "archive": { + "dependency": "direct main", + "description": { + "name": "archive", + "sha256": "cb6a278ef2dbb298455e1a713bda08524a175630ec643a242c399c932a0a1f7d", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.6.1" + }, + "args": { + "dependency": "direct main", + "description": { + "name": "args", + "sha256": "d0481093c50b1da8910eb0bb301626d4d8eb7284aa739614d2b394ee09e3ea04", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.7.0" + }, + "async": { + "dependency": "direct main", + "description": { + "name": "async", + "sha256": "758e6d74e971c3e5aceb4110bfd6698efc7f501675bcfe0c775459a8140750eb", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.13.0" + }, + "boolean_selector": { + "dependency": "direct main", + "description": { + "name": "boolean_selector", + "sha256": "8aab1771e1243a5063b8b0ff68042d67334e3feab9e95b9490f9a6ebf73b42ea", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.2" + }, + "browser_launcher": { + "dependency": "direct main", + "description": { + "name": "browser_launcher", + "sha256": "ca2557663d3033845f2ef2b60f94fc249528324fd1affddccb7c63ac0ccd6c67", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.3" + }, + "built_collection": { + "dependency": "direct main", + "description": { + "name": "built_collection", + "sha256": "376e3dd27b51ea877c28d525560790aee2e6fbb5f20e2f85d5081027d94e2100", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "5.1.1" + }, + "built_value": { + "dependency": "direct main", + "description": { + "name": "built_value", + "sha256": "082001b5c3dc495d4a42f1d5789990505df20d8547d42507c29050af6933ee27", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "8.10.1" + }, + "checked_yaml": { + "dependency": "direct dev", + "description": { + "name": "checked_yaml", + "sha256": "959525d3162f249993882720d52b7e0c833978df229be20702b33d48d91de70f", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.4" + }, + "cli_config": { + "dependency": "direct main", + "description": { + "name": "cli_config", + "sha256": "ac20a183a07002b700f0c25e61b7ee46b23c309d76ab7b7640a028f18e4d99ec", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.2.0" + }, + "clock": { + "dependency": "direct main", + "description": { + "name": "clock", + "sha256": "fddb70d9b5277016c77a80201021d40a2247104d9f4aa7bab7157b7e3f05b84b", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.2" + }, + "code_assets": { + "dependency": "direct main", + "description": { + "name": "code_assets", + "sha256": "dd7ed641b7f642092092969f2dcd5845ab31c9f3efead0c06ca437bf9ce8a8b2", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.19.4" + }, + "code_builder": { + "dependency": "direct main", + "description": { + "name": "code_builder", + "sha256": "0ec10bf4a89e4c613960bf1e8b42c64127021740fb21640c29c909826a5eea3e", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.10.1" + }, + "collection": { + "dependency": "direct main", + "description": { + "name": "collection", + "sha256": "2f5709ae4d3d59dd8f7cd309b4e023046b57d8a6c82130785d2b0e5868084e76", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.19.1" + }, + "completion": { + "dependency": "direct main", + "description": { + "name": "completion", + "sha256": "f11b7a628e6c42b9edc9b0bc3aa490e2d930397546d2f794e8e1325909d11c60", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.1" + }, + "convert": { + "dependency": "direct main", + "description": { + "name": "convert", + "sha256": "b30acd5944035672bc15c6b7a8b47d773e41e2f17de064350988c5d02adb1c68", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.1.2" + }, + "coverage": { + "dependency": "direct main", + "description": { + "name": "coverage", + "sha256": "aa07dbe5f2294c827b7edb9a87bba44a9c15a3cc81bc8da2ca19b37322d30080", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.14.1" + }, + "crypto": { + "dependency": "direct main", + "description": { + "name": "crypto", + "sha256": "1e445881f28f22d6140f181e07737b22f1e099a5e1ff94b0af2f9e4a463f4855", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.0.6" + }, + "csslib": { + "dependency": "direct main", + "description": { + "name": "csslib", + "sha256": "09bad715f418841f976c77db72d5398dc1253c21fb9c0c7f0b0b985860b2d58e", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.2" + }, + "dap": { + "dependency": "direct main", + "description": { + "name": "dap", + "sha256": "42b0b083a09c59a118741769e218fc3738980ab591114f09d1026241d2b9c290", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.4.0" + }, + "dart_service_protocol_shared": { + "dependency": "transitive", + "description": { + "name": "dart_service_protocol_shared", + "sha256": "1737875c176d7e3d87bb3a359182828b542fe20a0b34198b8d31a81af5c7a76d", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.0.3" + }, + "dart_style": { + "dependency": "direct main", + "description": { + "name": "dart_style", + "sha256": "5b236382b47ee411741447c1f1e111459c941ea1b3f2b540dde54c210a3662af", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.1.0" + }, + "dds": { + "dependency": "direct main", + "description": { + "name": "dds", + "sha256": "b80c44468f5549867f65c43b0c6ecf0872261e86beb75087ed6c1d7f82e9db22", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "5.0.3" + }, + "dds_service_extensions": { + "dependency": "direct main", + "description": { + "name": "dds_service_extensions", + "sha256": "c514114300ab30a95903fed1fdcf2949d057a0ea961168ec890a2b415b3ec52a", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.2" + }, + "devtools_shared": { + "dependency": "direct main", + "description": { + "name": "devtools_shared", + "sha256": "275e48a8a145fa09c7ae433a96fd433c01cc079d39b40acf5ba883236ae2c887", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "12.0.0" + }, + "dtd": { + "dependency": "direct main", + "description": { + "name": "dtd", + "sha256": "09ddb228b3d1478a093556357692a4c203ff4f9d5f8cda05dfdca0ff3fb7c5d3", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.0.0" + }, + "dwds": { + "dependency": "direct main", + "description": { + "name": "dwds", + "sha256": "b14203ae57d2ef575d115e30a303c7fe643c5e6af5acfb1330d4c57091ee11c6", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "24.4.0" + }, + "extension_discovery": { + "dependency": "direct main", + "description": { + "name": "extension_discovery", + "sha256": "de1fce715ab013cdfb00befc3bdf0914bea5e409c3a567b7f8f144bc061611a7", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.0" + }, + "fake_async": { + "dependency": "direct main", + "description": { + "name": "fake_async", + "sha256": "5368f224a74523e8d2e7399ea1638b37aecfca824a3cc4dfdf77bf1fa905ac44", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.3.3" + }, + "ffi": { + "dependency": "direct main", + "description": { + "name": "ffi", + "sha256": "289279317b4b16eb2bb7e271abccd4bf84ec9bdcbe999e278a94b804f5630418", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.4" + }, + "file": { + "dependency": "direct main", + "description": { + "name": "file", + "sha256": "a3b4f84adafef897088c160faf7dfffb7696046cb13ae90b508c2cbc95d3b8d4", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "7.0.1" + }, + "file_testing": { + "dependency": "direct dev", + "description": { + "name": "file_testing", + "sha256": "eb0c85fd118ddc0d41c295c09f64e0924c256b071087cdc9828d5372c80d554d", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.0.2" + }, + "fixnum": { + "dependency": "direct main", + "description": { + "name": "fixnum", + "sha256": "b6dc7065e46c974bc7c5f143080a6764ec7a4be6da1285ececdc37be96de53be", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.1" + }, + "flutter_template_images": { + "dependency": "direct main", + "description": { + "name": "flutter_template_images", + "sha256": "0120589a786dbae4e86af1f61748baccd8530abd56a60e7a13479647a75222fe", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "5.0.0" + }, + "frontend_server_client": { + "dependency": "direct main", + "description": { + "name": "frontend_server_client", + "sha256": "f64a0333a82f30b0cca061bc3d143813a486dc086b574bfb233b7c1372427694", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.0.0" + }, + "glob": { + "dependency": "direct main", + "description": { + "name": "glob", + "sha256": "c3f1ee72c96f8f78935e18aa8cecced9ab132419e8625dc187e1c2408efc20de", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.3" + }, + "graphs": { + "dependency": "direct main", + "description": { + "name": "graphs", + "sha256": "741bbf84165310a68ff28fe9e727332eef1407342fca52759cb21ad8177bb8d0", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.3.2" + }, + "hooks": { + "dependency": "direct main", + "description": { + "name": "hooks", + "sha256": "75363eae6c0c2db051c4f6b3b1fcdea8a09c4a596cc83bfff847661da6e80dfc", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.19.5" + }, + "hooks_runner": { + "dependency": "direct main", + "description": { + "name": "hooks_runner", + "sha256": "4b1db0e99d4a1a92c14691ab6b61c9b1ce348a1a1d6fe9cca9252cd85f89eeac", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.21.0" + }, + "html": { + "dependency": "direct main", + "description": { + "name": "html", + "sha256": "6d1264f2dffa1b1101c25a91dff0dc2daee4c18e87cd8538729773c073dbf602", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.15.6" + }, + "http": { + "dependency": "direct main", + "description": { + "name": "http", + "sha256": "2c11f3f94c687ee9bad77c171151672986360b2b001d109814ee7140b2cf261b", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.4.0" + }, + "http_multi_server": { + "dependency": "direct main", + "description": { + "name": "http_multi_server", + "sha256": "aa6199f908078bb1c5efb8d8638d4ae191aac11b311132c3ef48ce352fb52ef8", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.2.2" + }, + "http_parser": { + "dependency": "direct main", + "description": { + "name": "http_parser", + "sha256": "178d74305e7866013777bab2c3d8726205dc5a4dd935297175b19a23a2e66571", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.1.2" + }, + "intl": { + "dependency": "direct main", + "description": { + "name": "intl", + "sha256": "3df61194eb431efc39c4ceba583b95633a403f46c9fd341e550ce0bfa50e9aa5", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.20.2" + }, + "io": { + "dependency": "direct main", + "description": { + "name": "io", + "sha256": "dfd5a80599cf0165756e3181807ed3e77daf6dd4137caaad72d0b7931597650b", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.5" + }, + "js": { + "dependency": "direct dev", + "description": { + "name": "js", + "sha256": "53385261521cc4a0c4658fd0ad07a7d14591cf8fc33abbceae306ddb974888dc", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.7.2" + }, + "json_annotation": { + "dependency": "direct dev", + "description": { + "name": "json_annotation", + "sha256": "1ce844379ca14835a50d2f019a3099f419082cfdd231cd86a142af94dd5c6bb1", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.9.0" + }, + "json_rpc_2": { + "dependency": "direct main", + "description": { + "name": "json_rpc_2", + "sha256": "246b321532f0e8e2ba474b4d757eaa558ae4fdd0688fdbc1e1ca9705f9b8ca0e", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.0.3" + }, + "logging": { + "dependency": "direct main", + "description": { + "name": "logging", + "sha256": "c8245ada5f1717ed44271ed1c26b8ce85ca3228fd2ffdb75468ab01979309d61", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.3.0" + }, + "matcher": { + "dependency": "direct main", + "description": { + "name": "matcher", + "sha256": "dc58c723c3c24bf8d3e2d3ad3f2f9d7bd9cf43ec6feaa64181775e60190153f2", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.12.17" + }, + "meta": { + "dependency": "direct main", + "description": { + "name": "meta", + "sha256": "23f08335362185a5ea2ad3a4e597f1375e78bce8a040df5c600c8d3552ef2394", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.17.0" + }, + "mime": { + "dependency": "direct main", + "description": { + "name": "mime", + "sha256": "41a20518f0cb1256669420fdba0cd90d21561e560ac240f26ef8322e45bb7ed6", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.0" + }, + "multicast_dns": { + "dependency": "direct main", + "description": { + "name": "multicast_dns", + "sha256": "de72ada5c3db6fdd6ad4ae99452fe05fb403c4bb37c67ceb255ddd37d2b5b1eb", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.3.3" + }, + "mustache_template": { + "dependency": "direct main", + "description": { + "name": "mustache_template", + "sha256": "a46e26f91445bfb0b60519be280555b06792460b27b19e2b19ad5b9740df5d1c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.0" + }, + "native_stack_traces": { + "dependency": "direct main", + "description": { + "name": "native_stack_traces", + "sha256": "d34cf916db87b14d39465b3e3b4b4a8ee1f304bde6ed7605571e34802e3d6a11", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.6.1" + }, + "node_preamble": { + "dependency": "direct dev", + "description": { + "name": "node_preamble", + "sha256": "6e7eac89047ab8a8d26cf16127b5ed26de65209847630400f9aefd7cd5c730db", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.2" + }, + "package_config": { + "dependency": "direct main", + "description": { + "name": "package_config", + "sha256": "f096c55ebb7deb7e384101542bfba8c52696c1b56fca2eb62827989ef2353bbc", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.2.0" + }, + "path": { + "dependency": "direct main", + "description": { + "name": "path", + "sha256": "75cca69d1490965be98c73ceaea117e8a04dd21217b37b292c9ddbec0d955bc5", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.9.1" + }, + "petitparser": { + "dependency": "direct main", + "description": { + "name": "petitparser", + "sha256": "07c8f0b1913bcde1ff0d26e57ace2f3012ccbf2b204e070290dad3bb22797646", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "6.1.0" + }, + "platform": { + "dependency": "direct main", + "description": { + "name": "platform", + "sha256": "5d6b1b0036a5f331ebc77c850ebc8506cbc1e9416c27e59b439f917a902a4984", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.1.6" + }, + "pool": { + "dependency": "direct main", + "description": { + "name": "pool", + "sha256": "20fe868b6314b322ea036ba325e6fc0711a22948856475e2c2b6306e8ab39c2a", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.5.1" + }, + "process": { + "dependency": "direct main", + "description": { + "name": "process", + "sha256": "44b4226c0afd4bc3b7c7e67d44c4801abd97103cf0c84609e2654b664ca2798c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "5.0.4" + }, + "pub_semver": { + "dependency": "direct main", + "description": { + "name": "pub_semver", + "sha256": "5bfcf68ca79ef689f8990d1160781b4bad40a3bd5e5218ad4076ddb7f4081585", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.2.0" + }, + "pubspec_parse": { + "dependency": "direct main", + "description": { + "name": "pubspec_parse", + "sha256": "0560ba233314abbed0a48a2956f7f022cce7c3e1e73df540277da7544cad4082", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.5.0" + }, + "shelf": { + "dependency": "direct main", + "description": { + "name": "shelf", + "sha256": "e7dd780a7ffb623c57850b33f43309312fc863fb6aa3d276a754bb299839ef12", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.4.2" + }, + "shelf_packages_handler": { + "dependency": "direct main", + "description": { + "name": "shelf_packages_handler", + "sha256": "89f967eca29607c933ba9571d838be31d67f53f6e4ee15147d5dc2934fee1b1e", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.0.2" + }, + "shelf_proxy": { + "dependency": "direct main", + "description": { + "name": "shelf_proxy", + "sha256": "a71d2307f4393211930c590c3d2c00630f6c5a7a77edc1ef6436dfd85a6a7ee3", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.4" + }, + "shelf_static": { + "dependency": "direct main", + "description": { + "name": "shelf_static", + "sha256": "c87c3875f91262785dade62d135760c2c69cb217ac759485334c5857ad89f6e3", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.3" + }, + "shelf_web_socket": { + "dependency": "direct main", + "description": { + "name": "shelf_web_socket", + "sha256": "cc36c297b52866d203dbf9332263c94becc2fe0ceaa9681d07b6ef9807023b67", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.1" + }, + "source_map_stack_trace": { + "dependency": "direct main", + "description": { + "name": "source_map_stack_trace", + "sha256": "c0713a43e323c3302c2abe2a1cc89aa057a387101ebd280371d6a6c9fa68516b", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.2" + }, + "source_maps": { + "dependency": "direct main", + "description": { + "name": "source_maps", + "sha256": "190222579a448b03896e0ca6eca5998fa810fda630c1d65e2f78b3f638f54812", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.10.13" + }, + "source_span": { + "dependency": "direct main", + "description": { + "name": "source_span", + "sha256": "254ee5351d6cb365c859e20ee823c3bb479bf4a293c22d17a9f1bf144ce86f7c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.10.1" + }, + "sprintf": { + "dependency": "direct main", + "description": { + "name": "sprintf", + "sha256": "1fc9ffe69d4df602376b52949af107d8f5703b77cda567c4d7d86a0693120f23", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "7.0.0" + }, + "sse": { + "dependency": "direct main", + "description": { + "name": "sse", + "sha256": "fcc97470240bb37377f298e2bd816f09fd7216c07928641c0560719f50603643", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.1.8" + }, + "stack_trace": { + "dependency": "direct main", + "description": { + "name": "stack_trace", + "sha256": "8b27215b45d22309b5cddda1aa2b19bdfec9df0e765f2de506401c071d38d1b1", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.12.1" + }, + "standard_message_codec": { + "dependency": "direct main", + "description": { + "name": "standard_message_codec", + "sha256": "fc7dd712d191b7e33196a0ecf354c4573492bb95995e7166cb6f73b047f9cae0", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.0.1+4" + }, + "stream_channel": { + "dependency": "direct main", + "description": { + "name": "stream_channel", + "sha256": "969e04c80b8bcdf826f8f16579c7b14d780458bd97f56d107d3950fdbeef059d", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.4" + }, + "string_scanner": { + "dependency": "direct main", + "description": { + "name": "string_scanner", + "sha256": "921cd31725b72fe181906c6a94d987c78e3b98c2e205b397ea399d4054872b43", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.4.1" + }, + "sync_http": { + "dependency": "direct main", + "description": { + "name": "sync_http", + "sha256": "7f0cd72eca000d2e026bcd6f990b81d0ca06022ef4e32fb257b30d3d1014a961", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.3.1" + }, + "term_glyph": { + "dependency": "direct main", + "description": { + "name": "term_glyph", + "sha256": "7f554798625ea768a7518313e58f83891c7f5024f88e46e7182a4558850a4b8e", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.2.2" + }, + "test": { + "dependency": "direct dev", + "description": { + "name": "test", + "sha256": "65e29d831719be0591f7b3b1a32a3cda258ec98c58c7b25f7b84241bc31215bb", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.26.2" + }, + "test_api": { + "dependency": "direct main", + "description": { + "name": "test_api", + "sha256": "522f00f556e73044315fa4585ec3270f1808a4b186c936e612cab0b565ff1e00", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.7.6" + }, + "test_core": { + "dependency": "direct main", + "description": { + "name": "test_core", + "sha256": "80bf5a02b60af04b09e14f6fe68b921aad119493e26e490deaca5993fef1b05a", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.6.11" + }, + "typed_data": { + "dependency": "direct main", + "description": { + "name": "typed_data", + "sha256": "f9049c039ebfeb4cf7a7104a675823cd72dba8297f264b6637062516699fa006", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.4.0" + }, + "unified_analytics": { + "dependency": "direct main", + "description": { + "name": "unified_analytics", + "sha256": "8d1429a4b27320a9c4fc854287d18c8fde1549bf622165c5837202a9f370b53d", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "8.0.5" + }, + "usage": { + "dependency": "direct main", + "description": { + "name": "usage", + "sha256": "0bdbde65a6e710343d02a56552eeaefd20b735e04bfb6b3ee025b6b22e8d0e15", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.1.1" + }, + "uuid": { + "dependency": "direct main", + "description": { + "name": "uuid", + "sha256": "a5be9ef6618a7ac1e964353ef476418026db906c4facdedaa299b7a2e71690ff", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.5.1" + }, + "vm_service": { + "dependency": "direct main", + "description": { + "name": "vm_service", + "sha256": "45caa6c5917fa127b5dbcfbd1fa60b14e583afdc08bfc96dda38886ca252eb60", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "15.0.2" + }, + "vm_service_interface": { + "dependency": "direct main", + "description": { + "name": "vm_service_interface", + "sha256": "503c92c26cf9f77d688bf8fca27fa9ec40450adbf02ec1ec5f12828ded508ac0", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.1" + }, + "vm_snapshot_analysis": { + "dependency": "direct main", + "description": { + "name": "vm_snapshot_analysis", + "sha256": "5a79b9fbb6be2555090f55b03b23907e75d44c3fd7bdd88da09848aa5a1914c8", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.7.6" + }, + "watcher": { + "dependency": "direct main", + "description": { + "name": "watcher", + "sha256": "0b7fd4a0bbc4b92641dbf20adfd7e3fd1398fe17102d94b674234563e110088a", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.2" + }, + "web": { + "dependency": "direct main", + "description": { + "name": "web", + "sha256": "868d88a33d8a87b18ffc05f9f030ba328ffefba92d6c127917a2ba740f9cfe4a", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.1.1" + }, + "web_socket": { + "dependency": "direct main", + "description": { + "name": "web_socket", + "sha256": "34d64019aa8e36bf9842ac014bb5d2f5586ca73df5e4d9bf5c936975cae6982c", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.1" + }, + "web_socket_channel": { + "dependency": "direct main", + "description": { + "name": "web_socket_channel", + "sha256": "d645757fb0f4773d602444000a8131ff5d48c9e47adfe9772652dd1a4f2d45c8", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.0.3" + }, + "webdriver": { + "dependency": "direct main", + "description": { + "name": "webdriver", + "sha256": "2f3a14ca026957870cfd9c635b83507e0e51d8091568e90129fbf805aba7cade", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.1.0" + }, + "webkit_inspection_protocol": { + "dependency": "direct main", + "description": { + "name": "webkit_inspection_protocol", + "sha256": "87d3f2333bb240704cd3f1c6b5b7acd8a10e7f0bc28c28dcf14e782014f4a572", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.2.1" + }, + "xml": { + "dependency": "direct main", + "description": { + "name": "xml", + "sha256": "b015a8ad1c488f66851d762d3090a21c600e479dc75e68328c52774040cf9226", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "6.5.0" + }, + "yaml": { + "dependency": "direct main", + "description": { + "name": "yaml", + "sha256": "b9da305ac7c39faa3f030eccd175340f968459dae4af175130b3fc47e40d76ce", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.1.3" + }, + "yaml_edit": { + "dependency": "direct main", + "description": { + "name": "yaml_edit", + "sha256": "fb38626579fb345ad00e674e2af3a5c9b0cc4b9bfb8fd7f7ff322c7c9e62aef5", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.2.2" + } + }, + "sdks": { + "dart": ">=3.9.0-21.0.dev <4.0.0" + } + } +} diff --git a/pkgs/development/compilers/flutter/versions/3_35/patches/avoid-crash-on-missing-package-graph-json.patch b/pkgs/development/compilers/flutter/versions/3_35/patches/avoid-crash-on-missing-package-graph-json.patch new file mode 100644 index 000000000000..a81ea1996e0e --- /dev/null +++ b/pkgs/development/compilers/flutter/versions/3_35/patches/avoid-crash-on-missing-package-graph-json.patch @@ -0,0 +1,95 @@ +Prevent crashes due to missing or incomplete package_graph.json + +Modify package graph parsing to safely handle missing package_graph.json file +and missing dependencies or devDependencies entries by using empty defaults +instead of throwing errors. + +--- a/packages/flutter_tools/lib/src/package_graph.dart ++++ b/packages/flutter_tools/lib/src/package_graph.dart +@@ -36,18 +36,9 @@ + isExclusiveDevDependency: true, + ); + +- final List? dependencies = packageGraph.dependencies[project.manifest.appName]; +- if (dependencies == null) { +- throwToolExit(''' +-Failed to parse ${packageGraph.file.path}: dependencies for `${project.manifest.appName}` missing. +-Try running `flutter pub get`'''); +- } +- final List? devDependencies = packageGraph.devDependencies[project.manifest.appName]; +- if (devDependencies == null) { +- throwToolExit(''' +-Failed to parse ${packageGraph.file.path}: devDependencies for `${project.manifest.appName}` missing. +-Try running `flutter pub get`'''); +- } ++ final List dependencies = packageGraph.dependencies[project.manifest.appName] ?? []; ++ final List devDependencies = packageGraph.devDependencies[project.manifest.appName] ?? []; ++ + final packageNamesToVisit = [...dependencies, ...devDependencies]; + while (packageNamesToVisit.isNotEmpty) { + final String current = packageNamesToVisit.removeLast(); +@@ -55,13 +46,7 @@ + continue; + } + +- final List? dependencies = packageGraph.dependencies[current]; +- +- if (dependencies == null) { +- throwToolExit(''' +-Failed to parse ${packageGraph.file.path}: dependencies for `$current` missing. +-Try running `flutter pub get`'''); +- } ++ final List dependencies = packageGraph.dependencies[current] ?? []; + packageNamesToVisit.addAll(dependencies); + + result[current] = Dependency( +@@ -89,7 +74,7 @@ + currentDependency.rootUri, + isExclusiveDevDependency: false, + ); +- packageNamesToVisit.addAll(packageGraph.dependencies[current]!); ++ packageNamesToVisit.addAll(packageGraph.dependencies[current] ?? []); + } + return result.values.toList(); + } +@@ -147,6 +132,9 @@ + final File file = project.packageConfig.fileSystem.file( + project.packageConfig.uri.resolve('package_graph.json'), + ); ++ if (!file.existsSync()) { ++ return PackageGraph(file, [], >{}, >{}); ++ } + try { + return PackageGraph.fromJson(file, jsonDecode(file.readAsStringSync())); + } on IOException catch (e) { + +--- a/packages/flutter_tools/lib/src/isolated/native_assets/native_assets.dart ++++ b/packages/flutter_tools/lib/src/isolated/native_assets/native_assets.dart +@@ -384,7 +384,12 @@ + } + + Future _nativeBuildRequired(FlutterNativeAssetsBuildRunner buildRunner) async { +- final List packagesWithNativeAssets = await buildRunner.packagesWithNativeAssets(); ++ late final List packagesWithNativeAssets; ++ try { ++ packagesWithNativeAssets = await buildRunner.packagesWithNativeAssets(); ++ } catch (error) { ++ packagesWithNativeAssets = []; ++ } + if (packagesWithNativeAssets.isEmpty) { + globals.logger.printTrace( + 'No packages with native assets. Skipping native assets compilation.', +@@ -412,7 +417,12 @@ + FileSystem fileSystem, + FlutterNativeAssetsBuildRunner buildRunner, + ) async { +- final List packagesWithNativeAssets = await buildRunner.packagesWithNativeAssets(); ++ late final List packagesWithNativeAssets; ++ try { ++ packagesWithNativeAssets = await buildRunner.packagesWithNativeAssets(); ++ } catch (error) { ++ packagesWithNativeAssets = []; ++ } + if (packagesWithNativeAssets.isEmpty) { + globals.logger.printTrace( + 'No packages with native assets. Skipping native assets compilation.', diff --git a/pkgs/development/compilers/flutter/versions/3_35/patches/deregister-pub-dependencies-artifact.patch b/pkgs/development/compilers/flutter/versions/3_35/patches/deregister-pub-dependencies-artifact.patch new file mode 100644 index 000000000000..c99d771299fe --- /dev/null +++ b/pkgs/development/compilers/flutter/versions/3_35/patches/deregister-pub-dependencies-artifact.patch @@ -0,0 +1,21 @@ +diff --git a/packages/flutter_tools/lib/src/flutter_cache.dart b/packages/flutter_tools/lib/src/flutter_cache.dart +index df67547..eacc7c4 100644 +--- a/packages/flutter_tools/lib/src/flutter_cache.dart ++++ b/packages/flutter_tools/lib/src/flutter_cache.dart +@@ -51,16 +51,6 @@ class FlutterCache extends Cache { + registerArtifact(IosUsbArtifacts(artifactName, this, platform: platform)); + } + registerArtifact(FontSubsetArtifacts(this, platform: platform)); +- registerArtifact( +- PubDependencies( +- logger: logger, +- // flutter root and pub must be lazily initialized to avoid accessing +- // before the version is determined. +- flutterRoot: () => Cache.flutterRoot!, +- pub: () => pub, +- projectFactory: projectFactory, +- ), +- ); + } + } + diff --git a/pkgs/development/compilers/flutter/versions/3_35/patches/disable-auto-update.patch b/pkgs/development/compilers/flutter/versions/3_35/patches/disable-auto-update.patch new file mode 100644 index 000000000000..1a6871974eff --- /dev/null +++ b/pkgs/development/compilers/flutter/versions/3_35/patches/disable-auto-update.patch @@ -0,0 +1,30 @@ +diff --git a/packages/flutter_tools/lib/src/runner/flutter_command.dart b/packages/flutter_tools/lib/src/runner/flutter_command.dart +index e4e474ab6e..5548599802 100644 +--- a/packages/flutter_tools/lib/src/runner/flutter_command.dart ++++ b/packages/flutter_tools/lib/src/runner/flutter_command.dart +@@ -1693,7 +1693,7 @@ Run 'flutter -h' (or 'flutter -h') for available flutter commands and + + // Populate the cache. We call this before pub get below so that the + // sky_engine package is available in the flutter cache for pub to find. +- if (shouldUpdateCache) { ++ if (false) { + // First always update universal artifacts, as some of these (e.g. + // ios-deploy on macOS) are required to determine `requiredArtifacts`. + final bool offline; +diff --git a/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart b/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart +index a1104da..1749d65 100644 +--- a/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart ++++ b/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart +@@ -444,12 +444,8 @@ class FlutterCommandRunner extends CommandRunner { + globals.analytics.suppressTelemetry(); + } + +- globals.flutterVersion.ensureVersionFile(); + final bool machineFlag = + topLevelResults[FlutterGlobalOptions.kMachineFlag] as bool? ?? false; +- if (await _shouldCheckForUpdates(topLevelResults, topLevelMachineFlag: machineFlag)) { +- await globals.flutterVersion.checkFlutterVersionFreshness(); +- } + + // See if the user specified a specific device. + final String? specifiedDeviceId = diff --git a/pkgs/development/compilers/flutter/versions/3_35/patches/fix-ios-build-xcode-backend-sh.patch b/pkgs/development/compilers/flutter/versions/3_35/patches/fix-ios-build-xcode-backend-sh.patch new file mode 100644 index 000000000000..9e43b62cbb4d --- /dev/null +++ b/pkgs/development/compilers/flutter/versions/3_35/patches/fix-ios-build-xcode-backend-sh.patch @@ -0,0 +1,68 @@ +From 6df275df3b8694daf16302b407520e3b1dee6724 Mon Sep 17 00:00:00 2001 +From: Philip Hayes +Date: Thu, 12 Sep 2024 13:23:00 -0700 +Subject: [PATCH] fix: cleanup xcode_backend.sh to fix iOS build w/ + `NixOS/nixpkgs` flutter + +This patch cleans up `xcode_backend.sh`. It now effectively just runs +`exec $FLUTTER_ROOT/bin/dart ./xcode_backend.dart`. + +The previous `xcode_backend.sh` tries to discover `$FLUTTER_ROOT` from +argv[0], even though its presence is already guaranteed (the wrapped +`xcode_backend.dart` also relies on this env). + +When using nixpkgs flutter, the flutter SDK directory is composed of several +layers, joined together using symlinks (called a `symlinkJoin`). Without this +patch, the auto-discover traverses the symlinks into the wrong layer, and so it +uses an "unwrapped" `dart` command instead of a "wrapped" dart that sets some +important envs/flags (like `$FLUTTER_ROOT`). + +Using the "unwrapped" dart then manifests in this error when compiling, since +it doesn't see the ios build-support artifacts: + +``` +$ flutter run -d iphone +Running Xcode build... +Xcode build done. 6.4s +Failed to build iOS app +Error (Xcode): Target debug_unpack_ios failed: Error: Flutter failed to create a directory at "//XXXX-flutter-3.24.1-unwrapped/bin/cache/artifacts". +``` +--- + packages/flutter_tools/bin/xcode_backend.sh | 25 ++++----------------- + 1 file changed, 4 insertions(+), 21 deletions(-) + +diff --git a/packages/flutter_tools/bin/xcode_backend.sh b/packages/flutter_tools/bin/xcode_backend.sh +index 2889d7c8e4..48b9d06c6e 100755 +--- a/packages/flutter_tools/bin/xcode_backend.sh ++++ b/packages/flutter_tools/bin/xcode_backend.sh +@@ -13,24 +13,7 @@ + # exit on error, or usage of unset var + set -euo pipefail + +-# Needed because if it is set, cd may print the path it changed to. +-unset CDPATH +- +-function follow_links() ( +- cd -P "$(dirname -- "$1")" +- file="$PWD/$(basename -- "$1")" +- while [[ -h "$file" ]]; do +- cd -P "$(dirname -- "$file")" +- file="$(readlink -- "$file")" +- cd -P "$(dirname -- "$file")" +- file="$PWD/$(basename -- "$file")" +- done +- echo "$file" +-) +- +-PROG_NAME="$(follow_links "${BASH_SOURCE[0]}")" +-BIN_DIR="$(cd "${PROG_NAME%/*}" ; pwd -P)" +-FLUTTER_ROOT="$BIN_DIR/../../.." +-DART="$FLUTTER_ROOT/bin/dart" +- +-"$DART" "$BIN_DIR/xcode_backend.dart" "$@" "ios" ++# Run `dart ./xcode_backend.dart` with the dart from $FLUTTER_ROOT. ++dart="${FLUTTER_ROOT}/bin/dart" ++xcode_backend_dart="${BASH_SOURCE[0]%.sh}.dart" ++exec "${dart}" "${xcode_backend_dart}" "$@" "ios" +-- +2.46.0 diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 9d659083ebca..51f95ce75c05 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4868,6 +4868,7 @@ with pkgs; ); flutterPackages = flutterPackages-bin; flutter = flutterPackages.stable; + flutter335 = flutterPackages.v3_35; flutter332 = flutterPackages.v3_32; flutter329 = flutterPackages.v3_29; flutter327 = flutterPackages.v3_27;