win32-build.txt
130 lines
| 4.8 KiB
| text/plain
|
TextLexer
Bryan O'Sullivan
|
r1291 | The standalone Windows installer for Mercurial is built in a somewhat | ||
jury-rigged fashion. | ||||
Pascal Quantin
|
r12263 | It has the following prerequisites. Ensure to take the packages | ||
matching the mercurial version you want to build (32-bit or 64-bit). | ||||
Bryan O'Sullivan
|
r1291 | |||
Pascal Quantin
|
r12262 | Python 2.6 for Windows | ||
http://www.python.org/download/releases/ | ||||
Bryan O'Sullivan
|
r1291 | |||
Pascal Quantin
|
r12262 | A compiler: | ||
either MinGW | ||||
Bryan O'Sullivan
|
r1291 | http://www.mingw.org/ | ||
Pascal Quantin
|
r12262 | or Microsoft Visual C++ 2008 SP1 Express Edition | ||
http://www.microsoft.com/express/Downloads/Download-2008.aspx | ||||
Bryan O'Sullivan
|
r1291 | |||
Python for Windows Extensions | ||||
http://sourceforge.net/projects/pywin32/ | ||||
Pascal Quantin
|
r8058 | mfc71.dll (just download, don't install; not needed for Python 2.6) | ||
Bryan O'Sullivan
|
r1291 | http://starship.python.net/crew/mhammond/win32/ | ||
Pascal Quantin
|
r12311 | Visual C++ 2008 redistributable package (needed for >= Python 2.6 or if you compile with MSVC) | ||
Pascal Quantin
|
r12263 | for 32-bit: | ||
Pascal Quantin
|
r12311 | http://www.microsoft.com/downloads/details.aspx?FamilyID=9b2da534-3e03-4391-8a4d-074b9f2bc1bf | ||
Pascal Quantin
|
r12263 | for 64-bit: | ||
Pascal Quantin
|
r12311 | http://www.microsoft.com/downloads/details.aspx?familyid=bd2a6171-e2d6-4230-b809-9a8d7548c1b6 | ||
Pascal Quantin
|
r8058 | |||
Bryan O'Sullivan
|
r1291 | The py2exe distutils extension | ||
http://sourceforge.net/projects/py2exe/ | ||||
Pascal Quantin
|
r12262 | GnuWin32 gettext utility (if you want to build translations) | ||
Patrick Mezard
|
r9175 | http://gnuwin32.sourceforge.net/packages/gettext.htm | ||
Bryan O'Sullivan
|
r1291 | Inno Setup | ||
Steve Borho
|
r9356 | http://www.jrsoftware.org/isdl.php#qsp | ||
Pascal Quantin
|
r12262 | Get and install ispack-5.3.10.exe which includes Inno Setup Processor, | ||
Steve Borho
|
r9356 | which is necessary to package Mercurial. | ||
Bryan O'Sullivan
|
r1291 | |||
Lee Cantey
|
r4401 | ISTool - optional | ||
Bryan O'Sullivan
|
r1291 | http://www.istool.org/default.aspx/ | ||
Marco Barisione
|
r2384 | add_path (you need only add_path.exe in the zip file) | ||
http://www.barisione.org/apps.html#add_path | ||||
Patrick Mezard
|
r9179 | Docutils | ||
http://docutils.sourceforge.net/ | ||||
Patrick Mezard
|
r7660 | |||
Bryan O'Sullivan
|
r1291 | And, of course, Mercurial itself. | ||
Once you have all this installed and built, clone a copy of the | ||||
Mercurial repository you want to package, and name the repo | ||||
C:\hg\hg-release. | ||||
Pascal Quantin
|
r12262 | In a shell, build a standalone copy of the hg.exe program. | ||
Bryan O'Sullivan
|
r1291 | |||
Pascal Quantin
|
r12262 | Building instructions for MinGW: | ||
Thomas Arendsen Hein
|
r5081 | python setup.py build -c mingw32 | ||
Pascal Quantin
|
r12262 | python setup.py py2exe -b 2 | ||
Lee Cantey
|
r4401 | Note: the previously suggested combined command of "python setup.py build -c | ||
Pascal Quantin
|
r12262 | mingw32 py2exe -b 2" doesn't work correctly anymore as it doesn't include the | ||
Lee Cantey
|
r4401 | extensions in the mercurial subdirectory. | ||
If you want to create a file named setup.cfg with the contents: | ||||
[build] | ||||
compiler=mingw32 | ||||
Pascal Quantin
|
r12262 | you can skip the first build step. | ||
Lee Cantey
|
r4401 | |||
Pascal Quantin
|
r12311 | Building instructions with MSVC 2008 Express Edition: | ||
Pascal Quantin
|
r12263 | for 32-bit: | ||
"C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86 | ||||
python setup.py py2exe -b 2 | ||||
for 64-bit: | ||||
"C:\Program Files\Microsoft Visual Studio 9.0\VC\vcvarsall.bat" x86_amd64 | ||||
python setup.py py2exe -b 3 | ||||
Lee Cantey
|
r4401 | |||
Pascal Quantin
|
r8058 | Copy add_path.exe into the dist directory that just got created. | ||
If you are using Python up to version 2.5.4, copy mfc71.dll into the dist | ||||
directory that just got created. | ||||
Pascal Quantin
|
r12262 | If you are using Python 2.6 or later, or if you are using MSVC 2008 to compile | ||
mercurial, you must include the C runtime libraries in the installer. To do so, | ||||
Pascal Quantin
|
r12311 | install the Visual C++ 2008 redistributable package. Then in your windows\winsxs | ||
folder, locate the folder containing the dlls version 9.0.21022.8. | ||||
For x86, it should be named like x86_Microsoft.VC90.CRT_(...)_9.0.21022.8(...). | ||||
For x64, it should be named like amd64_Microsoft.VC90.CRT_(...)_9.0.21022.8(...). | ||||
Pascal Quantin
|
r12262 | Copy the files named msvcm90.dll, msvcp90.dll and msvcr90.dll into the dist | ||
directory. | ||||
Then in the windows\winsxs\manifests folder, locate the corresponding manifest | ||||
Pascal Quantin
|
r12311 | file (x86_Microsoft.VC90.CRT_(...)_9.0.21022.8(...).manifest for x86, | ||
amd64_Microsoft.VC90.CRT_(...)_9.0.21022.8(...).manifest for x64), copy it in the | ||||
Pascal Quantin
|
r12263 | dist directory and rename it to Microsoft.VC90.CRT.manifest. | ||
Bryan O'Sullivan
|
r1291 | |||
Patrick Mezard
|
r7660 | Before building the installer, you have to build Mercurial HTML documentation | ||
Martin Geisler
|
r10976 | (or fix mercurial.iss to not reference the doc directory): | ||
Patrick Mezard
|
r7660 | |||
cd doc | ||||
Martin Geisler
|
r10976 | mingw32-make html | ||
Patrick Mezard
|
r7660 | cd .. | ||
Lee Cantey
|
r4401 | If you use ISTool, you open the C:\hg\hg-release\contrib\win32\mercurial.iss | ||
file and type Ctrl-F9 to compile the installer file. | ||||
Steve Borho
|
r9356 | Otherwise you run the Inno Setup compiler. Assuming it's in the path | ||
you should execute: | ||||
Lee Cantey
|
r4401 | |||
Pascal Quantin
|
r12262 | iscc contrib\win32\mercurial.iss /dVERSION=foo | ||
Lee Cantey
|
r4401 | |||
Steve Borho
|
r9356 | Where 'foo' is the version number you would like to see in the | ||
'Add/Remove Applications' tool. The installer will be placed into | ||||
a directory named Output/ at the root of your repository. | ||||
Pascal Quantin
|
r12262 | If the /dVERSION=foo parameter is not given in the command line, the | ||
installer will retrieve the version information from the __version__.py file. | ||||
Bryan O'Sullivan
|
r1291 | |||
Pascal Quantin
|
r12263 | If you want to build an installer for a 64-bit mercurial, add /dARCH=x64 to | ||
your command line: | ||||
iscc contrib\win32\mercurial.iss /dARCH=x64 | ||||
Lee Cantey
|
r4401 | To automate the steps above you may want to create a batchfile based on the | ||
Pascal Quantin
|
r12262 | following (MinGW build chain): | ||
Lee Cantey
|
r4401 | |||
echo [build] > setup.cfg | ||||
echo compiler=mingw32 >> setup.cfg | ||||
Pascal Quantin
|
r12262 | python setup.py py2exe -b 2 | ||
Patrick Mezard
|
r7660 | cd doc | ||
Martin Geisler
|
r10976 | mingw32-make html | ||
Patrick Mezard
|
r7660 | cd .. | ||
Pascal Quantin
|
r12262 | iscc contrib\win32\mercurial.iss /dVERSION=snapshot | ||
Lee Cantey
|
r4401 | |||
and run it from the root of the hg repository (c:\hg\hg-release). | ||||