最近项目需要在 Yocto 里面回退一个软件包到比较旧的版本,而新版本的软件包已经生成了 cache ,这样在编译的时候就会遇到如下错误:
QA Issue: Package version for package went backwards which would break package feeds
主要原因是:如果启用了构建历史记录,那么当一个包在相同的名称下被构建出来时,Yocto 的 ERROR_QA 或者 WARN_QA 就会报告它的版本比以前构建的包的版本要低。如果你将旧版本包放置到镜像中,并使用该镜像升级目标系统上的包,则旧版本包可能导致目标系统无法正确升级到该包的“新”版本。
具体的 ERROR_QA 或者 WARN_QA 报告项可以查看poky/meta/classes/insane.bbclass
文件:
# Elect whether a given type of error is a warning or error, they may
# have been set by other files.
WARN_QA ?= "ldflags useless-rpaths rpaths staticdev libdir xorg-driver-abi \
textrel already-stripped incompatible-license files-invalid \
installed-vs-shipped compile-host-path install-host-path \
pn-overrides infodir build-deps src-uri-bad \
unknown-configure-option symlink-to-sysroot multilib \
invalid-packageconfig host-user-contaminated uppercase-pn patch-fuzz \
"
ERROR_QA ?= "dev-so debug-deps dev-deps debug-files arch pkgconfig la \
perms dep-cmp pkgvarcheck perm-config perm-line perm-link \
split-strip packages-list pkgv-undefined var-undefined \
version-going-backwards expanded-d invalid-chars \
license-checksum dev-elf file-rdeps configure-unsafe \
configure-gettext perllocalpod \
解决我们这个问题的方法就是在配置文件里面去掉 ERROR_QA 里面的 version-going-backwards 报告项:
ERROR_QA_remove = "version-going-backwards"