GameSphere

LGPL-2.1-or-later

Исходники Wine

Движок, которым GameSphere запускает игры, — это Wine, собранный из официально публикуемых исходников CrossOver. Wine распространяется под LGPL, поэтому вместе со сборкой вы получаете право взять исходники, из которых она сделана, и увидеть каждое наше изменение. Всё это лежит здесь.

Вы попали сюда по адресу из файла gamesphere-build-identity.txt в корне тулчейна? Значит, всё правильно: эта страница и есть то, что он обещает.

Что здесь лежит

ФайлЧто это
crossover-sources-26.2.0.tar.gz
≈149 МБ
Тот самый архив исходников CrossOver, из которого собран движок. Байт в байт то, что скачал наш конвейер, — не пересобранная копия.
patches/0001-gamesphere-build-identity.patch Наша серия патчей, целиком. Сегодня в ней один патч — см. ниже.
sources.json Что и откуда берётся: адреса, версии, контрольные суммы. Единственное место, где закреплены номера версий.
build.sh Конвейер сборки целиком: загрузка, сверка сумм, наложение патчей, сборка, упаковка. Тот же скрипт, которым собрана раздаваемая сборка.
SHA256SUMS Контрольные суммы всего перечисленного, чтобы вы могли проверить скачанное: shasum -a 256 -c SHA256SUMS.

Каталог не листается — ссылки выше и есть полный список. Файлы отдаются с поддержкой докачки: оборвавшуюся загрузку архива можно продолжить (curl -C -), а не начинать заново.

Версия исходников

Исходники взяты у CodeWeavers в том виде, в каком те их публикуют:

Версия CrossOver26.2.0
Версия Wine внутри11.0
Откуда взятоmedia.codeweavers.com/pub/crossover/source/crossover-sources-26.2.0.tar.gz
sha2563846ae094dd49c073467bb2b5e6e17d5bacaebcfab4b6dd2af3f132c64cad6cf
Каталог с Wine внутри архиваwine

Проверить скачанное:

shasum -a 256 crossover-sources-26.2.0.tar.gz

Сумма обязана совпасть со строкой выше и с той, что записана в sources.json. Не совпала — не собирайте, напишите нам.

Наши изменения

Изменения оформлены серией патчей в формате git diff и накладываются по возрастанию номера в имени командой git apply -p1. Ничего, кроме этой серии, к исходникам не применяется.

ПатчЧто делает
0001-gamesphere-build-identity.patch Добавляет в корень дерева исходников текстовый файл gamesphere-build-identity.txt с адресом этой страницы. Он же попадает в раздаваемый пакет — именно так получатель двоичной сборки узнаёт, где лежат исходники. Кода Wine патч не касается.

В код Wine мы не вносили ни одного изменения

Единственный патч серии добавляет один текстовый файл и ничего не правит. Всё остальное, что отличает наш движок от голого Wine, лежит рядом с ним, а не внутри: свободные графические библиотеки (DXMT) кладутся в тулчейн готовыми, настройки задаются при сборке ключами configure — они видны в build.sh. Появятся правки в самом Wine — появятся и патчи в этой серии, а номер поставки справа от +gs вырастет.

Как собрать самому

Понадобится Mac на Apple Silicon: сборка идёт для x86_64 под Rosetta 2 — именно такой Wine потом запускает игры. Нужны Command Line Tools и несколько пакетов из Homebrew:

brew install bison flex pkg-config mingw-w64

Bison из системы слишком стар для Wine — нужен именно из Homebrew, и его каталог должен стоять в PATH раньше системного. Скрипт проверяет инструменты до начала работы и говорит, чего не хватает, — а не через сорок минут сборки.

Дальше:

mkdir wine && cd wine
curl -O https://gamesphere.dulin.tech/source/wine/build.sh
curl -O https://gamesphere.dulin.tech/source/wine/sources.json
mkdir patches
curl -o patches/0001-gamesphere-build-identity.patch \
     https://gamesphere.dulin.tech/source/wine/patches/0001-gamesphere-build-identity.patch
chmod +x build.sh
./build.sh build

Скрипт сам скачает исходники по адресу из sources.json, сверит их контрольную сумму, наложит патчи, соберёт Wine и упакует его в тот же формат, который ставит приложение. Результат — build/dist/gamesphere-wine-26.2.0+gs1.tar.gz и манифест рядом с ним.

Архив исходников можно не качать заново: положите скачанный отсюда файл в build/downloads/ под тем же именем, и загрузка пропустится — сумма всё равно будет сверена.

Отдельные шаги (fetch, unpack, patches, compile, package) и переменные окружения — ./build.sh help.

О побайтовом совпадении

Упаковка воспроизводима: время внутри пакета закреплено, и повторный прогон package по одному и тому же дереву даёт побайтово тот же архив. А вот совпадения вашего результата с нашим выложенным архивом мы не обещаем: компилятор, версия macOS и содержимое Homebrew у вас свои, и в двоичный код они попадают. LGPL этого и не требует — она требует исходники и наши изменения, а они здесь.

Почему это опубликовано

Wine и производные от него компоненты распространяются под LGPL-2.1 или более поздней версии. Раздавая двоичную сборку, мы обязаны сделать три вещи, и все три сделаны:

Проприетарных компонентов в сборке нет. Game Porting Toolkit принадлежит Apple, в поставку не входит и скачивается пользователем самостоятельно. Полный список сторонних компонентов — на странице «Лицензии сторонних компонентов», исходники остальных свободных частей — на странице исходников.

Что-то не открывается, не сходится сумма, не хватает файла или не собирается — напишите на gamesphere@dulin.tech. Молчащая раздача исходников — нарушение лицензии, и чинить её мы будем в первую очередь.