From e8fdcd2c341c8329850f2f2a75e37d2ad96e5107 Mon Sep 17 00:00:00 2001 From: Hwankyu Jhun Date: Thu, 20 Aug 2020 09:53:06 +0900 Subject: [PATCH 01/16] Add privilege level check for plugin parser App-defined loader feature is only for platform developers. Change-Id: Icbb87b3835bf3e4b866aeb9f8e66896256bc9e71 Signed-off-by: Hwankyu Jhun --- packaging/launchpad.spec | 1 + src/parser/CMakeLists.txt | 1 + src/parser/launchpad_parser_plugin.cc | 15 ++++++++++++--- 3 files changed, 14 insertions(+), 3 deletions(-) diff --git a/packaging/launchpad.spec b/packaging/launchpad.spec index 2994a02..83a9da1 100644 --- a/packaging/launchpad.spec +++ b/packaging/launchpad.spec @@ -31,6 +31,7 @@ BuildRequires: pkgconfig(dbus-1) BuildRequires: pkgconfig(iniparser) BuildRequires: pkgconfig(libxml-2.0) BuildRequires: pkgconfig(libsmack) +BuildRequires: pkgconfig(pkgmgr-installer) Requires(post): /sbin/ldconfig Requires(post): /usr/bin/systemctl diff --git a/src/parser/CMakeLists.txt b/src/parser/CMakeLists.txt index f98579f..29374bd 100644 --- a/src/parser/CMakeLists.txt +++ b/src/parser/CMakeLists.txt @@ -5,6 +5,7 @@ INCLUDE(FindPkgConfig) pkg_check_modules(PKGS REQUIRED dlog libxml-2.0 + pkgmgr-installer ) FOREACH(FLAGS ${PKGS_CFLAGS}) diff --git a/src/parser/launchpad_parser_plugin.cc b/src/parser/launchpad_parser_plugin.cc index 9abaeb2..b7734c0 100644 --- a/src/parser/launchpad_parser_plugin.cc +++ b/src/parser/launchpad_parser_plugin.cc @@ -14,12 +14,14 @@ * limitations under the License. */ -#include -#include - +#include +#include #include #include +#include +#include + #include "launchpad_parser_plugin.hh" #include "log_private.hh" @@ -85,6 +87,13 @@ bool LaunchpadParser::IsValidId(string loader_id, string pkgid) { } int LaunchpadParser::Install(xmlDocPtr doc, string pkgid) { + pkgmgr_privilege_level level; + pkgmgr_installer_info_get_privilege_level(&level); + if (level != PM_PRIVILEGE_PLATFORM) { + LOGE("Privilege level(%d) is not platform", static_cast(level)); + return -1; + } + xmlNode* root = xmlDocGetRootElement(doc); for (xmlNode* node = root->children; node; node = node->next) { if (!node->name) -- 2.7.4 From 60648c05194fabf46c690cb89544e41e0c2d9409 Mon Sep 17 00:00:00 2001 From: Hwankyu Jhun Date: Tue, 25 Aug 2020 07:51:02 +0900 Subject: [PATCH 02/16] Separate default loader In 64bit environment(Tizen 64bit IoT), default_arch64.loader.in will be installed to reduce memory usage. Change-Id: Ie1201593968541655736cbca4085818dfb982fd1 Signed-off-by: Hwankyu Jhun --- packaging/launchpad.spec | 4 ++- src/loader/CMakeLists.txt | 8 ++++-- .../loader/conf/default_arch32.loader.in | 0 src/loader/conf/default_arch64.loader.in | 32 ++++++++++++++++++++++ 4 files changed, 41 insertions(+), 3 deletions(-) rename packaging/default.loader.in => src/loader/conf/default_arch32.loader.in (100%) create mode 100644 src/loader/conf/default_arch64.loader.in diff --git a/packaging/launchpad.spec b/packaging/launchpad.spec index 83a9da1..3a1af93 100644 --- a/packaging/launchpad.spec +++ b/packaging/launchpad.spec @@ -50,7 +50,6 @@ Obsoletes: amd-mod-launchpad %define tizen_arch32 0 %endif - %if "%{?_prelink_enable}" == "y" %define tizen_feature_prelink 1 %else @@ -118,6 +117,8 @@ _TIZEN_FEATURE_LOADER_PRIORITY=ON %endif %if 0%{?tizen_arch32} _TIZEN_FEATURE_SET_PERSONALITY_32=ON +%else +_TIZEN_FEATURE_LOADER_ARCH64=ON %endif %if 0%{?tizen_feature_prelink} _TIZEN_FEATURE_PRELINK=ON @@ -130,6 +131,7 @@ MAJORVER=`echo %{version} | awk 'BEGIN {FS="."}{print $1}'` -D_TIZEN_FEATURE_LOADER_PRIORITY:BOOL=${_TIZEN_FEATURE_LOADER_PRIORITY} \ -D_TIZEN_FEATURE_SET_PERSONALITY_32:BOOL=${_TIZEN_FEATURE_SET_PERSONALITY_32} \ -D_TIZEN_FEATURE_PRELINK:BOOL=${_TIZEN_FEATURE_PRELINK} \ + -D_TIZEN_FEATURE_LOADER_ARCH64:BOOL=${_TIZEN_FEATURE_LOADER_ARCH64} \ . %__make %{?_smp_mflags} diff --git a/src/loader/CMakeLists.txt b/src/loader/CMakeLists.txt index 997f034..1dff6be 100644 --- a/src/loader/CMakeLists.txt +++ b/src/loader/CMakeLists.txt @@ -70,5 +70,9 @@ SET_TARGET_PROPERTIES(${LAUNCHPAD_LOADER} ) # remove rpath option that is automatically generated by cmake. INSTALL(TARGETS ${LAUNCHPAD_LOADER} DESTINATION bin) -CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/packaging/default.loader.in ${CMAKE_SOURCE_DIR}/packaging/default.loader @ONLY) -INSTALL(FILES ${CMAKE_SOURCE_DIR}/packaging/default.loader DESTINATION share/aul) +IF(_TIZEN_FEATURE_LOADER_ARCH64) +CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/conf/default_arch64.loader.in ${CMAKE_CURRENT_SOURCE_DIR}/conf/default.loader @ONLY) +ELSE(_TIZEN_FEATURE_LOADER_ARCH64) +CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/conf/default_arch32.loader.in ${CMAKE_CURRENT_SOURCE_DIR}/conf/default.loader @ONLY) +ENDIF(_TIZEN_FEATURE_LOADER_ARCH64) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/conf/default.loader DESTINATION share/aul) diff --git a/packaging/default.loader.in b/src/loader/conf/default_arch32.loader.in similarity index 100% rename from packaging/default.loader.in rename to src/loader/conf/default_arch32.loader.in diff --git a/src/loader/conf/default_arch64.loader.in b/src/loader/conf/default_arch64.loader.in new file mode 100644 index 0000000..c1fdc92 --- /dev/null +++ b/src/loader/conf/default_arch64.loader.in @@ -0,0 +1,32 @@ +[LOADER] +NAME hw-loader1 +EXE /usr/bin/launchpad-loader +APP_TYPE capp|c++app +HW_ACC ON +DETECTION_METHOD TIMEOUT|VISIBILITY +TIMEOUT 5000 +EXTRA loader_type hw-loader +EXTRA_ARRAY preload +EXTRA_ARRAY_VAL @LIB_INSTALL_DIR@/libappcore-efl.so.1 +EXTRA_ARRAY_VAL @LIB_INSTALL_DIR@/libappcore-common.so.1 +EXTRA_ARRAY_VAL @LIB_INSTALL_DIR@/libcapi-appfw-application.so.0 +EXTRA_ARRAY_VAL @LIB_INSTALL_DIR@/ecore_imf/modules/wayland/@EFL_MODULE_VERSION@/module.so +EXTRA_ARRAY_VAL @LIB_INSTALL_DIR@/ecore_evas/engines/extn/@EFL_MODULE_VERSION@/module.so +ALTERNATIVE_LOADER common-loader1 + +[LOADER] +NAME common-loader1 +EXE /usr/bin/launchpad-loader +APP_TYPE capp|c++app +DETECTION_METHOD TIMEOUT|VISIBILITY +TIMEOUT 5000 +EXTRA loader_type common-loader +EXTRA_ARRAY preload +EXTRA_ARRAY_VAL @LIB_INSTALL_DIR@/libappcore-efl.so.1 +EXTRA_ARRAY_VAL @LIB_INSTALL_DIR@/libappcore-common.so.1 +EXTRA_ARRAY_VAL @LIB_INSTALL_DIR@/libcapi-appfw-application.so.0 +EXTRA_ARRAY_VAL @LIB_INSTALL_DIR@/ecore_imf/modules/wayland/@EFL_MODULE_VERSION@/module.so +EXTRA_ARRAY_VAL @LIB_INSTALL_DIR@/ecore_evas/engines/extn/@EFL_MODULE_VERSION@/module.so + + + -- 2.7.4 From a466cba64fb7575ddcf4095ef23b404761a36a1b Mon Sep 17 00:00:00 2001 From: Hwankyu Jhun Date: Tue, 25 Aug 2020 09:15:16 +0900 Subject: [PATCH 03/16] Release version 0.15.20 Changes: - Adjust coding style - Add privilege level check for plugin parser - Separate default loader Change-Id: Iaf49ee02707a0aeb69b49908d15978fd7095194c Signed-off-by: Hwankyu Jhun --- packaging/launchpad.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/launchpad.spec b/packaging/launchpad.spec index 3a1af93..d400b32 100644 --- a/packaging/launchpad.spec +++ b/packaging/launchpad.spec @@ -1,6 +1,6 @@ Name: launchpad Summary: Launchpad for launching applications -Version: 0.15.19 +Version: 0.15.20 Release: 1 Group: Application Framework/Daemons License: Apache-2.0 -- 2.7.4 From bbed08022a243b4e82351bfb76777caf0a6480b5 Mon Sep 17 00:00:00 2001 From: Hwankyu Jhun Date: Mon, 21 Sep 2020 15:12:23 +0900 Subject: [PATCH 04/16] Fix directory hierarchy & cmake configuration files CMake configuration files are changed. Directory hierarchy is changed as below: +-----------------------------------------------------+ | launchpad/ | | |-- cmake/ | | |-- packaging/ | | |-- src/ | | |-- app-defined-loader/ | | |-- launchpad-loader/ | | |-- launchpad-parser/ | | |-- launchpad-process-pool/ | | |-- lib/ | | |-- common/ | | |-- launchpad/ | | |-- launchpad-hydra/ | +-----------------------------------------------------+ Change-Id: I1e8c0416c46a61bb749855309d141dd422fd01dd Signed-off-by: Hwankyu Jhun --- CMakeLists.txt | 60 ++++++++++++-- cmake/Modules/ApplyPkgConfig.cmake | 35 ++++++++ src/CMakeLists.txt | 14 +--- src/app-defined-loader/CMakeLists.txt | 94 +++++++++------------- src/hydra/CMakeLists.txt | 45 ----------- src/launchpad-loader/CMakeLists.txt | 65 +++++++++++++++ .../conf/default_arch32.loader.in | 0 .../conf/default_arch64.loader.in | 0 .../src/launchpad_loader.c | 0 src/launchpad-parser/CMakeLists.txt | 25 ++++++ src/{parser => launchpad-parser}/common.hh | 6 +- .../launchpad_parser_plugin.cc | 6 +- .../launchpad_parser_plugin.hh | 13 +-- .../launchpad_parser_plugin_pkgmgr_interface.cc | 6 +- .../launchpad_plugins.txt | 0 src/{parser => launchpad-parser}/loader_info.cc | 3 +- src/{parser => launchpad-parser}/loader_info.hh | 9 +-- src/{parser => launchpad-parser}/log_private.hh | 16 +--- src/launchpad-process-pool/CMakeLists.txt | 54 +++++++++++++ .../conf/launchpad.conf.in | 0 .../inc/debugger_info.h | 0 .../inc/launcher_info.h | 0 .../inc/launchpad_config.h | 0 .../inc/launchpad_dbus.h | 0 .../inc/launchpad_debug.h | 0 .../inc/launchpad_inotify.h | 0 .../inc/launchpad_io_channel.h | 0 .../inc/launchpad_log.h | 0 .../inc/launchpad_logger.h | 0 .../inc/launchpad_memory_monitor.h | 0 .../inc/launchpad_signal.h | 0 .../inc/launchpad_worker.h | 0 .../inc/loader_info.h | 0 .../src/debugger_info.c | 0 .../src/launcher_info.c | 0 .../src/launchpad.c | 0 .../src/launchpad_config.c | 0 .../src/launchpad_dbus.c | 0 .../src/launchpad_debug.c | 0 .../src/launchpad_inotify.c | 0 .../src/launchpad_io_channel.c | 0 .../src/launchpad_log.c | 0 .../src/launchpad_logger.c | 0 .../src/launchpad_memory_monitor.c | 0 .../src/launchpad_signal.c | 0 .../src/launchpad_worker.c | 0 .../src/loader_info.c | 0 src/launchpad/CMakeLists.txt | 72 ----------------- src/lib/CMakeLists.txt | 55 +------------ src/{ => lib}/common/inc/key.h | 0 src/{ => lib}/common/inc/launchpad_common.h | 0 src/{ => lib}/common/inc/launchpad_plugin.h | 0 src/{ => lib}/common/inc/launchpad_proc.h | 0 src/{ => lib}/common/inc/launchpad_socket.h | 0 src/{ => lib}/common/inc/launchpad_types.h | 0 src/{ => lib}/common/inc/log_private.h | 0 src/{ => lib}/common/inc/perf.h | 0 src/{ => lib}/common/inc/preexec.h | 0 src/{ => lib}/common/src/launchpad_common.c | 0 src/{ => lib}/common/src/launchpad_plugin.c | 0 src/{ => lib}/common/src/launchpad_proc.c | 0 src/{ => lib}/common/src/launchpad_socket.c | 0 src/lib/launchpad-hydra/CMakeLists.txt | 33 ++++++++ .../launchpad-hydra}/inc/launchpad_hydra.h | 0 .../launchpad-hydra}/inc/launchpad_sigchld.h | 0 .../pkgconfig/liblaunchpad-hydra.pc.in | 0 .../launchpad-hydra}/src/launchpad_hydra.c | 0 .../launchpad-hydra}/src/launchpad_sigchld.c | 0 src/lib/launchpad/CMakeLists.txt | 43 ++++++++++ src/lib/{ => launchpad}/inc/launchpad.h | 0 src/lib/{ => launchpad}/pkgconfig/launchpad.pc.in | 0 src/lib/{ => launchpad}/src/launchpad_lib.c | 0 src/loader/CMakeLists.txt | 78 ------------------ src/parser/CMakeLists.txt | 40 --------- 74 files changed, 376 insertions(+), 396 deletions(-) create mode 100644 cmake/Modules/ApplyPkgConfig.cmake delete mode 100644 src/hydra/CMakeLists.txt create mode 100644 src/launchpad-loader/CMakeLists.txt rename src/{loader => launchpad-loader}/conf/default_arch32.loader.in (100%) rename src/{loader => launchpad-loader}/conf/default_arch64.loader.in (100%) rename src/{loader => launchpad-loader}/src/launchpad_loader.c (100%) create mode 100644 src/launchpad-parser/CMakeLists.txt rename src/{parser => launchpad-parser}/common.hh (84%) rename src/{parser => launchpad-parser}/launchpad_parser_plugin.cc (97%) rename src/{parser => launchpad-parser}/launchpad_parser_plugin.hh (84%) rename src/{parser => launchpad-parser}/launchpad_parser_plugin_pkgmgr_interface.cc (93%) rename src/{parser => launchpad-parser}/launchpad_plugins.txt (100%) rename src/{parser => launchpad-parser}/loader_info.cc (96%) rename src/{parser => launchpad-parser}/loader_info.hh (87%) rename src/{parser => launchpad-parser}/log_private.hh (79%) create mode 100644 src/launchpad-process-pool/CMakeLists.txt rename src/{launchpad => launchpad-process-pool}/conf/launchpad.conf.in (100%) rename src/{launchpad => launchpad-process-pool}/inc/debugger_info.h (100%) rename src/{launchpad => launchpad-process-pool}/inc/launcher_info.h (100%) rename src/{launchpad => launchpad-process-pool}/inc/launchpad_config.h (100%) rename src/{launchpad => launchpad-process-pool}/inc/launchpad_dbus.h (100%) rename src/{launchpad => launchpad-process-pool}/inc/launchpad_debug.h (100%) rename src/{launchpad => launchpad-process-pool}/inc/launchpad_inotify.h (100%) rename src/{launchpad => launchpad-process-pool}/inc/launchpad_io_channel.h (100%) rename src/{launchpad => launchpad-process-pool}/inc/launchpad_log.h (100%) rename src/{launchpad => launchpad-process-pool}/inc/launchpad_logger.h (100%) rename src/{launchpad => launchpad-process-pool}/inc/launchpad_memory_monitor.h (100%) rename src/{launchpad => launchpad-process-pool}/inc/launchpad_signal.h (100%) rename src/{launchpad => launchpad-process-pool}/inc/launchpad_worker.h (100%) rename src/{launchpad => launchpad-process-pool}/inc/loader_info.h (100%) rename src/{launchpad => launchpad-process-pool}/src/debugger_info.c (100%) rename src/{launchpad => launchpad-process-pool}/src/launcher_info.c (100%) rename src/{launchpad => launchpad-process-pool}/src/launchpad.c (100%) rename src/{launchpad => launchpad-process-pool}/src/launchpad_config.c (100%) rename src/{launchpad => launchpad-process-pool}/src/launchpad_dbus.c (100%) rename src/{launchpad => launchpad-process-pool}/src/launchpad_debug.c (100%) rename src/{launchpad => launchpad-process-pool}/src/launchpad_inotify.c (100%) rename src/{launchpad => launchpad-process-pool}/src/launchpad_io_channel.c (100%) rename src/{launchpad => launchpad-process-pool}/src/launchpad_log.c (100%) rename src/{launchpad => launchpad-process-pool}/src/launchpad_logger.c (100%) rename src/{launchpad => launchpad-process-pool}/src/launchpad_memory_monitor.c (100%) rename src/{launchpad => launchpad-process-pool}/src/launchpad_signal.c (100%) rename src/{launchpad => launchpad-process-pool}/src/launchpad_worker.c (100%) rename src/{launchpad => launchpad-process-pool}/src/loader_info.c (100%) delete mode 100644 src/launchpad/CMakeLists.txt rename src/{ => lib}/common/inc/key.h (100%) rename src/{ => lib}/common/inc/launchpad_common.h (100%) rename src/{ => lib}/common/inc/launchpad_plugin.h (100%) rename src/{ => lib}/common/inc/launchpad_proc.h (100%) rename src/{ => lib}/common/inc/launchpad_socket.h (100%) rename src/{ => lib}/common/inc/launchpad_types.h (100%) rename src/{ => lib}/common/inc/log_private.h (100%) rename src/{ => lib}/common/inc/perf.h (100%) rename src/{ => lib}/common/inc/preexec.h (100%) rename src/{ => lib}/common/src/launchpad_common.c (100%) rename src/{ => lib}/common/src/launchpad_plugin.c (100%) rename src/{ => lib}/common/src/launchpad_proc.c (100%) rename src/{ => lib}/common/src/launchpad_socket.c (100%) create mode 100644 src/lib/launchpad-hydra/CMakeLists.txt rename src/{hydra => lib/launchpad-hydra}/inc/launchpad_hydra.h (100%) rename src/{hydra => lib/launchpad-hydra}/inc/launchpad_sigchld.h (100%) rename src/{hydra => lib/launchpad-hydra}/pkgconfig/liblaunchpad-hydra.pc.in (100%) rename src/{hydra => lib/launchpad-hydra}/src/launchpad_hydra.c (100%) rename src/{hydra => lib/launchpad-hydra}/src/launchpad_sigchld.c (100%) create mode 100644 src/lib/launchpad/CMakeLists.txt rename src/lib/{ => launchpad}/inc/launchpad.h (100%) rename src/lib/{ => launchpad}/pkgconfig/launchpad.pc.in (100%) rename src/lib/{ => launchpad}/src/launchpad_lib.c (100%) delete mode 100644 src/loader/CMakeLists.txt delete mode 100644 src/parser/CMakeLists.txt diff --git a/CMakeLists.txt b/CMakeLists.txt index 7fbbd02..5a8e0f5 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -1,7 +1,6 @@ CMAKE_MINIMUM_REQUIRED(VERSION 2.8) -PROJECT(launchpad C CXX) +PROJECT(launchpad) -ADD_DEFINITIONS("-DSHARE_PREFIX=\"/usr/share/aul\"") IF(_TIZEN_FEATURE_PRIORITY_CHANGE) ADD_DEFINITIONS("-DTIZEN_FEATURE_PRIORITY_CHANGE") ENDIF(_TIZEN_FEATURE_PRIORITY_CHANGE) @@ -17,9 +16,58 @@ ADD_DEFINITIONS("-DLAUNCHPAD_LOG") ADD_DEFINITIONS("-DPRELOAD_ACTIVATE") ADD_DEFINITIONS("-DPREEXEC_ACTIVATE") -EXEC_PROGRAM(pkg-config - ARGS --variable=module_arch ecore - OUTPUT_VARIABLE EFL_MODULE_VERSION -) +## Compile flags +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall") +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Werror") +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wl,-zdefs") +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fvisibility=hidden") +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -fdata-sections") +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -ffunction-sections") +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wl,--gc-sections") +SET(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -D_FILE_OFFSET_BITS=64") +SET(CMAKE_C_FLAGS_DEBUG "-O0 -g") +SET(CMAKE_C_FLAGS_RELEASE "-O2") + +SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_C_FLAGS} -std=c++14") +SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -g") +SET(CMAKE_CXX_FLAGS_RELEASE "-O2") + +## Linker flags +SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed") + +## Targets +SET(TARGET_APP_DEFINED_LOADER "app-defined-loader") +SET(TARGET_LAUNCHPAD "launchpad") +SET(TARGET_LAUNCHPAD_HYDRA "launchpad-hydra") +SET(TARGET_LAUNCHPAD_LOADER "launchpad-loader") +SET(TARGET_LAUNCHPAD_PARSER "launchpad-parser") +SET(TARGET_LAUNCHPAD_PROCESS_POOL "launchpad-process-pool") + +SET(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} + "${CMAKE_CURRENT_SOURCE_DIR}/cmake/Modules/") + +INCLUDE(FindPkgConfig) +INCLUDE(ApplyPkgConfig) + +PKG_CHECK_MODULES(AUL_DEPS REQUIRED aul) +PKG_CHECK_MODULES(BUNDLE_DEPS REQUIRED bundle) +PKG_CHECK_MODULES(BUXTON2_DEPS REQUIRED buxton2) +PKG_CHECK_MODULES(DBUS_DEPS REQUIRED dbus-1) +PKG_CHECK_MODULES(DLOG_DEPS REQUIRED dlog) +PKG_CHECK_MODULES(ECORE_DEPS REQUIRED ecore) +PKG_CHECK_MODULES(ECORE_CORE_DEPS REQUIRED ecore-core) +PKG_CHECK_MODULES(ELEMENTARY_DEPS REQUIRED elementary) +PKG_CHECK_MODULES(GIO_DEPS REQUIRED gio-2.0) +PKG_CHECK_MODULES(INIPARSER_DEPS REQUIRED iniparser) +PKG_CHECK_MODULES(LIBCAP_DEPS REQUIRED libcap) +PKG_CHECK_MODULES(LIBSMACK_DEPS REQUIRED libsmack) +PKG_CHECK_MODULES(LIBSYSTEMD_DEPS REQUIRED libsystemd) +PKG_CHECK_MODULES(LIBTZPLATFORM_CONFIG_DEPS REQUIRED libtzplatform-config) +PKG_CHECK_MODULES(LIBXML_DEPS REQUIRED libxml-2.0) +PKG_CHECK_MODULES(PKGMGR_INSTALLER_DEPS REQUIRED pkgmgr-installer) +PKG_CHECK_MODULES(SECURITY_MANAGER_DEPS REQUIRED security-manager) +PKG_CHECK_MODULES(TANCHOR_DEPS REQUIRED tanchor) +PKG_CHECK_MODULES(TTRACE_DEPS REQUIRED ttrace) +PKG_CHECK_MODULES(VCONF_DEPS REQUIRED vconf) ADD_SUBDIRECTORY(src) diff --git a/cmake/Modules/ApplyPkgConfig.cmake b/cmake/Modules/ApplyPkgConfig.cmake new file mode 100644 index 0000000..9b84be3 --- /dev/null +++ b/cmake/Modules/ApplyPkgConfig.cmake @@ -0,0 +1,35 @@ +# Copyright (c) 2020 Samsung Electronics Co., Ltd All Rights Reserved +# Use of this source code is governed by a BSD-style license that can be +# found in the LICENSE file. + +# +# This function applies external (out of source tree) dependencies +# to given target. Arguments are: +# TARGET - valid cmake target +# PRIVACY - dependency can be inherited by dependent targets or not: +# PUBLIC - this should be used by default, cause compile/link flags passing +# PRIVATE - do not passes any settings to dependent targets, +# may be usefull for static libraries from the inside of the project +# Argument ARGV2 and following are supposed to be names of checked pkg config +# packages. This function will use variables created by check_pkg_modules(). +# - ${DEP_NAME}_LIBRARIES +# - ${DEP_NAME}_INCLUDE_DIRS +# - ${DEP_NAME}_CFLAGS +# +FUNCTION(APPLY_PKG_CONFIG TARGET PRIVACY) + MATH(EXPR DEST_INDEX "${ARGC}-1") + FOREACH(I RANGE 2 ${DEST_INDEX}) + IF(NOT ${ARGV${I}}_FOUND) + MESSAGE(FATAL_ERROR "Not found dependency - ${ARGV${I}}_FOUND") + ENDIF(NOT ${ARGV${I}}_FOUND) + TARGET_LINK_LIBRARIES(${TARGET} ${PRIVACY} "${${ARGV${I}}_LIBRARIES}") + TARGET_INCLUDE_DIRECTORIES(${TARGET} ${PRIVACY} SYSTEM "${${ARGV${I}}_INCLUDE_DIRS}") + STRING(REPLACE ";" " " CFLAGS_STR "${${ARGV${I}}_CFLAGS}") + SET(CFLAGS_LIST ${CFLAGS_STR}) + SEPARATE_ARGUMENTS(CFLAGS_LIST) + FOREACH(OPTION ${CFLAGS_LIST}) + TARGET_COMPILE_OPTIONS(${TARGET} ${PRIVACY} ${OPTION}) + ENDFOREACH(OPTION) + SET_TARGET_PROPERTIES(${TARGET} PROPERTIES SKIP_BUILD_RPATH true) + ENDFOREACH(I RANGE 2 ${DEST_INDEX}) +ENDFUNCTION(APPLY_PKG_CONFIG TARGET PRIVACY) diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index de3c1c6..0bfe952 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -1,11 +1,5 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 2.8) - -ADD_SUBDIRECTORY(launchpad) -ADD_SUBDIRECTORY(lib) -ADD_SUBDIRECTORY(loader) ADD_SUBDIRECTORY(app-defined-loader) -ADD_SUBDIRECTORY(hydra) -ADD_SUBDIRECTORY(parser) - -ADD_DEPENDENCIES(launchpad-loader liblaunchpad) -ADD_DEPENDENCIES(app-defined-loader liblaunchpad) +ADD_SUBDIRECTORY(launchpad-loader) +ADD_SUBDIRECTORY(launchpad-parser) +ADD_SUBDIRECTORY(launchpad-process-pool) +ADD_SUBDIRECTORY(lib) diff --git a/src/app-defined-loader/CMakeLists.txt b/src/app-defined-loader/CMakeLists.txt index 3410782..a7fa8bb 100644 --- a/src/app-defined-loader/CMakeLists.txt +++ b/src/app-defined-loader/CMakeLists.txt @@ -1,74 +1,52 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 2.8) -PROJECT(app-defined-loader) -SET(APP_DEFINED_LOADER "app-defined-loader") +AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/src APP_DEFINED_LOADER_SRCS) +AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/../lib/common/src + LIB_COMMON_SRCS) -INCLUDE(FindPkgConfig) -PKG_CHECK_MODULES(APP_DEFINED_LOADER_PKGS REQUIRED - aul - bundle - dbus-1 - dlog - ecore - ecore-core - gio-2.0 - iniparser - libsystemd - ) - -FOREACH(flag ${APP_DEFINED_LOADER_PKGS_CFLAGS}) - SET(EXTRA_CFLAGS_loader "${EXTRA_CFLAGS_loader} ${flag}") -ENDFOREACH(flag) - -SET(EXTRA_CFLAGS_common "${EXTRA_CFLAGS_common} -Wl,-zdefs" ) -SET(EXTRA_CFLAGS_common "${EXTRA_CFLAGS_common} -fvisibility=hidden") -SET(EXTRA_CFLAGS_common "${EXTRA_CFLAGS_common} -fdata-sections -ffunction-sections -Wl,--gc-sections") -SET(EXTRA_CFLAGS_common "${EXTRA_CFLAGS_common} -D_FILE_OFFSET_BITS=64") -SET(EXTRA_CFLAGS_common "${EXTRA_CFLAGS_common} -Werror") +ADD_EXECUTABLE(${TARGET_APP_DEFINED_LOADER} + ${APP_DEFINED_LOADER_SRCS} + ${LIB_COMMON_SRCS}) IF(_TIZEN_FEATURE_PRELINK) -MESSAGE(STATUS "[__PRELINK__] Enable") -SET(EXTRA_CFLAGS_loader "${EXTRA_CFLAGS_loader} ${EXTRA_CFLAGS_common}") +MESSAGE(STATUS "prelink enable") ELSE(_TIZEN_FEATURE_PRELINK) -MESSAGE(STATUS "[__PRELINK__] Disable") -SET(EXTRA_CFLAGS_loader "${EXTRA_CFLAGS_loader} ${EXTRA_CFLAGS_common} -fPIE") +MESSAGE(STATUS "prelink enable") +SET_TARGET_PROPERTIES(${TARGET_APP_DEFINED_LOADER} PROPERTIES + COMPILE_FLAGS "-fPIE") +SET_TARGET_PROPERTIES(${TARGET_APP_DEFINED_LOADER} PROPERTIES + LINK_FLAGS "-pie") ENDIF(_TIZEN_FEATURE_PRELINK) -SET(CMAKE_C_FLAGS_DEBUG "-O0 -g") -SET(CMAKE_C_FLAGS_RELEASE "-O2") -SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed") +SET_TARGET_PROPERTIES(${TARGET_APP_DEFINED_LOADER} PROPERTIES + SKIP_BUILD_RPATH TRUE) -SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS}") -SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -g") -SET(CMAKE_CXX_FLAGS_RELEASE "-O2") +TARGET_INCLUDE_DIRECTORIES(${TARGET_APP_DEFINED_LOADER} PUBLIC + ${CMAKE_CURRENT_SOURCE_DIR}/../lib/common/inc) +TARGET_INCLUDE_DIRECTORIES(${TARGET_APP_DEFINED_LOADER} PUBLIC + ${CMAKE_CURRENT_SOURCE_DIR}/../lib/launchpad/inc) -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/common/inc) -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/lib/inc) +APPLY_PKG_CONFIG(${TARGET_APP_DEFINED_LOADER} PUBLIC + AUL_DEPS + BUNDLE_DEPS + DBUS_DEPS + DLOG_DEPS + ECORE_DEPS + ECORE_CORE_DEPS + GIO_DEPS + INIPARSER_DEPS + LIBSYSTEMD_DEPS +) -AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/src SOURCES) -AUX_SOURCE_DIRECTORY(${CMAKE_SOURCE_DIR}/src/common/src COMMON_SOURCES) - -SET(APP_DEFINED_LOADER_SOURCE_FILES - ${COMMON_SOURCES} - ${SOURCES}) -ADD_EXECUTABLE(${APP_DEFINED_LOADER} ${APP_DEFINED_LOADER_SOURCE_FILES}) +TARGET_LINK_LIBRARIES(${TARGET_APP_DEFINED_LOADER} PRIVATE ${TARGET_LAUNCHPAD}) # To support 2.x applications which use their own shared libraries. # Since we cannot set LD_LIBRARY_PATH directly by security issue, we make the # dynamic linker looks in the CWD forcely. -TARGET_LINK_LIBRARIES(${APP_DEFINED_LOADER} "-ldl -Wl,-rpath,: -Wl,--disable-new-dtags") - -IF(_TIZEN_FEATURE_PRELINK) -TARGET_LINK_LIBRARIES(${APP_DEFINED_LOADER} ${APP_DEFINED_LOADER_PKGS_LDFLAGS} launchpad) -ELSE(_TIZEN_FEATURE_PRELINK) -TARGET_LINK_LIBRARIES(${APP_DEFINED_LOADER} ${APP_DEFINED_LOADER_PKGS_LDFLAGS} launchpad "-pie") -ENDIF(_TIZEN_FEATURE_PRELINK) +TARGET_LINK_LIBRARIES(${TARGET_APP_DEFINED_LOADER} PUBLIC + "-ldl -Wl,-rpath,: -Wl,--disable-new-dtags") -SET_TARGET_PROPERTIES(${APP_DEFINED_LOADER} PROPERTIES COMPILE_FLAGS ${EXTRA_CFLAGS_loader}) -SET_TARGET_PROPERTIES(${APP_DEFINED_LOADER} - PROPERTIES SKIP_BUILD_RPATH TRUE - ) # remove rpath option that is automatically generated by cmake. -INSTALL(TARGETS ${APP_DEFINED_LOADER} DESTINATION bin) +INSTALL(TARGETS ${TARGET_APP_DEFINED_LOADER} DESTINATION bin) CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/conf/app-defined-loader.conf.in - ${CMAKE_CURRENT_SOURCE_DIR}/conf/app-defined-loader.conf @ONLY) -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/conf/app-defined-loader.conf DESTINATION share/aul) + ${CMAKE_CURRENT_SOURCE_DIR}/conf/app-defined-loader.conf @ONLY) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/conf/app-defined-loader.conf + DESTINATION share/aul) diff --git a/src/hydra/CMakeLists.txt b/src/hydra/CMakeLists.txt deleted file mode 100644 index 6aeab28..0000000 --- a/src/hydra/CMakeLists.txt +++ /dev/null @@ -1,45 +0,0 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 2.8) -PROJECT(launchpad-hydra C) -SET(LAUNCHPAD_HYDRA "launchpad-hydra") - -INCLUDE(FindPkgConfig) -PKG_CHECK_MODULES(LAUNCHPAD_HYDRA_PKGS REQUIRED - dlog - libsystemd) - -FOREACH(flag ${LAUNCHPAD_HYDRA_PKGS_CFLAGS}) - SET(EXTRA_CFLAGS_hydra "${EXTRA_CFLAGS_hydra} ${flag}") -ENDFOREACH(flag) - -SET(EXTRA_CFLAGS_common "${EXTRA_CFLAGS_common} -Wl,-zdefs" ) -SET(EXTRA_CFLAGS_common "${EXTRA_CFLAGS_common} -fvisibility=hidden") -SET(EXTRA_CFLAGS_common "${EXTRA_CFLAGS_common} -fdata-sections -ffunction-sections -Wl,--gc-sections") -SET(EXTRA_CFLAGS_common "${EXTRA_CFLAGS_common} -D_FILE_OFFSET_BITS=64") -SET(EXTRA_CFLAGS_common "${EXTRA_CFLAGS_common} -Werror") - -SET(EXTRA_CFLAGS_hydra "${EXTRA_CFLAGS_hydra} ${EXTRA_CFLAGS_common}") - -SET(CMAKE_C_FLAGS_DEBUG "-O0 -g") -SET(CMAKE_C_FLAGS_RELEASE "-O2") -SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed") - -INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/inc) -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/common/inc) - -AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/src SOURCES) -SET(COMMON_SOURCES - ${CMAKE_SOURCE_DIR}/src/common/src/launchpad_socket.c) - -ADD_LIBRARY(${LAUNCHPAD_HYDRA} SHARED - ${SOURCES} - ${COMMON_SOURCES}) -SET_TARGET_PROPERTIES(${LAUNCHPAD_HYDRA} PROPERTIES SOVERSION ${MAJORVER}) -SET_TARGET_PROPERTIES(${LAUNCHPAD_HYDRA} PROPERTIES VERSION ${VERSION}) -SET_TARGET_PROPERTIES(${LAUNCHPAD_HYDRA} PROPERTIES COMPILE_FLAGS ${EXTRA_CFLAGS_hydra}) -TARGET_LINK_LIBRARIES(${LAUNCHPAD_HYDRA} ${LAUNCHPAD_HYDRA_PKGS_LDFLAGS} "-ldl") - -INSTALL(TARGETS ${LAUNCHPAD_HYDRA} DESTINATION ${LIB_INSTALL_DIR} COMPONENT RuntimeLibraries) -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/inc/launchpad_hydra.h DESTINATION include/launchpad) - -CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/pkgconfig/liblaunchpad-hydra.pc.in ${CMAKE_CURRENT_SOURCE_DIR}/pkgconfig/liblaunchpad-hydra.pc @ONLY) -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/pkgconfig/liblaunchpad-hydra.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig) diff --git a/src/launchpad-loader/CMakeLists.txt b/src/launchpad-loader/CMakeLists.txt new file mode 100644 index 0000000..091bba7 --- /dev/null +++ b/src/launchpad-loader/CMakeLists.txt @@ -0,0 +1,65 @@ +AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/src LAUNCHPAD_LOADER_SRCS) +AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/../lib/common/src + LIB_COMMON_SRCS) + +ADD_EXECUTABLE(${TARGET_LAUNCHPAD_LOADER} + ${LAUNCHPAD_LOADER_SRCS} + ${LIB_COMMON_SRCS}) +SET_TARGET_PROPERTIES(${TARGET_LAUNCHPAD_LOADER} PROPERTIES + SKIP_BUILD_RPATH TRUE) + +TARGET_INCLUDE_DIRECTORIES(${TARGET_LAUNCHPAD_LOADER} PUBLIC + ${CMAKE_CURRENT_SOURCE_DIR}/../lib/launchpad/inc) +TARGET_INCLUDE_DIRECTORIES(${TARGET_LAUNCHPAD_LOADER} PUBLIC + ${CMAKE_CURRENT_SOURCE_DIR}/../lib/common/inc) + +IF(_TIZEN_FEATURE_PRELINK) +MESSAGE(STATUS "prelink enable") +ELSE(_TIZEN_FEATURE_PRELINK) +MESSAGE(STATUS "prelink disable") +SET_TARGET_PROPERTIES(${TARGET_LAUNCHPAD_LOADER} PROPERTIES + COMPILE_FLAGS "-fPIE") +TARGET_LINK_LIBRARIES(${TARGET_LAUNCHPAD_LOADER} PUBLIC "-pie") +ENDIF(_TIZEN_FEATURE_PRELINK) + +APPLY_PKG_CONFIG(${TARGET_LAUNCHPAD_LOADER} PUBLIC + DLOG_DEPS + ECORE_DEPS + ELEMENTARY_DEPS + SECURITY_MANAGER_DEPS + LIBTZPLATFORM_CONFIG_DEPS + TANCHOR_DEPS + AUL_DEPS + VCONF_DEPS + BUXTON2_DEPS + LIBSYSTEMD_DEPS + GIO_DEPS + DBUS_DEPS + LIBCAP_DEPS +) + +TARGET_LINK_LIBRARIES(${TARGET_LAUNCHPAD_LOADER} PRIVATE ${TARGET_LAUNCHPAD}) + +# To support 2.x applications which use their own shared libraries. +# Since we cannot set LD_LIBRARY_PATH directly by security issue, we make the +# dynamic linker looks in the CWD forcely. +TARGET_LINK_LIBRARIES(${TARGET_LAUNCHPAD_LOADER} PUBLIC + "-ldl -Wl,-rpath,: -Wl,--disable-new-dtags") + +INSTALL(TARGETS ${TARGET_LAUNCHPAD_LOADER} DESTINATION bin) + +EXEC_PROGRAM(pkg-config + ARGS --variable=module_arch ecore + OUTPUT_VARIABLE EFL_MODULE_VERSION +) + +IF(_TIZEN_FEATURE_LOADER_ARCH64) +CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/conf/default_arch64.loader.in + ${CMAKE_CURRENT_SOURCE_DIR}/conf/default.loader @ONLY) +ELSE(_TIZEN_FEATURE_LOADER_ARCH64) +CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/conf/default_arch32.loader.in + ${CMAKE_CURRENT_SOURCE_DIR}/conf/default.loader @ONLY) +ENDIF(_TIZEN_FEATURE_LOADER_ARCH64) + +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/conf/default.loader DESTINATION + share/aul) diff --git a/src/loader/conf/default_arch32.loader.in b/src/launchpad-loader/conf/default_arch32.loader.in similarity index 100% rename from src/loader/conf/default_arch32.loader.in rename to src/launchpad-loader/conf/default_arch32.loader.in diff --git a/src/loader/conf/default_arch64.loader.in b/src/launchpad-loader/conf/default_arch64.loader.in similarity index 100% rename from src/loader/conf/default_arch64.loader.in rename to src/launchpad-loader/conf/default_arch64.loader.in diff --git a/src/loader/src/launchpad_loader.c b/src/launchpad-loader/src/launchpad_loader.c similarity index 100% rename from src/loader/src/launchpad_loader.c rename to src/launchpad-loader/src/launchpad_loader.c diff --git a/src/launchpad-parser/CMakeLists.txt b/src/launchpad-parser/CMakeLists.txt new file mode 100644 index 0000000..e4d65da --- /dev/null +++ b/src/launchpad-parser/CMakeLists.txt @@ -0,0 +1,25 @@ +SET(PLUGINS_LIST_FILE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/launchpad_plugins.txt) +SET(PLUGINS_LIST_INSTALL_PATH ${CMAKE_INSTALL_PREFIX}/share/parser-plugins) +ADD_DEFINITIONS("-DPLUGINS_LIST_INSTALL_PATH=\"${PLUGINS_LIST_INSTALL_PATH}\"") + +AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/ LAUNCHPAD_PARSER_SRCS) + +ADD_LIBRARY(${TARGET_LAUNCHPAD_PARSER} SHARED + ${LAUNCHPAD_PARSER_SRCS}) + +SET_TARGET_PROPERTIES(${TARGET_LAUNCHPAD_PARSER} PROPERTIES + COMPILE_FLAGS "-fpic") + +TARGET_INCLUDE_DIRECTORIES(${TARGET_LAUNCHPAD_PARSER} PUBLIC + ${CMAKE_CURRENT_SOURCE_DIR}/../) + +APPLY_PKG_CONFIG(${TARGET_LAUNCHPAD_PARSER} PUBLIC + DLOG_DEPS + LIBXML_DEPS + PKGMGR_INSTALLER_DEPS +) + +INSTALL(FILES ${PLUGINS_LIST_FILE_PATH} DESTINATION + ${PLUGINS_LIST_INSTALL_PATH}/) +INSTALL(TARGETS ${TARGET_LAUNCHPAD_PARSER} DESTINATION + ${SYSCONF_INSTALL_DIR}/package-manager/parserlib) diff --git a/src/parser/common.hh b/src/launchpad-parser/common.hh similarity index 84% rename from src/parser/common.hh rename to src/launchpad-parser/common.hh index 910caa5..f86dc87 100644 --- a/src/parser/common.hh +++ b/src/launchpad-parser/common.hh @@ -14,12 +14,12 @@ * limitations under the License. */ -#ifndef LAUNCHPAD_PARSER_PLUGIN_COMMON_HH_ -#define LAUNCHPAD_PARSER_PLUGIN_COMMON_HH_ +#ifndef LAUNCHPAD_PARSER_COMMON_HH_ +#define LAUNCHPAD_PARSER_COMMON_HH_ #ifdef EXPORT_API #undef EXPORT_API #endif #define EXPORT_API __attribute__((visibility("default"))) -#endif // LAUNCHPAD_PARSER_PLUGIN_COMMON_HH_ +#endif // LAUNCHPAD_PARSER_COMMON_HH_ diff --git a/src/parser/launchpad_parser_plugin.cc b/src/launchpad-parser/launchpad_parser_plugin.cc similarity index 97% rename from src/parser/launchpad_parser_plugin.cc rename to src/launchpad-parser/launchpad_parser_plugin.cc index b7734c0..28f2b73 100644 --- a/src/parser/launchpad_parser_plugin.cc +++ b/src/launchpad-parser/launchpad_parser_plugin.cc @@ -14,16 +14,16 @@ * limitations under the License. */ -#include #include #include +#include #include #include #include -#include "launchpad_parser_plugin.hh" -#include "log_private.hh" +#include "launchpad-parser/launchpad_parser_plugin.hh" +#include "launchpad-parser/log_private.hh" #define LOADERS_DIRECTORY_PATH "/opt/share/loaders/" diff --git a/src/parser/launchpad_parser_plugin.hh b/src/launchpad-parser/launchpad_parser_plugin.hh similarity index 84% rename from src/parser/launchpad_parser_plugin.hh rename to src/launchpad-parser/launchpad_parser_plugin.hh index 35a2e8f..483fff0 100644 --- a/src/parser/launchpad_parser_plugin.hh +++ b/src/launchpad-parser/launchpad_parser_plugin.hh @@ -14,15 +14,16 @@ * limitations under the License. */ -#ifndef LAUNCHPAD_PARSER_PLUGIN_LAUNCHPAD_PARSER_PLUGIN_HH_ -#define LAUNCHPAD_PARSER_PLUGIN_LAUNCHPAD_PARSER_PLUGIN_HH_ +#ifndef LAUNCHPAD_PARSER_LAUNCHPAD_PARSER_PLUGIN_HH_ +#define LAUNCHPAD_PARSER_LAUNCHPAD_PARSER_PLUGIN_HH_ + +#include -#include #include #include -#include +#include -#include "loader_info.hh" +#include "launchpad-parser/loader_info.hh" namespace launchpad_parser_plugin { @@ -41,4 +42,4 @@ class LaunchpadParser { } // namespace launchpad_parser_plugin -#endif // LAUNCHPAD_PARSER_PLUGIN_LAUNCHPAD_PARSER_PLUGIN_HH_ +#endif // LAUNCHPAD_PARSER_LAUNCHPAD_PARSER_PLUGIN_HH_ diff --git a/src/parser/launchpad_parser_plugin_pkgmgr_interface.cc b/src/launchpad-parser/launchpad_parser_plugin_pkgmgr_interface.cc similarity index 93% rename from src/parser/launchpad_parser_plugin_pkgmgr_interface.cc rename to src/launchpad-parser/launchpad_parser_plugin_pkgmgr_interface.cc index c986af7..cfc4416 100644 --- a/src/parser/launchpad_parser_plugin_pkgmgr_interface.cc +++ b/src/launchpad-parser/launchpad_parser_plugin_pkgmgr_interface.cc @@ -16,9 +16,9 @@ #include -#include "launchpad_parser_plugin.hh" -#include "log_private.hh" -#include "common.hh" +#include "launchpad-parser/common.hh" +#include "launchpad-parser/launchpad_parser_plugin.hh" +#include "launchpad-parser/log_private.hh" using namespace launchpad_parser_plugin; diff --git a/src/parser/launchpad_plugins.txt b/src/launchpad-parser/launchpad_plugins.txt similarity index 100% rename from src/parser/launchpad_plugins.txt rename to src/launchpad-parser/launchpad_plugins.txt diff --git a/src/parser/loader_info.cc b/src/launchpad-parser/loader_info.cc similarity index 96% rename from src/parser/loader_info.cc rename to src/launchpad-parser/loader_info.cc index f2ffdec..2f8ffcc 100644 --- a/src/parser/loader_info.cc +++ b/src/launchpad-parser/loader_info.cc @@ -13,7 +13,8 @@ * See the License for the specific language governing permissions and * limitations under the License. */ -#include "loader_info.hh" + +#include "launchpad-parser/loader_info.hh" using namespace std; namespace launchpad_parser_plugin { diff --git a/src/parser/loader_info.hh b/src/launchpad-parser/loader_info.hh similarity index 87% rename from src/parser/loader_info.hh rename to src/launchpad-parser/loader_info.hh index c4ab4f3..f175591 100644 --- a/src/parser/loader_info.hh +++ b/src/launchpad-parser/loader_info.hh @@ -14,11 +14,11 @@ * limitations under the License. */ -#ifndef LAUNCHPAD_PARSER_PLUGIN_LOADER_INFO_HH_ -#define LAUNCHPAD_PARSER_PLUGIN_LOADER_INFO_HH_ +#ifndef LAUNCHPAD_PARSER_LOADER_INFO_HH_ +#define LAUNCHPAD_PARSER_LOADER_INFO_HH_ -#include #include +#include namespace launchpad_parser_plugin { @@ -39,5 +39,4 @@ class LoaderInfo { } // namespace launchpad_parser_plugin -#endif // LAUNCHPAD_PARSER_PLUGIN_LOADER_INFO_HH_ - +#endif // LAUNCHPAD_PARSER_LOADER_INFO_HH_ diff --git a/src/parser/log_private.hh b/src/launchpad-parser/log_private.hh similarity index 79% rename from src/parser/log_private.hh rename to src/launchpad-parser/log_private.hh index 80e244b..fe39f10 100644 --- a/src/parser/log_private.hh +++ b/src/launchpad-parser/log_private.hh @@ -14,34 +14,24 @@ * limitations under the License. */ -#ifndef LAUNCHPAD_PARSER_PLUGIN_LOG_PRIVATE_HH_ -#define LAUNCHPAD_PARSER_PLUGIN_LOG_PRIVATE_HH_ +#ifndef LAUNCHPAD_PARSER_LOG_PRIVATE_HH_ +#define LAUNCHPAD_PARSER_LOG_PRIVATE_HH_ #include -#ifdef LOG_TAG #undef LOG_TAG -#endif #define LOG_TAG "LAUNCHPAD_PARSER_PLUGIN" -#ifdef _E #undef _E -#endif #define _E(fmt, arg...) LOGE(fmt, ##arg) -#ifdef _D #undef _D -#endif #define _D(fmt, arg...) LOGD(fmt, ##arg) -#ifdef _W #undef _W -#endif #define _W(fmt, arg...) LOGW(fmt, ##arg) -#ifdef _I #undef _I -#endif #define _I(fmt, arg...) LOGI(fmt, ##arg) -#endif /* LAUNCHPAD_PARSER_PLUGIN_LOG_PRIVATE_HH_ */ +#endif /* LAUNCHPAD_PARSER_LOG_PRIVATE_HH_ */ diff --git a/src/launchpad-process-pool/CMakeLists.txt b/src/launchpad-process-pool/CMakeLists.txt new file mode 100644 index 0000000..70732ff --- /dev/null +++ b/src/launchpad-process-pool/CMakeLists.txt @@ -0,0 +1,54 @@ +AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/src + LAUNCHPAD_PROCESS_POOL_SRCS) +AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/../lib/common/src + LIB_COMMON_SRCS) + +ADD_EXECUTABLE(${TARGET_LAUNCHPAD_PROCESS_POOL} + ${LAUNCHPAD_PROCESS_POOL_SRCS} + ${LIB_COMMON_SRCS}) +SET_TARGET_PROPERTIES(${TARGET_LAUNCHPAD_PROCESS_POOL} PROPERTIES + SKIP_BUILD_RPATH TRUE) + +TARGET_INCLUDE_DIRECTORIES(${TARGET_LAUNCHPAD_PROCESS_POOL} PUBLIC + ${CMAKE_CURRENT_SOURCE_DIR}/inc) +TARGET_INCLUDE_DIRECTORIES(${TARGET_LAUNCHPAD_PROCESS_POOL} PUBLIC + ${CMAKE_CURRENT_SOURCE_DIR}/../lib/common/inc) + +IF(_TIZEN_FEATURE_PRELINK) +MESSAGE(STATUS "prelink enable") +ELSE(_TIZEN_FEATURE_PRELINK) +MESSAGE(STATUS "prelink disable") +SET_TARGET_PROPERTIES(${TARGET_LAUNCHPAD_PROCESS_POOL} PROPERTIES + COMPILE_FLAGS "-fPIE") +SET_TARGET_PROPERTIES(${TARGET_LAUNCHPAD_PROCESS_POOL} PROPERTIES + LINK_FLAGS "-pie") +ENDIF(_TIZEN_FEATURE_PRELINK) + +APPLY_PKG_CONFIG(${TARGET_LAUNCHPAD_PROCESS_POOL} PUBLIC + BUNDLE_DEPS + DBUS_DEPS + DLOG_DEPS + GIO_DEPS + INIPARSER_DEPS + LIBCAP_DEPS + LIBSMACK_DEPS + LIBSYSTEMD_DEPS + LIBTZPLATFORM_CONFIG_DEPS + SECURITY_MANAGER_DEPS + TANCHOR_DEPS + TTRACE_DEPS + VCONF_DEPS +) + +TARGET_LINK_LIBRARIES(${TARGET_LAUNCHPAD_PROCESS_POOL} PUBLIC "-lm -ldl") + +CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/packaging/default.debugger.in + ${CMAKE_SOURCE_DIR}/packaging/default.debugger @ONLY) +INSTALL(FILES ${CMAKE_SOURCE_DIR}/packaging/default.debugger DESTINATION + share/aul) +INSTALL(TARGETS ${TARGET_LAUNCHPAD_PROCESS_POOL} DESTINATION bin) + +CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/conf/launchpad.conf.in + ${CMAKE_CURRENT_SOURCE_DIR}/conf/launchpad.conf @ONLY) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/conf/launchpad.conf DESTINATION + share/aul) diff --git a/src/launchpad/conf/launchpad.conf.in b/src/launchpad-process-pool/conf/launchpad.conf.in similarity index 100% rename from src/launchpad/conf/launchpad.conf.in rename to src/launchpad-process-pool/conf/launchpad.conf.in diff --git a/src/launchpad/inc/debugger_info.h b/src/launchpad-process-pool/inc/debugger_info.h similarity index 100% rename from src/launchpad/inc/debugger_info.h rename to src/launchpad-process-pool/inc/debugger_info.h diff --git a/src/launchpad/inc/launcher_info.h b/src/launchpad-process-pool/inc/launcher_info.h similarity index 100% rename from src/launchpad/inc/launcher_info.h rename to src/launchpad-process-pool/inc/launcher_info.h diff --git a/src/launchpad/inc/launchpad_config.h b/src/launchpad-process-pool/inc/launchpad_config.h similarity index 100% rename from src/launchpad/inc/launchpad_config.h rename to src/launchpad-process-pool/inc/launchpad_config.h diff --git a/src/launchpad/inc/launchpad_dbus.h b/src/launchpad-process-pool/inc/launchpad_dbus.h similarity index 100% rename from src/launchpad/inc/launchpad_dbus.h rename to src/launchpad-process-pool/inc/launchpad_dbus.h diff --git a/src/launchpad/inc/launchpad_debug.h b/src/launchpad-process-pool/inc/launchpad_debug.h similarity index 100% rename from src/launchpad/inc/launchpad_debug.h rename to src/launchpad-process-pool/inc/launchpad_debug.h diff --git a/src/launchpad/inc/launchpad_inotify.h b/src/launchpad-process-pool/inc/launchpad_inotify.h similarity index 100% rename from src/launchpad/inc/launchpad_inotify.h rename to src/launchpad-process-pool/inc/launchpad_inotify.h diff --git a/src/launchpad/inc/launchpad_io_channel.h b/src/launchpad-process-pool/inc/launchpad_io_channel.h similarity index 100% rename from src/launchpad/inc/launchpad_io_channel.h rename to src/launchpad-process-pool/inc/launchpad_io_channel.h diff --git a/src/launchpad/inc/launchpad_log.h b/src/launchpad-process-pool/inc/launchpad_log.h similarity index 100% rename from src/launchpad/inc/launchpad_log.h rename to src/launchpad-process-pool/inc/launchpad_log.h diff --git a/src/launchpad/inc/launchpad_logger.h b/src/launchpad-process-pool/inc/launchpad_logger.h similarity index 100% rename from src/launchpad/inc/launchpad_logger.h rename to src/launchpad-process-pool/inc/launchpad_logger.h diff --git a/src/launchpad/inc/launchpad_memory_monitor.h b/src/launchpad-process-pool/inc/launchpad_memory_monitor.h similarity index 100% rename from src/launchpad/inc/launchpad_memory_monitor.h rename to src/launchpad-process-pool/inc/launchpad_memory_monitor.h diff --git a/src/launchpad/inc/launchpad_signal.h b/src/launchpad-process-pool/inc/launchpad_signal.h similarity index 100% rename from src/launchpad/inc/launchpad_signal.h rename to src/launchpad-process-pool/inc/launchpad_signal.h diff --git a/src/launchpad/inc/launchpad_worker.h b/src/launchpad-process-pool/inc/launchpad_worker.h similarity index 100% rename from src/launchpad/inc/launchpad_worker.h rename to src/launchpad-process-pool/inc/launchpad_worker.h diff --git a/src/launchpad/inc/loader_info.h b/src/launchpad-process-pool/inc/loader_info.h similarity index 100% rename from src/launchpad/inc/loader_info.h rename to src/launchpad-process-pool/inc/loader_info.h diff --git a/src/launchpad/src/debugger_info.c b/src/launchpad-process-pool/src/debugger_info.c similarity index 100% rename from src/launchpad/src/debugger_info.c rename to src/launchpad-process-pool/src/debugger_info.c diff --git a/src/launchpad/src/launcher_info.c b/src/launchpad-process-pool/src/launcher_info.c similarity index 100% rename from src/launchpad/src/launcher_info.c rename to src/launchpad-process-pool/src/launcher_info.c diff --git a/src/launchpad/src/launchpad.c b/src/launchpad-process-pool/src/launchpad.c similarity index 100% rename from src/launchpad/src/launchpad.c rename to src/launchpad-process-pool/src/launchpad.c diff --git a/src/launchpad/src/launchpad_config.c b/src/launchpad-process-pool/src/launchpad_config.c similarity index 100% rename from src/launchpad/src/launchpad_config.c rename to src/launchpad-process-pool/src/launchpad_config.c diff --git a/src/launchpad/src/launchpad_dbus.c b/src/launchpad-process-pool/src/launchpad_dbus.c similarity index 100% rename from src/launchpad/src/launchpad_dbus.c rename to src/launchpad-process-pool/src/launchpad_dbus.c diff --git a/src/launchpad/src/launchpad_debug.c b/src/launchpad-process-pool/src/launchpad_debug.c similarity index 100% rename from src/launchpad/src/launchpad_debug.c rename to src/launchpad-process-pool/src/launchpad_debug.c diff --git a/src/launchpad/src/launchpad_inotify.c b/src/launchpad-process-pool/src/launchpad_inotify.c similarity index 100% rename from src/launchpad/src/launchpad_inotify.c rename to src/launchpad-process-pool/src/launchpad_inotify.c diff --git a/src/launchpad/src/launchpad_io_channel.c b/src/launchpad-process-pool/src/launchpad_io_channel.c similarity index 100% rename from src/launchpad/src/launchpad_io_channel.c rename to src/launchpad-process-pool/src/launchpad_io_channel.c diff --git a/src/launchpad/src/launchpad_log.c b/src/launchpad-process-pool/src/launchpad_log.c similarity index 100% rename from src/launchpad/src/launchpad_log.c rename to src/launchpad-process-pool/src/launchpad_log.c diff --git a/src/launchpad/src/launchpad_logger.c b/src/launchpad-process-pool/src/launchpad_logger.c similarity index 100% rename from src/launchpad/src/launchpad_logger.c rename to src/launchpad-process-pool/src/launchpad_logger.c diff --git a/src/launchpad/src/launchpad_memory_monitor.c b/src/launchpad-process-pool/src/launchpad_memory_monitor.c similarity index 100% rename from src/launchpad/src/launchpad_memory_monitor.c rename to src/launchpad-process-pool/src/launchpad_memory_monitor.c diff --git a/src/launchpad/src/launchpad_signal.c b/src/launchpad-process-pool/src/launchpad_signal.c similarity index 100% rename from src/launchpad/src/launchpad_signal.c rename to src/launchpad-process-pool/src/launchpad_signal.c diff --git a/src/launchpad/src/launchpad_worker.c b/src/launchpad-process-pool/src/launchpad_worker.c similarity index 100% rename from src/launchpad/src/launchpad_worker.c rename to src/launchpad-process-pool/src/launchpad_worker.c diff --git a/src/launchpad/src/loader_info.c b/src/launchpad-process-pool/src/loader_info.c similarity index 100% rename from src/launchpad/src/loader_info.c rename to src/launchpad-process-pool/src/loader_info.c diff --git a/src/launchpad/CMakeLists.txt b/src/launchpad/CMakeLists.txt deleted file mode 100644 index ad10ae0..0000000 --- a/src/launchpad/CMakeLists.txt +++ /dev/null @@ -1,72 +0,0 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 2.8) -PROJECT(launchpad-process-pool C) -SET(LAUNCHPAD_PROCESS_POOL "launchpad-process-pool") - -INCLUDE(FindPkgConfig) -PKG_CHECK_MODULES(LAUNCHPAD_PROCESS_POOL_PKGS REQUIRED - bundle - dbus-1 - dlog - gio-2.0 - iniparser - libcap - libsmack - libsystemd - libtzplatform-config - security-manager - tanchor - ttrace - vconf - ) - -FOREACH(flag ${LAUNCHPAD_PROCESS_POOL_PKGS_CFLAGS}) - SET(EXTRA_CFLAGS_pool "${EXTRA_CFLAGS_pool} ${flag}") -ENDFOREACH(flag) - -SET(EXTRA_CFLAGS_common "${EXTRA_CFLAGS_common} -Wl,-zdefs" ) -SET(EXTRA_CFLAGS_common "${EXTRA_CFLAGS_common} -fvisibility=hidden") -SET(EXTRA_CFLAGS_common "${EXTRA_CFLAGS_common} -fdata-sections -ffunction-sections -Wl,--gc-sections") -SET(EXTRA_CFLAGS_common "${EXTRA_CFLAGS_common} -D_FILE_OFFSET_BITS=64") -SET(EXTRA_CFLAGS_common "${EXTRA_CFLAGS_common} -Werror") - -IF(_TIZEN_FEATURE_PRELINK) -MESSAGE(STATUS "[__PRELINK__] Enable") -SET(EXTRA_CFLAGS_pool "${EXTRA_CFLAGS_pool} ${EXTRA_CFLAGS_common}") -ELSE(_TIZEN_FEATURE_PRELINK) -MESSAGE(STATUS "[__PRELINK__] Disable") -SET(EXTRA_CFLAGS_pool "${EXTRA_CFLAGS_pool} ${EXTRA_CFLAGS_common} -fPIE") -ENDIF(_TIZEN_FEATURE_PRELINK) - -SET(CMAKE_C_FLAGS_DEBUG "-O0 -g") -SET(CMAKE_C_FLAGS_RELEASE "-O2") -SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed") - -INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/inc) -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/common/inc) - -AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/src SOURCES) -AUX_SOURCE_DIRECTORY(${CMAKE_SOURCE_DIR}/src/common/src COMMON_SOURCES) - -SET(LAUNCHPAD_PROCESS_POOL_SOURCE_FILES - ${COMMON_SOURCES} - ${SOURCES}) - -ADD_EXECUTABLE(${LAUNCHPAD_PROCESS_POOL} ${LAUNCHPAD_PROCESS_POOL_SOURCE_FILES}) - -IF(_TIZEN_FEATURE_PRELINK) -TARGET_LINK_LIBRARIES(${LAUNCHPAD_PROCESS_POOL} ${LAUNCHPAD_PROCESS_POOL_PKGS_LDFLAGS} "-lm -ldl") -ELSE(_TIZEN_FEATURE_PRELINK) -TARGET_LINK_LIBRARIES(${LAUNCHPAD_PROCESS_POOL} ${LAUNCHPAD_PROCESS_POOL_PKGS_LDFLAGS} "-pie -lm -ldl") -ENDIF(_TIZEN_FEATURE_PRELINK) - -SET_TARGET_PROPERTIES(${LAUNCHPAD_PROCESS_POOL} PROPERTIES COMPILE_FLAGS ${EXTRA_CFLAGS_pool}) -SET_TARGET_PROPERTIES(${LAUNCHPAD_PROCESS_POOL} - PROPERTIES SKIP_BUILD_RPATH TRUE - ) # remove rpath option that is automatically generated by cmake. - -CONFIGURE_FILE(${CMAKE_SOURCE_DIR}/packaging/default.debugger.in ${CMAKE_SOURCE_DIR}/packaging/default.debugger @ONLY) -INSTALL(FILES ${CMAKE_SOURCE_DIR}/packaging/default.debugger DESTINATION share/aul) -INSTALL(TARGETS ${LAUNCHPAD_PROCESS_POOL} DESTINATION bin) - -CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/conf/launchpad.conf.in ${CMAKE_CURRENT_SOURCE_DIR}/conf/launchpad.conf @ONLY) -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/conf/launchpad.conf DESTINATION share/aul) diff --git a/src/lib/CMakeLists.txt b/src/lib/CMakeLists.txt index 1d42ce0..3daf3df 100644 --- a/src/lib/CMakeLists.txt +++ b/src/lib/CMakeLists.txt @@ -1,53 +1,2 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 2.8) -PROJECT(liblaunchpad C) -SET(LAUNCHPAD_LIB "launchpad") - -INCLUDE(FindPkgConfig) -PKG_CHECK_MODULES(LAUNCHPAD_LIB_PKGS REQUIRED - aul - bundle - dbus-1 - dlog - libcap - libtzplatform-config - security-manager - tanchor - ) - -FOREACH(flag ${LAUNCHPAD_LIB_PKGS_CFLAGS}) - SET(EXTRA_CFLAGS_lib "${EXTRA_CFLAGS_lib} ${flag}") -ENDFOREACH(flag) - -SET(EXTRA_CFLAGS_common "${EXTRA_CFLAGS_common} -Wl,-zdefs" ) -SET(EXTRA_CFLAGS_common "${EXTRA_CFLAGS_common} -fvisibility=hidden") -SET(EXTRA_CFLAGS_common "${EXTRA_CFLAGS_common} -fdata-sections -ffunction-sections -Wl,--gc-sections") -SET(EXTRA_CFLAGS_common "${EXTRA_CFLAGS_common} -D_FILE_OFFSET_BITS=64") -SET(EXTRA_CFLAGS_common "${EXTRA_CFLAGS_common} -Werror") - -SET(EXTRA_CFLAGS_lib "${EXTRA_CFLAGS_lib} ${EXTRA_CFLAGS_common}") - -SET(CMAKE_C_FLAGS_DEBUG "-O0 -g") -SET(CMAKE_C_FLAGS_RELEASE "-O2") -SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed") - -INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/inc) -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/common/inc) - -AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/src SOURCES) -AUX_SOURCE_DIRECTORY(${CMAKE_SOURCE_DIR}/src/common/src COMMON_SOURCES) - -ADD_LIBRARY(${LAUNCHPAD_LIB} SHARED - ${COMMON_SOURCES} - ${SOURCES}) - -SET_TARGET_PROPERTIES(${LAUNCHPAD_LIB} PROPERTIES SOVERSION ${MAJORVER}) -SET_TARGET_PROPERTIES(${LAUNCHPAD_LIB} PROPERTIES VERSION ${VERSION}) -SET_TARGET_PROPERTIES(${LAUNCHPAD_LIB} PROPERTIES COMPILE_FLAGS ${EXTRA_CFLAGS_lib}) -TARGET_LINK_LIBRARIES(${LAUNCHPAD_LIB} ${LAUNCHPAD_LIB_PKGS_LDFLAGS} "-ldl") - -INSTALL(TARGETS ${LAUNCHPAD_LIB} DESTINATION ${LIB_INSTALL_DIR} COMPONENT RuntimeLibraries) -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/inc/launchpad.h DESTINATION include/launchpad) -CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/pkgconfig/launchpad.pc.in ${CMAKE_CURRENT_SOURCE_DIR}/pkgconfig/launchpad.pc @ONLY) -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/pkgconfig/launchpad.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig) -CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/pkgconfig/launchpad.pc.in ${CMAKE_CURRENT_SOURCE_DIR}/pkgconfig/liblaunchpad.pc @ONLY) -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/pkgconfig/liblaunchpad.pc DESTINATION ${LIB_INSTALL_DIR}/pkgconfig) +ADD_SUBDIRECTORY(launchpad) +ADD_SUBDIRECTORY(launchpad-hydra) diff --git a/src/common/inc/key.h b/src/lib/common/inc/key.h similarity index 100% rename from src/common/inc/key.h rename to src/lib/common/inc/key.h diff --git a/src/common/inc/launchpad_common.h b/src/lib/common/inc/launchpad_common.h similarity index 100% rename from src/common/inc/launchpad_common.h rename to src/lib/common/inc/launchpad_common.h diff --git a/src/common/inc/launchpad_plugin.h b/src/lib/common/inc/launchpad_plugin.h similarity index 100% rename from src/common/inc/launchpad_plugin.h rename to src/lib/common/inc/launchpad_plugin.h diff --git a/src/common/inc/launchpad_proc.h b/src/lib/common/inc/launchpad_proc.h similarity index 100% rename from src/common/inc/launchpad_proc.h rename to src/lib/common/inc/launchpad_proc.h diff --git a/src/common/inc/launchpad_socket.h b/src/lib/common/inc/launchpad_socket.h similarity index 100% rename from src/common/inc/launchpad_socket.h rename to src/lib/common/inc/launchpad_socket.h diff --git a/src/common/inc/launchpad_types.h b/src/lib/common/inc/launchpad_types.h similarity index 100% rename from src/common/inc/launchpad_types.h rename to src/lib/common/inc/launchpad_types.h diff --git a/src/common/inc/log_private.h b/src/lib/common/inc/log_private.h similarity index 100% rename from src/common/inc/log_private.h rename to src/lib/common/inc/log_private.h diff --git a/src/common/inc/perf.h b/src/lib/common/inc/perf.h similarity index 100% rename from src/common/inc/perf.h rename to src/lib/common/inc/perf.h diff --git a/src/common/inc/preexec.h b/src/lib/common/inc/preexec.h similarity index 100% rename from src/common/inc/preexec.h rename to src/lib/common/inc/preexec.h diff --git a/src/common/src/launchpad_common.c b/src/lib/common/src/launchpad_common.c similarity index 100% rename from src/common/src/launchpad_common.c rename to src/lib/common/src/launchpad_common.c diff --git a/src/common/src/launchpad_plugin.c b/src/lib/common/src/launchpad_plugin.c similarity index 100% rename from src/common/src/launchpad_plugin.c rename to src/lib/common/src/launchpad_plugin.c diff --git a/src/common/src/launchpad_proc.c b/src/lib/common/src/launchpad_proc.c similarity index 100% rename from src/common/src/launchpad_proc.c rename to src/lib/common/src/launchpad_proc.c diff --git a/src/common/src/launchpad_socket.c b/src/lib/common/src/launchpad_socket.c similarity index 100% rename from src/common/src/launchpad_socket.c rename to src/lib/common/src/launchpad_socket.c diff --git a/src/lib/launchpad-hydra/CMakeLists.txt b/src/lib/launchpad-hydra/CMakeLists.txt new file mode 100644 index 0000000..6dec4bf --- /dev/null +++ b/src/lib/launchpad-hydra/CMakeLists.txt @@ -0,0 +1,33 @@ +AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/src LAUNCHPAD_HYDRA_SRCS) +SET(COMMON_SOCKET_SRCS + ${CMAKE_CURRENT_SOURCE_DIR}/../common/src/launchpad_socket.c) + +ADD_LIBRARY(${TARGET_LAUNCHPAD_HYDRA} SHARED + ${COMMON_SOCKET_SRCS} + ${LAUNCHPAD_HYDRA_SRCS}) +SET_TARGET_PROPERTIES(${TARGET_LAUNCHPAD_HYDRA} PROPERTIES + SOVERSION ${MAJORVER}) +SET_TARGET_PROPERTIES(${TARGET_LAUNCHPAD_HYDRA} PROPERTIES + VERSION ${VERSION}) + +TARGET_INCLUDE_DIRECTORIES(${TARGET_LAUNCHPAD_HYDRA} PUBLIC + ${CMAKE_CURRENT_SOURCE_DIR}/inc) +TARGET_INCLUDE_DIRECTORIES(${TARGET_LAUNCHPAD_HYDRA} PUBLIC + ${CMAKE_CURRENT_SOURCE_DIR}/../common/inc) + +APPLY_PKG_CONFIG(${TARGET_LAUNCHPAD_HYDRA} PUBLIC + DLOG_DEPS + LIBSYSTEMD_DEPS +) + +TARGET_LINK_LIBRARIES(${TARGET_LAUNCHPAD_HYDRA} PUBLIC "-ldl") + +INSTALL(TARGETS ${TARGET_LAUNCHPAD_HYDRA} DESTINATION ${LIB_INSTALL_DIR} + COMPONENT RuntimeLibraries) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/inc/launchpad_hydra.h + DESTINATION include/launchpad) + +CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/pkgconfig/liblaunchpad-hydra.pc.in + ${CMAKE_CURRENT_SOURCE_DIR}/pkgconfig/liblaunchpad-hydra.pc @ONLY) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/pkgconfig/liblaunchpad-hydra.pc + DESTINATION ${LIB_INSTALL_DIR}/pkgconfig) diff --git a/src/hydra/inc/launchpad_hydra.h b/src/lib/launchpad-hydra/inc/launchpad_hydra.h similarity index 100% rename from src/hydra/inc/launchpad_hydra.h rename to src/lib/launchpad-hydra/inc/launchpad_hydra.h diff --git a/src/hydra/inc/launchpad_sigchld.h b/src/lib/launchpad-hydra/inc/launchpad_sigchld.h similarity index 100% rename from src/hydra/inc/launchpad_sigchld.h rename to src/lib/launchpad-hydra/inc/launchpad_sigchld.h diff --git a/src/hydra/pkgconfig/liblaunchpad-hydra.pc.in b/src/lib/launchpad-hydra/pkgconfig/liblaunchpad-hydra.pc.in similarity index 100% rename from src/hydra/pkgconfig/liblaunchpad-hydra.pc.in rename to src/lib/launchpad-hydra/pkgconfig/liblaunchpad-hydra.pc.in diff --git a/src/hydra/src/launchpad_hydra.c b/src/lib/launchpad-hydra/src/launchpad_hydra.c similarity index 100% rename from src/hydra/src/launchpad_hydra.c rename to src/lib/launchpad-hydra/src/launchpad_hydra.c diff --git a/src/hydra/src/launchpad_sigchld.c b/src/lib/launchpad-hydra/src/launchpad_sigchld.c similarity index 100% rename from src/hydra/src/launchpad_sigchld.c rename to src/lib/launchpad-hydra/src/launchpad_sigchld.c diff --git a/src/lib/launchpad/CMakeLists.txt b/src/lib/launchpad/CMakeLists.txt new file mode 100644 index 0000000..d43ea34 --- /dev/null +++ b/src/lib/launchpad/CMakeLists.txt @@ -0,0 +1,43 @@ +AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/src LAUNCHPAD_SRCS) +AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/../common/src LIB_COMMON_SRCS) + +ADD_LIBRARY(${TARGET_LAUNCHPAD} SHARED + ${LAUNCHPAD_SRCS} + ${LIB_COMMON_SRCS}) +SET_TARGET_PROPERTIES(${TARGET_LAUNCHPAD} PROPERTIES SOVERSION ${MAJORVER}) +SET_TARGET_PROPERTIES(${TARGET_LAUNCHPAD} PROPERTIES VERSION ${VERSION}) + +TARGET_INCLUDE_DIRECTORIES(${TARGET_LAUNCHPAD} PUBLIC + ${CMAKE_CURRENT_SOURCE_DIR}/../common/inc) +TARGET_INCLUDE_DIRECTORIES(${TARGET_LAUNCHPAD} PUBLIC + ${CMAKE_CURRENT_SOURCE_DIR}/inc) + +APPLY_PKG_CONFIG(${TARGET_LAUNCHPAD} PUBLIC + AUL_DEPS + BUNDLE_DEPS + BUXTON2_DEPS + DBUS_DEPS + DLOG_DEPS + LIBCAP_DEPS + LIBSYSTEMD_DEPS + LIBTZPLATFORM_CONFIG_DEPS + SECURITY_MANAGER_DEPS + TANCHOR_DEPS +) + +TARGET_LINK_LIBRARIES(${TARGET_LAUNCHPAD} PUBLIC "-ldl") + +INSTALL(TARGETS ${TARGET_LAUNCHPAD} DESTINATION ${LIB_INSTALL_DIR} + COMPONENT RuntimeLibraries) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/inc/launchpad.h DESTINATION + include/launchpad) + +CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/pkgconfig/launchpad.pc.in + ${CMAKE_CURRENT_SOURCE_DIR}/pkgconfig/launchpad.pc @ONLY) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/pkgconfig/launchpad.pc + DESTINATION ${LIB_INSTALL_DIR}/pkgconfig) + +CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/pkgconfig/launchpad.pc.in + ${CMAKE_CURRENT_SOURCE_DIR}/pkgconfig/liblaunchpad.pc @ONLY) +INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/pkgconfig/liblaunchpad.pc + DESTINATION ${LIB_INSTALL_DIR}/pkgconfig) diff --git a/src/lib/inc/launchpad.h b/src/lib/launchpad/inc/launchpad.h similarity index 100% rename from src/lib/inc/launchpad.h rename to src/lib/launchpad/inc/launchpad.h diff --git a/src/lib/pkgconfig/launchpad.pc.in b/src/lib/launchpad/pkgconfig/launchpad.pc.in similarity index 100% rename from src/lib/pkgconfig/launchpad.pc.in rename to src/lib/launchpad/pkgconfig/launchpad.pc.in diff --git a/src/lib/src/launchpad_lib.c b/src/lib/launchpad/src/launchpad_lib.c similarity index 100% rename from src/lib/src/launchpad_lib.c rename to src/lib/launchpad/src/launchpad_lib.c diff --git a/src/loader/CMakeLists.txt b/src/loader/CMakeLists.txt deleted file mode 100644 index 1dff6be..0000000 --- a/src/loader/CMakeLists.txt +++ /dev/null @@ -1,78 +0,0 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 2.8) -PROJECT(launchpad-loader C) -SET(LAUNCHPAD_LOADER "launchpad-loader") - -INCLUDE(FindPkgConfig) -PKG_CHECK_MODULES(LAUNCHPAD_LOADER_PKGS REQUIRED - dlog - ecore - elementary - security-manager - libtzplatform-config - tanchor - bundle - aul - vconf - buxton2 - libsystemd - gio-2.0 - dbus-1 - libcap - ) - -FOREACH(flag ${LAUNCHPAD_LOADER_PKGS_CFLAGS}) - SET(EXTRA_CFLAGS_loader "${EXTRA_CFLAGS_loader} ${flag}") -ENDFOREACH(flag) - -SET(EXTRA_CFLAGS_common "${EXTRA_CFLAGS_common} -Wl,-zdefs" ) -SET(EXTRA_CFLAGS_common "${EXTRA_CFLAGS_common} -fvisibility=hidden") -SET(EXTRA_CFLAGS_common "${EXTRA_CFLAGS_common} -fdata-sections -ffunction-sections -Wl,--gc-sections") -SET(EXTRA_CFLAGS_common "${EXTRA_CFLAGS_common} -D_FILE_OFFSET_BITS=64") -SET(EXTRA_CFLAGS_common "${EXTRA_CFLAGS_common} -Werror") - -IF(_TIZEN_FEATURE_PRELINK) -MESSAGE(STATUS "[__PRELINK__] Enable") -SET(EXTRA_CFLAGS_loader "${EXTRA_CFLAGS_loader} ${EXTRA_CFLAGS_common}") -ELSE(_TIZEN_FEATURE_PRELINK) -MESSAGE(STATUS "[__PRELINK__] Disable") -SET(EXTRA_CFLAGS_loader "${EXTRA_CFLAGS_loader} ${EXTRA_CFLAGS_common} -fPIE") -ENDIF(_TIZEN_FEATURE_PRELINK) - -SET(CMAKE_C_FLAGS_DEBUG "-O0 -g") -SET(CMAKE_C_FLAGS_RELEASE "-O2") -SET(CMAKE_EXE_LINKER_FLAGS "-Wl,--as-needed") - -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/common/inc) -INCLUDE_DIRECTORIES(${CMAKE_SOURCE_DIR}/src/lib/inc) - -AUX_SOURCE_DIRECTORY(${CMAKE_CURRENT_SOURCE_DIR}/src SOURCES) -AUX_SOURCE_DIRECTORY(${CMAKE_SOURCE_DIR}/src/common/src COMMON_SOURCES) - -SET(LAUNCHPAD_LOADER_SOURCE_FILES - ${COMMON_SOURCES} - ${SOURCES}) -ADD_EXECUTABLE(${LAUNCHPAD_LOADER} ${LAUNCHPAD_LOADER_SOURCE_FILES}) - -# To support 2.x applications which use their own shared libraries. -# Since we cannot set LD_LIBRARY_PATH directly by security issue, we make the -# dynamic linker looks in the CWD forcely. -TARGET_LINK_LIBRARIES(${LAUNCHPAD_LOADER} "-ldl -Wl,-rpath,: -Wl,--disable-new-dtags") - -IF(_TIZEN_FEATURE_PRELINK) -TARGET_LINK_LIBRARIES(${LAUNCHPAD_LOADER} ${LAUNCHPAD_LOADER_PKGS_LDFLAGS} launchpad) -ELSE(_TIZEN_FEATURE_PRELINK) -TARGET_LINK_LIBRARIES(${LAUNCHPAD_LOADER} ${LAUNCHPAD_LOADER_PKGS_LDFLAGS} launchpad "-pie") -ENDIF(_TIZEN_FEATURE_PRELINK) - -SET_TARGET_PROPERTIES(${LAUNCHPAD_LOADER} PROPERTIES COMPILE_FLAGS ${EXTRA_CFLAGS_loader}) -SET_TARGET_PROPERTIES(${LAUNCHPAD_LOADER} - PROPERTIES SKIP_BUILD_RPATH TRUE - ) # remove rpath option that is automatically generated by cmake. -INSTALL(TARGETS ${LAUNCHPAD_LOADER} DESTINATION bin) - -IF(_TIZEN_FEATURE_LOADER_ARCH64) -CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/conf/default_arch64.loader.in ${CMAKE_CURRENT_SOURCE_DIR}/conf/default.loader @ONLY) -ELSE(_TIZEN_FEATURE_LOADER_ARCH64) -CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/conf/default_arch32.loader.in ${CMAKE_CURRENT_SOURCE_DIR}/conf/default.loader @ONLY) -ENDIF(_TIZEN_FEATURE_LOADER_ARCH64) -INSTALL(FILES ${CMAKE_CURRENT_SOURCE_DIR}/conf/default.loader DESTINATION share/aul) diff --git a/src/parser/CMakeLists.txt b/src/parser/CMakeLists.txt deleted file mode 100644 index 29374bd..0000000 --- a/src/parser/CMakeLists.txt +++ /dev/null @@ -1,40 +0,0 @@ -CMAKE_MINIMUM_REQUIRED(VERSION 2.6) -PROJECT(launchpad-parser CXX) - -INCLUDE(FindPkgConfig) -pkg_check_modules(PKGS REQUIRED - dlog - libxml-2.0 - pkgmgr-installer -) - -FOREACH(FLAGS ${PKGS_CFLAGS}) - SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} ${FLAGS}") -ENDFOREACH(FLAGS) - -SET(EXTRA_CFLAGS "${EXTRA_CFLAGS} -fvisibility=hidden -Wall -Werror -Winline -std=c++11") - -SET(CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} ${EXTRA_CFLAGS}") -SET(CMAKE_CXX_FLAGS_DEBUG "-O0 -g") -SET(CMAKE_CXX_FLAGS_RELEASE "-O2") - -ADD_LIBRARY(${PROJECT_NAME} SHARED - launchpad_parser_plugin.cc - loader_info.cc - launchpad_parser_plugin_pkgmgr_interface.cc -) - -INCLUDE_DIRECTORIES(${CMAKE_CURRENT_SOURCE_DIR}/../) - -SET(PLUGINS_LIST_FILE_NAME launchpad_plugins.txt) -SET(PLUGINS_LIST_FILE_PATH ${CMAKE_CURRENT_SOURCE_DIR}/${PLUGINS_LIST_FILE_NAME}) - -SET(PLUGINS_LIST_INSTALL_PATH ${CMAKE_INSTALL_PREFIX}/share/parser-plugins) - -ADD_DEFINITIONS("-DPLUGINS_LIST_INSTALL_PATH=\"${PLUGINS_LIST_INSTALL_PATH}\"") - -INSTALL(FILES ${PLUGINS_LIST_FILE_PATH} DESTINATION ${PLUGINS_LIST_INSTALL_PATH}/) - -TARGET_LINK_LIBRARIES(${PROJECT_NAME} ${PKGS_LDFLAGS}) - -INSTALL(TARGETS ${PROJECT_NAME} DESTINATION ${SYSCONF_INSTALL_DIR}/package-manager/parserlib) -- 2.7.4 From 6de87bbcf91f9e2bd955b08ab7275429cf7a8533 Mon Sep 17 00:00:00 2001 From: Hwankyu Jhun Date: Tue, 22 Sep 2020 14:48:25 +0900 Subject: [PATCH 05/16] Release version 0.15.21 Changes: - Fix directory hierarchy & cmake configuration files Change-Id: I82bae4a397bb7a02f04bae3198dff0ec872341f0 Signed-off-by: Hwankyu Jhun --- packaging/launchpad.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/launchpad.spec b/packaging/launchpad.spec index d400b32..0545d95 100644 --- a/packaging/launchpad.spec +++ b/packaging/launchpad.spec @@ -1,6 +1,6 @@ Name: launchpad Summary: Launchpad for launching applications -Version: 0.15.20 +Version: 0.15.21 Release: 1 Group: Application Framework/Daemons License: Apache-2.0 -- 2.7.4 From b527c120dcfa939426befa5bfe1dd9b0784ff7e9 Mon Sep 17 00:00:00 2001 From: Changgyu Choi Date: Tue, 29 Sep 2020 12:33:04 +0900 Subject: [PATCH 06/16] Refactor coding style - Fix some coding style - Change to make_shared instead of constructor - Use std::move() Change-Id: I8e2991eb98e68666cc880a5271204aaa548a41f0 Signed-off-by: Changgyu Choi --- src/app-defined-loader/src/app-defined-loader.cc | 35 +++++++++--------- src/app-defined-loader/src/config.hh | 1 - src/launchpad-parser/launchpad_parser_plugin.cc | 45 +++++++++++++----------- src/launchpad-parser/loader_info.cc | 11 +++--- src/launchpad-parser/loader_info.hh | 2 +- 5 files changed, 46 insertions(+), 48 deletions(-) diff --git a/src/app-defined-loader/src/app-defined-loader.cc b/src/app-defined-loader/src/app-defined-loader.cc index 7cc0a88..da8e3c6 100644 --- a/src/app-defined-loader/src/app-defined-loader.cc +++ b/src/app-defined-loader/src/app-defined-loader.cc @@ -42,36 +42,34 @@ namespace launchpad { -static const char PATH_CONF[] = "/usr/share/aul/app-defined-loader.conf"; -static const char SECTION_MEMORY[] = "Memory"; -static const char KEY_THRESHOLD[] = "Threshold"; -static uint32_t DEFAULT_THRESHOLD = 25600; // kB +namespace { +const char PATH_CONF[] = "/usr/share/aul/app-defined-loader.conf"; +const char SECTION_MEMORY[] = "Memory"; +const char KEY_THRESHOLD[] = "Threshold"; +const uint32_t DEFAULT_THRESHOLD = 25600; // kB +} // namespace class AppDefinedLoader { public: - AppDefinedLoader(int argc, char** argv) - : argc_(argc), argv_(argv) { - lifecycle_cb_ = std::shared_ptr( - new loader_lifecycle_callback_s()); + AppDefinedLoader(int argc, char** argv) : argc_(argc), argv_(argv) { + lifecycle_cb_ = std::make_shared(); lifecycle_cb_->create = OnCreate; lifecycle_cb_->launch = OnLaunch; lifecycle_cb_->terminate = OnTerminate; - adapter_ = std::shared_ptr(new loader_adapter_s()); + adapter_ = std::make_shared(); adapter_->loop_begin = OnLoopBegin; adapter_->loop_quit = OnLoopQuit; adapter_->add_fd = OnAddFd; adapter_->remove_fd = OnRemoveFd; - proc_ = std::unique_ptr(new Proc(getpid())); - + proc_ = std::make_unique(getpid()); Config conf(PATH_CONF); int threshold = conf.GetIntValue(SECTION_MEMORY, KEY_THRESHOLD); - if (threshold > 0) { + if (threshold > 0) threshold_ = static_cast(threshold); - } else { + else _W("Failed to get threshold"); - } } ~AppDefinedLoader() { @@ -192,7 +190,7 @@ class AppDefinedLoader { strerror_r(errno, err_str, sizeof(err_str))); } else { SECURE_LOGD("[candidate] Exec application (%s)", - argv_[LOADER_ARG_PATH]); + argv_[LOADER_ARG_PATH]); _close_all_fds(); if (!libdir.empty()) setenv("LD_LIBRARY_PATH", libdir.c_str(), 1); @@ -207,8 +205,7 @@ class AppDefinedLoader { } int DoDlOpen(bool restore, std::string old_cwd, std::string libdir) { - std::string hwc_message = "" + std::to_string(getpid()) + - "|lib loading start"; + std::string hwc_message = std::to_string(getpid()) + "|lib loading start"; prctl(PR_TASK_PERF_USER_TRACE, hwc_message.c_str(), hwc_message.size()); _W("dlopen(%s) ++", argv_[LOADER_ARG_PATH]); void* handle = dlopen(argv_[LOADER_ARG_PATH], @@ -220,13 +217,13 @@ class AppDefinedLoader { return -1; } - hwc_message = "" + std::to_string(getpid()) + "|lib loading end"; + hwc_message = std::to_string(getpid()) + "|lib loading end"; prctl(PR_TASK_PERF_USER_TRACE, hwc_message.c_str(), hwc_message.size()); if (restore && chdir(old_cwd.c_str())) _E("failed to chdir: %d", errno); - auto dl_main = reinterpret_cast( + auto dl_main = reinterpret_cast( dlsym(handle, "main")); if (dl_main == nullptr) { _E("dlsym not founded(%s). Please export 'main' function", dlerror()); diff --git a/src/app-defined-loader/src/config.hh b/src/app-defined-loader/src/config.hh index 3e12bdf..4188329 100644 --- a/src/app-defined-loader/src/config.hh +++ b/src/app-defined-loader/src/config.hh @@ -28,7 +28,6 @@ class Config { Config(const std::string& path); virtual ~Config(); - public: int GetIntValue(const std::string& section, const std::string& key) const; private: diff --git a/src/launchpad-parser/launchpad_parser_plugin.cc b/src/launchpad-parser/launchpad_parser_plugin.cc index 28f2b73..8ccee30 100644 --- a/src/launchpad-parser/launchpad_parser_plugin.cc +++ b/src/launchpad-parser/launchpad_parser_plugin.cc @@ -27,14 +27,13 @@ #define LOADERS_DIRECTORY_PATH "/opt/share/loaders/" -using namespace std; namespace launchpad_parser_plugin { -string LaunchpadParser::GetFilePath(string id) { +std::string LaunchpadParser::GetFilePath(std::string id) { return "/opt/share/loaders/" + id + ".loader"; } -int LaunchpadParser::WriteToFile(string pkgid) { +int LaunchpadParser::WriteToFile(std::string pkgid) { if (access(LOADERS_DIRECTORY_PATH, F_OK) != 0) mkdir(LOADERS_DIRECTORY_PATH, 0644); @@ -49,7 +48,7 @@ int LaunchpadParser::WriteToFile(string pkgid) { out_file << "APP_TYPE capp|c++app \n"; out_file << "DETECTION_METHOD TIMEOUT|VISIBILITY \n"; out_file << "TIMEOUT 5000 \n"; - out_file << "TTL " + to_string(i->GetTimeToLive()) + "\n"; + out_file << "TTL " + std::to_string(i->GetTimeToLive()) + "\n"; out_file << "OWNER " + pkgid + "\n"; out_file << "EXTRA loader_type common-loader \n"; if (i->GetPreloadLib().size() > 0) { @@ -63,18 +62,18 @@ int LaunchpadParser::WriteToFile(string pkgid) { return 0; } -bool LaunchpadParser::IsValidId(string loader_id, string pkgid) { +bool LaunchpadParser::IsValidId(std::string loader_id, std::string pkgid) { std::string needle("../"); - std::size_t found = loader_id.find(needle); + size_t found = loader_id.find(needle); if (found != std::string::npos) { _E("Invalid loader_id(%s)", loader_id.c_str()); return false; } - ifstream in_file(GetFilePath(loader_id).c_str()); + std::ifstream in_file(GetFilePath(loader_id).c_str()); if (!in_file.good()) return true; - string key, val; + std::string key, val; in_file >> key; while (in_file >> key >> val) { if (key == "OWNER") { @@ -86,7 +85,7 @@ bool LaunchpadParser::IsValidId(string loader_id, string pkgid) { return false; } -int LaunchpadParser::Install(xmlDocPtr doc, string pkgid) { +int LaunchpadParser::Install(xmlDocPtr doc, std::string pkgid) { pkgmgr_privilege_level level; pkgmgr_installer_info_get_privilege_level(&level); if (level != PM_PRIVILEGE_PLATFORM) { @@ -99,28 +98,32 @@ int LaunchpadParser::Install(xmlDocPtr doc, string pkgid) { if (!node->name) continue; - string name = string((char*)node->name); + std::string name = std::string(reinterpret_cast(node->name)); if (name != "provides-appdefined-loader") continue; - xmlChar* val = xmlGetProp(node, (const xmlChar *)"id"); - shared_ptr info = make_shared(string((char*)val)); + xmlChar* val = xmlGetProp(node, reinterpret_cast("id")); + std::shared_ptr info = + std::make_shared(std::string(reinterpret_cast(val))); if (!IsValidId(info->GetId(), pkgid)) return -1; - xmlChar* ttl = xmlGetProp(node, (const xmlChar *)"time-to-live"); + xmlChar* ttl = xmlGetProp(node, + reinterpret_cast("time-to-live")); if (ttl) - info->SetTimeToLive(stoi(string((char*)ttl))); + info->SetTimeToLive(std::stoi(std::string(reinterpret_cast(ttl)))); for (xmlNode* iter = node->children; iter; iter = iter->next) { if (!iter->name) continue; - string child_name = string((char*)iter->name); + std::string child_name = + std::string(reinterpret_cast(iter->name)); if (child_name == "preload-library") { - xmlChar* libname = xmlGetProp(iter, (const xmlChar *)"name"); + xmlChar* libname = xmlGetProp(iter, + reinterpret_cast("name")); if (!libname) continue; - info->AddPreloadLib(string((char*)libname)); + info->AddPreloadLib(std::string(reinterpret_cast(libname))); } } loader_list_.push_back(info); @@ -143,17 +146,17 @@ int LaunchpadParser::UnInstall(xmlDocPtr doc, std::string pkgid) { if (!node->name) continue; - string name = string((char*)node->name); + std::string name = std::string(reinterpret_cast(node->name)); if (name != "provides-appdefined-loader") continue; - xmlChar* val = xmlGetProp(node, (const xmlChar *)"id"); + xmlChar* val = xmlGetProp(node, reinterpret_cast("id")); if (!val) return -1; - string id = string((char*)val); + std::string id = std::string(reinterpret_cast(val)); if (!IsValidId(id, pkgid)) - return -1; + return -1; remove(GetFilePath(id).c_str()); } return 0; diff --git a/src/launchpad-parser/loader_info.cc b/src/launchpad-parser/loader_info.cc index 2f8ffcc..5a41e47 100644 --- a/src/launchpad-parser/loader_info.cc +++ b/src/launchpad-parser/loader_info.cc @@ -16,13 +16,12 @@ #include "launchpad-parser/loader_info.hh" -using namespace std; namespace launchpad_parser_plugin { -LoaderInfo::LoaderInfo(std::string id) : id_(id), time_to_live_(0) { +LoaderInfo::LoaderInfo(std::string id) : id_(std::move(id)), time_to_live_(0) { } -string LoaderInfo::GetId() { +std::string LoaderInfo::GetId() { return id_; } @@ -39,12 +38,12 @@ void LoaderInfo::SetTimeToLive(int time) { time_to_live_ = time; } -list LoaderInfo::GetPreloadLib() { +const std::list& LoaderInfo::GetPreloadLib() { return preload_lib_list_; } -void LoaderInfo::AddPreloadLib(string lib_name) { - preload_lib_list_.push_back(lib_name); +void LoaderInfo::AddPreloadLib(std::string lib_name) { + preload_lib_list_.push_back(std::move(lib_name)); } } // namspace launchpad_parser_plugin diff --git a/src/launchpad-parser/loader_info.hh b/src/launchpad-parser/loader_info.hh index f175591..d02af17 100644 --- a/src/launchpad-parser/loader_info.hh +++ b/src/launchpad-parser/loader_info.hh @@ -28,7 +28,7 @@ class LoaderInfo { std::string GetId(); int GetTimeToLive(); void SetTimeToLive(int time); - std::list GetPreloadLib(); + const std::list& GetPreloadLib(); void AddPreloadLib(std::string lib_name); private: -- 2.7.4 From 4d9decf6735a056735f33501754f2dcb22193ef5 Mon Sep 17 00:00:00 2001 From: Changgyu Choi Date: Mon, 5 Oct 2020 13:24:42 +0900 Subject: [PATCH 07/16] Release version 0.15.22 Changes: - Refactor coding style Change-Id: I62c50bc93d99a17c069415a1854e6037ededd516 Signed-off-by: Changgyu Choi --- packaging/launchpad.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/launchpad.spec b/packaging/launchpad.spec index 0545d95..edb1aa6 100644 --- a/packaging/launchpad.spec +++ b/packaging/launchpad.spec @@ -1,6 +1,6 @@ Name: launchpad Summary: Launchpad for launching applications -Version: 0.15.21 +Version: 0.15.22 Release: 1 Group: Application Framework/Daemons License: Apache-2.0 -- 2.7.4 From 023be6023f044393cd2db4f0578da5a40727553c Mon Sep 17 00:00:00 2001 From: Hwankyu Jhun Date: Thu, 15 Oct 2020 08:00:21 +0900 Subject: [PATCH 08/16] Fix a bug about handling OOM When system is out of memory and the low memory status is true, launchpad-process-pool always tries to kill last running slot. Even if there is no running slot, launchpad-process-pool tries that. Because, the memory status is true. In that time, launchpad-process-pool is deadlock state. After this patch is applied, launchpad-process-pool tries to kill all running slots when system is OOM. If system is not OOM, launchpad-process-pool stops killing slots. Change-Id: I5ff858e20e948407252f603894ffb3edf7d64b12 Signed-off-by: Hwankyu Jhun --- src/launchpad-process-pool/src/launchpad.c | 23 +++++++---------------- 1 file changed, 7 insertions(+), 16 deletions(-) diff --git a/src/launchpad-process-pool/src/launchpad.c b/src/launchpad-process-pool/src/launchpad.c index c506541..d1585f1 100644 --- a/src/launchpad-process-pool/src/launchpad.c +++ b/src/launchpad-process-pool/src/launchpad.c @@ -530,7 +530,7 @@ static candidate_process_context_t *__get_running_slot(bool is_hydra) return NULL; } -static void __pause_last_running_slot(bool is_hydra) +static void __pause_all_running_slots(bool is_hydra) { candidate_process_context_t *cpc = NULL; GList *iter; @@ -538,16 +538,14 @@ static void __pause_last_running_slot(bool is_hydra) iter = g_list_last(candidate_slot_list); while (iter) { cpc = (candidate_process_context_t *)iter->data; - if (cpc->is_hydra == is_hydra && cpc->pid != CANDIDATE_NONE) - break; + if (cpc->is_hydra == is_hydra && cpc->pid != CANDIDATE_NONE) { + __update_slot_state(cpc, METHOD_OUT_OF_MEMORY, true); + if (!_memory_monitor_is_low_memory()) + return; + } iter = g_list_previous(iter); } - - if (!cpc) - return; - - __update_slot_state(cpc, METHOD_OUT_OF_MEMORY, true); } static void __resume_all_slots(void) @@ -3023,14 +3021,7 @@ static int __memory_monitor_cb(bool low_memory, void *user_data) candidate_slot_list = g_list_sort(candidate_slot_list, __compare_slot); - - do { - __pause_last_running_slot(false); - - cpc = __get_running_slot(false); - if (!cpc) - break; - } while (__is_low_memory()); + __pause_all_running_slots(false); } else { __resume_all_slots(); } -- 2.7.4 From faacaa784f8ff4444bfb37001809c64b2ca5e8c8 Mon Sep 17 00:00:00 2001 From: Changgyu Choi Date: Mon, 26 Oct 2020 09:54:27 +0900 Subject: [PATCH 09/16] Fix coding style Change-Id: I606f1009765cd0bd78afda1951f304855415043c Signed-off-by: Changgyu Choi --- src/launchpad-process-pool/src/launchpad_debug.c | 56 ++++++++++++------------ 1 file changed, 28 insertions(+), 28 deletions(-) diff --git a/src/launchpad-process-pool/src/launchpad_debug.c b/src/launchpad-process-pool/src/launchpad_debug.c index 811e721..37934e0 100644 --- a/src/launchpad-process-pool/src/launchpad_debug.c +++ b/src/launchpad-process-pool/src/launchpad_debug.c @@ -32,11 +32,11 @@ #define DEBUGGER_INFO_PATH "/usr/share/aul" -static int debug_initialized; -static GList *debugger_info_list; -static debugger_info_h debugger_info; -static GList *debug_argv_list; -static GList *extra_argv_list; +static int __debug_initialized; +static GList *__debugger_info_list; +static debugger_info_h __debugger_info; +static GList *__debug_argv_list; +static GList *__extra_argv_list; int _debug_create_extra_argv(int *argc, char ***argv) { @@ -51,10 +51,10 @@ int _debug_create_extra_argv(int *argc, char ***argv) return -1; } - if (debugger_info == NULL) + if (__debugger_info == NULL) return 0; - new_argc = g_list_length(extra_argv_list); + new_argc = g_list_length(__extra_argv_list); if (new_argc == 0) return 0; @@ -65,7 +65,7 @@ int _debug_create_extra_argv(int *argc, char ***argv) } i = LOADER_ARG_PATH; - iter = g_list_first(extra_argv_list); + iter = g_list_first(__extra_argv_list); while (iter) { extra_argv = (const char *)iter->data; if (extra_argv) @@ -97,21 +97,21 @@ int _debug_create_argv(int *argc, char ***argv, bool *attach) return -1; } - if (debugger_info == NULL) + if (__debugger_info == NULL) return 0; - exe = _debugger_info_get_exe(debugger_info); + exe = _debugger_info_get_exe(__debugger_info); if (exe == NULL) return 0; - attach_str = _debugger_info_get_attach(debugger_info); + attach_str = _debugger_info_get_attach(__debugger_info); if (attach_str && strcasecmp(attach_str, "true") == 0) { *attach = true; new_argc++; } - list = _debugger_info_get_default_opt_list(debugger_info); - new_argc += g_list_length(debug_argv_list) + g_list_length(list) + 1; + list = _debugger_info_get_default_opt_list(__debugger_info); + new_argc += g_list_length(__debug_argv_list) + g_list_length(list) + 1; new_argv = (char **)calloc(new_argc, sizeof(char *)); if (new_argv == NULL) { _E("out of memory"); @@ -130,7 +130,7 @@ int _debug_create_argv(int *argc, char ***argv, bool *attach) iter = g_list_next(iter); } - iter = g_list_first(debug_argv_list); + iter = g_list_first(__debug_argv_list); while (iter) { debug_argv = (const char *)iter->data; if (debug_argv) @@ -259,7 +259,7 @@ static void __add_extra_argv(gpointer data, gpointer user_data) if (str_arr[i] == NULL) break; - extra_argv_list = g_list_append(extra_argv_list, + __extra_argv_list = g_list_append(__extra_argv_list, strdup(str_arr[i])); } @@ -294,7 +294,7 @@ static void __add_debug_argv(gpointer data, gpointer user_data) if (str_arr[i] == NULL) break; - debug_argv_list = g_list_append(debug_argv_list, + __debug_argv_list = g_list_append(__debug_argv_list, strdup(str_arr[i])); } @@ -375,41 +375,41 @@ void _debug_prepare_debugger(bundle *kb) _E("[DEBUG] Failed to redirect standard fds"); _D("[DEBUG] debugger: %s", debugger); - debugger_info = _debugger_info_find(debugger_info_list, debugger); - if (debugger_info == NULL) + __debugger_info = _debugger_info_find(__debugger_info_list, debugger); + if (__debugger_info == NULL) return; - list = _debugger_info_get_unlink_list(debugger_info); + list = _debugger_info_get_unlink_list(__debugger_info); g_list_foreach(list, __remove_file, NULL); - list = _debugger_info_get_extra_env_list(debugger_info); + list = _debugger_info_get_extra_env_list(__debugger_info); g_list_foreach(list, __set_debug_env, kb); - list = _debugger_info_get_extra_key_list(debugger_info); + list = _debugger_info_get_extra_key_list(__debugger_info); g_list_foreach(list, __add_debug_argv, kb); - list = _debugger_info_get_last_extra_key_list(debugger_info); + list = _debugger_info_get_last_extra_key_list(__debugger_info); g_list_foreach(list, __add_extra_argv, kb); } int _debug_init(void) { - if (debug_initialized) + if (__debug_initialized) return 0; - debugger_info_list = _debugger_info_load(DEBUGGER_INFO_PATH); - if (debugger_info_list == NULL) + __debugger_info_list = _debugger_info_load(DEBUGGER_INFO_PATH); + if (__debugger_info_list == NULL) return -1; - debug_initialized = 1; + __debug_initialized = 1; return 0; } void _debug_fini(void) { - if (!debug_initialized) + if (!__debug_initialized) return; - _debugger_info_unload(debugger_info_list); + _debugger_info_unload(__debugger_info_list); } -- 2.7.4 From e041e32628a945030d160ac58819efc05905c658 Mon Sep 17 00:00:00 2001 From: Hwankyu Jhun Date: Tue, 27 Oct 2020 10:28:27 +0900 Subject: [PATCH 10/16] Release version 0.15.23 Changes: - Fix a bug about handling OOM - Fix coding style Change-Id: I0ce4b8f4931ccf8ac06ff17a09f83d3c79831250 Signed-off-by: Hwankyu Jhun --- packaging/launchpad.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/launchpad.spec b/packaging/launchpad.spec index edb1aa6..cf557f7 100644 --- a/packaging/launchpad.spec +++ b/packaging/launchpad.spec @@ -1,6 +1,6 @@ Name: launchpad Summary: Launchpad for launching applications -Version: 0.15.22 +Version: 0.15.23 Release: 1 Group: Application Framework/Daemons License: Apache-2.0 -- 2.7.4 From 000c7dfb6138cd41b2d3207bb64813202bc31ad6 Mon Sep 17 00:00:00 2001 From: Hwankyu Jhun Date: Wed, 11 Nov 2020 16:24:29 +0900 Subject: [PATCH 11/16] Fix a bug about loader resumption When the system memory is available, all paused loaders should be prepared. Change-Id: I249b9a921fb25ed043e0086876afaf9922100d52 Signed-off-by: Hwankyu Jhun --- src/launchpad-process-pool/src/launchpad.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/launchpad-process-pool/src/launchpad.c b/src/launchpad-process-pool/src/launchpad.c index d1585f1..df329e7 100644 --- a/src/launchpad-process-pool/src/launchpad.c +++ b/src/launchpad-process-pool/src/launchpad.c @@ -556,7 +556,7 @@ static void __resume_all_slots(void) iter = candidate_slot_list; while (iter) { cpc = (candidate_process_context_t *)iter->data; - __update_slot_state(cpc, METHOD_AVAILABLE_MEMORY, false); + __update_slot_state(cpc, METHOD_AVAILABLE_MEMORY, true); iter = g_list_next(iter); } -- 2.7.4 From bf3d10ebc74915b7f2b0630d95569ba631457270 Mon Sep 17 00:00:00 2001 From: Hwankyu Jhun Date: Thu, 12 Nov 2020 11:47:52 +0900 Subject: [PATCH 12/16] Release version 0.15.24 Changes: - Fix a bug about loader resumption Change-Id: I8a0f7774832a0634af486669cbe52112db805cb7 Signed-off-by: Hwankyu Jhun --- packaging/launchpad.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/launchpad.spec b/packaging/launchpad.spec index cf557f7..c1c2592 100644 --- a/packaging/launchpad.spec +++ b/packaging/launchpad.spec @@ -1,6 +1,6 @@ Name: launchpad Summary: Launchpad for launching applications -Version: 0.15.23 +Version: 0.15.24 Release: 1 Group: Application Framework/Daemons License: Apache-2.0 -- 2.7.4 From 44ddd9d0a85d7314b9e23590e902f31b6254bcc9 Mon Sep 17 00:00:00 2001 From: Hwankyu Jhun Date: Wed, 25 Nov 2020 12:44:03 +0900 Subject: [PATCH 13/16] Support logger path setting Currently, the logger path is hard coded. After this patch is applied, the platform developer can change the logger path using the configuration file. Change-Id: Icd510c6bcdfee40e4ca1e15f938b202a92aac75e Signed-off-by: Hwankyu Jhun --- src/launchpad-process-pool/conf/launchpad.conf.in | 3 ++ src/launchpad-process-pool/inc/launchpad_config.h | 1 + src/launchpad-process-pool/src/launchpad_config.c | 37 +++++++++++++++++++++++ src/launchpad-process-pool/src/launchpad_log.c | 9 ++++-- src/launchpad-process-pool/src/launchpad_logger.c | 14 ++++++--- 5 files changed, 58 insertions(+), 6 deletions(-) diff --git a/src/launchpad-process-pool/conf/launchpad.conf.in b/src/launchpad-process-pool/conf/launchpad.conf.in index 6e7e6b2..44acf40 100644 --- a/src/launchpad-process-pool/conf/launchpad.conf.in +++ b/src/launchpad-process-pool/conf/launchpad.conf.in @@ -10,3 +10,6 @@ Interval=5000 [CpuChecker] MaxCount=10 + +[Logger] +Path=/run/aul/log diff --git a/src/launchpad-process-pool/inc/launchpad_config.h b/src/launchpad-process-pool/inc/launchpad_config.h index 328f839..d38cae3 100644 --- a/src/launchpad-process-pool/inc/launchpad_config.h +++ b/src/launchpad-process-pool/inc/launchpad_config.h @@ -25,6 +25,7 @@ typedef enum { CONFIG_TYPE_MEMORY_MONITOR_THRESHOLD, CONFIG_TYPE_MEMORY_MONITOR_INTERVAL, CONFIG_TYPE_CPU_CHECKER_MAX_COUNT, + CONFIG_TYPE_LOGGER_PATH, } config_type_e; const char *_config_get_string_value(config_type_e type); diff --git a/src/launchpad-process-pool/src/launchpad_config.c b/src/launchpad-process-pool/src/launchpad_config.c index 0838dd7..f43bc1a 100644 --- a/src/launchpad-process-pool/src/launchpad_config.c +++ b/src/launchpad-process-pool/src/launchpad_config.c @@ -43,6 +43,9 @@ #define TAG_CPU_CHECKER "CpuChecker" #define KEY_CPU_CHECKER_MAX_COUNT "MaxCount" +#define TAG_LOGGER "Logger" +#define KEY_LOGGER_PATH "Path" + struct memory_status_s { char *low_key; int low_value; @@ -59,9 +62,14 @@ struct cpu_checker_s { int max_count; }; +struct logger_s { + char *path; +}; + static struct memory_status_s __memory_status; static struct memory_monitor_s __memory_monitor; static struct cpu_checker_s __cpu_checker; +static struct logger_s __logger; const char *_config_get_string_value(config_type_e type) { @@ -74,6 +82,9 @@ const char *_config_get_string_value(config_type_e type) case CONFIG_TYPE_MEMORY_STATUS_NORMAL_KEY: value = __memory_status.normal_key; break; + case CONFIG_TYPE_LOGGER_PATH: + value = __logger.path; + break; default: _E("Unknown type"); value = NULL; @@ -241,6 +252,29 @@ static void __cpu_checker_set(dictionary *d) _W("CPU Checker MaxCount(%d)", __cpu_checker.max_count); } +static void __logger_init(void) +{ + __logger.path = strdup("/var/log/appfw"); +} + +static void __logger_fini(void) +{ + free(__logger.path); +} + +static void __logger_set(dictionary *d) +{ + const char *str; + + str = __get_string_value(d, TAG_LOGGER, + KEY_LOGGER_PATH); + if (str) { + free(__logger.path); + __logger.path = strdup(str); + } + _W("Logger path(%s)", __logger.path); +} + int _config_init(void) { dictionary *d; @@ -251,6 +285,7 @@ int _config_init(void) __memory_status_init(); __memory_monitor_init(); __cpu_checker_init(); + __logger_init(); ret = access(PATH_LAUNCHPAD_CONF, F_OK); if (ret != 0) { @@ -267,6 +302,7 @@ int _config_init(void) __memory_status_set(d); __memory_monitor_set(d); __cpu_checker_set(d); + __logger_set(d); iniparser_freedict(d); @@ -277,6 +313,7 @@ void _config_fini(void) { _D("config fini"); + __logger_fini(); __cpu_checker_fini(); __memory_monitor_fini(); __memory_status_fini(); diff --git a/src/launchpad-process-pool/src/launchpad_log.c b/src/launchpad-process-pool/src/launchpad_log.c index a8d00a3..6c28d01 100644 --- a/src/launchpad-process-pool/src/launchpad_log.c +++ b/src/launchpad-process-pool/src/launchpad_log.c @@ -17,11 +17,14 @@ #define _GNU_SOURCE #include #include +#include +#include "launchpad_config.h" #include "launchpad_log.h" #include "launchpad_logger.h" #include "log_private.h" +#define LOG_FILE "launchpad.log" #define PATH_LAUNCHPAD_LOG "/var/log/appfw/launchpad/launchpad.log" static logger_h __logger; @@ -43,11 +46,13 @@ int _log_print(const char *tag, const char *format, ...) int _log_init(void) { + char path[PATH_MAX]; int ret; _W("LOG_INIT"); - - ret = _logger_create(PATH_LAUNCHPAD_LOG, &__logger); + snprintf(path, sizeof(path), "%s/launchpad/launchpad.log", + _config_get_string_value(CONFIG_TYPE_LOGGER_PATH)); + ret = _logger_create(path, &__logger); if (ret != 0) { _E("Failed to create log file. error(%d)", ret); return ret; diff --git a/src/launchpad-process-pool/src/launchpad_logger.c b/src/launchpad-process-pool/src/launchpad_logger.c index 0a32b7e..529b00c 100644 --- a/src/launchpad-process-pool/src/launchpad_logger.c +++ b/src/launchpad-process-pool/src/launchpad_logger.c @@ -27,7 +27,9 @@ #include #include #include +#include +#include "launchpad_config.h" #include "launchpad_logger.h" #include "log_private.h" @@ -78,21 +80,25 @@ static int __create_directory(const char *path) static int __create_launchpad_directories(void) { + const char *logger_path; + char path[PATH_MAX]; int ret; - ret = __create_directory(LAUNCHPAD_LOG_APPFW_PATH); + logger_path = _config_get_string_value(CONFIG_TYPE_LOGGER_PATH); + ret = __create_directory(logger_path); if (ret < 0) return ret; - ret = __set_smack_label(LAUNCHPAD_LOG_APPFW_PATH, "_"); + ret = __set_smack_label(logger_path, "User::Home"); if (ret < 0) return ret; - ret = __create_directory(LAUNCHPAD_LOG_PATH); + snprintf(path, sizeof(path), "%s/launchpad", logger_path); + ret = __create_directory(path); if (ret < 0) return ret; - ret = __set_smack_label(LAUNCHPAD_LOG_PATH, "User"); + ret = __set_smack_label(path, "User"); if (ret < 0) return ret; -- 2.7.4 From 920da45e28c3932cf98a01aa57b2110b9d60202a Mon Sep 17 00:00:00 2001 From: Hwankyu Jhun Date: Thu, 26 Nov 2020 13:53:12 +0900 Subject: [PATCH 14/16] Release version 0.15.25 Changes: - Support logger path setting Change-Id: I4ee727cb650dc9c93f46e928e0ba2dbd5fd22849 Signed-off-by: Hwankyu Jhun --- packaging/launchpad.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/launchpad.spec b/packaging/launchpad.spec index c1c2592..cc87eb0 100644 --- a/packaging/launchpad.spec +++ b/packaging/launchpad.spec @@ -1,6 +1,6 @@ Name: launchpad Summary: Launchpad for launching applications -Version: 0.15.24 +Version: 0.15.25 Release: 1 Group: Application Framework/Daemons License: Apache-2.0 -- 2.7.4 From 859d29b93678e910960b7d9309b12a1607b1199d Mon Sep 17 00:00:00 2001 From: Hwankyu Jhun Date: Fri, 27 Nov 2020 07:36:24 +0900 Subject: [PATCH 15/16] Check executable file If an app_path is not executable, launchpad rejects the launch request. Change-Id: I2ae28b5c1852cb2d500d323fbbc2c4016f0f9720 Signed-off-by: Hwankyu Jhun --- src/launchpad-process-pool/src/launchpad.c | 23 +++++++++++++++++++++-- 1 file changed, 21 insertions(+), 2 deletions(-) diff --git a/src/launchpad-process-pool/src/launchpad.c b/src/launchpad-process-pool/src/launchpad.c index df329e7..78399c9 100644 --- a/src/launchpad-process-pool/src/launchpad.c +++ b/src/launchpad-process-pool/src/launchpad.c @@ -753,7 +753,7 @@ static int __real_send(int clifd, int ret) return 0; } -static void __send_result_to_caller(int clifd, int ret, const char *app_path) +static void __send_result_to_caller(int clifd, int ret) { _W("send result: %d", ret); @@ -2204,21 +2204,38 @@ static bool __handle_launch_event(int fd, io_condition_e cond, void *data) menu_info = _appinfo_create(kb); if (menu_info == NULL) { _E("such pkg no found"); + __send_result_to_caller(clifd, -EINVAL); + clifd = -1; goto end; } app_path = _appinfo_get_app_path(menu_info); if (app_path == NULL) { _E("app_path is NULL"); + __send_result_to_caller(clifd, -EINVAL); + clifd = -1; goto end; } + if (app_path[0] != '/') { _E("app_path is not absolute path"); + __send_result_to_caller(clifd, -EINVAL); + clifd = -1; + goto end; + } + + if (access(app_path, X_OK) != 0) { + ret = -errno; + _E("%s is not executable. errno(%d)", app_path, errno); + __send_result_to_caller(clifd, ret); + clifd = -1; goto end; } if (menu_info->hwacc == NULL) { _E("[launchpad] Failed to find H/W acceleration type"); + __send_result_to_caller(clifd, -EINVAL); + clifd = -1; goto end; } @@ -2261,6 +2278,8 @@ static bool __handle_launch_event(int fd, io_condition_e cond, void *data) _modify_bundle(kb, cr.pid, menu_info, pkt->cmd); if (menu_info->appid == NULL) { _E("unable to get appid from menu_info"); + __send_result_to_caller(clifd, -EINVAL); + clifd = -1; goto end; } @@ -2287,7 +2306,7 @@ static bool __handle_launch_event(int fd, io_condition_e cond, void *data) } _memory_monitor_reset_timer(); - __send_result_to_caller(clifd, pid, app_path); + __send_result_to_caller(clifd, pid); clifd = -1; end: if (clifd != -1) -- 2.7.4 From a0b583fc7532778d623d239ec073f7f834df4187 Mon Sep 17 00:00:00 2001 From: Hwankyu Jhun Date: Fri, 27 Nov 2020 09:44:15 +0900 Subject: [PATCH 16/16] Release version 0.15.26 Changes: - Check executable file Change-Id: Ic205fdbd383441271532388fc2263cb0cb5a333b Signed-off-by: Hwankyu Jhun --- packaging/launchpad.spec | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packaging/launchpad.spec b/packaging/launchpad.spec index cc87eb0..f498760 100644 --- a/packaging/launchpad.spec +++ b/packaging/launchpad.spec @@ -1,6 +1,6 @@ Name: launchpad Summary: Launchpad for launching applications -Version: 0.15.25 +Version: 0.15.26 Release: 1 Group: Application Framework/Daemons License: Apache-2.0 -- 2.7.4