diff options
author | V3n3RiX <venerix@redcorelinux.org> | 2021-01-01 21:06:00 +0000 |
---|---|---|
committer | V3n3RiX <venerix@redcorelinux.org> | 2021-01-01 21:06:00 +0000 |
commit | 129160ec854dca4c3fedb5bcfbcb56930371da0f (patch) | |
tree | 53bf797418ac5e9b99c41ca0382c87b82421e5de /app-i18n/librime | |
parent | 441d1370330332b7d78f238d2f5e13f7aed5e4e0 (diff) |
gentoo new year resync : 01.01.2021
Diffstat (limited to 'app-i18n/librime')
-rw-r--r-- | app-i18n/librime/Manifest | 8 | ||||
-rw-r--r-- | app-i18n/librime/files/librime-1.6.0-plugins.patch | 247 | ||||
-rw-r--r-- | app-i18n/librime/files/librime-1.6.1-plugins.patch | 247 | ||||
-rw-r--r-- | app-i18n/librime/librime-1.6.0.ebuild | 73 | ||||
-rw-r--r-- | app-i18n/librime/librime-1.6.1.ebuild | 73 | ||||
-rw-r--r-- | app-i18n/librime/metadata.xml | 40 |
6 files changed, 669 insertions, 19 deletions
diff --git a/app-i18n/librime/Manifest b/app-i18n/librime/Manifest index 6e47f37d5825..6edc5b700841 100644 --- a/app-i18n/librime/Manifest +++ b/app-i18n/librime/Manifest @@ -1,4 +1,10 @@ AUX librime-1.5.3-log_files_mode.patch 458 BLAKE2B acd2f59f409b3643807ea845fd08bfcfe730cfedaacb7d70a4b1ba017a299cb95b8d815bbbf53b2c0e3c86c4482a2d71a97fef362a6f0404dd45e96b57f78be7 SHA512 d8b12367916ed1ad5deb2e982437d3e5e04592baa6c1e12f6b78ff99b8cc407f2c9fc6f47c0715054572f6f8a5edafcb6f6da033902175cc4357a07faad04420 +AUX librime-1.6.0-plugins.patch 7447 BLAKE2B c2429bedb7eeabfeafeee310e5380ef22f65c3590f70f387376cdb9ea1c9a9a6c072d87bf2174067378104d31c7de6b2f4ea1fd37f8db3a76343e1849fb6d737 SHA512 dc39a5e9d8cb432b232ce82af31994912c24d446a9b0db908c543a605a047434d5afb7fd79aa8a6ea74d0b4431e2af67a48081e3edc338de75a3b2eafc28dbf9 +AUX librime-1.6.1-plugins.patch 7447 BLAKE2B 95f1b8f412e6e12c8c702d2295966831d4c2d06fd75a691460a2cd83b73ab033ae495a6d51ff2c0f5115b366ca33079159f5d9a026165acde7ca9c0e9c936983 SHA512 b32e6d736a0d26cc4dc5b6ac54f51a737e93f52a356e59d54d51523884eca64066a413cd3f9caa2d4db4574d96524c2688810921555ada0018c064afb1827307 DIST librime-1.5.3.tar.gz 2847083 BLAKE2B 4ffb2c5ddaf52f9c9227fa4ea019ef2965e61139f678798c08ef37dc52b863763651b63ed820caad0de1b06f48ab5c1a7a2682653340d2ae7f5f9eec3cec80b2 SHA512 4d7f6ec43bd5728f59f0b3581bcd8a46128651430b6873017d80659942b8f6aa1a2f25f439ba8fba461fe22acbf701c2da7a786104a2e4852a70a89cdc0452d3 +DIST librime-1.6.0.tar.gz 2856645 BLAKE2B de6d843a5028f6b0308c3432ada7dd00c08a71e73fe799b157fd71a4054c757a00d3b0fdc7743d94d6e87b03f256e822ee29c16c86f96f5d24c7d864266c4f78 SHA512 4aeace0f1628293d4b607483ab976841093a1ff03df8bf63d545715af00254d1f0b1bdcd120795ea688d152287069881e0740372f40e2174a14ae6f53b7f950b +DIST librime-1.6.1.tar.gz 2856751 BLAKE2B c6b01342dcc9e8ee571cb14a36b851a50bf7b191211197421647ab05e6fa64c676f8936920870dcc335d06c635e354fed706832e41192bccd0a17aff02df1a43 SHA512 944361e9459662bb97b97ce9e2651acf0beb368b3769d1b9576cf4e5c2779302cae470fa39f5bc262cabb6a0e8590bcb77d32ffc87d7385b9465869fe7d5bcb3 EBUILD librime-1.5.3-r1.ebuild 1598 BLAKE2B e2bea3ac09fb0f5f132382caa6a37b8fc3e674688fbbba71e68a5a48e1375248633ec5de170030a5d734f18e294aeb8c3b2b2cba9d033c56bdd88e9709c14c1d SHA512 9c389f0f4ad573bada9c18bdfb3af3cac4f17e42f3bc1fe5d308fed123a3458a28e243f0ac4134753d24b1cbffb644707adbf693fc0f01d5fbc5eb25177bf416 -MISC metadata.xml 647 BLAKE2B 2837d0505f1721cbb6a60414b846ad95ddbaca6d682e9f93acc82998430cdbc73038b124c1a0a73d7aedf132535276e6bd88015a47e4f4ebb86619aad38e9061 SHA512 a388004662d39511749e6fcf618fc28411f81ebbf2078ea2b3e4123d63544790fb017ced2df16556fdf763c854d34a7fcf5a59931153f6c94841d9cdcff4d3ec +EBUILD librime-1.6.0.ebuild 1584 BLAKE2B 035bd99e4e49b12cbafc581771d287c0743716af721c674be05c1b7d5a0df8586c504532485a169c535b51ccb332a5a1d43d504d758ebb17c0ee1915d1c5afaa SHA512 381fa20d6a5da0b34d05aed7c53bba10a36029eae10a062c86f40dc7767e07ff1800d799e80b14b7a4e5719e6b32e5364fdc03d557344f24cb14a8097095a9b4 +EBUILD librime-1.6.1.ebuild 1584 BLAKE2B a066ec82c81cd7d1252a24160c340dd8a44a88dee42638aafddc98944344dcc8cc367dda92f0e6f9b006e18bbbd84621acfc5bba48cbbdf23ec4e77c7a6e7381 SHA512 1599d5dcfef15e4c7627fc716fd57ea5e9aeaec60d45f82d0c51893cc363d1d53d235cbba029d6079a368ef43a14ed450873f7efc4ed8ff2cc9b31b109f3cd01 +MISC metadata.xml 762 BLAKE2B 1132cc338a6f90757bb96d9b1d75fe4dc545ee0fdf07fcb946a88d88e5e821320016de902b37855ef1e1c4d4a4b7f5c37e41316b5ff8aa4b3eb14536548831a6 SHA512 82a8325fb69ee74e353375ab4d0f88d7d97b889ce71d660561b74b27303ea6ace3acd9fa9046bdacf15144c013e51382ae4da4c9e355986bf43b363980f6925d diff --git a/app-i18n/librime/files/librime-1.6.0-plugins.patch b/app-i18n/librime/files/librime-1.6.0-plugins.patch new file mode 100644 index 000000000000..c79072f31cbb --- /dev/null +++ b/app-i18n/librime/files/librime-1.6.0-plugins.patch @@ -0,0 +1,247 @@ +https://github.com/rime/librime/issues/431 + +--- /CMakeLists.txt ++++ /CMakeLists.txt +@@ -11,6 +11,14 @@ + + include(GNUInstallDirs) + ++if(NOT DEFINED BIN_INSTALL_DIR) ++ set(BIN_INSTALL_DIR ${CMAKE_INSTALL_BINDIR}) ++endif() ++ ++if(NOT DEFINED LIB_INSTALL_DIR) ++ set(LIB_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}) ++endif() ++ + option(BUILD_SHARED_LIBS "Build Rime as shared library" ON) + option(BUILD_MERGED_PLUGINS "Merge plugins into one Rime library" ON) + option(BUILD_STATIC "Build with dependencies as static libraries" OFF) +@@ -22,8 +30,11 @@ + option(BOOST_USE_CXX11 "Boost has been built with C++11 support" OFF) + option(BOOST_USE_SIGNALS2 "Boost use signals2 instead of signals" ON) + option(ENABLE_ASAN "Enable Address Sanitizer (Unix Only)" OFF) ++option(INSTALL_PRIVATE_HEADERS "Install private headers (usually needed for externally built Rime plugins)" OFF) ++option(ENABLE_EXTERNAL_PLUGINS "Enable loading of externally built Rime plugins (from directory set by RIME_PLUGINS_DIR variable)" OFF) + +-set(rime_data_dir "/share/rime-data" CACHE STRING "Target directory for Rime data") ++set(RIME_DATA_DIR "share/rime-data" CACHE STRING "Target directory for Rime data") ++set(RIME_PLUGINS_DIR "${LIB_INSTALL_DIR}/rime-plugins" CACHE STRING "Target directory for externally built Rime plugins") + + if(WIN32) + set(ext ".exe") +@@ -61,7 +72,7 @@ + set(BOOST_COMPONENTS filesystem regex system) + + if(BOOST_USE_SIGNALS2) +- add_definitions("-DBOOST_SIGNALS2") ++ set(RIME_BOOST_SIGNALS2 1) + else() + set(BOOST_COMPONENTS ${BOOST_COMPONENTS} signals) + endif() +@@ -89,7 +100,7 @@ + add_definitions(-DGOOGLE_GLOG_DLL_DECL=) + endif() + +- add_definitions(-DRIME_ENABLE_LOGGING) ++ set(RIME_ENABLE_LOGGING 1) + + endif() + +@@ -134,6 +145,11 @@ + message(WARNING "X11/keysym.h not found.") + endif() + ++configure_file( ++ "${PROJECT_SOURCE_DIR}/src/rime/build_config.h.in" ++ "${PROJECT_BINARY_DIR}/src/rime/build_config.h") ++ ++include_directories(${PROJECT_BINARY_DIR}/src) + include_directories(${PROJECT_SOURCE_DIR}/src) + include_directories(${PROJECT_SOURCE_DIR}/thirdparty/include) + link_directories(${PROJECT_SOURCE_DIR}/thirdparty/lib) +@@ -154,14 +170,6 @@ + set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14") + endif() + +-if(NOT DEFINED LIB_INSTALL_DIR) +- set(LIB_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}) +-endif() +- +-if(NOT DEFINED BIN_INSTALL_DIR) +- set(BIN_INSTALL_DIR ${CMAKE_INSTALL_BINDIR}) +-endif() +- + # uninstall target + configure_file( + "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in" +@@ -175,7 +183,8 @@ + set(exec_prefix "${CMAKE_INSTALL_PREFIX}") + set(bindir "${exec_prefix}/${BIN_INSTALL_DIR}") + set(libdir "${exec_prefix}/${LIB_INSTALL_DIR}") +- set(pkgdatadir "${prefix}${rime_data_dir}") ++ set(pkgdatadir "${prefix}/${RIME_DATA_DIR}") ++ set(pluginsdir "${exec_prefix}/${RIME_PLUGINS_DIR}") + set(includedir "${prefix}/${CMAKE_INSTALL_INCLUDEDIR}") + configure_file( + ${PROJECT_SOURCE_DIR}/rime.pc.in +@@ -189,11 +198,19 @@ + + file(GLOB rime_public_header_files ${PROJECT_SOURCE_DIR}/src/*.h) + install(FILES ${rime_public_header_files} DESTINATION include) ++if(INSTALL_PRIVATE_HEADERS) ++ file(GLOB rime_private_header_files ${PROJECT_SOURCE_DIR}/src/rime/*.h ${PROJECT_BINARY_DIR}/src/rime/*.h) ++ install(FILES ${rime_private_header_files} DESTINATION include/rime) ++ foreach(rime_private_header_files_dir algo config dict gear lever) ++ file(GLOB rime_private_header_files ${PROJECT_SOURCE_DIR}/src/rime/${rime_private_header_files_dir}/*.h) ++ install(FILES ${rime_private_header_files} DESTINATION include/rime/${rime_private_header_files_dir}) ++ endforeach() ++endif() + + if(BUILD_DATA) + file(GLOB rime_preset_data_files ${PROJECT_SOURCE_DIR}/data/preset/*.yaml) + install(FILES ${rime_preset_data_files} +- DESTINATION ${CMAKE_INSTALL_PREFIX}${rime_data_dir}) ++ DESTINATION ${CMAKE_INSTALL_PREFIX}/${RIME_DATA_DIR}) + endif() + + if(BUILD_SHARED_LIBS) +@@ -223,6 +240,11 @@ + set(rime_plugins_library rime-plugins) + endif() + ++add_definitions("-DRIME_PLUGINS_DIR=\"${CMAKE_INSTALL_PREFIX}/${RIME_PLUGINS_DIR}\"") ++if(ENABLE_EXTERNAL_PLUGINS) ++ add_definitions(-DRIME_ENABLE_EXTERNAL_PLUGINS) ++endif() ++ + add_subdirectory(src) + + if(BUILD_SHARED_LIBS) +--- /rime.pc.in ++++ /rime.pc.in +@@ -2,6 +2,8 @@ + exec_prefix=@exec_prefix@ + libdir=@libdir@ + includedir=@includedir@ ++pkgdatadir=@pkgdatadir@ ++pluginsdir=@pluginsdir@ + + Name: Rime + Description: Rime Input Method Engine +--- /src/CMakeLists.txt ++++ /src/CMakeLists.txt +@@ -36,6 +36,9 @@ + if(Gflags_FOUND) + set(rime_optional_deps ${rime_optional_deps} ${Gflags_LIBRARY}) + endif() ++if(ENABLE_EXTERNAL_PLUGINS) ++ set(rime_optional_deps ${rime_optional_deps} dl) ++endif() + + set(rime_core_deps + ${Boost_LIBRARIES} +--- /src/rime/build_config.h.in ++++ /src/rime/build_config.h.in +@@ -0,0 +1,11 @@ ++// ++// Copyright RIME Developers ++// Distributed under the BSD License ++// ++#ifndef RIME_BUILD_CONFIG_H_ ++#define RIME_BUILD_CONFIG_H_ ++ ++#cmakedefine RIME_BOOST_SIGNALS2 ++#cmakedefine RIME_ENABLE_LOGGING ++ ++#endif // RIME_BUILD_CONFIG_H_ +--- /src/rime/common.h ++++ /src/rime/common.h +@@ -7,6 +7,8 @@ + #ifndef RIME_COMMON_H_ + #define RIME_COMMON_H_ + ++#include <rime/build_config.h> ++ + #include <functional> + #include <list> + #include <map> +@@ -20,7 +22,7 @@ + #include <vector> + #include <boost/optional.hpp> + #define BOOST_BIND_NO_PLACEHOLDERS +-#ifdef BOOST_SIGNALS2 ++#ifdef RIME_BOOST_SIGNALS2 + #include <boost/signals2/connection.hpp> + #include <boost/signals2/signal.hpp> + #else +@@ -79,7 +81,7 @@ + return std::make_shared<T>(std::forward<Args>(args)...); + } + +-#ifdef BOOST_SIGNALS2 ++#ifdef RIME_BOOST_SIGNALS2 + using boost::signals2::connection; + using boost::signals2::signal; + #else +--- /src/rime/lever/deployment_tasks.cc ++++ /src/rime/lever/deployment_tasks.cc +@@ -4,6 +4,9 @@ + // + // 2011-12-10 GONG Chen <chen.sst@gmail.com> + // ++ ++#include <rime/build_config.h> ++ + #include <algorithm> + #include <boost/algorithm/string.hpp> + #include <boost/filesystem.hpp> +--- /src/rime/setup.cc ++++ /src/rime/setup.cc +@@ -5,6 +5,13 @@ + // 2011-10-02 GONG Chen <chen.sst@gmail.com> + // + ++#include <rime/build_config.h> ++ ++#ifdef RIME_ENABLE_EXTERNAL_PLUGINS ++#include <dlfcn.h> ++#include <glob.h> ++#endif // RIME_ENABLE_EXTERNAL_PLUGINS ++ + #ifdef RIME_ENABLE_LOGGING + #include <glog/logging.h> + #endif // RIME_ENABLE_LOGGING +@@ -33,6 +40,32 @@ + mm.LoadModule(module); + } + } ++ ++#ifdef RIME_ENABLE_EXTERNAL_PLUGINS ++ fs::path plugins_dir = fs::path(RIME_PLUGINS_DIR); ++ fs::path plugins_files = plugins_dir / "*.so"; ++ glob_t glob_buffer; ++ if (glob(plugins_files.string().c_str(), 0, NULL, &glob_buffer) == 0) { ++ for (size_t i = 0; i < glob_buffer.gl_pathc; i++) { ++ fs::path plugin_file(glob_buffer.gl_pathv[i]); ++ fs::path plugin_name = plugin_file.stem(); ++ fs::file_status plugin_file_status = fs::status(plugin_file); ++ if (fs::is_regular_file(plugin_file) && ++ plugin_file_status.permissions() & (fs::owner_exe | fs::group_exe | fs::others_exe)) { ++ void* handle = dlopen(plugin_file.string().c_str(), RTLD_LAZY); ++ if (handle) { ++ if (RimeModule* module = mm.Find(plugin_name.string())) { ++ mm.LoadModule(module); ++ } ++ } ++ else { ++ LOG(ERROR) << "dlopen error: " << dlerror(); ++ } ++ } ++ } ++ globfree(&glob_buffer); ++ } ++#endif + } + + // assume member is a non-null pointer in struct *p. diff --git a/app-i18n/librime/files/librime-1.6.1-plugins.patch b/app-i18n/librime/files/librime-1.6.1-plugins.patch new file mode 100644 index 000000000000..68099d618693 --- /dev/null +++ b/app-i18n/librime/files/librime-1.6.1-plugins.patch @@ -0,0 +1,247 @@ +https://github.com/rime/librime/issues/431 + +--- /CMakeLists.txt ++++ /CMakeLists.txt +@@ -11,6 +11,14 @@ + + include(GNUInstallDirs) + ++if(NOT DEFINED BIN_INSTALL_DIR) ++ set(BIN_INSTALL_DIR ${CMAKE_INSTALL_BINDIR}) ++endif() ++ ++if(NOT DEFINED LIB_INSTALL_DIR) ++ set(LIB_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}) ++endif() ++ + option(BUILD_SHARED_LIBS "Build Rime as shared library" ON) + option(BUILD_MERGED_PLUGINS "Merge plugins into one Rime library" ON) + option(BUILD_STATIC "Build with dependencies as static libraries" OFF) +@@ -22,8 +30,11 @@ + option(BOOST_USE_CXX11 "Boost has been built with C++11 support" OFF) + option(BOOST_USE_SIGNALS2 "Boost use signals2 instead of signals" ON) + option(ENABLE_ASAN "Enable Address Sanitizer (Unix Only)" OFF) ++option(INSTALL_PRIVATE_HEADERS "Install private headers (usually needed for externally built Rime plugins)" OFF) ++option(ENABLE_EXTERNAL_PLUGINS "Enable loading of externally built Rime plugins (from directory set by RIME_PLUGINS_DIR variable)" OFF) + +-set(rime_data_dir "/share/rime-data" CACHE STRING "Target directory for Rime data") ++set(RIME_DATA_DIR "share/rime-data" CACHE STRING "Target directory for Rime data") ++set(RIME_PLUGINS_DIR "${LIB_INSTALL_DIR}/rime-plugins" CACHE STRING "Target directory for externally built Rime plugins") + + if(WIN32) + set(ext ".exe") +@@ -61,7 +72,7 @@ + set(BOOST_COMPONENTS filesystem regex system) + + if(BOOST_USE_SIGNALS2) +- add_definitions("-DBOOST_SIGNALS2") ++ set(RIME_BOOST_SIGNALS2 1) + else() + set(BOOST_COMPONENTS ${BOOST_COMPONENTS} signals) + endif() +@@ -89,7 +100,7 @@ + add_definitions(-DGOOGLE_GLOG_DLL_DECL=) + endif() + +- add_definitions(-DRIME_ENABLE_LOGGING) ++ set(RIME_ENABLE_LOGGING 1) + + endif() + +@@ -134,6 +145,11 @@ + message(WARNING "X11/keysym.h not found.") + endif() + ++configure_file( ++ "${PROJECT_SOURCE_DIR}/src/rime/build_config.h.in" ++ "${PROJECT_BINARY_DIR}/src/rime/build_config.h") ++ ++include_directories(${PROJECT_BINARY_DIR}/src) + include_directories(${PROJECT_SOURCE_DIR}/src) + include_directories(${PROJECT_SOURCE_DIR}/thirdparty/include) + link_directories(${PROJECT_SOURCE_DIR}/thirdparty/lib) +@@ -154,14 +170,6 @@ + set (CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS} -std=c++14") + endif() + +-if(NOT DEFINED LIB_INSTALL_DIR) +- set(LIB_INSTALL_DIR ${CMAKE_INSTALL_LIBDIR}) +-endif() +- +-if(NOT DEFINED BIN_INSTALL_DIR) +- set(BIN_INSTALL_DIR ${CMAKE_INSTALL_BINDIR}) +-endif() +- + # uninstall target + configure_file( + "${CMAKE_CURRENT_SOURCE_DIR}/cmake/cmake_uninstall.cmake.in" +@@ -175,7 +183,8 @@ + set(exec_prefix "${CMAKE_INSTALL_PREFIX}") + set(bindir "${exec_prefix}/${BIN_INSTALL_DIR}") + set(libdir "${exec_prefix}/${LIB_INSTALL_DIR}") +- set(pkgdatadir "${prefix}${rime_data_dir}") ++ set(pkgdatadir "${prefix}/${RIME_DATA_DIR}") ++ set(pluginsdir "${exec_prefix}/${RIME_PLUGINS_DIR}") + set(includedir "${prefix}/${CMAKE_INSTALL_INCLUDEDIR}") + configure_file( + ${PROJECT_SOURCE_DIR}/rime.pc.in +@@ -189,11 +198,19 @@ + + file(GLOB rime_public_header_files ${PROJECT_SOURCE_DIR}/src/*.h) + install(FILES ${rime_public_header_files} DESTINATION include) ++if(INSTALL_PRIVATE_HEADERS) ++ file(GLOB rime_private_header_files ${PROJECT_SOURCE_DIR}/src/rime/*.h ${PROJECT_BINARY_DIR}/src/rime/*.h) ++ install(FILES ${rime_private_header_files} DESTINATION include/rime) ++ foreach(rime_private_header_files_dir algo config dict gear lever) ++ file(GLOB rime_private_header_files ${PROJECT_SOURCE_DIR}/src/rime/${rime_private_header_files_dir}/*.h) ++ install(FILES ${rime_private_header_files} DESTINATION include/rime/${rime_private_header_files_dir}) ++ endforeach() ++endif() + + if(BUILD_DATA) + file(GLOB rime_preset_data_files ${PROJECT_SOURCE_DIR}/data/preset/*.yaml) + install(FILES ${rime_preset_data_files} +- DESTINATION ${CMAKE_INSTALL_PREFIX}${rime_data_dir}) ++ DESTINATION ${CMAKE_INSTALL_PREFIX}/${RIME_DATA_DIR}) + endif() + + if(BUILD_SHARED_LIBS) +@@ -223,6 +240,11 @@ + set(rime_plugins_library rime-plugins) + endif() + ++add_definitions("-DRIME_PLUGINS_DIR=\"${CMAKE_INSTALL_PREFIX}/${RIME_PLUGINS_DIR}\"") ++if(ENABLE_EXTERNAL_PLUGINS) ++ add_definitions(-DRIME_ENABLE_EXTERNAL_PLUGINS) ++endif() ++ + add_subdirectory(src) + + if(BUILD_SHARED_LIBS) +--- /rime.pc.in ++++ /rime.pc.in +@@ -2,6 +2,8 @@ + exec_prefix=@exec_prefix@ + libdir=@libdir@ + includedir=@includedir@ ++pkgdatadir=@pkgdatadir@ ++pluginsdir=@pluginsdir@ + + Name: Rime + Description: Rime Input Method Engine +--- /src/CMakeLists.txt ++++ /src/CMakeLists.txt +@@ -36,6 +36,9 @@ + if(Gflags_FOUND) + set(rime_optional_deps ${rime_optional_deps} ${Gflags_LIBRARY}) + endif() ++if(ENABLE_EXTERNAL_PLUGINS) ++ set(rime_optional_deps ${rime_optional_deps} dl) ++endif() + + set(rime_core_deps + ${Boost_LIBRARIES} +--- /src/rime/build_config.h.in ++++ /src/rime/build_config.h.in +@@ -0,0 +1,11 @@ ++// ++// Copyright RIME Developers ++// Distributed under the BSD License ++// ++#ifndef RIME_BUILD_CONFIG_H_ ++#define RIME_BUILD_CONFIG_H_ ++ ++#cmakedefine RIME_BOOST_SIGNALS2 ++#cmakedefine RIME_ENABLE_LOGGING ++ ++#endif // RIME_BUILD_CONFIG_H_ +--- /src/rime/common.h ++++ /src/rime/common.h +@@ -7,6 +7,8 @@ + #ifndef RIME_COMMON_H_ + #define RIME_COMMON_H_ + ++#include <rime/build_config.h> ++ + #include <functional> + #include <list> + #include <map> +@@ -20,7 +22,7 @@ + #include <vector> + #include <boost/optional.hpp> + #define BOOST_BIND_NO_PLACEHOLDERS +-#ifdef BOOST_SIGNALS2 ++#ifdef RIME_BOOST_SIGNALS2 + #include <boost/signals2/connection.hpp> + #include <boost/signals2/signal.hpp> + #else +@@ -79,7 +81,7 @@ + return std::make_shared<T>(std::forward<Args>(args)...); + } + +-#ifdef BOOST_SIGNALS2 ++#ifdef RIME_BOOST_SIGNALS2 + using boost::signals2::connection; + using boost::signals2::signal; + #else +--- /src/rime/lever/deployment_tasks.cc ++++ /src/rime/lever/deployment_tasks.cc +@@ -4,6 +4,9 @@ + // + // 2011-12-10 GONG Chen <chen.sst@gmail.com> + // ++ ++#include <rime/build_config.h> ++ + #include <algorithm> + #include <boost/algorithm/string.hpp> + #include <boost/filesystem.hpp> +--- /src/rime/setup.cc ++++ /src/rime/setup.cc +@@ -5,6 +5,13 @@ + // 2011-10-02 GONG Chen <chen.sst@gmail.com> + // + ++#include <rime/build_config.h> ++ ++#ifdef RIME_ENABLE_EXTERNAL_PLUGINS ++#include <dlfcn.h> ++#include <glob.h> ++#endif // RIME_ENABLE_EXTERNAL_PLUGINS ++ + #ifdef RIME_ENABLE_LOGGING + #include <glog/logging.h> + #endif // RIME_ENABLE_LOGGING +@@ -36,6 +43,32 @@ + mm.LoadModule(module); + } + } ++ ++#ifdef RIME_ENABLE_EXTERNAL_PLUGINS ++ fs::path plugins_dir = fs::path(RIME_PLUGINS_DIR); ++ fs::path plugins_files = plugins_dir / "*.so"; ++ glob_t glob_buffer; ++ if (glob(plugins_files.string().c_str(), 0, NULL, &glob_buffer) == 0) { ++ for (size_t i = 0; i < glob_buffer.gl_pathc; i++) { ++ fs::path plugin_file(glob_buffer.gl_pathv[i]); ++ fs::path plugin_name = plugin_file.stem(); ++ fs::file_status plugin_file_status = fs::status(plugin_file); ++ if (fs::is_regular_file(plugin_file) && ++ plugin_file_status.permissions() & (fs::owner_exe | fs::group_exe | fs::others_exe)) { ++ void* handle = dlopen(plugin_file.string().c_str(), RTLD_LAZY); ++ if (handle) { ++ if (RimeModule* module = mm.Find(plugin_name.string())) { ++ mm.LoadModule(module); ++ } ++ } ++ else { ++ LOG(ERROR) << "dlopen error: " << dlerror(); ++ } ++ } ++ } ++ globfree(&glob_buffer); ++ } ++#endif + } + + // assume member is a non-null pointer in struct *p. diff --git a/app-i18n/librime/librime-1.6.0.ebuild b/app-i18n/librime/librime-1.6.0.ebuild new file mode 100644 index 000000000000..eef1faa5bd5f --- /dev/null +++ b/app-i18n/librime/librime-1.6.0.ebuild @@ -0,0 +1,73 @@ +# Copyright 2012-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="7" + +inherit cmake + +if [[ "${PV}" == "9999" ]]; then + inherit git-r3 + + EGIT_REPO_URI="https://github.com/rime/librime" + EGIT_SUBMODULES=() +fi + +DESCRIPTION="RIME (Rime Input Method Engine) core library" +HOMEPAGE="https://rime.im/ https://github.com/rime/librime" +if [[ "${PV}" == "9999" ]]; then + SRC_URI="" +else + SRC_URI="https://github.com/rime/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz" +fi + +LICENSE="BSD" +SLOT="0/1-${PV}" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="debug test" +RESTRICT="!test? ( test )" + +BDEPEND="dev-libs/capnproto:0" +RDEPEND="app-i18n/opencc:0= + >=dev-cpp/glog-0.3.5:0= + dev-cpp/yaml-cpp:0= + dev-libs/boost:0=[threads] + dev-libs/capnproto:0= + dev-libs/leveldb:0= + dev-libs/marisa:0=" +DEPEND="${RDEPEND} + dev-libs/darts + dev-libs/utfcpp + x11-base/xorg-proto + test? ( dev-cpp/gtest )" + +DOCS=(CHANGELOG.md README.md) + +src_prepare() { + eapply "${FILESDIR}/${PN}-1.6.0-plugins.patch" + + # Use headers of dev-libs/darts, dev-libs/utfcpp and x11-base/xorg-proto. + sed -e "/\${PROJECT_SOURCE_DIR}\/thirdparty/d" -i CMakeLists.txt || die + rm -r thirdparty || die + + cmake_src_prepare +} + +src_configure() { + local -x CXXFLAGS="${CXXFLAGS} -I${ESYSROOT}/usr/include/utf8cpp" + + if use debug; then + CXXFLAGS+=" -DDCHECK_ALWAYS_ON" + else + CXXFLAGS+=" -DNDEBUG" + fi + + local mycmakeargs=( + -DBOOST_USE_CXX11=ON + -DBUILD_TEST=$(usex test ON OFF) + -DCMAKE_DISABLE_FIND_PACKAGE_Gflags=ON + -DENABLE_EXTERNAL_PLUGINS=ON + -DINSTALL_PRIVATE_HEADERS=ON + ) + + cmake_src_configure +} diff --git a/app-i18n/librime/librime-1.6.1.ebuild b/app-i18n/librime/librime-1.6.1.ebuild new file mode 100644 index 000000000000..91cdfdf161d4 --- /dev/null +++ b/app-i18n/librime/librime-1.6.1.ebuild @@ -0,0 +1,73 @@ +# Copyright 2012-2020 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +EAPI="7" + +inherit cmake + +if [[ "${PV}" == "9999" ]]; then + inherit git-r3 + + EGIT_REPO_URI="https://github.com/rime/librime" + EGIT_SUBMODULES=() +fi + +DESCRIPTION="RIME (Rime Input Method Engine) core library" +HOMEPAGE="https://rime.im/ https://github.com/rime/librime" +if [[ "${PV}" == "9999" ]]; then + SRC_URI="" +else + SRC_URI="https://github.com/rime/${PN}/archive/${PV}.tar.gz -> ${P}.tar.gz" +fi + +LICENSE="BSD" +SLOT="0/1-${PV}" +KEYWORDS="~amd64 ~arm64 ~x86" +IUSE="debug test" +RESTRICT="!test? ( test )" + +BDEPEND="dev-libs/capnproto:0" +RDEPEND="app-i18n/opencc:0= + >=dev-cpp/glog-0.3.5:0= + dev-cpp/yaml-cpp:0= + dev-libs/boost:0=[threads] + dev-libs/capnproto:0= + dev-libs/leveldb:0= + dev-libs/marisa:0=" +DEPEND="${RDEPEND} + dev-libs/darts + dev-libs/utfcpp + x11-base/xorg-proto + test? ( dev-cpp/gtest )" + +DOCS=(CHANGELOG.md README.md) + +src_prepare() { + eapply "${FILESDIR}/${PN}-1.6.1-plugins.patch" + + # Use headers of dev-libs/darts, dev-libs/utfcpp and x11-base/xorg-proto. + sed -e "/\${PROJECT_SOURCE_DIR}\/thirdparty/d" -i CMakeLists.txt || die + rm -r thirdparty || die + + cmake_src_prepare +} + +src_configure() { + local -x CXXFLAGS="${CXXFLAGS} -I${ESYSROOT}/usr/include/utf8cpp" + + if use debug; then + CXXFLAGS+=" -DDCHECK_ALWAYS_ON" + else + CXXFLAGS+=" -DNDEBUG" + fi + + local mycmakeargs=( + -DBOOST_USE_CXX11=ON + -DBUILD_TEST=$(usex test ON OFF) + -DCMAKE_DISABLE_FIND_PACKAGE_Gflags=ON + -DENABLE_EXTERNAL_PLUGINS=ON + -DINSTALL_PRIVATE_HEADERS=ON + ) + + cmake_src_configure +} diff --git a/app-i18n/librime/metadata.xml b/app-i18n/librime/metadata.xml index 777c41df84a4..605a81303279 100644 --- a/app-i18n/librime/metadata.xml +++ b/app-i18n/librime/metadata.xml @@ -1,22 +1,26 @@ <?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> <pkgmetadata> - <maintainer type="person"> - <email>dlan@gentoo.org</email> - <name>Yixun Lan</name> - </maintainer> - <maintainer type="project"> - <email>cjk@gentoo.org</email> - <name>Cjk</name> - </maintainer> - <use> - <flag name="debug">Enable debugging (including logging of input of RIME input methods)</flag> - </use> - <upstream> - <maintainer> - <email>chen.sst@gmail.com</email> - <name>Gong Chen</name> - </maintainer> - <remote-id type="github">rime/librime</remote-id> - </upstream> + <maintainer type="person"> + <email>arfrever.fta@gmail.com</email> + <name>Arfrever Frehtes Taifersar Arahesis</name> + </maintainer> + <maintainer type="person"> + <email>dlan@gentoo.org</email> + <name>Yixun Lan</name> + </maintainer> + <maintainer type="project"> + <email>cjk@gentoo.org</email> + <name>Cjk</name> + </maintainer> + <use> + <flag name="debug">Enable debugging (including logging of input of RIME input methods)</flag> + </use> + <upstream> + <maintainer> + <email>chen.sst@gmail.com</email> + <name>弓辰 (Gōng Chén)</name> + </maintainer> + <remote-id type="github">rime/librime</remote-id> + </upstream> </pkgmetadata> |