Сборка OutWiker

Общие моменты, связанные со сборкой

В данном разделе предполагается, что были проделаны все операции, описанные в разделе Быстрый старт, т.е. скачаны исходники и установлены все требуемые библиотеки.

Все задачи, связанные со сборкой, создают внутри папки build папку, имя которой соответствует номеру текущей версии OutWiker в формате x.x.x.xxx. Например, 3.1.0.896. Также внутри папки build создается временная папка tmp, предназначенная для хранения файлов во время сборки. Данная папка очищается перед каждой сборкой.

Также перед каждой задачей сборки создается папка tmp/src, которая содержит копию исходников в соответствии с настройками сборщика: собирается стабильная версия или нестабильная. Если собирается нестабильная версия, то после копирования из исходников удаляется файл versions_stable.xml, остается только файл versions.xml, описывающий изменения в текущей версии в формате для нестабильной версии.

Если собирается стабильная версия, то после копирования исходников в tmp/src/ исходный файл versions.xml удаляется, а файл versions_stable.xml переименовывается в versions.xml. Подробнее о формате файла versions.xml см. раздел Хранение номеров версий в OutWiker и плагинах (не написано).

Разные классы сборок могут добавлять дополнительные файлы в папку tmp.

Описанные возможности реализованы в классе buildtools.builders.base.BuilderBase.

Сборка осуществляется с помощью команд Invoke (см. раздел Выполнение команд Fabric).

Примечание

Многие команды сборки принимают булевы параметры. Чтобы в такую задачу передать значение True, в качестве параметра в командной строке нужно передать одно из следующих значений: 1 или true (независимо от регистра). Чтобы передать значение False, нужно передать какое-либо другое значение.

Сборка под Windows

Использование команды inv win

Для того, чтобы собрать все виды дистрибутивов под Windows как нестабильную версию, используется команда

inv win

Для того, чтобы собрать все виды дистрибутивов под Windows как стабильную версию, используется команда

inv win --is-stable

или

inv win -i

Для нестабильной версии будут созданы следующие артефакты в папке build/{номер версии}/windows:

  • Папка outwiker_exe, содержащая все файлы, необходимые для запуска под Windows, включая все плагины в папке plugins.
  • outwiker_win_unstable.zip - zip-архив, содержащий содержимое папки outwiker_exe, но без плагинов во вложенной папке plugins.
  • outwiker_win_unstable.7z - 7z-архив, содержащий содержимое папки outwiker_exe, но без плагинов во вложенной папке plugins.
  • outwiker_win_unstable_all_plugins.zip - zip-архив, содержащий содержимое папки outwiker_exe, включая плагины во вложенной папке plugins.
  • outwiker_win_unstable_all_plugins.7z - 7z-архив, содержащий содержимое папки outwiker_exe, включая плагины во вложенной папке plugins.
  • outwiker_win_unstable.exe - инсталятор, созданный с помощью Inno Setup.
  • versions.xml - манифест с описанием текущей версии программы OutWiker (см. раздел Хранение номеров версий в OutWiker и плагинах (не написано)).

Для стабильной версии будут созданы следующие артефакты в папке build/{номер версии}/windows:

  • Папка outwiker_exe, содержащая все файлы, необходимые для запуска под Windows, включая все плагины в папке plugins.
  • outwiker_{x.x.x}_win.zip - zip-архив, содержащий содержимое папки outwiker_exe, но без плагинов во вложенной папке plugins.
  • outwiker_{x.x.x}_win.7z - 7z-архив, содержащий содержимое папки outwiker_exe, но без плагинов во вложенной папке plugins.
  • outwiker_{x.x.x}_win_all_plugins.zip - zip-архив, содержащий содержимое папки outwiker_exe, включая плагины во вложенной папке plugins.
  • outwiker_{x.x.x}_win_all_plugins.7z - 7z-архив, содержащий содержимое папки outwiker_exe, включая плагины во вложенной папке plugins.
  • outwiker_{x.x.x}_win.exe - инсталятор, созданный с помощью Inno Setup.
  • versions.xml - манифест с описанием текущей версии программы OutWiker. Этот файл является переименованным файлом src/versions_stable.xml (см. раздел Хранение номеров версий в OutWiker и плагинах (не написано)).

Команде inv win можно передавать следующие дополнительные параметры:

-i или –is-stable - собрать OutWiker как стабильную версию -k или –skipinstaller - при сборке не создавать инсталятор -s или –skiparchives - при сборке не создавать архивы

Чтобы удалить все артефакты, созданные командой inv win, предназначена команда:

inv win-clear

Порядок сборки дистрибутивов под Windows

Все действия, связанные со сборкой под Windows сосредоточены в классе buildtools.builders.windows.BuilderWindows, который является производным от buildtools.builders.base.BuilderBase.

В процессе сборки выполняются следующие действия:

Действия, выполняемые классом buildtools.builders.windows.BuilderBase.

  1. Создание папки build.
  2. Выполняется команда очистки. Для сборки под Windows это равносильно выполнению команды inv win_clear.
  3. Удаляется временная папка build/tmp, если она существовала.
  4. Создается временная папка build/tmp.
  5. Создается папка build/{номер версии}/windows, если она не существовала.
  6. Исходники копируются в папку build/tmp/src.
  7. В папке build/tmp/src удаляется файл versions_stable.xml, если создается нестабильная версия OutWiker, или versions_stable.xml переименовывается в versions.xml, если создается стабильная версия OutWiker.

Действия, выполняемые классом buildtools.builders.windows.BuilderWindows.

  1. В папку tmp копируются файлы copyright.txt и LICENSE.txt.
  2. Создается пустая папка для плагинов tmp/src/plugins, если она не была создана.
  3. Создается бинарная сборка в tmp/outwiker_exe (см. раздел Создание бинарной сборки).
  4. Удаляется и создается заново папка tmp/outwiker_exe/plugins.
  5. Создаются архивы с бинарной сборкой в формате zip и 7z без плагинов. Созданные архивы помещаются в build/{номер версии}/windows.
  6. На основе файла шаблона need_for_build/windows/outwiker_setup.iss.tpl создается файл tmp/outwiker_setup.iss, используемый для создания инсталятора с помощью Inno Setup.
  7. Создается инсталятор в папке tmp.
  8. Созданный инсталятор перемещается в папку build/{номер версии}/windows.
  9. Все плагины копируются в папку tmp/outwiker_exe/plugins.
  10. Создаются архивы с бинарной сборкой в формате zip и 7z с плагинами. Созданные архивы помещаются в build/{номер версии}/windows.
  11. Папка tmp/outwiker_exe перемещается в build/{номер версии}/windows.

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

Самое важное, что делает команды inv win и inv linux_binary- это создание запускаемых приложений под Windows и Linux соответственно, чтобы пользователям не требовалось устанавливать интерпретатор Python. Это осуществляется с помощью утилиты cx_Freeze.

В результате выполнения данного скрипта будет создана папка build/version/windows/outwiker_exe (в Windows) или build/version/outwiker_linux/outwiker_exe (в Linux), содержащая запускаемый файл outwiker.exe (в Windows) или outwiker (в Linux), а также дополнительные файлы, необходимые для работы с библиотеками, и папки, необходимые для работы OutWiker. Все необходимые модули cx_Freeze помещает внутрь запускаемого файла (outwiker.exe или outwiker).

Создание архивов с исходниками

Для создания архивов с исходниками предназначена команда inv sources, которая может принимать дополнительный параметр –is-stable (или -i), указывающий, будет создаваться архив исходников в виде стабильной. Если этот параметр не указан, то исходные коды оформляются как для нестабильной версии OutWiker.

Во время сборки архивов с исходниками создается папка build/{номер версии}/sources, в которую будут помещены архивы. Независимо от выбранного режима сборки создается архив outwiker-src-full-{номер версии}.zip с полной копией исходников (создается с помощью команды git archive).

Если создается архив исходников как нестабильной версии, то создается файл outwiker-src-min-{номер версии}-unstable.zip, который содержит минимально необходимый набор файлов, чтобы запустить OutWiker. Если создается архив стабильной версии, то этот файл будет называться outwiker-src-min-{номер версии}.zip. Содержимое архивов в двух режимах сборки отличается только текстом файла versions.xml.