dmjio / miso

:ramen: A tasty Haskell front-end framework
https://haskell-miso.org
BSD 3-Clause "New" or "Revised" License
2.19k stars 139 forks source link

Sample App won't build because of ghcjs-base and github timeout #719

Open joelmccracken opened 1 year ago

joelmccracken commented 1 year ago

Describe the bug I don't believe this is a bug with miso itself, but I believe miso needs to update a dependency somewhere/somehow to fix it:

When i try to build the sample app, it fails. Checking the log, I get the following:

Asked somewhere else and someone shared this article: https://github.blog/2021-09-01-improving-git-protocol-security-github/

Locally, I can see the issue:

To Reproduce Steps to reproduce the behavior:

On a fresh machine, try to build the sample app.

dmjio commented 1 year ago

Are you using cachix as described in README.md ? Using the cached deps. is usually a better experience.

joelmccracken commented 1 year ago

Ah, no, I don't think so. This was a new machine and I haven't set up cachix on it.

I'll try that and report back, hopefully that will unblock me. Though this still seems like an issue?

dmjio commented 1 year ago

It is an issue yea, but nixpkgs might not have the old GHCJS (which just happens to be the most stable). So upgrading isn't an option it seems until the latest GHC supports FFI for its new JS / WASM backends.

dmjio commented 1 year ago

@joelmccracken definitely let me know if cachix does / doesn't work for you. Cheers šŸ»

joelmccracken commented 1 year ago

Just tried it, and it built!

Not sure if you want to keep this open or not since its solved for me, but it might save someone else some time who decides to try it during this weird interim state.

dmjio commented 1 year ago

Letā€™s just hope Google indexes it for others ;)

feel free to join the slack if you have additional questions.

https://haskell-miso.slack.com/

joelmccracken commented 1 year ago

Can I get an invitation? It seems that to create an account I need to have a @haskell-miso.com email address

caryoscelus commented 1 year ago

i've just run into this issue and honestly i don't find using binary cache can be considered a solution. is there any other possible workaround? (i'm fairly new to nix inner workings, but i'm sure it should be possible to extract required ghcjs package and update it to not use git://)

if there's no workaround, what is the estimate of new ghcjs with necessary features being available?

dmjio commented 1 year ago

Using the binary cache is the fix for now. Regarding when miso will be updated to use the new JS / wasm backend I think it depends on when FFI is supported, among other things (template Haskell).

dmjio commented 1 year ago

@caryoscelus https://gitlab.haskell.org/ghc/ghc/-/wikis/javascript-backend#current-status-and-supported-features

caryoscelus commented 1 year ago

Using the binary cache is the fix for now

unfortunately that sounds like the whole setup is effectively not fully open source :(

https://gitlab.haskell.org/ghc/ghc/-/wikis/javascript-backend#current-status-and-supported-features

thanks

dmjio commented 1 year ago

Thereā€™s no corporate pay wall, but if you build at the old hash with the old version of nix it should be reproducible.

dmjio commented 1 year ago

@caryoscelus it does seem like foreign imports are supported, but not exports. This should be okay, I will get back to you as to how long it would take to update.

dmjio commented 1 year ago

@caryoscelus If you'd prefer we can use our own binary cache, with our own s3 bucket and sign our own packages - cachix just makes this more convenient and our closure fits in the free tier. Furthermore, there are plans to upgrade, it's just that the JS backend has no binary distributions yet, so users would need to build / maintain their own GHC.

caryoscelus commented 1 year ago

@dmjio for my purposes i want to be able to build everything myself so different cache doesn't make much difference. right now i'm still evaluating whether to use Haskell&Miso or PureScript, though, since latter seems to have easier support for 'advanced' browser features (WebRTC, IndexedDB)