summarylogtreecommitdiffstats
path: root/version.patch
diff options
context:
space:
mode:
authorThe one with the braid2024-03-24 23:01:51 +0100
committerThe one with the braid2024-03-24 23:01:51 +0100
commit7216ed6b51d0746620796673871dddad7b704bb2 (patch)
treea57f113593f9b487f15c1e4b077d643b81d9905f /version.patch
parent2942f591ec73f3a8c132cd77a1331507dc581475 (diff)
downloadaur-7216ed6b51d0746620796673871dddad7b704bb2.tar.gz
refactor: complete package rewrite
Signed-off-by: The one with the braid <info@braid.business>
Diffstat (limited to 'version.patch')
-rw-r--r--version.patch298
1 files changed, 298 insertions, 0 deletions
diff --git a/version.patch b/version.patch
new file mode 100644
index 000000000000..b893edac030d
--- /dev/null
+++ b/version.patch
@@ -0,0 +1,298 @@
+--- ./packages/flutter_tools/lib/src/version.dart.orig
++++ ./packages/flutter_tools/lib/src/version.dart
+@@ -91,7 +91,7 @@
+ }) {
+ final File versionFile = getVersionFile(fs, flutterRoot);
+
+- if (!fetchTags && versionFile.existsSync()) {
++ if (versionFile.existsSync()) {
+ final _FlutterVersionFromFile? version = _FlutterVersionFromFile.tryParseFromFile(
+ versionFile,
+ flutterRoot: flutterRoot,
+@@ -102,19 +102,15 @@
+ }
+
+ // if we are fetching tags, ignore cached versionFile
+- if (fetchTags && versionFile.existsSync()) {
++ /* if (fetchTags && versionFile.existsSync()) {
+ versionFile.deleteSync();
+ final File legacyVersionFile = fs.file(fs.path.join(flutterRoot, 'version'));
+ if (legacyVersionFile.existsSync()) {
+ legacyVersionFile.deleteSync();
+ }
+- }
++ } */
+
+- final String frameworkRevision = _runGit(
+- gitLog(<String>['-n', '1', '--pretty=format:%H']).join(' '),
+- globals.processUtils,
+- flutterRoot,
+- );
++ final String frameworkRevision = "archlinuxaur0000000000000000000000000000";
+
+ return FlutterVersion.fromRevision(
+ clock: clock,
+@@ -145,7 +141,7 @@
+ workingDirectory: flutterRoot,
+ fetchTags: fetchTags,
+ );
+- final String frameworkVersion = gitTagVersion.frameworkVersionFor(frameworkRevision);
++ final String frameworkVersion = globals.fs.file(globals.fs.path.join(flutterRoot, 'version')).readAsStringSync();
+ return _FlutterVersionGit._(
+ clock: clock,
+ flutterRoot: flutterRoot,
+@@ -217,11 +213,7 @@
+ // TODO(fujino): calculate this relative to frameworkCommitDate for
+ // _FlutterVersionFromFile so we don't need a git call.
+ String get frameworkAge {
+- return _frameworkAge ??= _runGit(
+- FlutterVersion.gitLog(<String>['-n', '1', '--pretty=format:%ar']).join(' '),
+- globals.processUtils,
+- flutterRoot,
+- );
++ return _frameworkAge ??= 'unknown (arch linux aur package)';
+ }
+
+ void ensureVersionFile();
+@@ -301,43 +293,7 @@
+ /// Returns null if the cached version is out-of-date or missing, and we are
+ /// unable to reach the server to get the latest version.
+ Future<DateTime?> _getLatestAvailableFlutterDate() async {
+- globals.cache.checkLockAcquired();
+- final VersionCheckStamp versionCheckStamp = await VersionCheckStamp.load(globals.cache, globals.logger);
+-
+- final DateTime now = _clock.now();
+- if (versionCheckStamp.lastTimeVersionWasChecked != null) {
+- final Duration timeSinceLastCheck = now.difference(
+- versionCheckStamp.lastTimeVersionWasChecked!,
+- );
+-
+- // Don't ping the server too often. Return cached value if it's fresh.
+- if (timeSinceLastCheck < VersionFreshnessValidator.checkAgeConsideredUpToDate) {
+- return versionCheckStamp.lastKnownRemoteVersion;
+- }
+- }
+-
+- // Cache is empty or it's been a while since the last server ping. Ping the server.
+- try {
+- final DateTime remoteFrameworkCommitDate = DateTime.parse(
+- await fetchRemoteFrameworkCommitDate(),
+- );
+- await versionCheckStamp.store(
+- newTimeVersionWasChecked: now,
+- newKnownRemoteVersion: remoteFrameworkCommitDate,
+- );
+- return remoteFrameworkCommitDate;
+- } on VersionCheckError catch (error) {
+- // This happens when any of the git commands fails, which can happen when
+- // there's no Internet connectivity. Remote version check is best effort
+- // only. We do not prevent the command from running when it fails.
+- globals.printTrace('Failed to check Flutter version in the remote repository: $error');
+- // Still update the timestamp to avoid us hitting the server on every single
+- // command if for some reason we cannot connect (eg. we may be offline).
+- await versionCheckStamp.store(
+- newTimeVersionWasChecked: now,
+- );
+- return null;
+- }
++ return null;
+ }
+
+ /// The date of the latest framework commit in the remote repository.
+@@ -421,32 +377,13 @@
+ bool lenient = false,
+ required String? workingDirectory,
+ }) {
+- final List<String> args = FlutterVersion.gitLog(<String>[
+- gitRef,
+- '-n',
+- '1',
+- '--pretty=format:%ad',
+- '--date=iso',
+- ]);
+- try {
+- // Don't plumb 'lenient' through directly so that we can print an error
+- // if something goes wrong.
+- return _runSync(
+- args,
+- lenient: false,
+- workingDirectory: workingDirectory,
+- );
+- } on VersionCheckError catch (e) {
+- if (lenient) {
+- final DateTime dummyDate = DateTime.fromMillisecondsSinceEpoch(0);
+- globals.printError('Failed to find the latest git commit date: $e\n'
+- 'Returning $dummyDate instead.');
+- // Return something that DateTime.parse() can parse.
+- return dummyDate.toString();
+- } else {
+- rethrow;
+- }
+- }
++ final File versionFile = globals.fs.file(globals.fs.path.join(workingDirectory!, 'bin', 'cache', 'flutter.version.json'));
++
++ final _FlutterVersionFromFile version = _FlutterVersionFromFile.tryParseFromFile(
++ versionFile,
++ flutterRoot: workingDirectory,
++ )!;
++ return version.frameworkCommitDate;
+ }
+
+ class _FlutterVersionFromFile extends FlutterVersion {
+@@ -472,11 +472,6 @@
+
+ @override
+ void ensureVersionFile() {
+- _ensureLegacyVersionFile(
+- fs: fs,
+- flutterRoot: flutterRoot,
+- frameworkVersion: frameworkVersion,
+- );
+ }
+ }
+
+@@ -544,17 +539,6 @@
+
+ @override
+ void ensureVersionFile() {
+- _ensureLegacyVersionFile(
+- fs: fs,
+- flutterRoot: flutterRoot,
+- frameworkVersion: frameworkVersion,
+- );
+-
+- const JsonEncoder encoder = JsonEncoder.withIndent(' ');
+- final File newVersionFile = FlutterVersion.getVersionFile(fs, flutterRoot);
+- if (!newVersionFile.existsSync()) {
+- newVersionFile.writeAsStringSync(encoder.convert(toJson()));
+- }
+ }
+ }
+
+@@ -563,10 +547,6 @@
+ required String flutterRoot,
+ required String frameworkVersion,
+ }) {
+- final File legacyVersionFile = fs.file(fs.path.join(flutterRoot, 'version'));
+- if (!legacyVersionFile.existsSync()) {
+- legacyVersionFile.writeAsStringSync(frameworkVersion);
+- }
+ }
+
+ /// Checks if the provided [version] is tracking a standard remote.
+@@ -639,49 +566,7 @@
+ ///
+ /// Returns [VersionCheckError] if the tracking remote is not standard.
+ VersionCheckError? run(){
+- final String? flutterGit = platform.environment['FLUTTER_GIT_URL'];
+- final String? repositoryUrl = version.repositoryUrl;
+-
+- if (repositoryUrl == null) {
+- return VersionCheckError(
+- 'The tool could not determine the remote upstream which is being '
+- 'tracked by the SDK.'
+- );
+- }
+-
+- // Strip `.git` suffix before comparing the remotes
+- final List<String> sanitizedStandardRemotes = <String>[
+- // If `FLUTTER_GIT_URL` is set, use that as standard remote.
+- if (flutterGit != null) flutterGit
+- // Else use the predefined standard remotes.
+- else ..._standardRemotes,
+- ].map((String remote) => stripDotGit(remote)).toList();
+-
+- final String sanitizedRepositoryUrl = stripDotGit(repositoryUrl);
+-
+- if (!sanitizedStandardRemotes.contains(sanitizedRepositoryUrl)) {
+- if (flutterGit != null) {
+- // If `FLUTTER_GIT_URL` is set, inform to either remove the
+- // `FLUTTER_GIT_URL` environment variable or set it to the current
+- // tracking remote.
+- return VersionCheckError(
+- 'The Flutter SDK is tracking "$repositoryUrl" but "FLUTTER_GIT_URL" '
+- 'is set to "$flutterGit".\n'
+- 'Either remove "FLUTTER_GIT_URL" from the environment or set it to '
+- '"$repositoryUrl". '
+- 'If this is intentional, it is recommended to use "git" directly to '
+- 'manage the SDK.'
+- );
+- }
+- // If `FLUTTER_GIT_URL` is unset, inform to set the environment variable.
+- return VersionCheckError(
+- 'The Flutter SDK is tracking a non-standard remote "$repositoryUrl".\n'
+- 'Set the environment variable "FLUTTER_GIT_URL" to '
+- '"$repositoryUrl". '
+- 'If this is intentional, it is recommended to use "git" directly to '
+- 'manage the SDK.'
+- );
+- }
++ // the worse shit any code says about us, the worse for that code.
+ return null;
+ }
+
+@@ -853,10 +738,7 @@
+ }
+
+ String _runGit(String command, ProcessUtils processUtils, String? workingDirectory) {
+- return processUtils.runSync(
+- command.split(' '),
+- workingDirectory: workingDirectory,
+- ).stdout.trim();
++ return '';
+ }
+
+ /// Runs [command] in the root of the Flutter installation and returns the
+@@ -880,7 +762,7 @@
+ if (revision == null) {
+ return '';
+ }
+- return revision.length > 10 ? revision.substring(0, 10) : revision;
++ return revision.length > 12 ? revision.substring(0, 12) : revision;
+ }
+
+ /// Version of Flutter SDK parsed from Git.
+@@ -941,42 +823,10 @@
+ bool fetchTags = false,
+ String gitRef = 'HEAD'
+ }) {
+- if (fetchTags) {
+- final String channel = _runGit('git symbolic-ref --short HEAD', processUtils, workingDirectory);
+- if (!kDevelopmentChannels.contains(channel) && kOfficialChannels.contains(channel)) {
+- globals.printTrace('Skipping request to fetchTags - on well known channel $channel.');
+- } else {
+- final String flutterGit = platform.environment['FLUTTER_GIT_URL'] ?? 'https://github.com/flutter/flutter.git';
+- _runGit('git fetch $flutterGit --tags -f', processUtils, workingDirectory);
+- }
+- }
+- // find all tags attached to the given [gitRef]
+- final List<String> tags = _runGit(
+- 'git tag --points-at $gitRef', processUtils, workingDirectory).trim().split('\n');
+-
+- // Check first for a stable tag
+- final RegExp stableTagPattern = RegExp(r'^\d+\.\d+\.\d+$');
+- for (final String tag in tags) {
+- if (stableTagPattern.hasMatch(tag.trim())) {
+- return parse(tag);
+- }
+- }
+- // Next check for a dev tag
+- final RegExp devTagPattern = RegExp(r'^\d+\.\d+\.\d+-\d+\.\d+\.pre$');
+- for (final String tag in tags) {
+- if (devTagPattern.hasMatch(tag.trim())) {
+- return parse(tag);
+- }
+- }
+-
+ // If we're not currently on a tag, use git describe to find the most
+ // recent tag and number of commits past.
+ return parse(
+- _runGit(
+- 'git describe --match *.*.* --long --tags $gitRef',
+- processUtils,
+- workingDirectory,
+- )
++ globals.fs.file(globals.fs.path.join(Cache.flutterRoot!, 'version')).readAsStringSync()
+ );
+ }
+