Плагин работы с .deb пакетами

Id	Описание	P1) приоритет: 1-maх,3-min	Комментарий
REQ1	Должен быть расширением стандартного проекта CDT	1
REQ2	Структура дерева файлов пакета должна определяться целью install в makefile	1
REQ3	Должен поддерживаться standard проект	1
REQ4	Должен поддерживаться managed проект	2
REQ5	Пользователь указывает местоположение файлов на целевой платформе вручную	1
REQ6	Файлы, входящие в пакет берутся из CDT- проекта или из его целей	1
REQ7	Должен быть предоставлен интерфейс описания пакетов (файл control)	3
REQ8	Должна быть возможность редактирования скриптов установки / удаления пакета	3
REQ9	Пользователь должен уметь изменять changelog	2
REQ10	Должна быть возможность генерации бинарного пакета для целевой платформы	1
REQ11	Проект должен экспортироваться в deb-пакет выбором меню File/Export выбор debian package	1

Определения

Standard makefile project – проект CDT в котором makefile пишется вручную, никогда не изменяется извне струдствами разработки.

Managed makefile project – проект CDT в котором makefile каждый раз генерируется заново при изменении проекта.

Реализация

Разработка пакета (плагина) org.slind.ei.debproducer

Для standard-проектов пользователь вручную заполняет местоположение файлов внутри цели install

Для managed-проектов пользватель может отредактировать переменные указывающие пути для установи файлов в целевой системе(bin,doc,lib,…)

Если в проекте нет каталога debian, (в котором в том числе лежит changelog), то он генерируется dh_make и все файлы добавляются в проект

Любой из шагов экспорта проекта в deb-пакет может завершиться ошибкой

Интерфейс пользователя

Редактирование переменных

Шаг: control

Шаг: changelog

Шаги: файлы из каталога debian

Сценарии

Экспорт проекта в deb-пакет

* Предусловие: В makefile проекта есть цель install, зависящая от DESTDIR * Предусловие: Для managed-проектов заданы пути2) есть ли уже такие переменные в eclipse:doc,bin,lib,… для

Пользователь выбирает меню File/export или Export в контекстном меню проекта. В появившемся дилоге выбирает пункт “General/Debian package”. Мастер имеет следующие экраны:

наименование	обязательный	назначение
control	да	выбор каталога для пакета, описание зависимостей, архитектуры, разработчик, описание пакета, версия
changelog	да	описание изменени (текстовый редактор текущего изменения)
?	нет	интерфейсы для редактирования файлов в каталоге debian

Кнопка Finish генерирует deb-пакет.

Подробности

Обзор deb-helper

Интерфейс пользователя

: проверить наличие всех нужных полей в интерфейсе пользователя

: удалить все снизу, перенеся подробности реализации в раздел Реализация

: проверить наличие всех нужных полей в интерфейсе пользователя : проверить наличие всех нужных полей в интерфейсе пользователя : проверить наличие всех нужных полей в интерфейсе пользователя

Список полей, заполняемых в мастере

Имя пакета.

Версия пакета.

Зависимости пакета(пока просто имена, вводимые вручную).

changelog.

Скрипты пред-/пост-инсталляции(создаются, если не существуют).

Папка, в которой выполняется сборка пакета(по умолчанию build).

дополнить список

Поля, неявно заполняемые в мастером

Целевая архитектура.

Подход к решению задачи

Создание debian-каталога к проекту

Проверяем наличие makefile'а в проекта, если есть работаем дальше, если нет то добавляем в Makefile Generator генерацию цели install.

Зовём debhelp утилиты в правильном порядке - они всё делают.

Генерация пакета

При вызове генерации пакета выполняется цель install makefile'а c заменой переменной DESTDIR на путь к какой-то временной папке.

Просто запускаем dpkg.

Текущие вопросы

Какие поля должны заполняться для debian-каталога обязательно(читай спрашиваться в мастере)?

Какие утилиты debhelp'а нам нужны, какие данные потребуются для их вызова?

Как подключиться к Makefile Generator?

Как “правильно” скормить полученные знания и файлики dpkg?

Общие вопросы

Почему для SLIND выбран именно debian?

Возможные направления дальнейшего развития(2 итерация)

Редактор control-файла, выполненый аналогично редактору plugin.xml в PDE.

Автоматическое заполнение зависимостей пакета.

Автоматическое создание цели install в makefile если, её нет.

Создание мастера обновления версии(Дополнние changelog, увеличение номера версии, редактирование зависимостей и их перепроверка).

Ссылки

плагин для редактирования скриптов