Build failing for GHCJS project: The symbol `JSCheckScriptSyntax' does not fit here

In my project that uses reflex-dom for creating an UI I get an error since the last few days when building the project using GHC. The build with GHCJS still works. However, this causes autocomplete in VS Code to be completely not working for the UI project.
This is the error:

Failed to build webkit2gtk3-javascriptcore-0.14.4.6.
Build log (
/home/m/.cabal/logs/ghc-9.12.2/webkit2gtk3-javascriptcore-0.14.4.6-e338888fe8281e79c6394e3e53741a95909fe0ea837ddbb440d6bba2fd75787e.log
):
[1 of 2] Compiling Main             ( dist/setup/setup.hs, dist/setup/Main.o )
[2 of 2] Linking dist/setup/setup
Configuring webkit2gtk3-javascriptcore-0.14.4.6...
Preprocessing library for webkit2gtk3-javascriptcore-0.14.4.6...
setup: Error in C header file.

/usr/include/webkitgtk-4.0/JavaScriptCore/JSBase.h:125: (column 44) [FATAL] 
  >>> Syntax error!
  The symbol `JSCheckScriptSyntax' does not fit here.

Versions:

$ ghc --version
The Glorious Glasgow Haskell Compilation System, version 9.12.2
$ cabal --version
cabal-install version 3.14.1.1
compiled using version 3.14.1.1 of the Cabal library 

We don’t have a direct dependency on the package only through reflex-dom.
I already opened an issue with the package directly, however I suspect that it will not get resolved quickly.
That the build with GHC does not work wouldn’t be such a problem if autocomplete would still work. However, it uses cabal v2-repl internally which fails when building this package.

Do you have any idea on how we can resolve this issue?
Or at least how we can get autocomplete working again? Only the GHCJS build is relevant for us.
I assume there is no way for us to not indirectly depend on webkitgtk? We do not need this functionality.

Any help is greatly appreciated as this is quite a blocking issue because coding without autocomplete is not so much fun :slight_smile:

1 Like

What do you mean with ā€œautocompleteā€? HLS?

Yes correct: HLS.
I get the following error in VSCode:

[{
	"resource": "/home/m/Dev/study/Sem8/BA/visualfp/ui/Page/Page.hs",
	"owner": "Haskell (visualfp)",
	"severity": 8,
	"message": "Failed to run [\"cabal\",\"v2-repl\",\"--keep-temp-files\",\"--enable-multi-repl\",\"/home/m/Dev/study/Sem8/BA/visualfp/ui/Page/Page.hs\"] in directory \"/home/m/Dev/study/Sem8/BA/visualfp\". Consult the logs for full command and error.\nFailed command: cabal --builddir=/home/m/.cache/hie-bios/dist-visualfp-0b29c3f7d5e8114c16f10f65612fbe90 v2-repl --with-compiler /home/m/.cache/hie-bios/wrapper-b54f81dea4c0e6d1626911c526bc4e36 --with-hc-pkg /home/m/.cache/hie-bios/ghc-pkg-92b10baf51453b22beb6111716d2ea29 --keep-temp-files --enable-multi-repl /home/m/Dev/study/Sem8/BA/visualfp/ui/Page/Page.hs\nResolving dependencies...\nBuild profile: -w ghc-9.12.2 -O1\nIn order, the following will be built (use -v for more details):\n - gi-soup2-2.4.30 (lib:gi-soup2) (requires build)\n - visualfp-0.1.0.0 (lib:core) (configuration changed)\n - webkit2gtk3-javascriptcore-0.14.4.6 (lib:webkit2gtk3-javascriptcore) (requires build)\n - gi-webkit2-4.0.32 (lib:gi-webkit2) (requires build)\n - visualfp-0.1.0.0 (lib:ui-shared) (configuration changed)\n - jsaddle-webkit2gtk-0.9.9.3 (lib) (requires build)\n - reflex-dom-0.6.3.4 (lib) (requires build)\n - visualfp-0.1.0.0 (interactive) (lib:ui) (first run)\nStarting     gi-soup2-2.4.30 (all, legacy fallback: build-type is Custom)\nStarting     webkit2gtk3-javascriptcore-0.14.4.6 (all, legacy fallback: build-type is Custom)\nConfiguring library 'core' for visualfp-0.1.0.0...\nPreprocessing library 'core' for visualfp-0.1.0.0...\nBuilding library 'core' for visualfp-0.1.0.0...\n[ 2 of 30] Compiling Directions       ( core/Directions.hs, /home/m/.cache/hie-bios/dist-visualfp-0b29c3f7d5e8114c16f10f65612fbe90/build/x86_64-linux/ghc-9.12.2/visualfp-
{... some of the unnecessary part of the log removed because of message limits ...}
[30 of 30] Compiling CodeGeneration.ImplementationGenerator ( core/CodeGeneration/ImplementationGenerator.hs, /home/m/.cache/hie-bios/dist-visualfp-0b29c3f7d5e8114c16f10f65612fbe90/build/x86_64-linux/ghc-9.12.2/visualfp-0.1.0.0/l/core/build/core/CodeGeneration/ImplementationGenerator.o, /home/m/.cache/hie-bios/dist-visualfp-0b29c3f7d5e8114c16f10f65612fbe90/build/x86_64-linux/ghc-9.12.2/visualfp-0.1.0.0/l/core/build/core/CodeGeneration/ImplementationGenerator.dyn_o ) [Source file changed]\n\nFailed to build gi-soup2-2.4.30.\nBuild log (\n/home/m/.cabal/logs/ghc-9.12.2/gi-soup2-2.4.30-4a0e2ba5a846a7e9e986bd913725a7580492a27940f1c40bdc3c1030009d79fa.log\n):\n[1 of 2] Compiling Main             ( dist/setup/setup.hs, dist/setup/Main.o )\n[2 of 2] Linking dist/setup/setup\nConfiguring gi-soup2-2.4.30...\nPreprocessing library for gi-soup2-2.4.30...\nBuilding library for gi-soup2-2.4.30...\n[  1 of 122] Compiling GI.Soup.Config   ( GI/Soup/Config.hs, dist/build/GI/Soup/Config.o, dist/build/GI/Soup/Config.dyn_o )\n[  2 of 122] Compiling GI.Soup.Constants ( GI/Soup/Constants.hs, dist/build/GI/Soup/Constants.o, dist/build/GI/Soup/Constants.dyn_o )\n[  3 of 122] Compiling GI.Soup.Enums[boot] ( GI/Soup/Enums.hs-boot, dist/build/GI/Soup/Enums.o-boot, dist/build/GI/Soup/Enums.dyn_o-boot )\n[  4 of 122] Compiling GI.Soup.Enums    ( GI/Soup/Enums.hs, dist/build/GI/Soup/Enums.o, dist/build/GI/Soup/Enums.dyn_o )\n[  5 of 122] Compiling GI.Soup.Flags[boot] ( GI/Soup/Flags.hs-boot, dist/build/GI/Soup/Flags.o-boot, dist/build/GI/Soup/Flags.dyn_o-boot )\n[  6 of 122] Compiling GI.Soup.Flags    ( GI/Soup/Flags.hs, dist/build/GI/Soup/Flags.o, dist/build/GI/Soup/Flags.dyn_o )\n[  7 of 122] Compiling GI.Soup.Objects.WebsocketExtension[boot] ( GI/Soup/Objects/WebsocketExtension.hs-boot, dist/build/GI/Soup/Objects/WebsocketExtension.o-boot, dist/build/GI/Soup/Objects/WebsocketExtension.dyn_o-boot )\n[  8 of 122] Compiling GI.Soup.Objects.WebsocketExtension ( GI/Soup/Objects/WebsocketExtension.hs, dist/build/GI/Soup/Objects/WebsocketExtension.o, dist/build/GI/Soup/Objects/WebsocketExtension.dyn_o )\n[  9 of 122] Compiling GI.Soup.Objects.WebsocketExtensionDeflate[boot] ( GI/Soup/Objects/WebsocketExtensionDeflate.hs-boot, dist/build/GI/Soup/Objects/WebsocketExtensionDeflate.o-boot, dist/build/GI/Soup/Objects/WebsocketExtensionDeflate.dyn_o-boot )\n[ 10 of 122] Compiling GI.Soup.Objects.WebsocketExtensionDeflate ( GI/Soup/Objects/WebsocketExtensionDeflate.hs, dist/build/GI/Soup/Objects/WebsocketExtensionDeflate.o, dist/build/GI/Soup/Objects/WebsocketExtensionDeflate.dyn_o )\n[ 11 of 122] Compiling GI.Soup.Structs.Buffer[boot] ( GI/Soup/Structs/Buffer.hs-boot, dist/build/GI/Soup/Structs/Buffer.o-boot, dist/build/GI/Soup/Structs/Buffer.dyn_o-boot )\n[ 12 of 122] Compiling GI.Soup.Structs.Buffer ( GI/Soup/Structs/Buffer.hs, dist/build/GI/Soup/Structs/Buffer.o, dist/build/GI/Soup/Structs/Buffer.dyn_o )\n[ 13 of 122] Compiling GI.Soup.Structs.Connection[boot] ( GI/Soup/Structs/Connection.hs-boot, dist/build/GI/Soup/Structs/Connection.o-boot, dist/build/GI/Soup/Structs/Connection.dyn_o-boot )\n[ 14 of 122] Compiling GI.Soup.Structs.Connection ( GI/Soup/Structs/Connection.hs, dist/build/GI/Soup/Structs/Connection.o, dist/build/GI/Soup/Structs/Connection.dyn_o )\n[ 15 of 122] Compiling GI.Soup.Structs.Date[boot] ( GI/Soup/Structs/Date.hs-boot, dist/build/GI/Soup/Structs/Date.o-boot, dist/build/GI/Soup/Structs/Date.dyn_o-boot )\n[ 16 of 122] Compiling GI.Soup.Structs.Date ( GI/Soup/Structs/Date.hs, dist/build/GI/Soup/Structs/Date.o, dist/build/GI/Soup/Structs/Date.dyn_o )\n[ 17 of 122] Compiling GI.Soup.Structs.MessageBody[boot] ( GI/Soup/Structs/MessageBody.hs-boot, dist/build/GI/Soup/Structs/MessageBody.o-boot, dist/build/GI/Soup/Structs/MessageBody.dyn_o-boot )\n[ 18 of 122] Compiling GI.Soup.Structs.MessageBody ( GI/Soup/Structs/MessageBody.hs, dist/build/GI/Soup/Structs/MessageBody.o, dist/build/GI/Soup/Structs/MessageBody.dyn_o )\n[ 19 of 122] Compiling GI.Soup.Structs.MessageQueue[boot] ( GI/Soup/Structs/MessageQueue.hs-boot, dist/build/GI/Soup/Structs/MessageQueue.o-boot, dist/build/GI/Soup/Structs/MessageQueue.dyn_o-boot )\n[ 20 of 122] Compiling GI.Soup.Structs.MessageQueue ( GI/Soup/Structs/MessageQueue.hs, dist/build/GI/Soup/Structs/MessageQueue.o, dist/build/GI/Soup/Structs/MessageQueue.dyn_o )\n[ 21 of 122] Compiling GI.Soup.Structs.MessageQueueItem[boot] ( GI/Soup/Structs/MessageQueueItem.hs-boot, dist/build/GI/Soup/Structs/MessageQueueItem.o-boot, dist/build/GI/Soup/Structs/MessageQueueItem.dyn_o-boot )\n[ 22 of 122] Compiling GI.Soup.Structs.MessageQueueItem ( GI/Soup/Structs/MessageQueueItem.hs, dist/build/GI/Soup/Structs/MessageQueueItem.o, dist/build/GI/Soup/Structs/MessageQueueItem.dyn_o )\n[ 23 of 122] Compiling GI.Soup.Structs.Range[boot] ( GI/Soup/Structs/Range.hs-boot, dist/build/GI/Soup/Structs/Range.o-boot, dist/build/GI/Soup/Structs/Range.dyn_o-boot )\n[ 24 of 122] Compiling GI.Soup.Structs.Range ( GI/Soup/Structs/Range.hs, dist/build/GI/Soup/Structs/Range.o, dist/build/GI/Soup/Structs/Range.dyn_o )\n[ 25 of 122] Compiling GI.Soup.Structs.URI[boot] ( GI/Soup/Structs/URI.hs-boot, dist/build/GI/Soup/Structs/URI.o-boot, dist/build/GI/Soup/Structs/URI.dyn_o-boot )\n[ 26 of 122] Compiling GI.Soup.Structs.URI ( GI/Soup/Structs/URI.hs, dist/build/GI/Soup/Structs/URI.o, dist/build/GI/Soup/Structs/URI.dyn_o )\n[ 27 of 122] Compiling GI.Soup.Structs.Cookie[boot] ( GI/Soup/Structs/Cookie.hs-boot, dist/build/GI/Soup/Structs/Cookie.o-boot, dist/build/GI/Soup/Structs/Cookie.dyn_o-boot )\n[ 28 of 122] Compiling GI.Soup.Structs.Cookie ( GI/Soup/Structs/Cookie.hs, dist/build/GI/Soup/Structs/Cookie.o, dist/build/GI/Soup/Structs/Cookie.dyn_o )\n[ 29 of 122] Compiling GI.Soup.Objects.WebsocketConnection[boot] ( GI/Soup/Objects/WebsocketConnection.hs-boot, dist/build/GI/Soup/Objects/WebsocketConnection.o-boot, dist/build/GI/Soup/Objects/WebsocketConnection.dyn_o-boot )\n[ 30 of 122] Compiling GI.Soup.Objects.WebsocketConnection ( GI/Soup/Objects/WebsocketConnection.hs, dist/build/GI/Soup/Objects/WebsocketConnection.o, dist/build/GI/Soup/Objects/WebsocketConnection.dyn_o )\n[ 31 of 122] Compiling GI.Soup.Interfaces.PasswordManager[boot] ( GI/Soup/Interfaces/PasswordManager.hs-boot, dist/build/GI/Soup/Interfaces/PasswordManager.o-boot, dist/build/GI/Soup/Interfaces/PasswordManager.dyn_o-boot )\n[ 32 of 122] Compiling GI.Soup.Interfaces.ProxyResolver[boot] ( GI/Soup/Interfaces/ProxyResolver.hs-boot, dist/build/GI/Soup/Interfaces/ProxyResolver.o-boot, dist/build/GI/Soup/Interfaces/ProxyResolver.dyn_o-boot )\n[ 33 of 122] Compiling GI.Soup.Interfaces.ProxyURIResolver[boot] ( GI/Soup/Interfaces/ProxyURIResolver.hs-boot, dist/build/GI/Soup/Interfaces/ProxyURIResolver.o-boot, dist/build/GI/Soup/Interfaces/ProxyURIResolver.dyn_o-boot )\n[ 34 of 122] Compiling GI.Soup.Objects.AuthDomainBasic[boot] ( GI/Soup/Objects/AuthDomainBasic.hs-boot, dist/build/GI/Soup/Objects/AuthDomainBasic.o-boot, dist/build/GI/Soup/Objects/AuthDomainBasic.dyn_o-boot )\n[ 35 of 122] Compiling GI.Soup.Objects.AuthDomainDigest[boot] ( GI/Soup/Objects/AuthDomainDigest.hs-boot, dist/build/GI/Soup/Objects/AuthDomainDigest.o-boot, dist/build/GI/Soup/Objects/AuthDomainDigest.dyn_o-boot )\n[ 36 of 122] Compiling GI.Soup.Objects.Logger[boot] ( GI/Soup/Objects/Logger.hs-boot, dist/build/GI/Soup/Objects/Logger.o-boot, dist/build/GI/Soup/Objects/Logger.dyn_o-boot )\n[ 37 of 122] Compiling GI.Soup.Objects.Server[boot] ( GI/Soup/Objects/Server.hs-boot, dist/build/GI/Soup/Objects/Server.o-boot, dist/build/GI/Soup/Objects/Server.dyn_o-boot )\n[ 38 of 122] Compiling GI.Soup.Objects.AuthDomain[boot] ( GI/Soup/Objects/AuthDomain.hs-boot, dist/build/GI/Soup/Objects/AuthDomain.o-boot, dist/build/GI/Soup/Objects/AuthDomain.dyn_o-boot )\n[ 39 of 122] Compiling GI.Soup.Interfaces.SessionFeature[boot] ( GI/Soup/Interfaces/SessionFeature.hs-boot, dist/build/GI/Soup/Interfaces/SessionFeature.o-boot, dist/build/GI/Soup/Interfaces/SessionFeature.dyn_o-boot )\n[ 40 of 122] Compiling GI.Soup.Objects.Auth[boot] ( GI/Soup/Objects/Auth.hs-boot, dist/build/GI/Soup/Objects/Auth.o-boot, dist/build/GI/Soup/Objects/Auth.dyn_o-boot )\n[ 41 of 122] Compiling GI.Soup.Objects.Message[boot] ( GI/Soup/Objects/Message.hs-boot, dist/build/GI/Soup/Objects/Message.o-boot, dist/build/GI/Soup/Objects/Message.dyn_o-boot )\n[ 42 of 122] Compiling GI.Soup.Objects.Request[boot] ( GI/Soup/Objects/Request.hs-boot, dist/build/GI/Soup/Objects/Request.o-boot, dist/build/GI/Soup/Objects/Request.dyn_o-boot )\n[ 43 of 122] Compiling GI.Soup.Objects.RequestHTTP[boot] ( GI/Soup/Objects/RequestHTTP.hs-boot, dist/build/GI/Soup/Objects/RequestHTTP.o-boot, dist/build/GI/Soup/Objects/RequestHTTP.dyn_o-boot )\n[ 44 of 122] Compiling GI.Soup.Objects.Session[boot] ( GI/Soup/Objects/Session.hs-boot, dist/build/GI/Soup/Objects/Session.o-boot, dist/build/GI/Soup/Objects/Session.dyn_o-boot )\n[ 45 of 122] Compiling GI.Soup.Objects.Address[boot] ( GI/Soup/Objects/Address.hs-boot, dist/build/GI/Soup/Objects/Address.o-boot, dist/build/GI/Soup/Objects/Address.dyn_o-boot )\n[ 46 of 122] Compiling GI.Soup.Objects.Socket[boot] ( GI/Soup/Objects/Socket.hs-boot, dist/build/GI/Soup/Objects/Socket.o-boot, dist/build/GI/Soup/Objects/Socket.dyn_o-boot )\n[ 47 of 122] Compiling GI.Soup.Structs.ClientContext[boot] ( GI/Soup/Structs/ClientContext.hs-boot, dist/build/GI/Soup/Structs/ClientContext.o-boot, dist/build/GI/Soup/Structs/ClientContext.dyn_o-boot )\n[ 48 of 122] Compiling GI.Soup.Structs.MessageHeaders[boot] ( GI/Soup/Structs/MessageHeaders.hs-boot, dist/build/GI/Soup/Structs/MessageHeaders.o-boot, dist/build/GI/Soup/Structs/MessageHeaders.dyn_o-boot )\n[ 49 of 122] Compiling GI.Soup.Callbacks ( GI/Soup/Callbacks.hs, dist/build/GI/Soup/Callbacks.o, dist/build/GI/Soup/Callbacks.dyn_o )\n[ 50 of 122] Compiling GI.Soup.Objects.Socket ( GI/Soup/Objects/Socket.hs, dist/build/GI/Soup/Objects/Socket.o, dist/build/GI/Soup/Objects/Socket.dyn_o )\n[ 51 of 122] Compiling GI.Soup.Objects.Address ( GI/Soup/Objects/Address.hs, dist/build/GI/Soup/Objects/Address.o, dist/build/GI/Soup/Objects/Address.dyn_o )\n[ 52 of 122] Compiling GI.Soup.Structs.MessageHeaders ( GI/Soup/Structs/MessageHeaders.hs, dist/build/GI/Soup/Structs/MessageHeaders.o, dist/build/GI/Soup/Structs/MessageHeaders.dyn_o )\n[ 53 of 122] Compiling GI.Soup.Structs.ClientContext ( GI/Soup/Structs/ClientContext.hs, dist/build/GI/Soup/Structs/ClientContext.o, dist/build/GI/Soup/Structs/ClientContext.dyn_o )\n[ 54 of 122] Compiling GI.Soup.Objects.Session ( GI/Soup/Objects/Session.hs, dist/build/GI/Soup/Objects/Session.o, dist/build/GI/Soup/Objects/Session.dyn_o )\n[ 55 of 122] Compiling GI.Soup.Objects.RequestHTTP ( GI/Soup/Objects/RequestHTTP.hs, dist/build/GI/Soup/Objects/RequestHTTP.o, dist/build/GI/Soup/Objects/RequestHTTP.dyn_o )\n[ 56 of 122] Compiling GI.Soup.Objects.Request ( GI/Soup/Objects/Request.hs, dist/build/GI/Soup/Objects/Request.o, dist/build/GI/Soup/Objects/Request.dyn_o )\n[ 57 of 122] Compiling GI.Soup.Objects.Message ( GI/Soup/Objects/Message.hs, dist/build/GI/Soup/Objects/Message.o, dist/build/GI/Soup/Objects/Message.dyn_o )\n[ 58 of 122] Compiling GI.Soup.Objects.Auth ( GI/Soup/Objects/Auth.hs, dist/build/GI/Soup/Objects/Auth.o, dist/build/GI/Soup/Objects/Auth.dyn_o )\n[ 59 of 122] Compiling GI.Soup.Interfaces.SessionFeature ( GI/Soup/Interfaces/SessionFeature.hs, dist/build/GI/Soup/Interfaces/SessionFeature.o, dist/build/GI/Soup/Interfaces/SessionFeature.dyn_o )\n[ 60 of 122] Compiling GI.Soup.Objects.AuthDomain ( GI/Soup/Objects/AuthDomain.hs, dist/build/GI/Soup/Objects/AuthDomain.o, dist/build/GI/Soup/Objects/AuthDomain.dyn_o )\n[ 61 of 122] Compiling GI.Soup.Objects.Server ( GI/Soup/Objects/Server.hs, dist/build/GI/Soup/Objects/Server.o, dist/build/GI/Soup/Objects/Server.dyn_o )\n[ 62 of 122] Compiling GI.Soup.Objects.Logger ( GI/Soup/Objects/Logger.hs, dist/build/GI/Soup/Objects/Logger.o, dist/build/GI/Soup/Objects/Logger.dyn_o )\n[ 63 of 122] Compiling GI.Soup.Objects.AuthDomainDigest ( GI/Soup/Objects/AuthDomainDigest.hs, dist/build/GI/Soup/Objects/AuthDomainDigest.o, dist/build/GI/Soup/Objects/AuthDomainDigest.dyn_o )\n[ 64 of 122] Compiling GI.Soup.Objects.AuthDomainBasic ( GI/Soup/Objects/AuthDomainBasic.hs, dist/build/GI/Soup/Objects/AuthDomainBasic.o, dist/build/GI/Soup/Objects/AuthDomainBasic.dyn_o )\n[ 65 of 122] Compiling GI.Soup.Interfaces.ProxyURIResolver ( GI/Soup/Interfaces/ProxyURIResolver.hs, dist/build/GI/Soup/Interfaces/ProxyURIResolver.o, dist/build/GI/Soup/Interfaces/ProxyURIResolver.dyn_o )\n[ 66 of 122] Compiling GI.Soup.Interfaces.ProxyResolver ( GI/Soup/Interfaces/ProxyResolver.hs, dist/build/GI/Soup/Interfaces/ProxyResolver.o, dist/build/GI/Soup/Interfaces/ProxyResolver.dyn_o )\n[ 67 of 122] Compiling GI.Soup.Interfaces.PasswordManager ( GI/Soup/Interfaces/PasswordManager.hs, dist/build/GI/Soup/Interfaces/PasswordManager.o, dist/build/GI/Soup/Interfaces/PasswordManager.dyn_o )\n[ 68 of 122] Compiling GI.Soup.Structs.Multipart[boot] ( GI/Soup/Structs/Multipart.hs-boot, dist/build/GI/Soup/Structs/Multipart.o-boot, dist/build/GI/Soup/Structs/Multipart.dyn_o-boot )\n[ 69 of 122] Compiling GI.Soup.Structs.Multipart ( GI/Soup/Structs/Multipart.hs, dist/build/GI/Soup/Structs/Multipart.o, dist/build/GI/Soup/Structs/Multipart.dyn_o )\n[ 70 of 122] Compiling GI.Soup.Structs.MessageHeadersIter[boot] ( GI/Soup/Structs/MessageHeadersIter.hs-boot, dist/build/GI/Soup/Structs/MessageHeadersIter.o-boot, dist/build/GI/Soup/Structs/MessageHeadersIter.dyn_o-boot )\n[ 71 of 122] Compiling GI.Soup.Structs.MessageHeadersIter ( GI/Soup/Structs/MessageHeadersIter.hs, dist/build/GI/Soup/Structs/MessageHeadersIter.o, dist/build/GI/Soup/Structs/MessageHeadersIter.dyn_o )\nGI/Soup/Structs/MessageHeadersIter.hs:280:46: error: [GHC-83865]\n    • Couldn't match type ā€˜MessageHeadersIter’\n                     with ā€˜Ptr MessageHeadersIter’\n      Expected: Ptr (Ptr MessageHeadersIter)\n        Actual: Ptr MessageHeadersIter\n    • In the first argument of ā€˜soup_message_headers_iter_next’, namely\n        ā€˜iter''’\n      In a stmt of a 'do' block:\n        result <- soup_message_headers_iter_next iter'' name value\n      In the second argument of ā€˜($)’, namely\n        ā€˜do iter' <- unsafeManagedPtrGetPtr iter\n            iter'' <- callocBytes 24 :: IO (Ptr MessageHeadersIter)\n            memcpy iter'' iter' 24\n            name <- callocMem :: IO (Ptr CString)\n            ....’\n    |\n280 |     result <- soup_message_headers_iter_next iter'' name value\n    |                                              ^^^^^^\n\nGI/Soup/Structs/MessageHeadersIter.hs:283:45: error: [GHC-83865]\n    • Couldn't match expected type ā€˜Ptr MessageHeadersIter’\n                  with actual type ā€˜MessageHeadersIter’\n    • In the second argument of ā€˜newPtr’, namely ā€˜iter'''’\n      In a stmt of a 'do' block:\n        iter'''' <- (newPtr MessageHeadersIter) iter'''\n      In the second argument of ā€˜($)’, namely\n        ā€˜do iter' <- unsafeManagedPtrGetPtr iter\n            iter'' <- callocBytes 24 :: IO (Ptr MessageHeadersIter)\n            memcpy iter'' iter' 24\n            name <- callocMem :: IO (Ptr CString)\n            ....’\n    |\n283 |     iter'''' <- (newPtr MessageHeadersIter) iter'''\n    |                                             ^^^^^^^\n\n[ 72 of 122] Compiling GI.Soup.Structs.HSTSPolicy[boot] ( GI/Soup/Structs/HSTSPolicy.hs-boot, dist/build/GI/Soup/Structs/HSTSPolicy.o-boot, dist/build/GI/Soup/Structs/HSTSPolicy.dyn_o-boot )\n[ 73 of 122] Compiling GI.Soup.Structs.HSTSPolicy ( GI/Soup/Structs/HSTSPolicy.hs, dist/build/GI/Soup/Structs/HSTSPolicy.o, dist/build/GI/Soup/Structs/HSTSPolicy.dyn_o )\n[ 74 of 122] Compiling GI.Soup.Objects.WebsocketExtensionManager[boot] ( GI/Soup/Objects/WebsocketExtensionManager.hs-boot, dist/build/GI/Soup/Objects/WebsocketExtensionManager.o-boot, dist/build/GI/Soup/Objects/WebsocketExtensionManager.dyn_o-boot )\n[ 75 of 122] Compiling GI.Soup.Objects.WebsocketExtensionManager ( GI/Soup/Objects/WebsocketExtensionManager.hs, dist/build/GI/Soup/Objects/WebsocketExtensionManager.o, dist/build/GI/Soup/Objects/WebsocketExtensionManager.dyn_o )\n[ 76 of 122] Compiling GI.Soup.Objects.SessionSync[boot] ( GI/Soup/Objects/SessionSync.hs-boot, dist/build/GI/Soup/Objects/SessionSync.o-boot, dist/build/GI/Soup/Objects/SessionSync.dyn_o-boot )\n[ 77 of 122] Compiling GI.Soup.Objects.SessionSync ( GI/Soup/Objects/SessionSync.hs, dist/build/GI/Soup/Objects/SessionSync.o, dist/build/GI/Soup/Objects/SessionSync.dyn_o )\n[ 78 of 122] Compiling GI.Soup.Objects.SessionAsync[boot] ( GI/Soup/Objects/SessionAsync.hs-boot, dist/build/GI/Soup/Objects/SessionAsync.o-boot, dist/build/GI/Soup/Objects/SessionAsync.dyn_o-boot )\n[ 79 of 122] Compiling GI.Soup.Objects.SessionAsync ( GI/Soup/Objects/SessionAsync.hs, dist/build/GI/Soup/Objects/SessionAsync.o, dist/build/GI/Soup/Objects/SessionAsync.dyn_o )\n[ 80 of 122] Compiling GI.Soup.Objects.Requester[boot] ( GI/Soup/Objects/Requester.hs-boot, dist/build/GI/Soup/Objects/Requester.o-boot, dist/build/GI/Soup/Objects/Requester.dyn_o-boot )\n[ 81 of 122] Compiling GI.Soup.Objects.Requester ( GI/Soup/Objects/Requester.hs, dist/build/GI/Soup/Objects/Requester.o, dist/build/GI/Soup/Objects/Requester.dyn_o )\n[ 82 of 122] Compiling GI.Soup.Objects.RequestFile[boot] ( GI/Soup/Objects/RequestFile.hs-boot, dist/build/GI/Soup/Objects/RequestFile.o-boot, dist/build/GI/Soup/Objects/RequestFile.dyn_o-boot )\n[ 83 of 122] Compiling GI.Soup.Objects.RequestFile ( GI/Soup/Objects/RequestFile.hs, dist/build/GI/Soup/Objects/RequestFile.o, dist/build/GI/Soup/Objects/RequestFile.dyn_o )\n[ 84 of 122] Compiling GI.Soup.Objects.RequestData[boot] ( GI/Soup/Objects/RequestData.hs-boot, dist/build/GI/Soup/Objects/RequestData.o-boot, dist/build/GI/Soup/Objects/RequestData.dyn_o-boot )\n[ 85 of 122] Compiling GI.Soup.Objects.RequestData ( GI/Soup/Objects/RequestData.hs, dist/build/GI/Soup/Objects/RequestData.o, dist/build/GI/Soup/Objects/RequestData.dyn_o )\n[ 86 of 122] Compiling GI.Soup.Objects.MultipartInputStream[boot] ( GI/Soup/Objects/MultipartInputStream.hs-boot, dist/build/GI/Soup/Objects/MultipartInputStream.o-boot, dist/build/GI/Soup/Objects/MultipartInputStream.dyn_o-boot )\n[ 87 of 122] Compiling GI.Soup.Objects.MultipartInputStream ( GI/Soup/Objects/MultipartInputStream.hs, dist/build/GI/Soup/Objects/MultipartInputStream.o, dist/build/GI/Soup/Objects/MultipartInputStream.dyn_o )\n[ 88 of 122] Compiling GI.Soup.Objects.HSTSEnforcer[boot] ( GI/Soup/Objects/HSTSEnforcer.hs-boot, dist/build/GI/Soup/Objects/HSTSEnforcer.o-boot, dist/build/GI/Soup/Objects/HSTSEnforcer.dyn_o-boot )\n[ 89 of 122] Compiling GI.Soup.Objects.HSTSEnforcer ( GI/Soup/Objects/HSTSEnforcer.hs, dist/build/GI/Soup/Objects/HSTSEnforcer.o, dist/build/GI/Soup/Objects/HSTSEnforcer.dyn_o )\n[ 90 of 122] Compiling GI.Soup.Objects.HSTSEnforcerDB[boot] ( GI/Soup/Objects/HSTSEnforcerDB.hs-boot, dist/build/GI/Soup/Objects/HSTSEnforcerDB.o-boot, dist/build/GI/Soup/Objects/HSTSEnforcerDB.dyn_o-boot )\n[ 91 of 122] Compiling GI.Soup.Objects.HSTSEnforcerDB ( GI/Soup/Objects/HSTSEnforcerDB.hs, dist/build/GI/Soup/Objects/HSTSEnforcerDB.o, dist/build/GI/Soup/Objects/HSTSEnforcerDB.dyn_o )\n[ 92 of 122] Compiling GI.Soup.Objects.CookieJar[boot] ( GI/Soup/Objects/CookieJar.hs-boot, dist/build/GI/Soup/Objects/CookieJar.o-boot, dist/build/GI/Soup/Objects/CookieJar.dyn_o-boot )\n[ 93 of 122] Compiling GI.Soup.Objects.CookieJar ( GI/Soup/Objects/CookieJar.hs, dist/build/GI/Soup/Objects/CookieJar.o, dist/build/GI/Soup/Objects/CookieJar.dyn_o )\n[ 94 of 122] Compiling GI.Soup.Objects.CookieJarText[boot] ( GI/Soup/Objects/CookieJarText.hs-boot, dist/build/GI/Soup/Objects/CookieJarText.o-boot, dist/build/GI/Soup/Objects/CookieJarText.dyn_o-boot )\n[ 95 of 122] Compiling GI.Soup.Objects.CookieJarText ( GI/Soup/Objects/CookieJarText.hs, dist/build/GI/Soup/Objects/CookieJarText.o, dist/build/GI/Soup/Objects/CookieJarText.dyn_o )\n[ 96 of 122] Compiling GI.Soup.Objects.CookieJarDB[boot] ( GI/Soup/Objects/CookieJarDB.hs-boot, dist/build/GI/Soup/Objects/CookieJarDB.o-boot, dist/build/GI/Soup/Objects/CookieJarDB.dyn_o-boot )\n[ 97 of 122] Compiling GI.Soup.Objects.CookieJarDB ( GI/Soup/Objects/CookieJarDB.hs, dist/build/GI/Soup/Objects/CookieJarDB.o, dist/build/GI/Soup/Objects/CookieJarDB.dyn_o )\n[ 98 of 122] Compiling GI.Soup.Objects.ContentSniffer[boot] ( GI/Soup/Objects/ContentSniffer.hs-boot, dist/build/GI/Soup/Objects/ContentSniffer.o-boot, dist/build/GI/Soup/Objects/ContentSniffer.dyn_o-boot )\n[ 99 of 122] Compiling GI.Soup.Objects.ContentSniffer ( GI/Soup/Objects/ContentSniffer.hs, dist/build/GI/Soup/Objects/ContentSniffer.o, dist/build/GI/Soup/Objects/ContentSniffer.dyn_o )\n[100 of 122] Compiling GI.Soup.Objects.ContentDecoder[boot] ( GI/Soup/Objects/ContentDecoder.hs-boot, dist/build/GI/Soup/Objects/ContentDecoder.o-boot, dist/build/GI/Soup/Objects/ContentDecoder.dyn_o-boot )\n[101 of 122] Compiling GI.Soup.Objects.ContentDecoder ( GI/Soup/Objects/ContentDecoder.hs, dist/build/GI/Soup/Objects/ContentDecoder.o, dist/build/GI/Soup/Objects/ContentDecoder.dyn_o )\n[102 of 122] Compiling GI.Soup.Objects.Cache[boot] ( GI/Soup/Objects/Cache.hs-boot, dist/build/GI/Soup/Objects/Cache.o-boot, dist/build/GI/Soup/Objects/Cache.dyn_o-boot )\n[103 of 122] Compiling GI.Soup.Objects.Cache ( GI/Soup/Objects/Cache.hs, dist/build/GI/Soup/Objects/Cache.o, dist/build/GI/Soup/Objects/Cache.dyn_o )\n[104 of 122] Compiling GI.Soup.Objects.AuthNegotiate[boot] ( GI/Soup/Objects/AuthNegotiate.hs-boot, dist/build/GI/Soup/Objects/AuthNegotiate.o-boot, dist/build/GI/Soup/Objects/AuthNegotiate.dyn_o-boot )\n[105 of 122] Compiling GI.Soup.Objects.AuthNegotiate ( GI/Soup/Objects/AuthNegotiate.hs, dist/build/GI/Soup/Objects/AuthNegotiate.o, dist/build/GI/Soup/Objects/AuthNegotiate.dyn_o )\n[106 of 122] Compiling GI.Soup.Objects.AuthNTLM[boot] ( GI/Soup/Objects/AuthNTLM.hs-boot, dist/build/GI/Soup/Objects/AuthNTLM.o-boot, dist/build/GI/Soup/Objects/AuthNTLM.dyn_o-boot )\n[107 of 122] Compiling GI.Soup.Objects.AuthNTLM ( GI/Soup/Objects/AuthNTLM.hs, dist/build/GI/Soup/Objects/AuthNTLM.o, dist/build/GI/Soup/Objects/AuthNTLM.dyn_o )\n[108 of 122] Compiling GI.Soup.Objects.AuthManager[boot] ( GI/Soup/Objects/AuthManager.hs-boot, dist/build/GI/Soup/Objects/AuthManager.o-boot, dist/build/GI/Soup/Objects/AuthManager.dyn_o-boot )\n[109 of 122] Compiling GI.Soup.Objects.AuthManager ( GI/Soup/Objects/AuthManager.hs, dist/build/GI/Soup/Objects/AuthManager.o, dist/build/GI/Soup/Objects/AuthManager.dyn_o )\n[110 of 122] Compiling GI.Soup.Objects.AuthDigest[boot] ( GI/Soup/Objects/AuthDigest.hs-boot, dist/build/GI/Soup/Objects/AuthDigest.o-boot, dist/build/GI/Soup/Objects/AuthDigest.dyn_o-boot )\n[111 of 122] Compiling GI.Soup.Objects.AuthDigest ( GI/Soup/Objects/AuthDigest.hs, dist/build/GI/Soup/Objects/AuthDigest.o, dist/build/GI/Soup/Objects/AuthDigest.dyn_o )\n[112 of 122] Compiling GI.Soup.Objects.AuthBasic[boot] ( GI/Soup/Objects/AuthBasic.hs-boot, dist/build/GI/Soup/Objects/AuthBasic.o-boot, dist/build/GI/Soup/Objects/AuthBasic.dyn_o-boot )\n[113 of 122] Compiling GI.Soup.Objects.AuthBasic ( GI/Soup/Objects/AuthBasic.hs, dist/build/GI/Soup/Objects/AuthBasic.o, dist/build/GI/Soup/Objects/AuthBasic.dyn_o )\n[114 of 122] Compiling GI.Soup.Objects.ProxyResolverDefault[boot] ( GI/Soup/Objects/ProxyResolverDefault.hs-boot, dist/build/GI/Soup/Objects/ProxyResolverDefault.o-boot, dist/build/GI/Soup/Objects/ProxyResolverDefault.dyn_o-boot )\n[115 of 122] Compiling GI.Soup.Objects.ProxyResolverDefault ( GI/Soup/Objects/ProxyResolverDefault.hs, dist/build/GI/Soup/Objects/ProxyResolverDefault.o, dist/build/GI/Soup/Objects/ProxyResolverDefault.dyn_o )\n[116 of 122] Compiling GI.Soup.Objects  ( GI/Soup/Objects.hs, dist/build/GI/Soup/Objects.o, dist/build/GI/Soup/Objects.dyn_o )\n[117 of 122] Compiling GI.Soup.Interfaces ( GI/Soup/Interfaces.hs, dist/build/GI/Soup/Interfaces.o, dist/build/GI/Soup/Interfaces.dyn_o )\n[118 of 122] Compiling GI.Soup.Structs.XMLRPCParams[boot] ( GI/Soup/Structs/XMLRPCParams.hs-boot, dist/build/GI/Soup/Structs/XMLRPCParams.o-boot, dist/build/GI/Soup/Structs/XMLRPCParams.dyn_o-boot )\n[119 of 122] Compiling GI.Soup.Structs.XMLRPCParams ( GI/Soup/Structs/XMLRPCParams.hs, dist/build/GI/Soup/Structs/XMLRPCParams.o, dist/build/GI/Soup/Structs/XMLRPCParams.dyn_o )\n[121 of 122] Compiling GI.Soup.Functions ( GI/Soup/Functions.hs, dist/build/GI/Soup/Functions.o, dist/build/GI/Soup/Functions.dyn_o )\n\nFailed to build webkit2gtk3-javascriptcore-0.14.4.6.\nBuild log (\n/home/m/.cabal/logs/ghc-9.12.2/webkit2gtk3-javascriptcore-0.14.4.6-e338888fe8281e79c6394e3e53741a95909fe0ea837ddbb440d6bba2fd75787e.log\n):\n[1 of 2] Compiling Main             ( dist/setup/setup.hs, dist/setup/Main.o )\n[2 of 2] Linking dist/setup/setup\nConfiguring webkit2gtk3-javascriptcore-0.14.4.6...\nPreprocessing library for webkit2gtk3-javascriptcore-0.14.4.6...\nsetup: Error in C header file.\n\n/usr/include/webkitgtk-4.0/JavaScriptCore/JSBase.h:125: (column 44) [FATAL] \n  >>> Syntax error!\n  The symbol `JSCheckScriptSyntax' does not fit here.\n\n\nError: [Cabal-7125]\nFailed to build gi-soup2-2.4.30 (which is required by lib:ui from visualfp-0.1.0.0). See the build log above for details.\nFailed to build webkit2gtk3-javascriptcore-0.14.4.6 (which is required by lib:ui from visualfp-0.1.0.0). See the build log above for details.\n\n\n\nProcess Environment:\nHIE_BIOS_GHC: /home/m/.ghcup/ghc/9.12.2/lib/ghc-9.12.2/bin/ghc-9.12.2\nHIE_BIOS_GHC_ARGS: -B/home/m/.ghcup/ghc/9.12.2/lib/ghc-9.12.2/lib\n",
	"source": "cradle",
	"startLineNumber": 1,
	"startColumn": 1,
	"endLineNumber": 2,
	"endColumn": 1
}]

Which is the same as from cabal build. I just upgraded the compiler from 9.10.2 to 9.12.2 (because of the compiled size GHC JS Backend - Improve compiled size - #17 by panmona). That’s why the log contains an additional error regarding GI Soup in cabal build / v2-repl:

I/Soup/Structs/MessageHeadersIter.hs:280:46: error: [GHC-83865]
    • Couldn't match type ā€˜MessageHeadersIter’
                     with ā€˜Ptr MessageHeadersIter’
      Expected: Ptr (Ptr MessageHeadersIter)
        Actual: Ptr MessageHeadersIter
    • In the first argument of ā€˜soup_message_headers_iter_next’, namely
        ā€˜iter''’
      In a stmt of a 'do' block:
        result <- soup_message_headers_iter_next iter'' name value
      In the second argument of ā€˜($)’, namely
        ā€˜do iter' <- unsafeManagedPtrGetPtr iter
            iter'' <- callocBytes 24 :: IO (Ptr MessageHeadersIter)
            memcpy iter'' iter' 24
            name <- callocMem :: IO (Ptr CString)
            ....’
    |
280 |     result <- soup_message_headers_iter_next iter'' name value
    |                                              ^^^^^^

GI/Soup/Structs/MessageHeadersIter.hs:283:45: error: [GHC-83865]
    • Couldn't match expected type ā€˜Ptr MessageHeadersIter’
                  with actual type ā€˜MessageHeadersIter’
    • In the second argument of ā€˜newPtr’, namely ā€˜iter'''’
      In a stmt of a 'do' block:
        iter'''' <- (newPtr MessageHeadersIter) iter'''
      In the second argument of ā€˜($)’, namely
        ā€˜do iter' <- unsafeManagedPtrGetPtr iter
            iter'' <- callocBytes 24 :: IO (Ptr MessageHeadersIter)
            memcpy iter'' iter' 24
            name <- callocMem :: IO (Ptr CString)
            ....’
    |
283 |     iter'''' <- (newPtr MessageHeadersIter) iter'''
    |                                             ^^^^^^^

I don’t think HLS works with GHCJS.

HLS is essentially a compiler. And the HLS binaries are built for your host architecture. GHCJS is a cross compiler in contrast.

2 Likes

Okay. In that case we need to get the GHC build working in some way again.
I’m not sure what exactly made this break…

What I’m doing in my projects (but not necessarily possible in your case) is I write the whole project in GHC with small js bits hidden behind CPP (or if pragmas in cabal file), and use HLS on it. Then the JS builds uses a separate cabal.project that points to ghcjs.

1 Like

Thanks for the suggestion!
However, I’m not sure this would help here. We use reflex-dom for the whole UI which depends on the library that is not buildable. And having HLS for this part of the code was truly crucial so far.

Fortunately the other parts of our project don’t depend on reflex-dom and are therefore independently buildable and therefore have support by HLS.

For context: haskell-halogen uses MonadDOM abstraction which hides DOM building primitives, and instance for IO is only given under CPP.

1 Like

Interesting! Do you know of any way to get this behaviour for reflex-dom? Or would we need to do a change in reflex-dom for this?

Don’t think this is a reflex-dom problem, I replied in your issue

2 Likes

You are my hero, thank you for your insights and quick help in the issue! I now got it to work so that it does not need to build webkitgtk because we don’t need it for our project. I created the following cabal.project file:

packages: .

constraints: reflex-dom +use-warp -webkit2gtk
2 Likes

The error shown in the HLS logs seems to be Couldn't compile gi-soup2 - MessageHeadersIter (double) pointer types Ā· Issue #472 Ā· haskell-gi/haskell-gi Ā· GitHub.
We just started running into it in nixpkgs

1 Like