OpenOCD小ネタ3 -ぱっちを提出したお話-
前回OpenOCDは急速に廃れつつある…とお話しましたが、この記事を書いている
2013年の11月上旬現在では日本のホビーユーザー間コミュニティではもはや見向きも
されなくなり、ほぼ壊滅状態になってしまいました。
限定解除したmbedとCooCoxが強すぎです。
思うに私のぶろぐを含めたwebにあまたに点在する"丁寧な環境構築の解説"は
作成したそばからすぐに陳腐化してしまい役に立たなくなり新規参入の方々に
とってはそれが逆に導入における重大な障壁となったからなのでしょう。
しかも導入におけるアプローチの仕方は人それぞれ千差万別で何通りもあります。
多過ぎる選択肢というのは相手の興味を確実に喪失させます。無償といえども
その恩恵を得るために時間という貴重な対価を結局払うことになります。
しかもたくさん時間をかけて頑張ってもうまくできないかもしれません。
得られたものが疲労だけということにもなりかねません。
良かれと思って行ったことが逆に仇になった結果ですが、それもまた運命…
結局タダより高くつく物は無いねといったお話でしためでたしめでたし(完)。
…すみませんうっかり今日の記事を〆るところでしたね。
今回はねむいさんがOpenOCDのパッチを提出して公式のコミットにマージされるまで
の経緯をお伝えします。
2013年現在、OpenOCDはgitというバージョン管理システムにて開発がすすめられて
います。以前はソースコードの世代管理にsvn(Subversion)が使われていましたが、
gitにはgerritという非常に効率的なレビューシステムをドッキングさせることが
できます。これによりエンバグされた極悪パッチやコンパイルすら通らないf**kな
パッチが開発者に送られまくるような事が無くなりよりスマートな開発スタイルに
成れたらしいです。
OpenOCDのサイトでは、ガイドラインとして作ったパッチをマージさせるための手順
も記されてはおりますが、ねむいさんはそれすら理解できる知能がありませんでした。
のでまず"どういう知識が必要か"の調査からはぢめました。
※当記事では作業を進めるうえで引っ掛かった部分の言及にとどめ、詳しい手順の
紹介は致しません。ていうかできません。
●先ずgerritにアカウント登録を行う必要がある。
真っ先にやるべきことはまずgerritに自分を登録することです。既にyahooのアカ
ウントを持ってたら登録不要でyahooのアカウントでサインインできるようです。
ねむいさんはVersaloonのBBS投稿用にyahooのアカウントがあったので、すんなり
入れました。
この時点で出来ることは他人のコードレビューにコメントつけたりスコアをつけたり
ユーザネームの登録のみです。まだパッチの提出は不可能です。
●sshパブリック・キーをアカウントに登録する。
sshとはこういうものだそうです。gerritにおいてはなりすましや非公開リポジトリ
への通信傍受を防ぐために役に立ちそうです。
こちらも手順が示されていますので特に難しいことではないはず…でしたが、使用
していたMsys環境がsimonquianさん提供のものすごく古いやつだったので最初は全く
駄目でした。結局Msys/MinGWのサイトから落とすことができるインストーラーを
使って一切合切インストールして新しいMsysの環境を作成してパブリックキーの
登録に成功しました。
2009年の時点ではこんなのなかったはずなのでいい時代になりましたね‥
Msysでは主にOpenSSHというのでSSHプロトコルを実現しているようです。
●リモートリポジトリのクローンを作成してローカルで作業開始
この作業自身はOpenOCDのビルドで当たり前にやってることなので特に問題は
無いはずです。
今では有志の方が作成された猿でもできるGIT入門という非常に分かりやすいgit
指南があります。これはありがたい…
cloneし終わったらopenOCDのディレクトリに入ります。ここもOpenOCDビルド時と
同じですね。
●新しいリモートリポジトリの追加
ここでアカウントを取得/登録した意味が効いてきます。また、事前にweb
ブラウザからgerritにsigninをしてないと失敗するのでご注意を。
"git remote add review"でrsaパブリックキーのpassphraseが求められるので
登録したパスワードを入力します。
●hookのインストール
ねむいさんここでず〜〜〜っと詰まってました。"Permission denied (publickey)"
というエラーで先に進めなかったのですが詰まってた時はまだsimonquianさんの
MSYSベースで頑張ってた頃で、まっさらのMSYS環境にしてからやり直すとあっさり
通りました…今までの苦労はなんだったんだ…。
また、rsaパブリックキーが置いてあるフォルダが正しく参照されてるかも重要で、
私の64bit版Win7では以下のURLに置くことで成功しました。
"C:¥Users¥(ユーザー名)¥.ssh"
".ssh"というディレクトリがどこに出来ているか把握すべきです。
●名前とe-mailアドレスの登録
フックのインストールを超えたらあとはトントン拍子です。
ここも難なくクリア
●パッチの適用
ここで初めてローカルリポジトリにパッチを適用します。
ここも通常のOpenOCDと手順は同じです。
●変更をコミット
while(!done) {
work - edit files using your favorite editor.
run "git commit -s -a" to commit all changes.
run tools/checkpatch.sh to verify your patch style is ok.
}
ねむいさんこの部分が何かのスクリプトと思い込んでて必死にshell上で実行
しようとしてました…あほだ…。この一文の意味するところはパッチを適用する
たびにこの一連のコマンドを施行せよという意味です。
"git commit -s -a" を実行するとvimが起動してコミット内容の編集画面に
なります。つまりvi(vim)をインストールしてないとエラーで失敗します。
vimで編集する気がない人は"./git/COMMIT_EDITMSG"の内容を直接メモ帳等で
編集してもいいです。ここの文章構成は下記のテンプレートに沿って書かないと
チェックで撥ねられたりレビューサーバに上げた後に怒られたりします。
topic: summary text
(一行あける)
preliminary text
(一行あける)
Signed-off-by: "user name"
ねむいさんが行ったコミットを例にとるとこんな感じにします。
fm3: fix Fujitsu MB9Ax family support
Some MB9Ax (especially few internal SRAM model) fails programming
because of wrong SRAM basic-address on running algorithm.
Default SRAM basic-address must be 0x20000000.
This patch is fixing default SRAM basic-address and ramcode offset.
Tested on a MB9BF618T and MB9AF112K.
Signed-off-by: Nemui Trinomius
●衝突してないかチェック
"git pull --rebase origin master"で他の人と衝突してないかチェックできます。
OpenOCDの場合はそこまで活発ではないのでぶつかることはまずないでしょう。
●gerritサーバーに登録
"git push review"で上で編集した要約とともにパッチが提出されます。
送られたパッチはまずOpenの場所に上がります。そしてjenkinsという自動ビルド検証
プログラムにて最低限ビルドができるかどうかの審査が機械的に行われます。そして
他の人にコードレビューを受けて間違いやもっといい提案を受けてさらに修正します。
修正はローカルリポジトリにパッチを適用したソースコードからさらに修正を行います。
必要ならばメーリングリストにてさらに議論を進めたりもします。修正が完了したら、
"git commit --amend"
"git push review"
の二つのコマンドでgerritレビューサーバのPatchSetナンバーを上げて更新されます。
こうしてレビューを繰り返してプラススコアがついてきたころにgerritレビュー
サーバーを仕切っているntfreakさんによって"cherry-picked"されてマージされます。
マージされたパッチはこんな感じに履歴に残り、ねむいさんがOpenOCDのプロジェクト
に貢献したことがわかる仕組みとなっています。かぁーっ!(地獄のミサワみたいな顔で)
↑そいえばjenkinsのジジイのミサワverがすでにネタ絵であったりしますね…
ちなみにntfreakリンサンのGitHubから見ると私の実績はこんな感じです。
参考にさせてもらった日本語のサイト
jugyo様:僕が Gerrit について理解している数少ないこと
基本的な概念・操作について。
mkouhei様: git stashでハマる。
OpenOCDのパッチ提出手順では競合時の解決が書いてませんのでこちらを参考に
させていただきました。
こんな感じで実作業を通じてgitやgerritの仕組みを学んできました。でも私自身も
まだごくごく一部しか理解してませんので他の人に教えられるようになるまで勉強
していきます。
-
免責・連絡先は↑のリンクを
↓SNSもやってます↓
powered by まめわざ- ARM/STM32 (116)
- OpenOCD (27)
- ARM/NxP (34)
- ARM/Cypress (5)
- ARM/Others (3)
- ARM/Raspi (1)
- AVR (13)
- FPGA (4)
- GPS/GNSS (19)
- MISC (81)
- STM8 (2)
- Wirelessなアレ (16)
- おきぱ (1)
- ブラウザベンチマーク (28)
- 日本の自然歩道 (25)
- STM32U0はぢめました
⇒ ねむい (08/07) - STM32U0はぢめました
⇒ ひかわ (07/28) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ ねむい (05/17) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ どじょりん (05/16) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ どじょりん (05/16) - いろいろ試す61(と今年の反省会)
⇒ ねむい (01/02) - いろいろ試す61(と今年の反省会)
⇒ ひかわ (01/02) - いろいろ試す61(と今年の反省会)
⇒ ひかわ (01/01) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ ねむい (12/31) - STM32H5を使ってみる3 -待ち受ける初見殺しの罠たち-
⇒ ひかわ (12/31)
- October 2024 (1)
- September 2024 (1)
- August 2024 (1)
- July 2024 (1)
- June 2024 (1)
- May 2024 (1)
- April 2024 (1)
- March 2024 (1)
- February 2024 (2)
- January 2024 (1)
- December 2023 (4)
- November 2023 (2)
- October 2023 (2)
- September 2023 (1)
- August 2023 (2)
- July 2023 (1)
- June 2023 (2)
- May 2023 (3)
- April 2023 (1)
- March 2023 (1)
- February 2023 (1)
- January 2023 (1)
- December 2022 (2)
- November 2022 (1)
- October 2022 (1)
- September 2022 (1)
- August 2022 (1)
- July 2022 (1)
- June 2022 (1)
- May 2022 (1)
- April 2022 (1)
- March 2022 (1)
- February 2022 (1)
- January 2022 (1)
- December 2021 (2)
- November 2021 (2)
- October 2021 (1)
- September 2021 (1)
- August 2021 (1)
- July 2021 (1)
- June 2021 (1)
- May 2021 (1)
- April 2021 (1)
- March 2021 (1)
- February 2021 (1)
- January 2021 (1)
- December 2020 (3)
- November 2020 (1)
- October 2020 (1)
- September 2020 (1)
- August 2020 (1)
- July 2020 (1)
- June 2020 (2)
- May 2020 (1)
- April 2020 (1)
- March 2020 (1)
- February 2020 (1)
- January 2020 (1)
- December 2019 (3)
- November 2019 (1)
- October 2019 (1)
- September 2019 (2)
- August 2019 (1)
- July 2019 (1)
- June 2019 (1)
- May 2019 (1)
- April 2019 (1)
- March 2019 (1)
- February 2019 (1)
- January 2019 (1)
- December 2018 (3)
- November 2018 (2)
- October 2018 (1)
- September 2018 (1)
- August 2018 (1)
- July 2018 (1)
- June 2018 (1)
- May 2018 (1)
- April 2018 (2)
- March 2018 (1)
- February 2018 (1)
- January 2018 (1)
- December 2017 (2)
- November 2017 (2)
- October 2017 (1)
- September 2017 (1)
- August 2017 (1)
- July 2017 (1)
- June 2017 (1)
- May 2017 (1)
- April 2017 (1)
- March 2017 (2)
- February 2017 (2)
- January 2017 (2)
- December 2016 (7)
- November 2016 (2)
- October 2016 (2)
- September 2016 (1)
- August 2016 (1)
- July 2016 (1)
- June 2016 (1)
- May 2016 (2)
- April 2016 (1)
- March 2016 (2)
- February 2016 (1)
- January 2016 (1)
- December 2015 (3)
- November 2015 (1)
- October 2015 (3)
- September 2015 (2)
- August 2015 (2)
- July 2015 (3)
- June 2015 (3)
- May 2015 (4)
- April 2015 (2)
- March 2015 (4)
- February 2015 (1)
- January 2015 (3)
- December 2014 (3)
- November 2014 (2)
- October 2014 (1)
- September 2014 (2)
- August 2014 (2)
- July 2014 (3)
- June 2014 (2)
- May 2014 (1)
- April 2014 (1)
- March 2014 (4)
- February 2014 (4)
- January 2014 (3)
- December 2013 (5)
- November 2013 (4)
- October 2013 (3)
- September 2013 (2)
- August 2013 (2)
- July 2013 (2)
- June 2013 (3)
- May 2013 (2)
- April 2013 (2)
- March 2013 (2)
- February 2013 (2)
- January 2013 (3)
- December 2012 (4)
- November 2012 (2)
- October 2012 (2)
- September 2012 (4)
- August 2012 (1)
- July 2012 (3)
- June 2012 (2)
- May 2012 (3)
- April 2012 (3)
- March 2012 (2)
- February 2012 (3)
- January 2012 (3)
- December 2011 (5)
- November 2011 (3)
- October 2011 (2)
- September 2011 (2)
- August 2011 (2)
- July 2011 (2)
- June 2011 (2)
- May 2011 (2)
- April 2011 (2)
- March 2011 (2)
- February 2011 (2)
- January 2011 (3)
- December 2010 (7)
- November 2010 (1)
- October 2010 (1)
- September 2010 (1)
- August 2010 (3)
- July 2010 (4)
- May 2010 (1)
- April 2010 (2)
- March 2010 (2)
- February 2010 (2)
- January 2010 (3)
- December 2009 (3)
- November 2009 (8)
- October 2009 (7)
- September 2009 (5)
- August 2009 (4)
- July 2009 (6)
- June 2009 (6)
- May 2009 (14)
- January 1970 (1)
Copyright(C) B-Blog project All rights reserved.