diff --git a/.gitignore b/.gitignore index bca8070..d1e5ba5 100644 --- a/.gitignore +++ b/.gitignore @@ -10,3 +10,7 @@ /lm_sc.t3g.arpa-20121025.tar.bz2 /dict.utf8-20130220.tar.bz2 /sunpinyin-20130710.tar.xz +/dict.utf8-20131214.tar.bz2 +/lm_sc.3gm.arpa-20140820.tar.bz2 +/sunpinyin-20160301.tar.xz +/sunpinyin-20190805.tar.xz diff --git a/sources b/sources index 20770d3..bbf146a 100644 --- a/sources +++ b/sources @@ -1,6 +1,3 @@ -31dd2667d9a5cae9d2ecdacf2201ab13 lm_sc.t3g.arpa.tar.bz2 -98b1dc61d3ef3fd4be3c0a9fac410da2 dict.utf8.tar.bz2 -a98ee690754eeaa796a4a540f170b941 sunpinyin-20130224.tar.xz -0586241ca33359ad176c842c90bf563e lm_sc.t3g.arpa-20121025.tar.bz2 -1e95894a4a3d8923e86e7b78c77ac815 dict.utf8-20130220.tar.bz2 -f18f8b81d012bbfeb4a647e01af1635c sunpinyin-20130710.tar.xz +SHA512 (sunpinyin-20190805.tar.xz) = 96105d35d6ba6dee48b46a9ea390809e80cb167983772606099f7bbb37a9cbc7aec1de503c655ab00f8618aebfc7cc8d71e915598de97c98e425eb42c73c60b5 +SHA512 (dict.utf8-20131214.tar.bz2) = adaf52a27c6afdeb950912845f3fcb7a6799f997d50a2892ceecf76ed13e3644407338d734832c2ce4b09bce11fec4731774f1eb2dd4c30bea5490555915bd5b +SHA512 (lm_sc.3gm.arpa-20140820.tar.bz2) = ea3ede62eb993c4d21ca7cf339635f4686493a0cefd57df4a31f00a001e67502a13ff9612ff667b941b82b47de00be9f3c9689677d04195a7ef8716bac087519 diff --git a/sunpinyin-aarch64.patch b/sunpinyin-aarch64.patch deleted file mode 100644 index 0d2eaf8..0000000 --- a/sunpinyin-aarch64.patch +++ /dev/null @@ -1,24 +0,0 @@ -Index: sunpinyin-20130710/SConstruct -=================================================================== ---- sunpinyin-20130710.orig/SConstruct -+++ sunpinyin-20130710/SConstruct -@@ -313,7 +313,8 @@ def AppendEndianCheck(conf): - || defined(_POWER) || defined(__powerpc__) \ - || defined(__ppc__) || defined(__hpux) || defined(__hppa) \ - || defined(_MIPSEB) || defined(_POWER) \ -- || defined(__s390__) || (defined(__sh__) && defined(__BIG_ENDIAN__)) -+ || defined(__s390__) || (defined(__sh__) && defined(__BIG_ENDIAN__)) \ -+ || defined(__AARCH64EB__) - # define WORDS_BIGENDIAN 1 - - #elif defined(__i386__) || defined(__i386) \ -@@ -324,7 +325,8 @@ def AppendEndianCheck(conf): - || defined(__x86_64) || defined(__x86_64__) \ - || defined(_M_X64) || defined(__bfin__) \ - || defined(__alpha__) || defined(__ARMEL__) \ -- || defined(_MIPSEL) || (defined(__sh__) && defined(__LITTLE_ENDIAN__)) -+ || defined(_MIPSEL) || (defined(__sh__) && defined(__LITTLE_ENDIAN__)) \ -+ || defined(__AARCH64EL__) - # undef WORDS_BIGENDIAN - - #else diff --git a/sunpinyin-fixes-scons.patch b/sunpinyin-fixes-scons.patch new file mode 100644 index 0000000..411ec3c --- /dev/null +++ b/sunpinyin-fixes-scons.patch @@ -0,0 +1,34 @@ +Index: sunpinyin-20190805/SConstruct +=================================================================== +--- sunpinyin-20190805.orig/SConstruct ++++ sunpinyin-20190805/SConstruct +@@ -2,6 +2,7 @@ import platform + import os + import sys + ++from functools import reduce + + version = "2.0.4" + abi_major = 3 +@@ -227,7 +228,7 @@ def CreateEnvironment(): + def PassVariables(envvar, env): + for (x, y) in envvar: + if x in os.environ: +- print 'Warning: you\'ve set %s in the environmental variable!' % x ++ print ('Warning: you\'ve set %s in the environmental variable!' % x) + env[y] = os.environ[x] + + env = CreateEnvironment() +Index: sunpinyin-20190805/src/SConscript +=================================================================== +--- sunpinyin-20190805.orig/src/SConscript ++++ sunpinyin-20190805/src/SConscript +@@ -53,7 +53,7 @@ env.Substfile('sunpinyin-dictgen.mk.in', + }) + env.Command('sunpinyin-dictgen', 'sunpinyin-dictgen.mk', [ + Copy("$TARGET", "$SOURCE"), +- Chmod("$TARGET", 0755), ++ Chmod("$TARGET", "0755"), + ]) + + # -*- indent-tabs-mode: nil -*- vim:et:ts=4 diff --git a/sunpinyin-fixes-unistd-compile.patch b/sunpinyin-fixes-unistd-compile.patch deleted file mode 100644 index 76ff682..0000000 --- a/sunpinyin-fixes-unistd-compile.patch +++ /dev/null @@ -1,24 +0,0 @@ -Index: sunpinyin-2.0.3/src/lexicon/genPYT.cpp -=================================================================== ---- sunpinyin-2.0.3.orig/src/lexicon/genPYT.cpp -+++ sunpinyin-2.0.3/src/lexicon/genPYT.cpp -@@ -37,6 +37,7 @@ - - #include - #include -+#include - - #include "pytrie.h" - #include "pytrie_gen.h" -Index: sunpinyin-2.0.3/src/ime-core/ic_history.cpp -=================================================================== ---- sunpinyin-2.0.3.orig/src/ime-core/ic_history.cpp -+++ sunpinyin-2.0.3/src/ime-core/ic_history.cpp -@@ -45,6 +45,7 @@ - #include - #include - #include -+#include - #include - #include "ic_history.h" - diff --git a/sunpinyin-use-python3.patch b/sunpinyin-use-python3.patch new file mode 100644 index 0000000..aaf55a4 --- /dev/null +++ b/sunpinyin-use-python3.patch @@ -0,0 +1,171 @@ +commit d0693ba9f2686ffa46328da129ffef345258fa12 +Author: Peng Wu +Date: Thu Jul 26 15:08:41 2018 +0800 + + Use python3 + +Index: sunpinyin-20190805/SConstruct +=================================================================== +--- sunpinyin-20190805.orig/SConstruct ++++ sunpinyin-20190805/SConstruct +@@ -299,11 +299,11 @@ def CheckPKG(context, name): + + def CheckPython(context): + context.Message('Checking for Python library...') +- ret = context.TryAction('python-config --prefix')[0] ++ ret = context.TryAction('python3-config --prefix')[0] + context.Result(ret) + if ret: +- context.env.MergeFlags(['!python-config --includes', +- '!python-config --libs']) ++ context.env.MergeFlags(['!python3-config --includes', ++ '!python3-config --libs']) + return ret + + +Index: sunpinyin-20190805/python/pinyin_info_gen.py +=================================================================== +--- sunpinyin-20190805.orig/python/pinyin_info_gen.py ++++ sunpinyin-20190805/python/pinyin_info_gen.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/python ++#!/usr/bin/python3 + + # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + # +@@ -38,60 +38,60 @@ + from pinyin_data import * + + def fmt_str_array (name, var) : +- print 'static const char *%s[] = { %s };' % (name, ', '.join ('"%s"' % s for s in var)) ++ print('static const char *%s[] = { %s };' % (name, ', '.join ('"%s"' % s for s in var))) + + def fmt_array_size (name): +- print 'static const unsigned num_%s = sizeof(%s) / sizeof(*%s);' % (name, name, name) ++ print('static const unsigned num_%s = sizeof(%s) / sizeof(*%s);' % (name, name, name)) + + def fmt_str_pair_array (name, var) : +- print 'static const char *%s[] = {' % name ++ print('static const char *%s[] = {' % name) + for s1, s2 in var: +- print ' %-7s %s' % ('"%s",' % s1, '"%s",' % s2) +- print '};' ++ print(' %-7s %s' % ('"%s",' % s1, '"%s",' % s2)) ++ print('};') + + def fmt_pair_array_size (name): +- print 'static const unsigned num_%s = sizeof(%s) / sizeof(*%s) / 2;' % (name, name, name) ++ print('static const unsigned num_%s = sizeof(%s) / sizeof(*%s) / 2;' % (name, name, name)) + + fmt_str_array ('initials', initials) + fmt_array_size ('initials') +-print '' ++print('') + + fmt_str_array('finals', finals) + fmt_array_size ('finals') +-print '' ++print('') + + fmt_str_array('fuzzy_finals', inner_fuzzy_finals) + fmt_array_size ('fuzzy_finals') +-print '' ++print('') + + fmt_str_pair_array ('fuzzy_pairs', fuzzy_pairs) + fmt_pair_array_size ('fuzzy_pairs') +-print '' ++print('') + + fmt_str_pair_array ('auto_correction_pairs', sorted(auto_correction_pairs.items())) + fmt_pair_array_size ('auto_correction_pairs') +-print '' ++print('') + +-print 'static const unsigned fuzzy_finals_map [] = {' ++print('static const unsigned fuzzy_finals_map [] = {') + for s in inner_fuzzy_finals: +- print ' %-7s %-7s %-7s /* %-4s -> %-4s len %d */' % ('0x%02x,' % finals.index(s), '0x%02x,' % valid_syllables[s[1:]], '%d,' % (len(s)-1,), s, s[1:], len(s)-1) +-print '};\n' ++ print(' %-7s %-7s %-7s /* %-4s -> %-4s len %d */' % ('0x%02x,' % finals.index(s), '0x%02x,' % valid_syllables[s[1:]], '%d,' % (len(s)-1,), s, s[1:], len(s)-1)) ++print('};\n') + +-print 'static const TPyTabEntry pinyin_table[] = {' ++print('static const TPyTabEntry pinyin_table[] = {') + for syllable, hex_syllable in sorted(valid_syllables.items()): +- print ' { %-9s %s },' % ('"%s",' % syllable, '0x%05x' % hex_syllable) +-print '};\n' ++ print(' { %-9s %s },' % ('"%s",' % syllable, '0x%05x' % hex_syllable)) ++print('};\n') + +-print 'static const unsigned fuzzy_pre_syllables [] = {' ++print('static const unsigned fuzzy_pre_syllables [] = {') + for s in fuzzy_pre_syllables: +- print ' %-11s %-7s %-11s /* %s */' % ('0x%05x,' % valid_syllables[s[:-1]], "'%s'," % s[-1], '0x%05x,' % valid_syllables[s], s) +-print ' 0x0,' +-print '};\n' ++ print(' %-11s %-7s %-11s /* %s */' % ('0x%05x,' % valid_syllables[s[:-1]], "'%s'," % s[-1], '0x%05x,' % valid_syllables[s], s)) ++print(' 0x0,') ++print('};\n') + +-print 'static const unsigned fuzzy_pro_syllables [] = {' ++print('static const unsigned fuzzy_pro_syllables [] = {') + for s in fuzzy_pro_syllables: +- print ' %-11s %-7s %-11s /* %s */' % ('0x%05x,' % valid_syllables[s], "'%s'," % s[0], '0x%05x,' % valid_syllables[s[1:]], s) +-print ' 0x0,' +-print '};\n' ++ print(' %-11s %-7s %-11s /* %s */' % ('0x%05x,' % valid_syllables[s], "'%s'," % s[0], '0x%05x,' % valid_syllables[s[1:]], s)) ++print(' 0x0,') ++print('};\n') + + # -*- indent-tabs-mode: nil -*- vim:et:ts=4 +Index: sunpinyin-20190805/python/quanpin_trie_gen.py +=================================================================== +--- sunpinyin-20190805.orig/python/quanpin_trie_gen.py ++++ sunpinyin-20190805/python/quanpin_trie_gen.py +@@ -1,4 +1,4 @@ +-#!/usr/bin/python ++#!/usr/bin/python3 + + # DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS HEADER. + # +@@ -42,7 +42,7 @@ import sys + orig_trie = trie.Trie () + pytrie = trie.DATrie () + +-for syllable, hex_syllable in pinyin_data.valid_syllables.items(): ++for syllable, hex_syllable in list(pinyin_data.valid_syllables.items()): + orig_trie.add(syllable[::-1], hex_syllable) + + pytrie.construct_from_trie (orig_trie) +Index: sunpinyin-20190805/python/trie.py +=================================================================== +--- sunpinyin-20190805.orig/python/trie.py ++++ sunpinyin-20190805/python/trie.py +@@ -133,7 +133,7 @@ class DATrie (object): + + trie = Trie() + for w in words: +- trie.add (w, itval.next() if itval else -1) ++ trie.add (w, next(itval) if itval else -1) + + self.construct_from_trie (trie, values!=None) + +@@ -161,7 +161,7 @@ class DATrie (object): + if progress_cb: + progress_cb () + +- for i in xrange (self.chr_encoder (max(trie.root.trans))+1): ++ for i in range (self.chr_encoder (max(trie.root.trans))+1): + if self.check[i] == -1: + self.check[i] = 0 + +@@ -272,7 +272,7 @@ def test (): + v, l = match_longest (datrie, s+'b') + assert (len(s) == l and valid_syllables[s] == v) + +- print 'test executed successfully' ++ print('test executed successfully') + + if __name__ == "__main__": + test () diff --git a/sunpinyin.spec b/sunpinyin.spec index 13c0459..261e0e3 100644 --- a/sunpinyin.spec +++ b/sunpinyin.spec @@ -1,22 +1,27 @@ +# TODO: fixes scons to generate debug information +%global debug_package %{nil} + %define _xinputconf %{_sysconfdir}/X11/xinit/xinput.d/xsunpinyin.conf -%define gitdate 20130710 +%define gitdate 20190805 Name: sunpinyin -Version: 2.0.4 -Release: 0.14%{?dist} +Version: 3.0.0 +Release: 0.17.%{gitdate}git%{?dist} Summary: A statistical language model based Chinese input method engine -Group: System Environment/Libraries -License: LGPLv2 or CDDL +License: LGPL-2.1-only OR CDDL-1.0 URL: http://code.google.com/p/sunpinyin/ Source0: %{name}-%{gitdate}.tar.xz -Source2: http://open-gram.googlecode.com/files/lm_sc.t3g.arpa-20121025.tar.bz2 -Source3: http://open-gram.googlecode.com/files/dict.utf8-20130220.tar.bz2 -Patch0: sunpinyin-aarch64.patch +Source2: http://downloads.sourceforge.net/project/open-gram/lm_sc.3gm.arpa-20140820.tar.bz2 +Source3: http://downloads.sourceforge.net/project/open-gram/dict.utf8-20131214.tar.bz2 +Patch0: sunpinyin-use-python3.patch +Patch1: sunpinyin-fixes-scons.patch +BuildRequires: make +BuildRequires: gcc-c++ BuildRequires: sqlite-devel BuildRequires: gettext -BuildRequires: scons +BuildRequires: python3-scons BuildRequires: perl(Pod::Man) -BuildRequires: python-devel +BuildRequires: python3-devel %description Sunpinyin is an input method engine for Simplified Chinese. It is an SLM based @@ -27,8 +32,7 @@ systems. The 2.0 release currently supports iBus, XIM, and Mac OS X. %package devel Summary: Development files for %{name} -Group: Development/Libraries -Requires: %{name} = %{version}-%{release} +Requires: %{name}%{?_isa} = %{version}-%{release} %description devel The %{name}-devel package contains libraries and header files that allows user @@ -36,8 +40,7 @@ to write their own front-end for sunpinyin. %package data Summary: Little-endian data files for %{name} -Group: System Environment/Libraries -License: CC-BY-SA +License: CC-BY-SA-3.0 Obsoletes: %{name}-data-le Obsoletes: %{name}-data-be @@ -46,17 +49,20 @@ The %{name}-data package contains necessary lexicon data and its index data files needed by the sunpinyin input methods. %prep -%setup -q -n %{name}-%{gitdate} -%patch0 -p1 +%autosetup -p1 -n %{name}-%{gitdate} + mkdir -p raw cp %SOURCE2 raw cp %SOURCE3 raw pushd raw -tar xvf lm_sc.t3g.arpa-20121025.tar.bz2 -tar xvf dict.utf8-20130220.tar.bz2 +tar xvf lm_sc.3gm.arpa-20140820.tar.bz2 +tar xvf dict.utf8-20131214.tar.bz2 popd %build +# export CFLAGS, CXXFLAGS, LDFLAGS, ... +%configure || : + scons %{?_smp_mflags} --prefix=%{_prefix} --libdir=%{_libdir} --datadir=%{_datadir} export PATH=`pwd`/src:$PATH pushd raw @@ -67,37 +73,128 @@ popd %install scons %{?_smp_mflags} --prefix=%{_prefix} --libdir=%{_libdir} --datadir=%{_datadir} install --install-sandbox=%{buildroot} pushd raw -make install DESTDIR=$RPM_BUILD_ROOT INSTALL="install -p" +make install DESTDIR=%{buildroot} INSTALL="install -p" popd -%clean -rm -rf %{buildroot} +# additional %%doc files to include by path to avoid duplicates/conflicts +# see https://bugzilla.redhat.com/1001266 +install -m0644 AUTHORS TODO %{buildroot}%{_docdir}/%{name} -%post -p /sbin/ldconfig - -%postun -p /sbin/ldconfig %files -%defattr(-,root,root,-) -%doc AUTHORS COPYING *.LICENSE -%doc README TODO +%license COPYING *.LICENSE %{_libdir}/libsunpinyin*.so.* %{_docdir}/%{name}/README +%{_docdir}/%{name}/AUTHORS +%{_docdir}/%{name}/TODO %files devel -%defattr(-,root,root,-) %{_libdir}/libsunpinyin*.so %{_libdir}/pkgconfig/sunpinyin*.pc %{_includedir}/sunpinyin* %files data -%defattr(-,root,root,-) %{_datadir}/%{name} %{_bindir}/* %{_mandir}/man1/*.1.gz %{_docdir}/%{name}/SLM-*.mk %changelog +* Fri Jul 17 2026 Fedora Release Engineering - 3.0.0-0.17.20190805git +- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild + +* Sat Jan 17 2026 Fedora Release Engineering - 3.0.0-0.16.20190805git +- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild + +* Fri Jul 25 2025 Fedora Release Engineering - 3.0.0-0.15.20190805git +- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild + +* Sun Jan 19 2025 Fedora Release Engineering - 3.0.0-0.14.20190805git +- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild + +* Sat Jul 20 2024 Fedora Release Engineering - 3.0.0-0.13.20190805git +- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild + +* Sat Jan 27 2024 Fedora Release Engineering - 3.0.0-0.12.20190805git +- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild + +* Sat Jul 22 2023 Fedora Release Engineering - 3.0.0-0.11.20190805git +- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild + +* Fri Apr 28 2023 Peng Wu - 3.0.0-0.10.20190805git +- Migrate to SPDX license + +* Sat Jan 21 2023 Fedora Release Engineering - 3.0.0-0.9.20190805git +- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild + +* Sat Jul 23 2022 Fedora Release Engineering - 3.0.0-0.8.20190805git +- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild + +* Sat Jan 22 2022 Fedora Release Engineering - 3.0.0-0.7.20190805git +- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild + +* Fri Jul 23 2021 Fedora Release Engineering - 3.0.0-0.6.20190805git +- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild + +* Wed Jan 27 2021 Fedora Release Engineering - 3.0.0-0.5.20190805git +- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild + +* Sat Aug 01 2020 Fedora Release Engineering - 3.0.0-0.4.20190805git +- Second attempt - Rebuilt for + https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Wed Jul 29 2020 Fedora Release Engineering - 3.0.0-0.3.20190805git +- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild + +* Fri Jan 31 2020 Fedora Release Engineering - 3.0.0-0.2.20190805git +- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild + +* Mon Aug 5 2019 Peng Wu - 3.0.0-0.1.20190805git +- Update scons and use python3 + +* Sat Jul 27 2019 Fedora Release Engineering - 2.0.4-0.26.20160301git +- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild + +* Sun Feb 03 2019 Fedora Release Engineering - 2.0.4-0.25.20160301git +- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild + +* Thu Jul 26 2018 Peng Wu - 2.0.4-0.24.20160301git%{?dist} +- Use python2 + +* Sat Jul 14 2018 Fedora Release Engineering - 2.0.4-0.23.20160301git +- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild + +* Sun Mar 18 2018 Iryna Shcherbina - 2.0.4-0.22.20160301git +- Update Python 2 dependency declarations to new packaging standards + (See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3) + +* Fri Feb 09 2018 Fedora Release Engineering - 2.0.4-0.21.20160301git +- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild + +* Thu Aug 03 2017 Fedora Release Engineering - 2.0.4-0.20.20160301git +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild + +* Thu Jul 27 2017 Fedora Release Engineering - 2.0.4-0.19.20160301git +- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild + +* Sat Feb 11 2017 Fedora Release Engineering - 2.0.4-0.18.20160301git +- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild + +* Tue Mar 1 2016 Peng Wu - 2.0.4-0.17.20160301git +- Update to the latest upstream git snapshot + +* Fri Feb 05 2016 Fedora Release Engineering - 2.0.4-0.16.20130710git +- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild + +* Tue Dec 29 2015 Michael Schwendt - 2.0.4-0.15.20130710git +- Rawhide only: Fix pod2man invocation for perl-podlators >= 4. +- Export global compiler flags before building. +- Minor spec cleanup: remove %%defattr usage and %%clean section, + use %%license, add %%_isa to -devel base package dependency, + don't mix %%buildroot and $RPM_BUILD_ROOT +- Insert gitdate into release to follow snapshot guidelines. +- Fix duplicated doc files (#1001266). + * Fri Jun 19 2015 Fedora Release Engineering - 2.0.4-0.14 - Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild @@ -128,7 +225,7 @@ rm -rf %{buildroot} * Fri Feb 15 2013 Fedora Release Engineering - 2.0.4-0.6 - Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild -* Sun Jul 28 2012 Liang Suilong - 2.0.4-0.5 +* Sat Jul 28 2012 Liang Suilong - 2.0.4-0.5 - Fix the spec file for building fcitx-sunpinyin * Thu Jul 26 2012 Liang Suilong - 2.0.4-0.4