Разделяемые DO

advertisement
Глава 7
Конфигурационное
управление с
применением ClearCase
Процесс сборки
Глава 7
1
Цели
Прочитав эту главу, вы сможете:
• Описывать возможности Clearmake и
omake
• Понимать различия между неразделяемыми
и разделяемыми DO
• Описывать как Clearmake и omake
выполняют аудит сборки
• Описывать как Clearmake и omake
позволяют разделять результаты сборки между
разработчиками
• Сохранять файлы аудита при выполнении
Checkin исполняемых файлов
Глава 7
2
Clearmake и omake - Определение
• Варианты утилиты make, используемые в
ClearCase и имеющие дополнительные
возможности :
 Build audit – полный «bill-of-materials»
(конфигурационная запись или CR)
 Автоматическое определение зависимостей
между элементами сборки
 Специальный алгоритм сборки – гарантирует
правильность результатов при параллельной
разработоке
 Разделение результатов сборки между
разработчиками
Совместимость с make-файлами, полученными
при использовании других вариантов make
Глава 7
3
Сравнение Clearmake и omake
• Обе утилиты являются исполняемыми и не
являются подкомандами Cleartool.
• Clearmake - один из вариантов утилиты
make в Unix.
• omake совместим совместим со сборщиками
для платформы ПК такими как NMAKE
• Форматы make-файлов обеих утилит
различны
• Clearmake может читать файлы BOS
(спецификация опций разработки),
содержащие макро определения make
•Обеим командам требуется Dynamic View для
использования возможностей build-auditing
Глава 7
4
Работа из командной строки
• Стандартные опции make пишутся в нижнем регистре
• Опции Clearmake и omake пишутся в верхнем регистре
• Опции, не имеющие аргументов, могут быть сгруппированы
в командной строке (например, -VОi).
• Вы должны быть в том View, чьи правила выбирают
требуемые версии файлов для сборки
Глава 7
5
Derived Objects - определение
• Derived Object (DO) - любой файл созданный
внутри VOB при сборке
• Любой DO состоит из:
 имени файла и директории VOB
 идентификатора DO (DO –ID):
hello.exe@@24 – Feb.16:40.234
 контейнера данных
 конфигурационной записи (CR) или файла аудита
процесса сборки
 Компонента в пуле db VOB (только для
разделяемых DO):
create derived object “hello.exe@@24 –
Feb.16:40.234” references :1
• Существует 2 типа DO:
 разделяемый – результат обычной сборки
 неразделяемый - результат экспресс-сборки
Глава 7
6
Что происходит в процессе
разработки?
•MVFS автоматически отслеживает низкоуровневые
системные вызовы на данные ClearCase
открытие
чтение
запись
•Отслеживаются вызовы следующих объектов:
версионные объекты
view-private файлы
файлы, создаваемые внутри директорий VOB при сборке
явно указанные зависимости вне VOB
•Информация по аудиту хранится в Configuration
Record (CR)
Глава 7
7
Листинг Derived Objects
ClearCase Explorer отображает информацию о
DО в текущем View
Глава 7
8
Содержание Configuration Records (CR)
Z:\Main_work> catcr bgrs.exe
Target bgrs.exe built by jones.dvt
Host "oxygen" running NT 3.51 (i486)
Reference Time 11-Dec-94.12:02:39, this audit started 11-Dec-94.12:04:52
View was oxygen:C:\USERS\jones\views\940615.vws
Initial working directory was Y:\vob1\docaux\bgr
---------------------------MVFS objects:
---------------------------\vob1\docaux\bgr\libbgr\libbgr.lib@@10-Dec.16:45.1893
\vob1\docaux\bgr\bgrs@@11-Dec.12:05.1956
\vob1\docaux\bgr\buga@@11-Dec.12:04.1926
...
---------------------------Build Script:
---------------------------link /out:bgrs.exe main.obj pick.obj bugs.obj bugr.obj bugi.obj bugf.obj
bugc.obj bugl.obj buge.obj bugd.obj buga.obj bugh.obj bugw.obj
bugfld.obj bugdt.obj bugu1.obj bugu2.obj bugsched.obj
..\libbgr\libbgr.lib
Глава 7
9
Иерархия Configuration Records
• Иерархия CR структуру типового makeфайла
hello.exe: hello.obj until.obj
link-out: hello.exe hello.obj until.obj
hello.exe
hello.obj
until.obj
hello.obj :
cl-c hello.c
unti.obj:
hello.c
cl-c until.c
until.c
Глава 7
10
Отображение Configuration Record
• Команда Cleartool catcr отображает
содержание CR для результата сборки
• По умолчанию, отображается CR для
результата сборки, но не для промежуточного
результата (для их просмотра используйте recurse).
catcr -flat bgrs.exe
---------------------------MVFS objects:
---------------------------1 \vob1\docaux\bgr\buga.c@@\main\1 <19-Dec-94.11:49:03>
1 \vob1\docaux\bgr\bugc.c@@\main\1 <19-Dec-94.11:49:09>
1 \vob1\docaux\bgr\bugd.c@@\main\1 <19-Dec-94.11:49:14>
20 \vob1\docaux\bgr\bugs.h@@\main\3 <17-Jun-94.23:55:22>
1 \vob1\docaux\bgr\bugsched.c@@\main\1 <19-Dec-94.11:50:07>
Глава 7
11
Сравнение Configuration Records
• Используйте команду cleartool diffcr для
простого сравнения Configuration Records
двух DO.
• Определяются следующие различия:
 Версий MVFS объектов, используемых в качестве
источников
 Объектов, полученных при сборке
 Версий не-MVFS объектов, появляющихся как
зависимости make-файла в процессе сборки (для
omake)
 Общее количество упоминаний объекта при
сборке и первый результат, в котором объект
упоминался
 Опции сборки
 Выполненный при сборке скрипт
Глава 7
12
Пример сравнения CR
diffcr –flat bgrs.exe bgrs.exe@@11-Dec.12:05.1956
< Reference Time 11-Dec-98.15:23:52, this audit started 11-Dec-98.15:23:59
> Reference Time 11-Dec-98.12:02:39, this audit started 11-Dec-98.12:04:52
< View was DRIVE:\users\jones\views\main.vws [uuid
66e68edc.471511cd.ac55.08:00:2b:33:ec:ab]
> View was DRIVE:\users\jones\views\r1_fix.vws [uuid
8b468fd0.471511cd.aca5.08:00:2b:33:ec:ab]
------------------------------------------------------MVFS objects:
---------------------------< \vob1\docaux\bgr\bgrs.exe@@11-Dec.15:24.1987
> \vob1\docaux\bgr\bgrs.exe@@11-Dec.12:05.1956
---------------------------< \vob1\docaux\bgr\bugs.obj@@11-Dec.15:23.1981
> \vob1\docaux\bgr\bugs.obj@@11-Dec.12:03.1902
---------------------------< \vob1\docaux\bgr\bugsched.obj@@11-Dec.15:23.1984
> \vob1\docaux\bgr\bugsched.obj@@11-Dec.12:04.1953
Глава 7
13
Определение DO установок для View
• Свойства DO во View отображаются в овне
свойств View.
Глава 7
14
Не разделяемые DO
• Являются результатом экспресс-сборки
• Определяются свойствами неразделяемых DO во
View используемом для построения.
• Обеспечивается лучшую производительность по
сравнению со сборкой разделяемых DO
 Не записываются в папку db VOB.
 VOB не требует блокировкой VOB db в процессе записи.
 Все результаты сборки хранятся во View, в котором
происходит сборка
• DO недоступны для wink-in из другого View, но могут
повторно использоваться в своем View
• Может быть преобразованы в разделяемые
• Повторная сборка перезапишет существующий DO.
• Обычно используется при отладке до этапа
интеграции
Глава 7
15
Не разделяемые DO - хранение
src
View 1 Storage
.cmake.state
Data
Container
V
I
E
W
CR
Глава 7
hello.obj
16
Конвертация неразделяемых DO в
разделяемые
• Неразделяемые DO могут быть преобразованы в
разделяемые по средством перемещения и в VOB.
• Возможны 2 метода:
•
Использование сleartool winkin
•
Использование view_scrubber –p
• Если неразделяемый DO имеет субэлемент, они
встраиваются (wink-in) автоматически
• Однажды сконвертированный DO не может быть
преобразован обратно
• В процессе wink-in/promotion неразделяемый DOID, изменяется в соответствии системой именования
VOB DO
Глава 7
17
Пример конвертации DO в разделяемый
winkin hello.exe
Promoting unshared derived object "hello.exe"
Winked in derived object "hello.exe»
winkin –recurse main.exe@@04-Sep.16:03.34
Promoting unshared derived object “\mg_test\main.exe”
Winked in derived object “\mg_test\main.exe
Promoting unshared derived object “\mg_test\main.obj”
Winked in derived object “\mg_test\main.obj”
Promoting unshared derived object
“\mg_test\sibling.exe”
Winked in derived object “\mg_test\sibling.exe”
Promoting unshared derived object “\mg_test\test.obj”
Winked in derived object “\mg_test\test.obj”
Глава 7
18
Разделяемые DO
• Два типа разделяемых DO:
 неразделяемый – потенциально может быть встроен (winkin) в другое View.
 разденный - копируется в VOB и в дальнейшем
автоматически встраивается в другие View.
• DO- ID уникальны и отслеживаются VOB
• Определяются свойствами разделяемого DO во View,
используемом при сборке
• Представление переменное.
• Компромисс производительности:
 первоначальная сборка происходит дольше из-за записи в
VOB и процесса wink-in
• Используется для ночной (фоновой) сборки когда
результат будет использоваться большим числом
разработчиков
Глава 7
19
Разделяемые DO - хранение
src
View 1 Storage
.cmake.state
Data
Container
V
I
E
W
CR
hello.obj
View Storage
Database Catalog Entry
VOB Database
14-Jan-99.09:54:56 morris.engineers@xingu
create derived object "hello.obj@@14
Jan.09:54.617" references:1 (unshered)
Глава 7
20
Перевод DO в разделенные - до того
src
View 1 Storage
CR
Data
Container
V
I
E
W
.cmake.state
hello.obj
View 2 Storage
View Storage
DO Pool
Database Catalog Entry
VOB Database
14-Jan-99.09:54:56 morris.engineers@xingu
create derived object "hello.obj@@14
Jan.09:54.617" references:1 (unshered)
Глава 7
21
Процесс wink-in
src
V
I
E
W
View 1 Storage
CR
Data
Container
.cmake.state
hello.obj
View 2 Storage
move
copy
V
I
E
W
src
hello.obj
View Storage
VOB Database
CR
Catalog
Entry
DO Pool
Data
Container
Глава 7
22
Что такое Configuration Lookup ?
• Конфигурационный Lookup определяет:
 пересобран ли DO при выполнении скрипта,
 или использован существующий DO из другого
View,
 или повторно использован текущий DO
• Сравнение CR DO, построенных в другом
View, и CR DO из текущего View
• Разделяемые DO возникают из 2-х
источников:
 Кэш DO в VOB
 Другой View
Глава 7
23
Неразделяемые DO
• Характеристики неразделяемых DO:
 Вновь создаваемые DO доступны только во View,
где созданы
 Контейнер данных и CR хранятся во View, а
записи в каталоге db хранятся в VOB.
 Если Вы удаляете DO, контейнер данных, и запись
в каталоге db также удаляются
• Если Вы используете сleartool rmdo, то
неразделяемые DO становятся View-Private
файлами
• Операции, ссылающиеся на CR или записи в
каталоге db VOB становятся невозможными.
(т.е. catcr, diffcr, lsdo и т.д.)
Глава 7
24
Как разделяемые DO становятся
разделенными
• При пересборке (с clearmake / omake) VOB
проверяется на наличие разделяемых DO ,
которые точно совпадают с критерием View
• Если разделяемый DO найден в другом View,
он переносится из хранилища того View в
хранилище VOB, а затем активизируется
(wink-in) в Ваше View
• Если DO находится в кэше, он активизирован
(wink-in), что позволяет ему появляться в
Вашем View даже, если его данные файловой
системы находятся в кэше DO VOB.
Глава 7
25
Использование View Scrubber
• View Scrubber очищает хранилище privateобъектов View путем удаления оттуда
контейнеров данных DO
• Запускается вручную командой
view_vcrubber [-p] [-k] [-n] [do-pname…]
• По умолчанию уничтожаются контейнеры
DO, которые были перенесены в VOB
Глава 7
26
Определение зависимостей при сборке
релиза
• Утилиты сборки clearmake / omake
определяют источник зависимостей не
объявленных в make-файле явно.
Пример:
Makefile:
helo.exe: hello.obj util.obj
link -cut:hello.exe hello.obj util.obj
hello.obj:
cl -c hello.c
util.obj:
cl -c util.c
hello.c:
#include “hello.h”
int main() {...
Глава 7
27
Check In DO
• DO, помещаемые (check in) в версионное
дерево называются версиями DO
• Имеется возможность доступа к CR версий
DO
• Используйте опцию –from команды
cleartool checking для:
project
bin
VOB
hello.exe
src
hello.exe
hello.exe
Глава 7
•копирования данных из
другого раздела в
версионное дерево и
сохранении CR вместе с
DO
•опция –from
используется только при
копировании из другого
раздела
28
Пример Checking DO
• Когда вносится (check in) DO из другого
раздела не копируйте, не перемещайте и не
переименовывайте результат сборки, иначе
CR не будет сохранена вместе с версией DO.
Глава 7
29
Check In CR
• Чтобы проверить только CR DO
используется опция –cr команды cleartool
checking
• Пример:
• Если Вы используете этот метод для check in
DO, данные DO не сохраняются, но можно
увидеть DO по командам dir и сleartool ls:
Глава 7
30
Контрольные вопросы
• Каковы возможности clearmake / omake?
• Что такое разделяемые DO и неразделяемые
DO?
• Что такое аудит сборки?
• Что делает команда cleartool winking?
• Какие опции используются с командами
cleartool checking, чтобы сохранить CR
вместе с исполняемым файлом или заменить
файл в состоянии checkedout другим при
checkin?
Глава 7
31
Download