FakeShake / Fake.Shake

3 stars 2 forks source link

Osx build hangs #7

Open leafgarland opened 9 years ago

leafgarland commented 9 years ago

I've got to the point where I can run build.fsx on Osx (I had to add some #I include paths - I'll get a PR together when I get this sorted as I also added #I parsing into the build rules.).

When I run it hangs, with no activity, I guess its waiting on a channel or something in Hopac. I'm sprinkling tracefn calls around to see if I can track where...

leafgarland commented 9 years ago

Hm, it doesn't even run the first line of the job, which was already a tracefn call.

Turns out if I compile it manually:

fsharpc -I packages/FAKE/tools -I packages/Hopac/lib/net45 -I packages/FsPickler/lib/net45 -r FakeLib -r Hopac -r Hopac.Core -r Hopac.Platform -r FsPickler Fake.Shake.Core.fsx Fake.Shake.Control.fsx Fake.Shake.DefaultRules.fsx Fake.Shake.fsx --target:library --out:bin/Fake.Shake.dll

and edit build.fsx to use that assembly instead of #load "Fake.Shake.fsx", then I can run the rules.

So, perhaps some oddness related to differences in how mono/fsi loads source files, references etc.

mavnn commented 9 years ago

The fact that you need a #I line suggests something very wrong to begin with, to be honest: all of the files are in the same directory which should also be the working directory.

I'm about to be offline for a couple of weeks, but I'll have a dig into this when I'm back online, and see if I can set up both mono and windows CI builds to keep things cross plat from here on in.

On Fri, 17 Jul 2015 16:30 Leaf Garland notifications@github.com wrote:

Hm, it doesn't even run the first line of the job, which was already a tracefn call.

Turns out if I compile it manually:

fsharpc -I packages/FAKE/tools -I packages/Hopac/lib/net45 -I packages/FsPickler/lib/net45 -r FakeLib -r Hopac -r Hopac.Core -r Hopac.Platform -r FsPickler Fake.Shake.Core.fsx Fake.Shake.Control.fsx Fake.Shake.DefaultRules.fsx Fake.Shake.fsx --target:library --out:bin/Fake.Shake.dll

and edit build.fsx to use that assembly instead of #load "Fake.Shake.fsx", then I can run the rules.

So, perhaps some oddness related to differences in how mono/fsi loads source files, references etc.

— Reply to this email directly or view it on GitHub https://github.com/FakeShake/Fake.Shake/issues/7#issuecomment-122313140.

leafgarland commented 9 years ago

The #I is not for the other source files, it's for the dependencies of the #r referenced assemblies. Without the #I mono/fsi doesn't know to look in e.g packages/FAKE/tools for other assemblies that FakeLib.dll depends on.

mavnn commented 9 years ago

Adding #I lines seems to not break anything on Windows, so please do submit a pull request when you get a chance. I'll see if I can get some CI builds going later this week.

leafgarland commented 9 years ago

Will do but offline for a week or so. I raised the question about #r on the fsharp mailing list, https://groups.google.com/forum/m/#!topic/fsharp-opensource/o-1msYJAKpA. Apparently due to lack of msbuild on mono.