gitをソースからコンパイルする際のエラー

ソースダウンロード先:Google Code Archive - Long-term storage for Google Code Project Hosting.

gitの1.8.2.1をソースからコンパイルする際にエラーが発生しました。

make[2]: `GIT-VERSION-FILE' is up to date.
    GEN git-instaweb
    SUBDIR git-gui
    SUBDIR gitk-git
    SUBDIR perl
    SUBDIR git_remote_helpers
'import site' failed; use -v for traceback
'import site' failed; use -v for traceback
'import site' failed; use -v for traceback
Traceback (most recent call last):
  File "setup.py", line 5, in ?
    from distutils.core import setup
  File "/home/guest/lib/python2.7/distutils/core.py", line 12, in ?
    import os
  File "/home/guest/lib/python2.7/os.py", line 49, in ?
    import posixpath as path
  File "/home/guest/lib/python2.7/posixpath.py", line 315
    slash, dot = (u'/', u'.') if isinstance(path, unicode) else ('/', '.')
                               ^
SyntaxError: invalid syntax

pythonの3項演算子の構文が間違っているというエラーですが、インストールされているpythonは2.7だし、問題ないと思うのですが。。英語でぐぐってもなかなかそれらしい回答がない。pythonをユーザーフォルダでインストールしているのがいけないのか…?

そこで、バージョンを変えてgit-1.8.1.6をコンパイルしてみる。

    SUBDIR git_remote_helpers
'import site' failed; use -v for traceback
Traceback (most recent call last):
  File "setup.py", line 5, in ?
    from distutils.core import setup
  File "/home/guest/lib/python2.7/distutils/core.py", line 12, in ?
    import os
  File "/home/guest/lib/python2.7/os.py", line 49, in ?
    import posixpath as path
  File "/home/guest/lib/python2.7/posixpath.py", line 315
    slash, dot = (u'/', u'.') if isinstance(path, unicode) else ('/', '.')
                               ^
SyntaxError: invalid syntax

バージョン1.8.3でも。

    SUBDIR git_remote_helpers
'import site' failed; use -v for traceback
Traceback (most recent call last):
  File "setup.py", line 5, in ?
    from distutils.core import setup
  File "/home/guest/lib/python2.7/distutils/core.py", line 12, in ?
    import os
  File "/home/guest/lib/python2.7/os.py", line 49, in ?
    import posixpath as path
  File "/home/guest/lib/python2.7/posixpath.py", line 315
    slash, dot = (u'/', u'.') if isinstance(path, unicode) else ('/', '.')
                               ^
SyntaxError: invalid syntax

またか…。どうやらpythonのインストールの仕方が悪いようだ。マシン自体にインストールされているpythonは2.4だったので、三項演算子が使えない。どういうわけか2.4がどこからか呼ばれているみたいです。

そこで、もうこのgit_remote_helpersはインストールしないことに。

Makefileの1637行目

ifndef NO_PYTHON
  $(QUIET_SUBDIR0)git_remote_helpers $(QUIET_SUBDIR1) PYTHON_PATH='$(PYTHON_PATH_SQ)' prefix='$(prefix_SQ)' all
endif

ここを削除してmake install。今度はうまくいきました。とりあえずこれで使ってみる。