yocto 开源代码建立本地repo服务器

yocto 是一个非常优秀的linux开源系统架构,如何将开源的yocto linux 代码变为本地仓库

1.获取源代码的仓库mirror镜像

mkdir version

repo init -u git://git.freescale.com/imx/fsl-arm-yocto-bsp.git -b imx-4.1-krogoth -m imx-4.1.15-2.0.0.xml
执行完之后文件结构如下:

cxt@cxt-Vostro-5468:~/version$ ls
fsl-arm-yocto-bsp.git       git-repo.git      meta-fsl-arm-extra.git  meta-fsl-bsp-release.git  meta-openembedded.git  poky.git
fsl-community-bsp-base.git  meta-browser.git  meta-fsl-arm.git        meta-fsl-demos.git        meta-qt5.git

在当前目录下创建manifest.git管理仓库:

git init --bare manifest.git

执行完之后去另外一个窗口新建目录,并clone 下这个manifest.git仓库,假如本地ip为192.168.0.100

git clone cxt:/192.168.0.100:/home/cxt/version/manifest.git

cd mainifest 

在源代码下有个.repo文件夹,复制其中的manifest.xml文件到本地目录

<?xml version="1.0" encoding="UTF-8"?>
<manifest>

  <default sync-j="2"/>

  <remote fetch="git://git.yoctoproject.org" name="yocto"/>
  <remote fetch="git://github.com/Freescale" name="freescale"/>
  <remote fetch="git://git.openembedded.org" name="oe"/>
  <remote fetch="git://github.com/OSSystems" name="OSSystems"/>
  <remote fetch="git://github.com/meta-qt5"  name="QT5"/>
  <remote fetch="git://git.freescale.com/imx" name="fsl-release" />

  <project remote="yocto" revision="f5da2a5913319ad6ac2141438ba1aa17576326ab" name="poky" path="sources/poky"/>
  <project remote="yocto" revision="be78894e4682f111575470fb23e51e6ba523508d" name="meta-fsl-arm" path="sources/meta-fsl-arm"/>

  <project remote="oe" revision="247b1267bbe95719cd4877d2d3cfbaf2a2f4865a" name="meta-openembedded" path="sources/meta-openembedded"/>

  <project remote="freescale" revision="krogoth" name="fsl-community-bsp-base" path="sources/base">
     <copyfile dest="README" src="README"/>
     <copyfile dest="setup-environment" src="setup-environment"/>
  </project>

  <project remote="freescale" revision="3dfb82fc7e703eae9891b3ffda0e9393701f2396" name="meta-fsl-arm-extra" path="sources/meta-fsl-arm-extra"/>
  <project remote="freescale" revision="a165068f8a0d1cf29aabe4b4053f28be1c2aa492" name="meta-fsl-demos" path="sources/meta-fsl-demos"/>

  <project remote="OSSystems" revision="77736988073a5d90fcff9d0005c8477332ede387" name="meta-browser" path="sources/meta-browser" />
  <project remote="QT5" revision="ccae79be69c5268df3b47e4e14cea0591c39a531" name="meta-qt5" path="sources/meta-qt5" />

  <project remote="fsl-release" name="meta-fsl-bsp-release" path="sources/meta-fsl-bsp-release" revision="krogoth_4.1.y" >
     <copyfile src="imx/tools/fsl-setup-release.sh" dest="fsl-setup-release.sh"/>
     <copyfile src="imx/README" dest="README-IMXBSP"/>
  </project>

</manifest>
~                                                                                   

原始代码中fetch是从github获取的代码,我们需要将路径更换为本地,name也改为origin

同时project 也要更改为origin,更改后内容如下:

<?xml version="1.0" encoding="UTF-8"?>
<manifest>

  <remote fetch="ssh://cxt@192.168.0.100:/home/cxt/version" name="origin"/>
  <default revision="master" remote="origin"/>

  <project remote="origin" revision="f5da2a5913319ad6ac2141438ba1aa17576326ab" name="poky" path="sources/poky"/>
  <project remote="origin" revision="be78894e4682f111575470fb23e51e6ba523508d" name="meta-fsl-arm" path="sources/meta-fsl-arm"/>

  <project remote="origin" revision="247b1267bbe95719cd4877d2d3cfbaf2a2f4865a" name="meta-openembedded" path="sources/meta-openembedded"/>

  <project remote="origin" revision="krogoth" name="fsl-community-bsp-base" path="sources/base">
       <copyfile dest="README" src="README"/>
       <copyfile dest="setup-environment" src="setup-environment"/>
  </project>

  <project remote="origin" revision="3dfb82fc7e703eae9891b3ffda0e9393701f2396" name="meta-fsl-arm-extra" path="sources/meta-fsl-arm-extra"/>
  <project remote="origin" revision="a165068f8a0d1cf29aabe4b4053f28be1c2aa492" name="meta-fsl-demos" path="sources/meta-fsl-demos"/>

  <project remote="origin" revision="77736988073a5d90fcff9d0005c8477332ede387" name="meta-browser" path="sources/meta-browser" />
  <project remote="origin" revision="ccae79be69c5268df3b47e4e14cea0591c39a531" name="meta-qt5" path="sources/meta-qt5" />

  <project remote="origin" name="meta-fsl-bsp-release" path="sources/meta-fsl-bsp-release" revision="0451810f7ec7da962bd899f5b0fe26afee1676ca" >
     <copyfile src="imx/tools/fsl-setup-release.sh" dest="fsl-setup-release.sh"/>
     <copyfile src="imx/README" dest="README-IMXBSP"/>
  </project>

</manifest>

同时更改之后将manifest.xml更名替换为default.xml,然后提交到服务器.

git add  . 

git commit -m "add default.xml"

git push origin master

初始化完成之后新建文件夹就可以通过repo下载了

repo init  -u ssh://cxt@192.168.0.100/home/cxt/version/manifest.git

repo sync

配置过程遇到问题如下:

cxt@cxt-Vostro-5468:~/test/test6$ repo init  -u ssh://cxt@192.168.0.100/home/cxt/RepoServer/manifest.git
Get https://gerrit-googlesource.proxy.ustclug.org/git-repo/clone.bundle
Get https://gerrit-googlesource.proxy.ustclug.org/git-repo
remote: Finding sources: 100% (28/28)
remote: Total 28 (delta 6), reused 28 (delta 6)
Unpacking objects: 100% (28/28), done.
From https://gerrit-googlesource.proxy.ustclug.org/git-repo
   34bc571..7c321f1  master     -> origin/master

... A new repo command ( 1.26) is available.
... You should upgrade soon:

    cp /home/cxt/test/test6/.repo/repo/repo /home/cxt/bin/repo

Get ssh://cxt@192.168.0.100/home/cxt/RepoServer/manifest.git
remote: Counting objects: 3, done.        
remote: Compressing objects: 100% (2/2), done.        
remote: Total 3 (delta 0), reused 0 (delta 0)        
From ssh://192.168.0.100/home/cxt/RepoServer/manifest
 * [new branch]      master     -> origin/master
fatal: manifest 'default.xml' not available
fatal: manifest default.xml not found

 

这个是由于从源代码拷贝过得manifest.xml文件没有更改为default.xml,repo下载代码会默认选择default.xml文件

cxt@cxt-Vostro-5468:~/test/test6$ repo init  -u ssh://cxt@192.168.0.100/home/cxt/RepoServer/manifest.git

... A new repo command ( 1.26) is available.
... You should upgrade soon:

    cp /home/cxt/test/test6/.repo/repo/repo /home/cxt/bin/repo

remote: Counting objects: 2, done.        
remote: Total 2 (delta 0), reused 0 (delta 0)        
From ssh://192.168.0.100/home/cxt/RepoServer/manifest
   85bf45e..73bf19f  master     -> origin/master
project .repo/manifests/
Updating 85bf45e..73bf19f
Fast-forward
 manifest.xml => default.xml | 0
 1 file changed, 0 insertions(+), 0 deletions(-)
 rename manifest.xml => default.xml (100%)

fatal: manifest 'default.xml' not available
fatal: remote oe not defined in /home/cxt/test/test6/.repo/manifests/default.xml

原始代码中的分支名有yocto,oe等各种分支,需要将这些名称更改为origin即可。

关于manifest.xml的解析可以参考:https://blog.csdn.net/shift_wwx/article/details/19557031

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值