解き放たれしソフトウェア

GNU/LinuxなどFLOSSについて書いてみるつもり

【Gentoo】Paludis の EAPI 6 対応は未完成

Gentoo Linux」のパッケージマネージャには Portage、Paludis、Pkgcore の3つがあります。

さて、最近に EAPI 6 が出ましたが、Paludis の EAPI 6 対応は不完全なようです。

eapply_user()
{
    return 0
}

paludis/paludis.git - Paludis, the other package mangler.

eapply_user ファンクションは、ユーザが用意したパッチを自動的に充てるようにするためのものです。 EAPI 6 で導入されました。 EAPI 6 では、 ebuild ファイルで eapply_user が有効になっていることが必須になりました。

EAPI 5 以前は、 eutils.eclass を使用(inherit)したうえで epatch_userebuild ファイルに書けば、ユーザにパッチを充てることを許せました。(必須ではなかった。もし epatch_userが書いていなければ、ユーザがパッチを充てて改造したいときは ebuild ファイルを書き換えるなり何なり行わねばならなかった)

ちなみに、パッチは /etc/portage/patches/$CATEGORY/$PN/ の形式のディレクトリの中に置きます。 (厳密には /etc/portage/patches/<CATEGORY>/<P-PR|P|PN>[:SLOT]/ です。 LC_ALL=C man eutils.eclass 参照 Gentoo Development Guide: eutils.eclass)

しかし、前記の通り、 Paludis では未だ eapply_user のファンクションは単に return 0(エラー無しのステータスコードを返答する)だけ、つまり何もしない、という状態で放置されています。

現在のところ gentoo リポジトリPortage ツリー)には、 Paludis は 2.4.0_p20160112 という、バージョン2.4.0に2016年1月12日時点までのパッチを加えたものが unstable のキーワードで置かれていますが、これでも、あるいはキーワード無しの 9999(dev版)でも、eapply_user は使えません。 現時点では。

他方、現段階でも gentoo リポジトリ内の公式の ebuild ファイルの中にも、 EAPI 6 に移行したものが増えてきています。 ユーザパッチを用意しているときに、Portage なら EAPI 6 だと必ず充たるのに、 Paludis だと充てられません。

Paludis が未だ eapply_user を書いていないのはおそらく、以前の epatch_user は (gentoo リポジトリ同梱の)eutils.eclass 内に既に書かれていたファンクションだからで、 つまり、 EAPI 6 になって パッケージマネージャ側で eapply_user を書き下ろさねばならなくなったからだと思われます。

しかし、書きたくなかろうがなんだろうが、書かないと Gentoo のパッケージマネージャ規格に反しますので、いずれ書くか、少なくとも書くつもりのポーズをとっていないと、 Gentoo 公認のパッケージマネージャから外される可能性すらありえますね。 (だからそのうち書くと思いますよ、きっと。面倒くさくても)