Как изменить devscript (пакет debian) для добавления поддержки Python 3 (специфично для GDCM-пакета)

Я использую GDCM в своем проекте в среде Python 2.7. Поскольку все больше движется к Python 3, я хотел бы установить python-gdcm для Python 3. Пакет использует SWIG для генерации интерфейса, и он должен поддерживать Python 3. Также имеется пакет Fedora, который делает это.

Я предполагаю, что простая модификация dsc-файла должна сделать это, но я никогда не работал с dsc-файлами, и я не уверен даже, с чего начать. Я даже не могу найти, где среда Python 3 должна быть применена в файле. Я нашел вики pbuilder (alt. Sbuild), которая, кажется, должна быть началом, но я был бы очень признателен, если бы у кого-то здесь были какие-то конкретные советы о том, как заставить это работать.

Обновить

Мне удалось получить источники, используя:

apt source python-gdcm

Из того, что я понимаю, глядя на gdcm-2.6.3/debian/python-gdcm.install он должен копировать файлы в любой /usr/lib/python* версия. Одна вещь, которая меня немного смущает, это то, что /usr/lib/python3.5/ не имеет dist-packages каталог в то время как /usr/lib/python2.7/ делает. Вместо Python 3 dist-packages расположены под /usr/lib/python3/ - не уверен, хотя, если это имеет значение. Я пытался просто скопировать файлы в Python 3 dist-packages каталог, но это только вызвало segfault при импорте пакета.

Здание из источника - обновление

Поэтому я столкнулся с ошибкой, которая побудила меня собрать пакет из исходного кода. Ошибка была исправлена ​​с использованием новой версии, и я смог скомпилировать этот пакет так, чтобы он загружался в консоль Python 3:

  1. Клонировать репозиторий git:

git clone --branch release git://git.code.sf.net/p/gdcm/gdcm

  1. Затем установите зависимости для сборки:

sudo apt-get build-dep python-gdcm

  1. Перед тем, как все щелкнуть, потребовалось несколько дополнительных зависимостей:

sudo apt install python-vtk6 libvtk6-dev cmake-curses-gui

  1. С использованием ccmake и настройка GDCM_WRAP_PYTHON к ПО и библиотеке GDCM_BUILD_SHARED_LIBS до ON† конфигурация работает, и библиотека может быть скомпилирована с поддержкой Python.

  2. Используйте раздел переключателей, чтобы перейти в расширенный раздел и установить пути Python в соответствии с настройками Python 3, используя чистый cmake вызов: cmake GDCM_WRAP_PYTHON=ON PYTHON_EXECUTABLE=/user/bin/python3 PYTHON_INCLUDE_DIR=/usr/include/python3.5 GDCM_BUILD_SHARED_LIBS=ON GDCM_USE_VTK=ON ../gdcm

  3. Пакет может быть установлен через checkinstall.

  4. Файлы Python (gdcm.py, gdcmswig.py, vtkgdcm.py а также _gdcmswig.so) закончилась в /usr/local/lib и необходимо вручную скопировать в /usr/local/lib/python3.5/dist-packages прежде чем пакет может быть загружен. Обратите внимание перед загрузкой сделать ldconfig обновить ссылки.

Мои оставшиеся вопросы:

  • Что я должен изменить в папке debian, чтобы ввести выше cmake настройки?
  • Есть ли способ сделать и Python 2, и Python 3 доступными одновременно? Я знаю множество пакетов, которые предоставляют оба, так что это должно быть тривиально добавить, хотя, вероятно, потребуется повторная компиляция, или?
  • Почему не cmake определить правильную папку Python, т.е. /usr/local/lib/python3.5/dist-packages? Это ошибка в файлах cmake или некоторые настройки, которые я пропускаю?

† Не использование общих библиотек вызвало эту ошибку:

 CMake Error at Utilities/VTK/CMakeLists.txt:796 (install):
   install TARGETS given no ARCHIVE DESTINATION for static library target
   "vtkgdcmPythonD".

0 ответов

Другие вопросы по тегам