app-misc/mosquitto lists net-dns/c-ares as a build time dependency only, meaning that it will not be pulled in when mosquitto is installed from a binary package. net-dns/c-ares is however also required at runtime, leading up to a dependency error. The line ` srv? ( net-dns/c-ares ) ` should thus be moved from DEPEND to RDEPEND
Oh good catch! It's been like that for quite a few versions. Do you have a log of mosquitto crashing when USE="srv" is enabled?
Actually, it looks like it's been that way since the package was first added. https://gitlab.com/lramage94/gentoo/commit/a5b732589937dfc6da6faff69670900a110acd b8#6053b6b1f5cc7c1160eeb7e4f9674e93bf00bccf_0_22
No log at present. It's also not exactly a crash. I pull in mosquitto as a dependency of domoticz home automation and when I setup a new machine for testing a module I was working on domoticz simply failed to start with the message that it could not find libcares.so As I finished testing I reset the machine to its original state, but if you like I can easily retrace the steps leading up to this error.
Quick test: relevant section of an ebuild that shows the dependency. ------------ /usr/bin/cmake -E cmake_link_script CMakeFiles/domoticz.dir/link.txt --verbose=1 /usr/bin/i686-pc-linux-gnu-g++ -O2 -march=i686 -pipe -std=c++11 -O3 -DNDEBUG -Wl,-O1 -Wl,--as-needed -rdynamic CMakeFiles/domoticz.dir/main/stdafx.cpp.o CMakeFiles/domoticz.dir/main/CmdLine.cpp.o CMakeFiles/domoticz.dir/main/Camera.cpp.o CMakeFiles/domoticz.dir/main/domoticz.cpp.o CMakeFiles/domoticz.dir/main/dzVents.cpp.o CMakeFiles/domoticz.dir/main/EventSystem.cpp.o CMakeFiles/domoticz.dir/main/EventsPythonModule.cpp.o CMakeFiles/domoticz.dir/main/EventsPythonDevice.cpp.o CMakeFiles/domoticz.dir/main/Helper.cpp.o CMakeFiles/domoticz.dir/main/IFTTT.cpp.o CMakeFiles/domoticz.dir/main/localtime_r.cpp.o CMakeFiles/domoticz.dir/main/Logger.cpp.o CMakeFiles/domoticz.dir/main/LuaCommon.cpp.o CMakeFiles/domoticz.dir/main/LuaHandler.cpp.o CMakeFiles/domoticz.dir/main/mainworker.cpp.o CMakeFiles/domoticz.dir/main/RFXNames.cpp.o CMakeFiles/domoticz.dir/main/Scheduler.cpp.o CMakeFiles/domoticz.dir/main/SQLHelper.cpp.o CMakeFiles/domoticz.dir/main/SunRiseSet.cpp.o CMakeFiles/domoticz.dir/main/WebServer.cpp.o CMakeFiles/domoticz.dir/main/WebServerHelper.cpp.o CMakeFiles/domoticz.dir/main/WindCalculation.cpp.o CMakeFiles/domoticz.dir/push/BasePush.cpp.o CMakeFiles/domoticz.dir/push/FibaroPush.cpp.o CMakeFiles/domoticz.dir/push/GooglePubSubPush.cpp.o CMakeFiles/domoticz.dir/push/HttpPush.cpp.o CMakeFiles/domoticz.dir/push/InfluxPush.cpp.o CMakeFiles/domoticz.dir/push/WebsocketPush.cpp.o CMakeFiles/domoticz.dir/httpclient/HTTPClient.cpp.o CMakeFiles/domoticz.dir/httpclient/UrlEncode.cpp.o CMakeFiles/domoticz.dir/hardware/1Wire.cpp.o CMakeFiles/domoticz.dir/hardware/1Wire/1WireByOWFS.cpp.o CMakeFiles/domoticz.dir/hardware/1Wire/1WireByKernel.cpp.o CMakeFiles/domoticz.dir/hardware/1Wire/1WireCommon.cpp.o CMakeFiles/domoticz.dir/hardware/1Wire/1WireForWindows.cpp.o CMakeFiles/domoticz.dir/hardware/AccuWeather.cpp.o CMakeFiles/domoticz.dir/hardware/AnnaThermostat.cpp.o CMakeFiles/domoticz.dir/hardware/Arilux.cpp.o CMakeFiles/domoticz.dir/hardware/ASyncSerial.cpp.o CMakeFiles/domoticz.dir/hardware/ASyncTCP.cpp.o CMakeFiles/domoticz.dir/hardware/AtagOne.cpp.o CMakeFiles/domoticz.dir/hardware/BleBox.cpp.o CMakeFiles/domoticz.dir/hardware/ColorSwitch.cpp.o CMakeFiles/domoticz.dir/hardware/Comm5Serial.cpp.o CMakeFiles/domoticz.dir/hardware/Comm5SMTCP.cpp.o CMakeFiles/domoticz.dir/hardware/Comm5TCP.cpp.o CMakeFiles/domoticz.dir/hardware/csocket.cpp.o CMakeFiles/domoticz.dir/hardware/CurrentCostMeterBase.cpp.o CMakeFiles/domoticz.dir/hardware/CurrentCostMeterSerial.cpp.o CMakeFiles/domoticz.dir/hardware/CurrentCostMeterTCP.cpp.o CMakeFiles/domoticz.dir/hardware/Daikin.cpp.o CMakeFiles/domoticz.dir/hardware/DarkSky.cpp.o CMakeFiles/domoticz.dir/hardware/DavisLoggerSerial.cpp.o CMakeFiles/domoticz.dir/hardware/DenkoviSmartdenIPInOut.cpp.o CMakeFiles/domoticz.dir/hardware/DenkoviSmartdenLan.cpp.o CMakeFiles/domoticz.dir/hardware/DenkoviDevices.cpp.o CMakeFiles/domoticz.dir/hardware/DomoticzHardware.cpp.o CMakeFiles/domoticz.dir/hardware/DomoticzInternal.cpp.o CMakeFiles/domoticz.dir/hardware/DomoticzTCP.cpp.o CMakeFiles/domoticz.dir/hardware/Dummy.cpp.o CMakeFiles/domoticz.dir/hardware/EcoCompteur.cpp.o CMakeFiles/domoticz.dir/hardware/EcoDevices.cpp.o CMakeFiles/domoticz.dir/hardware/eHouseTCP.cpp.o CMakeFiles/domoticz.dir/hardware/eHouse/EhouseEvents.cpp.o CMakeFiles/domoticz.dir/hardware/eHouse/EhouseTcpClient.cpp.o CMakeFiles/domoticz.dir/hardware/eHouse/EhouseUdpListener.cpp.o CMakeFiles/domoticz.dir/hardware/EnOceanESP2.cpp.o CMakeFiles/domoticz.dir/hardware/EnOceanESP3.cpp.o CMakeFiles/domoticz.dir/hardware/EnphaseAPI.cpp.o CMakeFiles/domoticz.dir/hardware/Ec3kMeterTCP.cpp.o CMakeFiles/domoticz.dir/hardware/EvohomeBase.cpp.o CMakeFiles/domoticz.dir/hardware/EvohomeRadio.cpp.o CMakeFiles/domoticz.dir/hardware/EvohomeScript.cpp.o CMakeFiles/domoticz.dir/hardware/EvohomeSerial.cpp.o CMakeFiles/domoticz.dir/hardware/EvohomeTCP.cpp.o CMakeFiles/domoticz.dir/hardware/EvohomeWeb.cpp.o CMakeFiles/domoticz.dir/hardware/ETH8020.cpp.o CMakeFiles/domoticz.dir/hardware/FritzboxTCP.cpp.o CMakeFiles/domoticz.dir/hardware/GoodweAPI.cpp.o CMakeFiles/domoticz.dir/hardware/Gpio.cpp.o CMakeFiles/domoticz.dir/hardware/GpioPin.cpp.o CMakeFiles/domoticz.dir/hardware/HardwareMonitor.cpp.o CMakeFiles/domoticz.dir/hardware/HarmonyHub.cpp.o CMakeFiles/domoticz.dir/hardware/Honeywell.cpp.o CMakeFiles/domoticz.dir/hardware/HEOS.cpp.o CMakeFiles/domoticz.dir/hardware/I2C.cpp.o CMakeFiles/domoticz.dir/hardware/ICYThermostat.cpp.o CMakeFiles/domoticz.dir/hardware/InComfort.cpp.o CMakeFiles/domoticz.dir/hardware/KMTronicBase.cpp.o CMakeFiles/domoticz.dir/hardware/KMTronic433.cpp.o CMakeFiles/domoticz.dir/hardware/KMTronicSerial.cpp.o CMakeFiles/domoticz.dir/hardware/KMTronicTCP.cpp.o CMakeFiles/domoticz.dir/hardware/KMTronicUDP.cpp.o CMakeFiles/domoticz.dir/hardware/Kodi.cpp.o CMakeFiles/domoticz.dir/hardware/Limitless.cpp.o CMakeFiles/domoticz.dir/hardware/LogitechMediaServer.cpp.o CMakeFiles/domoticz.dir/hardware/Meteostick.cpp.o CMakeFiles/domoticz.dir/hardware/MochadTCP.cpp.o CMakeFiles/domoticz.dir/hardware/MQTT.cpp.o CMakeFiles/domoticz.dir/hardware/MultiFun.cpp.o CMakeFiles/domoticz.dir/hardware/MySensorsBase.cpp.o CMakeFiles/domoticz.dir/hardware/MySensorsSerial.cpp.o CMakeFiles/domoticz.dir/hardware/MySensorsTCP.cpp.o CMakeFiles/domoticz.dir/hardware/MySensorsMQTT.cpp.o CMakeFiles/domoticz.dir/hardware/NefitEasy.cpp.o CMakeFiles/domoticz.dir/hardware/Nest.cpp.o CMakeFiles/domoticz.dir/hardware/NestOAuthAPI.cpp.o CMakeFiles/domoticz.dir/hardware/Netatmo.cpp.o CMakeFiles/domoticz.dir/hardware/HttpPoller.cpp.o CMakeFiles/domoticz.dir/hardware/OnkyoAVTCP.cpp.o CMakeFiles/domoticz.dir/hardware/OpenWeatherMap.cpp.o CMakeFiles/domoticz.dir/hardware/OpenWebNetTCP.cpp.o CMakeFiles/domoticz.dir/hardware/OpenWebNetUSB.cpp.o CMakeFiles/domoticz.dir/hardware/openwebnet/bt_openwebnet.cpp.o CMakeFiles/domoticz.dir/hardware/OpenZWave.cpp.o CMakeFiles/domoticz.dir/hardware/openzwave/control_panel/ozwcp.cpp.o CMakeFiles/domoticz.dir/hardware/openzwave/control_panel/zwavelib.cpp.o CMakeFiles/domoticz.dir/hardware/OTGWBase.cpp.o CMakeFiles/domoticz.dir/hardware/OTGWSerial.cpp.o CMakeFiles/domoticz.dir/hardware/OTGWTCP.cpp.o CMakeFiles/domoticz.dir/hardware/PanasonicTV.cpp.o CMakeFiles/domoticz.dir/hardware/P1MeterBase.cpp.o CMakeFiles/domoticz.dir/hardware/P1MeterSerial.cpp.o CMakeFiles/domoticz.dir/hardware/P1MeterTCP.cpp.o CMakeFiles/domoticz.dir/hardware/PhilipsHue/PhilipsHue.cpp.o CMakeFiles/domoticz.dir/hardware/PhilipsHue/PhilipsHueHelper.cpp.o CMakeFiles/domoticz.dir/hardware/PhilipsHue/PhilipsHueSensors.cpp.o CMakeFiles/domoticz.dir/hardware/PiFace.cpp.o CMakeFiles/domoticz.dir/hardware/Pinger.cpp.o CMakeFiles/domoticz.dir/hardware/PVOutput_Input.cpp.o CMakeFiles/domoticz.dir/hardware/RAVEn.cpp.o CMakeFiles/domoticz.dir/hardware/Razberry.cpp.o CMakeFiles/domoticz.dir/hardware/Rego6XXSerial.cpp.o CMakeFiles/domoticz.dir/hardware/RelayNet.cpp.o CMakeFiles/domoticz.dir/hardware/RFLinkBase.cpp.o CMakeFiles/domoticz.dir/hardware/RFLinkSerial.cpp.o CMakeFiles/domoticz.dir/hardware/RFLinkTCP.cpp.o CMakeFiles/domoticz.dir/hardware/RFXBase.cpp.o CMakeFiles/domoticz.dir/hardware/RFXComSerial.cpp.o CMakeFiles/domoticz.dir/hardware/RFXComTCP.cpp.o CMakeFiles/domoticz.dir/hardware/Rtl433.cpp.o CMakeFiles/domoticz.dir/hardware/S0MeterBase.cpp.o CMakeFiles/domoticz.dir/hardware/S0MeterSerial.cpp.o CMakeFiles/domoticz.dir/hardware/S0MeterTCP.cpp.o CMakeFiles/domoticz.dir/hardware/SatelIntegra.cpp.o CMakeFiles/domoticz.dir/hardware/SBFSpot.cpp.o CMakeFiles/domoticz.dir/hardware/serial/serial.cpp.o CMakeFiles/domoticz.dir/hardware/serial/impl/unix.cpp.o CMakeFiles/domoticz.dir/hardware/SolarEdgeAPI.cpp.o CMakeFiles/domoticz.dir/hardware/SolarMaxTCP.cpp.o CMakeFiles/domoticz.dir/hardware/Sterbox.cpp.o CMakeFiles/domoticz.dir/hardware/SysfsGpio.cpp.o CMakeFiles/domoticz.dir/hardware/Tado.cpp.o CMakeFiles/domoticz.dir/hardware/TCPProxy/tcpproxy_server.cpp.o CMakeFiles/domoticz.dir/hardware/TE923.cpp.o CMakeFiles/domoticz.dir/hardware/TE923Tool.cpp.o CMakeFiles/domoticz.dir/hardware/TeleinfoBase.cpp.o CMakeFiles/domoticz.dir/hardware/TeleinfoSerial.cpp.o CMakeFiles/domoticz.dir/hardware/Tellstick.cpp.o CMakeFiles/domoticz.dir/hardware/Thermosmart.cpp.o CMakeFiles/domoticz.dir/hardware/ToonThermostat.cpp.o CMakeFiles/domoticz.dir/hardware/USBtin.cpp.o CMakeFiles/domoticz.dir/hardware/USBtin_MultiblocV8.cpp.o CMakeFiles/domoticz.dir/hardware/VolcraftCO20.cpp.o CMakeFiles/domoticz.dir/hardware/Winddelen.cpp.o CMakeFiles/domoticz.dir/hardware/WOL.cpp.o CMakeFiles/domoticz.dir/hardware/Wunderground.cpp.o CMakeFiles/domoticz.dir/hardware/XiaomiGateway.cpp.o CMakeFiles/domoticz.dir/hardware/Yeelight.cpp.o CMakeFiles/domoticz.dir/hardware/YouLess.cpp.o CMakeFiles/domoticz.dir/hardware/ZiBlueBase.cpp.o CMakeFiles/domoticz.dir/hardware/ZiBlueSerial.cpp.o CMakeFiles/domoticz.dir/hardware/ZiBlueTCP.cpp.o CMakeFiles/domoticz.dir/hardware/ZWaveBase.cpp.o CMakeFiles/domoticz.dir/hardware/plugins/DelayedLink.cpp.o CMakeFiles/domoticz.dir/hardware/plugins/Plugins.cpp.o CMakeFiles/domoticz.dir/hardware/plugins/PluginManager.cpp.o CMakeFiles/domoticz.dir/hardware/plugins/PluginProtocols.cpp.o CMakeFiles/domoticz.dir/hardware/plugins/PluginTransports.cpp.o CMakeFiles/domoticz.dir/hardware/plugins/PythonObjects.cpp.o CMakeFiles/domoticz.dir/notifications/NotificationBase.cpp.o CMakeFiles/domoticz.dir/notifications/NotificationBrowser.cpp.o CMakeFiles/domoticz.dir/notifications/NotificationEmail.cpp.o CMakeFiles/domoticz.dir/notifications/NotificationGCM.cpp.o CMakeFiles/domoticz.dir/notifications/NotificationHelper.cpp.o CMakeFiles/domoticz.dir/notifications/NotificationHTTP.cpp.o CMakeFiles/domoticz.dir/notifications/NotificationKodi.cpp.o CMakeFiles/domoticz.dir/notifications/NotificationLogitechMediaServer.cpp.o CMakeFiles/domoticz.dir/notifications/NotificationPushbullet.cpp.o CMakeFiles/domoticz.dir/notifications/NotificationProwl.cpp.o CMakeFiles/domoticz.dir/notifications/NotificationPushover.cpp.o CMakeFiles/domoticz.dir/notifications/NotificationPushsafer.cpp.o CMakeFiles/domoticz.dir/notifications/NotificationPushalot.cpp.o CMakeFiles/domoticz.dir/notifications/NotificationSMS.cpp.o CMakeFiles/domoticz.dir/notifications/NotificationTelegram.cpp.o CMakeFiles/domoticz.dir/smtpclient/SMTPClient.cpp.o CMakeFiles/domoticz.dir/tcpserver/TCPClient.cpp.o CMakeFiles/domoticz.dir/tcpserver/TCPServer.cpp.o CMakeFiles/domoticz.dir/webserver/Base64.cpp.o CMakeFiles/domoticz.dir/webserver/connection.cpp.o CMakeFiles/domoticz.dir/webserver/connection_manager.cpp.o CMakeFiles/domoticz.dir/webserver/cWebem.cpp.o CMakeFiles/domoticz.dir/webserver/fastcgi.cpp.o CMakeFiles/domoticz.dir/webserver/mime_types.cpp.o CMakeFiles/domoticz.dir/webserver/proxycommon.cpp.o CMakeFiles/domoticz.dir/webserver/proxyclient.cpp.o CMakeFiles/domoticz.dir/webserver/reply.cpp.o CMakeFiles/domoticz.dir/webserver/request_handler.cpp.o CMakeFiles/domoticz.dir/webserver/request_parser.cpp.o CMakeFiles/domoticz.dir/webserver/server.cpp.o CMakeFiles/domoticz.dir/webserver/Websockets.cpp.o CMakeFiles/domoticz.dir/webserver/WebsocketHandler.cpp.o CMakeFiles/domoticz.dir/json/json_reader.cpp.o CMakeFiles/domoticz.dir/json/json_value.cpp.o CMakeFiles/domoticz.dir/json/json_writer.cpp.o CMakeFiles/domoticz.dir/tinyxpath/action_store.cpp.o CMakeFiles/domoticz.dir/tinyxpath/htmlutil.cpp.o CMakeFiles/domoticz.dir/tinyxpath/lex_util.cpp.o CMakeFiles/domoticz.dir/tinyxpath/node_set.cpp.o CMakeFiles/domoticz.dir/tinyxpath/tinystr.cpp.o CMakeFiles/domoticz.dir/tinyxpath/tinyxml.cpp.o CMakeFiles/domoticz.dir/tinyxpath/tinyxmlerror.cpp.o CMakeFiles/domoticz.dir/tinyxpath/tinyxmlparser.cpp.o CMakeFiles/domoticz.dir/tinyxpath/tokenlist.cpp.o CMakeFiles/domoticz.dir/tinyxpath/xml_util.cpp.o CMakeFiles/domoticz.dir/tinyxpath/xpath_expression.cpp.o CMakeFiles/domoticz.dir/tinyxpath/xpath_processor.cpp.o CMakeFiles/domoticz.dir/tinyxpath/xpath_stream.cpp.o CMakeFiles/domoticz.dir/tinyxpath/xpath_stack.cpp.o CMakeFiles/domoticz.dir/tinyxpath/xpath_static.cpp.o CMakeFiles/domoticz.dir/tinyxpath/xpath_syntax.cpp.o -o domoticz -lssl -lcrypto -lusb -lrt -lboost_thread-mt -lboost_system-mt -lboost_chrono-mt -lboost_date_time-mt -lboost_atomic-mt -lz -lminizip -lcurl -lpthread -llua5.2 -lmosquittopp -lsqlite3 -ldl /usr/lib/gcc/i686-pc-linux-gnu/6.4.0/../../../../i686-pc-linux-gnu/bin/ld: warning: libcares.so.2, needed by /usr/lib/libmosquitto.so.1, not found (try using -rpath or -rpath-link) /usr/lib/libmosquitto.so.1: undefined reference to `ares_fds' /usr/lib/libmosquitto.so.1: undefined reference to `ares_parse_srv_reply' /usr/lib/libmosquitto.so.1: undefined reference to `ares_process' /usr/lib/libmosquitto.so.1: undefined reference to `ares_library_init' /usr/lib/libmosquitto.so.1: undefined reference to `ares_init' /usr/lib/libmosquitto.so.1: undefined reference to `ares_search' /usr/lib/libmosquitto.so.1: undefined reference to `ares_library_cleanup' collect2: error: ld returned 1 exit status make[2]: *** [CMakeFiles/domoticz.dir/build.make:6087: domoticz] Error 1 make[2]: Leaving directory '/var/tmp/portage/app-misc/domoticz-3.9653/work/domoticz-3.9653' make[1]: *** [CMakeFiles/Makefile2:69: CMakeFiles/domoticz.dir/all] Error 2 make[1]: Leaving directory '/var/tmp/portage/app-misc/domoticz-3.9653/work/domoticz-3.9653' make: *** [Makefile:152: all] Error 2 * ERROR: app-misc/domoticz-3.9653::bubba failed (compile phase): * emake failed * * If you need support, post the output of `emerge --info '=app-misc/domoticz-3.9653::bubba'`, * the complete build log and the output of `emerge -pqv '=app-misc/domoticz-3.9653::bubba'`. * The complete build log is located at '/var/tmp/portage/app-misc/domoticz-3.9653/temp/build.log'. * The ebuild environment file is located at '/var/tmp/portage/app-misc/domoticz-3.9653/temp/environment'. * Working directory: '/var/tmp/portage/app-misc/domoticz-3.9653/work/domoticz-3.9653_build' * S: '/var/tmp/portage/app-misc/domoticz-3.9653/work/domoticz-3.9653' ------------
And this is from starting the main app when installed using binary packages: ------------- bubba ~ # /opt/domoticz/domoticz /opt/domoticz/domoticz: error while loading shared libraries: libcares.so.2: cannot open shared object file: No such file or directory ------------- of course removing c-ares to allow that error to be returned already returned this: ------------- bubba ~ # emerge -C c-ares * This action can remove important packages! In order to be safer, use * `emerge -pv --depclean <atom>` to check for reverse dependencies before * removing packages. net-dns/c-ares selected: 1.13.0 protected: none omitted: none All selected packages: =net-dns/c-ares-1.13.0 >>> 'Selected' packages are slated for removal. >>> 'Protected' and 'omitted' packages will not be removed. >>> Waiting 5 seconds before starting... >>> (Control-C to abort)... >>> Unmerging in: 5 4 3 2 1 >>> Unmerging (1 of 1) net-dns/c-ares-1.13.0... >>> needed sym /usr/lib/libcares.so.2 >>> needed obj /usr/lib/libcares.so.2.2.0 * GNU info directory index is up-to-date. !!! existing preserved libs: >>> package: net-dns/c-ares-1.13.0 * - /usr/lib/libcares.so.2 * - /usr/lib/libcares.so.2.2.0 * used by /usr/lib/libmosquitto.so.1 (app-misc/mosquitto-1.4.14) -------------
I added a fix for this in [app-misc/mosquitto-1.5](https://bugs.gentoo.org/656572)
The bug has been closed via the following commit(s): https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=7750cd794da77bfa401364df3b29189b4ffbb04d commit 7750cd794da77bfa401364df3b29189b4ffbb04d Author: Lucas Ramage <ramage.lucas@protonmail.com> AuthorDate: 2018-05-29 14:35:07 +0000 Commit: Virgil Dupras <vdupras@gentoo.org> CommitDate: 2018-10-11 15:53:54 +0000 app-misc/mosquitto: bump version to 1.5.1 Signed-off-by: Lucas Ramage <ramage.lucas@protonmail.com> Bug: https://bugs.gentoo.org/656572 Closes: https://bugs.gentoo.org/658552 Closes: https://bugs.gentoo.org/658340 Package-Manager: Portage-2.3.24, Repoman-2.3.6 Signed-off-by: Virgil Dupras <vdupras@gentoo.org> app-misc/mosquitto/Manifest | 1 + .../mosquitto-1.5-fix-socket_get_address.patch | 29 ++++++ ...patch => mosquitto-fix-conditional-tests.patch} | 0 app-misc/mosquitto/metadata.xml | 2 +- ...1.4.15-r2.ebuild => mosquitto-1.4.15-r3.ebuild} | 2 +- app-misc/mosquitto/mosquitto-1.5.1.ebuild | 106 +++++++++++++++++++++ 6 files changed, 138 insertions(+), 2 deletions(-)