Re[8]: Снова о сборке инсталлятора
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.03.10 20:32
Оценка:
Здравствуйте, gloomy rocker, Вы писали:

VD>>Из цели можно объявлять или менять свойства? Тогда в IntegrationFull и IntegrationFast можно было бы установить одно свойство — путь к бинарникам, и использовать его в цели Install.

GR>Думаю, можно. Надо попробовать.

Попробуй. Это решило бы проблему информирования цели Install о том из какой стадии брать бинарники.

GR>Цель Rebuild там стоит намеренно, т.к. в данный момент в bin\$(Configuration)\StageX бинарники складируются по стадиям, а в obj\$(Configuration) все лежит в одной куче. И чтобы obj очищался перед каждой фазой я и поставил насильственный Rebuild. Нужно сделать так, чтобы в obj бинарники складировались так же как в bin. Тогда цель Build будет собираться корректно.


Так давай это сделаем. Что для этого нужно?

VD>>Нет мыслей по поводу того в чем я ошибся?

GR>Судя по тому, что я видел в истории изменения NemerleAll.nproj, проблема уже решена. Дело было в отсутствии "$" (вместо (TargetName) нужно было $(TargetName)).
GR>По крайней мере сейчас со сборкой проблем нет.

К сожалению нет.

Если выполнить следующее:

set MSBuild="%SystemRoot%\Microsoft.NET\Framework\v3.5\msbuild.exe"
%MSBuild% NemerleAll.nproj /target:DevBuildFast /p:Configuration=Debug /p:TargetName=Build


То происходит следующее:
C:\Nemerle>set MSBuild="C:\Windows\Microsoft.NET\Framework\v3.5\msbuild.exe"

C:\Nemerle>"C:\Windows\Microsoft.NET\Framework\v3.5\msbuild.exe" NemerleAll.nproj /target:DevBuildFast /p:Configuration=Debug
 /p:TargetName=Build
Microsoft (R) Build Engine Version 3.5.30729.1
[Microsoft .NET Framework версии 2.0.50727.4200]
 (C) Корпорация Майкрософт (Microsoft Corp.), 2007.

Построение начато 14.03.2010 23:25:36.
Проект "C:\Nemerle\NemerleAll.nproj" на узле 0 (конечные объекты DevBuildFast).
  Framework tools found at:
       MSBuild  - c:\Windows\Microsoft.NET\Framework\v3.5\msbuild.exe
       NGen     - "C:\Windows\Microsoft.NET\Framework\v2.0.50727\ngen.exe"
  SDK tools found at:
       GacUtil  - "C:\Program Files\Microsoft SDKs\Windows\v6.0A\\bin\gacutil.exe"
       Ildasm   - "C:\Program Files\Microsoft SDKs\Windows\v6.0A\\bin\ildasm.exe"
       PEVerify - "C:\Program Files\Microsoft SDKs\Windows\v6.0A\\bin\peverify.exe"
  ExternalDependences:
       Junction - C:\Nemerle\ExternalDependences\junction.exe
Stage1:
  Копирование файла из "C:\Nemerle\tools\msbuild-task\Nemerle.MSBuild.targets" в "C:\Nemerle\boot\Nemerle.MSBuild.targets".
Проект "C:\Nemerle\NemerleAll.nproj" (1) выполняет построение "C:\Nemerle\Nemerle.nproj" (2) на узле 0 (конечные объекты Build).
  Копирование файла из "obj\Debug\Build.dll" в "C:\Nemerle\bin\Debug\Stage1\Build.dll".
  Nemerle -> C:\Nemerle\bin\Debug\Stage1\Build.dll
  Копирование файла из "obj\Debug\Build.pdb" в "C:\Nemerle\bin\Debug\Stage1\Build.pdb".

...

  Nemerle.Macros -> C:\Nemerle\bin\Debug\Stage1\Build.dll
IncrementalClean:
  Удаление файла "C:\Nemerle\obj\Debug\Nemerle.Macros.dll".
  Удаление файла "C:\Nemerle\obj\Debug\Nemerle.Macros.pdb".
  Удаление файла "C:\Nemerle\bin\Debug\Stage1\Nemerle.Macros.dll".
  Удаление файла "C:\Nemerle\bin\Debug\Stage1\Nemerle.Macros.pdb".
Завершенный проект сборки "C:\Nemerle\Nemerle.Macros.nproj" (конечные объекты Build).

Проект "C:\Nemerle\NemerleAll.nproj" (1) выполняет построение "C:\Nemerle\NCC.nproj" (5) на узле 0 (конечные объекты Build).
ncc\main.n(55,23,55,35): error : unbound type name `ManagerClass'
ncc\main.n(56,23,56,41): error : unbound type name `CompilationOptions'
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Снова о сборке инсталлятора
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.03.10 20:37
Оценка:
Здравствуйте, gloomy rocker, Вы писали:

Да... и еще один вопрос...

А почему в NemerleAll.nproj проекты компилятора и интеграции перечислены явно вместо того чтобы компилировать соответствующие решения (sln-файлы)?
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[8]: Снова о сборке инсталлятора
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.03.10 20:45
Оценка:
Здравствуйте, gloomy rocker, Вы писали:

Если можно, сделай как можно скорее возможность собирать интеграцию и компилятор в двух-стадийном режиме. А то 4 стадии + тесты и проверки — это очень долго. Для процесса разработки двух стадий без тестов достаточно. Главное понимать, что компилятор не угроблен и можно двигаться дальше. А уж четырех-стадийную сборку можно вызывать один раз перед комитом.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Снова о сборке инсталлятора
От: gloomy rocker Россия  
Дата: 14.03.10 21:12
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, gloomy rocker, Вы писали:


VD>>>Из цели можно объявлять или менять свойства? Тогда в IntegrationFull и IntegrationFast можно было бы установить одно свойство — путь к бинарникам, и использовать его в цели Install.

GR>>Думаю, можно. Надо попробовать.

VD>Попробуй. Это решило бы проблему информирования цели Install о том из какой стадии брать бинарники.

Похоже, работает

GR>>Цель Rebuild там стоит намеренно, т.к. в данный момент в bin\$(Configuration)\StageX бинарники складируются по стадиям, а в obj\$(Configuration) все лежит в одной куче. И чтобы obj очищался перед каждой фазой я и поставил насильственный Rebuild. Нужно сделать так, чтобы в obj бинарники складировались так же как в bin. Тогда цель Build будет собираться корректно.


VD>Так давай это сделаем. Что для этого нужно?

Проблема решена. Для задачи MSBuild нужно было устанавливать дополнительное свойство IntermediateOutputPath.

VD>>>Нет мыслей по поводу того в чем я ошибся?

GR>>Судя по тому, что я видел в истории изменения NemerleAll.nproj, проблема уже решена. Дело было в отсутствии "$" (вместо (TargetName) нужно было $(TargetName)).
GR>>По крайней мере сейчас со сборкой проблем нет.

VD>К сожалению нет.


VD>Если выполнить следующее:

[skip]
Есть подозрение, что свойство TargetName является предопределенным... И используется для именования результирующих сборок.
Думаю, если переименовать его в NTargetName, то должно заработать.
Скука — двигатель прогресса.
Re[9]: Снова о сборке инсталлятора
От: gloomy rocker Россия  
Дата: 14.03.10 21:16
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, gloomy rocker, Вы писали:


VD>Да... и еще один вопрос...


VD>А почему в NemerleAll.nproj проекты компилятора и интеграции перечислены явно вместо того чтобы компилировать соответствующие решения (sln-файлы)?

Была идея использовать свойство TargetOutputs задачи MSBuild, в которое помещаются пути к скомпилированным сборкам. Но где-то прочитал, что работает это только если задать конкретные проекты. Сейчас это свойство не используется, так что можно использовать sln.
Скука — двигатель прогресса.
Re[9]: Снова о сборке инсталлятора
От: gloomy rocker Россия  
Дата: 14.03.10 21:16
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, gloomy rocker, Вы писали:


VD>Если можно, сделай как можно скорее возможность собирать интеграцию и компилятор в двух-стадийном режиме. А то 4 стадии + тесты и проверки — это очень долго. Для процесса разработки двух стадий без тестов достаточно. Главное понимать, что компилятор не угроблен и можно двигаться дальше. А уж четырех-стадийную сборку можно вызывать один раз перед комитом.

Этим и занимаюсь.
Скука — двигатель прогресса.
Re[8]: Снова о сборке инсталлятора
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.03.10 21:29
Оценка:
Здравствуйте, gloomy rocker, Вы писали:

И вот еще что... В IntegrationFull нужно еще включить выполнение тестов для интеграции.

Это должно быть что-то вроде:
???\nunit-console.exe Nemerle.Compiler.Utils.Tests.dll /nologo
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[9]: Снова о сборке инсталлятора
От: gloomy rocker Россия  
Дата: 14.03.10 22:02
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, gloomy rocker, Вы писали:


VD>И вот еще что... В IntegrationFull нужно еще включить выполнение тестов для интеграции.


VD>Это должно быть что-то вроде:

VD>???\nunit-console.exe Nemerle.Compiler.Utils.Tests.dll /nologo
Согласен. Сделаю как только десяток-другой свободных минут выкрою.
Скука — двигатель прогресса.
Re[10]: Снова о сборке инсталлятора
От: VladD2 Российская Империя www.nemerle.org
Дата: 14.03.10 22:26
Оценка:
Здравствуйте, gloomy rocker, Вы писали:

VD>>Это должно быть что-то вроде:

VD>>???\nunit-console.exe Nemerle.Compiler.Utils.Tests.dll /nologo
GR>Согласен. Сделаю как только десяток-другой свободных минут выкрою.

Сам сделал. Сейчас зайлью.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[11]: Снова о сборке инсталлятора
От: gloomy rocker Россия  
Дата: 15.03.10 06:01
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, gloomy rocker, Вы писали:


VD>>>Это должно быть что-то вроде:

VD>>>???\nunit-console.exe Nemerle.Compiler.Utils.Tests.dll /nologo
GR>>Согласен. Сделаю как только десяток-другой свободных минут выкрою.

VD>Сам сделал. Сейчас зайлью.

Я пытался сравнить на уровне IL Stage1 и Stage2. Они оказались идентичны. Это должно настораживать?
Скука — двигатель прогресса.
Re[12]: Снова о сборке инсталлятора
От: VladD2 Российская Империя www.nemerle.org
Дата: 15.03.10 06:10
Оценка:
Здравствуйте, gloomy rocker, Вы писали:

GR>Я пытался сравнить на уровне IL Stage1 и Stage2. Они оказались идентичны. Это должно настораживать?


Почему?
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Re[13]: Снова о сборке инсталлятора
От: gloomy rocker Россия  
Дата: 15.03.10 07:12
Оценка:
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, gloomy rocker, Вы писали:


GR>>Я пытался сравнить на уровне IL Stage1 и Stage2. Они оказались идентичны. Это должно настораживать?


VD>Почему?

Затрудняюсь обосновать, но когда я года полтора назад работал над этой задачей, понадобилось 4 стадии, чтобы различия между предыдущей и последней стадиями исчезли. А сейчас различий между Stage1 и Stage2 нет. Возможно, это потому, что boot относительно свежий. А вообще я ни тогда ни сейчас не могу понять, почему нужно именно 4 стадии. По идее в худшем случае должно быть достаточно трех.
Скука — двигатель прогресса.
Re[6]: Снова о сборке инсталлятора
От: gloomy rocker Россия  
Дата: 15.03.10 07:15
Оценка: 129 (1)
Здравствуйте, VladD2, Вы писали:

VD>Здравствуйте, gloomy rocker, Вы писали:


VD>>>А можно собирать компилятор в духстдийном режиме + интеграцию и выполнять тесты?

GR>>В данный момент тесты заточены только на Stage4, но если нужно, можно и для Stage2 сделать. Я попробую ввести свойство NStage, которое будет устанавливаться в конце каждой стадии и указывать на последние собранные бинарники. Потом его можно будет использовать в других целях (например в Install, CompilerTests). А еще лучше добавить 2 свойства NCurStage и NPrevStage. Тогда можно будет и цель Validate обобщить.

VD>Это было бы то что нужно. Давай!

Готово.
Скука — двигатель прогресса.
Re: Снова о сборке инсталлятора
От: VladD2 Российская Империя www.nemerle.org
Дата: 17.03.10 23:54
Оценка:
Здравствуйте, gloomy rocker, Вы писали:

Похоже сравнение сборок работает некорректно. Я тут подпатчил компилятор так чтобы он генерировал код для операторов >, <, <=, >= более похожий на C#-ный, но это привело к тому, что стадия проверки il-а стала сбоить. При этом сам компилятор собирается и все тесты проходят на ура.

У меня очень весомое подозрение на то, что проверка работает не верно.
http://nemerle.org/Banners/?g=dark
Есть логика намерений и логика обстоятельств, последняя всегда сильнее.
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.