Как включить git revision слоя изображения в вывод при загрузке или / etc / issue? - PullRequest
0 голосов
/ 10 октября 2018

Я создаю изображение Poky для SBC, и я хочу, чтобы пользователь мог найти идентификатор SHA1 файла рецепта, использованного для создания изображения.

Содержимое рецепта:следующее:

SUMMARY = "Toradex Embedded Linux Console Sporian Yocto version"
DESCRIPTION = "A Yocto Poky build derived from core-image-minimal"

LICENSE = "MIT"

#start of the resulting deployable tarball name
export IMAGE_BASENAME = "Sporian-Console-Image-Yocto"
IMAGE_NAME_apalis-imx6 = "Apalis-iMX6_${IMAGE_BASENAME}"

require /home/rdepew/workspace/oe-core3/poky/meta/recipes-core/images/core-image-minimal.bb

IMAGE_INSTALL += " \
    packagegroup-core-ssh-openssh \
    sqlite3 \
    avro-c \
"

Вот вывод консоли при загрузке SBC:

Poky (Yocto Project Reference Distro) 2.4.3 apalis-imx6 /dev/ttymxc0

apalis-imx6 login: root
root@apalis-imx6:~# uname -a
Linux apalis-imx6 4.1.44-2.7.4+gb1555bfbf388 #1 SMP Tue Oct 9 17:35:02 UTC 2018 armv7l GNU/Linux
root@apalis-imx6:~#

Вот содержимое / etc / issue.Обратите внимание, что это содержимое по умолчанию:

Poky (Yocto Project Reference Distro) 2.4.3 \n \l

Предположим, что идентификатор SHA1 хранилища, содержащего рецепт, равен ea4c5bb42e7542 ....Я хочу напечатать идентификатор SHA1 во время загрузки или в ответ на команду пользователя (аналогично «uname»).Как я могу это сделать?

Я думал, что $ {SRCPV} может быть решением моей проблемы, но я не могу подчинить его своей воле.

1 Ответ

0 голосов
/ 17 октября 2018

Linux и U-Boot git-хэши - это хиты Linux / U-Boot git.Вот как это обычно делается с OpenEmbedded.Конечно, есть способ передать хеш git из OE в систему сборки U-Boot / Kernel, но я бы не рекомендовал делать это, поскольку это не так, как это обычно делается.

Что касается /etc/issue file, это обычно генерируется в рецепте meta/recipes-core/base-files/base-files_3.0.14.bb.Было бы довольно просто добавить bbappend к вашему слою и расширить задачу, например что-то вроде этого:

def get_layer_rev(d):
    return bb.process.run('git rev-parse HEAD')

LAYER_REV="${@get_layer_rev(d)}"

do_install_basefilesissue_append() {
    # Overwrite /etc/issue with a custom version of it
    printf "${DISTRO_NAME} " > ${D}${sysconfdir}/issue
    printf "${LAYER_REV}" >> ${D}${sysconfdir}/issue
}
...