Re[3]: Предлагаю пренести Интеграции в проект компилятора
От: gloomy rocker Россия  
Дата: 29.06.08 20:00
Оценка: 116 (2)
Здравствуйте, VladD2, Вы писали:

Выходные не прошли бесследно Предлагаю посмотреть на мой патч и покритиковать.

Установка патча:
1. Скачать и распаковать Rev8060.rar
2. Скопировать папку Nemerle поверх корня компилятора.
3. Применить патч.

Некоторые варианты сборки:
1. msbuild NemerleAll.nproj — сборка компилятора, утилит, интеграции, shell-а, инсталлятора. Затем бинарники компилятора копируются в Program Files и регистрируются в реестре.
2. msbuild NemerleAll.nproj /t:Installer — то же, что и в п.1, но без копирования и регистрации в Program Files
3. msbuild NemerleAll.nproj /t:Stage2 — двухпроходная сборка сомпилятора
4. msbuild NemerleAll.nproj /t:VSIntegration — снячала двухпроходная сборка компилятора, потом — интеграция
5. msbuild NemerleAll.nproj /t:RegBoot — зарегистрировать *.targets в boot
Реально вариантов больше, кому интересно — см. NemerleAll.nproj

VD>Было бы сдорово вообще избавиться от батников перенеся весь процесс сборки в msbuild.

Готово, но требует критики.

VD>Что желательно сделать:

VD>1. Солюшен сборки компилятора. Он должен компилировать компилятор и производить его регистрацию. Нужно сделать так чтобы можно было компилировать и без регистрации. Кроме того регистрация должна производиться как в %ProgramFiles%\Nemerle, так и в boot.
Готово.
3. msbuild NemerleAll.nproj /t:Stage2

VD>Кроме того должна поддерживаться двух студийная сборка проекта (сначала собирается компилятор в некой промежуточной директории, например, stage2, а потом компилятор собирается полученными на предыдущей стадии бинарниками). При неудаче сборки ничего не должно быть унитожено. Бут должен изменяться только при успешном завершении второй стадии компиляции.

Готово, требует тестирования, т.к. реальную ситуацию с ошибкой я создать не смог, но если генерировать ошибку искуственно, то откат работает. В общем нужно тестировать.

VD>Желательно (но не обязательно) сделать и третью стадию компиляции которая бы собирала исходники бинарниками созданными на второй стадии. Эти бинарники нужно сравнить с бинарниками получеными на второй стадии. Если они не равны, то процесс сборки должен считаться неудачным. Это конечно немного параноя, но так было сделано в исходном процессе сборки компилятора (том который был на Гну-сных утилитах основан). Да, желательно, чтобы этот солюшен собирал и МСБилдный таск.

Этого пока не делал.

VD>2. Еще один солющен должен собирать утилиты и прочую дрибедень.

2. msbuild NemerleAll.nproj /t:Tools

VD>3. Третий солюшен должен собирать интеграцию.

4. msbuild NemerleAll.nproj /t:VSIntegration

VD>4. Ну, и должен быть еще один солюшен который собирает три предыдущих солюшена (точнее проекты из них) и собирает инсталлятор.

2. msbuild NemerleAll.nproj /t:Installer

VD>5. Кроме того хорошо бы сделать еще один солюшен который собирал бы компилятор и интеграцию и прогонял тесты. В случае успеха можно комитить изменения. Если автоматизировать еще и комит — это будет вообще супер.

Это чуть позже — времени не хватило.
Скука — двигатель прогресса.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.