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 в том виде, в каком те их публикуют:
| Версия CrossOver | 26.2.0 |
|---|---|
| Версия Wine внутри | 11.0 |
| Откуда взято | media.codeweavers.com/pub/crossover/source/crossover-sources-26.2.0.tar.gz |
| sha256 | 3846ae094dd49c073467bb2b5e6e17d5bacaebcfab4b6dd2af3f132c64cad6cf |
| Каталог с 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 или более поздней версии. Раздавая двоичную сборку, мы обязаны сделать три вещи, и все три сделаны:
- опубликовать исходники, из которых собрана раздаваемая сборка, — архив выше;
- опубликовать внесённые нами изменения — серия патчей выше;
- довести адрес исходников до получателя сборки — файл
gamesphere-build-identity.txtлежит в корне тулчейна и называет эту страницу. Упаковщик отказывается собрать пакет без него.
Проприетарных компонентов в сборке нет. Game Porting Toolkit принадлежит Apple, в поставку не входит и скачивается пользователем самостоятельно. Полный список сторонних компонентов — на странице «Лицензии сторонних компонентов», исходники остальных свободных частей — на странице исходников.
Что-то не открывается, не сходится сумма, не хватает файла или не собирается — напишите на gamesphere@dulin.tech. Молчащая раздача исходников — нарушение лицензии, и чинить её мы будем в первую очередь.