【深入浅出imx8企业级开发实战 | 02】Yocto工程repo源码gitee加速配置方法

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

这是机器未来的第47篇文章

原文首发地址:https://blog.youkuaiyun.com/RobotFutures/article/details/126752136

image-20220908100355092

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小白从拿到板子到完成项目的过程记录
  • 面向人群:嵌入式软件工程师
  • 专栏计划:接下来会逐步发布跨入人工智能的系列博文,敬请期待

评论 52
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

机器未来

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值