UBOOT BUILD_TAG

UBOOT BUILD_TAG

代码基于uboot-2016.11

问题描述

在BOOT启动时,发现会有jenkins相关的打印,那么这个打印是从哪里来的呢

Bootrom Version 2.1.0 (based upon U-Boot 2009.03) May 19 2017 - 15:38:38
, Build: jenkins-ISCOM3000G_B_

问题定位

首先在/lib/display_options.c中找到了打印

int display_options (void)
{
#if defined(BUILD_TAG)
	printf ("\n\n%s, Build: %s\n\n", version_string, BUILD_TAG);
#else
	printf ("\n\n%s\n\n", version_string);
#endif
	return 0;
}

那么这个显示在初始化流程中被引用

static init_fnc_t init_sequence_f[] = {
	display_options,	/* say that we are here */

初始化最终在著名的board_init_f中

void board_init_f(ulong boot_flags)
{
	if (initcall_run_list(init_sequence_f))
		hang();

在uboot代码中查找BUILD_TAG

root@Ubuntu:~/uboot/u-boot-2016.11-rc2# grep "BUILD_TAG" * -R
lib/Makefile:CFLAGS_display_options.o := $(if $(BUILD_TAG),-DBUILD_TAG='"$(BUILD_TAG)"')

发现会依赖于环境变量中的BUILD_TAG,那我们查看一下本机的环境变量

root@Ubuntu:~/uboot/u-boot-2016.11-rc2# env
SHELL=/bin/bash
TERM=linux
OLDPWD=/home/chenhao/uboot
USER=root
SUDO_USER=chenhao
SUDO_UID=1002
USERNAME=root
MAIL=/var/mail/root
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/snap/bin
PWD=/home/chenhao/uboot/u-boot-2016.11-rc2
LANG=zh_CN.UTF-8
SHLVL=1
SUDO_COMMAND=/bin/bash
HOME=/home/chenhao
LANGUAGE=zh_CN:zh
LOGNAME=root
LESSOPEN=| /usr/bin/lesspipe %s
SUDO_GID=1002
LESSCLOSE=/usr/bin/lesspipe %s %s
_=/usr/bin/env
root@Ubuntu:~/uboot/u-boot-2016.11-rc2# 

发现没有该环境变量,那么我们手动添加一下

root@Ubuntu:~/uboot/u-boot-2016.11-rc2# export BUILD_TAG=chenhao

再次编译uboot并运行,发现确实带上了tag,那么必然是在jenkins编译的时候创建了该环境变量。

你可能感兴趣的:(uboot)