diff mbox

[v3] azure-iot-sdk-c: New package

Message ID 1497297091-28452-1-git-send-email-nerv@dawncrow.de
State Superseded
Headers show

Commit Message

André Zwing June 12, 2017, 7:51 p.m. UTC
I use 2017-05-05 now, because newer versions will need some fixes (maybe as patches), so let's start with a cleaner version that just works.
Still, the projects install target installs the wrong files, that's why commands are needed for staging_install and target_install.

v2: Rework the package with help from Arnouts comments
v3: Explain some things in the commit message
Signed-off-by: André Hentschel <nerv@dawncrow.de>
---
 DEVELOPERS                                 |  1 +
 package/Config.in                          |  1 +
 package/azure-iot-sdk-c/Config.in          | 16 ++++++++++
 package/azure-iot-sdk-c/azure-iot-sdk-c.mk | 51 ++++++++++++++++++++++++++++++
 4 files changed, 69 insertions(+)
 create mode 100644 package/azure-iot-sdk-c/Config.in
 create mode 100644 package/azure-iot-sdk-c/azure-iot-sdk-c.mk

Comments

Thomas Petazzoni June 12, 2017, 8:45 p.m. UTC | #1
Hello,

On Mon, 12 Jun 2017 21:51:31 +0200, André Hentschel wrote:
> I use 2017-05-05 now, because newer versions will need some fixes (maybe as patches), so let's start with a cleaner version that just works.

Don't use "personal" sentences in commit logs, and rewrap commit logs
at 72 characters. So something like:

"""

Despite newer versions being available, this patch creates a package
for version 2017-05-05, because newer version have issues that need to
be addressed.

"""

> Still, the projects install target installs the wrong files, that's
> why commands are needed for staging_install and target_install.

Isn't it better to patch the package build system to fix those issues?

> 
> v2: Rework the package with help from Arnouts comments
> v3: Explain some things in the commit message

The commit log should go...

> Signed-off-by: André Hentschel <nerv@dawncrow.de>
> ---

... here.

I typically do that by putting "---" below my SoB line, and writing the
commit log (git commit --amend).

Thanks,

Thomas
Arnout Vandecappelle June 12, 2017, 10:19 p.m. UTC | #2
Hi Andre,

On 12-06-17 21:51, André Hentschel wrote:
[snip]
> +# The project only supports building one kind of library.
> +# Further the install target installs the wrong files, so we do it here:
> +ifeq ($(BR2_STATIC_LIBS),y)

 I was going to say: these also have to be installed in the SHARED_STATIC case.
But apparently CMake doesn't build a static library in the SHARED_STATIC case.
Bummer...

> +AZURE_IOT_SDK_C_LIBS += uamqp/libuamqp.a c-utility/libaziotsharedutil.a \
> +	iothub_client/libiothub_client.a iothub_client/libiothub_client_mqtt_ws_transport.a \
> +	iothub_client/libiothub_client_amqp_ws_transport.a \
> +	iothub_client/libiothub_client_http_transport.a \
> +	iothub_client/libiothub_client_amqp_transport.a \
> +	iothub_client/libiothub_client_mqtt_transport.a \
> +	iothub_service_client/libiothub_service_client.a serializer/libserializer.a umqtt/libumqtt.a
> +else
> +AZURE_IOT_SDK_C_LIBS += uamqp/libuamqp.so c-utility/libaziotsharedutil.so \
> +	iothub_client/libiothub_client.so iothub_client/libiothub_client_mqtt_ws_transport.so \
> +	iothub_client/libiothub_client_amqp_ws_transport.so \
> +	iothub_client/libiothub_client_http_transport.so \
> +	iothub_client/libiothub_client_amqp_transport.so \
> +	iothub_client/libiothub_client_mqtt_transport.so \
> +	iothub_service_client/libiothub_service_client.so serializer/libserializer.so umqtt/libumqtt.so
> +endif
> +
> +define AZURE_IOT_SDK_C_INSTALL_STAGING_CMDS
> +	$(foreach l,$(AZURE_IOT_SDK_C_LIBS), \
> +		$(INSTALL) -D -m 0755 $(@D)/$(l) $(STAGING_DIR)/usr/lib/
> +	)
> +	cp -a $(@D)/c-utility/inc/* $(STAGING_DIR)/usr/include/
> +	cp -a $(@D)/iothub_client/inc/* $(STAGING_DIR)/usr/include/

 This is not the location where the CMakeLists.txt installs the headers. Isn't
that going to give problems when there are packages that use this library?

 Regards,
 Arnout

> +endef
> +
> +define AZURE_IOT_SDK_C_INSTALL_TARGET_CMDS
> +	$(foreach l,$(AZURE_IOT_SDK_C_LIBS), \
> +		$(INSTALL) -D -m 0755 $(@D)/$(l) $(TARGET_DIR)/usr/lib/
> +	)
> +endef
> +
> +$(eval $(cmake-package))
>
André Zwing June 22, 2017, 3:14 p.m. UTC | #3
Am 13.06.2017 um 00:19 schrieb Arnout Vandecappelle:
>  Hi Andre,
> 
> On 12-06-17 21:51, André Hentschel wrote:
> [snip]
>> +# The project only supports building one kind of library.
>> +# Further the install target installs the wrong files, so we do it here:
>> +ifeq ($(BR2_STATIC_LIBS),y)
> 
>  I was going to say: these also have to be installed in the SHARED_STATIC case.
> But apparently CMake doesn't build a static library in the SHARED_STATIC case.
> Bummer...
> 
>> +AZURE_IOT_SDK_C_LIBS += uamqp/libuamqp.a c-utility/libaziotsharedutil.a \
>> +	iothub_client/libiothub_client.a iothub_client/libiothub_client_mqtt_ws_transport.a \
>> +	iothub_client/libiothub_client_amqp_ws_transport.a \
>> +	iothub_client/libiothub_client_http_transport.a \
>> +	iothub_client/libiothub_client_amqp_transport.a \
>> +	iothub_client/libiothub_client_mqtt_transport.a \
>> +	iothub_service_client/libiothub_service_client.a serializer/libserializer.a umqtt/libumqtt.a
>> +else
>> +AZURE_IOT_SDK_C_LIBS += uamqp/libuamqp.so c-utility/libaziotsharedutil.so \
>> +	iothub_client/libiothub_client.so iothub_client/libiothub_client_mqtt_ws_transport.so \
>> +	iothub_client/libiothub_client_amqp_ws_transport.so \
>> +	iothub_client/libiothub_client_http_transport.so \
>> +	iothub_client/libiothub_client_amqp_transport.so \
>> +	iothub_client/libiothub_client_mqtt_transport.so \
>> +	iothub_service_client/libiothub_service_client.so serializer/libserializer.so umqtt/libumqtt.so
>> +endif
>> +
>> +define AZURE_IOT_SDK_C_INSTALL_STAGING_CMDS
>> +	$(foreach l,$(AZURE_IOT_SDK_C_LIBS), \
>> +		$(INSTALL) -D -m 0755 $(@D)/$(l) $(STAGING_DIR)/usr/lib/
>> +	)
>> +	cp -a $(@D)/c-utility/inc/* $(STAGING_DIR)/usr/include/
>> +	cp -a $(@D)/iothub_client/inc/* $(STAGING_DIR)/usr/include/
> 
>  This is not the location where the CMakeLists.txt installs the headers. Isn't
> that going to give problems when there are packages that use this library?
> 

AFAICT the CMakeLists.txt installs the totally wrong headers, what exactly do you mean here?
André Zwing June 22, 2017, 3:14 p.m. UTC | #4
Am 12.06.2017 um 22:45 schrieb Thomas Petazzoni:
> Hello,

Hi, thanks for the review

> On Mon, 12 Jun 2017 21:51:31 +0200, André Hentschel wrote:
>> I use 2017-05-05 now, because newer versions will need some fixes (maybe as patches), so let's start with a cleaner version that just works.
> 
> Don't use "personal" sentences in commit logs, and rewrap commit logs
> at 72 characters. So something like:
> 
> """
> 
> Despite newer versions being available, this patch creates a package
> for version 2017-05-05, because newer version have issues that need to
> be addressed.
> 
> """

thx, done

>> Still, the projects install target installs the wrong files, that's
>> why commands are needed for staging_install and target_install.
> 
> Isn't it better to patch the package build system to fix those issues?

That would be quite a lot for the first introduction of the package.
I'll get in contact with the project to improve the situation in future versions

>>
>> v2: Rework the package with help from Arnouts comments
>> v3: Explain some things in the commit message
> 
> The commit log should go...
> 
>> Signed-off-by: André Hentschel <nerv@dawncrow.de>
>> ---
> 
> ... here.
> 
> I typically do that by putting "---" below my SoB line, and writing the
> commit log (git commit --amend).

thx, done
diff mbox

Patch

diff --git a/DEVELOPERS b/DEVELOPERS
index 1e87d3a..edc23c9 100644
--- a/DEVELOPERS
+++ b/DEVELOPERS
@@ -76,6 +76,7 @@  N:	Anders Darander <anders@chargestorm.se>
 F:	package/ktap/
 
 N:	André Hentschel <nerv@dawncrow.de>
+F:	package/azure-iot-sdk-c/
 F:	package/openal/
 F:	package/p7zip/
 F:	package/wine/
diff --git a/package/Config.in b/package/Config.in
index e00b162..a56520b 100644
--- a/package/Config.in
+++ b/package/Config.in
@@ -1247,6 +1247,7 @@  menu "Networking"
 	source "package/alljoyn-base/Config.in"
 	source "package/alljoyn-tcl/Config.in"
 	source "package/alljoyn-tcl-base/Config.in"
+	source "package/azure-iot-sdk-c/Config.in"
 	source "package/batman-adv/Config.in"
 	source "package/c-ares/Config.in"
 	source "package/canfestival/Config.in"
diff --git a/package/azure-iot-sdk-c/Config.in b/package/azure-iot-sdk-c/Config.in
new file mode 100644
index 0000000..9fb956a
--- /dev/null
+++ b/package/azure-iot-sdk-c/Config.in
@@ -0,0 +1,16 @@ 
+config BR2_PACKAGE_AZURE_IOT_SDK_C
+	bool "azure-iot-sdk-c"
+	depends on BR2_INSTALL_LIBSTDCPP
+	select BR2_PACKAGE_LIBCURL
+	select BR2_PACKAGE_LIBXML2
+	select BR2_PACKAGE_OPENSSL
+	select BR2_PACKAGE_UTIL_LINUX
+	select BR2_PACKAGE_UTIL_LINUX_LIBUUID
+	help
+	  Microsoft Azure IoT Hub device SDK for C is used
+	  to connect devices running C code to Azure IoT Hub.
+
+	  https://docs.microsoft.com/nl-nl/azure/iot-hub/iot-hub-device-sdk-c-intro
+
+comment "azure-iot-sdk-c needs a toolchain w/ C++"
+	depends on !BR2_INSTALL_LIBSTDCPP
diff --git a/package/azure-iot-sdk-c/azure-iot-sdk-c.mk b/package/azure-iot-sdk-c/azure-iot-sdk-c.mk
new file mode 100644
index 0000000..dbdef3e
--- /dev/null
+++ b/package/azure-iot-sdk-c/azure-iot-sdk-c.mk
@@ -0,0 +1,51 @@ 
+################################################################################
+#
+# azure-iot-sdk-c
+#
+################################################################################
+
+AZURE_IOT_SDK_C_VERSION = 2017-05-05
+AZURE_IOT_SDK_C_SITE = https://github.com/Azure/azure-iot-sdk-c
+AZURE_IOT_SDK_C_SITE_METHOD = git
+AZURE_IOT_SDK_C_GIT_SUBMODULES = YES
+AZURE_IOT_SDK_C_LICENSE = MIT
+AZURE_IOT_SDK_C_LICENSE_FILES = LICENSE
+AZURE_IOT_SDK_C_INSTALL_STAGING = YES
+AZURE_IOT_SDK_C_DEPENDENCIES = libxml2 openssl libcurl util-linux
+AZURE_IOT_SDK_C_CONF_OPTS = -Dskip_samples=ON
+
+# The project only supports building one kind of library.
+# Further the install target installs the wrong files, so we do it here:
+ifeq ($(BR2_STATIC_LIBS),y)
+AZURE_IOT_SDK_C_LIBS += uamqp/libuamqp.a c-utility/libaziotsharedutil.a \
+	iothub_client/libiothub_client.a iothub_client/libiothub_client_mqtt_ws_transport.a \
+	iothub_client/libiothub_client_amqp_ws_transport.a \
+	iothub_client/libiothub_client_http_transport.a \
+	iothub_client/libiothub_client_amqp_transport.a \
+	iothub_client/libiothub_client_mqtt_transport.a \
+	iothub_service_client/libiothub_service_client.a serializer/libserializer.a umqtt/libumqtt.a
+else
+AZURE_IOT_SDK_C_LIBS += uamqp/libuamqp.so c-utility/libaziotsharedutil.so \
+	iothub_client/libiothub_client.so iothub_client/libiothub_client_mqtt_ws_transport.so \
+	iothub_client/libiothub_client_amqp_ws_transport.so \
+	iothub_client/libiothub_client_http_transport.so \
+	iothub_client/libiothub_client_amqp_transport.so \
+	iothub_client/libiothub_client_mqtt_transport.so \
+	iothub_service_client/libiothub_service_client.so serializer/libserializer.so umqtt/libumqtt.so
+endif
+
+define AZURE_IOT_SDK_C_INSTALL_STAGING_CMDS
+	$(foreach l,$(AZURE_IOT_SDK_C_LIBS), \
+		$(INSTALL) -D -m 0755 $(@D)/$(l) $(STAGING_DIR)/usr/lib/
+	)
+	cp -a $(@D)/c-utility/inc/* $(STAGING_DIR)/usr/include/
+	cp -a $(@D)/iothub_client/inc/* $(STAGING_DIR)/usr/include/
+endef
+
+define AZURE_IOT_SDK_C_INSTALL_TARGET_CMDS
+	$(foreach l,$(AZURE_IOT_SDK_C_LIBS), \
+		$(INSTALL) -D -m 0755 $(@D)/$(l) $(TARGET_DIR)/usr/lib/
+	)
+endef
+
+$(eval $(cmake-package))