Systemd is always available 59/234459/7
authorDariusz Michaluk <d.michaluk@samsung.com>
Tue, 26 May 2020 10:35:01 +0000 (12:35 +0200)
committerDariusz Michaluk <d.michaluk@samsung.com>
Mon, 6 Jul 2020 09:59:38 +0000 (11:59 +0200)
DCM is not used outside Tizen,
we can rely on systemd being always available.

Additionally not used boost::filesystem dependency was removed.

Change-Id: I61d932dfe9481f8345b3c36f4f5dc7390770260e

CMakeLists.txt
cmake/CheckFrameworks.cmake
dcm-daemon/CMakeLists.txt
dcm-daemon/main.cpp
dcm-daemon/serviceadapter.cpp
dcm-daemon/serviceadapter.h
systemd/CMakeLists.txt

index 5dc2002..4091899 100644 (file)
@@ -65,12 +65,6 @@ ADD_DEFINITIONS("-Wextra")
 SET(CMAKE_POSITION_INDEPENDENT_CODE "True")
 SET(CMAKE_EXE_LINKER_FLAGS "${CMAKE_EXE_LINKER_FLAGS} -pie")
 
-option(ENABLE_SYSTEMD_SUPPORT "Enable support for systemd" ON)
-
-IF(ENABLE_SYSTEMD_SUPPORT AND NOT SYSTEMD_FOUND)
-       message(FATAL_ERROR "systemd support required but systemd not found")
-ENDIF()
-
 include_directories(${CMAKE_CURRENT_BINARY_DIR})
 include_directories(shared)
 
index bb3bf54..15611c0 100644 (file)
@@ -7,7 +7,6 @@ INCLUDE(CheckIncludeFiles)
 FIND_PACKAGE(Boost REQUIRED
        COMPONENTS
        serialization
-       filesystem
        log
        thread
        system
@@ -47,5 +46,3 @@ CHECK_INCLUDE_FILES("mbedtls/rsa.h;mbedtls/ecdsa.h" MBEDTLS_HEADERS_OK)
 IF(NOT MBEDTLS_HEADERS_OK)
        message(FATAL_ERROR "No mbedtls headers")
 ENDIF()
-
-PKG_CHECK_MODULES(SYSTEMD libsystemd)
index 6993d8d..fb89979 100644 (file)
@@ -31,12 +31,13 @@ INCLUDE_DIRECTORIES(${DLOG_INCLUDE_DIRS})
 LINK_DIRECTORIES(${DLOG_LIBRARY_DIRS})
 ADD_DEFINITIONS(${DLOG_CFLAGS_OTHER})
 
-IF(ENABLE_SYSTEMD_SUPPORT)
-       include_directories(${SYSTEMD_INCLUDE_DIRS})
-       link_directories(${SYSTEMD_LIBRARY_DIRS})
-       add_definitions(${SYSTEMD_CFLAGS_OTHER})
-       add_definitions(-DUSE_SYSTEMD_API=1)
-ENDIF(ENABLE_SYSTEMD_SUPPORT)
+PKG_CHECK_MODULES(SYSTEMD
+       REQUIRED
+       libsystemd)
+
+INCLUDE_DIRECTORIES(${SYSTEMD_INCLUDE_DIRS})
+LINK_DIRECTORIES(${SYSTEMD_LIBRARY_DIRS})
+ADD_DEFINITIONS(${SYSTEMD_CFLAGS_OTHER})
 
 PKG_CHECK_MODULES(CYNARA
        REQUIRED
@@ -73,18 +74,14 @@ add_dependencies(device-certificate-managerd protobuf_generated)
 target_link_libraries(device-certificate-managerd
        ${Boost_LOG_LIBRARY}
        ${Boost_THREAD_LIBRARY}
-       ${Boost_FILESYSTEM_LIBRARY}
        ${Boost_SYSTEM_LIBRARY}
        ${CMAKE_THREAD_LIBS_INIT}
        ${DLOG_LIBRARIES}
        ${CYNARA_LIBRARIES}
+       ${SYSTEMD_LIBRARIES}
        device-certificate-manager
        dl)
 
-IF(ENABLE_SYSTEMD_SUPPORT)
-       target_link_libraries(device-certificate-managerd ${SYSTEMD_LIBRARIES})
-ENDIF(ENABLE_SYSTEMD_SUPPORT)
-
 ###### Installation #######
 
 INSTALL(TARGETS device-certificate-managerd
index 595db74..2cae3d2 100644 (file)
@@ -107,7 +107,7 @@ int main()
 
        BOOST_LOG_FUNCTION();
 
-       service_adapter serviceAdapter(DCM_UNIX_SOCKET_PATH);
+       service_adapter serviceAdapter;
 
        cynara_configuration * cynara_conf = nullptr;
        error = cynara_configuration_create(&cynara_conf);
index 769a7c7..6ea5804 100644 (file)
@@ -1,6 +1,6 @@
 /******************************************************************
  *
- * Copyright 2017 - 2019 Samsung Electronics All Rights Reserved.
+ * Copyright 2017 - 2020 Samsung Electronics All Rights Reserved.
  *
  * Author: Jaroslaw Pelczar <j.pelczar@samsung.com>
  *
 #include "serviceadapter.h"
 #include "logging.h"
 
-#include <boost/filesystem.hpp>
 #include <cstring>
 
-#ifdef USE_SYSTEMD_API
 #include <systemd/sd-daemon.h>
-#endif
 
-service_adapter::service_adapter(const std::string& default_socket_path) :
-       fDefaultSocketPath(default_socket_path)
+service_adapter::service_adapter()
 {
 }
 
 service_adapter::~service_adapter()
 {
-       if(fDefaultSocketPathUsed) {
-                boost::filesystem::remove(fDefaultSocketPath);
-       }
 }
 
 boost::asio::local::stream_protocol::acceptor service_adapter::create_platform_socket_acceptor(boost::asio::io_service& io_service)
 {
        BOOST_LOG_FUNCTION();
 
-#ifdef USE_SYSTEMD_API
        BOOST_LOG_SEV(dcm_logger::get(), log_severity::debug) << "Try to get socket from systemd";
 
        int n = sd_listen_fds(0);
@@ -67,14 +59,6 @@ boost::asio::local::stream_protocol::acceptor service_adapter::create_platform_s
        BOOST_LOG_SEV(dcm_logger::get(), log_severity::error) << "No systemd sockets found";
 
        throw std::runtime_error("No socket created by systemd");
-#else
-       fDefaultSocketPathUsed = true;
-       boost::filesystem::remove(fDefaultSocketPath);
-
-       return boost::asio::local::stream_protocol::acceptor(
-                               io_service,
-                               boost::asio::local::stream_protocol::endpoint(fDefaultSocketPath));
-#endif
 }
 
 void service_adapter::notify_start_complete()
@@ -82,11 +66,9 @@ void service_adapter::notify_start_complete()
        BOOST_LOG_FUNCTION();
        BOOST_LOG_SEV(dcm_logger::get(), log_severity::normal) << "Notify start completed to systemd";
 
-#ifdef USE_SYSTEMD_API
        sd_listen_fds(1);
        sd_notify(0, "READY=1");
        fStartCompleteNotified = true;
-#endif
 }
 
 void service_adapter::notify_start_failure(int error)
@@ -94,7 +76,6 @@ void service_adapter::notify_start_failure(int error)
        BOOST_LOG_FUNCTION();
        BOOST_LOG_SEV(dcm_logger::get(), log_severity::error) << "Notify start failure";
 
-#ifdef USE_SYSTEMD_API
        if(!fStartCompleteNotified) {
                char buffer[512];
                buffer[0] = '\0';
@@ -103,5 +84,4 @@ void service_adapter::notify_start_failure(int error)
                else
                        sd_notifyf(0, "STATUS=Failed to start up: (no message)\nERRNO=%d", error);
        }
-#endif
 }
index 946b188..e19e1ab 100644 (file)
@@ -1,6 +1,6 @@
 /******************************************************************
  *
- * Copyright 2017 Samsung Electronics All Rights Reserved.
+ * Copyright 2017 - 2020 Samsung Electronics All Rights Reserved.
  *
  * Author: Jaroslaw Pelczar <j.pelczar@samsung.com>
  *
@@ -26,7 +26,7 @@
 
 class service_adapter final : public boost::noncopyable {
 public:
-       service_adapter(const std::string& default_socket_path);
+       service_adapter();
        ~service_adapter();
 
        boost::asio::local::stream_protocol::acceptor create_platform_socket_acceptor(boost::asio::io_service& io_service);
@@ -35,8 +35,7 @@ public:
        void notify_start_failure(int error);
 
 private:
-       std::string                     fDefaultSocketPath;
-       bool                            fDefaultSocketPathUsed = false;
+       std::string                     fDefaultSocketPath = DCM_UNIX_SOCKET_PATH;
        bool                            fStartCompleteNotified = false;
 };
 
index 984d788..77847b0 100644 (file)
 configure_file(device-certificate-manager.service.in device-certificate-manager.service @ONLY)
 configure_file(device-certificate-manager.socket.in device-certificate-manager.socket @ONLY)
 
-IF(NOT ("${SYSTEMD_UNIT_DIR}" STREQUAL ""))
-
 install(FILES
        ${CMAKE_CURRENT_BINARY_DIR}/device-certificate-manager.service
        ${CMAKE_CURRENT_BINARY_DIR}/device-certificate-manager.socket
        DESTINATION ${SYSTEMD_UNIT_DIR})
-
-ENDIF()