0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

package.envを使ってGentooのパッケージにビルドオプションを増やす

Last updated at Posted at 2018-10-20

発端

この記事の補足に追記した/etc/adjtimeの位置に関するFHS3.0における変更ですが、その理由は

In FHS 2.1, this file was /etc/adjtime, but as hwclock updates it, that was obviously incorrect.

とあまりにも文句なく「そりゃそーだよな」だったので手元のGentooについては修正しちまうことにしました。

どうやって変更する?

ググるとLFSではsed(1)でソースそのものを書き換えているみたいな情報が出てきますが、現在のutil-linuxではADJTIME_PATHがhwclock(8)の実行時だけではなくconfigureスクリプトの実行時にも指定できるようなので、こいつを使います。

Gentooパッケージに新しいビルドオプションをつける方法

ebuildに書いてあるケース

USEフラグを使います。Gentoo使いにはお馴染みの方法ですし、ここでは扱いません。

ebuild的に全く関知していないオプションを足したい

こういう時に便利なのがpackage.envEXTRA_ECONFです。
今回の場合は、以下2つのファイルを作ります。ディレクトリがなかったら適宜作りましょう。

/etc/portage/env/adjtime-location.conf
EXTRA_ECONF="ADJTIME_PATH=/var/lib/hwclock/adjtime"
/etc/portage/package.env
sys-apps/util-linux adjtime-location.conf

構造としては、

  1. Portageの設定をひとまとめにしたテキストファイルを/etc/portage/env下に配置する
    • EXTRA_ECONF以外にもPortageの機能に関する変数、例えばFEATURESCXXFLAGSなどが指定可能。
  2. /etc/portage/package.envというテキストファイルに適用したいパッケージ名と設定ファイル名をスペース区切りで指定する
    • パッケージごとに1行、設定ファイルはその行内においてスペース区切りで複数書いてOK

といった感じです。

つけた後にやること

# emerge -1 sys-apps/util-linuxでビルドをやり直し、configureスクリプト実行コマンドラインの出力の末尾にEXTRA_ECONFで指定した行が加わっていることを確認すればOKです。
もちろん、追加したオプションの内容によっては、それが原因でビルドに失敗する場合もあるので気をつけましょう。
最後に、今回はadjtimeファイルの参照先が変わったので

# mkdir /var/lib/hwclock
# mv /etc/adjtime /var/lib/hwclock/adjtime
# ln -s /var/lib/hwclock/adjtime /etc/adjtime

とフォローを入れておきました。
こういうのはGentooの醍醐味ですね。お疲れ様でした。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?