[MacPorts] #64698: approach to fix Haskell (GHC) for PowerPC: some initial progress

MacPorts noreply at macports.org
Sat Feb 19 11:32:02 UTC 2022


#64698: approach to fix Haskell (GHC) for PowerPC: some initial progress
---------------------------------+------------------------------
  Reporter:  barracuda156        |      Owner:  (none)
      Type:  enhancement         |     Status:  new
  Priority:  Normal              |  Milestone:
 Component:  ports               |    Version:  2.7.1
Resolution:                      |   Keywords:  powerpc, leopard
      Port:  ghc, ghc-bootstrap  |
---------------------------------+------------------------------
Description changed by barracuda156:

Old description:

> I want to bring GHC to PowerPC systems. So far I was able to bootstrap
> ghc 7.0.1 using ghc-bootstrap port file as a draft and substituting ppc
> distributive:
>
> {{{
> 36-47% port -v installed ghc-bootstrap
> The following ports are currently installed:
>   ghc-bootstrap @7.0.1_0 (active) requested_variants='' platform='darwin
> 10' archs='ppc' date='2022-02-19T12:58:35+0800'
> }}}
>
> Building ghc 7.8.x requires at least ghc 7.4.x, and Macports now uses ghc
> 7.6.2 as a bootstrap compiler. The latter is impossible for ppc as of
> now, unless we want to make our own distributive to that end.
> However it seems that ghc 7.6.x can be built with bootstrapped ghc 7.0.1
> and Macports gcc. A first attempt fails on Stage 2 with haddock:
>
> {{{
> :info:build "rm" -f                              inplace/bin/haddock
> :info:build echo '#!/bin/sh'                             >>
> inplace/bin/haddock
> :info:build echo
> 'executablename="/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_ghc/ghc/work/ghc-7.6.3/inplace/lib/haddock"'
> >> inplace/bin/haddock
> :info:build echo
> 'datadir="/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_ghc/ghc/work/ghc-7.6.3/inplace/lib"'
> >> inplace/bin/haddock
> :info:build echo
> 'bindir="/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_ghc/ghc/work/ghc-7.6.3/inplace/bin"'
> >> inplace/bin/haddock
> :info:build echo
> 'topdir="/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_ghc/ghc/work/ghc-7.6.3/inplace/lib"'
> >> inplace/bin/haddock
> :info:build echo 'pgmgcc="/opt/local/bin/gcc-mp-7"'            >>
> inplace/bin/haddock
> :info:build cat utils/haddock/haddock.wrapper               >>
> inplace/bin/haddock
> :info:build chmod +x                               inplace/bin/haddock
> :info:build "inplace/bin/mkdirhier" libraries/ghc-prim/dist-
> install/doc/html/ghc-prim//.
> :info:build "inplace/bin/mkdirhier" libraries/ghc-prim/dist-
> install/build/autogen/GHC//.
> :info:build "inplace/bin/genprimopcode" --make-haskell-source <
> compiler/prelude/primops.txt > libraries/ghc-prim/dist-
> install/build/autogen/GHC/Prim.hs
> :info:build
> "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_ghc/ghc/work/ghc-7.6.3/inplace/bin/haddock"
> --odir="libraries/ghc-prim/dist-install/doc/html/ghc-prim" --no-tmp-comp-
> dir --dump-interface=libraries/ghc-prim/dist-install/doc/html/ghc-prim
> /ghc-prim.haddock --html --hoogle --title="ghc-prim-0.3.0.0: GHC
> primitives" --prologue="libraries/ghc-prim/dist-install/haddock-
> prologue.txt"   --optghc=-H32m --optghc=-O --optghc=-package-name
> --optghc=ghc-prim-0.3.0.0 --optghc=-hide-all-packages --optghc=-i
> --optghc=-ilibraries/ghc-prim/. --optghc=-ilibraries/ghc-prim/dist-
> install/build --optghc=-ilibraries/ghc-prim/dist-install/build/autogen
> --optghc=-Ilibraries/ghc-prim/dist-install/build --optghc=-Ilibraries
> /ghc-prim/dist-install/build/autogen --optghc=-Ilibraries/ghc-prim/.
> --optghc=-optP-include --optghc=-optPlibraries/ghc-prim/dist-
> install/build/autogen/cabal_macros.h --optghc=-package --optghc=rts-1.0
> --optghc=-split-objs --optghc=-package-name --optghc=ghc-prim
> --optghc=-XHaskell98 --optghc=-XCPP --optghc=-XMagicHash
> --optghc=-XForeignFunctionInterface --optghc=-XUnliftedFFITypes
> --optghc=-XUnboxedTuples --optghc=-XEmptyDataDecls
> --optghc=-XNoImplicitPrelude --optghc=-O2 --optghc=-no-user-package-db
> --optghc=-rtsopts --optghc=-odir --optghc=libraries/ghc-prim/dist-
> install/build --optghc=-hidir --optghc=libraries/ghc-prim/dist-
> install/build --optghc=-stubdir --optghc=libraries/ghc-prim/dist-
> install/build --optghc=-hisuf --optghc=hi --optghc=-osuf --optghc=o
> --optghc=-hcsuf --optghc=hc    libraries/ghc-prim/./GHC/Classes.hs
> libraries/ghc-prim/./GHC/CString.hs  libraries/ghc-prim/./GHC/Debug.hs
> libraries/ghc-prim/./GHC/Magic.hs  libraries/ghc-prim/dist-
> install/build/GHC/PrimopWrappers.hs  libraries/ghc-
> prim/./GHC/IntWord64.hs  libraries/ghc-prim/./GHC/Tuple.hs  libraries
> /ghc-prim/./GHC/Types.hs libraries/ghc-prim/dist-
> install/build/autogen/GHC/Prim.hs +RTS -tlibraries/ghc-prim/dist-
> install/doc/html/ghc-prim/ghc-prim.haddock.t --machine-readable
> :info:build haddock: internal error: evacuate(static): strange closure
> type 18699
> :info:build     (GHC version 7.6.3 for powerpc_apple_darwin)
> :info:build     Please report this as a GHC bug:
> http://www.haskell.org/ghc/reportabug
> :info:build make[1]: *** [libraries/ghc-prim/dist-install/doc/html/ghc-
> prim/ghc-prim.haddock] Abort trap
> :info:build make: *** [all] Error 2
> :info:build make: Leaving directory
> `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_ghc/ghc/work/ghc-7.6.3'
> :info:build Command failed:  cd
> "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_ghc/ghc/work/ghc-7.6.3"
> && /usr/bin/make -j1 -w all
> :info:build Exit code: 2
> :error:build Failed to build ghc: command execution failed
> :debug:build Error code: CHILDSTATUS 91677 2
> :debug:build Backtrace: command execution failed
> :debug:build     while executing
> :debug:build "system {*}$notty {*}$callback {*}$nice $fullcmdstring"
> :debug:build     invoked from within
> :debug:build "command_exec -callback
> portprogress::target_progress_callback build"
> :debug:build     (procedure "portbuild::build_main" line 8)
> :debug:build     invoked from within
> :debug:build "$procedure $targetname"
> }}}
>
> I am trying to build it again with docs disabled now. Given how far it
> went it looks feasible. If it works eventually, we gonna have ghc 7.6.3
> on PowerPC.
>
> Technical question arises: how to arrange two-step bootstrap? That is,
> bootstrap 7.0.1, build 7.6.3 with it and use the latter to build
> something new. In other words, PowerPC needs a pre-bootstrap stage,
> assuming existing port ghc-bootstrap.

New description:

 I want to bring GHC to PowerPC systems. So far I was able to bootstrap ghc
 7.0.1 using ghc-bootstrap port file as a draft and substituting ppc
 distributive:

 {{{
 36-47% port -v installed ghc-bootstrap
 The following ports are currently installed:
   ghc-bootstrap @7.0.1_0 (active) requested_variants='' platform='darwin
 10' archs='ppc' date='2022-02-19T12:58:35+0800'
 }}}

 Building ghc 7.8.x requires at least ghc 7.4.x, and Macports now uses ghc
 7.6.2 as a bootstrap compiler. The latter is impossible for ppc as of now,
 unless we want to make our own distributive to that end.
 However it seems that ghc 7.6.x can be built with bootstrapped ghc 7.0.1
 and Macports gcc. A first attempt fails on Stage 2 with haddock:

 {{{
 :info:build "rm" -f                              inplace/bin/haddock
 :info:build echo '#!/bin/sh'                             >>
 inplace/bin/haddock
 :info:build echo
 'executablename="/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_ghc/ghc/work/ghc-7.6.3/inplace/lib/haddock"'
 >> inplace/bin/haddock
 :info:build echo
 'datadir="/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_ghc/ghc/work/ghc-7.6.3/inplace/lib"'
 >> inplace/bin/haddock
 :info:build echo
 'bindir="/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_ghc/ghc/work/ghc-7.6.3/inplace/bin"'
 >> inplace/bin/haddock
 :info:build echo
 'topdir="/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_ghc/ghc/work/ghc-7.6.3/inplace/lib"'
 >> inplace/bin/haddock
 :info:build echo 'pgmgcc="/opt/local/bin/gcc-mp-7"'            >>
 inplace/bin/haddock
 :info:build cat utils/haddock/haddock.wrapper               >>
 inplace/bin/haddock
 :info:build chmod +x                               inplace/bin/haddock
 :info:build "inplace/bin/mkdirhier" libraries/ghc-prim/dist-
 install/doc/html/ghc-prim//.
 :info:build "inplace/bin/mkdirhier" libraries/ghc-prim/dist-
 install/build/autogen/GHC//.
 :info:build "inplace/bin/genprimopcode" --make-haskell-source <
 compiler/prelude/primops.txt > libraries/ghc-prim/dist-
 install/build/autogen/GHC/Prim.hs
 :info:build
 "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_ghc/ghc/work/ghc-7.6.3/inplace/bin/haddock"
 --odir="libraries/ghc-prim/dist-install/doc/html/ghc-prim" --no-tmp-comp-
 dir --dump-interface=libraries/ghc-prim/dist-install/doc/html/ghc-prim
 /ghc-prim.haddock --html --hoogle --title="ghc-prim-0.3.0.0: GHC
 primitives" --prologue="libraries/ghc-prim/dist-install/haddock-
 prologue.txt"   --optghc=-H32m --optghc=-O --optghc=-package-name --optghc
 =ghc-prim-0.3.0.0 --optghc=-hide-all-packages --optghc=-i
 --optghc=-ilibraries/ghc-prim/. --optghc=-ilibraries/ghc-prim/dist-
 install/build --optghc=-ilibraries/ghc-prim/dist-install/build/autogen
 --optghc=-Ilibraries/ghc-prim/dist-install/build --optghc=-Ilibraries/ghc-
 prim/dist-install/build/autogen --optghc=-Ilibraries/ghc-prim/. --optghc
 =-optP-include --optghc=-optPlibraries/ghc-prim/dist-
 install/build/autogen/cabal_macros.h --optghc=-package --optghc=rts-1.0
 --optghc=-split-objs --optghc=-package-name --optghc=ghc-prim
 --optghc=-XHaskell98 --optghc=-XCPP --optghc=-XMagicHash
 --optghc=-XForeignFunctionInterface --optghc=-XUnliftedFFITypes
 --optghc=-XUnboxedTuples --optghc=-XEmptyDataDecls
 --optghc=-XNoImplicitPrelude --optghc=-O2 --optghc=-no-user-package-db
 --optghc=-rtsopts --optghc=-odir --optghc=libraries/ghc-prim/dist-
 install/build --optghc=-hidir --optghc=libraries/ghc-prim/dist-
 install/build --optghc=-stubdir --optghc=libraries/ghc-prim/dist-
 install/build --optghc=-hisuf --optghc=hi --optghc=-osuf --optghc=o
 --optghc=-hcsuf --optghc=hc    libraries/ghc-prim/./GHC/Classes.hs
 libraries/ghc-prim/./GHC/CString.hs  libraries/ghc-prim/./GHC/Debug.hs
 libraries/ghc-prim/./GHC/Magic.hs  libraries/ghc-prim/dist-
 install/build/GHC/PrimopWrappers.hs  libraries/ghc-prim/./GHC/IntWord64.hs
 libraries/ghc-prim/./GHC/Tuple.hs  libraries/ghc-prim/./GHC/Types.hs
 libraries/ghc-prim/dist-install/build/autogen/GHC/Prim.hs +RTS -tlibraries
 /ghc-prim/dist-install/doc/html/ghc-prim/ghc-prim.haddock.t --machine-
 readable
 :info:build haddock: internal error: evacuate(static): strange closure
 type 18699
 :info:build     (GHC version 7.6.3 for powerpc_apple_darwin)
 :info:build     Please report this as a GHC bug:
 http://www.haskell.org/ghc/reportabug
 :info:build make[1]: *** [libraries/ghc-prim/dist-install/doc/html/ghc-
 prim/ghc-prim.haddock] Abort trap
 :info:build make: *** [all] Error 2
 :info:build make: Leaving directory
 `/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_ghc/ghc/work/ghc-7.6.3'
 :info:build Command failed:  cd
 "/opt/local/var/macports/build/_opt_PPCSnowLeopardPorts_lang_ghc/ghc/work/ghc-7.6.3"
 && /usr/bin/make -j1 -w all
 :info:build Exit code: 2
 :error:build Failed to build ghc: command execution failed
 :debug:build Error code: CHILDSTATUS 91677 2
 :debug:build Backtrace: command execution failed
 :debug:build     while executing
 :debug:build "system {*}$notty {*}$callback {*}$nice $fullcmdstring"
 :debug:build     invoked from within
 :debug:build "command_exec -callback
 portprogress::target_progress_callback build"
 :debug:build     (procedure "portbuild::build_main" line 8)
 :debug:build     invoked from within
 :debug:build "$procedure $targetname"
 }}}

 I am trying to build it again with docs disabled now. Given how far it
 went it looks feasible. If it works eventually, we gonna have ghc 7.6.3 on
 PowerPC.

 Technical question arises: how to arrange two-step bootstrap? That is,
 bootstrap 7.0.1, build 7.6.3 with it and use the latter to build something
 new. In other words, PowerPC needs a pre-bootstrap stage, assuming
 existing port ghc-bootstrap.

 P. S. If it works, I will test then on 10.5.8 and 10.4.11 both.

--

-- 
Ticket URL: <https://trac.macports.org/ticket/64698#comment:1>
MacPorts <https://www.macports.org/>
Ports system for macOS


More information about the macports-tickets mailing list