Solaris114のソース

#freeze
[[Solarisのページに戻る>Solaris]]

目次
#contentsx

------
** Solaris 11.4 上で、KKC 日本語入力エンジンを build する方法 : [#k67fe3d5]

参考記事 [[How To build an Input Method Engine for Oracle Solaris 11.4>https://blogs.oracle.com/solaris/how-to-build-an-input-method-engine-for-oracle-solaris-114]]

***準備 [#b9f3b10d]
build 中はインターネットへの接続が必要になります。
まず、build に必要なパッケージを追加でインストールします :
  $ sudo pkg exact-install developer/opensolaris/userland system/input-method/ibus group/system/solaris-desktop
追加パッケージのインストールには、けっこう時間がかかります。
  $ sudo reboot
リブート後は開発環境の BEで起動されています。 
Build 用に gate というディレクトリー名の workspaceのクローンを作成します :
  $ git clone https://github.com/oracle/solaris-userland gate

  Cloning into 'gate'...
  remote: Enumerating objects: 533, done.
  remote: Counting objects: 100% (533/533), done.
  remote: Compressing objects: 100% (313/313), done.
  remote: Total 88110 (delta 267), reused 367 (delta 203), pack-reused 87577
  Receiving objects: 100% (88110/88110), 131.52 MiB | 8.69 MiB/s, done.
  Resolving deltas: 100% (32628/32628), done.
現在の IPS publisher の設定を CANONICAL_REPO 環境変数として設定しておきます :
  # pkg publisher
  PUBLISHER                   TYPE     STATUS P LOCATION
  solaris                     origin   online F http://pkg.oracle.com/solaris/release/

  $ export CANONICAL_REPO=http://pkg.oracle.com/solaris/release/
internal Userland archive mirror は使用しない設定にします :
  $ export INTERNAL_ARCHIVE_MIRROR=''
Build の準備のために他のいくつかの環境変数も以下のとおり設定します :
  $ export COMPILER=gcc
  $ export PUBLISHER=example
  $ export OS_VERSION=11
build するコードをcheckout します :
  $ cd gate
  $ git checkout 8b36ec131eb42a65b0f42fc0d0d71b49cfb3adf3

  Note: checking out '8b36ec131eb42a65b0f42fc0d0d71b49cfb3adf3'.
  
  You are in 'detached HEAD' state. You can look around, make experimental
  changes and commit them, and you can discard any commits you make in this
  state without impacting any branches by performing another checkout.
  
  If you want to create a new branch to retain commits you create, you may
  do so (now or later) by using -b with the checkout command again. Example:
  
    git checkout -b <new-branch-name>
  
  HEAD is now at 8b36ec131... 28068078 Userland repo doesn't work well outside Oracle
※ git checkout で上記のワーニングが出力されますが、これは無視してかまいません

セットアップを実行します :  この作業 30分〜45分ほどかかります。
  $ gmake setup

  setup components
  gmake[1]: Entering directory '/export/home/admin/gate/components'
  /bin/mkdir -p /export/home/admin/gate/i386
  Generating component list...
  Generating component dependencies...
  Generating component list...
  Generating component dependencies...
  /bin/mkdir -p /export/home/admin/gate/i386/logs
  /bin/mkdir -p /export/home/admin/gate/i386/home
  /usr/bin/pkgrepo create file:/export/home/admin/gate/i386/repo
  /usr/bin/pkgrepo add-publisher -s file:/export/home/admin/gate/i386/repo example
  /usr/bin/pkgrepo add-publisher -s file:/export/home/admin/gate/i386/repo userland-localizable
  /usr/bin/pkgrepo create file:/export/home/admin/gate/i386/repo.experimental
  /usr/bin/pkgrepo add-publisher -s file:/export/home/admin/gate/i386/repo.experimental example
  /usr/bin/pkgrepo add-publisher -s file:/export/home/admin/gate/i386/repo.experimental userland-localizable
  building tools...
  /usr/gnu/bin/make -C ../tools clean
  make[2]: Entering directory '/export/home/admin/gate/tools'
  make[2]: Leaving directory '/export/home/admin/gate/tools'
  /usr/gnu/bin/make -C ../tools setup
  make[2]: Entering directory '/export/home/admin/gate/tools'
  make[2]: Leaving directory '/export/home/admin/gate/tools'
  Generating pkglint(1) cache from CANONICAL_REPO http://pkg.oracle.com/solaris/release/...
  gmake[1]: Leaving directory '/export/home/admin/gate/components'
Build の途中で、build した package を build システムにインストールする必要があります :
build package 用の example という名前の publisher を追加しておきます :
  $ sudo pkg set-publisher -g `uname -p`/repo example

  $ pkg publisher
  PUBLISHER                   TYPE     STATUS P LOCATION
  solaris                     origin   online F http://pkg.oracle.com/solaris/release/
  example                     origin   online F file:///export/home/admin/gate/i386/repo/
*** marisa コンポーネントの build [#k773e7aa]
KKC には依存するいくつかのコンポーネントがあります
まず最初が "marisa" で、これ用の folder を作成します :
  $ mkdir components/marisa
  $ cd components/marisa
Makefile.marisa を以下の内容で作成します :
  $ vi Makefile.marisa

 #
 # Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
 #
 BUILD_BITS= 64_and_32
 COMPILER= gcc
 include ../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=         marisa
 COMPONENT_VERSION=      0.2.4
 COMPONENT_PROJECT_URL=  https://github.com/s-yata/marisa-trie
 COMPONENT_ARCHIVE_HASH= \
     sha256:67a7a4f70d3cc7b0a85eb08f10bc3eaf6763419f0c031f278c1f919121729fb3
 COMPONENT_ARCHIVE_URL=  https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/marisa-trie/marisa-0.2.4.tar.gz
 
 TPNO=                   26209
 
 REQUIRED_PACKAGES += system/library/gcc/gcc-c-runtime
 REQUIRED_PACKAGES += system/library/gcc/gcc-c++-runtime
 REQUIRED_PACKAGES += system/library/math
 
 TEST_TARGET= $(NO_TESTS)
 
 COMPONENT_POST_INSTALL_ACTION += \
         cd $(SOURCE_DIR)/bindings/python; \
  
       CC=$(CC) CXX=$(CXX) CFLAGS="$(CFLAGS) -I$(SOURCE_DIR)/lib" LDFLAGS=-L$(PROTO_DIR)$(USRLIB) $(PYTHON) setup.py install --install-lib $(PROTO_DIR)/$(PYTHON_LIB);
 # to avoid libtool breaking build of libkkc
 COMPONENT_POST_INSTALL_ACTION += rm -f $(PROTO_DIR)$(USRLIB)/libmarisa.la;
 
 include $(WS_MAKE_RULES)/common.mk
作成もしくはダウンロードした Makefile.marisa を Makefile に copy します :
  $ cp Makefile.marisa Makefile
ほとんどの build プロセスは、Userland workspace で共有されているマクロで定義されています、
marisa の build もこの一環で、gmake install で build できます :
  $ gmake install
marisa の copyright ファイルを Oracle package 様式のファイル名でコピーします :
  $ cat marisa-0.2.4/COPYING > marisa.copyright
marisa.p5m というファイル名で、以下の内容の package マニフェストを作成します :
  $ vi marisa.p5m

 #
 # Copyright (c) 2015, 2018, Oracle and/or its affiliates. All rights reserved.
 #
 
 <transform file path=usr.*/man/.+ -> default mangler.man.stability uncommitted>
 set name=pkg.fmri \
     value=pkg:/example/system/input-method/library/marisa@$(BUILD_VERSION)
 set name=pkg.summary value="Marisa library"
 set name=pkg.description \
     value="Marisa - Matching Algorithm with Recursively Implemented StorAge library"
 set name=com.oracle.info.description \
     value="Marisa - Matching Algorithm with Recursively Implemented StorAge library"
 set name=info.classification \
     value=org.opensolaris.category.2008:System/Internationalization
 set name=info.source-url \
     value=https://storage.googleapis.com/google-code-archive-downloads/v2/code.google.com/marisa-trie/marisa-0.2.4.tar.gz
 set name=info.upstream-url value=https://github.com/s-yata/marisa-trie
 set name=org.opensolaris.arc-caseid value=PSARC/2009/499
 set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
 file path=usr/bin/marisa-benchmark
 file path=usr/bin/marisa-build
 file path=usr/bin/marisa-common-prefix-search
 file path=usr/bin/marisa-dump
 file path=usr/bin/marisa-lookup
 file path=usr/bin/marisa-predictive-search
 file path=usr/bin/marisa-reverse-lookup
 file path=usr/include/marisa.h
 file path=usr/include/marisa/agent.h
 file path=usr/include/marisa/base.h
 file path=usr/include/marisa/exception.h
 file path=usr/include/marisa/iostream.h
 file path=usr/include/marisa/key.h
 file path=usr/include/marisa/keyset.h
 file path=usr/include/marisa/query.h
 file path=usr/include/marisa/scoped-array.h
 file path=usr/include/marisa/scoped-ptr.h
 file path=usr/include/marisa/stdio.h
 file path=usr/include/marisa/trie.h
 link path=usr/lib/$(MACH64)/libmarisa.so target=libmarisa.so.0.0.0
 link path=usr/lib/$(MACH64)/libmarisa.so.0 target=libmarisa.so.0.0.0
 file path=usr/lib/$(MACH64)/libmarisa.so.0.0.0
 file path=usr/lib/$(MACH64)/pkgconfig/marisa.pc
 link path=usr/lib/libmarisa.so target=libmarisa.so.0.0.0
 link path=usr/lib/libmarisa.so.0 target=libmarisa.so.0.0.0
 file path=usr/lib/libmarisa.so.0.0.0
 file path=usr/lib/pkgconfig/marisa.pc
 file path=usr/lib/python2.7/vendor-packages/64/_marisa.so
 file path=usr/lib/python2.7/vendor-packages/_marisa.so
 file path=usr/lib/python2.7/vendor-packages/marisa-0.0.0-py2.7.egg-info
 file path=usr/lib/python2.7/vendor-packages/marisa.py
 license marisa.copyright license="marisa, LGPLv2.1"
marisa IPS package を build します :
  $ gmake publish
作成された marisa パッケージは、他のパッケージを build するために build システムに install する
必要があります :
  $ sudo pkg install marisa

  Password: 
             Packages to install:  1
         Create boot environment: No
  Create backup boot environment: No
  
  DOWNLOAD                                PKGS         FILES    XFER (MB)   SPEED
  Completed                                1/1         29/29      0.3/0.3      --
  
  PHASE                                          ITEMS
  Installing new actions                         51/51
  Updating package state database                 Done 
  Updating package cache                           0/0 
  Updating image state                            Done 
  Creating fast lookup database                   Done 
  Updating package cache                           2/2 

  $ pkg list -af marisa
  NAME (PUBLISHER)                                  VERSION                    IFO
  example/system/input-method/library/marisa (example) 5.11-11.5.0.0.0.22.0       i--
  system/input-method/library/marisa                11.4-11.4.0.0.0.12.6       --o
component ディレクトリーに戻ります :
  $ cd ..
*** libkkc の build [#a5553f06]
次のステップは KKC ライブラリ(libkkc)を build します :
  $ mkdir libkkc
  $ cd libkkc  
Makefile.libkkc を以下の内容で作成します :
  $ vi Makefile.libkkc

 #
 # Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
 #
 BUILD_BITS= 64_and_32
 COMPILER= gcc
 include ../../make-rules/shared-macros.mk
 
 COMPONENT_NAME= libkkc
 COMPONENT_VERSION= 0.3.5
 COMPONENT_PROJECT_URL= https://github.com/ueno/libkkc
 COMPONENT_ARCHIVE= $(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH= \
     sha256:89b07b042dae5726d306aaa1296d1695cb75c4516f4b4879bc3781fe52f62aef
 COMPONENT_ARCHIVE_URL= $(COMPONENT_PROJECT_URL)/releases/download/v$(COMPONENT_VERSION)/$(COMPONENT_ARCHIVE)
 TPNO=                   26171
 
 TEST_TARGET= $(NO_TESTS)
 
 REQUIRED_PACKAGES += example/system/input-method/library/marisa
 REQUIRED_PACKAGES += library/glib2
 REQUIRED_PACKAGES += library/json-glib
 REQUIRED_PACKAGES += library/desktop/libgee
 REQUIRED_PACKAGES += system/library/gcc/gcc-c-runtime
 
 export LD_LIBRARY_PATH=$(COMPONENT_DIR)/../marisa/build/prototype/$(MACH)$(USRLIB)
 export PYTHONPATH=$(COMPONENT_DIR)/../marisa/build/prototype/$(MACH)$(PYTHON_LIB)
 CPPFLAGS += -I$(COMPONENT_DIR)/../marisa/build/prototype/$(MACH)/usr/include
 LDFLAGS += -L$(COMPONENT_DIR)/../marisa/build/prototype/$(MACH)$(USRLIB)
 
 # for gsed - metadata
 PATH=$(GNUBIN):$(USRBINDIR)
 
 include $(WS_MAKE_RULES)/common.mk
 
 # some of this is likely unnecessary
 CONFIGURE_OPTIONS += --enable-introspection=no
 PKG_CONFIG_PATHS += $(COMPONENT_DIR)/../marisa/build/$(MACH$(BITS))
 # to avoid libtool breaking build of ibus-kkc
 COMPONENT_POST_INSTALL_ACTION = rm -f $(PROTO_DIR)$(USRLIB)/libkkc.la
 
 # to rebuild configure for libtool fix and fix building json files
 COMPONENT_PREP_ACTION = \
         (cd $(@D) ; $(AUTORECONF) -m --force -v; gsed -i 's@test -f ./$$<@test -f $$<@' data/rules/rule.mk)
Makefile にコピーします。
  $ cp Makefile.libkkc Makefile
KKC ライブラリー(libkkc)を build します :
  $ gmake install
copyright ファイルを用意します :
  $ cat libkkc-0.3.5/COPYING > libkkc.copyright
libkkc.p5m というファイル名で、以下の内容の package マニフェストを作成します :
  $vi libkkc.p5m

 #
 # Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
 #
 
 <transform file path=usr.*/man/.+ -> default mangler.man.stability volatile>
 set name=pkg.fmri \
     value=pkg:/example/system/input-method/library/libkkc@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
 set name=pkg.summary value="libkkc - Kana Kanji input library"
 set name=pkg.description \
     value="libkkc - Japanese Kana Kanji conversion input method library"
 set name=com.oracle.info.description value="libkkc - Kana Kanji input library"
 set name=info.classification \
     value=org.opensolaris.category.2008:System/Internationalization
 set name=info.source-url \
     value=https://github.com/ueno/libkkc/releases/download/v0.3.5/libkkc-0.3.5.tar.gz
 set name=info.upstream-url value=https://github.com/ueno/libkkc
 set name=org.opensolaris.arc-caseid value=PSARC/2009/499
 set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
 file path=usr/bin/kkc
 file path=usr/bin/kkc-package-data
 dir  path=usr/include/libkkc
 file path=usr/include/libkkc/libkkc.h
 dir  path=usr/lib/$(MACH64)/libkkc
 link path=usr/lib/$(MACH64)/libkkc.so target=libkkc.so.2.0.0
 link path=usr/lib/$(MACH64)/libkkc.so.2 target=libkkc.so.2.0.0
 file path=usr/lib/$(MACH64)/libkkc.so.2.0.0
 file path=usr/lib/$(MACH64)/pkgconfig/kkc-1.0.pc
 dir  path=usr/lib/libkkc
 link path=usr/lib/libkkc.so target=libkkc.so.2.0.0
 link path=usr/lib/libkkc.so.2 target=libkkc.so.2.0.0
 file path=usr/lib/libkkc.so.2.0.0
 file path=usr/lib/pkgconfig/kkc-1.0.pc
 dir  path=usr/share/libkkc
 dir  path=usr/share/libkkc/rules
 dir  path=usr/share/libkkc/rules/act
 dir  path=usr/share/libkkc/rules/act/keymap
 file path=usr/share/libkkc/rules/act/keymap/default.json
 file path=usr/share/libkkc/rules/act/keymap/hankaku-katakana.json
 file path=usr/share/libkkc/rules/act/keymap/hiragana.json
 file path=usr/share/libkkc/rules/act/keymap/katakana.json
 file path=usr/share/libkkc/rules/act/keymap/latin.json
 file path=usr/share/libkkc/rules/act/keymap/wide-latin.json
 file path=usr/share/libkkc/rules/act/metadata.json
 dir  path=usr/share/libkkc/rules/act/rom-kana
 file path=usr/share/libkkc/rules/act/rom-kana/default.json
 dir  path=usr/share/libkkc/rules/azik
 dir  path=usr/share/libkkc/rules/azik-jp106
 dir  path=usr/share/libkkc/rules/azik-jp106/keymap
 file path=usr/share/libkkc/rules/azik-jp106/keymap/default.json
 file path=usr/share/libkkc/rules/azik-jp106/keymap/hankaku-katakana.json
 file path=usr/share/libkkc/rules/azik-jp106/keymap/hiragana.json
 file path=usr/share/libkkc/rules/azik-jp106/keymap/katakana.json
 file path=usr/share/libkkc/rules/azik-jp106/keymap/latin.json
 file path=usr/share/libkkc/rules/azik-jp106/keymap/wide-latin.json
 file path=usr/share/libkkc/rules/azik-jp106/metadata.json
 dir  path=usr/share/libkkc/rules/azik-jp106/rom-kana
 file path=usr/share/libkkc/rules/azik-jp106/rom-kana/default.json
 dir  path=usr/share/libkkc/rules/azik/keymap
 file path=usr/share/libkkc/rules/azik/keymap/default.json
 file path=usr/share/libkkc/rules/azik/keymap/hankaku-katakana.json
 file path=usr/share/libkkc/rules/azik/keymap/hiragana.json
 file path=usr/share/libkkc/rules/azik/keymap/katakana.json
 file path=usr/share/libkkc/rules/azik/keymap/latin.json
 file path=usr/share/libkkc/rules/azik/keymap/wide-latin.json
 file path=usr/share/libkkc/rules/azik/metadata.json
 dir  path=usr/share/libkkc/rules/azik/rom-kana
 file path=usr/share/libkkc/rules/azik/rom-kana/default.json
 dir  path=usr/share/libkkc/rules/default
 dir  path=usr/share/libkkc/rules/default/keymap
 file path=usr/share/libkkc/rules/default/keymap/default.json
 file path=usr/share/libkkc/rules/default/keymap/direct.json
 file path=usr/share/libkkc/rules/default/keymap/hankaku-katakana.json
 file path=usr/share/libkkc/rules/default/keymap/hiragana.json
 file path=usr/share/libkkc/rules/default/keymap/katakana.json
 file path=usr/share/libkkc/rules/default/keymap/latin.json
 file path=usr/share/libkkc/rules/default/keymap/wide-latin.json
 file path=usr/share/libkkc/rules/default/metadata.json
 dir  path=usr/share/libkkc/rules/default/rom-kana
 file path=usr/share/libkkc/rules/default/rom-kana/default.json
 dir  path=usr/share/libkkc/rules/kana
 dir  path=usr/share/libkkc/rules/kana/keymap
 file path=usr/share/libkkc/rules/kana/keymap/default.json
 file path=usr/share/libkkc/rules/kana/keymap/direct.json
 file path=usr/share/libkkc/rules/kana/keymap/hankaku-katakana.json
 file path=usr/share/libkkc/rules/kana/keymap/hiragana.json
 file path=usr/share/libkkc/rules/kana/keymap/katakana.json
 file path=usr/share/libkkc/rules/kana/keymap/latin.json
 file path=usr/share/libkkc/rules/kana/keymap/wide-latin.json
 file path=usr/share/libkkc/rules/kana/metadata.json
 dir  path=usr/share/libkkc/rules/kana/rom-kana
 file path=usr/share/libkkc/rules/kana/rom-kana/default.json
 dir  path=usr/share/libkkc/rules/kzik
 dir  path=usr/share/libkkc/rules/kzik/keymap
 file path=usr/share/libkkc/rules/kzik/keymap/default.json
 file path=usr/share/libkkc/rules/kzik/keymap/hankaku-katakana.json
 file path=usr/share/libkkc/rules/kzik/keymap/hiragana.json
 file path=usr/share/libkkc/rules/kzik/keymap/katakana.json
 file path=usr/share/libkkc/rules/kzik/keymap/latin.json
 file path=usr/share/libkkc/rules/kzik/keymap/wide-latin.json
 file path=usr/share/libkkc/rules/kzik/metadata.json
 dir  path=usr/share/libkkc/rules/kzik/rom-kana
 file path=usr/share/libkkc/rules/kzik/rom-kana/default.json
 dir  path=usr/share/libkkc/rules/nicola
 dir  path=usr/share/libkkc/rules/nicola/keymap
 file path=usr/share/libkkc/rules/nicola/keymap/default.json
 file path=usr/share/libkkc/rules/nicola/keymap/direct.json
 file path=usr/share/libkkc/rules/nicola/keymap/hankaku-katakana.json
 file path=usr/share/libkkc/rules/nicola/keymap/hiragana.json
 file path=usr/share/libkkc/rules/nicola/keymap/katakana.json
 file path=usr/share/libkkc/rules/nicola/keymap/latin.json
 file path=usr/share/libkkc/rules/nicola/keymap/wide-latin.json
 file path=usr/share/libkkc/rules/nicola/metadata.json
 dir  path=usr/share/libkkc/rules/nicola/rom-kana
 file path=usr/share/libkkc/rules/nicola/rom-kana/default.json
 dir  path=usr/share/libkkc/rules/tcode
 dir  path=usr/share/libkkc/rules/tcode/keymap
 file path=usr/share/libkkc/rules/tcode/keymap/hankaku-katakana.json
 file path=usr/share/libkkc/rules/tcode/keymap/hiragana.json
 file path=usr/share/libkkc/rules/tcode/keymap/katakana.json
 file path=usr/share/libkkc/rules/tcode/keymap/latin.json
 file path=usr/share/libkkc/rules/tcode/keymap/wide-latin.json
 file path=usr/share/libkkc/rules/tcode/metadata.json
 dir  path=usr/share/libkkc/rules/tcode/rom-kana
 file path=usr/share/libkkc/rules/tcode/rom-kana/default.json
 dir  path=usr/share/libkkc/rules/trycode
 dir  path=usr/share/libkkc/rules/trycode/keymap
 file path=usr/share/libkkc/rules/trycode/keymap/hankaku-katakana.json
 file path=usr/share/libkkc/rules/trycode/keymap/hiragana.json
 file path=usr/share/libkkc/rules/trycode/keymap/katakana.json
 file path=usr/share/libkkc/rules/trycode/keymap/latin.json
 file path=usr/share/libkkc/rules/trycode/keymap/wide-latin.json
 file path=usr/share/libkkc/rules/trycode/metadata.json
 dir  path=usr/share/libkkc/rules/trycode/rom-kana
 file path=usr/share/libkkc/rules/trycode/rom-kana/default.json
 dir  path=usr/share/libkkc/rules/tutcode
 dir  path=usr/share/libkkc/rules/tutcode-touch16x
 dir  path=usr/share/libkkc/rules/tutcode-touch16x/keymap
 file path=usr/share/libkkc/rules/tutcode-touch16x/keymap/hankaku-katakana.json
 file path=usr/share/libkkc/rules/tutcode-touch16x/keymap/hiragana.json
 file path=usr/share/libkkc/rules/tutcode-touch16x/keymap/katakana.json
 file path=usr/share/libkkc/rules/tutcode-touch16x/keymap/latin.json
 file path=usr/share/libkkc/rules/tutcode-touch16x/keymap/wide-latin.json
 file path=usr/share/libkkc/rules/tutcode-touch16x/metadata.json
 dir  path=usr/share/libkkc/rules/tutcode-touch16x/rom-kana
 file path=usr/share/libkkc/rules/tutcode-touch16x/rom-kana/default.json
 dir  path=usr/share/libkkc/rules/tutcode/keymap
 file path=usr/share/libkkc/rules/tutcode/keymap/hankaku-katakana.json
 file path=usr/share/libkkc/rules/tutcode/keymap/hiragana.json
 file path=usr/share/libkkc/rules/tutcode/keymap/katakana.json
 file path=usr/share/libkkc/rules/tutcode/keymap/latin.json
 file path=usr/share/libkkc/rules/tutcode/keymap/wide-latin.json
 file path=usr/share/libkkc/rules/tutcode/metadata.json
 dir  path=usr/share/libkkc/rules/tutcode/rom-kana
 file path=usr/share/libkkc/rules/tutcode/rom-kana/default.json
 dir  path=usr/share/libkkc/templates
 dir  path=usr/share/libkkc/templates/libkkc-data
 file path=usr/share/libkkc/templates/libkkc-data/Makefile.am
 file path=usr/share/libkkc/templates/libkkc-data/configure.ac.in
 dir  path=usr/share/libkkc/templates/libkkc-data/data
 file path=usr/share/libkkc/templates/libkkc-data/data/Makefile.am
 dir  path=usr/share/libkkc/templates/libkkc-data/data/models
 file path=usr/share/libkkc/templates/libkkc-data/data/models/Makefile.sorted2
 file path=usr/share/libkkc/templates/libkkc-data/data/models/Makefile.sorted3
 dir  path=usr/share/libkkc/templates/libkkc-data/data/models/sorted2
 file path=usr/share/libkkc/templates/libkkc-data/data/models/sorted2/metadata.json
 dir  path=usr/share/libkkc/templates/libkkc-data/data/models/sorted3
 file path=usr/share/libkkc/templates/libkkc-data/data/models/sorted3/metadata.json
 dir  path=usr/share/libkkc/templates/libkkc-data/data/models/text2
 file path=usr/share/libkkc/templates/libkkc-data/data/models/text2/metadata.json
 dir  path=usr/share/libkkc/templates/libkkc-data/data/models/text3
 file path=usr/share/libkkc/templates/libkkc-data/data/models/text3/metadata.json
 dir  path=usr/share/libkkc/templates/libkkc-data/tools
 file path=usr/share/libkkc/templates/libkkc-data/tools/Makefile.am
 file path=usr/share/libkkc/templates/libkkc-data/tools/genfilter.py
 file path=usr/share/libkkc/templates/libkkc-data/tools/sortlm.py
 file path=usr/share/locale/ja/LC_MESSAGES/libkkc.mo
 file path=usr/share/vala/vapi/kkc-1.0.deps
 file path=usr/share/vala/vapi/kkc-1.0.vapi
 license libkkc.copyright license="libkkc, GPLmix" \
     com.oracle.info.description="libkkc - Kana Kanji input library" \
     com.oracle.info.name=pci.ids com.oracle.info.tpno=26171 \
     com.oracle.info.version=0.3.5
libkkc IPS パッケージを build します :
  $ gmake publish

依存性の解決のため libkkc パッケージも build システムにインストールします :
  $ sudo pkg install libkkc

  Password: 
             Packages to install:  1
         Create boot environment: No
  Create backup boot environment: No
  
  DOWNLOAD                                PKGS         FILES    XFER (MB)   SPEED
  Completed                                1/1       110/110      0.5/0.5      --
  
  PHASE                                          ITEMS
  Installing new actions                       182/182
  Updating package state database                 Done 
  Updating package cache                           0/0 
  Updating image state                            Done 
  Creating fast lookup database                   Done 
  Updating package cache                           2/2 

  $ pkg list -af libkkc
  NAME (PUBLISHER)                                  VERSION                    IFO
  example/system/input-method/library/libkkc (example) 0.3.5-11.5.0.0.0.22.0      i--
  system/input-method/library/libkkc                11.4-11.4.0.0.0.12.6       --o

component ディレクトリーに戻ります :
  $ cd ..
*** libkkc-data の build [#x3196473]
次は libkkc-data を build します :
  $ mkdir libkkc-data
  $ cd libkkc-data
Makefile.libkkc-data を以下の内容で作成します :
  $ vi Makefile.libkkc-data

 #
 # Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
 #
 BUILD_BITS= 64_and_32
 COMPILER= gcc
 include ../../make-rules/shared-macros.mk
 
 COMPONENT_NAME=         libkkc-data
 COMPONENT_VERSION= 0.2.7
 COMPONENT_PROJECT_URL= https://github.com/ueno/libkkc
 COMPONENT_ARCHIVE= $(COMPONENT_SRC).tar.xz
 COMPONENT_ARCHIVE_HASH= \
     sha256:9e678755a030043da68e37a4049aa296c296869ff1fb9e6c70026b2541595b99
 COMPONENT_ARCHIVE_URL= https://github.com/ueno/libkkc/releases/download/v0.3.5/$(COMPONENT_ARCHIVE)
 TPNO=           26171
 
 TEST_TARGET= $(NO_TESTS)
 
 export LD_LIBRARY_PATH=$(COMPONENT_DIR)/../marisa/build/prototype/$(MACH)/$(USRLIB)
 export PYTHONPATH=$(COMPONENT_DIR)/../marisa/build/prototype/$(MACH)$(PYTHON_LIB)
 
 include $(WS_MAKE_RULES)/common.mk
 
 
 CONFIGURE_ENV += MARISA_CFLAGS="-I$(COMPONENT_DIR)/../marisa/build/prototype/$(MACH)/usr/include"
 CONFIGURE_ENV += MARISA_LIBS="-L$(COMPONENT_DIR)/../marisa/build/prototype/$(MACH)$(USRLIB) -lmarisa"
Makefile にコピーします :
  $ cp Makefile.libkkc-data Makefile
libkkc-data の build (この build は少し時間がかかります)  :
  $ gmake install
copyright ファイルを用意します :
  $ cat libkkc-data-0.2.7/COPYING > libkkc-data.copyright
libkkc-data.p5m というファイル名で、以下の内容の package マニフェストを作成します :
  $ vi libkkc-data.p5m

 #
 # Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
 #
 
 <transform file path=usr.*/man/.+ -> default mangler.man.stability volatile>
 set name=pkg.fmri \
     value=pkg:/example/system/input-method/library/libkkc-data@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
 set name=pkg.summary value="libkkc-data - Kana Kanji input library data"
 set name=pkg.description \
     value="libkkc-data - data for Japanese Kana Kanji conversion input method library"
 set name=com.oracle.info.description \
     value="libkkc-data - Kana Kanji input library data"
 set name=info.classification \
     value=org.opensolaris.category.2008:System/Internationalization
 set name=info.source-url \
     value=https://bitbucket.org/libkkc/libkkc-data/downloads/libkkc-data-0.2.7.tar.xz
 set name=info.upstream-url value=https://bitbucket.org/libkkc/libkkc-data
 set name=org.opensolaris.arc-caseid value=PSARC/2009/499
 set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
 dir  path=usr/lib/$(MACH64)/libkkc/models
 dir  path=usr/lib/$(MACH64)/libkkc/models/sorted3
 file path=usr/lib/$(MACH64)/libkkc/models/sorted3/data.1gram
 file path=usr/lib/$(MACH64)/libkkc/models/sorted3/data.1gram.index
 file path=usr/lib/$(MACH64)/libkkc/models/sorted3/data.2gram
 file path=usr/lib/$(MACH64)/libkkc/models/sorted3/data.2gram.filter
 file path=usr/lib/$(MACH64)/libkkc/models/sorted3/data.3gram
 file path=usr/lib/$(MACH64)/libkkc/models/sorted3/data.3gram.filter
 file path=usr/lib/$(MACH64)/libkkc/models/sorted3/data.input
 file path=usr/lib/$(MACH64)/libkkc/models/sorted3/metadata.json
 dir  path=usr/lib/libkkc/models
 dir  path=usr/lib/libkkc/models/sorted3
 file path=usr/lib/libkkc/models/sorted3/data.1gram
 file path=usr/lib/libkkc/models/sorted3/data.1gram.index
 file path=usr/lib/libkkc/models/sorted3/data.2gram
 file path=usr/lib/libkkc/models/sorted3/data.2gram.filter
 file path=usr/lib/libkkc/models/sorted3/data.3gram
 file path=usr/lib/libkkc/models/sorted3/data.3gram.filter
 file path=usr/lib/libkkc/models/sorted3/data.input
 file path=usr/lib/libkkc/models/sorted3/metadata.json
 license libkkc-data.copyright license="libkkc-data, GPLv3" \
     com.oracle.info.description="libkkc - Kana Kanji input library language data" \
     com.oracle.info.name=usb.ids com.oracle.info.tpno=26171 \
     com.oracle.info.version=0.2.7
libkkc-data IPS パッケージの build :
  $ gmake publish
依存性の解決のため libkkc-data パッケージも build システムにインストールします :
  $ sudo pkg install libkkc-data

  Password: 
             Packages to install:  1
         Create boot environment: No
  Create backup boot environment: No
  
  DOWNLOAD                                PKGS         FILES    XFER (MB)   SPEED
  Completed                                1/1         17/17    33.2/33.2      --
  
  PHASE                                          ITEMS
  Installing new actions                         35/35
  Updating package state database                 Done 
  Updating package cache                           0/0 
  Updating image state                            Done 
  Creating fast lookup database                   Done 
  Updating package cache                           2/2 

  $ pkg list -af libkkc-data
  NAME (PUBLISHER)                                  VERSION                    IFO
  example/system/input-method/library/libkkc-data (example) 0.2.7-11.5.0.0.0.22.0      i--
comonent ディレクトリーに戻ります:
  $ cd ..
*** ibus/kkc の build [#m49539cb]
最後に KKC パッケージ(ibus-kkc)を build します :
  $ mkdir ibus-kkc
  $ cd ibus-kkc
Makefile.ibus-kkc を下記の内容で作成します :
  $ vi Makefile.ibus-kkc

 #
 # Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
 #
 BUILD_BITS= 64_and_32
 COMPILER= gcc
 include ../../make-rules/shared-macros.mk
 
 COMPONENT_NAME= ibus-kkc
 COMPONENT_VERSION= 1.5.22
 COMPONENT_PROJECT_URL= https://github.com/ueno/ibus-kkc
 IBUS-KKC_PROJECT_URL= https://github.com/ueno/ibus-kkc
 COMPONENT_ARCHIVE= $(COMPONENT_SRC).tar.gz
 COMPONENT_ARCHIVE_HASH= \
     sha256:22fe2552f08a34a751cef7d1ea3c088e8dc0f0af26fd7bba9cdd27ff132347ce
 COMPONENT_ARCHIVE_URL= $(COMPONENT_PROJECT_URL)/releases/download/v$(COMPONENT_VERSION)/$(COMPONENT_ARCHIVE)
 TPNO=                   31503
 
 TEST_TARGET= $(NO_TESTS)
 
 REQUIRED_PACKAGES += system/input-method/ibus
 REQUIRED_PACKAGES += example/system/input-method/library/libkkc
 REQUIRED_PACKAGES += example/system/input-method/library/libkkc-data
 REQUIRED_PACKAGES += library/desktop/gtk3
 REQUIRED_PACKAGES += library/desktop/libgee
 REQUIRED_PACKAGES += library/json-glib
 REQUIRED_PACKAGES += library/glib2
 
 # for marisa
 REQUIRED_PACKAGES += system/library/gcc/gcc-c-runtime
 REQUIRED_PACKAGES += system/library/gcc/gcc-c++-runtime
 REQUIRED_PACKAGES += system/library/math
 
 CPPFLAGS += -I$(COMPONENT_DIR)/../libkkc/build/prototype/$(MACH)/usr/include
 LDFLAGS += "-L$(COMPONENT_DIR)/../libkkc/build/prototype/$(MACH)$(USRLIB)"
 LDFLAGS += "-L$(COMPONENT_DIR)/../marisa/build/prototype/$(MACH)$(USRLIB)"
 
 include $(WS_MAKE_RULES)/common.mk
 
 CONFIGURE_ENV += PATH=$(GNUBIN):$(USRBINDIR)
 CONFIGURE_OPTIONS +=    --libexecdir=$(USRLIBDIR)/ibus
 #CONFIGURE_OPTIONS +=    --enable-static=no
 PKG_CONFIG_PATHS += $(COMPONENT_DIR)/../libkkc/build/$(MACH$(BITS))/libkkc
 PKG_CONFIG_PATHS += $(COMPONENT_DIR)/../marisa/build/$(MACH$(BITS))
 
 # to rebuild configure for libtool fix
 COMPONENT_PREP_ACTION = \
         (cd $(@D) ; $(AUTORECONF) -m --force -v)
 
 PKG_PROTO_DIRS += $(COMPONENT_DIR)/../marisa/build/prototype/$(MACH)
 PKG_PROTO_DIRS += $(COMPONENT_DIR)/../libkkc/build/prototype/$(MACH)
 PKG_PROTO_DIRS += $(COMPONENT_DIR)/../libkkc-data/build/prototype/$(MACH)
Makefile に copy します :
  $ cp Makefile.ibus-kkc Makefile
ibus/kkc を build します :
  $ gmake install
copyright file を用意します :
  $ cat ibus-kkc-1.5.22/COPYING > ibus-kkc.copyright
ibus-kkc.p5m というファイル名で、以下の内容の package マニフェストを作成します :
  $vi ibus-kkc.p5m

 #
 # Copyright (c) 2018, Oracle and/or its affiliates. All rights reserved.
 #
 
 <transform file path=usr.*/man/.+ -> default mangler.man.stability volatile>
 set name=pkg.fmri \
     value=pkg:/example/system/input-method/ibus/kkc@$(IPS_COMPONENT_VERSION),$(BUILD_VERSION)
 set name=pkg.summary value="IBus Japanese IME - kkc"
 set name=pkg.description value="Japanese Kana Kanji input engine for IBus"
 set name=com.oracle.info.description value="ibus kkc - Kana kanji input engine"
 set name=info.classification \
     value=org.opensolaris.category.2008:System/Internationalization
 set name=info.source-url value=$(COMPONENT_ARCHIVE_URL)
 set name=info.upstream-url value=$(COMPONENT_PROJECT_URL)
 set name=org.opensolaris.arc-caseid value=PSARC/2009/499
 set name=org.opensolaris.consolidation value=$(CONSOLIDATION)
 file path=usr/lib/ibus/ibus-engine-kkc mode=0555
 file path=usr/lib/ibus/ibus-setup-kkc mode=0555
 file path=usr/share/applications/ibus-setup-kkc.desktop
 dir  path=usr/share/ibus-kkc
 dir  path=usr/share/ibus-kkc/icons
 file path=usr/share/ibus-kkc/icons/ibus-kkc.svg
 file path=usr/share/ibus/component/kkc.xml
 file path=usr/share/locale/ja/LC_MESSAGES/ibus-kkc.mo
 license ibus-kkc.copyright license="ibus-kkc, GPLmix"
 depend type=require fmri=example/system/input-method/library/libkkc-data
ibus-kkc IPS パッケージを build します。
  $ gmake publish

ibus/kkc パッケージもインストールして全ての build は終了です :
  $ sudo pkg install ibus/kkc

  Password: 
             Packages to install:  
              Services to change:  1
         Create boot environment: No
  Create backup boot environment: No
  
  DOWNLOAD                                PKGS         FILES    XFER (MB)   SPEED
  Completed                                1/1           7/7      0.1/0.1      --
  
  PHASE                                          ITEMS
  Installing new actions                         31/31
  Updating package state database                 Done 
  Updating package cache                           0/0 
  Updating image state                            Done 
  Creating fast lookup database                   Done 
  Updating package cache                           2/2 

  $ pkg list -af ibus/kkc
  NAME (PUBLISHER)                                  VERSION                    IFO
  example/system/input-method/ibus/kkc (example)    1.5.22-11.5.0.0.0.22.0     i--
  system/input-method/ibus/kkc                      1.5.13-11.4.0.0.0.12.6     --o


*** KKC 日本語入力エンジンの使用方法 : [#s039a63a]

Solaris 11.4 では ibus/kkc はSolaris のレポジトリには存在しないので、今回 build した ibus/kkc パッケージを利用します :
  $ sudo pkg install ibus/kkc
で、KKC が使用可能になります。

KKC が使えるようになるまでの設定は以下の通りです

+ 日本語言語環境のインストールと ja_JP.UTF-8 ロケールで gnome を起動
+ 設定=> 地域と言語 => 入力ソースで "日本語(Kana Kanji)" を追加する
++ ※KKC をインストール後、%%再起動後%%ログアウト・ログイン後に "日本語(Kana Kanji)" が追加できるようになります
+ KKC の Preference で各種設定(もし英語キーボードや Mac 日本語キーボードを使っている場合)
++ シュートカットキーの設定で "Zenkaku Hankaku" を "Ctrl-Space" とかに変更する。"ひらがな入力"と"直接入力"の両方の設定を変えないとトグル操作での切り替えはできないので注意が必要です。
++ 辞書に単語登録するには、例えば "章司" という漢字を表示させて選択し、Alt+R を押して、そのあと "しょうじ" と入力してリターンを押すと登録されます。