编译meta-ros嵌入式包时,出现aws-*系列包无法fetch的状况举例,如编译aws-c-common,ERROR如下:
aws-c-common-0.4.15-r0 do_fetch: Fetcher failure: Unable to find revision e3e7ccd35a85f9cd38c67cb1988251f1543b6632 in branch master even from upstream
我们找到对应原始的aws-c-common_0.4.15_back.bb(使用指令find -name “aws-c-common*.bb找到文件”)配置内容如下:
原始配置内容如下:
# Copyright (c) 2019 LG Electronics, Inc.
SECTION = "devel"
LICENSE = "Apache-2.0"
LIC_FILES_CHKSUM = "file://LICENSE;md5=3b83ef96387f14655fc854ddc3c6bd57"
SRCREV = "e3e7ccd35a85f9cd38c67cb1988251f1543b6632"
SRC_URI = "git://github.com/awslabs/${BPN}.git;protocol=https"
S = "${WORKDIR}/git"
inherit cmake
EXTRA_OECMAKE += "-DBUILD_SHARED_LIBS=ON"
解决办法:
【下载源代码】我们首先到git上clone代码,比如放在/home/tuya/meta_ros_build_temp/downloads下,对应git文件夹名称为aws-c-common,clone命令:
cd /home/tuya/meta_ros_build_temp/downloads
git clone https://github.com/awslabs/aws-c-common.git
【第一步尝试】,如果我们将原始.bb文件按照上面方式改为:
SRC_URI = "git:///home/tuya/meta_ros_build_temp/downloads/aws-c-common;protocol=file“
并在meta-ros下进行:
bitbake aws-c-common
编译,会提示SRCREV = "e3e7ccd35a85f9cd38c67cb1988251f1543b6632"找不到。
【第二步尝试】接下来,如果我们强行在aws-c-common文件夹下使用:
git checkout e3e7ccd35a85f9cd38c67cb1988251f1543b6632
切换到SRCREV 指定的分支,可是checkout结果会提示报错,于是,我在aws-c-common文件夹下使用git branch -a 显示所有分支,切换到最新分支main(git checkout main)
然后再使用命令:
git checkout e3e7ccd35a85f9cd38c67cb1988251f1543b6632
即可成功切换。
【第三步】我们再次执行bitbake aws-c-common编译,发现还会提示报错,此时将.bb文件里面SRC_URI改为(结尾加了branch=main):
SRC_URI = "git:///home/tuya/meta_ros_build_temp/downloads/aws-c-common;protocol=file;branch=main"
再次在meta-ros下执行bitbake aws-c-common
SUC!!!!