The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]



Индекс форумов
Составление сообщения

Исходное сообщение
"Раздел полезных советов: Сборка и тестирование хелловорлда под 17 платформ одним скриптом"
Отправлено auto_tips, 21-Окт-21 12:23 
Понадобилось настроить и запустить на сторонней машине автоматизированную сборку (и автотесты) своего кода сразу под ARM, MIPS, x86 и PowerPC - решил заодно поделиться с местным сообществом.

Сейчас будет про автоматическую сборку. Про тестирование будет отдельно.

Хотите собрать свой хелловорлд сразу под 17 (29 вариантов сборки, так как почти каждая платформа идёт в двух вариантах: libc и musl)? Если да - внизу шаги.

Сборка осуществляется с помощью сборочного инструментарий void-linux, за что им огромное спасибо - работа проделана огромная.

Рецепт описывается простой и последовательный. Желающие сделать что-то нестандартное или разнообразить секс^Wпроцесс сборки идут читать инструкцию на гитхаб, она не слишком большая и вполне понятная.

Вот, что нам надо:

** Linux, любой (я использую Mint),
** Пше (им будем ставить тулчейны, им же и собирать исходные тексты),
** 20+ ГБ на диске (у меня выделенный SSD, хотя все равно долго получается).

Все остальное автоматически доставится в процессе.

++ Шаг 1: xbps

Собираем xbps:

     $ git clone --depth 1 https://github.com/void-linux/xbps
     $ cd xbps
     $ ./configure --enable-rpath --prefix=/usr --sysconfdir=/etc
     $ make

Ставим его в отдельный каталог, не замусоривая систему (пусть это будет каталог ~/xbps-git)

     $ make DESTDIR=~/xbps-git install clean

Прекрасно, базовый инструментарий готов.

Добавляем путь к xbps в PATH (потом это же сделаем в скрипте)

     $ export PATH=~/xbps-git/usr/bin:$PATH

++ Шаг 2: сборочный инструментарий void-linux.

Забираем инструментарий:

     $ git clone --depth 1 https://github.com/void-linux/void-packages
     $ cd void-packages

Не забываем про PATH к xbps, который прописали раньше (export PATH=~/xbps-git/usr/bin:$PATH)

Доставляем локально недостающие детали:

     $ ./xbps-src binary-bootstrap

++ Шаг 3: готовим свой код к сборке

Ваш код, само собой, лежит где-то на гитхабе (гитлабе, дома) и у него проставлен тег "1.0".

В каталоге srcpkgs создаем свой подкаталог с любым именем (у нас будет helloworld)

В созданном каталоге размещаем вот такой текстовый файл "template":

     # Template file for 'helloworld'
     pkgname=helloworld
     version=1.0
     revision=1
     build_style=gnu-makefile
     hostmakedepends="xxd"
     short_desc="Hello World"
     maintainer="superpuperprogrammer <superpuperprogrammer@gmail.com>"
     license="MIT"
     homepage="https://superpuperprogrammer.github.io/"
     distfiles="https://github.com/superpuperprogrammer/helloworld/archive/${version}.tar.gz"
     checksum=b5...............f1
    
     do_check() {
         make check
     }
    
     post_install() {
         vlicense LICENSE
     }

"xxd" в зависимостях про так - впишите своё, если надо;
адрес архива с кодом вписываете свой, в примере гитхаб по тегу;
checksum получаете запустив "sha256sum 1.0.tar.gz";
"make check" можете исключить, но с ним интереснее.

++ Шаг 4, последний. Собираем.

На выбор есть много платформ/архитектур, вот их список: x86_64-musl aarch64-musl aarch64 armv5tel-musl armv5tel armv5te-musl armv5te armv6hf-musl armv6hf armv6l-musl armv6l armv7hf-musl armv7hf armv7l-musl armv7l i686-musl i686 mipselhf-musl mipsel-musl mipshf-musl mips-musl ppc64le-musl ppc64le ppc64-musl ppc64 ppcle-musl ppcle ppc-musl ppc. Впечатляет?

Собираем так:

     $ ./xbps-src -a armv7hf-musl -C pkg helloworld

Вместо armv7hf-musl подставляете нужную платформу из списка. В процессе xbps-src сам доставит отсутствующий тулчейн и сам запустит сборку. Берите пиво, колу, чай (что вы пьете) и наблюдайте логи.

Лично я делаю скриптом:

     for arch in x86_64-musl \\
                 aarch64-musl aarch64 \\
                 armv5tel-musl armv5tel armv5te-musl armv5te armv6hf-musl armv6hf armv6l-musl armv6l armv7hf-musl armv7hf armv7l-musl armv7l \\
                 i686-musl i686 \\
                 mipselhf-musl mipsel-musl mipshf-musl mips-musl \\
                 ppc64le-musl ppc64le ppc64-musl ppc64 \\
                 ppcle-musl ppcle \\
                 ppc-musl ppc
     do
         ./xbps-src -a $arch clean helloworld
         ./xbps-src -a $arch -C pkg helloworld || exit $?
     done

Пока все. Автоматическое тестирование всех этих платформ/архитектур не вставая с кресла и не создавая сорок виртуалок будет в следующем совете.

URL:
Обсуждается: http://www.opennet.ru/tips/info/3193.shtml

 

Ваше сообщение
Имя*:
EMail:
Для отправки ответов на email укажите знак ! перед адресом, например, !user@host.ru (!! - не показывать email).
Более тонкая настройка отправки ответов производится в профиле зарегистрированного участника форума.
Заголовок*:
Сообщение*:
 
При общении не допускается: неуважительное отношение к собеседнику, хамство, унизительное обращение, ненормативная лексика, переход на личности, агрессивное поведение, обесценивание собеседника, провоцирование флейма голословными и заведомо ложными заявлениями. Не отвечайте на сообщения, явно нарушающие правила - удаляются не только сами нарушения, но и все ответы на них. Лог модерирования.



Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2024 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру