LINUX.ORG.RU

Void Linux: проблема с xbps-src chroot

 , , , xbps-src


0

1

Есть такой вопрос https://github.com/void-linux/void-packages/issues/54230
Там рекомендуют использовать xbps-src chroot с дальнейшим ручным вводом.
Если использовать xbps-src chroot foo, то команда foo игнорируется.

Если делать:

./xbps-src chroot << EOF
cd /builddir/linux6.14-sky-6.14.0
make menuconfig
EOF
, тогда ввод не доступен.

Как можно решить проблему и автоматизировать?

★★★★★

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

Смотрю https://github.com/void-linux/void-packages/blob/master/common/chroot-style/u...
там CMD присутствует, но непонятно как его задать
+
https://github.com/void-linux/void-packages/blob/4b637df09a89c9895db0ad3d3541...

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

Up! И хде подписчики?
Решил я уже проблему, патч будет тут.
Если кому не лень, объясните как реализовать там {pre|post}_{$actions|target?} а то я не совсем понял, хоть всё сам переписывай...

superuser ★★★★★
() автор топика
Последнее исправление: superuser (всего исправлений: 1)
21 мая 2025 г.

Как можно решить проблему и автоматизировать?

файлами настроек ядра для нужной тебе конфигурации. в сборке пакета ядра есть настройки для разных архитектур. создай один раз файл руками, в чруте, положи его в srcprks/linuxX.XX/files/, а потом при сборке он будет подтягиваться. настройки архитектуры, переменных окружения и прочего тоже указываются в файле пакета.

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

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

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

файлами настроек ядра для нужной тебе конфигурации. в сборке пакета ядра есть настройки для разных архитектур. создай один раз файл руками, в чруте, положи его в srcprks/linuxX.XX/files/

это я знаю

у автора по ссылке, очевидно, что-то с терминалом и он не понимает курл.

не понимаю, при чем тут curl? У автора, как и у меня проблема такая - если вызвать make menuconfig в конце do_configure() или в post_configure(), тех что в template, то работает, но не совсем, не работает навигация по меню.

и да, понятно, для чрута нужен соответствующий тулчейн. без него у тебя ничего работать не будет. сначала собираешь тулчейн

Вот узнать бы чего не хватает. Может проблема решается просто добавлением чего-то в hostmakedepends...

Пока использую временное решение:

--- a/common/xbps-src/shutils/chroot.sh
+++ b/common/xbps-src/shutils/chroot.sh
@@ -159,8 +159,9 @@
     esac
 
     if [ "$action" = "chroot" ]; then
+	[ -f "${XBPS_MASTERDIR}/chroot_cmd.sh" ] && local chroot_cmd=//chroot_cmd.sh
         $XBPS_COMMONDIR/chroot-style/${XBPS_CHROOT_CMD:=uunshare}.sh \
-            $XBPS_MASTERDIR $XBPS_DISTDIR "$XBPS_HOSTDIR" "$XBPS_CHROOT_CMD_ARGS" /bin/xbps-shell
+            $XBPS_MASTERDIR $XBPS_DISTDIR "$XBPS_HOSTDIR" "$XBPS_CHROOT_CMD_ARGS" /bin/xbps-shell $chroot_cmd
         rv=$?
     else
         env -i -- PATH="/usr/bin:$PATH" SHELL=/bin/sh \

в template добавляю:
_MCONF=1
...
[ -z "${_MCONF}" ] || hostmakedepends+=" ncurses-devel"
...
do_configure() {
	...
	[ -z "${_MCONF}" ] || cp -f ${FILESDIR}/chroot_cmd.sh //
}

и
$ cat ${FILESDIR}/chroot_cmd.sh
#!/bin/bash
cd /builddir/linux*-sky-*/ && make menuconfig
ну а дальше у меня обертки над xbps-src:
$ xbu -U -p configure linuxX.XX && \
  xbu -Ur # тут xbps-src chroot
<тут «смайлик без зуба»>

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

Да просто добавь hostmakedepends+=" ncurses-devel" и в конец do_configure() TERM=xterm make menuconfig и у видишь баг, когда сделаешь xbps-source [configure] linuxX.XX. Навигация не работает там

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

devel - это для компиляции, его пишут в makedepends обычно. тебе на хосте нужен ncurses и пакет, емнип, называется ncurses, и у него в зависимостях ещё ncurses-libs.

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

а вот нет. вообще, в Void с зависимостями надо всегда конкретно смотреть. их там много где нет и лучше проверять хотя бы через xbps-query -x.

хотя они периодически допиливают такие мелочи, у меня не последняя версия сорцов.

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