Nemerle + Mono = ?
От: _NN_ www.nemerleweb.com
Дата: 21.02.14 09:34
Оценка:
https://groups.google.com/forum/#!topic/nemerle-en/xNrjBBqtoYE$$url0$$ мы обсуждаем как починить сборку в Mono.

Оказывается Mono не выставляет правильно размер стека: https://bugzilla.xamarin.com/show_bug.cgi?id=17908
Точнее раньше делал, а потом почему-то убрали.
В следующей версии Mono (3.2.9) проблемы не будет

Продолжение следует..
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: Nemerle + Mono = ?
От: hardcase Пират http://nemerle.org
Дата: 21.02.14 09:48
Оценка: +1 :)
Здравствуйте, _NN_, Вы писали:

_NN>Продолжение следует..


Мыльная опера...
/* иЗвиНите зА неРовнЫй поЧерК */
Re: Nemerle + Mono = Love :)
От: _NN_ www.nemerleweb.com
Дата: 21.02.14 14:34
Оценка:
Здравствуйте, _NN_, Вы писали:

Итак хорошие новости.
Моно из мастера таки умеет собирать компилятор из исходников

Правда пришлось убрать эти строки из файлов проектов.
Не находит GetAssemblyIdentity

  <Target Name="AfterBuild">
    <GetAssemblyIdentity AssemblyFiles="$(OutputPath)\$(AssemblyName).dll">
      <Output TaskParameter="Assemblies" ItemName="OutputAssemblyIdentity" />
    </GetAssemblyIdentity>
    <ItemGroup>
      <Token Include="ver">
        <ReplacementValue>%(OutputAssemblyIdentity.Version)</ReplacementValue>
      </Token>
    </ItemGroup>
    <TemplateFile Template="lib\policy.1.2.$(AssemblyName).config.template" OutputFilename="$(OutputPath)\policy.1.2.$(AssemblyName).config" Tokens="@(Token)" />
    <AL ToolPath="$(SDKBin)" LinkResources="$(OutputPath)\policy.1.2.$(AssemblyName).config" OutputAssembly="$(OutputPath)\policy.1.2.$(AssemblyName).dll" KeyFile="$(KeyOriginatorFile)" Platform="$(Platform)" />
  </Target>


Может кто то знает в чем дело?
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[2]: Сборка под моно
От: Блудов Павел Россия  
Дата: 23.02.14 01:40
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>Здравствуйте, _NN_, Вы писали:


_NN>Итак хорошие новости.

_NN>Моно из мастера таки умеет собирать компилятор из исходников
Точно умеет? Там последний комментарий

Rodrigo Kumpera 2014-02-20 15:05:51 EST

Reverted Zoltan's fix.

We should keep the old behavior when possible. Now we're using getrlimit to get
the max thread stack size.


И, если не секрет, как его собрать-то? Я пробовал так:

git clone https://github.com/rsdn/nemerle.git && cd nemerle
bash configure.sh
make -j 8

В ответ получил
make[1]: Вход в каталог `/home/pbludov/src/nemerle/ncc'
make[2]: Вход в каталог `/home/pbludov/src/nemerle/ncc'
make[2]: Вход в каталог `/home/pbludov/src/nemerle/ncc'
make[2]: Вход в каталог `/home/pbludov/src/nemerle/ncc'
MKDIR out.stage1
MKDIR out.stage3
MKDIR out.stage2
make[3]: Вход в каталог `/home/pbludov/src/nemerle/ncc'
make[3]: *** Нет правила для сборки цели `out.stage1/ncc.exe', требуемой для `out.stage2/Nemerle.stage2.dll'.  Останов.
make[3]: Выход из каталога `/home/pbludov/src/nemerle/ncc'
make[2]: *** [aux-stage] Ошибка 2
make[2]: Выход из каталога `/home/pbludov/src/nemerle/ncc'
make[1]: *** [stage2] Ошибка 2
make[1]: *** Ожидание завершения заданий...
make[3]: Вход в каталог `/home/pbludov/src/nemerle/ncc'
make[3]: *** Нет правила для сборки цели `out.stage2/ncc.exe', требуемой для `out.stage3/Nemerle.dll'.  Останов.
make[3]: Выход из каталога `/home/pbludov/src/nemerle/ncc'
make[2]: *** [last-stage] Ошибка 2
make[2]: Выход из каталога `/home/pbludov/src/nemerle/ncc'
make[1]: *** [stage3] Ошибка 2
make[3]: Вход в каталог `/home/pbludov/src/nemerle/ncc'
make[3]: *** Нет правила для сборки цели `typing/MType.n', требуемой для `out.stage1/Nemerle.Compiler.stage1.dll'.  Останов.
make[3]: Выход из каталога `/home/pbludov/src/nemerle/ncc'
make[2]: *** [aux-stage] Ошибка 2
make[2]: Выход из каталога `/home/pbludov/src/nemerle/ncc'
make[1]: *** [stage1] Ошибка 2
make[1]: Выход из каталога `/home/pbludov/src/nemerle/ncc'
make: *** [all] Ошибка 2


Похоже, нехватает каких-то зависимостей.
mono
Re[3]: Сборка под моно
От: _NN_ www.nemerleweb.com
Дата: 23.02.14 03:30
Оценка:
Здравствуйте, Блудов Павел, Вы писали:

БП>Здравствуйте, _NN_, Вы писали:


_NN>>Итак хорошие новости.

_NN>>Моно из мастера таки умеет собирать компилятор из исходников
БП>Точно умеет? Там последний комментарий
БП>

Rodrigo Kumpera 2014-02-20 15:05:51 EST

БП>Reverted Zoltan's fix.

БП>We should keep the old behavior when possible. Now we're using getrlimit to get
БП>the max thread stack size.

Не могу найти этот коммит.
На всякий случай я говорю про ветку master.

БП>И, если не секрет, как его собрать-то? Я пробовал так:

make давно никто не поддерживает в актуальном состоянии.
Есть xbuild.

Например так
xbuild NemerleAll-Mono.nproj /p:TargetFrameworkVersion=v4.5 /t:Stage4 /p:Configuration=Release


Надо наверное сделать шелл скрипт чтобы упростить жизнь.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[4]: Сборка под моно
От: Блудов Павел Россия  
Дата: 24.02.14 02:25
Оценка: +1 :)
Здравствуйте, _NN_, Вы писали:


_NN>Надо наверное сделать шелл скрипт чтобы упростить жизнь.


Достаточно добавить эти две строки в файл README.
Все, у кого в школе была двойка по телепатии, начинают с чтения этого файла.
Re[2]: GetAssemblyIdentity
От: Блудов Павел Россия  
Дата: 25.02.14 14:12
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>Может кто то знает в чем дело?


К.О. подсказывает, что его просто нет:
https://github.com/mono/mono/blob/master/mcs/class/Microsoft.Build.Tasks/Microsoft.Build.Tasks/GetAssemblyIdentity.cs

        [MonoTODO]
        public override bool Execute ()
        {
            throw new NotImplementedException ();
        }

Последние изменения у этого файла были 7 лет назад. Полагаю, его нужно просто взять и написать.
Вот оригинальный код для примера:

using Microsoft.Build.Framework;
using Microsoft.Build.Shared;
using Microsoft.Build.Utilities;
using System;
using System.Collections;
using System.Globalization;
using System.Reflection;
using System.Runtime;
using System.Text;

namespace Microsoft.Build.Tasks
{
  public class GetAssemblyIdentity : TaskExtension
  {
    private ITaskItem[] assemblyFiles;
    private ITaskItem[] assemblies;

    [Required]
    public ITaskItem[] AssemblyFiles
    {
      get
      {
        ErrorUtilities.VerifyThrowArgumentNull((object) this.assemblyFiles, "assemblyFiles");
        return this.assemblyFiles;
      }
      [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")] set
      {
        this.assemblyFiles = value;
      }
    }

    [Output]
    public ITaskItem[] Assemblies
    {
      [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")] get
      {
        return this.assemblies;
      }
      [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")] set
      {
        this.assemblies = value;
      }
    }

    [TargetedPatchingOptOut("Performance critical to inline this type of method across NGen image boundaries")]
    public GetAssemblyIdentity()
    {
    }

    public override bool Execute()
    {
      ArrayList arrayList = new ArrayList();
      foreach (ITaskItem taskItem in this.AssemblyFiles)
      {
        AssemblyName assemblyName;
        try
        {
          assemblyName = AssemblyName.GetAssemblyName(taskItem.ItemSpec);
        }
        catch (BadImageFormatException ex)
        {
          this.Log.LogErrorWithCodeFromResources("GetAssemblyIdentity.CouldNotGetAssemblyName", (object) taskItem.ItemSpec, (object) ex.Message);
          continue;
        }
        catch (Exception ex)
        {
          if (ExceptionHandling.NotExpectedException(ex))
          {
            throw;
          }
          else
          {
            this.Log.LogErrorWithCodeFromResources("GetAssemblyIdentity.CouldNotGetAssemblyName", (object) taskItem.ItemSpec, (object) ex.Message);
            continue;
          }
        }
        ITaskItem destinationItem = (ITaskItem) new TaskItem(assemblyName.FullName);
        destinationItem.SetMetadata("Name", assemblyName.Name);
        if (assemblyName.Version != (Version) null)
          destinationItem.SetMetadata("Version", ((object) assemblyName.Version).ToString());
        if (assemblyName.GetPublicKeyToken() != null)
          destinationItem.SetMetadata("PublicKeyToken", GetAssemblyIdentity.ByteArrayToHex(assemblyName.GetPublicKeyToken()));
        if (assemblyName.CultureInfo != null)
          destinationItem.SetMetadata("Culture", assemblyName.CultureInfo.ToString());
        taskItem.CopyMetadataTo(destinationItem);
        arrayList.Add((object) destinationItem);
      }
      this.Assemblies = (ITaskItem[]) arrayList.ToArray(typeof (ITaskItem));
      return !this.Log.HasLoggedErrors;
    }

    private static string ByteArrayToHex(byte[] a)
    {
      if (a == null)
        return (string) null;
      StringBuilder stringBuilder = new StringBuilder(a.Length);
      foreach (byte num in a)
        stringBuilder.Append(num.ToString("X02", (IFormatProvider) CultureInfo.InvariantCulture));
      return ((object) stringBuilder).ToString();
    }
  }
}
mono
Re[3]: GetAssemblyIdentity
От: Аноним  
Дата: 25.02.14 16:27
Оценка:
Это уже выяснили
Попытаемся приделать еще надо бы реализовать ItemDefinitionGroup .
mono
Re: Nemerle + Mono = ?
От: _NN_ www.nemerleweb.com
Дата: 01.05.14 17:59
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>Продолжение следует..

Обновления

На данный момент компилятор собирается без проблем для .NET 3.5.
Попутно нашелся очередной баг не подхватываются правильные бинарники.

Должно быть Stage3 , а выходит Stage1.
/ref:/home/z/nemerle/bin/Release/mono-3.5/Stage1//Nemerle.Compiler.dll
                /ref:/home/z/nemerle/bin/Release/mono-3.5/Stage1//Nemerle.dll 
                /out:/home/z/nemerle/obj/Release/mono-3.5//Stage4/ncc.exe


Кто-нибудь хочет довести сборку Nemerle в Linux до ума ?

P.S.
Похоже в Linux, нет ничего лучше старых добрых make файлов.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re: Nemerle + Mono = ?
От: _NN_ www.nemerleweb.com
Дата: 29.05.14 04:19
Оценка:
Здравствуйте, _NN_, Вы писали:

Свежие вести с полей.
Компилятор собирает все 4 стадии, собирает библиотеки и запускает тесты
Осталось только разобраться почему некоторые (всего 5) тесты падают.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[2]: Nemerle + Mono = ?
От: Аноним  
Дата: 29.05.14 05:15
Оценка:
Здравствуйте, _NN_, Вы писали:

_NN>Здравствуйте, _NN_, Вы писали:


_NN>Свежие вести с полей.

_NN>Компилятор собирает все 4 стадии, собирает библиотеки и запускает тесты
_NN>Осталось только разобраться почему некоторые (всего 5) тесты падают.

НемерлиВеб требуется?
Re[3]: Nemerle + Mono = ?
От: _NN_ www.nemerleweb.com
Дата: 29.05.14 05:26
Оценка:
Здравствуйте, Аноним, Вы писали:

А>НемерлиВеб требуется?

Для чего ? Для сборки компилятора ?
Для сборки компилятора нужен только компилятор
И Mono собранный из мастера, не уверен, что на 3.4.0 все работает.
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[2]: Nemerle + Mono = ?
От: Вестильд Россия  
Дата: 08.11.14 12:04
Оценка:
У меня не собирается.

Делаю так:
build NemerleAll.nproj /t:Stage1


выпадают ошибки:
: error : Target '_ComputeNonExistentFileProperty', a dependency of target 'CoreCompile', not found.
                Done building project "/ld/program/nemerle/nemerle-trunk/nemerle/Nemerle.nproj".-- FAILED


моно собрано из мастера (пару недель назад).

Проблема случаем не в том, что "Item/PropertyGroups in targets" не реализовано?

Я вроде реализовал ItemDefinitionGroup. Вернее адаптировал патч с этим, который у них в багтрекере валялся лет 5.
В том что он корректен (и что я его корректно втянул в текущую версию) у меня сомнения, но вроде бы сам моно с ним собирается.
А сборка Немерле одинаково падает, что на патченной версии, что на чистой из мастера.
Re[3]: Nemerle + Mono = ?
От: Ziaw Россия  
Дата: 08.11.14 17:51
Оценка:
Здравствуйте, Вестильд, Вы писали:

В>выпадают ошибки:

В>
В>: error : Target '_ComputeNonExistentFileProperty', a dependency of target 'CoreCompile', not found.
В>                Done building project "/ld/program/nemerle/nemerle-trunk/nemerle/Nemerle.nproj".-- FAILED
В>


Target '_ComputeNonExistentFileProperty' для msbuild находится в Microsoft.Common.targets, надо найти где оно в моно и подключить.
Re[3]: Nemerle + Mono = ?
От: _NN_ www.nemerleweb.com
Дата: 08.11.14 18:47
Оценка:
Здравствуйте, Вестильд, Вы писали:

В>У меня не собирается.


В>Делаю так:

В>
В>build NemerleAll.nproj /t:Stage1
В>


Попробуйте
xbuild NemerleAll.nproj /p:TargetFrameworkVersion=v4.5 /t:Stage4 /p:Configuration=Release /tv:4.0
http://rsdn.nemerleweb.com
http://nemerleweb.com
Re[4]: Nemerle + Mono = ?
От: Вестильд Россия  
Дата: 09.11.14 07:41
Оценка:
Отредактировано 09.11.2014 8:10 Вестильд . Предыдущая версия .
Re[4]: Nemerle + Mono = ?
От: Вестильд Россия  
Дата: 09.11.14 08:09
Оценка:
Здравствуйте, Ziaw, Вы писали:

Z>Здравствуйте, Вестильд, Вы писали:


В>>выпадают ошибки:

В>>
В>>: error : Target '_ComputeNonExistentFileProperty', a dependency of target 'CoreCompile', not found.
В>>                Done building project "/ld/program/nemerle/nemerle-trunk/nemerle/Nemerle.nproj".-- FAILED
В>>


Z>Target '_ComputeNonExistentFileProperty' для msbuild находится в Microsoft.Common.targets, надо найти где оно в моно и подключить.


Ага.

Задача была закомментирована.
Да ещё и

<Target Name="_ComputeNonExistentFileProperty" Condition='false'>



Спасибо за подсказку.
Re: Nemerle + Mono = ?
От: Вестильд Россия  
Дата: 06.12.14 17:43
Оценка:
Скачал последние бинарники Немерла, поставил mono 3.10.0
пытаюсь сбилдить простейший проект, получаю
: error : Error building target CoreCompile: Unable to parse condition "%(ReferencePath.OutputItemType) != 'macro'" : Missing closing parenthesis in condition %(ReferencePath.OutputItemType) != 'macro'
Error building target CoreCompile: Microsoft.Build.BuildEngine.InvalidProjectFileException: Unable to parse condition "%(ReferencePath.OutputItemType) != 'macro'" : Missing closing parenthesis in condition %(ReferencePath.OutputItemType) != 'macro' ---> Microsoft.Build.BuildEngine.ExpressionParseException: Missing closing parenthesis in condition %(ReferencePath.OutputItemType) != 'macro'

Я правильно понимаю, что причина в том, что моно не умеет "Item/PropertyGroups in targets"?
Re[2]: Nemerle + Mono = ?
От: hardcase Пират http://nemerle.org
Дата: 06.12.14 20:49
Оценка:
Здравствуйте, Вестильд, Вы писали:

В>Я правильно понимаю, что причина в том, что моно не умеет "Item/PropertyGroups in targets"?


Да, там нужно CreateItem кажется городить, который в свежем MSBuild-е стал Obsolete.
/* иЗвиНите зА неРовнЫй поЧерК */
Re[3]: Nemerle + Mono = ?
От: Вестильд Россия  
Дата: 07.12.14 08:33
Оценка:
Здравствуйте, hardcase, Вы писали:

H>Здравствуйте, Вестильд, Вы писали:


В>>Я правильно понимаю, что причина в том, что моно не умеет "Item/PropertyGroups in targets"?


H>Да, там нужно CreateItem кажется городить, который в свежем MSBuild-е стал Obsolete.


Это вы предлагаете в Nemerle? Может лучше mono допилить?
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.