Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
22 commits
Select commit Hold shift + click to select a range
6701b95
build: wasm cross-compile + ghcup-compatible bindist
angerman Jun 4, 2026
7396909
rts+compiler: wasm32 cross-target patches
angerman Jun 4, 2026
b0d9483
stage3: wasm-only shared libs (R7 path-i, Path C dylib shipping)
angerman Jun 4, 2026
0780c69
ci(nix-ci): split into Build / Test / Cross + add Cross: WASM job
angerman Jun 4, 2026
54bd705
ci: add cabal-release.yml (Linux dual-compiler cabal bindist)
angerman Jun 4, 2026
0395c07
ci: add channel-e2e workflows (WASM + MULTI, github-hosted)
angerman Jun 4, 2026
3b3f3cf
lode: WASM-cross-ghcup initiative tracking + R8/R12 cabal patches
angerman Jun 4, 2026
cbdc89e
build(stage2.dist): clean darwin Mach-O at construction time
angerman Jun 4, 2026
f5b4acf
build: unify Cabal pin to PR #368 across all stages
angerman Jun 8, 2026
0facbe6
configure+stage3.settings: scope wasm-only shared via @ALL_PACKAGES_S…
angerman Jun 8, 2026
4d84ace
compiler: per-target settings drive GHC Dynamic / Profiled (G1)
angerman Jun 8, 2026
3a1ddd1
build: per-target dial sed + ghc-multi-target.tar.gz Makefile rule
angerman Jun 8, 2026
6f66011
ci(nix-ci): add Cross: MULTI job
angerman Jun 8, 2026
8c78e2e
ci(channel-e2e): MULTI miso-counter step, retire e2e-WASM workflow
angerman Jun 8, 2026
76b1cb9
docs(lode): multi-target bindist design + rpath leak investigation
angerman Jun 8, 2026
9ad5b49
ghc-internal/configure: broaden JS host guard to javascript*
angerman Jun 8, 2026
3413703
cabal: pin upstream stack branch instead of applying local patches
angerman Jun 8, 2026
c60482e
ci: bump Node20-deprecated actions to v5
angerman Jun 8, 2026
cbf809b
ci: extract reusable workflows + wire cabal-release & e2e into nix-ci…
angerman Jun 8, 2026
0337735
ci(reusable-channel-e2e): per-platform skip on missing artifact
angerman Jun 10, 2026
1752b7b
build: port stage3 wasm-shared settings onto project-file model
angerman Jun 12, 2026
cdf6d69
build(wasm-cross): resolve genprimopcode to the fresh build, not boot…
angerman Jun 17, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
60 changes: 60 additions & 0 deletions .github/workflows/cabal-release.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,60 @@
# Build stable-haskell cabal-install Linux bindists (channel gap).
#
# The wasm ghcup channel ships GHC for aarch64-darwin + x86_64-linux +
# aarch64-linux, but cabal-3.17.0.0.stable.0 only shipped for darwin —
# Linux users hit "Unable to find a download for Tool 'cabal'" during
# `ghcup install cabal 3.17.0.0.stable.0`.
#
# This workflow rebuilds cabal-install from the upstream branch
# stable-haskell/cabal:stable-haskell/feature/wasm-cross-ghcup-stack
# (a 2-commit stack of #368 rpath relativize + #361 target-prefix-aware
# tool guess) for x86_64-linux + aarch64-linux, and uploads the binaries
# as workflow artifacts.
#
# This is a thin wrapper around the reusable workflow (the same one
# nix-ci.yml calls as a DAG node). Triggers:
# * workflow_dispatch — manual, lets us preview the build before tagging
# * push of tag `cabal-3.17.0.0.stable.*` — auto-uploads bindists to
# the matching release
# * pull_request touching this workflow — sanity-check changes here
name: Build cabal Linux bindists

on:
push:
tags: ['cabal-3.17.0.0.stable.*']
pull_request:
paths:
- '.github/workflows/cabal-release.yml'
- '.github/workflows/reusable-cabal-release.yml'
workflow_dispatch:
inputs:
cabal_sha:
description: 'stable-haskell/cabal SHA to build'
default: '8b8433b736d45ec53a103baf4e4aabb8010ca2ed'
release_tag:
description: 'Release tag to upload to (leave blank to skip upload)'
default: ''

permissions:
contents: write # for asset upload to releases on tag push

concurrency:
group: cabal-release-${{ github.ref }}
cancel-in-progress: false

jobs:
build:
uses: ./.github/workflows/reusable-cabal-release.yml
with:
# workflow_dispatch passes inputs.*; tag/PR triggers fall back to
# the reusable workflow's own defaults.
cabal_sha: ${{ inputs.cabal_sha || '8b8433b736d45ec53a103baf4e4aabb8010ca2ed' }}
# On a tag push, route the asset upload to that tag's release. On
# workflow_dispatch, only if the operator filled release_tag.
release_tag: >-
${{ startsWith(github.ref, 'refs/tags/cabal-3.17.0.0.stable.')
&& github.ref_name
|| (github.event_name == 'workflow_dispatch' && inputs.release_tag || '') }}
permissions:
contents: write
secrets: inherit
50 changes: 50 additions & 0 deletions .github/workflows/channel-e2e-multi.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,50 @@
# Channel end-to-end CI — multi-target bindist channel (live).
#
# Validates the SHIPPED multi-target GHC + cabal + ghcup channel YAML
# by exercising the exact flow an end-user does: ghcup install fresh,
# add the multi-target stable-haskell channel, install GHC + cabal,
# compile + run a hello-world for each of native / wasm / JS, then
# build a TH-heavy real-app (miso-counter) via the wasm frontend.
#
# This is a thin wrapper around reusable-channel-e2e.yml in install_mode
# "channel" (live channel YAML, not this run's artifacts). The same
# reusable workflow is also called from nix-ci.yml in install_mode
# "artifact" against PR-built bindists.
#
# Triggers:
# * push of `multi-*` tag — re-validate after a new release ships
# * PR that touches this workflow OR the reusable
# * workflow_dispatch
# * weekly silent-regression canary
#
# The legacy `Channel e2e (WASM)` workflow is retired; the multi-target
# bindist supersedes it.
name: Channel e2e (MULTI)

on:
push:
tags: [multi-*]
pull_request:
paths:
- '.github/workflows/channel-e2e-multi.yml'
- '.github/workflows/reusable-channel-e2e.yml'
workflow_dispatch:
inputs:
multi_version:
description: 'Multi-target GHC version to test (e.g. multi-9.14.0.stable.1)'
default: ''
schedule:
- cron: '0 6 * * 1' # Monday 06:00 UTC — silent-regression canary

concurrency:
group: channel-e2e-multi-${{ github.ref }}
cancel-in-progress: false

jobs:
e2e:
uses: ./.github/workflows/reusable-channel-e2e.yml
with:
install_mode: channel
multi_version: ${{ inputs.multi_version != '' && inputs.multi_version || 'multi-9.14.0.stable.1' }}
cabal_version: '3.17.0.0.stable.0'
secrets: inherit
233 changes: 0 additions & 233 deletions .github/workflows/ci.yml

This file was deleted.

Loading
Loading