smellman's Broken Diary

クソみたいなもんです

今日のRull Request: nodejs-rpm

今日仕事でサーバセットアップをしていたんですが、Rails3.2.xというわけでnodejs入れないとと思って前職で大変お世話になった @kazuhisya さんの nodejs-rpm を使ってビルドをしてみたんです。
そしたら、動かないんですよ。原因は平たく言うとCentOS5.8なんです。
止まってる場所は./configureで、なんか普通のconfigureの止まり方と違うので見てみたら単なるPythonスクリプトなんです。で、止まってるところが文法エラーでちゃんと見てみたらPython2.5ぐらいから入った文法っぽいんですね。で、configureの先頭には #!/usr/bin/env python とか書いてあるんです。あかん、それPython2.4やで。
というわけでとりあえずEPELでpython26をぶちこんでから、Jenkinsでおなじみの @cactusman さんの修正したいソースRPMにパッチを作って当てる方法を参考にしてspecで使えるパッチを作成。
あとは今回の対象がRHEL5でも起こりえるので redhat-rpm-config に入っている /usr/lib/rpm/redhat/dist.sh で.el5という文字が取れるかどうかでパッチを当てるか判別。
ここまでやってビルドできるかなーと思ったんだけど、今度は python tools/install.py って叩いてるところで失敗。見てみるとMakefileで$(PYTHON)って書かれていて先頭に環境変数を読むようになっていたので%buildに環境変数を上書きするようにしたところ今度は無事成功。
というわけでRull Requestが完成。
https://github.com/kazuhisya/nodejs-rpm/pull/13
RHEL6系が手元にないのでテストしてないのはご愛嬌です。
ちなみに、本当ならRHEL5系の判断でfedoraのドキュメントにある%{dist}とか、openSUSE:Build Service cross distribution howtoにある値とか使いたかったんだけど、前者はどうもバグ報告はあるものの入れてもらえず、後者はrpm --evalしたときに値が取れないのと505って数字が大丈夫なのか不安だったので使いませんでした。ちょっとださいですね><