Summary: | Внести в korinf передачу списка зависимостей в alien | ||
---|---|---|---|
Product: | [Свободные проекты (Open source projects)] Korinf | Reporter: | Vitaly Lipatov <lav> |
Component: | Общее | Assignee: | Vitaly Lipatov <lav> |
Status: | CLOSED FIXED | QA Contact: | Konstantin Artyushkin <akv> |
Severity: | minor | ||
Priority: | P5 | CC: | lav |
Version: | не указана | ||
Target Milestone: | --- | ||
Hardware: | PC | ||
OS: | All | ||
Whiteboard: | |||
Заявки RT: | Связано с: | ||
Дата напоминания: | |||
Bug Depends on: | 3941 | ||
Bug Blocks: | 10857, 10892, 10896 |
Description
Vitaly Lipatov
2012-03-28 12:30:06 MSK
(В ответ на comment #0) > 1. Добавить создание списка зависимостей для пакета (думаю, при сборке пакета в > Сизиф), с сохранением в файл. > 2. При сборке deb-пакета > 2.1. Конвертировать зависимости для целевой системы (подобное уже реализовано в > rpmbph) Черновой вариант создания списка зависимостей и конвертора готов. Нужно обновить alien из Сизифа. Дайте права на builder/ По рекомендации TIME@ указал первоначальную оценку времени на решение задачи. Время весьма "с потолка". Текущее состояние задачи на уровне 40-45%. Опять же, по рекомендации TIME@ указал "среднепотолочное" значение в поле "Осталось". В git dkr черновые наброски кода для передачи списка зависимостей для alien. Код закомментирован пока, так как нуждается в ревизии состороны знающего korinf. В силу того, что в функцию run_alien вставлена проверка возможностей alien, без обновления alien до текущей версии работать не будет ! В Сизифе alien обновлен до нужного состояния. Прошу обновить версию на builder (builder64) или дать мне достаточно полномочий. Доделал и проверил, дополнив тестом, функциональность по трансляции зависимостей при сборке. Схема получилась следующая: 1. После сборки бинарных пакетов для ALTLinux/Sisyphus для каждого пакета с помощью функции trans_rpmdeps_to_pkgname (преобразующей rpm-зависимости вида libNAME.so.X в названия пакетов с помощью локального apt-get) создаём список зависимостей (в ALTLinux/Sisyphus/log/NAME.rpm.depends) 2. При сборке deb-пакета обращаемся за списком rpm.depends и с помощью convert_deplist создаём из него список зависимостей для конкретной платформы. 3. Передаём список зависимостей в alien, который создаёт непосредственно deb-пакет. Слабые места: 1. Использование apt-get 2. Зависимость от системы на сборочнице (нужно использовать всегда обновлённую до Сизифа). Генерация зависимостей сделана, конвертация тоже, пакеты собираются, проверка добавлена, всё проверено, закрываю. Ответ разработчика alien: The usual answer to this problem is that alien -s can be used to produce a directory tree that can be further modified as desired, and built with dpkg-buildpackage. Нужно выделить конвертацию deb отдельно, чтобы разрешить промежуточный каталог и задействовать dpkg-buildpackage. Итак, нужно переделать ту часть, которая вызывает alien: 1. Усложнить код, вызывая alien -s, разворачивая во временном каталоге структуру пакета, далее вносим изменения в список зависимостей и заворачиваем пакет обратно с помощью dpkg-buildpackage. 2. Убрать проверку на необходимую функциональность alien (его версию). Подробности можно пытаться найти в нынешнем alien, в который мы добавили параметр для передачи зависимостей. Сейчас мы хотим от этого параметра отказаться. Одновременно нужно перести конвертацию для dpkg в целевую систему, чтобы решить проблему с разными форматами сжатия. (Ответ Vitaly Lipatov на комментарий9)
> Итак, нужно переделать ту часть, которая вызывает alien:
> 1. Усложнить код, вызывая alien -s, разворачивая во временном каталоге
> структуру пакета, далее вносим изменения в список зависимостей и
> заворачиваем пакет обратно с помощью dpkg-buildpackage.
Сборка более успешно происходит с помощью
fakeroot debian/rules binary
При этом alien и сборку нужно вызывать в целевой системе с целью исключить расхождение версий.
(Ответ Vitaly Lipatov на комментарий10) > Одновременно нужно перести конвертацию для dpkg в целевую систему, чтобы > решить проблему с разными форматами сжатия. Конвертацию перенёс: commit ce380117a7348a17363fa06c4a6ee6753496386e Author: Vitaly Lipatov <lav@etersoft.ru> Date: Thu Nov 5 13:34:54 2015 +0300 switch to convert deb packages via target system alien (eterbug #8345) Сделал добавление зависимостей: commit bcaf5b96e129b33cf82d40d82b3549afddf1ee35 Author: Vitaly Lipatov <lav@etersoft.ru> Date: Thu Nov 5 15:22:01 2015 +0300 convert/deb: run script per every package Нужно проверить: Проверка результата: Установка wine-vanilla в минимальную свежеустановленную Ubuntu x86_64 должна давать работающий $ wine notepad Собрал. Но выяснил ужасную вещь - у нас нету образа Ubuntu 14.04 "Новая". Поскольку, подозреваю, что ставил их я - прошу меня извинить. Зато есть 15.04 - "новая" (Ответ Konstantin Artyushkin на комментарий14)
> Собрал. Но выяснил ужасную вещь - у нас нету образа Ubuntu 14.04 "Новая".
> Поскольку, подозреваю, что ставил их я - прошу меня извинить.
>
> Зато есть 15.04 - "новая"
Ну так всё равно на чём проверять.
(Ответ Vitaly Lipatov на комментарий15) > > Зато есть 15.04 - "новая" > Ну так всё равно на чём проверять. ждём решения https://bugs.etersoft.ru/show_bug.cgi?id=10896 Проверил все пакеты vanilla : $ cat /etc/*rele* DISTRIB_ID=Ubuntu DISTRIB_RELEASE=15.04 DISTRIB_CODENAME=vivid DISTRIB_DESCRIPTION="Ubuntu 15.04" $ uname -m x86_64 $epmqp wine libwine-vanilla-1.7.54-eter1ubuntu libwine-vanilla-gl-1.7.54-eter1ubuntu libwine-vanilla-twain-1.7.54-eter1ubuntu wine-gecko-2.40-eter1ubuntu wine-vanilla-1.7.54-eter1ubuntu Установились по стандартной схеме : dpkg - i * ; apt-get install -f ; dpkg -i * ============ wine notepad и winecfg запустились без проблем Закрываю |