Closed xplicit closed 9 years ago
The minimal Boost version required is 1.54. I will update the cmake files to provide better diagnostics. I haven't tested C# version on Mono. If you encounter issues a pull request would be welcome. Regarding the build problem on Windows, is there more information in the build logs?
MS VS logs:
1>------ Build started: Project: Compiler, Configuration: Release Win32 ------
1> Building Bond Compiler...
1> -- Configuring done
1> -- Generating done
1> -- Build files have been written to: C:/Projects/bond/cs/Release
1> Microsoft (R) Build Engine версии 12.0.31101.0
1> [Microsoft .NET Framework версии 4.0.30319.18444]
1> (C) Корпорация Майкрософт (Microsoft Corporation). Все права защищены.
1>
1> Сборка начата 11.01.2015 13:45:18.
1> Проект "C:\Projects\bond\cs\Release\compiler.vcxproj" в узле 1 (целевые объекты по умолчанию).
1> Проект "C:\Projects\bond\cs\Release\compiler.vcxproj" (1) выполняет сборку "C:\Projects\bond\cs\Release\ZERO_CHECK.vcxproj" (2) в узле 1 (целевые объекты по умолчанию).
1> InitializeBuildStatus:
1> Создание "Win32\Debug\ZERO_CHECK\ZERO_CHECK.tlog\unsuccessfulbuild", так как было задано "AlwaysCreate".
1> CustomBuild:
1> Для всех выходных данных обновления не требуется.
1> FinalizeBuildStatus:
1> Файл "Win32\Debug\ZERO_CHECK\ZERO_CHECK.tlog\unsuccessfulbuild" удаляется.
1> Обращение к "Win32\Debug\ZERO_CHECK\ZERO_CHECK.tlog\ZERO_CHECK.lastbuildstate".
1> Сборка проекта "C:\Projects\bond\cs\Release\ZERO_CHECK.vcxproj" завершена (целевые объекты по умолчанию).
1> InitializeBuildStatus:
1> Обращение к "Win32\Debug\compiler\compiler.tlog\unsuccessfulbuild".
1> CustomBuild:
1> Building Custom Rule C:/Projects/bond/compiler/CMakeLists.txt
1> CMake does not need to re-run because C:\Projects\bond\cs\Release\CMakeFiles\generate.stamp is up-to-date.
1> Generating C:/Projects/bond/compiler/cabal.sandbox.config
1> Системе не удается найти указанный путь.
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppCommon.targets(170,5): error MSB6006: "cmd.exe" завершилась с кодом 3. [C:\Projects\bond\cs\Release\compiler.vcxproj]
1> Сборка проекта "C:\Projects\bond\cs\Release\compiler.vcxproj" завершена (целевые объекты по умолчанию) с ошибкой.
1>
1> Ошибка сборки.
1>
1> "C:\Projects\bond\cs\Release\compiler.vcxproj" (целевой объект по умолчанию) (1) ->
1> (Целевой объект CustomBuild) ->
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppCommon.targets(170,5): error MSB6006: "cmd.exe" завершилась с кодом 3. [C:\Projects\bond\cs\Release\compiler.vcxproj]
1>
1> Предупреждений: 0
1> Ошибок: 1
1>
1> Затраченное время: 00:00:00.63
2>------ Build started: Project: IO, Configuration: Release Any CPU ------
3>------ Build started: Project: cloning, Configuration: Release Any CPU ------
3>C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(1697,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "Attributes". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.
3>C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(1697,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "Bond". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.
3>C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(1697,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "Bond.IO". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.
3> ""C:\Projects\bond\cs\build..\bin\gbc.exe"" не является внутренней или внешней
3> командой, исполняемой программой или пакетным файлом.
3>C:\Projects\bond\cs\build\bond.cs.targets(81,5): error MSB3073: The command ""C:\Projects\bond\cs\build..\bin\gbc.exe" c# --import-dir="C:\Projects\bond\cs\build..\inc" --namespace=bond=Bond --output-dir="obj\Release." @"obj\Release\bondfiles.tmp"" exited with code 9009.
2>C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(1697,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "Bond". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.
2>C:\Projects\bond\cs\src\io\unsafe\InputBuffer.cs(12,32,12,36): error CS0246: The type or namespace name 'Safe' could not be found (are you missing a using directive or an assembly reference?)
2>C:\Projects\bond\cs\src\io\unsafe\InputBuffer.cs(12,50,12,73): error CS0308: The non-generic type 'System.ICloneable' cannot be used with type arguments
2>C:\Projects\bond\cs\src\io\unsafe\InputStream.cs(12,45,12,68): error CS0308: The non-generic type 'System.ICloneable' cannot be used with type arguments
2>C:\Projects\bond\cs\src\io\unsafe\OutputBuffer.cs(9,33,9,37): error CS0246: The type or namespace name 'Safe' could not be found (are you missing a using directive or an assembly reference?)
Thanks. Could you check one more thing? Run:
cabal sandbox init
in C:/Projects/bond/compiler
Does that succeed?
Could you also attach the generated file C:\Projects\bond\cs\Release\compiler.vcxproj
?
C:\Projects\bond\compiler>cabal sandbox init
Writing a default package environment file to
C:\Projects\bond\compiler\cabal.sandbox.config
Warning: C:\Projects\bond\compiler\cabal.config: Unrecognized field
require-sandbox on line 1
Creating a new sandbox at C:\Projects\bond\compiler\.cabal-sandbox
compiler.vcxproj content
<?xml version="1.0" encoding="Windows-1252"?>
<Project ToolsVersion="12.0" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
<ItemGroup>
<CustomBuild Include="C:\Projects\bond\compiler\CMakeLists.txt" />
<CustomBuild Include="C:\Projects\bond\cs\Release\CMakeFiles\603407324714918b73739524a9f0e9e7\cabal.sandbox.config.rule">
<Filter>CMake Rules</Filter>
</CustomBuild>
<CustomBuild Include="C:\Projects\bond\cs\Release\CMakeFiles\4648a154f21027e4d96a9a68f15e5087\gbc.exe.rule">
<Filter>CMake Rules</Filter>
</CustomBuild>
<CustomBuild Include="C:\Projects\bond\cs\Release\CMakeFiles\d57ee40d0f00be745e13928a1381dcf9\gbc.comp.rule">
<Filter>CMake Rules</Filter>
</CustomBuild>
<CustomBuild Include="C:\Projects\bond\cs\Release\CMakeFiles\969aaddc54465b854f701b42a94398ea\compiler.rule">
<Filter>CMake Rules</Filter>
</CustomBuild>
</ItemGroup>
<ItemGroup>
<None Include="C:\Projects\bond\cs\Release\CMakeFiles\compiler" />
<None Include="C:\Projects\bond\compiler\gbc.cabal" />
<None Include="C:\Projects\bond\compiler\Main.hs" />
<None Include="C:\Projects\bond\compiler\Options.hs" />
<None Include="C:\Projects\bond\compiler\Bond\Lexer.hs" />
<None Include="C:\Projects\bond\compiler\Bond\Parser.hs" />
<None Include="C:\Projects\bond\compiler\Bond\Schema.hs" />
<None Include="C:\Projects\bond\compiler\Bond\Util.hs" />
<None Include="C:\Projects\bond\compiler\Bond\Version.hs" />
<None Include="C:\Projects\bond\compiler\Bond\Template\CustomMapping.hs" />
<None Include="C:\Projects\bond\compiler\Bond\Template\TypeMapping.hs" />
<None Include="C:\Projects\bond\compiler\Bond\Template\Util.hs" />
<None Include="C:\Projects\bond\compiler\Bond\Template\Cpp\Apply_cpp.hs" />
<None Include="C:\Projects\bond\compiler\Bond\Template\Cpp\Apply_h.hs" />
<None Include="C:\Projects\bond\compiler\Bond\Template\Cpp\Enum_h.hs" />
<None Include="C:\Projects\bond\compiler\Bond\Template\Cpp\Reflection_h.hs" />
<None Include="C:\Projects\bond\compiler\Bond\Template\Cpp\Types_cpp.hs" />
<None Include="C:\Projects\bond\compiler\Bond\Template\Cpp\Types_h.hs" />
<None Include="C:\Projects\bond\compiler\Bond\Template\Cpp\Util.hs" />
<None Include="C:\Projects\bond\compiler\Bond\Template\Cs\Types_cs.hs" />
<None Include="C:\Projects\bond\compiler\Bond\Template\Cs\Util.hs" />
</ItemGroup>
<ItemGroup>
<Filter Include="CMake Rules">
<UniqueIdentifier>{3A6A4052-8DAD-4F71-9340-2122F94F52E6}</UniqueIdentifier>
</Filter>
</ItemGroup>
</Project>
Files that's are referenced in
This warning:
Warning: C:\Projects\bond\compiler\cabal.config: Unrecognized field require-sandbox on line 1
Indicates that your version of cabal
is not required 1.2x. You can check running cabal --version
.
Could you run cabal install cabal-install
? From the output you should see if the update succeeded or not. If it fails, please send the error you are getting.
You're right, the version is 1.18. That's strange, I've ran cabal install cabal-install
before. I ran it again and version still not updated. I'll try to figure out, what is going on. Also, in cs solution cmake configuration should check for cabal version and output an error if it's not satisfied to required version. This will help alot to diagnose environment misconfiguration.
C:\Projects\bond\cs\Release\CMakeFiles>cabal install cabal-install Resolving dependencies... Configuring cabal-install-1.22.0.0... Building cabal-install-1.22.0.0... Installed cabal-install-1.22.0.0
C:\Projects\bond\cs\Release\CMakeFiles>cabal --version cabal-install version 1.18.0.5 using version 1.18.1.3 of the Cabal library
It might be that the new cabal is not in PATH. See if this gives you the right version:
%APPDATA%\cabal\bin\cabal --version
CMake should still find it in %APPDATA%
and should output error if it doesn't. Run the C++ building instruction from command line and you should see error from CMake if it doesn't find cabal. If it does find it then try to delete cs\Release
directory and run cs.sln
build again.
I will investigate if there is problem with CMake diagnostics when we run it from cs.sln.
Hi sapek,
Could you please release a binary build for the tools? I also suffered some strange issues when tried to build the solution, but I just want to have a try to use it.
Thank you!
We will release a NuGet package.
Could you provide more information about the build issues? Build logs? Thanks.
So, actually, I'm not familiar with the Haskell build process, so just have a try with your guide.
C:\g\Downloads\bond-master\cs>cabal --version cabal-install version 1.22.0.0 using version 1.22.0.0 of the Cabal library
C:\g\Downloads\bond-master\cs>cabal update Downloading the latest package list from hackage.haskell.org cabal: failed
C:\g\Downloads\bond-master\cs>cabal install cabal-install Warning: The package list for 'hackage.haskell.org' does not exist. Run 'cabal update' to download it. cabal: There is no package named 'cabal-install'. You may need to run 'cabal update' to get the latest list of available packages.
C:\g\Downloads\bond-master\cs>
The Visual Studio 2013 told me some errors:
Error 2 error MSB6006: "cmd.exe" exited with code 1. [C:\g\Downloads\bond-master\cs\Debug\compiler.vcxproj] C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppCommon.targets 170 5 Compiler
Error 7 The command ""C:\g\Downloads\bond-master\cs\build..\bin\gbc.exe" c# --import-dir="C:\g\Downloads\bond-master\cs\build..\inc" --namespace=bond=Bond --output-dir="obj\Debug." --using="SynchronizedList=SynchronizedCollection<{0}>" "schema.bond"" exited with code 9009. container_alias
@gaochundong cabal update
command has failed. You can check why it happened by running cabal update --verbose=3
for example
@sapek I installed cabal globally, using cabal intstall cabal-install --global
, added all files to the path, deleted Release
directory, but still have the same issue. cabal --version
from command line shows 1.22.
I suspect, that the non-ascii symbols in the user name can affect the build. How can I see, what the command is failed to test it through command line?
Cmake in build makes the appropriate cheks for the version, As far I remember last time (before setting cabal 1.22 globally) cmake has done it too and has found cabal 1.22
1>------ Build started: Project: Compiler, Configuration: Release Win32 ------
1> Building Bond Compiler...
1> -- Building for: Visual Studio 12 2013
1> -- The C compiler identification is MSVC 18.0.31101.0
1> -- The CXX compiler identification is MSVC 18.0.31101.0
1> -- Check for working C compiler using: Visual Studio 12 2013
1> -- Check for working C compiler using: Visual Studio 12 2013 -- works
1> -- Detecting C compiler ABI info
1> -- Detecting C compiler ABI info - done
1> -- Check for working CXX compiler using: Visual Studio 12 2013
1> -- Check for working CXX compiler using: Visual Studio 12 2013 -- works
1> -- Detecting CXX compiler ABI info
1> -- Detecting CXX compiler ABI info - done
1> -- Found Cabal: C:/Users/Єё/AppData/Roaming/cabal/bin/cabal.exe (found suitable version "1.22.0.0", minimum required is "1.20.0.0")
1> -- Found GHC: C:/Program Files/Haskell Platform/2014.2.0.0/bin/ghc.exe (found suitable version "7.8.3", minimum required is "7.4.1.0")
1> -- Configuring done
1> -- Generating done
1> -- Build files have been written to: C:/Projects/bond/cs/Release
1> Microsoft (R) Build Engine версии 12.0.31101.0
1> [Microsoft .NET Framework версии 4.0.30319.18444]
1> (C) Корпорация Майкрософт (Microsoft Corporation). Все права защищены.
1>
1> Сборка начата 12.01.2015 11:27:52.
1> Проект "C:\Projects\bond\cs\Release\compiler.vcxproj" в узле 1 (целевые объекты по умолчанию).
1> Проект "C:\Projects\bond\cs\Release\compiler.vcxproj" (1) выполняет сборку "C:\Projects\bond\cs\Release\ZERO_CHECK.vcxproj" (2) в узле 1 (целевые объекты по умолчанию).
1> PrepareForBuild:
1> Создание каталога "Win32\Debug\ZERO_CHECK\".
1> Создание каталога "C:\Projects\bond\cs\Release\Debug\".
1> Создание каталога "Win32\Debug\ZERO_CHECK\ZERO_CHECK.tlog\".
1> InitializeBuildStatus:
1> Создание "Win32\Debug\ZERO_CHECK\ZERO_CHECK.tlog\unsuccessfulbuild", так как было задано "AlwaysCreate".
1> CustomBuild:
1> Checking Build System
1> CMake does not need to re-run because C:/Projects/bond/cs/Release/CMakeFiles/generate.stamp is up-to-date.
1> FinalizeBuildStatus:
1> Файл "Win32\Debug\ZERO_CHECK\ZERO_CHECK.tlog\unsuccessfulbuild" удаляется.
1> Обращение к "Win32\Debug\ZERO_CHECK\ZERO_CHECK.tlog\ZERO_CHECK.lastbuildstate".
1> Сборка проекта "C:\Projects\bond\cs\Release\ZERO_CHECK.vcxproj" завершена (целевые объекты по умолчанию).
1> PrepareForBuild:
1> Создание каталога "Win32\Debug\compiler\".
1> Создание каталога "Win32\Debug\compiler\compiler.tlog\".
1> InitializeBuildStatus:
1> Создание "Win32\Debug\compiler\compiler.tlog\unsuccessfulbuild", так как было задано "AlwaysCreate".
1> ComputeCustomBuildOutput:
1> Создание каталога "C:\Projects\bond\cs\Release\build\gbc\".
1> CustomBuild:
1> Building Custom Rule C:/Projects/bond/compiler/CMakeLists.txt
1> CMake does not need to re-run because C:\Projects\bond\cs\Release\CMakeFiles\generate.stamp is up-to-date.
1> Generating C:/Projects/bond/compiler/cabal.sandbox.config
1> Системе не удается найти указанный путь.
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppCommon.targets(170,5): error MSB6006: "cmd.exe" завершилась с кодом 3. [C:\Projects\bond\cs\Release\compiler.vcxproj]
1> Сборка проекта "C:\Projects\bond\cs\Release\compiler.vcxproj" завершена (целевые объекты по умолчанию) с ошибкой.
1>
1> Ошибка сборки.
1>
1> "C:\Projects\bond\cs\Release\compiler.vcxproj" (целевой объект по умолчанию) (1) ->
1> (Целевой объект CustomBuild) ->
1>C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\V120\Microsoft.CppCommon.targets(170,5): error MSB6006: "cmd.exe" завершилась с кодом 3. [C:\Projects\bond\cs\Release\compiler.vcxproj]
1>
1> Предупреждений: 0
1> Ошибок: 1
1>
1> Затраченное время: 00:00:00.94
The command that fails is cabal sandbox init
. I bet you are right that it is about non-ascii chars in path. It might be related to #5. I will figure it out tomorrow. Thanks a lot for helping to track this down.
This should be resolved by 3d5905a but I will wait with closing the issue until you confirm. Thanks again for help.
I confirm the issue with cabal is resolved, I was able to compile gbc.exe. But now I've got the issues with compilng csharp projects, only Bond.Attributes.dll has compiled successfuly, other assemblies fail with the errors
1> Сборка успешно завершена.
1>
1> "C:\Projects\bond\cs\Debug\compiler.vcxproj" (целевой объект по умолчанию) (1) ->
1> (Целевой объект CustomBuild) ->
1>ghc.exe : warning : _wchmod from msvcrt is linked instead of impwchmod [C:\Projects\bond\cs\Debug\compiler.vcxproj]
1>
1> Предупреждений: 1
1> Ошибок: 0
1>
1> Затраченное время: 00:01:23.03
1> Скопировано файлов: 1.
2>------ Build started: Project: IO, Configuration: Debug Any CPU ------
3>------ Build started: Project: cloning, Configuration: Debug Any CPU ------
2>C:\Program Files (x86)\MSBuild\12.0\bin\Microsoft.Common.CurrentVersion.targets(1697,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "Bond". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.
2>C:\Projects\bond\cs\src\io\unsafe\InputBuffer.cs(12,32,12,36): error CS0246: The type or namespace name 'Safe' could not be found (are you missing a using directive or an assembly reference?)
2>C:\Projects\bond\cs\src\io\unsafe\InputBuffer.cs(12,50,12,73): error CS0308: The non-generic type 'System.ICloneable' cannot be used with type arguments
2>C:\Projects\bond\cs\src\io\unsafe\InputStream.cs(12,45,12,68): error CS0308: The non-generic type 'System.ICloneable' cannot be used with type arguments
2>C:\Projects\bond\cs\src\io\unsafe\OutputBuffer.cs(9,33,9,37): error CS0246: The type or namespace name 'Safe' could not be found (are you missing a using directive or an assembly reference?)
Looks like there was an error building project Bond (other projects depend on it). Could find and post what failed there?
I'm trying to figure it out. At the first when I open cs.sln in VS 2013 it asks me to convert some projects to new format - is this expecting behaviour? Then it complains about the absence of the Profile 259 on the machine for projects Core, Attributes, Json and asks to switch the projects to .NET 4.5 profile. If I change profile it does not build, says that IO project is targeted to 4.0 framework, while Bond assembly is targeted .NET 4.5. If I don't change, the bond.dll is not compiled. Currently I'm trying to repair VS 2013 installation and reinstall PCL libraries. I think this issue with PCL libraries is raised because I've got Xamarin Studio installed before VS 2013. I'll let you know about results when repair will be completed.
Message from Visual Studio
Functional changes required Visual Studio will automatically make functional changes to the following projects in order to open them. The project behavior will change as a result. You will be able to open these projects in Visual Studio 2013, Visual Studio 2012, and Visual Studio 2010 SP1.
Non-functional changes required Visual Studio will automatically make non-functional changes to the following projects in order to enable them to open in Visual Studio 2013, Visual Studio 2012, and Visual Studio 2010 SP1. Project behavior will not be impacted.
No changes required These projects can be opened in Visual Studio 2013, Visual Studio 2012, and Visual Studio 2010 SP1 without changing them.
I checked, that 259 profile is installed on my machine, the files C:\Program Files(x86)\Referenced Aseemblies\Microsoft\Framework.NETPortable\v4.5\Profile\Profile259 exist (Profile78 too), Visual Studio 2013 (Update 4) can successfully create new portable library project targeted Profile259.
But when I open cs.sln it does not allow to load Attributes, Bond and JSON projects complaining that the profile259 for .NET 4.5 is not installed on the machine. I don't know why this happened for cs.sln project.
Bond builds against PCL profile 78 when targeting .Net 4.5 and against full framework when targeting .Net 4.0. I'm not sure how profile 259 comes into picture.
I will try to reproduce your environment here.
I installed Xamarin but couldn't repro.
Can you try to remove these lines? This isn't a solution but would tell us if this is related to setting portable profile.
I changed Profile78 string to Profile259 in Common.Internal.targets
and Portable.Internal.props
and now I can compile the whole solution. I have no idea why Profile78 does not work, it's installed on my system like Profile259.
Thanks a lot for the info. I will close the issue. I think support for Profile 259 is something we should look at anyways, it is required for WP 8.1 as I understand.
Linux platform:
At first I tried to compile on Ubuntu 12.04, cmake 3.10 says
-- Could NOT find Boost
. I tried to install boost 1.46 and boost 1.48 from the ubuntu packages. Could you please add to the cmake output minimal required version of the Boost?Then I ordered 1GB RAM Ubuntu 14.04 VPS and tried to compile it again.
cabal install update-install
drops with out of memory exception. Please add minimum RAM requirements to the documentation.Also, what is a required mono version for building cs.sln? Will it be built with mono 3.10?
Windows platform:
I followed the steps in documentation (install cmake, haskell, update cabal, open cs.sln in Visual Studio 2013) and run the build. The build has failed on the step:
The path C:\Projects\bond\compiler exists on the machine.