Показаны сообщения с ярлыком mock. Показать все сообщения
Показаны сообщения с ярлыком mock. Показать все сообщения

среда, 7 февраля 2018 г.

CentOS 7: собираем libtgvoip

За основу хорошо заходят 2 пакета:
http://rpmfind.net/linux/RPM/rpmfusion/free/fedora/updates/27/x86_64/l/libtgvoip-1.0.3-1.fc27.x86_64.html
http://rpmfind.net/linux/RPM/rpmfusion/free/fedora/updates/27/x86_64/l/libtgvoip-devel-1.0.3-1.fc27.x86_64.html
Также нужны mock и gyp с поддержкой cmake

mock -r epel-7-x86_64 rebuild libtgvoip-1.0.3-1.fc27.src.rpm
(тут будет момент с gyp - нужно будет также встроить свежий gyp, так что вместо epel будет своя репа c gyp, куда в том числе нужно добавить данные репы centos-sclo-rh для devtoolset)
Но всё-равно не соберётся. Вторым шагом будет или выпиливание webrtc блока (оно на c++17), или установка gcc 5. Версия 4.9 его не устроит. Ставим devtoolset-4-gcc
Но всё-равно не соберётся, потому что mock тянет штатную версию 4.8.

А также, будет ошибка
usr/include/c++/5.3.1/bits/c++0x_warning.h:32:2: error: #error This file requires compiler and library support for the ISO C++ 2011 standard. This support must be enabled with the -std=c++11 or -std=gnu++11 compiler options.
Только тут момент: ошибка изменится на
error: ‘typeof’ was not declared in this scope

фикс: typeof отсутствует(?) в с++11, надо писать -std=gnu++11
или (возможно?) поможет такая штука
#define typeof(x) __typeof__(x)

Теперь в спеке нужны изменения
pushd out/Release
+    sed -i'' -e "14i add_definitions(-std=gnu++11)" CMakeLists.txt
    %cmake .


вторник, 23 января 2018 г.

CentOS 7 и gyp: ImportError: No module named cmake

GYP (generate your projects) is a build automation tool. GYP is created by Google to generate native IDE project files (such as Visual Studio Code and Xcode) for building the Chromium web browser and is licensed as open source software using the BSD software license.

The functionality of GYP is similar to the CMake build tool. GYP processes a file that contains a JSON dictionary[1] in order to generate one or more target project make files. The single source .GYP file is generic while the target files are specific to each targeted build tool.

Потребовалось для некоторых задач использовать gyp (wiki, 2) с опцией --format=cmake, но молвит нам компилятор ImportError: No module named cmake
Также не помогла установка python-pip && pip install cmake. Копать надо в сторону самого gyp:
$ ls -la /usr/lib/python2.7/site-packages/gyp/generator/cmake*
ls: cannot access /usr/lib/python2.7/site-packages/gyp/generator/cmake*: No such file or directory

То есть просто нет данного функционала в самом gyp. Но заглянув например сюда - мы этот модуль видим.

Быстрое введение в mock

mock это утилита для сборки, наподобие rpmbuild, но в чистом окружении.

https://github.com/xvitaly/tgbuild/blob/master/doc/build_using_mock.md

https://blog.packagecloud.io/eng/2015/05/11/building-rpm-packages-with-mock/

Список реп (для ключа -r) можно посмотреть тут
/etc/mock/

В случае с centos ставим примерно так
Подготовка
yum install -y epel-release
yum install rpm-build rpmdevtools mock
usermod -a -G mock some_builder_user
mock -r epel-7-x86_64 init

Сборка своего пакета
rpmbuild -bs some_package.spec
mock -r epel-7-x86_64 some_package.src.rpm
и результат будет в /var/lib/mock/epel-7-x86_64/result

Чтобы сделать сборку со своей репой, в /etc/mock копируем нужный файл и добавляем внутрь свои репы, а потом в -r указываем наше новое название.