[Git][ghc/ghc][wip/marge_bot_batch_merge_job] 6 commits: git: remove a.out and include it in .gitignore
Marge Bot (@marge-bot)
gitlab at gitlab.haskell.org
Mon Aug 26 10:35:33 UTC 2024
Marge Bot pushed to branch wip/marge_bot_batch_merge_job at Glasgow Haskell Compiler / GHC
Commits:
f0408eeb by Cheng Shao at 2024-08-23T10:37:10-04:00
git: remove a.out and include it in .gitignore
a.out is a configure script byproduct. It was mistakenly checked into
the tree in !13118. This patch removes it, and include it in
.gitignore to prevent a similar error in the future.
- - - - -
1f95c5e4 by Matthew Pickering at 2024-08-23T10:37:46-04:00
docs: Fix code-block syntax on old sphinx version
This code-block directive breaks the deb9 sphinx build.
Fixes #25201
- - - - -
f3212d23 by Sylvain Henry at 2024-08-26T06:35:04-04:00
JS: add basic support for POSIX *at functions (#25190)
openat/fstatat/unlinkat/dup are now used in the recent release of the
`directory` and `file-io` packages.
As such, these functions are (indirectly) used in the following tests
one we'll bump the `directory` submodule (see !13122):
- openFile008
- jsOptimizer
- T20509
- bkpcabal02
- bkpcabal03
- bkpcabal04
- - - - -
ad3e1da3 by Matthew Pickering at 2024-08-26T06:35:04-04:00
Update directory submodule to latest master
The primary reason for this bump is to fix the warning from `ghc-pkg
check`:
```
Warning: include-dirs: /data/home/ubuntu/.ghcup/ghc/9.6.2/lib/ghc-9.6.2/lib/../lib/aarch64-linux-ghc-9.6.2/directory-1.3.8.1/include doesn't exist or isn't a directory
```
This also requires adding the `file-io` package as a boot library (which
is discussed in #25145)
Fixes #23594 #25145
- - - - -
58165ce2 by Matthew Pickering at 2024-08-26T06:35:04-04:00
Fix aarch64-alpine target platform description
We are producing bindists where the target triple is
aarch64-alpine-linux
when it should be
aarch64-unknown-linux
This is because the bootstrapped compiler originally set the target
triple to `aarch64-alpine-linux` which is when propagated forwards by
setting `bootstrap_target` from the bootstrap compiler target.
In order to break this chain we explicitly specify build/host/target for
aarch64-alpine.
This requires a new configure flag `--enable-ignore-` which just
switches off a validation check that the target platform of the
bootstrap compiler is the same as the build platform. It is the same,
but the name is just wrong.
These commits can be removed when the bootstrap compiler has the correct
target triple (I looked into patching this on ci-images, but it looked
hard to do correctly as the build/host platform is not in the settings
file).
Fixes #25200
- - - - -
3277c986 by Matthew Pickering at 2024-08-26T06:35:04-04:00
Bump nixpkgs commit for gen_ci script
- - - - -
16 changed files:
- .gitignore
- .gitlab/generate-ci/flake.lock
- .gitlab/generate-ci/gen_ci.hs
- .gitlab/jobs.yaml
- .gitmodules
- − a.out
- configure.ac
- docs/users_guide/9.12.1-notes.rst
- docs/users_guide/exts/multiline_strings.rst
- hadrian/src/Packages.hs
- hadrian/src/Rules/ToolArgs.hs
- hadrian/src/Settings/Default.hs
- libraries/directory
- + libraries/file-io
- libraries/ghc-internal/jsbits/base.js
- libraries/ghc-internal/src/GHC/Internal/System/Posix/Internals.hs
Changes:
=====================================
.gitignore
=====================================
@@ -35,6 +35,7 @@ Thumbs.db
__pycache__
.mypy_cache
*.SYMDEF*
+a.out
log
tags
=====================================
.gitlab/generate-ci/flake.lock
=====================================
@@ -5,11 +5,11 @@
"systems": "systems"
},
"locked": {
- "lastModified": 1687709756,
- "narHash": "sha256-Y5wKlQSkgEK2weWdOu4J3riRd+kV/VCgHsqLNTTWQ/0=",
+ "lastModified": 1710146030,
+ "narHash": "sha256-SZ5L6eA7HJ/nmkzGG7/ISclqe6oZdOZTNoesiInkXPQ=",
"owner": "numtide",
"repo": "flake-utils",
- "rev": "dbabf0ca0c0c4bce6ea5eaf65af5cb694d2082c7",
+ "rev": "b1d9ab70662946ef0850d488da1c9019f3a9752a",
"type": "github"
},
"original": {
@@ -20,11 +20,11 @@
},
"nixpkgs": {
"locked": {
- "lastModified": 1687886075,
- "narHash": "sha256-PeayJDDDy+uw1Ats4moZnRdL1OFuZm1Tj+KiHlD67+o=",
+ "lastModified": 1724334015,
+ "narHash": "sha256-5sfvc0MswIRNdRWioUhG58rGKGn2o90Ck6l6ClpwQqA=",
"owner": "NixOS",
"repo": "nixpkgs",
- "rev": "a565059a348422af5af9026b5174dc5c0dcefdae",
+ "rev": "6d204f819efff3d552a88d0a44b5aaaee172b784",
"type": "github"
},
"original": {
=====================================
.gitlab/generate-ci/gen_ci.hs
=====================================
@@ -409,7 +409,7 @@ opsysVariables _ FreeBSD13 = mconcat
, "GHC_VERSION" =: "9.6.4"
, "CABAL_INSTALL_VERSION" =: "3.10.2.0"
]
-opsysVariables _ (Linux distro) = distroVariables distro
+opsysVariables arch (Linux distro) = distroVariables arch distro
opsysVariables AArch64 (Darwin {}) =
mconcat [ "NIX_SYSTEM" =: "aarch64-darwin"
, "MACOSX_DEPLOYMENT_TARGET" =: "11.0"
@@ -441,25 +441,30 @@ opsysVariables _ (Windows {}) =
, "GHC_VERSION" =: "9.6.4" ]
opsysVariables _ _ = mempty
-alpineVariables = mconcat
+alpineVariables :: Arch -> Variables
+alpineVariables arch = mconcat $
[ -- Due to #20266
"CONFIGURE_ARGS" =: "--disable-ld-override"
, "INSTALL_CONFIGURE_ARGS" =: "--disable-ld-override"
-- encoding004: due to lack of locale support
-- T10458, ghcilink002: due to #17869
, "BROKEN_TESTS" =: "encoding004 T10458"
+ ] ++
+ [-- Bootstrap compiler has incorrectly configured target triple #25200
+ "CONFIGURE_ARGS" =: "--enable-ignore-build-platform-mismatch --build=aarch64-unknown-linux --host=aarch64-unknown-linux --target=aarch64-unknown-linux"
+ | AArch64 <- [arch]
]
-distroVariables :: LinuxDistro -> Variables
-distroVariables Alpine312 = alpineVariables
-distroVariables Alpine318 = alpineVariables
-distroVariables Alpine320 = alpineVariables
-distroVariables Centos7 = mconcat [
+distroVariables :: Arch -> LinuxDistro -> Variables
+distroVariables arch Alpine312 = alpineVariables arch
+distroVariables arch Alpine318 = alpineVariables arch
+distroVariables arch Alpine320 = alpineVariables arch
+distroVariables _ Centos7 = mconcat [
"HADRIAN_ARGS" =: "--docs=no-sphinx"
, "BROKEN_TESTS" =: "T22012" -- due to #23979
]
-distroVariables Fedora33 = mconcat
+distroVariables _ Fedora33 = mconcat
-- LLC/OPT do not work for some reason in our fedora images
-- These tests fail with this error: T11649 T5681 T7571 T8131b
-- +/opt/llvm/bin/opt: /lib64/libtinfo.so.5: no version information available (required by /opt/llvm/bin/opt)
@@ -467,7 +472,7 @@ distroVariables Fedora33 = mconcat
[ "LLC" =: "/bin/false"
, "OPT" =: "/bin/false"
]
-distroVariables _ = mempty
+distroVariables _ _ = mempty
-----------------------------------------------------------------------------
-- Cache settings, what to cache and when can we share the cache
=====================================
.gitlab/jobs.yaml
=====================================
@@ -376,7 +376,7 @@
"BIN_DIST_NAME": "ghc-aarch64-linux-alpine3_18-validate",
"BROKEN_TESTS": "encoding004 T10458",
"BUILD_FLAVOUR": "validate",
- "CONFIGURE_ARGS": "--disable-ld-override --enable-strict-ghc-toolchain-check",
+ "CONFIGURE_ARGS": "--disable-ld-override --enable-ignore-build-platform-mismatch --build=aarch64-unknown-linux --host=aarch64-unknown-linux --target=aarch64-unknown-linux --enable-strict-ghc-toolchain-check",
"INSTALL_CONFIGURE_ARGS": "--disable-ld-override --enable-strict-ghc-toolchain-check",
"RUNTEST_ARGS": "",
"TEST_ENV": "aarch64-linux-alpine3_18-validate",
@@ -2933,7 +2933,7 @@
"BIN_DIST_NAME": "ghc-aarch64-linux-alpine3_18-release+no_split_sections",
"BROKEN_TESTS": "encoding004 T10458",
"BUILD_FLAVOUR": "release+no_split_sections",
- "CONFIGURE_ARGS": "--disable-ld-override --enable-strict-ghc-toolchain-check",
+ "CONFIGURE_ARGS": "--disable-ld-override --enable-ignore-build-platform-mismatch --build=aarch64-unknown-linux --host=aarch64-unknown-linux --target=aarch64-unknown-linux --enable-strict-ghc-toolchain-check",
"HADRIAN_ARGS": "--hash-unit-ids",
"IGNORE_PERF_FAILURES": "all",
"INSTALL_CONFIGURE_ARGS": "--disable-ld-override --enable-strict-ghc-toolchain-check",
=====================================
.gitmodules
=====================================
@@ -118,3 +118,6 @@
[submodule "hadrian/vendored/Cabal"]
path = hadrian/vendored/Cabal
url = https://gitlab.haskell.org/ghc/packages/Cabal.git
+[submodule "libraries/file-io"]
+ path = libraries/file-io
+ url = https://gitlab.haskell.org/ghc/packages/file-io.git
=====================================
a.out deleted
=====================================
Binary files a/a.out and /dev/null differ
=====================================
configure.ac
=====================================
@@ -111,6 +111,14 @@ AC_ARG_ENABLE(bootstrap-with-devel-snapshot,
[EnableBootstrapWithDevelSnaphost=NO]
)
+AC_ARG_ENABLE(ignore-build-platform-mismatch,
+[AS_HELP_STRING([--ignore-build-platform-mismatch],
+ [Ignore when the target platform reported by the bootstrap compiler doesn''t match the configured build platform. This flag is used to correct mistakes when the target platform is incorrectly reported by the bootstrap (#25200). ])],
+ [FP_CAPITALIZE_YES_NO(["$enableval"], [IgnoreBuildPlatformMismatch])],
+ [IgnoreBuildPlatformMismatch=NO]
+)
+
+
AC_ARG_ENABLE(tarballs-autodownload,
[AS_HELP_STRING([--enable-tarballs-autodownload],
[Automatically download Windows distribution binaries if needed.])],
@@ -279,10 +287,13 @@ FP_PROG_SH
# code for the requested build platform.
if test "$BuildPlatform" != "$bootstrap_target"
then
+ if test "$IgnoreBuildPlatformMismatch" = "NO"
+ then
echo "This GHC (${WithGhc}) does not generate code for the build platform"
echo " GHC target platform : $bootstrap_target"
echo " Desired build platform : $BuildPlatform"
exit 1
+ fi
fi
dnl ** Do an unregisterised build?
=====================================
docs/users_guide/9.12.1-notes.rst
=====================================
@@ -223,3 +223,4 @@ for further change information.
libraries/Win32/Win32.cabal: Dependency of ``ghc`` library
libraries/xhtml/xhtml.cabal: Dependency of ``haddock`` executable
libraries/os-string/os-string.cabal: Dependency of ``filepath`` library
+ libraries/file-io/file-io.cabal: Dependency of ``directory`` library
=====================================
docs/users_guide/exts/multiline_strings.rst
=====================================
@@ -36,7 +36,7 @@ Examples
+-----------------------+------------------------+---------------------------+
| Expression | Output | Notes |
+=======================+========================+===========================+
-| .. code-block:: text | .. code-block:: | |
+| .. code-block:: text | :: | |
| | | |
| """ | "Line 1\n" | |
| Line 1 | ++ "Line 2\n" | |
@@ -44,7 +44,7 @@ Examples
| Line 3 | | |
| """ | | |
+-----------------------+------------------------+---------------------------+
-| .. code-block:: text | .. code-block:: | |
+| .. code-block:: text | :: | |
| | | Characters on the same |
| """Test | "Test\n" | line as the delimiter are |
| Line 1 | ++ "Line 1\n" | still included |
@@ -52,7 +52,7 @@ Examples
| Line 3 | ++ "Line 3\n" | |
| """ | | |
+-----------------------+------------------------+---------------------------+
-| .. code-block:: text | .. code-block:: | |
+| .. code-block:: text | :: | |
| | | Omit the trailing newline |
| """ | "Line 1\n" | with string gaps |
| Line 1 | ++ "Line 2\n" | |
@@ -60,7 +60,7 @@ Examples
| Line 3\ | | |
| \""" | | |
+-----------------------+------------------------+---------------------------+
-| .. code-block:: text | .. code-block:: | |
+| .. code-block:: text | :: | |
| | | Double quotes don't need |
| """ | "\"Hello\"\n" | to be escaped unless |
| "Hello" | ++ "\"\"\"\n" | they're triple quoted |
@@ -68,7 +68,7 @@ Examples
| \""" | | |
| """ | | |
+-----------------------+------------------------+---------------------------+
-| .. code-block:: text | .. code-block:: | |
+| .. code-block:: text | :: | |
| | | Only common indentation |
| """ | "<div>\n" | is stripped |
| <div> | ++ " <p>ABC</p>\n" | |
@@ -76,7 +76,7 @@ Examples
| </div> | | |
| """ | | |
+-----------------------+------------------------+---------------------------+
-| .. code-block:: text | .. code-block:: | |
+| .. code-block:: text | :: | |
| | | Use ``\&`` to keep |
| """ | " Line 1\n" | leading indentation for |
| \& Line 1 | ++ " Line 2\n" | each line |
=====================================
hadrian/src/Packages.hs
=====================================
@@ -4,7 +4,7 @@ module Packages (
array, base, binary, bytestring, cabal, cabalSyntax, checkPpr,
checkExact, countDeps,
compareSizes, compiler, containers, deepseq, deriveConstants, directory, dumpDecls,
- exceptions, filepath, genapply, genprimopcode, ghc, ghcBignum, ghcBoot, ghcBootTh, ghcBootThNext, ghcPlatform,
+ exceptions, filepath, fileio, genapply, genprimopcode, ghc, ghcBignum, ghcBoot, ghcBootTh, ghcBootThNext, ghcPlatform,
ghcCompact, ghcConfig, ghcExperimental, ghcHeap, ghcInternal, ghci, ghciWrapper, ghcPkg, ghcPrim,
ghcToolchain, ghcToolchainBin, haddockApi, haddockLibrary, haddock, haskeline,
hsc2hs, hp2ps, hpc, hpcBin, integerGmp, integerSimple, iserv, iservProxy,
@@ -40,7 +40,7 @@ ghcPackages =
, ghcToolchain, ghcToolchainBin, haddockApi, haddockLibrary, haddock, haskeline, hsc2hs
, hp2ps, hpc, hpcBin, integerGmp, integerSimple, iserv, libffi, mtl, osString
, parsec, pretty, process, rts, runGhc, stm, semaphoreCompat, templateHaskell
- , terminfo, text, time, transformers, unlit, unix, win32, xhtml
+ , terminfo, text, time, transformers, unlit, unix, win32, xhtml, fileio
, timeout
, lintersCommon
, lintNotes, lintCodes, lintCommitMsg, lintSubmoduleRefs, lintWhitespace ]
@@ -79,6 +79,7 @@ directory = lib "directory"
dumpDecls = util "dump-decls"
exceptions = lib "exceptions"
filepath = lib "filepath"
+fileio = lib "file-io"
genapply = util "genapply"
genprimopcode = util "genprimopcode"
ghc = prg "ghc-bin" `setPath` "ghc"
=====================================
hadrian/src/Rules/ToolArgs.hs
=====================================
@@ -138,6 +138,7 @@ toolTargets = [ cabalSyntax
, directory
, process
, filepath
+ , fileio
, osString
-- , ghc -- # depends on ghc library
-- , runGhc -- # depends on ghc library
=====================================
hadrian/src/Settings/Default.hs
=====================================
@@ -83,8 +83,9 @@ stage0Packages = do
return $ [ cabalSyntax
, cabal
, compiler
- , directory -- depends on filepath
+ , directory -- depends on filepath, fileIo
, filepath -- depends on os-string
+ , fileio
, ghc
, ghcBoot
, ghcBootThNext
=====================================
libraries/directory
=====================================
@@ -1 +1 @@
-Subproject commit a97a8a8f30d652f972192122fd5f459a147c13e5
+Subproject commit 6045b93c4ef7a713c8f3d6837ca69f8e96b12bf1
=====================================
libraries/file-io
=====================================
@@ -0,0 +1 @@
+Subproject commit a4a0464ccd38e8380c202949a90b21d9e592aeef
=====================================
libraries/ghc-internal/jsbits/base.js
=====================================
@@ -138,6 +138,126 @@ function h$base_fstat(fd, stat, stat_off, c) {
h$unsupported(-1, c);
}
+function h$stat(path, path_off, stat, stat_off) {
+#ifndef GHCJS_BROWSER
+ if(h$isNode()) {
+ try {
+ var stats = h$fs.statSync(h$decodeUtf8z(path, path_off));
+ h$base_fillStat(stats, stat, stat_off);
+ return 0;
+ } catch(e) {
+ h$setErrno(e);
+ return -1;
+ }
+ }
+ else
+#endif
+ h$unsupported(-1);
+}
+
+function h$lstat(path, path_off, stat, stat_off) {
+#ifndef GHCJS_BROWSER
+ if(h$isNode()) {
+ try {
+ var stats = h$fs.lstatSync(h$decodeUtf8z(path, path_off));
+ h$base_fillStat(stats, stat, stat_off);
+ return 0;
+ } catch(e) {
+ h$setErrno(e);
+ return -1;
+ }
+ }
+ else
+#endif
+ h$unsupported(-1);
+}
+
+function h$fstatat(dirfd, path, path_off, stat, stat_off, flag) {
+#ifndef GHCJS_BROWSER
+ if(h$isNode()) {
+ var fp = h$calculate_at(dirfd, path, path_off);
+ try {
+ if (flag & h$base_at_symlink_nofollow) {
+ var fs = h$fs.lstatSync(fp);
+ h$base_fillStat(fs, stat, stat_off);
+ return 0;
+ }
+ else {
+ var fs = h$fs.statSync(fp);
+ h$base_fillStat(fs, stat, stat_off);
+ return 0;
+ }
+
+ } catch(e) {
+ h$setErrno(e);
+ return -1;
+ }
+ }
+#endif
+
+ return h$unsupported(-1);
+}
+
+function h$unlinkat(dirfd, path, path_off, flag) {
+#ifndef GHCJS_BROWSER
+ if(h$isNode()) {
+ var fp = h$calculate_at(dirfd, path, path_off);
+ try {
+ if (flag & h$base_at_removedir) {
+ h$fs.rmdirSync(fp);
+ return 0;
+ }
+ else {
+ h$fs.unlinkSync(fp);
+ return 0;
+ }
+
+ } catch(e) {
+ h$setErrno(e);
+ return -1;
+ }
+ }
+#endif
+
+ return h$unsupported(-1);
+}
+
+function h$dup(fd) {
+#ifndef GHCJS_BROWSER
+ if(h$isNode()) {
+ try {
+ // NodeJS doesn't provide "dup" (see
+ // https://github.com/nodejs/node/issues/41733), so we do this hack that
+ // probably only works on Linux.
+ return h$fs.openSync("/proc/self/fd/"+fd);
+ } catch(e) {
+ h$setErrno(e);
+ return -1;
+ }
+ }
+ else
+#endif
+ h$unsupported(-1);
+}
+
+function h$fdopendir(fd) {
+#ifndef GHCJS_BROWSER
+ if(h$isNode()) {
+ try {
+ // NodeJS doesn't provide "fdopendir", so we do this hack that probably
+ // only works on Linux.
+ return h$fs.opendirSync("/proc/self/fd/"+fd);
+ } catch(e) {
+ h$setErrno(e);
+ return -1;
+ }
+ }
+ else
+#endif
+ h$unsupported(-1);
+}
+
+
function h$base_isatty(fd) {
TRACE_IO("base_isatty " + fd)
// return 1; // fixme debug
@@ -333,25 +453,55 @@ function h$realpath(path,off,resolved,resolved_off) {
h$unsupported(-1);
}
-function h$base_open(file, file_off, how, mode, c) {
- return h$open(file,file_off,how,mode,c);
+function h$path_is_abs(path) {
+ return path.charAt(0) === '/';
}
-function h$openat(dirfd, file, file_off, how, mode) {
- if (dirfd != h$base_at_fdcwd) {
- // we only support AT_FDWCD (open) until NodeJS provides "openat"
- return h$unsupported(-1);
+function h$path_join2(p1,p2) {
+ // Emscripten would normalize the path here. We don't for now.
+ return (p1 + '/' + p2);
+}
+
+// Compute path from a FD and a path
+function h$calculate_at(dirfd, file, file_off) {
+ var path = h$decodeUtf8z(file,file_off);
+
+ if (h$path_is_abs(path)) {
+ return path;
+ }
+
+ // relative path
+ var dir;
+ if (dirfd == h$base_at_fdcwd) {
+ dir = h$process.cwd();
}
+#ifndef GHCJS_BROWSER
+ else if (h$isNode()) {
+ // hack that probably only works on Linux with /proc mounted
+ dir = h$fs.readlinkSync("/proc/self/fd/"+dirfd);
+ }
+#endif
else {
- return h$open(file,file_off,how,mode,undefined);
+ return h$unsupported(-1);
}
+
+ return h$path_join2(dir,path);
+}
+
+function h$openat(dirfd, file, file_off, how, mode, c) {
+ var path = h$calculate_at(dirfd, file, file_off);
+ return h$base_open(path, how, mode, c);
+}
+
+function h$open(file, file_off, how, mode, c) {
+ var path = h$decodeUtf8z(file, file_off);
+ return h$base_open(path, how, mode, c);
}
-function h$open(file, file_off, how, mode,c) {
+function h$base_open(fp, how, mode, c) {
#ifndef GHCJS_BROWSER
if(h$isNode()) {
var flags, off;
- var fp = h$decodeUtf8z(file, file_off);
TRACE_IO("open: " + fp)
var acc = how & h$base_o_accmode;
// passing a number lets node.js use it directly as the flags (undocumented)
@@ -586,6 +736,9 @@ const h$base_o_noctty = 0x20000;
const h$base_o_nonblock = 0x00004;
const h$base_o_binary = 0x00000;
const h$base_at_fdcwd = -100;
+const h$base_at_symlink_nofollow = 0x100;
+const h$base_at_removedir = 0x200;
+const h$base_at_symlink_follow = 0x400;
function h$base_stat_check_mode(mode,p) {
=====================================
libraries/ghc-internal/src/GHC/Internal/System/Posix/Internals.hs
=====================================
@@ -537,11 +537,11 @@ foreign import javascript interruptible "h$base_lseek"
c_lseek :: CInt -> COff -> CInt -> IO COff
foreign import javascript interruptible "h$base_lstat"
lstat :: CFilePath -> Ptr CStat -> IO CInt
-foreign import javascript interruptible "h$base_open"
+foreign import javascript interruptible "h$open"
c_open :: CFilePath -> CInt -> CMode -> IO CInt
-foreign import javascript interruptible "h$base_open"
+foreign import javascript interruptible "h$open"
c_interruptible_open_ :: CFilePath -> CInt -> CMode -> IO CInt
-foreign import javascript interruptible "h$base_open"
+foreign import javascript interruptible "h$open"
c_safe_open_ :: CFilePath -> CInt -> CMode -> IO CInt
foreign import javascript interruptible "h$base_read"
c_read :: CInt -> Ptr Word8 -> CSize -> IO CSsize
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/d817cade3c09b3db1c3ee2bf637e218865b51d3a...3277c98648c8aabe6b459418c26f675ab5406ba5
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/compare/d817cade3c09b3db1c3ee2bf637e218865b51d3a...3277c98648c8aabe6b459418c26f675ab5406ba5
You're receiving this email because of your account on gitlab.haskell.org.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-commits/attachments/20240826/17d1442a/attachment-0001.html>
More information about the ghc-commits
mailing list