-
Notifications
You must be signed in to change notification settings - Fork 44
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
5 changed files
with
299 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
252 changes: 252 additions & 0 deletions
252
recipes-ubuntu/mtp-server/mtp-server/0001-Remove-dbus-dependency.patch
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,252 @@ | ||
From 9e16a5f8758a44adfd747e3d8be05f78adf70673 Mon Sep 17 00:00:00 2001 | ||
From: Josef Gajdusek <[email protected]> | ||
Date: Mon, 29 May 2017 22:39:21 +0200 | ||
Subject: [PATCH] Remove dbus dependency | ||
|
||
--- | ||
CMakeLists.txt | 9 ++-- | ||
server/server.cpp | 145 +++++++----------------------------------------------- | ||
2 files changed, 23 insertions(+), 131 deletions(-) | ||
|
||
diff --git a/CMakeLists.txt b/CMakeLists.txt | ||
index 46bff47..2c2f1a2 100644 | ||
--- a/CMakeLists.txt | ||
+++ b/CMakeLists.txt | ||
@@ -14,7 +14,6 @@ set(MTP_VERSION_MINOR 0) | ||
set(MTP_VERSION_PATCH 0) | ||
|
||
find_package(Boost REQUIRED COMPONENTS thread system filesystem unit_test_framework) | ||
-pkg_check_modules(DBUSCPP REQUIRED dbus-cpp) | ||
pkg_check_modules(GLOG REQUIRED libglog) | ||
|
||
set( | ||
@@ -61,7 +60,6 @@ include_directories( | ||
include/ | ||
libusbhost/include | ||
${Boost_INCLUDE_DIRS} | ||
- ${DBUSCPP_INCLUDE_DIRS} | ||
) | ||
|
||
add_library( | ||
@@ -73,7 +71,6 @@ target_link_libraries( | ||
mtpserver | ||
android-properties | ||
${GLOG_LIBRARIES} | ||
- ${DBUSCPP_LIBRARIES} | ||
) | ||
|
||
set_target_properties( | ||
@@ -102,3 +99,9 @@ add_subdirectory(libusbhost) | ||
add_subdirectory(server) | ||
add_subdirectory(tests) | ||
add_subdirectory(po) | ||
+ | ||
+target_link_libraries(mtpserver pthread) | ||
+ | ||
+target_link_libraries(mtpserver pthread) | ||
+ | ||
+target_link_libraries(mtpserver pthread) | ||
diff --git a/server/server.cpp b/server/server.cpp | ||
index 0a9a846..62af1bc 100644 | ||
--- a/server/server.cpp | ||
+++ b/server/server.cpp | ||
@@ -35,70 +35,9 @@ | ||
#include <hybris/properties/properties.h> | ||
#include <glog/logging.h> | ||
|
||
-#include <core/dbus/bus.h> | ||
-#include <core/dbus/object.h> | ||
-#include <core/dbus/property.h> | ||
-#include <core/dbus/service.h> | ||
-#include <core/dbus/signal.h> | ||
|
||
-#include <core/dbus/asio/executor.h> | ||
-#include <core/dbus/types/stl/tuple.h> | ||
-#include <core/dbus/types/stl/vector.h> | ||
-#include <core/dbus/types/struct.h> | ||
- | ||
- | ||
-namespace dbus = core::dbus; | ||
using namespace android; | ||
|
||
-namespace core | ||
-{ | ||
-dbus::Bus::Ptr the_session_bus() | ||
-{ | ||
- static dbus::Bus::Ptr session_bus = std::make_shared<dbus::Bus>(dbus::WellKnownBus::session); | ||
- return session_bus; | ||
-} | ||
- | ||
-struct UnityGreeter | ||
-{ | ||
- struct Properties | ||
- { | ||
- struct IsActive | ||
- { | ||
- inline static std::string name() | ||
- { | ||
- return "IsActive"; | ||
- }; | ||
- typedef UnityGreeter Interface; | ||
- typedef bool ValueType; | ||
- static const bool readable = true; | ||
- static const bool writable = false; | ||
- }; | ||
- }; | ||
-}; | ||
-} | ||
- | ||
-namespace core | ||
-{ | ||
-namespace dbus | ||
-{ | ||
-namespace traits | ||
-{ | ||
-template<> | ||
-struct Service<core::UnityGreeter> | ||
-{ | ||
- inline static const std::string& interface_name() | ||
- { | ||
- static const std::string s | ||
- { | ||
- "com.canonical.UnityGreeter" | ||
- }; | ||
- return s; | ||
- } | ||
-}; | ||
-} | ||
-} | ||
-} | ||
- | ||
namespace | ||
{ | ||
struct FileSystemConfig | ||
@@ -114,8 +53,6 @@ class MtpDaemon | ||
|
||
private: | ||
struct passwd *userdata; | ||
- dbus::Bus::Ptr bus; | ||
- boost::thread dbus_thread; | ||
|
||
// Mtp stuff | ||
MtpServer* server; | ||
@@ -124,8 +61,7 @@ private: | ||
MtpDatabase* mtp_database; | ||
|
||
// Security | ||
- std::shared_ptr<core::dbus::Property<core::UnityGreeter::Properties::IsActive> > is_active; | ||
- bool screen_locked = true; | ||
+ bool screen_locked = false; | ||
|
||
// inotify stuff | ||
boost::thread notifier_thread; | ||
@@ -242,17 +178,6 @@ private: | ||
read_more_notify(); | ||
} | ||
|
||
- void drive_bus() | ||
- { | ||
- try { | ||
- bus->run(); | ||
- } | ||
- catch (...) { | ||
- PLOG(ERROR) << "There was an unexpected error in DBus; terminating."; | ||
- server->stop(); | ||
- } | ||
- } | ||
- | ||
public: | ||
|
||
MtpDaemon(int fd): | ||
@@ -285,15 +210,6 @@ public: | ||
userdata->pw_gid, | ||
FileSystemConfig::file_perm, | ||
FileSystemConfig::directory_perm); | ||
- | ||
- // security / screen locking | ||
- bus = core::the_session_bus(); | ||
- bus->install_executor(core::dbus::asio::make_executor(bus)); | ||
- dbus_thread = boost::thread(&MtpDaemon::drive_bus, this); | ||
- auto greeter_service = dbus::Service::use_service(bus, "com.canonical.UnityGreeter"); | ||
- dbus::Object::Ptr greeter = greeter_service->object_for_path(dbus::types::ObjectPath("/")); | ||
- | ||
- is_active = greeter->get_property<core::UnityGreeter::Properties::IsActive>(); | ||
} | ||
|
||
void initStorage() | ||
@@ -352,7 +268,6 @@ public: | ||
// Cleanup | ||
inotify_rm_watch(inotify_fd, watch_fd); | ||
io_svc.stop(); | ||
- dbus_thread.detach(); | ||
notifier_thread.detach(); | ||
io_service_thread.join(); | ||
close(inotify_fd); | ||
@@ -360,48 +275,22 @@ public: | ||
|
||
void run() | ||
{ | ||
- if (is_active->get()) { | ||
- is_active->changed().connect([this](bool active) | ||
- { | ||
- if (!active) { | ||
- screen_locked = active; | ||
- VLOG(2) << "device was unlocked, adding storage"; | ||
- if (home_storage && !home_storage_added) { | ||
- server->addStorage(home_storage); | ||
- home_storage_added = true; | ||
- } | ||
- BOOST_FOREACH(std::string name, removables | boost::adaptors::map_keys) { | ||
- auto t = removables.at(name); | ||
- MtpStorage *storage = std::get<0>(t); | ||
- bool added = std::get<1>(t); | ||
- if (!added) { | ||
- mtp_database->addStoragePath(storage->getPath(), | ||
- std::string(), | ||
- storage->getStorageID(), | ||
- true); | ||
- server->addStorage(storage); | ||
- } | ||
- } | ||
- } | ||
- }); | ||
- } else { | ||
- screen_locked = false; | ||
- VLOG(2) << "device is not locked, adding storage"; | ||
- if (home_storage) { | ||
- server->addStorage(home_storage); | ||
- home_storage_added = true; | ||
- } | ||
- BOOST_FOREACH(std::string name, removables | boost::adaptors::map_keys) { | ||
- auto t = removables.at(name); | ||
- MtpStorage *storage = std::get<0>(t); | ||
- bool added = std::get<1>(t); | ||
- if (!added) { | ||
- mtp_database->addStoragePath(storage->getPath(), | ||
- std::string(), | ||
- storage->getStorageID(), | ||
- true); | ||
- server->addStorage(storage); | ||
- } | ||
+ screen_locked = false; | ||
+ VLOG(2) << "device is not locked, adding storage"; | ||
+ if (home_storage) { | ||
+ server->addStorage(home_storage); | ||
+ home_storage_added = true; | ||
+ } | ||
+ BOOST_FOREACH(std::string name, removables | boost::adaptors::map_keys) { | ||
+ auto t = removables.at(name); | ||
+ MtpStorage *storage = std::get<0>(t); | ||
+ bool added = std::get<1>(t); | ||
+ if (!added) { | ||
+ mtp_database->addStoragePath(storage->getPath(), | ||
+ std::string(), | ||
+ storage->getStorageID(), | ||
+ true); | ||
+ server->addStorage(storage); | ||
} | ||
} | ||
|
||
-- | ||
2.13.0 | ||
|
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,14 @@ | ||
[Unit] | ||
Description=mtp-server service | ||
Requires=usb-setup.service dev-mtp_usb.device | ||
StartLimitIntervalSec=0 | ||
|
||
[Service] | ||
Type=simple | ||
Environment=GLOG_logtostderr=1 | ||
Restart=always | ||
ExecStart=/usr/bin/mtp-server | ||
User=ceres | ||
|
||
[Install] | ||
WantedBy=multi-user.target |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,31 @@ | ||
SUMMARY = "A port of Android's mtp server implementation to Ubuntu." | ||
LICENSE = "GPL-3.0 & Apache-2.0" | ||
LIC_FILES_CHKSUM = " \ | ||
file://COPYING;md5=d32239bcb673463ab874e80d47fae504 \ | ||
file://MODULE_LICENSE_APACHE2;md5=d41d8cd98f00b204e9800998ecf8427e \ | ||
file://NOTICE;md5=9645f39e9db895a4aa6e02cb57294595 \ | ||
" | ||
|
||
SRC_URI = " \ | ||
bzr://code.launchpad.net/~phablet-team/mtp/trunk \ | ||
file://0001-Remove-dbus-dependency.patch \ | ||
file://mtp-server.service \ | ||
" | ||
S = "${WORKDIR}/trunk" | ||
SRCREV = "[email protected]" | ||
|
||
inherit cmake gettext | ||
|
||
DEPENDS += "boost libhybris glog" | ||
|
||
do_configure_prepend() { | ||
echo -e "\ntarget_link_libraries(mtpserver pthread)" >> "${S}/CMakeLists.txt" | ||
} | ||
|
||
do_install_append() { | ||
install -m 644 -D "../mtp-server.service" ${D}/lib/systemd/system/mtp-server.service | ||
install -d ${D}/lib/systemd/system/multi-user.target.wants/ | ||
ln -s ../mtp-server.service ${D}/lib/systemd/system/multi-user.target.wants/mtp-server.service | ||
} | ||
|
||
FILES_${PN} += " /lib/systemd/system " |