сборка php-5.5

Вопросы и обсуждения, касающиеся РОСА Марафон (релиз с долговременной поддержкой)
Ответить
Аватара пользователя
clicman
Сообщения: 18
Зарегистрирован: 27 янв 2014, 20:11
Operating system: Linux Mint 13 Maya (Based on Ubuntu 12.04 LTS)

сборка php-5.5

Сообщение clicman » 08 авг 2014, 08:22

Добрый день, господа.
Попытался собрать на abf php-5.5, не вышло :(
https://abf.io/build_lists/2101535

Можете присоветовать почему? Из логов совсем непонятно.

Аватара пользователя
clicman
Сообщения: 18
Зарегистрирован: 27 янв 2014, 20:11
Operating system: Linux Mint 13 Maya (Based on Ubuntu 12.04 LTS)

Re: сборка php-5.5

Сообщение clicman » 08 авг 2014, 10:19

Причем локально из сорцов собирается номально.

Аватара пользователя
Pulfer
Сообщения: 3358
Зарегистрирован: 15 фев 2012, 01:57
Operating system: ROSA Desktop Fresh 2016.1 i586
Откуда: Vladivostok, Russia

Re: сборка php-5.5

Сообщение Pulfer » 08 авг 2014, 12:01

clicman писал(а):Добрый день, господа.
Попытался собрать на abf php-5.5, не вышло :(
https://abf.io/build_lists/2101535

Можете присоветовать почему? Из логов совсем непонятно.
Да не, из логов понятно, что не ставится зависимость сборки: php-5.5.15-1.src (due to unsatisfied sasl-devel)

Возможно, замена в спеке sasl-devel на libsasl-devel поможет. Сейчас нет под рукой Марафона, чтобы посмотреть, какие там Provides у пакета libsasl2-devel/lib64sasl2-devel.
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586

Аватара пользователя
clicman
Сообщения: 18
Зарегистрирован: 27 янв 2014, 20:11
Operating system: Linux Mint 13 Maya (Based on Ubuntu 12.04 LTS)

Re: сборка php-5.5

Сообщение clicman » 09 авг 2014, 08:24

Точно! Спасибо. Не по глазам было:) В понедельник продолжу попытки.

Аватара пользователя
clicman
Сообщения: 18
Зарегистрирован: 27 янв 2014, 20:11
Operating system: Linux Mint 13 Maya (Based on Ubuntu 12.04 LTS)

Re: сборка php-5.5

Сообщение clicman » 10 авг 2014, 18:41

Хмм.. конечно php я собрал, но чтобы сборка заработала пришлось странные вещи делать.
Например:
BuildRequires: lib64enchant-devel
Как итог - сборка работает только под x64 :(

При этом, если взглянуть на спеку php из официального репозитория, там в BuildRequires архитектура не фигурирует.

Что я делаю не так?

Аватара пользователя
Pulfer
Сообщения: 3358
Зарегистрирован: 15 фев 2012, 01:57
Operating system: ROSA Desktop Fresh 2016.1 i586
Откуда: Vladivostok, Russia

Re: сборка php-5.5

Сообщение Pulfer » 10 авг 2014, 19:20

clicman писал(а):Хмм.. конечно php я собрал, но чтобы сборка заработала пришлось странные вещи делать.
Например:
BuildRequires: lib64enchant-devel
Как итог - сборка работает только под x64 :(

При этом, если взглянуть на спеку php из официального репозитория, там в BuildRequires архитектура не фигурирует.

Что я делаю не так?
Сейчас объясню подробно. В BuildRequires указываются зависимости сборки, которые вычисляются на основе данных Provides других пакетов. Имя пакета входит в Provides, но также туда входят и другие значения, часть из которых прописывается вручную, а часть генерируется автоматически (алгоритмы там разные и в такие детали сейчас углубляться не будем).

Вот вывод списка Provides для 32-битного пакета libenchant-devel из платформы 2012.1:

Код: Выделить всё

$ rpm -q libenchant-devel --provides
devel(libenchant)
enchant-devel = 1.6.0-5
pkgconfig(enchant) = 1.6.0
libenchant-devel = 1.6.0-5:2012.1
А вот аналогичный список для 64-битной версии пакета:

Код: Выделить всё

$ rpm -q lib64enchant --provides
devel(libenchant(64bit))
enchant-devel = 1.6.0-5
pkgconfig(enchant) = 1.6.0
lib64enchant-devel = 1.6.0-5:2012.1
1. Первым в списке идёт автоматически сгенерированная архитектурно-зависимая запись. Как правило, этот формат Provides/Requires используется только самим RPM для определения зависимостей собранных devel-пакетов, чтобы не прописывать весь список зависимостей вручную.

2. Вторым в списке идёт прописанная вручную архитектурно-независимая запись. В спеках это выглядит так:
Provides: %{name}-devel = %{EVRD}
или так:
Provides: %{name}-devel = %{version}-%{release}

%{EVRD} - это макрос, включающий кроме Version и Release ещё значения Epoch и Distepoch. Для некоторых пакетов в Provides указывают ещё lib%{name}-devel (хотя лучше так не делать, т.к. это только вносит путаницу, но такое встречается).

3. Далее идёт автоматически сгенерированная архитектурно-независимая запись. pkgconfig(enchant) генерируется на основе имени файла в пакете: /usr/lib/pkgconfig/enchant.pc (/usr/lib64/pkgconfig/enchant.pc для 64-битного пакета).

Именно этот формат наиболее предпочтительно использовать в BuildRequires. Если же такой Provides у пакета отсутствует (*.pc файлы есть не во всех пакетах), то использовать значение из п.2. В целом логика такая: архитектурно-независимые предпочтительнее архитектурно-зависимых, сгенерированные автоматически предпочтительнее прописанных вручную.

4. И последним идёт автоматически сгенерированная архитектурно-зависимая запись. Она формируется на основе имени пакета.

Если внимательно посмотреть на список, то видно, что у некоторых Provides отсутствует информация о версии и релизе, а у некоторых о релизе. Более того, значение версии pkgconfig(...) записей берётся из содержимого *.pc файла, так что в некоторых случаях может отличаться от тэга Version, указанного в спеке. Хотя обычно это баг, а не фича. Ну да ладно, теории и так уже достаточно, дальше ещё много можно о нюансах написать, но это уже перебор для форума будет. :)

В данном конкретном случае с lib64enchant-devel в Марафоне рекомендую заменить BuildRequires на pkgconfig(enchant).

P.S. Для того, чтобы посмотреть имя пакета по Provides, есть команда: urpmq --whatprovides (например, urpmq --whatprovides "pkgconfig(enchant)").
Intel Core i7-6700 / 8 Gb RAM / GeForce GTX 750 Ti / Rosa 2016.1 i586

Аватара пользователя
clicman
Сообщения: 18
Зарегистрирован: 27 янв 2014, 20:11
Operating system: Linux Mint 13 Maya (Based on Ubuntu 12.04 LTS)

Re: сборка php-5.5

Сообщение clicman » 11 авг 2014, 12:32

Вот теперь понимание пришло. Успешно сборка прошла под обе архитектуры. Спасибо!

Аватара пользователя
clicman
Сообщения: 18
Зарегистрирован: 27 янв 2014, 20:11
Operating system: Linux Mint 13 Maya (Based on Ubuntu 12.04 LTS)

Re: сборка php-5.5

Сообщение clicman » 11 авг 2014, 14:47

Собственно ссылки на репозиторий c php-5.15, php-pear, php-timezonedb и php-mongo

Код: Выделить всё

#32bit#
urpmi.addmedia php-backports http://abf-downloads.rosalinux.ru/vsidochenko_personal/repository/rosa2012lts/i586/php/release

#64bit#
urpmi.addmedia php-backports http://abf-downloads.rosalinux.ru/vsidochenko_personal/repository/rosa2012lts/x86_64/php/release

m.akram
Сообщения: 3
Зарегистрирован: 01 сен 2014, 15:33
Operating system: .rosalab

Re: сборка php-5.5

Сообщение m.akram » 01 сен 2014, 15:35

И последним идёт автоматически сгенерированная архитектурно-зависимая запись. Она формируется на основе имени пакета.

Ответить