mirror of
https://github.com/flutter/flutter.git
synced 2026-02-20 02:29:02 +08:00
Add liblzma as an explicit dependancy on Linux (#70617)
This commit is contained in:
parent
b84fb90400
commit
343577afb6
@ -237,6 +237,8 @@ class UserMessages {
|
||||
'They are likely available from your distribution (e.g.: apt install libgtk-3-dev)';
|
||||
String get blkidLibraryMissing => 'The blkid development library is required for Linux development.\n'
|
||||
'It is likely available from your distribution (e.g.: apt install libblkid-dev)';
|
||||
String get lzmaLibraryMissing => 'The lzma development library is required for Linux development.\n'
|
||||
'It is likely available from your distribution (e.g.: apt install liblzma-dev)';
|
||||
|
||||
// Messages used in FlutterCommand
|
||||
String flutterElapsedTime(String name, String elapsedTime) => '"flutter $name" took $elapsedTime.';
|
||||
|
||||
@ -153,6 +153,10 @@ class LinuxDoctorValidator extends DoctorValidator {
|
||||
validationType = ValidationType.missing;
|
||||
messages.add(ValidationMessage.error(_userMessages.blkidLibraryMissing));
|
||||
}
|
||||
if (!await _libraryIsPresent('liblzma')) {
|
||||
validationType = ValidationType.missing;
|
||||
messages.add(ValidationMessage.error(_userMessages.lzmaLibraryMissing));
|
||||
}
|
||||
|
||||
return ValidationResult(validationType, messages);
|
||||
}
|
||||
|
||||
@ -25,6 +25,7 @@ pkg_check_modules(GTK REQUIRED IMPORTED_TARGET gtk+-3.0)
|
||||
pkg_check_modules(GLIB REQUIRED IMPORTED_TARGET glib-2.0)
|
||||
pkg_check_modules(GIO REQUIRED IMPORTED_TARGET gio-2.0)
|
||||
pkg_check_modules(BLKID REQUIRED IMPORTED_TARGET blkid)
|
||||
pkg_check_modules(LZMA REQUIRED IMPORTED_TARGET liblzma)
|
||||
|
||||
set(FLUTTER_LIBRARY "${EPHEMERAL_DIR}/libflutter_linux_gtk.so")
|
||||
|
||||
@ -67,6 +68,7 @@ target_link_libraries(flutter INTERFACE
|
||||
PkgConfig::GLIB
|
||||
PkgConfig::GIO
|
||||
PkgConfig::BLKID
|
||||
PkgConfig::LZMA
|
||||
)
|
||||
add_dependencies(flutter flutter_assemble)
|
||||
|
||||
|
||||
@ -100,6 +100,7 @@ void main() {
|
||||
_pkgConfigPresentCommand('0.29'),
|
||||
..._gtkLibrariesPresentCommands(),
|
||||
_libraryCheckCommand('blkid'),
|
||||
_libraryCheckCommand('liblzma'),
|
||||
]);
|
||||
final DoctorValidator linuxDoctorValidator = LinuxDoctorValidator(
|
||||
processManager: processManager,
|
||||
@ -124,6 +125,7 @@ void main() {
|
||||
_pkgConfigPresentCommand('0.29'),
|
||||
..._gtkLibrariesPresentCommands(),
|
||||
_libraryCheckCommand('blkid'),
|
||||
_libraryCheckCommand('liblzma'),
|
||||
]);
|
||||
final DoctorValidator linuxDoctorValidator = LinuxDoctorValidator(
|
||||
processManager: processManager,
|
||||
@ -149,6 +151,7 @@ void main() {
|
||||
_pkgConfigPresentCommand('0.29'),
|
||||
..._gtkLibrariesPresentCommands(),
|
||||
_libraryCheckCommand('blkid'),
|
||||
_libraryCheckCommand('liblzma'),
|
||||
]);
|
||||
final DoctorValidator linuxDoctorValidator = LinuxDoctorValidator(
|
||||
processManager: processManager,
|
||||
@ -174,6 +177,7 @@ void main() {
|
||||
_pkgConfigPresentCommand('0.29'),
|
||||
..._gtkLibrariesPresentCommands(),
|
||||
_libraryCheckCommand('blkid'),
|
||||
_libraryCheckCommand('liblzma'),
|
||||
]);
|
||||
final DoctorValidator linuxDoctorValidator = LinuxDoctorValidator(
|
||||
processManager: processManager,
|
||||
@ -199,6 +203,7 @@ void main() {
|
||||
_pkgConfigPresentCommand('0.27.0'),
|
||||
..._gtkLibrariesPresentCommands(),
|
||||
_libraryCheckCommand('blkid'),
|
||||
_libraryCheckCommand('liblzma'),
|
||||
]);
|
||||
final DoctorValidator linuxDoctorValidator = LinuxDoctorValidator(
|
||||
processManager: processManager,
|
||||
@ -224,6 +229,7 @@ void main() {
|
||||
_pkgConfigPresentCommand('0.29'),
|
||||
..._gtkLibrariesPresentCommands(),
|
||||
_libraryCheckCommand('blkid'),
|
||||
_libraryCheckCommand('liblzma'),
|
||||
]);
|
||||
final UserMessages userMessages = UserMessages();
|
||||
final DoctorValidator linuxDoctorValidator = LinuxDoctorValidator(
|
||||
@ -249,6 +255,7 @@ void main() {
|
||||
_pkgConfigPresentCommand('0.29'),
|
||||
..._gtkLibrariesPresentCommands(),
|
||||
_libraryCheckCommand('blkid'),
|
||||
_libraryCheckCommand('liblzma'),
|
||||
]);
|
||||
final UserMessages userMessages = UserMessages();
|
||||
final DoctorValidator linuxDoctorValidator = LinuxDoctorValidator(
|
||||
@ -274,6 +281,7 @@ void main() {
|
||||
_pkgConfigPresentCommand('0.29'),
|
||||
..._gtkLibrariesPresentCommands(),
|
||||
_libraryCheckCommand('blkid'),
|
||||
_libraryCheckCommand('liblzma'),
|
||||
]);
|
||||
final UserMessages userMessages = UserMessages();
|
||||
final DoctorValidator linuxDoctorValidator = LinuxDoctorValidator(
|
||||
@ -299,6 +307,7 @@ void main() {
|
||||
_missingBinaryCommand('pkg-config'),
|
||||
..._gtkLibrariesPresentCommands(),
|
||||
_libraryCheckCommand('blkid'),
|
||||
_libraryCheckCommand('liblzma'),
|
||||
]);
|
||||
final UserMessages userMessages = UserMessages();
|
||||
final DoctorValidator linuxDoctorValidator = LinuxDoctorValidator(
|
||||
@ -324,6 +333,7 @@ void main() {
|
||||
_pkgConfigPresentCommand('0.29'),
|
||||
..._gtkLibrariesMissingCommands(),
|
||||
_libraryCheckCommand('blkid'),
|
||||
_libraryCheckCommand('liblzma'),
|
||||
]);
|
||||
final UserMessages userMessages = UserMessages();
|
||||
final DoctorValidator linuxDoctorValidator = LinuxDoctorValidator(
|
||||
@ -342,7 +352,7 @@ void main() {
|
||||
]);
|
||||
});
|
||||
|
||||
testWithoutContext('Missing validation when libraries are not available', () async {
|
||||
testWithoutContext('Missing validation when blkid is not available', () async {
|
||||
final ProcessManager processManager = FakeProcessManager.list(<FakeCommand>[
|
||||
_clangPresentCommand('4.0.1'),
|
||||
_cmakePresentCommand('3.16.3'),
|
||||
@ -350,6 +360,7 @@ void main() {
|
||||
_pkgConfigPresentCommand('0.29'),
|
||||
..._gtkLibrariesPresentCommands(),
|
||||
_libraryCheckCommand('blkid', exists: false),
|
||||
_libraryCheckCommand('liblzma'),
|
||||
]);
|
||||
final UserMessages userMessages = UserMessages();
|
||||
final DoctorValidator linuxDoctorValidator = LinuxDoctorValidator(
|
||||
@ -368,6 +379,33 @@ void main() {
|
||||
]);
|
||||
});
|
||||
|
||||
testWithoutContext('Missing validation when liblzma is not available', () async {
|
||||
final ProcessManager processManager = FakeProcessManager.list(<FakeCommand>[
|
||||
_clangPresentCommand('4.0.1'),
|
||||
_cmakePresentCommand('3.16.3'),
|
||||
_ninjaPresentCommand('1.10.0'),
|
||||
_pkgConfigPresentCommand('0.29'),
|
||||
..._gtkLibrariesPresentCommands(),
|
||||
_libraryCheckCommand('blkid'),
|
||||
_libraryCheckCommand('liblzma', exists: false),
|
||||
]);
|
||||
final UserMessages userMessages = UserMessages();
|
||||
final DoctorValidator linuxDoctorValidator = LinuxDoctorValidator(
|
||||
processManager: processManager,
|
||||
userMessages: userMessages,
|
||||
);
|
||||
final ValidationResult result = await linuxDoctorValidator.validate();
|
||||
|
||||
expect(result.type, ValidationType.missing);
|
||||
expect(result.messages, <ValidationMessage>[
|
||||
const ValidationMessage('clang version 4.0.1-6+build1'),
|
||||
const ValidationMessage('cmake version 3.16.3'),
|
||||
const ValidationMessage('ninja version 1.10.0'),
|
||||
const ValidationMessage('pkg-config version 0.29'),
|
||||
ValidationMessage.error(userMessages.lzmaLibraryMissing),
|
||||
]);
|
||||
});
|
||||
|
||||
testWithoutContext('Missing validation when multiple dependencies are not available', () async {
|
||||
final ProcessManager processManager = FakeProcessManager.list(<FakeCommand>[
|
||||
_missingBinaryCommand('clang++'),
|
||||
@ -376,6 +414,7 @@ void main() {
|
||||
_pkgConfigPresentCommand('0.29'),
|
||||
..._gtkLibrariesPresentCommands(),
|
||||
_libraryCheckCommand('blkid'),
|
||||
_libraryCheckCommand('liblzma'),
|
||||
]);
|
||||
final DoctorValidator linuxDoctorValidator = LinuxDoctorValidator(
|
||||
processManager: processManager,
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user