# Информация для мэйнтейнеров пакета в Linux-дистрибутивах ## Пререквизиты - Современный дистрибутив с актуальной версией компилятора (минимум gcc 4.8) - На выбор: Qt>= 4.8 или >= 5.3 - Python >= 3.2 - CMake >= 3.0 ## Готовое решение для RPM-SPEC В поставке есть скрипт, который генерирует SPEC-файл для openSUSE. Его легко адаптировать для любого другого дистрибутива созданием файла `rpm-conventions.ДИСТРИТУБИВ.json`. Pull-requests are welcome! ``` # Создание tar.gz архива из git-репозитория KUMIR2_BUNDLE_NAME=`python3 scripts/query_version_info.py --mode=package_bundle_name --prefix=kumir2-` git archive --format tar --prefix ${KUMIR2_BUNDLE_NAME}/ -o ${KUMIR2_BUNDLE_NAME}.tar HEAD gzip -9 ${KUMIR2_BUNDLE_NAME}.tar # Создание SPEC-файла SPEC_FILE_NAME=kumir2-unstable.spec # для нестабильных версий из master # или SPEC_FILE_NAME=kumir2.spec # для версий, у который есть git-теги python3 scripts/generate_rpm_spec.py \ --dist=openSUSE \ # имя дистрибутива (см. выше про JSON-файл) --release=123 \ # номер сборки --packager="Vasya Pupkin " \ # имя мантейнера в файле > $SPEC_FILE_NAME # имя файла для вывода ``` ## Рекомендации по именованию версий и структуре пакетов ### Стабильные версии и текущая версия Стабильные версии - это только те, для которых в VCS git предусмотрены теги, например, `2.1.0-rc7`. Если склонировать из этого репозитория, то во время сборки этот номер версии будет отображаться в "Инфо->О программе". Текущая версия - в ветке `master`. Стабильность никто не гарантирует. Более того, никто не гарантирует, что будет что-то работать, если смешивать часть компонент из стабильной и текущей версий. Во избежание этого, лучше делать два разных пакета, например 'kumir2' и 'kumir2-unstable' у которых в зависимостях явно прописано, что они не могут быть установлены одновременно. ### Пакет для разработчиков У нас теперь появилась возможность сборки сторонних плагинов, не используя дерево исходных текстов Кумир. Следующие файлы и каталоги нужно вынести в пакет `-devel`: - `/usr/include/kumir2` - `/usr/include/kumir2-libs` - `/usr/lib64/kumir2/gen_actor_source.py` - `/usr/lib64/cmake/Kumir2` ### Пакеты сторонних разработчиков Все, что находится вне этого репозитория - не наше, и мы знать не знаем, что это такое. Поэтому все сторонние плагины к Кумир-2 нужно упаковывать в отдельные пакеты, и называть их как-нибудь, чтобы это было понятно, что является сторонним продуктом, например, с префиксом или суффиксом `addon`. ### Отдельный пакет для общих файлов Рекомендуется вынести общие файлы базовой поставки (`/usr/lib64/kumir2` и `/usr/share/kumir2`) в отдельный пакет. В дальнейшем планируется использовать инфраструктуру Кумир не только для одноименной программной системы, но и как базовую платформу для других ЯП, в частности, Python. Заставлять пользователей, которым нужен только Python, еще и устанавливать Кумир - это не совсем гуманно. ## Какую версию Qt использовать? В настоящее время [пока ещё] рекомендуется использовать Qt4, так как GUI лучше протестировано на реальных пользователях. Но в какой-то момент мы откажемся от поддержки Qt4 в пользу Qt5. ## Порядок сборки С Qt4: ``` mkdir build && cd build cmake -DCMAKE_INSTALL_PREFIX=/usr .. make sudo make install ``` С Qt5: ``` mkdir build && cd build cmake -DCMAKE_INSTALL_PREFIX=/usr -DUSE_QT=5 .. make sudo make install ``` Внимание! Перед упаковкой поставки, обязательно убедитесь, что install root (в данном случае - /usr) совпадает со значением переменной `KUMIR2_ROOT` в файле `/usr/lib64/cmake/Kumir2/distribution_build_config.cmake`. При необходимости - измените только этот файл. В противном случае, `-devel` не будет работать.