Files
minecraft-launcher/zlibreference.h
T
2026-08-28 00:13:59 +03:00

30 lines
1.7 KiB
C++
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
#pragma once
#include <QString>
class QProcessEnvironment;
// Установщики Forge и NeoForge сверяют sha1 каждого jar, который сами же и
// собирают, с эталоном из install_profile.json. Эталон посчитан на обычном
// zlib, а CachyOS, Fedora и другие подставляют вместо него zlib-ng: сжатие
// корректное, но побайтово другое, поэтому установка падает на любой версии
// игры сообщением «Processor failed, invalid outputs».
//
// Сменить Java не поможет — сборки OpenJDK под Linux берут libz.so.1 из
// системы. Поэтому рядом с лаунчером лежит собранный обычный zlib, и процессу
// установщика мы подсовываем его через LD_PRELOAD. Системный zlib-ng при этом
// остаётся на месте: подмена живёт ровно один процесс.
namespace ZlibReference {
// libz.so.1, который достанется процессу java, — это zlib-ng?
bool systemIsZlibNg();
// Путь к собранному рядом эталонному libz.so.1; пусто, если его нет.
QString bundledPath();
// Дописывает LD_PRELOAD, если подмена нужна. true — окружение готово (в том
// числе когда подменять нечего). note — строка для лога и текста ошибки.
bool applyTo(QProcessEnvironment &env, QString *note = nullptr);
} // namespace ZlibReference