1. 23 Mar, 2020 1 commit
  2. 14 Mar, 2020 2 commits
  3. 13 Mar, 2020 1 commit
    • Alp Mestanogullari's avatar
      hadrian: improve dependency tracking for the check-* programs · 6a65b8c2
      Alp Mestanogullari authored
      The code in Rules.Register responsible for finding all the build artifacts
      that Cabal installs when registering a library (static/shared libs, .hi files,
      ...) was looking in the wrong place. This patch fixes that logic and makes sure
      we gather all those artifacts in a list to declare that the rule for a given
      `.conf` file, our proxy for "Hadrian, please install this package in the package
      db for this stage", also produces those artifacts under the said package
      database.
      
      We also were completely missing some logic to declare that the check-* programs
      have dependencies besides their source code, at least when testing an in-tree
      compiler.
      
      Finally, this patch also removes redundant packages from 'testsuitePackages',
      since they should already be covered by the stage<N>Packages lists from
      Settings.Default.
      
      With this patch, after a complete build and freezing stage 1, a change to
      `compiler/parser/Parser.y` results in rebuilding the ghc lib, reinstalling it,
      and rebuilding the few programs that depend on it, _including_ `check-ppr` and
      `check-api-annotations` (therefore fixing #17273).
      6a65b8c2
  4. 02 Mar, 2020 1 commit
  5. 29 Feb, 2020 1 commit
  6. 26 Feb, 2020 4 commits
  7. 22 Feb, 2020 1 commit
  8. 19 Feb, 2020 1 commit
    • Sylvain Henry's avatar
      Hadrian: refactor GMP in-tree build support (#17756) · d7029cc0
      Sylvain Henry authored
      * Hadrian doesn't use integer-gmp/config.mk file anymore to determine if
        building GMP in-tree is required.
      
        "config.mk" is created by Cabal when the integer-gmp package is
        configured and this file is still untracked by Hadrian. This led to a
        tricky configure "race" because "config.mk" is built by the
        "setup-config" rule, but this rule is also used to find dependencies,
        in particular the "ghc-gmp.h" header, but the creation of this file
        was depending (without being tracked) on "config.mk".
      
        Now Hadrian only builds in-tree GMP if `--with-intree-gmp` is passed
        to the top-level configure script.
      
      * in-tree GMP isn't built once for all in a fixed stage (Stage1)
        anymore. It is built per stage which is required if we build a
        cross-compiler
      
      * switching between in-tree and external GMP is now supported without
        having to clean the build directory first.
      
      * "wrappers.c" now includes "ghc-gmp.h" instead of "ghc.h". It
        helps ensuring that the build system generates "ghc-gmp.h".
      
      * build in-tree GMP in "<root>/stageN/gmp/gmpbuild" and produce useful
        artefacts (libgmp.a, gmp.h, objs/*.o) in "<root>/stageN/gmp"
      d7029cc0
  9. 14 Feb, 2020 1 commit
  10. 11 Feb, 2020 1 commit
  11. 09 Feb, 2020 3 commits
    • Sylvain Henry's avatar
      Force -fPIC for intree GMP (fix #17799) · 414e2f62
      Sylvain Henry authored
      Configure intree GMP with `--with-pic` instead of patching it. Moreover
      the correct patching was only done for x86_64/darwin (see #17799).
      414e2f62
    • Alp Mestanogullari's avatar
      hadrian: Windows fixes (bindists, CI) · 3ae83da1
      Alp Mestanogullari authored
      This commit implements a few Windows-specific fixes which get us from a CI
      job that can't even get as far as starting the testsuite driver, to a state
      where we can run the entire testssuite (but have test failures to fix).
      
      - Don't forget about a potential extension for the haddock program, when
        preparing the bindist.
      - Build the timeout program, used by the testsuite driver on Windows in place
        of the Python script used elsewhere, using the boot compiler. We could
        alternatively build it with the compiler that we're going to test but this
        would be a lot more tedious to write.
      - Implement a wrapper-script less installation procedure for Windows, in
        `hadrian/bindist/Makefile.
      - Make dependencies a bit more accurate in the aforementioned Makefile.
      - Update Windows/Hadrian CI job accordingly.
      
      This patch fixes #17486.
      3ae83da1
    • Ben Gamari's avatar
      hadrian: Add --test-metrics argument · 2ac784ab
      Ben Gamari authored
      Allowing the test metric output to be captured to a file, a la
      the METRIC_FILE environment variable of the make build system.
      2ac784ab
  12. 08 Feb, 2020 1 commit
    • Ben Gamari's avatar
      Fix GhcThreaded setting · bec76733
      Ben Gamari authored
      This adopts a patch from NetBSD's packaging fixing the `GhcThreaded`
      option of the make build system. In addition we introduce a `ghcThreaded`
      option in hadrian's `Flavour` type.
      
      Also fix Hadrian's treatment of the `Use Threaded` entry in `settings`.
      Previously it would incorrectly claim `Use Threaded = True` if we were
      building the `threaded` runtime way. However, this is inconsistent with
      the `make` build system, which defines it to be whether the `ghc`
      executable is linked against the threaded runtime.
      
      Fixes #17692.
      bec76733
  13. 27 Jan, 2020 1 commit
  14. 08 Jan, 2020 1 commit
  15. 04 Jan, 2020 1 commit
  16. 17 Dec, 2019 3 commits
  17. 19 Nov, 2019 1 commit
  18. 13 Nov, 2019 1 commit
  19. 11 Nov, 2019 1 commit
  20. 08 Nov, 2019 1 commit
    • Alp Mestanogullari's avatar
      hadrian: fix support for the recording of perf test results · d0ef8312
      Alp Mestanogullari authored
      Before this patch, Hadrian didn't care about the TEST_ENV and
      METRICS_FILE environment variables, that the performance testing
      infrastructure uses to record perf tests results from CI jobs.
      
      It now looks them up right before running the testsuite driver,
      and passes suitable --test-env/--metrics-file arguments when
      these environment variables are set.
      d0ef8312
  21. 06 Nov, 2019 1 commit
  22. 01 Nov, 2019 1 commit
  23. 29 Oct, 2019 4 commits
  24. 25 Oct, 2019 1 commit
    • James Foster's avatar
      Make Hadrian use -dynamic-too in the basic case · 87175e78
      James Foster authored
      This commit makes Hadrian use the `-dynamic-too` flag when the current
      Flavour's libraryWays contains both vanilla and dynamic, cutting down
      the amount of repeated work caused by separate compilation of dynamic
      and static files. It does this for the basic case where '.o' and
      '.dyn_o' files are built with one command, but does not generalise to
      cases like '.prof_o' and '.prof_dyn_o'.
      87175e78
  25. 12 Oct, 2019 1 commit
    • John Ericson's avatar
      Simplify Configure in a few ways · c2290596
      John Ericson authored
       - No need to distinguish between gcc-llvm and clang. First of all,
         gcc-llvm is quite old and surely unmaintained by now. Second of all,
         none of the code actually care about that distinction!
      
         Now, it does make sense to consider C multiple frontends for LLVMs in
         the form of clang vs clang-cl (same clang, yes, but tweaked
         interface). But this is better handled in terms of "gccish vs
         mvscish" and "is LLVM", yielding 4 combinations. Therefore, I don't
         think it is useful saving the existing code for that.
      
       - Get the remaining CC_LLVM_BACKEND, and also TABLES_NEXT_TO_CODE in
         mk/config.h the normal way, rather than hacking it post-hoc. No point
         keeping these special cases around for now reason.
      
       - Get rid of hand-rolled `die` function and just use `AC_MSG_ERROR`.
      
       - Abstract check + flag override for unregisterised and tables next to
         code.
      
      Oh, and as part of the above I also renamed/combined some variables
      where it felt appropriate.
      
       - GccIsClang -> CcLlvmBackend. This is for `AC_SUBST`, like the other
       Camal case ones. It was never about gcc-llvm, or Apple's renamed clang,
       to be clear.
      
       - llvm_CC_FLAVOR -> CC_LLVM_BACKEND. This is for `AC_DEFINE`, like the
       other all-caps snake case ones. llvm_CC_FLAVOR was just silly
       indirection *and* an odd name to boot.
      c2290596
  26. 09 Oct, 2019 2 commits
  27. 08 Oct, 2019 1 commit
  28. 05 Oct, 2019 1 commit