summaryrefslogtreecommitdiff
path: root/app-i18n/librime
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
committerV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
commit4f2d7949f03e1c198bc888f2d05f421d35c57e21 (patch)
treeba5f07bf3f9d22d82e54a462313f5d244036c768 /app-i18n/librime
reinit the tree, so we can have metadata
Diffstat (limited to 'app-i18n/librime')
-rw-r--r--app-i18n/librime/Manifest13
-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.ebuild42
-rw-r--r--app-i18n/librime/librime-1.2.9.ebuild38
-rw-r--r--app-i18n/librime/librime-1.2.ebuild45
-rw-r--r--app-i18n/librime/metadata.xml21
9 files changed, 805 insertions, 0 deletions
diff --git a/app-i18n/librime/Manifest b/app-i18n/librime/Manifest
new file mode 100644
index 000000000000..44da2a54123c
--- /dev/null
+++ b/app-i18n/librime/Manifest
@@ -0,0 +1,13 @@
+AUX librime-1.1-gcc53613.patch 12167 SHA256 20b8f014772fb4c2e41f1a3bd6a3039f597fe0aaa61521ecc3772779d7606be7 SHA512 d1d0288c8ec3e00547665b6d1304cf073628c085b4144662218f4260a479a4d317897e20ded07fd853791e0a0cab3100248e12de1b958458f9d5fb72c1c5c05e WHIRLPOOL de940c01eb64028c480828cad0a233b033e9a6d974c08c8a864e0927a7135b63b8d3fefaf51b515ab9d0a411b72d8655ce2364b2d80c5fb1f36e2e6532c6d9da
+AUX librime-1.2-BOOST_NO_SCOPED_ENUMS.patch 6887 SHA256 1749de31c37626d7835df60c202ff55023dc2e2ae8f7e110cfb83ea58a7bc66c SHA512 3c0d4b0f7d63a9a708825ce9a56a33bd7f7fd13ae97cefe108bcb1ba48a1798a020c8980d52c9450342c7f39cabd73c10b494ac4da5e8513f298ce771fc69d8c WHIRLPOOL 40258d79702340c1d69a21352345f1463a47a149cd164ad8784b5ffb40cfe20cfcf23553037dd41c64846f90d49bbcc4a1f0ebc07384cc8c7361bc53208cd366
+AUX librime-dictionary.patch 409 SHA256 a64e70aab186d14f2f0685bcaea811dea69660f7dc30f3a20143ae2d3afc680b SHA512 ca529ab32c5453e338c952670071fc2ad489c8785ac2336811ecad31f9e09f1fb0d081b68f61fac4b53f65ebeb3067e3ff499292ec7a3da63f51d3148a7cfd07 WHIRLPOOL 2310b349e18f2f45da856212cc98d7cb88a8c4c8c8c2029b194cb6aabf6cba49d939e258c8a7839c6fefbde4422267f93d494153f420ad2af850a5d3fb0d103c
+AUX librime-test.patch 1398 SHA256 98ad3c51d59ed64609bfe698568fad6764878cd5715e5fd3089cc0d084197fb3 SHA512 2fba47701527439e74d5511feb70dc604ccfa0d3eb8a402812b97617077ef721b8d7ad07b9a7cf7b69e5204f58a7366bf8d6b114c89a39f50f69a039c268e09b WHIRLPOOL ae6b711eb30b141eb0db6f9c19cf415bc2ac1ae0367bea8127c1a092d6868fe3d17a8d91dc3b66c0b1f4fb92abc77cdaefe0a4400f0b63680d8d9f92f662d46b
+DIST librime-0.9.9.tar.gz 2548968 SHA256 e828acc853a5d9e3ca191d065112c410183aadb5bd1d021704f82a8644ff6fd8 SHA512 71b39e713d5bbb73441dfb3038be6dc04518d2169df336e7fcb19b4c3b19a48d7db7c230fb1107148f3b7d95342851d23569617ff8138200c7ef1d750060c00f WHIRLPOOL fb5798491352eb1682a2bed7a73486df153a2479eef0adadc00726ab958b50606e32d59bfa8ded86c3aa35bac5e120e4251903fcb54326936251f1f3af726f92
+DIST librime-1.2.9.tar.gz 5516609 SHA256 d9f0e732b5bf0ee9d8872d00c79322eec7682139a898a65555f794795ac5f410 SHA512 2266ef96ad21ec5981b4ca5371d4e16eefed545ffbde07093ae0d0be070a64f9869baa09b6bdcee2522438e08c72a842a7e0b225a6ca1b661708a80cf3aba83a WHIRLPOOL 032c517008b0f4b4d9ccd9d188d480018fa1116d252786953b136de060534486b73997c6574f3ed040f337ca028b83669b135fd2683e54ddf576039a77db19d7
+DIST librime-1.2.tar.gz 5199581 SHA256 fb04a7e0a4eeb2f25031c9a366cedfdab641ab06960f50c42febef5195de9381 SHA512 75a771916a58b1ab678dbf05ac074a651cea077e81d25e4dfd0ea839fabe6cf606135851e72c19d6a8a9c6ed66b89928b90785f282e8786c375bc1d393059227 WHIRLPOOL 44a821fc4e1a562cb01ce7c28efc5a4fd3ca8e9d2d4e55ddda3434b677a17b59d7114a634bfd95ae53072f0e6f2e5f027b2c81ab70fa51b011934c7c39fbcf51
+EBUILD librime-0.9.9.ebuild 885 SHA256 f7f624b33eec3800e2984448d81039d6c58271e09159ebd21ebec5062a10b60f SHA512 905c76d5b75824318e94d8953eb3b5233d2721c1783b42e7312b56f4ab69be89a158f59a6ce4aa259f89d0baf233fb41bd10129a8b87a519c22c4e7f4d5c75ec WHIRLPOOL e8e9a0e6da2f691ee058e92c90a7308c3ce3109f610e32cfaad8adc899c74cb5cb68870539cad9ebd65f0f3754bfe782f44e0ab62deb24fc98c4f866165160e4
+EBUILD librime-1.2.9.ebuild 915 SHA256 30097dadfa5de522be9a70542fe23ede9d8648cb68240b82f461cf880994836d SHA512 268ec6bad8d831002fcda2b01cd6e35d6aa97b5cb261a671f6dcb99e4ce57660684456c6126311c49ccd72aed6351381e41be36fa6b5ce57f096bce0e9f831e7 WHIRLPOOL a81a7126fd215dbb20fc04108de7c8da76c18c26e35457325ba552282a8b1a70554955ddb85d63b9007a8906ba96c1d91ef9179aa8ff32595b222944ddaa6a50
+EBUILD librime-1.2.ebuild 1018 SHA256 a6fa15c146178eebe2c0b504321829216b6f87f20c5205496c19cedb7912f1af SHA512 fb719c3d2b79960b99d1cde79acee51f200fb295baf467b8b97bc8721702059629b133f442ef7f966776178c0e1975db80b668b590944f8caac76d886e7b6560 WHIRLPOOL dfddae515775b261fff729b87fee93631ade4c1af10081781a528286f1d02e0c5ee157d0d6623ed771ff42e92c4e2f734b5c69d08d493e4be1c12b2356edeaec
+MISC ChangeLog 3599 SHA256 7d8ce3e1b9502ca204f9ba3ac0e93db523e5bd093f2a92f518fbfed3e29b0345 SHA512 84168f25368df59942feedab779cc5b4fa7e55b501f99c172a0c27dd0c19e7321c94c57bb0118faa3ce7254c7168563ea5efa35bd630c36316e98a81fa5266c9 WHIRLPOOL 7e4985ad4358c7da94812dbcc317c5bd03b819dcca3306aaa88fe03b03e448cf2c8b4e4b6113edb616a0da46b1a891ee95901587a3df5392a5dcce7d8e883358
+MISC ChangeLog-2015 3322 SHA256 1d5b9b9ce52e660b7dc571cc70c7d7ec01b14447a4c6029a481b733c422d180a SHA512 19325ca6fb92c4ce0bb82757a8fd0be33ddc3dbef5eccb3bc70cd8843c6c9cadfce7b98baee22ae1442f7c49785cbc5da2c613471e2a3f794cef11de9c8c718f WHIRLPOOL 56d910f0c173359ae55f8e3898a38bfac1cca797178145e8f514609905a8888846f3dbfd7dc014257bbab6128df7dcb730d73e9e9640ae98a472e801dfdf473b
+MISC metadata.xml 655 SHA256 6d0b230ef89a8d7224ca98984132af022f55cc154125ddcb4aaff6c83dfa2d24 SHA512 c82501b7e2e2dbbacaad03c74d9691f35cc0d768f55b0539be65af0e5cd939b21d584dfd8800e761e68d4a3d72be54111fa67abf0145def7c9421330b32ed146 WHIRLPOOL 01f05e02ec945b51c5b26a58142f7b39f8bcde59a51f018e4edfe46ed889b79799c18ed28f79c99f0f8b6089cf8c28b43409674100a327d3e6b233c686901298
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 000000000000..28dfb1ec36b5
--- /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 000000000000..71c1e9a96210
--- /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 000000000000..b8ce53f3992e
--- /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 000000000000..b890cabfbb33
--- /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 000000000000..c1693bf1f7e3
--- /dev/null
+++ b/app-i18n/librime/librime-0.9.9.ebuild
@@ -0,0 +1,42 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+inherit cmake-utils multilib
+
+DESCRIPTION="Rime Input Method Engine library"
+HOMEPAGE="http://rime.im/"
+SRC_URI="https://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.9.ebuild b/app-i18n/librime/librime-1.2.9.ebuild
new file mode 100644
index 000000000000..de9834370d97
--- /dev/null
+++ b/app-i18n/librime/librime-1.2.9.ebuild
@@ -0,0 +1,38 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+inherit cmake-utils multilib versionator vcs-snapshot toolchain-funcs
+
+DESCRIPTION="Rime Input Method Engine library"
+HOMEPAGE="http://rime.im/"
+SRC_URI="https://github.com/rime/${PN}/archive/rime-${PV}.tar.gz -> ${P}.tar.gz"
+
+LICENSE="GPL-3"
+SLOT="0"
+KEYWORDS="~amd64 ~ppc ~ppc64 ~x86"
+IUSE="static-libs test"
+
+RDEPEND=">app-i18n/opencc-1.0.2:=
+ dev-cpp/glog
+ >=dev-cpp/yaml-cpp-0.5.0
+ dev-db/kyotocabinet
+ dev-libs/leveldb
+ dev-libs/marisa
+ >=dev-libs/boost-1.46.0[threads(+)]
+ sys-libs/zlib"
+DEPEND="${RDEPEND}
+ x11-proto/xproto
+ test? ( dev-cpp/gtest )"
+
+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/librime-1.2.ebuild b/app-i18n/librime/librime-1.2.ebuild
new file mode 100644
index 000000000000..59b420ff3cd0
--- /dev/null
+++ b/app-i18n/librime/librime-1.2.ebuild
@@ -0,0 +1,45 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=5
+
+inherit cmake-utils multilib versionator toolchain-funcs
+
+DESCRIPTION="Rime Input Method Engine library"
+HOMEPAGE="http://rime.im/"
+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 000000000000..bb81a505ec80
--- /dev/null
+++ b/app-i18n/librime/metadata.xml
@@ -0,0 +1,21 @@
+<?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>
+ <upstream>
+ <maintainer>
+ <email>chen.sst@gmail.com</email>
+ <name>Gong Chen</name>
+ </maintainer>
+ <bugs-to>https://code.google.com/p/rimeime/issues/list</bugs-to>
+ <remote-id type="google-code">rimeime</remote-id>
+ <remote-id type="github">rime/librime</remote-id>
+ </upstream>
+</pkgmetadata>