Сборка программ и библиотек по рецептам из репозитория HaikuPorts
Invite pending

HaikuPorts — это централизованная коллекция рецептов сборки программного обеспечения портированного на платформу Haiku. Основной целью ресурса https://github.com/haikuports является сотрудничество по портированию программ и библиотек для операционной системы Haiku.
Инструмент HaikuPorter написан на Python и предназначен для получения, исправления (применение патчей), сборки исходного кода и упаковки в пакет. Его можно сравнить с Gentoo Portage.
Установка и настройка HaikuPorter
Устанавливаем HaikuPorter из репозитория с помощью менеджера пакетов HaikuDepot.

Установка пакета HaikuPorter с помощью менеджера пакетов HaikuDepot
Есть другой способ установки пакетов из репозитория. Если известно точное название пакета, то его можно установить, набрав в терминале команду: pkgman install haikuporter.
Или скачать пакет из репозитория через браузер по ссылке https://depot.haiku-os.org/haikuporter и установить его вручную.
Подробное описание настройки и использования HaikuPorter описано здесь: https://github.com/haikuports/haikuports/wiki (на английском языке).
После установки пакета HaikuPorter переходим к его настройке в несколько этапов:
- Смотрим пример файла конфигурации, который лежит здесь:
- Создаём файл конфигурации в директории настроек пользователя:
- Заполняем созданный файл конфигурации следующим содержанием:
# HaikuPorts configuration
TREE_PATH="/boot/home/haikuports"
PACKAGER="My Name <mymail@mydomain.org>"
ALLOW_UNTESTED="yes"
ALLOW_UNSAFE_SOURCES="yes"
TARGET_ARCHITECTURE="x86_gcc2"
SECONDARY_TARGET_ARCHITECTURES="x86"
Описание значений параметров в файле конфигурации:
- TREE_PATH — путь к директории локальной копии репозитория с рецептами для HaikuPorter.
- PACKAGER — ваше имя (ник) и адрес электронной почты. Для подписи собранных пакетов.
- ALLOW_UNTESTED — разрешить сборку рецептов, непроверенных на данной архитектуре Haiku.
- ALLOW_UNSAFE_SOURCES — разрешить сборку из небезопасных источников (скачиваемых не по https).
- TARGET_ARCHITECTURE — основная архитектура для сборки пакетов.
- SECONDARY_TARGET_ARCHITECTURES — вторичная поддерживаемая архитектура для сборки пакетов. К примеру сборка x86 (gcc4) пакетов для гибридного дистрибутива Haiku x86_gcc2.
Продолжаем настройку HaikuPorter:
- В директории настроек пользователя /boot/home/config/settings/ (тоже самое ~/config/settings/) создаём файл с именем: profile
- Заполняем созданный файл профиля следующим содержанием:
function inpatches() { grep -rni $1 /boot/home/haikuports/*/*/patches/*; }
function inrecipe() { grep -rni $1 /boot/home/haikuports/*/*/*.recipe; }
alias hp="haikuporter -S -j1 --get-dependencies --no-source-packages"
Описание значений параметров в файле профиля:
- hp — сокращение команды haikuporter с уже указанными параметрами.
- inrecipe — команда поиска текста в рецептах.
- inpatches — команда поиска текста в патчах к рецептам.
- -j1 — компиляция в несколько потоков (цифрой указывается количество задействованных ядер для многоядерных процессоров).
- --get-dependencies — автоматическая установка зависимостей пакета (если они присутствуют в репозитории).
- --no-source-packages — не создавать пакеты с исходным кодом.
Теперь HaikuPorter настроен и готов к работе! Чтобы собрать пакет по рецепту, нам нужно создать локальную копию репозитория рецептов. Для этого в терминале вводим команду: git clone github.com/haikuports/haikuports.git.
После завершения копирования репозитория, в директории пользователя будет создана папка haikuports со всеми доступными на данный момент рецептами.
Чтобы в дальнейшем обновлять вашу локальную копию репозитория рецептов, достаточно вводить в терминале команду: haikuporter -g.
Чтобы произвести первичную инициализацию локального репозитория рецептов, нужно ввести в терминале команду: haikuporter --list
Эта команда отобразит список всех рецептов (при первом запуске это займёт продолжительное время).
Сборка пакета по рецепту
Соберём пакет (в Haiku программы и библиотеки упакованы в пакеты формата HPKG). Чтобы ознакомиться с форматом пакетов, можете прочитать эту статью: Создание установочного пакета в формате HPKG.
Для примера соберём пакет с программой (репликантом) отображающей погоду. Вводим в терминале команду: hp weather
Компиляция исходного кода и сборка пакета должна закончится примерно так, как на этом скриншоте:

Компиляция и сборка пакета с помощью HaikuPorter
Собранный пакет находится в директории репозитория рецептов в папке packages и готов к установке в систему.

Расположение пакета, после сборки
Таким образом собираете любой доступный в репозитории рецепт, набирая в терминале команду: hp название_рецепта.
Чтобы увидеть названия всех рецептов, введите в терминале команду: haikuporter --list
Или просто осуществляя навигацию по разделам репозитория.
Примечание:
- hp название_рецепта — производит компиляцию и сборку пакета для архитектуры x86_gcc2
- hp название_рецепта_x86 — производит компиляцию и сборку пакета для архитектуры x86 (с использованием gcc4)
Некоторые рецепты собираются только для архитектуры x86_gcc2 или только для x86, или для обоих архитектур. Это зависит от требований к версии компилятора и версий используемых библиотек.
Чтобы очистить директорию с рецептом после сборки пакета (особенно неуспешной), введите в терминале команду: haikuporter -c название_рецепта.
Для поиска текста во всех рецептах введите в терминале команду: inrecipe искомый_тект.
Для поиска текста во всех патчах к рецептам введите в терминале команду: inpatches искомый_текст.
На этом краткая инструкция по основным возможностям HaikuPorter закончена. Удачных вам сборок!