Troubleshooting DUB invocations

Dukc ajieskola at gmail.com
Tue Nov 19 12:06:36 UTC 2019


On Monday, 18 November 2019 at 19:35:13 UTC, Sebastiaan Koppe 
wrote:
> Kinke made some changes in dub to facilitate separate linking 
> for ldc. I am not aware of all the details but the major 
> benefit is that it allows cross compilation with dub and ldc.
>

Yeah, definitely useful if you want to link in, say, a C-borne 
wasm
binary.

> Because of the separate linking the --no-as-needed turned up. 
> As far as I can see it is only needed when compiling for linux.
>
> Which brings up the question, why linux? Aren't we compiling 
> for wasm?
>
> Well yes. But that is just the way things worked up until now, 
> ldc and dub just pick the host machine.
>
> Luckily there is the new dub `--arch` argument that can take a 
> llvm triple, in our case wasm32-unknown-unknown-wasm. This 
> causes dub not to add the `--no-as-needed`.

That was news to me - I thought everything was always being 
compiled to WASM.

>
> Except, that it also passes the triple upwards the dependency 
> tree. Now all the dependencies of spasm get compiled targeting 
> wasm. This is a good thing, except that the optional package 
> which spasm depends on fails to compile with it. There is a 
> newer version that fixes the configuration, but that one fails 
> because of the `from.std` import idiom (it imports the std 
> package from phobos which doesn't recognise wasm and fails with 
> "Unknown OS").

I have sometimes thought that perhaps a static assert isn't the 
best thing to use for unimplemented features in Phobos, precisely 
because of this issue. A @disabled function stub would serve 
better, unless I'm missing something.

>
> In the meantime I am going to make a PR for the optional 
> package to avoid the `from.std` idiom. Although I might end up 
> playing whack-a-mole here, as there might be more dependencies 
> that need a fix now.

"ending up"? If it's like what getting Phobos to work has been 
for me, you're continuing the game, not ending up playing it ;D.

>
> Another workaround that you can use right now is by adding the 
> `--build-mode=allAtOnce` argument to dub. It effectively gets 
> you the old behaviour. It is what I am using in my CI to get it 
> to go green again.

Do not hurry more than you want -I already got my 
extract-dub-failure workaround working.




More information about the Digitalmars-d-learn mailing list