Как я устанавливал FreeCAD 0.17 в Gentoo

Russian forum
Forum rules
Правила форума и полезная информация

ПОЖАЛУЙСТА! Начиная обсуждение, обязательно....
Baritone
Posts: 13
Joined: Fri Jul 29, 2016 4:06 pm
Location: Москва

Как я устанавливал FreeCAD 0.17 в Gentoo

Postby Baritone » Sun Jul 15, 2018 2:14 pm

Проблема установки FreeCAD возникла из-за отказа Gentoo от qt4. Какое-то время основной репозиторий gentoo предлагает обходной путь - установка FreeCAD 0.16 без qtwebkit, но результат больше похож на издевательство - половина всего не работает. Сейчас и этот урезанный вариант был удалён.

Разумеется, первым делом я поискал, кто как решает эту проблему. Нашёл здесь, на форуме:
How are linux folks compiling freecad 0.17 with qt5?
То есть скомпилировать можно и под qt5 (qtwebkit под qt5 в gentoo имеется), поэтому решил идти этим путём.

После игр с cmake выяснилось, что надо ставить опцию использования qt5, но при этом требуется shiboken2, в то время как в gentoo PySide и, соответственно, shiboken, только версии 1.2. Кроме того, возникает проблема с версией coin3d - только четвёртая совместима с qt5, но официального релиза ещё нет.

Первая проба - установить shiboken2 с помощью pip ( emerge dev-python/pip ). Подсказку взял в официальном руководстве здесь. Это можно сделать только для отдельного пользователя (pip предупреждает, что в противном случае может грохнуть python, поэтому надо использовать опцию --user), что меня на первое время устраивает:

Code: Select all

pip install --user --index-url=http://download.qt.io/snapshots/ci/pyside/5.11/latest/ pyside2 --trusted-host download.qt.io
Тогда shiboken устанавливается в каталог ${HOME}/.local. Перед запуском pip мне, разумеется, потребовалось установить dev-qt/qtxmlpatterns, версии больше 5, для qt5.

Установка pyside и shiboken в систему через менеджер пакетов portage так же возможна, в наиболее полном объёме созданием всех необходимых для FreeCAD ebuildов озаботился пользователь Waebbl. Его оверлей можно присоединить через layman: layman -a waebbl

К сожалению, но ни один из них у меня в текущем виде не заработал, всех их пришлось допиливать. Во-первых, его его ebuildы ориентированы на скачивание прямо определённой ветки репозитория, для меня же была принципиальна установка именно из архива, чтобы он хранился на диске. Кроме того, у разработчиков уже имеются официальные релизы Pyside для Qt5.11, последний - 5.11.2: https://download.qt.io/official_release ... .11.2-src/ Разумеется, они ориентированы на Qt соответствующей версии, у меня они установились лишь после установки qt-5.11. Дополнительной проблемой стало, что скомпилированный shiboken2 при генерации опций компиляции Pisyde указал не все необходимые пути к заголовочным файлам, пришлось включить в ebuild для pyside корректировку исходников.

Заметно больше проблем было с компиляцией Coin3d 4-й версии. В итоге выяснилось, что ebuildы, ориентированные на сборку через cmake, как находящийся в официальном репозитории, так и созданный не работают, сгенерированные ими Makefile "забывают" скомпилировать и положить в библиотеку значительную часть функций, необходимых для компиляции FreeCAD. Обойти проблему удалось путём переписывания ebuildа на использование "старого доброго" configure. Но даже несмотря на это, FreeCAD смог скомпилироваться лишь со снапшотом от 21.09.2018, для которого Waebbl создал один из ebuildов.

Огромная благодарность Waebbl! Насчёт моих версий ebuild-ов пишите в личку.
Baritone
Posts: 13
Joined: Fri Jul 29, 2016 4:06 pm
Location: Москва

Re: Как я устанавливал FreeCAD 0.17 в Gentoo

Postby Baritone » Wed Oct 31, 2018 8:24 pm

После этого появилась возможность начать настраивать компиляцию FreeCAD. Там у cmake много важных опций, в том числе, что особо важно, различные пути, без которых cmake не может найти даже OpenCASCADE. Чтобы видеть все проблемные опции, я использовал ccmake (эта полноэкранная версия cmake устанавливается при USE=ncurses)

Исходники FreeCAD 0.17 (стандартный), я распаковал в системный каталог /usr/src.

Code: Select all

mkdir ${HOME}/src/freecad
cd ${HOME}/src/freecad
ccmake /usr/src/FreeCAD-0.17
Далее делаю пробную конфигурацию (нажимаю "c"), и смотрю, чего не хватает. В первую очередь, конечно, надо будет установить опцию BUILD_QT5, потом множество других путей установки и так далее. В итоге у меня сформировался следующий набор опций для ccmake:

Code: Select all

cmake  -D_RESPECT_CMAKE_BUILD_DIR=1 -DBUILD_QT5=ON -DCXXFLAGS="-D_OCC64" -DFREECAD_USE_EXTERNAL_KDL="OFF" \
	-DOCC_INCLUDE_DIR="${CASROOT}"/include/opencascade/ -DOCC_LIBRARY_DIR="${CASROOT}"/lib/ \
    -DFREECAD_USE_OCC_VARIANT="Official Version" \
    -DMEDFILE_INCLUDE_DIRS=/usr/include/libmed/ -DOPENMPI_INCLUDE_DIRS=/usr/include \
    -DPYTHON_EXECUTABLE=/usr/bin/python3.6 -DPYTHON_INCLUDE_DIR=/usr/include/python3.6m -DPYTHON_LIBRARY=/usr/lib/libpython3.6m.so \
	-DBoost_PYTHON3_LIBRARY_RELEASE=/usr/lib/libboost_python-3.6-mt.so \
    -DPYTHON_BASENAME=.cpython-35m-x86_64-linux-gnu -DPYTHON_SUFFIX=.cpython-35m-x86_64-linux-gnu \
    /usr/src/FreeCAD-0.17
Дополнительной проблемой стали опять же мелкие изменения в последних qt, если использовать qt-5.11 (а у нас будет именно она, если мы хотим ставить pyside из релизных тарбалов), требуется патч (по счастью, уже включённый в оверлей уважаемым Waebbl), под банальным названием qt5.11.patch. В итоге мне удалось переделать ebuild так, что FreeCAD 0.17 смог успешно скомпилироваться.

Насчёт моих ebuild-ов пишите смело! Я бы их выложил, но, не будучи уверен, что они заработают у кого-нибудь ещё, нуждаюсь в обратной связи, чтобы сделать необходимые исправления.
brothermechanic
Posts: 7
Joined: Tue Mar 20, 2018 11:20 am

Re: Как я устанавливал FreeCAD 0.17 в Gentoo

Postby brothermechanic » Mon Nov 12, 2018 5:16 pm

используйте waebbl оверлей!
Baritone
Posts: 13
Joined: Fri Jul 29, 2016 4:06 pm
Location: Москва

Re: Как я устанавливал FreeCAD 0.17 в Gentoo

Postby Baritone » Wed Nov 21, 2018 7:55 pm

brothermechanic wrote:
Mon Nov 12, 2018 5:16 pm
используйте waebbl оверлей!
Да, я тоже советую всем его оверлей, но, увы, у меня его ebuildы на момент написания сообщения не заработали, их пришлось допиливать. Например, Coin3d версии 4 у меня при компиляции с помощью cmake создал библиотеку, куда не были включены вызовы многих функций, необходимых для компиляции FreeCAD, пришлось переписывать ebuild для использования ./configure. pysyde не скомпилировался из-за ошибки в shiboken, которую удалось скомпенсировать следующим костылём внутри pyside.ebuild, добавленного внутрь функции src_prepare():

Code: Select all

        sed -i -e '/# Contains include directories to pass to shiboken/a \    set(gcc_include_dirs /usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/include/${PATH_SEP}/usr/lib/gcc/x86_64-pc-linux-gnu/7.3.0/include-fixed/)' \
                ./cmake/Macros/PySideModules.cmake || die
        sed -i -e 's/set(shiboken_include_dirs /set(shiboken_include_dirs ${gcc_include_dirs}${PATH_SEP}/' ./cmake/Macros/PySideModules.cmake || die
Проблема этого исправления в том, что он ориентирован на определённую версию компилятора (7.3.0), поэтому я не рискую предложить исправленный ebuild в общий доступ.
P.S.У waebbl в последних обновлениях оверлея появились ebuildы для Pysyde2, использующие архив релиза 5.11.1. Он у меня скомпилировался нормально. Теперь остался вопрос с компиляцией Coin3d, текущая версия которого при использовании ebuildов, ориентированных на cmake, собирается с ошибками.