.. _ru_build: Сборка OutWiker =============== .. contents:: Содержание :depth: 3 Общие моменты, связанные со сборкой ----------------------------------- В данном разделе предполагается, что были проделаны все операции, описанные в разделе :ref:`ru_start`, т.е. скачаны исходники и установлены все требуемые библиотеки. Все задачи, связанные со сборкой, создают внутри папки :file:`build` папку, имя которой соответствует номеру текущей версии OutWiker в формате :file:`x.x.x.xxx`. Например, :file:`3.1.0.896`. Также внутри папки :file:`build` создается временная папка :file:`tmp`, предназначенная для хранения файлов во время сборки. Данная папка очищается перед каждой сборкой. Также перед каждой задачей сборки создается папка :file:`tmp/src`, которая содержит копию исходников в соответствии с настройками сборщика: собирается стабильная версия или нестабильная. Если собирается нестабильная версия, то после копирования из исходников удаляется файл :file:`versions_stable.xml`, остается только файл :file:`versions.xml`, описывающий изменения в текущей версии в формате для нестабильной версии. Если собирается стабильная версия, то после копирования исходников в :file:`tmp/src/` исходный файл :file:`versions.xml` удаляется, а файл :file:`versions_stable.xml` переименовывается в :file:`versions.xml`. Подробнее о формате файла :file:`versions.xml` см. раздел :ref:`ru_version_format`. Разные классы сборок могут добавлять дополнительные файлы в папку :file:`tmp`. Описанные возможности реализованы в классе :py:class:`buildtools.builders.base.BuilderBase`. Сборка осуществляется с помощью команд Invoke (см. раздел :ref:`ru_invoke`). .. _ru_bool: .. note:: Многие команды сборки принимают булевы параметры. Чтобы в такую задачу передать значение `True`, в качестве параметра в командной строке нужно передать одно из следующих значений: 1 или true (независимо от регистра). Чтобы передать значение False, нужно передать какое-либо другое значение. .. _ru_build_windows: Сборка под Windows ------------------ .. _ru_inv_win_using: Использование команды inv win ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Для того, чтобы собрать все виды дистрибутивов под Windows как нестабильную версию, используется команда .. code:: bash inv win Для того, чтобы собрать все виды дистрибутивов под Windows как стабильную версию, используется команда .. code:: bash inv win --is-stable или .. code:: bash inv win -i Для нестабильной версии будут созданы следующие артефакты в папке :file:`build/{{номер версии}}/windows`: * Папка :file:`outwiker_exe`, содержащая все файлы, необходимые для запуска под Windows, включая все плагины в папке :file:`plugins`. * :file:`outwiker_win_unstable.zip` - zip-архив, содержащий содержимое папки :file:`outwiker_exe`, но без плагинов во вложенной папке :file:`plugins`. * :file:`outwiker_win_unstable.7z` - 7z-архив, содержащий содержимое папки :file:`outwiker_exe`, но без плагинов во вложенной папке :file:`plugins`. * :file:`outwiker_win_unstable_all_plugins.zip` - zip-архив, содержащий содержимое папки :file:`outwiker_exe`, включая плагины во вложенной папке :file:`plugins`. * :file:`outwiker_win_unstable_all_plugins.7z` - 7z-архив, содержащий содержимое папки :file:`outwiker_exe`, включая плагины во вложенной папке :file:`plugins`. * :file:`outwiker_win_unstable.exe` - инсталятор, созданный с помощью `Inno Setup`_. * :file:`versions.xml` - манифест с описанием текущей версии программы OutWiker (см. раздел :ref:`ru_version_format`). Для стабильной версии будут созданы следующие артефакты в папке :file:`build/{{номер версии}}/windows`: * Папка :file:`outwiker_exe`, содержащая все файлы, необходимые для запуска под Windows, включая все плагины в папке :file:`plugins`. * :file:`outwiker_{{x.x.x}}_win.zip` - zip-архив, содержащий содержимое папки :file:`outwiker_exe`, но без плагинов во вложенной папке :file:`plugins`. * :file:`outwiker_{{x.x.x}}_win.7z` - 7z-архив, содержащий содержимое папки :file:`outwiker_exe`, но без плагинов во вложенной папке :file:`plugins`. * :file:`outwiker_{{x.x.x}}_win_all_plugins.zip` - zip-архив, содержащий содержимое папки :file:`outwiker_exe`, включая плагины во вложенной папке :file:`plugins`. * :file:`outwiker_{{x.x.x}}_win_all_plugins.7z` - 7z-архив, содержащий содержимое папки :file:`outwiker_exe`, включая плагины во вложенной папке :file:`plugins`. * :file:`outwiker_{{x.x.x}}_win.exe` - инсталятор, созданный с помощью `Inno Setup`_. * :file:`versions.xml` - манифест с описанием текущей версии программы OutWiker. Этот файл является переименованным файлом :file:`src/versions_stable.xml` (см. раздел :ref:`ru_version_format`). Команде :code:`inv win` можно передавать следующие дополнительные параметры: -i или --is-stable - собрать OutWiker как стабильную версию -k или --skipinstaller - при сборке не создавать инсталятор -s или --skiparchives - при сборке не создавать архивы Чтобы удалить все артефакты, созданные командой :code:`inv win`, предназначена команда: .. code:: bash inv win-clear .. _ru_inv_win_internal: Порядок сборки дистрибутивов под Windows ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Все действия, связанные со сборкой под Windows сосредоточены в классе :class:`buildtools.builders.windows.BuilderWindows`, который является производным от :class:`buildtools.builders.base.BuilderBase`. В процессе сборки выполняются следующие действия: Действия, выполняемые классом :class:`buildtools.builders.windows.BuilderBase`. #. Создание папки :file:`build`. #. Выполняется команда очистки. Для сборки под Windows это равносильно выполнению команды :code:`inv win_clear`. #. Удаляется временная папка :file:`build/tmp`, если она существовала. #. Создается временная папка :file:`build/tmp`. #. Создается папка :file:`build/{{номер версии}}/windows`, если она не существовала. #. Исходники копируются в папку :file:`build/tmp/src`. #. В папке :file:`build/tmp/src` удаляется файл :file:`versions_stable.xml`, если создается нестабильная версия OutWiker, или :file:`versions_stable.xml` переименовывается в :file:`versions.xml`, если создается стабильная версия OutWiker. Действия, выполняемые классом :class:`buildtools.builders.windows.BuilderWindows`. #. В папку :file:`tmp` копируются файлы :file:`copyright.txt` и :file:`LICENSE.txt`. #. Создается пустая папка для плагинов :file:`tmp/src/plugins`, если она не была создана. #. Создается бинарная сборка в :file:`tmp/outwiker_exe` (см. раздел :ref:`ru_inv_binary`). #. Удаляется и создается заново папка :file:`tmp/outwiker_exe/plugins`. #. Создаются архивы с бинарной сборкой в формате zip и 7z без плагинов. Созданные архивы помещаются в :file:`build/{{номер версии}}/windows`. #. На основе файла шаблона :file:`need_for_build/windows/outwiker_setup.iss.tpl` создается файл :file:`tmp/outwiker_setup.iss`, используемый для создания инсталятора с помощью `Inno Setup`_. #. Создается инсталятор в папке :file:`tmp`. #. Созданный инсталятор перемещается в папку :file:`build/{{номер версии}}/windows`. #. Все плагины копируются в папку :file:`tmp/outwiker_exe/plugins`. #. Создаются архивы с бинарной сборкой в формате zip и 7z с плагинами. Созданные архивы помещаются в :file:`build/{{номер версии}}/windows`. #. Папка :file:`tmp/outwiker_exe` перемещается в :file:`build/{{номер версии}}/windows`. .. _ru_inv_binary: Создание бинарной сборки ~~~~~~~~~~~~~~~~~~~~~~~~ Самое важное, что делает команды :code:`inv win` и :code:`inv linux_binary`- это создание запускаемых приложений под Windows и Linux соответственно, чтобы пользователям не требовалось устанавливать интерпретатор Python. Это осуществляется с помощью утилиты cx_Freeze_. В результате выполнения данного скрипта будет создана папка :file:`build/{version}/windows/outwiker_exe` (в Windows) или :file:`build/{version}/outwiker_linux/outwiker_exe` (в Linux), содержащая запускаемый файл :file:`outwiker.exe` (в Windows) или :file:`outwiker` (в Linux), а также дополнительные файлы, необходимые для работы с библиотеками, и папки, необходимые для работы OutWiker. Все необходимые модули cx_Freeze помещает внутрь запускаемого файла (:file:`outwiker.exe` или :file:`outwiker`). .. _ru_build_sources: Создание архивов с исходниками ------------------------------ Для создания архивов с исходниками предназначена команда :code:`inv sources`, которая может принимать дополнительный параметр --is-stable (или -i), указывающий, будет создаваться архив исходников в виде стабильной. Если этот параметр не указан, то исходные коды оформляются как для нестабильной версии OutWiker. Во время сборки архивов с исходниками создается папка :file:`build/{{номер версии}}/sources`, в которую будут помещены архивы. Независимо от выбранного режима сборки создается архив :file:`outwiker-src-full-{{номер версии}}.zip` с полной копией исходников (создается с помощью команды :code:`git archive`). Если создается архив исходников как нестабильной версии, то создается файл :file:`outwiker-src-min-{{номер версии}}-unstable.zip`, который содержит минимально необходимый набор файлов, чтобы запустить OutWiker. Если создается архив стабильной версии, то этот файл будет называться :file:`outwiker-src-min-{{номер версии}}.zip`. Содержимое архивов в двух режимах сборки отличается только текстом файла :file:`versions.xml`. .. _cx_Freeze: https://cx-freeze.readthedocs.io/ .. _`Inno Setup`: http://www.jrsoftware.org