Fedora Core 6でWine 0.9.30を動かす(libX11にパッチを当てる方法)

Fedora Core 6でWine 0.9.23以降を使うと、ハングアップするが、どうやらlibX11のバグらしい(?)。
libX11にパッチを当てたら、確かにWine 0.9.30が動いた。


参考1:http://bbs.fedora.jp/read.php?FID=10&TID=4828
参考2:https://bugs.freedesktop.org/show_bug.cgi?id=1182
参考3:http://bugs.winehq.org/show_bug.cgi?id=6547


せっかくなので、ここにlibX11のRPMにパッチを当てる具体的な手順を書いておく。

準備

あらかじめ、このようなディレクトリ構造を用意する。
無ければ、mkdirで作る。

~/rpm/
   |
   +--BUILD
   +--RPMS
   +--SOURCES
   +--SPECS
   +--SRPMS

パッチをダウンロード

下記の通りにコマンドを入れる。
もし、wgetが「bugs.freedesktop.org」に繋がらなかったら、
https://bugs.freedesktop.org/」を「https://131.252.208.36/」とIPアドレス表記に変える。
パッチはXim.patchと言う名前で保存される。

$ cd ~/rpm/SOURCES
$ wget --no-check-certificate -O hoge "https://bugs.freedesktop.org/attachment.cgi?id=4874"
$ cat hoge | sed -e 's/lib\/X11\/im/modules\/im\/ximcp\/im/' | sed -e 's/lib\/X11/src/' > Xim.patch

ソースRPMをダウンロード

ここではyumdownloaderを使ってソースRPMをダウンロードするので、yum-utilsをインストールしておく。

# yum install yum-utils


/etc/yum.repos.d/fedora-core.repoをエディタで編集。
[core-source]セクションの「enabled」を1にする。

[core-source]
name=Fedora Core $releasever - Source
#baseurl=http://download.fedora.redhat.com/pub/fedora/linux/core/$releasever/source/SRPMS/
mirrorlist=http://mirrors.fedoraproject.org/mirrorlist?repo=core-source-$releasever&arch=$basearch
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-fedora file:///etc/pki/rpm-gpg/RPM-GPG-KEY


yumdownloaderでソースRPMをダウンロードする。

$ cd ~/rpm/SRPMS
$ yumdownloader --source libX11

スペックファイルを編集

ダウンロードしたソースRPMからスペックファイルを取り出す。

$ rpm -ihv libX11-1.0.3-4.fc6.src.rpm


${HOME}/rpm/SPECS/libX11.specをエディタで編集する。
次の3箇所を書き加える。


4行目、自分でRPMを作ったことが分かる様に適当な文字を加える。

Release: 4%{?dist}.spr1


12行目から始まるパッチのリストに、「Patch3」を加える。

Patch0: libX11-0.99.3-datadir-locale-dir-fix.patch
# FIXME: https://bugs.freedesktop.org/show_bug.cgi?id=3646 seems to indicate
# this patch is now committed upstream.  When libX11-1.0.4 is released,
# manually confirm each patch hunk before removal.
Patch1: libX11-nls-indic-locales-bug185376.patch
Patch2: dont-forward-keycode-0.patch
Patch3: Xim.patch


55行目付近、ここにも「%patch3」を加える。

%patch1 -p1 -b .nls-indic-locales-bug185376
%patch2 -p1 -b .dont-forward-keycode-0
%patch3 -p0 -b .Xim

インストール

下記通りにコマンドを入れてしばらくすると、${HOME}/rpm/RPMS/****にRPMファイルが出来上がる。
「--target」オプションは自分のマシンのアーキテクチャに合わせる。

$ rpmbuild -bs libX11.spec
$ cd ../SRPMS
$ rpmbuild --rebuild --target=i686 libX11-1.0.3-4.spr1.src.rpm


出来上がったRPMファイルは、「rpm -Uhv --oldpackage」でインストールする。

$ cd ~/rpm/RPMS/i686
$ su
# rpm -Uhv --oldpackage \
libX11-1.0.3-4.spr1.i686.rpm \
libX11-devel-1.0.3-4.spr1.i686.rpm