LINUX.ORG.RU

Yocto: do_rootfs не находит пакет который я собираю

 ,


0

1

Пытаюсь добавить новый пакет intel-cmt-cat (доступен на https://github.com/intel/intel-cmt-cat) посредством Yocto. Там «старый добрый» Makefile, не cmake. Посмотрел примеры и написал вот такой рецепт:

% cat intel-cmt-cat_4.1.0.bb
SUMMARY = "Short summary"
DESCRIPTION = "Short description."
LICENSE = "BSD"
LIC_FILES_CHKSUM = "file://LICENSE;md5=c63eb1250e8724441150d665efe12012"

SRC_URI = "git://github.com/intel/intel-cmt-cat.git;protocol=https"
SRCREV = "30fadea5cb82ff99f56e46172c7d20fdb24b2338"
S = "${WORKDIR}/git"

По идее должно сразу работать, однако ни фига:

NOTE: Executing SetScene Tasks
NOTE: Executing RunQueue Tasks
ERROR: myimage-1.0-r0 do_rootfs: Could not invoke dnf.

dnf -v --rpmverbosity=info -y -c dnf.conf package1 package2 ... intel-cmt-cat
...
repo: using cache for: oe-repo
not found other for:
not found modules for:
not found deltainfo for:
not found updateinfo for:
oe-repo: using metadata from Thu 04 Mar 2021 07:12:38 PM UTC.
No module defaults found
No match for argument: intel-cmt-cat
Error: Unable to find a match

...
ERROR: Function failed: do_rootfs

(Я сократил длинную dnf команду).

Похоже на то, что обламвается do_rootfs(). Проверил директорию в которой все собирается ($WORKDIR/git), видно что исходники быди стянуты с github'a и собраны. Однако на последнем этапе схлопывается: по какой-то причине не может найти мой пакет.

Что я делаю не так? Что еще нужно добавить в рецепт?

ОБНОВЛЕНИЕ

Немного доработал рецепт, сейчас все собирается и устанавливается в финальный имидж. Осталась только проблема с man-страницами. По умолчанию (make install) они также устанавливаются в $PREFIX/man/man8 (так определено в Makefile в исходниках). Можно ли как-то запретить устанавливать man файлы на этапе do_install или do_package?

% cat intel-cmt-cat_4.1.0.bb
SUMMARY = "Short summary"
DESCRIPTION = "Short description."
LICENSE = "BSD"
LIC_FILES_CHKSUM = "file://LICENSE;md5=c63eb1250e8724441150d665efe12012"

SRC_URI = "git://github.com/intel/intel-cmt-cat.git;protocol=https"
SRCREV = "30fadea5cb82ff99f56e46172c7d20fdb24b2338"

S = "${WORKDIR}/git"
TARGET_CC_ARCH += "${LDFLAGS}"

do_compile() {
   oe_runmake PREFIX=/usr
}

do_install() {
   oe_runmake PREFIX=${D}/usr NOLDCONFIG=y install
}

INSANE_SKIP_${PN} += "already-stripped installed-vs-shipped"
FILES_${PN} += "${libdir}/libpqos* ${bindir}/pqos* ${bindir}/rdtset"}
FILES_${PN}-doc = "/usr/man/man8"
★★

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

Рецепт образа фстудию.

% cat intel-cmt-cat_4.1.0.bb

Это весь рецепт? Ты ж ни одного файла не установил.

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

Ну если там какойнить цмаке, то все само собой получится. При условии что в дистро добавилась пачка из рецепта.

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

Это весь рецепт? Ты ж ни одного файла не установил.

Обновил свой вопрос, добавил новый рецепт.

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

INSANE_SKIP_${PN} += «already-stripped installed-vs-shipped»

Ты поналепил заплаток, вместо того, чтобы исправить реальные проблемы с рецептом или сборкой.

Осталась только проблема с man-страницами. По умолчанию (make install) они также устанавливаются в $PREFIX/man/man8 (так определено в Makefile в исходниках). Можно ли как-то запретить устанавливать man файлы на этапе do_install или do_package?

А что за проблема? Ты же их вроде в doc засунул. doc по умолчанию не ставится в образ.

do_compile и do_install выглядят так, что их можно и выкинуть. Единственное, чего тебе не доставало в изначальном варианте, так это запихнуть бинарники в FILES.

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

INSANE_SKIP_${PN} += «already-stripped installed-vs-shipped»

Ты поналепил заплаток, вместо того, чтобы исправить реальные проблемы с рецептом или сборкой.

Makefile вызывает «install -s …», yocto ругается что бинарник уже стрипнут и возвращет ошибку. Можно конечно патчить Makefile, но получается что проще скипнуть данную проверку через INSANAE_SKIP директиву.

do_compile и do_install выглядят так, что их можно и выкинуть.

Не можно, потому что мне нужно передать переменные PREFIX и NOLDCONFIG в Makefile, поэтому нужно переопределить оба этих метода.

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