gotthardp/rabbitmq-email

Install it plugin

DrMartiner opened this issue · 13 comments

Hello,

I try to build it plugin on Ubuntu 12.04 for Rabbit MQ 2.7.1. I executed "make" and got it log:

 DEP    rabbit_common
 DEP    amqp_client
 DEP    gen_smtp
make[1]: Entering directory `/opt/rabbitmq-email/deps/amqp_client'
make[2]: Entering directory `/opt/rabbitmq-email/deps/rabbit_common'
 DEP    rabbitmq_codegen
make[3]: Entering directory `/opt/rabbitmq-email/deps/rabbitmq_codegen'
make[3]: Leaving directory `/opt/rabbitmq-email/deps/rabbitmq_codegen'
 GEN    include/rabbit_framing.hrl
 GEN    src/rabbit_framing_amqp_0_8.erl
 GEN    src/rabbit_framing_amqp_0_9_1.erl
 DEPEND rabbit_common.d
 ERLC   app_utils.erl credit_flow.erl gen_server2.erl mirrored_supervisor.erl mochijson2.erl pmon.erl priority_queue.erl rabbit_amqqueue.erl rabbit_auth_mechanism.erl rabbit_authn_backend.erl rabbit_authz_backend.erl rabbit_backing_queue.erl rabbit_basic.erl rabbit_binary_generator.erl rabbit_binary_parser.erl rabbit_channel.erl rabbit_channel_interceptor.erl rabbit_command_assembler.erl rabbit_control_misc.erl rabbit_data_coercion.erl rabbit_event.erl rabbit_exchange_decorator.erl rabbit_exchange_type.erl rabbit_framing_amqp_0_8.erl rabbit_framing_amqp_0_9_1.erl rabbit_heartbeat.erl rabbit_misc.erl rabbit_msg_store_index.erl rabbit_net.erl rabbit_networking.erl rabbit_nodes.erl rabbit_password_hashing.erl rabbit_policy_validator.erl rabbit_queue_collector.erl rabbit_queue_decorator.erl rabbit_queue_master_locator.erl rabbit_reader.erl rabbit_runtime_parameter.erl rabbit_writer.erl ssl_compat.erl supervisor2.erl time_compat.erl
src/rabbit_net.erl:27: can't find include lib "ssl/src/ssl_api.hrl"
src/rabbit_net.erl:101: record sslsocket undefined
src/rabbit_net.erl:111: record sslsocket undefined
src/rabbit_net.erl:116: record sslsocket undefined
src/rabbit_net.erl:121: record sslsocket undefined
src/rabbit_net.erl:126: record sslsocket undefined
src/rabbit_net.erl:139: record sslsocket undefined
src/rabbit_net.erl:144: record sslsocket undefined
src/rabbit_net.erl:158: record sslsocket undefined
src/rabbit_net.erl:167: record sslsocket undefined
src/rabbit_net.erl:172: record sslsocket undefined
src/rabbit_net.erl:177: record sslsocket undefined
src/rabbit_net.erl:180: record sslsocket undefined
src/rabbit_net.erl:183: record sslsocket undefined
src/rabbit_net.erl:209: record sslsocket undefined
src/rabbit_net.erl:212: record sslsocket undefined
src/rabbit_net.erl:215: record sslsocket undefined
src/rabbit_net.erl:253: record sslsocket undefined
src/rabbit_net.erl:24: Warning: type tls_atom_version() is unused
make[3]: *** [ebin/rabbit_common.app] Error 1
make[2]: *** [app] Error 2
make[2]: Leaving directory `/opt/rabbitmq-email/deps/rabbit_common'
make[1]: *** [deps] Error 2
make[1]: Leaving directory `/opt/rabbitmq-email/deps/amqp_client'
make: *** [deps] Error 2

PS: I called "apt-get install -y erlang-nox erlang-dev erlang-src" before the make

This plugin is most certainly not compatible (or ever will be) with RabbitMQ 2.7. Upgrade to 3.5.x or 3.6.0.

Was going to comment I ran into the exact same issue with 3.6.0 on Debian Wheezy here, but I was working on the wrong machine :(

Hello, there are several releases. The latest works with RabbitMQ 3.6.x only, the previous two work with 3.5.x. Earlier RabbitMQ versions are not supported.
Also, please make sure you have Erlang R16B03 or later.

I upgraded Ubuntu to 14.04 and upgrade Rabbit MQ to 3.6.0, but I have problem in make source:

# make
 DEP    rabbit_common
 DEP    amqp_client
 DEP    gen_smtp
make[1]: Entering directory `/opt/rabbitmq-email/deps/amqp_client'
make[2]: Entering directory `/opt/rabbitmq-email/deps/rabbit_common'
 DEP    rabbitmq_codegen
make[3]: Entering directory `/opt/rabbitmq-email/deps/rabbitmq_codegen'
make[3]: Leaving directory `/opt/rabbitmq-email/deps/rabbitmq_codegen'
 GEN    include/rabbit_framing.hrl
 GEN    src/rabbit_framing_amqp_0_8.erl
 GEN    src/rabbit_framing_amqp_0_9_1.erl
 DEPEND rabbit_common.d
 ERLC   app_utils.erl credit_flow.erl gen_server2.erl mirrored_supervisor.erl mochijson2.erl pmon.erl priority_queue.erl rabbit_amqqueue.erl rabbit_auth_mechanism.erl rabbit_authn_backend.erl rabbit_authz_backend.erl rabbit_backing_queue.erl rabbit_basic.erl rabbit_binary_generator.erl rabbit_binary_parser.erl rabbit_channel.erl rabbit_channel_interceptor.erl rabbit_command_assembler.erl rabbit_control_misc.erl rabbit_data_coercion.erl rabbit_event.erl rabbit_exchange_decorator.erl rabbit_exchange_type.erl rabbit_framing_amqp_0_8.erl rabbit_framing_amqp_0_9_1.erl rabbit_heartbeat.erl rabbit_misc.erl rabbit_msg_store_index.erl rabbit_net.erl rabbit_networking.erl rabbit_nodes.erl rabbit_password_hashing.erl rabbit_policy_validator.erl rabbit_queue_collector.erl rabbit_queue_decorator.erl rabbit_queue_master_locator.erl rabbit_reader.erl rabbit_runtime_parameter.erl rabbit_writer.erl ssl_compat.erl supervisor2.erl time_compat.erl
 APP    rabbit_common.app.src
make[2]: Leaving directory `/opt/rabbitmq-email/deps/rabbit_common'
 DEPEND amqp_client.d
 ERLC   amqp_auth_mechanisms.erl amqp_channel.erl amqp_channel_sup.erl amqp_channel_sup_sup.erl amqp_channels_manager.erl amqp_client.erl amqp_connection.erl amqp_connection_sup.erl amqp_connection_type_sup.erl amqp_direct_connection.erl amqp_direct_consumer.erl amqp_gen_connection.erl amqp_gen_consumer.erl amqp_main_reader.erl amqp_network_connection.erl amqp_rpc_client.erl amqp_rpc_server.erl amqp_selective_consumer.erl amqp_sup.erl amqp_uri.erl rabbit_routing_util.erl uri_parser.erl
 APP    amqp_client.app.src
make[1]: Leaving directory `/opt/rabbitmq-email/deps/amqp_client'
make[1]: Entering directory `/opt/rabbitmq-email/deps/gen_smtp'
==> gen_smtp (compile)
Compiled src/smtp_rfc822_parse.yrl
Compiled src/gen_smtp_server_session.erl
src/smtp_util.erl:65: Warning: crypto:md5_mac/2 is deprecated and will be removed in in a future release; use crypto:hmac/3
Compiled src/smtp_util.erl
Compiled src/binstr.erl
Compiled src/gen_smtp_server.erl
Compiled src/smtp_server_example.erl
Compiled src/gen_smtp_application.erl
Compiled src/gen_smtp_client.erl
Compiled src/socket.erl
Compiled src/mimemail.erl
Compiled src/smtp_rfc822_parse.erl
make[1]: Leaving directory `/opt/rabbitmq-email/deps/gen_smtp'
 DEPEND rabbitmq_email.d

I got *.beam files, but I had not *.ez file (plugin)

To build the .ez you should call make dist instead of make.

@gotthardp Thank you! But I have error again:

# cp plugins/* /usr/lib/rabbitmq/lib/rabbitmq_server-3.6.0/plugins/
# rabbitmq-plugins list
Error: {'EXIT',{{badmatch,{error,{vertex,duplicate,amqp_client}}},
                [{rabbit_plugins,dependencies,3,
                                 [{file,"src/rabbit_plugins.erl"},{line,143}]},
                 {rabbit_plugins_main,action,6,
                                      [{file,"src/rabbit_plugins_main.erl"},
                                       {line,75}]},
                 {rabbit_cli,main,3,[{file,"src/rabbit_cli.erl"},{line,69}]},
                 {init,start_it,1,[]},
                 {init,start_em,1,[]}]}}

You copied all .ez files that you built. You should copy only modules that are not in the /plugins directory, i.e. gen_smtp and rabbitmq_email. The rest should already be there. There is no difference between the files marked as version "0.0.0" and version "3.6.0".

@gotthardp thank you! It work! 👍

Cool! :)

To clarify what @gotthardp said: otherwise you'd get duplicates, e.g. of rabbit_common or amqp_client, which is exactly what the error says (duplicate vertex in the plugin dependency graph).

Got the same error when make dist

This recipe solved the problem rabbitmq/rabbitmq-common#27 (comment)

apt-get install -y erlang-nox erlang-dev erlang-src

IMO - note could be added to README

@SDKiller: True, done.