-
Notifications
You must be signed in to change notification settings - Fork 75
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Core clr support. #57
Conversation
Hi Matthias, Personally, I'd prefer to steer clear from CoreCLR as long as it remains in I agree that the new feature should be made as a separate PR for better Thanks, On Sat, 2 Jul 2016 at 01:59, Matthias Dittrich [email protected]
|
I'm fine with that. However consider that a lot of tools in the F# ecosystem are depending on Argu, so it should be one of the first projects to move. In my (limited) tests its working fine with dotnetcore and it has no dependencies, so it easy to keep up2date even if a lot of stuff is still changing. Will try to move the feature :) |
"buildOptions": { | ||
"define": [ | ||
"NETSTANDARD1_5", | ||
"NETSTANDARD1_6" |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
NETSTANDARD1_6
is not needed, it's already defined by default for netstandard1.6
, like netcoreapp1.0
define NETCOREAPP1_0
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yeah maybe being explicit is a good idea anyway (as we saw in the 1.5 -> 1.6 move)...?
@eiriktsarpalis the api incompatibilities are not going to be fixed really too soon (getType etc), now that 1.0 is rtm, and are only an also you can just use .net core sdk and project json to build the .net core assemblies ( i'd like to use But i understand it suck to be an early adoperter, but .net core (coreclr/bcl) is 1.0 rtm. |
If you need help, just ping me, in slack (there is #dotnetcore channel with other people like @7sharp9) twitter. |
@enricosada I don't know when I have time to integrate the changes. For now my only goal was to get a package such that I can continue the work on Fake/Paket :). Once I'm happy with that I will go the reverse and cleanup. Of course if someone want's to take it from here that's fine as well. |
@enricosada your arguments are valid, my primary concern however is one of maintainability. It looks to me that we will need to be maintaining two separate build configurations. EDIT: now installing VS 2015 CoreCLR tooling preview. See how that works. |
@eiriktsarpalis i am trying to learn the best (or good enough) workflow to have .net core version of existing libraries, i really like your feedback. i really need help of f# maintainers, to say what's too annoying, so we can find workarounds/improve. for example:
@eiriktsarpalis for example vs with xproj should work, i'll publish the templates soon, but you can just copy the c# xproj in the same directory, and add the project in the solution. That's enough for build, but no intellisense. |
Ive been waiting for Argu to support dot net core, all these updates although a pain are necessary to get F# viable on the dotnet core platform. |
Would it make sense for now to keep the CoreCLR stuff in a separate branch and publish as a separate nuget package? |
@eiriktsarpalis no, two package are really really bad, in my experience with other projects. the .net core is a simple new target framework (like portable), should be working the same (that's not too hard, but we can improve fixing pain points). I'll start an meta issue about "add .net core support to existing libraries, without going crazy", we can improve a lot.
|
Could the F# tooling be made to target CoreCLR just like any other platform, without requiring a separate project.json to do this? |
The You can wait some months for msbuild support instead of project.json. That's an option. |
@eiriktsarpalis i am not say'n a custom msbuild target (include in the fsproj) to produce only netcore cannot be the solution, it's an idea. |
|
||
let isDotnetSDKInstalled = try Shell.Exec("dotnet", "--version") = 0 with _ -> false | ||
|
||
Target "Nuget.AddNetCore" (fun _ -> |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why do the packages need to be merged after creation? Can this not be handled by paket.template?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
eventually it will
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@forki can't we just manually specify the CoreCLR bits in the files
section? Or is there more to it?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I guess we can, but lets use merge for now and do that when paket is ready.
it's all a bit of bootstrapping problem. Argu needs FAKE/Paket featrues and paket needs argu...
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
not atm, afaik, it's up to paket team, i'd like an helper cmd too.
That's the minimal flow (maintenance, easy to test) afaik to add support for .net core.
Also like that you dont need to redefine the dependencies inside paket.template (paket doesnt manage project.json), and are always aligned with project.json
(used for build)
Are merged only:
lib/netstandard1.6
(the .net core assemblies)- the dependencies for
.netstandard1.6
, used only for that profile (no issue with others)
not the metadata like authors, etc, that's defined in paket.template already.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@eiriktsarpalis @forki files is ok, problem are dependencies becasue doesnt support deps by conditional fw ( ref fsprojects/Paket#913 ).
propose by me workaround fsprojects/Paket#1539
and .net core discussion (the one we are having there) fsprojects/Paket#1793
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
as note: i have written the dotnet mergenupkg
tool for project without paket, just to make it easier the integration, but works where paket is used too. i see that as a temporary solution to an issue (until project.json => msbuild )
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
I'm already creating a dnc helper in fake. Will send pull request to Enricos fork of argu soon
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
@forki can we use argu or better chessie as the example for fake new dnc helpers?
In another pr if possibile, so we can iterate the design.
Atm this workflow work really well, checklist of steps, i'd like to make people use that atm, and update to fake helpers later.
i think that can speedup a little .net core adoption.
Also i think current one is not too bad, because make easy to see dotnet command, so can be run locally, no magic (atm people see dnc sdk as magic)
I'm happy to merge as it is. Certain issues still exist, but I think the most urgent one is this. |
@eiriktsarpalis i have little time today (webcast live tonight about .net core and f# 😄 ) I'll ask tomorrow in dotnet/cli dotnet/corefx dotnet/coreclr gitter chat about that (good source of help) |
Use FAKE's DotNet CLI helpers
ok @matthid merged it. So this PR is up-to-date |
Travis seems to be failing with this error |
(bump) Any progress on this? |
Yeah sorry we have one more fake update which should remove the error and then I guess we are good to go (expect the change soon on the weekend from me, or faster if someone else does it in the mean time) |
@matthid well if .net core is installed, no error 😄 you got pr matthid#3 for this pr That add i tried running
|
add .netcore sdk to travis
@enricosada Sorry for taking ages to merge ... Actually I now have some time to revisit this. Once we can push all dependencies to nuget we can use the new Fake version to clean everything up :). |
@enricosada I think the build is failing because ancient FSharp.Core |
@eiriktsarpalis I think this can be fixed by switching to the FSharp.Core nuget package... Delete https://github.com/fsprojects/Argu/blob/master/src/Argu/Argu.fsproj#L81-L83 and run |
@matthid I'm fine with adding the nuget FSharp.Core as a dependency |
Merged to master. Thanks guys. |
@eiriktsarpalis Nice! Please let me know when a nuget is released with dnc support, so I can remove the self build binaries :) |
@matthid dotnet core unit tests are failing on my machine with the following error message:
I notice that the tests project is lacking a |
no, the problem is fake is running @eiriktsarpalis i'll send a pr to fix it, let me check why ci was green instead of red, sry for issue. |
I think problems like these will slowly go away once all core packages are released and fsprojects/FAKE#1281 can be merged. We than have an automatic way to install and use the new dotnet sdk and we don't need to disable the "dotnet sdk"-build when it's not installed. It hopefully will be less error prone after that... |
@matthid maybe i written that badly (back from vacation, i am a bit sleepy). fake is doing ok, it's just this
I'll add the |
@enricosada My answer wasn't specific to this particular problem. What I mean is that the way we do things now is quite error prone (editing travis and appveyor config files to install dotnet sdk) and we might need to edit them all the time to update/upgrade. On the other side if MS decides to change the download url's all our projects break and we need to fix it everywhere... What I'm trying to say is that we should just make it run to be able to bootstrap and release. We can figure things out along the way. It is very likely that things will change after the FAKE upgrade anyway. If you still manage to make it run that would of course be even better 👍 . |
atm install of .net core sdk preview2 is ok, it's ugly but that's ms recommended way (waiting for osx brew and ubuntu pkg, or better support in travis with continue in #62 ( use fake script in appveyor/travis, fix error ) |
Rebased Version of #47
Additionally I added a special case for a "First" parameter if it is "Mandatory" in that case it can be assigned an empty name (which basically allows it to be used as positional argument).
Example is added as Unit Test. Let me know if you want this to be split to an extra PR.