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:
      -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:
      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.)
  2. 18 Jun, 2018 1 commit
    • Tao He's avatar
      Read the `main-is` field from the cabal file for executables (#627) · f3192439
      Tao He authored
      * For executables, we should read the `main-is` field from the cabal file.
      Previously, we simply treat file name for `Main` module as `Main.hs` to
      build executable. That doesn't work for the `timeout` program. This patch
      fixes the problem.
      * Add comments about the processing of `main-is` field from .cabal file.
  3. 14 Jun, 2018 1 commit
  4. 12 Apr, 2018 1 commit
  5. 11 Apr, 2018 1 commit
  6. 10 Apr, 2018 1 commit
  7. 03 Apr, 2018 1 commit
  8. 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
      - 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
  9. 19 Feb, 2018 1 commit
  10. 07 Feb, 2018 1 commit
  11. 29 Oct, 2017 1 commit
  12. 26 Aug, 2017 1 commit
  13. 20 Aug, 2017 3 commits
  14. 19 Aug, 2017 2 commits
  15. 18 Aug, 2017 3 commits
  16. 17 Aug, 2017 1 commit
  17. 16 Aug, 2017 2 commits