From: Brendan Hansen Date: Thu, 18 Jan 2024 00:38:00 +0000 (-0600) Subject: fixed: package manager not reinstalled broken native dependencies X-Git-Url: https://git.brendanfh.com/?a=commitdiff_plain;h=4ea395838879165b1541caaac564841b7fd438b2;p=onyx.git fixed: package manager not reinstalled broken native dependencies --- diff --git a/scripts/onyx-pkg.onyx b/scripts/onyx-pkg.onyx index 508fc183..468855c7 100644 --- a/scripts/onyx-pkg.onyx +++ b/scripts/onyx-pkg.onyx @@ -675,7 +675,13 @@ install_package :: (pack: Package, downgrade_if_necessary := false, skip_native_ if installed_version == pack.version { info_print("Exists", "{} {}\n", repo, installed_version); - return true, package_folder; + + success := true; + if !native_library_is_up_to_date(package_folder) { + success = run_native_library_installation(package_folder); + } + + return success, package_folder; } if installed_version->is_newer(pack.version) && !downgrade_if_necessary { @@ -819,6 +825,22 @@ run_native_library_installation :: (folder: str) -> (bool, str) { return success, ""; } +native_library_is_up_to_date :: (folder: str) -> bool { + inner_config := read_config_from_installed_dependency(folder)?; + + // If no native library, no worries. + if !inner_config.native_library do return true; + + target := os.path_join(config.dependency_binary_path, tprintf("{}{}", inner_config.native_library->unwrap(), native_library_suffix)); + inner_package_file := tprintf("{}/onyx-pkg.kdl", folder); + + target_stat, package_stat: os.FileStat; + if !os.file_stat(target, &target_stat) do return false; + if !os.file_stat(inner_package_file, &package_stat) do return false; + + return target_stat.modified_time >= package_stat.modified_time; +} + run_command_and_forward_output :: (cmd: str) => { args := string.split(cmd, #char " ", context.temp_allocator); prog := args[0];