From c5c69376173ff5f741f2ad19703483ef1c495c11 Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens Date: Fri, 30 Sep 2016 10:48:54 +0200 Subject: [PATCH 1/6] iotivity: add simple client + server Signed-off-by: Hauke Mehrtens --- net/iotivity/Makefile | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/net/iotivity/Makefile b/net/iotivity/Makefile index b92760d29..725f9f702 100644 --- a/net/iotivity/Makefile +++ b/net/iotivity/Makefile @@ -33,6 +33,7 @@ PKG_CONFIG_DEPENDS := \ CONFIG_PACKAGE_iotivity-resource-container-sample \ CONFIG_PACKAGE_iotivity-resource-container-hue \ CONFIG_PACKAGE_iotivity-example-garage \ + CONFIG_PACKAGE_iotivity-example-simple \ CONFIG_PACKAGE_iotivity_DEBUG \ CONFIG_PACKAGE_iotivity_SECURE @@ -159,6 +160,18 @@ define Package/iotivity-example-garage/description An IoTivity example application endef +define Package/iotivity-example-simple + SECTION:=net + CATEGORY:=Network + DEPENDS:=+iotivity +iotivity-cpp + TITLE:=IoTivity simple client + server + URL:=https://www.iotivity.org +endef + +define Package/iotivity-example-simple/description + The IoTivity simple client and simple server exmaple +endef + PKG_TINYCBOR_NAME:=tinycbor PKG_TINYCBOR_VERSION:=43e3ac9490cf19459ec7b7bd13df3b66810fb62a @@ -210,6 +223,7 @@ SCONS_OPTIONS += \ $(if $(CONFIG_PACKAGE_iotivity-resource-container-sample),containersample) \ $(if $(CONFIG_PACKAGE_iotivity-resource-container-hue),libHueBundle) \ $(if $(CONFIG_PACKAGE_iotivity-example-garage),examples) \ + $(if $(CONFIG_PACKAGE_iotivity-example-simple),examples) \ ifeq ($(CONFIG_PACKAGE_iotivity_DEBUG),y) SCONS_OPTIONS += RELEASE=false @@ -303,6 +317,12 @@ define Package/iotivity-example-garage/install $(INSTALL_BIN) $(PKG_BUILD_DIR)/out/linux/$(ARCH)/$(APP_OPTIM)/resource/examples/garageserver $(1)/usr/bin/ endef +define Package/iotivity-example-simple/install + $(INSTALL_DIR) $(1)/usr/bin + $(INSTALL_BIN) $(PKG_BUILD_DIR)/out/linux/$(ARCH)/$(APP_OPTIM)/resource/examples/simpleclient $(1)/usr/bin/ + $(INSTALL_BIN) $(PKG_BUILD_DIR)/out/linux/$(ARCH)/$(APP_OPTIM)/resource/examples/simpleserver $(1)/usr/bin/ +endef + $(eval $(call BuildPackage,iotivity)) $(eval $(call BuildPackage,iotivity-cpp)) @@ -313,3 +333,4 @@ $(eval $(call BuildPackage,iotivity-resource-container-lib)) $(eval $(call BuildPackage,iotivity-resource-container-sample)) $(eval $(call BuildPackage,iotivity-resource-container-hue)) $(eval $(call BuildPackage,iotivity-example-garage)) +$(eval $(call BuildPackage,iotivity-example-simple)) From b1398d686294d926b1bd270e4a4f29f7642d6155 Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens Date: Sat, 3 Dec 2016 23:55:39 +0100 Subject: [PATCH 2/6] iotivity: remove things manager This is not supported in IoTivity 1.2.1 any more. Signed-off-by: Hauke Mehrtens --- net/iotivity/Makefile | 44 ------------------------------------------- 1 file changed, 44 deletions(-) diff --git a/net/iotivity/Makefile b/net/iotivity/Makefile index 725f9f702..12ccefaf2 100644 --- a/net/iotivity/Makefile +++ b/net/iotivity/Makefile @@ -26,9 +26,7 @@ PKG_LICENSE_FILES:=LICENSE.md PKG_CONFIG_DEPENDS := \ CONFIG_PACKAGE_iotivity \ CONFIG_PACKAGE_iotivity-cpp \ - CONFIG_PACKAGE_iotivity-things-manager-lib \ CONFIG_PACKAGE_iotivity-oic-middle \ - CONFIG_PACKAGE_iotivity-things-manager \ CONFIG_PACKAGE_iotivity-resource-container-lib \ CONFIG_PACKAGE_iotivity-resource-container-sample \ CONFIG_PACKAGE_iotivity-resource-container-hue \ @@ -86,19 +84,6 @@ define Package/iotivity-cpp/description endef -define Package/iotivity-things-manager-lib - SECTION:=net - CATEGORY:=Network - DEPENDS:=+iotivity +iotivity-cpp +libstdcpp - TITLE:=IoTivity things manager lib - URL:=https://www.iotivity.org -endef - -define Package/iotivity-things-manager-lib/description - IoTivity things-manager lib -endef - - define Package/iotivity-oic-middle SECTION:=net CATEGORY:=Network @@ -111,19 +96,6 @@ define Package/iotivity-oic-middle/description IoTivity OIC Middle endef - -define Package/iotivity-things-manager - SECTION:=net - CATEGORY:=Network - DEPENDS:=+iotivity +iotivity-cpp +iotivity-things-manager-lib - TITLE:=IoTivity things manager - URL:=https://www.iotivity.org -endef - -define Package/iotivity-things-manager/description - IoTivity things manager -endef - define Package/iotivity-resource-container-lib SECTION:=net CATEGORY:=Network @@ -216,9 +188,7 @@ SCONS_OPTIONS += \ LOGGING=true \ $(if $(CONFIG_PACKAGE_iotivity),liboctbstack) \ $(if $(CONFIG_PACKAGE_iotivity-cpp),liboc) \ - $(if $(CONFIG_PACKAGE_iotivity-things-manager-lib),libTGMSDK) \ $(if $(CONFIG_PACKAGE_iotivity-oic-middle),examples) \ - $(if $(CONFIG_PACKAGE_iotivity-things-manager),ConServerApp ConClientApp BootstrapServerApp) \ $(if $(CONFIG_PACKAGE_iotivity-resource-container-lib),libResContainer) \ $(if $(CONFIG_PACKAGE_iotivity-resource-container-sample),containersample) \ $(if $(CONFIG_PACKAGE_iotivity-resource-container-hue),libHueBundle) \ @@ -276,23 +246,11 @@ define Package/iotivity-cpp/install $(INSTALL_BIN) $(PKG_BUILD_DIR)/out/linux/$(ARCH)/$(APP_OPTIM)/liboc_logger.so $(1)/usr/lib/ endef -define Package/iotivity-things-manager-lib/install - $(INSTALL_DIR) $(1)/usr/lib - $(INSTALL_BIN) $(PKG_BUILD_DIR)/out/linux/$(ARCH)/$(APP_OPTIM)/libTGMSDKLibrary.so $(1)/usr/lib/ -endef - define Package/iotivity-oic-middle/install $(INSTALL_DIR) $(1)/usr/bin $(INSTALL_BIN) $(PKG_BUILD_DIR)/out/linux/$(ARCH)/$(APP_OPTIM)/examples/OICMiddle/OICMiddle $(1)/usr/bin/ endef -define Package/iotivity-things-manager/install - $(INSTALL_DIR) $(1)/usr/bin - $(INSTALL_BIN) $(PKG_BUILD_DIR)/out/linux/$(ARCH)/$(APP_OPTIM)/service/things-manager/sampleapp/linux/configuration/bootstrapserver $(1)/usr/bin/ - $(INSTALL_BIN) $(PKG_BUILD_DIR)/out/linux/$(ARCH)/$(APP_OPTIM)/service/things-manager/sampleapp/linux/configuration/con-server $(1)/usr/bin/ - $(INSTALL_BIN) $(PKG_BUILD_DIR)/out/linux/$(ARCH)/$(APP_OPTIM)/service/things-manager/sampleapp/linux/configuration/con-client $(1)/usr/bin/ -endef - define Package/iotivity-resource-container-lib/install $(INSTALL_DIR) $(1)/usr/lib $(INSTALL_BIN) $(PKG_BUILD_DIR)/out/linux/$(ARCH)/$(APP_OPTIM)/librcs_common.so $(1)/usr/lib/ @@ -326,9 +284,7 @@ endef $(eval $(call BuildPackage,iotivity)) $(eval $(call BuildPackage,iotivity-cpp)) -$(eval $(call BuildPackage,iotivity-things-manager-lib)) $(eval $(call BuildPackage,iotivity-oic-middle)) -$(eval $(call BuildPackage,iotivity-things-manager)) $(eval $(call BuildPackage,iotivity-resource-container-lib)) $(eval $(call BuildPackage,iotivity-resource-container-sample)) $(eval $(call BuildPackage,iotivity-resource-container-hue)) From 1e28dfe214b6e6403c83b2292d98683a34569136 Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens Date: Thu, 29 Sep 2016 14:26:18 +0200 Subject: [PATCH 3/6] iotivity: update to version 1.2.1 This does the following changes: * update to version 1.2.1 * add iotivity-resource-directory-lib, this is needed by most applications now * do not activate security support by default, this caused some problems and needs some more settings to setup. * use sqlite version from normal package feed instead of using an own version * build against LEDE version of mbedtls * update example security configuration * remove some patches that went upstream * add some new patches fixing problems observed in my environment, most of them are on their way upstream. Signed-off-by: Hauke Mehrtens --- net/iotivity/Makefile | 61 ++- .../files/etc/iotivity/oic_svr_db.cbor | Bin 1132 -> 1234 bytes .../files/etc/iotivity/oic_svr_db.json | 85 ++--- net/iotivity/patches/001-no_unit_test.patch | 250 ++++++------ net/iotivity/patches/004-use-env.patch | 2 +- ...-not-set-architecture-specific-flags.patch | 4 +- .../021-add-some-more-architectures.patch | 8 +- .../patches/030-remove-check-for-curl.patch | 4 +- .../040-linux-Use-system-sqlite3.patch | 27 ++ .../patches/040-remove-provisioning.patch | 24 -- ...tyHandlerResponse-from-stack-to-heap.patch | 54 +++ ...-OCClientResponse-from-stack-to-heap.patch | 357 ++++++++++++++++++ ...-OCClientResponse-from-stack-to-heap.patch | 103 +++++ ...capsulation-deactivate-test-covergae.patch | 38 -- ...ding-of-permission-attribute-from-co.patch | 39 -- ...endianness-dependency-for-credential.patch | 87 ----- ...ption-when-reading-inetgers-from-cbo.patch | 93 ----- ...ainer-Backported-init-fix-to-1.1-rel.patch | 36 -- ...ompilation-against-non-debug-mbedtls.patch | 27 ++ ..._version_get_string-only-if-availabl.patch | 35 ++ ..._ssl_conf_renegotiation-only-if-avai.patch | 30 ++ ...-of-patched-mbed-functions-condition.patch | 44 +++ .../patches/078-use-system-mbedtls.patch | 22 ++ ...pper-do-not-check-for-floating-point.patch | 31 ++ net/iotivity/patches/140-remove-glib2.patch | 33 +- 25 files changed, 926 insertions(+), 568 deletions(-) create mode 100644 net/iotivity/patches/040-linux-Use-system-sqlite3.patch delete mode 100644 net/iotivity/patches/040-remove-provisioning.patch create mode 100644 net/iotivity/patches/050-csdk-move-OCEntityHandlerResponse-from-stack-to-heap.patch create mode 100644 net/iotivity/patches/051-csdk-move-OCClientResponse-from-stack-to-heap.patch create mode 100644 net/iotivity/patches/053-src-move-OCClientResponse-from-stack-to-heap.patch delete mode 100644 net/iotivity/patches/054-resource-encapsulation-deactivate-test-covergae.patch delete mode 100644 net/iotivity/patches/060-security-fix-reading-of-permission-attribute-from-co.patch delete mode 100644 net/iotivity/patches/061-Remove-the-endianness-dependency-for-credential.patch delete mode 100644 net/iotivity/patches/062-Fix-memory-corruption-when-reading-inetgers-from-cbo.patch delete mode 100644 net/iotivity/patches/070-Resource-container-Backported-init-fix-to-1.1-rel.patch create mode 100644 net/iotivity/patches/070-ssl-fix-compilation-against-non-debug-mbedtls.patch create mode 100644 net/iotivity/patches/071-ssl-call-mbedtls_version_get_string-only-if-availabl.patch create mode 100644 net/iotivity/patches/072-ssl-call-mbedtls_ssl_conf_renegotiation-only-if-avai.patch create mode 100644 net/iotivity/patches/075-ssl-enable-usage-of-patched-mbed-functions-condition.patch create mode 100644 net/iotivity/patches/078-use-system-mbedtls.patch create mode 100644 net/iotivity/patches/080-zigbee_wrapper-do-not-check-for-floating-point.patch diff --git a/net/iotivity/Makefile b/net/iotivity/Makefile index 12ccefaf2..5bd4056b1 100644 --- a/net/iotivity/Makefile +++ b/net/iotivity/Makefile @@ -8,12 +8,12 @@ include $(TOPDIR)/rules.mk PKG_NAME:=iotivity -PKG_VERSION:=1.1.0 +PKG_VERSION:=1.2.1 PKG_RELEASE=1 PKG_SOURCE:=${PKG_NAME}-${PKG_VERSION}.tar.gz PKG_SOURCE_URL:=http://mirrors.kernel.org/${PKG_NAME}/${PKG_VERSION}/ -PKG_MD5SUM:=98f8d5b0304c357520c4343d983491e2 +PKG_MD5SUM:=7dcd9f0f48263c6b27a2c3d085dd7278b5c0feed1dfec8872a04899707fa23d8 PKG_USE_MIPS16:=0 PKG_BUILD_DEPENDS:=boost @@ -26,6 +26,7 @@ PKG_LICENSE_FILES:=LICENSE.md PKG_CONFIG_DEPENDS := \ CONFIG_PACKAGE_iotivity \ CONFIG_PACKAGE_iotivity-cpp \ + CONFIG_PACKAGE_iotivity-resource-directory-lib \ CONFIG_PACKAGE_iotivity-oic-middle \ CONFIG_PACKAGE_iotivity-resource-container-lib \ CONFIG_PACKAGE_iotivity-resource-container-sample \ @@ -42,7 +43,7 @@ include $(INCLUDE_DIR)/scons.mk define Package/iotivity SECTION:=net CATEGORY:=Network - DEPENDS:=@!USE_UCLIBC +libpthread +librt +libuuid + DEPENDS:=@!USE_UCLIBC +libpthread +librt +libuuid +libsqlite3 +PACKAGE_iotivity_SECURE:libmbedtls TITLE:=IoTivity C Library URL:=https://www.iotivity.org MENU:=1 @@ -62,7 +63,6 @@ define Package/iotivity/config config PACKAGE_iotivity_SECURE bool "IoTivity with security support" - default y help Activate security support. @@ -83,11 +83,19 @@ define Package/iotivity-cpp/description Open Interconnect Consortium Specification. endef +define Package/iotivity-resource-directory-lib + SECTION:=net + CATEGORY:=Network + DEPENDS:=+iotivity +iotivity-cpp + TITLE:=IoTivity Resource Directory library + URL:=https://www.iotivity.org +endef + define Package/iotivity-oic-middle SECTION:=net CATEGORY:=Network - DEPENDS:=+iotivity +iotivity-cpp + DEPENDS:=+iotivity +iotivity-cpp +iotivity-resource-directory-lib TITLE:=IoTivity OIC Middle URL:=https://www.iotivity.org endef @@ -123,7 +131,7 @@ endef define Package/iotivity-example-garage SECTION:=net CATEGORY:=Network - DEPENDS:=+iotivity +iotivity-cpp + DEPENDS:=+iotivity +iotivity-cpp +iotivity-resource-directory-lib TITLE:=IoTivity Garage example URL:=https://www.iotivity.org endef @@ -135,7 +143,7 @@ endef define Package/iotivity-example-simple SECTION:=net CATEGORY:=Network - DEPENDS:=+iotivity +iotivity-cpp + DEPENDS:=+iotivity +iotivity-cpp +iotivity-resource-directory-lib TITLE:=IoTivity simple client + server URL:=https://www.iotivity.org endef @@ -146,39 +154,24 @@ endef PKG_TINYCBOR_NAME:=tinycbor -PKG_TINYCBOR_VERSION:=43e3ac9490cf19459ec7b7bd13df3b66810fb62a -PKG_TINYCBOR_SOURCE:=$(PKG_TINYCBOR_NAME)-$(PKG_TINYCBOR_VERSION).tar.bz2 PKG_TINYCBOR_PROTO:=git +PKG_TINYCBOR_VERSION:=0.4 +PKG_TINYCBOR_SOURCE_VERSION:=a088996aa5f59b4f27f20fadad053d88bee357d4 +PKG_TINYCBOR_SOURCE:=$(PKG_TINYCBOR_NAME)-$(PKG_TINYCBOR_VERSION).tar.bz2 PKG_TINYCBOR_SOURCE_URL:=https://github.com/01org/tinycbor.git PKG_TINYCBOR_SUBDIR:=$(PKG_TINYCBOR_NAME) -#PKG_TINYCBOR_MIRROR_MD5SUM:=? define Download/iotivity-tinycbor FILE:=$(PKG_TINYCBOR_SOURCE) URL:=$(PKG_TINYCBOR_SOURCE_URL) PROTO:=$(PKG_TINYCBOR_PROTO) - VERSION:=$(PKG_TINYCBOR_VERSION) + VERSION:=$(PKG_TINYCBOR_SOURCE_VERSION) SUBDIR:=$(PKG_TINYCBOR_SUBDIR) - #MIRROR_MD5SUM:=$(PKG_TINYCBOR_MIRROR_MD5SUM) endef $(eval $(call Download,iotivity-tinycbor)) -PKG_SQLITE_NAME:=sqlite -PKG_SQLITE_VERSION:=3081101 -PKG_SQLITE_SOURCE:=$(PKG_SQLITE_NAME)-amalgamation-$(PKG_SQLITE_VERSION).zip -PKG_SQLITE_SOURCE_URL:=http://www.sqlite.org/2015/ -PKG_SQLITE_SUBDIR:=$(PKG_SQLITE_NAME) -PKG_SQLITE_MD5SUM:=94907e831502e2080b76e281cfa24dde - -define Download/iotivity-sqlite - FILE:=$(PKG_SQLITE_SOURCE) - URL:=$(PKG_SQLITE_SOURCE_URL) - VERSION:=$(PKG_SQLITE_VERSION) - SUBDIR:=$(PKG_SQLITE_SUBDIR) - MD5SUM:=$(PKG_SQLITE_MD5SUM) -endef -$(eval $(call Download,iotivity-sqlite)) +EXTRA_CXXFLAGS += -std=gnu++11 SCONS_OPTIONS += \ TARGET_OS=linux \ @@ -186,8 +179,8 @@ SCONS_OPTIONS += \ TARGET_ARCH=$(ARCH) \ STAGING_DIR=$(STAGING_DIR) \ LOGGING=true \ - $(if $(CONFIG_PACKAGE_iotivity),liboctbstack) \ - $(if $(CONFIG_PACKAGE_iotivity-cpp),liboc) \ + $(if $(CONFIG_PACKAGE_iotivity),octbstack) \ + $(if $(CONFIG_PACKAGE_iotivity-cpp),oc) \ $(if $(CONFIG_PACKAGE_iotivity-oic-middle),examples) \ $(if $(CONFIG_PACKAGE_iotivity-resource-container-lib),libResContainer) \ $(if $(CONFIG_PACKAGE_iotivity-resource-container-sample),containersample) \ @@ -216,9 +209,6 @@ endif define Build/Prepare $(call Build/Prepare/Default) $(TAR) -C $(PKG_BUILD_DIR)/extlibs/tinycbor/ -xjf $(DL_DIR)/$(PKG_TINYCBOR_SOURCE) - unzip -d $(PKG_BUILD_DIR)/extlibs/sqlite3/ $(DL_DIR)/$(PKG_SQLITE_SOURCE) - mv $(PKG_BUILD_DIR)/extlibs/sqlite3/$(PKG_SQLITE_NAME)-amalgamation-$(PKG_SQLITE_VERSION)/sqlite3.h $(PKG_BUILD_DIR)/extlibs/sqlite3/ - mv $(PKG_BUILD_DIR)/extlibs/sqlite3/$(PKG_SQLITE_NAME)-amalgamation-$(PKG_SQLITE_VERSION)/sqlite3.c $(PKG_BUILD_DIR)/extlibs/sqlite3/ endef @@ -233,6 +223,7 @@ endef define Package/iotivity/install $(INSTALL_DIR) $(1)/usr/lib + $(INSTALL_BIN) $(PKG_BUILD_DIR)/out/linux/$(ARCH)/$(APP_OPTIM)/libconnectivity_abstraction.so $(1)/usr/lib/ $(INSTALL_BIN) $(PKG_BUILD_DIR)/out/linux/$(ARCH)/$(APP_OPTIM)/liboctbstack.so $(1)/usr/lib/ ifeq ($(CONFIG_PACKAGE_iotivity_SECURE),y) $(INSTALL_DIR) $(1)/etc/iotivity/ @@ -246,6 +237,11 @@ define Package/iotivity-cpp/install $(INSTALL_BIN) $(PKG_BUILD_DIR)/out/linux/$(ARCH)/$(APP_OPTIM)/liboc_logger.so $(1)/usr/lib/ endef +define Package/iotivity-resource-directory-lib/install + $(INSTALL_DIR) $(1)/usr/lib + $(INSTALL_BIN) $(PKG_BUILD_DIR)/out/linux/$(ARCH)/$(APP_OPTIM)/libresource_directory.so $(1)/usr/lib/ +endef + define Package/iotivity-oic-middle/install $(INSTALL_DIR) $(1)/usr/bin $(INSTALL_BIN) $(PKG_BUILD_DIR)/out/linux/$(ARCH)/$(APP_OPTIM)/examples/OICMiddle/OICMiddle $(1)/usr/bin/ @@ -284,6 +280,7 @@ endef $(eval $(call BuildPackage,iotivity)) $(eval $(call BuildPackage,iotivity-cpp)) +$(eval $(call BuildPackage,iotivity-resource-directory-lib)) $(eval $(call BuildPackage,iotivity-oic-middle)) $(eval $(call BuildPackage,iotivity-resource-container-lib)) $(eval $(call BuildPackage,iotivity-resource-container-sample)) diff --git a/net/iotivity/files/etc/iotivity/oic_svr_db.cbor b/net/iotivity/files/etc/iotivity/oic_svr_db.cbor index 91849e22c5e7bb26c2f3f3e02f760904ef0170a7..c8f19f53a32aaf2e10a4fad3452729661bd0c01d 100644 GIT binary patch literal 1234 zcmbtTQBuM%5Cw)AFX9(7lo3wg4gAC}O_Qxnn>L*!1^g^}4L{WWcnVJ81-t{_m`$O> zR6A5`rrB(EUv~Fpv!R5F+reEKSjn|{WrTu$dXIJPM?g)Ub4Es7ftI1nX z4KWCgkq+fmdKoJ>S@0CPQB*!-&CxQ|KP?tQ1d?%ka+TpBogq=mjW1^r)t$4@e2y{y9-$D?4U$ zI&));qA^vL+4QX1+#77~x*fBf&E{VvpwvYfpyaH7{LbxVcStWpqlJWGxU<=y^=N&dYMV1VGZmt{Oe=5Z+e(UDlHzO0Uv;Y7A literal 1132 zcmb7DOHRWu5N)Z%8Q8I5RjG}D6L15TWksEtN#it$E!*j5S=ez4N+mb}+g=LRU?)nO zR4JsfGEefGvFFWrw!k2MID1?N7P&UB$bj_o+f-+ML}0RvBkOZTT4c&HFB=RM1)(Q6 zcy<>Q#baNYvCo5X!38;oM;Y0`MCEy2Q=HtfW+_QG`b=^k))XG+lqT@3#)iw&J)bmt zBs&iji{#HEq&CddJR(Ud;aYQ%p4IBQxVpV5*1*AmDY<>^pNjhaCug6mO`~3qN-7tZ zwOpz_UKRJS{xKQnkrMNilzSXj#C5R-4h~GoQC^nO@*TMr@;gGBaiI3`J|rFA*k2?) zUnjkj6F}Fv(dUN)z3K!GDDHp;(5srZZ;LT1<+oxQ(1_(DoSAWtX84*Sr~&#>GWDmJf6X`%h+7xkxt AwEzGB diff --git a/net/iotivity/files/etc/iotivity/oic_svr_db.json b/net/iotivity/files/etc/iotivity/oic_svr_db.json index 5842a14f5..2155071e9 100644 --- a/net/iotivity/files/etc/iotivity/oic_svr_db.json +++ b/net/iotivity/files/etc/iotivity/oic_svr_db.json @@ -8,83 +8,47 @@ { "href": "/oic/res", "rel": "", - "rt": "", - "if": "" + "rt": ["oic.wk.res"], + "if": ["oic.if.ll"] }, { "href": "/oic/d", "rel": "", - "rt": "", - "if": "" + "rt": ["oic.wk.d"], + "if": ["oic.if.baseline", "oic.if.r"] }, { "href": "/oic/p", "rel": "", - "rt": "", - "if": "" - }, - { - "href": "/oic/res/d", - "rel": "", - "rt": "", - "if": "" - }, - { - "href": "/oic/res/types/d", - "rel": "", - "rt": "", - "if": "" - }, - { - "href": "/oic/ad", - "rel": "", - "rt": "", - "if": "" + "rt": ["oic.wk.p"], + "if": ["oic.if.baseline", "oic.if.r"] }, { "href": "/oic/sec/acl", "rel": "", - "rt": "", - "if": "" - }, - { - "href": "/oic/sec/amacl", - "rel": "", - "rt": "", - "if": "" - }, - { - "href": "/oic/sec/doxm", - "rel": "", - "rt": "", - "if": "" - }, - { - "href": "/oic/sec/pstat", - "rel": "", - "rt": "", - "if": "" + "rt": ["oic.r.acl"], + "if": ["oic.if.baseline"] } ], "permission": 2 }, { - "subjectuuid": "32323232-3232-3232-3232-323232323232", + "subjectuuid": "*", "resources": [ { - "href": "/oic/sec/acl", + "href": "/oic/sec/doxm", "rel": "", - "rt": "", - "if": "" - } , + "rt": ["oic.r.doxm"], + "if": ["oic.if.baseline"] + }, { - "href": "/oic/sec/cred", + "href": "/oic/sec/pstat", "rel": "", - "rt": "", - "if": "" + "rt": ["oic.r.pstat"], + "if": ["oic.if.baseline"] } ], - "permission": 31 + "permission": 2 }, { "subjectuuid": "*", @@ -92,11 +56,11 @@ { "href": "*", "rel": "", - "rt": "", - "if": "" + "rt": ["oic.core"], + "if": ["oic.if.baseline"] } ], - "permission": 6 + "permission": 7 } ] }, @@ -108,8 +72,8 @@ "rowneruuid": "31313131-3131-3131-3131-313131313131", "cm": 0, "tm": 0, - "om": 3, - "sm": 3 + "om": 4, + "sm": 4 }, "doxm": { "oxms": [0], @@ -118,8 +82,7 @@ "owned": true, "deviceuuid": "31313131-3131-3131-3131-313131313131", "devowneruuid": "32323232-3232-3232-3232-323232323232", - "rowneruuid": "31313131-3131-3131-3131-313131313131", - "dpc": false + "rowneruuid": "31313131-3131-3131-3131-313131313131" }, "cred": { "creds": [ @@ -133,6 +96,6 @@ } } ], - "rowneruuid": "32323232-3232-3232-3232-323232323232" + "rowneruuid": "31313131-3131-3131-3131-313131313131" } } diff --git a/net/iotivity/patches/001-no_unit_test.patch b/net/iotivity/patches/001-no_unit_test.patch index 7e9a39543..8a40e7312 100644 --- a/net/iotivity/patches/001-no_unit_test.patch +++ b/net/iotivity/patches/001-no_unit_test.patch @@ -1,101 +1,3 @@ ---- a/resource/SConscript -+++ b/resource/SConscript -@@ -75,7 +75,7 @@ if target_os == 'linux': - SConscript('csdk/stack/samples/linux/secure/SConscript') - - # Build C/C++ unit tests -- SConscript('unit_tests.scons') -+ # SConscript('unit_tests.scons') - - elif target_os == 'darwin': - env.Command('../../out/darwin/iotivity-csdk.framework',None,src_dir + '/tools/darwin/mkfwk_osx.sh') ---- a/resource/csdk/security/provisioning/ck_manager/SConscript -+++ b/resource/csdk/security/provisioning/ck_manager/SConscript -@@ -47,4 +47,4 @@ x509_env.AppendUnique(LIBS = ['Base64']) - x509_env.AppendUnique(LIBS = ['Json']) - - SConscript('sample/SConscript') --SConscript('unittest/SConscript') -+# SConscript('unittest/SConscript') ---- a/service/resource-encapsulation/SConscript -+++ b/service/resource-encapsulation/SConscript -@@ -113,10 +113,10 @@ SConscript('examples/SConscript') - # Build UnitTests Resource Client , resourceCache and resourceBroker and - # DiscoveryManager - ################################################ ###################### --if target_os == 'linux': -- SConscript('unittests/SConscript') -- SConscript('src/resourceCache/unittests/SConscript') -- SConscript('src/resourceBroker/unittest/SConscript') -+# if target_os == 'linux': -+# SConscript('unittests/SConscript') -+# SConscript('src/resourceCache/unittests/SConscript') -+# SConscript('src/resourceBroker/unittest/SConscript') - - if target_os == 'android': - SConscript('android/SConscript') -\ No newline at end of file ---- a/service/things-manager/SConscript -+++ b/service/things-manager/SConscript -@@ -75,6 +75,6 @@ SConscript('sampleapp/SConscript') - ###################################################################### - # Build UnitTests Things Manager - ################################################ ###################### --if target_os == 'linux': -- SConscript('unittests/SConscript') -+# if target_os == 'linux': -+# SConscript('unittests/SConscript') - ---- a/service/resource-hosting/SConscript -+++ b/service/resource-hosting/SConscript -@@ -94,8 +94,8 @@ resourcehosting_env.UserInstallTargetHea - 'service/resource-hosting', 'Hosting.h') - - # Go to build Unit test --if target_os == 'linux': -- SConscript('unittest/SConscript') -+# if target_os == 'linux': -+# SConscript('unittest/SConscript') - - # Go to build sample apps - SConscript('SampleApp/SConscript') ---- a/service/easy-setup/mediator/csdk/SConscript -+++ b/service/easy-setup/mediator/csdk/SConscript -@@ -124,8 +124,8 @@ if target_os == 'linux': - ###################################################################### - #Build UnitTestcases for Mediator[CSDK] - ################################################ ###################### --if target_os == 'linux': -- SConscript('unittests/SConscript') -+# if target_os == 'linux': -+# SConscript('unittests/SConscript') - - - ---- a/service/easy-setup/mediator/richsdk/SConscript -+++ b/service/easy-setup/mediator/richsdk/SConscript -@@ -138,6 +138,6 @@ if target_os == 'linux': - ###################################################################### - #Build UnitTestcases for Mediator[RichSDK] - ################################################ ###################### --if target_os == 'linux': -- SConscript('unittests/SConscript') -+# if target_os == 'linux': -+# SConscript('unittests/SConscript') - ---- a/service/resource-container/SConscript -+++ b/service/resource-container/SConscript -@@ -209,8 +209,8 @@ lib_env = conf2.Finish() - ###################################################################### - # build resource container unit tests - ###################################################################### --if target_os == 'linux': -- SConscript('unittests/SConscript') -+# if target_os == 'linux': -+# SConscript('unittests/SConscript') - - ###################################################################### - # Build Container Sample --- a/plugins/SConscript +++ b/plugins/SConscript @@ -35,7 +35,7 @@ if target_os not in ['android', 'arduino @@ -107,47 +9,133 @@ if build_sample == 'ON': if target_os in ['linux']: ---- a/service/scene-manager/SConscript -+++ b/service/scene-manager/SConscript -@@ -101,8 +101,8 @@ scenemanager_env.UserInstallTargetHeader - scenemanager_env.UserInstallTargetHeader('include/RemoteSceneAction.h', 'service/scene-manager', 'RemoteSceneAction.h') +--- a/resource/SConscript ++++ b/resource/SConscript +@@ -78,7 +78,7 @@ if target_os in ['linux', 'windows']: + SConscript('csdk/stack/samples/linux/secure/SConscript') - # Go to build Unit test --if target_os == 'linux': + # Build C/C++ unit tests +- SConscript('unit_tests.scons') ++ # SConscript('unit_tests.scons') + + elif target_os == 'darwin': + env.Command('../../out/darwin/iotivity-csdk.framework',None,src_dir + '/tools/darwin/mkfwk_osx.sh') +--- a/resource/csdk/resource-directory/SConscript ++++ b/resource/csdk/resource-directory/SConscript +@@ -114,8 +114,3 @@ if 'SERVER' in rd_mode: + if target_os in ['linux']: + SConscript('samples/SConscript') + +-###################################################################### +-# Build UnitTests of the Resource Directory +-################################################ ###################### +-if target_os in ['linux']: - SConscript('unittests/SConscript') -+# if target_os == 'linux': -+# SConscript('unittests/SConscript') +--- a/service/coap-http-proxy/SConscript ++++ b/service/coap-http-proxy/SConscript +@@ -84,6 +84,3 @@ local_env.UserInstallTargetHeader('inclu + ###################################################################### + if target_os in ['linux', 'tizen']: + SConscript('samples/SConscript') +- +-if target_os in ['linux']: +- SConscript('unittests/SConscript') +--- a/service/easy-setup/enrollee/SConscript ++++ b/service/easy-setup/enrollee/SConscript +@@ -123,7 +123,3 @@ if target_os == 'arduino': - # Go to build sample apps --SConscript('sampleapp/SConscript') -+# SConscript('sampleapp/SConscript') + if target_os in ['linux']: + SConscript('../sampleapp/enrollee/linux/SConscript') +- #Build UnitTestcases for Enrollee +- if enrollee_env.get('SECURED') == '0': +- SConscript('../enrollee/unittests/SConscript') +- +--- a/service/easy-setup/mediator/richsdk/SConscript ++++ b/service/easy-setup/mediator/richsdk/SConscript +@@ -163,11 +163,3 @@ if target_os in ['linux']: + if target_os in ['android']: + SConscript('../../sampleapp/mediator/android/SConscript') + +- +-###################################################################### +-#Build UnitTestcases for Mediator[RichSDK] +-################################################ ###################### +-if env.get('SECURED') == '0': +- if target_os == 'linux': +- SConscript('unittests/SConscript') +- +--- a/service/resource-container/SConscript ++++ b/service/resource-container/SConscript +@@ -223,12 +223,6 @@ else: + lib_env = conf2.Finish() + + ###################################################################### +-# build resource container unit tests +-###################################################################### +-if target_os in ['linux']: +- SConscript('unittests/SConscript') +- +-###################################################################### + # Build Container Sample + ###################################################################### + if target_os not in ['ios']: +--- a/service/resource-encapsulation/SConscript ++++ b/service/resource-encapsulation/SConscript +@@ -121,14 +121,5 @@ resourceClient_env.UserInstallTargetHead + ###################################################################### + SConscript('examples/SConscript') + +-###################################################################### +-# Build UnitTests Resource Client , resourceCache and resourceBroker and +-# DiscoveryManager +-################################################ ###################### +-if target_os in ['linux']: +- SConscript('unittests/SConscript') +- SConscript('src/resourceCache/unittests/SConscript') +- SConscript('src/resourceBroker/unittest/SConscript') +- + if target_os == 'android': + SConscript('android/SConscript') --- a/service/resource-encapsulation/src/common/SConscript +++ b/service/resource-encapsulation/src/common/SConscript -@@ -122,9 +122,9 @@ if target_os == 'linux': - 'expiryTimer/unittests/ExpiryTimerTest.cpp' - ] +@@ -22,10 +22,10 @@ + # rcs_common (primitiveResource and expiryTimer) build script + ## + import os ++Import('env') -- rcs_common_test = rcs_common_test_env.Program('rcs_common_test', rcs_common_test_src) -- Alias("rcs_common_test", rcs_common_test) -- env.AppendTarget('rcs_common_test') -+# rcs_common_test = rcs_common_test_env.Program('rcs_common_test', rcs_common_test_src) -+# Alias("rcs_common_test", rcs_common_test) -+# env.AppendTarget('rcs_common_test') + # SConscript file for Local PKI google tests +-gtest_env = SConscript('#extlibs/gtest/SConscript') +-lib_env = gtest_env.Clone() ++lib_env = env.Clone() - if env.get('TEST') == '1': - from tools.scons.RunTest import * + # Add third party libraries + SConscript('#service/third_party_libs.scons', exports = 'lib_env') --- a/service/resource-encapsulation/src/serverBuilder/SConscript +++ b/service/resource-encapsulation/src/serverBuilder/SConscript -@@ -110,9 +110,9 @@ if target_os == 'linux': +@@ -21,9 +21,11 @@ + ## + # rcs_server (Server Builder) project build script + ## ++import os ++Import('env') ++ + # SConscript file for Local PKI google tests +-gtest_env = SConscript('#extlibs/gtest/SConscript') +-lib_env = gtest_env.Clone() ++lib_env = env.Clone() - server_builder_test_src = env.Glob('unittests/*.cpp') + # Add third party libraries + SConscript('#service/third_party_libs.scons', exports = 'lib_env') +--- a/service/scene-manager/SConscript ++++ b/service/scene-manager/SConscript +@@ -100,9 +100,5 @@ scenemanager_env.UserInstallTargetHeader + scenemanager_env.UserInstallTargetHeader('include/RemoteScene.h', 'service/scene-manager', 'RemoteScene.h') + scenemanager_env.UserInstallTargetHeader('include/RemoteSceneAction.h', 'service/scene-manager', 'RemoteSceneAction.h') -- server_builder_test = server_builder_test_env.Program('rcs_server_test', server_builder_test_src) -- Alias("rcs_server_test", server_builder_test) -- env.AppendTarget('rcs_server_test') -+# server_builder_test = server_builder_test_env.Program('rcs_server_test', server_builder_test_src) -+# Alias("rcs_server_test", server_builder_test) -+# env.AppendTarget('rcs_server_test') - - if env.get('TEST') == '1': - from tools.scons.RunTest import * +-# Go to build Unit test +-if target_os in ['linux']: +- SConscript('unittests/SConscript') +- + # Go to build sample apps + SConscript('sampleapp/SConscript') diff --git a/net/iotivity/patches/004-use-env.patch b/net/iotivity/patches/004-use-env.patch index 7e1df81d6..adfcf3336 100644 --- a/net/iotivity/patches/004-use-env.patch +++ b/net/iotivity/patches/004-use-env.patch @@ -9,7 +9,7 @@ Subject: [PATCH 3/4] 004-use-env.patch --- a/build_common/SConscript +++ b/build_common/SConscript -@@ -151,6 +151,26 @@ tc_set_msg = ''' +@@ -163,6 +163,26 @@ tc_set_msg = ''' * cause inexplicable errors. * ******************************************************************************* ''' diff --git a/net/iotivity/patches/020-Do-not-set-architecture-specific-flags.patch b/net/iotivity/patches/020-Do-not-set-architecture-specific-flags.patch index b49cb5213..c04630249 100644 --- a/net/iotivity/patches/020-Do-not-set-architecture-specific-flags.patch +++ b/net/iotivity/patches/020-Do-not-set-architecture-specific-flags.patch @@ -14,7 +14,7 @@ Signed-off-by: Hauke Mehrtens --- a/build_common/linux/SConscript +++ b/build_common/linux/SConscript -@@ -24,20 +24,3 @@ env.AppendUnique(LINKFLAGS = ['-ldl', '- +@@ -24,20 +24,3 @@ env.AppendUnique(LIBS = ['dl', 'pthread' # Set arch flags that match best TARGET_ARCH variable target_arch = env.get('TARGET_ARCH') @@ -37,7 +37,7 @@ Signed-off-by: Hauke Mehrtens - env.AppendUnique(CPPFLAGS = ['-march=armv8-a']) --- a/resource/csdk/connectivity/build/linux/SConscript +++ b/resource/csdk/connectivity/build/linux/SConscript -@@ -22,20 +22,3 @@ env.AppendUnique(LINKFLAGS = ['-ldl', '- +@@ -23,20 +23,3 @@ env.AppendUnique(LIBS = ['dl', 'pthread' # Set arch flags target_arch = env.get('TARGET_ARCH') diff --git a/net/iotivity/patches/021-add-some-more-architectures.patch b/net/iotivity/patches/021-add-some-more-architectures.patch index 6d570aaf9..442c1f79c 100644 --- a/net/iotivity/patches/021-add-some-more-architectures.patch +++ b/net/iotivity/patches/021-add-some-more-architectures.patch @@ -13,13 +13,13 @@ Signed-off-by: Hauke Mehrtens --- a/build_common/SConscript +++ b/build_common/SConscript -@@ -14,7 +14,7 @@ host_target_map = { +@@ -18,7 +18,7 @@ host_target_map = { # Map of os and allowed archs (os: allowed archs) os_arch_map = { -- 'linux': ['x86', 'x86_64', 'arm', 'arm64'], -+ 'linux': ['x86', 'x86_64', 'arm', 'arm64', 'mips', 'mipsel', 'mips64', 'mips64el', 'i386', 'powerpc', 'sparc', 'aarch64'], - 'tizen': ['x86', 'x86_64', 'arm', 'arm64', 'armeabi-v7a'], +- 'linux': ['x86', 'x86_64', 'arm', 'arm-v7a', 'armeabi-v7a', 'arm64'], ++ 'linux': ['x86', 'x86_64', 'arm', 'arm-v7a', 'armeabi-v7a', 'arm64', 'mips', 'mipsel', 'mips64', 'mips64el', 'i386', 'powerpc', 'sparc', 'aarch64'], + 'tizen': ['x86', 'x86_64', 'arm', 'arm-v7a', 'armeabi-v7a', 'arm64'], 'android': ['x86', 'x86_64', 'armeabi', 'armeabi-v7a', 'armeabi-v7a-hard', 'arm64-v8a'], 'windows': ['x86', 'amd64', 'arm'], --- a/resource/csdk/connectivity/build/SConscript diff --git a/net/iotivity/patches/030-remove-check-for-curl.patch b/net/iotivity/patches/030-remove-check-for-curl.patch index fd3fe53c7..475976d94 100644 --- a/net/iotivity/patches/030-remove-check-for-curl.patch +++ b/net/iotivity/patches/030-remove-check-for-curl.patch @@ -1,6 +1,6 @@ --- a/service/resource-container/SConscript +++ b/service/resource-container/SConscript -@@ -175,36 +175,22 @@ if target_os in ['linux', 'tizen', 'andr +@@ -191,36 +191,22 @@ if target_os in ['linux', 'tizen', 'andr # build hue sample bundle ###################################################################### @@ -52,4 +52,4 @@ +hue_resource_bundle_env.UserInstallTargetLib(HueBundle, 'libHueBundle') ###################################################################### - # build resource container unit tests + # Build Container Sample diff --git a/net/iotivity/patches/040-linux-Use-system-sqlite3.patch b/net/iotivity/patches/040-linux-Use-system-sqlite3.patch new file mode 100644 index 000000000..50d55a7f1 --- /dev/null +++ b/net/iotivity/patches/040-linux-Use-system-sqlite3.patch @@ -0,0 +1,27 @@ +From 08b403572985a70fe5d652378e1cfa2b72ac6a3d Mon Sep 17 00:00:00 2001 +From: Philippe Coval +Date: Fri, 9 Dec 2016 02:12:04 +0100 +Subject: [PATCH] linux: Use system sqlite3 + +Problem was discovered on yocto + +Change-Id: I5274bed9e4b7ddcdc1b17a265a1886cd78cb631f +Signed-off-by: Philippe Coval +Reviewed-on: https://gerrit.iotivity.org/gerrit/15305 +Tested-by: jenkins-iotivity +Reviewed-by: Ziran Sun +--- + resource/csdk/SConscript | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +--- a/resource/csdk/SConscript ++++ b/resource/csdk/SConscript +@@ -191,7 +191,7 @@ if with_tcp == True: + + if 'SERVER' in rd_mode: + liboctbstack_src.append(OCTBSTACK_SRC + 'oicresourcedirectory.c') +- if target_os not in ['tizen']: ++ if target_os not in ['linux', 'tizen']: + liboctbstack_src.append('#extlibs/sqlite3/sqlite3.c') + + if target_os in ['linux']: diff --git a/net/iotivity/patches/040-remove-provisioning.patch b/net/iotivity/patches/040-remove-provisioning.patch deleted file mode 100644 index 4696cab2b..000000000 --- a/net/iotivity/patches/040-remove-provisioning.patch +++ /dev/null @@ -1,24 +0,0 @@ -From 4488170af944163b62051b2afee60386a9973c72 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens -Date: Thu, 31 Mar 2016 10:23:48 +0200 -Subject: [PATCH] remove building of provisioning service - -The provisioning service is not used in this build and depends on boost_thread -which would add an additional unused dependency. - -Change-Id: Ic7edab3ae96d77339ea0f48fc76ab2534c49b6ba -Signed-off-by: Hauke Mehrtens ---- - resource/src/SConscript | 4 ++-- - 1 file changed, 2 insertions(+), 2 deletions(-) - ---- a/resource/src/SConscript -+++ b/resource/src/SConscript -@@ -116,5 +116,5 @@ oclib_env.UserInstallTargetHeader(header - oclib_env.UserInstallTargetHeader(header_dir + 'CAManager.h', 'resource', 'CAManager.h') - - # Add Provisioning library --if target_os in ['linux', 'android', 'tizen'] and env.get('SECURED') == '1': -- SConscript('../provisioning/SConscript') -+# if target_os in ['linux', 'android', 'tizen'] and env.get('SECURED') == '1': -+# SConscript('../provisioning/SConscript') diff --git a/net/iotivity/patches/050-csdk-move-OCEntityHandlerResponse-from-stack-to-heap.patch b/net/iotivity/patches/050-csdk-move-OCEntityHandlerResponse-from-stack-to-heap.patch new file mode 100644 index 000000000..5ba18d887 --- /dev/null +++ b/net/iotivity/patches/050-csdk-move-OCEntityHandlerResponse-from-stack-to-heap.patch @@ -0,0 +1,54 @@ +From d8cf30cb0abd5fa8f6282b490618204d683b625c Mon Sep 17 00:00:00 2001 +From: Hauke Mehrtens +Date: Mon, 3 Oct 2016 21:00:28 +0200 +Subject: [PATCH 1/3] csdk: move OCEntityHandlerResponse from stack to heap + +OCEntityHandlerResponse is over 50KByte and I got a stack overflow on MIPS +running on LEDE without this patch. Instead of storing +OCEntityHandlerResponse on the program stack, allocate some memory on +the heap and free it afterwards again. + +This fixes one part of this issue for me: +https://jira.iotivity.org/browse/IOT-1374 + +Change-Id: I365a5c7a34dce2dfb0897a20b57a13ba566748ec +Signed-off-by: Hauke Mehrtens +--- + resource/csdk/stack/src/ocresource.c | 24 +++++++++++++++++------- + 1 file changed, 17 insertions(+), 7 deletions(-) + +--- a/resource/csdk/stack/src/ocresource.c ++++ b/resource/csdk/stack/src/ocresource.c +@@ -774,15 +774,25 @@ static bool includeThisResourceInRespons + OCStackResult SendNonPersistantDiscoveryResponse(OCServerRequest *request, OCResource *resource, + OCPayload *discoveryPayload, OCEntityHandlerResult ehResult) + { +- OCEntityHandlerResponse response = {0}; ++ OCEntityHandlerResponse *response = NULL; ++ OCStackResult result = OC_STACK_ERROR; + +- response.ehResult = ehResult; +- response.payload = discoveryPayload; +- response.persistentBufferFlag = 0; +- response.requestHandle = (OCRequestHandle) request->requestId; +- response.resourceHandle = (OCResourceHandle) resource; ++ response = (OCEntityHandlerResponse *)OICCalloc(1, sizeof(*response)); ++ VERIFY_PARAM_NON_NULL(TAG, response, "Failed allocating OCEntityHandlerResponse"); + +- return OCDoResponse(&response); ++ response->ehResult = ehResult; ++ response->payload = discoveryPayload; ++ response->persistentBufferFlag = 0; ++ response->requestHandle = (OCRequestHandle) request->requestId; ++ response->resourceHandle = (OCResourceHandle) resource; ++ ++ result = OCDoResponse(response); ++ ++ OICFree(response); ++ return result; ++ ++exit: ++ return OC_STACK_NO_MEMORY; + } + + static OCStackResult EHRequest(OCEntityHandlerRequest *ehRequest, OCPayloadType type, diff --git a/net/iotivity/patches/051-csdk-move-OCClientResponse-from-stack-to-heap.patch b/net/iotivity/patches/051-csdk-move-OCClientResponse-from-stack-to-heap.patch new file mode 100644 index 000000000..db8ede44c --- /dev/null +++ b/net/iotivity/patches/051-csdk-move-OCClientResponse-from-stack-to-heap.patch @@ -0,0 +1,357 @@ +From e8971dd4914c9d42938c4c885b4ac6d784d7e0ff Mon Sep 17 00:00:00 2001 +From: Hauke Mehrtens +Date: Mon, 3 Oct 2016 23:22:36 +0200 +Subject: [PATCH 2/3] csdk: move OCClientResponse from stack to heap + +OCClientResponse is about 50KByte and should not be stored on the +stack. On LEDE with MIPS, musl libc this causes a segmentation fault. +Moving this structure to the heap is the simple solution for this +problem, but this structure should be shrined. + +There are probably more places were this is stored on the stack and +will cause problems. This fixes the other issue I saw in +https://jira.iotivity.org/browse/IOT-1374 + +Change-Id: I45d8aee4a8151fea51d3318acb1eea61ce579060 +Signed-off-by: Hauke Mehrtens +--- + resource/csdk/stack/src/ocstack.c | 163 ++++++++++++++++++++++++-------------- + 1 file changed, 102 insertions(+), 61 deletions(-) + +--- a/resource/csdk/stack/src/ocstack.c ++++ b/resource/csdk/stack/src/ocstack.c +@@ -1042,7 +1042,7 @@ OCStackResult HandlePresenceResponse(con + OCStackApplicationResult cbResult = OC_STACK_DELETE_TRANSACTION; + ClientCB * cbNode = NULL; + char *resourceTypeName = NULL; +- OCClientResponse response = {.devAddr = {.adapter = OC_DEFAULT_ADAPTER}}; ++ OCClientResponse *response = NULL; + OCStackResult result = OC_STACK_ERROR; + uint32_t maxAge = 0; + int uriLen; +@@ -1057,15 +1057,23 @@ OCStackResult HandlePresenceResponse(con + return OC_STACK_ERROR; + } + +- response.payload = NULL; +- response.result = OC_STACK_OK; ++ response = (OCClientResponse *)OICCalloc(1, sizeof(*response)); ++ if (!response) ++ { ++ OIC_LOG(ERROR, TAG, "Allocating memory for response failed"); ++ return OC_STACK_ERROR; ++ } ++ response->devAddr.adapter = OC_DEFAULT_ADAPTER; + +- CopyEndpointToDevAddr(endpoint, &response.devAddr); +- FixUpClientResponse(&response); ++ response->payload = NULL; ++ response->result = OC_STACK_OK; ++ ++ CopyEndpointToDevAddr(endpoint, &response->devAddr); ++ FixUpClientResponse(response); + + if (responseInfo->info.payload) + { +- result = OCParsePayload(&response.payload, ++ result = OCParsePayload(&response->payload, + PAYLOAD_TYPE_PRESENCE, + responseInfo->info.payload, + responseInfo->info.payloadSize); +@@ -1075,15 +1083,15 @@ OCStackResult HandlePresenceResponse(con + OIC_LOG(ERROR, TAG, "Presence parse failed"); + goto exit; + } +- if(!response.payload || response.payload->type != PAYLOAD_TYPE_PRESENCE) ++ if(!response->payload || response->payload->type != PAYLOAD_TYPE_PRESENCE) + { + OIC_LOG(ERROR, TAG, "Presence payload was wrong type"); + result = OC_STACK_ERROR; + goto exit; + } +- response.sequenceNumber = ((OCPresencePayload*)response.payload)->sequenceNumber; +- resourceTypeName = ((OCPresencePayload*)response.payload)->resourceType; +- maxAge = ((OCPresencePayload*)response.payload)->maxAge; ++ response->sequenceNumber = ((OCPresencePayload*)response->payload)->sequenceNumber; ++ resourceTypeName = ((OCPresencePayload*)response->payload)->resourceType; ++ maxAge = ((OCPresencePayload*)response->payload)->maxAge; + } + + // check for unicast presence +@@ -1091,6 +1099,7 @@ OCStackResult HandlePresenceResponse(con + responseInfo->isMulticast); + if (uriLen < 0 || (size_t)uriLen >= sizeof (presenceUri)) + { ++ OICFree(response); + return OC_STACK_INVALID_URI; + } + OIC_LOG(ERROR, TAG, "check for unicast presence"); +@@ -1118,7 +1127,7 @@ OCStackResult HandlePresenceResponse(con + + if (presenceSubscribe) + { +- if(cbNode->sequenceNumber == response.sequenceNumber) ++ if(cbNode->sequenceNumber == response->sequenceNumber) + { + OIC_LOG(INFO, TAG, "No presence change"); + ResetPresenceTTL(cbNode, maxAge); +@@ -1129,7 +1138,7 @@ OCStackResult HandlePresenceResponse(con + if(maxAge == 0) + { + OIC_LOG(INFO, TAG, "Stopping presence"); +- response.result = OC_STACK_PRESENCE_STOPPED; ++ response->result = OC_STACK_PRESENCE_STOPPED; + if(cbNode->presence) + { + OICFree(cbNode->presence->timeOut); +@@ -1165,7 +1174,7 @@ OCStackResult HandlePresenceResponse(con + + ResetPresenceTTL(cbNode, maxAge); + +- cbNode->sequenceNumber = response.sequenceNumber; ++ cbNode->sequenceNumber = response->sequenceNumber; + } + } + else +@@ -1175,7 +1184,7 @@ OCStackResult HandlePresenceResponse(con + if (0 == maxAge) + { + OIC_LOG(INFO, TAG, "Stopping presence"); +- response.result = OC_STACK_PRESENCE_STOPPED; ++ response->result = OC_STACK_PRESENCE_STOPPED; + } + } + +@@ -1191,7 +1200,7 @@ OCStackResult HandlePresenceResponse(con + + OIC_LOG(INFO, TAG, "Callback for presence"); + +- cbResult = cbNode->callBack(cbNode->context, cbNode->handle, &response); ++ cbResult = cbNode->callBack(cbNode->context, cbNode->handle, response); + + if (cbResult == OC_STACK_DELETE_TRANSACTION) + { +@@ -1199,7 +1208,8 @@ OCStackResult HandlePresenceResponse(con + } + + exit: +- OCPayloadDestroy(response.payload); ++ OCPayloadDestroy(response->payload); ++ OICFree(response); + return result; + } + +@@ -1240,36 +1250,53 @@ void OCHandleResponse(const CAEndpoint_t + OIC_LOG(INFO, TAG, "Receiving A Timeout for this token"); + OIC_LOG(INFO, TAG, "Calling into application address space"); + +- OCClientResponse response = +- {.devAddr = {.adapter = OC_DEFAULT_ADAPTER}}; +- CopyEndpointToDevAddr(endPoint, &response.devAddr); +- FixUpClientResponse(&response); +- response.resourceUri = responseInfo->info.resourceUri; +- memcpy(response.identity.id, responseInfo->info.identity.id, +- sizeof (response.identity.id)); +- response.identity.id_length = responseInfo->info.identity.id_length; ++ OCClientResponse *response = NULL; ++ ++ response = (OCClientResponse *)OICCalloc(1, sizeof(*response)); ++ if (!response) ++ { ++ OIC_LOG(ERROR, TAG, "Allocating memory for response failed"); ++ return; ++ } ++ ++ response->devAddr.adapter = OC_DEFAULT_ADAPTER; ++ CopyEndpointToDevAddr(endPoint, &response->devAddr); ++ FixUpClientResponse(response); ++ response->resourceUri = responseInfo->info.resourceUri; ++ memcpy(response->identity.id, responseInfo->info.identity.id, ++ sizeof (response->identity.id)); ++ response->identity.id_length = responseInfo->info.identity.id_length; + +- response.result = CAResponseToOCStackResult(responseInfo->result); ++ response->result = CAResponseToOCStackResult(responseInfo->result); + cbNode->callBack(cbNode->context, +- cbNode->handle, &response); ++ cbNode->handle, response); + FindAndDeleteClientCB(cbNode); ++ OICFree(response); + } + else + { + OIC_LOG(INFO, TAG, "This is a regular response, A client call back is found"); + OIC_LOG(INFO, TAG, "Calling into application address space"); + +- OCClientResponse response = +- {.devAddr = {.adapter = OC_DEFAULT_ADAPTER}}; +- response.sequenceNumber = MAX_SEQUENCE_NUMBER + 1; +- CopyEndpointToDevAddr(endPoint, &response.devAddr); +- FixUpClientResponse(&response); +- response.resourceUri = responseInfo->info.resourceUri; +- memcpy(response.identity.id, responseInfo->info.identity.id, +- sizeof (response.identity.id)); +- response.identity.id_length = responseInfo->info.identity.id_length; ++ OCClientResponse *response = NULL; + +- response.result = CAResponseToOCStackResult(responseInfo->result); ++ response = (OCClientResponse *)OICCalloc(1, sizeof(*response)); ++ if (!response) ++ { ++ OIC_LOG(ERROR, TAG, "Allocating memory for response failed"); ++ return; ++ } ++ ++ response->devAddr.adapter = OC_DEFAULT_ADAPTER; ++ response->sequenceNumber = MAX_SEQUENCE_NUMBER + 1; ++ CopyEndpointToDevAddr(endPoint, &response->devAddr); ++ FixUpClientResponse(response); ++ response->resourceUri = responseInfo->info.resourceUri; ++ memcpy(response->identity.id, responseInfo->info.identity.id, ++ sizeof (response->identity.id)); ++ response->identity.id_length = responseInfo->info.identity.id_length; ++ ++ response->result = CAResponseToOCStackResult(responseInfo->result); + + if(responseInfo->info.payload && + responseInfo->info.payloadSize) +@@ -1359,21 +1386,23 @@ void OCHandleResponse(const CAEndpoint_t + { + OIC_LOG_V(ERROR, TAG, "Unknown Payload type: %d %s", + cbNode->method, cbNode->requestUri); ++ OICFree(response); + return; + } + +- if(OC_STACK_OK != OCParsePayload(&response.payload, ++ if(OC_STACK_OK != OCParsePayload(&response->payload, + type, + responseInfo->info.payload, + responseInfo->info.payloadSize)) + { + OIC_LOG(ERROR, TAG, "Error converting payload"); +- OCPayloadDestroy(response.payload); ++ OCPayloadDestroy(response->payload); ++ OICFree(response); + return; + } + } + +- response.numRcvdVendorSpecificHeaderOptions = 0; ++ response->numRcvdVendorSpecificHeaderOptions = 0; + if(responseInfo->info.numOptions > 0) + { + int start = 0; +@@ -1391,19 +1420,20 @@ void OCHandleResponse(const CAEndpoint_t + observationOption = + (observationOption << 8) | optionData[i]; + } +- response.sequenceNumber = observationOption; +- response.numRcvdVendorSpecificHeaderOptions = responseInfo->info.numOptions - 1; ++ response->sequenceNumber = observationOption; ++ response->numRcvdVendorSpecificHeaderOptions = responseInfo->info.numOptions - 1; + start = 1; + } + else + { +- response.numRcvdVendorSpecificHeaderOptions = responseInfo->info.numOptions; ++ response->numRcvdVendorSpecificHeaderOptions = responseInfo->info.numOptions; + } + +- if(response.numRcvdVendorSpecificHeaderOptions > MAX_HEADER_OPTIONS) ++ if(response->numRcvdVendorSpecificHeaderOptions > MAX_HEADER_OPTIONS) + { + OIC_LOG(ERROR, TAG, "#header options are more than MAX_HEADER_OPTIONS"); +- OCPayloadDestroy(response.payload); ++ OCPayloadDestroy(response->payload); ++ OICFree(response); + return; + } + +@@ -1411,19 +1441,19 @@ void OCHandleResponse(const CAEndpoint_t + { + if(&(responseInfo->info.options[i])) + { +- memcpy (&(response.rcvdVendorSpecificHeaderOptions[i-start]), ++ memcpy (&(response->rcvdVendorSpecificHeaderOptions[i-start]), + &(responseInfo->info.options[i]), sizeof(OCHeaderOption)); + } + } + } + + if (cbNode->method == OC_REST_OBSERVE && +- response.sequenceNumber > OC_OFFSET_SEQUENCE_NUMBER && ++ response->sequenceNumber > OC_OFFSET_SEQUENCE_NUMBER && + cbNode->sequenceNumber <= MAX_SEQUENCE_NUMBER && +- response.sequenceNumber <= cbNode->sequenceNumber) ++ response->sequenceNumber <= cbNode->sequenceNumber) + { + OIC_LOG_V(INFO, TAG, "Received stale notification. Number :%d", +- response.sequenceNumber); ++ response->sequenceNumber); + } + else + { +@@ -1432,13 +1462,13 @@ void OCHandleResponse(const CAEndpoint_t + char *targetUri = strstr(cbNode->requestUri, OC_RSRVD_RD_URI); + if (targetUri) + { +- OCUpdateResourceInsWithResponse(cbNode->requestUri, &response); ++ OCUpdateResourceInsWithResponse(cbNode->requestUri, response); + } + #endif + OCStackApplicationResult appFeedback = cbNode->callBack(cbNode->context, + cbNode->handle, +- &response); +- cbNode->sequenceNumber = response.sequenceNumber; ++ response); ++ cbNode->sequenceNumber = response->sequenceNumber; + + if (appFeedback == OC_STACK_DELETE_TRANSACTION) + { +@@ -1459,7 +1489,8 @@ void OCHandleResponse(const CAEndpoint_t + CA_MSG_ACKNOWLEDGE, 0, NULL, NULL, 0, NULL, CA_RESPONSE_FOR_RES); + } + +- OCPayloadDestroy(response.payload); ++ OCPayloadDestroy(response->payload); ++ OICFree(response); + } + return; + } +@@ -1585,16 +1616,26 @@ void HandleCAErrorResponse(const CAEndpo + errorInfo->info.tokenLength, NULL, NULL); + if (cbNode) + { +- OCClientResponse response = { .devAddr = { .adapter = OC_DEFAULT_ADAPTER } }; +- CopyEndpointToDevAddr(endPoint, &response.devAddr); +- FixUpClientResponse(&response); +- response.resourceUri = errorInfo->info.resourceUri; +- memcpy(response.identity.id, errorInfo->info.identity.id, +- sizeof (response.identity.id)); +- response.identity.id_length = errorInfo->info.identity.id_length; +- response.result = CAResultToOCResult(errorInfo->result); ++ OCClientResponse *response = NULL; ++ ++ response = (OCClientResponse *)OICCalloc(1, sizeof(*response)); ++ if (!response) ++ { ++ OIC_LOG(ERROR, TAG, "Allocating memory for response failed"); ++ return; ++ } ++ ++ response->devAddr.adapter = OC_DEFAULT_ADAPTER; ++ CopyEndpointToDevAddr(endPoint, &response->devAddr); ++ FixUpClientResponse(response); ++ response->resourceUri = errorInfo->info.resourceUri; ++ memcpy(response->identity.id, errorInfo->info.identity.id, ++ sizeof (response->identity.id)); ++ response->identity.id_length = errorInfo->info.identity.id_length; ++ response->result = CAResultToOCResult(errorInfo->result); + +- cbNode->callBack(cbNode->context, cbNode->handle, &response); ++ cbNode->callBack(cbNode->context, cbNode->handle, response); ++ OICFree(response); + } + + ResourceObserver *observer = GetObserverUsingToken(errorInfo->info.token, diff --git a/net/iotivity/patches/053-src-move-OCClientResponse-from-stack-to-heap.patch b/net/iotivity/patches/053-src-move-OCClientResponse-from-stack-to-heap.patch new file mode 100644 index 000000000..523cfe1a1 --- /dev/null +++ b/net/iotivity/patches/053-src-move-OCClientResponse-from-stack-to-heap.patch @@ -0,0 +1,103 @@ +From 7fb5b6a19b06dc5b0a7f32261551b206b1e6a563 Mon Sep 17 00:00:00 2001 +From: Hauke Mehrtens +Date: Sun, 8 Jan 2017 19:24:26 +0100 +Subject: [PATCH 3/3] src: move OCClientResponse from stack to heap + +OCClientResponse is about 50KByte and should not be stored on the +stack. On LEDE with MIPS, musl libc this causes a segmentation fault. +Moving this structure to the heap is the simple solution for this +problem, but this structure should be shrinked. + +Change-Id: I7887f93450f45b8031fcdfffb9ee2214fc3d5dd2 +Signed-off-by: Hauke Mehrtens +--- + resource/src/InProcServerWrapper.cpp | 44 +++++++++++++++++++++--------------- + 1 file changed, 26 insertions(+), 18 deletions(-) + +--- a/resource/src/InProcServerWrapper.cpp ++++ b/resource/src/InProcServerWrapper.cpp +@@ -568,51 +568,58 @@ namespace OC + } + else + { +- OCEntityHandlerResponse response; ++ OCEntityHandlerResponse *response = NULL; ++ ++ response = (OCEntityHandlerResponse *)OICCalloc(1, sizeof(*response)); ++ if (!response) { ++ result = OC_STACK_MALFORMED_RESPONSE; ++ throw OCException(OC::Exception::STR_NULL_RESPONSE, OC_STACK_MALFORMED_RESPONSE); ++ } ++ + // OCRepPayload* payLoad = pResponse->getPayload(); + HeaderOptions serverHeaderOptions = pResponse->getHeaderOptions(); + +- response.requestHandle = pResponse->getRequestHandle(); +- response.resourceHandle = pResponse->getResourceHandle(); +- response.ehResult = pResponse->getResponseResult(); ++ response->requestHandle = pResponse->getRequestHandle(); ++ response->resourceHandle = pResponse->getResourceHandle(); ++ response->ehResult = pResponse->getResponseResult(); + +- response.payload = reinterpret_cast(pResponse->getPayload()); ++ response->payload = reinterpret_cast(pResponse->getPayload()); + +- response.persistentBufferFlag = 0; ++ response->persistentBufferFlag = 0; + +- response.numSendVendorSpecificHeaderOptions = serverHeaderOptions.size(); ++ response->numSendVendorSpecificHeaderOptions = serverHeaderOptions.size(); + int i = 0; + for (auto it=serverHeaderOptions.begin(); it != serverHeaderOptions.end(); ++it) + { +- response.sendVendorSpecificHeaderOptions[i].protocolID = OC_COAP_ID; +- response.sendVendorSpecificHeaderOptions[i].optionID = ++ response->sendVendorSpecificHeaderOptions[i].protocolID = OC_COAP_ID; ++ response->sendVendorSpecificHeaderOptions[i].optionID = + static_cast(it->getOptionID()); +- response.sendVendorSpecificHeaderOptions[i].optionLength = ++ response->sendVendorSpecificHeaderOptions[i].optionLength = + (it->getOptionData()).length() + 1; + std::string optionData = it->getOptionData(); + std::copy(optionData.begin(), + optionData.end(), +- response.sendVendorSpecificHeaderOptions[i].optionData); +- response.sendVendorSpecificHeaderOptions[i].optionData[it->getOptionData().length()] ++ response->sendVendorSpecificHeaderOptions[i].optionData); ++ response->sendVendorSpecificHeaderOptions[i].optionData[it->getOptionData().length()] + = '\0'; + i++; + } + +- if(OC_EH_RESOURCE_CREATED == response.ehResult) ++ if(OC_EH_RESOURCE_CREATED == response->ehResult) + { +- pResponse->getNewResourceUri().copy(response.resourceUri, +- sizeof (response.resourceUri) - 1); +- response.resourceUri[pResponse->getNewResourceUri().length()] = '\0'; ++ pResponse->getNewResourceUri().copy(response->resourceUri, ++ sizeof (response->resourceUri) - 1); ++ response->resourceUri[pResponse->getNewResourceUri().length()] = '\0'; + } + + if(cLock) + { + std::lock_guard lock(*cLock); +- result = OCDoResponse(&response); ++ result = OCDoResponse(response); + } + else + { +- OICFree(response.payload); ++ OICFree(response->payload); + result = OC_STACK_ERROR; + } + +@@ -620,6 +627,7 @@ namespace OC + { + oclog() << "Error sending response\n"; + } ++ OICFree(response); + return result; + } + } diff --git a/net/iotivity/patches/054-resource-encapsulation-deactivate-test-covergae.patch b/net/iotivity/patches/054-resource-encapsulation-deactivate-test-covergae.patch deleted file mode 100644 index d30f8f25f..000000000 --- a/net/iotivity/patches/054-resource-encapsulation-deactivate-test-covergae.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 8a1a5562904c1bbdb2bcb332c0a74482d7cdea15 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens -Date: Wed, 11 Nov 2015 18:10:03 +0100 -Subject: [PATCH 5/5] resource-encapsulation: deactivate test covergae - -Change-Id: I9c9b5853ee1521f5963c73c3025b1c0f10393a96 -Signed-off-by: Hauke Mehrtens ---- - .../resource-encapsulation/src/common/SConscript | 4 ---- - .../src/serverBuilder/SConscript | 4 ---- - 2 files changed, 8 deletions(-) - ---- a/service/resource-encapsulation/src/common/SConscript -+++ b/service/resource-encapsulation/src/common/SConscript -@@ -66,10 +66,6 @@ if target_os == 'android': - - rcs_common_env.AppendUnique(LIBS = ['dl', 'oc']) - --if not release: -- rcs_common_env.AppendUnique(CXXFLAGS = ['--coverage']) -- rcs_common_env.PrependUnique(LIBS = ['gcov']) -- - ###################################################################### - # Source files and Targets - ###################################################################### ---- a/service/resource-encapsulation/src/serverBuilder/SConscript -+++ b/service/resource-encapsulation/src/serverBuilder/SConscript -@@ -67,10 +67,6 @@ server_builder_env.AppendUnique(LIBS = [ - if env.get('LOGGING'): - server_builder_env.AppendUnique(LIBS = ['octbstack']) - --if not release: -- server_builder_env.AppendUnique(CXXFLAGS = ['--coverage']) -- server_builder_env.PrependUnique(LIBS = ['gcov']) -- - ###################################################################### - # Source files and Targets - ###################################################################### diff --git a/net/iotivity/patches/060-security-fix-reading-of-permission-attribute-from-co.patch b/net/iotivity/patches/060-security-fix-reading-of-permission-attribute-from-co.patch deleted file mode 100644 index a70a801d1..000000000 --- a/net/iotivity/patches/060-security-fix-reading-of-permission-attribute-from-co.patch +++ /dev/null @@ -1,39 +0,0 @@ -From b1c29c35cba3eb39af18fb8db0ec676e3d658b1d Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens -Date: Fri, 17 Jun 2016 17:38:35 +0200 -Subject: [PATCH] security: fix reading of permission attribute from - configuration - -Casting the pointer to the permission attribute from uint16_t to uint64_t -causes problems on MIPS Big Endian systems and probably othrs as well. -When the calling method interprets it as uint64_t not the value is -converted but the pointer is interpreted as it would point to a 64 bit -integer, but it is only a 16 bit wide integer. On MIPS BE permission was -always 0 independent of which value between 0 and 32 the permission -attribute had, this was probably written to some padding area or into -some other member of the struct. - -This patch fixes the memory corruption and makes the code work for me with -a MIPS BE CPU. - -Change-Id: Ifa843e69980ad4309b1e3076b8e2c98c03324352 -Signed-off-by: Hauke Mehrtens ---- - resource/csdk/security/src/aclresource.c | 5 ++++- - 1 file changed, 4 insertions(+), 1 deletion(-) - ---- a/resource/csdk/security/src/aclresource.c -+++ b/resource/csdk/security/src/aclresource.c -@@ -602,8 +602,11 @@ OicSecAcl_t* CBORPayloadToAcl(const uint - // Permissions -- Mandatory - if (strcmp(name, OIC_JSON_PERMISSION_NAME) == 0) - { -- cborFindResult = cbor_value_get_uint64(&aclMap, (uint64_t *) &acl->permission); -+ uint64_t tmp64; -+ -+ cborFindResult = cbor_value_get_uint64(&aclMap, &tmp64); - VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Finding a PERM Value."); -+ acl->permission = tmp64; - } - - // Period -- Not mandatory diff --git a/net/iotivity/patches/061-Remove-the-endianness-dependency-for-credential.patch b/net/iotivity/patches/061-Remove-the-endianness-dependency-for-credential.patch deleted file mode 100644 index df4cbb5ce..000000000 --- a/net/iotivity/patches/061-Remove-the-endianness-dependency-for-credential.patch +++ /dev/null @@ -1,87 +0,0 @@ -From f182119e571a1b520b4e5ef4ee5e5b5cd243b931 Mon Sep 17 00:00:00 2001 -From: Chul Lee -Date: Wed, 22 Jun 2016 12:40:21 +0900 -Subject: [PATCH] Remove the endianness dependency in cbor conversion. - -A similar bug reported from https://gerrit.iotivity.org/gerrit/#/c/8755/ - -Change-Id: I631bab77f7486f1f45eaff96c67d39606e37c6b6 -Signed-off-by: Chul Lee -Reviewed-on: https://gerrit.iotivity.org/gerrit/8829 -Tested-by: jenkins-iotivity -Reviewed-by: Hauke Mehrtens -Reviewed-by: Randeep Singh -(cherry picked from commit 24474a8d2555229efb425b6cb63e19b3279ba810) -Reviewed-on: https://gerrit.iotivity.org/gerrit/9053 ---- - resource/csdk/security/src/credresource.c | 8 ++++++-- - resource/csdk/security/src/pconfresource.c | 5 +++-- - resource/csdk/stack/src/ocpayloadparse.c | 8 ++++++-- - 3 files changed, 15 insertions(+), 6 deletions(-) - ---- a/resource/csdk/security/src/credresource.c -+++ b/resource/csdk/security/src/credresource.c -@@ -435,8 +435,10 @@ OCStackResult CBORPayloadToCred(const ui - //credid - if (strcmp(name, OIC_JSON_CREDID_NAME) == 0) - { -- cborFindResult = cbor_value_get_uint64(&credMap, (uint64_t *) &cred->credId); -+ uint64_t credId = 0; -+ cborFindResult = cbor_value_get_uint64(&credMap, &credId); - VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Finding CredId."); -+ cred->credId = (uint16_t)credId; - } - // subjectid - if (strcmp(name, OIC_JSON_SUBJECTID_NAME) == 0) -@@ -451,8 +453,10 @@ OCStackResult CBORPayloadToCred(const ui - // credtype - if (strcmp(name, OIC_JSON_CREDTYPE_NAME) == 0) - { -- cborFindResult = cbor_value_get_uint64(&credMap, (uint64_t *) &cred->credType); -+ uint64_t credType = 0; -+ cborFindResult = cbor_value_get_uint64(&credMap, &credType); - VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed Finding CredType."); -+ cred->credType = (OicSecCredType_t)credType; - } - // privatedata - if (strcmp(name, OIC_JSON_PRIVATEDATA_NAME) == 0) ---- a/resource/csdk/security/src/pconfresource.c -+++ b/resource/csdk/security/src/pconfresource.c -@@ -642,8 +642,9 @@ OCStackResult CBORPayloadToPconf(const u - // Permissions -- Mandatory - if (strcmp(name, OIC_JSON_PERMISSION_NAME) == 0) - { -- cborFindResult = cbor_value_get_uint64(&pdAclMap, -- (uint64_t *) &pdacl->permission); -+ uint64_t permission = 0; -+ cborFindResult = cbor_value_get_uint64(&pdAclMap, &permission); -+ pdacl->permission = (uint16_t)permission; - VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed to get value"); - } - ---- a/resource/csdk/stack/src/ocpayloadparse.c -+++ b/resource/csdk/stack/src/ocpayloadparse.c -@@ -1169,17 +1169,21 @@ static OCStackResult OCParsePresencePayl - if (cbor_value_is_map(rootValue)) - { - CborValue curVal; -+ uint64_t temp = 0; - - // Sequence Number - CborError err = cbor_value_map_find_value(rootValue, OC_RSRVD_NONCE, &curVal); - VERIFY_CBOR_SUCCESS(TAG, err, "Failed finding nonce tag"); -- err = cbor_value_get_uint64(&curVal, (uint64_t *)&payload->sequenceNumber); -+ err = cbor_value_get_uint64(&curVal, &temp); -+ payload->sequenceNumber = (uint32_t)temp; - VERIFY_CBOR_SUCCESS(TAG, err, "Failed finding nonce value"); - - // Max Age - err = cbor_value_map_find_value(rootValue, OC_RSRVD_TTL, &curVal); - VERIFY_CBOR_SUCCESS(TAG, err, "Failed finding ttl tag"); -- err = cbor_value_get_uint64(&curVal, (uint64_t *)&payload->maxAge); -+ temp = 0; -+ err = cbor_value_get_uint64(&curVal, &temp); -+ payload->maxAge = (uint32_t)temp; - VERIFY_CBOR_SUCCESS(TAG, err, "Failed finding ttl value"); - - // Trigger diff --git a/net/iotivity/patches/062-Fix-memory-corruption-when-reading-inetgers-from-cbo.patch b/net/iotivity/patches/062-Fix-memory-corruption-when-reading-inetgers-from-cbo.patch deleted file mode 100644 index 5ef749278..000000000 --- a/net/iotivity/patches/062-Fix-memory-corruption-when-reading-inetgers-from-cbo.patch +++ /dev/null @@ -1,93 +0,0 @@ -From 7c99ef8bfa024f11452311c36329eeeeece4fd74 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens -Date: Wed, 22 Jun 2016 11:41:43 +0200 -Subject: [PATCH] Fix memory corruption when reading inetgers from cbor - -When the cbor_value_get_*() function is called with a pointer to some int, it -should have the correct size. When we cast it to something else it is treated -as a pointer to an uint64_t in the function for example and them 64 bits gets -written to memory even with the real type is only 32 bit long. When the real -type is only 32 bit long some other memory gets overwritten. On Big endian -systems the least significant bits are cut of so in most cases 0 is read. - -With this patch a value cast is used and the value is converted to the other size. - -This is the same as in commit 0d64c7c95a5c11a9fb5201e729fd8c75da210c80 -"security: fix reading of permission attribute from configuration" - -Change-Id: If5965491241e25ebf60a22dc45d37d74a33cb02f -Signed-off-by: Hauke Mehrtens ---- - resource/csdk/security/src/pconfresource.c | 5 ++++- - resource/csdk/stack/src/ocpayloadparse.c | 19 +++++++++++++++---- - 2 files changed, 19 insertions(+), 5 deletions(-) - ---- a/resource/csdk/security/src/pconfresource.c -+++ b/resource/csdk/security/src/pconfresource.c -@@ -507,8 +507,11 @@ OCStackResult CBORPayloadToPconf(const u - - while (cbor_value_is_valid(&prm)) - { -- cborFindResult = cbor_value_get_int(&prm, (int *)&pconf->prm[i++]); -+ int prm_val; -+ -+ cborFindResult = cbor_value_get_int(&prm, &prm_val); - VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed to get value"); -+ pconf->prm[i++] = (OicSecPrm_t)prm_val; - cborFindResult = cbor_value_advance(&prm); - VERIFY_CBOR_SUCCESS(TAG, cborFindResult, "Failed to advance value"); - } ---- a/resource/csdk/stack/src/ocpayloadparse.c -+++ b/resource/csdk/stack/src/ocpayloadparse.c -@@ -287,6 +287,8 @@ static OCStackResult OCParseDiscoveryPay - - while (cbor_value_is_map(&resourceMap)) - { -+ int bitmap; -+ - resource = (OCResourcePayload *)OICCalloc(1, sizeof(OCResourcePayload)); - VERIFY_PARAM_NON_NULL(TAG, resource, "Failed allocating resource payload"); - -@@ -319,8 +321,9 @@ static OCStackResult OCParseDiscoveryPay - // Bitmap - err = cbor_value_map_find_value(&policyMap, OC_RSRVD_BITMAP, &curVal); - VERIFY_CBOR_SUCCESS(TAG, err, "to find bitmap tag"); -- err = cbor_value_get_int(&curVal, (int *)&resource->bitmap); -+ err = cbor_value_get_int(&curVal, &bitmap); - VERIFY_CBOR_SUCCESS(TAG, err, "to find bitmap value"); -+ resource->bitmap = (uint8_t)bitmap; - - // Secure Flag - err = cbor_value_map_find_value(&policyMap, OC_RSRVD_SECURE, &curVal); -@@ -336,8 +339,11 @@ static OCStackResult OCParseDiscoveryPay - VERIFY_CBOR_SUCCESS(TAG, err, "to find port tag"); - if (cbor_value_is_valid(&curVal)) - { -- err = cbor_value_get_int(&curVal, (int *)&resource->port); -+ int port; -+ -+ err = cbor_value_get_int(&curVal, &port); - VERIFY_CBOR_SUCCESS(TAG, err, "to find port value"); -+ resource->port = (uint16_t)port; - } - - err = cbor_value_advance(&resourceMap); -@@ -1170,6 +1176,7 @@ static OCStackResult OCParsePresencePayl - { - CborValue curVal; - uint64_t temp = 0; -+ uint8_t trigger; - - // Sequence Number - CborError err = cbor_value_map_find_value(rootValue, OC_RSRVD_NONCE, &curVal); -@@ -1189,8 +1196,9 @@ static OCStackResult OCParsePresencePayl - // Trigger - err = cbor_value_map_find_value(rootValue, OC_RSRVD_TRIGGER, &curVal); - VERIFY_CBOR_SUCCESS(TAG, err, "Failed finding trigger tag"); -- err = cbor_value_get_simple_type(&curVal, (uint8_t *)&payload->trigger); -+ err = cbor_value_get_simple_type(&curVal, &trigger); - VERIFY_CBOR_SUCCESS(TAG, err, "Failed finding trigger value"); -+ payload->trigger = (OCPresenceTrigger)trigger; - - // Resource type name - err = cbor_value_map_find_value(rootValue, OC_RSRVD_RESOURCE_TYPE, &curVal); diff --git a/net/iotivity/patches/070-Resource-container-Backported-init-fix-to-1.1-rel.patch b/net/iotivity/patches/070-Resource-container-Backported-init-fix-to-1.1-rel.patch deleted file mode 100644 index c0c0fac89..000000000 --- a/net/iotivity/patches/070-Resource-container-Backported-init-fix-to-1.1-rel.patch +++ /dev/null @@ -1,36 +0,0 @@ -From e093390b2839f6039a6ff94ed4942fa45c53a418 Mon Sep 17 00:00:00 2001 -From: Philippe Coval -Date: Tue, 26 Apr 2016 15:28:17 +0200 -Subject: [PATCH] [Resource-container] Backported init fix to 1.1-rel - -[Resource-container] Fix member var initialization - -Incorrect type was used causing build error. - -Origin: 6a10062f1fe64ca75ac6d34541bbd295ef052dcb -Author: Inga Stotland -Change-Id: I701096c3b6512546847cf4e120430f690e920453 -Signed-off-by: Inga Stotland -Reviewed-on: https://gerrit.iotivity.org/gerrit/7759 -Tested-by: jenkins-iotivity -Reviewed-by: George Nash -Reviewed-by: Markus Jung -Reviewed-by: Uze Choi -Signed-off-by: Philippe Coval -Reviewed-on: https://gerrit.iotivity.org/gerrit/7929 ---- - service/resource-container/src/BundleInfoInternal.cpp | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - ---- a/service/resource-container/src/BundleInfoInternal.cpp -+++ b/service/resource-container/src/BundleInfoInternal.cpp -@@ -32,8 +32,8 @@ namespace OIC - m_resourceCreator = nullptr; - m_resourceDestroyer = nullptr; - m_bundleHandle = nullptr; -- m_so_bundle = nullptr; - -+ m_so_bundle = false; - m_loaded = false; - m_activated = false; - m_java_bundle = false; diff --git a/net/iotivity/patches/070-ssl-fix-compilation-against-non-debug-mbedtls.patch b/net/iotivity/patches/070-ssl-fix-compilation-against-non-debug-mbedtls.patch new file mode 100644 index 000000000..903cb72b7 --- /dev/null +++ b/net/iotivity/patches/070-ssl-fix-compilation-against-non-debug-mbedtls.patch @@ -0,0 +1,27 @@ +From 261cf19bfa3dea10ed0f2ebbb2d945c19c9a2804 Mon Sep 17 00:00:00 2001 +From: Hauke Mehrtens +Date: Sun, 4 Dec 2016 00:18:37 +0100 +Subject: [PATCH 5/7] ssl: fix compilation against non debug mbedtls + +The function mbedtls_debug_set_threshold() is only available when +MBEDTLS_DEBUG_C is set. make the call depend on this condition. + +Change-Id: I8158bc4c55b428167e36084e7a46359c269c5fc7 +Signed-off-by: Hauke Mehrtens +--- + resource/csdk/connectivity/src/adapter_util/ca_adapter_net_ssl.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/resource/csdk/connectivity/src/adapter_util/ca_adapter_net_ssl.c ++++ b/resource/csdk/connectivity/src/adapter_util/ca_adapter_net_ssl.c +@@ -1278,8 +1278,10 @@ static int InitConfig(mbedtls_ssl_config + + #if !defined(NDEBUG) || defined(TB_LOG) + mbedtls_ssl_conf_dbg(conf, DebugSsl, NULL); ++#if defined(MBEDTLS_DEBUG_C) + mbedtls_debug_set_threshold(MBED_TLS_DEBUG_LEVEL); + #endif ++#endif + OIC_LOG_V(DEBUG, NET_SSL_TAG, "Out %s", __func__); + return 0; + } diff --git a/net/iotivity/patches/071-ssl-call-mbedtls_version_get_string-only-if-availabl.patch b/net/iotivity/patches/071-ssl-call-mbedtls_version_get_string-only-if-availabl.patch new file mode 100644 index 000000000..83aec0744 --- /dev/null +++ b/net/iotivity/patches/071-ssl-call-mbedtls_version_get_string-only-if-availabl.patch @@ -0,0 +1,35 @@ +From cee085e0e62214603b9ae035d63fabca23c491bd Mon Sep 17 00:00:00 2001 +From: Hauke Mehrtens +Date: Sun, 8 Jan 2017 01:39:35 +0100 +Subject: [PATCH 6/7] ssl: call mbedtls_version_get_string() only if available + +The function mbedtls_version_get_string() is only available if +MBEDTLS_VERSION_C is set in the mbedtls configuration. Check this +before calling this function and print the mbedtls version this was +compiled against instead if mbedtls_version_get_string() is not +available. + +This fixes a compile problem when MBEDTLS_VERSION_C is not set. + +Change-Id: I54c2c2a3fc1f9d35afa475500e3db68420a1b54a +Signed-off-by: Hauke Mehrtens +--- + resource/csdk/connectivity/src/adapter_util/ca_adapter_net_ssl.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/resource/csdk/connectivity/src/adapter_util/ca_adapter_net_ssl.c ++++ b/resource/csdk/connectivity/src/adapter_util/ca_adapter_net_ssl.c +@@ -1376,9 +1376,13 @@ CAResult_t CAinitSslAdapter() + /* Initialize TLS library + */ + #if !defined(NDEBUG) || defined(TB_LOG) ++#ifdef MBEDTLS_VERSION_C + char version[MBED_TLS_VERSION_LEN]; + mbedtls_version_get_string(version); + OIC_LOG_V(INFO, NET_SSL_TAG, "mbed TLS version: %s", version); ++#else ++ OIC_LOG_V(INFO, NET_SSL_TAG, "mbed TLS version: %s", MBEDTLS_VERSION_STRING); ++#endif + #endif + + /* Entropy settings diff --git a/net/iotivity/patches/072-ssl-call-mbedtls_ssl_conf_renegotiation-only-if-avai.patch b/net/iotivity/patches/072-ssl-call-mbedtls_ssl_conf_renegotiation-only-if-avai.patch new file mode 100644 index 000000000..2e2ccb04c --- /dev/null +++ b/net/iotivity/patches/072-ssl-call-mbedtls_ssl_conf_renegotiation-only-if-avai.patch @@ -0,0 +1,30 @@ +From 3684ac3720f91dc131c1c61689395a69ae1865f9 Mon Sep 17 00:00:00 2001 +From: Hauke Mehrtens +Date: Sun, 8 Jan 2017 20:31:18 +0100 +Subject: [PATCH 7/7] ssl: call mbedtls_ssl_conf_renegotiation() only if + available + +The function mbedtls_ssl_conf_renegotiation() is only available if +MBEDTLS_SSL_RENEGOTIATION is set in the mbedtls configuration. Check this +before calling this function. + +This fixes a compile problem when MBEDTLS_SSL_RENEGOTIATION is not set. + +Change-Id: I69f15359d2dcaed1e4fe56fc7799737e38d6c2e7 +Signed-off-by: Hauke Mehrtens +--- + resource/csdk/connectivity/src/adapter_util/ca_adapter_net_ssl.c | 2 ++ + 1 file changed, 2 insertions(+) + +--- a/resource/csdk/connectivity/src/adapter_util/ca_adapter_net_ssl.c ++++ b/resource/csdk/connectivity/src/adapter_util/ca_adapter_net_ssl.c +@@ -1273,7 +1273,9 @@ static int InitConfig(mbedtls_ssl_config + mbedtls_ssl_conf_rng(conf, mbedtls_ctr_drbg_random, &g_caSslContext->rnd); + mbedtls_ssl_conf_curves(conf, curve[ADAPTER_CURVE_SECP256R1]); + mbedtls_ssl_conf_min_version(conf, MBEDTLS_SSL_MAJOR_VERSION_3, MBEDTLS_SSL_MINOR_VERSION_3); ++#ifdef MBEDTLS_SSL_RENEGOTIATION + mbedtls_ssl_conf_renegotiation(conf, MBEDTLS_SSL_RENEGOTIATION_DISABLED); ++#endif + mbedtls_ssl_conf_authmode(conf, MBEDTLS_SSL_VERIFY_REQUIRED); + + #if !defined(NDEBUG) || defined(TB_LOG) diff --git a/net/iotivity/patches/075-ssl-enable-usage-of-patched-mbed-functions-condition.patch b/net/iotivity/patches/075-ssl-enable-usage-of-patched-mbed-functions-condition.patch new file mode 100644 index 000000000..0cbd1ed1e --- /dev/null +++ b/net/iotivity/patches/075-ssl-enable-usage-of-patched-mbed-functions-condition.patch @@ -0,0 +1,44 @@ +From 01796db0b166e720860eff200acabff410ba6979 Mon Sep 17 00:00:00 2001 +From: Hauke Mehrtens +Date: Sun, 4 Dec 2016 00:15:21 +0100 +Subject: [PATCH 4/7] ssl: enable usage of patched mbed functions conditionally + +Only activate support for the MBEDTLS_KEY_EXCHANGE_ECDH_ANON_ENABLED +cipher suite when this is actually available in mbedtls. +This makes it possible to compile IoTivity against a unpatched mbedtls +version. + +Change-Id: Ic56d7faf7597cc5dc08f9d55be29dde898949609 +Signed-off-by: Hauke Mehrtens +--- + resource/csdk/connectivity/src/adapter_util/ca_adapter_net_ssl.c | 4 ++++ + 1 file changed, 4 insertions(+) + +--- a/resource/csdk/connectivity/src/adapter_util/ca_adapter_net_ssl.c ++++ b/resource/csdk/connectivity/src/adapter_util/ca_adapter_net_ssl.c +@@ -237,7 +237,9 @@ int tlsCipher[ADAPTER_CIPHER_MAX][2] = + { + {MBEDTLS_TLS_RSA_WITH_AES_256_CBC_SHA, 0}, + {MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8, 0}, ++#ifdef MBEDTLS_TLS_ECDH_ANON_WITH_AES_128_CBC_SHA256 + {MBEDTLS_TLS_ECDH_ANON_WITH_AES_128_CBC_SHA256, 0}, ++#endif + {MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256, 0}, + {MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CCM, 0}, + {MBEDTLS_TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256, 0} +@@ -1943,6 +1945,7 @@ CAResult_t CAsetTlsCipherSuite(const uin + g_caSslContext->cipher = ADAPTER_TLS_ECDHE_ECDSA_WITH_AES_128_CCM_8; + break; + } ++#ifdef MBEDTLS_TLS_ECDH_ANON_WITH_AES_128_CBC_SHA256 + case MBEDTLS_TLS_ECDH_ANON_WITH_AES_128_CBC_SHA256: + { + #ifdef __WITH_TLS__ +@@ -1960,6 +1963,7 @@ CAResult_t CAsetTlsCipherSuite(const uin + g_caSslContext->cipher = ADAPTER_TLS_ECDH_ANON_WITH_AES_128_CBC_SHA_256; + break; + } ++#endif + case MBEDTLS_TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256: + { + #if 0 // PIN OTM diff --git a/net/iotivity/patches/078-use-system-mbedtls.patch b/net/iotivity/patches/078-use-system-mbedtls.patch new file mode 100644 index 000000000..d19c688b7 --- /dev/null +++ b/net/iotivity/patches/078-use-system-mbedtls.patch @@ -0,0 +1,22 @@ +Make it possible to use system mbedtls version + +--- a/resource/csdk/connectivity/src/SConscript ++++ b/resource/csdk/connectivity/src/SConscript +@@ -73,16 +73,7 @@ if env.get('SECURED') == '1': + env.AppendUnique(CPPPATH = [src_dir + '/resource/csdk/security/include']) + env.AppendUnique(CPPDEFINES = ['__WITH_DTLS__']) + env.AppendUnique(CPPPATH = [os.path.join(root_dir, 'external/inc')]) +- tls_path = 'extlibs/mbedtls'; +- tls_headers_path = 'mbedtls/include'; +- if ca_os == 'tizen' and os.path.exists(root_dir + '/' + tls_path): +- env.SConscript(os.path.join(root_dir, tls_path + '/SConscript')) +- env.AppendUnique(CPPPATH = [os.path.join(root_dir, tls_path + '/' + tls_headers_path)]) +- else: +- if ca_os != 'android': +- env.SConscript('#' + tls_path + '/SConscript') +- env.AppendUnique(CPPPATH = ['#' + tls_path + '/' + tls_headers_path]) +- env.AppendUnique(CA_SRC = [os.path.join(ca_path, 'adapter_util/ca_adapter_net_ssl.c')]) ++ env.AppendUnique(CA_SRC = [os.path.join(ca_path, 'adapter_util/ca_adapter_net_ssl.c')]) + + if ((secured == '1') and (with_tcp == True)): + env.AppendUnique(CPPDEFINES = ['__WITH_TLS__']) diff --git a/net/iotivity/patches/080-zigbee_wrapper-do-not-check-for-floating-point.patch b/net/iotivity/patches/080-zigbee_wrapper-do-not-check-for-floating-point.patch new file mode 100644 index 000000000..e5a95f049 --- /dev/null +++ b/net/iotivity/patches/080-zigbee_wrapper-do-not-check-for-floating-point.patch @@ -0,0 +1,31 @@ +From df8360447163762c63994dcb07f9e69a5a365a1c Mon Sep 17 00:00:00 2001 +From: Hauke Mehrtens +Date: Sun, 8 Jan 2017 22:01:57 +0100 +Subject: [PATCH 8/8] zigbee_wrapper: do not check for floating point + +This makes the compile fail for soft float builds. In such builds the +double is still 64 bit long. + +Change-Id: I45d3f19b49f5d23d2b65307738a362765c5ea1c2 +Signed-off-by: Hauke Mehrtens +--- + plugins/zigbee_wrapper/src/zigbee_wrapper.c | 8 -------- + 1 file changed, 8 deletions(-) + +--- a/plugins/zigbee_wrapper/src/zigbee_wrapper.c ++++ b/plugins/zigbee_wrapper/src/zigbee_wrapper.c +@@ -37,14 +37,6 @@ + #include + #include + +-// The following #define must be here under "math.h". +-// This ifdef ensures that "__STDC_IEC_559__" is defined. If it is defined, +-// then we are guaranteed that the 'double' type is 64-bit. Otherwise, the +-// compilation of this file should fail because we are no longer guaranteed. +-#ifndef __STDC_IEC_559__ +-#error "Requires IEEE 754 floating point!" +-#endif +- + #include "zigbee_wrapper.h" + #include "telegesis_wrapper.h" + #include "pluginlist.h" diff --git a/net/iotivity/patches/140-remove-glib2.patch b/net/iotivity/patches/140-remove-glib2.patch index 3a73ef72f..1b009db9d 100644 --- a/net/iotivity/patches/140-remove-glib2.patch +++ b/net/iotivity/patches/140-remove-glib2.patch @@ -1,35 +1,32 @@ --- a/resource/csdk/connectivity/src/bt_le_adapter/linux/SConscript +++ b/resource/csdk/connectivity/src/bt_le_adapter/linux/SConscript -@@ -73,7 +73,7 @@ env.AppendUnique( +@@ -73,7 +73,6 @@ env.AppendUnique( # The Linux BLE adapter implementation uses GDBus to make D-Bus based # method calls to BlueZ. Pull in the necessary dependencies. -env.ParseConfig("pkg-config gio-unix-2.0 --cflags --libs") -+# env.ParseConfig("pkg-config gio-unix-2.0 --cflags --libs") # Set up commands to generate GDBus code from the D-Bus introspection # XML. --- a/resource/csdk/security/provisioning/sample/SConscript +++ b/resource/csdk/security/provisioning/sample/SConscript -@@ -58,7 +58,7 @@ if env.get('SECURED') == '1': - if env.get('DTLS_WITH_X509') == '1': - provisioning_env.AppendUnique(LIBS = ['CKManager']) - provisioning_env.AppendUnique(LIBS = ['asn1']) --provisioning_env.ParseConfig('pkg-config --libs glib-2.0'); -+# provisioning_env.ParseConfig('pkg-config --libs glib-2.0'); - - provisioning_env.AppendUnique(CPPDEFINES = ['TB_LOG']) +@@ -70,7 +70,6 @@ if target_os not in ['windows']: + if target_os not in ['msys_nt', 'windows']: + provisioning_env.AppendUnique(LIBS = ['dl', 'm']) +- provisioning_env.ParseConfig('pkg-config --libs glib-2.0'); + provisioning_env.AppendUnique(LIBPATH = [env.get('BUILD_DIR')]) + else: + provisioning_env.AppendUnique(LIBPATH = [os.path.join(env.get('BUILD_DIR'), 'resource', 'csdk')]) --- a/resource/csdk/security/provisioning/SConscript +++ b/resource/csdk/security/provisioning/SConscript -@@ -76,8 +76,8 @@ provisioning_env.AppendUnique(LIBS = ['t - if env.get('DTLS_WITH_X509') == '1': - provisioning_env.AppendUnique(LIBS = ['CKManager', 'asn1']) +@@ -73,9 +73,6 @@ provisioning_env.PrependUnique(LIBS = [' + provisioning_env.AppendUnique(LIBS = ['mbedtls', 'mbedx509','mbedcrypto']) --if target_os != 'android': + +-if target_os not in ['msys_nt', 'windows', 'android', 'ios']: - provisioning_env.ParseConfig('pkg-config --libs glib-2.0') -+# if target_os != 'android': -+# provisioning_env.ParseConfig('pkg-config --libs glib-2.0') +- + if target_os in ['windows', 'msys_nt']: + provisioning_env.AppendUnique(LIBS = ['ws2_32', 'advapi32', 'iphlpapi']) - if target_os == 'tizen': - provisioning_env.ParseConfig('pkg-config --cflags --libs sqlite3') From 2734f86e6eae2e5bde22e64bec60146c16c24cd8 Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens Date: Sun, 11 Dec 2016 01:34:59 +0100 Subject: [PATCH 4/6] iotivity: replace environment patches with upstream versions These patches are making it possible to provide the compiler settings from the environment so LEDE can change them. This replaces the old patches with the versions send for upstream inclusion. Signed-off-by: Hauke Mehrtens --- net/iotivity/Makefile | 1 + net/iotivity/patches/004-use-env.patch | 38 ------ ...-not-set-architecture-specific-flags.patch | 60 --------- ...=> 020-linux-Add-more-architectures.patch} | 17 ++- ...ld-do-not-set-TARGET_ARCH-to-default.patch | 39 ++++++ ...ompiler-options-to-supported-archite.patch | 57 ++++++++ ...ke-compiler-options-from-environment.patch | 126 ++++++++++++++++++ 7 files changed, 236 insertions(+), 102 deletions(-) delete mode 100644 net/iotivity/patches/004-use-env.patch delete mode 100644 net/iotivity/patches/020-Do-not-set-architecture-specific-flags.patch rename net/iotivity/patches/{021-add-some-more-architectures.patch => 020-linux-Add-more-architectures.patch} (65%) create mode 100644 net/iotivity/patches/021-build-do-not-set-TARGET_ARCH-to-default.patch create mode 100644 net/iotivity/patches/022-build-restrict-compiler-options-to-supported-archite.patch create mode 100644 net/iotivity/patches/023-build-take-compiler-options-from-environment.patch diff --git a/net/iotivity/Makefile b/net/iotivity/Makefile index 5bd4056b1..2ebf33252 100644 --- a/net/iotivity/Makefile +++ b/net/iotivity/Makefile @@ -179,6 +179,7 @@ SCONS_OPTIONS += \ TARGET_ARCH=$(ARCH) \ STAGING_DIR=$(STAGING_DIR) \ LOGGING=true \ + WITH_ENV=true \ $(if $(CONFIG_PACKAGE_iotivity),octbstack) \ $(if $(CONFIG_PACKAGE_iotivity-cpp),oc) \ $(if $(CONFIG_PACKAGE_iotivity-oic-middle),examples) \ diff --git a/net/iotivity/patches/004-use-env.patch b/net/iotivity/patches/004-use-env.patch deleted file mode 100644 index adfcf3336..000000000 --- a/net/iotivity/patches/004-use-env.patch +++ /dev/null @@ -1,38 +0,0 @@ -From 884e831ed07607097614276f6bbf192993228100 Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens -Date: Tue, 2 Jun 2015 11:08:17 +0200 -Subject: [PATCH 3/4] 004-use-env.patch - ---- - build_common/SConscript | 22 ++++++++++++++++++++++ - 1 file changed, 22 insertions(+) - ---- a/build_common/SConscript -+++ b/build_common/SConscript -@@ -163,6 +163,26 @@ tc_set_msg = ''' - * cause inexplicable errors. * - ******************************************************************************* - ''' -+env['ENV'] = os.environ -+if 'CC' in os.environ: -+ env['CC'] = Split(os.environ['CC']) -+ print "using CC from environment: %s" % env['CC'] -+if 'CXX' in os.environ: -+ env['CXX'] = Split(os.environ['CXX']) -+ print "using CXX from environment: %s" % env['CXX'] -+if 'CFLAGS' in os.environ: -+ env['CFLAGS'] = Split(os.environ['CFLAGS']) -+ print "using CFLAGS from environment: %s" % env['CFLAGS'] -+if 'CXXFLAGS' in os.environ: -+ env['CXXFLAGS'] = Split(os.environ['CXXFLAGS']) -+ print "using CXXFLAGS from environment: %s" % env['CXXFLAGS'] -+if 'CPPFLAGS' in os.environ: -+ env['CPPFLAGS'] = Split(os.environ['CPPFLAGS']) -+ print "using CPPFLAGS from environment: %s" % env['CPPFLAGS'] -+if 'LDFLAGS' in os.environ: -+ env['LINKFLAGS'] = Split(os.environ['LDFLAGS']) -+ print "using LDFLAGS/LINKFLAGS from environment: %s" % env['LINKFLAGS'] -+ - if env.get('VERBOSE') == False: - env['CCCOMSTR'] = "Compiling $TARGET" - env['SHCCCOMSTR'] = "Compiling $TARGET" diff --git a/net/iotivity/patches/020-Do-not-set-architecture-specific-flags.patch b/net/iotivity/patches/020-Do-not-set-architecture-specific-flags.patch deleted file mode 100644 index c04630249..000000000 --- a/net/iotivity/patches/020-Do-not-set-architecture-specific-flags.patch +++ /dev/null @@ -1,60 +0,0 @@ -From 980ef34a085f654e74c9896e8143e6f970049b6c Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens -Date: Mon, 22 Jun 2015 19:39:58 +0200 -Subject: [PATCH 3/5] Do not set architecture specific flags - -Setting architecture specific flags causes problems when you want to -build something which is not covered by these. - -Signed-off-by: Hauke Mehrtens ---- - build_common/linux/SConscript | 20 -------------------- - resource/csdk/connectivity/build/linux/SConscript | 20 -------------------- - 2 files changed, 40 deletions(-) - ---- a/build_common/linux/SConscript -+++ b/build_common/linux/SConscript -@@ -24,20 +24,3 @@ env.AppendUnique(LIBS = ['dl', 'pthread' - - # Set arch flags that match best TARGET_ARCH variable - target_arch = env.get('TARGET_ARCH') --if target_arch in ['x86']: -- env.AppendUnique(CCFLAGS = ['-m32']) -- env.AppendUnique(LINKFLAGS = ['-m32']) --elif target_arch in ['x86_64']: -- env.AppendUnique(CCFLAGS = ['-m64']) -- env.AppendUnique(LINKFLAGS = ['-m64']) --elif target_arch in ['arm'] or target_arch.find('v5') > 0: -- env.AppendUnique(CPPFLAGS = ['-march=armv5te']) --elif target_arch.find('v7a-hard') > 0: -- env.AppendUnique(CPPFLAGS = ['-march=armv7-a']) -- env.AppendUnique(CPPFLAGS = ['-mfloat-abi=hard']) -- env.AppendUnique(CCFLAGS = ['-mfloat-abi=hard']) -- env.AppendUnique(LINKFLAGS = ['-mfloat-abi=hard']) --elif target_arch.find('v7a') > 0: -- env.AppendUnique(CPPFLAGS = ['-march=armv7-a']) --elif target_arch.find('arm64') >= 0: -- env.AppendUnique(CPPFLAGS = ['-march=armv8-a']) ---- a/resource/csdk/connectivity/build/linux/SConscript -+++ b/resource/csdk/connectivity/build/linux/SConscript -@@ -23,20 +23,3 @@ env.AppendUnique(LIBS = ['dl', 'pthread' - - # Set arch flags - target_arch = env.get('TARGET_ARCH') --if target_arch in ['x86']: -- env.AppendUnique(CCFLAGS = ['-m32']) -- env.AppendUnique(LINKFLAGS = ['-m32']) --elif target_arch in ['x86_64']: -- env.AppendUnique(CCFLAGS = ['-m64']) -- env.AppendUnique(LINKFLAGS = ['-m64']) --elif target_arch.find('v7a-hard') > 0: -- env.AppendUnique(CPPFLAGS = ['-march=armv7-a']) -- env.AppendUnique(CPPFLAGS = ['-mfloat-abi=hard']) -- env.AppendUnique(CCFLAGS = ['-mfloat-abi=hard']) -- env.AppendUnique(LINKFLAGS = ['-mfloat-abi=hard']) --elif target_arch.find('v7a') > 0: -- env.AppendUnique(CPPFLAGS = ['-march=armv7-a']) --elif target_arch.find('arm64') > 0: -- env.AppendUnique(CPPFLAGS = ['-march=armv8-a']) --else: -- env.AppendUnique(CPPFLAGS = ['-march=armv5te']) diff --git a/net/iotivity/patches/021-add-some-more-architectures.patch b/net/iotivity/patches/020-linux-Add-more-architectures.patch similarity index 65% rename from net/iotivity/patches/021-add-some-more-architectures.patch rename to net/iotivity/patches/020-linux-Add-more-architectures.patch index 442c1f79c..cb0138149 100644 --- a/net/iotivity/patches/021-add-some-more-architectures.patch +++ b/net/iotivity/patches/020-linux-Add-more-architectures.patch @@ -1,11 +1,20 @@ -From f78ba209b14908bf2b6197293e1f9e3458ddba8e Mon Sep 17 00:00:00 2001 -From: Hauke Mehrtens -Date: Mon, 22 Jun 2015 19:59:47 +0200 -Subject: [PATCH 4/5] add some more architectures +From dabd6597013e1df72b08621b466d136b8d25d110 Mon Sep 17 00:00:00 2001 +From: Philippe Coval +Date: Thu, 29 Sep 2016 10:57:59 +0200 +Subject: [PATCH 20/23] linux: Add more architectures This does not scale and this check should be removed. Signed-off-by: Hauke Mehrtens +Author: Hauke Mehrtens +Change-Id: Ibb271701904745ee4f5dd689c197228239c37262 +Origin: https://github.com/openwrt/packages/blob/master/net/iotivity/patches/021-add-some-more-architectures.patch +Signed-off-by: Philippe Coval +Reviewed-on: https://gerrit.iotivity.org/gerrit/14575 +Tested-by: jenkins-iotivity +Reviewed-by: Nivedita Singhvi +Reviewed-by: Jaehong Jo +Reviewed-by: Hauke Mehrtens --- build_common/SConscript | 2 +- resource/csdk/connectivity/build/SConscript | 2 +- diff --git a/net/iotivity/patches/021-build-do-not-set-TARGET_ARCH-to-default.patch b/net/iotivity/patches/021-build-do-not-set-TARGET_ARCH-to-default.patch new file mode 100644 index 000000000..2756fde33 --- /dev/null +++ b/net/iotivity/patches/021-build-do-not-set-TARGET_ARCH-to-default.patch @@ -0,0 +1,39 @@ +From 792f68219b3ab4ff5238e3abc7aa1c68bfa4a22b Mon Sep 17 00:00:00 2001 +From: Hauke Mehrtens +Date: Sat, 10 Dec 2016 18:15:32 +0100 +Subject: [PATCH 21/23] build: do not set TARGET_ARCH to default + +This check is useless, scons already checks this and returns such an +error message: +Invalid value for option TARGET_ARCH: mips. Valid values are: ['x86', 'x86_64', 'arm', 'arm-v7a', 'armeabi-v7a', 'arm64'] + +Change-Id: I3f7dd3b9fcae875ab20349203fb77537f24be763 +Signed-off-by: Hauke Mehrtens +--- + build_common/SConscript | 3 --- + resource/csdk/connectivity/build/SConscript | 2 -- + 2 files changed, 5 deletions(-) + +--- a/build_common/SConscript ++++ b/build_common/SConscript +@@ -54,9 +54,6 @@ if target_os == 'android': + else: + default_arch = platform.machine() + +-if default_arch not in os_arch_map[target_os]: +- default_arch = os_arch_map[target_os][0].lower() +- + target_arch = ARGUMENTS.get('TARGET_ARCH', default_arch) # target arch + + # True if binary needs to be installed on board. (Might need root permissions) +--- a/resource/csdk/connectivity/build/SConscript ++++ b/resource/csdk/connectivity/build/SConscript +@@ -40,8 +40,6 @@ if target_os not in host_target_map[host + Exit(1) + + default_arch = platform.machine() +-if default_arch not in os_arch_map[target_os]: +- default_arch = os_arch_map[target_os][0].lower() + + target_arch = ARGUMENTS.get('TARGET_ARCH', default_arch) # target arch + diff --git a/net/iotivity/patches/022-build-restrict-compiler-options-to-supported-archite.patch b/net/iotivity/patches/022-build-restrict-compiler-options-to-supported-archite.patch new file mode 100644 index 000000000..dfb546a47 --- /dev/null +++ b/net/iotivity/patches/022-build-restrict-compiler-options-to-supported-archite.patch @@ -0,0 +1,57 @@ +From 39b0c436c77555849da1e68cc8733c67183c291f Mon Sep 17 00:00:00 2001 +From: Hauke Mehrtens +Date: Sat, 10 Dec 2016 18:35:04 +0100 +Subject: [PATCH 22/23] build: restrict compiler options to supported + architectures + +For Linux we currently only support the following architectures: +'x86', 'x86_64', 'arm', 'arm-v7a', 'armeabi-v7a', 'arm64' +explicitly check for those architectures and also remove ARM hard float. + +Change-Id: I7078530bc2a89b88c7049cc53e8bb3fbe5d75ca8 +Signed-off-by: Hauke Mehrtens +--- + build_common/linux/SConscript | 11 +++-------- + resource/csdk/connectivity/build/linux/SConscript | 11 +++-------- + 2 files changed, 6 insertions(+), 16 deletions(-) + +--- a/build_common/linux/SConscript ++++ b/build_common/linux/SConscript +@@ -30,14 +30,9 @@ if target_arch in ['x86']: + elif target_arch in ['x86_64']: + env.AppendUnique(CCFLAGS = ['-m64']) + env.AppendUnique(LINKFLAGS = ['-m64']) +-elif target_arch in ['arm'] or target_arch.find('v5') > 0: ++elif target_arch in ['arm']: + env.AppendUnique(CPPFLAGS = ['-march=armv5te']) +-elif target_arch.find('v7a-hard') > 0: ++elif target_arch in ['arm-v7a', 'armeabi-v7a']: + env.AppendUnique(CPPFLAGS = ['-march=armv7-a']) +- env.AppendUnique(CPPFLAGS = ['-mfloat-abi=hard']) +- env.AppendUnique(CCFLAGS = ['-mfloat-abi=hard']) +- env.AppendUnique(LINKFLAGS = ['-mfloat-abi=hard']) +-elif target_arch.find('v7a') > 0: +- env.AppendUnique(CPPFLAGS = ['-march=armv7-a']) +-elif target_arch.find('arm64') >= 0: ++elif target_arch.find('arm64') > 0: + env.AppendUnique(CPPFLAGS = ['-march=armv8-a']) +--- a/resource/csdk/connectivity/build/linux/SConscript ++++ b/resource/csdk/connectivity/build/linux/SConscript +@@ -29,14 +29,9 @@ if target_arch in ['x86']: + elif target_arch in ['x86_64']: + env.AppendUnique(CCFLAGS = ['-m64']) + env.AppendUnique(LINKFLAGS = ['-m64']) +-elif target_arch.find('v7a-hard') > 0: +- env.AppendUnique(CPPFLAGS = ['-march=armv7-a']) +- env.AppendUnique(CPPFLAGS = ['-mfloat-abi=hard']) +- env.AppendUnique(CCFLAGS = ['-mfloat-abi=hard']) +- env.AppendUnique(LINKFLAGS = ['-mfloat-abi=hard']) +-elif target_arch.find('v7a') > 0: ++elif target_arch in ['arm']: ++ env.AppendUnique(CPPFLAGS = ['-march=armv5te']) ++elif target_arch in ['arm-v7a', 'armeabi-v7a']: + env.AppendUnique(CPPFLAGS = ['-march=armv7-a']) + elif target_arch.find('arm64') > 0: + env.AppendUnique(CPPFLAGS = ['-march=armv8-a']) +-else: +- env.AppendUnique(CPPFLAGS = ['-march=armv5te']) diff --git a/net/iotivity/patches/023-build-take-compiler-options-from-environment.patch b/net/iotivity/patches/023-build-take-compiler-options-from-environment.patch new file mode 100644 index 000000000..b6a2bfde3 --- /dev/null +++ b/net/iotivity/patches/023-build-take-compiler-options-from-environment.patch @@ -0,0 +1,126 @@ +From 5f9513eb341d520d10c48f8ba2bd145063405fdd Mon Sep 17 00:00:00 2001 +From: Hauke Mehrtens +Date: Sat, 10 Dec 2016 18:08:05 +0100 +Subject: [PATCH 23/23] build: take compiler options from environment + +This makes it possible to compile IoTivity with custom compiler +options. This way someone can use optimized compiler settings for the +target CPU. I want to use this in OpenWrt / LEDE to build specific +IoTivity binaries for each CPU architecture, there the build system +provides the matching compiler options. + +Change-Id: I86772f73b81c41d7e96e51b434fd9e3b4992753a +Signed-off-by: Hauke Mehrtens +--- + build_common/SConscript | 25 +++++++++++++++++++++ + build_common/linux/SConscript | 27 ++++++++++++----------- + resource/csdk/connectivity/build/linux/SConscript | 27 ++++++++++++----------- + 3 files changed, 53 insertions(+), 26 deletions(-) + +--- a/build_common/SConscript ++++ b/build_common/SConscript +@@ -120,6 +120,7 @@ help_vars.Add(PathVariable('ANDROID_NDK' + help_vars.Add(PathVariable('ANDROID_HOME', 'Android SDK path', None, PathVariable.PathAccept)) + help_vars.Add(PathVariable('ANDROID_GRADLE', 'Gradle binary file', None, PathVariable.PathIsFile)) + help_vars.Add(EnumVariable('WITH_UPSTREAM_LIBCOAP', 'Use latest stable version of LibCoAP downloaded from github', default_with_upstream_libcoap, allowed_values=('0','1'))) ++help_vars.Add(BoolVariable('WITH_ENV', 'Use compiler options from environment', False)) + + AddOption('--prefix', + dest='prefix', +@@ -153,6 +154,30 @@ else: + ) + Help(help_vars.GenerateHelpText(env)) + ++if env.get('WITH_ENV'): ++ env['ENV'] = os.environ ++ if 'CC' in os.environ: ++ env['CC'] = Split(os.environ['CC']) ++ print "using CC from environment: %s" % env['CC'] ++ if 'CXX' in os.environ: ++ env['CXX'] = Split(os.environ['CXX']) ++ print "using CXX from environment: %s" % env['CXX'] ++ if 'CFLAGS' in os.environ: ++ env['CFLAGS'] = Split(os.environ['CFLAGS']) ++ print "using CFLAGS from environment: %s" % env['CFLAGS'] ++ if 'CXXFLAGS' in os.environ: ++ env['CXXFLAGS'] = Split(os.environ['CXXFLAGS']) ++ print "using CXXFLAGS from environment: %s" % env['CXXFLAGS'] ++ if 'CCFLAGS' in os.environ: ++ env['CCFLAGS'] = Split(os.environ['CCFLAGS']) ++ print "using CCFLAGS from environment: %s" % env['CCFLAGS'] ++ if 'CPPFLAGS' in os.environ: ++ env['CPPFLAGS'] = Split(os.environ['CPPFLAGS']) ++ print "using CPPFLAGS from environment: %s" % env['CPPFLAGS'] ++ if 'LDFLAGS' in os.environ: ++ env['LINKFLAGS'] = Split(os.environ['LDFLAGS']) ++ print "using LDFLAGS/LINKFLAGS from environment: %s" % env['LINKFLAGS'] ++ + tc_set_msg = ''' + ************************************ Warning ********************************** + * Enviornment variable TC_PREFIX/TC_PATH is set. It will change the default * +--- a/build_common/linux/SConscript ++++ b/build_common/linux/SConscript +@@ -23,16 +23,17 @@ env.AppendUnique(CCFLAGS = ['-Wall', '-W + env.AppendUnique(LIBS = ['dl', 'pthread', 'uuid']) + + # Set arch flags that match best TARGET_ARCH variable +-target_arch = env.get('TARGET_ARCH') +-if target_arch in ['x86']: +- env.AppendUnique(CCFLAGS = ['-m32']) +- env.AppendUnique(LINKFLAGS = ['-m32']) +-elif target_arch in ['x86_64']: +- env.AppendUnique(CCFLAGS = ['-m64']) +- env.AppendUnique(LINKFLAGS = ['-m64']) +-elif target_arch in ['arm']: +- env.AppendUnique(CPPFLAGS = ['-march=armv5te']) +-elif target_arch in ['arm-v7a', 'armeabi-v7a']: +- env.AppendUnique(CPPFLAGS = ['-march=armv7-a']) +-elif target_arch.find('arm64') > 0: +- env.AppendUnique(CPPFLAGS = ['-march=armv8-a']) ++if not env.get('WITH_ENV'): ++ target_arch = env.get('TARGET_ARCH') ++ if target_arch in ['x86']: ++ env.AppendUnique(CCFLAGS = ['-m32']) ++ env.AppendUnique(LINKFLAGS = ['-m32']) ++ elif target_arch in ['x86_64']: ++ env.AppendUnique(CCFLAGS = ['-m64']) ++ env.AppendUnique(LINKFLAGS = ['-m64']) ++ elif target_arch in ['arm']: ++ env.AppendUnique(CPPFLAGS = ['-march=armv5te']) ++ elif target_arch in ['arm-v7a', 'armeabi-v7a']: ++ env.AppendUnique(CPPFLAGS = ['-march=armv7-a']) ++ elif target_arch.find('arm64') > 0: ++ env.AppendUnique(CPPFLAGS = ['-march=armv8-a']) +--- a/resource/csdk/connectivity/build/linux/SConscript ++++ b/resource/csdk/connectivity/build/linux/SConscript +@@ -22,16 +22,17 @@ env.AppendUnique(CCFLAGS = ['-Wall', '-f + env.AppendUnique(LIBS = ['dl', 'pthread']) + + # Set arch flags +-target_arch = env.get('TARGET_ARCH') +-if target_arch in ['x86']: +- env.AppendUnique(CCFLAGS = ['-m32']) +- env.AppendUnique(LINKFLAGS = ['-m32']) +-elif target_arch in ['x86_64']: +- env.AppendUnique(CCFLAGS = ['-m64']) +- env.AppendUnique(LINKFLAGS = ['-m64']) +-elif target_arch in ['arm']: +- env.AppendUnique(CPPFLAGS = ['-march=armv5te']) +-elif target_arch in ['arm-v7a', 'armeabi-v7a']: +- env.AppendUnique(CPPFLAGS = ['-march=armv7-a']) +-elif target_arch.find('arm64') > 0: +- env.AppendUnique(CPPFLAGS = ['-march=armv8-a']) ++if not env.get('WITH_ENV'): ++ target_arch = env.get('TARGET_ARCH') ++ if target_arch in ['x86']: ++ env.AppendUnique(CCFLAGS = ['-m32']) ++ env.AppendUnique(LINKFLAGS = ['-m32']) ++ elif target_arch in ['x86_64']: ++ env.AppendUnique(CCFLAGS = ['-m64']) ++ env.AppendUnique(LINKFLAGS = ['-m64']) ++ elif target_arch in ['arm']: ++ env.AppendUnique(CPPFLAGS = ['-march=armv5te']) ++ elif target_arch in ['arm-v7a', 'armeabi-v7a']: ++ env.AppendUnique(CPPFLAGS = ['-march=armv7-a']) ++ elif target_arch.find('arm64') > 0: ++ env.AppendUnique(CPPFLAGS = ['-march=armv8-a']) From a2bc69df691c71892137cf6849d62ab4ae95d828 Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens Date: Sun, 8 Jan 2017 22:10:58 +0100 Subject: [PATCH 5/6] iotivity: install the header files Install the header files needed to build something against IoTivity. This will have it easier to build an application using IoTivity library. Signed-off-by: Hauke Mehrtens --- net/iotivity/Makefile | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/net/iotivity/Makefile b/net/iotivity/Makefile index 2ebf33252..bb67e19e4 100644 --- a/net/iotivity/Makefile +++ b/net/iotivity/Makefile @@ -180,14 +180,14 @@ SCONS_OPTIONS += \ STAGING_DIR=$(STAGING_DIR) \ LOGGING=true \ WITH_ENV=true \ - $(if $(CONFIG_PACKAGE_iotivity),octbstack) \ - $(if $(CONFIG_PACKAGE_iotivity-cpp),oc) \ + octbstack oc \ $(if $(CONFIG_PACKAGE_iotivity-oic-middle),examples) \ $(if $(CONFIG_PACKAGE_iotivity-resource-container-lib),libResContainer) \ $(if $(CONFIG_PACKAGE_iotivity-resource-container-sample),containersample) \ $(if $(CONFIG_PACKAGE_iotivity-resource-container-hue),libHueBundle) \ $(if $(CONFIG_PACKAGE_iotivity-example-garage),examples) \ $(if $(CONFIG_PACKAGE_iotivity-example-simple),examples) \ + install ifeq ($(CONFIG_PACKAGE_iotivity_DEBUG),y) SCONS_OPTIONS += RELEASE=false @@ -278,6 +278,18 @@ define Package/iotivity-example-simple/install $(INSTALL_BIN) $(PKG_BUILD_DIR)/out/linux/$(ARCH)/$(APP_OPTIM)/resource/examples/simpleserver $(1)/usr/bin/ endef +define Build/InstallDev + $(INSTALL_DIR) $(1)/usr/include + $(CP) $(PKG_BUILD_DIR)/out/linux/$(ARCH)/$(APP_OPTIM)/include $(1)/usr/include/iotivity + + $(INSTALL_DIR) $(1)/usr/lib + $(CP) $(PKG_BUILD_DIR)/out/linux/$(ARCH)/$(APP_OPTIM)/libconnectivity_abstraction.so $(1)/usr/lib/ + $(CP) $(PKG_BUILD_DIR)/out/linux/$(ARCH)/$(APP_OPTIM)/liboctbstack.so $(1)/usr/lib/ + $(CP) $(PKG_BUILD_DIR)/out/linux/$(ARCH)/$(APP_OPTIM)/liboc.so $(1)/usr/lib/ + $(CP) $(PKG_BUILD_DIR)/out/linux/$(ARCH)/$(APP_OPTIM)/liboc_logger.so $(1)/usr/lib/ + $(CP) $(PKG_BUILD_DIR)/out/linux/$(ARCH)/$(APP_OPTIM)/libresource_directory.so $(1)/usr/lib/ +endef + $(eval $(call BuildPackage,iotivity)) $(eval $(call BuildPackage,iotivity-cpp)) From 0c5eb5aff17257a0c00199cdd91c89551974db11 Mon Sep 17 00:00:00 2001 From: Hauke Mehrtens Date: Sun, 8 Jan 2017 22:13:19 +0100 Subject: [PATCH 6/6] iotivity: make logging configurable Before this change logging was always activated and then IoTivity wrote a lot of debug messages. Make it now configurable. Signed-off-by: Hauke Mehrtens --- net/iotivity/Makefile | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/net/iotivity/Makefile b/net/iotivity/Makefile index bb67e19e4..e1491f779 100644 --- a/net/iotivity/Makefile +++ b/net/iotivity/Makefile @@ -66,6 +66,12 @@ define Package/iotivity/config help Activate security support. + config PACKAGE_iotivity_LOGGING + bool "IoTivity with logging support" + default y + help + Activate logging support. + This will make IoTivity write a lot of log messages to stdout. endif endef @@ -178,7 +184,6 @@ SCONS_OPTIONS += \ TARGET_TRANSPORT=IP \ TARGET_ARCH=$(ARCH) \ STAGING_DIR=$(STAGING_DIR) \ - LOGGING=true \ WITH_ENV=true \ octbstack oc \ $(if $(CONFIG_PACKAGE_iotivity-oic-middle),examples) \ @@ -203,6 +208,10 @@ else SCONS_OPTIONS += SECURED=0 endif +ifeq ($(CONFIG_PACKAGE_iotivity_LOGGING),y) + SCONS_OPTIONS += LOGGING=true +endif + ifneq ($(findstring c,$(OPENWRT_VERBOSE)),) SCONS_OPTIONS += VERBOSE=true endif