secretbase.log

.NET/C#/Pythonなど

Windows上でソースコードから開発版TortoiseHg をビルドしてみる

Mercurial & TortoiseHg Advent Calendar 2013 - connpass の 8日目のエントリです*1

TortoiseHg を 使っているとちょっと改良してみたいなぁと感じることもありますが、Windows上のビルド環境構築はけっこう面倒だったりしますね。Windows 上で環境をスクラッチでソースコードからビルドしてみましたのでご紹介します。

f:id:cointoss1973:20131224133445p:plain

環境構築の概要

Windows 上での TortoiseHg のビルドは、 thg-winbuild リポジトリを用います。*2

手順は、TortoiseHg の thg-winbuild リポジトリの README に記載されている内容を参考にしています。
https://bitbucket.org/tortoisehg/thg-winbuild/src

ここでは Windows 7 の 32-bit および 64-bit を準備します。

ビルド環境


それでは、はじめましょう。

Mercurial ビルドに必要なもの

まずは、Mercurial をビルドするために必要な環境を準備しましょう。

Python 2.7.6

Windows用のインストーラーからインストールします。ここでは 2.x系の最新である 2.7.6 をインストールします。

32-bit http://www.python.org/ftp/python/2.7.6/python-2.7.6.msi
64-bit http://www.python.org/ftp/python/2.7.6/python-2.7.6.amd64.msi

  • インストール先

C:\Python27
C:\Python27-x64


C++ Compiler

Visual Studio 2008 Express Edition を入れましょう

  • Visual Studio 2008 Express Edition CD(DVD)イメージ版のダウンロード

http://go.microsoft.com/?LinkId=9348306

Visual Studio 2008 は Python 2.7 の場合の組み合わせです。(MinGW/MSYS は使わないほうが良いです)

gettext

下記からセットアッププログラムを最新版をダウンロードします
http://gnuwin32.sourceforge.net/packages/gettext.htm

gettext-0.14.4.exe が最新。


py2exe

http://sourceforge.net/projects/py2exe/
http://sourceforge.net/projects/py2exe/files/py2exe/0.6.9/

32-bit py2exe-0.6.9.win32-py2.7.exe
64-bit py2exe-0.6.9.win64-py2.7.amd64.exe

上記 exe を実行してインストール。

Windows Installer XML

WiX の最新安定板を用いてよいでしょう。
ちなみに WiX38.exe が現時点の最新ですのでこれを入れます。*4
http://wix.codeplex.com/releases/view/115492


setuptools

こちらも PyPI で提供されているパッケージになります。
http://pypi.python.org/pypi/setuptools

Windows の場合は、下記手順でインストール可能です。
https://bitbucket.org/pypa/setuptools/raw/bootstrap/ez_setup.py

python ez_setup.py を実行しましょう。

C:\Python27\python.exe ez_setup.py
C:\Python27-x64\python.exe ez_setup.py

docutils

PyPIで提供されている Pythonパッケージ のひとつです。
そして easy_install docutils を実行すればOK。

C:\Python27\Scripts\easy_install.exe docutils

Sphinx (docutils, jinja2, pygments, etc)

こちらも PyPIで提供されているPythonパッケージ。
sphinxをインストールします。

C:\Python27\Scripts\easy_install.exe sphinx
C:\Python27-x64\Scripts\easy_install.exe sphinx

ドキュメントのビルドに必要な環境準備

MiKTeX (to build PDF docs)

setup-2.8.3553.exe をダウンロードし実行したところ、2.8はもうサポートが切れているといったメッセージが出て入らない。最新2.9 インストーラーをダウンロードしインストール。

HTML Help Workshop (to build CHM docs)

htmlhelp.exe をインストール。


TortoiseHgのビルド・インストーラーに必要なソフトウェア

PyQt 4.8 or later

http://www.riverbankcomputing.co.uk/software/pyqt/download
Pythonのバージョンとあわせたバイナリをダウンロード。
PyQt4-4.10.3-gpl-Py2.7-Qt4.8.5-x32.exe

SVN

TortoiseSVN http://tortoisesvn.net/downloads.html
TortoiseSVNインストール時に、 svn のコマンドライン版を選択しインストールしておく。

comtypes (no longer optional)

  • 32-bit

http://sourceforge.net/projects/comtypes/files/comtypes/0.6.2/
http://sourceforge.net/projects/comtypes/files/comtypes/0.6.2/comtypes-0.6.2.win32.exe/download

  • 64-bit

http://sourceforge.net/projects/comtypes/files/comtypes/0.6.2/comtypes-0.6.2.zip/download
http://sourceforge.net/tracker/?func=detail&aid=3036368&group_id=115265&atid=692940

64-bitの場合は、ソースコードからインストールしましょう。
上記パッチは trunk に取り入れられているので、svnのtrunkからインストールします。

svn checkout https://svn.code.sf.net/p/comtypes/code/trunk comtypes-trunk
cd comtypes-trunk
C:\Python27-x64\python.exe setup.py install

Subversion Python bindings (no longer optional)

https://bitbucket.org/tortoisehg/thg-winbuild/downloads/svn_1.7.5_py27_x86.zip
https://bitbucket.org/tortoisehg/thg-winbuild/downloads/svn_1.7.5_py27_x64.zip
zip を解凍し、 svn と libsvn フォルダを site-packages 以下にコピーする

C:\Python27\Lib\site-packages
C:\Python27-x64\Lib\site-packages

以上で必要なビルドに必要なソフトウェアの準備が完了しました。


ビルド手順

ソースコード取得

コマンドプロンプトで下記コマンドを実行。

hg clone https://bitbucket.org/tortoisehg/thg-build
cd thg-build
python setup.py 

ビルドに必要なリポジトリソースコードをcloneします。けっこう時間がかかるのでコーヒーでも飲みましょう。

スクリプト調整

thg-build/winbuild/setup.py の下記 try_paths の引数に 2.9 のパスを追加しておきます。

    if not pdflatex:
        found = try_paths([r'\MiKTeX 2.7\miktex\bin\Pdflatex.exe',
                           r'\MiKTeX 2.8\miktex\bin\Pdflatex.exe',
                           r'\MiKTeX 2.9\miktex\bin\Pdflatex.exe'])

ビルド

set LANGUAGE=en
cd winbuild
"C:\Python27\python.exe setup.py --thg-dev" → x86用のmsiパッケージがビルド
"C:\Python27-x64\python.exe setup.py --thg-dev" → x64用のmsiパッケージがビルド

※もし プロキシ設定(http_proxy)などビルドコンフィグレーションが必要な場合は、build.ini ファイルにセクションを追加してください。

最終成果物(msi)は、 thg-build\output 以下に msi ファイルが生成されます。

その他

もし mercurial など tortoisehg でビルド対象のパッケージがすでにインストールされていたら該当パッケージを別名にするか削除するかしておきましょう。

参考

最新TortoiseHg の各ソフトウェアバージョン TortoiseHg 2.10.1 時点
記バージョンですが、ここでは最新開発版をビルドしました。


入門TortoiseHg + Mercurial

入門TortoiseHg + Mercurial

*1:大遅刻><

*2:このリポジトリから setup.py にて内部的に必要なリポジトリを clone しますので他のリポジトリは意識する必要はありません。

*3:Windows 8 は未確認です

*4:最近 WiX 3.8がリリースされました