[Git][ghc/ghc][master] utils: remove unused lndir from tree
Marge Bot (@marge-bot)
gitlab at gitlab.haskell.org
Tue Feb 27 22:01:03 UTC 2024
Marge Bot pushed to branch master at Glasgow Haskell Compiler / GHC
Commits:
d3a050d2 by Cheng Shao at 2024-02-27T17:00:00-05:00
utils: remove unused lndir from tree
Ever since the removal of the make build system, the in tree lndir
hasn't been actually built, so this patch removes it.
- - - - -
7 changed files:
- .gitignore
- configure.ac
- hadrian/src/Rules/Clean.hs
- testsuite/tests/linters/Makefile
- − utils/lndir/lndir-Xos.h
- − utils/lndir/lndir-Xosdefs.h
- − utils/lndir/lndir.c
Changes:
=====================================
.gitignore
=====================================
@@ -203,7 +203,6 @@ _darcs/
/utils/runghc/runghc.cabal
/utils/gen-dll/gen-dll.cabal
/utils/ghc-pkg/ghc-pkg.cabal
-utils/lndir/fs.*
utils/unlit/fs.*
libraries/ghc-internal/include/fs.h
libraries/ghc-internal/cbits/fs.c
=====================================
configure.ac
=====================================
@@ -547,7 +547,6 @@ AC_MSG_NOTICE([done.])
dnl ** Copy the files from the "fs" utility into the right folders.
dnl --------------------------------------------------------------
AC_MSG_NOTICE([Creating links for in-tree file handling routines])
-ln -f utils/fs/fs.* utils/lndir/
ln -f utils/fs/fs.* utils/unlit/
ln -f utils/fs/fs.* rts/
ln -f utils/fs/fs.h libraries/ghc-internal/include/
@@ -1086,4 +1085,3 @@ For more information on how to configure your GHC build, see
VALIDATE_GHC_TOOLCHAIN([hadrian/cfg/default.target],[hadrian/cfg/default.target.ghc-toolchain])
rm -Rf acargs acghc-toolchain actmp-ghc-toolchain
-
=====================================
hadrian/src/Rules/Clean.hs
=====================================
@@ -32,8 +32,7 @@ cleanMingwTarballs = do
-- Clean all temporary fs files copied by configure into the source folder
cleanFsUtils :: Action ()
cleanFsUtils = do
- let dirs = [ "utils/lndir/"
- , "utils/unlit/"
+ let dirs = [ "utils/unlit/"
, "rts/"
, "libraries/base/include/"
, "libraries/base/cbits/"
=====================================
testsuite/tests/linters/Makefile
=====================================
@@ -94,6 +94,4 @@ whitespace:
rts/win32/veh_excn.h\
utils/genprimopcode/Parser.y\
utils/genprimopcode/Syntax.hs\
- utils/lndir/lndir-Xos.h\
- utils/lndir/lndir-Xosdefs.h\
)
=====================================
utils/lndir/lndir-Xos.h deleted
=====================================
@@ -1,149 +0,0 @@
-/*
- * $XConsortium: Xos.h,v 1.47 91/08/17 17:14:38 rws Exp $
- *
- * Copyright 1987 by the Massachusetts Institute of Technology
- *
- * Permission to use, copy, modify, and distribute this software and its
- * documentation for any purpose and without fee is hereby granted, provided
- * that the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in advertising
- * or publicity pertaining to distribution of the software without specific,
- * written prior permission. M.I.T. makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * The X Window System is a Trademark of MIT.
- *
- */
-
-/* This is a collection of things to try and minimize system dependencies
- * in a "significant" number of source files.
- */
-
-#pragma once
-
-#include "lndir-Xosdefs.h"
-
-/*
- * Get major data types (esp. caddr_t)
- */
-
-#if defined(USG)
-#if !defined(__TYPES__)
-#if defined(CRAY)
-#define word word_t
-#endif /* CRAY */
-#include <sys/types.h> /* forgot to protect it... */
-#define __TYPES__
-#endif /* __TYPES__ */
-#else /* USG */
-#if defined(_POSIX_SOURCE) && defined(MOTOROLA)
-#undef _POSIX_SOURCE
-#include <sys/types.h>
-#define _POSIX_SOURCE
-#else
-#include <sys/types.h>
-#endif
-#endif /* USG */
-
-
-/*
- * Just about everyone needs the strings routines. We provide both forms here,
- * index/rindex and strchr/strrchr, so any systems that don't provide them all
- * need to have #defines here.
- */
-
-#if !defined(X_NOT_STDC_ENV)
-#include <string.h>
-#define index strchr
-#define rindex strrchr
-#else
-#if defined(SYSV)
-#include <string.h>
-#define index strchr
-#define rindex strrchr
-#else
-#include <strings.h>
-#define strchr index
-#define strrchr rindex
-#endif
-#endif
-
-
-/*
- * Get open(2) constants
- */
-#if defined(X_NOT_POSIX)
-#include <fcntl.h>
-#if defined(USL)
-#include <unistd.h>
-#endif /* USL */
-#if defined(CRAY)
-#include <unistd.h>
-#endif /* CRAY */
-#if defined(MOTOROLA)
-#include <unistd.h>
-#endif /* MOTOROLA */
-#if defined(SYSV386)
-#include <unistd.h>
-#endif /* SYSV386 */
-#include <sys/file.h>
-#else /* X_NOT_POSIX */
-#if !defined(_POSIX_SOURCE) && defined(macII)
-#define _POSIX_SOURCE
-#include <fcntl.h>
-#undef _POSIX_SOURCE
-#else
-#include <fcntl.h>
-#endif
-#include <unistd.h>
-#endif /* X_NOT_POSIX else */
-
-/*
- * Get struct timeval
- */
-
-#if defined(SYSV)
-
-#if !defined(USL)
-#include <sys/time.h>
-#endif
-#include <time.h>
-#if defined(CRAY)
-#undef word
-#endif /* CRAY */
-#if defined(USG) && !defined(CRAY) && !defined(MOTOROLA)
-struct timeval {
- long tv_sec;
- long tv_usec;
-};
-#if !defined(USL_SHARELIB)
-struct timezone {
- int tz_minuteswest;
- int tz_dsttime;
-};
-#endif /* USL_SHARELIB */
-#endif /* USG */
-
-#else /* not SYSV */
-
-#if defined(_POSIX_SOURCE) && defined(SVR4)
-/* need to omit _POSIX_SOURCE in order to get what we want in SVR4 */
-#undef _POSIX_SOURCE
-#include <sys/time.h>
-#define _POSIX_SOURCE
-#else
-#include <sys/time.h>
-#endif
-
-#endif /* SYSV */
-
-/* use POSIX name for signal */
-#if defined(X_NOT_POSIX) && defined(SYSV) && !defined(SIGCHLD)
-#define SIGCHLD SIGCLD
-#endif
-
-#if defined(ISC)
-#include <sys/bsdtypes.h>
-#endif
=====================================
utils/lndir/lndir-Xosdefs.h deleted
=====================================
@@ -1,96 +0,0 @@
-/*
- * O/S-dependent (mis)feature macro definitions
- *
- * $XConsortium: Xosdefs.h,v 1.7 91/07/19 23:22:19 rws Exp $
- *
- * Copyright 1991 Massachusetts Institute of Technology
- *
- * Permission to use, copy, modify, distribute, and sell this software and its
- * documentation for any purpose is hereby granted without fee, provided that
- * the above copyright notice appear in all copies and that both that
- * copyright notice and this permission notice appear in supporting
- * documentation, and that the name of M.I.T. not be used in advertising or
- * publicity pertaining to distribution of the software without specific,
- * written prior permission. M.I.T. makes no representations about the
- * suitability of this software for any purpose. It is provided "as is"
- * without express or implied warranty.
- *
- * M.I.T. DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ALL
- * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL M.I.T.
- * BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION
- * OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR IN
- * CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- */
-
-#pragma once
-
-/*
- * X_NOT_STDC_ENV means does not have ANSI C header files. Lack of this
- * symbol does NOT mean that the system has stdarg.h.
- *
- * X_NOT_POSIX means does not have POSIX header files. Lack of this
- * symbol does NOT mean that the POSIX environment is the default.
- * You may still have to define _POSIX_SOURCE to get it.
- */
-
-#if defined(NOSTDHDRS)
-#define X_NOT_POSIX
-#define X_NOT_STDC_ENV
-#endif
-
-#if defined(NeXT)
-#define X_NOT_POSIX
-#endif
-
-#if defined(sony)
-#if !defined(SYSTYPE_SYSV)
-#define X_NOT_POSIX
-#endif
-#endif
-
-#if defined(UTEK)
-#define X_NOT_POSIX
-#define X_NOT_STDC_ENV
-#endif
-
-#if defined(CRAY)
-#define X_NOT_POSIX
-#endif
-
-#if defined(vax)
-#if !defined(ultrix) /* assume vanilla BSD */
-#define X_NOT_POSIX
-#define X_NOT_STDC_ENV
-#endif
-#endif
-
-#if defined(luna)
-#define X_NOT_POSIX
-#define X_NOT_STDC_ENV
-#endif
-
-#if defined(Mips)
-#define X_NOT_POSIX
-#define X_NOT_STDC_ENV
-#endif
-
-#if defined(USL)
-#if defined(SYSV) /* (release 3.2) */
-#define X_NOT_POSIX
-#define X_NOT_STDC_ENV
-#endif
-#endif
-
-#if defined(SYSV386)
-#if defined(SYSV)
-#define X_NOT_POSIX
-#define X_NOT_STDC_ENV
-#endif
-#endif
-
-#if defined(MOTOROLA)
-#if defined(SYSV)
-#define X_NOT_STDC_ENV
-#endif
-#endif
=====================================
utils/lndir/lndir.c deleted
=====================================
@@ -1,486 +0,0 @@
-/* $XConsortium: lndir.c /main/16 1996/09/28 16:16:40 rws $ */
-/* Create shadow link tree (after X11R4 script of the same name)
- Mark Reinhold (mbr at lcs.mit.edu)/3 January 1990 */
-
-/*
-Copyright (c) 1990, X Consortium
-
-Permission is hereby granted, free of charge, to any person obtaining a copy
-of this software and associated documentation files (the "Software"), to deal
-in the Software without restriction, including without limitation the rights
-to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-copies of the Software, and to permit persons to whom the Software is
-furnished to do so, subject to the following conditions:
-
-The above copyright notice and this permission notice shall be included in
-all copies or substantial portions of the Software.
-
-THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
-IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
-FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
-X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN
-AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
-CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
-
-Except as contained in this notice, the name of the X Consortium shall not be
-used in advertising or otherwise to promote the sale, use or other dealings
-in this Software without prior written authorization from the X Consortium.
-
-*/
-
-/* From the original /bin/sh script:
-
- Used to create a copy of the a directory tree that has links for all
- non-directories (except those named RCS, SCCS or CVS.adm). If you are
- building the distribution on more than one machine, you should use
- this technique.
-
- If your master sources are located in /usr/local/src/X and you would like
- your link tree to be in /usr/local/src/new-X, do the following:
-
- % mkdir /usr/local/src/new-X
- % cd /usr/local/src/new-X
- % lndir ../X
-*/
-
-#define NeedVarargsPrototypes 1
-
-#include "lndir-Xos.h"
-#include "fs.h"
-#include <stdlib.h>
-#include <stdio.h>
-#include <sys/stat.h>
-#include <sys/param.h>
-#include <errno.h>
-
-#if !defined(X_NOT_POSIX)
-#include <dirent.h>
-#else
-#if defined(SYSV)
-#include <dirent.h>
-#else
-#if defined(USG)
-#include <dirent.h>
-#else
-#include <sys/dir.h>
-#if !defined(dirent)
-#define dirent direct
-#endif
-#endif
-#endif
-#endif
-#if !defined(MAXPATHLEN)
-#define MAXPATHLEN 2048
-#endif
-
-#if defined(__CYGWIN32__)
-#include <sys/cygwin.h>
-#endif
-
-#if NeedVarargsPrototypes
-#include <stdarg.h>
-#endif
-
-#if defined(X_NOT_STDC_ENV)
-extern int errno;
-#endif
-int silent = 0; /* -silent */
-int copy = 0; /* -copy */
-int ignore_links = 0; /* -ignorelinks */
-
-char *rcurdir;
-char *curdir;
-
-int force=0;
-
-#if defined(WIN32)
-#define mymkdir(X, Y) mkdir(X)
-#else
-#define mymkdir(X, Y) mkdir(X, Y)
-#endif
-
-#if !defined(WIN32)
-#define SYMLINKS
-#define BELIEVE_ST_NLINK
-#endif
-
-void
-quit (
-#if NeedVarargsPrototypes
- int code, char * fmt, ...)
-#else
- code, fmt, a1, a2, a3)
- char *fmt;
-#endif
-{
-#if NeedVarargsPrototypes
- va_list args;
- va_start(args, fmt);
- vfprintf (stderr, fmt, args);
- va_end(args);
-#else
- fprintf (stderr, fmt, a1, a2, a3);
-#endif
- putc ('\n', stderr);
- exit (code);
-}
-
-void
-quiterr (code, s)
- char *s;
-{
- perror (s);
- exit (code);
-}
-
-void
-msg (
-#if NeedVarargsPrototypes
- char * fmt, ...)
-#else
- fmt, a1, a2, a3)
- char *fmt;
-#endif
-{
-#if NeedVarargsPrototypes
- va_list args;
-#endif
- if (curdir) {
- fprintf (stderr, "%s:\n", curdir);
- curdir = 0;
- }
-#if NeedVarargsPrototypes
- va_start(args, fmt);
- vfprintf (stderr, fmt, args);
- va_end(args);
-#else
- fprintf (stderr, fmt, a1, a2, a3);
-#endif
- putc ('\n', stderr);
-}
-
-void
-mperror (s)
- char *s;
-{
- if (curdir) {
- fprintf (stderr, "%s:\n", curdir);
- curdir = 0;
- }
- perror (s);
-}
-
-#define BUFSIZE 1024
-int copyfile(const char *oldpath, const char *newpath) {
- FILE *f_old;
- FILE *f_new;
- int e;
- ssize_t s;
- char buf[BUFSIZE];
-
-#if defined(SYMLINKS)
- if (copy == 0) {
- return symlink(oldpath, newpath);
- } else {
-#endif
- f_old = __hs_fopen(oldpath, "rb");
- if (f_old == NULL) {
- return -1;
- }
- f_new = __hs_fopen(newpath, "wbx");
- if (f_new == NULL) {
- e = errno;
- fclose(f_old);
- errno = e;
- return -1;
- }
- while ((s = fread(buf, 1, BUFSIZE, f_old)) > 0) {
- if (fwrite(buf, 1, s, f_new) < s) {
- e = errno;
- fclose(f_old);
- fclose(f_new);
- errno = e;
- return -1;
- }
- }
- if (!feof(f_old)) {
- e = errno;
- fclose(f_old);
- fclose(f_new);
- errno = e;
- return -1;
- }
- if (fclose(f_new) == EOF) {
- e = errno;
- fclose(f_old);
- errno = e;
- return -1;
- }
- fclose(f_old);
- return 0;
-#if defined(SYMLINKS)
- }
-#endif
-}
-
-int equivalent(lname, rname)
- char *lname;
- char *rname;
-{
- char *s;
-
- if (!strcmp(lname, rname))
- return 1;
- for (s = lname; *s && (s = strchr(s, '/')); s++) {
- while (s[1] == '/')
- strcpy(s+1, s+2);
- }
- return !strcmp(lname, rname);
-}
-
-
-/* Recursively create symbolic links from the current directory to the "from"
- directory. Assumes that files described by fs and ts are directories. */
-
-dodir (fn, fs, ts, rel)
-char *fn; /* name of "from" directory, either absolute or
- relative to cwd */
-struct stat *fs, *ts; /* stats for the "from" directory and cwd */
-int rel; /* if true, prepend "../" to fn before using */
-{
- DIR *df;
- struct dirent *dp;
- char buf[MAXPATHLEN + 1], *p;
- char symbuf[MAXPATHLEN + 1];
- char basesym[MAXPATHLEN + 1];
- struct stat sb, sc;
- int n_dirs;
- int symlen = -1;
- int basesymlen = -1;
- char *ocurdir;
-
- if ((fs->st_dev == ts->st_dev) &&
- (fs->st_ino == ts->st_ino) &&
- /* inode is always 0 on Windows; we don't want to fail in that case */
- (fs->st_ino != 0)
- ) {
- msg ("%s: From and to directories are identical!", fn);
- return 1;
- }
-
- if (rel)
- strcpy (buf, "../");
- else
- buf[0] = '\0';
- strcat (buf, fn);
-
- if (!(df = opendir (buf))) {
- msg ("%s: Cannot opendir", buf);
- return 1;
- }
-
- p = buf + strlen (buf);
- *p++ = '/';
- n_dirs = fs->st_nlink;
- while (dp = readdir (df)) {
- if (dp->d_name[strlen(dp->d_name) - 1] == '~')
- continue;
- if (dp->d_name[0] == '.' && dp->d_name[1] == '#') /* 'non-conflict files' left behind by CVS */
- continue;
- strcpy (p, dp->d_name);
-
- if (
-#if defined(BELIEVE_ST_NLINK)
- n_dirs > 0
-#else
- /* st_nlink is 1 on Windows, so we have to keep looking for
- * directories forever */
- 1
-#endif
- ) {
- if (stat (buf, &sb) < 0) {
- mperror (buf);
- continue;
- }
-
-#if defined(S_ISDIR)
- if(S_ISDIR(sb.st_mode))
-#else
- if (sb.st_mode & S_IFDIR)
-#endif
- {
- /* directory */
-#if !defined(__CYGWIN32__) /* don't trust cygwin's n_dirs count */
- n_dirs--;
-#endif
- if (dp->d_name[0] == '.' &&
- (dp->d_name[1] == '\0' || (dp->d_name[1] == '.' &&
- dp->d_name[2] == '\0')))
- continue;
- if (!strcmp (dp->d_name, "RCS"))
- continue;
- if (!strcmp (dp->d_name, "SCCS"))
- continue;
- if (!strcmp (dp->d_name, "CVS"))
- continue;
- if (!strcmp (dp->d_name, ".svn"))
- continue;
- if (!strcmp (dp->d_name, ".git"))
- continue;
- if (!strcmp (dp->d_name, "_darcs"))
- continue;
- if (!strcmp (dp->d_name, "CVS.adm"))
- continue;
- ocurdir = rcurdir;
- rcurdir = buf;
- curdir = silent ? buf : (char *)0;
- if (!silent)
- printf ("%s:\n", buf);
- if ((stat (dp->d_name, &sc) < 0) && (errno == ENOENT)) {
- if (mymkdir (dp->d_name, 0777) < 0 ||
- stat (dp->d_name, &sc) < 0) {
- mperror (dp->d_name);
- curdir = rcurdir = ocurdir;
- continue;
- }
- }
-#if defined(SYMLINKS)
- if (readlink (dp->d_name, symbuf, sizeof(symbuf) - 1) >= 0) {
- msg ("%s: is a link instead of a directory", dp->d_name);
- curdir = rcurdir = ocurdir;
- continue;
- }
-#endif
- if (chdir (dp->d_name) < 0) {
- mperror (dp->d_name);
- curdir = rcurdir = ocurdir;
- continue;
- }
- rel = (fn[0] != '/') && ((fn[0] == '\0') || (fn[1] != ':'));
- dodir (buf, &sb, &sc, rel);
- if (chdir ("..") < 0)
- quiterr (1, "..");
- curdir = rcurdir = ocurdir;
- continue;
- }
- }
-
- /* non-directory */
-#if defined(SYMLINKS)
- symlen = readlink (dp->d_name, symbuf, sizeof(symbuf) - 1);
- if (symlen >= 0)
- symbuf[symlen] = '\0';
-
- /* The option to ignore links exists mostly because
- checking for them slows us down by 10-20%.
- But it is off by default because this really is a useful check. */
- if (!ignore_links) {
- /* see if the file in the base tree was a symlink */
- basesymlen = readlink(buf, basesym, sizeof(basesym) - 1);
- if (basesymlen >= 0)
- basesym[basesymlen] = '\0';
- }
-#endif
-
- if (symlen >= 0) {
- if (!equivalent (basesymlen>=0 ? basesym : buf, symbuf)) {
- if (force) {
- unlink(dp->d_name);
- if (copyfile (basesymlen>=0 ? basesym : buf, dp->d_name) < 0)
- mperror (dp->d_name);
- } else {
- /* Link exists in new tree. Print message if it doesn't match. */
- msg ("%s: %s", dp->d_name, symbuf);
- }
- }
- } else {
- if (copyfile (basesymlen>=0 ? basesym : buf, dp->d_name) < 0)
- mperror (dp->d_name);
- }
- }
-
- closedir (df);
- return 0;
-}
-
-main (ac, av)
-int ac;
-char **av;
-{
- char *prog_name = av[0];
- char* tn;
- struct stat fs, ts;
-#if defined(__CYGWIN32__)
- /*
- The lndir code assumes unix-style paths to work. cygwin
- lets you get away with using dos'ish paths (e.g., "f:/oo")
- in most contexts. Using them with 'lndir' will seriously
- confuse the user though, so under-the-hood, we convert the
- path into something POSIX-like.
- */
- static char fn[MAXPATHLEN+1];
-#else
- char *fn;
-#endif
-
- while (++av, --ac) {
- if (strcmp(*av, "-silent") == 0)
- silent = 1;
- else if (strcmp(*av, "-f") == 0)
- force = 1;
- else if (strcmp(*av, "-ignorelinks") == 0)
- ignore_links = 1;
- else if (strcmp(*av, "-copy") == 0)
- copy = 1;
- else if (strcmp(*av, "--") == 0) {
- ++av, --ac;
- break;
- } else
- break;
- }
-
- if (ac < 1 || ac > 2)
- quit (1, "usage: %s [-f] [-silent] [-ignorelinks] fromdir [todir]",
- prog_name);
-
-#if defined(__CYGWIN32__)
- cygwin_conv_to_full_posix_path(av[0], fn);
-#else
- fn = av[0];
-#endif
-
- if (ac == 2)
- tn = av[1];
- else
- tn = ".";
-
- /* to directory */
- if (stat (tn, &ts) < 0) {
- if (force && (tn[0] != '.' || tn[1] != '\0') ) {
- mymkdir(tn, S_IRWXU | S_IRWXG | S_IROTH | S_IXOTH );
- }
- else {
- quiterr (1, tn);
-#if defined(S_ISDIR)
- if (!(S_ISDIR(ts.st_mode)))
-#else
- if (!(ts.st_mode & S_IFDIR))
-#endif
- quit (2, "%s: Not a directory", tn);
- }
- }
- if (chdir (tn) < 0)
- quiterr (1, tn);
-
- /* from directory */
- if (stat (fn, &fs) < 0)
- quiterr (1, fn);
-#if defined(S_ISDIR)
- if (!(S_ISDIR(fs.st_mode)))
-#else
- if (!(fs.st_mode & S_IFDIR))
-#endif
- quit (2, "%s: Not a directory", fn);
-
- exit (dodir (fn, &fs, &ts, 0));
-}
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/d3a050d2a1eac0244f989badb3a2c75c84e0a160
--
View it on GitLab: https://gitlab.haskell.org/ghc/ghc/-/commit/d3a050d2a1eac0244f989badb3a2c75c84e0a160
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/20240227/39469289/attachment-0001.html>
More information about the ghc-commits
mailing list