MAINTAINERS_ru.md 5.63 KB
Newer Older
1 2 3 4 5 6 7 8
# Информация для мэйнтейнеров пакета в Linux-дистрибутивах

## Пререквизиты
 - Современный дистрибутив с актуальной версией компилятора (минимум gcc 4.8)
 - На выбор: Qt>= 4.8 или >= 5.3
 - Python >= 3.2
 - CMake >= 3.0

9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
## Готовое решение для 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 <vasya@dist.ro>" \  # имя мантейнера в файле
        > $SPEC_FILE_NAME            # имя файла для вывода
```

31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
## Рекомендации по именованию версий и структуре пакетов
### Стабильные версии и текущая версия
Стабильные версии - это только те, для которых в 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`.

55 56 57 58 59 60
### Отдельный пакет для общих файлов
Рекомендуется вынести общие файлы базовой поставки (`/usr/lib64/kumir2` и `/usr/share/kumir2`) в отдельный пакет. 
В дальнейшем планируется использовать инфраструктуру Кумир не только для одноименной программной системы, но и как
базовую платформу для других ЯП, в частности, Python. Заставлять пользователей, которым нужен только Python, еще и
устанавливать Кумир - это не совсем гуманно.

61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84
## Какую версию 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` не будет работать.