summaryrefslogtreecommitdiff
path: root/app-i18n/librime
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2021-01-01 21:06:00 +0000
committerV3n3RiX <venerix@redcorelinux.org>2021-01-01 21:06:00 +0000
commit129160ec854dca4c3fedb5bcfbcb56930371da0f (patch)
tree53bf797418ac5e9b99c41ca0382c87b82421e5de /app-i18n/librime
parent441d1370330332b7d78f238d2f5e13f7aed5e4e0 (diff)
gentoo new year resync : 01.01.2021
Diffstat (limited to 'app-i18n/librime')
-rw-r--r--app-i18n/librime/Manifest8
-rw-r--r--app-i18n/librime/files/librime-1.6.0-plugins.patch247
-rw-r--r--app-i18n/librime/files/librime-1.6.1-plugins.patch247
-rw-r--r--app-i18n/librime/librime-1.6.0.ebuild73
-rw-r--r--app-i18n/librime/librime-1.6.1.ebuild73
-rw-r--r--app-i18n/librime/metadata.xml40
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>