Skip to content
GitLab
Projects Groups Snippets
  • /
  • Help
    • Help
    • Support
    • Community forum
    • Submit feedback
  • Sign in / Register
  • GHC GHC
  • Project information
    • Project information
    • Activity
    • Labels
    • Members
  • Repository
    • Repository
    • Files
    • Commits
    • Branches
    • Tags
    • Contributors
    • Graph
    • Compare
    • Locked Files
  • Issues 5,344
    • Issues 5,344
    • List
    • Boards
    • Service Desk
    • Milestones
    • Iterations
  • Merge requests 571
    • Merge requests 571
  • CI/CD
    • CI/CD
    • Pipelines
    • Jobs
    • Schedules
    • Test Cases
  • Deployments
    • Deployments
    • Releases
  • Analytics
    • Analytics
    • Value stream
    • CI/CD
    • Code review
    • Insights
    • Issue
    • Repository
  • Wiki
    • Wiki
  • Snippets
    • Snippets
  • Activity
  • Graph
  • Create a new issue
  • Jobs
  • Commits
  • Issue Boards
Collapse sidebar
  • Glasgow Haskell CompilerGlasgow Haskell Compiler
  • GHCGHC
  • Issues
  • #21897
Closed
Open
Issue created Jul 21, 2022 by Stefan Schulze Frielinghaus@stefansfDeveloper

Build error if booter is unregisterised

Summary

If booter/stage0 compiler is unregisterised, then building a registerised compiler fails in all my experiments except in one case. The tests were done on x64 with 8.10.7 as booter and 9.2.3 as target:

Booter      | Target    | Result
------------+-----------+---------
8.10.7+U+H  | 9.2.3+R+H | Ok
8.10.7+U+H  | 9.2.3+R+M | Fail (*)
8.10.7+U+M  | 9.2.3+R+M | Fail (*)
8.10.7+U+M  | 9.2.3+R+H | Fail (#)
8.10.7+R+M  | 9.2.3+R+H | Ok

U = Unregisterised
R = Registerised
H = Hadrian
M = Make

The only working combination I found so far, if the booter is unregisterised, is to use Hadrian in order to build the booter as well as the target compiler. As a sanity check I also gave a registerised booter a chance where I didn't run into any problems.

Target build error messages

  • (*)
chmod +x                                                     inplace/bin/ghc-stage2
"inplace/bin/ghc-stage2" -hisuf dyn_hi -osuf  dyn_o -hcsuf dyn_hc -fPIC -dynamic  -O0 -H64m -Wall     -hide-all-packages -package-env - -i -iutils/check-ppr/. -iutils/check-ppr/dist-install/build -Iutils/check-ppr/dist-install/build -iutils/check-ppr/dist-install/build/check-ppr/autogen -Iutils/check-ppr/dist-install/build/check-ppr/autogen     -optP-include -optPutils/check-ppr/dist-install/build/check-ppr/autogen/cabal_macros.h -package-id Cabal-3.6.3.0 -package-id base-4.16.2.0 -package-id bytestring-0.11.3.1 -package-id containers-0.6.5.1 -package-id directory-1.3.6.2 -package-id filepath-1.4.2.2 -package-id ghc-9.2.3 -Wall -XHaskell2010  -no-user-package-db -rtsopts      -Wnoncanonical-monad-instances  -outputdir utils/check-ppr/dist-install/build   -c utils/check-ppr/./Main.hs -o utils/check-ppr/dist-install/build/Main.dyn_o "inplace/bin/ghc-stage2" -hisuf dyn_hi -osuf  dyn_o -hcsuf dyn_hc -fPIC -dynamic  -O0 -H64m -Wall     -hide-all-packages -package-env - -i -iutils/check-exact/. -iutils/check-exact/dist-install/build -Iutils/check-exact/dist-install/build -iutils/check-exact/dist-install/build/check-exact/autogen -Iutils/check-exact/dist-install/build/check-exact/autogen     -optP-include -optPutils/check-exact/dist-install/build/check-exact/autogen/cabal_macros.h -package-id Cabal-3.6.3.0 -package-id base-4.16.2.0 -package-id bytestring-0.11.3.1 -package-id containers-0.6.5.1 -package-id directory-1.3.6.2 -package-id filepath-1.4.2.2 -package-id ghc-9.2.3 -package-id ghc-boot-9.2.3 -package-id mtl-2.2.2 -Wall -XHaskell2010  -no-user-package-db -rtsopts      -Wnoncanonical-monad-instances  -outputdir utils/check-exact/dist-install/build   -c utils/check-exact/./Types.hs -o utils/check-exact/dist-install/build/Types.dyn_o
make[1]: *** [utils/check-exact/ghc.mk:18: utils/check-exact/dist-install/build/Types.dyn_o] Segmentation fault (core dumped)
make[1]: *** Waiting for unfinished jobs....
make[1]: *** [utils/check-ppr/ghc.mk:18: utils/check-ppr/dist-install/build/Main.dyn_o] Segmentation fault (core dumped)
make: *** [Makefile:128: all] Error 2
  • (#)
/--------------------------------------------------------\
| Successfully built library 'ghc' (Stage0, way v).      |
| Library: _build/stage0/compiler/build/libHSghc-9.2.3.a |
| Library synopsis: The GHC API.                         |
\--------------------------------------------------------/
| Copy package 'ghc'
# cabal-copy (for _build/stage0/lib/package.conf.d/ghc-9.2.3.conf)
| Register package 'ghc'
# cabal-register (for _build/stage0/lib/package.conf.d/ghc-9.2.3.conf)
| Configure package 'ghc-bin'
| Configure package 'haddock'
# cabal-configure (for _build/stage0/ghc/setup-config)
# cabal-configure (for _build/stage0/utils/haddock/setup-config)
hadrian: Encountered missing or private dependencies:
xhtml ==3000.2.*

Error when running Shake build system:
  at action, called at src/Rules.hs:40:19 in main:Rules
  at need, called at src/Rules.hs:62:5 in main:Rules
* Depends on: _build/stage0/bin/haddock
  at apply1, called at src/Development/Shake/Internal/Rules/Oracle.hs:159:32 in shake-0.19.6-576ad0fced9c674bfff23772afdeb780c35f77d3ce7941f4ce60ae5ec1ea8de6:Development.Shake.Internal.Rules.Oracle
* Depends on: OracleQ (ContextDataKey (Context {stage = Stage0, package = Package {pkgType = Program, pkgName = "haddock", pkgPath = "utils/haddock"}, way = v}))
  at need, called at src/Hadrian/Oracles/Cabal/Rules.hs:54:9 in main:Hadrian.Oracles.Cabal.Rules
* Depends on: _build/stage0/utils/haddock/setup-config
* Raised the exception:
ExitFailure 1

Steps to reproduce

FROM fedora:36
RUN dnf -y upgrade \
  && dnf -y install alex autoconf automake cabal-install llvm12 gcc gcc-g++ make ghc git file findutils happy which python3 xz diffutils
RUN cabal update \
  && cabal install happy --constraint='happy ^>=1.19' --program-suffix=-1.19
RUN git clone --depth 1 --branch ghc-8.10.7-release --recurse-submodules https://gitlab.haskell.org/ghc/ghc.git /ghc-8.10.7-src \
  && cd /ghc-8.10.7-src \
  && printf 'BuildFlavour = quick\ninclude mk/flavours/quick.mk\nSTRIP_CMD = :\n' >mk/build.mk \
  && ./boot \
  && HAPPY=$HOME/.cabal/bin/happy-1.19 ./configure --enable-unregisterised --prefix=/ghc-8.10.7 \
  && make -j8 \
  && make install
RUN git clone --depth 1 --branch ghc-9.2.3-release --recurse-submodules https://gitlab.haskell.org/ghc/ghc.git /ghc-9.2.3-src \
  && cd /ghc-9.2.3-src \
  && printf 'BuildFlavour = quick\ninclude mk/flavours/quick.mk\nSTRIP_CMD = :\n' >mk/build.mk \
  && export PATH=/ghc-8.10.7/bin:/usr/bin:/usr/sbin:/sbin:/bin \
  && ./boot \
  && ./configure \
  && make -j8
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Assignee
Assign to
Time tracking