Skip to content

Building Ironclad 2.7

Pavel Koneski edited this page Dec 17, 2023 · 3 revisions

Ironclad 2.7 only builds as a 32-bit package. Only Windows builds are supported.

Building on Windows

Using a Docker container

In the root of the project on the 2.7 branch, there is a Dockerfile that contains Docker instructions to create a Docker image suitable to run a Docker container with all tools necessary for the build of the 2.7 branch of Ironclad. Before using it, make sure that Docker Desktop is set to use Windows containers.

To build the container image and then run the container, change the current directory to the project root directory, check out branch 2.7 and, using PowerShell:

docker build -t ironclad-build:v2.7 -m 2GB .
docker run -it -v ${pwd}:C:\ironclad --name ironclad-build-v2.7 ironclad-build:v2.7

Subsequent re-runs of the created container can be done with:

docker start -ai ironclad-build-v2.7 

Install build dependencies

For building outside of a Docker container, install the following prerequisites:

  • Python 2.7 python-2.7.8.msi

  • SCons 2.3.4 scons-2.3.4-setup.exe

  • mingw mingw-get-setup.exe

    • install and start mingw-get

    • under Basic Setup select mingw32-base mingw32-gcc-g++ msys-base

    • under All Packages select mingw32-pexports

    • Apply Changes

    • add C:\MinGW\bin to PATH

    • if you have cygwin, make sure PATH has no references to it or at least it is after MinGW

  • cmake cmake-3.0.2-win32-x86.exe

  • GCCXML 0.9.0

    • get the source

      $ git clone  https://github.com/gccxml/gccxml
    • generate makefiles with cmake

      • open cmake gui

      • provide source code directory (e.g. c:\Users\auser\github\gccxml)

      • provide build directory, next to source directory (e.g. c:\Users\github\gccxml-build)

      • configure

      • select MinGW Makefile and Use default native compilers, Finish, wait …​

      • set CMAKE_BUILD_TYPE to Release

      • generate

    • compile using mingw

      in cmd window, change dir to build and invoke

      $ mingw32-make.exe
    • install into c:\Program File (x86)\gccxml

      in cmd.exe with administrator privileges, change dir to the build and invoke

      $ mingw32-make.exe install
  • IronPython 2.7.5 IronPython-2.7.5.msi

  • install pyexpat from fepy

    take pyexpat.py rename to expat.py and copy into "c:/Program Files (x86)/IronPython 2.7/lib/xml/parsers"

    $ copy "c:/Python27/lib/xml/dom/expatbuilder.py" "c:/Program Files (x86)/IronPython 2.7/lib/xml/dom"
    $ copy "c:/Python27/lib/xml/sax/expatreader.py" "c:/Program Files (x86)/IronPython 2.7/lib/xml/sax"
  • pygccxml 1.6.2 pygccxml-v1.6.2.tar.gz

    after unpacking install into ironpython site-packages

    $ ipy setup.py install --user
  • nasm 2.11 nasm-2.11.06-installer.exe

    once setup is complete copy nasm.exe to MinGW/bin

    $ copy C:\Users\auser\AppData\Local\nasm\nasm.exe c:\MinGW\bin
  • up to date version of .NET (4.0 or better). No effort is made to support .NET 3.5 (CLR 2.0)

At this point the version check script (bin/versions.bat) can be used to verify configuration.

c:\Users\auser\github\ironclad\bin>versions.bat
MINGWBASEDIR=C:\MinGW
gcc version 4.8.1 (GCC)
GNU gdb (GDB) 7.6.1
NASM version 2.11.06 compiled on Oct 20 2014
GNU ld (GNU Binutils) 2.24
GNU windres (GNU Binutils) 2.24
GNU dlltool (GNU Binutils) 2.24
PExports 0.46; Originally written 1998, Anders Norlander
GNU Make 3.82.90
#define __MINGW32_VERSION           3.20
#define __W32API_VERSION 3.17

Edit SConstruct

Ironclad’s build process is configured by SConstruct in the top- level directory. Go to the section marked PLATFORM-SPECIFIC GLOBALS, and change anything that looks wrong for your system. The values provided in current SConstruct are known to work under Windows 7 x64 with all dependencies installed in default locations.

MSVCR90_DLL is of particular note: to find it on your system, find a directory in windows/winsxs that starts with:

x86_Microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.

…​and use the full path to the msvcr90.dll therein.

Build

Having done the above, running scons in the top-level directory, from a cmd.exe shell, should build everything required by Ironclad.

$ cd C:\ironclad
$ scons

Clean

$ scons -c

Testing

Test dependencies

  • pysvn pysvn 1.7.9

  • numpy numpy 1.9.1

    patch numpy:

    $ cd c:\Python27\Lib\site-packages
    $ patch -p0 < c:\Users\auser\github\ironclad\misc\numpy.patch

Note: numpy is known to be broken.

Test

You can either fire up a complete test suite:

$ scons test

Or select subset, giving module, class or individual test case.

$ set IRONPYTHONPATH=.;C:\Python27\DLLs;C:\Python27\Lib\site-packages
$ ipy runtests.py tests.functionalitytest.BZ2Test.testFunctionsWork

TODO:

  • re-populate stub/* based on cpython 2.7.8


The original and outdated instructions can be found in doc/build.txt