summaryrefslogtreecommitdiff
path: root/app-i18n
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2019-05-07 11:18:59 +0100
committerV3n3RiX <venerix@redcorelinux.org>2019-05-07 11:18:59 +0100
commita2810985afabcc31d3eace5e61d8ea25b852ba17 (patch)
treed254e77a7aeadd875db2dc73532da78094238ffd /app-i18n
parenteab5731cdf11d4ae8cdf111461d46fd96c5bdd37 (diff)
gentoo resync : 07.05.2019
Diffstat (limited to 'app-i18n')
-rw-r--r--app-i18n/Manifest.gzbin21006 -> 21006 bytes
-rw-r--r--app-i18n/man-pages-da/Manifest2
-rw-r--r--app-i18n/man-pages-da/man-pages-da-0.1.2.ebuild4
-rw-r--r--app-i18n/man-pages-de/Manifest2
-rw-r--r--app-i18n/man-pages-de/man-pages-de-2.12.ebuild2
-rw-r--r--app-i18n/man-pages-fr/Manifest2
-rw-r--r--app-i18n/man-pages-fr/man-pages-fr-3.70.ebuild2
-rw-r--r--app-i18n/man-pages-it/Manifest2
-rw-r--r--app-i18n/man-pages-it/man-pages-it-4.00.ebuild2
-rw-r--r--app-i18n/man-pages-ja/Manifest2
-rw-r--r--app-i18n/man-pages-ja/man-pages-ja-20180315.ebuild4
-rw-r--r--app-i18n/man-pages-nl/Manifest2
-rw-r--r--app-i18n/man-pages-nl/man-pages-nl-0.13.3.ebuild4
-rw-r--r--app-i18n/man-pages-pl/Manifest2
-rw-r--r--app-i18n/man-pages-pl/man-pages-pl-0_pre20070628-r2.ebuild4
-rw-r--r--app-i18n/man-pages-ru/Manifest2
-rw-r--r--app-i18n/man-pages-ru/man-pages-ru-4.16.2383.2383.20180422.ebuild4
-rw-r--r--app-i18n/man-pages-zh_CN/Manifest2
-rw-r--r--app-i18n/man-pages-zh_CN/man-pages-zh_CN-1.6.3.2.ebuild2
-rw-r--r--app-i18n/mozc/Manifest5
-rw-r--r--app-i18n/mozc/files/mozc-2.23.2815.102-protobuf_generated_classes_no_inheritance.patch1039
-rw-r--r--app-i18n/mozc/mozc-2.23.2815.102.ebuild1
-rw-r--r--app-i18n/mozc/mozc-9999.ebuild1
23 files changed, 1067 insertions, 25 deletions
diff --git a/app-i18n/Manifest.gz b/app-i18n/Manifest.gz
index 4d49d5631cf0..a1e2214f9a2c 100644
--- a/app-i18n/Manifest.gz
+++ b/app-i18n/Manifest.gz
Binary files differ
diff --git a/app-i18n/man-pages-da/Manifest b/app-i18n/man-pages-da/Manifest
index 695bd7b9cfe7..e4d29863afd5 100644
--- a/app-i18n/man-pages-da/Manifest
+++ b/app-i18n/man-pages-da/Manifest
@@ -1,3 +1,3 @@
DIST manpages-da-0.1.2.tar.gz 8962 BLAKE2B 27a0ee206f137b818019ee74fb4091a9b30e526c16a40f763f4070c9fe5932ef48d50f06c2443c377c86af78c3f7f50a9275db258863bfb800f93c703c86e623 SHA512 7642908f5952f54c0db6af6886b6592e10889d8734776d8d42fe923b084ef85732820d40a095936e6f1bf48d9430b401afeb28202e530b5a48e4a3447ed5c4c6
-EBUILD man-pages-da-0.1.2.ebuild 619 BLAKE2B 470f5d20e7c51d9f25d8f3ef8cfa3813ff350d16c7f51cf4573e5c65bee0b4029cf3577827913da3bc2756d708ea2ac3459895ef21777d21f8f93ddae3233f09 SHA512 73f2dcbb0d6b2616a604b50c6d70ad6cd92972b97f17ce83d8dc8308e5d8d3a511e0f0ece10788d7149320a3134a8f828fb21f509b5d7dbe77ab34e66e52f9c1
+EBUILD man-pages-da-0.1.2.ebuild 623 BLAKE2B c73f16335c6b777e774059ec7ee02f8e760f5ddb50da5a305c4fa5e8184a71166b799994d3ad7967f6d8af73b3dea0e062e9c29803cb471ac3120f09005a92da SHA512 5a0415da50fe3448653f3b281a1b5dbd8948be33fb8ce518ee5fa0ab5a57f2190e189ca77d94c8b29cd2cc533e61a155de05e378d8baa1525edbf811554edae3
MISC metadata.xml 166 BLAKE2B c254f1fb642881aba57637be14fb0a89b10384f91a128feaec3a8c870d76efc2cbacb92caccc0dee2dd19a5ac5eaf8643080dafa05c4e2ac96a68568927e5afd SHA512 a56648c974a1d14dd4c18237532773c72057a13ab90c58b5da04f185e3c12a8bd8d5c21fb06053507f31766291a82dc7d87b34cd65fd94cfe2af7295c813ef84
diff --git a/app-i18n/man-pages-da/man-pages-da-0.1.2.ebuild b/app-i18n/man-pages-da/man-pages-da-0.1.2.ebuild
index 17ec81920617..e779e638333b 100644
--- a/app-i18n/man-pages-da/man-pages-da-0.1.2.ebuild
+++ b/app-i18n/man-pages-da/man-pages-da-0.1.2.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2014 Gentoo Foundation
+# Copyright 1999-2019 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=4
@@ -9,7 +9,7 @@ SRC_URI="http://www.sslug.dk/locale/man-sider/manpages-da-${PV}.tar.gz"
LICENSE="freedist"
SLOT="0"
-KEYWORDS="alpha amd64 arm arm64 hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86"
+KEYWORDS="alpha amd64 arm arm64 hppa ia64 m68k ~mips ppc ppc64 ~riscv s390 sh sparc x86"
IUSE=""
RDEPEND="virtual/man"
diff --git a/app-i18n/man-pages-de/Manifest b/app-i18n/man-pages-de/Manifest
index c096d5979928..a9505b5de38e 100644
--- a/app-i18n/man-pages-de/Manifest
+++ b/app-i18n/man-pages-de/Manifest
@@ -6,5 +6,5 @@ DIST manpages-de-v2.12.tar.bz2 10242050 BLAKE2B fa497a6fce2c2387dad2ab9443584174
EBUILD man-pages-de-1.15.ebuild 1289 BLAKE2B 2aa0d95614a5cb2d22a63c661befd01b789e6c7e322a48c013d5b408058235141bf0db7680f81da0016b8f03d246b8de6cc6ac0528cbbfc3aad4fba11bc475d1 SHA512 7f090cb1bef72e48034e98f5868378f47683575dde6668177871b12e1d06bf46cdfffb7b03877d19e57c925cb5c6cb599f766710743d150a79e36ea4f5258f57
EBUILD man-pages-de-1.21.ebuild 1252 BLAKE2B 49503d85ab5a60b5dc5475f11d4ddc042abb3883665336450179a2247279ee0171037f7937195467e4d7b25dd8671f7a676171c7ad983f9134c7430689139df1 SHA512 2158482fb6541e0391b3c916da51fbc1bd5e67c8a283cc0a795e6e68462eb3c1ce343b8fc9161199a8bf56632505f0c1fd39e4527dffdbb61e5797286d1ae6b9
EBUILD man-pages-de-2.10.ebuild 1898 BLAKE2B a44fb94d3d46334e1a2e7a58651cec5dc2091815d204222670d7a8e8a2ae09c78c86643ed7f967d62c18d2c7df00d19ec68c01a2f388f49f325a758f869a4d1a SHA512 4528a8b742541dea23819826909f631b5fb5c2287c21aac80a6e2efafc9fe245effca49b868c554e11394d3759b72f314e9f67adb70a665e8b37f32322026fbc
-EBUILD man-pages-de-2.12.ebuild 1889 BLAKE2B dee2b9ca62aeb67103c75b5e04a6777d896007a6693c9248d6208b4c2f5757117b9ed9b998a357d7857d5fc9ab5d86b10b6056419712b0a1c34d4552e71e0bab SHA512 6b9f4d946248aae334b6f7997e757c6faa5697ce7ec2776d35144eed8156af1e0a85b9c2b690703821f99bf8ee569d8324b0f0ecd900b4dfa6c249afb0660fc5
+EBUILD man-pages-de-2.12.ebuild 1896 BLAKE2B 74af261cf486b9208e1129351178017284277e0d8746de4d222368fcd9b54c6f4fc5f277455ad1d410c5bf28d463b6c4c4e39c8b5bd2eda65c28ac5d487bc002 SHA512 a8001760bfcb7dd0b4854ebbdffb831c3d3dbab2e4186136ac29f6f5cb90d48903704e4da9175de002144f08038cc33dcf798718cde5860aa7115aa3714d9082
MISC metadata.xml 369 BLAKE2B 41170815bcde0a65831b0453eee7b99359594bc67d345e31d1228d6b5def740d73087b96473511a8249528ac16a80b0eeee91791f9d4f113cb5caed918b40552 SHA512 e36208b3689927021e51ad2348ba3f5a5598b9657ffd7156d928dc817b90ed91a57d43605eb8a3e2fde1caf04349ba76b68ebc7ead1061ecca66280095179658
diff --git a/app-i18n/man-pages-de/man-pages-de-2.12.ebuild b/app-i18n/man-pages-de/man-pages-de-2.12.ebuild
index 3759e8b812df..456b650a0678 100644
--- a/app-i18n/man-pages-de/man-pages-de-2.12.ebuild
+++ b/app-i18n/man-pages-de/man-pages-de-2.12.ebuild
@@ -13,7 +13,7 @@ SRC_URI="https://salsa.debian.org/manpages-de-team/manpages-de/-/archive/v${PV}/
LICENSE="GPL-3+ man-pages GPL-2+ GPL-2 BSD"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86"
+KEYWORDS="~alpha ~amd64 ~arm arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sh ~sparc ~x86"
IUSE=""
RDEPEND="virtual/man"
diff --git a/app-i18n/man-pages-fr/Manifest b/app-i18n/man-pages-fr/Manifest
index b1d12e2394c9..0fe9878fd967 100644
--- a/app-i18n/man-pages-fr/Manifest
+++ b/app-i18n/man-pages-fr/Manifest
@@ -1,3 +1,3 @@
DIST man-pages-fr-3.70-1.tar.xz 1143156 BLAKE2B 09a86733caf03246e530e898688d0f93ef401a74cc66eb1f5ee05ded5dee0be45fc27fcbcf458f2c5a3286a6655c7b7302eb1b2759be6e0205e69db95ce989dc SHA512 7bb6991b2278c898d67d465ebe434dc3a969e9ec5c962ed6b6fdb41e66121a1924573f529d310adf30cd8494515888627b3226f26b906452a8882c4851c290d8
-EBUILD man-pages-fr-3.70.ebuild 586 BLAKE2B 28c5db3a6508f8cea651e2922f651158f4b391b5a8283e0d4d669f0fd90e6ab5842dcc7931edd60ea20ec7fa5de0412fb71de6e1a780c56b210abdc0432e2545 SHA512 05188e9a20168e88a232de402a2a5a83909b8e739188cac467192bb7ed8111fbf86ac440e7b5bc4c3faf615a81ff3038f78141f1828be25c06664f06c73d6b1a
+EBUILD man-pages-fr-3.70.ebuild 593 BLAKE2B e0169886c506e7412fbd395c42d7320b841aee6b22acc26c3244f8b695fc7a23621e9a744912417fba2d423a218fa98a64eeeca118e6b5f537ac0b56f37fc724 SHA512 22aa7346bed0fadae049e5d461d5694fb71e13e0fbad028d4e68ab3663b7dd434e8138ab5199d627bb2e26ae056c61776ddd16aadc882b53c494368a8e72b57f
MISC metadata.xml 166 BLAKE2B c254f1fb642881aba57637be14fb0a89b10384f91a128feaec3a8c870d76efc2cbacb92caccc0dee2dd19a5ac5eaf8643080dafa05c4e2ac96a68568927e5afd SHA512 a56648c974a1d14dd4c18237532773c72057a13ab90c58b5da04f185e3c12a8bd8d5c21fb06053507f31766291a82dc7d87b34cd65fd94cfe2af7295c813ef84
diff --git a/app-i18n/man-pages-fr/man-pages-fr-3.70.ebuild b/app-i18n/man-pages-fr/man-pages-fr-3.70.ebuild
index b3ca0a61d6ed..d926dd39c092 100644
--- a/app-i18n/man-pages-fr/man-pages-fr-3.70.ebuild
+++ b/app-i18n/man-pages-fr/man-pages-fr-3.70.ebuild
@@ -9,7 +9,7 @@ SRC_URI="https://alioth.debian.org/frs/download.php/file/4119/${P}-1.tar.xz"
LICENSE="BSD FDL-1.1 FDL-1.2 GPL-2 GPL-2+"
SLOT="0"
-KEYWORDS="alpha amd64 arm ~arm64 hppa ia64 ~m68k ~mips ppc ppc64 s390 ~sh sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="alpha amd64 arm ~arm64 hppa ia64 ~m68k ~mips ppc ppc64 ~riscv s390 ~sh sparc x86 ~amd64-linux ~x86-linux"
IUSE=""
RDEPEND="virtual/man"
diff --git a/app-i18n/man-pages-it/Manifest b/app-i18n/man-pages-it/Manifest
index 8f76d8e8271b..80cb2a528655 100644
--- a/app-i18n/man-pages-it/Manifest
+++ b/app-i18n/man-pages-it/Manifest
@@ -1,5 +1,5 @@
DIST man-pages-it-2.80.tar.gz 1789480 BLAKE2B 664121e6a6d8e73200546431ea97d0b8c751eaeed87e958ff0b0a822c651c7e489b05a7e26de23a889a4f1ab6fc21524bb81fab21f0331eedb4102d40cecfeb1 SHA512 81cee1b4d0c818b83830355ba1347df7a309b87ebfe3169db7763b22de8638273eacf377d0b9127aa1e748c8fd427eb268dda6d6c4b543c6d3788edda86980ef
DIST man-pages-it-4.00.tar.xz 349192 BLAKE2B 90f25e7abfd64d0f175c2596bc9203626d9e7e53218d579081d17aa01665be20ffa721e33379107814a57715a35f480bb1833a2d3965f4b86b3247bf70e9162c SHA512 6392b42254eba42bd76f3aef3b6206396a817019df61462e44bd0f7dc519768cb1b1107726c45e402a0cf27e6f2ca8c8912363bd9bec7562b10e8fd5dcc60ffe
EBUILD man-pages-it-2.80-r1.ebuild 719 BLAKE2B 731599ffa82862ffb559abb582c806a656f6b944b35ea68ea384e6e6bdcd89cd1ada2aa981e572354065de74b928177676a8e8d5bba0f8e360feb399215518e3 SHA512 63361bfbe5770c970332fcb43df2ee706a6ea06a098562eda2b55de9d6eef893e6dec1ee17c25678060599e1440b0f9032a5ba910364cf6ec8f46a29434f7cc1
-EBUILD man-pages-it-4.00.ebuild 709 BLAKE2B eed8db1f7459a325d0997faccd0a0088aff2b687bc978f451c3c167395c3d00a63257346b2536bcecc464c8bfc927a496bd8a44e8a0863c2e453cf491ae58fa5 SHA512 f4e77d5a0ac2250e5d7d318c2aefd7c8210904d597ac419377c0d7017b53c06f5c67bde0d3d41f1d2bcb4e4520249685ae6f6ce27fcfd62aa1ec25606346421d
+EBUILD man-pages-it-4.00.ebuild 716 BLAKE2B 1ec27a0e6e759a06dec2b7c549d0fab909ce1769dab6bc86324061b3b077d0682f4cdecd2828715a8d1ef0f0269392aef5f1b5b6529c2b628483ccd49029c6d7 SHA512 bd40cafe418acc2be38053ca59de0f4fd29b2f7f874420542a5f4c1added8756b85e5fb4a8fc91d18c1b48e4472469cebb63405347cfa5f94ba4848cfb2a36da
MISC metadata.xml 421 BLAKE2B a703dcd3047685aa6aa2a276d88a4a2f7a804bfcdf9d2980af1cf243b5f002361e8ed0b78961baab773fc20d46a6f860c8c912b39dc8a821d7ff4dcc7b317de5 SHA512 0c58ae5b97148e94d374bba03e0a65a2462b5f0d750c4df4e52ebd0cfac649fe4f35011429423ef20a20391cf4d69c206eb8bfa3d4ddd060265427b6d96aa095
diff --git a/app-i18n/man-pages-it/man-pages-it-4.00.ebuild b/app-i18n/man-pages-it/man-pages-it-4.00.ebuild
index 5e5ec5ffd9bd..a54627f2cba1 100644
--- a/app-i18n/man-pages-it/man-pages-it-4.00.ebuild
+++ b/app-i18n/man-pages-it/man-pages-it-4.00.ebuild
@@ -9,7 +9,7 @@ SRC_URI="ftp://ftp.pluto.it/pub/pluto/ildp/man/${P}.tar.xz"
LICENSE="man-pages GPL-2+ BSD MIT FDL-1.1+ public-domain man-pages-posix"
SLOT="0"
-KEYWORDS="alpha amd64 arm arm64 hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86"
+KEYWORDS="alpha amd64 arm arm64 hppa ia64 m68k ~mips ppc ppc64 ~riscv s390 sh sparc x86"
IUSE=""
RDEPEND="virtual/man"
diff --git a/app-i18n/man-pages-ja/Manifest b/app-i18n/man-pages-ja/Manifest
index ff92be581005..ea5973978dbb 100644
--- a/app-i18n/man-pages-ja/Manifest
+++ b/app-i18n/man-pages-ja/Manifest
@@ -2,5 +2,5 @@ DIST man-pages-ja-20171215.tar.gz 4802604 BLAKE2B 24ded9e82f20df322fa7e96a05806f
DIST man-pages-ja-20180315.tar.gz 4808885 BLAKE2B 961cb265d2a5034368ac5766555440019e3f80710644f9ca6389e9932391f806ab37803b198d4f3619ad2a3fb34a91092b7c50c8f5c69dd1a909268c739fb931 SHA512 5cc8d247f24aeeb5f9ef9b89f214f7d74cf3d1db8f46140cb307f8398bde785c13041ec2947173d3a79121285afb3a5b383d3bff972eba017e88d17d722c173a
DIST portage-man-pages-ja-20060415.tar.gz 67347 BLAKE2B 77be89a79be1d4fc3c09cd7c74cd8ccfd18649cdf0121daec008b21114c5a77618a88f4abed266599b944aa5bf11fe55c5b6e89fbba51ebe2a548eb85d9a2c6d SHA512 37364cdcb27b460663bdae31fea1ac653317ba4d928a5325c51814eb1677d7d9fb9bcc55cf64d63a8e6daaefa34d8604e0efe3582308957397cad31325a6eaad
EBUILD man-pages-ja-20171215.ebuild 2025 BLAKE2B 41af40ca6bbb32d233cb4699901019b7fcd5ac6520fddd92a4c0a93bdf2db08413fc46303f8a2b49b76005da0d6f0897ffabd87f01c84f5e7af6a22dfd744779 SHA512 3a55205a2a0e976cf62c24d7bf048c8b59a736d87df78f53b634de1b24881ad42c3565eac499737f678e8912b392feef3d860ecb595ca1e31b8e24887ad3c076
-EBUILD man-pages-ja-20180315.ebuild 2036 BLAKE2B 75358ed3c4ef602079350d41614df056fd6783176030fd892e5692a95eb193735b802a08175902ec37dc567667120982e329c0e5fb1a3d6782bfd2ce445bdc23 SHA512 dccbb2386ffeed2d6ca228efb68017b7e208f273cb13130a5ffeada0aa658e1cb40bdbabcf9697d68e1841547a6cf83faf91783c8c816f4d5251d23dc180198f
+EBUILD man-pages-ja-20180315.ebuild 2040 BLAKE2B 3d2db5f3c5458b0772aa1ba4407c115b72a7fafc01647d845697b51b5b4377d4f2726d893a2190e4fcf060e118267f8074be6d5e2bfe9b022ab6bd03fc3c62cf SHA512 ba7dcff4fb93431a54170cbf0cd87db4b8078e8fc026a1546c8a915ccbdc75c5d3538321cedf0285bf96bb335d204aa8d099188659407c1c71700153a350d69f
MISC metadata.xml 674 BLAKE2B 52381f36a78ec6aaf9855e9828d0f6e25f46c78d9049f90c604ef6ddd339e56831731c5e2a6c25731725767763cc37e9ece2a6d862500ed3de63c9501d305fa7 SHA512 4930172347182e65fa0fa30e2fcef5bfc391e6fb1dfefaa872ebe609c9583b58a5d8a62bfbddaf8b8ecf2a80ec30752c71fb658dfd4569a4493bc9eeff6de2b3
diff --git a/app-i18n/man-pages-ja/man-pages-ja-20180315.ebuild b/app-i18n/man-pages-ja/man-pages-ja-20180315.ebuild
index 9f26bd6e50f6..68b1c0acd44d 100644
--- a/app-i18n/man-pages-ja/man-pages-ja-20180315.ebuild
+++ b/app-i18n/man-pages-ja/man-pages-ja-20180315.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2018 Gentoo Foundation
+# Copyright 1999-2019 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI="6"
@@ -11,7 +11,7 @@ SRC_URI="http://linuxjm.osdn.jp/${P}.tar.gz
LICENSE="GPL-2+ GPL-2 LGPL-2+ LGPL-2 BSD MIT ISC HPND FDL-1.1+ LDP-1 LDP-1a man-pages Texinfo-manual"
SLOT="0"
-KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~s390 ~sh ~sparc ~x86"
+KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~ia64 ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sh ~sparc ~x86"
IUSE=""
RDEPEND="virtual/man"
diff --git a/app-i18n/man-pages-nl/Manifest b/app-i18n/man-pages-nl/Manifest
index 847ff44409e2..128e2911ce29 100644
--- a/app-i18n/man-pages-nl/Manifest
+++ b/app-i18n/man-pages-nl/Manifest
@@ -1,3 +1,3 @@
DIST manpages-nl-0.13.3.tar.gz 303975 BLAKE2B 645447f850f9b6621e190629892b5caef566e718052cea226584cf0ce6990bb8155080f19ceb45f86aee22b09730d3e1167a5ed02ebdf725867a48cdc6df03bd SHA512 2fe12911105366e3355a46f7da988ccb888ada5f20760a4651dd34a7dcb354e85796ca70f54c06b921dd7fffc7b5c9141b4a09b0a53bff383540621652e59591
-EBUILD man-pages-nl-0.13.3.ebuild 514 BLAKE2B fc8f9cb61cf3210476d93853df13a714f264e8820b13af3d3c3c751ef1694206d869d7f4814cb559b338403e52bc3318f3929e40f23e6314898af8a3de3f0d0c SHA512 493ffd385e9ec8e951e4210f9ddd1fc768545a14d67ca038eda814ea2d6049e14eec26c3f84f38a3f2fe418ccded87c791fa5e42d7f189e216639dc04be67389
+EBUILD man-pages-nl-0.13.3.ebuild 518 BLAKE2B 58849491bc2391ccae95dcc89a85342ab67129adc561386afb189cc5a80e6a37b841fc2b0e163cecb0c44ee51b1641ef924037b40125b080f12cc4d587cecaac SHA512 3438a8f909e928ab8593babbdd9dbf6bc7157253a442a987808ec78447573ef2bf474ea3048b819a58bb80ee2dc9eb81c9629f991fb89fa87ed9b63a776babb8
MISC metadata.xml 166 BLAKE2B c254f1fb642881aba57637be14fb0a89b10384f91a128feaec3a8c870d76efc2cbacb92caccc0dee2dd19a5ac5eaf8643080dafa05c4e2ac96a68568927e5afd SHA512 a56648c974a1d14dd4c18237532773c72057a13ab90c58b5da04f185e3c12a8bd8d5c21fb06053507f31766291a82dc7d87b34cd65fd94cfe2af7295c813ef84
diff --git a/app-i18n/man-pages-nl/man-pages-nl-0.13.3.ebuild b/app-i18n/man-pages-nl/man-pages-nl-0.13.3.ebuild
index b6aaeecd964f..0f183bdfd222 100644
--- a/app-i18n/man-pages-nl/man-pages-nl-0.13.3.ebuild
+++ b/app-i18n/man-pages-nl/man-pages-nl-0.13.3.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2018 Gentoo Foundation
+# Copyright 1999-2019 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=6
@@ -9,7 +9,7 @@ SRC_URI="ftp://ftp.nl.linux.org/pub/DOC-NL/manpages-nl/manpages-nl-${PV}.tar.gz"
LICENSE="man-pages GPL-2+ GPL-2 BSD LDP-1"
SLOT="0"
-KEYWORDS="alpha amd64 arm arm64 hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86"
+KEYWORDS="alpha amd64 arm arm64 hppa ia64 m68k ~mips ppc ppc64 ~riscv s390 sh sparc x86"
IUSE=""
RDEPEND="virtual/man"
diff --git a/app-i18n/man-pages-pl/Manifest b/app-i18n/man-pages-pl/Manifest
index 37c9cdb3cd09..b94e5669b9c8 100644
--- a/app-i18n/man-pages-pl/Manifest
+++ b/app-i18n/man-pages-pl/Manifest
@@ -3,5 +3,5 @@ DIST manpages-pl-0.6.tar.bz2 3513993 BLAKE2B 3447da36b9f49b726286575d858ce74043c
DIST manpages-pl-0.7.tar.bz2 3791061 BLAKE2B 81809280c78ecafc67c59a5353a589c119fe6b590c9d655dae4accb5247a178df9f3f186822834f3426b0d41ed9ab83f335204eb654acf2cf5a472dd7ca4cafb SHA512 79293e1bbfbaed5f97e63cb86fc1b445ea960fdee96567899ba9f6836d4188e0d80d4788180c29fdca3d358359b6fd3768c195857657819534942ece2c43694b
EBUILD man-pages-pl-0.6.ebuild 662 BLAKE2B 9d630bedb4b0694f754dc97ca23f44186581c221d9cc2105bd9b29acb7e66f5cba5a42829b5774962f039a64b35ba648b95f6717dd265f72b7366cc66e8065d4 SHA512 77aeaabfb8d23d76ffb005b37c1165fec78e89ba5038f3cc08375f7dc664d4c82069a009270bf606968f905a862183f40e0e70aba53b581282a7115067cea055
EBUILD man-pages-pl-0.7.ebuild 738 BLAKE2B da7b9f9b6cf45d839d854585e1202f67c5a1e28a63037fd8bb79808c5c3ea208124fd5905ba256fec38fb76300b9c525fa70559958eff7a1a5b579ba7a6b875c SHA512 91eecb04dab7d1d7d98ee55035afc0091d987e264bf22173f8134f8fde342122542ab2bed5b0f468cb2e31639d8a8ef70835640d06f409dbf1af6fdcbf62a408
-EBUILD man-pages-pl-0_pre20070628-r2.ebuild 1188 BLAKE2B 8579e466cb9020b2debbba6cc69e78329ca83c479665b2bd6b62ff6df68de3c8fbdb2ad17a33906e38c3362bda4640a41b54b64112c4b1a5d7263a2c9b97e25b SHA512 8403f9b302ca681e6b53afd7afa3f83c7e8ac01e72d7424b74b4eb74103229eae5c83fdb846a159f7db68151d664ddaba7c461d19e29a4f671ce988199bbea07
+EBUILD man-pages-pl-0_pre20070628-r2.ebuild 1192 BLAKE2B 6eb94af8112a515edd376e839561b4da33dd01911b8acb6c42bf40bb1c10a388428ae0448afd3f2b02526b0e47e20ff8b1ffe3691af30be5d8a7ed73aef8489e SHA512 26aa0946e9f1aaf573a5c37787ca9c119ff8035b1ba22de777ae9ca95af1e24a19cfbc094547f0caaa8aee59f3e0b99c0e4ba2fad6830fec5d7f2f4f7386baab
MISC metadata.xml 447 BLAKE2B e8f0a2348cf7a9937b9aeaf647ed1da769201f131b377f965ac3965ee0d86a5fec00b61b804f4145e0c31c274a850481f756c8510e6ed49a951d533a94a427ce SHA512 ce47231649316f102bc2b2318d51b548efd9159b3c2df9edfc0e17dda5710cac2a39c1cd86961d842f627c4b6b83fcf32da0b6194518109b7fd69355ec337f54
diff --git a/app-i18n/man-pages-pl/man-pages-pl-0_pre20070628-r2.ebuild b/app-i18n/man-pages-pl/man-pages-pl-0_pre20070628-r2.ebuild
index 06ebc4399c2e..404b2da99f9f 100644
--- a/app-i18n/man-pages-pl/man-pages-pl-0_pre20070628-r2.ebuild
+++ b/app-i18n/man-pages-pl/man-pages-pl-0_pre20070628-r2.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2015 Gentoo Foundation
+# Copyright 1999-2019 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=4
@@ -11,7 +11,7 @@ SRC_URI="http://www.batnet.pl/ptm/man-PL28-06-2007.tar.gz"
LICENSE="GPL-2"
SLOT="0"
-KEYWORDS="alpha amd64 arm arm64 hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86"
+KEYWORDS="alpha amd64 arm arm64 hppa ia64 m68k ~mips ppc ppc64 ~riscv s390 sh sparc x86"
IUSE=""
RDEPEND=""
diff --git a/app-i18n/man-pages-ru/Manifest b/app-i18n/man-pages-ru/Manifest
index 571a92cca78e..24f05a8180e1 100644
--- a/app-i18n/man-pages-ru/Manifest
+++ b/app-i18n/man-pages-ru/Manifest
@@ -1,3 +1,3 @@
DIST man-pages-ru_4.16-2383-2383-20180422.tar.bz2 1682388 BLAKE2B 3707d972313ca1f96c3d5be3f8f74dd3e88322f3e9504799d49fb57c06f99d62f0cb88d545c90c4b47795b9aee92d1f89d55c777b0970070120b1496be0b3426 SHA512 df358c917ba55360b86e075097316c2eeb29eb9f9938ad7ee1ae6679690f1d736f448cee36643f2645c40a964274e1a3d0948f91ec0f99d81b4a29009704f009
-EBUILD man-pages-ru-4.16.2383.2383.20180422.ebuild 669 BLAKE2B 0cfc0ab7e2109da42f70c08b553755436ac51d62b694e5811c7ba27e68d5176ad43a96e451f0c165c05b2b56067a3e1a5e29679015394a92191a62772a1e86d0 SHA512 c119c78e46ab01535d8a6d4c008bb57d390b9f8a602d4a5ab66b7d41056cc233636fc6ca935a58c21c961006a9c835424268c1ba7eff4ab35f8be1f3b682e634
+EBUILD man-pages-ru-4.16.2383.2383.20180422.ebuild 673 BLAKE2B 6b09ec20d80a4e654b8f7e06170e066a8d69de9f3d3a9c101923868ec9691fa47f4690c647d96a9c64a9f33c991bcdc8ba2b58b57fabf55dc2b8cab438f6a1ad SHA512 df73efd4a66da5b8c9f6a1f7682627f676b0e88640455aa7df0e025fddb3b2b9b454cb7e95f27e09920493e012bdac3b73014402289f9380adb71ddbb5ad6acc
MISC metadata.xml 436 BLAKE2B 7e17e7dc25a13db3594b5a5e630e41ff08012b530736bcbb5f5a1cd302e705cf30025bf93afb31f3de631e01e9588a037d9213651f0ad358fd3a87ffb727ca3e SHA512 1f7c55f697fe501f62c9cde15f0f82cedf7cf62251efba961c4e236ec99974fe7345fd77a48d92eee9472fe519e7c4ea040fda5df31d743f2eddf09644ae81a5
diff --git a/app-i18n/man-pages-ru/man-pages-ru-4.16.2383.2383.20180422.ebuild b/app-i18n/man-pages-ru/man-pages-ru-4.16.2383.2383.20180422.ebuild
index 0f0d88c9bee2..0899b154a87e 100644
--- a/app-i18n/man-pages-ru/man-pages-ru-4.16.2383.2383.20180422.ebuild
+++ b/app-i18n/man-pages-ru/man-pages-ru-4.16.2383.2383.20180422.ebuild
@@ -1,4 +1,4 @@
-# Copyright 1999-2018 Gentoo Foundation
+# Copyright 1999-2019 Gentoo Authors
# Distributed under the terms of the GNU General Public License v2
EAPI=6
@@ -13,7 +13,7 @@ SRC_URI="mirror://sourceforge/${PN}/${PN}_${MY_PV}.tar.bz2"
LICENSE="FDL-1.3"
SLOT="0"
-KEYWORDS="alpha amd64 arm arm64 hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="alpha amd64 arm arm64 hppa ia64 m68k ~mips ppc ppc64 ~riscv s390 sh sparc x86 ~amd64-linux ~x86-linux"
DEPEND=""
RDEPEND="virtual/man"
diff --git a/app-i18n/man-pages-zh_CN/Manifest b/app-i18n/man-pages-zh_CN/Manifest
index 25ab7693701f..5f8bbc8c81ca 100644
--- a/app-i18n/man-pages-zh_CN/Manifest
+++ b/app-i18n/man-pages-zh_CN/Manifest
@@ -1,5 +1,5 @@
DIST man-pages-zh_CN-1.5.tar.gz 3762338 BLAKE2B c2c740e6ae6f6e0cb26af7bca4e9d5ce75b20eb535362030565c8ed794c984ac8d1c7fe0ee354f58cbb37bc2dba1067afc33dbe4af07257938b0137156b43790 SHA512 799eac7e6c64dd9bb647bf490457bc6ece76870d261606e33f48df977762b66f778fb5afe3608443be100e516988c700ddb53de2a226e7b29d32348fa240ce91
DIST man-pages-zh_CN-1.6.3.2.tar.gz 1845997 BLAKE2B 3af6859593e4b2a52ef3ce93f2d18fe0f102e63cee3c7035de04ab4d8b8ac491ceff284b1a2f01a5e4dcdc4869c2a9768ff7dfde48b9e89813a2e558bf7b259e SHA512 61171406482a24c3dfd1b6303af3d7fb086466d5f05d5799f50488beb78c91c5d1bcf574aab669b71fa0f027691a0be1a1d254d08f823ff4bd8bf976e0c83dff
EBUILD man-pages-zh_CN-1.5.ebuild 643 BLAKE2B ec1026616838e311022ba6f1792b29e7e2529d869aade168aa7384995ba4ade5d7d97d4f2d7b18fc6e825289f999575ee618733ab0c0d7a7ca6a9b31ef36c7b7 SHA512 2311e3c84969eb1a5654b5e5f1eabf6c6331ffec4d566e3035f36946c830104171f65da7c5b2564e37f0dff3c72581cf94d44a979370cb2f223a06696fcea12b
-EBUILD man-pages-zh_CN-1.6.3.2.ebuild 824 BLAKE2B 671cc8714ac0bb74500db9ee24f6b1f88198de9483d44187c9d99d5a8f4be58287eedce351e2a3bfc0f52153775d97c67fc4d6db66a85924cf703b161f63901c SHA512 ef6d1d85de4ad2c116eca1642e60b765ba6794c3795d7624b5de1af845e72eec2a3b7102e1e30a158b0ad9d4bc5c0bc75f051e7f6153b744264e0e82f7cebd65
+EBUILD man-pages-zh_CN-1.6.3.2.ebuild 831 BLAKE2B da42fb8b84237f3383b9062a5eac54799dc5b205ac6d0c9b148267c369278157834182993886ce6f122d4450f68995c290cafaeabf3669ed38948819f0ec1911 SHA512 39ff67c68cfedf51d4f8c24c1d4c4c96682a14073e20ae7a457f7f1697c2bf22596085e04405fcedcd00f565ddcf497768d2dd02289789c160d8fbfc39d0e895
MISC metadata.xml 166 BLAKE2B c254f1fb642881aba57637be14fb0a89b10384f91a128feaec3a8c870d76efc2cbacb92caccc0dee2dd19a5ac5eaf8643080dafa05c4e2ac96a68568927e5afd SHA512 a56648c974a1d14dd4c18237532773c72057a13ab90c58b5da04f185e3c12a8bd8d5c21fb06053507f31766291a82dc7d87b34cd65fd94cfe2af7295c813ef84
diff --git a/app-i18n/man-pages-zh_CN/man-pages-zh_CN-1.6.3.2.ebuild b/app-i18n/man-pages-zh_CN/man-pages-zh_CN-1.6.3.2.ebuild
index 32c75c4fde6d..0ef1729d7c34 100644
--- a/app-i18n/man-pages-zh_CN/man-pages-zh_CN-1.6.3.2.ebuild
+++ b/app-i18n/man-pages-zh_CN/man-pages-zh_CN-1.6.3.2.ebuild
@@ -12,7 +12,7 @@ S="${WORKDIR}/${MY_P}"
LICENSE="FDL-1.2"
SLOT="0"
-KEYWORDS="alpha amd64 arm arm64 hppa ia64 m68k ~mips ppc ppc64 s390 sh sparc x86 ~amd64-linux ~x86-linux"
+KEYWORDS="alpha amd64 arm arm64 hppa ia64 m68k ~mips ppc ppc64 ~riscv s390 sh sparc x86 ~amd64-linux ~x86-linux"
IUSE=""
RDEPEND="virtual/man"
diff --git a/app-i18n/mozc/Manifest b/app-i18n/mozc/Manifest
index 10b542a1361b..f73abd9c958f 100644
--- a/app-i18n/mozc/Manifest
+++ b/app-i18n/mozc/Manifest
@@ -2,10 +2,11 @@ AUX 50mozc-gentoo.el 121 BLAKE2B 0cad49e4a5a04d1cbdcd063cfd5a06c14bf4bab47890bbc
AUX mozc-2.20.2673.102-tests_build.patch 1037 BLAKE2B 8f3c0b3361371a994957a89f5b86020902262de65aef75f82e58fcfcea211b8a8d3c8418898781ac1de2a2c9bdc73ffc4cf68102122a22691d9592d5a02e6c62 SHA512 d99ee7edbb406e123b26ec186933608b42d36193b7bfe67232810c0fbd7a92bd8cfff26dc45eae4f020e82e9a8370cf2033c750250455585b6b3d88cc8c973ef
AUX mozc-2.20.2673.102-tests_skipping.patch 2086 BLAKE2B a104d6a83b02b49e1208be1b39699b90ad419d8befa29ed0366f7cbc454fe9ce27361f21897a5c74dadfc2d9eb31a30d7237e20db8c1fb205b8e71b40f4a0e57 SHA512 4a2e5a35c5e65ebeb737f656d6efb313c660c2c7cf62abd5d9295fd16e2dffde21d069cd74fd0cfd2454cd7f7c9d136dfbadbf79832db8441c619ff37c7e4b0e
AUX mozc-2.23.2815.102-gcc-8.patch 496 BLAKE2B 318fcda19cf4f7e95920b5df4f5638621bcae992891941fa6f220d4dac1b2eac0faeda7a857a587baed41b361608f20c4bbda0d9a69a60b823572482c6789f46 SHA512 9c2b0e9695f4cd050f0d5f35d0e23f22715b9c6e5607629c7dc023560a5191bd755497fe6fe5306789c00e68d5bd9b7179d5515c982967788fca432134b71cad
+AUX mozc-2.23.2815.102-protobuf_generated_classes_no_inheritance.patch 40296 BLAKE2B 982f43fa68031eb0f779ec4d034fef838a4fce7834291db889c9edffba3df4acd5bfdf187dd4a52ee8fd0714de943f9d5112070cd69502e1449dab4dbf8543b2 SHA512 6e05b2f22663ddbfb24a8344928ec24c0b4cf523728c1623367970b8f263142af95c056c82d0827414833d5b9f26c3a024a04a688851021601a5cbcc1474e754
AUX mozc-2.23.2815.102-system_libraries.patch 9064 BLAKE2B 0cdf732a1bbf16d4af1d6dee81aacf3f3cb1f1c00c6aeb0fc12dac9dcd8611124e388e5fc721eb9b9472e073515d7457b182ee7cfe466b83bf319d572ae55240 SHA512 2d5b06e855f8c1889367b9b672e3ec81a037bc592872e28319e0180a0dcd177cdff817775a1a0f74ebf48e0b7558cf3b67953120411be753c662c43f409b05ce
DIST fcitx-mozc-2.23.2815.102.1.patch 295112 BLAKE2B 709b84f6eaed16da38a173f40ae7cccff362fd167e6deb4090ae8a9ec522ac8e11ccff3c9ef6433907249af8c9eb4b7be12d2c05564cabd45c25e26764286ed3 SHA512 e0d4645df919838f0fe31a97bf6dd759c222a696f68133f7584d2c771f70734ea634a25bebb03a756221000d3552423207ee5163d75778dbf480b6e267ba4cd0
DIST japanese-usage-dictionary-20120416091336.tar.gz 71051 BLAKE2B 08eecf0aa021e27a2813f58c2d37f1cec760448f6ae086ae7468b8a11575c6ef9f72f656cb4d53e0179b8a7b00f2d91ff51a0ad7825e078dcbac0810f1d8b3e1 SHA512 b7e997a979b6d50e49b9af5dc830ea4df0532f6ab1321b9ef14983f65bb54f1b2967375c82e07957ae7693ebbf43c9b56ecea6bfea8dd1fdaee444bd549d83a7
DIST mozc-2.23.2815.102.tar.gz 47739041 BLAKE2B 045a8a4a07e09cf923b67824111cdf672febc30256a6aef951ae779a3f582b3860042750d766120e376898c63be5b4baea870798a192cee34b0d48647e1ec5e6 SHA512 a3face616ca89990bca52371dcc8003604ebe0e9633116a64550add070152b1bc4d9b21e9f102c5afa6f8b1aa11d8dbc4bafbcebfaf4a12a934f085f245d548f
-EBUILD mozc-2.23.2815.102.ebuild 9527 BLAKE2B 61829c224c0025620af5603466c7a235804a04b50476996eec2ffba60c96df72e6b056a1617b319fcae9afc14193e24bf6ea2fd96e4bbab759255bf8d7f22647 SHA512 dbae8bf0241aca3b0fafb3af24945de4e78381bd65f6cc816a117a8ba5016969cf761d14a295e0a8c5ae5b931712a3ea116c537dc2083bfc2aa0461ad8495ee1
-EBUILD mozc-9999.ebuild 9367 BLAKE2B b37c588da2242e2a79b5c98d3fec80d40d912be681730b3f1d7bc9e8fc0c0761eee2cc0044bffe94b42435bccf6896463899c79d86364b526e10e265fb99f149 SHA512 8a343d5c717821994f8c4072c0546b4bd4961f0eaf197cc909b37563266ba049be119a73742a413970f8228c8f9ef72b9d3e4724abad8c9fa78ef67548b95bf1
+EBUILD mozc-2.23.2815.102.ebuild 9621 BLAKE2B 56f0645ce5d3075e8cd1151824f3f3d3caafffe569b62bbda103d8145c58832daf9212b583521f5467386bc647da8b7b327a8cfcb600725f674383658f5772a2 SHA512 4dc52da2c73b5852b55ebc06e73880cd4935c4f0197a1510ad3827184b64d0b5c19a3cdb9d5a09dc03688cecc40530a93d43d9a555bf5c8250acc8ee425f6777
+EBUILD mozc-9999.ebuild 9461 BLAKE2B 24399188dfbeaa18d19116300d0921c568c4a7518a5dc0ac1161f76358955b7a8b8c5ac2ac42e1c7be138ce335f9e7c43063736c80fab5bafc8c8bca06eb25a1 SHA512 bfd7fb36c1e7919fdf3f47c5414737bd37436564024b993936de164a85f6914b28d50cb9bbaaf4278d1e06f4c6292cc4d6a86b6e0c54ba7ee5e5dd305efec0ee
MISC metadata.xml 1127 BLAKE2B 55c44374c1d0c03845435544fb8bcd254bfa59faa54e773110fe2a9bcfba0f6863a1f5c167e3ca7d2a1108e566ae4d7d4155a1a1994bef006bbde906265fffe1 SHA512 8d1ee79d5e359c746627cc10ddae170088dd1be8a69379f60969e588c0c6141fea80ebcba0183a91e786116e8937c14e76888c9232526244aab584ed4ef27a54
diff --git a/app-i18n/mozc/files/mozc-2.23.2815.102-protobuf_generated_classes_no_inheritance.patch b/app-i18n/mozc/files/mozc-2.23.2815.102-protobuf_generated_classes_no_inheritance.patch
new file mode 100644
index 000000000000..2cd757281545
--- /dev/null
+++ b/app-i18n/mozc/files/mozc-2.23.2815.102-protobuf_generated_classes_no_inheritance.patch
@@ -0,0 +1,1039 @@
+https://github.com/google/mozc/issues/460
+
+--- /src/dictionary/user_dictionary.cc
++++ /src/dictionary/user_dictionary.cc
+@@ -289,7 +289,7 @@
+ }
+
+ auto_register_mode_ = false;
+- dic_->Load(*(storage.get()));
++ dic_->Load(storage.get()->user_dictionary_storage_base);
+ }
+
+ private:
+--- /src/dictionary/user_dictionary_session.cc
++++ /src/dictionary/user_dictionary_session.cc
+@@ -69,11 +69,11 @@
+ }
+
+ virtual bool RunUndo(mozc::UserDictionaryStorage *storage) {
+- if (storage->dictionaries_size() == 0) {
++ if (storage->user_dictionary_storage_base.dictionaries_size() == 0) {
+ return false;
+ }
+
+- storage->mutable_dictionaries()->RemoveLast();
++ storage->user_dictionary_storage_base.mutable_dictionaries()->RemoveLast();
+ return true;
+ }
+
+@@ -94,7 +94,7 @@
+ }
+
+ RepeatedPtrField<UserDictionary> *dictionaries =
+- storage->mutable_dictionaries();
++ storage->user_dictionary_storage_base.mutable_dictionaries();
+ dictionaries->AddAllocated(dictionary_.release());
+
+ // Adjust the position of the reverted dictionary.
+@@ -120,10 +120,10 @@
+ }
+
+ virtual bool RunUndo(mozc::UserDictionaryStorage *storage) {
+- if (storage->dictionaries_size() != 1) {
++ if (storage->user_dictionary_storage_base.dictionaries_size() != 1) {
+ return false;
+ }
+- dictionary_->Swap(storage->mutable_dictionaries(0));
++ dictionary_->Swap(storage->user_dictionary_storage_base.mutable_dictionaries(0));
+ return true;
+ }
+
+@@ -144,7 +144,7 @@
+ virtual bool RunUndo(mozc::UserDictionaryStorage *storage) {
+ UserDictionary *dictionary =
+ UserDictionaryUtil::GetMutableUserDictionaryById(
+- storage, dictionary_id_);
++ &storage->user_dictionary_storage_base, dictionary_id_);
+ if (dictionary == NULL) {
+ return false;
+ }
+@@ -169,7 +169,7 @@
+ virtual bool RunUndo(mozc::UserDictionaryStorage *storage) {
+ UserDictionary *dictionary =
+ UserDictionaryUtil::GetMutableUserDictionaryById(
+- storage, dictionary_id_);
++ &storage->user_dictionary_storage_base, dictionary_id_);
+ if (dictionary == NULL || dictionary->entries_size() == 0) {
+ return false;
+ }
+@@ -195,7 +195,7 @@
+ virtual bool RunUndo(mozc::UserDictionaryStorage *storage) {
+ UserDictionary *dictionary =
+ UserDictionaryUtil::GetMutableUserDictionaryById(
+- storage, dictionary_id_);
++ &storage->user_dictionary_storage_base, dictionary_id_);
+ if (dictionary == NULL ||
+ index_ < 0 || dictionary->entries_size() <= index_) {
+ return false;
+@@ -240,7 +240,7 @@
+ virtual bool RunUndo(mozc::UserDictionaryStorage *storage) {
+ UserDictionary *dictionary =
+ UserDictionaryUtil::GetMutableUserDictionaryById(
+- storage, dictionary_id_);
++ &storage->user_dictionary_storage_base, dictionary_id_);
+ if (dictionary == NULL) {
+ return false;
+ }
+@@ -306,7 +306,7 @@
+ virtual bool RunUndo(mozc::UserDictionaryStorage *storage) {
+ UserDictionary *dictionary =
+ UserDictionaryUtil::GetMutableUserDictionaryById(
+- storage, dictionary_id_);
++ &storage->user_dictionary_storage_base, dictionary_id_);
+ if (dictionary == NULL) {
+ return false;
+ }
+@@ -345,7 +345,7 @@
+
+ // TODO(hidehiko) move this to header.
+ const UserDictionaryStorage &UserDictionarySession::storage() const {
+- return *storage_;
++ return storage_->user_dictionary_storage_base;
+ }
+ mozc::UserDictionaryStorage *UserDictionarySession::mutable_storage() {
+ return storage_.get();
+@@ -464,7 +464,7 @@
+ const string &dictionary_name, uint64 *new_dictionary_id) {
+ UserDictionaryCommandStatus::Status status =
+ UserDictionaryUtil::CreateDictionary(
+- storage_.get(), dictionary_name, new_dictionary_id);
++ &storage_->user_dictionary_storage_base, dictionary_name, new_dictionary_id);
+ if (status == UserDictionaryCommandStatus::USER_DICTIONARY_COMMAND_SUCCESS) {
+ AddUndoCommand(new UndoCreateDictionaryCommand);
+ }
+@@ -488,7 +488,7 @@
+ int original_index;
+ UserDictionary *deleted_dictionary;
+ if (!UserDictionaryUtil::DeleteDictionary(
+- storage_.get(), dictionary_id,
++ &storage_->user_dictionary_storage_base, dictionary_id,
+ &original_index, &deleted_dictionary)) {
+ // Failed to delete the dictionary.
+ return UserDictionaryCommandStatus::UNKNOWN_DICTIONARY_ID;
+@@ -510,7 +510,7 @@
+ uint64 dictionary_id, const string &dictionary_name) {
+ string original_name;
+ const UserDictionary *dictionary =
+- UserDictionaryUtil::GetUserDictionaryById(*storage_, dictionary_id);
++ UserDictionaryUtil::GetUserDictionaryById(storage_->user_dictionary_storage_base, dictionary_id);
+ if (dictionary != NULL) {
+ // Note that if dictionary is null, it means the dictionary_id is invalid
+ // so following RenameDictionary will fail, and error handling is done
+@@ -547,7 +547,7 @@
+ uint64 dictionary_id, const UserDictionary::Entry &entry) {
+ UserDictionary *dictionary =
+ UserDictionaryUtil::GetMutableUserDictionaryById(
+- storage_.get(), dictionary_id);
++ &storage_->user_dictionary_storage_base, dictionary_id);
+ if (dictionary == NULL) {
+ return UserDictionaryCommandStatus::UNKNOWN_DICTIONARY_ID;
+ }
+@@ -575,7 +575,7 @@
+ uint64 dictionary_id, int index, const UserDictionary::Entry &entry) {
+ UserDictionary *dictionary =
+ UserDictionaryUtil::GetMutableUserDictionaryById(
+- storage_.get(), dictionary_id);
++ &storage_->user_dictionary_storage_base, dictionary_id);
+ if (dictionary == NULL) {
+ return UserDictionaryCommandStatus::UNKNOWN_DICTIONARY_ID;
+ }
+@@ -604,7 +604,7 @@
+ uint64 dictionary_id, const std::vector<int> &index_list) {
+ UserDictionary *dictionary =
+ UserDictionaryUtil::GetMutableUserDictionaryById(
+- storage_.get(), dictionary_id);
++ &storage_->user_dictionary_storage_base, dictionary_id);
+ if (dictionary == NULL) {
+ return UserDictionaryCommandStatus::UNKNOWN_DICTIONARY_ID;
+ }
+@@ -644,7 +644,7 @@
+ uint64 dictionary_id, const string &data) {
+ UserDictionary *dictionary =
+ UserDictionaryUtil::GetMutableUserDictionaryById(
+- storage_.get(), dictionary_id);
++ &storage_->user_dictionary_storage_base, dictionary_id);
+ if (dictionary == NULL) {
+ return UserDictionaryCommandStatus::UNKNOWN_DICTIONARY_ID;
+ }
+@@ -699,7 +699,7 @@
+ uint64 *new_dictionary_id) {
+ UserDictionaryCommandStatus::Status status =
+ UserDictionaryUtil::CreateDictionary(
+- storage_.get(), dictionary_name, new_dictionary_id);
++ &storage_->user_dictionary_storage_base, dictionary_name, new_dictionary_id);
+ if (status != UserDictionaryCommandStatus::USER_DICTIONARY_COMMAND_SUCCESS) {
+ return status;
+ }
+@@ -709,7 +709,7 @@
+
+ UserDictionary *dictionary =
+ UserDictionaryUtil::GetMutableUserDictionaryById(
+- storage_.get(), *new_dictionary_id);
++ &storage_->user_dictionary_storage_base, *new_dictionary_id);
+ if (dictionary == NULL) {
+ // The dictionary should be always found.
+ return UserDictionaryCommandStatus::UNKNOWN_ERROR;
+@@ -719,7 +719,7 @@
+ }
+
+ bool UserDictionarySession::EnsureNonEmptyStorage() {
+- if (storage_->dictionaries_size() > 0) {
++ if (storage_->user_dictionary_storage_base.dictionaries_size() > 0) {
+ // The storage already has at least one dictionary. Do nothing.
+ return false;
+ }
+@@ -728,7 +728,7 @@
+ uint64 new_dictionary_id;
+ UserDictionaryCommandStatus::Status status =
+ UserDictionaryUtil::CreateDictionary(
+- storage_.get(), default_dictionary_name_, &new_dictionary_id);
++ &storage_->user_dictionary_storage_base, default_dictionary_name_, &new_dictionary_id);
+ CHECK_EQ(
+ status, UserDictionaryCommandStatus::USER_DICTIONARY_COMMAND_SUCCESS);
+ return true;
+@@ -755,7 +755,7 @@
+
+ void UserDictionarySession::ClearDictionariesAndUndoHistory() {
+ ScopedUserDictionaryLocker l(storage_.get());
+- storage_->clear_dictionaries();
++ storage_->user_dictionary_storage_base.clear_dictionaries();
+ ClearUndoHistory();
+ }
+
+--- /src/dictionary/user_dictionary_session_test.cc
++++ /src/dictionary/user_dictionary_session_test.cc
+@@ -95,12 +95,12 @@
+
+ ASSERT_EQ(UserDictionaryCommandStatus::FILE_NOT_FOUND, session.Load());
+
+- session.mutable_storage()->set_version(10);
++ session.mutable_storage()->user_dictionary_storage_base.set_version(10);
+ ASSERT_EQ(UserDictionaryCommandStatus::USER_DICTIONARY_COMMAND_SUCCESS,
+ session.Save());
+
+ // Clear once, in order to make sure that Load is actually working.
+- session.mutable_storage()->Clear();
++ session.mutable_storage()->user_dictionary_storage_base.Clear();
+ ASSERT_EQ(UserDictionaryCommandStatus::USER_DICTIONARY_COMMAND_SUCCESS,
+ session.Load());
+
+@@ -130,7 +130,7 @@
+
+ // Create huge dummy data.
+ {
+- UserDictionaryStorage *storage = session.mutable_storage();
++ UserDictionaryStorage *storage = &session.mutable_storage()->user_dictionary_storage_base;
+ for (int i = 0; i < 100; ++i) {
+ UserDictionary *dictionary = storage->add_dictionaries();
+ for (int j = 0; j < 1000; ++j) {
+@@ -147,7 +147,7 @@
+ ASSERT_EQ(UserDictionaryCommandStatus::FILE_SIZE_LIMIT_EXCEEDED,
+ session.Save());
+
+- session.mutable_storage()->Clear();
++ session.mutable_storage()->user_dictionary_storage_base.Clear();
+ ASSERT_EQ(UserDictionaryCommandStatus::USER_DICTIONARY_COMMAND_SUCCESS,
+ session.Load());
+
+@@ -191,7 +191,7 @@
+
+ while (session.storage().dictionaries_size() <
+ ::mozc::UserDictionaryStorage::max_dictionary_size()) {
+- session.mutable_storage()->add_dictionaries();
++ session.mutable_storage()->user_dictionary_storage_base.add_dictionaries();
+ }
+ EXPECT_EQ(UserDictionaryCommandStatus::DICTIONARY_SIZE_LIMIT_EXCEEDED,
+ session.CreateDictionary("dictionary 2", &dummy_dictionary_id));
+@@ -204,7 +204,7 @@
+ const uint64 kDummyId = 10;
+ {
+ UserDictionary *user_dictionary =
+- session.mutable_storage()->add_dictionaries();
++ session.mutable_storage()->user_dictionary_storage_base.add_dictionaries();
+ user_dictionary->set_id(kDummyId);
+ }
+
+@@ -229,7 +229,7 @@
+ const uint64 kDummyId = 10;
+ {
+ UserDictionary *user_dictionary =
+- session.mutable_storage()->add_dictionaries();
++ session.mutable_storage()->user_dictionary_storage_base.add_dictionaries();
+ user_dictionary->set_id(kDummyId);
+ }
+
+--- /src/dictionary/user_dictionary_storage.cc
++++ /src/dictionary/user_dictionary_storage.cc
+@@ -109,7 +109,7 @@
+ mozc::protobuf::io::IstreamInputStream zero_copy_input(&ifs);
+ mozc::protobuf::io::CodedInputStream decoder(&zero_copy_input);
+ decoder.SetTotalBytesLimit(kDefaultTotalBytesLimit, -1);
+- if (!ParseFromCodedStream(&decoder)) {
++ if (!user_dictionary_storage_base.ParseFromCodedStream(&decoder)) {
+ LOG(ERROR) << "Failed to parse";
+ if (!decoder.ConsumedEntireMessage() || !ifs.eof()) {
+ LOG(ERROR) << "ParseFromStream failed: file seems broken";
+@@ -137,11 +137,11 @@
+ }
+
+ // Check dictionary id here. if id is 0, assign random ID.
+- for (int i = 0; i < dictionaries_size(); ++i) {
+- const UserDictionary &dict = dictionaries(i);
++ for (int i = 0; i < user_dictionary_storage_base.dictionaries_size(); ++i) {
++ const UserDictionary &dict = user_dictionary_storage_base.dictionaries(i);
+ if (dict.id() == 0) {
+- mutable_dictionaries(i)->set_id(
+- UserDictionaryUtil::CreateNewDictionaryId(*this));
++ user_dictionary_storage_base.mutable_dictionaries(i)->set_id(
++ UserDictionaryUtil::CreateNewDictionaryId(this->user_dictionary_storage_base));
+ }
+ }
+
+@@ -171,7 +171,7 @@
+ return false;
+ }
+
+- if (!SerializeToOstream(&ofs)) {
++ if (!user_dictionary_storage_base.SerializeToOstream(&ofs)) {
+ LOG(ERROR) << "SerializeToString failed";
+ last_error_type_ = SYNC_FAILURE;
+ return false;
+@@ -227,7 +227,7 @@
+ return false;
+ }
+
+- const UserDictionary &dic = dictionaries(index);
++ const UserDictionary &dic = user_dictionary_storage_base.dictionaries(index);
+ for (size_t i = 0; i < dic.entries_size(); ++i) {
+ const UserDictionaryEntry &entry = dic.entries(i);
+ ofs << entry.key() << "\t" << entry.value() << "\t"
+@@ -241,7 +241,7 @@
+ bool UserDictionaryStorage::CreateDictionary(
+ const string &dic_name, uint64 *new_dic_id) {
+ UserDictionaryCommandStatus::Status status =
+- UserDictionaryUtil::CreateDictionary(this, dic_name, new_dic_id);
++ UserDictionaryUtil::CreateDictionary(&this->user_dictionary_storage_base, dic_name, new_dic_id);
+ // Update last_error_type_
+ switch (status) {
+ case UserDictionaryCommandStatus::DICTIONARY_NAME_EMPTY:
+@@ -273,7 +273,7 @@
+ }
+
+ bool UserDictionaryStorage::DeleteDictionary(uint64 dic_id) {
+- if (!UserDictionaryUtil::DeleteDictionary(this, dic_id, NULL, NULL)) {
++ if (!UserDictionaryUtil::DeleteDictionary(&this->user_dictionary_storage_base, dic_id, NULL, NULL)) {
+ // Failed to delete dictionary.
+ last_error_type_ = INVALID_DICTIONARY_ID;
+ return false;
+@@ -304,8 +304,8 @@
+ return true;
+ }
+
+- for (int i = 0; i < dictionaries_size(); ++i) {
+- if (dic_name == dictionaries(i).name()) {
++ for (int i = 0; i < user_dictionary_storage_base.dictionaries_size(); ++i) {
++ if (dic_name == user_dictionary_storage_base.dictionaries(i).name()) {
+ last_error_type_ = DUPLICATED_DICTIONARY_NAME;
+ LOG(ERROR) << "duplicated dictionary name";
+ return false;
+@@ -318,14 +318,14 @@
+ }
+
+ int UserDictionaryStorage::GetUserDictionaryIndex(uint64 dic_id) const {
+- return UserDictionaryUtil::GetUserDictionaryIndexById(*this, dic_id);
++ return UserDictionaryUtil::GetUserDictionaryIndexById(this->user_dictionary_storage_base, dic_id);
+ }
+
+ bool UserDictionaryStorage::GetUserDictionaryId(const string &dic_name,
+ uint64 *dic_id) {
+- for (size_t i = 0; i < dictionaries_size(); ++i) {
+- if (dic_name == dictionaries(i).name()) {
+- *dic_id = dictionaries(i).id();
++ for (size_t i = 0; i < user_dictionary_storage_base.dictionaries_size(); ++i) {
++ if (dic_name == user_dictionary_storage_base.dictionaries(i).name()) {
++ *dic_id = user_dictionary_storage_base.dictionaries(i).id();
+ return true;
+ }
+ }
+@@ -335,7 +335,7 @@
+
+ user_dictionary::UserDictionary *UserDictionaryStorage::GetUserDictionary(
+ uint64 dic_id) {
+- return UserDictionaryUtil::GetMutableUserDictionaryById(this, dic_id);
++ return UserDictionaryUtil::GetMutableUserDictionaryById(&this->user_dictionary_storage_base, dic_id);
+ }
+
+ UserDictionaryStorage::UserDictionaryStorageErrorType
+@@ -352,8 +352,8 @@
+ }
+
+ int auto_index = -1;
+- for (int i = 0; i < dictionaries_size(); ++i) {
+- if (dictionaries(i).name() == kAutoRegisteredDictionaryName) {
++ for (int i = 0; i < user_dictionary_storage_base.dictionaries_size(); ++i) {
++ if (user_dictionary_storage_base.dictionaries(i).name() == kAutoRegisteredDictionaryName) {
+ auto_index = i;
+ break;
+ }
+@@ -361,17 +361,17 @@
+
+ UserDictionary *dic = NULL;
+ if (auto_index == -1) {
+- if (UserDictionaryUtil::IsStorageFull(*this)) {
++ if (UserDictionaryUtil::IsStorageFull(this->user_dictionary_storage_base)) {
+ last_error_type_ = TOO_MANY_DICTIONARIES;
+ LOG(ERROR) << "too many dictionaries";
+ UnLock();
+ return false;
+ }
+- dic = add_dictionaries();
+- dic->set_id(UserDictionaryUtil::CreateNewDictionaryId(*this));
++ dic = user_dictionary_storage_base.add_dictionaries();
++ dic->set_id(UserDictionaryUtil::CreateNewDictionaryId(this->user_dictionary_storage_base));
+ dic->set_name(kAutoRegisteredDictionaryName);
+ } else {
+- dic = mutable_dictionaries(auto_index);
++ dic = user_dictionary_storage_base.mutable_dictionaries(auto_index);
+ }
+
+ if (dic == NULL) {
+@@ -410,13 +410,13 @@
+ }
+
+ bool UserDictionaryStorage::ConvertSyncDictionariesToNormalDictionaries() {
+- if (CountSyncableDictionaries(*this) == 0) {
++ if (CountSyncableDictionaries(this->user_dictionary_storage_base) == 0) {
+ return false;
+ }
+
+- for (int dictionary_index = dictionaries_size() - 1;
++ for (int dictionary_index = user_dictionary_storage_base.dictionaries_size() - 1;
+ dictionary_index >= 0; --dictionary_index) {
+- UserDictionary *dic = mutable_dictionaries(dictionary_index);
++ UserDictionary *dic = user_dictionary_storage_base.mutable_dictionaries(dictionary_index);
+ if (!dic->syncable()) {
+ continue;
+ }
+@@ -433,10 +433,10 @@
+
+ // Delete removed or unused sync dictionaries.
+ if (dic->removed() || dic->entries_size() == 0) {
+- for (int i = dictionary_index + 1; i < dictionaries_size(); ++i) {
+- mutable_dictionaries()->SwapElements(i - 1, i);
++ for (int i = dictionary_index + 1; i < user_dictionary_storage_base.dictionaries_size(); ++i) {
++ user_dictionary_storage_base.mutable_dictionaries()->SwapElements(i - 1, i);
+ }
+- mutable_dictionaries()->RemoveLast();
++ user_dictionary_storage_base.mutable_dictionaries()->RemoveLast();
+ continue;
+ }
+
+@@ -445,7 +445,7 @@
+ kDictionaryNameConvertedFromSyncableDictionary;
+ int index = 0;
+ while (UserDictionaryUtil::ValidateDictionaryName(
+- *this, new_dictionary_name)
++ this->user_dictionary_storage_base, new_dictionary_name)
+ != UserDictionaryCommandStatus::USER_DICTIONARY_COMMAND_SUCCESS) {
+ ++index;
+ new_dictionary_name = Util::StringPrintf(
+@@ -456,7 +456,7 @@
+ dic->set_syncable(false);
+ }
+
+- DCHECK_EQ(0, CountSyncableDictionaries(*this));
++ DCHECK_EQ(0, CountSyncableDictionaries(this->user_dictionary_storage_base));
+
+ return true;
+ }
+@@ -487,7 +487,7 @@
+ bool UserDictionaryStorage::IsValidDictionaryName(const string &name) {
+ UserDictionaryCommandStatus::Status status =
+ UserDictionaryUtil::ValidateDictionaryName(
+- UserDictionaryStorage::default_instance(), name);
++ user_dictionary::UserDictionaryStorage::default_instance(), name);
+
+ // Update last_error_type_.
+ switch (status) {
+--- /src/dictionary/user_dictionary_storage.h
++++ /src/dictionary/user_dictionary_storage.h
+@@ -72,13 +72,15 @@
+ class Mutex;
+ class ProcessMutex;
+
+-// Inherit from ProtocolBuffer
+-// TODO(hidehiko): Get rid of this implementation.
+-class UserDictionaryStorage : public user_dictionary::UserDictionaryStorage {
++class UserDictionaryStorage {
+ public:
+ typedef user_dictionary::UserDictionary UserDictionary;
+ typedef user_dictionary::UserDictionary::Entry UserDictionaryEntry;
+
++ // Instance of base class generated by Protocol Buffers compiler.
++ // Regular inheritance strongly discouraged.
++ user_dictionary::UserDictionaryStorage user_dictionary_storage_base;
++
+ enum UserDictionaryStorageErrorType {
+ USER_DICTIONARY_STORAGE_NO_ERROR = 0, // default
+ FILE_NOT_EXISTS,
+--- /src/dictionary/user_dictionary_storage_test.cc
++++ /src/dictionary/user_dictionary_storage_test.cc
+@@ -118,13 +118,13 @@
+ const size_t kDictionariesSize = 3;
+ uint64 id[kDictionariesSize];
+
+- const size_t dict_size = storage.dictionaries_size();
++ const size_t dict_size = storage.user_dictionary_storage_base.dictionaries_size();
+
+ for (size_t i = 0; i < kDictionariesSize; ++i) {
+ EXPECT_TRUE(storage.CreateDictionary(
+ "test" + std::to_string(static_cast<uint32>(i)),
+ &id[i]));
+- EXPECT_EQ(i + 1 + dict_size, storage.dictionaries_size());
++ EXPECT_EQ(i + 1 + dict_size, storage.user_dictionary_storage_base.dictionaries_size());
+ }
+
+ for (size_t i = 0; i < kDictionariesSize; ++i) {
+@@ -133,7 +133,7 @@
+ }
+
+ for (size_t i = 0; i < kDictionariesSize; ++i) {
+- EXPECT_EQ(storage.mutable_dictionaries(i + dict_size),
++ EXPECT_EQ(storage.user_dictionary_storage_base.mutable_dictionaries(i + dict_size),
+ storage.GetUserDictionary(id[i]));
+ EXPECT_EQ(NULL, storage.GetUserDictionary(id[i] + 1));
+ }
+@@ -165,7 +165,7 @@
+ EXPECT_FALSE(storage.DeleteDictionary(0));
+
+ EXPECT_TRUE(storage.DeleteDictionary(id[1]));
+- EXPECT_EQ(kDictionariesSize + dict_size - 1, storage.dictionaries_size());
++ EXPECT_EQ(kDictionariesSize + dict_size - 1, storage.user_dictionary_storage_base.dictionaries_size());
+ }
+
+ TEST_F(UserDictionaryStorageTest, DeleteTest) {
+@@ -174,7 +174,7 @@
+
+ // repeat 10 times
+ for (int i = 0; i < 10; ++i) {
+- storage.Clear();
++ storage.user_dictionary_storage_base.Clear();
+ std::vector<uint64> ids(100);
+ for (size_t i = 0; i < ids.size(); ++i) {
+ EXPECT_TRUE(storage.CreateDictionary(
+@@ -191,10 +191,10 @@
+ alive.push_back(ids[i]);
+ }
+
+- EXPECT_EQ(alive.size(), storage.dictionaries_size());
++ EXPECT_EQ(alive.size(), storage.user_dictionary_storage_base.dictionaries_size());
+
+ for (size_t i = 0; i < alive.size(); ++i) {
+- EXPECT_EQ(alive[i], storage.dictionaries(i).id());
++ EXPECT_EQ(alive[i], storage.user_dictionary_storage_base.dictionaries(i).id());
+ }
+ }
+ }
+@@ -268,7 +268,7 @@
+ const size_t entry_size = Util::Random(100) + 1;
+ for (size_t j = 0; j < entry_size; ++j) {
+ UserDictionaryStorage::UserDictionary *dic =
+- storage1.mutable_dictionaries(i);
++ storage1.user_dictionary_storage_base.mutable_dictionaries(i);
+ UserDictionaryStorage::UserDictionaryEntry *entry =
+ dic->add_entries();
+ entry->set_key(GenRandomString(10));
+@@ -288,7 +288,7 @@
+ EXPECT_TRUE(storage2.Load());
+ }
+
+- EXPECT_EQ(storage1.DebugString(), storage2.DebugString());
++ EXPECT_EQ(storage1.user_dictionary_storage_base.DebugString(), storage2.user_dictionary_storage_base.DebugString());
+ }
+ }
+
+@@ -352,7 +352,7 @@
+ uint64 dict_id = 0;
+ ASSERT_TRUE(storage.CreateDictionary(data.dictionary_name, &dict_id));
+ UserDictionaryStorage::UserDictionary *dict =
+- storage.mutable_dictionaries(storage.GetUserDictionaryIndex(dict_id));
++ storage.user_dictionary_storage_base.mutable_dictionaries(storage.GetUserDictionaryIndex(dict_id));
+ dict->set_syncable(data.is_sync_dictionary);
+ dict->set_removed(data.is_removed_dictionary);
+ if (data.has_normal_entry) {
+@@ -369,7 +369,7 @@
+ entry->set_removed(true);
+ }
+ }
+- EXPECT_EQ(9, UserDictionaryStorage::CountSyncableDictionaries(storage));
++ EXPECT_EQ(9, UserDictionaryStorage::CountSyncableDictionaries(storage.user_dictionary_storage_base));
+
+ ASSERT_TRUE(storage.ConvertSyncDictionariesToNormalDictionaries());
+
+@@ -385,12 +385,12 @@
+ { true, kDictionaryNameConvertedFromSyncableDictionary },
+ };
+
+- EXPECT_EQ(0, UserDictionaryStorage::CountSyncableDictionaries(storage));
+- ASSERT_EQ(arraysize(expected_data), storage.dictionaries_size());
++ EXPECT_EQ(0, UserDictionaryStorage::CountSyncableDictionaries(storage.user_dictionary_storage_base));
++ ASSERT_EQ(arraysize(expected_data), storage.user_dictionary_storage_base.dictionaries_size());
+ for (size_t i = 0; i < arraysize(expected_data); ++i) {
+ SCOPED_TRACE(Util::StringPrintf("verify %d", static_cast<int>(i)));
+ const ExpectedData &expected = expected_data[i];
+- const UserDictionaryStorage::UserDictionary &dict = storage.dictionaries(i);
++ const UserDictionaryStorage::UserDictionary &dict = storage.user_dictionary_storage_base.dictionaries(i);
+
+ EXPECT_EQ(expected.dictionary_name, dict.name());
+ EXPECT_FALSE(dict.syncable());
+@@ -404,42 +404,42 @@
+ }
+
+ // Test duplicated dictionary name.
+- storage.Clear();
++ storage.user_dictionary_storage_base.Clear();
+ {
+ uint64 dict_id = 0;
+ storage.CreateDictionary(
+ UserDictionaryStorage::default_sync_dictionary_name(), &dict_id);
+ storage.CreateDictionary(
+ kDictionaryNameConvertedFromSyncableDictionary, &dict_id);
+- ASSERT_EQ(2, storage.dictionaries_size());
++ ASSERT_EQ(2, storage.user_dictionary_storage_base.dictionaries_size());
+ UserDictionaryStorage::UserDictionary *dict;
+- dict = storage.mutable_dictionaries(0);
++ dict = storage.user_dictionary_storage_base.mutable_dictionaries(0);
+ dict->set_syncable(true);
+ dict->add_entries()->set_key("0");
+- dict = storage.mutable_dictionaries(1);
++ dict = storage.user_dictionary_storage_base.mutable_dictionaries(1);
+ dict->set_syncable(false);
+ dict->add_entries()->set_key("1");
+ }
+ ASSERT_TRUE(storage.ConvertSyncDictionariesToNormalDictionaries());
+- EXPECT_EQ(0, UserDictionaryStorage::CountSyncableDictionaries(storage));
+- EXPECT_EQ(2, storage.dictionaries_size());
++ EXPECT_EQ(0, UserDictionaryStorage::CountSyncableDictionaries(storage.user_dictionary_storage_base));
++ EXPECT_EQ(2, storage.user_dictionary_storage_base.dictionaries_size());
+ EXPECT_EQ(Util::StringPrintf("%s_1",
+ kDictionaryNameConvertedFromSyncableDictionary),
+- storage.dictionaries(0).name());
++ storage.user_dictionary_storage_base.dictionaries(0).name());
+ EXPECT_EQ(kDictionaryNameConvertedFromSyncableDictionary,
+- storage.dictionaries(1).name());
++ storage.user_dictionary_storage_base.dictionaries(1).name());
+ }
+
+ TEST_F(UserDictionaryStorageTest, AddToAutoRegisteredDictionary) {
+ {
+ UserDictionaryStorage storage(GetUserDictionaryFile());
+- EXPECT_EQ(0, storage.dictionaries_size());
++ EXPECT_EQ(0, storage.user_dictionary_storage_base.dictionaries_size());
+ EXPECT_TRUE(storage.AddToAutoRegisteredDictionary(
+ "key1", "value1", UserDictionary::NOUN));
+- EXPECT_EQ(1, storage.dictionaries_size());
+- EXPECT_EQ(1, storage.dictionaries(0).entries_size());
++ EXPECT_EQ(1, storage.user_dictionary_storage_base.dictionaries_size());
++ EXPECT_EQ(1, storage.user_dictionary_storage_base.dictionaries(0).entries_size());
+ const UserDictionaryStorage::UserDictionaryEntry &entry1 =
+- storage.dictionaries(0).entries(0);
++ storage.user_dictionary_storage_base.dictionaries(0).entries(0);
+ EXPECT_EQ("key1", entry1.key());
+ EXPECT_EQ("value1", entry1.value());
+ EXPECT_EQ(UserDictionary::NOUN, entry1.pos());
+@@ -447,10 +447,10 @@
+
+ EXPECT_TRUE(storage.AddToAutoRegisteredDictionary(
+ "key2", "value2", UserDictionary::NOUN));
+- EXPECT_EQ(1, storage.dictionaries_size());
+- EXPECT_EQ(2, storage.dictionaries(0).entries_size());
++ EXPECT_EQ(1, storage.user_dictionary_storage_base.dictionaries_size());
++ EXPECT_EQ(2, storage.user_dictionary_storage_base.dictionaries(0).entries_size());
+ const UserDictionaryStorage::UserDictionaryEntry &entry2 =
+- storage.dictionaries(0).entries(1);
++ storage.user_dictionary_storage_base.dictionaries(0).entries(1);
+ EXPECT_EQ("key2", entry2.key());
+ EXPECT_EQ("value2", entry2.value());
+ EXPECT_EQ(UserDictionary::NOUN, entry2.pos());
+@@ -474,7 +474,7 @@
+ {
+ UserDictionaryStorage storage(GetUserDictionaryFile());
+ {
+- UserDictionary *dictionary = storage.add_dictionaries();
++ UserDictionary *dictionary = storage.user_dictionary_storage_base.add_dictionaries();
+ dictionary->set_id(kDummyDictionaryId);
+ UserDictionary::Entry *entry = dictionary->add_entries();
+ entry->set_key("key");
+--- /src/dictionary/user_dictionary_test.cc
++++ /src/dictionary/user_dictionary_test.cc
+@@ -334,9 +334,9 @@
+ std::istringstream is(contents);
+ CHECK(is.good());
+
+- storage->Clear();
++ storage->user_dictionary_storage_base.Clear();
+ UserDictionaryStorage::UserDictionary *dic
+- = storage->add_dictionaries();
++ = storage->user_dictionary_storage_base.add_dictionaries();
+ CHECK(dic);
+
+ string line;
+@@ -389,7 +389,7 @@
+ {
+ UserDictionaryStorage storage("");
+ UserDictionaryTest::LoadFromString(kUserDictionary0, &storage);
+- dic->Load(storage);
++ dic->Load(storage.user_dictionary_storage_base);
+ }
+
+ // A normal lookup operation.
+@@ -425,7 +425,7 @@
+ {
+ UserDictionaryStorage storage("");
+ LoadFromString(kUserDictionary1, &storage);
+- dic->Load(storage);
++ dic->Load(storage.user_dictionary_storage_base);
+ }
+
+ // A normal lookup again.
+@@ -450,7 +450,7 @@
+ {
+ UserDictionaryStorage storage("");
+ LoadFromString(kUserDictionary0, &storage);
+- dic->Load(storage);
++ dic->Load(storage.user_dictionary_storage_base);
+ }
+
+ // A normal lookup operation.
+@@ -480,7 +480,7 @@
+ {
+ UserDictionaryStorage storage("");
+ LoadFromString(kUserDictionary1, &storage);
+- dic->Load(storage);
++ dic->Load(storage.user_dictionary_storage_base);
+ }
+
+ // A normal lookup.
+@@ -504,7 +504,7 @@
+ {
+ UserDictionaryStorage storage("");
+ LoadFromString(kUserDictionary0, &storage);
+- dic->Load(storage);
++ dic->Load(storage.user_dictionary_storage_base);
+ }
+
+ // A normal lookup operation.
+@@ -540,7 +540,7 @@
+ uint64 id = 0;
+ EXPECT_TRUE(storage.CreateDictionary("test", &id));
+ UserDictionaryStorage::UserDictionary *dic =
+- storage.mutable_dictionaries(0);
++ storage.user_dictionary_storage_base.mutable_dictionaries(0);
+
+ // "名詞"
+ UserDictionaryStorage::UserDictionaryEntry *entry =
+@@ -555,7 +555,7 @@
+ entry->set_value("suggest_only");
+ entry->set_pos(user_dictionary::UserDictionary::SUGGESTION_ONLY);
+
+- user_dic->Load(storage);
++ user_dic->Load(storage.user_dictionary_storage_base);
+ }
+
+ // "suggestion_only" should not be looked up.
+@@ -577,7 +577,7 @@
+ {
+ UserDictionaryStorage storage("");
+ UserDictionaryTest::LoadFromString(kUserDictionary0, &storage);
+- dic->Load(storage);
++ dic->Load(storage.user_dictionary_storage_base);
+ }
+
+ TestLookupPrefixHelper(nullptr, 0, "start", 4, *dic);
+@@ -612,7 +612,7 @@
+ uint64 id = 0;
+ EXPECT_TRUE(storage.CreateDictionary("test", &id));
+ UserDictionaryStorage::UserDictionary *dic =
+- storage.mutable_dictionaries(0);
++ storage.user_dictionary_storage_base.mutable_dictionaries(0);
+ for (size_t j = 0; j < 10000; ++j) {
+ UserDictionaryStorage::UserDictionaryEntry *entry =
+ dic->add_entries();
+@@ -681,15 +681,15 @@
+ UserDictionaryStorage storage(filename);
+ EXPECT_TRUE(storage.Load());
+ int index = 0;
+- EXPECT_EQ(1, storage.dictionaries_size());
+- EXPECT_EQ(100, storage.dictionaries(index).entries_size());
++ EXPECT_EQ(1, storage.user_dictionary_storage_base.dictionaries_size());
++ EXPECT_EQ(100, storage.user_dictionary_storage_base.dictionaries(index).entries_size());
+ for (int i = 0; i < 100; ++i) {
+ EXPECT_EQ("key" + std::to_string(i),
+- storage.dictionaries(index).entries(i).key());
++ storage.user_dictionary_storage_base.dictionaries(index).entries(i).key());
+ EXPECT_EQ("value" + std::to_string(i),
+- storage.dictionaries(index).entries(i).value());
++ storage.user_dictionary_storage_base.dictionaries(index).entries(i).value());
+ EXPECT_EQ(user_dictionary::UserDictionary::NOUN,
+- storage.dictionaries(index).entries(i).pos());
++ storage.user_dictionary_storage_base.dictionaries(index).entries(i).pos());
+ }
+ }
+
+@@ -722,12 +722,12 @@
+ {
+ UserDictionaryStorage storage(filename);
+ EXPECT_TRUE(storage.Load());
+- EXPECT_EQ(1, storage.dictionaries_size());
+- EXPECT_EQ(1, storage.dictionaries(0).entries_size());
+- EXPECT_EQ("key", storage.dictionaries(0).entries(0).key());
+- EXPECT_EQ("value", storage.dictionaries(0).entries(0).value());
++ EXPECT_EQ(1, storage.user_dictionary_storage_base.dictionaries_size());
++ EXPECT_EQ(1, storage.user_dictionary_storage_base.dictionaries(0).entries_size());
++ EXPECT_EQ("key", storage.user_dictionary_storage_base.dictionaries(0).entries(0).key());
++ EXPECT_EQ("value", storage.user_dictionary_storage_base.dictionaries(0).entries(0).value());
+ EXPECT_EQ(user_dictionary::UserDictionary::NOUN,
+- storage.dictionaries(0).entries(0).pos());
++ storage.user_dictionary_storage_base.dictionaries(0).entries(0).pos());
+ }
+ }
+
+@@ -746,7 +746,7 @@
+ uint64 id = 0;
+ EXPECT_TRUE(storage.CreateDictionary("test", &id));
+ UserDictionaryStorage::UserDictionary *dic =
+- storage.mutable_dictionaries(0);
++ storage.user_dictionary_storage_base.mutable_dictionaries(0);
+ for (size_t j = 0; j < 10000; ++j) {
+ UserDictionaryStorage::UserDictionaryEntry *entry =
+ dic->add_entries();
+@@ -770,7 +770,7 @@
+
+ suppression_dictionary_->Lock();
+ EXPECT_TRUE(suppression_dictionary_->IsLocked());
+- user_dic->Load(storage);
++ user_dic->Load(storage.user_dictionary_storage_base);
+ EXPECT_FALSE(suppression_dictionary_->IsLocked());
+
+ for (size_t j = 0; j < 10; ++j) {
+@@ -782,11 +782,11 @@
+
+ // Remove suppression entry
+ {
+- storage.Clear();
++ storage.user_dictionary_storage_base.Clear();
+ uint64 id = 0;
+ EXPECT_TRUE(storage.CreateDictionary("test", &id));
+ UserDictionaryStorage::UserDictionary *dic =
+- storage.mutable_dictionaries(0);
++ storage.user_dictionary_storage_base.mutable_dictionaries(0);
+ for (size_t j = 0; j < 10000; ++j) {
+ UserDictionaryStorage::UserDictionaryEntry *entry =
+ dic->add_entries();
+@@ -798,7 +798,7 @@
+ }
+
+ suppression_dictionary_->Lock();
+- user_dic->Load(storage);
++ user_dic->Load(storage.user_dictionary_storage_base);
+ EXPECT_FALSE(suppression_dictionary_->IsLocked());
+
+ for (size_t j = 0; j < 10; ++j) {
+@@ -825,7 +825,7 @@
+ uint64 id = 0;
+ EXPECT_TRUE(storage.CreateDictionary("test", &id));
+ UserDictionaryStorage::UserDictionary *dic =
+- storage.mutable_dictionaries(0);
++ storage.user_dictionary_storage_base.mutable_dictionaries(0);
+
+ for (size_t j = 0; j < 10; ++j) {
+ UserDictionaryStorage::UserDictionaryEntry *entry =
+@@ -845,7 +845,7 @@
+ entry->set_pos(user_dictionary::UserDictionary::SUGGESTION_ONLY);
+ }
+
+- user_dic->Load(storage);
++ user_dic->Load(storage.user_dictionary_storage_base);
+ }
+
+ {
+@@ -878,7 +878,7 @@
+ UserDictionaryStorage storage("");
+
+ {
+- UserDictionaryStorage::UserDictionary *dic1 = storage.add_dictionaries();
++ UserDictionaryStorage::UserDictionary *dic1 = storage.user_dictionary_storage_base.add_dictionaries();
+ CHECK(dic1);
+ UserDictionaryStorage::UserDictionaryEntry *entry;
+ entry = dic1->add_entries();
+@@ -893,7 +893,7 @@
+ entry->set_pos(user_dictionary::UserDictionary::NOUN);
+ }
+ {
+- UserDictionaryStorage::UserDictionary *dic2 = storage.add_dictionaries();
++ UserDictionaryStorage::UserDictionary *dic2 = storage.user_dictionary_storage_base.add_dictionaries();
+ CHECK(dic2);
+ UserDictionaryStorage::UserDictionaryEntry *entry;
+ entry = dic2->add_entries();
+@@ -912,7 +912,7 @@
+ entry->set_value("value5");
+ entry->set_pos(user_dictionary::UserDictionary::NOUN);
+ }
+- dic->Load(storage);
++ dic->Load(storage.user_dictionary_storage_base);
+
+ EXPECT_INTEGER_STATS("UserRegisteredWord", 5);
+ }
+@@ -925,7 +925,7 @@
+ {
+ UserDictionaryStorage storage("");
+ UserDictionaryTest::LoadFromString(kUserDictionary0, &storage);
+- dic->Load(storage);
++ dic->Load(storage.user_dictionary_storage_base);
+ }
+
+ // Entry is in user dictionary but has no comment.
+--- /src/gui/word_register_dialog/word_register_dialog.cc
++++ /src/gui/word_register_dialog/word_register_dialog.cc
+@@ -298,7 +298,7 @@
+ }
+
+ UserDictionary *dic =
+- session_->mutable_storage()->mutable_dictionaries(index);
++ session_->mutable_storage()->user_dictionary_storage_base.mutable_dictionaries(index);
+ CHECK(dic);
+
+ if (dic->name() != DictionarycomboBox->currentText().toStdString()) {
+--- /src/prediction/user_history_predictor.cc
++++ /src/prediction/user_history_predictor.cc
+@@ -291,23 +291,23 @@
+ return false;
+ }
+
+- if (!ParseFromString(input)) {
++ if (!user_history_base.ParseFromString(input)) {
+ LOG(ERROR) << "ParseFromString failed. message looks broken";
+ return false;
+ }
+
+- VLOG(1) << "Loaded user histroy, size=" << entries_size();
++ VLOG(1) << "Loaded user histroy, size=" << user_history_base.entries_size();
+ return true;
+ }
+
+ bool UserHistoryStorage::Save() const {
+- if (entries_size() == 0) {
++ if (user_history_base.entries_size() == 0) {
+ LOG(WARNING) << "etries size is 0. Not saved";
+ return false;
+ }
+
+ string output;
+- if (!AppendToString(&output)) {
++ if (!user_history_base.AppendToString(&output)) {
+ LOG(ERROR) << "AppendToString failed";
+ return false;
+ }
+@@ -494,12 +494,12 @@
+ return false;
+ }
+
+- for (size_t i = 0; i < history.entries_size(); ++i) {
+- dic_->Insert(EntryFingerprint(history.entries(i)),
+- history.entries(i));
++ for (size_t i = 0; i < history.user_history_base.entries_size(); ++i) {
++ dic_->Insert(EntryFingerprint(history.user_history_base.entries(i)),
++ history.user_history_base.entries(i));
+ }
+
+- VLOG(1) << "Loaded user histroy, size=" << history.entries_size();
++ VLOG(1) << "Loaded user histroy, size=" << history.user_history_base.entries_size();
+
+ return true;
+ }
+@@ -521,13 +521,13 @@
+
+ UserHistoryStorage history(filename);
+ for (const DicElement *elm = tail; elm != nullptr; elm = elm->prev) {
+- history.add_entries()->CopyFrom(elm->value);
++ history.user_history_base.add_entries()->CopyFrom(elm->value);
+ }
+
+ // Updates usage stats here.
+ UsageStats::SetInteger(
+ "UserHistoryPredictorEntrySize",
+- static_cast<int>(history.entries_size()));
++ static_cast<int>(history.user_history_base.entries_size()));
+
+ if (!history.Save()) {
+ LOG(ERROR) << "UserHistoryStorage::Save() failed";
+--- /src/prediction/user_history_predictor.h
++++ /src/prediction/user_history_predictor.h
+@@ -61,11 +61,15 @@
+ class UserHistoryPredictorSyncer;
+
+ // Added serialization method for UserHistory.
+-class UserHistoryStorage : public mozc::user_history_predictor::UserHistory {
++class UserHistoryStorage {
+ public:
+ explicit UserHistoryStorage(const string &filename);
+ ~UserHistoryStorage();
+
++ // Instance of base class generated by Protocol Buffers compiler.
++ // Regular inheritance strongly discouraged.
++ mozc::user_history_predictor::UserHistory user_history_base;
++
+ // Loads from encrypted file.
+ bool Load();
+
+--- /src/prediction/user_history_predictor_test.cc
++++ /src/prediction/user_history_predictor_test.cc
+@@ -2222,7 +2222,7 @@
+
+ UserHistoryStorage storage1(filename);
+
+- UserHistoryPredictor::Entry *entry = storage1.add_entries();
++ UserHistoryPredictor::Entry *entry = storage1.user_history_base.add_entries();
+ CHECK(entry);
+ entry->set_key("key");
+ entry->set_key("value");
+@@ -2230,7 +2230,7 @@
+ UserHistoryStorage storage2(filename);
+ storage2.Load();
+
+- EXPECT_EQ(storage1.DebugString(), storage2.DebugString());
++ EXPECT_EQ(storage1.user_history_base.DebugString(), storage2.user_history_base.DebugString());
+ FileUtil::Unlink(filename);
+ }
+
+--- /src/rewriter/usage_rewriter_test.cc
++++ /src/rewriter/usage_rewriter_test.cc
+@@ -312,7 +312,7 @@
+ // Load mock data
+ {
+ UserDictionaryStorage storage("");
+- UserDictionaryStorage::UserDictionary *dic = storage.add_dictionaries();
++ UserDictionaryStorage::UserDictionary *dic = storage.user_dictionary_storage_base.add_dictionaries();
+
+ UserDictionaryStorage::UserDictionaryEntry *entry = dic->add_entries();
+ entry->set_key("うま");
+@@ -320,7 +320,7 @@
+ entry->set_pos(user_dictionary::UserDictionary::NOUN);
+ entry->set_comment("アルパカコメント");
+
+- user_dictionary_->Load(storage);
++ user_dictionary_->Load(storage.user_dictionary_storage_base);
+ }
+
+ // Emulates the conversion of key="うま".
diff --git a/app-i18n/mozc/mozc-2.23.2815.102.ebuild b/app-i18n/mozc/mozc-2.23.2815.102.ebuild
index 21a1291f1ea5..d4572c6e9708 100644
--- a/app-i18n/mozc/mozc-2.23.2815.102.ebuild
+++ b/app-i18n/mozc/mozc-2.23.2815.102.ebuild
@@ -106,6 +106,7 @@ src_unpack() {
src_prepare() {
eapply -p2 "${FILESDIR}/${PN}-2.23.2815.102-system_libraries.patch"
eapply -p2 "${FILESDIR}/${PN}-2.23.2815.102-gcc-8.patch"
+ eapply -p2 "${FILESDIR}/${PN}-2.23.2815.102-protobuf_generated_classes_no_inheritance.patch"
eapply -p2 "${FILESDIR}/${PN}-2.20.2673.102-tests_build.patch"
eapply -p2 "${FILESDIR}/${PN}-2.20.2673.102-tests_skipping.patch"
diff --git a/app-i18n/mozc/mozc-9999.ebuild b/app-i18n/mozc/mozc-9999.ebuild
index 7876d9ed3783..144d03b4d78f 100644
--- a/app-i18n/mozc/mozc-9999.ebuild
+++ b/app-i18n/mozc/mozc-9999.ebuild
@@ -106,6 +106,7 @@ src_unpack() {
src_prepare() {
eapply -p2 "${FILESDIR}/${PN}-2.23.2815.102-system_libraries.patch"
eapply -p2 "${FILESDIR}/${PN}-2.23.2815.102-gcc-8.patch"
+ eapply -p2 "${FILESDIR}/${PN}-2.23.2815.102-protobuf_generated_classes_no_inheritance.patch"
eapply -p2 "${FILESDIR}/${PN}-2.20.2673.102-tests_build.patch"
eapply -p2 "${FILESDIR}/${PN}-2.20.2673.102-tests_skipping.patch"