19 декабря 2016 г.

Компилируем 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)
    И добавляем в него строки:
    case cygwin :
    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, и он обещал всё наладить и выложить патч в основную ветку разработки, но пока этого не произошло.
Ждём :)

Комментариев нет:

Отправить комментарий