Rust's simple download script

Jacob Carlborg via Digitalmars-d digitalmars-d at
Sat Nov 21 07:26:56 PST 2015

On 2015-11-20 18:43, Martin Nowak wrote:

> Because we already have the code for Travis-CI and Heroku.

DVM was already available before that ;)

> Also an intransparent binary is yet another hurdle trying to convince
> someone to try out D.

Not sure how much difference that is compared to the other opaque native 

Also, a 500 LOC bash script is almost as an opaque binary ;)

> BTW, I hust tried to use dvm.
> The linux binary doesn't work for my distribution (Fedora).
> ./dvm: error while loading shared libraries: cannot open
> shared object file: No such file or directory

I assume you actually have libz installed and there's some other problem 

> Compiling dvm with the latest dmd fails.
> ../../.dub/packages/tango-1.0.1_2.067/tango/io/vfs/ZipFolder.d(302,27):
> Error: function cannot have
> an in contract when overriden function object.Object.toString does not
> have an in contract
> ../../.dub/packages/tango-1.0.1_2.067/tango/io/vfs/ZipFolder.d(977,27):
> Error: function cannot have an
> in contract when overriden function object.Object.toString does not have
> an in contract
> Not too surprising given the amount of code, the number of dependencies,
> and the lack of any CI testing.

The issue is that DMD constantly breaks my code. Yes I test the betas, 
many times the bugs I'm reporting are closed as "won't fix". Every 
single release of DMD since at least 2.050 broke at least one of my 

I don't see how any CI testing would help when the code breakage I 
encounter is not fixed.

Anyway, I've updated the dependency and it builds with DMD 2.069.1.

The number of dependencies are two. The reason for why I'm still using 
Tango is the libcurl disaster in Phobos. That has hopefully been fixed 
now but that means a yet another dependency and which is not installed 
by default on Windows (perhaps static linking would work).

> I managed to build dvm using dmd-2.067.0 (as indicated by the tango
> dependency).
> Apart from the fact that dvm --help offers weird choices (-t,
> --tango      Installs Tango as the standard library.), dvm install
> --help or dvm --help don't explain how to install a compiler.

The --tango flag is a perfectly reasonable option for a D1 compiler.

> dvm install dmd-2.068.2
> tango.core.Exception.IOException at ../../.dub/packages/tango-1.0.1_2.067/tango/core/Exception.d(59):
> The resource with URL ""
> could not be found.
> dvm install -l
> An error occurred:
> dvm.dvm.Exceptions.DvmException at .dub/packages/dvm-0.4.4/dvm/commands/Fetch.d(270):
> Failed to get the latest DMD version.
> dvm install -l -v # doesn't tell me either what fails
> Looking at strace it seems you're trying to parse
>, please just use
> instead.

Yeah, I've noticed that broke. I haven't had time yet to update the code 
to use LATEST instead.

> After some trial and error it fails to install the selected compiler
> (and doesn't use the much smaller tar.xz downloads btw).

Is the tar.xz archives something that has been announced? I had no idea 
about it. BTW, I suspect Phobos can't unpack these files. Which either 
means resorting to third party libraries, something you seem to dislike. 
Or shell commands, which are not portable.

> dvm install 2.068.2
> Fetching:
> [========================================>] 25969/25335 KB
> Installing: dmd-2.068.2
> An unknown error occurred:
> tango.core.Exception.IOException at ../../.dub/packages/tango-1.0.1_2.067/tango/core/Exception.d(59):
> /home/dawg/.dvm/bin/dmd-2.068.2 :: No such file or directory

Have you installed DVM?

As Walter would say, bugs reported to the newsgroup will most likely be 

> All of the above, plus the ability to install gdc/ldc and verify
> downloaded dmd binaries, are achieved by a ~500LOC bash script.
> Of course downloading and installing dmd used to be a lot more chaotic
> when DVM was originally written. But making installations more
> scriptable is a direct outcome of writing such scripts, which works much
> better than building complex tools to deal with inconsistencies.

I guess your script only cares about the latest version, making 
everything a lot easier.

The reason I brought it up because DVM already exist (I guess your 
script did as well), offers other features as well and works on Windows.

/Jacob Carlborg

More information about the Digitalmars-d mailing list