Skip to content
This repository was archived by the owner on Aug 5, 2022. It is now read-only.
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
23 changes: 21 additions & 2 deletions bindings/python/Android.mk
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand All @@ -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.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

invoke

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in #124

# BTW, the intenal install directory of python is hardcoded to a dummy value,
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

internal

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in #124

# thus we need to manually add the correct path to libs to the library list.
ifeq ($(HOST_OS), linux)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

no dummy value on darwin, only linux's python-config is broken?

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in #124

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)
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Not sure that this is needed as those variable should be immutable. Nevertheless, fool safe protection is not a bad idea in android build system.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I agree that we can remove this paragraph.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in #124

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This is #124. Did you mean #131 ?


$(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 $@ $^
Expand Down
38 changes: 4 additions & 34 deletions parameter/Android.mk
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand Down Expand Up @@ -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)
Expand All @@ -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)
20 changes: 11 additions & 9 deletions remote-processor/Socket.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -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);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess there is no MSG_DEFAULT or similar (could not find anything like that in man recv) ?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

flags is an int and from man recv:

The flags argument is formed by ORing one or more of the following values:

So, 0 is correct.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Agreed, but I wanted to know if there was a standard macro that represented this.
👍


switch (iAccessedSize) {
case 0:
Expand Down Expand Up @@ -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);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I guess you are solving #39 with this pull request.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

yes, as mentionned in the PR message.

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[seb] Wrong fix, you can still receive the signal. Maybe do a setsockopt ?

  • On linux keep the code as it was.
  • On darwin:
const int set = 1;
setsockopt(sd, SOL_SOCKET, SO_NOSIGPIPE, &set, sizeof(int));

Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Fixed in #124


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;
Expand Down
3 changes: 2 additions & 1 deletion support/android/build_pfw_settings.mk
Original file line number Diff line number Diff line change
Expand Up @@ -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
Expand Down
21 changes: 4 additions & 17 deletions xmlserializer/Android.mk
Original file line number Diff line number Diff line change
Expand Up @@ -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)
Expand All @@ -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)
Expand All @@ -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)