The OpenNET Project / Index page

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

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

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

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

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

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

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

  • Linux, любой (я использую Mint),
  • Git (им будем ставить тулчейны для сборки исходных текстов),
  • 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 Пока все. Автоматическое тестирование всех этих платформ/архитектур не вставая с кресла и не создавая сорок виртуалок будет в следующем совете.
  •  
    20.10.2021 , Автор: Урри
    Ключи: build, compile, test, arm, mips, x86, powerp / Лицензия: CC-BY
    Раздел:    Корень / Программисту и web-разработчику / C/C++, сборка, отладка

    Обсуждение [ RSS ]
  • 1.1, Аноним (1), 12:23, 21/10/2021 [ответить]  
  • +/
    > Вот, что нам надо:
    > Пше

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

     
     
  • 2.2, Alexey (??), 13:00, 21/10/2021 [^] [^^] [^^^] [ответить]  
  • +/
    Пше в git!
     

  • 1.3, Anon23456 (?), 14:26, 24/10/2021 [ответить]  
  • +/
    Yocto
     
  • 1.5, Alex Mikhalev (?), 20:51, 28/10/2021 [ответить]  
  • +/
    Классный совет, спасибо.
     
  • 1.6, Alex Mikhalev (?), 21:23, 28/10/2021 [ответить]  
  • +/
    На Ubuntu 20.04 надо добавить 'sudo apt install libffi-dev libssl-dev' и свежий libarchive. https://github.com/libarchive/libarchive
     
  • 1.7, Mingw (?), 03:24, 13/11/2021 [ответить]  
  • +/
    i686/x86_64-w64?
     
  • 1.8, BratishkaErik (ok), 06:07, 16/11/2021 [ответить]  
  • +/
    Zig можно ещё легче
     


     Добавить комментарий
    Имя:
    E-Mail:
    Заголовок:
    Текст:




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

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