Add an ephemeral directory for Linux (#40587)
Moves the generated config into that directory. Matches the structure of the other desktop projects. Also fixes #40265
This commit is contained in:
parent
0df1594ba2
commit
d03aecab58
@ -37,7 +37,7 @@ or
|
|||||||
String cacheDirectory;
|
String cacheDirectory;
|
||||||
switch (targetPlatform) {
|
switch (targetPlatform) {
|
||||||
case 'linux-x64':
|
case 'linux-x64':
|
||||||
cacheDirectory = 'linux/flutter';
|
cacheDirectory = 'linux/flutter/ephemeral';
|
||||||
break;
|
break;
|
||||||
case 'windows-x64':
|
case 'windows-x64':
|
||||||
cacheDirectory = 'windows/flutter/ephemeral';
|
cacheDirectory = 'windows/flutter/ephemeral';
|
||||||
|
@ -51,9 +51,15 @@ class CleanCommand extends FlutterCommand {
|
|||||||
final Directory iosEphemeralDirectory = flutterProject.ios.ephemeralDirectory;
|
final Directory iosEphemeralDirectory = flutterProject.ios.ephemeralDirectory;
|
||||||
deleteFile(iosEphemeralDirectory);
|
deleteFile(iosEphemeralDirectory);
|
||||||
|
|
||||||
|
final Directory linuxEphemeralDirectory = flutterProject.linux.ephemeralDirectory;
|
||||||
|
deleteFile(linuxEphemeralDirectory);
|
||||||
|
|
||||||
final Directory macosEphemeralDirectory = flutterProject.macos.ephemeralDirectory;
|
final Directory macosEphemeralDirectory = flutterProject.macos.ephemeralDirectory;
|
||||||
deleteFile(macosEphemeralDirectory);
|
deleteFile(macosEphemeralDirectory);
|
||||||
|
|
||||||
|
final Directory windowsEphemeralDirectory = flutterProject.windows.ephemeralDirectory;
|
||||||
|
deleteFile(windowsEphemeralDirectory);
|
||||||
|
|
||||||
return const FlutterCommandResult(ExitStatus.success);
|
return const FlutterCommandResult(ExitStatus.success);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -34,7 +34,7 @@ export PROJECT_DIR=${linuxProject.project.directory.path}
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// Cache flutter configuration files in the linux directory.
|
/// Cache flutter configuration files in the linux directory.
|
||||||
linuxProject.cacheDirectory.childFile('generated_config')
|
linuxProject.generatedMakeConfigFile
|
||||||
..createSync(recursive: true)
|
..createSync(recursive: true)
|
||||||
..writeAsStringSync(buffer.toString());
|
..writeAsStringSync(buffer.toString());
|
||||||
|
|
||||||
@ -52,7 +52,7 @@ export PROJECT_DIR=${linuxProject.project.directory.path}
|
|||||||
final Process process = await processManager.start(<String>[
|
final Process process = await processManager.start(<String>[
|
||||||
'make',
|
'make',
|
||||||
'-C',
|
'-C',
|
||||||
linuxProject.editableHostAppDirectory.path,
|
linuxProject.makeFile.parent.path,
|
||||||
], runInShell: true);
|
], runInShell: true);
|
||||||
final Status status = logger.startProgress(
|
final Status status = logger.startProgress(
|
||||||
'Building Linux application...',
|
'Building Linux application...',
|
||||||
|
@ -795,16 +795,26 @@ class LinuxProject {
|
|||||||
|
|
||||||
final FlutterProject project;
|
final FlutterProject project;
|
||||||
|
|
||||||
Directory get editableHostAppDirectory => project.directory.childDirectory('linux');
|
Directory get _editableDirectory => project.directory.childDirectory('linux');
|
||||||
|
|
||||||
// TODO(stuartmorgan): Move to using an ephemeralDirectory to match the other
|
/// The directory in the project that is managed by Flutter. As much as
|
||||||
// desktop projects.
|
/// possible, files that are edited by Flutter tooling after initial project
|
||||||
Directory get cacheDirectory => editableHostAppDirectory.childDirectory('flutter');
|
/// creation should live here.
|
||||||
|
Directory get managedDirectory => _editableDirectory.childDirectory('flutter');
|
||||||
|
|
||||||
bool existsSync() => editableHostAppDirectory.existsSync();
|
/// The subdirectory of [managedDirectory] that contains files that are
|
||||||
|
/// generated on the fly. All generated files that are not intended to be
|
||||||
|
/// checked in should live here.
|
||||||
|
Directory get ephemeralDirectory => managedDirectory.childDirectory('ephemeral');
|
||||||
|
|
||||||
|
bool existsSync() => _editableDirectory.existsSync();
|
||||||
|
|
||||||
/// The Linux project makefile.
|
/// The Linux project makefile.
|
||||||
File get makeFile => editableHostAppDirectory.childFile('Makefile');
|
File get makeFile => _editableDirectory.childFile('Makefile');
|
||||||
|
|
||||||
|
/// Contains definitions for FLUTTER_ROOT, LOCAL_ENGINE, and more flags for
|
||||||
|
/// the build.
|
||||||
|
File get generatedMakeConfigFile => ephemeralDirectory.childFile('generated_config.mk');
|
||||||
}
|
}
|
||||||
|
|
||||||
/// The Fuchisa sub project
|
/// The Fuchisa sub project
|
||||||
|
@ -100,7 +100,7 @@ void main() {
|
|||||||
await createTestCommandRunner(command).run(
|
await createTestCommandRunner(command).run(
|
||||||
const <String>['build', 'linux']
|
const <String>['build', 'linux']
|
||||||
);
|
);
|
||||||
expect(fs.file('linux/flutter/generated_config').existsSync(), true);
|
expect(fs.file('linux/flutter/ephemeral/generated_config.mk').existsSync(), true);
|
||||||
}, overrides: <Type, Generator>{
|
}, overrides: <Type, Generator>{
|
||||||
FileSystem: () => MemoryFileSystem(),
|
FileSystem: () => MemoryFileSystem(),
|
||||||
ProcessManager: () => mockProcessManager,
|
ProcessManager: () => mockProcessManager,
|
||||||
|
@ -41,7 +41,9 @@ void main() {
|
|||||||
projectUnderTest.dartTool.createSync(recursive: true);
|
projectUnderTest.dartTool.createSync(recursive: true);
|
||||||
projectUnderTest.android.ephemeralDirectory.createSync(recursive: true);
|
projectUnderTest.android.ephemeralDirectory.createSync(recursive: true);
|
||||||
projectUnderTest.ios.ephemeralDirectory.createSync(recursive: true);
|
projectUnderTest.ios.ephemeralDirectory.createSync(recursive: true);
|
||||||
|
projectUnderTest.linux.ephemeralDirectory.createSync(recursive: true);
|
||||||
projectUnderTest.macos.ephemeralDirectory.createSync(recursive: true);
|
projectUnderTest.macos.ephemeralDirectory.createSync(recursive: true);
|
||||||
|
projectUnderTest.windows.ephemeralDirectory.createSync(recursive: true);
|
||||||
});
|
});
|
||||||
|
|
||||||
group(CleanCommand, () {
|
group(CleanCommand, () {
|
||||||
@ -53,7 +55,9 @@ void main() {
|
|||||||
expect(projectUnderTest.dartTool.existsSync(), isFalse);
|
expect(projectUnderTest.dartTool.existsSync(), isFalse);
|
||||||
expect(projectUnderTest.android.ephemeralDirectory.existsSync(), isFalse);
|
expect(projectUnderTest.android.ephemeralDirectory.existsSync(), isFalse);
|
||||||
expect(projectUnderTest.ios.ephemeralDirectory.existsSync(), isFalse);
|
expect(projectUnderTest.ios.ephemeralDirectory.existsSync(), isFalse);
|
||||||
|
expect(projectUnderTest.linux.ephemeralDirectory.existsSync(), isFalse);
|
||||||
expect(projectUnderTest.macos.ephemeralDirectory.existsSync(), isFalse);
|
expect(projectUnderTest.macos.ephemeralDirectory.existsSync(), isFalse);
|
||||||
|
expect(projectUnderTest.windows.ephemeralDirectory.existsSync(), isFalse);
|
||||||
|
|
||||||
verify(xcodeProjectInterpreter.cleanWorkspace(any, 'Runner')).called(2);
|
verify(xcodeProjectInterpreter.cleanWorkspace(any, 'Runner')).called(2);
|
||||||
}, overrides: <Type, Generator>{
|
}, overrides: <Type, Generator>{
|
||||||
|
Loading…
x
Reference in New Issue
Block a user