Thread overview
Creation of 0MQ D project
Oct 27, 2014
Evan Lowry
Oct 28, 2014
anonymous
Oct 28, 2014
Evan Lowry
Oct 28, 2014
Matt Soucy
Oct 28, 2014
Marc Schütz
October 27, 2014
Hey all,

I've been playing around w/ D for a little while, and figured I would dive more into it with some side project stuff that has come up at work. The interface I am hooking up to is a zmq server, so I created a dub.json file ~ as follows:

{
    "dependencies": {
        "zeromq": "~master",
    },
    "libs": ["zmq"]
}

and tried to compile by calling 'dub'. I receive the following error:

Building zeromq ~master configuration "library", build type debug.
Running dmd...
../../.dub/packages/zeromq-master/deimos/zmq/zmq.d(96): Error: function deimos.zmq.zmq.zmq_strerror without 'this' cannot be const
FAIL ../../.dub/packages/zeromq-master/.dub/build/library-debug-linux.posix-x86_64-dmd_2066-9416B6A4CCF6909BD83BEC040E325AC7/ zeromq staticLibrary
Error executing command run: dmd failed with exit code 1.

The 0mq library exists and is linkable:
ls /usr/lib/libzmq.*
/usr/lib/libzmq.a  /usr/lib/libzmq.so  /usr/lib/libzmq.so.4  /usr/lib/libzmq.so.4.0.0

The error looks to be related to the library code, but I figure I'm just doing something stupid in build -- as there seem to be no other topics about this.

Any help would be appreciated, sorry for any glaring oversights!
October 28, 2014
On Monday, 27 October 2014 at 23:56:11 UTC, Evan Lowry wrote:
> ../../.dub/packages/zeromq-master/deimos/zmq/zmq.d(96): Error: function deimos.zmq.zmq.zmq_strerror without 'this' cannot be const

You found a bug in the binding.

Line 96 of zmq.d [1]: const char* zmq_strerror(int errnum);
Should be: const(char)* zmq_strerror(int errnum);

I think until recently dmd would accept and ignore const on a
free function, and that's how the bug got through.

[1]
https://github.com/D-Programming-Deimos/ZeroMQ/blob/79fb14b880c172e9aba9701366fd9bc15a8644b1/deimos/zmq/zmq.d#L96
October 28, 2014
On Tuesday, 28 October 2014 at 00:21:20 UTC, anonymous wrote:
> Line 96 of zmq.d [1]: const char* zmq_strerror(int errnum);
> Should be: const(char)* zmq_strerror(int errnum);

Yep, this seemed to do the trick cleanly. S'all compiling and the examples provided in the repo run. Can submit a pull request, if no-one else has one lined up.

Much thanks!
October 28, 2014
On 10/27/2014 09:02 PM, Evan Lowry wrote:
> On Tuesday, 28 October 2014 at 00:21:20 UTC, anonymous wrote:
>> Line 96 of zmq.d [1]: const char* zmq_strerror(int errnum);
>> Should be: const(char)* zmq_strerror(int errnum);
> 
> Yep, this seemed to do the trick cleanly. S'all compiling and the examples provided in the repo run. Can submit a pull request, if no-one else has one lined up.
> 
> Much thanks!
From the original commit that caused that, it seems that const(char)* was meant for that statement..?

-- 
Matt Soucy
http://msoucy.me/



October 28, 2014
On Tuesday, 28 October 2014 at 00:21:20 UTC, anonymous wrote:
> On Monday, 27 October 2014 at 23:56:11 UTC, Evan Lowry wrote:
>> ../../.dub/packages/zeromq-master/deimos/zmq/zmq.d(96): Error: function deimos.zmq.zmq.zmq_strerror without 'this' cannot be const
>
> You found a bug in the binding.
>
> Line 96 of zmq.d [1]: const char* zmq_strerror(int errnum);
> Should be: const(char)* zmq_strerror(int errnum);

Ceterum censeo ...
https://github.com/D-Programming-Language/dmd/pull/4043