Thread overview
dub doesn't work with dmd 1:2.082.0-1.0?
Sep 10, 2018
SuperPrower
Sep 13, 2018
rmc
Sep 13, 2018
SuperPrower
Sep 13, 2018
Kagamin
Sep 13, 2018
Jesse Phillips
Sep 14, 2018
rmc
Sep 14, 2018
Jesse Phillips
Sep 17, 2018
rmc
Sep 18, 2018
SuperPrower
September 10, 2018
dub was working nice until I updated my system (I run ArchLinux32) just now. dmd was updated from version 1:2.081.2-1.0 to 1:2.082.0-1.0 (according to pacman package manager). After that, I couldn't invoke dub for anything. Here is the attempt to run `dub --vverbose`:

```
Using dub registry url 'https://code.dlang.org/'
Refreshing local packages (refresh existing: true)...
Looking for local package map at /var/lib/dub/packages/local-packages.json
Looking for local package map at /home/superprower/.dub/packages/local-packages.json
Try to load local package map at /home/superprower/.dub/packages/local-packages.json
iterating dir /home/superprower/.dub/packages/
iterating dir /home/superprower/.dub/packages/ entry ncurses-master
iterating dir /home/superprower/.dub/packages/ entry local-packages.json
iterating dir /home/superprower/.dub/packages/ entry d-profile-viewer-1.1.3
No package found in current working directory.
Failed to invoke the compiler /usr/bin/dmd to determine the build platform: Error: missing or null command line arguments

Full exception: object.Exception@source/dub/compilers/compiler.d(127): Failed to invoke the compiler /usr/bin/dmd to determine the build platform: Error: missing or null command line arguments

----------------
??:? pure @safe bool std.exception.enforce!().enforce!(bool).enforce(bool, lazy const(char)[], immutable(char)[], uint) [0xa744bd]
??:? dub.platform.BuildPlatform dub.compilers.compiler.Compiler.probePlatform(immutable(char)[], immutable(char)[][], immutable(char)[]) [0x80759e]
??:? dub.platform.BuildPlatform dub.compilers.dmd.DMDCompiler.determinePlatform(ref dub.compilers.buildsettings.BuildSettings, immutable(char)[], immutable(char)[]) [0x81323f]
??:? [0x810de2]
??:? void dub.commandline.PackageBuildCommand.setupPackage(dub.dub.Dub, immutable(char)[], immutable(char)[]) [0x910e46]
??:? int dub.commandline.GenerateCommand.execute(dub.dub.Dub, immutable(char)[][], immutable(char)[][]) [0x92b158]
??:? int dub.commandline.RunCommand.execute(dub.dub.Dub, immutable(char)[][], immutable(char)[][]) [0x92b0ab]
??:? int dub.commandline.runDubCommandLine(immutable(char)[][]) [0x9f87e3]
??:? _Dmain [0x9fe3bf]
```

I downgraded dmd for now, but what may be the cause of this? I couldn't find anything related to this particular error (`missing or null command line arguments`).
September 13, 2018
On Monday, 10 September 2018 at 09:23:19 UTC, SuperPrower wrote:
> dub was working nice until I updated my system (I run ArchLinux32) just now. dmd was updated from version 1:2.081.2-1.0 to 1:2.082.0-1.0 (according to pacman package manager). After that, I couldn't invoke dub for anything. Here is the attempt to run `dub --vverbose`:
> [snip]
> Full exception: object.Exception@source/dub/compilers/compiler.d(127): Failed to invoke the compiler /usr/bin/dmd to determine the build platform: Error: missing or null command line arguments
> [snip]

There don't seem to be any changes to dub or dmd directly related to this error perhaps its a packaging issue?

https://github.com/dlang/dmd/blame/61fe641e9a5d40617d6d20aa1abc64e77c00b6ef/src/dmd/mars.d#L205

https://github.com/dlang/dub/blame/765cf8ea8bec9b8da05e41e4987f1b37f02305bc/source/dub/compilers/compiler.d#L127

Just out of curiosity; Why are you using ArchLinux32?

R
September 13, 2018
You didn't update dub?
September 13, 2018
On Thursday, 13 September 2018 at 06:11:53 UTC, rmc wrote:
> There don't seem to be any changes to dub or dmd directly related to this error perhaps its a packaging issue?

I really don't know, looks like it, but it's really weird, like, why and what exactly happened? I'll try asking same question on ArchLinux32 forums - maybe, maintainer forgot something or I dunno.

> Just out of curiosity; Why are you using ArchLinux32?

Pretty old laptop, only supports i686 systems. I don't really need anything else as I only use it for some hobby programming when I'm away from my desktop.
September 13, 2018
On Monday, 10 September 2018 at 09:23:19 UTC, SuperPrower wrote:
> dub was working nice until I updated my system (I run ArchLinux32) just now. dmd was updated from version 1:2.081.2-1.0 to 1:2.082.0-1.0 (according to pacman package manager). After that, I couldn't invoke dub for anything. Here is the attempt to run `dub --vverbose`:

Can you find /usr/bin/dmd or run dmd?
September 14, 2018
On Thursday, 13 September 2018 at 14:31:53 UTC, Jesse Phillips wrote:
> On Monday, 10 September 2018 at 09:23:19 UTC, SuperPrower wrote:
>> dub was working nice until I updated my system (I run ArchLinux32) just now. dmd was updated from version 1:2.081.2-1.0 to 1:2.082.0-1.0 (according to pacman package manager). After that, I couldn't invoke dub for anything. Here is the attempt to run `dub --vverbose`:
>
> Can you find /usr/bin/dmd or run dmd?

The error is from the trymain function in dmd so its definitely installed.

I do wonder if `dmd` by itself on the command line works. Could it be some sort of 32 bit bug in the latest release of dmd? Relating to argc/argv.
September 14, 2018
On Friday, 14 September 2018 at 05:41:41 UTC, rmc wrote:

> I do wonder if `dmd` by itself on the command line works. Could it be some sort of 32 bit bug in the latest release of dmd? Relating to argc/argv.


"source/dub/compilers/compiler.d(127)"

That doesn't look like DMD source code.
September 17, 2018
On Friday, 14 September 2018 at 15:42:05 UTC, Jesse Phillips wrote:
> On Friday, 14 September 2018 at 05:41:41 UTC, rmc wrote:
>
>> I do wonder if `dmd` by itself on the command line works. Could it be some sort of 32 bit bug in the latest release of dmd? Relating to argc/argv.
>
>
> "source/dub/compilers/compiler.d(127)"
>
> That doesn't look like DMD source code.

Yip, that link is to where dub uses dmd (showing the specific error) and the other link is to a line in dmd that throws the initial error. The mars.d file is part of dmd.

The line in dmd appears to be a safety check that makes sure there is at least one argument in argv.

To me it seems really weird that dmd would be able to reach the trymain function with `argc < 1 || !argv` or with argc >= 1 and one of the arguments being null.

R
September 18, 2018
On Thursday, 13 September 2018 at 14:31:53 UTC, Jesse Phillips wrote:
> Can you find /usr/bin/dmd or run dmd?

Sorry if I wasn't clear enough, but I have dmd installed, and dub WAS working until upgrade of dmd.


I suspect that problem occurs because dub wasn't upgraded from 1.10 -> 1.11, due to some problems with ArchLinux32 packaging - dub doesn't have dmd as dependency, probably because it doesn't require dmd specifically, but there is a 'provide' thingy that all D compiler packages have, so that's one way to fix this - to add this thingy as dependecy to dub, but maintainers seem to have problems with building newer versions of dub for 32-bit OS, the are already discussing this issue, so yeah, problem is not in dub/dmd itself (never suspected it to be), but rather, in compatability with 32 bit systems or between themselves.

If anyone here is good with building dub, please take a look at this thread: https://bbs.archlinux32.org/viewtopic.php?pid=5004 , maybe you will be able to help?