bd9f138b5a
mosquitto can be configured to use password files. Those have a very trivial layout, with one "username:password" tuple per line, not unlike Apache's htpasswd file format, but unlike htpasswd files, the password can be either in clear (boo!), or encrypted (by calling into openssl's libcrypto). Encryption of passwords is done with an ad-hoc tool, mosquitto_passwd, again very like Apache's htpasswd, but the encrypted form is different (of course). This encryption is handled by mosquitto_passwd, which can create, update, or delete users, all while storing their encrypted password, or it can also convert a password file with clear-text passwords into a password file with encrypted passwords, e.g. it turns each "foo:bar" entry to their corresponding encrypted form, like "foo:$7$101$yLPgk5fn46d....==". It can be very interesting to maintain a clear-text DB of users:passwords in configuration management [0], and only convert it to encrypted passwords when embedded on the target. Add a host variant for mosquitto, which only installs mosquitto_passwd. [0] ensuring safety, confidentiality, and integrity of that DB is left as an exercise to the user, and is clearly out of scope for Buildroot, like storing the root password in the .config is. Signed-off-by: Yann E. MORIN <yann.morin@orange.com> Cc: Peter Korsgaard <peter@korsgaard.com> Cc: Titouan Christophe <titouanchristophe@gmail.com> Cc: Thomas Petazzoni <thomas.petazzoni@bootlin.com> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
152 lines
3.8 KiB
Makefile
152 lines
3.8 KiB
Makefile
################################################################################
|
|
#
|
|
# mosquitto
|
|
#
|
|
################################################################################
|
|
|
|
MOSQUITTO_VERSION = 2.0.15
|
|
MOSQUITTO_SITE = https://mosquitto.org/files/source
|
|
MOSQUITTO_LICENSE = EPL-2.0 or EDLv1.0
|
|
MOSQUITTO_LICENSE_FILES = LICENSE.txt epl-v20 edl-v10
|
|
MOSQUITTO_CPE_ID_VENDOR = eclipse
|
|
MOSQUITTO_INSTALL_STAGING = YES
|
|
|
|
MOSQUITTO_MAKE_OPTS = \
|
|
CLIENT_STATIC_LDADD="$(MOSQUITTO_STATIC_LIBS)" \
|
|
UNAME=Linux \
|
|
STRIP=true \
|
|
prefix=/usr \
|
|
WITH_WRAP=no \
|
|
WITH_DOCS=no
|
|
|
|
ifeq ($(BR2_SHARED_LIBS),y)
|
|
MOSQUITTO_MAKE_OPTS += WITH_STATIC_LIBRARIES=no
|
|
else
|
|
MOSQUITTO_MAKE_OPTS += WITH_STATIC_LIBRARIES=yes
|
|
endif
|
|
|
|
ifeq ($(BR2_STATIC_LIBS),y)
|
|
MOSQUITTO_MAKE_OPTS += WITH_SHARED_LIBRARIES=no
|
|
else
|
|
MOSQUITTO_MAKE_OPTS += WITH_SHARED_LIBRARIES=yes
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_SYSTEMD),y)
|
|
MOSQUITTO_MAKE_OPTS += WITH_SYSTEMD=yes
|
|
MOSQUITTO_DEPENDENCIES += systemd
|
|
endif
|
|
|
|
# adns uses getaddrinfo_a
|
|
ifeq ($(BR2_TOOLCHAIN_USES_GLIBC),y)
|
|
MOSQUITTO_MAKE_OPTS += WITH_ADNS=yes
|
|
else
|
|
MOSQUITTO_MAKE_OPTS += WITH_ADNS=no
|
|
endif
|
|
|
|
# threaded API uses pthread_setname_np
|
|
ifeq ($(BR2_TOOLCHAIN_HAS_THREADS_NPTL),y)
|
|
MOSQUITTO_MAKE_OPTS += WITH_THREADING=yes
|
|
else
|
|
MOSQUITTO_MAKE_OPTS += WITH_THREADING=no
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_OPENSSL),y)
|
|
MOSQUITTO_DEPENDENCIES += host-pkgconf openssl
|
|
MOSQUITTO_MAKE_OPTS += WITH_TLS=yes
|
|
MOSQUITTO_STATIC_LIBS += `$(PKG_CONFIG_HOST_BINARY) --libs openssl`
|
|
else
|
|
MOSQUITTO_MAKE_OPTS += WITH_TLS=no
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_CJSON),y)
|
|
MOSQUITTO_DEPENDENCIES += cjson
|
|
MOSQUITTO_MAKE_OPTS += WITH_CJSON=yes
|
|
MOSQUITTO_STATIC_LIBS += -lcjson
|
|
else
|
|
MOSQUITTO_MAKE_OPTS += WITH_CJSON=no
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_C_ARES),y)
|
|
MOSQUITTO_DEPENDENCIES += c-ares
|
|
MOSQUITTO_MAKE_OPTS += WITH_SRV=yes
|
|
else
|
|
MOSQUITTO_MAKE_OPTS += WITH_SRV=no
|
|
endif
|
|
|
|
ifeq ($(BR2_PACKAGE_LIBWEBSOCKETS),y)
|
|
MOSQUITTO_DEPENDENCIES += libwebsockets
|
|
MOSQUITTO_MAKE_OPTS += WITH_WEBSOCKETS=yes
|
|
else
|
|
MOSQUITTO_MAKE_OPTS += WITH_WEBSOCKETS=no
|
|
endif
|
|
|
|
# C++ support is only used to create a wrapper library
|
|
ifneq ($(BR2_INSTALL_LIBSTDCPP),y)
|
|
define MOSQUITTO_DISABLE_CPP
|
|
$(SED) '/-C cpp/d' $(@D)/lib/Makefile
|
|
endef
|
|
|
|
MOSQUITTO_POST_PATCH_HOOKS += MOSQUITTO_DISABLE_CPP
|
|
endif
|
|
|
|
MOSQUITTO_MAKE_DIRS = lib client
|
|
ifeq ($(BR2_PACKAGE_MOSQUITTO_BROKER),y)
|
|
MOSQUITTO_MAKE_DIRS += src
|
|
endif
|
|
|
|
define MOSQUITTO_BUILD_CMDS
|
|
$(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) DIRS="$(MOSQUITTO_MAKE_DIRS)" \
|
|
$(MOSQUITTO_MAKE_OPTS)
|
|
endef
|
|
|
|
define MOSQUITTO_INSTALL_STAGING_CMDS
|
|
$(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) DIRS="$(MOSQUITTO_MAKE_DIRS)" \
|
|
$(MOSQUITTO_MAKE_OPTS) DESTDIR=$(STAGING_DIR) install
|
|
endef
|
|
|
|
define MOSQUITTO_INSTALL_TARGET_CMDS
|
|
$(MAKE) -C $(@D) $(TARGET_CONFIGURE_OPTS) DIRS="$(MOSQUITTO_MAKE_DIRS)" \
|
|
$(MOSQUITTO_MAKE_OPTS) DESTDIR=$(TARGET_DIR) install
|
|
rm -f $(TARGET_DIR)/etc/mosquitto/*.example
|
|
$(INSTALL) -D -m 0644 $(@D)/mosquitto.conf \
|
|
$(TARGET_DIR)/etc/mosquitto/mosquitto.conf
|
|
endef
|
|
|
|
ifeq ($(BR2_PACKAGE_MOSQUITTO_BROKER),y)
|
|
define MOSQUITTO_INSTALL_INIT_SYSV
|
|
$(INSTALL) -D -m 0755 package/mosquitto/S50mosquitto \
|
|
$(TARGET_DIR)/etc/init.d/S50mosquitto
|
|
endef
|
|
|
|
define MOSQUITTO_INSTALL_INIT_SYSTEMD
|
|
$(INSTALL) -D -m 644 $(@D)/service/systemd/mosquitto.service.notify \
|
|
$(TARGET_DIR)/usr/lib/systemd/system/mosquitto.service
|
|
endef
|
|
|
|
define MOSQUITTO_USERS
|
|
mosquitto -1 mosquitto -1 * - - - Mosquitto user
|
|
endef
|
|
endif
|
|
|
|
HOST_MOSQUITTO_DEPENDENCIES = host-pkgconf host-openssl
|
|
|
|
HOST_MOSQUITTO_MAKE_OPTS = \
|
|
$(HOST_CONFIGURE_OPTS) \
|
|
UNAME=Linux \
|
|
STRIP=true \
|
|
prefix=$(HOST_DIR) \
|
|
WITH_WRAP=no \
|
|
WITH_DOCS=no \
|
|
WITH_TLS=yes
|
|
|
|
define HOST_MOSQUITTO_BUILD_CMDS
|
|
$(MAKE) -C $(@D)/apps/mosquitto_passwd $(HOST_MOSQUITTO_MAKE_OPTS)
|
|
endef
|
|
|
|
define HOST_MOSQUITTO_INSTALL_CMDS
|
|
$(MAKE) -C $(@D)/apps/mosquitto_passwd $(HOST_MOSQUITTO_MAKE_OPTS) install
|
|
endef
|
|
|
|
$(eval $(generic-package))
|
|
$(eval $(host-generic-package))
|