VMS IDE How does it work

From VSI OpenVMS Wiki
Revision as of 08:31, 20 February 2020 by Sergey vorfolomeev (talk | contribs) (Building)
Jump to: navigation, search

How does it work

Synchronization

1. Из VMS загружается список файлов, начиная с root папки, соответствующих маскам source, headers, builders, resource, и не попадающих в исключение exclude.
2. Такой-же список подоготавливается на стороне PC.
3. Сравниваются времена изменения соответсвующих файлов и создаются два списка: A - файлы, которые новее на PC, и B - файлы, которые новее на VMS. Учитывается разница во времени не менее секунды.
4. Проверяется значение downloadNewFiles:
4.1. Если downloadNewFiles равен skip, то список B игнорируется.
4.2. Если downloadNewFiles равен edit, то файлы из списка B загружаются в память PC и отрываются окна для сравнения с версией на PC, редактирования и сохранения изменений.
4.3. Если downloadNewFiles равен overwrite, то файлы из списка B загружаются на PC поверх старых.
5. Файлы из списка A выгружаются на VMS и для них выставляется время, которое было у файлов на PC:
5.1. Если в настройках SSH установлено supportSetFileTime, то установка времени файла будет осуществляться посредством команд SSH
5.2. В противном случае запускается SSH Shell и время файлам устанавливается командами DCL set file FILE.EXT /attribute(mod=DATE,att=DATE)
6. После этого выставляется флаг синхронизированности проекта.

Upload using ZIP

Все файлы на стороне PC, соответствующие маскам source, headers, builders, resource, и не попадающих в исключение exclude, архивируются и архив выгружается на VMS.

1. Если задано unzipCmd, то для разархивации будет послана команда unzipCmd + имя архива. Команда для разархивации должна учитывать следующие факторы: времена файлов должны выставляться по текущему времени на компьютере, и разархиватор не должен ничего запрашивать от пользователя, т.е. всегда разархиваировать поверх или наоборот.
2. Если unzipCmd пуст, то для разархивации будет послана команда unzip -oo "-D" + имя архива

Если всё прошло успешно выставляется флаг синхронизированности проекта.

Uploading

1. Если preferZip установлен в true, то будет выполнено Upload using ZIP.

2. Если preferZip не установлен, то Uploading выполняется как Synchronization, только список B всегда игнорируется.

Quick uploading

Работает для проекта, на котором стоит курсор в закладке PROJECT DEPENDENCIES.

На удалённую машину будут загружены файлы, соответствующие маскам source, headers, builders, resource, и не соответствующие исключению exclude, которые были изменены с момента последней синхронизации, аплоада или с начала работы программы. Если файл был удалён на PC, он также будет удалён и на VMS.

Если проект до начала изменений файлов был синхронизирован, то после Quick uploading он будет считаться синхронизированным. Иначе флаг синхронизации не изменится.

File masks

Example Meaning
**/folder/** All files which have this folder in path
*.ext All files with extension ext
*. All files without extension
**/build/**/*.com All files with com extension which have build in path

Building

Первым делом определяется конфигурация сборки. Все возможные конфигурации описываются в сеции настроек Project settings/builds/configurations. Выбор текущей конфигурации происходит в окне PROJECT DESCRIPTION нажатием правой кнопки мыши на строке buildName.

Если поле command конфигурации пустое, то для сборки использеутся автоматически сгенерированный MMS файл. Для его создания нужно выбрать команду (по F1) Create MMS, при этом проект, для которго нужно создать MMS, должен быть выбран в окне PROJECT DEPENDENCIES.

Если поле command содержит COM файл, то он будет запущен с параметром, заданным в parameter.

Если поле command содержит MMS файл, то он будет запущен командой MMS/EXTENDED_SYNTAX/DESCR=имя_mms_файла _параметр_. То есть parameter будет использован как target.

После сборки файлы, соответствующие маске listing будут загружены на PC в паку outdir. Не забываем, что outdir это не путь, а имя для папки, которая будет создана внутри root для хранения промежуточных результатов различных операций. outdir должен состоять только из латинских букв и не должен быть пустым.

Debugging