Сборка Haiku с помощью Cygwin

## Компиляция Haiku в Windows с помощью Cygwin

На данный момент стабильная сборка **Haiku** производится в самой Haiku или Linux, Free BSD, MacOS. Но мы попробуем **поэкспериментировать** и собрать Haiku в **Windows**! Для этого будем использовать среду **Cygwin**, которая позволяет компилировать и запускать UNIX / Linux программы в Windows. Описание Cygwin в википедии.

**Весь процесс установки, настройки и компиляции по этапам:**

1.Скачиваем **32 битную версию Cygwin** с официального сайта.

2.Запускаем установку Cygwin (запускаем установочный файл setup-x86.exe).

3.Следуем стандартным настройкам установщика, до момента выбора пакетов.

4.На этапе выбора пакетов, следует **ОБЯЗАТЕЛЬНО** найти и отметить для установки следующие пакеты:

* **git**
* **gcc-g++**
* **make**
* **bison**
* **flex**
* **texinfo**
* **autoconf**
* **automake**
* **gawk**
* **nasm**
* **wget**
* **zip**
* **unzip**
* **curl**
* **curl-devel**
* **zlib**
* **zlib-devel**
* **genisoimage**
* **libtool**

5.Установщик Cygwin скачает и установит выбранные пакеты автоматически.

6.При успешной установке, на рабочем столе должен появиться ярлык для запуска Cygwin.

7.Запускаем Cygwin и видим командную оболочку, как на скриншоте (для корректного выхода из неё, нужно набрать команду: **exit**):

8.Теперь **ОБЯЗАТЕЛЬНО** нужно включить поддержку режима **case-sensitivity** для имён файлов в системе Windows (по умолчанию отключено). Для этого откройте редактор реестра windows (команда **regedit**) и найдите параметр **obcaseinsensitive** по этому пути:

**HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\kernel\**

Установите значение параметра **obcaseinsensitive** в **0**

Перезагрузите систему Windows для применения изменений.

9.Теперь запустите Cygwin и убедитесь, что команды, как на скриншоте, не вызывают ошибки и реально создают две папки с одинаковыми именами, но в разном регистре в домашней директории пользователя Cygwin:

**c:\cygwin\home\user\**

10. Теперь клонируем исходный код Haiku. Для это в командной оболочке Cygwin последовательно вводим команды:

**git clone https://git.haiku-os.org/buildtools**

**git clone https://git.haiku-os.org/haiku**

11. После успешного клонирования исходного кода Haiku, переходим к стадии компиляции кроссплатформенных инструментов для сборки Haiku. Для этого вводим следующие команды:

**cd buildtools/jam**

**make**

**./jam0 install**

**cd ../..**

**jam -v**

12. После успешной компиляции и установки специального форка системы сборки Jam для Haiku, переходим к компиляции других инструментов. Вводим команды (команда выделенная жирным курсивом вводится цельной, без разбивки на строки):

**cd haiku**

**mkdir generated-x86**

**cd generated-x86**

***../configure -j2 --distro-compatibility official --use-gcc-pipe --build-cross-tools x86 ../../buildtools/***

Описание ключей:

* **j2** - цифра указывает на количество ядер процессора задействованных в компиляции.
* **distro-compatibility official** - указывает собирать официальный дистрибутив Haiku.
* **use-gcc-pipe** - позволяет задействовать ОЗУ для более быстрой компиляции.

13. После удачной компиляции, мы должны увидеть сообщение: **binutils and gcc for cross compilation have been built successfully!**

Это означает, что конфигурация и компиляция необходимых инструментов закончилась успешно и можно двигаться дальше.

14. Теперь нужно добавить **Cygwin** в список поддерживаемых платформ. Без этого сборка Haiku не начинается с соответствующим сообщением:

**/home/user/haiku/src/build/libsolv/Jamfile: Please add a case for your platform (cygwin)!**

Редактируем файл по пути: **haiku\src\build\libsolv\Jamfile**

Находим раздел: **switch $(HOST\_PLATFORM)**

**DEFINES += HAVE\_FUNOPEN ;**

Сохраняем файл.

15.Потом редактируем файл по пути: **haiku\build\jam\MainBuildRules**

Находим строку: **CygwinExtensionFix $(target) ;**

Ставим перед ней символ комментария, чтобы получилось так:

**#CygwinExtensionFix $(target) ;**

Сохраняем файл.

16.После этого начинаем сборку дистрибутива Haiku!

Вводим команду (команда вводится цельной, без разбивки на строки):

**jam -q -j2 -sHAIKU\_IMAGE\_SIZE=900 @nightly-anyboot**

Описание ключей:

* **j2** - цифра указывает на количество ядер процессора задействованных в компиляции.
* **sHAIKU\_IMAGE\_SIZE=900** - цифра указывает желаемый размер образа.
* **@nightly-anyboot** - означает, что это мультизагрузочная ночная сборка.

По идее, после всех этих манипуляций, мы должны увидеть радостное сообщение о том, что всё собралось и наш желанный дистрибутив готов, но из-за небольшой недоработки с правильной записью атрибутов файлов, этого не происходит, и пока сборка под Cygwin ломается почти под финиш.

На недавнем съезде программистов Haiku, эта проблема была поднята и поручена для решения одному из ведущих специалистов по коду Haiku, и он обещал всё наладить и выложить патч в основную ветку разработки, но пока этого не произошло.

Ждём :)

Источник

 Форки и дистрибутивы
 Помощь