diff --git a/pkgs/development/compilers/flutter/engine/package.nix b/pkgs/development/compilers/flutter/engine/package.nix index 36b2e538bf46..b2ff9426924b 100644 --- a/pkgs/development/compilers/flutter/engine/package.nix +++ b/pkgs/development/compilers/flutter/engine/package.nix @@ -183,6 +183,10 @@ stdenv.mkDerivation (finalAttrs: { buildInputs = [ gtk3 libepoxy + ] + ++ lib.optionals (lib.versionAtLeast flutterVersion "3.41") [ + at-spi2-atk + glib ]; dontPatch = true; @@ -259,6 +263,11 @@ stdenv.mkDerivation (finalAttrs: { 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)" '' + # src/flutter/third_party/libcxx/include/__type_traits/is_referenceable.h:33:1: error: templates must have C++ linkage + + lib.optionalString (lib.versionAtLeast flutterVersion "3.41") '' + substituteInPlace src/flutter/shell/platform/linux/fl_view_accessible.cc \ + --replace-fail "// Workaround missing C code compatibility in ATK header." "#include " + '' + '' popd ''; diff --git a/pkgs/development/compilers/flutter/versions/3_41/data.json b/pkgs/development/compilers/flutter/versions/3_41/data.json new file mode 100644 index 000000000000..4de9f505b518 --- /dev/null +++ b/pkgs/development/compilers/flutter/versions/3_41/data.json @@ -0,0 +1,1090 @@ +{ + "version": "3.41.0-0.0.pre", + "engineVersion": "b267090e310ab697b55c84373da954674f653b37", + "engineSwiftShaderHash": "sha256-qbtCl2nTpmtp9dnaoXc7rF3RqLnAZEmzw1BzPoCRWrc=", + "engineSwiftShaderRev": "794b0cfce1d828d187637e6d932bae484fbe0976", + "channel": "beta", + "engineHashes": { + "aarch64-linux": { + "aarch64-linux": "sha256-gj88N0quFjRnL4lHx4I4OxJtEysFgjBCe/afTmWcrZE=", + "x86_64-linux": "sha256-gj88N0quFjRnL4lHx4I4OxJtEysFgjBCe/afTmWcrZE=" + }, + "x86_64-linux": { + "aarch64-linux": "sha256-X5WemobYTR7DUWJBkAA+jYcZQGy6Emsjcd8GP9gzvxI=", + "x86_64-linux": "sha256-X5WemobYTR7DUWJBkAA+jYcZQGy6Emsjcd8GP9gzvxI=" + } + }, + "dartVersion": "3.11.0-296.3.beta", + "dartHash": { + "x86_64-linux": "sha256-zNir1Y8JvSN8RBVeIXlgDe0GRzsg/41/nZc1qmntYxo=", + "aarch64-linux": "sha256-5nbQBvCS1eF/j045LaG2YDj3aF8nWQNrgP4kasBEXhg=", + "x86_64-darwin": "sha256-0Gbvx3VD+rxwxHMxgybv/X/bmWf2pMxjlAAU3p9aNt0=", + "aarch64-darwin": "sha256-AlFoLzT5shj89YNQF5f4upDb9OHkGO6jTJoZ+e10z7E=" + }, + "flutterHash": "sha256-AxuVzZPUKTjijWTLs4WN1+RnBX1CAndbDRu0CUy9gLM=", + "artifactHashes": { + "android": { + "aarch64-darwin": "sha256-vagA/Az21e5UZlQlGnJOsXQFPcW6qZGa/sG3SmdpLeU=", + "aarch64-linux": "sha256-59jo/Zz0AwdRcpy/14NAkNtX/6ZB8I37CYMbHO59LN0=", + "x86_64-darwin": "sha256-vagA/Az21e5UZlQlGnJOsXQFPcW6qZGa/sG3SmdpLeU=", + "x86_64-linux": "sha256-59jo/Zz0AwdRcpy/14NAkNtX/6ZB8I37CYMbHO59LN0=" + }, + "fuchsia": { + "aarch64-darwin": "sha256-5pulAyTTFU604m5nC/TBis5kMrzM35M1N6aQYWnW5Rk=", + "aarch64-linux": "sha256-5pulAyTTFU604m5nC/TBis5kMrzM35M1N6aQYWnW5Rk=", + "x86_64-darwin": "sha256-5pulAyTTFU604m5nC/TBis5kMrzM35M1N6aQYWnW5Rk=", + "x86_64-linux": "sha256-5pulAyTTFU604m5nC/TBis5kMrzM35M1N6aQYWnW5Rk=" + }, + "ios": { + "aarch64-darwin": "sha256-69MG+u0v+arjPlkApyXNLsRjOuQmAZJJxR8VgPX152c=", + "aarch64-linux": "sha256-69MG+u0v+arjPlkApyXNLsRjOuQmAZJJxR8VgPX152c=", + "x86_64-darwin": "sha256-69MG+u0v+arjPlkApyXNLsRjOuQmAZJJxR8VgPX152c=", + "x86_64-linux": "sha256-69MG+u0v+arjPlkApyXNLsRjOuQmAZJJxR8VgPX152c=" + }, + "linux": { + "aarch64-darwin": "sha256-2UKl+82OiEKMe2W5hq0FHiP4HsYV1Xc7PrOqOdD+794=", + "aarch64-linux": "sha256-2UKl+82OiEKMe2W5hq0FHiP4HsYV1Xc7PrOqOdD+794=", + "x86_64-darwin": "sha256-10YBzBQuz4HZXrgUANc289Ik7embKGt/a59vlxFVsUo=", + "x86_64-linux": "sha256-10YBzBQuz4HZXrgUANc289Ik7embKGt/a59vlxFVsUo=" + }, + "macos": { + "aarch64-darwin": "sha256-t8vbVZqBxgR8nj27oFOMYEWvCtceFijqMQ4NjwRpUa4=", + "aarch64-linux": "sha256-t8vbVZqBxgR8nj27oFOMYEWvCtceFijqMQ4NjwRpUa4=", + "x86_64-darwin": "sha256-t8vbVZqBxgR8nj27oFOMYEWvCtceFijqMQ4NjwRpUa4=", + "x86_64-linux": "sha256-t8vbVZqBxgR8nj27oFOMYEWvCtceFijqMQ4NjwRpUa4=" + }, + "universal": { + "aarch64-darwin": "sha256-CRl4/vH2TWdbSp0QeuNd68QJHdS6WAnB3YBk/Zy7tPE=", + "aarch64-linux": "sha256-HAM7et8BxNd96W3JmZ8wQ61K9lvLKLcbfuukQBS+ZFQ=", + "x86_64-darwin": "sha256-d68qgmEAPpPGnUp/2xOon8AnzG8AHWAVOAH/mzqKSZE=", + "x86_64-linux": "sha256-zUmnHACzbatTrl1c+fDU2BTT198KGdI5mgH/gX7Rq+E=" + }, + "web": { + "aarch64-darwin": "sha256-bb64PCxrdMONx4bHZlBD0oXrJKay+/uqhwzNuPkv7OA=", + "aarch64-linux": "sha256-bb64PCxrdMONx4bHZlBD0oXrJKay+/uqhwzNuPkv7OA=", + "x86_64-darwin": "sha256-bb64PCxrdMONx4bHZlBD0oXrJKay+/uqhwzNuPkv7OA=", + "x86_64-linux": "sha256-bb64PCxrdMONx4bHZlBD0oXrJKay+/uqhwzNuPkv7OA=" + }, + "windows": { + "x86_64-darwin": "sha256-NPEIZSa1qzjSyWmp338CHI0euq+XFDWjNak6zS0wtL4=", + "x86_64-linux": "sha256-NPEIZSa1qzjSyWmp338CHI0euq+XFDWjNak6zS0wtL4=" + } + }, + "pubspecLock": { + "packages": { + "_fe_analyzer_shared": { + "dependency": "direct main", + "description": { + "name": "_fe_analyzer_shared", + "sha256": "5b7468c326d2f8a4f630056404ca0d291ade42918f4a3c6233618e724f39da8e", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "92.0.0" + }, + "analyzer": { + "dependency": "direct main", + "description": { + "name": "analyzer", + "sha256": "70e4b1ef8003c64793a9e268a551a82869a8a96f39deb73dea28084b0e8bf75e", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "9.0.0" + }, + "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": "426cf75afdb23aa74bd4e471704de3f9393f3c7b04c1e2d9c6f1073ae0b8b139", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "8.12.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": "83ccdaa064c980b5596c35dd64a8d3ecc68620174ab9b90b6343b753aa721687", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.0" + }, + "code_builder": { + "dependency": "direct main", + "description": { + "name": "code_builder", + "sha256": "6a6cab2ba4680d6423f34a9b972a4c9a94ebe1b62ecec4e1a1f2cba91fd1319d", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.11.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": "82fa09800c0b71a2e8396bf3ca6b36b43cd35fe7ba2aeab53b6349ac671d0f5b", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.2" + }, + "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": "5da775aa218eaf2151c721b16c01c7676fbfdd99cebba2bf64e8b807a28ff94d", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.15.0" + }, + "crypto": { + "dependency": "direct main", + "description": { + "name": "crypto", + "sha256": "c8ea0233063ba03258fbcf2ca4d6dadfefe14f02fab57702265467a19f27fadf", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.0.7" + }, + "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": "a9c30492da18ff84efe2422ba2d319a89942d93e58eb0b73d32abe822ef54b7b", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.1.3" + }, + "data_assets": { + "dependency": "direct main", + "description": { + "name": "data_assets", + "sha256": "d8b93648a338f471e576e0ba05f6b5d63a4e0fa447ca839a500267421d9245ba", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.19.6" + }, + "dds": { + "dependency": "direct main", + "description": { + "name": "dds", + "sha256": "06d09ee8b4a0b58e721fd3780aa53a80eeec0e14479899b74be39e4bd522c5ff", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "5.1.0" + }, + "dds_service_extensions": { + "dependency": "direct main", + "description": { + "name": "dds_service_extensions", + "sha256": "afe0fce921953ac0c5bb276bccd7e36fa5035d7769567d122523fdd09beb4d03", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.1.0" + }, + "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": "982c5727eeb966dbc6099087b6622be3633fef9616ead8d78d3da737d363a077", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "26.2.3" + }, + "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": "5d309c86e7ce34cd8e37aa71cb30cb652d3829b900ab145e4d9da564b31d59f7", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.0" + }, + "hooks_runner": { + "dependency": "direct main", + "description": { + "name": "hooks_runner", + "sha256": "87832cd552d8ddc6014c240ee724f37bc9ea5141aa74a21658b73d22358f43fd", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.0.1" + }, + "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": "87721a4a50b19c7f1d49001e51409bddc46303966ce89a65af4f4e6004896412", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.6.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": "3c46c2633aec07810c3d6a2eb08d575b5b4072980db08f1344e66aeb53d6e4a7", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.0.0" + }, + "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": "12956d0ad8390bbcc63ca2e1469c0619946ccb52809807067a7020d57e647aa6", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.12.18" + }, + "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": "daa42be75f2ccfb287c24a75e7ac594f2ea0b32bf9ebe7c15154aa45b2dfb2de", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.0.2" + }, + "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": "1a97266a94f7350d30ae522c0af07890c70b8e62c71e8e3920d1db4d23c057d1", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "7.0.1" + }, + "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": "978783255c543aa3586a1b3c21f6e9d720eb315376a915872c61ef8b5c20177d", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.5.2" + }, + "process": { + "dependency": "direct main", + "description": { + "name": "process", + "sha256": "c6248e4526673988586e8c00bb22a49210c258dc91df5227d5da9748ecf79744", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "5.0.5" + }, + "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": "3632775c8e90d6c9712f883e633716432a27758216dfb61bd86a8321c0580925", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "3.0.0" + }, + "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": "77cc98ea27006c84e71a7356cf3daf9ddbde2d91d84f77dbfe64cf0e4d9611ae", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.28.0" + }, + "test_api": { + "dependency": "direct main", + "description": { + "name": "test_api", + "sha256": "19a78f63e83d3a61f00826d09bc2f60e191bf3504183c001262be6ac75589fb8", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.7.8" + }, + "test_core": { + "dependency": "direct main", + "description": { + "name": "test_core", + "sha256": "f1072617a6657e5fc09662e721307f7fb009b4ed89b19f47175d11d5254a62d4", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "0.6.14" + }, + "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": "ce091b2bec81f26a7d4cf83212380ac314bfa4f6061f8c2168274ba5fd828a23", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "8.0.10" + }, + "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": "a11b666489b1954e01d992f3d601b1804a33937b5a8fe677bd26b8a9f96f96e8", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "4.5.2" + }, + "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": "f52385d4f73589977c80797e60fe51014f7f2b957b5e9a62c3f6ada439889249", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "1.2.0" + }, + "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": "971043b3a0d3da28727e40ed3e0b5d18b742fa5a68665cca88e74b7876d5e025", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "6.6.1" + }, + "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": "ec709065bb2c911b336853b67f3732dd13e0336bd065cc2f1061d7610ddf45e3", + "url": "https://pub.dev" + }, + "source": "hosted", + "version": "2.2.3" + } + }, + "sdks": { + "dart": ">=3.10.0-0.0.dev <4.0.0" + } + } +} diff --git a/pkgs/development/compilers/flutter/versions/3_41/patches/deregister-pub-dependencies-artifact.patch b/pkgs/development/compilers/flutter/versions/3_41/patches/deregister-pub-dependencies-artifact.patch new file mode 100644 index 000000000000..c99d771299fe --- /dev/null +++ b/pkgs/development/compilers/flutter/versions/3_41/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_41/patches/disable-auto-update.patch b/pkgs/development/compilers/flutter/versions/3_41/patches/disable-auto-update.patch new file mode 100644 index 000000000000..58be974b10db --- /dev/null +++ b/pkgs/development/compilers/flutter/versions/3_41/patches/disable-auto-update.patch @@ -0,0 +1,29 @@ +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 +@@ -437,11 +437,6 @@ + // Required to support `flutter --version` before artifacts are cached. + await globals.cache.updateAll({DevelopmentArtifact.informative}); + +- globals.flutterVersion.ensureVersionFile(); +- if (await _shouldCheckForUpdates(topLevelResults)) { +- await globals.flutterVersion.checkFlutterVersionFreshness(); +- } +- + // See if the user specified a specific device. + final specifiedDeviceId = topLevelResults[FlutterGlobalOptions.kDeviceIdOption] as String?; + if (specifiedDeviceId != null) { diff --git a/pkgs/development/compilers/flutter/versions/3_41/patches/fix-ios-build-xcode-backend-sh.patch b/pkgs/development/compilers/flutter/versions/3_41/patches/fix-ios-build-xcode-backend-sh.patch new file mode 100644 index 000000000000..9e43b62cbb4d --- /dev/null +++ b/pkgs/development/compilers/flutter/versions/3_41/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/development/compilers/flutter/versions/3_41/patches/fix-macos-build-macos-assemble-sh.patch b/pkgs/development/compilers/flutter/versions/3_41/patches/fix-macos-build-macos-assemble-sh.patch new file mode 100644 index 000000000000..312ec3a5c1ba --- /dev/null +++ b/pkgs/development/compilers/flutter/versions/3_41/patches/fix-macos-build-macos-assemble-sh.patch @@ -0,0 +1,59 @@ +Fix for macOS build issue in Flutter >= 3.35 + +Since version 3.35, the behavior of macos_assemble.sh and xcode_backend.sh +is almost identical. This caused the same error for macOS that previously +occurred for iOS. + +Derived from the iOS patch: ./fix-ios-build-xcode-backend-sh.patch + +Example error: +``` +$ flutter run -d macos +Launching lib/main.dart on macOS in debug mode... +Target debug_unpack_macos failed: Error: Flutter failed to create a directory at "//XXXX-flutter-3.35.1-unwrapped/bin/cache/artifacts". +Please ensure that the SDK and/or project is installed in a location that has read/write permissions for the current user. +Failed to copy Flutter framework. +** BUILD FAILED ** +``` + +--- + +diff --git a/packages/flutter_tools/bin/macos_assemble.sh b/packages/flutter_tools/bin/macos_assemble.sh +index 28acf8842..d0f2923df 100644 +--- a/packages/flutter_tools/bin/macos_assemble.sh ++++ b/packages/flutter_tools/bin/macos_assemble.sh +@@ -13,29 +13,13 @@ + # 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" ++# Run `dart ./xcode_backend.dart` with the dart from $FLUTTER_ROOT. ++dart="${FLUTTER_ROOT}/bin/dart" ++xcode_backend_dart="$(dirname "${BASH_SOURCE[0]}")/xcode_backend.dart" + + # Main entry point. + if [[ $# == 0 ]]; then +- "$DART" "$BIN_DIR/xcode_backend.dart" "build" "macos" ++ exec "${dart}" "${xcode_backend_dart}" "build" "macos" + else +- "$DART" "$BIN_DIR/xcode_backend.dart" "$@" "macos" ++ exec "${dart}" "${xcode_backend_dart}" "$@" "macos" + fi diff --git a/pkgs/development/compilers/flutter/versions/3_41/patches/gradle-flutter-tools-wrapper.patch b/pkgs/development/compilers/flutter/versions/3_41/patches/gradle-flutter-tools-wrapper.patch new file mode 100644 index 000000000000..4c5b258be373 --- /dev/null +++ b/pkgs/development/compilers/flutter/versions/3_41/patches/gradle-flutter-tools-wrapper.patch @@ -0,0 +1,220 @@ +This patch introduces an intermediate Gradle build step to alter the behavior +of flutter_tools' Gradle project, specifically moving the creation of `build` +and `.gradle` directories from within the Nix Store to somewhere in `$HOME/.cache/flutter/nix-flutter-tools-gradle/$engineShortRev`. + +Without this patch, flutter_tools' Gradle project tries to generate `build` and `.gradle` +directories within the Nix Store. Resulting in read-only errors when trying to build a +Flutter Android app at runtime. + +This patch takes advantage of the fact settings.gradle takes priority over settings.gradle.kts to build the intermediate Gradle project +when a Flutter app runs `includeBuild("${settings.ext.flutterSdkPath}/packages/flutter_tools/gradle")` + +`rootProject.buildFileName = "/dev/null"` so that the intermediate project doesn't use `build.gradle.kts` that's in the same directory. + +The intermediate project makes a `settings.gradle` file in `$HOME/.cache/flutter/nix-flutter-tools-gradle//` and `includeBuild`s it. +This Gradle project will build the actual `packages/flutter_tools/gradle` project by setting +`rootProject.projectDir = new File("$settingsDir")` and `apply from: new File("$settingsDir/settings.gradle.kts")`. + +To move `build` to `$HOME/.cache/flutter/nix-flutter-tools-gradle//`, we need to set `buildDirectory`. +To move `.gradle` as well, the `--project-cache-dir` argument must be passed to the Gradle wrapper. +Changing the `GradleUtils.getExecutable` function signature is a delibarate choice, to ensure that no new unpatched usages slip in. +--- /dev/null ++++ b/packages/flutter_tools/gradle/settings.gradle +@@ -0,0 +1,19 @@ ++rootProject.buildFileName = "/dev/null" ++ ++def engineShortRev = (new File("$settingsDir/../../../bin/internal/engine.version")).text.take(10) ++def dir = new File("$System.env.HOME/.cache/flutter/nix-flutter-tools-gradle/$engineShortRev") ++dir.mkdirs() ++def file = new File(dir, "settings.gradle") ++ ++file.text = """ ++rootProject.projectDir = new File("$settingsDir") ++apply from: new File("$settingsDir/settings.gradle.kts") ++ ++gradle.allprojects { project -> ++ project.beforeEvaluate { ++ project.layout.buildDirectory = new File("$dir/build") ++ } ++} ++""" ++ ++includeBuild(dir) +--- a/packages/flutter_tools/gradle/build.gradle.kts ++++ b/packages/flutter_tools/gradle/build.gradle.kts +@@ -4,6 +4,11 @@ + + import org.jetbrains.kotlin.gradle.dsl.JvmTarget + ++// While flutter_tools runs Gradle with a --project-cache-dir, this startParameter ++// is not passed correctly to the Kotlin Gradle plugin for some reason, and so ++// must be set here as well. ++gradle.startParameter.projectCacheDir = layout.buildDirectory.dir("cache").get().asFile ++ + plugins { + `java-gradle-plugin` + groovy +--- a/packages/flutter_tools/lib/src/android/gradle.dart ++++ b/packages/flutter_tools/lib/src/android/gradle.dart +@@ -474,9 +474,9 @@ class AndroidGradleBuilder implements AndroidBuilder { + // from the local.properties file. + updateLocalProperties(project: project, buildInfo: androidBuildInfo.buildInfo); + +- final options = []; +- +- final String gradleExecutablePath = _gradleUtils.getExecutable(project); ++ final [String gradleExecutablePath, ...List options] = _gradleUtils.getExecutable( ++ project, ++ ); + + // All automatically created files should exist. + if (configOnly) { +@@ -797,7 +797,7 @@ class AndroidGradleBuilder implements AndroidBuilder { + 'aar_init_script.gradle', + ); + final command = [ +- _gradleUtils.getExecutable(project), ++ ..._gradleUtils.getExecutable(project), + '-I=$initScript', + '-Pflutter-root=$flutterRoot', + '-Poutput-dir=${outputDirectory.path}', +@@ -912,6 +912,10 @@ class AndroidGradleBuilder implements AndroidBuilder { + final results = []; + + try { ++ final [String gradleExecutablePath, ...List options] = _gradleUtils.getExecutable( ++ project, ++ ); ++ + exitCode = await _runGradleTask( + _kBuildVariantTaskName, + preRunTask: () { +@@ -927,10 +931,10 @@ class AndroidGradleBuilder implements AndroidBuilder { + ), + ); + }, +- options: const ['-q'], ++ options: [...options, '-q'], + project: project, + localGradleErrors: gradleErrors, +- gradleExecutablePath: _gradleUtils.getExecutable(project), ++ gradleExecutablePath: gradleExecutablePath, + outputParser: (String line) { + if (_kBuildVariantRegex.firstMatch(line) case final RegExpMatch match) { + results.add(match.namedGroup(_kBuildVariantRegexGroupName)!); +@@ -964,6 +968,10 @@ class AndroidGradleBuilder implements AndroidBuilder { + late Stopwatch sw; + var exitCode = 1; + try { ++ final [String gradleExecutablePath, ...List options] = _gradleUtils.getExecutable( ++ project, ++ ); ++ + exitCode = await _runGradleTask( + taskName, + preRunTask: () { +@@ -979,10 +987,10 @@ class AndroidGradleBuilder implements AndroidBuilder { + ), + ); + }, +- options: ['-q', '-PoutputPath=$outputPath'], ++ options: [...options, '-q', '-PoutputPath=$outputPath'], + project: project, + localGradleErrors: gradleErrors, +- gradleExecutablePath: _gradleUtils.getExecutable(project), ++ gradleExecutablePath: gradleExecutablePath, + ); + } on Error catch (error) { + _logger.printError(error.toString()); +--- a/packages/flutter_tools/lib/src/android/gradle_errors.dart ++++ b/packages/flutter_tools/lib/src/android/gradle_errors.dart +@@ -228,7 +228,12 @@ final flavorUndefinedHandler = GradleHandledError( + }, + handler: ({required String line, required FlutterProject project, required bool usesAndroidX}) async { + final RunResult tasksRunResult = await globals.processUtils.run( +- [globals.gradleUtils!.getExecutable(project), 'app:tasks', '--all', '--console=auto'], ++ [ ++ ...globals.gradleUtils!.getExecutable(project), ++ 'app:tasks', ++ '--all', ++ '--console=auto', ++ ], + throwOnError: true, + workingDirectory: project.android.hostAppGradleRoot.path, + environment: globals.java?.environment, +--- a/packages/flutter_tools/lib/src/android/gradle_utils.dart ++++ b/packages/flutter_tools/lib/src/android/gradle_utils.dart +@@ -3,6 +3,7 @@ + // found in the LICENSE file. + + import 'package:meta/meta.dart'; ++import 'package:path/path.dart'; + import 'package:process/process.dart'; + import 'package:unified_analytics/unified_analytics.dart'; + +@@ -197,9 +198,29 @@ class GradleUtils { + final Logger _logger; + final OperatingSystemUtils _operatingSystemUtils; + ++ List get _requiredArguments { ++ final String cacheDir = join( ++ switch (globals.platform.environment['XDG_CACHE_HOME']) { ++ final String cacheHome => cacheHome, ++ _ => join( ++ globals.fsUtils.homeDirPath ?? throwToolExit('No cache directory has been specified.'), ++ '.cache', ++ ), ++ }, ++ 'flutter', ++ 'nix-flutter-tools-gradle', ++ globals.flutterVersion.engineRevision.substring(0, 10), ++ ); ++ ++ return [ ++ '--project-cache-dir=${join(cacheDir, 'cache')}', ++ '-Pkotlin.project.persistent.dir=${join(cacheDir, 'kotlin')}', ++ ]; ++ } ++ + /// Gets the Gradle executable path and prepares the Gradle project. + /// This is the `gradlew` or `gradlew.bat` script in the `android/` directory. +- String getExecutable(FlutterProject project) { ++ List getExecutable(FlutterProject project) { + final Directory androidDir = project.android.hostAppGradleRoot; + injectGradleWrapperIfNeeded(androidDir); + +@@ -210,7 +231,7 @@ class GradleUtils { + // If the Gradle executable doesn't have execute permission, + // then attempt to set it. + _operatingSystemUtils.makeExecutable(gradle); +- return gradle.absolute.path; ++ return [gradle.absolute.path, ..._requiredArguments]; + } + throwToolExit( + 'Unable to locate gradlew script. Please check that ${gradle.path} ' +--- a/packages/flutter_tools/test/general.shard/android/android_gradle_builder_test.dart ++++ b/packages/flutter_tools/test/general.shard/android/android_gradle_builder_test.dart +@@ -2606,8 +2606,8 @@ Gradle Crashed + + class FakeGradleUtils extends Fake implements GradleUtils { + @override +- String getExecutable(FlutterProject project) { +- return 'gradlew'; ++ List getExecutable(FlutterProject project) { ++ return const ['gradlew']; + } + } + +--- a/packages/flutter_tools/test/general.shard/android/gradle_errors_test.dart ++++ b/packages/flutter_tools/test/general.shard/android/gradle_errors_test.dart +@@ -1633,8 +1633,8 @@ Platform fakePlatform(String name) { + + class FakeGradleUtils extends Fake implements GradleUtils { + @override +- String getExecutable(FlutterProject project) { +- return 'gradlew'; ++ List getExecutable(FlutterProject project) { ++ return const ['gradlew']; + } + } + diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index 566cb5480b7c..f131eabd1ff8 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -4193,6 +4193,7 @@ with pkgs; ); flutterPackages = flutterPackages-bin; flutter = flutterPackages.stable; + flutter341 = flutterPackages.v3_41; flutter338 = flutterPackages.v3_38; flutter335 = flutterPackages.v3_35; flutter332 = flutterPackages.v3_32;