summaryrefslogtreecommitdiff
path: root/.gitlab
Commit message (Collapse)AuthorAgeFilesLines
* gitlab-ci: Fix hadrian bootstrapping of release pipelinesBen Gamari2022-08-061-1/+5
| | | | | | | | | | | Previously we would attempt to test hadrian bootstrapping in the `validate` build flavour. However, `ci.sh` refuses to run validation builds during release pipelines, resulting in job failures. Fix this by testing bootstrapping in the `release` flavour during release pipelines. We also attempted to record perf notes for these builds, which is redundant work and undesirable now since we no longer build in a consistent flavour.
* gitlab-ci: Drop make build validation jobsBen Gamari2022-08-061-1/+0
|
* upload_ghc_libs: Fix path to documentationBen Gamari2022-07-221-1/+1
| | | | | | | The documentation was moved in a10584e8df9b346cecf700b23187044742ce0b35 but this one occurrence was note updated. Finally closes #21164.
* Add nightly job for generating docs suitable for hackage uploadMatthew Pickering2022-07-042-0/+194
|
* hadrian: Add --haddock-base-url option for specifying base-url when ↵Matthew Pickering2022-07-041-1/+1
| | | | | | | | | | | | | | | | | | | generating docs The motiviation for this flag is to be able to produce documentation which is suitable for uploading for hackage, ie, the cross-package links work correctly. There are basically three values you want to set this to: * off - default, base_url = ../%pkg% which works for local browsing * on - no argument , base_url = https:://hackage.haskell.org/package/%pkg%/docs - for hackage docs upload * on - argument, for example, base_url = http://localhost:8080/package/%pkg%/docs for testing the documentation. The `%pkg%` string is a template variable which is replaced with the package identifier for the relevant package. This is one step towards fixing #21749
* docs-upload: Fix upload script when no packages are listedMatthew Pickering2022-07-041-3/+4
|
* upload-docs: propagate publish correctly in upload_sdistMatthew Pickering2022-07-041-1/+1
|
* hadrian: Fix testing stage1 compilerMatthew Pickering2022-06-141-7/+10
| | | | | | | | | | | | There were various issues with testing the stage1 compiler.. 1. The wrapper was not being built 2. The wrapper was picking up the stage0 package database and trying to load prelude from that. 3. The wrappers never worked on windows so just don't support that for now. Fixes #21072
* ci: Don't try to run ./boot when testing bootstrap of source distMatthew Pickering2022-06-011-3/+6
|
* Build stage1 with -V as wellMatthew Pickering2022-05-311-1/+1
| | | | This helps tracing errors which happen when building stage1
* upload-ghc-libs: Allow candidate-only uploadBen Gamari2022-05-301-19/+18
|
* ci: Make sure to exit promptly if `make install` fails.Matthew Pickering2022-05-301-1/+1
| | | | | | | | | Due to the vageries of bash, you have to explicitly handle the failure and exit when in a function. This failed to exit promptly when !8247 was failing. See #21358 for the general issue
* Test DESTDIR in test_hadrian()wip/type-dataJulian Ospald2022-05-211-2/+23
|
* ci: Use correct syntax when args list is emptyMatthew Pickering2022-05-191-1/+1
| | | | This seems to fail on the ancient version of bash present on CentOS
* ci: Don't build sphinx documentation on centosMatthew Pickering2022-05-192-0/+6
| | | | | | | The centos docker image lacks the sphinx builder so we disable building sphinx docs for these jobs. Fixes #21580
* Add release flavour and use it for the release jobsMatthew Pickering2022-05-192-106/+106
| | | | | | | | The release flavour is essentially the same as the perf flavour currently but also enables `-haddock`. I have hopefully updated all the relevant places where the `-perf` flavour was hardcoded. Fixes #21486
* packaging: Introduce CI job for generating hackage documentationMatthew Pickering2022-05-162-7/+236
| | | | | | | | | | | | | | | | | | | | This adds a CI job (hackage-doc-tarball) which generates the necessary tarballs for uploading libraries and documentation to hackage. The release script knows to download this folder and the upload script will also upload the release to hackage as part of the release. The `ghc_upload_libs` script is moved from ghc-utils into .gitlab/ghc_upload_libs There are two modes, preparation and upload. * The `prepare` mode takes a link to a bindist and creates a folder containing the source and doc tarballs ready to upload to hackage. * The `upload` mode takes the folder created by prepare and performs the upload to hackage. Fixes #21493 Related to #21512
* Add back Debian9 CI jobsMatthew Pickering2022-05-112-0/+180
| | | | | | | We still build Deb9 bindists for now due to Ubuntu 18 and Linux Mint 19 not being at EOL until April 2023 and they still need tinfo5. Fixes #21469
* gitlab-ci: Check for dynamic msys2 dependenciesBen Gamari2022-05-111-0/+13
| | | | | | Both #20878 and #21196 were caused by unwanted dynamic dependencies being introduced by boot libraries. Ensure that we catch this in CI by attempting to run GHC in an environment with a minimal PATH.
* gitlab/ci: Fix name of bootstrap compiler directoryBen Gamari2022-05-041-2/+2
| | | | | | | | Windows binary distributions built with Hadrian have a target platform suffix in the name of their root directory. Teach `ci.sh` about this fact. (cherry picked from commit df5752f39671f6d04d8cd743003469ae5eb67235)
* gitlab-ci: Always preserve artifacts, even in failed jobsBen Gamari2022-05-042-72/+145
| | | | (cherry picked from commit fd08b0c91ea3cab39184f1b1b1aafcd63ce6973f)
* gitlab-ci: Use ld.lld on ARMv7/LinuxBen Gamari2022-05-042-8/+14
| | | | | | | | Due to #16177. Also cleanup some code style issues. (cherry picked from commit cc1c3861e2372f464bf9e3c9c4d4bd83f275a1a6)
* ci: Add linting job which checks authors are not GHC CIMatthew Pickering2022-04-271-0/+13
|
* ci: Fix shell commandMatthew Pickering2022-04-271-2/+2
|
* ci: Explicitly handle failures in test_hadrianMatthew Pickering2022-04-271-11/+11
| | | | | | We also disable the stage1 testing which is broken. Related to #21072
* ci: Add test to check that release jobs have profiled libsMatthew Pickering2022-04-271-1/+8
|
* ci: Fix cabal-reinstall jobMatthew Pickering2022-04-271-3/+3
| | | | | | It's quite nice we can do this by mostly deleting code Fixes #21373
* ci: Replace "always" with "on_success" to stop build jobs running before ↵Matthew Pickering2022-04-082-64/+64
| | | | | | | | | hadrian-ghci has finished See https://docs.gitlab.com/ee/ci/yaml/#when * always means, always run not matter what * on_success means, run if the dependencies have built successfully
* gitlab-ci: Bump bootstrap compiler to 9.2.2Ben Gamari2022-04-062-5/+5
| | | | | | This is necessary to build recent `text` commits. Bumps Hackage index state for a hashable which builds with GHC 9.2.
* gitlab/darwin: Factor out bindistsBen Gamari2022-04-061-13/+12
| | | | This makes it a bit easier to bump them.
* gitlab-ci: Disable cabal-install store caching on WindowsBen Gamari2022-04-052-34/+21
| | | | | | | For reasons that remain a mystery, cabal-install seems to consistently corrupt its cache on Windows. Disable caching for now. Works around #21347.
* ci: Attempt to fix windows cache issuesMatthew Pickering2022-04-012-19/+18
| | | | | It appears that running the script directly does nothing (no info is printed about saving the cache).
* ci: Regenerate jobs.yamlMatthew Pickering2022-04-012-6/+8
| | | | | It seems I forgot to update this to reflect the current state of gen_ci.hs
* ci: Generate jobs for all normal builds and use hadrian for all buildsMatthew Pickering2022-03-244-1/+4514
| | | | | | | | | | | | | | | | | | | | | | | This commit introduces a new script (.gitlab/gen_ci.hs) which generates a yaml file (.gitlab/jobs.yaml) which contains explicit descriptions for all the jobs we want to run. The jobs are separated into three categories: * validate - jobs run on every MR * nightly - jobs run once per day on the master branch * release - jobs for producing release artifacts The generation script is a Haskell program which includes a DSL for specifying the different jobs. The hope is that it's easier to reason about the different jobs and how the variables are merged together rather than the unclear and opaque yaml syntax. The goal is to fix issues like #21190 once and for all.. The `.gitlab/jobs.yaml` can be generated by running the `.gitlab/generate_jobs` script. You have to do this manually. Another consequence of this patch is that we use hadrian for all the validate, nightly and release builds on all platforms.
* Add check to ensure we are not building validate jobs for releasesMatthew Pickering2022-03-241-0/+21
|
* mr-template: Mention timeframe for reviewBen Gamari2022-03-101-0/+4
|
* ci: Fix save_cache functionwip/linters-stage1Matthew Pickering2022-03-091-0/+1
| | | | | | | | | | | | | | Each interation of saving the cache would copy the whole `cabal` store into a subfolder in the CACHE_DIR rather than copying the contents of the cabal store into the cache dir. This resulted in a cache which looked like: ``` /builds/ghc/ghc/cabal-cache/cabal/cabal/cabal/cabal/cabal/cabal/cabal/cabal/cabal/cabal/ ``` So it would get one layer deeper every CI run and take longer and longer to compress.
* Replace use of BIN_DIST_PREP_TAR_COMP with BIN_DIST_NAMEMatthew Pickering2022-03-071-0/+3
| | | | | And adds a check to make sure we are not accidently settings BIN_DIST_PREP_TAR_COMP when using hadrian.
* ci: Add check to CI to ensure compiler uses correct BIGNUM_BACKENDMatthew Pickering2022-03-021-2/+8
|
* Move linters into the treeMatthew Pickering2022-02-245-240/+0
| | | | | | | | | | This MR moves the GHC linters into the tree, so that they can be run directly using Hadrian. * Query all files tracked by Git instead of using changed files, so that we can run the exact same linting step locally and in a merge request. * Only check that the changelogs don't contain TBA when RELEASE=YES. * Add hadrian/lint script, which runs all the linting steps. * Ensure the hlint job exits with a failure if hlint is not installed (otherwise we were ignoring the failure). Given that hlint doesn't seem to be available in CI at the moment, I've temporarily allowed failure in the hlint job. * Run all linting tests in CI using hadrian.
* Reinstallable GHCZubin Duggal2022-02-211-28/+54
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch allows ghc and its dependencies to be built using a normal invocation of cabal-install. Each componenent which relied on generated files or additional configuration now has a Setup.hs file. There are also various fixes to the cabal files to satisfy cabal-install. There is a new hadrian command which will build a stage2 compiler and then a stage3 compiler by using cabal. ``` ./hadrian/build build-cabal ``` There is also a new CI job which tests running this command. For the 9.4 release we will upload all the dependent executables to hackage and then end users will be free to build GHC and GHC executables via cabal. There are still some unresolved questions about how to ensure soundness when loading plugins into a reinstalled GHC (#20742) which will be tighted up in due course. Fixes #19896
* ci: Add ENABLE_NUMA flag to explicitly turn on libnuma dependencyMatthew Pickering2022-01-271-0/+6
| | | | | | | | | | | | In recent releases a libnuma dependency has snuck into our bindists because the images have started to contain libnuma. We now explicitly pass `--disable-numa` to configure unless explicitly told not to by using the `ENABLE_NUMA` environment variable. So this is tested, there is one random validate job which builds with --enable-numa so that the code in the RTS is still built. Fixes #20957 and #15444
* hadrian: Allow testing of the stage1 compiler (#20755)Zubin Duggal2022-01-261-0/+6
|
* ci: Fix subtlety with not taking effect because of time_it (#20898)Zubin Duggal2022-01-181-1/+4
|
* ci: test bootstrapping and use hadrian for source distsZubin Duggal2022-01-111-1/+1
|
* ci: Fix master CIMatthew Pickering2021-12-221-1/+1
| | | | | I made a mistake in the bash script so there were errors about "$CI_MERGE_REQUEST_DIFF_BASE_SHA" not existing.
* ci: Use correct metrics baselineMatthew Pickering2021-12-171-3/+7
| | | | | | | | | | | It turns out there was already a function in the CI script to correctly set the baseline for performance tests but it was just never called. I now call it during the initialisation to set the correct baseline. I also made the make testsuite driver take into account the PERF_BASELINE_COMMIT environment variable Fixes #20811
* rts: update xxhash used by the linker's hashmapTamar Christina2021-12-141-0/+2
|
* Fix several quoting issues in testsuiteMatthew Pickering2021-12-011-0/+12
| | | | | | | | | This fixes the ./validate script on my machine. I also took the step to add some linters which would catch problems like these in future. Fixes #20506
* gitlab-ci: Set HOME to plausible but still non-existent locationBen Gamari2021-11-201-1/+3
| | | | | | | | | | | | | We have been seeing numerous CI failures on aarch64/Darwin of the form: CI_COMMIT_BRANCH: CI_PROJECT_PATH: ghc/ghc error: creating directory '/nonexistent': Read-only file system Clearly *something* is attempting to create `$HOME`. A bit of sleuthing by @int-e found that the culprit is likely `nix`, although it's not clear why. For now we avoid the issue by setting `HOME` to a fresh directory in the working tree.