From 45bc97d79656505d39f66194ac45fab3a5f15c22 Mon Sep 17 00:00:00 2001 From: Sergey Palcheh Date: Sat, 23 Aug 2025 20:00:47 +0600 Subject: [PATCH] added wine/proton separation by prefix bit depth --- winehelper | 33 ++++++++++++++++++++++++++++++--- 1 file changed, 30 insertions(+), 3 deletions(-) diff --git a/winehelper b/winehelper index 9962fa3..78c3322 100755 --- a/winehelper +++ b/winehelper @@ -1574,7 +1574,7 @@ generate_wine_metadata () { # Формат: "ключ_json;репозиторий;расширение_файла;шаблон_исключения" local sources=( "proton_ge;GloriousEggroll/proton-ge-custom;\\.tar\\.gz$;github-action" - "wine_kron4ek;Kron4ek/Wine-Builds;\\.tar\\.xz$;-x86" + "wine_kron4ek;Kron4ek/Wine-Builds;\\.tar\\.xz$;" "proton_lg;Castro-Fidel/wine_builds;\\.tar\\.xz$;plugins" "proton_cachyos;CachyOS/proton-cachyos;\\.tar\\.xz$;znver" "proton_sarek;pythonlover02/Proton-Sarek;\\.tar\\.gz$;" @@ -1638,13 +1638,40 @@ select_wine_version() { WINE_METADATA_FILE="$WH_TMP_DIR/wine_metadata.json" [[ ! -f "$WINE_METADATA_FILE" ]] && fatal "Файл метаданных WINE не найден." + local jq_filter + if [[ "$WINEARCH" == "win64" ]]; then + print_info "Фильтруем версии для 64-битного префикса..." + # Для 64-битных префиксов показываем сборки с 'amd64', 'x86_64', 'wow64' + # или те, у которых нет явного указания на 32-битную архитектуру. + jq_filter=' + .[] | .[] | + select( + (.name | test("amd64|x86_64|wow64")) or + (.name | test("i[3-6]86|x86(?!_64)") | not) + ) | .name + ' + else # win32 + print_info "Фильтруем версии для 32-битного префикса..." + # Для 32-битных префиксов показываем только сборки с явным указанием 32-битной архитектуры. + jq_filter=' + .[] | .[] | + select(.name | test("i[3-6]86|x86(?!_64)")) | .name + ' + fi + # Создание единого, отсортированного списка версий local versions=() - mapfile -t versions < <(jq -r '.[] | .[] | .name' "$WINE_METADATA_FILE" | sort -V -r | uniq) + mapfile -t versions < <(jq -r "$jq_filter" "$WINE_METADATA_FILE" | sort -V -r | uniq) + + if [[ ${#versions[@]} -eq 0 ]]; then + print_warning "Не найдено подходящих версий WINE/Proton для архитектуры $WINEARCH." + print_warning "Будет использована версия по умолчанию: $WH_WINE_USE" + return + fi local options=("system" "${versions[@]}") - print_info "Выберите версию WINE/Proton:" + print_info "Выберите версию WINE/Proton для $WINEARCH префикса:" PS3="Ваш выбор: " select opt in "Отмена" "${options[@]}"; do if [[ "$REPLY" == "1" ]] || [[ "$opt" == "Отмена" ]]; then