diff --git a/bindings/python/Android.mk b/bindings/python/Android.mk index 977ffb79c..0ea1a4940 100644 --- a/bindings/python/Android.mk +++ b/bindings/python/Android.mk @@ -47,8 +47,13 @@ LOCAL_32_BIT_ONLY := true LOCAL_SHARED_LIBRARIES := libparameter_host LOCAL_STATIC_LIBRARIES := libxmlserializer_host +# python is only available in 32bits for now, thus arch is forced to 32bits +PYTHON_INSTALL_PATH := prebuilts/python/$(HOST_OS)-x86/2.7.5/ +PYTHON_INCLUDES_PATH := $(PYTHON_INSTALL_PATH)/include/python2.7 +PYTHON_BIN_PATH := $(PYTHON_INSTALL_PATH)/bin + LOCAL_C_INCLUDES := \ - prebuilts/python/linux-x86/2.7.5/include/python2.7 \ + $(PYTHON_INCLUDES_PATH) \ $(HOST_OUT_HEADERS)/parameter # The 'unused-but-set-variable' warning must be disabled because SWIG generates @@ -74,15 +79,29 @@ LOCAL_GENERATED_SOURCES := $(generated-sources-dir)/pfw_wrap.cxx $(generated-sou LOCAL_EXPORT_C_INCLUDE_DIRS := $(generated-sources-dir) +# Careful, we need to invoque the android python config not the host's one. +# BTW, the intenal install directory of python is hardcoded to a dummy value, +# thus we need to manually add the correct path to libs to the library list. +ifeq ($(HOST_OS), linux) +LOCAL_LDLIBS += $(shell $(PYTHON_BIN_PATH)/python $(PYTHON_BIN_PATH)/python-config --ldflags) \ + -L $(PYTHON_INSTALL_PATH)/lib/ +else +LOCAL_LDLIBS += $(shell python-config --ldflags) +endif + $(generated-sources-dir)/pfw_wrap.h: $(generated-sources-dir)/pfw_wrap.cxx # The PyPfw.py file is generated in the directory given by -outdir switch, thus # this directory must be put in the python path to be reachable +$(generated-sources-dir)/pfw_wrap.cxx: HOST_ARCH := $(HOST_ARCH) +$(generated-sources-dir)/pfw_wrap.cxx: HOST_OS := $(HOST_OS) +$(generated-sources-dir)/pfw_wrap.cxx: HOST_LIBRARY_PATH := $(HOST_LIBRARY_PATH) + $(generated-sources-dir)/pfw_wrap.cxx: $(LOCAL_PATH)/pfw.i @echo "Generating Python binding files" mkdir -p $(dir $@) # surprisingly, path is not generated by build system mkdir -p $(HOST_LIBRARY_PATH) - prebuilts/misc/linux-x86_64/swig/swig \ + prebuilts/misc/$(HOST_OS)-$(HOST_ARCH)/swig/swig \ -Iprebuilts/misc/common/swig/include/2.0.11/python/ \ -Iprebuilts/misc/common/swig/include/2.0.11/ \ -Wall -Werror -v -python -c++ -outdir $(HOST_LIBRARY_PATH)/ -o $@ $^ diff --git a/parameter/Android.mk b/parameter/Android.mk index 90e33f09b..5ed9fa03a 100644 --- a/parameter/Android.mk +++ b/parameter/Android.mk @@ -143,6 +143,8 @@ include $(CLEAR_VARS) LOCAL_COPY_HEADERS_TO := $(common_copy_headers_to) LOCAL_COPY_HEADERS := $(common_copy_headers) +LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH) + LOCAL_CFLAGS := $(common_cflags) LOCAL_SRC_FILES := $(common_src_files) @@ -170,6 +172,8 @@ include $(CLEAR_VARS) LOCAL_COPY_HEADERS_TO := $(common_copy_headers_to) LOCAL_COPY_HEADERS := $(common_copy_headers) +LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH) + LOCAL_CFLAGS := $(common_cflags) -O0 -ggdb LOCAL_SRC_FILES := $(common_src_files) @@ -188,37 +192,3 @@ LOCAL_LDLIBS += -ldl LOCAL_CLANG := false include $(BUILD_HOST_SHARED_LIBRARY) - -################################ -# Export includes for plugins (Target build) - -include $(CLEAR_VARS) - -LOCAL_MODULE := $(common_module)_includes -LOCAL_MODULE_OWNER := intel - -LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH) - -LOCAL_STATIC_LIBRARIES := \ - libxmlserializer \ - libpfw_utility \ - libxml2 - -include $(BUILD_STATIC_LIBRARY) - -################################ -# Export includes for plugins (Host build) - -include $(CLEAR_VARS) - -LOCAL_MODULE := $(common_module)_includes_host -LOCAL_MODULE_OWNER := intel - -LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH) - -LOCAL_STATIC_LIBRARIES := \ - libxmlserializer_host \ - libpfw_utility_host \ - libxml2 - -include $(BUILD_HOST_STATIC_LIBRARY) diff --git a/remote-processor/Socket.cpp b/remote-processor/Socket.cpp index b36d32fc8..24232dddd 100644 --- a/remote-processor/Socket.cpp +++ b/remote-processor/Socket.cpp @@ -108,7 +108,7 @@ bool CSocket::read(void* pvData, uint32_t uiSize) while (uiSize) { - int32_t iAccessedSize = ::recv(_iSockFd, &pucData[uiOffset], uiSize, MSG_NOSIGNAL); + int32_t iAccessedSize = ::recv(_iSockFd, &pucData[uiOffset], uiSize, 0); switch (iAccessedSize) { case 0: @@ -140,17 +140,19 @@ bool CSocket::write(const void* pvData, uint32_t uiSize) while (uiSize) { - int32_t iAccessedSize = ::send(_iSockFd, &pucData[uiOffset], uiSize, MSG_NOSIGNAL); + int32_t iAccessedSize = ::send(_iSockFd, &pucData[uiOffset], uiSize, 0); if (iAccessedSize == -1) { - if (errno == ECONNRESET) { - // Peer has disconnected - _disconnected = true; - } - // errno == EINTR => The send system call was interrupted, try again - if (errno != EINTR) { - return false; + if (errno == EINTR) { + // The send system call was interrupted, try again + continue; } + + // An error occured, forget this socket + _disconnected = true; + close(_iSockFd); + _iSockFd = -1; + return false; } else { uiSize -= iAccessedSize; uiOffset += iAccessedSize; diff --git a/support/android/build_pfw_settings.mk b/support/android/build_pfw_settings.mk index 482c56d58..a9679d95f 100644 --- a/support/android/build_pfw_settings.mk +++ b/support/android/build_pfw_settings.mk @@ -35,7 +35,8 @@ $(LOCAL_BUILT_MODULE): MY_TOOL := $(HOST_OUT)/bin/domainGenerator.py # As of Android K, python is available as prebuilt. We can't reliably use the # host's default python because the low-level python binding has been compiled # against Android's Python headers. -$(LOCAL_BUILT_MODULE): MY_PYTHON := prebuilts/python/linux-x86/2.7.5/bin/python +# BTW, python is only available in 32bits for now, thus arch is forces to 32bits +$(LOCAL_BUILT_MODULE): MY_PYTHON := prebuilts/python/$(HOST_OS)-x86/2.7.5/bin/python # The parameter-framework binding module is installed on these locations on # Android (On 64bit machines, PyPfw.py is installed in the 'lib64' directory # and _PyPfw.so is installed in the 'lib' directory, hence the need for these diff --git a/xmlserializer/Android.mk b/xmlserializer/Android.mk index 37a8241df..de32991f0 100644 --- a/xmlserializer/Android.mk +++ b/xmlserializer/Android.mk @@ -63,6 +63,8 @@ include $(CLEAR_VARS) LOCAL_SRC_FILES := $(common_src_files) +LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH) + LOCAL_MODULE := $(common_module) LOCAL_MODULE_OWNER := intel LOCAL_MODULE_TAGS := $(common_module_tags) @@ -86,6 +88,8 @@ include $(CLEAR_VARS) LOCAL_SRC_FILES := $(common_src_files) +LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH) + LOCAL_MODULE := $(common_module)_host LOCAL_MODULE_OWNER := intel LOCAL_MODULE_TAGS := $(common_module_tags) @@ -101,20 +105,3 @@ LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH) include $(BUILD_HOST_STATIC_LIBRARY) -################################ -# Export includes for plugins (Target build) -include $(CLEAR_VARS) -LOCAL_MODULE := $(common_module)_includes -LOCAL_MODULE_OWNER := intel -LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH) -LOCAL_STATIC_LIBRARIES := libxml2 -include $(BUILD_STATIC_LIBRARY) - -################################ -# Export includes for plugins (Host build) -include $(CLEAR_VARS) -LOCAL_MODULE := $(common_module)_includes -LOCAL_MODULE_OWNER := intel -LOCAL_EXPORT_C_INCLUDE_DIRS := $(LOCAL_PATH) -LOCAL_STATIC_LIBRARIES := libxml2 -include $(BUILD_HOST_STATIC_LIBRARY)