LINUX.ORG.RU

Изучаю написание ebuild'ов

 ,


1

5

Буду задавать здесь вопросы по написанию ebuild'ов.
Пока немного непонятен момент с EAPI.
По какому критерию я должен его выбирать?

★★★★★

Последнее исправление: cetjs2 (всего исправлений: 2)

Подписался на тред.

Чем новее EAPI выбираешь - тем лучше. EAPI - это стиль написания и поддержки. Старые EAPI поддерживаются для обратной совместимости. Исключительные случаи в расчет не берем.

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

Тогда я выбираю 4, ок.
Эксперименты решил ставить на бинарном eclipse-sdk. Как правильно выбрать имя для ebuild'а?
Обычно это название_программы-версия_с_префиксами, но у eclipse версия выглядит вот так: M20120726-1200.
Я долен назвать ebuild «eclipse-SDK-M20120726-1200»? По моему это странно. Или может просто назвать eclipse-sdk-3.6(4.2) и никак не зависит от имени файла?
Ссылка на скачивания архива выглядит так:

http://www.eclipse.org/downloads/download.php?file=/eclipse/downloads/drops4/M20120726-1200/eclipse-SDK-M20120726-1200-linux-gtk-x86_64.tar.gz&url=http://download.eclipse.org/eclipse/downloads/drops4/M20120726-1200/eclipse-SDK-M20120726-1200-linux-gtk-x86_64.tar.gz&mirror_id=1

deterok ★★★★★
() автор топика
Последнее исправление: deterok (всего исправлений: 1)
Ответ на: комментарий от deterok

если это снапшот-билд, то примерно так - eclipse-sdk-bin-0_p20120726

Дальше используешь versionator eclass и приводишь версию к виду, используемому в SRC_URI.

Pinkbyte ★★★★★
()

По какому критерию я должен его выбирать?

определяется EAPI eclass'ов, которые ты импортируешь. В идеале максимальный поддерживаемый стабильным портажем.

qnikst ★★★★★
()
Ответ на: комментарий от deterok

ещё можно pms для порядку почитать, если уж совсем не лень :) т.к. например из девмануала ни разу не очевидно, что можно использовать несколько постфиксов в версии.

qnikst ★★★★★
()

Бери макисмальную версию (4). И обязательно не забудь добавить поддержку Gentoo Prefix (${EPREFIX} и т.д.)

annulen ★★★★★
()

EAPI — последний стабильный.

Очень рекомендую пытаться отправлять свои ебилды в Санрайз. Дадут много советов по улучшению и со всех сторон протестируют и заставят вылизать.

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

если есть знакомые генту-разработчики из прокси-мэйнтэйнеров - можно отправить и им. По крайней мере живительный пиз^W посыл в направлении нужных манов дадут :-)

Pinkbyte ★★★★★
()
Ответ на: комментарий от anonymous

Что конкретно не устраивает? Какие номера багов открыты вами по этому поводу? Я вот стараюсь все, не устраивающее меня слать на багзиллу. Ну или хотя бы говорить с разработчиками об этом...

Pinkbyte ★★★★★
()
Ответ на: комментарий от anonymous

Я уже говорил - разрабов в генте нынче дефицит. В некоторых проектах их вообще - 1-2 штуки(например в desktop-effects, отсюда и плачевное состояние компиза в генте).

Но подумай сам - если разрабы не будут знать о баге - как они смогут его исправить?

И да, для чего-то критичного есть IRC, где можно связаться с нужными разработчиками и обосновать свою позицию на тему того что такой-то баг «must be fixed ASAP», если ты понимаешься, о чем я :-)

Pinkbyte ★★★★★
()
Ответ на: комментарий от anonymous

и кстати, спасибо за ссылку, подписался на баг, буду следить за прогрессом...

Pinkbyte ★★★★★
()

разные EAPI ведут себя по-разному
если не вкурил разницу, то не факт, что последний вообще рабочим будет
правда таких раскладов 1 на миллион, но всё же етсь вероятность
потому «последний стабильный» можешь слать нахер сходу - зависит от ситуации

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

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

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

вот как раз простой бамп версии в 99.9% случаев ничего не меняет
абсолютно
но не всегда, потому и говорю - слепо следовать «еапи Х» просто глупо, а тут таких камментов дохера

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

я вижу, как не приняли - это косяки дерева санрайза, а не некой песочницы

Поясни.

question4 ★★★★★
()
Ответ на: комментарий от Pinkbyte

Решил остановиться на стабильном версии под С. Пишу оглядываясь на http://gpo.zugaina.org/dev-util/eclipse-sdk-bin (самый первый ebuild)
Там есть:

src_install() {
	local dest=/opt/${PN}-${SLOT}

	insinto ${dest}
	doins -r features icon.xpm plugins artifacts.xml p2 eclipse.ini configuration dropins

	exeinto ${dest}
	doexe eclipse

	dohtml -r about.html about_files epl-v10.html notice.html readme/*

	insinto /etc
	doins "${FILESDIR}"/eclipserc-bin-${SLOT}

	dobin "${FILESDIR}"/eclipse-bin-${SLOT}
	make_desktop_entry "eclipse-bin-${SLOT}" "Eclipse ${PV} (bin)" "${dest}/icon.xpm"
}
Непонятен смысл вот этого куска:
insinto /etc
doins "${FILESDIR}"/eclipserc-bin-${SLOT}

dobin "${FILESDIR}"/eclipse-bin-${SLOT}

deterok ★★★★★
() автор топика
Ответ на: комментарий от deterok

устанавливает в etc конфиг и бинарник(?, я щитаю это не очень хорошо, особенно если там действительно бинарь, а не шелл-скрипт, допустим) с именем, содержащим слот данного пакета. Нужно для установки несколькоих eclipse-sdk-bin одновременно(из разных слотов)

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

Еще 2 вопроса:
Почему «${FILESDIR}» в кавычках?
Причем здесь ${FILESDIR}? Он же ведет до директории с ebuild'ом.

deterok ★★★★★
() автор топика
Ответ на: комментарий от deterok

FILESDIR в кавычках потому-что если в нем, не дай Бог будут пробелы(юзер переопределит расположение портажа на директорию с пробелами) - будет ой.

FILESDIR указывает на поддиректорию files в директории с ебилдом. Оттуда часто берутся gentoo-специфичные конфиги/инитскрипты, т.к. авторы далеко не всегда обеспечивают ими свои программы

Pinkbyte ★★★★★
()
Ответ на: комментарий от deterok

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

qnikst ★★★★★
()
Ответ на: комментарий от Pinkbyte

В общем скрипт там такой:

#! /bin/sh
SLOT="4.2"

[ -f "/etc/eclipserc-bin-${SLOT}" ] && . "/etc/eclipserc-bin-${SLOT}"
[ -f "$HOME/gentoo/.eclipserc" ] && . "$HOME/gentoo/.eclipserc"

ECLIPSE_HOME=${ECLIPSE_HOME:="/opt/eclipse-sdk-bin-4.2"}
ECLIPSE_BIN="${ECLIPSE_HOME}/eclipse"

if [ ! -x "${ECLIPSE_BIN}" ] ; then
	echo "Failed to find executable '${ECLIPSE_BIN}'" > /dev/stderr
	exit 1
fi

if [ $(id -u) -eq 0 ] ; then
	echo "Do not run eclipse as root user! Exiting ..." > /dev/stderr
	exit 1
fi

case "$(java-config -f)" in
	*gcj*)
		export JAVA_PKG_CLASSMAP="${ECLIPSE_HOME}/eclipse.gcjdb"
		;;
esac

#eval $(gjl --package "swt-${SLOT}" --get-args)

[ -n "${ECLIPSE_XMS}" ] && VM_ARGS="${VM_ARGS} -Xms${ECLIPSE_XMS}"
[ -n "${ECLIPSE_XMX}" ] && VM_ARGS="${VM_ARGS} -Xmx${ECLIPSE_XMX}"
[ -n "${ECLIPSE_PERMSIZE}" ] && VM_ARGS="${VM_ARGS} -XX:PermSize=${ECLIPSE_PERMSIZE}"
[ -n "${ECLIPSE_MAX_PERMSIZE}" ] && VM_ARGS="${VM_ARGS} -XX:MaxPermSize=${ECLIPSE_MAX_PERMSIZE}"

# Fix for JRE 1.5.
export LD_LIBRARY_PATH=${LD_LIBRARY_PATH}:/usr/lib

exec "${ECLIPSE_BIN}" -vm $(java-config --java) "$@" "${ECLIPSE_USER_ARGS}" -vmargs ${VM_ARGS} 

На мой взгляд многое ненужно(например «Fix for JRE 1.5», так как в зависимостях >=jre-1.6), проще symlink сделать (Где? в /usr/bin?) и все.

deterok ★★★★★
() автор топика
Ответ на: комментарий от deterok

чтоб реже задавать вопросы о синтаксисе - прогоняй repoman на свои ебилды и читай что за ошибки/недостатки он выявляет. repoman - отличный первичный детектор ошибок новичков.

Pinkbyte ★★★★★
()
Ответ на: комментарий от deterok

проще symlink сделать

на что? на скрипт в /usr/portage? Окстись, так не делают. Если считаешь что в скрипте что-то лишнее - правь. Но только аргументированно. Насчет jre 1.5 - согласен, если зависимость жесткая от jre 1.6 и выше - нафиг эту часть. Только убедись, что ничего не сломал этим

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

Мне на секунду показалось, что скрипт ненужен и можно просто symlink на бинарник сделать.(Немного непонятно, portage сам symlink или как?)

deterok ★★★★★
() автор топика
Ответ на: комментарий от deterok

симлинк можно сделать с помощью dosym. Но поверь, скрипт написали не просто так...

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

В общем получилось:)
Оказалось все намного проще(проще чем rpm собрать). Portage все за меня сделал. Замечательный пакетный менеджер.
Вот ebuild:

eclipse-cpp-4.2.ebuild 


# Copyright 1999-2012 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
# $Header: $

EAPI=4

inherit eutils

DESCRIPTION="Eclipse C++ IDE"

HOMEPAGE="http://www.eclipse.org/"

SRC_BASE="http://mirror.tspu.ru/eclipse/technology/epp/downloads/release/juno/R"

SRC_URI="
        x86? ( ${SRC_BASE}/${PN}-juno-linux-gtk.tar.gz )
        amd64? ( ${SRC_BASE}/${PN}-juno-linux-gtk-x86_64.tar.gz )"

LICENSE="EPL-1.0"

SLOT="4.2"

KEYWORDS="-* ~x86 ~amd64"

IUSE=""

RDEPEND="
        >=virtual/jdk-1.6
        x11-libs/gtk+:2"

S="${WORKDIR}"/eclipse

src_install() {
        local dest=/opt/${PN}-${SLOT}

        insinto ${dest}
        doins -r features icon.xpm plugins artifacts.xml p2 eclipse.ini configuration dropins

        exeinto ${dest}
        doexe eclipse

        dohtml -r about.html about_files epl-v10.html notice.html readme/*

        insinto /etc
        doconfd "${FILESDIR}"/eclipserc-bin-${SLOT}

        dobin "${FILESDIR}"/eclipse-bin-${SLOT}
        make_desktop_entry "eclipse-bin-${SLOT}" "Eclipse ${PV} (bin)" "${dest}/icon.xpm"
}

Насколько корректно размещать скрипт запуска в /usr/bin?

deterok ★★★★★
() автор топика
Ответ на: комментарий от deterok

Абсолютно корректно. Только проверь, чтобы он был выполняемым :-) Прогони

ebuild path/to/ebuild clean compile install
если не хочешь ставить приложение себе и посмотри в /var/tmp/portage/category/package/image - правильно ли права везде розданы. Ну или поставь через emerge и убедись в том же.

Теперь по ебилду(маленький нюансы):

KEYWORDS="-* ~amd64 ~x86" - незначительная мелочь, но если будешь куда в оверлей класть, могут придраться по QA. Да и вообще проще читать в алфавитном порядке кейворды.

Проверь desktop-файл через desktop-file-validate(из пакета dev-util/desktop-file-utils). А то часто кладут desktop-файлы устаревшие, а иногда вообще нерабочие. Если это будет так - пофиксь

Pinkbyte ★★★★★
()
Последнее исправление: Pinkbyte (всего исправлений: 1)
Ответ на: комментарий от deterok

по алфавиту это

KEYWORDS=«~amd64 ~x86»

а чо правда, что на остальных архитектурах принципиально незаработает?

qnikst ★★★★★
()
Ответ на: комментарий от Pinkbyte

Хотел бы теперь добавить use-флаг, при выставлении которого скачивался вот этот архив(с дальнейшей распаковкой и установкой думаю разберусь): https://github.com/downloads/eclipse-color-theme/eclipse-ui-themes/com.github...

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