Как собрать DParser for Python с помощью Visual C++ 2005?

Существует два способа собрать DParser for Python под Windows:

  1. Легкий – воспользоваться GCC из MinGW и немного пошаманить;

  2. Интересный – попытаться сделать тоже самое с помощью Visual C++ 2005.

Естественно, что я выбрал второй вариант. :-)

(На самом деле причина довольно прозаична – не хотелось собирать один проект двумя разными компиляторами).

Исходные данные:

Последовательность действий:

  1. Распаковываем DParser куда-нибудь, скажем “C:\temp\D”.

  2. Применяем патч, который в добавляет недостающие (из-за отсутствующих заголовков) объявления и правит кое-где код.

pushd C:\\temp
patch -Np1 -d D < dparser-1.15.diff

Кроме правки кода, патч добавляет в несколько новых файлов:

* "Jamfile.v2" и "Jamroot" – скрипты для сборки DParser с помошью Boost.Build v2;

* "python\setup_win32.py" – Windows версия скрипта для сборки DParser for Python;

* "python\setup_win32.cmd" – обёртка для setup_win32.py, нужная главным образом для внедрения манифеста в собранную .DLL.
  1. Компилируем DParser:
cd D
bjam free

Для amd64:

cd D
bjam free architecture=x86 address-model=64

Для Itanium:

cd D
bjam free architecture=ia64

При этом собранные библиотеки будут скопированы в “C:\temp\D\dist”.

  1. Запускаем “Visual Studio 2005 Command Prompt” (либо “Visual Studio 2005 x64 Cross Tools Command Prompt”, либо “Visual Studio 2005 Itanium Cross Tools Command Prompt”) под учётной записью администратора (под любым пользователем, имеющим доступ на запись в каталог, где установлен Python).

  2. Если вы компилируете 32-х битную версию, то дополнительно следует поправить проверку на совместимость версий компилятора в “C:\Python25\Lib\distutils\msvccompiler.py”. Для этого нужно применить ещё один патч:

pushd C:\\Python25\\Lib\\distutils
patch msvccompiler.py msvccompiler.py.diff
popd

Этот шаг не обязателен, если вы собираете версию для amd64 или ia64.

  1. Cобираем и устанавливаем DParser for Python:
cd python
setup_win32.cmd
  1. И наконец, проверяем что у нас получилось:
python
import dparser
print dparser

DParser has been installed successfully.

Готово.

comments powered by Disqus