From fb40549781e0ebe8100f29d56a6bef7e3cbaa6a7 Mon Sep 17 00:00:00 2001 From: Andrea Bedini Date: Mon, 27 Oct 2025 13:12:07 +0800 Subject: [PATCH 1/4] fix handling of index-state --- Makefile | 7 ++++++- cabal.project.stage1 | 3 +++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 20837cbea965..815517d3b731 100644 --- a/Makefile +++ b/Makefile @@ -944,9 +944,14 @@ _build/bindist/haskell-toolchain.tar.gz: _build/bindist/cabal.tar.gz _build/bind $(GHC1) $(GHC2): | hackage hackage: _build/packages/hackage.haskell.org/01-index.tar.gz + +# Always run cabal update. This makes sure that the index file won't go stale, +# whatever index-state we set in the project file. Reproducibility is left to +# index-state. +.PHONY: _build/packages/hackage.haskell.org/01-index.tar.gz _build/packages/hackage.haskell.org/01-index.tar.gz: | $(CABAL) @mkdir -p $(@D) - $(CABAL) $(CABAL_ARGS) update --index-state @1745256340 + $(CABAL) $(CABAL_ARGS) update # booted depends on successful source preparation configure rts/configure libraries/ghc-internal/configure: configure.ac rts/configure.ac libraries/ghc-internal/configure.ac libraries/ghc-boot-th-next/.synth-stamp diff --git a/cabal.project.stage1 b/cabal.project.stage1 index db46d78bb9ac..7de236a3021d 100644 --- a/cabal.project.stage1 +++ b/cabal.project.stage1 @@ -1,3 +1,5 @@ +index-state: 2025-10-26T19:17:08Z + packages: -- NOTE: we need rts-headers, because the _newly_ built compiler depends -- on these potentially _new_ headers, we must not rely on those from @@ -36,6 +38,7 @@ packages: utils/ghc-toolchain utils/ghc-toolchain/exe + benchmarks: False tests: False allow-boot-library-installs: True From 60e206bf48b188b6248397f5905fdc61cc6a6ad5 Mon Sep 17 00:00:00 2001 From: Andrea Bedini Date: Tue, 28 Oct 2025 11:38:22 +0800 Subject: [PATCH 2/4] build: replace git submodules with Hackage dependencies MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Remove 25 library and utility submodules from .gitmodules and switch to using official Hackage releases instead. This simplifies the build system and reduces repository complexity. • Remove submodule entries for libraries (binary, bytestring, containers, etc.) and utilities (hsc2hs, hpc) that are now available as Hackage packages • Where necessary, include hackage packages as extra-packages in cabal.project files • Simplify Makefile by removing library-specific header copy functions and submodule-related build rules • Replace boot script with direct autoreconf invocations in Makefile for configure script generation • Update configure target handling to use individual .ac files rather than boot script coordination • Remove template-hsc.h staging since hsc2hs is now a Hackage package • Clean up synthesis logic for ghc-boot-th-next package generation • Delete now-obsolete submodule directories and boot orchestration code --- .gitmodules | 105 ------------------------ Makefile | 158 +++++++++++-------------------------- boot | 83 ------------------- cabal.project.stage1 | 11 +-- cabal.project.stage2 | 58 ++++++-------- libraries/Win32 | 1 - libraries/array | 1 - libraries/binary | 1 - libraries/bytestring | 1 - libraries/containers | 1 - libraries/deepseq | 1 - libraries/directory | 1 - libraries/exceptions | 1 - libraries/file-io | 1 - libraries/filepath | 1 - libraries/haskeline | 1 - libraries/hpc | 1 - libraries/mtl | 1 - libraries/os-string | 1 - libraries/parsec | 1 - libraries/pretty | 1 - libraries/process | 1 - libraries/semaphore-compat | 1 - libraries/stm | 1 - libraries/terminfo | 1 - libraries/text | 1 - libraries/time | 1 - libraries/transformers | 1 - libraries/unix | 1 - libraries/xhtml | 1 - utils/hpc | 1 - utils/hsc2hs | 1 - 32 files changed, 70 insertions(+), 372 deletions(-) delete mode 100755 boot delete mode 160000 libraries/Win32 delete mode 160000 libraries/array delete mode 160000 libraries/binary delete mode 160000 libraries/bytestring delete mode 160000 libraries/containers delete mode 160000 libraries/deepseq delete mode 160000 libraries/directory delete mode 160000 libraries/exceptions delete mode 160000 libraries/file-io delete mode 160000 libraries/filepath delete mode 160000 libraries/haskeline delete mode 160000 libraries/hpc delete mode 160000 libraries/mtl delete mode 160000 libraries/os-string delete mode 160000 libraries/parsec delete mode 160000 libraries/pretty delete mode 160000 libraries/process delete mode 160000 libraries/semaphore-compat delete mode 160000 libraries/stm delete mode 160000 libraries/terminfo delete mode 160000 libraries/text delete mode 160000 libraries/time delete mode 160000 libraries/transformers delete mode 160000 libraries/unix delete mode 160000 libraries/xhtml delete mode 160000 utils/hpc delete mode 160000 utils/hsc2hs diff --git a/.gitmodules b/.gitmodules index 7ddc44fb2995..9c3eea5b95a1 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,117 +1,12 @@ -[submodule "libraries/binary"] - path = libraries/binary - url = https://gitlab.haskell.org/ghc/packages/binary.git - ignore = untracked -[submodule "libraries/bytestring"] - path = libraries/bytestring - url = https://gitlab.haskell.org/ghc/packages/bytestring.git - ignore = untracked [submodule "libraries/Cabal"] path = libraries/Cabal url = https://github.com/stable-haskell/Cabal.git ignore = untracked branch = stable-haskell/feature/cross-compile -[submodule "libraries/containers"] - path = libraries/containers - url = https://gitlab.haskell.org/ghc/packages/containers.git - ignore = untracked -[submodule "libraries/haskeline"] - path = libraries/haskeline - url = https://gitlab.haskell.org/ghc/packages/haskeline.git - ignore = untracked -[submodule "libraries/pretty"] - path = libraries/pretty - url = https://gitlab.haskell.org/ghc/packages/pretty.git - ignore = untracked -[submodule "libraries/terminfo"] - path = libraries/terminfo - url = https://gitlab.haskell.org/ghc/packages/terminfo.git - ignore = untracked -[submodule "libraries/transformers"] - path = libraries/transformers - url = https://gitlab.haskell.org/ghc/packages/transformers.git - ignore = untracked -[submodule "libraries/xhtml"] - path = libraries/xhtml - url = https://gitlab.haskell.org/ghc/packages/xhtml.git - ignore = untracked -[submodule "libraries/Win32"] - path = libraries/Win32 - url = https://gitlab.haskell.org/ghc/packages/Win32.git - ignore = untracked -[submodule "libraries/time"] - path = libraries/time - url = https://gitlab.haskell.org/ghc/packages/time.git - ignore = untracked -[submodule "libraries/array"] - path = libraries/array - url = https://gitlab.haskell.org/ghc/packages/array.git - ignore = untracked -[submodule "libraries/deepseq"] - path = libraries/deepseq - url = https://gitlab.haskell.org/ghc/packages/deepseq.git - ignore = untracked -[submodule "libraries/directory"] - path = libraries/directory - url = https://gitlab.haskell.org/ghc/packages/directory.git - ignore = untracked -[submodule "libraries/filepath"] - path = libraries/filepath - url = https://gitlab.haskell.org/ghc/packages/filepath.git - ignore = untracked -[submodule "libraries/hpc"] - path = libraries/hpc - url = https://gitlab.haskell.org/ghc/packages/hpc.git - ignore = untracked -[submodule "libraries/parsec"] - path = libraries/parsec - url = https://gitlab.haskell.org/ghc/packages/parsec.git - ignore = untracked -[submodule "libraries/text"] - path = libraries/text - url = https://gitlab.haskell.org/ghc/packages/text.git - ignore = untracked -[submodule "libraries/mtl"] - path = libraries/mtl - url = https://gitlab.haskell.org/ghc/packages/mtl.git - ignore = untracked -[submodule "libraries/process"] - path = libraries/process - url = https://gitlab.haskell.org/ghc/packages/process.git - ignore = untracked -[submodule "libraries/unix"] - path = libraries/unix - url = https://gitlab.haskell.org/ghc/packages/unix.git - ignore = untracked - branch = 2.7 -[submodule "libraries/semaphore-compat"] - path = libraries/semaphore-compat - url = https://gitlab.haskell.org/ghc/semaphore-compat.git - ignore = untracked -[submodule "libraries/stm"] - path = libraries/stm - url = https://gitlab.haskell.org/ghc/packages/stm.git - ignore = untracked [submodule "nofib"] path = nofib url = https://gitlab.haskell.org/ghc/nofib.git ignore = untracked -[submodule "utils/hsc2hs"] - path = utils/hsc2hs - url = https://gitlab.haskell.org/ghc/hsc2hs.git - ignore = untracked [submodule "gmp-tarballs"] path = libraries/ghc-internal/gmp/gmp-tarballs url = https://gitlab.haskell.org/ghc/gmp-tarballs.git -[submodule "libraries/exceptions"] - path = libraries/exceptions - url = https://gitlab.haskell.org/ghc/packages/exceptions.git -[submodule "utils/hpc"] - path = utils/hpc - url = https://gitlab.haskell.org/hpc/hpc-bin.git -[submodule "libraries/os-string"] - path = libraries/os-string - url = https://gitlab.haskell.org/ghc/packages/os-string -[submodule "libraries/file-io"] - path = libraries/file-io - url = https://gitlab.haskell.org/ghc/packages/file-io.git diff --git a/Makefile b/Makefile index 815517d3b731..eeccfd683073 100644 --- a/Makefile +++ b/Makefile @@ -185,12 +185,18 @@ CPUS_DETECT_SCRIPT := ./mk/detect-cpu-count.sh CPUS := $(shell if [ -x $(CPUS_DETECT_SCRIPT) ]; then $(CPUS_DETECT_SCRIPT); else echo 2; fi) THREADS ?= $(shell echo $$(( $(CPUS) + 1 ))) +CONFIGURE_SCRIPTS = \ + configure \ + rts/configure \ + libraries/ghc-internal/configure + # Files that will be generated by config.status from their .in counterparts # FIXME: This is stupid. Why do we patch versions across multiple libraries? Idiotic. # also, why on earth do we use a non standard SnakeCase convention for substitutions # when CAPITAL_CASE is the standard? CONFIGURED_FILES := \ ghc/ghc-bin.cabal \ + compiler/GHC/CmmToLlvm/Version/Bounds.hs \ compiler/ghc.cabal \ libraries/ghc-boot/ghc-boot.cabal \ libraries/ghc-boot-th/ghc-boot-th.cabal \ @@ -208,12 +214,13 @@ CONFIGURED_FILES := \ # --- Main Targets --- all: _build/bindist # booted will depend on prepare-sources +# Note: for some reason hsc2hs:exe:hsc2hs or hsc2:hsc2hs do not work STAGE_UTIL_TARGETS := \ deriveConstants:deriveConstants \ genapply:genapply \ genprimopcode:genprimopcode \ ghc-pkg:ghc-pkg \ - hsc2hs:hsc2hs \ + hsc2hs \ rts-headers:rts-headers \ unlit:unlit @@ -250,8 +257,8 @@ STAGE2_UTIL_TARGETS := \ ghc-toolchain:ghc-toolchain \ integer-gmp:integer-gmp \ system-cxx-std-lib:system-cxx-std-lib \ - terminfo:terminfo \ - xhtml:xhtml + terminfo \ + xhtml # These things should be built on demand. # hp2ps:hp2ps \ @@ -460,32 +467,6 @@ define copy_rts_js_h $(call copy_headers,$(RTS_JS_H),rts/include/,rts,$1) endef -HASKELINE_H := \ - win_console.h - -define copy_haskeline_h - $(call copy_headers,$(HASKELINE_H),libraries/haskeline/includes,haskeline,$1) -endef - -WIN32_H := \ - HsWin32.h \ - HsGDI.h \ - WndProc.h \ - windows_cconv.h \ - alphablend.h \ - wincon_compat.h \ - winternl_compat.h \ - winuser_compat.h \ - winreg_compat.h \ - tlhelp32_compat.h \ - winnls_compat.h \ - winnt_compat.h \ - namedpipeapi_compat.h - -define copy_win32_h - $(call copy_headers,$(WIN32_H),libraries/Win32/include/,Win32,$1) -endef - GHC_INTERNAL_H := \ HsBase.h \ consUtils.h @@ -494,52 +475,16 @@ define copy_ghc_internal_h $(call copy_headers,$(GHC_INTERNAL_H),libraries/ghc-internal/include/,ghc-internal,$1) endef -PROCESS_H := \ - runProcess.h \ - processFlags.h - -define copy_process_h - $(call copy_headers,$(PROCESS_H),libraries/process/include/,process,$1) -endef - -BYTESTRING_H := \ - fpstring.h \ - bytestring-cpp-macros.h - -define copy_bytestring_h - $(call copy_headers,$(BYTESTRING_H),libraries/bytestring/include/,bytestring,$1) -endef - -TIME_H := \ - HsTime.h - -define copy_time_h - $(call copy_headers,$(TIME_H),libraries/time/lib/include/,time,$1) -endef - -UNIX_H := \ - HsUnix.h \ - execvpe.h - -define copy_unix_h - $(call copy_headers,$(UNIX_H),libraries/unix/include/,unix,$1) -endef - define copy_all_stage3_h $(call copy_rts_headers_h,$1) $(call copy_rts_fs_h,$1) $(call copy_rts_h,$1) if [ "$2" = "javascript-unknown-ghcjs" ] ; then $(call copy_rts_js_h,$1) ; fi $(call copy_ghc_internal_h,$1) - $(call copy_process_h,$1) - $(call copy_bytestring_h,$1) - $(call copy_time_h,$1) - if [ "$(OS)" = "Windows_NT" ] ; then $(call copy_win32_h,$1) ; else $(call copy_unix_h,$1) ; fi endef define copy_all_stage2_h $(call copy_all_stage3_h,$1,none) - $(call copy_haskeline_h,$1) endef @@ -568,7 +513,7 @@ _build/stage1/%: private GHC=$(GHC0) .PHONY: $(addprefix _build/stage1/bin/,$(STAGE1_EXECUTABLES)) $(addprefix _build/stage1/bin/,$(STAGE1_EXECUTABLES)) &: private TARGET_PLATFORM= -$(addprefix _build/stage1/bin/,$(STAGE1_EXECUTABLES)) &: $(CABAL) configure rts/configure libraries/ghc-internal/configure +$(addprefix _build/stage1/bin/,$(STAGE1_EXECUTABLES)) &: $(CABAL) $(CONFIGURE_SCRIPTS) $(CONFIGURED_FILES) libraries/ghc-boot-th-next/ghc-boot-th-next.cabal @echo "::group::Building stage1 executables ($(STAGE1_EXECUTABLES))..." # Force cabal to replan rm -rf _build/stage1/cache @@ -598,12 +543,8 @@ _build/stage1/lib/package.conf.d/package.cache: _build/stage1/bin/ghc-pkg _build # _build/stage1/bin/ghc-pkg init $(abspath ./_build/stage2/packagedb/host/ghc-9.14) @echo "::endgroup::" -_build/stage1/lib/template-hsc.h: utils/hsc2hs/data/template-hsc.h - @mkdir -p $(@D) - cp -rfp $< $@ - .PHONY: stage1 -stage1: $(addprefix _build/stage1/bin/,$(STAGE1_EXECUTABLES)) _build/stage1/lib/settings _build/stage1/lib/package.conf.d/package.cache _build/stage1/lib/template-hsc.h +stage1: $(addprefix _build/stage1/bin/,$(STAGE1_EXECUTABLES)) _build/stage1/lib/settings _build/stage1/lib/package.conf.d/package.cache # --- Stage 2 build --- @@ -626,7 +567,7 @@ $(addprefix _build/stage2/bin/,$(STAGE2_EXECUTABLES)) &: $(CABAL) stage1 # build them with the stage2 ghc; seems like a better/cleaner idea to me (moritz). .PHONY: $(addprefix _build/stage2/bin/,$(STAGE2_UTIL_EXECUTABLES)) $(addprefix _build/stage2/bin/,$(STAGE2_UTIL_EXECUTABLES)) &: private TARGET_PLATFORM= -$(addprefix _build/stage2/bin/,$(STAGE2_UTIL_EXECUTABLES)) &: $(CABAL) stage1 +$(addprefix _build/stage2/bin/,$(STAGE2_UTIL_EXECUTABLES)) &: $(CABAL) stage1 cabal.project.stage2.settings @echo "::group::Building stage2 utilities ($(STAGE2_UTIL_EXECUTABLES))..." # Force cabal to replan rm -rf _build/stage2/cache @@ -647,12 +588,8 @@ _build/stage2/lib/package.conf.d/package.cache: _build/stage2/bin/ghc-pkg _build _build/stage2/bin/ghc-pkg recache @echo "::endgroup::" -_build/stage2/lib/template-hsc.h: utils/hsc2hs/data/template-hsc.h - @mkdir -p $(@D) - cp -rfp $< $@ - .PHONY: stage2 -stage2: $(addprefix _build/stage2/bin/,$(STAGE2_EXECUTABLES)) _build/stage2/lib/settings _build/stage2/lib/package.conf.d/package.cache _build/stage2/lib/template-hsc.h +stage2: $(addprefix _build/stage2/bin/,$(STAGE2_EXECUTABLES)) _build/stage2/lib/settings _build/stage2/lib/package.conf.d/package.cache # --- Stage 3 generic --- @@ -860,7 +797,7 @@ _build/bindist: stage2 driver/ghc-usage.txt driver/ghci-usage.txt # Copy executables from stage2 bin @cp -rfp _build/stage2/bin/* $@/bin/ # Copy libraries and settings from stage2 lib - @cp -rfp _build/stage2/lib/{package.conf.d,settings,template-hsc.h} $@/lib/ + @cp -rfp _build/stage2/lib/{package.conf.d,settings} $@/lib/ @mkdir -p $@/lib/$(HOST_PLATFORM) @cd $@/lib/package.conf.d ; \ for pkg in *.conf ; do \ @@ -889,7 +826,6 @@ _build/bindist/ghc.tar.gz: _build/bindist lib/ghci-usage.txt \ lib/package.conf.d \ lib/settings \ - lib/template-hsc.h \ lib/$(HOST_PLATFORM) _build/bindist/lib/targets/%: _build/bindist driver/ghc-usage.txt driver/ghci-usage.txt stage3-% @@ -934,13 +870,12 @@ _build/bindist/haskell-toolchain.tar.gz: _build/bindist/cabal.tar.gz _build/bind lib/ghci-usage.txt \ lib/package.conf.d \ lib/settings \ - lib/template-hsc.h \ lib/$(HOST_PLATFORM) \ $(foreach exe,$(BINDIST_EXECTUABLES),bin/javascript-unknown-ghcjs-$(exe)) \ lib/targets/javascript-unknown-ghcjs \ bin/cabal -# --- Configuration --- +# --- Hackage --- $(GHC1) $(GHC2): | hackage hackage: _build/packages/hackage.haskell.org/01-index.tar.gz @@ -953,23 +888,41 @@ _build/packages/hackage.haskell.org/01-index.tar.gz: | $(CABAL) @mkdir -p $(@D) $(CABAL) $(CABAL_ARGS) update -# booted depends on successful source preparation -configure rts/configure libraries/ghc-internal/configure: configure.ac rts/configure.ac libraries/ghc-internal/configure.ac libraries/ghc-boot-th-next/.synth-stamp - @echo "::group::Running ./boot script..." - @mkdir -p _build/logs - ./boot - @echo ">>> Running ./configure script..." - ./configure $(GHC_CONFIGURE_ARGS) - touch $@ +# --- Configure and source preparation --- + +$(CONFIGURE_SCRIPTS) : % : %.ac + @echo ">>> Running autoreconf $(@D)" + autoreconf $(@D) + @echo "::endgroup::" + +# Top level configure script. +# +# NOTE: other configure scripts are run by Cabal +# +# We use --no-create to avoid regenerating files if not needed. +# Each configured file is tracked independently below. +config.status: configure + @echo ">>> Running $(@D)/configure" + $(@D)/configure --no-create $(GHC_CONFIGURE_ARGS) @echo "::endgroup::" +# Configured files are obtained from their .in counterparts via config.status +$(CONFIGURED_FILES) : % : ./config.status %.in + ./config.status $@ + +# Create ghc-boot-th-next from ghc-boot-th +libraries/ghc-boot-th-next/ghc-boot-th-next.cabal: libraries/ghc-boot-th/ghc-boot-th.cabal + @echo "::group::Synthesizing ghc-boot-th-next (copy & sed from ghc-boot-th)..." + @mkdir -p libraries/ghc-boot-th-next + sed -e 's/^name:[[:space:]]*ghc-boot-th$$/name: ghc-boot-th-next/' $< > $@ + @echo "::endgroup::" + + # --- Clean Targets --- clean: @echo "::group::Cleaning build artifacts..." rm -rf _build - rm -f libraries/ghc-boot-th-next/ghc-boot-th-next.cabal - rm -f libraries/ghc-boot-th-next/ghc-boot-th-next.cabal.in - rm -f libraries/ghc-boot-th-next/.synth-stamp + rm -rf libraries/ghc-boot-th-next @echo "::endgroup::" clean-stage1: @@ -994,27 +947,10 @@ distclean: clean rm -f config.status config.log config.h configure aclocal.m4 rm -rf build-aux/config.guess build-aux/config.sub build-aux/install-sh build-aux/missing build-aux/compile depcomp find . -name 'Makefile.in' -delete - rm -f $(CONFIGURED_FILES) - rm -rf libraries/ghc-boot-th-next/ghc-boot-th-next.cabal - rm -f libraries/ghc-boot-th-next/ghc-boot-th-next.cabal.in - rm -f libraries/ghc-boot-th-next/.synth-stamp + rm -f $(CONFIGURE_SCRIPTS) $(CONFIGURED_FILES) + rm -rf libraries/ghc-boot-th-next @echo "::endgroup::" -# --- Synthesis Targets --- -# This is such a hack 😱 -libraries/ghc-boot-th-next/.synth-stamp: - @echo "::group::Synthesizing ghc-boot-th-next (copy & sed from ghc-boot-th)..." - @mkdir -p libraries/ghc-boot-th-next - @src=libraries/ghc-boot-th/ghc-boot-th.cabal.in; \ - dst=libraries/ghc-boot-th-next/ghc-boot-th-next.cabal.in; \ - if [ ! -f $$src ]; then echo "Source $$src not found" >&2; exit 1; fi; \ - cp -f $$src $$dst.tmp; \ - sed -e 's/^name:[[:space:]]*ghc-boot-th$$/name: ghc-boot-th-next/' \ - -e 's/ ghc-boot-th/ ghc-boot-th-next/g' \ - $$dst.tmp > $$dst; \ - rm -f $$dst.tmp; \ - touch $@ - @echo "::endgroup::" # Default: skip performance tests (can override with SKIP_PERF_TESTS=NO) SKIP_PERF_TESTS ?= YES diff --git a/boot b/boot deleted file mode 100755 index c73ed3a430b0..000000000000 --- a/boot +++ /dev/null @@ -1,83 +0,0 @@ -#!/usr/bin/env python3 - -import glob -import os -import os.path -import sys -from textwrap import dedent -import subprocess -import re -import shutil - -# Packages whose libraries aren't in the submodule root -EXCEPTIONS = { - 'libraries/containers/': 'libraries/containers/containers/' -} - -def print_err(s): - print(dedent(s), file=sys.stderr) - -def die(mesg): - print_err(mesg) - sys.exit(1) - -def check_boot_packages(): - # Check that we have all boot packages. - for l in open('packages', 'r'): - if l.startswith('#'): - continue - - parts = [part for part in l.split(' ') if part] - if len(parts) != 4: - die("Error: Bad line in packages file: " + l) - - dir_ = parts[0] - tag = parts[1] - - # If tag is not "-" then it is an optional repository, so its - # absence isn't an error. - if tag == '-': - # We would like to just check for a .git directory here, - # but in an lndir tree we avoid making .git directories, - # so it doesn't exist. We therefore require that every repo - # has a LICENSE file instead. - license_path = os.path.join(EXCEPTIONS.get(dir_+'/', dir_), 'LICENSE') - if not os.path.isfile(license_path): - die("""\ - Error: %s doesn't exist - Maybe you haven't run 'git submodule update --init'? - """ % license_path) - -def autoreconf(): - # Run autoreconf on everything that needs it. - processes = {} - if os.name == 'nt': - # Get the normalized ACLOCAL_PATH for Windows - # This is necessary since on Windows this will be a Windows - # path, which autoreconf doesn't know doesn't know how to handle. - ac_local = os.getenv('ACLOCAL_PATH', '') - ac_local_arg = re.sub(r';', r':', ac_local) - ac_local_arg = re.sub(r'\\', r'/', ac_local_arg) - ac_local_arg = re.sub(r'(\w):/', r'/\1/', ac_local_arg) - reconf_cmd = 'ACLOCAL_PATH=%s autoreconf' % ac_local_arg - else: - reconf_cmd = 'autoreconf' - - for dir_ in ['.', 'rts'] + glob.glob('libraries/*/'): - if os.path.isfile(os.path.join(dir_, 'configure.ac')): - print("Booting %s" % dir_) - processes[dir_] = subprocess.Popen(['sh', '-c', reconf_cmd], cwd=dir_) - - # Wait for all child processes to finish. - fail = False - for k,v in processes.items(): - code = v.wait() - if code != 0: - print_err('autoreconf in %s failed with exit code %d' % (k, code)) - fail = True - - if fail: - sys.exit(1) - -check_boot_packages() -autoreconf() diff --git a/cabal.project.stage1 b/cabal.project.stage1 index 7de236a3021d..89da78ced583 100644 --- a/cabal.project.stage1 +++ b/cabal.project.stage1 @@ -13,24 +13,14 @@ packages: -- other packages. ghc compiler - libraries/directory - libraries/file-io - libraries/filepath libraries/ghc-platform libraries/ghc-boot libraries/ghc-boot-th-next libraries/ghc-heap libraries/ghci - libraries/os-string - libraries/process - libraries/semaphore-compat --- libraries/time - libraries/unix - libraries/Win32 libraries/Cabal/Cabal-syntax libraries/Cabal/Cabal utils/ghc-pkg - utils/hsc2hs utils/unlit utils/genprimopcode utils/genapply @@ -38,6 +28,7 @@ packages: utils/ghc-toolchain utils/ghc-toolchain/exe +extra-packages: hsc2hs benchmarks: False tests: False diff --git a/cabal.project.stage2 b/cabal.project.stage2 index 54a7276572d2..9a2a50960221 100644 --- a/cabal.project.stage2 +++ b/cabal.project.stage2 @@ -23,59 +23,45 @@ packages: libraries/ghc-boot-th libraries/ghc-heap libraries/ghci - libraries/stm libraries/template-haskell - libraries/hpc libraries/system-cxx-std-lib - libraries/array - libraries/binary - libraries/bytestring - libraries/containers/containers - libraries/deepseq - libraries/directory - libraries/exceptions - libraries/file-io - libraries/filepath - libraries/mtl - libraries/os-string - libraries/parsec - libraries/pretty - libraries/process - libraries/semaphore-compat - libraries/text - libraries/time - libraries/transformers - libraries/unix - libraries/xhtml - libraries/Win32 libraries/Cabal/Cabal-syntax libraries/Cabal/Cabal - https://hackage.haskell.org/package/alex-3.5.2.0/alex-3.5.2.0.tar.gz - https://hackage.haskell.org/package/happy-2.1.5/happy-2.1.5.tar.gz - https://hackage.haskell.org/package/happy-lib-2.1.5/happy-lib-2.1.5.tar.gz utils/genprimopcode utils/deriveConstants utils/ghc-pkg - utils/hsc2hs utils/unlit utils/ghc-toolchain - - libraries/haskeline - libraries/terminfo - utils/hp2ps - utils/hpc + utils/ghc-iserv utils/genapply + utils/hp2ps utils/runghc -- project-rts -- project-ghc + +extra-packages: + hpc, + hsc2hs, + terminfo, + xhtml + +-- hpc-bin is not published on Hackage +source-repository-package + type: git + location: https://gitlab.haskell.org/hpc/hpc-bin.git + -- 14 Jun 2025 + tag: dd43f7e139d7a4f4908d1e8af35a75939f763ef1 + benchmarks: False tests: False allow-boot-library-installs: True -active-repositories: :none + +-- It is fair to assume packages have a conservative bound on base +allow-newer: *:base constraints: -- we do not want to use the rts-headers from stage1 @@ -83,6 +69,8 @@ constraints: -- All build dependencies should be installed, i.e. from stage1. -- I cannot write build:* but ghc-internal is enough to do the job. , build:any.ghc-internal installed + -- Not sure why the solver is not picking the last version + , hpc == 0.7.0.2 package * library-vanilla: True @@ -126,8 +114,7 @@ if os(darwin) ghc-options: "-optc-DTablesNextToCode=\"FIXME\"" ghc-options: "-optc-DFS_NAMESPACE=rts" flags: +tables-next-to-code +leading-underscore - ld-options: -undefined warning - + ld-options: -undefined warning program-options ghc-options: -fhide-source-paths -j @@ -136,7 +123,6 @@ program-options benchmarks: False tests: False allow-boot-library-installs: True -active-repositories: :none -- (removed duplicate global package * stanza; first one applies already) diff --git a/libraries/Win32 b/libraries/Win32 deleted file mode 160000 index 7d0772bb265a..000000000000 --- a/libraries/Win32 +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 7d0772bb265a6c59eb14c441cf65c778895528df diff --git a/libraries/array b/libraries/array deleted file mode 160000 index 6d59d5deb4f2..000000000000 --- a/libraries/array +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 6d59d5deb4f2a12656ab4c4371c0d12dac4875ef diff --git a/libraries/binary b/libraries/binary deleted file mode 160000 index a625eee2eb9d..000000000000 --- a/libraries/binary +++ /dev/null @@ -1 +0,0 @@ -Subproject commit a625eee2eb9dfb4019c051b59d6007c9dded88aa diff --git a/libraries/bytestring b/libraries/bytestring deleted file mode 160000 index d984ad00644c..000000000000 --- a/libraries/bytestring +++ /dev/null @@ -1 +0,0 @@ -Subproject commit d984ad00644c0157bad04900434b9d36f23633c5 diff --git a/libraries/containers b/libraries/containers deleted file mode 160000 index 801b06e5d439..000000000000 --- a/libraries/containers +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 801b06e5d4392b028e519d5ca116a2881d559721 diff --git a/libraries/deepseq b/libraries/deepseq deleted file mode 160000 index ae2762ac241a..000000000000 --- a/libraries/deepseq +++ /dev/null @@ -1 +0,0 @@ -Subproject commit ae2762ac241a61852c9ff4c287af234fb1ad931f diff --git a/libraries/directory b/libraries/directory deleted file mode 160000 index 6442a3cf04f7..000000000000 --- a/libraries/directory +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 6442a3cf04f74d82cdf8c9213324313d52b23d28 diff --git a/libraries/exceptions b/libraries/exceptions deleted file mode 160000 index b6c4290124eb..000000000000 --- a/libraries/exceptions +++ /dev/null @@ -1 +0,0 @@ -Subproject commit b6c4290124eb1138358bf04ad9f33e67f6c5c1d8 diff --git a/libraries/file-io b/libraries/file-io deleted file mode 160000 index 21303160b5dd..000000000000 --- a/libraries/file-io +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 21303160b5dd91d6197bd1d20a8796ba2a819d4e diff --git a/libraries/filepath b/libraries/filepath deleted file mode 160000 index cbcd0ccf92f4..000000000000 --- a/libraries/filepath +++ /dev/null @@ -1 +0,0 @@ -Subproject commit cbcd0ccf92f47e6c10fb9cc513a7b26facfc19fe diff --git a/libraries/haskeline b/libraries/haskeline deleted file mode 160000 index 991953cd5d3b..000000000000 --- a/libraries/haskeline +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 991953cd5d3bb9e8057de4a0d8f2cae3455865d8 diff --git a/libraries/hpc b/libraries/hpc deleted file mode 160000 index 12675279dc5c..000000000000 --- a/libraries/hpc +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 12675279dc5cbea4ade8b5157b080390d598f03f diff --git a/libraries/mtl b/libraries/mtl deleted file mode 160000 index 37cbd924cb71..000000000000 --- a/libraries/mtl +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 37cbd924cb71eba591a2e2b6b131767f632d22c9 diff --git a/libraries/os-string b/libraries/os-string deleted file mode 160000 index 2e693aad0754..000000000000 --- a/libraries/os-string +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 2e693aad07540173a0169971b27c9acac28eeff1 diff --git a/libraries/parsec b/libraries/parsec deleted file mode 160000 index 552730e23e1f..000000000000 --- a/libraries/parsec +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 552730e23e1fd2dae46a60d75138b8d173492462 diff --git a/libraries/pretty b/libraries/pretty deleted file mode 160000 index c3a1469306b3..000000000000 --- a/libraries/pretty +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c3a1469306b35fa5d023dc570554f97f1a90435d diff --git a/libraries/process b/libraries/process deleted file mode 160000 index ae50731b5fb2..000000000000 --- a/libraries/process +++ /dev/null @@ -1 +0,0 @@ -Subproject commit ae50731b5fb221a7631f7e9d818fc6716c85c51e diff --git a/libraries/semaphore-compat b/libraries/semaphore-compat deleted file mode 160000 index ba87d1bb0209..000000000000 --- a/libraries/semaphore-compat +++ /dev/null @@ -1 +0,0 @@ -Subproject commit ba87d1bb0209bd9f29bda1c878ddf345f8a2b199 diff --git a/libraries/stm b/libraries/stm deleted file mode 160000 index 23bdcc231996..000000000000 --- a/libraries/stm +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 23bdcc2319965911af28542e76fc01f37c107d40 diff --git a/libraries/terminfo b/libraries/terminfo deleted file mode 160000 index 16db154e3e97..000000000000 --- a/libraries/terminfo +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 16db154e3e97e6bff62329574163851a7090f3b6 diff --git a/libraries/text b/libraries/text deleted file mode 160000 index 5f343f668f42..000000000000 --- a/libraries/text +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 5f343f668f421bfb30cead594e52d0ac6206ff67 diff --git a/libraries/time b/libraries/time deleted file mode 160000 index 507f50844802..000000000000 --- a/libraries/time +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 507f50844802f1469ba6cadfeefd4e3fecee0416 diff --git a/libraries/transformers b/libraries/transformers deleted file mode 160000 index cee47cca7705..000000000000 --- a/libraries/transformers +++ /dev/null @@ -1 +0,0 @@ -Subproject commit cee47cca7705edafe0a5839439e679edbd61890a diff --git a/libraries/unix b/libraries/unix deleted file mode 160000 index c9b3e95b5c15..000000000000 --- a/libraries/unix +++ /dev/null @@ -1 +0,0 @@ -Subproject commit c9b3e95b5c15b118e55522bd92963038c6a88160 diff --git a/libraries/xhtml b/libraries/xhtml deleted file mode 160000 index 68353ccd1a2e..000000000000 --- a/libraries/xhtml +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 68353ccd1a2e776d6c2b11619265d8140bb7dc07 diff --git a/utils/hpc b/utils/hpc deleted file mode 160000 index 5923da3fe779..000000000000 --- a/utils/hpc +++ /dev/null @@ -1 +0,0 @@ -Subproject commit 5923da3fe77993b7afc15b5163cffcaa7da6ecf5 diff --git a/utils/hsc2hs b/utils/hsc2hs deleted file mode 160000 index fe3990b9f350..000000000000 --- a/utils/hsc2hs +++ /dev/null @@ -1 +0,0 @@ -Subproject commit fe3990b9f35000427b016a79330d9f195587cad8 From d84f74c83e03685904dea9978e86ac440f55659a Mon Sep 17 00:00:00 2001 From: Andrea Bedini Date: Wed, 29 Oct 2025 13:46:24 +0800 Subject: [PATCH 3/4] style: normalize Makefile and configure.ac formatting MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit • Replace inconsistent space indentation with tabs in Makefile lists for consistent style • Reorder file entries in Makefile alphabetically within sections for improved maintainability • Alphabetize AC_CONFIG_FILES entries in configure.ac for clarity and consistency • Remove redundant .in file references in configure.ac (autoconf handles these automatically) • Remove trailing comment about config.status usage that duplicates documentation • Add section comment header for Test Suite in Makefile --- Makefile | 211 ++++++++++++++++++++++++++------------------------- configure.ac | 36 ++++----- 2 files changed, 122 insertions(+), 125 deletions(-) diff --git a/Makefile b/Makefile index eeccfd683073..f32f6eb156a4 100644 --- a/Makefile +++ b/Makefile @@ -195,21 +195,21 @@ CONFIGURE_SCRIPTS = \ # also, why on earth do we use a non standard SnakeCase convention for substitutions # when CAPITAL_CASE is the standard? CONFIGURED_FILES := \ - ghc/ghc-bin.cabal \ compiler/GHC/CmmToLlvm/Version/Bounds.hs \ compiler/ghc.cabal \ - libraries/ghc-boot/ghc-boot.cabal \ + ghc/ghc-bin.cabal \ + libraries/base/base.cabal \ libraries/ghc-boot-th/ghc-boot-th.cabal \ + libraries/ghc-boot/ghc-boot.cabal \ + libraries/ghc-experimental/ghc-experimental.cabal \ libraries/ghc-heap/ghc-heap.cabal \ - libraries/template-haskell/template-haskell.cabal \ + libraries/ghc-internal/ghc-internal.cabal \ libraries/ghci/ghci.cabal \ - utils/ghc-pkg/ghc-pkg.cabal \ + libraries/template-haskell/template-haskell.cabal \ + rts/include/ghcversion.h \ utils/ghc-iserv/ghc-iserv.cabal \ - utils/runghc/runghc.cabal \ - libraries/ghc-internal/ghc-internal.cabal \ - libraries/ghc-experimental/ghc-experimental.cabal \ - libraries/base/base.cabal \ - rts/include/ghcversion.h + utils/ghc-pkg/ghc-pkg.cabal \ + utils/runghc/runghc.cabal # --- Main Targets --- all: _build/bindist # booted will depend on prepare-sources @@ -348,128 +348,128 @@ define copy_headers endef RTS_HEADERS_H := \ - rts/Bytecodes.h \ - rts/storage/ClosureTypes.h \ - rts/storage/FunTypes.h \ - stg/MachRegs.h \ - stg/MachRegs/arm32.h \ - stg/MachRegs/arm64.h \ - stg/MachRegs/loongarch64.h \ - stg/MachRegs/ppc.h \ - stg/MachRegs/riscv64.h \ - stg/MachRegs/s390x.h \ - stg/MachRegs/wasm32.h \ - stg/MachRegs/x86.h + rts/Bytecodes.h \ + rts/storage/ClosureTypes.h \ + rts/storage/FunTypes.h \ + stg/MachRegs.h \ + stg/MachRegs/arm32.h \ + stg/MachRegs/arm64.h \ + stg/MachRegs/loongarch64.h \ + stg/MachRegs/ppc.h \ + stg/MachRegs/riscv64.h \ + stg/MachRegs/s390x.h \ + stg/MachRegs/wasm32.h \ + stg/MachRegs/x86.h define copy_rts_headers_h $(call copy_headers,$(RTS_HEADERS_H),rts-headers/include/,rts-headers,$1) endef RTS_FS_H := \ - fs.h + fs.h define copy_rts_fs_h $(call copy_headers,$(RTS_FS_H),rts-fs/,rts-fs,$1) endef RTS_H := \ - Cmm.h \ - HsFFI.h \ - MachDeps.h \ - Jumps.h \ - Rts.h \ - RtsAPI.h \ - RtsSymbols.h \ - Stg.h \ - ghcconfig.h \ - ghcversion.h \ - rts/ghc_ffi.h \ - rts/Adjustor.h \ - rts/ExecPage.h \ - rts/BlockSignals.h \ - rts/Config.h \ - rts/Constants.h \ - rts/EventLogFormat.h \ - rts/EventLogWriter.h \ - rts/FileLock.h \ - rts/Flags.h \ - rts/ForeignExports.h \ - rts/GetTime.h \ - rts/Globals.h \ - rts/Hpc.h \ - rts/IOInterface.h \ - rts/Libdw.h \ - rts/LibdwPool.h \ - rts/Linker.h \ - rts/Main.h \ - rts/Messages.h \ - rts/NonMoving.h \ - rts/OSThreads.h \ - rts/Parallel.h \ - rts/PrimFloat.h \ - rts/Profiling.h \ - rts/IPE.h \ - rts/PosixSource.h \ - rts/Signals.h \ - rts/SpinLock.h \ - rts/StableName.h \ - rts/StablePtr.h \ - rts/StaticPtrTable.h \ - rts/TTY.h \ - rts/Threads.h \ - rts/Ticky.h \ - rts/Time.h \ - rts/Timer.h \ - rts/TSANUtils.h \ - rts/Types.h \ - rts/Utils.h \ - rts/prof/CCS.h \ - rts/prof/Heap.h \ - rts/prof/LDV.h \ - rts/storage/Block.h \ - rts/storage/ClosureMacros.h \ - rts/storage/Closures.h \ - rts/storage/Heap.h \ - rts/storage/HeapAlloc.h \ - rts/storage/GC.h \ - rts/storage/InfoTables.h \ - rts/storage/MBlock.h \ - rts/storage/TSO.h \ - stg/DLL.h \ - stg/MiscClosures.h \ - stg/Prim.h \ - stg/Regs.h \ - stg/SMP.h \ - stg/Ticky.h \ - stg/MachRegsForHost.h \ - stg/Types.h + Cmm.h \ + HsFFI.h \ + MachDeps.h \ + Jumps.h \ + Rts.h \ + RtsAPI.h \ + RtsSymbols.h \ + Stg.h \ + ghcconfig.h \ + ghcversion.h \ + rts/ghc_ffi.h \ + rts/Adjustor.h \ + rts/ExecPage.h \ + rts/BlockSignals.h \ + rts/Config.h \ + rts/Constants.h \ + rts/EventLogFormat.h \ + rts/EventLogWriter.h \ + rts/FileLock.h \ + rts/Flags.h \ + rts/ForeignExports.h \ + rts/GetTime.h \ + rts/Globals.h \ + rts/Hpc.h \ + rts/IOInterface.h \ + rts/Libdw.h \ + rts/LibdwPool.h \ + rts/Linker.h \ + rts/Main.h \ + rts/Messages.h \ + rts/NonMoving.h \ + rts/OSThreads.h \ + rts/Parallel.h \ + rts/PrimFloat.h \ + rts/Profiling.h \ + rts/IPE.h \ + rts/PosixSource.h \ + rts/Signals.h \ + rts/SpinLock.h \ + rts/StableName.h \ + rts/StablePtr.h \ + rts/StaticPtrTable.h \ + rts/TTY.h \ + rts/Threads.h \ + rts/Ticky.h \ + rts/Time.h \ + rts/Timer.h \ + rts/TSANUtils.h \ + rts/Types.h \ + rts/Utils.h \ + rts/prof/CCS.h \ + rts/prof/Heap.h \ + rts/prof/LDV.h \ + rts/storage/Block.h \ + rts/storage/ClosureMacros.h \ + rts/storage/Closures.h \ + rts/storage/Heap.h \ + rts/storage/HeapAlloc.h \ + rts/storage/GC.h \ + rts/storage/InfoTables.h \ + rts/storage/MBlock.h \ + rts/storage/TSO.h \ + stg/DLL.h \ + stg/MiscClosures.h \ + stg/Prim.h \ + stg/Regs.h \ + stg/SMP.h \ + stg/Ticky.h \ + stg/MachRegsForHost.h \ + stg/Types.h RTS_H_DIRS := \ - rts/ \ - rts/include/ + rts/ \ + rts/include/ define copy_rts_h $(call copy_headers,$(RTS_H),$(RTS_H_DIRS),rts,$1) endef RTS_JS_H := \ - HsFFI.h \ - MachDeps.h \ - Rts.h \ - RtsAPI.h \ - Stg.h \ - ghcconfig.h \ - ghcversion.h \ - stg/MachRegsForHost.h \ - stg/Types.h + HsFFI.h \ + MachDeps.h \ + Rts.h \ + RtsAPI.h \ + Stg.h \ + ghcconfig.h \ + ghcversion.h \ + stg/MachRegsForHost.h \ + stg/Types.h define copy_rts_js_h $(call copy_headers,$(RTS_JS_H),rts/include/,rts,$1) endef GHC_INTERNAL_H := \ - HsBase.h \ - consUtils.h + HsBase.h \ + consUtils.h define copy_ghc_internal_h $(call copy_headers,$(GHC_INTERNAL_H),libraries/ghc-internal/include/,ghc-internal,$1) @@ -951,6 +951,7 @@ distclean: clean rm -rf libraries/ghc-boot-th-next @echo "::endgroup::" +# --- Test Suite --- # Default: skip performance tests (can override with SKIP_PERF_TESTS=NO) SKIP_PERF_TESTS ?= YES diff --git a/configure.ac b/configure.ac index 12056742ccdf..b6a38eb8ce56 100644 --- a/configure.ac +++ b/configure.ac @@ -79,26 +79,22 @@ AC_SUBST([LlvmMaxVersion]) # --- Files to generate --- # config.status will create these files by substituting @VAR@ placeholders. AC_CONFIG_FILES([ - ghc/ghc-bin.cabal:ghc/ghc-bin.cabal.in - compiler/ghc.cabal:compiler/ghc.cabal.in - compiler/GHC/CmmToLlvm/Version/Bounds.hs:compiler/GHC/CmmToLlvm/Version/Bounds.hs.in - libraries/ghc-boot/ghc-boot.cabal:libraries/ghc-boot/ghc-boot.cabal.in - libraries/ghc-boot-th/ghc-boot-th.cabal:libraries/ghc-boot-th/ghc-boot-th.cabal.in - libraries/ghc-boot-th-next/ghc-boot-th-next.cabal:libraries/ghc-boot-th-next/ghc-boot-th-next.cabal.in - libraries/ghc-heap/ghc-heap.cabal:libraries/ghc-heap/ghc-heap.cabal.in - libraries/template-haskell/template-haskell.cabal:libraries/template-haskell/template-haskell.cabal.in - libraries/ghci/ghci.cabal:libraries/ghci/ghci.cabal.in - utils/ghc-pkg/ghc-pkg.cabal:utils/ghc-pkg/ghc-pkg.cabal.in - utils/ghc-iserv/ghc-iserv.cabal:utils/ghc-iserv/ghc-iserv.cabal.in - utils/runghc/runghc.cabal:utils/runghc/runghc.cabal.in - libraries/ghc-internal/ghc-internal.cabal:libraries/ghc-internal/ghc-internal.cabal.in - libraries/ghc-experimental/ghc-experimental.cabal:libraries/ghc-experimental/ghc-experimental.cabal.in - libraries/base/base.cabal:libraries/base/base.cabal.in - rts/include/ghcversion.h:rts/include/ghcversion.h.in - cabal.project.stage2.settings:cabal.project.stage2.settings.in + cabal.project.stage2.settings + compiler/ghc.cabal + compiler/GHC/CmmToLlvm/Version/Bounds.hs + ghc/ghc-bin.cabal + libraries/base/base.cabal + libraries/ghc-boot-th/ghc-boot-th.cabal + libraries/ghc-boot/ghc-boot.cabal + libraries/ghc-experimental/ghc-experimental.cabal + libraries/ghc-heap/ghc-heap.cabal + libraries/ghc-internal/ghc-internal.cabal + libraries/ghci/ghci.cabal + libraries/template-haskell/template-haskell.cabal + rts/include/ghcversion.h + utils/ghc-iserv/ghc-iserv.cabal + utils/ghc-pkg/ghc-pkg.cabal + utils/runghc/runghc.cabal ]) AC_OUTPUT - -# After running ./configure, the following command can be used to see configured values: -# ./config.status --config From 9ba8d02561f937aeb4ef5ccf4a68094455833572 Mon Sep 17 00:00:00 2001 From: Andrea Bedini Date: Thu, 30 Oct 2025 09:56:14 +0800 Subject: [PATCH 4/4] fixup! feat: Modularize RTS and extract headers/filesystem utilities --- .gitignore | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/.gitignore b/.gitignore index f6d6b0bc9006..040d69579923 100644 --- a/.gitignore +++ b/.gitignore @@ -95,7 +95,6 @@ _darcs/ /ghc/stage1/ /ghc/stage2/ /ghc/stage3/ -/utils/iserv/stage2*/ # ----------------------------------------------------------------------------- # specific generated files @@ -202,7 +201,7 @@ _darcs/ /testsuite_summary*.txt /testsuite*.xml /testlog* -/utils/iserv/iserv.cabal +/utils/ghc-iserv/ghc-iserv.cabal /utils/iserv-proxy/iserv-proxy.cabal /utils/remote-iserv/remote-iserv.cabal /utils/mkUserGuidePart/mkUserGuidePart.cabal