Haskell-ide-engine: Remove Makefile & build-all.ps1 and leave only Shakefile

Created on 7 Jan 2019  路  17Comments  路  Source: haskell/haskell-ide-engine

Hey, three build scripts are too much.

Right now I'm making a PR that removes both Makefile and build-all.ps1 and updates README about that (also some DRY cleanups).

Is there any objections or specific blockers to using Shake script as the only build script?

Todo:

  • [x] Add 8.4.2 and 8.2.1 versions to hieVersions list in Shakefile #1034
  • [x] Remove v1 prefix from cabal commands (#1043)
  • [x] Rename Shakefile to install.hs and update README (#1044)
  • [x] Remove mentions of Make/build-all.ps1 from README (#1120)
  • [x] Actually remove Makefile and build-all.ps1 scripts. (#1140)
  • [x] Make sure that Shakefile implements everything as Makefile does (#1032, ???)
  • [ ] Add some CI tests (separate PR by @bubba)
build

Most helpful comment

@Anrock just an update to let you know I'm still working on it! Ran into a bunch of issues with caching, I want to make sure that the shake file CI reuses as much cache as possible to prevent jobs from being bogged down

All 17 comments

@alanz @bubba @fendor

Following Blockers: Shakefile has the issue that not all supported ghc's are being installed. The list of ghc's is not complete.
Thus, the help message is actually wrong.

@fendor it's seems 8.4.2 and 8.2.1 are the only ones that's missing. Would it be enough to just add them to hieVersions list?

yes that is enough

Can you check that #1032 is also covered in the Shakefile?

We should also integrate #1008 into the install.hs, e.g. special handling of hie-8.6.3 on windows.

@fendor afaik it isn't handled right now, so it's a separate issue.

What's the advantage of using shake over a normal haskell script?

@leifmetcalf being able to define it in terms of targets and build rules means it can work out the dependency graph for each binary and only build what鈥檚 needed. And it also provides the command line interface for free

@bubba The current install.hs is just a bunch of phony rules, though.

@leifmetcalf that is pretty confusing. I had to take a look at it again, but I think its because the path to the hie-x binaries are buried somewhere inside .stack-work, so the targets can't rely on Shake for detecting if its dirty or not since we don't know the path. But thankfully stack already takes care of not doing redundant rebuilding. The phony rules still provide dependencies though between the different levels of installation that can occur (e.g. build hie for one version or for all versions)

@bubba i think this is ready to land as soon as CI tests for install.hs are implemented.

@Anrock just an update to let you know I'm still working on it! Ran into a bunch of issues with caching, I want to make sure that the shake file CI reuses as much cache as possible to prevent jobs from being bogged down

@bubba how things going? Numerous issues regarding make-shake consistency appeared recently.

@Anrock sorry for the delay: I hit a couple of walls when trying to merge multiple stack caches on CircleCI. For now I think this PR is fine to merge, and we can create an issue for the CI/testing

@bubba ok, thanks. I'll try find some time to recheck what else isn't ported to install.hs and send a PR for review.

I consider this as done.
Some work remains to do with CI (tests, maybe some cleanup), but i have no idea how to do it, so leaving it to @bubba

Was this page helpful?
0 / 5 - 0 ratings