diff --git a/.gitignore b/.gitignore index f3b4966..a9b4b45 100644 --- a/.gitignore +++ b/.gitignore @@ -2,6 +2,8 @@ build*/ parts/ stage/ prime/ +snap/ +android-images/ *.snap CMakeLists.txt.user *.o.cmd @@ -15,6 +17,7 @@ modules.order .tmp_versions .idea + debian/anbox-modules-dkms.debhelper.log debian/anbox-modules-dkms.substvars debian/anbox-modules-dkms/ diff --git a/CMakeLists.txt b/CMakeLists.txt index 71aa61d..0be25f7 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -105,8 +105,11 @@ endif() if (ANBOX_VERSION_SUFFIX) set(ANBOX_VERSION "${ANBOX_VERSION}-${ANBOX_VERSION_SUFFIX}") endif() -configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/anbox/build/version.h.in - ${CMAKE_CURRENT_SOURCE_DIR}/src/anbox/build/version.h) +set(ANBOX_RESOURCE_DIR "${CMAKE_INSTALL_DATADIR}/anbox") +set(ANBOX_RESOURCE_DIR_FULL "${CMAKE_INSTALL_FULL_DATADIR}/anbox") +set(ANBOX_STATEDIR_FULL "${CMAKE_INSTALL_FULL_LOCALSTATEDIR}/anbox") +configure_file(${CMAKE_CURRENT_SOURCE_DIR}/src/anbox/build/config.h.in + ${CMAKE_CURRENT_SOURCE_DIR}/src/anbox/build/config.h) add_subdirectory(external) add_subdirectory(src) @@ -118,7 +121,7 @@ if (NOT "${HOST_CMAKE_C_COMPILER}" STREQUAL "") message(STATUS "Host C compiler: ${HOST_CMAKE_CXX_COMPILER}") endif() -install(FILES data/ui/loading-screen.png DESTINATION share/anbox/ui) +install(FILES data/ui/loading-screen.png DESTINATION ${ANBOX_RESOURCE_DIR}/ui) # uninstall target configure_file("${CMAKE_CURRENT_SOURCE_DIR}/cmake_uninstall.cmake.in" diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt index cfa9e9f..bca9db8 100644 --- a/src/CMakeLists.txt +++ b/src/CMakeLists.txt @@ -60,10 +60,10 @@ set(SOURCES anbox/cli.cpp anbox/runtime.cpp anbox/daemon.cpp - anbox/config.cpp + anbox/system_configuration.cpp anbox/not_reachable.cpp - anbox/build/version.h.in + anbox/build/config.h.in anbox/android/intent.cpp anbox/android/ip_config_builder.cpp diff --git a/src/anbox/application/database.cpp b/src/anbox/application/database.cpp index 6010cf5..c3b2468 100644 --- a/src/anbox/application/database.cpp +++ b/src/anbox/application/database.cpp @@ -17,7 +17,7 @@ #include "anbox/application/database.h" #include "anbox/application/launcher_storage.h" -#include "anbox/config.h" +#include "anbox/system_configuration.h" #include "anbox/logger.h" namespace anbox { diff --git a/src/anbox/audio/server.cpp b/src/anbox/audio/server.cpp index 02f3415..ad13968 100644 --- a/src/anbox/audio/server.cpp +++ b/src/anbox/audio/server.cpp @@ -22,7 +22,7 @@ #include "anbox/network/local_socket_messenger.h" #include "anbox/network/message_processor.h" #include "anbox/common/type_traits.h" -#include "anbox/config.h" +#include "anbox/system_configuration.h" #include "anbox/utils.h" #include "anbox/logger.h" diff --git a/src/anbox/bridge/android_api_stub.cpp b/src/anbox/bridge/android_api_stub.cpp index e08eb30..5010933 100644 --- a/src/anbox/bridge/android_api_stub.cpp +++ b/src/anbox/bridge/android_api_stub.cpp @@ -16,7 +16,7 @@ */ #include "anbox/bridge/android_api_stub.h" -#include "anbox/config.h" +#include "anbox/system_configuration.h" #include "anbox/logger.h" #include "anbox/rpc/channel.h" #include "anbox/utils.h" diff --git a/src/anbox/build/version.h.in b/src/anbox/build/config.h.in similarity index 77% rename from src/anbox/build/version.h.in rename to src/anbox/build/config.h.in index 14c5397..01b7e83 100644 --- a/src/anbox/build/version.h.in +++ b/src/anbox/build/config.h.in @@ -17,8 +17,8 @@ * */ -#ifndef ANBOX_VERSION_H_ -#define ANBOX_VERSION_H_ +#ifndef ANBOX_CONFIG_H_ +#define ANBOX_CONFIG_H_ #include #include @@ -27,7 +27,11 @@ namespace anbox { namespace build { /// @brief version marks the version static constexpr const char *version{"@ANBOX_VERSION@"}; + +// path for system configuration +static constexpr const char *default_resource_path{"@ANBOX_RESOURCE_DIR_FULL@"}; +static constexpr const char *default_data_path{"@ANBOX_STATEDIR_FULL@"}; } // namespace build } // namespace anbox -#endif // ANBOX_VERSION_H_ +#endif // ANBOX_CONFIG_H_ diff --git a/src/anbox/cmds/container_manager.cpp b/src/anbox/cmds/container_manager.cpp index 3356fd7..cac3390 100644 --- a/src/anbox/cmds/container_manager.cpp +++ b/src/anbox/cmds/container_manager.cpp @@ -20,7 +20,7 @@ #include "anbox/common/loop_device_allocator.h" #include "anbox/logger.h" #include "anbox/runtime.h" -#include "anbox/config.h" +#include "anbox/system_configuration.h" #include "core/posix/signal.h" #include "core/posix/exec.h" diff --git a/src/anbox/cmds/launch.cpp b/src/anbox/cmds/launch.cpp index 7762af3..e5cc5a9 100644 --- a/src/anbox/cmds/launch.cpp +++ b/src/anbox/cmds/launch.cpp @@ -20,7 +20,7 @@ #include "anbox/dbus/stub/application_manager.h" #include "anbox/common/dispatcher.h" #include "anbox/ui/splash_screen.h" -#include "anbox/config.h" +#include "anbox/system_configuration.h" #include "anbox/runtime.h" #include "anbox/logger.h" @@ -119,12 +119,6 @@ anbox::cmds::Launch::Launch() auto bus = std::make_shared(bus_type); bus->install_executor(core::dbus::asio::make_executor(bus, rt->service())); - const auto snap_path = utils::get_env_value("SNAP"); - if (!snap_path.empty()) { - const auto resource_path = fs::path(snap_path) / "usr" / "share" / "anbox"; - SystemConfiguration::instance().set_resource_path(resource_path); - } - std::shared_ptr ss; // Instead of relying on the user session init system to start our diff --git a/src/anbox/cmds/session_manager.cpp b/src/anbox/cmds/session_manager.cpp index 4eaf5ac..4988967 100644 --- a/src/anbox/cmds/session_manager.cpp +++ b/src/anbox/cmds/session_manager.cpp @@ -35,7 +35,7 @@ std::istream& operator>>(std::istream& in, anbox::graphics::GLRendererServer::Co #include "anbox/cmds/session_manager.h" #include "anbox/common/dispatcher.h" -#include "anbox/config.h" +#include "anbox/system_configuration.h" #include "anbox/container/client.h" #include "anbox/dbus/skeleton/service.h" #include "anbox/input/manager.h" diff --git a/src/anbox/cmds/system_info.cpp b/src/anbox/cmds/system_info.cpp index 051f3ce..83848c7 100644 --- a/src/anbox/cmds/system_info.cpp +++ b/src/anbox/cmds/system_info.cpp @@ -21,7 +21,7 @@ #include "anbox/utils/environment_file.h" #include "anbox/logger.h" -#include "anbox/build/version.h" +#include "anbox/build/config.h" #include #include diff --git a/src/anbox/cmds/version.cpp b/src/anbox/cmds/version.cpp index 6fea8f9..d63ddf9 100644 --- a/src/anbox/cmds/version.cpp +++ b/src/anbox/cmds/version.cpp @@ -18,7 +18,7 @@ */ #include "anbox/cmds/version.h" -#include "anbox/build/version.h" +#include "anbox/build/config.h" #include "anbox/utils.h" anbox::cmds::Version::Version() diff --git a/src/anbox/container/client.cpp b/src/anbox/container/client.cpp index bfbbf3e..99251e2 100644 --- a/src/anbox/container/client.cpp +++ b/src/anbox/container/client.cpp @@ -16,7 +16,7 @@ */ #include "anbox/container/client.h" -#include "anbox/config.h" +#include "anbox/system_configuration.h" #include "anbox/container/management_api_stub.h" #include "anbox/logger.h" #include "anbox/network/local_socket_messenger.h" diff --git a/src/anbox/container/lxc_container.cpp b/src/anbox/container/lxc_container.cpp index a2e0705..962832b 100644 --- a/src/anbox/container/lxc_container.cpp +++ b/src/anbox/container/lxc_container.cpp @@ -17,7 +17,7 @@ #include "anbox/android/ip_config_builder.h" #include "anbox/container/lxc_container.h" -#include "anbox/config.h" +#include "anbox/system_configuration.h" #include "anbox/logger.h" #include "anbox/utils.h" diff --git a/src/anbox/container/service.cpp b/src/anbox/container/service.cpp index 15d90e2..b84d7db 100644 --- a/src/anbox/container/service.cpp +++ b/src/anbox/container/service.cpp @@ -16,7 +16,7 @@ */ #include "anbox/container/service.h" -#include "anbox/config.h" +#include "anbox/system_configuration.h" #include "anbox/container/lxc_container.h" #include "anbox/container/management_api_message_processor.h" #include "anbox/container/management_api_skeleton.h" diff --git a/src/anbox/daemon.cpp b/src/anbox/daemon.cpp index a40da89..806503d 100644 --- a/src/anbox/daemon.cpp +++ b/src/anbox/daemon.cpp @@ -18,7 +18,7 @@ #include #include -#include "anbox/config.h" +#include "anbox/system_configuration.h" #include "anbox/daemon.h" #include "anbox/logger.h" diff --git a/src/anbox/input/manager.cpp b/src/anbox/input/manager.cpp index 0e5a56d..eacdd8b 100644 --- a/src/anbox/input/manager.cpp +++ b/src/anbox/input/manager.cpp @@ -16,7 +16,7 @@ */ #include "anbox/input/manager.h" -#include "anbox/config.h" +#include "anbox/system_configuration.h" #include "anbox/input/device.h" #include "anbox/runtime.h" #include "anbox/utils.h" diff --git a/src/anbox/config.cpp b/src/anbox/system_configuration.cpp similarity index 83% rename from src/anbox/config.cpp rename to src/anbox/system_configuration.cpp index a13aa43..675c9e5 100644 --- a/src/anbox/config.cpp +++ b/src/anbox/system_configuration.cpp @@ -16,8 +16,9 @@ */ -#include "anbox/config.h" +#include "anbox/system_configuration.h" #include "anbox/utils.h" +#include "anbox/build/config.h" #include "external/xdg/xdg.h" @@ -41,10 +42,6 @@ void anbox::SystemConfiguration::set_data_path(const std::string &path) { data_path = path; } -void anbox::SystemConfiguration::set_resource_path(const fs::path &path) { - resource_path = path; -} - fs::path anbox::SystemConfiguration::data_dir() const { return data_path; } @@ -88,3 +85,17 @@ anbox::SystemConfiguration& anbox::SystemConfiguration::instance() { static SystemConfiguration config; return config; } + +anbox::SystemConfiguration::SystemConfiguration() { + auto detect_resource_path = [] () -> fs::path { + const auto snap_path = utils::get_env_value("SNAP"); + if (!snap_path.empty()) { + return fs::path(snap_path) / "usr" / "share" / "anbox"; + } else { + return anbox::build::default_resource_path; + } + }; + + resource_path = detect_resource_path(); + data_path = anbox::build::default_data_path; +} diff --git a/src/anbox/config.h b/src/anbox/system_configuration.h similarity index 83% rename from src/anbox/config.h rename to src/anbox/system_configuration.h index 0fce571..e0526ec 100644 --- a/src/anbox/config.h +++ b/src/anbox/system_configuration.h @@ -15,8 +15,8 @@ * */ -#ifndef ANBOX_CONFIG_H_ -#define ANBOX_CONFIG_H_ +#ifndef ANBOX_SYSTEM_CONFIGURATION_H_ +#define ANBOX_SYSTEM_CONFIGURATION_H_ #include #include @@ -31,7 +31,6 @@ class SystemConfiguration { virtual ~SystemConfiguration() = default; void set_data_path(const std::string &path); - void set_resource_path(const boost::filesystem::path &path); boost::filesystem::path data_dir() const; std::string rootfs_dir() const; @@ -44,12 +43,11 @@ class SystemConfiguration { std::string resource_dir() const; protected: - SystemConfiguration() = default; - - boost::filesystem::path data_path = "/var/lib/anbox"; - boost::filesystem::path resource_path = "/usr/share/anbox"; + SystemConfiguration(); + boost::filesystem::path data_path; + boost::filesystem::path resource_path; }; } // namespace anbox -#endif +#endif // ANBOX_SYSTEM_CONFIGURATION_H_ diff --git a/src/anbox/ui/splash_screen.cpp b/src/anbox/ui/splash_screen.cpp index d5b9b48..01ed648 100644 --- a/src/anbox/ui/splash_screen.cpp +++ b/src/anbox/ui/splash_screen.cpp @@ -16,7 +16,7 @@ */ #include "anbox/ui/splash_screen.h" -#include "anbox/config.h" +#include "anbox/system_configuration.h" #include "anbox/utils.h" #include "anbox/logger.h"