fsprojects / FAKE

FAKE - F# Make
https://fake.build
Other
1.28k stars 585 forks source link

FAKE.DotNet.Cli / Mono.Posix / Symlinks #2790

Open Numpsy opened 1 month ago

Numpsy commented 1 month ago

A thought (as yet not investigated in any more detail than this)

Fake currently has a dependency on Mono.Posix.NetStandard to get the 'GetRealPath' function to resolve symlinks: https://github.com/fsprojects/FAKE/blob/accd2f4dfcaafd33fb4d965fbf84dc4b9c51cdd7/src/app/Fake.DotNet.Cli/DotNet.fs#L839

That caused a problem on ARM CPU macs due to the lack of an ARM build of the native code part of that package.

I tried updating it to the newer Mono.Unix package in #2781 back that failed with other issues.

So, I was reading about a little for ideas and noticed that .NET 6.0 now has a built in 'ResolveLinkTarget' function that does this sort of thing with no external dependencies: https://learn.microsoft.com/en-us/dotnet/api/system.io.file.resolvelinktarget?view=net-6.0

So - I wonder if it be possible to use that for .NET 6.0 builds and avoid the Mono.Unix dependency?

xperiandri commented 1 month ago

Let's try. Removing a dependency because of built-in functionality is always good 🙂