Audacious Git版 が Qt5 に対応

Audacious はGTK+3に対応しているけれど、 次期バージョンでは、Qt5にも対応するみたいだ。

GitHubに、製作中のQt5対応UIのソースコードが出ている。

GentooではQt4までしかgentooリポジトリにはなく qt overlayでQt5をインストールしておくわけだけれど、 Qt4とQt5の混在状態だと、qmake等のバイナリは、Qt4版にパスが通り、Qt5版は/usr/lib[64 or 32]/qt5/bin/* になる。 Qt5のバイナリが実行されるように細工しないといけない。

そんなわけでビルドするのに苦労したけど、それでできたQt UIがまた未完成にも程が有るレベルで、実用にならない。

まだ待ち。

ところで、ebuild を書いたのだけれど、横着して sed でMakefileを改変するという姑息な解決をしている。

このときに、記法で悩んだ。

具体的には、 moc, uic, rcc の3つを、/usr/lib[64 or 32]/qt5/bin/* で絶対パスを指定するように sed する。

ちなみに以下が原文

%.moc: %.h
    moc $< -o $@

ui_%.h: %.ui
    uic $< -o $@

rc_%.cc: %.qrc
    rcc $< -o $@

それで、inherit multilib をしてライブラリのディレクトリを取得するわけだけれど、それは$(get_libdir)という形でvariableのようになる。

だから、sedのパタンマッチでどうやってvariableを流しこむのか。

結論は、

sed -i 's_moc \$_/usr/'$(get_libdir)'/qt5/bin/moc $_g' Makefile
sed -i 's_uic \$_/usr/'$(get_libdir)'/qt5/bin/uic $_g' Makefile
sed -i 's_rcc \$_/usr/'$(get_libdir)'/qt5/bin/rcc $_g' Makefile

こんな風にvariableの前後で引用符を抜く。

ちなみに、パスに使用するスラッシュをエスケープすると見づらいので、sedの区切り文字をアンダーバーにしてある。

また、パタンマッチでは$をエスケープしないと行末と思われてしまうが、置換文字列にはエスケープをしてはならない。

というわけで、ちょっと技術が要った。

公開日時:

wjn's repos' info.

  Japenese , English