summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRobin H. Johnson <robbat2@gentoo.org>2015-08-08 13:49:04 -0700
committerRobin H. Johnson <robbat2@gentoo.org>2015-08-08 17:38:18 -0700
commit56bd759df1d0c750a065b8c845e93d5dfa6b549d (patch)
tree3f91093cdb475e565ae857f1c5a7fd339e2d781e /app-i18n/librime
downloadgentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.gz
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.tar.bz2
gentoo-56bd759df1d0c750a065b8c845e93d5dfa6b549d.zip
proj/gentoo: Initial commit
This commit represents a new era for Gentoo: Storing the gentoo-x86 tree in Git, as converted from CVS. This commit is the start of the NEW history. Any historical data is intended to be grafted onto this point. Creation process: 1. Take final CVS checkout snapshot 2. Remove ALL ChangeLog* files 3. Transform all Manifests to thin 4. Remove empty Manifests 5. Convert all stale $Header$/$Id$ CVS keywords to non-expanded Git $Id$ 5.1. Do not touch files with -kb/-ko keyword flags. Signed-off-by: Robin H. Johnson <robbat2@gentoo.org> X-Thanks: Alec Warner <antarus@gentoo.org> - did the GSoC 2006 migration tests X-Thanks: Robin H. Johnson <robbat2@gentoo.org> - infra guy, herding this project X-Thanks: Nguyen Thai Ngoc Duy <pclouds@gentoo.org> - Former Gentoo developer, wrote Git features for the migration X-Thanks: Brian Harring <ferringb@gentoo.org> - wrote much python to improve cvs2svn X-Thanks: Rich Freeman <rich0@gentoo.org> - validation scripts X-Thanks: Patrick Lauer <patrick@gentoo.org> - Gentoo dev, running new 2014 work in migration X-Thanks: Michał Górny <mgorny@gentoo.org> - scripts, QA, nagging X-Thanks: All of other Gentoo developers - many ideas and lots of paint on the bikeshed
Diffstat (limited to 'app-i18n/librime')
-rw-r--r--app-i18n/librime/Manifest2
-rw-r--r--app-i18n/librime/files/librime-1.1-BOOST_NO_SCOPED_ENUMS.patch224
-rw-r--r--app-i18n/librime/files/librime-1.1-gcc53613.patch367
-rw-r--r--app-i18n/librime/files/librime-1.2-BOOST_NO_SCOPED_ENUMS.patch224
-rw-r--r--app-i18n/librime/files/librime-dictionary.patch13
-rw-r--r--app-i18n/librime/files/librime-test.patch42
-rw-r--r--app-i18n/librime/librime-0.9.9.ebuild43
-rw-r--r--app-i18n/librime/librime-1.2.ebuild46
-rw-r--r--app-i18n/librime/metadata.xml17
9 files changed, 978 insertions, 0 deletions
diff --git a/app-i18n/librime/Manifest b/app-i18n/librime/Manifest
new file mode 100644
index 00000000000..4d07fbcad05
--- /dev/null
+++ b/app-i18n/librime/Manifest
@@ -0,0 +1,2 @@
+DIST librime-0.9.9.tar.gz 2548968 SHA256 e828acc853a5d9e3ca191d065112c410183aadb5bd1d021704f82a8644ff6fd8 SHA512 71b39e713d5bbb73441dfb3038be6dc04518d2169df336e7fcb19b4c3b19a48d7db7c230fb1107148f3b7d95342851d23569617ff8138200c7ef1d750060c00f WHIRLPOOL fb5798491352eb1682a2bed7a73486df153a2479eef0adadc00726ab958b50606e32d59bfa8ded86c3aa35bac5e120e4251903fcb54326936251f1f3af726f92
+DIST librime-1.2.tar.gz 5199581 SHA256 fb04a7e0a4eeb2f25031c9a366cedfdab641ab06960f50c42febef5195de9381 SHA512 75a771916a58b1ab678dbf05ac074a651cea077e81d25e4dfd0ea839fabe6cf606135851e72c19d6a8a9c6ed66b89928b90785f282e8786c375bc1d393059227 WHIRLPOOL 44a821fc4e1a562cb01ce7c28efc5a4fd3ca8e9d2d4e55ddda3434b677a17b59d7114a634bfd95ae53072f0e6f2e5f027b2c81ab70fa51b011934c7c39fbcf51
diff --git a/app-i18n/librime/files/librime-1.1-BOOST_NO_SCOPED_ENUMS.patch b/app-i18n/librime/files/librime-1.1-BOOST_NO_SCOPED_ENUMS.patch
new file mode 100644
index 00000000000..3f33efdcdda
--- /dev/null
+++ b/app-i18n/librime/files/librime-1.1-BOOST_NO_SCOPED_ENUMS.patch
@@ -0,0 +1,224 @@
+Index: librime-1.1git20140306/include/rime/lever/customizer.h
+===================================================================
+--- librime-1.1git20140306.orig/include/rime/lever/customizer.h
++++ librime-1.1git20140306/include/rime/lever/customizer.h
+@@ -8,6 +8,9 @@
+ #define RIME_CUSTOMIZER_H_
+
+ #include <string>
++#ifndef BOOST_NO_SCOPED_ENUMS
++#define BOOST_NO_SCOPED_ENUMS
++#endif // BOOST_NO_SCOPED_ENUMS
+ #define BOOST_NO_CXX11_SCOPED_ENUMS
+ #include <boost/filesystem.hpp>;
+
+Index: librime-1.1git20140306/include/rime/lever/switcher_settings.h
+===================================================================
+--- librime-1.1git20140306.orig/include/rime/lever/switcher_settings.h
++++ librime-1.1git20140306/include/rime/lever/switcher_settings.h
+@@ -9,6 +9,9 @@
+
+ #include <string>
+ #include <vector>
++#ifndef BOOST_NO_SCOPED_ENUMS
++#define BOOST_NO_SCOPED_ENUMS
++#endif // BOOST_NO_SCOPED_ENUMS
+ #include <boost/filesystem.hpp>
+ #include "custom_settings.h"
+
+Index: librime-1.1git20140306/include/rime/lever/user_dict_manager.h
+===================================================================
+--- librime-1.1git20140306.orig/include/rime/lever/user_dict_manager.h
++++ librime-1.1git20140306/include/rime/lever/user_dict_manager.h
+@@ -9,6 +9,9 @@
+
+ #include <string>
+ #include <vector>
++#ifndef BOOST_NO_SCOPED_ENUMS
++#define BOOST_NO_SCOPED_ENUMS
++#endif // BOOST_NO_SCOPED_ENUMS
+ #include <boost/filesystem.hpp>
+
+ namespace rime {
+Index: librime-1.1git20140306/src/core_module.cc
+===================================================================
+--- librime-1.1git20140306.orig/src/core_module.cc
++++ librime-1.1git20140306/src/core_module.cc
+@@ -5,6 +5,9 @@
+ // 2013-10-17 GONG Chen <chen.sst@gmail.com>
+ //
+
++#ifndef BOOST_NO_SCOPED_ENUMS
++#define BOOST_NO_SCOPED_ENUMS
++#endif // BOOST_NO_SCOPED_ENUMS
+ #include <boost/filesystem.hpp>
+ #include <rime_api.h>
+ #include <rime/common.h>
+Index: librime-1.1git20140306/src/dict/db.cc
+===================================================================
+--- librime-1.1git20140306.orig/src/dict/db.cc
++++ librime-1.1git20140306/src/dict/db.cc
+@@ -5,6 +5,9 @@
+ // 2011-11-02 GONG Chen <chen.sst@gmail.com>
+ //
+ #include <boost/algorithm/string.hpp>
++#ifndef BOOST_NO_SCOPED_ENUMS
++#define BOOST_NO_SCOPED_ENUMS
++#endif // BOOST_NO_SCOPED_ENUMS
+ #include <boost/filesystem.hpp>
+ #include <rime_version.h>
+ #include <rime/common.h>
+Index: librime-1.1git20140306/src/dict/dict_compiler.cc
+===================================================================
+--- librime-1.1git20140306.orig/src/dict/dict_compiler.cc
++++ librime-1.1git20140306/src/dict/dict_compiler.cc
+@@ -7,6 +7,9 @@
+ #include <fstream>
+ #include <map>
+ #include <set>
++#ifndef BOOST_NO_SCOPED_ENUMS
++#define BOOST_NO_SCOPED_ENUMS
++#endif // BOOST_NO_SCOPED_ENUMS
+ #include <boost/filesystem.hpp>
+ #include <rime/algo/algebra.h>
+ #include <rime/algo/utilities.h>
+Index: librime-1.1git20140306/src/dict/dictionary.cc
+===================================================================
+--- librime-1.1git20140306.orig/src/dict/dictionary.cc
++++ librime-1.1git20140306/src/dict/dictionary.cc
+@@ -5,6 +5,9 @@
+ // 2011-07-05 GONG Chen <chen.sst@gmail.com>
+ //
+ #include <utility>
++#ifndef BOOST_NO_SCOPED_ENUMS
++#define BOOST_NO_SCOPED_ENUMS
++#endif // BOOST_NO_SCOPED_ENUMS
+ #include <boost/filesystem.hpp>
+ #include <rime/common.h>
+ #include <rime/schema.h>
+Index: librime-1.1git20140306/src/dict/mapped_file.cc
+===================================================================
+--- librime-1.1git20140306.orig/src/dict/mapped_file.cc
++++ librime-1.1git20140306/src/dict/mapped_file.cc
+@@ -7,6 +7,9 @@
+ // 2011-06-30 GONG Chen <chen.sst@gmail.com>
+ //
+ #include <fstream>
++#ifndef BOOST_NO_SCOPED_ENUMS
++#define BOOST_NO_SCOPED_ENUMS
++#endif // BOOST_NO_SCOPED_ENUMS
+ #include <boost/filesystem.hpp>
+ #include <boost/interprocess/file_mapping.hpp>
+ #include <boost/interprocess/mapped_region.hpp>
+Index: librime-1.1git20140306/src/dict/preset_vocabulary.cc
+===================================================================
+--- librime-1.1git20140306.orig/src/dict/preset_vocabulary.cc
++++ librime-1.1git20140306/src/dict/preset_vocabulary.cc
+@@ -4,6 +4,9 @@
+ //
+ // 2011-11-27 GONG Chen <chen.sst@gmail.com>
+ //
++#ifndef BOOST_NO_SCOPED_ENUMS
++#define BOOST_NO_SCOPED_ENUMS
++#endif // BOOST_NO_SCOPED_ENUMS
+ #include <boost/filesystem.hpp>
+ #include <boost/lexical_cast.hpp>
+ #include <utf8.h>
+Index: librime-1.1git20140306/src/dict/tree_db.cc
+===================================================================
+--- librime-1.1git20140306.orig/src/dict/tree_db.cc
++++ librime-1.1git20140306/src/dict/tree_db.cc
+@@ -4,6 +4,9 @@
+ //
+ // 2011-11-02 GONG Chen <chen.sst@gmail.com>
+ //
++#ifndef BOOST_NO_SCOPED_ENUMS
++#define BOOST_NO_SCOPED_ENUMS
++#endif // BOOST_NO_SCOPED_ENUMS
+ #include <boost/filesystem.hpp>
+ #if defined(_MSC_VER)
+ #pragma warning(disable: 4244)
+Index: librime-1.1git20140306/src/gear/simplifier.cc
+===================================================================
+--- librime-1.1git20140306.orig/src/gear/simplifier.cc
++++ librime-1.1git20140306/src/gear/simplifier.cc
+@@ -7,6 +7,9 @@
+ #include <string>
+ #include <vector>
+ #include <boost/algorithm/string.hpp>
++#ifndef BOOST_NO_SCOPED_ENUMS
++#define BOOST_NO_SCOPED_ENUMS
++#endif // BOOST_NO_SCOPED_ENUMS
+ #include <boost/filesystem.hpp>
+ #include <opencc/opencc.h>
+ #include <stdint.h>
+Index: librime-1.1git20140306/src/lever/custom_settings.cc
+===================================================================
+--- librime-1.1git20140306.orig/src/lever/custom_settings.cc
++++ librime-1.1git20140306/src/lever/custom_settings.cc
+@@ -5,6 +5,9 @@
+ // 2012-02-26 GONG Chen <chen.sst@gmail.com>
+ //
+ #include <boost/algorithm/string.hpp>
++#ifndef BOOST_NO_SCOPED_ENUMS
++#define BOOST_NO_SCOPED_ENUMS
++#endif // BOOST_NO_SCOPED_ENUMS
+ #include <boost/filesystem.hpp>
+ #include <rime/config.h>
+ #include <rime/deployer.h>
+Index: librime-1.1git20140306/src/lever/deployment_tasks.cc
+===================================================================
+--- librime-1.1git20140306.orig/src/lever/deployment_tasks.cc
++++ librime-1.1git20140306/src/lever/deployment_tasks.cc
+@@ -5,6 +5,9 @@
+ // 2011-12-10 GONG Chen <chen.sst@gmail.com>
+ //
+ #include <boost/algorithm/string.hpp>
++#ifndef BOOST_NO_SCOPED_ENUMS
++#define BOOST_NO_SCOPED_ENUMS
++#endif // BOOST_NO_SCOPED_ENUMS
+ #define BOOST_NO_CXX11_SCOPED_ENUMS
+ #include <boost/filesystem.hpp>
+ #include <boost/uuid/random_generator.hpp>
+Index: librime-1.1git20140306/src/lever/switcher_settings.cc
+===================================================================
+--- librime-1.1git20140306.orig/src/lever/switcher_settings.cc
++++ librime-1.1git20140306/src/lever/switcher_settings.cc
+@@ -6,6 +6,9 @@
+ //
+ #include <utility>
+ #include <boost/algorithm/string.hpp>
++#ifndef BOOST_NO_SCOPED_ENUMS
++#define BOOST_NO_SCOPED_ENUMS
++#endif // BOOST_NO_SCOPED_ENUMS
+ #include <boost/filesystem.hpp>
+ #include <rime/config.h>
+ #include <rime/deployer.h>
+Index: librime-1.1git20140306/src/lever/user_dict_manager.cc
+===================================================================
+--- librime-1.1git20140306.orig/src/lever/user_dict_manager.cc
++++ librime-1.1git20140306/src/lever/user_dict_manager.cc
+@@ -6,6 +6,9 @@
+ //
+ #include <fstream>
+ #include <boost/algorithm/string.hpp>
++#ifndef BOOST_NO_SCOPED_ENUMS
++#define BOOST_NO_SCOPED_ENUMS
++#endif // BOOST_NO_SCOPED_ENUMS
+ #include <boost/filesystem.hpp>
+ #include <boost/scope_exit.hpp>
+ #include <rime/common.h>
+Index: librime-1.1git20140306/src/lever/userdb_recovery_task.cc
+===================================================================
+--- librime-1.1git20140306.orig/src/lever/userdb_recovery_task.cc
++++ librime-1.1git20140306/src/lever/userdb_recovery_task.cc
+@@ -5,6 +5,9 @@
+ // 2013-04-22 GONG Chen <chen.sst@gmail.com>
+ //
+ #include <boost/algorithm/string.hpp>
++#ifndef BOOST_NO_SCOPED_ENUMS
++#define BOOST_NO_SCOPED_ENUMS
++#endif // BOOST_NO_SCOPED_ENUMS
+ #include <boost/filesystem.hpp>
+ #include <boost/scope_exit.hpp>
+ #include <rime/deployer.h>
diff --git a/app-i18n/librime/files/librime-1.1-gcc53613.patch b/app-i18n/librime/files/librime-1.1-gcc53613.patch
new file mode 100644
index 00000000000..28dfb1ec36b
--- /dev/null
+++ b/app-i18n/librime/files/librime-1.1-gcc53613.patch
@@ -0,0 +1,367 @@
+Index: librime-1.1git20140306/include/rime/algo/calculus.h
+===================================================================
+--- librime-1.1git20140306.orig/include/rime/algo/calculus.h
++++ librime-1.1git20140306/include/rime/algo/calculus.h
+@@ -22,11 +22,12 @@ class Calculation {
+ using Factory = Calculation* (const std::vector<std::string>& args);
+
+ Calculation() = default;
+- virtual ~Calculation() = default;
++ virtual ~Calculation();
+ virtual bool Apply(Spelling* spelling) = 0;
+ virtual bool addition() { return true; }
+ virtual bool deletion() { return true; }
+ };
++inline Calculation::~Calculation() = default;
+
+ class Calculus {
+ public:
+Index: librime-1.1git20140306/include/rime/dict/db.h
+===================================================================
+--- librime-1.1git20140306.orig/include/rime/dict/db.h
++++ librime-1.1git20140306/include/rime/dict/db.h
+@@ -18,7 +18,7 @@ class DbAccessor {
+ DbAccessor() = default;
+ explicit DbAccessor(const std::string& prefix)
+ : prefix_(prefix) {}
+- virtual ~DbAccessor() = default;
++ virtual ~DbAccessor();
+
+ virtual bool Reset() = 0;
+ virtual bool Jump(const std::string &key) = 0;
+@@ -30,11 +30,12 @@ class DbAccessor {
+
+ std::string prefix_;
+ };
++inline DbAccessor::~DbAccessor() = default;
+
+ class Db : public Class<Db, const std::string&> {
+ public:
+ explicit Db(const std::string& name);
+- virtual ~Db() = default;
++ virtual ~Db();
+
+ bool Exists() const;
+ bool Remove();
+@@ -72,11 +73,12 @@ class Db : public Class<Db, const std::s
+ bool readonly_ = false;
+ bool disabled_ = false;
+ };
++inline Db::~Db() = default;
+
+ class Transactional {
+ public:
+ Transactional() = default;
+- virtual ~Transactional() = default;
++ virtual ~Transactional();
+ virtual bool BeginTransaction() { return false; }
+ virtual bool AbortTransaction() { return false; }
+ virtual bool CommitTransaction() { return false; }
+@@ -84,12 +86,14 @@ class Transactional {
+ protected:
+ bool in_transaction_ = false;
+ };
++inline Transactional::~Transactional() = default;
+
+ class Recoverable {
+ public:
+- virtual ~Recoverable() = default;
++ virtual ~Recoverable();
+ virtual bool Recover() = 0;
+ };
++inline Recoverable::~Recoverable() = default;
+
+ } // namespace rime
+
+Index: librime-1.1git20140306/include/rime/algo/encoder.h
+===================================================================
+--- librime-1.1git20140306.orig/include/rime/algo/encoder.h
++++ librime-1.1git20140306/include/rime/algo/encoder.h
+@@ -24,7 +24,7 @@ class RawCode : public std::vector<std::
+ class PhraseCollector {
+ public:
+ PhraseCollector() = default;
+- virtual ~PhraseCollector() = default;
++ virtual ~PhraseCollector();
+
+ virtual void CreateEntry(const std::string& phrase,
+ const std::string& code_str,
+@@ -33,13 +33,14 @@ class PhraseCollector {
+ virtual bool TranslateWord(const std::string& word,
+ std::vector<std::string>* code) = 0;
+ };
++inline PhraseCollector::~PhraseCollector() = default;
+
+ class Config;
+
+ class Encoder {
+ public:
+ Encoder(PhraseCollector* collector) : collector_(collector) {}
+- virtual ~Encoder() = default;
++ virtual ~Encoder();
+
+ virtual bool LoadSettings(Config* config) {
+ return false;
+@@ -53,7 +54,7 @@ class Encoder {
+ protected:
+ PhraseCollector* collector_;
+ };
+-
++inline Encoder::~Encoder() = default;
+ // Aa : code at index 0 for character at index 0
+ // Az : code at index -1 for character at index 0
+ // Za : code at index 0 for character at index -1
+Index: librime-1.1git20140306/include/rime/candidate.h
+===================================================================
+--- librime-1.1git20140306.orig/include/rime/candidate.h
++++ librime-1.1git20140306/include/rime/candidate.h
+@@ -21,7 +21,7 @@ class Candidate {
+ size_t end,
+ double quality = 0.)
+ : type_(type), start_(start), end_(end), quality_(quality) {}
+- virtual ~Candidate() = default;
++ virtual ~Candidate();
+
+ static shared_ptr<Candidate>
+ GetGenuineCandidate(const shared_ptr<Candidate>& cand);
+@@ -53,6 +53,7 @@ class Candidate {
+ size_t end_ = 0;
+ double quality_ = 0.;
+ };
++inline Candidate::~Candidate() = default;
+
+ using CandidateList = std::vector<shared_ptr<Candidate>>;
+
+Index: librime-1.1git20140306/include/rime/component.h
+===================================================================
+--- librime-1.1git20140306.orig/include/rime/component.h
++++ librime-1.1git20140306/include/rime/component.h
+@@ -16,8 +16,9 @@ namespace rime {
+ class ComponentBase {
+ public:
+ ComponentBase() = default;
+- virtual ~ComponentBase() = default;
++ virtual ~ComponentBase();
+ };
++inline ComponentBase::~ComponentBase() = default;
+
+ template <class T, class Arg>
+ struct Class {
+Index: librime-1.1git20140306/include/rime/config.h
+===================================================================
+--- librime-1.1git20140306.orig/include/rime/config.h
++++ librime-1.1git20140306/include/rime/config.h
+@@ -22,7 +22,7 @@ class ConfigItem {
+ enum ValueType { kNull, kScalar, kList, kMap };
+
+ ConfigItem() = default; // null
+- virtual ~ConfigItem() = default;
++ virtual ~ConfigItem();
+
+ ValueType type() const { return type_; }
+
+@@ -31,6 +31,7 @@ class ConfigItem {
+
+ ValueType type_ = kNull;
+ };
++inline ConfigItem::~ConfigItem() = default;
+
+ using ConfigItemPtr = shared_ptr<ConfigItem>;
+
+Index: librime-1.1git20140306/include/rime/deployer.h
+===================================================================
+--- librime-1.1git20140306.orig/include/rime/deployer.h
++++ librime-1.1git20140306/include/rime/deployer.h
+@@ -25,10 +25,11 @@ using TaskInitializer = boost::any;
+ class DeploymentTask : public Class<DeploymentTask, TaskInitializer> {
+ public:
+ DeploymentTask() = default;
+- virtual ~DeploymentTask() = default;
++ virtual ~DeploymentTask();
+
+ virtual bool Run(Deployer* deployer) = 0;
+ };
++inline DeploymentTask::~DeploymentTask() = default;
+
+ class Deployer : public Messenger {
+ public:
+Index: librime-1.1git20140306/include/rime/filter.h
+===================================================================
+--- librime-1.1git20140306.orig/include/rime/filter.h
++++ librime-1.1git20140306/include/rime/filter.h
+@@ -22,7 +22,7 @@ class Filter : public Class<Filter, cons
+ public:
+ explicit Filter(const Ticket& ticket)
+ : engine_(ticket.engine), name_space_(ticket.name_space) {}
+- virtual ~Filter() = default;
++ virtual ~Filter();
+
+ virtual void Apply(CandidateList* recruited,
+ CandidateList* candidates) = 0;
+@@ -35,6 +35,7 @@ class Filter : public Class<Filter, cons
+ Engine* engine_;
+ std::string name_space_;
+ };
++inline Filter::~Filter() = default;
+
+ } // namespace rime
+
+Index: librime-1.1git20140306/include/rime/formatter.h
+===================================================================
+--- librime-1.1git20140306.orig/include/rime/formatter.h
++++ librime-1.1git20140306/include/rime/formatter.h
+@@ -20,7 +20,7 @@ class Formatter : public Class<Formatter
+ public:
+ Formatter(const Ticket& ticket)
+ : engine_(ticket.engine), name_space_(ticket.name_space) {}
+- virtual ~Formatter() = default;
++ virtual ~Formatter();
+
+ virtual void Format(std::string* text) = 0;
+
+@@ -28,6 +28,7 @@ class Formatter : public Class<Formatter
+ Engine* engine_;
+ std::string name_space_;
+ };
++inline Formatter::~Formatter() = default;
+
+ } // namespace rime
+
+Index: librime-1.1git20140306/include/rime/lever/custom_settings.h
+===================================================================
+--- librime-1.1git20140306.orig/include/rime/lever/custom_settings.h
++++ librime-1.1git20140306/include/rime/lever/custom_settings.h
+@@ -19,7 +19,7 @@ class CustomSettings {
+ CustomSettings(Deployer* deployer,
+ const std::string& config_id,
+ const std::string& generator_id);
+- virtual ~CustomSettings() = default;
++ virtual ~CustomSettings();
+
+ virtual bool Load();
+ virtual bool Save();
+@@ -39,6 +39,7 @@ class CustomSettings {
+ Config config_;
+ Config custom_config_;
+ };
++inline CustomSettings::~CustomSettings() = default;
+
+ } // namespace rime
+
+Index: librime-1.1git20140306/include/rime/processor.h
+===================================================================
+--- librime-1.1git20140306.orig/include/rime/processor.h
++++ librime-1.1git20140306/include/rime/processor.h
+@@ -25,7 +25,7 @@ class Processor : public Class<Processor
+ public:
+ explicit Processor(const Ticket& ticket)
+ : engine_(ticket.engine), name_space_(ticket.name_space) {}
+- virtual ~Processor() = default;
++ virtual ~Processor();
+
+ virtual ProcessResult ProcessKeyEvent(const KeyEvent& key_event) {
+ return kNoop;
+@@ -35,6 +35,7 @@ class Processor : public Class<Processor
+ Engine* engine_;
+ std::string name_space_;
+ };
++inline Processor::~Processor() = default;
+
+ } // namespace rime
+
+Index: librime-1.1git20140306/include/rime/segmentor.h
+===================================================================
+--- librime-1.1git20140306.orig/include/rime/segmentor.h
++++ librime-1.1git20140306/include/rime/segmentor.h
+@@ -19,7 +19,7 @@ class Segmentor : public Class<Segmentor
+ public:
+ explicit Segmentor(const Ticket& ticket)
+ : engine_(ticket.engine), name_space_(ticket.name_space) {}
+- virtual ~Segmentor() = default;
++ virtual ~Segmentor();
+
+ virtual bool Proceed(Segmentation* segmentation) = 0;
+
+@@ -27,6 +27,7 @@ class Segmentor : public Class<Segmentor
+ Engine* engine_;
+ std::string name_space_;
+ };
++inline Segmentor::~Segmentor() = default;
+
+ } // namespace rime
+
+Index: librime-1.1git20140306/include/rime/translation.h
+===================================================================
+--- librime-1.1git20140306.orig/include/rime/translation.h
++++ librime-1.1git20140306/include/rime/translation.h
+@@ -19,7 +19,7 @@ namespace rime {
+ class Translation {
+ public:
+ Translation() = default;
+- virtual ~Translation() = default;
++ virtual ~Translation();
+
+ // A translation may contain multiple results, looks
+ // something like a generator of candidates.
+@@ -40,6 +40,7 @@ class Translation {
+ private:
+ bool exhausted_ = false;
+ };
++inline Translation::~Translation() = default;
+
+ class UniqueTranslation : public Translation {
+ public:
+Index: librime-1.1git20140306/include/rime/translator.h
+===================================================================
+--- librime-1.1git20140306.orig/include/rime/translator.h
++++ librime-1.1git20140306/include/rime/translator.h
+@@ -23,7 +23,7 @@ class Translator : public Class<Translat
+ public:
+ explicit Translator(const Ticket& ticket)
+ : engine_(ticket.engine), name_space_(ticket.name_space) {}
+- virtual ~Translator() = default;
++ virtual ~Translator();
+
+ virtual shared_ptr<Translation> Query(const std::string& input,
+ const Segment& segment,
+@@ -33,6 +33,7 @@ class Translator : public Class<Translat
+ Engine* engine_;
+ std::string name_space_;
+ };
++inline Translator::~Translator() = default;
+
+ } // namespace rime
+
+Index: librime-1.1git20140306/include/rime/dict/db_utils.h
+===================================================================
+--- librime-1.1git20140306.orig/include/rime/dict/db_utils.h
++++ librime-1.1git20140306/include/rime/dict/db_utils.h
+@@ -14,17 +14,18 @@ namespace rime {
+
+ class Sink {
+ public:
+- virtual ~Sink() = default;
++ virtual ~Sink();
+ virtual bool MetaPut(const std::string& key, const std::string& value) = 0;
+ virtual bool Put(const std::string& key, const std::string& value) = 0;
+
+ template <class SourceType>
+ int operator<< (SourceType& source);
+ };
++inline Sink::~Sink() = default;
+
+ class Source {
+ public:
+- virtual ~Source() = default;
++ virtual ~Source();
+ virtual bool MetaGet(std::string* key, std::string* value) = 0;
+ virtual bool Get(std::string* key, std::string* value) = 0;
+
+@@ -33,6 +34,7 @@ class Source {
+
+ int Dump(Sink* sink);
+ };
++inline Source::~Source() = default;
+
+ template <class SourceType>
+ int Sink::operator<< (SourceType& source) {
diff --git a/app-i18n/librime/files/librime-1.2-BOOST_NO_SCOPED_ENUMS.patch b/app-i18n/librime/files/librime-1.2-BOOST_NO_SCOPED_ENUMS.patch
new file mode 100644
index 00000000000..71c1e9a9621
--- /dev/null
+++ b/app-i18n/librime/files/librime-1.2-BOOST_NO_SCOPED_ENUMS.patch
@@ -0,0 +1,224 @@
+diff --git a/include/rime/lever/customizer.h b/include/rime/lever/customizer.h
+index 8418410..f6811d9 100644
+--- a/include/rime/lever/customizer.h
++++ b/include/rime/lever/customizer.h
+@@ -8,6 +8,9 @@
+ #define RIME_CUSTOMIZER_H_
+
+ #include <string>
++#ifndef BOOST_NO_SCOPED_ENUMS
++#define BOOST_NO_SCOPED_ENUMS
++#endif // BOOST_NO_SCOPED_ENUMS
+ #include <boost/filesystem.hpp>
+
+ namespace rime {
+diff --git a/include/rime/lever/switcher_settings.h b/include/rime/lever/switcher_settings.h
+index 8263e14..f7c9d1e 100644
+--- a/include/rime/lever/switcher_settings.h
++++ b/include/rime/lever/switcher_settings.h
+@@ -9,6 +9,9 @@
+
+ #include <string>
+ #include <vector>
++#ifndef BOOST_NO_SCOPED_ENUMS
++#define BOOST_NO_SCOPED_ENUMS
++#endif // BOOST_NO_SCOPED_ENUMS
+ #include <boost/filesystem.hpp>
+ #include "custom_settings.h"
+
+diff --git a/include/rime/lever/user_dict_manager.h b/include/rime/lever/user_dict_manager.h
+index e971ad8..e765678 100644
+--- a/include/rime/lever/user_dict_manager.h
++++ b/include/rime/lever/user_dict_manager.h
+@@ -9,6 +9,9 @@
+
+ #include <string>
+ #include <vector>
++#ifndef BOOST_NO_SCOPED_ENUMS
++#define BOOST_NO_SCOPED_ENUMS
++#endif // BOOST_NO_SCOPED_ENUMS
+ #include <boost/filesystem.hpp>
+
+ namespace rime {
+diff --git a/src/core_module.cc b/src/core_module.cc
+index 785c22f..4d078ae 100644
+--- a/src/core_module.cc
++++ b/src/core_module.cc
+@@ -5,6 +5,9 @@
+ // 2013-10-17 GONG Chen <chen.sst@gmail.com>
+ //
+
++#ifndef BOOST_NO_SCOPED_ENUMS
++#define BOOST_NO_SCOPED_ENUMS
++#endif // BOOST_NO_SCOPED_ENUMS
+ #include <boost/filesystem.hpp>
+ #include <rime_api.h>
+ #include <rime/common.h>
+diff --git a/src/dict/db.cc b/src/dict/db.cc
+index b8c46a6..eadacb9 100644
+--- a/src/dict/db.cc
++++ b/src/dict/db.cc
+@@ -5,6 +5,9 @@
+ // 2011-11-02 GONG Chen <chen.sst@gmail.com>
+ //
+ #include <boost/algorithm/string.hpp>
++#ifndef BOOST_NO_SCOPED_ENUMS
++#define BOOST_NO_SCOPED_ENUMS
++#endif // BOOST_NO_SCOPED_ENUMS
+ #include <boost/filesystem.hpp>
+ #include <rime_version.h>
+ #include <rime/common.h>
+diff --git a/src/dict/dict_compiler.cc b/src/dict/dict_compiler.cc
+index 2bd9aa4..f383f7e 100644
+--- a/src/dict/dict_compiler.cc
++++ b/src/dict/dict_compiler.cc
+@@ -7,6 +7,9 @@
+ #include <fstream>
+ #include <map>
+ #include <set>
++#ifndef BOOST_NO_SCOPED_ENUMS
++#define BOOST_NO_SCOPED_ENUMS
++#endif // BOOST_NO_SCOPED_ENUMS
+ #include <boost/filesystem.hpp>
+ #include <rime/algo/algebra.h>
+ #include <rime/algo/utilities.h>
+diff --git a/src/dict/dictionary.cc b/src/dict/dictionary.cc
+index 66306b5..b0d755d 100644
+--- a/src/dict/dictionary.cc
++++ b/src/dict/dictionary.cc
+@@ -5,6 +5,9 @@
+ // 2011-07-05 GONG Chen <chen.sst@gmail.com>
+ //
+ #include <utility>
++#ifndef BOOST_NO_SCOPED_ENUMS
++#define BOOST_NO_SCOPED_ENUMS
++#endif // BOOST_NO_SCOPED_ENUMS
+ #include <boost/filesystem.hpp>
+ #include <rime/common.h>
+ #include <rime/schema.h>
+diff --git a/src/dict/mapped_file.cc b/src/dict/mapped_file.cc
+index 6fd21a6..cd46994 100644
+--- a/src/dict/mapped_file.cc
++++ b/src/dict/mapped_file.cc
+@@ -7,6 +7,9 @@
+ // 2011-06-30 GONG Chen <chen.sst@gmail.com>
+ //
+ #include <fstream>
++#ifndef BOOST_NO_SCOPED_ENUMS
++#define BOOST_NO_SCOPED_ENUMS
++#endif // BOOST_NO_SCOPED_ENUMS
+ #include <boost/filesystem.hpp>
+ #include <boost/interprocess/file_mapping.hpp>
+ #include <boost/interprocess/mapped_region.hpp>
+diff --git a/src/dict/preset_vocabulary.cc b/src/dict/preset_vocabulary.cc
+index f74ea58..136f9fa 100644
+--- a/src/dict/preset_vocabulary.cc
++++ b/src/dict/preset_vocabulary.cc
+@@ -4,6 +4,9 @@
+ //
+ // 2011-11-27 GONG Chen <chen.sst@gmail.com>
+ //
++#ifndef BOOST_NO_SCOPED_ENUMS
++#define BOOST_NO_SCOPED_ENUMS
++#endif // BOOST_NO_SCOPED_ENUMS
+ #include <boost/filesystem.hpp>
+ #include <boost/lexical_cast.hpp>
+ #include <utf8.h>
+diff --git a/src/dict/tree_db.cc b/src/dict/tree_db.cc
+index 4b6ed2e..542fe83 100644
+--- a/src/dict/tree_db.cc
++++ b/src/dict/tree_db.cc
+@@ -4,6 +4,9 @@
+ //
+ // 2011-11-02 GONG Chen <chen.sst@gmail.com>
+ //
++#ifndef BOOST_NO_SCOPED_ENUMS
++#define BOOST_NO_SCOPED_ENUMS
++#endif // BOOST_NO_SCOPED_ENUMS
+ #include <boost/filesystem.hpp>
+ #if defined(_MSC_VER)
+ #pragma warning(disable: 4244)
+diff --git a/src/gear/simplifier.cc b/src/gear/simplifier.cc
+index 6bb8524..d02b979 100644
+--- a/src/gear/simplifier.cc
++++ b/src/gear/simplifier.cc
+@@ -7,6 +7,9 @@
+ #include <string>
+ #include <vector>
+ #include <boost/algorithm/string.hpp>
++#ifndef BOOST_NO_SCOPED_ENUMS
++#define BOOST_NO_SCOPED_ENUMS
++#endif // BOOST_NO_SCOPED_ENUMS
+ #include <boost/filesystem.hpp>
+ #include <opencc/opencc.h>
+ #include <stdint.h>
+diff --git a/src/lever/custom_settings.cc b/src/lever/custom_settings.cc
+index 0153830..0713cbc 100644
+--- a/src/lever/custom_settings.cc
++++ b/src/lever/custom_settings.cc
+@@ -5,6 +5,9 @@
+ // 2012-02-26 GONG Chen <chen.sst@gmail.com>
+ //
+ #include <boost/algorithm/string.hpp>
++#ifndef BOOST_NO_SCOPED_ENUMS
++#define BOOST_NO_SCOPED_ENUMS
++#endif // BOOST_NO_SCOPED_ENUMS
+ #include <boost/filesystem.hpp>
+ #include <rime/config.h>
+ #include <rime/deployer.h>
+diff --git a/src/lever/deployment_tasks.cc b/src/lever/deployment_tasks.cc
+index 495066f..589c883 100644
+--- a/src/lever/deployment_tasks.cc
++++ b/src/lever/deployment_tasks.cc
+@@ -5,6 +5,9 @@
+ // 2011-12-10 GONG Chen <chen.sst@gmail.com>
+ //
+ #include <boost/algorithm/string.hpp>
++#ifndef BOOST_NO_SCOPED_ENUMS
++#define BOOST_NO_SCOPED_ENUMS
++#endif // BOOST_NO_SCOPED_ENUMS
+ #include <boost/filesystem.hpp>
+ #include <boost/uuid/random_generator.hpp>
+ #include <boost/uuid/uuid.hpp>
+diff --git a/src/lever/switcher_settings.cc b/src/lever/switcher_settings.cc
+index 4ee7d57..bb4dbd0 100644
+--- a/src/lever/switcher_settings.cc
++++ b/src/lever/switcher_settings.cc
+@@ -6,6 +6,9 @@
+ //
+ #include <utility>
+ #include <boost/algorithm/string.hpp>
++#ifndef BOOST_NO_SCOPED_ENUMS
++#define BOOST_NO_SCOPED_ENUMS
++#endif // BOOST_NO_SCOPED_ENUMS
+ #include <boost/filesystem.hpp>
+ #include <rime/config.h>
+ #include <rime/deployer.h>
+diff --git a/src/lever/user_dict_manager.cc b/src/lever/user_dict_manager.cc
+index 601cfc2..e087739 100644
+--- a/src/lever/user_dict_manager.cc
++++ b/src/lever/user_dict_manager.cc
+@@ -6,6 +6,9 @@
+ //
+ #include <fstream>
+ #include <boost/algorithm/string.hpp>
++#ifndef BOOST_NO_SCOPED_ENUMS
++#define BOOST_NO_SCOPED_ENUMS
++#endif // BOOST_NO_SCOPED_ENUMS
+ #include <boost/filesystem.hpp>
+ #include <boost/scope_exit.hpp>
+ #include <rime/common.h>
+diff --git a/src/lever/userdb_recovery_task.cc b/src/lever/userdb_recovery_task.cc
+index 818e2fd..2a25efd 100644
+--- a/src/lever/userdb_recovery_task.cc
++++ b/src/lever/userdb_recovery_task.cc
+@@ -5,6 +5,9 @@
+ // 2013-04-22 GONG Chen <chen.sst@gmail.com>
+ //
+ #include <boost/algorithm/string.hpp>
++#ifndef BOOST_NO_SCOPED_ENUMS
++#define BOOST_NO_SCOPED_ENUMS
++#endif // BOOST_NO_SCOPED_ENUMS
+ #include <boost/filesystem.hpp>
+ #include <boost/scope_exit.hpp>
+ #include <rime/deployer.h>
diff --git a/app-i18n/librime/files/librime-dictionary.patch b/app-i18n/librime/files/librime-dictionary.patch
new file mode 100644
index 00000000000..b8ce53f3992
--- /dev/null
+++ b/app-i18n/librime/files/librime-dictionary.patch
@@ -0,0 +1,13 @@
+diff --git a/data/test/dictionary_test.dict.yaml b/data/test/dictionary_test.dict.yaml
+index c0b6d65..7e362b1 100644
+--- a/data/test/dictionary_test.dict.yaml
++++ b/data/test/dictionary_test.dict.yaml
+@@ -5,7 +5,7 @@
+ # http://android.git.kernel.org/?p=platform/packages/inputmethods/PinyinIME.git
+
+ ---
+-name: luna_pinyin
++name: dictionary_test
+ version: "0.1"
+ sort: by_weight # by_weight / original
+ ...
diff --git a/app-i18n/librime/files/librime-test.patch b/app-i18n/librime/files/librime-test.patch
new file mode 100644
index 00000000000..b890cabfbb3
--- /dev/null
+++ b/app-i18n/librime/files/librime-test.patch
@@ -0,0 +1,42 @@
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index 82cd141..bdb5169 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -10,6 +10,7 @@ set(LIBRIME_SOVERSION 0)
+ option(BUILD_SHARED_LIBS "Build Rime as shared library" ON)
+ option(BUILD_STATIC "Build Rime using static libraries" OFF)
+ option(BUILD_DATA "Build data for Rime" OFF)
++option(BUILD_TEST "Build gtest framwork for Rime" OFF)
+
+ SET(RIME_DATA_DIR "/share/rime-data" CACHE STRING "Target directory for Rime data")
+
+@@ -47,10 +48,14 @@ if(Glog_FOUND)
+ endif(Glog_FOUND)
+
+ find_package(Threads)
+-find_package(GTest)
++
++if(BUILD_TEST)
++ find_package(GTest REQUIRED)
+ if(GTEST_FOUND)
++ enable_testing()
+ include_directories(${GTEST_INCLUDE_DIRS})
+ endif(GTEST_FOUND)
++endif(BUILD_TEST)
+
+ find_package(YamlCpp REQUIRED)
+ if(YamlCpp_FOUND)
+diff --git a/test/CMakeLists.txt b/test/CMakeLists.txt
+index 05db7bd..205b1c9 100644
+--- a/test/CMakeLists.txt
++++ b/test/CMakeLists.txt
+@@ -19,8 +19,5 @@ file(COPY ${PROJECT_SOURCE_DIR}/data/test/dictionary_test.dict.yaml
+
+ if(NOT MSVC AND NOT XCODE_VERSION)
+ set(RIME_TEST_EXECUTABLE ${EXECUTABLE_OUTPUT_PATH}/rime_test${EXT})
+-add_custom_command(TARGET rime_test
+- POST_BUILD
+- COMMAND ${RIME_TEST_EXECUTABLE}
+- WORKING_DIRECTORY ${EXECUTABLE_OUTPUT_PATH})
++add_test(rime_test ${RIME_TEST_EXECUTABLE})
+ endif(NOT MSVC AND NOT XCODE_VERSION)
diff --git a/app-i18n/librime/librime-0.9.9.ebuild b/app-i18n/librime/librime-0.9.9.ebuild
new file mode 100644
index 00000000000..c5ba06b09e9
--- /dev/null
+++ b/app-i18n/librime/librime-0.9.9.ebuild
@@ -0,0 +1,43 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+inherit cmake-utils multilib
+
+DESCRIPTION="Rime Input Method Engine library"
+HOMEPAGE="http://code.google.com/p/rimeime/"
+SRC_URI="http://rimeime.googlecode.com/files/${P}.tar.gz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="amd64 ~ppc ~ppc64 x86"
+IUSE="static-libs test"
+
+RDEPEND="app-i18n/opencc
+ dev-cpp/glog
+ >=dev-cpp/yaml-cpp-0.5.0
+ dev-db/kyotocabinet
+ >=dev-libs/boost-1.46.0[threads(+)]
+ sys-libs/zlib
+ x11-proto/xproto"
+DEPEND="${RDEPEND}
+ test? ( dev-cpp/gtest )"
+
+S="${WORKDIR}/${PN}"
+
+PATCHES=(
+ "${FILESDIR}/${PN}-test.patch"
+ "${FILESDIR}/${PN}-dictionary.patch"
+)
+
+src_configure() {
+ local mycmakeargs=(
+ $(cmake-utils_use_build static-libs STATIC)
+ -DBUILD_DATA=OFF
+ $(cmake-utils_use_build test TEST)
+ -DLIB_INSTALL_DIR=/usr/$(get_libdir)
+ )
+ cmake-utils_src_configure
+}
diff --git a/app-i18n/librime/librime-1.2.ebuild b/app-i18n/librime/librime-1.2.ebuild
new file mode 100644
index 00000000000..b4bd200f9da
--- /dev/null
+++ b/app-i18n/librime/librime-1.2.ebuild
@@ -0,0 +1,46 @@
+# Copyright 1999-2015 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Id$
+
+EAPI=5
+
+inherit cmake-utils multilib versionator toolchain-funcs
+
+DESCRIPTION="Rime Input Method Engine library"
+HOMEPAGE="http://code.google.com/p/rimeime/"
+SRC_URI="http://dl.bintray.com/lotem/rime/${P}.tar.gz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="amd64 ~ppc ppc64 ~x86"
+IUSE="static-libs test"
+
+RDEPEND="app-i18n/opencc
+ dev-cpp/glog
+ >=dev-cpp/yaml-cpp-0.5.0
+ dev-db/kyotocabinet
+ dev-libs/marisa
+ >=dev-libs/boost-1.46.0[threads(+)]
+ sys-libs/zlib
+ x11-proto/xproto"
+DEPEND="${RDEPEND}
+ test? ( dev-cpp/gtest )"
+
+S="${WORKDIR}/${PN}"
+
+#bug 496080, backport patch for <gcc-4.8
+PATCHES=(
+ "${FILESDIR}/${PN}-1.2-BOOST_NO_SCOPED_ENUMS.patch"
+ "${FILESDIR}/${PN}-1.1-gcc53613.patch"
+)
+
+src_configure() {
+ local mycmakeargs=(
+ $(cmake-utils_use_build static-libs STATIC)
+ -DBUILD_DATA=OFF
+ -DBUILD_SEPARATE_LIBS=OFF
+ $(cmake-utils_use_build test TEST)
+ -DLIB_INSTALL_DIR=/usr/$(get_libdir)
+ )
+ cmake-utils_src_configure
+}
diff --git a/app-i18n/librime/metadata.xml b/app-i18n/librime/metadata.xml
new file mode 100644
index 00000000000..0a8c950f329
--- /dev/null
+++ b/app-i18n/librime/metadata.xml
@@ -0,0 +1,17 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <herd>cjk</herd>
+ <maintainer>
+ <email>dlan@gentoo.org</email>
+ <name>Yixun Lan</name>
+ </maintainer>
+ <upstream>
+ <maintainer>
+ <email>chen.sst@gmail.com</email>
+ <name>Gong Chen</name>
+ </maintainer>
+ <bugs-to>http://code.google.com/p/rimeime/issues/list</bugs-to>
+ <remote-id type="google-code">rimeime</remote-id>
+ </upstream>
+</pkgmetadata>