Содержание

Предыдущий раздел

2. Требования

Следующий раздел

3.7.1. Протокол сборки и установки проекта “sigcam”

3. Руководство пользователя

3.1. Быстро для нетерпеливых

Получение проекта:

git clone git://САЙТ/ПРОЕКТ.git
cd ПРОЕКТ
./ssh2git
git submodule init
git submodule update

Начальная настройка:

mkdir ../src-depot
./xwmake/setup ПРОЕКТ ../src-depot
. xwmake/ccache.sh

Сборка:

./b-ПРОЕКТ install goal

Смотрим на файлы получившихся образов:

ls -lh var_ПРОЕКТ/inst/last/images

Сохранение архивов исходных текстов в каталог длительного хранения:

./b-ПРОЕКТ save-all-files any

3.2. Получение исходных текстов проекта

Проекты распространяются либо в виде архивов исходных текстов проекта, либо в репозиториях систем управления версиями.

Получение и распаковка архивов выходит за рамки этого документа и должна быть доступна пользователю.

Получение же исходных текстов проекта из репозиториев систем управления версиями требует некоторых пояснений, описанных ниже.

3.2.1. Получение проекта из репозитория git

Получение проекта при правах доступа “только на чтение”:

git clone git://САЙТ/ПРОЕКТ.git

Переход в каталог проекта:

cd ПРОЕКТ

Проекты содержат субмодули git, ссылки на которые в репозитории проекта используют схему “ssh://”. Поэтому для получения субмодулей нужно преобразовать все сссылки “ssh://” в “git://” :

./ssh2git

Получение субмодулей:

git submodule init
git submodule update

3.3. Начальная настройка проекта

Создайте где-нибудь в надёжном месте вне системы сборки, желательно на другой файловой системе, каталог для архивов исходных текстов:

mkdir -p НАДЁЖНОЕ-МЕСТО/СКЛАД-ИСХОДНИКОВ

или используйте существующее хранилище.

Начальная настройка:

./xwmake/setup ПОДКАТАЛОГ-ПРОЕКТА НАДЁЖНОЕ-МЕСТО/СКЛАД-ИСХОДНИКОВ

ПОДКАТАЛОГ-ПРОЕКТА, как правило, имеет имя, совпадающее с именем проекта.

Процедура начальной настройки “xwmake/setup” создаёт скрипт запуска двигателя для пакетов вида b-ПРОЕКТ.

Подробнее о xwmake/setup.

Для удобства дальнейшего пользования, созданный скрипт запуска пакетов лучше переименовать:

mv b-ПРОЕКТ b

Если на сборочной машине установлен ccache, его лучше использовать для ускорения повторных сборок:

. xwmake/ccache.sh

3.4. Сборка проекта

[УПРАВЛЯЮЩИЕ-ПЕРЕМЕННЫЕ] ./b install ГЛАВНЫЙ-МЕТАПАКЕТ-ПРОЕКТА
ГЛАВНЫЙ-МЕТАПАКЕТ-ПРОЕКТА

Имя метапакета, представляющего весь проект.

Как правило, называется “goal”.

УПРАВЛЯЮЩИЕ-ПЕРЕМЕННЫЕ

Присваивания значений переменным среды вида <ИМЯ>=<ЗНАЧЕНИЕ>, управляющие параметрами сборки отдельных пакетов и всего проекта.

Параметры, заданные здесь, имеют приоритет перед присваиваниями, выполненными при начальной настройке проекта.

3.5. Итог сборки проекта

Итогом сборки проекта являются, как правило, файлы образов ядра, корневой файловой системы и других образов, предназначенные для записи на целевое устройство.

Смотрим на файлы получившихся образов:

ls -lh var_ПОДКАТАЛОГ-ПРОЕКТА/inst/last/images
total 26M
-rw-r--r-- 1 df df 504K Jan 24 19:54 System.map
-rwxr-xr-x 1 df df 1.1M Jan 24 19:54 kernel.bin*
-rw-r--r-- 1 df df   29 Jan 24 19:54 kernel.bin.cksum
-rw-r--r-- 1 df df   45 Jan 24 19:54 kernel.bin.md5
-rw-r--r-- 1 df df 7.7M Jan 24 20:03 root.bin
-rw-r--r-- 1 df df   28 Jan 24 20:03 root.bin.cksum
-rw-r--r-- 1 df df   43 Jan 24 20:03 root.bin.md5
-rw-r--r-- 1 df df 7.4M Jan 24 20:03 root.bin.nosum
-rw-r--r-- 1 df df 8.8M Jan 24 20:03 sigcam-mx27-1.0.956.tar

3.6. Сохранение архивов исходных текстов

Файлы архивов исходных текстов, используемые проектом и отстутствующие на начало сборки проекта в каталоге длительного хранения будут получены из интернета в процессе сборки и помещены в каталог хранения первого уровня. Для перемещения всех вновь полученных из интернета архивов, в каталог длительного хранения, выдайте команду:

./b save-all-files any

Если же проект был получен вместе с заранее сформированным каталогом длительного хранения, содержащим все необходимые архивы исходных текстов, то никакие пакеты в процессе сборки не будут получаться из интернета и выполнять вышеописанную команду не нужно.

3.7. Пример получения и сборки проекта

Получаем проект IP камеры “Sigrand IPcam-20PE”:

git clone git://sigrand.ru/sigcam.git
Cloning into 'sigcam'...
remote: Counting objects: 9976, done.
remote: Compressing objects: 100% (3383/3383), done.
remote: Total 9976 (delta 5638), reused 9966 (delta 5634)
Receiving objects: 100% (9976/9976), 17.10 MiB | 951 KiB/s, done.
Resolving deltas: 100% (5638/5638), done.

Переход в каталог проекта:

cd sigcam

Преобразование сссылок “ssh://” в “git://” :

./ssh2git

Инициализация системы субмодулей:

git submodule init
Submodule 'common_xw' (git://sigrand.ru/common_xw.git) registered for path 'common_xw'
Submodule 'xwmake' (git://sigrand.ru/xwmake.git) registered for path 'xwmake'

Получение субмодулей:

git submodule update
Cloning into 'common_xw'...
remote: Counting objects: 3726, done.
remote: Compressing objects: 100% (1316/1316), done.
remote: Total 3726 (delta 2366), reused 3726 (delta 2366)
Receiving objects: 100% (3726/3726), 1.02 MiB | 947 KiB/s, done.
Resolving deltas: 100% (2366/2366), done.
Submodule path 'common_xw': checked out '0b481c998badf9016cb7203dc05b143023c154e8'
Cloning into 'xwmake'...
remote: Counting objects: 952, done.
remote: Compressing objects: 100% (358/358), done.
remote: Total 952 (delta 578), reused 944 (delta 575)
Receiving objects: 100% (952/952), 311.82 KiB, done.
Resolving deltas: 100% (578/578), done.
Submodule path 'xwmake': checked out '5220b9ab4c80c67941a033e855196f86ee635987'

Создание каталога длительного хранения:

mkdir ../src-depot

Начальная настройка:

./xwmake/setup sigcam ../src-depot
xwmake/setup: Creating project sigcam build script ./b-sigcam ...
done.
Edit the ./b-sigcam file, change/add what you need.

Включение ccache для ускорения:

. xwmake/ccache.sh

Сборка и установка проекта:

./b-sigcam install goal

Перемещение полученных из интернета архивов, в каталог длительного хранения:

./b-sigcam save-all-files any
Making any, target: save-all-files, PLATFORM: sigrand_mx27
    Moving downloaded files to sources depot /m/w/src-depot ...
        liboil_0.3.17-2.diff.gz
        bison_2.5.dfsg-2.1.debian.tar.gz
        libtool_2.4.2-1.debian.tar.gz
        gst-plugins-bad0.10_0.10.19.orig.tar.gz
        attr_2.4.44-2.debian.tar.bz2
        flex_2.5.35.orig.tar.gz
        nano_2.2.6.orig.tar.gz
        libxml2_2.7.8.dfsg-5.1.diff.gz
        libxml2_2.7.8.dfsg.orig.tar.gz
        boa_0.94.14rc21.orig.tar.gz
        autoconf_2.67.orig.tar.gz
        mtd-utils_1.4.4.orig.tar.gz
        gst-plugins-good0.10_0.10.24-1.debian.tar.gz
        crosstool-0.43.tar.gz
        gst-plugins-base0.10_0.10.30-1.debian.tar.gz
        glib2.0_2.30.2.orig.tar.xz
        gst-plugins-base0.10_0.10.30.orig.tar.bz2
        gettext_0.18.1.1-3.debian.tar.gz
        busybox-1.19.3.tar.bz2
        pkg-config_0.25.orig.tar.gz
        ncurses_5.7+20100313-5.diff.gz
        klibc_1.5.12.orig.tar.gz
        pkg-config_0.25-1.1.diff.gz
        m4_1.4.16-2.debian.tar.gz
        libffi_3.0.10.orig.tar.gz
        quilt_0.50-2.debian.tar.gz
        dropbear_2011.54-1.diff.gz
        gst-plugins-bad0.10_0.10.19-2.diff.gz
        gcc-4.1.2.tar.bz2
        texinfo_4.13a.dfsg.1-8.diff.gz
        nano_2.2.6-1.debian.tar.gz
        linux-2.6.19.tar.xz
        gstreamer0.10-rtsp_0.10.5.orig.tar.gz
        flex_2.5.35-10.diff.gz
        glibc-libidn-2.4.tar.bz2
        quilt_0.50.orig.tar.gz
        dpatch_2.0.34.tar.gz
        sed_4.2.1-9.debian.tar.gz
        mtd-utils_1.4.4-1.diff.gz
        help2man_1.40.5.tar.gz
        gstreamer0.10-rtsp_0.10.5-2.diff.gz
        mime-support_3.51-1.tar.gz
        automake1.11_1.11.1.orig.tar.bz2
        sed_4.2.1.orig.tar.gz
        gawk_4.0.0+dfsg.orig.tar.gz
        haserl_0.9.29-3.debian.tar.gz
        lzo2_2.03.orig.tar.gz
        texinfo_4.13a.dfsg.1.orig.tar.gz
        glib2.0_2.30.2-5.debian.tar.gz
        libffi_3.0.10-3.diff.gz
        binutils-2.20.1.tar.bz2
        crosstool-ng-1.13.2.tar.bz2
        klibc_1.5.12-2lenny1.diff.gz
        gawk_4.0.0+dfsg-1.debian.tar.gz
        openntpd_3.9p1+debian.orig.tar.gz
        m4_1.4.16.orig.tar.bz2
        attr_2.4.44.orig.tar.gz
        glibc-2.4.tar.bz2
        haserl_0.9.29.orig.tar.gz
        procps_3.2.8-11.debian.tar.gz
        automake1.11_1.11.1-1.debian.tar.bz2
        openntpd_3.9p1+debian-9.debian.tar.gz
        bison_2.5.dfsg.orig.tar.bz2
        liboil_0.3.17.orig.tar.gz
        lzo2_2.03-2.debian.tar.gz
        gst-plugins-good0.10_0.10.24.orig.tar.bz2
        autoconf_2.67-2.diff.gz
        zlib_1.2.5.dfsg.orig.tar.gz
        acl_2.2.51.orig.tar.bz2
        autotools-dev_20110511.1.tar.gz
        acl_2.2.51-5.debian.tar.bz2
        gettext_0.18.1.1.orig.tar.gz
        ncurses_5.7+20100313.orig.tar.gz
        zlib_1.2.5.dfsg-1.debian.tar.gz
        dropbear_2011.54.orig.tar.gz
        procps_3.2.8.orig.tar.gz
        glibc-ports-2.4.tar.bz2
        gstreamer0.10_0.10.30-1.debian.tar.gz
        crosstool-ng-1.5.3.tar.bz2
        boa_0.94.14rc21-3.1.diff.gz
        gstreamer0.10_0.10.30.orig.tar.bz2
        libtool_2.4.2.orig.tar.gz
    done
made   any, target: save-all-files, PLATFORM: sigrand_mx27