Получение проекта:
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
Проекты распространяются либо в виде архивов исходных текстов проекта, либо в репозиториях систем управления версиями.
Получение и распаковка архивов выходит за рамки этого документа и должна быть доступна пользователю.
Получение же исходных текстов проекта из репозиториев систем управления версиями требует некоторых пояснений, описанных ниже.
Получение проекта при правах доступа “только на чтение”:
git clone git://САЙТ/ПРОЕКТ.git
Переход в каталог проекта:
cd ПРОЕКТ
Проекты содержат субмодули git, ссылки на которые в репозитории проекта используют схему “ssh://”. Поэтому для получения субмодулей нужно преобразовать все сссылки “ssh://” в “git://” :
./ssh2git
Получение субмодулей:
git submodule init
git submodule update
Создайте где-нибудь в надёжном месте вне системы сборки, желательно на другой файловой системе, каталог для архивов исходных текстов:
mkdir -p НАДЁЖНОЕ-МЕСТО/СКЛАД-ИСХОДНИКОВ
или используйте существующее хранилище.
Начальная настройка:
./xwmake/setup ПОДКАТАЛОГ-ПРОЕКТА НАДЁЖНОЕ-МЕСТО/СКЛАД-ИСХОДНИКОВ
ПОДКАТАЛОГ-ПРОЕКТА, как правило, имеет имя, совпадающее с именем проекта.
Процедура начальной настройки “xwmake/setup” создаёт скрипт запуска двигателя для пакетов вида b-ПРОЕКТ.
Подробнее о xwmake/setup.
Для удобства дальнейшего пользования, созданный скрипт запуска пакетов лучше переименовать:
mv b-ПРОЕКТ b
Если на сборочной машине установлен ccache, его лучше использовать для ускорения повторных сборок:
. xwmake/ccache.sh
[УПРАВЛЯЮЩИЕ-ПЕРЕМЕННЫЕ] ./b install ГЛАВНЫЙ-МЕТАПАКЕТ-ПРОЕКТА
Имя метапакета, представляющего весь проект.
Как правило, называется “goal”.
Присваивания значений переменным среды вида <ИМЯ>=<ЗНАЧЕНИЕ>, управляющие параметрами сборки отдельных пакетов и всего проекта.
Параметры, заданные здесь, имеют приоритет перед присваиваниями, выполненными при начальной настройке проекта.
Итогом сборки проекта являются, как правило, файлы образов ядра, корневой файловой системы и других образов, предназначенные для записи на целевое устройство.
Смотрим на файлы получившихся образов:
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
Файлы архивов исходных текстов, используемые проектом и отстутствующие на начало сборки проекта в каталоге длительного хранения будут получены из интернета в процессе сборки и помещены в каталог хранения первого уровня. Для перемещения всех вновь полученных из интернета архивов, в каталог длительного хранения, выдайте команду:
./b save-all-files any
Если же проект был получен вместе с заранее сформированным каталогом длительного хранения, содержащим все необходимые архивы исходных текстов, то никакие пакеты в процессе сборки не будут получаться из интернета и выполнять вышеописанную команду не нужно.
Получаем проект 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