From f127398be2b53f602cfea424edbecad2c6f8ce97 Mon Sep 17 00:00:00 2001 From: nanashi0x74 Date: Thu, 1 Sep 2022 20:38:10 +0200 Subject: [PATCH 01/11] flutter: 3.0.4->3.3.0, flutter.dart: 2.17.5->2.18.0 --- pkgs/development/compilers/flutter/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/development/compilers/flutter/default.nix b/pkgs/development/compilers/flutter/default.nix index 4529d2adc1aa..5702fe805149 100644 --- a/pkgs/development/compilers/flutter/default.nix +++ b/pkgs/development/compilers/flutter/default.nix @@ -4,20 +4,20 @@ let getPatches = dir: let files = builtins.attrNames (builtins.readDir dir); in map (f: dir + ("/" + f)) files; - version = "3.0.4"; + version = "3.3.0"; channel = "stable"; filename = "flutter_linux_${version}-${channel}.tar.xz"; # Decouples flutter derivation from dart derivation, # use specific dart version to not need to bump dart derivation when bumping flutter. - dartVersion = "2.17.5"; + dartVersion = "2.18.0"; dartSourceBase = "https://storage.googleapis.com/dart-archive/channels"; dartForFlutter = dart.override { version = dartVersion; sources = { "${dartVersion}-x86_64-linux" = fetchurl { url = "${dartSourceBase}/stable/release/${dartVersion}/sdk/dartsdk-linux-x64-release.zip"; - sha256 = "sha256-AFJGeiPsjUZSO+DykmOIFETg2jIohg62tp3ghZrKJFk="; + sha256 = "sha256-45HE7Y9iO5dI+JfLWF1ikFfBFB+er46bK+EYkyuhFjI="; }; }; }; @@ -30,7 +30,7 @@ in pname = "flutter"; src = fetchurl { url = "https://storage.googleapis.com/flutter_infra_release/releases/${channel}/linux/${filename}"; - sha256 = "sha256-vh3QjLGFBN321DUET9XhYqSkILjEj+ZqAALu/mxY+go="; + sha256 = "sha256-qSonqm1EVNehz5+KClbg5daGXyz80hz1Llf3kirV1QQ="; }; patches = getPatches ./patches; }; From bd0f733ce11fc3cca3a32d39ed51ae23440f434a Mon Sep 17 00:00:00 2001 From: nanashi0x74 Date: Thu, 1 Sep 2022 20:40:01 +0200 Subject: [PATCH 02/11] flutter: regenerate disable-auto-update.patch --- .../flutter/patches/disable-auto-update.patch | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/pkgs/development/compilers/flutter/patches/disable-auto-update.patch b/pkgs/development/compilers/flutter/patches/disable-auto-update.patch index e799f6e1550b..21b676a2af39 100644 --- a/pkgs/development/compilers/flutter/patches/disable-auto-update.patch +++ b/pkgs/development/compilers/flutter/patches/disable-auto-update.patch @@ -1,10 +1,10 @@ diff --git a/bin/internal/shared.sh b/bin/internal/shared.sh -index 05cba4393b..2a775bf24f 100644 +index ab746724e9..1087983c87 100644 --- a/bin/internal/shared.sh +++ b/bin/internal/shared.sh -@@ -217,8 +217,6 @@ function shared::execute() { - # FLUTTER_TOOL_ARGS="--enable-asserts $FLUTTER_TOOL_ARGS" - # FLUTTER_TOOL_ARGS="$FLUTTER_TOOL_ARGS --observe=65432" +@@ -215,8 +215,6 @@ function shared::execute() { + exit 1 + fi - upgrade_flutter 7< "$PROG_NAME" - @@ -12,7 +12,7 @@ index 05cba4393b..2a775bf24f 100644 case "$BIN_NAME" in flutter*) 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 396756808e..d324a6df59 100644 +index 738fef987d..03a152e64f 100644 --- a/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart +++ b/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart @@ -241,7 +241,6 @@ class FlutterCommandRunner extends CommandRunner { From 89de6982188c70f093a06cebba8f57b59d04200c Mon Sep 17 00:00:00 2001 From: nanashi0x74 Date: Thu, 1 Sep 2022 20:56:06 +0200 Subject: [PATCH 03/11] flutter: regenerate git-dir.patch --- .../compilers/flutter/patches/git-dir.patch | 30 +++++++++---------- 1 file changed, 15 insertions(+), 15 deletions(-) diff --git a/pkgs/development/compilers/flutter/patches/git-dir.patch b/pkgs/development/compilers/flutter/patches/git-dir.patch index 0c736f945ea9..42ad756f8ea4 100644 --- a/pkgs/development/compilers/flutter/patches/git-dir.patch +++ b/pkgs/development/compilers/flutter/patches/git-dir.patch @@ -1,8 +1,8 @@ diff --git a/dev/bots/prepare_package.dart b/dev/bots/prepare_package.dart -index 468a91a954..5def6897ce 100644 +index 8e4cb81340..2c20940423 100644 --- a/dev/bots/prepare_package.dart +++ b/dev/bots/prepare_package.dart -@@ -525,7 +525,7 @@ class ArchiveCreator { +@@ -526,7 +526,7 @@ class ArchiveCreator { Future _runGit(List args, {Directory? workingDirectory}) { return _processRunner.runProcess( @@ -12,7 +12,7 @@ index 468a91a954..5def6897ce 100644 ); } diff --git a/packages/flutter_tools/lib/src/commands/downgrade.dart b/packages/flutter_tools/lib/src/commands/downgrade.dart -index bb0eb428a9..4a2a48bb5e 100644 +index 666c190067..b6c3761f6f 100644 --- a/packages/flutter_tools/lib/src/commands/downgrade.dart +++ b/packages/flutter_tools/lib/src/commands/downgrade.dart @@ -118,7 +118,7 @@ class DowngradeCommand extends FlutterCommand { @@ -34,19 +34,19 @@ index bb0eb428a9..4a2a48bb5e 100644 if (parseResult.exitCode == 0) { buffer.writeln('Channel "${getNameForChannel(channel)}" was previously on: ${parseResult.stdout}.'); diff --git a/packages/flutter_tools/lib/src/version.dart b/packages/flutter_tools/lib/src/version.dart -index f2068a6ca2..99b161689e 100644 +index dc47f17057..8068e2d1f5 100644 --- a/packages/flutter_tools/lib/src/version.dart +++ b/packages/flutter_tools/lib/src/version.dart -@@ -106,7 +106,7 @@ class FlutterVersion { +@@ -111,7 +111,7 @@ class FlutterVersion { String? channel = _channel; if (channel == null) { final String gitChannel = _runGit( -- 'git rev-parse --abbrev-ref --symbolic @{u}', -+ 'git --git-dir .git rev-parse --abbrev-ref --symbolic @{u}', +- 'git rev-parse --abbrev-ref --symbolic $kGitTrackingUpstream', ++ 'git --git-dir .git rev-parse --abbrev-ref --symbolic $kGitTrackingUpstream', globals.processUtils, _workingDirectory, ); -@@ -114,7 +114,7 @@ class FlutterVersion { +@@ -119,7 +119,7 @@ class FlutterVersion { if (slash != -1) { final String remote = gitChannel.substring(0, slash); _repositoryUrl = _runGit( @@ -55,7 +55,7 @@ index f2068a6ca2..99b161689e 100644 globals.processUtils, _workingDirectory, ); -@@ -326,7 +326,7 @@ class FlutterVersion { +@@ -298,7 +298,7 @@ class FlutterVersion { /// the branch name will be returned as `'[user-branch]'`. String getBranchName({ bool redactUnknownBranches = false }) { _branch ??= () { @@ -64,7 +64,7 @@ index f2068a6ca2..99b161689e 100644 return branch == 'HEAD' ? channel : branch; }(); if (redactUnknownBranches || _branch!.isEmpty) { -@@ -359,7 +359,7 @@ class FlutterVersion { +@@ -331,7 +331,7 @@ class FlutterVersion { /// wrapper that does that. @visibleForTesting static List gitLog(List args) { @@ -73,16 +73,16 @@ index f2068a6ca2..99b161689e 100644 } /// Gets the release date of the latest available Flutter version. -@@ -730,7 +730,7 @@ class GitTagVersion { - - static GitTagVersion determine(ProcessUtils processUtils, {String? workingDirectory, bool fetchTags = false, String gitRef = 'HEAD'}) { +@@ -708,7 +708,7 @@ class GitTagVersion { + String gitRef = 'HEAD' + }) { if (fetchTags) { - final String channel = _runGit('git rev-parse --abbrev-ref HEAD', processUtils, workingDirectory); + final String channel = _runGit('git --git-dir .git rev-parse --abbrev-ref HEAD', processUtils, workingDirectory); if (channel == 'dev' || channel == 'beta' || channel == 'stable') { globals.printTrace('Skipping request to fetchTags - on well known channel $channel.'); } else { -@@ -739,7 +739,7 @@ class GitTagVersion { +@@ -718,7 +718,7 @@ class GitTagVersion { } // find all tags attached to the given [gitRef] final List tags = _runGit( @@ -91,7 +91,7 @@ index f2068a6ca2..99b161689e 100644 // Check first for a stable tag final RegExp stableTagPattern = RegExp(r'^\d+\.\d+\.\d+$'); -@@ -760,7 +760,7 @@ class GitTagVersion { +@@ -739,7 +739,7 @@ class GitTagVersion { // recent tag and number of commits past. return parse( _runGit( From 747f298be5ce7f15e127d154411b9a84dbf443be Mon Sep 17 00:00:00 2001 From: nanashi0x74 Date: Thu, 1 Sep 2022 21:05:13 +0200 Subject: [PATCH 04/11] flutter: regenerate move-cache.patch --- .../flutter/patches/move-cache.patch | 75 ++++++++++--------- 1 file changed, 38 insertions(+), 37 deletions(-) diff --git a/pkgs/development/compilers/flutter/patches/move-cache.patch b/pkgs/development/compilers/flutter/patches/move-cache.patch index 5cb7c71e9bd4..025e48b11e0e 100644 --- a/pkgs/development/compilers/flutter/patches/move-cache.patch +++ b/pkgs/development/compilers/flutter/patches/move-cache.patch @@ -1,5 +1,5 @@ diff --git a/packages/flutter_tools/lib/src/asset.dart b/packages/flutter_tools/lib/src/asset.dart -index ed42baea29..12941f733a 100644 +index 9dd7272fbe..62eb5f1277 100644 --- a/packages/flutter_tools/lib/src/asset.dart +++ b/packages/flutter_tools/lib/src/asset.dart @@ -11,11 +11,11 @@ import 'base/file_system.dart'; @@ -15,17 +15,18 @@ index ed42baea29..12941f733a 100644 import 'license_collector.dart'; import 'project.dart'; -@@ -504,7 +504,7 @@ class ManifestAssetBundle implements AssetBundle { - } +@@ -530,8 +530,7 @@ class ManifestAssetBundle implements AssetBundle { final Uri entryUri = _fileSystem.path.toUri(asset); result.add(_Asset( -- baseDir: _fileSystem.path.join(Cache.flutterRoot!, 'bin', 'cache', 'artifacts', 'material_fonts'), -+ baseDir: _fileSystem.path.join(globals.fsUtils.homeDirPath!, '.cache', 'flutter', 'artifacts', 'material_fonts'), + baseDir: _fileSystem.path.join( +- Cache.flutterRoot!, +- 'bin', 'cache', 'artifacts', 'material_fonts', ++ globals.fsUtils.homeDirPath!, '.cache', 'flutter', 'artifacts', 'material_fonts', + ), relativeUri: Uri(path: entryUri.pathSegments.last), entryUri: entryUri, - package: null, diff --git a/packages/flutter_tools/lib/src/cache.dart b/packages/flutter_tools/lib/src/cache.dart -index defc86cc20..7fdf14d112 100644 +index dd80b1e46e..8e54517765 100644 --- a/packages/flutter_tools/lib/src/cache.dart +++ b/packages/flutter_tools/lib/src/cache.dart @@ -22,6 +22,7 @@ import 'base/user_messages.dart'; @@ -36,7 +37,7 @@ index defc86cc20..7fdf14d112 100644 const String kFlutterRootEnvironmentVariableName = 'FLUTTER_ROOT'; // should point to //flutter/ (root of flutter/flutter repo) const String kFlutterEngineEnvironmentVariableName = 'FLUTTER_ENGINE'; // should point to //engine/src/ (root of flutter/engine repo) -@@ -322,8 +323,13 @@ class Cache { +@@ -318,8 +319,13 @@ class Cache { return; } assert(_lock == null); @@ -51,7 +52,7 @@ index defc86cc20..7fdf14d112 100644 try { _lock = lockFile.openSync(mode: FileMode.write); } on FileSystemException catch (e) { -@@ -382,8 +388,7 @@ class Cache { +@@ -378,8 +384,7 @@ class Cache { String get devToolsVersion { if (_devToolsVersion == null) { @@ -61,7 +62,7 @@ index defc86cc20..7fdf14d112 100644 if (!devToolsDir.existsSync()) { throw Exception('Could not find directory at ${devToolsDir.path}'); } -@@ -536,7 +541,7 @@ class Cache { +@@ -532,7 +537,7 @@ class Cache { if (_rootOverride != null) { return _fileSystem.directory(_fileSystem.path.join(_rootOverride!.path, 'bin', 'cache')); } else { @@ -71,7 +72,7 @@ index defc86cc20..7fdf14d112 100644 } diff --git a/packages/flutter_tools/lib/src/artifacts.dart b/packages/flutter_tools/lib/src/artifacts.dart -index 2aac9686e8..32c4b98b88 100644 +index c539d67156..4e0a64f7a9 100644 --- a/packages/flutter_tools/lib/src/artifacts.dart +++ b/packages/flutter_tools/lib/src/artifacts.dart @@ -346,10 +346,10 @@ class CachedArtifacts implements Artifacts { @@ -82,8 +83,8 @@ index 2aac9686e8..32c4b98b88 100644 + final String path = _dartSdkPath(_fileSystem); return _fileSystem.directory(path); case HostArtifact.engineDartBinary: -- final String path = _fileSystem.path.join(_dartSdkPath(_cache), 'bin', _hostArtifactToFileName(artifact, _platform.isWindows)); -+ final String path = _fileSystem.path.join(_dartSdkPath(_fileSystem), 'bin', _hostArtifactToFileName(artifact, _platform.isWindows)); +- final String path = _fileSystem.path.join(_dartSdkPath(_cache), 'bin', _hostArtifactToFileName(artifact, _platform)); ++ final String path = _fileSystem.path.join(_dartSdkPath(_fileSystem), 'bin', _hostArtifactToFileName(artifact, _platform)); return _fileSystem.file(path); case HostArtifact.flutterWebSdk: final String path = _getFlutterWebSdkPath(); @@ -91,12 +92,12 @@ index 2aac9686e8..32c4b98b88 100644 case HostArtifact.dart2jsSnapshot: case HostArtifact.dartdevcSnapshot: case HostArtifact.kernelWorkerSnapshot: -- final String path = _fileSystem.path.join(_dartSdkPath(_cache), 'bin', 'snapshots', _hostArtifactToFileName(artifact, _platform.isWindows)); -+ final String path = _fileSystem.path.join(_dartSdkPath(_fileSystem), 'bin', 'snapshots', _hostArtifactToFileName(artifact, _platform.isWindows)); +- final String path = _fileSystem.path.join(_dartSdkPath(_cache), 'bin', 'snapshots', _hostArtifactToFileName(artifact, _platform)); ++ final String path = _fileSystem.path.join(_dartSdkPath(_fileSystem), 'bin', 'snapshots', _hostArtifactToFileName(artifact, _platform)); return _fileSystem.file(path); case HostArtifact.iosDeploy: - final String artifactFileName = _hostArtifactToFileName(artifact, _platform.isWindows); -@@ -461,11 +461,13 @@ class CachedArtifacts implements Artifacts { + final String artifactFileName = _hostArtifactToFileName(artifact, _platform); +@@ -465,11 +465,13 @@ class CachedArtifacts implements Artifacts { String _getAndroidArtifactPath(Artifact artifact, TargetPlatform platform, BuildMode mode) { final String engineDir = _getEngineArtifactsPath(platform, mode)!; switch (artifact) { @@ -125,8 +126,8 @@ index 2aac9686e8..32c4b98b88 100644 - case Artifact.frontendServerSnapshotForEngineDartSdk: case Artifact.constFinder: case Artifact.flutterMacOSFramework: - case Artifact.flutterMacOSPodspec: -@@ -594,14 +596,10 @@ class CachedArtifacts implements Artifacts { + case Artifact.flutterPatchedSdkPath: +@@ -586,14 +588,10 @@ class CachedArtifacts implements Artifacts { // For script snapshots any gen_snapshot binary will do. Returning gen_snapshot for // android_arm in profile mode because it is available on all supported host platforms. return _getAndroidArtifactPath(artifact, TargetPlatform.android_arm, BuildMode.profile); @@ -142,27 +143,27 @@ index 2aac9686e8..32c4b98b88 100644 case Artifact.icuData: final String engineArtifactsPath = _cache.getArtifactDirectory('engine').path; final String platformDirName = _enginePlatformDirectoryName(platform); -@@ -797,7 +795,7 @@ class CachedLocalEngineArtifacts implements LocalEngineArtifacts { - final String path = _fileSystem.path.join(_hostEngineOutPath, 'dart-sdk', 'bin', 'snapshots', _hostArtifactToFileName(artifact, _platform.isWindows)); +@@ -776,7 +774,7 @@ class CachedLocalEngineArtifacts implements LocalEngineArtifacts { + final String path = _fileSystem.path.join(_hostEngineOutPath, 'dart-sdk', 'bin', 'snapshots', _hostArtifactToFileName(artifact, _platform)); return _fileSystem.file(path); case HostArtifact.dartdevcSnapshot: -- final String path = _fileSystem.path.join(_dartSdkPath(_cache), 'bin', 'snapshots', _hostArtifactToFileName(artifact, _platform.isWindows)); -+ final String path = _fileSystem.path.join(_dartSdkPath(_fileSystem), 'bin', 'snapshots', _hostArtifactToFileName(artifact, _platform.isWindows)); +- final String path = _fileSystem.path.join(_dartSdkPath(_cache), 'bin', 'snapshots', _hostArtifactToFileName(artifact, _platform)); ++ final String path = _fileSystem.path.join(_dartSdkPath(_fileSystem), 'bin', 'snapshots', _hostArtifactToFileName(artifact, _platform)); return _fileSystem.file(path); case HostArtifact.kernelWorkerSnapshot: - final String path = _fileSystem.path.join(_hostEngineOutPath, 'dart-sdk', 'bin', 'snapshots', _hostArtifactToFileName(artifact, _platform.isWindows)); -@@ -922,9 +920,7 @@ class CachedLocalEngineArtifacts implements LocalEngineArtifacts { - case Artifact.windowsUwpCppClientWrapper: + final String path = _fileSystem.path.join(_hostEngineOutPath, 'dart-sdk', 'bin', 'snapshots', _hostArtifactToFileName(artifact, _platform)); +@@ -901,9 +899,7 @@ class CachedLocalEngineArtifacts implements LocalEngineArtifacts { + case Artifact.windowsCppClientWrapper: return _fileSystem.path.join(_hostEngineOutPath, artifactFileName); case Artifact.frontendServerSnapshotForEngineDartSdk: - return _fileSystem.path.join( - _hostEngineOutPath, 'dart-sdk', 'bin', 'snapshots', artifactFileName, - ); + return _fileSystem.path.join(_hostEngineOutPath, 'gen', artifactFileName); - case Artifact.uwptool: - return _fileSystem.path.join(_hostEngineOutPath, artifactFileName); } -@@ -1034,8 +1030,8 @@ class OverrideArtifacts implements Artifacts { + } + +@@ -1011,8 +1007,8 @@ class OverrideArtifacts implements Artifacts { } /// Locate the Dart SDK. @@ -174,12 +175,12 @@ index 2aac9686e8..32c4b98b88 100644 class _TestArtifacts implements Artifacts { diff --git a/packages/flutter_tools/test/general.shard/artifacts_test.dart b/packages/flutter_tools/test/general.shard/artifacts_test.dart -index d906511a15..adfdd4bb42 100644 +index aed3eb9285..81b8362648 100644 --- a/packages/flutter_tools/test/general.shard/artifacts_test.dart +++ b/packages/flutter_tools/test/general.shard/artifacts_test.dart -@@ -153,10 +153,6 @@ void main() { - artifacts.getArtifactPath(Artifact.windowsUwpDesktopPath, platform: TargetPlatform.windows_uwp_x64, mode: BuildMode.release), - fileSystem.path.join('root', 'bin', 'cache', 'artifacts', 'engine', 'windows-uwp-x64-release'), +@@ -141,10 +141,6 @@ void main() { + artifacts.getArtifactPath(Artifact.flutterTester, platform: TargetPlatform.linux_arm64), + fileSystem.path.join('root', 'bin', 'cache', 'artifacts', 'engine', 'linux-arm64', 'flutter_tester'), ); - expect( - artifacts.getArtifactPath(Artifact.frontendServerSnapshotForEngineDartSdk), @@ -188,7 +189,7 @@ index d906511a15..adfdd4bb42 100644 }); testWithoutContext('precompiled web artifact paths are correct', () { -@@ -322,11 +318,6 @@ void main() { +@@ -310,11 +306,6 @@ void main() { artifacts.getHostArtifact(HostArtifact.engineDartSdkPath).path, fileSystem.path.join('/out', 'host_debug_unopt', 'dart-sdk'), ); @@ -197,6 +198,6 @@ index d906511a15..adfdd4bb42 100644 - fileSystem.path.join('/out', 'host_debug_unopt', 'dart-sdk', 'bin', - 'snapshots', 'frontend_server.dart.snapshot') - ); - }); - - testWithoutContext('getEngineType', () { + expect( + artifacts.getHostArtifact(HostArtifact.impellerc).path, + fileSystem.path.join('/out', 'host_debug_unopt', 'impellerc'), From ffb72bdc5bb3a9343723f35923a3186be6bf4899 Mon Sep 17 00:00:00 2001 From: nanashi0x74 Date: Tue, 6 Sep 2022 11:48:03 +0200 Subject: [PATCH 05/11] flutter: fix buildPhase after .packages deprecation https://medium.com/dartlang/dart-2-18-f4b3101f146c#514e --- pkgs/development/compilers/flutter/flutter.nix | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pkgs/development/compilers/flutter/flutter.nix b/pkgs/development/compilers/flutter/flutter.nix index 28a78c3e3060..f2c861356ab6 100644 --- a/pkgs/development/compilers/flutter/flutter.nix +++ b/pkgs/development/compilers/flutter/flutter.nix @@ -65,7 +65,7 @@ let popd local revision="$(cd "$FLUTTER_ROOT"; git rev-parse HEAD)" - ${dart}/bin/dart --snapshot="$SNAPSHOT_PATH" --packages="$FLUTTER_TOOLS_DIR/.packages" "$SCRIPT_PATH" + ${dart}/bin/dart --snapshot="$SNAPSHOT_PATH" --packages="$FLUTTER_TOOLS_DIR/.dart_tool/package_config.json" "$SCRIPT_PATH" echo "$revision" > "$STAMP_PATH" echo -n "${version}" > version From 41754242a6ed0b85227f0944aa9db90f1e92a3b0 Mon Sep 17 00:00:00 2001 From: nanashi0x74 Date: Tue, 6 Sep 2022 12:17:42 +0200 Subject: [PATCH 06/11] flutter: add cache back in for shaders --- .../compilers/flutter/patches/move-cache.patch | 13 ++++--------- 1 file changed, 4 insertions(+), 9 deletions(-) diff --git a/pkgs/development/compilers/flutter/patches/move-cache.patch b/pkgs/development/compilers/flutter/patches/move-cache.patch index 025e48b11e0e..008c5959e5b9 100644 --- a/pkgs/development/compilers/flutter/patches/move-cache.patch +++ b/pkgs/development/compilers/flutter/patches/move-cache.patch @@ -1,13 +1,9 @@ +diff --git a/packages/flutter_tools/lib/src/artifacts.dart b/packages/flutter_tools/lib/src/artifacts.dart diff --git a/packages/flutter_tools/lib/src/asset.dart b/packages/flutter_tools/lib/src/asset.dart -index 9dd7272fbe..62eb5f1277 100644 +index 9dd7272fbe..642c8e48e4 100644 --- a/packages/flutter_tools/lib/src/asset.dart +++ b/packages/flutter_tools/lib/src/asset.dart -@@ -11,11 +11,11 @@ import 'base/file_system.dart'; - import 'base/logger.dart'; - import 'base/platform.dart'; - import 'build_info.dart'; --import 'cache.dart'; - import 'convert.dart'; +@@ -16,6 +16,7 @@ import 'convert.dart'; import 'dart/package_map.dart'; import 'devfs.dart'; import 'flutter_manifest.dart'; @@ -15,7 +11,7 @@ index 9dd7272fbe..62eb5f1277 100644 import 'license_collector.dart'; import 'project.dart'; -@@ -530,8 +530,7 @@ class ManifestAssetBundle implements AssetBundle { +@@ -530,8 +531,7 @@ class ManifestAssetBundle implements AssetBundle { final Uri entryUri = _fileSystem.path.toUri(asset); result.add(_Asset( baseDir: _fileSystem.path.join( @@ -71,7 +67,6 @@ index dd80b1e46e..8e54517765 100644 } } -diff --git a/packages/flutter_tools/lib/src/artifacts.dart b/packages/flutter_tools/lib/src/artifacts.dart index c539d67156..4e0a64f7a9 100644 --- a/packages/flutter_tools/lib/src/artifacts.dart +++ b/packages/flutter_tools/lib/src/artifacts.dart From a95999ea7f2973823d2c5ecdbb72196b0a87bf4b Mon Sep 17 00:00:00 2001 From: nanashi0x74 Date: Wed, 14 Sep 2022 19:44:07 +0200 Subject: [PATCH 07/11] flutter: 3.3.0->3.3.3, flutter.dart: 2.18.0->2.18.2 --- pkgs/development/compilers/flutter/default.nix | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkgs/development/compilers/flutter/default.nix b/pkgs/development/compilers/flutter/default.nix index 5702fe805149..3df0ef9917ef 100644 --- a/pkgs/development/compilers/flutter/default.nix +++ b/pkgs/development/compilers/flutter/default.nix @@ -4,20 +4,20 @@ let getPatches = dir: let files = builtins.attrNames (builtins.readDir dir); in map (f: dir + ("/" + f)) files; - version = "3.3.0"; + version = "3.3.3"; channel = "stable"; filename = "flutter_linux_${version}-${channel}.tar.xz"; # Decouples flutter derivation from dart derivation, # use specific dart version to not need to bump dart derivation when bumping flutter. - dartVersion = "2.18.0"; + dartVersion = "2.18.2"; dartSourceBase = "https://storage.googleapis.com/dart-archive/channels"; dartForFlutter = dart.override { version = dartVersion; sources = { "${dartVersion}-x86_64-linux" = fetchurl { url = "${dartSourceBase}/stable/release/${dartVersion}/sdk/dartsdk-linux-x64-release.zip"; - sha256 = "sha256-45HE7Y9iO5dI+JfLWF1ikFfBFB+er46bK+EYkyuhFjI="; + sha256 = "sha256-C3+YjecXLvSmJrLwi9H7TgD9Np0AArRWx3EdBrfQpTU"; }; }; }; @@ -30,7 +30,7 @@ in pname = "flutter"; src = fetchurl { url = "https://storage.googleapis.com/flutter_infra_release/releases/${channel}/linux/${filename}"; - sha256 = "sha256-qSonqm1EVNehz5+KClbg5daGXyz80hz1Llf3kirV1QQ="; + sha256 = "sha256-MTZeWQUp4/TcPzYIT6eqIKSPUPvn2Mp/thOQzNgpTXg="; }; patches = getPatches ./patches; }; From 2bdae5cabd9fa160a9f5892c4ac19082e8aa8939 Mon Sep 17 00:00:00 2001 From: nanashi0x74 Date: Sun, 2 Oct 2022 18:19:50 +0200 Subject: [PATCH 08/11] flutter: refactor packages --- .../development/compilers/flutter/default.nix | 43 +++++++++---------- 1 file changed, 20 insertions(+), 23 deletions(-) diff --git a/pkgs/development/compilers/flutter/default.nix b/pkgs/development/compilers/flutter/default.nix index 3df0ef9917ef..176ae190a339 100644 --- a/pkgs/development/compilers/flutter/default.nix +++ b/pkgs/development/compilers/flutter/default.nix @@ -4,34 +4,31 @@ let getPatches = dir: let files = builtins.attrNames (builtins.readDir dir); in map (f: dir + ("/" + f)) files; - version = "3.3.3"; - channel = "stable"; - filename = "flutter_linux_${version}-${channel}.tar.xz"; - - # Decouples flutter derivation from dart derivation, - # use specific dart version to not need to bump dart derivation when bumping flutter. - dartVersion = "2.18.2"; - dartSourceBase = "https://storage.googleapis.com/dart-archive/channels"; - dartForFlutter = dart.override { - version = dartVersion; - sources = { - "${dartVersion}-x86_64-linux" = fetchurl { - url = "${dartSourceBase}/stable/release/${dartVersion}/sdk/dartsdk-linux-x64-release.zip"; - sha256 = "sha256-C3+YjecXLvSmJrLwi9H7TgD9Np0AArRWx3EdBrfQpTU"; + flutterDrv = { version, pname, dartVersion, hash, dartHash }: mkFlutter { + inherit version pname; + dart = dart.override { + version = dartVersion; + sources = { + "${dartVersion}-x86_64-linux" = fetchurl { + url = "https://storage.googleapis.com/dart-archive/channels/stable/release/${dartVersion}/sdk/dartsdk-linux-x64-release.zip"; + sha256 = dartHash; + }; }; }; - }; -in -{ - inherit mkFlutter; - stable = mkFlutter rec { - inherit version; - dart = dartForFlutter; - pname = "flutter"; src = fetchurl { - url = "https://storage.googleapis.com/flutter_infra_release/releases/${channel}/linux/${filename}"; + url = "https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${version}-stable.tar.xz"; sha256 = "sha256-MTZeWQUp4/TcPzYIT6eqIKSPUPvn2Mp/thOQzNgpTXg="; }; patches = getPatches ./patches; }; +in +{ + inherit mkFlutter; + stable = flutterDrv { + pname = "flutter"; + version = "3.3.3"; + dartVersion = "2.18.2"; + hash = "sha256-MTZeWQUp4/TcPzYIT6eqIKSPUPvn2Mp/thOQzNgpTXg="; + dartHash = "sha256-C3+YjecXLvSmJrLwi9H7TgD9Np0AArRWx3EdBrfQpTU"; + }; } From 4a74e239b5fd022cb5dcb2f788b311ab8ae4699a Mon Sep 17 00:00:00 2001 From: nanashi0x74 Date: Sun, 2 Oct 2022 19:04:28 +0200 Subject: [PATCH 09/11] flutter: add flutter2 package --- .../development/compilers/flutter/default.nix | 17 +++- .../flutter2/disable-auto-update.patch | 36 +++++++++ .../flutter/patches/flutter2/git-dir.patch | 80 +++++++++++++++++++ .../flutter/patches/flutter2/move-cache.patch | 72 +++++++++++++++++ .../{ => flutter3}/disable-auto-update.patch | 0 .../patches/{ => flutter3}/git-dir.patch | 0 .../patches/{ => flutter3}/move-cache.patch | 0 pkgs/top-level/all-packages.nix | 1 + 8 files changed, 202 insertions(+), 4 deletions(-) create mode 100644 pkgs/development/compilers/flutter/patches/flutter2/disable-auto-update.patch create mode 100644 pkgs/development/compilers/flutter/patches/flutter2/git-dir.patch create mode 100644 pkgs/development/compilers/flutter/patches/flutter2/move-cache.patch rename pkgs/development/compilers/flutter/patches/{ => flutter3}/disable-auto-update.patch (100%) rename pkgs/development/compilers/flutter/patches/{ => flutter3}/git-dir.patch (100%) rename pkgs/development/compilers/flutter/patches/{ => flutter3}/move-cache.patch (100%) diff --git a/pkgs/development/compilers/flutter/default.nix b/pkgs/development/compilers/flutter/default.nix index 176ae190a339..02188335129a 100644 --- a/pkgs/development/compilers/flutter/default.nix +++ b/pkgs/development/compilers/flutter/default.nix @@ -4,8 +4,8 @@ let getPatches = dir: let files = builtins.attrNames (builtins.readDir dir); in map (f: dir + ("/" + f)) files; - flutterDrv = { version, pname, dartVersion, hash, dartHash }: mkFlutter { - inherit version pname; + flutterDrv = { version, pname, dartVersion, hash, dartHash, patches }: mkFlutter { + inherit version pname patches; dart = dart.override { version = dartVersion; sources = { @@ -17,9 +17,8 @@ let }; src = fetchurl { url = "https://storage.googleapis.com/flutter_infra_release/releases/stable/linux/flutter_linux_${version}-stable.tar.xz"; - sha256 = "sha256-MTZeWQUp4/TcPzYIT6eqIKSPUPvn2Mp/thOQzNgpTXg="; + sha256 = hash; }; - patches = getPatches ./patches; }; in { @@ -30,5 +29,15 @@ in dartVersion = "2.18.2"; hash = "sha256-MTZeWQUp4/TcPzYIT6eqIKSPUPvn2Mp/thOQzNgpTXg="; dartHash = "sha256-C3+YjecXLvSmJrLwi9H7TgD9Np0AArRWx3EdBrfQpTU"; + patches = getPatches ./patches/flutter3; + }; + + v2 = flutterDrv { + pname = "flutter"; + version = "2.10.5"; + dartVersion = "2.16.2"; + hash = "sha256-DTZwxlMUYk8NS1SaWUJolXjD+JnRW73Ps5CdRHDGnt0="; + dartHash = "sha256-egrYd7B4XhkBiHPIFE2zopxKtQ58GqlogAKA/UeiXnI="; + patches = getPatches ./patches/flutter2; }; } diff --git a/pkgs/development/compilers/flutter/patches/flutter2/disable-auto-update.patch b/pkgs/development/compilers/flutter/patches/flutter2/disable-auto-update.patch new file mode 100644 index 000000000000..e799f6e1550b --- /dev/null +++ b/pkgs/development/compilers/flutter/patches/flutter2/disable-auto-update.patch @@ -0,0 +1,36 @@ +diff --git a/bin/internal/shared.sh b/bin/internal/shared.sh +index 05cba4393b..2a775bf24f 100644 +--- a/bin/internal/shared.sh ++++ b/bin/internal/shared.sh +@@ -217,8 +217,6 @@ function shared::execute() { + # FLUTTER_TOOL_ARGS="--enable-asserts $FLUTTER_TOOL_ARGS" + # FLUTTER_TOOL_ARGS="$FLUTTER_TOOL_ARGS --observe=65432" + +- upgrade_flutter 7< "$PROG_NAME" +- + BIN_NAME="$(basename "$PROG_NAME")" + case "$BIN_NAME" in + flutter*) +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 396756808e..d324a6df59 100644 +--- a/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart ++++ b/packages/flutter_tools/lib/src/runner/flutter_command_runner.dart +@@ -241,7 +241,6 @@ class FlutterCommandRunner extends CommandRunner { + globals.flutterUsage.suppressAnalytics = true; + } + +- globals.flutterVersion.ensureVersionFile(); + final bool machineFlag = topLevelResults['machine'] as bool? ?? false; + final bool ci = await globals.botDetector.isRunningOnBot; + final bool redirectedCompletion = !globals.stdio.hasTerminal && +@@ -250,10 +249,6 @@ class FlutterCommandRunner extends CommandRunner { + final bool versionCheckFlag = topLevelResults['version-check'] as bool? ?? false; + final bool explicitVersionCheckPassed = topLevelResults.wasParsed('version-check') && versionCheckFlag; + +- if (topLevelResults.command?.name != 'upgrade' && +- (explicitVersionCheckPassed || (versionCheckFlag && !isMachine))) { +- await globals.flutterVersion.checkFlutterVersionFreshness(); +- } + + // See if the user specified a specific device. + globals.deviceManager?.specifiedDeviceId = topLevelResults['device-id'] as String?; diff --git a/pkgs/development/compilers/flutter/patches/flutter2/git-dir.patch b/pkgs/development/compilers/flutter/patches/flutter2/git-dir.patch new file mode 100644 index 000000000000..0136ef93106d --- /dev/null +++ b/pkgs/development/compilers/flutter/patches/flutter2/git-dir.patch @@ -0,0 +1,80 @@ +diff --git a/dev/bots/prepare_package.dart b/dev/bots/prepare_package.dart +index 468a91a954..5def6897ce 100644 +--- a/dev/bots/prepare_package.dart ++++ b/dev/bots/prepare_package.dart +@@ -525,7 +525,7 @@ class ArchiveCreator { + + Future _runGit(List args, {Directory? workingDirectory}) { + return _processRunner.runProcess( +- ['git', ...args], ++ ['git', '--git-dir', '.git', ...args], + workingDirectory: workingDirectory ?? flutterRoot, + ); + } +diff --git a/packages/flutter_tools/lib/src/version.dart b/packages/flutter_tools/lib/src/version.dart +index f2068a6ca2..99b161689e 100644 +--- a/packages/flutter_tools/lib/src/version.dart ++++ b/packages/flutter_tools/lib/src/version.dart +@@ -106,7 +106,7 @@ class FlutterVersion { + String? channel = _channel; + if (channel == null) { + final String gitChannel = _runGit( +- 'git rev-parse --abbrev-ref --symbolic @{u}', ++ 'git --git-dir .git rev-parse --abbrev-ref --symbolic @{u}', + globals.processUtils, + _workingDirectory, + ); +@@ -114,7 +114,7 @@ class FlutterVersion { + if (slash != -1) { + final String remote = gitChannel.substring(0, slash); + _repositoryUrl = _runGit( +- 'git ls-remote --get-url $remote', ++ 'git --git-dir .git ls-remote --get-url $remote', + globals.processUtils, + _workingDirectory, + ); +@@ -326,7 +326,7 @@ class FlutterVersion { + /// the branch name will be returned as `'[user-branch]'`. + String getBranchName({ bool redactUnknownBranches = false }) { + _branch ??= () { +- final String branch = _runGit('git rev-parse --abbrev-ref HEAD', globals.processUtils); ++ final String branch = _runGit('git --git-dir .git rev-parse --abbrev-ref HEAD', globals.processUtils); + return branch == 'HEAD' ? channel : branch; + }(); + if (redactUnknownBranches || _branch!.isEmpty) { +@@ -359,7 +359,7 @@ class FlutterVersion { + /// wrapper that does that. + @visibleForTesting + static List gitLog(List args) { +- return ['git', '-c', 'log.showSignature=false', 'log'] + args; ++ return ['git', '-c', 'log.showSignature=false', '--git-dir', '.git', 'log'] + args; + } + + /// Gets the release date of the latest available Flutter version. +@@ -730,7 +730,7 @@ class GitTagVersion { + + static GitTagVersion determine(ProcessUtils processUtils, {String? workingDirectory, bool fetchTags = false, String gitRef = 'HEAD'}) { + if (fetchTags) { +- final String channel = _runGit('git rev-parse --abbrev-ref HEAD', processUtils, workingDirectory); ++ final String channel = _runGit('git --git-dir .git rev-parse --abbrev-ref HEAD', processUtils, workingDirectory); + if (channel == 'dev' || channel == 'beta' || channel == 'stable') { + globals.printTrace('Skipping request to fetchTags - on well known channel $channel.'); + } else { +@@ -739,7 +739,7 @@ class GitTagVersion { + } + // find all tags attached to the given [gitRef] + final List tags = _runGit( +- 'git tag --points-at $gitRef', processUtils, workingDirectory).trim().split('\n'); ++ 'git --git-dir .git tag --points-at $gitRef', processUtils, workingDirectory).trim().split('\n'); + + // Check first for a stable tag + final RegExp stableTagPattern = RegExp(r'^\d+\.\d+\.\d+$'); +@@ -760,7 +760,7 @@ class GitTagVersion { + // recent tag and number of commits past. + return parse( + _runGit( +- 'git describe --match *.*.* --long --tags $gitRef', ++ 'git --git-dir .git describe --match *.*.* --long --tags $gitRef', + processUtils, + workingDirectory, + ) diff --git a/pkgs/development/compilers/flutter/patches/flutter2/move-cache.patch b/pkgs/development/compilers/flutter/patches/flutter2/move-cache.patch new file mode 100644 index 000000000000..a81d2def242c --- /dev/null +++ b/pkgs/development/compilers/flutter/patches/flutter2/move-cache.patch @@ -0,0 +1,72 @@ +diff --git a/packages/flutter_tools/lib/src/asset.dart b/packages/flutter_tools/lib/src/asset.dart +index ed42baea29..12941f733a 100644 +--- a/packages/flutter_tools/lib/src/asset.dart ++++ b/packages/flutter_tools/lib/src/asset.dart +@@ -11,11 +11,11 @@ import 'base/file_system.dart'; + import 'base/logger.dart'; + import 'base/platform.dart'; + import 'build_info.dart'; +-import 'cache.dart'; + import 'convert.dart'; + import 'dart/package_map.dart'; + import 'devfs.dart'; + import 'flutter_manifest.dart'; ++import 'globals.dart' as globals; + import 'license_collector.dart'; + import 'project.dart'; + +@@ -504,7 +504,7 @@ class ManifestAssetBundle implements AssetBundle { + } + final Uri entryUri = _fileSystem.path.toUri(asset); + result.add(_Asset( +- baseDir: _fileSystem.path.join(Cache.flutterRoot!, 'bin', 'cache', 'artifacts', 'material_fonts'), ++ baseDir: _fileSystem.path.join(globals.fsUtils.homeDirPath!, '.cache', 'flutter', 'artifacts', 'material_fonts'), + relativeUri: Uri(path: entryUri.pathSegments.last), + entryUri: entryUri, + package: null, +diff --git a/packages/flutter_tools/lib/src/cache.dart b/packages/flutter_tools/lib/src/cache.dart +index defc86cc20..7fdf14d112 100644 +--- a/packages/flutter_tools/lib/src/cache.dart ++++ b/packages/flutter_tools/lib/src/cache.dart +@@ -22,6 +22,7 @@ import 'base/user_messages.dart'; + import 'build_info.dart'; + import 'convert.dart'; + import 'features.dart'; ++import 'globals.dart' as globals; + + const String kFlutterRootEnvironmentVariableName = 'FLUTTER_ROOT'; // should point to //flutter/ (root of flutter/flutter repo) + const String kFlutterEngineEnvironmentVariableName = 'FLUTTER_ENGINE'; // should point to //engine/src/ (root of flutter/engine repo) +@@ -322,8 +323,13 @@ class Cache { + return; + } + assert(_lock == null); ++ final Directory dir = _fileSystem.directory(_fileSystem.path.join(globals.fsUtils.homeDirPath!, '.cache', 'flutter')); ++ if (!dir.existsSync()) { ++ dir.createSync(recursive: true); ++ globals.os.chmod(dir, '755'); ++ } + final File lockFile = +- _fileSystem.file(_fileSystem.path.join(flutterRoot!, 'bin', 'cache', 'lockfile')); ++ _fileSystem.file(_fileSystem.path.join(globals.fsUtils.homeDirPath!, '.cache', 'flutter', 'lockfile')); + try { + _lock = lockFile.openSync(mode: FileMode.write); + } on FileSystemException catch (e) { +@@ -382,8 +388,7 @@ class Cache { + + String get devToolsVersion { + if (_devToolsVersion == null) { +- const String devToolsDirPath = 'dart-sdk/bin/resources/devtools'; +- final Directory devToolsDir = getCacheDir(devToolsDirPath, shouldCreate: false); ++ final Directory devToolsDir = _fileSystem.directory(_fileSystem.path.join(flutterRoot!, 'bin/cache/dart-sdk/bin/resources/devtools')); + if (!devToolsDir.existsSync()) { + throw Exception('Could not find directory at ${devToolsDir.path}'); + } +@@ -536,7 +541,7 @@ class Cache { + if (_rootOverride != null) { + return _fileSystem.directory(_fileSystem.path.join(_rootOverride!.path, 'bin', 'cache')); + } else { +- return _fileSystem.directory(_fileSystem.path.join(flutterRoot!, 'bin', 'cache')); ++ return _fileSystem.directory(_fileSystem.path.join(globals.fsUtils.homeDirPath!, '.cache', 'flutter')); + } + } + diff --git a/pkgs/development/compilers/flutter/patches/disable-auto-update.patch b/pkgs/development/compilers/flutter/patches/flutter3/disable-auto-update.patch similarity index 100% rename from pkgs/development/compilers/flutter/patches/disable-auto-update.patch rename to pkgs/development/compilers/flutter/patches/flutter3/disable-auto-update.patch diff --git a/pkgs/development/compilers/flutter/patches/git-dir.patch b/pkgs/development/compilers/flutter/patches/flutter3/git-dir.patch similarity index 100% rename from pkgs/development/compilers/flutter/patches/git-dir.patch rename to pkgs/development/compilers/flutter/patches/flutter3/git-dir.patch diff --git a/pkgs/development/compilers/flutter/patches/move-cache.patch b/pkgs/development/compilers/flutter/patches/flutter3/move-cache.patch similarity index 100% rename from pkgs/development/compilers/flutter/patches/move-cache.patch rename to pkgs/development/compilers/flutter/patches/flutter3/move-cache.patch diff --git a/pkgs/top-level/all-packages.nix b/pkgs/top-level/all-packages.nix index ce740f6db459..2c06b2c45163 100644 --- a/pkgs/top-level/all-packages.nix +++ b/pkgs/top-level/all-packages.nix @@ -13200,6 +13200,7 @@ with pkgs; flutterPackages = recurseIntoAttrs (callPackage ../development/compilers/flutter { }); flutter = flutterPackages.stable; + flutter2 = flutterPackages.v2; fnm = callPackage ../development/tools/fnm { inherit (darwin.apple_sdk.frameworks) DiskArbitration Foundation Security; From 946474ca0fdcde59fc05027fbd511ab3ce46131a Mon Sep 17 00:00:00 2001 From: nanashi0x74 Date: Sun, 2 Oct 2022 20:07:18 +0200 Subject: [PATCH 10/11] firmware-updater: build with flutter2 --- .../os-specific/linux/firmware/firmware-updater/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/os-specific/linux/firmware/firmware-updater/default.nix b/pkgs/os-specific/linux/firmware/firmware-updater/default.nix index fb9d3a9a36c4..cc906b763e8e 100644 --- a/pkgs/os-specific/linux/firmware/firmware-updater/default.nix +++ b/pkgs/os-specific/linux/firmware/firmware-updater/default.nix @@ -1,13 +1,13 @@ { lib -, flutter +, flutter2 , fetchFromGitHub }: -flutter.mkFlutterApp { +flutter2.mkFlutterApp { pname = "firmware-updater"; version = "unstable"; - vendorHash = "sha256-3wVA9BLCnMijC0gOmskz+Hv7NQIGu/jhBDbWjmoq1Tc="; + vendorHash = "sha256-7uOiebGBcX61oUyNCi1h9KldTRTrCfYaHUQSH4J5OoQ="; src = fetchFromGitHub { owner = "canonical"; From 7b0109a592140fa67c455519599239abc78876d4 Mon Sep 17 00:00:00 2001 From: nanashi0x74 Date: Sun, 2 Oct 2022 20:11:33 +0200 Subject: [PATCH 11/11] fluffychat: build with flutter2 --- .../networking/instant-messengers/fluffychat/default.nix | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/pkgs/applications/networking/instant-messengers/fluffychat/default.nix b/pkgs/applications/networking/instant-messengers/fluffychat/default.nix index d50e7118cc18..22bbeb212f0e 100644 --- a/pkgs/applications/networking/instant-messengers/fluffychat/default.nix +++ b/pkgs/applications/networking/instant-messengers/fluffychat/default.nix @@ -1,16 +1,16 @@ { lib , fetchFromGitLab -, flutter +, flutter2 , olm , imagemagick , makeDesktopItem }: -flutter.mkFlutterApp rec { +flutter2.mkFlutterApp rec { pname = "fluffychat"; version = "1.2.0"; - vendorHash = "sha256-co+bnsVIyg42JpM9FimfGEjrd6A99GlBeow1Dgv7NBI="; + vendorHash = "sha256-1PDX023WXRmRe/b1L+6Du91BvGwYNp3YATqYSQdPrRY="; src = fetchFromGitLab { owner = "famedly";