LINUX.ORG.RU

Сторонний Makefile не поддерживает DESTDIR

 ,


0

1

Что в таких случаях принято делать? Можно ли самому автотулизировать исходники? И к тому же есть подозрение о хардкоде путей в самих исходниках.

Скачал с Гитхаба исходники Visharp Oberon Compiler, он же voc. Решил как умная Маша опакетить, то бишь написать ебилд. В инструкции сказано сделать make full, создать директорию /opt/voc, в нее ставить с помощью make install. Но я как умная Маша подшаманил с src_install, раскидал все как по FHS завещано, в итоге запускаешь компилер, а он ищет хидеры строго в /opt/voc и не колышет. Собственно ебилд прилагаю, что делать дальше - без понятия. Не критично, но очень хотелось бы знать мнение опытных разработчиков Gentoo по этому поводу.

# Copyright 2021 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2

EAPI=7
DESCRIPTION="Visharp compiler for Oberon-2 programming language"
HOMEPAGE="http://oberon.visharp.am"
SRC_URI="https://github.com/vishaps/voc/archive/refs/tags/${PV}.tar.gz"

LICENSE="GPL-3"
SLOT="0"
KEYWORDS="~amd64 ~x86"
IUSE="debug static-libs"
DEPEND=""
RDEPEND="${DEPEND}"
BDEPEND=""
DESTDIR="${WORKDIR}/${P}/install"
RESTRICT="strip"
src_compile()
{
	emake -j1 full
}

src_install()
{
	if ! use debug; then
		strip ${DESTDIR}/bin/*
		strip ${DESTDIR}/lib/voc/*
	fi
	dobin ${DESTDIR}/bin/*
	insinto /usr/include/voc
	doins -r ${DESTDIR}/2/include/*
	doins -r ${DESTDIR}/2/sym/*
	insinto /usr/include/voc/c
	doins ${DESTDIR}/C/include/*
	exeinto /usr/lib/voc
	doexe ${DESTDIR}/lib/*.so
	if use static-libs; then
		insinto /usr/lib/voc
		doins ${DESTDIR}/lib/*.a
	fi
}

Но я как умная Маша подшаманил с src_install, раскидал все как по FHS завещано

Ставь в opt или патчи пути перед сборкой, где он будет искать заголовочники.

grem ★★★★★
()

В opt кто именно лезет? Ты собрал voc, установил, запускаешь его — и он лезет в opt? Или ты обламываешься ещё на этапе сборки этого voc?

Если первое, надо смотреть, как voc конфигурируется и не захардкожены ли пути у него в исходниках.

Во втором случае я бы сперва разобрался, кто именно лезет. Если это gcc, просто меняешь в Makefile настройки -I/opt/voc на -I/usr/local/include (или куда ты их сложил). Это обычно в переменную CFLAGS кладут, но надо смотреть.

Так как компиляторы часто пишут так, что они бутстрапятся, там может быть несколько промежуточных шагов, когда условный С компилируется в минимальный Оберон, который в свою очередь собирает целевой компилятор. Именно поэтому важно идентифицировать, кто и на каком этапе лезет в opt. Там будет понятнее, что именно фиксить.

ЗЫ не разработчик генты.

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

Ты собрал voc, установил, запускаешь его — и он лезет в opt?

This. В /opt/voc лезет gcc, который транслирует промежуточные исходники. gcc -I /opt/voc и так далее. Скорее всего, хардкод, сомнений нет. Значит, буду потихоньку искать проблемные места и патчить. Спасибо.

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