LINUX.ORG.RU
ФорумTalks

[быдлокодинг]pacmake


0

0

Накодил очередную поделку на Питоне. Зовется pacmake'ом. Суть соответствует названию - делает пакеты. Аналог checkinstall, однако для сборки используются сами пакетные менеджеры. Короче говоря тут нет глюков по типу засовывания ненужных файлов в пакет как у checkinstall. Пока что держит PKGBUILD, ebuild, spec с разной степенью кривости, плюс умеет сохранять и загружать наработки в свои файлы с расширением .pacmake. Посему вопросы:
1) Оно кому-нибудь нужно? Не в текущей стадии исполнения, а вообще такая утилита
2) Кому-нибудь нужна генерация слаковских пакетов?
Пока что deb нет, ибо я ним так и не разобрался. Если кто-нибудь может оказать помощь - с радостью приму. Ещё жду предложений.
http://gitorious.org/pacmake/mainline/trees/master

★★★★

Мне нужна генерация слакопакетов))

DoctorSinus ★★★★★
()

Попробовал сгенерировать ебилд. Вообще сделать такую универсальную
программу, на мой взгляд, очень сложно, потому что всё равно все
случаи и особенности не учтёшь, и это не на Python надо делать имхо.

Например,

> LICENSE="GPL 2"


Ну вот нет такой лицензии в Portage. Надо было, наверное, указывать
именно GPL-2. А другие пакетные менеджеры при этом не обломятся?

Почему RDEPEND пустой записывает, а DEPEND — нет?

> KEYWORDS="amd64 x86"


Было бы правильнее, если бы вписывался кейворд, соответствующий
архитектуре текущего компьютера. И обязательно с тильдой.

> econf || die


После `econf` не надо `die`.

Sphinx ★★☆☆
()

Если сделаешь по уму, то и мне нужна поддержка слаки.

mdraven
()
Ответ на: комментарий от Sphinx

>Почему RDEPEND пустой записывает, а DEPEND — нет?
Я с зависимостями в Дженте совсем не разобрался. Как я понял, там их нужно записывать в формате "раздел/название", однако как узнавать раздел - так и не понял, так как пакеты могут быть с одними названиями, но в разных разделах. Так что пока DEPEND оставляет пустым. RDEPEND я пока нигде не реализовал.
>Вообще сделать такую универсальную программу, на мой взгляд, очень сложно

Я и не планировал объять мир :) Лишь самое основное.
>Ну вот нет такой лицензии в Portage.

Спасибо, посмотрю на лицензии. тут банально будет делаться замена для самых популярных лицензий.
> Было бы правильнее, если бы вписывался кейворд, соответствующий архитектуре текущего компьютера.

Ну предполагается, что полученные файлы будут собирать не обязательно там же. Например, разработчик сделал файлов таким способом, а собирают уже меинтейнеры. Хотя пожелание приму, конечно.
> После `econf` не надо `die`.

А если ошибка? Или die уже в econf?

h31 ★★★★
() автор топика

> 1) Оно кому-нибудь нужно? Не в текущей стадии исполнения, а вообще такая утилита

Мне такая утилита не нужна. Во-первых, она интерактивная, во-вторых,
шаблоны никак не помогают писать ебилды, потому что в итоге тратишь
больше времени на то, чтобы стереть вставленную шаблоном (почти
эквивалентную дефолтной) версию

> src_unpack() {

> unpack ${A}

> cd "${S}"

> }


и написать свою.

Для Gentoo роль checkinstall выполняет собственно Portage, потому что
реализации функций по умолчанию (кроме `src_install`) работают для
построенных на автоинструментах пакетов, а для остальных программ всё
равно придётся что-то писать вручную.

Sphinx ★★☆☆
()
Ответ на: комментарий от h31

> разработчик сделал файлов таким способом, а собирают уже меинтейнеры

Тогда просто оставляй KEYWORDS пустыми. Не принято вписывать туда
что-то, если нет информации о возможности чистой сборки под такой
архитектурой.

> Как я понял, там их нужно записывать в формате "раздел/название",

однако как узнавать раздел

Да, никак, спрашивать юзера видимо :)

Можно ещё попробовать извлекать информацию о зависимостях из шаблонов
автоконфа для тех пакетов, которые используют макросы pkgconfig, там
синтаксис почти такой же, только без раздела и знак отношения (типа
больше-равно) указывается между названием пакета и нужной версией.

> PKG_CHECK_MODULES(DBUS, dbus-1 >= 1.0, HAVE_DBUS=yes, HAVE_DBUS=no)


превращается в

> >=sys-apps/dbus-1.0


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

> Спасибо, посмотрю на лицензии.


В ебилде можно указывать только лицензии, которые есть в
`/usr/portage/licenses/`.

> die уже в econf?


Да.

Sphinx ★★☆☆
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.