【Yocto】いつの間に「git.freescale.com」が閉鎖されていた件【i.MX】

経緯

久しぶりにi.MX6でYoctoをいじろうと思って、Repoを使用してマニフェストを落としてこようと実行したが、上手くいかない。

repo init -u git://git.freescale.com/imx/fsl-arm-yocto-bsp.git -b imx-3.14.38-6UL_ga

おかしい。Repoのバージョンが上がったから?と思ったが、

まずgit://git.freescale.comが生きていない

2015年に Freescale が NXP Semiconductors に合併されたのは記憶に新しい。しかしi.MX用のgitリポジトリサイト「git.freescale.com」は最近までは生きていたと思う。少なくとも2019年までは使えたんじゃないかと。

調査

という事で、調査開始。

https://community.nxp.com/t5/i-MX-Processors/git-freescale-com-down/m-p/996004/highlight/true

嗚呼、阿鼻叫喚。そりゃそうだ。…いや、他人事ではない。
このスレッドの作成日時が2020年2月なので、やはりここ1~2年の事の様だ。
TechSupportが「もう復活は無い」と断言している。ヒドス。

上のスレッドによると、git://git.freescale.com のリポジトリは git://github.com/NXP/imx-firmware に移されたとの事で、とりあえず中を見てみるが、それらしきものが無い…なんだよ…

もうちょっと調査。

https://community.nxp.com/t5/i-MX-Processors/git-freescale-com-not-working-Any-new-link/m-p/998841

どうやらgithub.com/NXPの他に https://source.codeaurora.org/external/imx/
にあるらしい。

Code Auroraとは…

QUALCOMMがメインとなり、QUALCOMM製チップセットのオープンソース開発を実施しているサイト。

https://www.wdic.org/w/TECH/Code%20Aurora%20Forum

え、QUALCOMM? NXPの敵じゃないの?

なんか怪しいが、本当にある???どれどれ…

あった。(リリースレイヤーのmeta-fsl-bsp-releaseもあった)

どれ、対象のマニフェストを確認。default.xmlをのぞく。

いや古いままなんかーい!!

どうやら、ブランチに「nxp/」がつくものは古いままの模様。これではRepoで指定したところで上手くいかないんじゃないか?

実際上手くいかなかった。

# repo init -u https://source.codeaurora.org/external/imx/fsl-arm-yocto-bsp.git -b nxp/imx-3.14.38-6UL_ga

:

# repo sync

:

fatal: Unable to look up git.freescale.com (port 9418) (No address associated with hostname)

なんやねん…

解決策

これらを見て分かったのは、URLをまず変える事。そりゃそうだ。

git://git.freescale.com/imx

↓以下に変更

https://source.codeaurora.org/external/imx

imx-4.1-krogothなどは上記対応済みなので、Repoで指定すれば取ってこれた。なので、新しいブランチのマニフェストは以下の感じで問題無いはず。

repo init -u https://source.codeaurora.org/external/imx/fsl-arm-yocto-bsp.git -b imx-4.1-krogoth
repo sync

しかし、古いマニフェストは対応されていない。

ということで、解決策を2パターンほど考えた。

解決策その1 : Repoを使わず、manifestを解釈して個々のgitリポジトリを持ってくる

個人的にはこっちの方で良いんじゃないかと思っている。

というのも、Repoがもう使いにくくてしょうがない。SSHやPythonのバージョンなど環境の変化で結構振り回される。
また古いバージョンのマニフェストは今後リビジョンがマイナーアップデートされることもないはずなので。新しいバージョンは素直に「nxp/」がついてないブランチをRepoから使用することをお奨めする。

Repoのmanifestを参考に、gitで落としリビジョンを合わせるという力業を実施。

例:default.xml (ブランチ:nxp/imx-3.14.38-6UL_ga)

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

  <default sync-j="2"/>

  <remote fetch="git://git.freescale.com/imx" name="fsl-release" />
  <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"/>

  <project remote="yocto" revision="83aa565d93aacae484976562ef1ae8dbbb6b2bc0" name="poky" path="sources/poky"/>
  <project remote="yocto" revision="c5326c90d6754c8630504ae29244907b0841c3a9" name="meta-fsl-arm" path="sources/meta-fsl-arm"/>

  <project remote="oe" revision="10d3c8f85280a0bf867a8e4f84bcda81c290d28e" name="meta-openembedded" path="sources/meta-openembedded"/>

  <project remote="freescale" revision="89c605386ec81d64b38562acbc66942964fad971" 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="436b86e3421736216412bdbb21cd9cb08c758c75" name="meta-fsl-arm-extra" path="sources/meta-fsl-arm-extra"/>
  <project remote="freescale" revision="836bdf5a9d500ed258f1ddc07d89eca74a704098" name="meta-fsl-demos" path="sources/meta-fsl-demos"/>

  <project remote="OSSystems" revision="4b27058a8275a5310161459c9bb8f4c52a77762c" name="meta-browser" path="sources/meta-browser" />
  <project remote="QT5" revision="fc026381545650e10fdd488d5b2a3b2d78f87793" name="meta-qt5" path="sources/meta-qt5" />

  <project remote="fsl-release" name="meta-fsl-bsp-release" path="sources/meta-fsl-bsp-release" revision="fido_3.14.38_6UL_ga" >
     <copyfile src="imx/tools/fsl-setup-release.sh" dest="fsl-setup-release.sh"/>
  </project>

</manifest>

上のmanifestをgit個々で解釈したshellscript

#!/bin/bash
CUR_DIR=`echo $(cd $(dirname $0) && pwd)`

mkdir sources
cd sources

git clone git://git.yoctoproject.org/poky
cd poky
git checkout 83aa565d93aacae484976562ef1ae8dbbb6b2bc0
cd ../

git clone git://git.yoctoproject.org/meta-fsl-arm
cd meta-fsl-arm
git checkout c5326c90d6754c8630504ae29244907b0841c3a9
cd ../

git clone git://git.openembedded.org/meta-openembedded
cd meta-openembedded
git checkout 10d3c8f85280a0bf867a8e4f84bcda81c290d28e
cd ../

git clone git://github.com/Freescale/fsl-community-bsp-base
mv fsl-community-bsp-base base
cd base
git checkout 89c605386ec81d64b38562acbc66942964fad971
cp README ${CUR_DIR}
cp setup-environment ${CUR_DIR}
cd ../

git clone git://github.com/Freescale/meta-fsl-arm-extra
cd meta-fsl-arm-extra
git checkout 436b86e3421736216412bdbb21cd9cb08c758c75
cd ../

git clone git://github.com/Freescale/meta-fsl-demos
cd meta-fsl-demos
git checkout 836bdf5a9d500ed258f1ddc07d89eca74a704098
cd ../

git clone git://github.com/OSSystems/meta-browser
cd meta-browser
git checkout 4b27058a8275a5310161459c9bb8f4c52a77762c
cd ../

git clone git://github.com/meta-qt5/meta-qt5
cd meta-qt5
git checkout fc026381545650e10fdd488d5b2a3b2d78f87793
cd ../

git clone https://source.codeaurora.org/external/imx/meta-fsl-bsp-release
cd meta-fsl-bsp-release
git checkout remotes/origin/nxp/fido_3.14.38_6UL_ga
cp imx/tools/fsl-setup-release.sh ${CUR_DIR}
cd ../

cd ${CUR_DIR}

まぁ力業だが、もうこれでいい。(他のマニフェストの場合はnameやrevision、その他ファイルコピー箇所などを適宜変更する必要があります。)

解決策その2 : オレオレリポジトリを作り、その中にmanifestを入れ、Repoでそのリポジトリを指定する。

それでも俺はRepoを使いたいんじゃ~!って方はこっちか。というかこっちが正統派?

自身でリポジトリを立ち上げ、その中にマニフェストを作る。で、Repoでそのリポジトリを指定すればOK。

git init manifest # リポジトリ名はお好きに
cd manifest
vi default.xml

git://git.freescale.com/imx を https://source.codeaurora.org/external/imx に変更して作成。

例:default.xml (ブランチ:nxp/imx-3.14.38-6UL_ga が元データ)

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

  <default sync-j="2"/>

  <remote fetch="https://source.codeaurora.org/external/imx" name="fsl-release" /> <!-- ここのfetch URLを変更 -->
  <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"/>

  <project remote="yocto" revision="83aa565d93aacae484976562ef1ae8dbbb6b2bc0" name="poky" path="sources/poky"/>
  <project remote="yocto" revision="c5326c90d6754c8630504ae29244907b0841c3a9" name="meta-fsl-arm" path="sources/meta-fsl-arm"/>

  <project remote="oe" revision="10d3c8f85280a0bf867a8e4f84bcda81c290d28e" name="meta-openembedded" path="sources/meta-openembedded"/>

  <project remote="freescale" revision="89c605386ec81d64b38562acbc66942964fad971" 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="436b86e3421736216412bdbb21cd9cb08c758c75" name="meta-fsl-arm-extra" path="sources/meta-fsl-arm-extra"/>
  <project remote="freescale" revision="836bdf5a9d500ed258f1ddc07d89eca74a704098" name="meta-fsl-demos" path="sources/meta-fsl-demos"/>

  <project remote="OSSystems" revision="4b27058a8275a5310161459c9bb8f4c52a77762c" name="meta-browser" path="sources/meta-browser" />
  <project remote="QT5" revision="fc026381545650e10fdd488d5b2a3b2d78f87793" name="meta-qt5" path="sources/meta-qt5" />

  <project remote="fsl-release" name="meta-fsl-bsp-release" path="sources/meta-fsl-bsp-release" revision="fido_3.14.38_6UL_ga" >
     <copyfile src="imx/tools/fsl-setup-release.sh" dest="fsl-setup-release.sh"/>
  </project>

</manifest>

※「revision=”fido_3.14.38_6UL_ga”」の箇所は「revision=”nxp/fido_3.14.38_6UL_ga”」にしなきゃダメかと思っていたが、どっちでも大丈夫そう。

で、コミットしてrepoでリポジトリを指定してinit。

git commit -m "add manifest"
repo init -u (パス)/manifest
repo sync

大きな企業は古いもの、弱いものは簡単に切り捨てますね。
今後も気を付けなければいけません。

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする