четверг, 7 июля 2016 г.

Sailfish SDK: Ручная сборка RPM пакета



Добрый день!
В этой записке рассмотрим сборку RPM пакета для Sailfish OS в ручном режиме.

Комплект средств разработки для Sailfish OS предоставляет широкие возможности для создания программных продуктов, позволяет автоматизировать сборку и отладку, избежать множества рутинных операций и сосредоточится над созданием кода.

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

Для начала, необходимо Mer SDK. Для этого зайдите в панель управления VurtualBox, выберите Mer SDK и нажмите кнопку "Запустить", как показано на рисунке ниже.
 
Затем, необходимо подключится к этой виртуально машине по SSH. Для этого открываем терминал и вводим следующую команду:

ssh -p 2222 -i /Path/To/SailfishOS/vmshare/ssh/private_keys/engine/mersdk mersdk@localhost

где /Path/To/SailfishOS/ - путь до уставленной Sailfish SDK, например, если SDK установлен в домашнем каталоге, то команда будет выглядеть так:
ssh -p 2222 -i ~/SailfishOS/vmshare/ssh/private_keys/engine/mersdk mersdk@localhost

После этого мы попадаем в терминал виртуальной машины. Перед тем, как начать сборки пакетов, посмотрим, для каких архитектур мы сможем создавать пакеты:
sdk-assistant list
Стандартно должны быть доступны: SailfishOS-armv7hl и SailfishOS-i486
Перед тем как начать сборку пакетов, необходимо установить CMake для каждой целевой архитектуры:
sb2 -t SailfishOS-armv7hl -m sdk-install -R zypper in cmake 
sb2 -t SailfishOS-i486 -m sdk-install -R zypper in cmake

После этого все готово для ручной сборки пакетов.

Mer SDK так устроен, что рабочая папка с проектами является общей папкой с виртуальной машиной Mer SDK. А следовательн в каталоге /home/src1 лежат все проекты, которые были созданы в интегрированной среде разработки.
Поэтому перейдем в каталог с интересующим Вас проектом, например:
cd /home/src1/sailfish-bashim-client/
и  выполняем сборку RPM пакетов.
mb2 -t SailfishOS-i486 build 
mb2 -t SailfishOS-armv7hl build

Если все прошло успешно, то в каталоге проекта появится каталог RPMS, в котором будут хранится получившиеся RPM пакеты. 
Они будут доступны не только из виртуальной машины, но и в каталоге с Вашим проектом.


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

scp -P 2223 -i ~/Apps/SailfishOS/vmshare/ssh/private_keys/SailfishOS_Emulator/root \ sailfish-bashim-client-0.1-1.armv7hl.rpm root@localhost:


 Источники:
1. Sailfish tutorials: https://sailfishos.org/develop/tutorials/
2. SCP Manual: http://man7.org/linux/man-pages/man1/scp.1.html

Особенности установки VirtualBox в Fedora



Добрый день!

Эта информация необходима для начинающих пользователей или для тех, кто столкнулся с проблемой при установке драйвера для VirtualBox в Fedora.

Итак, начнем с самого начала. Напомню, что все команды необходимо выполнять от "суперпользователя" (т.е. использовать перед командами sudo или перейти в режим суперпользователя командой su).

1. Первым делом мы добавим репозиторий с программой в систему
cd /etc/yum.repos.d/
wget http://download.virtualbox.org/virtualbox/rpm/fedora/virtualbox.repo
2. Важный пункт. Необходимо, чтобы в системе были исходные коды и заголовочные файлы ядра версии, которая совпадает с версией ядра системы.
Это можно проверить, сравнив вывод команд:
rpm -qa kernel |sort -V |tail -n 1
и
uname -r
Самый простой способ достичь этого - это обновить систему и ядро до последней версии командами:
dnf update && dnf upgrade
После установки всех обновлений, необходимо перезагрузиться.
3. Еще один важный пункт. Необходимо, установить все необходимые средства, которые потребуются для VirtualBox'а:
dnf install binutils gcc make patch libgomp glibc-headers glibc-devel kernel-headers kernel-devel dkms
4. Далее все просто. Устанавливаем пакеты с VirtualBox:
 sudo dnf install VirtualBox
Примечания:
1. Во время выполнения этой команды произойдет установка всех пакетов VirtualBox в систему и запустится сборка модуля ядра. Будет создана группа пользователей vboxusers и пользователь должен быть туда добавлен автоматически. Если этого не произошло, то воспользуйтесь командой:
usermod -a -G vboxusers user_name
2. Пересобрать модуль ядра для VirtualBox можно в любой момент, используя команду:
/sbin/rcvboxdrv setup
3. Бывает такое, что иногда не прописывается системная переменная содержащая путь до папки с исходными кодами ядра. Воспользуйте этой командой:
KERN_DIR=/usr/src/kernels/`uname -r`

понедельник, 4 июля 2016 г.

Sailfish SDK: Проблема /home/src1

 

Доброго времени суток!

Столкнулся с необычной проблемой при работе с Sailfish SDK. Любой проект, даже самый простой, отказывался компилироваться и выдавал довольно странную ошибку:
/home/src1 is a directory", make failed

Похоже, что причиной таких ошибок может быть несколько:
  1. Просто неповезло :-)
  2. Пытаетесь открыть проект, созданный на другом ПК;
  3. Неудачное обновление SDK;
Решений тоже бывает несколько:
Во первых, если Вы открываете проект, созданный на другом ПК, то закройте Qt Creator, зайтие в папку с проектом и удалите все файлы *.user. Затем, снова запустите среду разработки, откройте проект и настройте проект.
Если это не помогает, то можно проверить корректность пути до директории с проектами. Остановите все виртуальные машины и откройте Параметры Mer (Инструменты -> Параметры -> Mer) и попробуйте поменять значение поля 'Alt source folder' на корректный.
Если это не помогает, то скорее всего придется переустановить Sailfish SDK.