Комментарии (3)
Sailfish OS - Hardware Adaptation Development Kit - Часть третья
Итак, по результатам прошлой серии у нас появился готовая сборка hybris для вашего устройства. Пора её упаковать. Это необходимо, для того, чтобы правильно встроить droid-hal-init .
ВНИМАНИЕ! В данном тексте приводится сборка droid-hal для nexus5 с кодовым именем hammerhead если вы собираете не под это устройство, то надо заменить и в тексте и В НАЗВАНИЯХ ФАЙЛОВ hammerhead на имя вашего устроства!
Перво наперво необходимо установить песочницу для сборки.
Ну и запускаем её:
Следующий на очереди - пакет конфигов hybris - droid-config
И конечно же, выкладываем на gihub потому что мы молодцы.
Следующий скрипт добавить в древо hybris новое устройство и поможет настроить переменные окружения.
Опять таки - выкладываем всё в гит. Почему? Потому что мы молодцы.
Заходим в $ANDROID_ROOT/.repo/local_manifests/hammerhead.xml
И добавляем следующее:
$DEVICE.spec вставив их ДО строчки %include. Должно получиться что то типа такого:
На выходе, мы получим пакеты, которые в следующей серии будем собирать готовую Sailfish OS RootFS !
ВНИМАНИЕ! В данном тексте приводится сборка droid-hal для nexus5 с кодовым именем hammerhead если вы собираете не под это устройство, то надо заменить и в тексте и В НАЗВАНИЯХ ФАЙЛОВ hammerhead на имя вашего устроства!
Перво наперво необходимо установить песочницу для сборки.
Код BASH:
Проверяем работоспособность песочницы:
MERSDK $ hadk sdk-assistant create $VENDOR-$DEVICE https://releases.sailfishos.org/sdk/targets/Sailfish_OS-3.2.0.12-Sailfish_SDK_Tooling-i486.tar.7z sdk-assistant create $VENDOR-$DEVICE-$PORT_ARCH https://releases.sailfishos.org/sdk/targets/Sailfish_OS-3.2.0.12-Sailfish_SDK_Target-$PORT_ARCH.tar.7z
Код BASH:
Тут мы собираем в окружении простую программку которая выводит Hello, world! для проверки работоспособности компилятора и прочего.
MERSDK $ cd $HOME cat > main.c << EOF #include <stdlib.h> #include <stdio.h> int main(void) { printf("Hello, world!"); return EXIT_SUCCESS; } EOF sb2 -t $VENDOR-$DEVICE-$PORT_ARCH gcc main.c -o test
Ну и запускаем её:
Код BASH:
Если всё прошло гуд, то переходим к следующему шагу.
sb2 -t $VENDOR-$DEVICE-$PORT_ARCH ./test
Создаём SPEC файлы для сборки rpm
Первый у нас на очереди droid-hal-device собственной персоной - не забудьте поменять дефайны устройства под вашиКод BASH:
Будет правильным выложить это всё на ваш GitHub - мы же добрые и за свободу?
MER_SDK $ cd $ANDROID_ROOT mkdir rpm cd rpm git init git submodule add https://github.com/mer-hybris/droid-hal-device dhd # Rename 'hammerhead' and other values as appropriate cat <<'EOF' >droid-hal-hammerhead.spec # These and other macros are documented in dhd/droid-hal-device.inc %define device hammerhead %define vendor lge %define vendor_pretty LG %define device_pretty Nexus 5 %define installable_zip 1 %include rpm/dhd/droid-hal-device.inc EOF
Код BASH:
Естественно, ваши урлы на гитхабе должны быть другие. Мои вот: https://github.com/neochapay/droid-hal-tiny210
git add . git commit -m "[dhd] Initial content" # Create this repository under your GitHub home git remote add myname https://github.com/myname/droid-hal-hammerhead git push myname master cd -
Следующий на очереди - пакет конфигов hybris - droid-config
Код BASH:
Как мы видим - в данном разделе мы определили некоторые параметры нашего устройства, такие как наличие модема и на сколько нам надо будет изменять pixel_ratio
MER_SDK $ cd $ANDROID_ROOT mkdir hybris/droid-configs -p cd hybris/droid-configs git init git submodule add https://github.com/mer-hybris/droid-hal-configs droid-configs-device mkdir rpm cat <<'EOF' >rpm/droid-config-hammerhead.spec # These and other macros are documented in # ../droid-configs-device/droid-configs.inc %define device hammerhead %define vendor lge %define vendor_pretty LG %define device_pretty Nexus 5 %define dcd_path ./ # Adjust this for your device %define pixel_ratio 2.0 # We assume most devices will %define have_modem 1 %include droid-configs-device/droid-configs.inc EOF
И конечно же, выкладываем на gihub потому что мы молодцы.
Код BASH:
Опять же - не забываем менять урлы у меня получился такой: https://github.com/neochapay/droid-config-tiny210
git add . git commit -m "[dcd] Initial content" # Create this repository under your GitHub home git remote add myname https://github.com/myname/droid-config-hammerhead git push myname master cd -
Следующий скрипт добавить в древо hybris новое устройство и поможет настроить переменные окружения.
Код BASH:
Настраиваем переменные окружения:
cd $ANDROID_ROOT rpm/dhd/helpers/add_new_device.sh
Код BASH:
Тут стоит явно обратить внимание на переменные! У меня графика заработала только при EGL_PLATFORM=fbdev в Вашем устройстве может быть по другому. Ну и смотрите внимательно куда коннектится тач. Проверять достаточно просто:
cd hybris/droid-configs COMPOSITOR_CFGS=sparse/var/lib/environment/compositor mkdir -p $COMPOSITOR_CFGS cat <<EOF >$COMPOSITOR_CFGS/droid-hal-device.conf # Config for $VENDOR/$DEVICE EGL_PLATFORM=hwcomposer QT_QPA_PLATFORM=hwcomposer # Determine which node is your touchscreen by checking /dev/input/event* LIPSTICK_OPTIONS=-plugin evdevtouch:/dev/input/event0 -plugin evdevkeyboard:keymap=/usr/share/qt5/keymaps/droid.qmap EOF
Код BASH:
И тыкаем по экрану - посыпались символы - вот ваш тач.
cat /dev/input/event0
Опять таки - выкладываем всё в гит. Почему? Потому что мы молодцы.
Код BASH:
Далее пакет версии droid-hal - всё привычно всё по кругу.
git add . git commit -m "[dcd] Patterns and compositor config" git push myname master
Код BASH:
теперь подключаем все три репозитория к repo
cd - mkdir hybris/droid-hal-version-hammerhead cd hybris/droid-hal-version-hammerhead git init git submodule add https://github.com/mer-hybris/droid-hal-version mkdir rpm cat <<'EOF' >rpm/droid-hal-version-hammerhead.spec # rpm_device is the name of the ported device %define rpm_device hammerhead # rpm_vendor is used in the rpm space %define rpm_vendor lge # Manufacturer and device name to be shown in UI %define vendor_pretty LG %define device_pretty Nexus 5 # See ../droid-hal-version/droid-hal-device.inc for similar macros: %define have_vibrator_native 1 %define have_led 1 %include droid-hal-version/droid-hal-version.inc EOF git add . git commit -m "[dvd] Initial content" # Create this repository under your GitHub home git remote add myname https://github.com/myname/droid-hal-version-hammerhead git push myname master
Заходим в $ANDROID_ROOT/.repo/local_manifests/hammerhead.xml
И добавляем следующее:
Код XML:
на данном этапе, всё готово к сборке Ваших собственных RPM круто да?
<project path="rpm/" name="myname/droid-hal-hammerhead" revision="master" /> <project path="hybris/droid-configs" name="myname/droid-config-hammerhead" revision="master" /> <project path="hybris/droid-hal-version-hammerhead" name="myname/droid-hal-version-hammerhead" revision="master" />
Код BASH:
Если на этом этапе выскакивает ошибка что то типа
MER_SDK $ cd $ANDROID_ROOT rpm/dhd/helpers/build_packages.sh
Код BASH:
То эти файлы надо добавить в ваш spec файл устройства по пути rpm/$droid-hal-
Installed (but unpackaged) file(s) found:
$DEVICE.spec вставив их ДО строчки %include. Должно получиться что то типа такого:
Код PHP:
И да последняя строка обязательна!
%define straggler_files /init.mmi.boot.sh /init.qcom.ssr.sh /selinux_version /service_contexts %{nil}
На выходе, мы получим пакеты, которые в следующей серии будем собирать готовую Sailfish OS RootFS !
Есть один момент, полностью повторил инструкцию, хотя бы научиться собирать, но при запуске
rpm/dhd/helpers/build_packages.sh
Буквально сразу ловлю:
error: Bad exit status from /var/tmp/rpm-tmp.ABxgsc (%build)
RPM build errors:
Bad exit status from /var/tmp/rpm-tmp.ABxgsc (%build)
Бьюсь уже второй день, не могу понять что же не так. Специально даже внимательно перепроверил себя, сделал по пашей инструкции, затем строго придерживался официального мануала, результат один. В мане сказан пример "7.2.2 Troubleshoot errors from build_packages.sh", но не совсем понимаю как применить. Спасибо!
WARNING: CONFIG_UTS_NS is invalid
It is unset
Allowed values : y, !
Comment says: optional, enables kernel namespaces for systemd-nspawn containers
WARNING: CONFIG_NETFILTER_XT_MATCH_NFACCT is invalid
It is unset
Allowed values : y, m, !
Comment says: connman (optional): for routing and statistic support in sessions, http://git.kernel.org/cgit/network/connman/connman.git/commit/README?id=41f37125887cb9208da2441e350e1e3324c17ee6
WARNING: CONFIG_BLK_CGROUP is invalid
It is unset
Allowed values : y, !
Comment says: systemd (optional): http://0pointer.de/blog/projects/cgroups-vs-cgroups.html
error: Bad exit status from /var/tmp/rpm-tmp.ABxgsc (%build)
RPM build errors:
Bad exit status from /var/tmp/rpm-tmp.ABxgsc (%build)