The OpenNET Project / Index page

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



"Раздел полезных советов: Сборка и тестирование хелловорлда под 17 платформ одним скриптом"
Вариант для распечатки  
Пред. тема | След. тема 
Форум Разговоры, обсуждение новостей
Изначальное сообщение [ Отслеживать ]

"Раздел полезных советов: Сборка и тестирование хелловорлда под 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:
Обсуждается: https://www.opennet.ru/tips/info/3193.shtml

Ответить | Правка | Cообщить модератору

Оглавление

Сообщения [Сортировка по времени | RSS]


1. "Сборка и тестирование хелловорлда под 17 платформ одним скриптом"  +/
Сообщение от Аноним (1), 21-Окт-21, 12:23 
> Вот, что нам надо:
> Пше

Польша стронг!

Ответить | Правка | Наверх | Cообщить модератору

2. "Сборка и тестирование хелловорлда под 17 платформ одним скриптом"  +/
Сообщение от Alexey (??), 21-Окт-21, 13:00 
Пше в git!
Ответить | Правка | Наверх | Cообщить модератору

3. "Сборка и тестирование хелловорлда под 17 платформ одним скриптом"  +/
Сообщение от Anon23456 (?), 24-Окт-21, 14:26 
Yocto
Ответить | Правка | Наверх | Cообщить модератору

5. "Сборка и тестирование хелловорлда под 17 платформ одним скриптом"  +/
Сообщение от Alex Mikhalevemail (?), 28-Окт-21, 20:51 
Классный совет, спасибо.
Ответить | Правка | Наверх | Cообщить модератору

6. "Missing dependencies"  +/
Сообщение от Alex Mikhalevemail (?), 28-Окт-21, 21:23 
На Ubuntu 20.04 надо добавить `sudo apt install libffi-dev libssl-dev` и свежий libarchive. https://github.com/libarchive/libarchive
Ответить | Правка | Наверх | Cообщить модератору

7. "Сборка и тестирование хелловорлда под 17 платформ одним скриптом"  +/
Сообщение от Mingw (?), 13-Ноя-21, 03:24 
i686/x86_64-w64?
Ответить | Правка | Наверх | Cообщить модератору

8. "Сборка и тестирование хелловорлда под 17 платформ одним скриптом"  +/
Сообщение от BratishkaErik (ok), 16-Ноя-21, 06:07 
Zig можно ещё легче
Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Рекомендовать для помещения в FAQ | Индекс форумов | Темы | Пред. тема | След. тема




Спонсоры:
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

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