Hi Lyle,

It seems that you set-up a proper native toolchain (without nix) and
that you might be running into this issue:
https://gitlab.haskell.org/ghc/ghc/-/issues/22451

Do you have any symlinks anywhere around the build folder?

Cheers,

Matt

On Wed, May 31, 2023 at 4:14 AM Lyle Kopnicky <[email protected]> wrote:
>
> Hi folks, I’m new here. I’ll be attending the GHC Contributors’ Workshop next 
> week, and in preparation, I’m trying to build GHC, both the native code 
> backend and the JS backend. So far, I’ve only tried to build it with the 
> native code backend, but I haven’t been able to get it to work. I’ve gotten 
> help from some friendly folks on the #ghc channel on Matrix, and made some 
> progress, but I’m still stuck.
>
> Is there anyone here who could be a point person for helping me get it to 
> build? BTW I’m located on the west coast of the US (until next week when I’ll 
> be in Switzerland), so time lag may be a factor.
>
> I’m using a Mac with aarch64 and macOS 13.3. Here are some of the things I’ve 
> tried, and issues I’ve run into:
>
> Started with the advice from this wiki: 
> https://gitlab.haskell.org/ghc/ghc/-/wikis/building
> Checked out the ghc source, on HEAD.
> The rest of the steps were at 
> https://gitlab.haskell.org/ghc/ghc/-/wikis/building/preparation/mac-osx
> Already had Apple’s command line tools, but when I tried to do operations 
> using them, I got an error saying I needed the full Xcode, so I installed 
> that.
> brew install autoconf automake python sphinx-doc
>
> Worked fine, also added sphinx-build to the path
>
> Initially tried using ghc 9.2.7 to build - later tried switching to 9.4.4 and 
> eventually 9.4.5
> cabal update; cabal install alex happy haddock
>
> This is where I ran into trouble - couldn’t build haddock. Cabal said it 
> couldn’t resolve the dependencies.
> I tried switching to ghc 9.4.4 and cabal 3.10.1.0 - same problem
> User romes (Rodrigo) on #ghc helped with this - was able to reproduce it and 
> filed a ticket: https://github.com/haskell/haddock/issues/1596
> However he pointed out that haddock was already supplied through ghcup so I 
> don’t need to build it.
>
> Already had MacTex installed and I installed the DejaVu font family.
> ./boot && ./configure
>
> Worked fine, although ./boot gave me lots of autoconf warnings like:
> configure.ac:9: warning: The macro `AC_HELP_STRING' is obsolete.
> configure.ac:9: You should run autoupdate.
> Apparently autoconf has renamed these macros to pluralize them, and also 
> encloses the arguments in square brackets.
>
> hadrian/build
>
> Ran into another problem: The build failed with:
> Error, file does not exist and no rule available:
> /Users/lyle/devel/haskell/ghc/_build/stage1/libraries/ghc-prim/build/GHC/Classes.hi
> Rodrigo helped me out with this. Introduced me to other build flags like -j 
> —flavour-quick.
> The issue proved quite persistent, but it might fail on different .hi files.
> It turns out if you ask Hadrian to build that specific file, it works. So 
> somehow it can find a rule! Then you can proceed to rebuild and it will fail 
> on a different .hi file. Obviously it would be tedious to do this for all the 
> possible files it can fail on.
> I also tried not building profiled libraries.
> I tried, instead of using the Apple toolchain, using llvm 12, then llvm 16. 
> But I got different errors from that.
> Rodrigo was unable to reproduce the issue.
>
> So, I thought I’d try the Nix approach.
> First I had to repair my nix installation, because apparently updating macOS 
> overwrites /etc/zshrc, overwriting the bit that sources 
> '/nix/var/nix/profiles/default/etc/profile.d/nix-daemon.sh’
> Nix reminded me when I ran commands that I needed to add the flag 
> '--extra-experimental-features nix-command’ and sometimes 
> '--extra-experimental-features flakes’
> The instructions from the wiki didn’t work, got an error:
>
> nix build -f .gitlab/darwin/toolchain.nix -o toolchain.sh 
> --extra-experimental-features nix-command
> error: cannot evaluate a function that has an argument without a value 
> ('system’)
>
> But folks on #ghc recommended I use ghc.nix instead
>
> Pointed me to https://ghc.dev/
> That linked to these instructions: 
> https://github.com/alpmestan/ghc.nix#building-ghc
> But those instructions failed with:
>
> error: nix-shell requires a single derivation
>
> User Artem said my command was wrong, instead recommended:
>
> nix develop https://github.com/alpmestan/ghc.nix/archive/master.tar.gz
>
> Once I added the magic experimental flags…
> It failed, with:
>
> error: NAR hash mismatch in input 
> 'github:commercialhaskell/all-cabal-hashes/02bb1361217e690d83af9cc132b1d2bf2096763c'
>  (/nix/store/zbav3qqbyz7mn7rh4iwybs0ni01ppdbj-source), expected 
> 'sha256-HdAnlSc4U8ftnZrBZr2CewsPQs03V9K2gkTVHKG8IfA=', got 
> 'sha256-86BgvJ+ebMxTp+nPxo659hsNJbhE6CYJWiIbQXX+sBM=
>
> User MangoIV helped me out with this.
> First I tried regenerating the lock file, with nix flake update.
>
> Didn’t fix the problem.
>
> Then, I checked out the branch update_flake_lock_action
>
> This is apparently a branch designed to fix the problem
> Didn’t fix the problem
>
> Then I regenerated the lock file again, with nix flake update
>
> That worked! Well, at least that got me to a ghc.nix prompt
>
> So, I did:
>
> ./boot
> ./configure
> cabal v2-update
> hadrian/build -j --flavour=quick
>
> It chugged along for quite a while. Sadly, it ended with this error:
>
> Linking 
> /Users/lyle/Sync/devel/haskell/ghc/hadrian/dist-newstyle/build/aarch64-osx/ghc-9.2.4/hadrian-0.1.0.0/x/hadrian/build/hadrian/hadrian
>  ...
> Data.Binary.Get.runGet at position 1181: Unknown encoding for constructor
>
> What also worries me is that I thought I read somewhere that ghc.nix doesn’t 
> work for cross-compilers, so even if it works for the native backend, it may 
> not work for the JS backend.
>
>
> Any help would be much appreciated!
> — Lyle
> _______________________________________________
> ghc-devs mailing list
> [email protected]
> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
_______________________________________________
ghc-devs mailing list
[email protected]
http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

Reply via email to