Compare commits
98 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
ff85a7ea9e | ||
|
|
6ee4963ab4 | ||
|
|
89906a5a0a | ||
|
|
52dce7dcef | ||
|
|
18d899e64e | ||
|
|
6dfcea70a3 | ||
|
|
1251d378e8 | ||
|
|
ccf48fa15c | ||
|
|
f1edc79b90 | ||
|
|
e7a9129084 | ||
|
|
eca6b38a02 | ||
|
|
8b2b73de47 | ||
|
|
2c1e5be786 | ||
|
|
1f5de8ba5e | ||
|
|
41022e5680 | ||
|
|
4fa4945f1f | ||
|
|
c8bccd8724 | ||
|
|
00134ca923 | ||
|
|
ff2121e637 | ||
|
|
5a5a4a0924 | ||
|
|
91036e0fd1 | ||
|
|
ebb9c76b09 | ||
|
|
be51a72dcf | ||
|
|
5bb9fa0b96 | ||
|
|
23fc9170ca | ||
|
|
296b0c8232 | ||
|
|
f75094d8e0 | ||
|
|
f5f3915c72 | ||
|
|
b1635fc070 | ||
|
|
b2fc2c7d0b | ||
|
|
51a6f0a9a4 | ||
|
|
badeeaa847 | ||
|
|
e692ccbc65 | ||
|
|
b7b19965c1 | ||
|
|
804e955e65 | ||
|
|
7b58bb88c5 | ||
|
|
86ea5f3ccd | ||
|
|
f62f1b634f | ||
|
|
a36487ce6b | ||
|
|
9ff84814ea | ||
|
|
562d753ae8 | ||
|
|
1941d58b0d | ||
|
|
6d6eba55d8 | ||
|
|
a8794b7d25 | ||
|
|
6bce6c842f | ||
|
|
9e9a516259 | ||
|
|
3aa0c6bf68 | ||
| 35e6d6beec | |||
|
eb11ffcd51 |
|||
|
|
452cb03456 | ||
|
|
f2a6182613 | ||
|
|
055c7aac0b | ||
|
|
bd37a0ade0 | ||
|
|
3fb5fa3fac | ||
|
|
1292fde233 | ||
|
|
543c2c68cd | ||
|
33a4141507 |
|||
| 930e8fa545 | |||
|
|
156a0eef6e | ||
| 65e7475ba2 | |||
| 37213c4d1f | |||
|
|
fbc6c8f6fb | ||
|
|
7b76445d08 | ||
|
|
992d7cf7b9 | ||
|
|
115b084cac | ||
|
|
ff035e92c1 | ||
|
|
512292e624 | ||
|
|
af725ef838 | ||
|
|
acea733c0b | ||
|
|
84cc274287 | ||
|
|
4e8edd9237 | ||
|
|
95802ca20f | ||
|
|
c4c0985194 | ||
|
|
9045656b97 | ||
|
|
af3840ced4 | ||
|
|
b8dd455ff0 | ||
| 17525d5a5c | |||
|
|
d2cd6dedfd | ||
|
|
d78364d25b | ||
|
|
fbbbdf40f7 | ||
|
|
44bd9ade7a | ||
|
|
e767592e87 | ||
|
|
cd8ac49407 | ||
|
|
322e904a57 | ||
|
|
2b51e113ad | ||
|
|
ffd70453e4 | ||
|
|
ebb0ab84b8 | ||
|
|
dee0ea7316 | ||
|
|
11c102c321 | ||
|
|
d25cf3d2c6 | ||
| e7dc0e86ed | |||
| 9b466b7293 | |||
| d5cf603049 | |||
|
|
5ae7e82f13 | ||
| f5aa559cea | |||
|
|
7fdb536ce2 | ||
| 6a0c734526 | |||
|
|
661ea856c8 |
14 changed files with 788 additions and 21 deletions
2
.gitignore
vendored
Normal file
2
.gitignore
vendored
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
zinnia-0.06.tar.gz
|
||||
/zinnia-0.07.tar.gz
|
||||
21
Makefile
21
Makefile
|
|
@ -1,21 +0,0 @@
|
|||
# Makefile for source rpm: zinnia
|
||||
# $Id$
|
||||
NAME := zinnia
|
||||
SPECFILE = $(firstword $(wildcard *.spec))
|
||||
|
||||
define find-makefile-common
|
||||
for d in common ../common ../../common ; do if [ -f $$d/Makefile.common ] ; then if [ -f $$d/CVS/Root -a -w $$d/Makefile.common ] ; then cd $$d ; cvs -Q update ; fi ; echo "$$d/Makefile.common" ; break ; fi ; done
|
||||
endef
|
||||
|
||||
MAKEFILE_COMMON := $(shell $(find-makefile-common))
|
||||
|
||||
ifeq ($(MAKEFILE_COMMON),)
|
||||
# attept a checkout
|
||||
define checkout-makefile-common
|
||||
test -f CVS/Root && { cvs -Q -d $$(cat CVS/Root) checkout common && echo "common/Makefile.common" ; } || { echo "ERROR: I can't figure out how to checkout the 'common' module." ; exit -1 ; } >&2
|
||||
endef
|
||||
|
||||
MAKEFILE_COMMON := $(shell $(checkout-makefile-common))
|
||||
endif
|
||||
|
||||
include $(MAKEFILE_COMMON)
|
||||
20
Makefile.tomoe
Normal file
20
Makefile.tomoe
Normal file
|
|
@ -0,0 +1,20 @@
|
|||
TOMOE_MODEL_PATH = /usr/share/tomoe/recognizer/
|
||||
|
||||
build: handwriting-ja.model handwriting-zh_CN.model tomoe2s.pl
|
||||
|
||||
handwriting-ja.model: $(TOMOE_MODEL_PATH)/handwriting-ja.xml
|
||||
perl tomoe2s.pl $(TOMOE_MODEL_PATH)/handwriting-ja.xml > handwriting-ja.s
|
||||
LD_LIBRARY_PATH=.libs/ ./zinnia_learn handwriting-ja.s handwriting-ja.model
|
||||
LD_LIBRARY_PATH=.libs/ ./zinnia_convert handwriting-ja.model.txt handwriting-ja.model
|
||||
|
||||
handwriting-zh_CN.model: $(TOMOE_MODEL_PATH)/handwriting-zh_CN.xml
|
||||
perl tomoe2s.pl $(TOMOE_MODEL_PATH)/handwriting-zh_CN.xml > handwriting-zh_CN.s
|
||||
LD_LIBRARY_PATH=.libs/ ./zinnia_learn handwriting-zh_CN.s handwriting-zh_CN.model
|
||||
LD_LIBRARY_PATH=.libs/ ./zinnia_convert handwriting-zh_CN.model.txt handwriting-zh_CN.model
|
||||
|
||||
|
||||
install: build
|
||||
install -d $(DESTDIR)/usr/share/zinnia//model/tomoe
|
||||
install -m 0644 -p handwriting-ja.model handwriting-zh_CN.model $(DESTDIR)/usr/share/zinnia//model/tomoe
|
||||
|
||||
|
||||
163
always-store-data-in-little-endian-format.patch
Normal file
163
always-store-data-in-little-endian-format.patch
Normal file
|
|
@ -0,0 +1,163 @@
|
|||
From 09f01b0afcb4408af2e1af0294425eac420cd7a5 Mon Sep 17 00:00:00 2001
|
||||
From: Peng Huang <shawn.p.huang@gmail.com>
|
||||
Date: Fri, 23 Apr 2010 16:09:07 +0800
|
||||
Subject: [PATCH] Always store data in little endian format
|
||||
|
||||
---
|
||||
configure.in | 5 +++++
|
||||
recognizer.cpp | 24 ++++++++++++++++++++++--
|
||||
trainer.cpp | 48 +++++++++++++++++++++++++++++++++++++-----------
|
||||
3 files changed, 64 insertions(+), 13 deletions(-)
|
||||
|
||||
diff --git a/configure.in b/configure.in
|
||||
index 2731d36..f25c83a 100644
|
||||
--- a/configure.in
|
||||
+++ b/configure.in
|
||||
@@ -14,6 +14,11 @@ AC_PROG_LIBTOOL
|
||||
|
||||
dnl Checks for libraries.
|
||||
|
||||
+dnl Checks endian
|
||||
+AC_C_BIGENDIAN([], [
|
||||
+ AC_DEFINE(WORDS_LITENDIAN, 1, [Define if target is little endian])
|
||||
+])
|
||||
+
|
||||
dnl Checks for header files.
|
||||
AC_HEADER_STDC
|
||||
AC_CHECK_HEADERS(string.h stdlib.h unistd.h fcntl.h \
|
||||
diff --git a/recognizer.cpp b/recognizer.cpp
|
||||
index b4d292a..b231607 100644
|
||||
--- a/recognizer.cpp
|
||||
+++ b/recognizer.cpp
|
||||
@@ -5,6 +5,9 @@
|
||||
//
|
||||
// Copyright(C) 2008 Taku Kudo <taku@chasen.org>
|
||||
//
|
||||
+#ifdef HAVE_CONFIG_H
|
||||
+# include "config.h"
|
||||
+#endif
|
||||
#include <iostream>
|
||||
#include <vector>
|
||||
#include <cmath>
|
||||
@@ -23,11 +26,28 @@ static inline char *read_ptr(char **ptr, size_t size) {
|
||||
return r;
|
||||
}
|
||||
|
||||
-template <class T>
|
||||
-static inline void read_static(char **ptr, T *value) {
|
||||
+template <typename T>
|
||||
+inline void read_static(char **ptr, T *value) {
|
||||
char *r = read_ptr(ptr, sizeof(T));
|
||||
memcpy(value, r, sizeof(T));
|
||||
}
|
||||
+
|
||||
+#ifndef WORDS_LITENDIAN
|
||||
+template <>
|
||||
+inline void read_static<unsigned int>(char **ptr, unsigned int *value) {
|
||||
+ unsigned char *buf = reinterpret_cast<unsigned char *>(*ptr);
|
||||
+ *value = (buf[0]) | (buf[1] << 8) | (buf[2] << 16) | (buf[3] << 24);
|
||||
+ *ptr += 4;
|
||||
+}
|
||||
+
|
||||
+template <>
|
||||
+inline void read_static<float>(char **ptr, float *value) {
|
||||
+ unsigned int x;
|
||||
+ read_static<unsigned int>(ptr, &x);
|
||||
+ memcpy(value, &x, sizeof(x));
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
}
|
||||
|
||||
namespace zinnia {
|
||||
diff --git a/trainer.cpp b/trainer.cpp
|
||||
index 287a882..e150760 100644
|
||||
--- a/trainer.cpp
|
||||
+++ b/trainer.cpp
|
||||
@@ -243,6 +243,31 @@ bool Trainer::makeHeader(const char *text_filename,
|
||||
return true;
|
||||
}
|
||||
|
||||
+template<typename T>
|
||||
+inline void write_static(std::ofstream & bofs, const T value)
|
||||
+{
|
||||
+ bofs.write(reinterpret_cast<const char *>(&value), sizeof(T));
|
||||
+}
|
||||
+
|
||||
+#ifndef WORDS_LITENDIAN
|
||||
+template<>
|
||||
+inline void write_static<unsigned int>(std::ofstream & bofs, const unsigned int value)
|
||||
+{
|
||||
+ bofs.put ((value) & 0xff);
|
||||
+ bofs.put ((value >> 8) & 0xff);
|
||||
+ bofs.put ((value >> 16) & 0xff);
|
||||
+ bofs.put ((value >> 24) & 0xff);
|
||||
+}
|
||||
+
|
||||
+template<>
|
||||
+inline void write_static<float>(std::ofstream & bofs, const float value)
|
||||
+{
|
||||
+ unsigned int x;
|
||||
+ memcpy(&x, &value, sizeof(x));
|
||||
+ write_static<unsigned int>(bofs, x);
|
||||
+}
|
||||
+#endif
|
||||
+
|
||||
bool Trainer::convert(const char *text_filename,
|
||||
const char *binary_filename,
|
||||
double compression_threshold) {
|
||||
@@ -261,9 +286,9 @@ bool Trainer::convert(const char *text_filename,
|
||||
unsigned int magic = 0;
|
||||
const unsigned int version = DIC_VERSION;
|
||||
unsigned int msize = 0;
|
||||
- bofs.write(reinterpret_cast<const char *>(&magic), sizeof(magic));
|
||||
- bofs.write(reinterpret_cast<const char *>(&version), sizeof(version));
|
||||
- bofs.write(reinterpret_cast<const char *>(&msize), sizeof(msize));
|
||||
+ write_static<unsigned int> (bofs, magic);
|
||||
+ write_static<unsigned int> (bofs, version);
|
||||
+ write_static<unsigned int> (bofs, msize);
|
||||
|
||||
std::string line;
|
||||
const size_t array_size = 8192 * 16;
|
||||
@@ -277,19 +302,19 @@ bool Trainer::convert(const char *text_filename,
|
||||
char character[16];
|
||||
std::strncpy(character, col[0], sizeof(character));
|
||||
bofs.write(character, sizeof(character));
|
||||
- bofs.write(reinterpret_cast<const char *>(&bias), sizeof(bias));
|
||||
+ write_static<float> (bofs, bias);
|
||||
for (size_t i = 2; i < size; i += 2) {
|
||||
const int index = std::atoi(col[i]);
|
||||
const float value = std::atof(col[i + 1]);
|
||||
if (fabs(value) > compression_threshold) {
|
||||
- bofs.write(reinterpret_cast<const char *>(&index), sizeof(index));
|
||||
- bofs.write(reinterpret_cast<const char *>(&value), sizeof(value));
|
||||
+ write_static<int> (bofs, index);
|
||||
+ write_static<float> (bofs, value);
|
||||
}
|
||||
}
|
||||
const int index = -1;
|
||||
const float value = 0.0;
|
||||
- bofs.write(reinterpret_cast<const char *>(&index), sizeof(index));
|
||||
- bofs.write(reinterpret_cast<const char *>(&value), sizeof(value));
|
||||
+ write_static<int> (bofs, index);
|
||||
+ write_static<float> (bofs, value);
|
||||
++msize;
|
||||
}
|
||||
|
||||
@@ -297,9 +322,10 @@ bool Trainer::convert(const char *text_filename,
|
||||
bofs.seekp(0);
|
||||
magic ^= DIC_MAGIC_ID;
|
||||
bofs.seekp(0);
|
||||
- bofs.write(reinterpret_cast<const char *>(&magic), sizeof(magic));
|
||||
- bofs.write(reinterpret_cast<const char *>(&version), sizeof(version));
|
||||
- bofs.write(reinterpret_cast<const char *>(&msize), sizeof(msize));
|
||||
+
|
||||
+ write_static<unsigned int> (bofs, magic);
|
||||
+ write_static<unsigned int> (bofs, version);
|
||||
+ write_static<unsigned int> (bofs, msize);
|
||||
|
||||
return true;
|
||||
}
|
||||
--
|
||||
1.7.0.1
|
||||
|
||||
2
requirements.txt
Normal file
2
requirements.txt
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
pip
|
||||
setuptools
|
||||
1
sources
1
sources
|
|
@ -0,0 +1 @@
|
|||
SHA512 (zinnia-0.07.tar.gz) = f214938953be093e37735a24dd5d2e899e02572202f9b316de566ddeb65451b2a13becb84f95c74f6e5ceadb83bbbcfea3434e974393cb569c65896249002280
|
||||
35
tomoe2s.pl
Normal file
35
tomoe2s.pl
Normal file
|
|
@ -0,0 +1,35 @@
|
|||
#!/usr/bin/perl
|
||||
|
||||
use utf8;
|
||||
my $value;
|
||||
my $stroke;
|
||||
my $strokes;
|
||||
|
||||
while (<>) {
|
||||
if (/<character>/) {
|
||||
while (<>) {
|
||||
if (/<utf8>([^<]+)<\/utf8>/) {
|
||||
$value = $1;
|
||||
$value =~ s/^&#x//;
|
||||
$value = pack("U", hex($value));
|
||||
utf8::encode($value);
|
||||
$stroke = "";
|
||||
$strokes = "";
|
||||
} elsif (/<point x=\"(\d+)\" y=\"(\d+)\"/) {
|
||||
my $x = $1;
|
||||
my $y = $2;
|
||||
# print "$x $y\n";
|
||||
$stroke .= "($x $y)";
|
||||
} elsif (/<\/stroke>/) {
|
||||
$strokes .= "($stroke)";
|
||||
$stroke = "";
|
||||
} elsif (/<\/character>/) {
|
||||
if ($value !~ /[\(\)]/) {
|
||||
print "(character (value $value)(width 1000)(height 1000)(strokes $strokes))\n";
|
||||
}
|
||||
$value = "";
|
||||
last;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
36
zinnia-0.05-bindings.patch
Normal file
36
zinnia-0.05-bindings.patch
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
diff -p -up zinnia-0.05/perl/Makefile.PL.bindings zinnia-0.05/perl/Makefile.PL
|
||||
--- zinnia-0.05/perl/Makefile.PL.bindings 2008-09-13 18:59:36.000000000 +0200
|
||||
+++ zinnia-0.05/perl/Makefile.PL 2009-11-19 14:17:39.000000000 +0100
|
||||
@@ -3,8 +3,8 @@ WriteMakefile(
|
||||
'NAME' => 'zinnia',
|
||||
'CC' => 'c++',
|
||||
'LD' => 'c++',
|
||||
- 'INC' => '',
|
||||
- 'LIBS' => '-lzinnia',
|
||||
+ 'INC' => '-I../',
|
||||
+ 'LIBS' => '-L../.libs -lzinnia',
|
||||
# 'VERSION' => '0.1',
|
||||
'OBJECT' => 'zinnia_wrap.o'
|
||||
);
|
||||
diff -p -up zinnia-0.05/perl/zinnia_wrap.cxx.bindings zinnia-0.05/perl/zinnia_wrap.cxx
|
||||
--- zinnia-0.05/perl/zinnia_wrap.cxx.bindings 2009-05-31 06:39:39.000000000 +0200
|
||||
+++ zinnia-0.05/perl/zinnia_wrap.cxx 2009-11-19 14:18:46.000000000 +0100
|
||||
@@ -11,6 +11,7 @@
|
||||
#define SWIGPERL
|
||||
#define SWIG_CASTRANK_MODE
|
||||
|
||||
+#include <cstring>
|
||||
|
||||
#ifdef __cplusplus
|
||||
/* SwigValueWrapper is described in swig.swg */
|
||||
diff -p -up zinnia-0.05/python/zinnia_wrap.cxx.bindings zinnia-0.05/python/zinnia_wrap.cxx
|
||||
--- zinnia-0.05/python/zinnia_wrap.cxx.bindings 2009-05-31 06:39:41.000000000 +0200
|
||||
+++ zinnia-0.05/python/zinnia_wrap.cxx 2009-11-19 14:19:10.000000000 +0100
|
||||
@@ -11,6 +11,7 @@
|
||||
#define SWIGPYTHON
|
||||
#define SWIG_PYTHON_DIRECTOR_NO_VTABLE
|
||||
|
||||
+#include <cstring>
|
||||
|
||||
#ifdef __cplusplus
|
||||
/* SwigValueWrapper is described in swig.swg */
|
||||
13
zinnia-0.06-fixes-ppc-float.patch
Normal file
13
zinnia-0.06-fixes-ppc-float.patch
Normal file
|
|
@ -0,0 +1,13 @@
|
|||
Index: zinnia-0.06/feature.cpp
|
||||
===================================================================
|
||||
--- zinnia-0.06.orig/feature.cpp
|
||||
+++ zinnia-0.06/feature.cpp
|
||||
@@ -42,7 +42,7 @@ float minimum_distance(const Node *first
|
||||
|
||||
const float a = last->x - first->x;
|
||||
const float b = last->y - first->y;
|
||||
- const float c = last->y * first->x - last->x * first->y;
|
||||
+ const float c = (double)last->y * first->x - (double)last->x * first->y;
|
||||
|
||||
float max = -1.0;
|
||||
for (const Node *n = first; n != last; ++n) {
|
||||
15
zinnia-fixes-divide-by-zero.patch
Normal file
15
zinnia-fixes-divide-by-zero.patch
Normal file
|
|
@ -0,0 +1,15 @@
|
|||
Index: zinnia-0.07/feature.cpp
|
||||
===================================================================
|
||||
--- zinnia-0.07.orig/feature.cpp
|
||||
+++ zinnia-0.07/feature.cpp
|
||||
@@ -42,6 +42,10 @@ float minimum_distance(const Node *first
|
||||
|
||||
const float a = last->x - first->x;
|
||||
const float b = last->y - first->y;
|
||||
+
|
||||
+ if (a * a + b * b == 0)
|
||||
+ return 0.0;
|
||||
+
|
||||
const float c = static_cast<double>(last->y * first->x)
|
||||
- static_cast<double>(last->x * first->y);
|
||||
|
||||
22
zinnia-fixes-gcc6-compile.patch
Normal file
22
zinnia-fixes-gcc6-compile.patch
Normal file
|
|
@ -0,0 +1,22 @@
|
|||
Index: zinnia-0.06/trainer.cpp
|
||||
===================================================================
|
||||
--- zinnia-0.06.orig/trainer.cpp
|
||||
+++ zinnia-0.06/trainer.cpp
|
||||
@@ -93,7 +93,7 @@ class TrainerImpl: public Trainer {
|
||||
|
||||
public:
|
||||
bool add(const Character &character) {
|
||||
- const std::string y = character.value();
|
||||
+ std::string y = character.value();
|
||||
CHECK_FALSE(!y.empty()) << "input character is empty";
|
||||
Features features;
|
||||
CHECK_FALSE(features.read(character)) << "cannot read character: " << y;
|
||||
@@ -103,7 +103,7 @@ class TrainerImpl: public Trainer {
|
||||
if (!fn) {
|
||||
return false;
|
||||
}
|
||||
- x_.push_back(std::make_pair<std::string, FeatureNode *>(y, fn));
|
||||
+ x_.push_back(std::make_pair(y, fn));
|
||||
return true;
|
||||
}
|
||||
|
||||
12
zinnia-fixes-python-setuptools.patch
Normal file
12
zinnia-fixes-python-setuptools.patch
Normal file
|
|
@ -0,0 +1,12 @@
|
|||
Index: zinnia-0.06/python/setup.py
|
||||
===================================================================
|
||||
--- zinnia-0.06.orig/python/setup.py
|
||||
+++ zinnia-0.06/python/setup.py
|
||||
@@ -7,5 +7,7 @@ setup(name = "zinnia-python",
|
||||
py_modules=["zinnia"],
|
||||
ext_modules = [Extension("_zinnia",
|
||||
["zinnia_wrap.cxx",],
|
||||
+ include_dirs=[".."],
|
||||
+ library_dirs=["../.libs"],
|
||||
libraries=["zinnia"])
|
||||
])
|
||||
467
zinnia.spec
Normal file
467
zinnia.spec
Normal file
|
|
@ -0,0 +1,467 @@
|
|||
Name: zinnia
|
||||
Version: 0.07
|
||||
Release: 13%{?dist}
|
||||
Summary: Online handwriting recognition system with machine learning
|
||||
|
||||
License: BSD-3-Clause
|
||||
URL: https://github.com/silverhikari/zinnia
|
||||
Source0: https://github.com/silverhikari/zinnia/releases/download/%{version}/%{name}-%{version}.tar.gz
|
||||
Source1: https://raw.githubusercontent.com/silverhikari/%{name}/master/%{name}/tomoe2s.pl
|
||||
Source2: Makefile.tomoe
|
||||
Source3: requirements.txt
|
||||
Patch0: zinnia-0.05-bindings.patch
|
||||
Patch2: always-store-data-in-little-endian-format.patch
|
||||
Patch4: zinnia-fixes-python-setuptools.patch
|
||||
Patch5: zinnia-fixes-divide-by-zero.patch
|
||||
BuildRequires: make
|
||||
BuildRequires: gcc-c++
|
||||
BuildRequires: libdb-devel, python3-devel
|
||||
BuildRequires: swig
|
||||
BuildRequires: perl-devel
|
||||
BuildRequires: perl-generators
|
||||
BuildRequires: perl(ExtUtils::MakeMaker)
|
||||
BuildRequires: tomoe
|
||||
BuildRequires: autoconf
|
||||
BuildRequires: gnome-common
|
||||
|
||||
%description
|
||||
Zinnia provides a simple, customizable, and portable dynamic OCR
|
||||
system for hand-written input, based on Support Vector Machines.
|
||||
|
||||
Zinnia simply receives user pen strokes as coordinate data and outputs
|
||||
the best matching characters sorted by SVM confidence. To maintain
|
||||
portability, it has no rendering functionality. In addition to
|
||||
recognition, Zinnia provides a training module capable of creating
|
||||
highly efficient handwriting recognition models.
|
||||
|
||||
This package contains the shared libraries.
|
||||
|
||||
%package devel
|
||||
Summary: Development files for %{name}
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
|
||||
%description devel
|
||||
The %{name}-devel package contains libraries and header files for
|
||||
developing applications that use %{name}.
|
||||
|
||||
%package utils
|
||||
Summary: Utils for the zinnia library
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
|
||||
%description utils
|
||||
The %{name}-utils package provides utilities for zinnia library that
|
||||
use %{name}.
|
||||
|
||||
%package doc
|
||||
Summary: Documents for the zinnia library
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
BuildArch: noarch
|
||||
|
||||
%description doc
|
||||
The %{name}-doc package provide documents for zinnia library that
|
||||
use %{name}.
|
||||
|
||||
%package perl
|
||||
Summary: Perl bindings for %name
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
|
||||
|
||||
%description perl
|
||||
This package contains perl bindings for %{name}.
|
||||
|
||||
%package -n python3-zinnia
|
||||
Summary: Python bindings for %{name}
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
|
||||
%description -n python3-zinnia
|
||||
This package contains python bindings for %{name}.
|
||||
|
||||
%package tomoe-ja
|
||||
Summary: Japanese tomoe model file for %{name}
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
Provides: zinnia-tomoe = %{version}-%{release}
|
||||
Obsoletes: zinnia-tomoe < 0.06-19
|
||||
|
||||
%description tomoe-ja
|
||||
This package contains Japanese tomoe model files for %{name}.
|
||||
|
||||
%package tomoe-zh_CN
|
||||
Summary: Simplified Chinese tomoe model file for %{name}
|
||||
Requires: %{name} = %{version}-%{release}
|
||||
Provides: zinnia-tomoe = %{version}-%{release}
|
||||
Obsoletes: zinnia-tomoe < 0.06-19
|
||||
|
||||
%description tomoe-zh_CN
|
||||
This package contains Simplified Chinese tomoe model files for %{name}.
|
||||
|
||||
%prep
|
||||
%setup -q -n %{name}-%{version}
|
||||
%patch -P0 -p1 -b .bindings
|
||||
%patch -P2 -p1 -R -b .little-endian
|
||||
%patch -P4 -p1 -b .python
|
||||
%patch -P5 -p1 -b .divide-by-zero
|
||||
|
||||
find . -type f -name "*.pyc" -exec rm -f {} ';'
|
||||
cp %{SOURCE1} .
|
||||
cp %{SOURCE2} .
|
||||
pushd doc
|
||||
iconv -f latin1 -t utf8 zinnia.css > zinnia.css.bak
|
||||
mv -f zinnia.css.bak zinnia.css
|
||||
popd
|
||||
|
||||
# re-generate zinnia.py and zinnia_wrap.cxx for python 3.x
|
||||
pushd swig
|
||||
make python
|
||||
popd
|
||||
|
||||
%generate_buildrequires
|
||||
%pyproject_buildrequires -N %{SOURCE3}
|
||||
|
||||
%build
|
||||
gnome-autogen.sh
|
||||
%configure --disable-static --disable-rpath
|
||||
make CFLAGS="%{optflags}" CXXFLAGS="%{optflags}" %{?_smp_mflags}
|
||||
make -f Makefile.tomoe build
|
||||
|
||||
pushd perl
|
||||
perl Makefile.PL INSTALLDIRS=vendor OPTIMIZE="$RPM_OPT_FLAGS"
|
||||
make %{?_smp_mflags}
|
||||
popd
|
||||
|
||||
pushd python
|
||||
%pyproject_wheel
|
||||
popd
|
||||
|
||||
%install
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
make install DESTDIR=$RPM_BUILD_ROOT
|
||||
make -f Makefile.tomoe install DESTDIR=$RPM_BUILD_ROOT
|
||||
|
||||
pushd perl
|
||||
make pure_install PERL_INSTALL_ROOT=$RPM_BUILD_ROOT
|
||||
popd
|
||||
|
||||
pushd python
|
||||
%pyproject_install
|
||||
%pyproject_save_files '%{name}*' _%{name}
|
||||
pushd
|
||||
|
||||
#remove something unnecessary
|
||||
find $RPM_BUILD_ROOT -type f -name "*.la" -exec rm -f {} ';'
|
||||
find $RPM_BUILD_ROOT -type f -name "*.bs" -size 0c -exec rm -f {} ';'
|
||||
find $RPM_BUILD_ROOT -type f -name .packlist -exec rm -f {} ';'
|
||||
|
||||
#change the privilege of some files
|
||||
chmod 0755 $RPM_BUILD_ROOT%{perl_vendorarch}/auto/%{name}/%{name}.so
|
||||
|
||||
|
||||
%check
|
||||
export LD_LIBRARY_PATH=%{buildroot}/%{_libdir}
|
||||
%pyproject_check_import
|
||||
|
||||
|
||||
%files
|
||||
%doc README COPYING
|
||||
%{_libdir}/*.so.*
|
||||
|
||||
%files devel
|
||||
%{_includedir}/*
|
||||
%{_libdir}/lib%{name}.so
|
||||
|
||||
%{_libdir}/pkgconfig/%{name}.pc
|
||||
|
||||
%files utils
|
||||
%{_bindir}/zinnia
|
||||
%{_bindir}/zinnia_convert
|
||||
%{_bindir}/zinnia_learn
|
||||
|
||||
%files doc
|
||||
%doc doc/*
|
||||
|
||||
%files perl
|
||||
%{perl_vendorarch}/auto/%{name}/
|
||||
%{perl_vendorarch}/%{name}.pm
|
||||
|
||||
%files -n python3-zinnia -f %{pyproject_files}
|
||||
%exclude %{python3_sitearch}/zinnia_python-0.0.0.dist-info
|
||||
|
||||
%files tomoe-ja
|
||||
%dir %{_datadir}/zinnia/model/tomoe/
|
||||
%{_datadir}/zinnia/model/tomoe/handwriting-ja.model
|
||||
|
||||
%files tomoe-zh_CN
|
||||
%dir %{_datadir}/zinnia/model/tomoe/
|
||||
%{_datadir}/zinnia/model/tomoe/handwriting-zh_CN.model
|
||||
|
||||
%changelog
|
||||
* Fri Jul 24 2026 Python Maint <python-maint@redhat.com> - 0.07-13
|
||||
- Rebuilt for Python 3.15.0b4 ABI change
|
||||
|
||||
* Thu Jul 23 2026 Jitka Plesnikova <jplesnik@redhat.com> - 0.07-12
|
||||
- Perl 5.44 rebuild
|
||||
|
||||
* Wed Jul 22 2026 Python Maint <python-maint@redhat.com> - 0.07-11
|
||||
- Rebuilt for Python 3.15.0b4 ABI change
|
||||
|
||||
* Fri Jul 17 2026 Fedora Release Engineering <releng@fedoraproject.org> - 0.07-10
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_45_Mass_Rebuild
|
||||
|
||||
* Wed Jun 03 2026 Python Maint <python-maint@redhat.com> - 0.07-9
|
||||
- Rebuilt for Python 3.15
|
||||
|
||||
* Sat Jan 17 2026 Fedora Release Engineering <releng@fedoraproject.org> - 0.07-8
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_44_Mass_Rebuild
|
||||
|
||||
* Fri Sep 19 2025 Python Maint <python-maint@redhat.com> - 0.07-7
|
||||
- Rebuilt for Python 3.14.0rc3 bytecode
|
||||
|
||||
* Fri Aug 15 2025 Python Maint <python-maint@redhat.com> - 0.07-6
|
||||
- Rebuilt for Python 3.14.0rc2 bytecode
|
||||
|
||||
* Fri Jul 25 2025 Peng Wu <pwu@redhat.com> - 0.07-4
|
||||
- Update for https://fedoraproject.org/wiki/Changes/DeprecateSetuppyMacros
|
||||
- Resolves: RHBZ#2378641
|
||||
|
||||
* Fri Jul 25 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.07-4
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_43_Mass_Rebuild
|
||||
|
||||
* Mon Jul 07 2025 Jitka Plesnikova <jplesnik@redhat.com> - 0.07-3
|
||||
- Perl 5.42 rebuild
|
||||
|
||||
* Mon Jun 02 2025 Python Maint <python-maint@redhat.com> - 0.07-2
|
||||
- Rebuilt for Python 3.14
|
||||
|
||||
* Mon Apr 14 2025 Peng Wu <pwu@redhat.com> - 0.07-1
|
||||
- Update to 0.07
|
||||
|
||||
* Sun Jan 19 2025 Fedora Release Engineering <releng@fedoraproject.org> - 0.06-72
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_42_Mass_Rebuild
|
||||
|
||||
* Wed Oct 30 2024 Peng Wu <pwu@redhat.com> - 0.06-71
|
||||
- Fix build
|
||||
- Resolves: RHBZ#2319752
|
||||
|
||||
* Sat Jul 20 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.06-70
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_41_Mass_Rebuild
|
||||
|
||||
* Wed Jun 12 2024 Jitka Plesnikova <jplesnik@redhat.com> - 0.06-69
|
||||
- Perl 5.40 rebuild
|
||||
|
||||
* Fri Jun 07 2024 Python Maint <python-maint@redhat.com> - 0.06-68
|
||||
- Rebuilt for Python 3.13
|
||||
|
||||
* Sat Jan 27 2024 Fedora Release Engineering <releng@fedoraproject.org> - 0.06-67
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_40_Mass_Rebuild
|
||||
|
||||
* Sat Jul 22 2023 Fedora Release Engineering <releng@fedoraproject.org> - 0.06-66
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_39_Mass_Rebuild
|
||||
|
||||
* Tue Jul 11 2023 Jitka Plesnikova <jplesnik@redhat.com> - 0.06-65
|
||||
- Perl 5.38 rebuild
|
||||
|
||||
* Wed Jun 14 2023 Python Maint <python-maint@redhat.com> - 0.06-64
|
||||
- Rebuilt for Python 3.12
|
||||
|
||||
* Sat May 6 2023 Peng Wu <pwu@redhat.com> - 0.06-63
|
||||
- Migrate to SPDX license
|
||||
|
||||
* Sat Jan 21 2023 Fedora Release Engineering <releng@fedoraproject.org> - 0.06-62
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_38_Mass_Rebuild
|
||||
|
||||
* Mon Oct 24 2022 Peng Wu <pwu@redhat.com> - 0.06-61
|
||||
- Add BuildRequires python3-setuptools
|
||||
|
||||
* Sat Jul 23 2022 Fedora Release Engineering <releng@fedoraproject.org> - 0.06-60
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_37_Mass_Rebuild
|
||||
|
||||
* Mon Jun 13 2022 Python Maint <python-maint@redhat.com> - 0.06-59
|
||||
- Rebuilt for Python 3.11
|
||||
|
||||
* Mon May 30 2022 Jitka Plesnikova <jplesnik@redhat.com> - 0.06-58
|
||||
- Perl 5.36 rebuild
|
||||
|
||||
* Fri Feb 11 2022 Peng Wu <pwu@redhat.com> - 0.06-57
|
||||
- Fix RHBZ#2048104
|
||||
|
||||
* Sat Jan 22 2022 Fedora Release Engineering <releng@fedoraproject.org> - 0.06-56
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_36_Mass_Rebuild
|
||||
|
||||
* Fri Jul 23 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.06-55
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_35_Mass_Rebuild
|
||||
|
||||
* Fri Jun 04 2021 Python Maint <python-maint@redhat.com> - 0.06-54
|
||||
- Rebuilt for Python 3.10
|
||||
|
||||
* Fri Jun 4 2021 Peng Wu <pwu@redhat.com> - 0.06-53
|
||||
- Disable rpath
|
||||
|
||||
* Fri May 21 2021 Jitka Plesnikova <jplesnik@redhat.com> - 0.06-52
|
||||
- Perl 5.34 rebuild
|
||||
|
||||
* Thu Jan 28 2021 Fedora Release Engineering <releng@fedoraproject.org> - 0.06-51
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_34_Mass_Rebuild
|
||||
|
||||
* Wed Jul 29 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.06-50
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_33_Mass_Rebuild
|
||||
|
||||
* Mon Jun 22 2020 Jitka Plesnikova <jplesnik@redhat.com> - 0.06-49
|
||||
- Perl 5.32 rebuild
|
||||
|
||||
* Tue May 26 2020 Miro Hrončok <mhroncok@redhat.com> - 0.06-48
|
||||
- Rebuilt for Python 3.9
|
||||
|
||||
* Fri Jan 31 2020 Fedora Release Engineering <releng@fedoraproject.org> - 0.06-47
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_32_Mass_Rebuild
|
||||
|
||||
* Thu Oct 03 2019 Miro Hrončok <mhroncok@redhat.com> - 0.06-46
|
||||
- Rebuilt for Python 3.8.0rc1 (#1748018)
|
||||
|
||||
* Mon Aug 19 2019 Miro Hrončok <mhroncok@redhat.com> - 0.06-45
|
||||
- Rebuilt for Python 3.8
|
||||
|
||||
* Sat Jul 27 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.06-44
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_31_Mass_Rebuild
|
||||
|
||||
* Thu May 30 2019 Jitka Plesnikova <jplesnik@redhat.com> - 0.06-43
|
||||
- Perl 5.30 rebuild
|
||||
|
||||
* Sun Feb 03 2019 Fedora Release Engineering <releng@fedoraproject.org> - 0.06-42
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_30_Mass_Rebuild
|
||||
|
||||
* Wed Oct 10 2018 Peng Wu <pwu@redhat.com> - 0.06-41
|
||||
- Switch from python2 to python3
|
||||
|
||||
* Tue Jul 24 2018 Peng Wu <pwu@redhat.com> - 0.06-40
|
||||
- Use python2
|
||||
|
||||
* Sat Jul 14 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.06-39
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_29_Mass_Rebuild
|
||||
|
||||
* Wed Jun 27 2018 Jitka Plesnikova <jplesnik@redhat.com> - 0.06-38
|
||||
- Perl 5.28 rebuild
|
||||
|
||||
* Fri Feb 09 2018 Fedora Release Engineering <releng@fedoraproject.org> - 0.06-37
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_28_Mass_Rebuild
|
||||
|
||||
* Sun Aug 20 2017 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 0.06-36
|
||||
- Add Provides for the old name without %%_isa
|
||||
|
||||
* Sat Aug 19 2017 Zbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl> - 0.06-35
|
||||
- Python 2 binary package renamed to python2-zinnia
|
||||
See https://fedoraproject.org/wiki/FinalizingFedoraSwitchtoPython3
|
||||
|
||||
* Thu Aug 03 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.06-34
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Binutils_Mass_Rebuild
|
||||
|
||||
* Thu Jul 27 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.06-33
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_27_Mass_Rebuild
|
||||
|
||||
* Sun Jun 04 2017 Jitka Plesnikova <jplesnik@redhat.com> - 0.06-32
|
||||
- Perl 5.26 rebuild
|
||||
|
||||
* Sat Feb 11 2017 Fedora Release Engineering <releng@fedoraproject.org> - 0.06-31
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_26_Mass_Rebuild
|
||||
|
||||
* Tue Jul 19 2016 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.06-30
|
||||
- https://fedoraproject.org/wiki/Changes/Automatic_Provides_for_Python_RPM_Packages
|
||||
|
||||
* Sun May 15 2016 Jitka Plesnikova <jplesnik@redhat.com> - 0.06-29
|
||||
- Perl 5.24 rebuild
|
||||
|
||||
* Wed Feb 17 2016 Peng Wu <pwu@redhat.com> - 0.06-28
|
||||
- Fixes compile with gcc 6.0
|
||||
|
||||
* Fri Feb 05 2016 Fedora Release Engineering <releng@fedoraproject.org> - 0.06-27
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_24_Mass_Rebuild
|
||||
|
||||
* Fri Jun 19 2015 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.06-26
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_23_Mass_Rebuild
|
||||
|
||||
* Wed Jun 03 2015 Jitka Plesnikova <jplesnik@redhat.com> - 0.06-25
|
||||
- Perl 5.22 rebuild
|
||||
|
||||
* Sat May 02 2015 Kalev Lember <kalevlember@gmail.com> - 0.06-24
|
||||
- Rebuilt for GCC 5 C++11 ABI change
|
||||
|
||||
* Thu Dec 11 2014 Peng Wu <pwu@redhat.com> - 0.06-23
|
||||
- Fixes split issues
|
||||
|
||||
* Wed Aug 27 2014 Jitka Plesnikova <jplesnik@redhat.com> - 0.06-22
|
||||
- Perl 5.20 rebuild
|
||||
|
||||
* Mon Aug 18 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.06-21
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_22_Mass_Rebuild
|
||||
|
||||
* Tue Jul 29 2014 Peng Wu <pwu@redhat.com> - 0.06-20
|
||||
- Split zinnia-tomoe sub-package for ibus-handwrite
|
||||
|
||||
* Sat Jun 07 2014 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.06-19
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_21_Mass_Rebuild
|
||||
|
||||
* Sun Aug 04 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.06-18
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_20_Mass_Rebuild
|
||||
|
||||
* Thu Jul 18 2013 Petr Pisar <ppisar@redhat.com> - 0.06-17
|
||||
- Perl 5.18 rebuild
|
||||
|
||||
* Tue Mar 26 2013 Peng Wu <pwu@redhat.com> - 0.06-16
|
||||
- Fixes aarch64 build
|
||||
|
||||
* Fri Feb 15 2013 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.06-15
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_19_Mass_Rebuild
|
||||
|
||||
* Sun Jul 22 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.06-14
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_18_Mass_Rebuild
|
||||
|
||||
* Mon Jun 11 2012 Petr Pisar <ppisar@redhat.com> - 0.06-13
|
||||
- Perl 5.16 rebuild
|
||||
|
||||
* Tue Feb 28 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.06-12
|
||||
- Rebuilt for c++ ABI breakage
|
||||
|
||||
* Sat Jan 14 2012 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.06-11
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_17_Mass_Rebuild
|
||||
|
||||
* Fri Jun 17 2011 Marcela Mašláňová <mmaslano@redhat.com> - 0.06-10
|
||||
- Perl mass rebuild
|
||||
|
||||
* Tue Feb 08 2011 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 0.06-9
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_15_Mass_Rebuild
|
||||
|
||||
* Mon Jul 26 2010 Peng Wu <pwu@redhat.com> - 0.06-8
|
||||
- Remove noarch from zinnia-tomoe sub-package for Fedora 12 ppc build.
|
||||
|
||||
* Thu Jul 22 2010 David Malcolm <dmalcolm@redhat.com> - 0.06-7
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Features/Python_2.7/MassRebuild
|
||||
|
||||
* Fri Jul 16 2010 Peng Wu <pwu@redhat.com> - 0.06-6
|
||||
- revert patch always-store-data-in-little-endian-format.patch for ppc build.
|
||||
|
||||
* Tue Jun 08 2010 Liang Suilong <liangsuilong@gmail.com> - 0.06-5
|
||||
- Force to use default compiling macro
|
||||
|
||||
* Fri Jun 04 2010 Peng Wu <pwu@redhat.com> - 0.06-4
|
||||
- Add a patch(zinnia-0.06-fixes-ppc-float.patch),
|
||||
to fixes ppc/ppc64 zinnia tomoe model generating error.
|
||||
|
||||
* Wed Jun 02 2010 Marcela Maslanova <mmaslano@redhat.com> - 0.06-3
|
||||
- Mass rebuild with perl-5.12.0
|
||||
|
||||
* Thu May 20 2010 Peng Wu <pwu@redhat.com> - 0.06-2
|
||||
- Auto generate zinnia tomoe model files,
|
||||
and includes all model files in zinnia-tomoe noarch sub-package.
|
||||
|
||||
* Thu May 20 2010 Peng Wu <pwu@redhat.com> - 0.06-1
|
||||
- Update to version 0.06.
|
||||
|
||||
* Wed Mar 10 2010 Liang Suilong <liangsuilong@gmail.com> - 0.05-4
|
||||
- Fix the bugs of SPEC file
|
||||
|
||||
* Fri Mar 04 2010 Liang Suilong <liangsuilong@gmail.com> - 0.05-3
|
||||
- Fix something wrong of spec file
|
||||
|
||||
* Wed Mar 02 2010 Liang Suilong <liangsuilong@gmail.com> - 0.05-2
|
||||
- Rename Subpackage for perl and python
|
||||
|
||||
* Tue Feb 02 2010 Liang Suilong <liangsuilong@gmail.com> - 0.05-1
|
||||
- Initial Package
|
||||
Loading…
Add table
Add a link
Reference in a new issue