From 49c42b6c1096edb0e25e71a8ab9da69d09a7b230 Mon Sep 17 00:00:00 2001 From: Matt Woelfel Date: Sat, 11 Dec 2021 22:03:12 -0600 Subject: [PATCH] Fix bundled build on Fedora Fedora uses "lib64" for the CMake output directory. The current search path is limited to "lib". This fix searches in "lib" and "lib64 for applicable libraries in a bundled build. --- sdl2-sys/build.rs | 29 +++++++++++++++++++++-------- 1 file changed, 21 insertions(+), 8 deletions(-) diff --git a/sdl2-sys/build.rs b/sdl2-sys/build.rs index a4b0d891f8..730cd3d783 100644 --- a/sdl2-sys/build.rs +++ b/sdl2-sys/build.rs @@ -421,17 +421,30 @@ fn copy_dynamic_libraries(sdl2_compiled_path: &PathBuf, target_os: &str) { copy_library_file(&src_dll_path, &target_path); } else if target_os != "emscripten" { // Find all libraries build and copy them, symlinks included. - let lib_path = sdl2_compiled_path.join("lib"); - for entry in std::fs::read_dir(&lib_path).expect("Couldn't readdir lib") { - let entry = entry.expect("Error looking at lib dir"); - if let Ok(file_type) = entry.file_type() { - if file_type.is_symlink() { - copy_library_symlink(&entry.path(), &target_path); - } else if file_type.is_file() { - copy_library_file(&entry.path(), &target_path) + let mut found = false; + let lib_dirs = &["lib", "lib64"]; + for lib_dir in lib_dirs { + let lib_path = sdl2_compiled_path.join(lib_dir); + if lib_path.exists() { + found = true; + for entry in std::fs::read_dir(&lib_path) + .unwrap_or_else(|_| panic!("Couldn't readdir {}", lib_dir)) + { + let entry = entry.expect("Error looking at lib dir"); + if let Ok(file_type) = entry.file_type() { + if file_type.is_symlink() { + copy_library_symlink(&entry.path(), &target_path); + } else if file_type.is_file() { + copy_library_file(&entry.path(), &target_path) + } + } } + break; } } + if !found { + panic!("Failed to find CMake output dir"); + } } }