public inbox for gentoo-commits@lists.gentoo.org
 help / color / mirror / Atom feed
* [gentoo-commits] repo/gentoo:master commit in: app-i18n/librime/, app-i18n/librime/files/
@ 2022-02-28 21:12 Andreas Sturmlechner
  0 siblings, 0 replies; 2+ messages in thread
From: Andreas Sturmlechner @ 2022-02-28 21:12 UTC (permalink / raw
  To: gentoo-commits

commit:     f00fefd616073ccaf0eb8b1d309f5fdad59a361d
Author:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
AuthorDate: Mon Feb 28 13:09:17 2022 +0000
Commit:     Andreas Sturmlechner <asturm <AT> gentoo <DOT> org>
CommitDate: Mon Feb 28 21:12:16 2022 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=f00fefd6

app-i18n/librime: Drop 1.5.3-r2, 1.6.0-r1 and 1.6.1-r1

Closes: https://bugs.gentoo.org/793926
Package-Manager: Portage-3.0.30, Repoman-3.0.3
Signed-off-by: Andreas Sturmlechner <asturm <AT> gentoo.org>

 app-i18n/librime/Manifest                          |   3 -
 .../files/librime-1.5.3-log_files_mode.patch       |  14 --
 app-i18n/librime/files/librime-1.6.0-plugins.patch | 247 ---------------------
 app-i18n/librime/files/librime-1.6.1-plugins.patch | 247 ---------------------
 app-i18n/librime/librime-1.5.3-r2.ebuild           |  74 ------
 app-i18n/librime/librime-1.6.0-r1.ebuild           |  74 ------
 app-i18n/librime/librime-1.6.1-r1.ebuild           |  74 ------
 7 files changed, 733 deletions(-)

diff --git a/app-i18n/librime/Manifest b/app-i18n/librime/Manifest
index f2e2c6fc1359..155c1c2574ff 100644
--- a/app-i18n/librime/Manifest
+++ b/app-i18n/librime/Manifest
@@ -1,4 +1 @@
-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
 DIST librime-1.7.3.tar.gz 2859513 BLAKE2B 834622860cdc3038d1b983f476bca70f211dfbc3bc2b565a998163e22688841ee3a0c7f9a64bce285e2f3f5b5a9a802bd5506f17904ccb3291babf80d4748fb5 SHA512 8767d17c3d14a5a1bbb8269fab1627b907de72c288b362fdbc6191223937da21e8b18471b4ae8f83ce5afc0ec5c3ab12fbcb49930eb9969c1764c7390d9ee4b0

diff --git a/app-i18n/librime/files/librime-1.5.3-log_files_mode.patch b/app-i18n/librime/files/librime-1.5.3-log_files_mode.patch
deleted file mode 100644
index 7a36dea64d24..000000000000
--- a/app-i18n/librime/files/librime-1.5.3-log_files_mode.patch
+++ /dev/null
@@ -1,14 +0,0 @@
-https://github.com/rime/librime/issues/316
-https://github.com/rime/librime/commit/90839b0b3d47cbfef715ea5f061c7505666ff75d
-
---- /src/rime/setup.cc
-+++ /src/rime/setup.cc
-@@ -35,6 +35,8 @@
- 
- RIME_API void SetupLogging(const char* app_name) {
- #ifdef RIME_ENABLE_LOGGING
-+  // Do not allow other users to read/write log files created by current process.
-+  FLAGS_logfile_mode = 0600;
-   google::InitGoogleLogging(app_name);
- #endif  // RIME_ENABLE_LOGGING
- }

diff --git a/app-i18n/librime/files/librime-1.6.0-plugins.patch b/app-i18n/librime/files/librime-1.6.0-plugins.patch
deleted file mode 100644
index c79072f31cbb..000000000000
--- a/app-i18n/librime/files/librime-1.6.0-plugins.patch
+++ /dev/null
@@ -1,247 +0,0 @@
-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
deleted file mode 100644
index 68099d618693..000000000000
--- a/app-i18n/librime/files/librime-1.6.1-plugins.patch
+++ /dev/null
@@ -1,247 +0,0 @@
-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.5.3-r2.ebuild b/app-i18n/librime/librime-1.5.3-r2.ebuild
deleted file mode 100644
index bec00f1025a0..000000000000
--- a/app-i18n/librime/librime-1.5.3-r2.ebuild
+++ /dev/null
@@ -1,74 +0,0 @@
-# Copyright 2012-2021 Gentoo Authors
-# Distributed under the terms of the GNU General Public License v2
-
-EAPI="7"
-
-inherit cmake-utils
-
-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"
-KEYWORDS="amd64 arm64 ppc ppc64 x86"
-IUSE="debug test"
-RESTRICT="!test? ( test )"
-
-BDEPEND=""
-RDEPEND="app-i18n/opencc:0=
-	>=dev-cpp/glog-0.3.5:0=
-	dev-cpp/yaml-cpp:0=
-	dev-libs/boost:0=[nls,threads(+)]
-	dev-libs/leveldb:0=
-	dev-libs/marisa:0="
-DEPEND="${RDEPEND}
-	dev-libs/darts
-	dev-libs/utfcpp
-	x11-base/xorg-proto
-	test? ( dev-cpp/gtest )"
-
-PATCHES=(
-	"${FILESDIR}/${P}-log_files_mode.patch"
-)
-
-DOCS=(CHANGELOG.md README.md)
-
-src_prepare() {
-	# 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-utils_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
-		-DCMAKE_DISABLE_FIND_PACKAGE_Iconv=ON
-		-DLIB_INSTALL_DIR="${EPREFIX}/usr/$(get_libdir)"
-	)
-
-	cmake-utils_src_configure
-}

diff --git a/app-i18n/librime/librime-1.6.0-r1.ebuild b/app-i18n/librime/librime-1.6.0-r1.ebuild
deleted file mode 100644
index 77cc61ea01a8..000000000000
--- a/app-i18n/librime/librime-1.6.0-r1.ebuild
+++ /dev/null
@@ -1,74 +0,0 @@
-# Copyright 2012-2021 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-boost-1.76.patch"
-	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-r1.ebuild b/app-i18n/librime/librime-1.6.1-r1.ebuild
deleted file mode 100644
index 0f2a5d3dbec4..000000000000
--- a/app-i18n/librime/librime-1.6.1-r1.ebuild
+++ /dev/null
@@ -1,74 +0,0 @@
-# Copyright 2012-2021 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-boost-1.76.patch"
-	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
-}


^ permalink raw reply related	[flat|nested] 2+ messages in thread
* [gentoo-commits] repo/gentoo:master commit in: app-i18n/librime/, app-i18n/librime/files/
@ 2020-12-28  0:01 Mike Gilbert
  0 siblings, 0 replies; 2+ messages in thread
From: Mike Gilbert @ 2020-12-28  0:01 UTC (permalink / raw
  To: gentoo-commits

commit:     fe59e816cd7e2c280668084c7457bbdff4109740
Author:     Arfrever Frehtes Taifersar Arahesis <Arfrever <AT> Apache <DOT> Org>
AuthorDate: Sun Dec 27 02:00:00 2020 +0000
Commit:     Mike Gilbert <floppym <AT> gentoo <DOT> org>
CommitDate: Mon Dec 28 00:01:22 2020 +0000
URL:        https://gitweb.gentoo.org/repo/gentoo.git/commit/?id=fe59e816

app-i18n/librime: Support plugins.

Signed-off-by: Arfrever Frehtes Taifersar Arahesis <Arfrever <AT> Apache.Org>
Signed-off-by: Mike Gilbert <floppym <AT> gentoo.org>

 app-i18n/librime/files/librime-1.6.0-plugins.patch | 247 +++++++++++++++++++++
 app-i18n/librime/files/librime-1.6.1-plugins.patch | 247 +++++++++++++++++++++
 app-i18n/librime/librime-1.6.0.ebuild              |   6 +-
 app-i18n/librime/librime-1.6.1.ebuild              |   6 +-
 4 files changed, 504 insertions(+), 2 deletions(-)

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 00000000000..c79072f31cb
--- /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 00000000000..68099d61869
--- /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
index 674c8ae665e..eef1faa5bd5 100644
--- a/app-i18n/librime/librime-1.6.0.ebuild
+++ b/app-i18n/librime/librime-1.6.0.ebuild
@@ -21,7 +21,7 @@ else
 fi
 
 LICENSE="BSD"
-SLOT="0/1"
+SLOT="0/1-${PV}"
 KEYWORDS="~amd64 ~arm64 ~x86"
 IUSE="debug test"
 RESTRICT="!test? ( test )"
@@ -43,6 +43,8 @@ DEPEND="${RDEPEND}
 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
@@ -63,6 +65,8 @@ src_configure() {
 		-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
index 674c8ae665e..91cdfdf161d 100644
--- a/app-i18n/librime/librime-1.6.1.ebuild
+++ b/app-i18n/librime/librime-1.6.1.ebuild
@@ -21,7 +21,7 @@ else
 fi
 
 LICENSE="BSD"
-SLOT="0/1"
+SLOT="0/1-${PV}"
 KEYWORDS="~amd64 ~arm64 ~x86"
 IUSE="debug test"
 RESTRICT="!test? ( test )"
@@ -43,6 +43,8 @@ DEPEND="${RDEPEND}
 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
@@ -63,6 +65,8 @@ src_configure() {
 		-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


^ permalink raw reply related	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2022-02-28 21:12 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-02-28 21:12 [gentoo-commits] repo/gentoo:master commit in: app-i18n/librime/, app-i18n/librime/files/ Andreas Sturmlechner
  -- strict thread matches above, loose matches on Subject: below --
2020-12-28  0:01 Mike Gilbert

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox