karubabuの日記

タイトルに解決と書いているものがあるけれど、別に付いていない物は解決していないというわけではないです。つまるところ記事を書いた後に解決してちょっと嬉しかったので付けました。

ebuild内でSRC_URIにgithubへリンクを持ってくるのなら取得したファイルの名前に注意する必要がある

タイトルの通りです。

どういうこと?

多分結構なebuildで、公式・非公式問わずに、

SRC_URI="https://github.com/${PN}/${PN}/archive/V${PV}.tar.gz -> ${P}.tar.gz"

-> ${P}.tar.gzの様に、名前が変更されて保存されるものが多い。
これがないと自身のDISTDIRにV${PV}.tar.gzの様な名前のファイルが保存されることになる。
これが大事なのでちゃんと名前を変更しようねという話(4敗)。

これの何が問題かと言うと、これを対策せずにうっかり名前が重複したファイルを保存したりする(つまりバージョンが一致する様なパッケージが複数現れる)とemerge時に問題が起きる。
多分以下の様なことが起きる。

  1. 対策されていないパッケージAをemergeする
  2. 対策されていなくかつパッケージAと同じバージョンであるパッケージBをemergeする
  3. パッケージAをemergeした時に保存される、パッケージAのtarボールをパッケージBのemergeで使おうとしてしまう(同じ名前のファイルなので)
  4. tarボールのチェックサムが一致しない、もしくはサイズが一致しないのでエラーが出る

おわり

この問題で出るエラーメッセージはこの問題が原因であるということに辿り着きにくいような内容なので、ここにメモしておくね
dev-embedded/cc65: fix SRC_URI. · karubabu/gentoo-overlay@f91d0cd · GitHub
問題を修正したコミット(これだけではない)