Trouble building GHC

Lyle Kopnicky lists at qseep.net
Sat Jun 3 21:47:59 UTC 2023


How do you build the JavaScript backend then?

Without nix, I used:

emconfigure ./configure --target=javascript-unknown-ghcjs


But with ghc.nix, if I use configure_ghc, can I pass that to emconfigure?
Would it be like this?

emconfigure configure_ghc --target=javascript-unknown-ghcjs


Well, never mind - I tried that, and it worked!

Thanks,
Lyle

On May 31, 2023 at 2:41:28 AM, Sebastian Graf <sgraf1337 at gmail.com> wrote:

> > I've had no issues with the configure step by running the configure_ghc
> shell function that the flake provides.
>
> For reference, this is the relevant ghc.nix issue:
> https://github.com/alpmestan/ghc.nix/issues/111
> It seems that the `configure_ghc` used to be a shell function in
> https://github.com/alpmestan/ghc.nix/blob/b200a76a4f28d6434e4678827a0373002e641b12/default.nix#L156
> .
> Nowadays, it became a standalone bash script (great work, Magnus!), which
> explains why it works for you:
> https://github.com/alpmestan/ghc.nix/blob/f34c21877257fc37bbcf8962dc006024bfd0f946/ghc.nix#L138
>
> You can't do `./configure $CONFIGURE_ARGS` in zsh directly, though.
>
> Am Mi., 31. Mai 2023 um 09:49 Uhr schrieb Georgi Lyubenov <
> godzbanebane at gmail.com>:
>
>> Just chiming in to mention that I'm on zsh, and I've had no issues with
>> the configure step by running the configure_ghc shell function that the
>> flake provides.
>> On 5/31/23 10:13, Sebastian Graf wrote:
>>
>> Hi Lyle,
>>
>> I'm sorry that you have so much trouble in getting your first build done.
>> The Classes.hi issue sounds like something I had experienced in the past,
>> but I'm not having it at the moment.
>> Are you also using symlinks by any chance? Then it is very likely that
>> you have been bitten by https://gitlab.haskell.org/ghc/ghc/-/issues/22451,
>> the workaround to which would be to do something like `cd "$(readlink -f
>> .)"` before you start your build.
>>
>> Regarding your second issue using ghc.nix, a quick google turned up
>> https://gitlab.haskell.org/ghc/ghc/-/issues/20429#note_379762.
>> Is it possible that you didn't start from a clean build?
>> E.g., at the least you should `rm -rf _build` (note that `hadrian/cabal
>> clean` sadly is insufficient IIRC for reasons I don't recall).
>> I often simply do `git clean -fxd` to be extra sure.
>> After that, you'll have to boot, configure (including passing
>> $CONFIGURE_ARGS) and build again.
>> By the way, are you using ZSH? I'm using it and I have to pass the
>> CONFIGURE_ARGS in a slightly different way
>> <https://github.com/alpmestan/ghc.nix#building-ghc>: `./configure
>> ${=CONFIGURE_ARGS}`.
>>
>> I also updated
>> https://gitlab.haskell.org/ghc/ghc/-/wikis/building/preparation/linux#nixnixos
>> to account for new-style flakified builds+direnv, if that's a workflow that
>> you are familiar with.
>>
>> Hope that helps,
>> Sebastian
>>
>> Am Mi., 31. Mai 2023 um 05:14 Uhr schrieb Lyle Kopnicky <lists at qseep.net
>> >:
>>
>>> 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
>>>    <https://gitlab.haskell.org/ghc/ghc/-/wikis/building/preparation/mac-osx>
>>>    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
>>> ghc-devs at haskell.org
>>> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
>>>
>>
>> _______________________________________________
>> ghc-devs mailing listghc-devs at haskell.orghttp://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
>>
>> _______________________________________________
>> ghc-devs mailing list
>> ghc-devs at haskell.org
>> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
>>
> _______________________________________________
> ghc-devs mailing list
> ghc-devs at haskell.org
> http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.haskell.org/pipermail/ghc-devs/attachments/20230603/a793afc3/attachment.html>


More information about the ghc-devs mailing list