go製のプロジェクトのebulidを書く
emakeやれば終わるものとは別ゲーすぎません???
次も大変な思いをしない様に困ったところは書いておくね
今回ebulidを書いたやつ
GitHub - m13253/dns-over-https: High performance DNS over HTTPS client & server
今回のebuild
gentoo-overlay/dns-over-https-2.2.1.ebuild at master · karubabu/gentoo-overlay · GitHub
モジュールはEGO_VENDORに列挙する必要がある
今になって考えてみると当たり前なのだけれども、モジュールをgo.modにある通りに適当にgo get
してくると、
portage側でその真正性が確認出来無い問題が出るので、ebuild内ではgo get
自体が出来無くなっている
そのため、必要なモジュールをSRC_URIと同じ様にハッシュか何かをmanifestに保存しつつ同タイミングでダウンロードすることになる
というわけで以下の部分がそれ
gentoo-overlay/dns-over-https-2.2.1.ebuild at master · karubabu/gentoo-overlay · GitHub
EGO_PN
はビルドするプロジェクトの名前、EGO_VENDOR
はモジュールの名前とハッシュかバージョンそしてgolang-vcs-snapshotを継承する
golang-vcs-snapshotを継承するタイミングはEGO_VENDOR
を列挙した後でないと、この変数は読み取り専用ですよ!
と文句が出るので気を付けよう(1敗)
詳しくはgolang-vcs-snapshotのソースコードにある解説を読むと全部わかるのでえらい
golang-vcs-snapshot.eclass\eclass - repo/gentoo.git - Official Gentoo ebuild repository
ビルド時に-mod=vendor
引数を入れる
☝️に付随する事柄だけれど、☝️の方法で入ったモジュールはGOPATH以下ではなくプロジェクトのrootディレクトリ/vendor
に置かれるので、それを認識させる必要がある
以下の部分がそれ
gentoo-overlay/dns-over-https-2.2.1.ebuild at master · karubabu/gentoo-overlay · GitHub
あとは手慣りでsrc_installすれば良いと思う
おわりに
やたら大変だったのでゆるしていないよ
そもそもgoでプログラムを書いたことが無いので何が何処にあるのかさっぱり分からなくてはちゃめちゃに辛かった
まあ別に他の言語のプロジェクトも全然わからんしmakeを叩けばよしなにやってくれるやつ以外は全部辛いのだけれども
あとgoはgo help moduleとかやるとlessもなしに英語ドバー!!!してくるのが精神を抉ってくるのでやめなさーい!!
二つ目の問題もgo help moduleをしっかり読めば一瞬で分かることなのだけれど、しっかり読みたくなくてこれに気が付くまで時間がかかりました…
後はgo系のebuild classがやたら一杯あるのが謎だったね
結局golang-vcs-snapshotのみを使ったけれど、これでよかったのか、もっと相性の良いものがあったのか、全然わからん!