The OpenNET Project / Index page

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



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

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

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

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

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

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

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

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

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

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

9. Сообщение от helloworld11 (?), 12-Дек-21, 09:13   +/
А кроме helloworld это соберёт Фотошоп Офис ворд под 17 платформ одним скриптом?

Не прощё электрон использовать?

Ответить | Правка | Наверх | Cообщить модератору
Ответы: #10, #12

10. Сообщение от Аноним (11), 15-Дек-21, 12:22   +/
Как том поживает электрон под ppcle или ты и электрон предлагаешь перед этим собрать?
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #9

11. Сообщение от Аноним (11), 15-Дек-21, 12:29   +/
> Zig можно ещё легче

Тот же вопрос как у него с поддержкой ppcle что-то она далек от Tier 1. Если она вообще есть.  

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

12. Сообщение от And (??), 23-Дек-21, 10:27   +1 +/
Ты Электрон не собираешь сам под 17-ть платформ. А эта статья про случай когда собираешь своё сам.

Поэтому - с Э. сложнее, ломучее, менее переносимо.

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

13. Сообщение от ы (?), 04-Янв-22, 23:10   +/
Жду очень статью про автоматическое тестирование. Был бы весьма признателен.
С наступившим!
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #14

14. Сообщение от pavlinux (ok), 05-Янв-22, 05:35   +/
>  про автоматическое тестирование.


#!/bin/bash

ARCHS="aarch64 aarch64_be alpha arm armeb cris hppa i386 m68k
       microblaze microblazeel mips mips64 mips64el mipsel
       mipsn32 mipsn32el nios2 or1k ppc ppc64 ppc64abi32
       ppc64le riscv32 riscv64 s390x sh4 sh4eb sparc sparc32plus
       sparc64 tilegx x86_64 xtensa xtensaeb"

for i in $ARCHS
      do
         qemu-$i hello_world_$i;
done


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

15. Сообщение от Брат Анон (ok), 10-Фев-22, 16:42   –1 +/
Хм. На golang добиться подобного эффекта куда проще. Затраченные усилия впечатляют, результат -- ну такое себе.
Ответить | Правка | Наверх | Cообщить модератору
Ответы: #16

16. Сообщение от OpenEcho (?), 20-Окт-22, 17:39   +/
+1, но ещё проще использовать https://github.com/jart/cosmopolitan
где компилируешь раз и будет работать везде, на бсде, лине, винде, эпле и даже без ОСи, из под биоса
Ответить | Правка | Наверх | Cообщить модератору
Родитель: #15


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

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




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

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