这是机器未来的第47篇文章
原文首发地址:https://blog.youkuaiyun.com/RobotFutures/article/details/126752136

1. 概述
本文描述了yocto环境搭建时,使用repo源码管理工具下载加速的方法介绍。博主使用的imx8qxp的yocto工程使用repo下载源码时,使用官方配置得要下载2小时以上,而按照博主配置gitee加速后,速度提高到1分钟左右。
2. 最终的加速配置文件如下:
<manifest>
<default sync-j="2"/>
<remote fetch="https://github.com/yoctoproject" name="yoctoproject"/>
<remote fetch="https://gitee.com/RobotFutures" name="robotfutures"/>
<remote fetch="https://git.openembedded.org" name="python2"/>
<project remote="yoctoproject" name="poky" path="sources/poky" revision="4d7162798ec19c726877e85509e4c7a99eb6576d" upstream="honister"/>
<project remote="robotfutures" name="meta-openembedded" path="sources/meta-openembedded" revision="4647e3ea3708d30eeb0149f6d5626c9576bff520" upstream="honister"/>
<project remote="robotfutures" name="fsl-community-bsp-base" path="sources/base" revision="60f79f7af60537146298560079ae603260f0bd14" upstream="honister">
<linkfile dest="README" src="README"/>
<linkfile dest="setup-environment" src="setup-environment"/>
</project>
<project remote="robotfutures" name="meta-freescale" path="sources/meta-freescale" revision="ed3435620a2404c241fef3c4ef90d1f31d3b7a8a" upstream="honister"/>
<project remote="robotfutures" name="meta-freescale-3rdparty" path="sources/meta-freescale-3rdparty" revision="155ffd6d7b694d8de76919c25681ecb98882646e" upstream="honister"/>
<project remote="robotfutures" name="meta-freescale-distro" path="sources/meta-freescale-distro" revision="d2e27cc4778663450495a67bfb036cba600cb27a" upstream="honister"/>
<project remote="robotfutures" name="meta-browser" path="sources/meta-browser" revision="e22bac72bc1f1bb5d2f44e64a53128b8be644272"/>
<project remote="robotfutures" name="meta-clang" path="sources/meta-clang" revision="fc5389393adb005b519e488e9e6be4fc5791239c" upstream="honister"/>
<project remote="robotfutures" name="meta-qt6" path="sources/meta-qt6" revision="1b9f4646dd69c5567d19ed77b8347506fe7faf2b" upstream="6.2.2"/>
<project remote="python2" name="meta-python2" path="sources/meta-python2" revision="5243d509aebff378c1ae9d3dff6a29cfdc0dee1f" upstream="honister"/>
<project remote="robotfutures" name="meta-timesys" path="sources/meta-timesys" revision="93bf122d77e77aac1a917865538df84f148a8fcc" upstream="gatesgarth"/>
<project remote="robotfutures" name="meta-virtualization" path="sources/meta-virtualization" revision="ed52ba982179087ecc84f7dc3b0a16cfe25f2f8e" upstream="honister"/>
<project remote="robotfutures" name="meta-imx" path="sources/meta-imx" revision="refs/tags/rel_imx_5.15.5_1.0.1" upstream="honister-5.15.5-1.0.0">
<linkfile dest="imx-setup-release.sh" src="tools/imx-setup-release.sh"/>
<linkfile dest="README-IMXBSP" src="README"/>
</project>
<project remote="robotfutures" revision="4bbe714267b730df020438fe83ae2c7c91708045" name="meta-nxp-demo-experience" path="sources/meta-nxp-demo-experience"/>
</manifest>
3. repo板卡配置文件详解
先来看一下repo的manifest.xml文件的描述,在这个yocto项目中,配置文件为.repo/manifests/imx-5.15.5-1.0.0.xml
zhoushimin@zsm:imx-yocto-bsp2$ cat .repo/manifests/imx-5.15.5-1.0.0.xml
<?xml version="1.0" encoding="UTF-8"?>
<manifest>
// 多线程数,默认为2,可以指定为cpu数
<default sync-j="2"/>
// remote指定的git仓库的地址,fetch指定git仓库目录,实际地址为:fetch/project标签中的name;
// remote和project通过remote标签中的name和project标签中的remote关联
<remote fetch="https://source.codeaurora.org/external/imx" name="CAF"/>
<remote fetch="https://github.com/OSSystems" name="OSSystems"/>
<remote fetch="https://code.qt.io/yocto" name="QT6"/>
<remote fetch="https://github.com/TimesysGit" name="Timesys"/>
<remote fetch="https://github.com/kraj" name="clang"/>
<remote fetch="https://github.com/Freescale" name="community"/>
<remote fetch="https://github.com/openembedded" name="oe"/>
<remote fetch="https://git.openembedded.org" name="python2"/>
<remote fetch="https://git.yoctoproject.org/git" name="yocto"/>
<remote fetch="https://source.codeaurora.org/external/imxsupport" name="imx-support"/>
// 通过remote和project标签组合,可以获得poky的git仓库地址为:
// https://git.yoctoproject.org/git/poky; (remote.fetch/project.name)
// upstream指定分支;
// revision指定分支中的提交记录
// path指定本地仓库的存储路径
<project remote="yocto" name="poky" path="sources/poky" revision="4d7162798ec19c726877e85509e4c7a99eb6576d" upstream="honister"/>
<project remote="oe" name="meta-openembedded" path="sources/meta-openembedded" revision="4647e3ea3708d30eeb0149f6d5626c9576bff520" upstream="honister"/>
<project remote="community" name="fsl-community-bsp-base" path="sources/base" revision="60f79f7af60537146298560079ae603260f0bd14" upstream="honister">
<linkfile dest="README" src="README"/>
<linkfile dest="setup-environment" src="setup-environment"/>
</project>
<project remote="community" name="meta-freescale" path="sources/meta-freescale" revision="ed3435620a2404c241fef3c4ef90d1f31d3b7a8a" upstream="honister"/>
<project remote="community" name="meta-freescale-3rdparty" path="sources/meta-freescale-3rdparty" revision="155ffd6d7b694d8de76919c25681ecb98882646e" upstream="honister"/>
<project remote="community" name="meta-freescale-distro" path="sources/meta-freescale-distro" revision="d2e27cc4778663450495a67bfb036cba600cb27a" upstream="honister"/>
<project remote="OSSystems" name="meta-browser" path="sources/meta-browser" revision="e22bac72bc1f1bb5d2f44e64a53128b8be644272"/>
<project remote="clang" name="meta-clang" path="sources/meta-clang" revision="fc5389393adb005b519e488e9e6be4fc5791239c" upstream="honister"/>
<project remote="QT6" name="meta-qt6" path="sources/meta-qt6" revision="1b9f4646dd69c5567d19ed77b8347506fe7faf2b" upstream="6.2.2"/>
<project remote="python2" name="meta-python2" path="sources/meta-python2" revision="5243d509aebff378c1ae9d3dff6a29cfdc0dee1f" upstream="honister"/>
<project remote="Timesys" name="meta-timesys" path="sources/meta-timesys" revision="93bf122d77e77aac1a917865538df84f148a8fcc" upstream="gatesgarth"/>
<project remote="yocto" name="meta-virtualization" path="sources/meta-virtualization" revision="ed52ba982179087ecc84f7dc3b0a16cfe25f2f8e" upstream="honister"/>
<project remote="CAF" name="meta-imx" path="sources/meta-imx" revision="refs/tags/rel_imx_5.15.5_1.0.1" upstream="honister-5.15.5-1.0.0">
<linkfile dest="imx-setup-release.sh" src="tools/imx-setup-release.sh"/>
<linkfile dest="README-IMXBSP" src="README"/>
</project>
<project remote="imx-support" revision="4bbe714267b730df020438fe83ae2c7c91708045" name="meta-nxp-demo-experience" path="sources/meta-nxp-demo-experience" />
</manifest>
4. 操作方法
为了实现gitee加速,需要将remote标签中的git仓库地址更换到国内的gitee仓库中,因为gitee仓库拉取第三方git仓库失败率太高,只能人工手动拉取再上传。
-
首先需要根据remote标签和project标签获得完整的git仓库地址,并下载master主分支
$ git clone git clone https://git.yoctoproject.org/meta-virtualization -
然后根据project.upstream下载对应的分支
$ git checkout -b honister origin/honister -
使用命令确保revision提交的版本记录存在
$ git log | grep revision_value举例:
$ git log | grep 4bbe714267b730df020438fe83ae2c7c91708045 -
有的还需要拉取特定的tag,如
<project remote="CAF" name="meta-imx" path="sources/meta-imx" revision="refs/tags/rel_imx_5.15.5_1.0.1" upstream="honister-5.15.5-1.0.0"># 查看远程tag $ git ls-remote --tags origin # 拉取需要的tag $ git fetch origin refs/tags/rel_imx_5.15.5_1.0.1 -
在gitee上建立对应的仓库
-
将本地下载的git仓库的远程仓库地址修改为gitee仓库地址
$ git remote set-url origin https://gitee.com/RobotFutures/meta-imx.git -
上传主分支
$ git checkout master $ git push origin master -
上传honister分支
$ git checkout honister $ git push origin honister -
上传tag
$ git push origin --tags注意事项:下载meta-imx时出现无master分支的情况,直接切换到需要的分支上即可
$ git checkout honister-5.15.5-1.0.0
-
5. 总结
博主使用的imx8qxp的yocto工程使用repo下载源码时,使用官方配置得要下载2小时以上,而按照博主配置gitee加速后,速度提高到1分钟左右。
写在末尾:
- 博客简介:专注AIoT领域,追逐未来时代的脉搏,记录路途中的技术成长!
- 专栏简介:imx8qxp小白从拿到板子到完成项目的过程记录
- 面向人群:嵌入式软件工程师
- 专栏计划:接下来会逐步发布跨入人工智能的系列博文,敬请期待
- Python零基础快速入门系列
- Python数据科学系列
- 人工智能开发环境搭建系列
- 机器学习系列
- 物体检测快速入门系列
- 自动驾驶物体检测系列
- …

本文详细介绍了如何在yocto环境下,针对imx8qxp开发板的yocto工程,通过配置repo使用Gitee源码仓库实现下载加速。原来需要2小时以上的下载时间,通过加速后缩短至1分钟。文章涵盖了加速配置文件的设置、repo manifest解析、操作步骤及注意事项,适合嵌入式软件工程师阅读。
6324

被折叠的 条评论
为什么被折叠?



