[Решено] Создание символьных ссылок в ebuild

Приветствую всех.

Пишу ebuild для 32 битной библиотеки libtermcap. Нужно в ebuild`е описать создание символьной ссылки.

Делаю вот так:

dosym libtermcap.so.${PV} /$(get_libdir)/libtermcap.so.2 || die 

Но get_libdir возвращает директорию lib64, и вся установка идет в эту папку. Если жестко прописать директрию /lib32, то в "песочнице" эта ссылка появляется, но при установке пакета символьной ссылки нет.

Как правильно указывать директорию установки для 32 битных библиотек?
Как правильно "описывать" создание символьных ссылок?

emerge eclass-manpages && man

emerge eclass-manpages && man multilib.eclass

Ну или в исходниках посмотреть можно (/usr/portage/eclass/)

Текстовый редактор vi имеет два режима работы: в первом он пищит, а во втором — всё портит.

покажите весь ебилд, dosum

покажите весь ебилд, dosym зависит от eapi.
Как правильно указывать директорию установки для 32 битных библиотек? - multilib.eclass

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

slepnoga написал(а):покажите

slepnoga написал(а):
покажите весь ебилд, dosum зависит от eapi.
Как правильно указывать директорию установки для 32 битных библиотек? - multilib.eclass

Только что весь man по multilib.eclass прочитал. Ткните носом какая переменная указывает директорию для 32 битных библиотек на 64 системе?

Вот ebuild:

EAPI=2

inherit rpm versionator multilib

DESCRIPTION="The termcap 32bit library"
HOMEPAGE="http://www.catb.org/~esr/terminfo/"

MY_PN="libtermcap"
MY_PV=$(replace_version_separator 3 '-')
MY_P="${MY_PN}-${MY_PV}"
SRC_URI="ftp://ftp.sunet.se/pub/os/Linux/distributions/redhat/redhat-archive/redhat/linux/updates/5.1/en/os/i386/${MY_P}.i386.rpm"

LICENSE="GPL-2"

SLOT="0"

KEYWORDS="~amd64"

IUSE=""

DEPEND="app-arch/rpm"
RDEPEND="${DEPEND}"

src_install() {
        dodir lib32
        cp ${WORKDIR}/lib/*.so.* ${D}/lib32
        dosym libtermcap.so.${PV} /lib32/libtermcap.so.2
        }

то что ты хочеш сделать

то что ты хочеш сделать делается абсолютно другим способом:
http://www.gentoo.org/proj/en/base/amd64/howtos/chroot.xml в результате получаем http://www.gentoo.org/proj/en/base/amd64/emul/emul-linux-x86-20110722.xml

П.С попинай Pacho Ramos

( emul-linux packages )

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

В том то вся и проблема, что

В том то вся и проблема, что в emul-linux нету 32 битной libtermcap. По поводу chroot, зачем он мне?
Работаю я с софтом на 64 битной системе, нужна только одна библиотека. Настраивать chroot в моем случае не вариант.

А по поводу EAPI есть мысли?

pol01 написал(а):В том то

pol01 написал(а):
В том то вся и проблема, что в emul-linux нету 32 битной libtermcap. По поводу chroot, зачем он мне?
Работаю я с софтом на 64 битной системе, нужна только одна библиотека. Настраивать chroot в моем случае не вариант.

А по поводу EAPI есть мысли?

Ты не внимательно прочитал предложенный матерьял, там было описание, как __правильно__ собрать и использоватз 23-бит библиотеки на амд64;
добавлю - http://forums.gentoo.org/viewtopic-t-889886.html?sid=d2703e26f098f3b30acab16003bae7a3

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

Есть 64 битная программа. Для

Есть 64 битная программа. Для её работы нужна одна единственная 32-х битная библиотека. В этом случае chroot не есть решение.

Второй вопрос в силе. Как описывать создание символьных сылок в ebuild`ах?

Добавлю по выше приведенной ссылке.
Вот это:

cp /mnt/emul-chroot/usr/lib/mesa/* /usr/lib32/mesa/
cp /mnt/emul-chroot/usr/lib/libgl* /usr/lib32/
cp /mnt/emul-chroot/usr/lib/libdrm* /usr/lib32/ 

сильно позабавило)))

pol01 написал(а): Есть 64

pol01 написал(а):
Есть 64 битная программа. Для её работы нужна одна единственная 32-х битная библиотека.

В этом случае как я понимаю ничего не поможет, так как нельзя подгрузить в программу на x86-64 код от чистого x86

Не правильно

Не правильно понимаешь.

Установил в /home содержимое rpm файла, ручками сделал ссылку в /lib32 и всё заработало. Вот пишу ebuild, чтобы всё было правильно.

pol01 написал(а): то в

pol01 написал(а):
то в "песочнице" эта ссылка появляется, но при установке пакета символьной ссылки нет.

Очень интересно. Но кроме src_install есть ещё и pkg_postinst там работа ведётся на live-filesystem согласно man 5 ebuild

prof-alex написал(а): pol01

prof-alex написал(а):
pol01 написал(а):
то в "песочнице" эта ссылка появляется, но при установке пакета символьной ссылки нет.

Очень интересно. Но кроме src_install есть ещё и pkg_postinst там работа ведётся на live-filesystem согласно man 5 ebuild

Делал и с postinst. Вот так:

src_postinst() {
        dosym /lib32/${MY_PN}.so.$(get_version_component_range 1-3) /lib32/${MY_PN}.so.$(get_version_component_range 1)
        }

Ругается вот так:

strip: x86_64-pc-linux-gnu-strip --strip-unneeded -R .comment
   lib32/libtermcap.so.2.0.8
 * QA Notice: Missing soname symlink(s):
 * 
 *      lib32/libtermcap.so.2 -> libtermcap.so.2.0.8
 * 
>>> Done.

Ссылки все равно нет(.

cd ${S}/$ABI/ dosym

cd ${S}/$ABI/
dosym foo.1.2.3.so bla.so

Compute:
Bosch M2.8.1 -> custom Bosch M2.8.3 clone from Russia.
Speed about 260 km,Ram 2 pers.,HDD - 70 kg,210 FLOPS ;)

Тое есть, $ABI самому нужно

То есть, $ABI самому нужно указать. Спасибо

Настройки просмотра комментариев

Выберите нужный метод показа комментариев и нажмите "Сохранить установки".