筆者について
FreeBSDを通じてOSSにささかな貢献を。
- 日本xrdpユーザ会発起人
- xrdp developer
- FreeBSD developer
OSS活動をご支援いただける方を募集しています
2018-02-16
■ はじめてのMacPorts: FreeRDPを2.0.0-rc1にアップデートしてマージされた
MacPortsに入っているFreeRDPが1.1系で古かったので、最新の2.0.0-rc1に更新してみました。FreeBSD portsのアップデートpatchを作るというのは日常的にやっているので、その
大体こんな流れ。
- GitHubのMacPortsリポジトリをforkする
- forkしたリポジトリをcloneする
- 当該portをいじる
- Pull Requestを作る
最初の2つは1回きりで手元にリポジトリを持っていれば省略できるので、適当に。
まずはMacPortsのチケット検索ページから、当該portのアップデートリクエスト等のチケットがないか確認します。あれば、後でコミットするときに「このチケットの作業やっといたよ」とコミットメッセージに書くためにURLを控えておきます。
次にPortfileをいじります。Portfileの書き方はFreeBSD portsのMakefileとは全然違うものの、FreeBSD portsに慣れていればなんとなく雰囲気でわかりました。ちょっと手こずったのが、FreeBSD portsの `make makesum` のような tarball のチェックサムを自動的に生成する手段がない(?)ところ。
もしかしたらあるのかもしれませんが、OpenSSLで2種類のチェックサムを生成して手でPortfileに書き込みました。
openssl dgst -rmd160 FreeRDP-2.0.0-rc1.tar.gz openssl dgst -sha256 FreeRDP-2.0.0-rc1.tar.gz
コミットメッセージはガイドラインに沿うように。 そんなこんなで出来上がったのがこちらのコミット。とりあえず見様見真似。
そしてPull Requestを作成。
Pull Requestにテンプレートがあって、以下のコマンドでテストしたMacの環境を添えます。
echo "macOS $(sw_vers -productVersion) $(sw_vers -buildVersion)"; echo "Xcode $(xcodebuild -version | awk '{print $NF}' | tr '\n' ' ')"
他にも、
- コミットメッセージガイドラインに沿ったか
- 同じようなPull Requestがないことを確認したか
- Tracチケットがある場合URLでリンクをしたか(チケット番号だけではダメ)
- `port lint` コマンドで文法チェックをしたか
- `sudo port test` コマンドでテストを実行したか(テストがある場合)
- `sudo port -vst install` でインストールのテストをしたか
- 全てのバイナリの実行テストをしたか
といった項目の確認をします。Tracチケットがなかった場合、わざわざ作る必要はないのですがうっかり作ってしまいました。うっかり作ったとはいえ、チケットを作ってしまったのでチケットのURLをコミットメッセージに含めました。
とりあえずここまで。提出したPull Requestがマージされるのか、それとも修正を求められるのか、とりあえず見守ります。野良portsとしてのビルドはご自由に。
その後
無事にマージされました。いくつか指摘があって、
- PulseAudioのvariantを削除した理由をコミットメッセージで説明する
- うっかりepochを削除してしまったので元に戻す
という変更が必要でしたが、大きな変更ではありませんでした。
FreeRDP 2.0系ではMacとの互換性も向上していて、以前はPulseAudioを経由しないと音が出せなかったのがMacのネイティブオーディオをサポートしたため必要なくなったというのがvariantを削除した理由です。
FreeBSDのportsの更新について調べていて通りかかったMacPortsのコミッタです。sudo port -d checksumして,一致しない場合,正しいチェックサムが計算されて表示されます。