Patch taken from Void Linux xbps source repository. Currently all ELF files (binaries and libraries), get installed to /usr/share/musikcube. This patch moves all those files to their normal locations and fixes the code to expect that diff --git a/.cmake/InstallFiles.cmake b/.cmake/InstallFiles.cmake index 62d3c003..01ef58ac 100644 --- a/.cmake/InstallFiles.cmake +++ b/.cmake/InstallFiles.cmake @@ -4,7 +4,7 @@ if (APPLE) install(FILES ${plugins} DESTINATION share/musikcube/plugins) else () file(GLOB plugins "bin/plugins/*.so") - install(FILES ${plugins} DESTINATION share/musikcube/plugins) + install(FILES ${plugins} DESTINATION lib/musikcube/plugins) endif () if (${BUILD_STANDALONE} MATCHES "true") @@ -43,20 +43,12 @@ endif() if (APPLE) install(FILES "bin/libmusikcore.dylib" DESTINATION share/musikcube) else() - install(FILES "bin/libmusikcore.so" DESTINATION share/musikcube) + install(FILES "bin/libmusikcore.so" DESTINATION lib/) endif() # executable and shell script for musikcube install( FILES bin/musikcube - DESTINATION share/musikcube - PERMISSIONS - OWNER_EXECUTE OWNER_READ OWNER_WRITE - GROUP_EXECUTE GROUP_READ GROUP_WRITE - WORLD_EXECUTE WORLD_READ) - -install( - FILES "${CMAKE_CURRENT_BINARY_DIR}/src/musikcube/musikcube" DESTINATION bin/ PERMISSIONS OWNER_EXECUTE OWNER_READ OWNER_WRITE @@ -58,14 +50,6 @@ install( # executable and shell script for daemon install( FILES bin/musikcubed - DESTINATION share/musikcube - PERMISSIONS - OWNER_EXECUTE OWNER_READ OWNER_WRITE - GROUP_EXECUTE GROUP_READ GROUP_WRITE - WORLD_EXECUTE WORLD_READ) - -install( - FILES "${CMAKE_CURRENT_BINARY_DIR}/src/musikcubed/musikcubed" DESTINATION bin/ PERMISSIONS OWNER_EXECUTE OWNER_READ OWNER_WRITE diff --git a/src/musikcore/support/Common.cpp b/src/musikcore/support/Common.cpp index 31703117..53aa8a88 100644 --- a/src/musikcore/support/Common.cpp +++ a/src/musikcore/support/Common.cpp @@ -87,78 +87,11 @@ namespace musik { namespace core { std::string GetPluginDirectory() { - std::string path(GetApplicationDirectory()); - path.append("/plugins/"); - return path; + return std::string("/usr/lib/musikcube/plugins"); } std::string GetApplicationDirectory() { - std::string result; - - #ifdef WIN32 - wchar_t widePath[2048]; - int length = GetModuleFileName(NULL, widePath, 2048); - if (length != 0 && length < 2048) { - result.assign(GetPath(u16to8(widePath).c_str())); - } - #elif __APPLE__ - char pathbuf[PATH_MAX + 1]; - uint32_t bufsize = sizeof(pathbuf); - _NSGetExecutablePath(pathbuf, &bufsize); - result.assign(pathbuf); - size_t last = result.find_last_of("/"); - result = result.substr(0, last); /* remove filename component */ - #else - char pathbuf[PATH_MAX + 1] = { 0 }; - - #ifdef __FreeBSD__ - int mib[4]; - mib[0] = CTL_KERN; - mib[1] = KERN_PROC; - mib[2] = KERN_PROC_PATHNAME; - mib[3] = -1; - size_t bufsize = sizeof(pathbuf); - sysctl(mib, 4, pathbuf, &bufsize, nullptr, 0); - #elif defined __OpenBSD__ - int mib[4]; - char **argv; - size_t len = ARG_MAX; - - mib[0] = CTL_KERN; - mib[1] = KERN_PROC_ARGS; - mib[2] = getpid(); - mib[3] = KERN_PROC_ARGV; - - argv = new char*[len]; - if (sysctl(mib, 4, argv, &len, nullptr, 0) < 0) abort(); - - fs::path command = fs::absolute(fs::path(fs::u8path(argv[0]))); - realpath(command.u8string().c_str(), pathbuf); - delete[] argv; - #elif defined __HAIKU__ - image_info ii; - int32 c = 0; - while (get_next_image_info(0, &c, &ii) == B_OK) { - if (ii.type == B_APP_IMAGE) { - if (strlen(ii.name)) { - std::string fn(ii.name); - result = fs::u8path(fn).u8string(); - } - } - } - #else - std::string pathToProc = u8fmt("/proc/%d/exe", (int) getpid()); - readlink(pathToProc.c_str(), pathbuf, PATH_MAX); - #endif - - if (!result.size() && strlen(pathbuf)) { - result.assign(pathbuf); - } - size_t last = result.find_last_of("/"); - result = result.substr(0, last); /* remove filename component */ - #endif - - return result; + return std::string("/usr/share/musikcube"); } std::string GetHomeDirectory() {