How to get MonoDevelop to compile F# projects? - f#

The problem seems to be as follows, there compiler puts in a redundant reference to an assembly. I have no idea how to avoid this, there doesn't seem to be any field in MonoDevelop build options where this would be coming from:
Building: FSharpPractice (Debug|x86)
Building Solution FSharpPractice
Building: FSharpPractice (Debug|x86)
Performing main compilation...
C:\Program Files\FSharp-2.0.0.0\bin\fsc.exe --noframework --nologo
--target:exe
--out:"C:\Users\Alex Limonov\Documents\Projects\FSharpPractice\bin\Debug\FSharpPractice.exe"
--noframework
--debug-
--optimize-
--tailcalls-
-r:C:\Program Files\FSharp-2.0.0.0\bin\FSharp.Core.dll
-r:C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.dll
-r:"C:\Program Files\FSharp-2.0.0.0\bin\FSharp.Core.dll"
-r:"C:\Windows\Microsoft.NET\Framework\v2.0.50727\System.dll"
C:\Users\Alex Limonov\Documents\Projects\FSharpPractice\Program.fs
Build complete -- 2 errors, 0 warnings

In my case (MonoDevelop 2.4.2 with F# binding 2.4 on Mac OS X 10.6) I managed to compile F# project once I've explicitly added a reference to FSharp.Core.dll (4.0.0.0 here).

Related

References to NuGet packages cannot be resolved in F# project being built in VSTS

With Visual Studio 2017 Community I have created a solution with a F# library project (regular, not PCL) targeting the .NET 4.5.2 framework and the F# 4.1 (FSharp.Core, 4.4.1.0) runtime. Visual Studio added for me the NuGet reference to System.ValueType (4.3.0) by default.
The only code in this project is the following which is using System.ValueType:
type TupleCreator() =
member this.Create x =
System.ValueTuple.Create(x)
Building the project locally works fine, unfortunately this is not the case with VSTS. I have a build definition (with default agent queue set to Hosted VS2017) with a NuGet restore step and a build solution step (with Visual Studio Version set to Latest).
When the build runs it succeeds in restoring the nuget packages:
##[section]Starting: NuGet restore **\*.sln
=================================================================
Task : NuGet Installer
Description : Installs or restores missing NuGet packages
Version : 0.2.31
Author : Microsoft Corporation
=================================================================
[command]C:\Windows\system32\chcp.com 65001
Active code page: 65001
Detected NuGet version 3.3.0.212 / 3.3.0
SYSTEMVSSCONNECTION exists true
To connect to NuGet feeds hosted in your Team Services account/TFS project collection on this build agent, edit your build definition to choose a higher version of nuget or specify a path to a NuGet.config containing the package sources you wish to use.
[command]d:\a\_tasks\NuGetInstaller_333b11bd-d341-40d9-afcf-b32d5ce6f23b\0.2.31\node_modules\nuget-task-common\NuGet\3.3.0\NuGet.exe restore -NonInteractive d:\a\3\s\Apps\Sandbox\FSharpWithNugetDemo\FSharpWithNugetDemo.sln
MSBuild auto-detection: using msbuild version '4.0' from 'C:\Windows\Microsoft.NET\Framework\v4.0.30319'.
Feeds used:
C:\Users\buildguest\AppData\Local\NuGet\Cache
https://api.nuget.org/v3/index.json
Restoring NuGet package System.ValueTuple.4.3.0.
Adding package 'System.ValueTuple.4.3.0' to folder 'd:\a\3\s\Apps\Sandbox\FSharpWithNugetDemo\packages'
Added package 'System.ValueTuple.4.3.0' to folder 'd:\a\3\s\Apps\Sandbox\FSharpWithNugetDemo\packages'
##[section]Finishing: NuGet restore **\*.sln
The build step then yields the following log:
##[section]Starting: Build solution $/tfs1/Apps/Sandbox/FSharpWithNugetDemo/FSharpWithNugetDemo.sln
==============================================================================
Task : Visual Studio Build
Description : Build with MSBuild and set the Visual Studio version property
Version : 1.117.0
Author : Microsoft Corporation
Help : [More Information](https://go.microsoft.com/fwlink/?LinkID=613727)
==============================================================================
##[command]"D:\a\_tasks\VSBuild_71a9a2d3-a98a-4caa-96ab-affca411ecda\1.117.0\ps_modules\MSBuildHelpers\vswhere.exe" -version [15.0,15.1) -latest -format json
##[command]"C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\msbuild.exe" "d:\a\3\s\Apps\Sandbox\FSharpWithNugetDemo\FSharpWithNugetDemo.sln" /nologo /nr:false /dl:CentralLogger,"D:\a\_tasks\VSBuild_71a9a2d3-a98a-4caa-96ab-affca411ecda\1.117.0\ps_modules\MSBuildHelpers\Microsoft.TeamFoundation.DistributedTask.MSBuild.Logger.dll";"RootDetailId=d08ecee6-b628-4743-9e80-d31a64026956|SolutionDir=d:\a\3\s\Apps\Sandbox\FSharpWithNugetDemo"*ForwardingLogger,"D:\a\_tasks\VSBuild_71a9a2d3-a98a-4caa-96ab-affca411ecda\1.117.0\ps_modules\MSBuildHelpers\Microsoft.TeamFoundation.DistributedTask.MSBuild.Logger.dll" /p:TreatWarningsAsErrors=False /p:platform="any cpu" /p:configuration="debug" /p:VisualStudioVersion="15.0" /p:_MSDeployUserAgent="VSTS_1e91f890-819e-4329-aa62-069b62ae16d0_build_4_116"
Building the projects in this solution one at a time. To enable parallel build, please add the "/m" switch.
Build started 5/24/2017 6:32:52 PM.
Project "d:\a\3\s\Apps\Sandbox\FSharpWithNugetDemo\FSharpWithNugetDemo.sln" on node 1 (default targets).
ValidateSolutionConfiguration:
Building solution configuration "debug|any cpu".
Project "d:\a\3\s\Apps\Sandbox\FSharpWithNugetDemo\FSharpWithNugetDemo.sln" (1) is building "d:\a\3\s\Apps\Sandbox\FSharpWithNugetDemo\FSharpWithNugetDemo.fsproj" (2) on node 1 (default targets).
PrepareForBuild:
Creating directory "bin\Debug\".
Creating directory "obj\Debug\".
ResolveAssemblyReferences:
Primary reference "System.ValueTuple".
##[warning]C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(1964,5): Warning MSB3245: Could not resolve this reference. Could not locate the assembly "System.ValueTuple". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors.
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(1964,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "System.ValueTuple". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. [d:\a\3\s\Apps\Sandbox\FSharpWithNugetDemo\FSharpWithNugetDemo.fsproj]
For SearchPath "{HintPathFromItem}".
Considered "..\..\Sandbox (local)\packages\System.ValueTuple.4.3.0\lib\netstandard1.0\System.ValueTuple.dll", but it didn't exist.
For SearchPath "{TargetFrameworkDirectory}".
Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.ValueTuple.winmd", but it didn't exist.
Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.ValueTuple.dll", but it didn't exist.
Considered "C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.ValueTuple.exe", but it didn't exist.
.
.
.
Considered "bin\Debug\System.ValueTuple.exe", but it didn't exist.
CoreCompile:
C:\Program Files (x86)\Microsoft SDKs\F#\4.1\Framework\v4.0\fsc.exe -o:obj\Debug\FSharpWithNugetDemo.dll
-g
--debug:full
--noframework
--define:DEBUG
--define:TRACE
--doc:bin\Debug\FSharpWithNugetDemo.XML
--optimize-
--tailcalls-
-r:C:\Program Files (x86)\Reference Assemblies\Microsoft\FSharp\.NETFramework\v4.0\4.4.1.0\FSharp.Core.dll
-r:C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\mscorlib.dll
-r:C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.Core.dll
-r:C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.dll
-r:C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.Numerics.dll
--target:library
--warn:3
--warnaserror:76
--fullpaths
--flaterrors
--subsystemversion:6.00
--highentropyva+
d:\a\_temp\.NETFramework,Version=v4.5.2.AssemblyAttributes.fs
AssemblyInfo.fs
Library1.fs
##[error]Apps\Sandbox\FSharpWithNugetDemo\Library1.fs(5,12): Error FS0039: The value, constructor, namespace or type 'ValueTuple' is not defined. Maybe you want one of the following: ValueType
d:\a\3\s\Apps\Sandbox\FSharpWithNugetDemo\Library1.fs(5,12): error FS0039: The value, constructor, namespace or type 'ValueTuple' is not defined. Maybe you want one of the following: ValueType [d:\a\3\s\Apps\Sandbox\FSharpWithNugetDemo\FSharpWithNugetDemo.fsproj]
Done Building Project "d:\a\3\s\Apps\Sandbox\FSharpWithNugetDemo\FSharpWithNugetDemo.fsproj" (default targets) -- FAILED.
Done Building Project "d:\a\3\s\Apps\Sandbox\FSharpWithNugetDemo\FSharpWithNugetDemo.sln" (default targets) -- FAILED.
Build FAILED.
"d:\a\3\s\Apps\Sandbox\FSharpWithNugetDemo\FSharpWithNugetDemo.sln" (default target) (1) ->
"d:\a\3\s\Apps\Sandbox\FSharpWithNugetDemo\FSharpWithNugetDemo.fsproj" (default target) (2) ->
(ResolveAssemblyReferences target) ->
C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\MSBuild\15.0\Bin\Microsoft.Common.CurrentVersion.targets(1964,5): warning MSB3245: Could not resolve this reference. Could not locate the assembly "System.ValueTuple". Check to make sure the assembly exists on disk. If this reference is required by your code, you may get compilation errors. [d:\a\3\s\Apps\Sandbox\FSharpWithNugetDemo\FSharpWithNugetDemo.fsproj]
"d:\a\3\s\Apps\Sandbox\FSharpWithNugetDemo\FSharpWithNugetDemo.sln" (default target) (1) ->
"d:\a\3\s\Apps\Sandbox\FSharpWithNugetDemo\FSharpWithNugetDemo.fsproj" (default target) (2) ->
(CoreCompile target) ->
d:\a\3\s\Apps\Sandbox\FSharpWithNugetDemo\Library1.fs(5,12): error FS0039: The value, constructor, namespace or type 'ValueTuple' is not defined. Maybe you want one of the following: ValueType [d:\a\3\s\Apps\Sandbox\FSharpWithNugetDemo\FSharpWithNugetDemo.fsproj]
1 Warning(s)
1 Error(s)
Time Elapsed 00:00:06.14
##[error]Process 'msbuild.exe' exited with code '1'.
This is not an issue with System.ValueType because the build process is unable to build with references to any nuget packages. This is also not an issue with my VSTS because my C# projects with NuGet references get built fine.
What is wrong with my F# project? Are there additional steps to be taken in order to enable NuGet in F# projects on VSTS?
EDIT
I just compared the output of the CoreCompile section with what is printed in Visual Studio. In Visual Studio it says:
C:\Program Files (x86)\Microsoft SDKs\F#\4.1\Framework\v4.0\fsc.exe -o:obj\Debug\FSharpWithNugetDemo.dll
-g
--debug:full
--noframework
--define:DEBUG
--define:TRACE
--doc:bin\Debug\FSharpWithNugetDemo.XML
--optimize-
--tailcalls-
-r:C:\Program Files (x86)\Reference Assemblies\Microsoft\FSharp\.NETFramework\v4.0\4.4.1.0\FSharp.Core.dll
-r:C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\mscorlib.dll
-r:C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.Core.dll
-r:C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.dll
-r:C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\.NETFramework\v4.5.2\System.Numerics.dll
-r:D:\Projects\Sandbox\packages\System.ValueTuple.4.3.0\lib\netstandard1.0\System.ValueTuple.dll
.
.
.
--target:library
--warn:3
--warnaserror:76
--vserrors
--utf8output
--fullpaths
--flaterrors
--subsystemversion:6.00
--highentropyva+
C:\Users\David\AppData\Local\Temp\.NETFramework,Version=v4.5.2.AssemblyAttributes.fs
AssemblyInfo.fs
Library1.fs
FSharpWithNugetDemo -> D:\Projekte\VisualStudio.com\sphereutfs\Dev\Apps\Sandbox\FSharpWithNugetDemo\bin\Debug\FSharpWithNugetDemo.dll
The difference is that there is a -r: line with a path to the System.ValueTuple.dll obtained from NuGet which is missing in the log of the VSTS build. How can I tell the VSTS build to include this reference when compiling?
This is caused the setting in your FSharpWithNugetDemo.fsproj file. You set the path for System.ValueTuple as your local path:
<Reference Include="System.ValueTuple">
<HintPath>..\..\Sandbox (local)\packages\System.ValueTuple.4.3.0\lib\netstandard1.0\System.ValueTuple.dll</HintPath>
</Reference>
It should be use relate path so that when it build by VSTS, System.ValueTuple will be searched in $(build.sourcesdirectory):
<Reference Include="System.ValueTuple">
<HintPath>..\packages\System.ValueTuple.4.3.0\lib\netstandard1.0\System.ValueTuple.dll</HintPath>
</Reference>

VSTS - Problems with Xamarin Proguard Version and JDK 1.8

I have a Xamarin Forms Project that I'm trying to integrate with HockeyApps using Continuous Integration with VSTS.
My app compiles using Java 1.8 and it uses ProGuard to shrink the android apk file.
But when java try to compile the application, it finds that the Installed version of proguard is not compatible with Java 1.8
The error is the following:
... Can't process class [android/app/ActivityTracker.class] Unsupported class version number [52.0] maximum 51.0, Java 1.7...
In my local visual studio installation, I fixed it replacing the default proguard version that Xamarin Installs for the lastest one 5.x...
Anybody knows how to do it with VSTS?
DETAILED ERROR:
_CompileToDalvikWithDx:
C:\Program Files\Java\jdk1.8.0_102\\bin\java.exe -jar C:\java\androidsdk\android-sdk\tools\proguard\lib\proguard.jar -include C:\java\androidsdk\android-sdk\tools\proguard\proguard-android.txt -include obj\Release\proguard\proguard_xamarin.cfg -include obj\Release\proguard\proguard_project_references.cfg -include obj\Release\proguard\proguard_project_primary.cfg -include proguard.cfg "-injars 'obj\Release\proguard\__proguard_input__.jar';'C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\MonoAndroid\v7.0\mono.android.jar';'obj\Release\__library_projects__\FormsViewGroup\library_project_imports\formsviewgroup.jar';'obj\Release\__library_projects__\HockeySDK.AndroidBindings\library_project_imports\bin\classes.jar';'C:\Users\buildguest\AppData\Local\Xamarin\Xamarin.Android.Support.Animated.Vector.Drawable\23.3.0.0\embedded\classes.jar';'C:\Users\buildguest\AppData\Local\Xamarin\Xamarin.Android.Support.Design\23.3.0.0\embedded\classes.jar';'C:\Users\buildguest\AppData\Local\Xamarin\Xamarin.Android...
java.io.IOException: Can't read [C:\Program Files (x86)\Reference Assemblies\Microsoft\Framework\MonoAndroid\v7.0\mono.android.jar] (Can't process class [android/app/ActivityTracker.class] (Unsupported class version number [52.0] (maximum 51.0, Java 1.7)))
at proguard.InputReader.readInput(InputReader.java:230)
at proguard.InputReader.readInput(InputReader.java:200)
at proguard.InputReader.readInput(InputReader.java:178)
at proguard.InputReader.execute(InputReader.java:78)
at proguard.ProGuard.readInput(ProGuard.java:196)
at proguard.ProGuard.execute(ProGuard.java:78)
at proguard.ProGuard.main(ProGuard.java:492)
Caused by: java.io.IOException: Can't process class [android/app/ActivityTracker.class] (Unsupported class version number [52.0] (maximum 51.0, Java 1.7))
at proguard.io.ClassReader.read(ClassReader.java:112)
at proguard.io.FilteredDataEntryReader.read(FilteredDataEntryReader.java:87)
at proguard.io.JarReader.read(JarReader.java:65)
at proguard.io.DirectoryPump.readFiles(DirectoryPump.java:65)
at proguard.io.DirectoryPump.pumpDataEntries(DirectoryPump.java:53)
at proguard.InputReader.readInput(InputReader.java:226)
... 6 more
Caused by: java.lang.UnsupportedOperationException: Unsupported class version number [52.0] (maximum 51.0, Java 1.7)
at proguard.classfile.util.ClassUtil.checkVersionNumbers(ClassUtil.java:140)
at proguard.classfile.io.ProgramClassReader.visitProgramClass(ProgramClassReader.java:88)
at proguard.classfile.ProgramClass.accept(ProgramClass.java:346)
at proguard.io.ClassReader.read(ClassReader.java:91)
... 11 more
Picked up JAVA_TOOL_OPTIONS: -Dfile.encoding=UTF8
C:\Program Files (x86)\MSBuild\Xamarin\Android\Xamarin.Android.Common.targets(2025,3): Error MSB6006: "java.exe" exited with code 1.
I'm afraid that there isn't any workaround for your issue with Hosted Build Agent since the user has no permission to update the installed software on Hosted Machine.
You need to deploy your own build agent and then replace the files manually.
The reason is that it uses JDK 1.7 that is incompatible. You can specify JDK version of Xamarin build step:

Delphi Seattle, Compile Error: F2051 Unit System.SysUtils was compiled with a different version of "".GetMappedFileName

since some days, something weird happened.
Problem:
I always get "Compile Error: F2051 Unit System.SysUtils was compiled
with a different version of “”.GetMappedFileName" No precise code line
to mention. Also the same problem if I make a simple project with
only one call to a sysutils command.
Our situation: me and my collegueare developping on the same project. We use JEDI to exchange our sources and to keep track of changes.
LAst, I was downloading his changed sources. Everything went well and I was ready to go on.
I refreshed all my files and tried to compile, build and run the new sources on my computer.
Then it got weird. While compiling, I got this error:
F2051 Unit System.SysUtils was compiled with a different version of "".GetMappedFileName
I checked our versions of delphi standard lib's and also the versions of our other components installed and everything matches.
Then I went on internet-tip-shopping. I found some similar problems, but non of the possible solutions worked for me...
This are some things I tried yet:
setup a smal simple project with only the beep-function from sysUtils
repair of delphi Seattle
Looked at my Library path, browsing path, ...
Cleared the dcu's of my project
I also tried a "dir /s" search to find different (wrong?) versions of System.SysUtils.*
Found .PAS
1 for every installed version, 14, 15, 16, 17 (non of the 14, 15, or
16 in my paths
C:\ProgramData{0DE47792-19BD-4AF4-B9CF-6378FBA44825}\sourcefileswin32\E1F130EB\D08CA8BE
C:\Users\All
Users{0DE47792-19BD-4AF4-B9CF-6378FBA44825}\sourcefileswin32\E1F130EB\D08CA8BE
Found .DCU
For all versions (14, 15, 16, 17)
For every export system (android, ios, ..)
Also in the ProgramData
Also in the All Users
You an find my library and browsing path at the end of this post.
Some of the internet sites I used to try to solve this:
Why are my units "compiled with a different version" of my own files?
F2051: Unit %s was compiled with a different version of %s
https://translate.google.com/translate?hl=en&sl=auto&tl=en&u=http%3A%2F%2Fdelphi4arab.net%2Fforum%2Fshowthread.php%3Fmode%3Dlinear%26tid%3D4700%26pid%3D24332
[DCC Fatal Error]: F2051 Unit ApFileIO was compiled with a different version of ***.{ApCollections}TLinkList<uPublic.TApObject>
Does anyone have an idea or a clue to get out off this. Cause I can't go on with any of my projects since this happened.
This is my Library path for Win32:
$(BDS)\Imports;
$(BDS)\LIB;
$(BDS)\Bin;
$(BDSCOMMONDIR)\Bpl;
$(BDSCOMMONDIR)\Dcp;
$(BDS)\include;
C:\Program Files (x86)\Neos Eureka S.r.l\EurekaLog 7\Lib\Common\;
C:\Program Files (x86)\Neos Eureka S.r.l\EurekaLog 7\Lib\Win32\Release\Studio23\;
C:\Program Files (x86)\Neos Eureka S.r.l\EurekaLog 7\Source\Extras;
$(BDS)\RBuilder\Lib\Win32;
C:\sources\Utilities;
C:\Program Files (x86)\Embarcadero\synaps\source\lib;
C:\Program Files (x86)\Embarcadero\Components;
C:\Program Files (x86)\Embarcadero\EmbeddedWB\Source;
C:\Program Files (x86)\Embarcadero\Ruler;
C:\Program Files (x86)\Embarcadero\paxCompilerXE10\package;
C:\Program Files (x86)\Embarcadero\Studio\17.0\source\rtl\win;
C:\Program Files (x86)\Devart\UniDAC for RAD Studio 10\Lib\Win32;
c:\program files (x86)\embarcadero\tms pack for firemonkey\win32;
C:\Program Files (x86)\Embarcadero\fgx_XE8\Library;$(DXVCL)\Library\RS23;
C:\Program Files (x86)\Embarcadero\RTC;
C:\Program Files (x86)\Embarcadero\Studio\17.0\lib\win32\release
This is my browsing path:
$(BDS)\source\rtl;
$(BDS)\SOURCE\RTL\SYS;
$(BDS)\source\rtl\win;
$(BDS)\source\rtl\common;
$(BDS)\SOURCE\VCL;
$(BDS)\SOURCE\XML;
$(BDS)\source\ToolsAPI;
$(BDS)\SOURCE\PROPERTY EDITORS;
$(BDS)\source\Internet;
$(BDS)\SOURCE\VCL\AppAnalytics;
$(BDS)\SOURCE\IBX;
$(BDS)\source\soap;
$(BDS)\source\Indy10\Core;
$(BDS)\source\Indy10\System;
$(BDS)\source\Indy10\Protocols;
$(BDS)\source\fmx;
$(BDS)\source\databinding\components;
$(BDS)\source\databinding\engine;
$(BDS)\source\databinding\graph;
$(BDS)\source\data;
$(BDS)\source\data\ado;
$(BDS)\source\data\bde;
$(BDS)\source\data\cloud;
$(BDS)\source\data\datasnap;
$(BDS)\source\data\dbx;
$(BDS)\source\data\dsnap;
$(BDS)\source\data\Test;
$(BDS)\source\data\vclctrls;
$(BDS)\source\data\datasnap\connectors;
$(BDS)\source\data\datasnap\proxygen;
$(BDS)\source\DataExplorer;
$(BDS)\source\DUnit\Contrib\DUnitWizard\Source\Common;
$(BDS)\source\DUnit\Contrib\DUnitWizard\Source\Common\dunit;
$(BDS)\source\DUnit\Contrib\DUnitWizard\Source\DelphiExperts\Common;
$(BDS)\source\DUnit\Contrib\DUnitWizard\Source\DelphiExperts\DUnitProject;
$(BDS)\source\DUnit\Contrib\DUnitWizard\Source\DelphiExperts\DUnitProject\dunit;
$(BDS)\source\DUnit\src;
$(BDS)\source\DUnit\tests;
$(BDS)\source\Experts;
$(BDS)\source\indy\abstraction;
$(BDS)\source\indy\implementation;
$(BDS)\source\indyimpl;
$(BDS)\source\LiveTile;
$(BDS)\source\Property Editors\Indy10;
$(BDS)\source\soap\wsdlimporter;
$(BDS)\source\Visualizers;
$(BDS)\source\xtab;
$(BDS)\source\DUnit\Contrib\XMLReporting;
$(BDS)\source\DUnit\Contrib\XPGen;
$(BDS)\source\data\rest;
$(BDS)\source\data\firedac;
$(BDS)\source\tethering;
$(BDS)\source\DUnitX;
$(BDS)\source\data\ems;
$(BDS)\source\rtl\net;
$(BDS)\source\FlatBox2D;
$(BDS)\OCX\Servers;
C:\Program Files (x86)\Neos Eureka S.r.l\EurekaLog 7\Source\;
$(DXVCL)\ExpressCore Library\Sources;
$(DXVCL)\XP Theme Manager\Sources;
$(DXVCL)\ExpressGDI+ Library\Sources;
$(DXVCL)\ExpressCommon Library\Sources;
$(DXVCL)\ExpressLibrary\Sources;
$(DXVCL)\ExpressPageControl\Sources;
$(DXVCL)\ExpressDataController\Sources;
$(DXVCL)\ExpressEditors Library\Sources;
$(DXVCL)\ExpressWizard Control\Sources;
$(DXVCL)\ExpressBars\Sources;
$(DXVCL)\ExpressDocking Library\Sources;
$(DXVCL)\ExpressLayout Control\Sources;
$(DXVCL)\ExpressSpreadSheet\Sources;
$(DXVCL)\ExpressExport Library\Sources;
$(DXVCL)\ExpressQuantumTreeList\Sources;
$(DXVCL)\ExpressQuantumGrid\Sources;
$(DXVCL)\ExpressVerticalGrid\Sources;
$(DXVCL)\ExpressMemData\Sources;
$(DXVCL)\ExpressSpellChecker\Sources;
$(DXVCL)\ExpressTile Control\Sources;
$(DXVCL)\ExpressNavBar\Sources;
$(DXVCL)\ExpressSkins Library\Sources;
$(DXVCL)\ExpressPrinting System\Sources;
$(DXVCL)\ExpressPivotGrid\Sources;
$(DXVCL)\ExpressDBTree Suite\Sources;
$(DXVCL)\ExpressOrgChart\Sources;
$(DXVCL)\ExpressFlowChart\Sources;
$(DXVCL)\ExpressMap Control\Sources;
$(DXVCL)\ExpressScheduler\Sources;
$(DXVCL)\ExpressRichEdit Control\Sources;
$(DXVCL)\ExpressGauge Control\Sources
Problem solved, There was one instance in the library path that was responsible for the problem.
I disabled "C:\Program Files (x86)\Embarcadero\Studio\17.0\source\rtl\win;" from the library and all seems to work now.
My job now is to look why this file was in my library from my predecessor and try to look if there are any "strange" pas/dcu files in that directory so it should be needed in the path.
But that is now my job, Thx to all who helped me with sending some clues to get it solved.
So, it looks that I lost a lot of time by searching at other things
first instead of disabling 1 by 1 of the instances in my Library path.
This is the tip for today :-)

How to integrate LuaJIT with LuaRocks on Windows?

I downloaded the source of LuaJIT and compiled it with msvc120.dll (VS 2013 x64). When I run it from the command line I have no problems executing some basic lua. Now the LuaJIT installation guide mentions moving luajit.exe and lua51.dll into their own folder. From there it says to create a lua folder and under that a jit folder with the contents of src/jit moved underneath the newly created jit folder.
From my understanding my folder should look like and contain:
luajit.exe
lua51.dll
/lua
/jit
bc.lua
[rest of jit files]
vmdef.lua
Is this correct or am I missing files?
Now after I built my luajit I tried to wire it up into my luarocks to act as my interpreter using
install.bat /LUA C:\LuaJIT\2.0.3\[folder with above content]
However this cannot find the header files. I then copied over what are the header files into the folder above and that wires it up, but I can never actually get anything to compile when pointed over to LuaJIT. Edit: The error I get is the following,
C:\LuaJIT\2.0.3\bin\lua51.dll : fatal error LNK1107: invalid or corrupt file: cannot read at 0x2D0
Error: Failed installing dependency: https://rocks.moonscript.org/luafilesystem-1.6.2-2.src.rock - Build error: Failed compiling module lfs.dll
Is the correct way to handle this to simply point to my lua binaries and from there leverage LuaJIT to run my files or am I doing something wrong with wiring up LuaJIT and luarocks? The former seems to work for the most part, since I only ran into one library compilation issue, lua-cjson.
I've run on exactly the same problem, but they've found a solution right here:
https://github.com/keplerproject/luafilesystem/issues/22
I knew that for "linking DLLs statically" there is a so-called "export" .lib file, which is passed to the linker (and not the DLL itself).
So, for example, when compiling, LuaRocks was doing this:
cl /nologo /MD /O2 -c -Fosrc/mime.obj -ID:/LuaJIT-2.0.4/include/ src/mime.c -DLUA_COMPAT_APIINTCASTS -DLUASOCKET_DEBUG -DNDEBUG -DLUASOCKET_API=__declspec(dllexport) -DMIME_API=__declspec(dllexport) mime.c
link -dll -def:core.def -out:mime/core.dll D:/LuaJIT-2.0.4/bin/lua51.dll src/mime.obj
My LuaJIT was compiled from source in D:\LuaJIT-2.0.4\src, but I made two folders myself: D:\LuaJIT-2.0.4\include with all *.h files copied from src and D:\LuaJIT-2.0.4\bin with luajit.exe, lua51.dll, and then later lua51.exp and lua51.lib. Still same error, but this was the right track.
Fix
Now, check where your LuaRocks configs are:
luarocks.bat help
Scroll down to a section like:
CONFIGURATION
Lua version: 5.1
Configuration files:
System: D:/luarocks/config-5.1.lua (ok)
User : (... snip ...)
Edit the System configuration file, specifically see the part:
variables = {
MSVCRT = 'VCRUNTIME140',
LUALIB = 'lua51.dll'
}
Here! LUALIB should be the .lib file. If your export lib is alongside the DLL, you just need to change to:
variables = {
MSVCRT = 'VCRUNTIME140',
LUALIB = 'lua51.lib' -- here!
}
Verification
And now:
luarocks.bat install luasocket
(...)
link -dll -def:core.def -out:socket/core.dll D:/LuaJIT-2.0.4/bin/lua51.lib src/luasocket.obj (...)
(...)
luasocket 3.0rc1-2 is now built and installed in D:\luarocks\systree (license: MIT)
Note the first argument passed to the linker.

"Required package rtl not found" when building with Hudson

I am trying to get Hudson to work with my Delphi project. I am using the following batch file to build my project (as suggested in this blog post):
call "C:\Program Files\Embarcadero\RAD Studio\8.0\bin\rsvars.bat"
msbuild /p:Win32LibraryPath="$(BDS)\lib;$(BDS)\lib\win32\release;$(BDS)\lib\win32\debug;$(BDSUSERDIR)\Imports;$(BDS)\Imports;$(BDSCOMMONDIR)\Dcp;$(BDS)\include;" /t:build /p:config=Debug /verbosity:detailed "MyProject\src\MyProject.dproj"
if errorlevel 1 exit 1
I always end up with the error
Embarcadero Delphi for Win32 compiler version 22.0
Copyright (c) 1983,2010 Embarcadero Technologies, Inc.
Fatal: E2202 Required package 'rtl' not found
I don't understand this as rtl.dcp is in "$(BDS)\lib\win32\release" which is on the library path. I am using runtime packages by the way.
Any hints what I can do to solve this?
Edit It seems that the paths do not end up in the command line, which looks something like (after removing project-specific paths):
C:\Program Files\Embarcadero\RAD Studio\8.0\bin\dcc32.exe -$O- -$W+ --inline:off -$A4 -$R+ -$Q+ --doc --no-config -B -LUrtl;vcl;ReportingR;ComponentsR -Q -AWinTypes=Windows;WinProcs=Windows;DbiTypes=BDE;DbiProcs=BDE;DbiErrs=BDE -DDEBUG;CONSTRAINT_CHECKING;_VER6;EUREKALOG_VER6;EurekaLog -V -VN -GD --drc -W-SYMBOL_DEPRECATED -W-SYMBOL_PLATFORM -W-UNIT_PLATFORM -W-UNIT_DEPRECATED Myproject.dpr
I found the answer in a comment to the original blog post. It turns out that in Delphi XE they changed the name of the Win32LibraryPath property to DelphiWin32LibraryPath. Changing the batch script accordingly fixes the issue.
The first path $(BDS)\Lib for XE,XE2 and XE 10.2 should be change for $(BDSLIB)\$(PLATFORM)\release

Resources