Skip to content
This repository has been archived by the owner on Oct 3, 2024. It is now read-only.
cra edited this page Oct 20, 2012 · 4 revisions

С нашими объемами непонятного кода, нам недостаточно использовать doxygen.

Нужно подробно описать все аспекты работы с расписатором.

Table of Contents

Development Guide

Инструменты и справка

Стиль

Core

Ядро наиболее полно описано в doxygen, однако там это описание несколько устарело.

Модули

Модули разрабатываются на C++ и собираются как shared objects, подгружаются автоматически и предоставляют ядру механизмы пользовательского интерфейса и хранения данных. Сейчас существуют следующие модули:

Скрипты

Скрипты разрабатываются на Lua, и позволяют довольно быстро и удобно работать с ядром. Сейчас есть следующие направления работы:

Концепция и дизайн

Сюда нужно вставить пару кусков из README, а также описать (а может и нарисовать) скетчи, представленные нам дизайнерами.

Сборка, установка и запуск

Для сборки понадобятся:

  • CMake (>=2.8.3);
  • Boost;
  • Lua (=5.1);
  • libreadline;
  • G++ (>=4.6.2);
  • sqlite3;
  • git.
Будьте внимательны, на Ubuntu и Debian замечен баг #51.

Сборка

Получение исходного кода

    git clone https://github.com/it-workshop/UniSched.git

Можно использовать запакованную в архив копию директории с исходным кодом, если в неё был добавить файл version.h.

Создание директории сборки

Желательно вне транка выполнить:

    mkdir build
    cd build

Конфигурация проекта

Для конфигурации используется CMake.

Опции сборки

Опции указываются в формате -DИМЯ=ЗНАЧЕНИЕ. Опция-флаг может принимать только два значения (Y, N либо ON, OFF). Неуказанные явно опции принимают значение по-умолчинию, записанное в CMakeLists.txt. Пример использования опций сборки:

    cmake -DCMAKE_BUILD_TYPE=Debug -DWITH_TESTS_CORE=Y ../UniSched
Флаги
Опция сборки Значение по-умолчнию Описание
WITH_DUMMYUI Y Собрать DummyUI
WITH_CLI Y Собрать CLIUI
WITH_EXT_PYTHON_CLI N Собрать экспериментальные Python примочки к CLIUI
WITH_LUAUI Y Собрать LUAUI
WITH_STORAGE_SQLITE Y Собрать SQLiteStorage
WITH_DOCS Y Сконфигурировать цель для сборки документации (требуется doxygen)
WITH_TESTS_CXX11 Y Проверить поддержку компилятора стандарта C++11. Не отключайте данную опцию — это приведет к ошибке сборки.
WITH_TESTS_CORE N Регрессивные тесты ядра. Отключены для ускорения сборки. Обязательно включайте при внесении изменений в ядро — это позволит отловить негативные изменения поведения ядра.
BUILD_TARBALL N Создать в директории с исходным кодом version.h, позволяющий запаковать код в архив и использовать вне зависимости от git репозитория.
Другие опции
Опция сборки Значение по-умолчнию Возможные значения Описание
CMAKE_BUILD_TYPE ??? Debug, ... Включение отладочной информации

Сборка

Непосредственно сборка проекта

Рекомендуется использовать параметр программы make -jX, где X — количество потоков, оптимальным числом является число на единицу большее, чем количество ядер процессора/процессоров.

    make all -j3

Сборка тестов

    make test

Сборка документации

Необходим doxygen.

    make docs

Конфигурация запуска

Конфигурационный файл программы — скрипт на языке lua, задающий все необходимые параметры. Имя файла скрипта можно передать программе через флаг -f. По умолчанию программа ищет конфигурационный файл в "$HOME/.unisched/rc.lua", где $HOME — домашняя директория пользователя.

Параметры, которые необходимо установить:

Параметр Описание
config.ui Модуль Модуль:UI
config.storage Модуль Модуль:Storage
config.modules_path Путь для поиска модулей, разделенный символами ':'. Укажите пути к директориям 'src/modules/storage' и 'src/modules/ui' внутри директории сборки.
config.sqlite_db В случае использования SQLiteStorage — путь к файлу sqlite3 базы данных.
config.httpd В случае использования LuaUI в режиме WebUI — настройки http сервера.
config.httpd.host адрес хоста (к примеру '0.0.0.0')
config.httpd.port порт (к примеру 8000)
config.httpd.api_prefix Префикс методов api, так как возможность изменения префикса реализована только для серверной стороны. Не меняйте его — оставьте '/api/'.
config.httpd.static_dir Путь к директории, которую сервер воспринимает как корневую директорию. Пропишите путь к 'src/web/static' внутри директории с исходным кодом.
config.script Рабочий скрипт. При использовании LuaUI, для запуска WebUI укажите путь к 'src/web/server.lua' в директории с исходным кодом.

также можно определить функцию onload, которая будет исполнена при старте программы. К примеру:

    function onload()
        print('Now: '..os.date())
    end

Пример конфигурационного файла можно найти в 'fixtures/rc.lua'.

Запуск программы

Собранная программа располагается в поддиректории src каталога сборки и имеет имя 'raspisator'.

    ./src/raspisator

Сюда нужно добавить параметры программы.

Опция сборки Значение по-умолчнию Возможные значения Описание
- - - -

Документация doxygen

Собранная документация располагается в каталоге 'doc' директории сборки.

Вы можете открыть файл 'doc/html/index.html' в своем браузере, или перейти в каталог 'doc/latex' и собрать документацию в pdf, при условии, что у вас установлена программа latex.