1. 24 Aug, 2018 1 commit
    • Andrey Mokhov's avatar
      Fix package dependencies (#657) · a804d57a
      Andrey Mokhov authored
      This fixes #654.
      
      There are only two important changes.
      
      1) The first one fixes missing dependencies:
      
      ```diff
      -pkgDependencies = fmap (fmap PD.dependencies) . readPackageDataFile
      +pkgDependencies = fmap (fmap (map pkgName . packageDependencies)) . readCabalFile
      ```
      
      Here `PD.dependencies` returned versioned package names, e.g. `ghc-8.7`, which then failed to match with non-versioned package names such as `ghc` in `contextDependencies`. Switching from `PD.dependencies` to `packageDependencies` fixes this.
      
      2) I clearly remember that we didn't have this bug before, so I added some tests for our package dependency infrastructure to prevent such regressions in future:
      
      ```haskell
      testDependencies :: Action ()
      testDependencies = do
          putBuild "==== pkgDependencies"
          depLists <- mapM (pkgDependencies . vanillaContext Stage1) ghcPackages
          test $ and [ deps == sort deps | Just deps <- depLists ]
          putBuild "==== Dependencies of the 'ghc-bin' binary"
          ghcDeps <- pkgDependencies (vanillaContext Stage1 ghc)
          test $ isJust ghcDeps
          test $ pkgName compiler `elem` fromJust ghcDeps
          stage0Deps <- contextDependencies (vanillaContext Stage0 ghc)
          stage1Deps <- contextDependencies (vanillaContext Stage1 ghc)
          stage2Deps <- contextDependencies (vanillaContext Stage2 ghc)
          test $ vanillaContext Stage0 compiler `notElem` stage1Deps
          test $ vanillaContext Stage1 compiler `elem`    stage1Deps
          test $ vanillaContext Stage2 compiler `notElem` stage1Deps
          test $ stage1Deps /= stage0Deps
          test $ stage1Deps == stage2Deps
      ```
      
      Everything else are cosmetic changes, fixing minor issues in comments, and adding TODOs. To figure out the failure in #654 I had to read some code I didn't write and my hands were automatically fixing some style inconsistencies with the rest of the Hadrian code base. (I'd like to emphasise that I make no judgement about which style is better, it's merely an attempt to make the code base look more homogeneous, which I think is useful.)
      a804d57a
  2. 30 Mar, 2018 1 commit
    • Alp Mestanogullari's avatar
      Use Cabal directly in place of ghc-cabal + make build root configurable (#531) · 3a68f11c
      Alp Mestanogullari authored
      * Use Cabal directly in place of ghc-cabal; make build root configurable.
      
      This commit implements two significant changes (that were not easy to
      separate):
      
      - Don't use ghc-cabal anymore for getting information about Haskell packages.
        We now instead directly use Cabal-the-library.
      
      - Make the build root configurable. This effectively gets rid of the inplace
        logic and allows us to place _all_ build artefacts in some directory of
        our choice, by passing '--build-root <some path>' to hadrian.
      
      The code for this was mostly taken from #445.
      
      * fix documentation rules
      
      * remove some leftover unrelated, commented-out code
      
      * more documentation fixes, address some feedback
      
      * cleanup
      
      * more cleanup
      
      * boot and configure explicitly in travis CI scripts
      
      * update cabal/ghc versions in .travis.yml (8.0.x not supported anymore)
      
      * temporarily disable dynamic ways in Settings.Default
      
      * update appveyor script
      
      * travis: when booting with 8.2.2, build a complete stage2 compiler
      
      * Fix CI?
      
      Try to fix the CI by adding the `debug` rts way back in.
      
      * Update Quickest.hs
      
      Replicate the make build systems build flavours.
      
      * Update .travis.yml
      
      - Run selftest, and build in separate instances.
      - try with python2
      - and unify mac to stage2
      
      * Update .travis.yml
      
      upgrade python on mac
      
      * [travis] os x: test the freshly built ghc
      
      * Get rid of two unused GhcCabalMode constructors
      
      * fix ghc-split rule, get rid of Install/Wrappers rules
      
      * address more feedback
      
      * ConfiguredCabal -> PackageData, more comments, more feedback addressed
      
      * make the complete stage 2 build the default
      
      * use a dummy package instead of base in Rules.hs
      
      * update CI scripts
      
      * attempt at fixing hadrian's -c option
      
      * .travis.yml: use -c everywhere again
      
      * travis: back to explicit './boot && ./configure'
      
      * update README.md and doc/user-settings.md to reflect configurable build root
      
      * some more feedback
      3a68f11c
  3. 19 Feb, 2018 1 commit
  4. 28 Aug, 2017 2 commits
  5. 27 Aug, 2017 1 commit
  6. 16 Aug, 2017 2 commits
    • Andrey Mokhov's avatar
      Minor revision · 7792fbbe
      Andrey Mokhov authored
      7792fbbe
    • Andrey Mokhov's avatar
      Major refactoring of path settings · 9b705686
      Andrey Mokhov authored
      * Move buildRoot into the Action monad, so it can be configured from command line in future
      
      * Move settings from Setting.Path to Base and Context
      
      * Simplify build rule matching and prepare to factoring out common build rules into the library, #347
      9b705686
  7. 13 Aug, 2017 3 commits
  8. 07 Aug, 2017 2 commits
  9. 06 Aug, 2017 5 commits
  10. 05 Aug, 2017 1 commit
  11. 04 Aug, 2017 1 commit
  12. 27 Jul, 2017 1 commit
  13. 27 Nov, 2016 1 commit
  14. 18 Oct, 2016 2 commits
  15. 22 May, 2016 1 commit
  16. 17 May, 2016 1 commit
  17. 16 May, 2016 2 commits
  18. 19 Feb, 2016 1 commit
  19. 12 Feb, 2016 1 commit
  20. 24 Jan, 2016 1 commit
  21. 20 Jan, 2016 1 commit
  22. 09 Jan, 2016 1 commit
  23. 07 Jan, 2016 1 commit
  24. 30 Dec, 2015 1 commit
  25. 28 Dec, 2015 3 commits
  26. 24 Dec, 2015 1 commit
  27. 26 Sep, 2015 1 commit