summaryrefslogtreecommitdiff
path: root/.gitlab/gen_ci.hs
Commit message (Collapse)AuthorAgeFilesLines
* Build vanilla alpine bindistsMatthew Pickering2023-05-111-3/+10
| | | | | | | | | | | We currently attempt to build and distribute fully static alpine bindists (ones which could be used on any linux platform) but most people who use the alpine bindists want to use alpine to build their own static applications (for which a fully static bindist is not necessary). We should build and distribute these bindists for these users whilst the fully-static bindist is still unusable. Fixes #23349
* Use hash-unit-ids in release jobsMatthew Pickering2023-05-041-1/+4
| | | | Includes fix upload_ghc_libs glob
* ci: additional wasm32 manual jobs in validate pipelinesCheng Shao2023-04-271-2/+4
| | | | | | This patch enables bignum native & unregisterised wasm32 jobs as manual jobs in validate pipelines, which can be useful to prevent breakage when working on wasm32 related patches.
* ci: use alpine3_17-wasm image for wasm jobsCheng Shao2023-03-301-3/+3
| | | | | Bump the ci-images dependency and use the new alpine3_17-wasm docker image for wasm jobs.
* gitlab-ci: Add job bootstrapping with nonmoving GCBen Gamari2023-03-081-3/+18
|
* Allow nightly-x86_64-linux-deb10-validate+thread_sanitizer to failBryan Richter2023-02-281-1/+3
| | | | See #22520
* Allow failure in nightly-x86_64-linux-deb10-no_tntc-validateBryan Richter2023-02-151-1/+7
| | | | See #22343
* JS: replace "js" architecture with "javascript"Sylvain Henry2023-02-061-1/+1
| | | | | | | | | | | | | | | Despite Cabal supporting any architecture name, `cabal --check` only supports a few built-in ones. Sadly `cabal --check` is used by Hackage hence using any non built-in name in a package (e.g. `arch(js)`) is rejected and the package is prevented from being uploaded on Hackage. Luckily built-in support for the `javascript` architecture was added for GHCJS a while ago. In order to allow newer `base` to be uploaded on Hackage we make the switch from `js` to `javascript` architecture. Fixes #22740. Co-authored-by: Ben Gamari <ben@smart-cactus.org>
* CI: JavaScript backend runs testsuitedoyougnu2023-02-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This MR runs the testsuite for the JS backend. Note that this is a temporary solution until !9515 is merged. Key point: The CI runs hadrian on the built cross compiler _but not_ on the bindist. Other Highlights: - stm submodule gets a bump to mark tests as broken - several tests are marked as broken or are fixed by adding more - conditions to their test runner instance. List of working commit messages: CI: test cross target _and_ emulator CI: JS: Try run testsuite with hadrian JS.CI: cleanup and simplify hadrian invocation use single bracket, print info JS CI: remove call to test_compiler from hadrian don't build haddock JS: mark more tests as broken Tracked in https://gitlab.haskell.org/ghc/ghc/-/issues/22576 JS testsuite: don't skip sum_mod test Its expected to fail, yet we skipped it which automatically makes it succeed leading to an unexpected success, JS testsuite: don't mark T12035j as skip leads to an unexpected pass JS testsuite: remove broken on T14075 leads to unexpected pass JS testsuite: mark more tests as broken JS testsuite: mark T11760 in base as broken JS testsuite: mark ManyUnbSums broken submodules: bump process and hpc for JS tests Both submodules has needed tests skipped or marked broken for th JS backend. This commit now adds these changes to GHC. See: HPC: https://gitlab.haskell.org/hpc/hpc/-/merge_requests/21 Process: https://github.com/haskell/process/pull/268 remove js_broken on now passing tests separate wasm and js backend ci test: T11760: add threaded, non-moving only_ways test: T10296a add req_c T13894: skip for JS backend tests: jspace, T22333: mark as js_broken(22573) test: T22513i mark as req_th stm submodule: mark stm055, T16707 broken for JS tests: js_broken(22374) on unpack_sums_6, T12010 dont run diff on JS CI, cleanup fixup: More CI cleanup fix: align text to master fix: align exceptions submodule to master CI: Bump DOCKER_REV Bump to ci-images commit that has a deb11 build with node. Required for !9552 testsuite: mark T22669 as js_skip See #22669 This test tests that .o-boot files aren't created when run in using the interpreter backend. Thus this is not relevant for the JS backend. testsuite: mark T22671 as broken on JS See #22835 base.testsuite: mark Chan002 fragile for JS see #22836 revert: submodule process bump bump stm submodule New hash includes skips for the JS backend. testsuite: mark RnPatternSynonymFail broken on JS Requires TH: - see !9779 - and #22261 compiler: GHC.hs ifdef import Utils.Panic.Plain
* gen_ci: Only consider release jobs for job metadataMatthew Pickering2023-01-301-4/+1
| | | | | In particular we do not have a release job for FreeBSD so the generation of the platform mapping was failing.
* ci: Remove FreeBSD job from release pipelinesMatthew Pickering2023-01-301-1/+1
| | | | We no longer attempt to build or distribute this release
* ci: Add ubuntu18_04 nightly and release jobsMatthew Pickering2023-01-261-0/+3
| | | | | | | This adds release jobs for ubuntu18_04 which uses glibc 2.27 which is older than the 2.28 which is used by Rocky8 bindists. Ticket #22268
* gitlab-ci: Add Rocky8 jobsBen Gamari2023-01-231-1/+12
| | | | Addresses #22268.
* Add scripts to generate ghcup metadata on nightly and release pipelinesMatthew Pickering2023-01-161-24/+111
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | 1. A python script in .gitlab/rel_eng/mk-ghcup-metadata which generates suitable metadata for consumption by GHCUp for the relevant pipelines. - The script generates the metadata just as the ghcup maintainers want, without taking into account platform/library combinations. It is updated manually when the mapping changes. - The script downloads the bindists which ghcup wants to distribute, calculates the hash and generates the yaml in the correct structure. - The script is documented in the .gitlab/rel_eng/mk-ghcup-metadata/README.mk file 1a. The script requires us to understand the mapping from platform -> job. To choose the preferred bindist for each platform the .gitlab/gen_ci.hs script is modified to allow outputting a metadata file which answers the question about which job produces the bindist which we want to distribute to users for a specific platform. 2. Pipelines to run on nightly and release jobs to generate metadata - ghcup-metadata-nightly: Generates metadata which points directly to artifacts in the nightly job. - ghcup-metadata-release: Generates metadata suitable for inclusion directly in ghcup by pointing to the downloads folder where the bindist will be uploaded to. 2a. Trigger jobs which test the generated metadata in the downstream `ghccup-ci` repo. See that repo for documentation about what is tested and how but essentially we test in a variety of clean images that ghcup can download and install the bindists we say exist in our metadata.
* ci: Don't build aarch64-deb10-llvm job on release pipelinesMatthew Pickering2023-01-161-1/+1
| | | | Closes #22721
* wasm ci: Remove wasm release jobsMatthew Pickering2023-01-131-5/+3
| | | | | This removes the wasm release jobs, as we do not yet intend to distribute these binaries.
* ci: add wasm ci jobs via gen_ci.hsCheng Shao2023-01-131-2/+33
| | | | | | | - There is one regular wasm job run in validate pipelines - Additionally, int-native/unreg wasm jobs run in nightly/release pipelines Also, remove the legacy handwritten wasm ci jobs in .gitlab-ci.yml.
* ci: improve nix-shell for gen_ci.hs and fix some ghc/hlint warningsCheng Shao2023-01-131-17/+18
| | | | | | | | | | | - Add a ghc environment including prebuilt dependencies to the nix-shell. Get rid of the ad hoc cabal cache and all dependencies are now downloaded from the nixos binary cache. - Make gen_ci.hs a cabal package with HLS integration, to make future hacking of gen_ci.hs easier. - Fix some ghc/hlint warnings after I got HLS to work. - For the lint-ci-config job, do a shallow clone to save a few minutes of unnecessary git checkout time.
* Change MSYSTEM to CLANG64 uniformlyCheng Shao2023-01-121-2/+1
|
* Disable split sections on aarch64-deb10 buildMatthew Pickering2023-01-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | See #22722 Failure on this job: https://gitlab.haskell.org/ghc/ghc/-/jobs/1287852 ``` Unexpected failures: /builds/ghc/ghc/tmp/ghctest-s3d8g1hj/test spaces/testsuite/tests/th/T10828.run T10828 [exit code non-0] (ext-interp) /builds/ghc/ghc/tmp/ghctest-s3d8g1hj/test spaces/testsuite/tests/th/T13123.run T13123 [exit code non-0] (ext-interp) /builds/ghc/ghc/tmp/ghctest-s3d8g1hj/test spaces/testsuite/tests/th/T20590.run T20590 [exit code non-0] (ext-interp) Appending 232 stats to file: /builds/ghc/ghc/performance-metrics.tsv ``` ``` Compile failed (exit code 1) errors were: data family D_0 a_1 :: * -> * data instance D_0 GHC.Types.Int GHC.Types.Bool :: * where DInt_2 :: D_0 GHC.Types.Int GHC.Types.Bool data E_3 where MkE_4 :: a_5 -> E_3 data Foo_6 a_7 b_8 where MkFoo_9, MkFoo'_10 :: a_11 -> Foo_6 a_11 b_12 newtype Bar_13 :: * -> GHC.Types.Bool -> * where MkBar_14 :: a_15 -> Bar_13 a_15 b_16 data T10828.T (a_0 :: *) where T10828.MkT :: forall (a_1 :: *) . a_1 -> a_1 -> T10828.T a_1 T10828.MkC :: forall (a_2 :: *) (b_3 :: *) . (GHC.Types.~) a_2 GHC.Types.Int => {T10828.foo :: a_2, T10828.bar :: b_3} -> T10828.T GHC.Types.Int T10828.hs:1:1: error: [GHC-87897] Exception when trying to run compile-time code: ghc-iserv terminated (-4) Code: (do TyConI dec <- runQ $ reify (mkName "T") runIO $ putStrLn (pprint dec) >> hFlush stdout d <- runQ $ [d| data T' a :: Type where MkT' :: a -> a -> T' a MkC' :: forall a b. (a ~ Int) => {foo :: a, bar :: b} -> T' Int |] runIO $ putStrLn (pprint d) >> hFlush stdout ....) *** unexpected failure for T10828(ext-interp) =====> 7000 of 9215 [0, 1, 0] =====> 7000 of 9215 [0, 1, 0] =====> 7000 of 9215 [0, 1, 0] =====> 7000 of 9215 [0, 1, 0] Compile failed (exit code 1) errors were: T13123.hs:1:1: error: [GHC-87897] Exception when trying to run compile-time code: ghc-iserv terminated (-4) Code: ([d| data GADT where MkGADT :: forall k proxy (a :: k). proxy a -> GADT |]) *** unexpected failure for T13123(ext-interp) =====> 7100 of 9215 [0, 2, 0] =====> 7100 of 9215 [0, 2, 0] =====> 7200 of 9215 [0, 2, 0] Compile failed (exit code 1) errors were: T20590.hs:1:1: error: [GHC-87897] Exception when trying to run compile-time code: ghc-iserv terminated (-4) Code: ([d| data T where MkT :: forall a. a -> T |]) *** unexpected failure for T20590(ext-interp) ``` Looks fairly worrying to me.
* ci: Upgrade darwin, windows and freebsd CI to use GHC-9.4.3Matthew Pickering2023-01-061-4/+4
| | | | Fixes #22599
* packaging: Build perf builds with -split-sectionswip/various-hadrian-fixesMatthew Pickering2023-01-041-9/+16
| | | | | | | | | | | In 8f71d958 the make build system was made to use split-sections on linux systems but it appears this logic never made it to hadrian. There is the split_sections flavour transformer but this doesn't appear to be used for perf builds on linux. This is disbled on deb9 and windows due to #21670 Closes #21135
* gitlab-ci: Introduce aarch64-linux-llvm jobBen Gamari2022-12-241-0/+1
| | | | | | | This nightly job will ensure that we don't break the LLVM backend on AArch64/Linux by bootstrapping GHC. This would have caught #22640.
* CI: Remove ARMv7 jobsBryan Richter2022-12-011-19/+1
| | | | | | | | | | | These jobs fail (and are allowed to fail) nearly every time. Soon they won't even be able to run at all, as we won't currently have runners that can run them. Fixing the latter problem is tracked in #22409. I went ahead and removed all settings and configurations.
* CI: Forbid the fully static build on Alpine to fail.M Farkas-Dyck2022-12-011-1/+1
| | | | To do so, we mark some tests broken in this configuration.
* Add Javascript backendSylvain Henry2022-11-291-6/+25
| | | | | | | | | | | | | | | Add JS backend adapted from the GHCJS project by Luite Stegeman. Some features haven't been ported or implemented yet. Tests for these features have been disabled with an associated gitlab ticket. Bump array submodule Work funded by IOG. Co-authored-by: Jeffrey Young <jeffrey.young@iohk.io> Co-authored-by: Luite Stegeman <stegeman@gmail.com> Co-authored-by: Josh Meredith <joshmeredith2008@gmail.com>
* run_ci: remove monoidal-containersBryan Richter2022-08-161-11/+26
| | | | | | | | | Fixes #21492 MonoidalMap is inlined and used to implement Variables, as before. The top-level value "jobs" is reimplemented as a regular Map, since it doesn't use the monoidal union anyway.
* Revert "gitlab-ci: Add release job for aarch64/debian 11"Matthew Pickering2022-08-111-1/+0
| | | | | | | | | This reverts commit 5765e13370634979eb6a0d9f67aa9afa797bee46. The job was not tested before being merged and fails CI (https://gitlab.haskell.org/ghc/ghc/-/jobs/1139392) Ticket #22005
* gitlab-ci: Run ARMv7 jobs when ~ARM label is usedBen Gamari2022-08-101-1/+4
|
* gitlab-ci: Fix ARMv7 buildBen Gamari2022-08-101-2/+9
| | | | | | | It appears that the CI refactoring carried out in 5ff690b8474c74e9c968ef31e568c1ad0fe719a1 failed to carry over some critical configuration: setting the build/host/target platforms and forcing use of a non-broken linker.
* gitlab-ci: Bump to use freebsd13 runnersBen Gamari2022-08-091-14/+14
|
* gitlab-ci: Add basic support for cross-compiler testiingBen Gamari2022-08-081-3/+11
| | | | Here we add a simple qemu-based test for cross-compilers.
* gitlab-ci: Introduce validation job for aarch64 cross-compilationBen Gamari2022-08-081-1/+9
| | | | Begins to address #11958.
* gitlab-ci: Add release job for aarch64/debian 11Ben Gamari2022-08-081-0/+1
|
* Add nightly job for generating docs suitable for hackage uploadMatthew Pickering2022-07-041-0/+8
|
* ci: Don't build sphinx documentation on centosMatthew Pickering2022-05-191-0/+3
| | | | | | | 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-191-6/+6
| | | | | | | | 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
* Add back Debian9 CI jobsMatthew Pickering2022-05-111-0/+3
| | | | | | | 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: Always preserve artifacts, even in failed jobsBen Gamari2022-05-041-0/+10
| | | | (cherry picked from commit fd08b0c91ea3cab39184f1b1b1aafcd63ce6973f)
* gitlab-ci: Use ld.lld on ARMv7/LinuxBen Gamari2022-05-041-5/+11
| | | | | | | | Due to #16177. Also cleanup some code style issues. (cherry picked from commit cc1c3861e2372f464bf9e3c9c4d4bd83f275a1a6)
* ci: Replace "always" with "on_success" to stop build jobs running before ↵Matthew Pickering2022-04-081-3/+3
| | | | | | | | | 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-061-2/+2
| | | | | | This is necessary to build recent `text` commits. Bumps Hackage index state for a hashable which builds with GHC 9.2.
* gitlab-ci: Disable cabal-install store caching on WindowsBen Gamari2022-04-051-4/+9
| | | | | | | 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-011-1/+6
| | | | | It appears that running the script directly does nothing (no info is printed about saving the cache).
* ci: Regenerate jobs.yamlMatthew Pickering2022-04-011-0/+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-241-0/+747
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.