Thread overview
Help compiling discord bot from dub, vibe.d linker errors
Jun 15, 2017
Anonymouse
Jun 15, 2017
Anonymouse
Jun 15, 2017
Sebastiaan Koppe
June 15, 2017
I wanted to make a Hello World discord bot, and I found dscord[1] on dub. It even has an example bot Jeff[2], but it won't build. The machine is running Manjaro/Arch linux x64.

> $ ./build.py
> Building with 0 plugins...
>   Building jeff...
...
> dscord ~master: target for configuration "dscord-linux-static-x64" is up to date.
> jeff ~master: building configuration "jeff-linux-static-x64"...
> Linking...
> ../../../.dub/packages/vibe-d-0.8.0-beta.6/vibe-d/stream/.dub/build/generic-debug-linux.posix-x86_64-dmd_2074-2FC725C8AA6EF22B1FB09E2271B4E136/libvibe-d_stream.a(openssl.o): In function `_D4vibe6stream7openssl18_sharedStaticCtor2FZv':
> /home/src/discord/jeff/../../.dub/packages/vibe-d-0.8.0-beta.6/vibe-d/stream/vibe/stream/openssl.d:863: undefined reference to `SSL_load_error_strings'
> /home/src/discord/jeff/../../.dub/packages/vibe-d-0.8.0-beta.6/vibe-d/stream/vibe/stream/openssl.d:864: undefined reference to `SSL_library_init'
> /home/src/discord/jeff/../../.dub/packages/vibe-d-0.8.0-beta.6/vibe-d/stream/vibe/stream/openssl.d:866: undefined reference to `CRYPTO_num_locks'
> /home/src/discord/jeff/../../.dub/packages/vibe-d-0.8.0-beta.6/vibe-d/stream/vibe/stream/openssl.d:874: undefined reference to `CRYPTO_set_id_callback'
> /home/src/discord/jeff/../../.dub/packages/vibe-d-0.8.0-beta.6/vibe-d/stream/vibe/stream/openssl.d:880: undefined reference to `SSL_get_ex_new_index'
> ../../.dub/packages/vibe-d-0.8.0-beta.6/vibe-d/stream/.dub/build/generic-debug-linux.posix-x86_64-dmd_2074-2FC725C8AA6EF22B1FB09E2271B4E136/libvibe-d_stream.a(openssl_10df_569.o): In function `_D4vibe6stream7openssl14OpenSSLContext6__ctorMFNfE4vibe6stream3tls14TLSContextKindE4vibe6stream3tls10TLSVersionZ9__lambda3MFNbNeZv':
> /home/src/discord/jeff/../../.dub/packages/vibe-d-0.8.0-beta.6/vibe-d/stream/vibe/stream/openssl.d:419: undefined reference to `SSLv23_client_method'
> /home/src/discord/jeff/../../.dub/packages/vibe-d-0.8.0-beta.6/vibe-d/stream/vibe/stream/openssl.d:420: undefined reference to `SSLv23_client_method'
> /home/src/discord/jeff/../../.dub/packages/vibe-d-0.8.0-beta.6/vibe-d/stream/vibe/stream/openssl.d:424: undefined reference to `SSLv23_client_method'
> /home/src/discord/jeff/../../.dub/packages/vibe-d-0.8.0-beta.6/vibe-d/stream/vibe/stream/openssl.d:425: undefined reference to `SSLv23_client_method'
> /home/src/discord/jeff/../../.dub/packages/vibe-d-0.8.0-beta.6/vibe-d/stream/vibe/stream/openssl.d:432: undefined reference to `SSLv23_server_method'
> /home/src/discord/jeff/../../.dub/packages/vibe-d-0.8.0-beta.6/vibe-d/stream/vibe/stream/openssl.d:433: undefined reference to `SSLv23_server_method'
> /home/src/discord/jeff/../../.dub/packages/vibe-d-0.8.0-beta.6/vibe-d/stream/vibe/stream/openssl.d:435: undefined reference to `SSLv23_server_method'
> /home/src/discord/jeff/../../.dub/packages/vibe-d-0.8.0-beta.6/vibe-d/stream/vibe/stream/openssl.d:436: undefined reference to `SSLv23_server_method'
...

Is that vibe.d not linking with openssl? There are more errors but it would be a bit long to paste them all.


[1]: https://code.dlang.org/packages/dscord
[2]: https://github.com/b1naryth1ef/jeff
June 15, 2017
On Thursday, 15 June 2017 at 15:50:06 UTC, Anonymouse wrote:
> I wanted to make a Hello World discord bot, and I found dscord[1] on dub. It even has an example bot Jeff[2], but it won't build. The machine is running Manjaro/Arch linux x64.

Apologies, this was meant to go into Learn. I'll post it there instead.
June 15, 2017
On Thursday, 15 June 2017 at 15:50:06 UTC, Anonymouse wrote:
> I wanted to make a Hello World discord bot, and I found dscord[1] on dub. It even has an example bot Jeff[2], but it won't build. The machine is running Manjaro/Arch linux x64.
>
> Is that vibe.d not linking with openssl? There are more errors but it would be a bit long to paste them all.
>
> [1]: https://code.dlang.org/packages/dscord
> [2]: https://github.com/b1naryth1ef/jeff

vibe.d is using the deimos openssl bindings, and those are outdated. See [1]

While vibe.d can use botan instead of openssl, due to an open bug with dub, it won't work. I do have a PR [2] fixing it, but it ain't pretty. Also, consider [3] as workaround.

[1] https://github.com/rejectedsoftware/vibe.d/issues/1758
[2] https://github.com/dlang/dub/pull/1148
[2] https://github.com/rejectedsoftware/vibe.d/pull/1769