diff --git a/sci-misc/openfst/Manifest b/sci-misc/openfst/Manifest index 3f2abd738e9..f89088f0abe 100644 --- a/sci-misc/openfst/Manifest +++ b/sci-misc/openfst/Manifest @@ -1 +1 @@ -DIST openfst-1.8.1.tar.gz 1333532 BLAKE2B 5cc6d222a91c774edde869246fc8ae27ce1975632ac17d3b28236e63c65b6d7f637c1e88c54378b63ef66d59a29acc528a4c3ccc66ec3d7e20100f990cb1d67c SHA512 4c350a3f47de33d134536ac70a906cabf7d3641527c6823d378c4dd8651082dd9246343a233ad7c4c25a42905315441a6528e3e3c3730bfd17da320098e94b59 +DIST openfst-1.8.2.tar.gz 1342793 BLAKE2B bae3ff40e1234a5c2a9bbd642ba5a7e29b0ecef2e304b2a952d1ebb354c3fb4d772dfdf85710fcd4940e01798ac4064226377e59f1a3f46b2331219e1bd3f8cf SHA512 ca7f9f19e24141e1f1d0bbabf43795e6e278bce3887c14261d9ce204a0e01b1588eaf982755a9105247510a19f67da2f566e9b14b1d869497148f95b55606d5c diff --git a/sci-misc/openfst/files/kaldi-openfst-1.4.1.patch b/sci-misc/openfst/files/kaldi-openfst-1.4.1.patch deleted file mode 100644 index 140ea4e24fc..00000000000 --- a/sci-misc/openfst/files/kaldi-openfst-1.4.1.patch +++ /dev/null @@ -1,269 +0,0 @@ -diff -crB openfst-1.4.1.orig/src/include/fst/lock.h openfst-1.4.1/src/include/fst/lock.h -*** openfst-1.4.1.orig/src/include/fst/lock.h 2012-04-25 19:43:47.000000000 -0400 ---- openfst-1.4.1/src/include/fst/lock.h 2015-02-28 14:12:29.009385600 -0400 -*************** -*** 78,85 **** - RefCounter() : count_(1) {} - - int count() const { return count_; } -! int Incr() const { return ++count_; } -! int Decr() const { return --count_; } - - private: - mutable int count_; ---- 78,93 ---- - RefCounter() : count_(1) {} - - int count() const { return count_; } -! -! // below lines are modifications of openfst for multi-thrads support, -! // from tools/extras/openfst_gcc41up.patch, applied by tools/Makefile, -! // applicable to gcc 4.1 or above -! // int Incr() const { return ++count_; } -! // int Decr() const { return --count_; } -! -! int Incr() const { return __sync_add_and_fetch(&count_, 1); } -! int Decr() const { return __sync_sub_and_fetch(&count_, 1); } -! // end modifications - - private: - mutable int count_; -diff -crB openfst-1.4.1.orig/src/include/fst/minimize.h openfst-1.4.1/src/include/fst/minimize.h -*** openfst-1.4.1.orig/src/include/fst/minimize.h 2014-04-29 18:15:17.000000000 -0400 ---- openfst-1.4.1/src/include/fst/minimize.h 2015-02-28 14:11:39.270566070 -0400 -*************** -*** 134,140 **** - typedef typename A::Weight Weight; - typedef ReverseArc RevA; - -! CyclicMinimizer(const ExpandedFst& fst) { - Initialize(fst); - Compute(fst); - } ---- 134,147 ---- - typedef typename A::Weight Weight; - typedef ReverseArc RevA; - -! CyclicMinimizer(const ExpandedFst& fst): -! // tell the Partition data-member to expect multiple repeated -! // calls to SplitOn with the same element if we are non-deterministic. -! P_(fst.Properties(kIDeterministic, true) == 0) { -! if(fst.Properties(kIDeterministic, true) == 0) -! CHECK(Weight::Properties() & kIdempotent); // this minimization -! // algorithm for non-deterministic FSTs can only work with idempotent -! // semirings. - Initialize(fst); - Compute(fst); - } -*************** -*** 315,321 **** - typedef typename A::StateId ClassId; - typedef typename A::Weight Weight; - -! AcyclicMinimizer(const ExpandedFst& fst) { - Initialize(fst); - Refine(fst); - } ---- 322,334 ---- - typedef typename A::StateId ClassId; - typedef typename A::Weight Weight; - -! AcyclicMinimizer(const ExpandedFst& fst): -! // tell the Partition data-member to expect multiple repeated -! // calls to SplitOn with the same element if we are non-deterministic. -! partition_(fst.Properties(kIDeterministic, true) == 0) { -! if(fst.Properties(kIDeterministic, true) == 0) -! CHECK(Weight::Properties() & kIdempotent); // minimization for -! // non-deterministic FSTs can only work with idempotent semirings. - Initialize(fst); - Refine(fst); - } -*************** -*** 531,543 **** - void Minimize(MutableFst* fst, - MutableFst* sfst = 0, - float delta = kDelta) { -! uint64 props = fst->Properties(kAcceptor | kIDeterministic| -! kWeighted | kUnweighted, true); -! if (!(props & kIDeterministic)) { -! FSTERROR() << "FST is not deterministic"; -! fst->SetProperties(kError, kError); -! return; -! } - - if (!(props & kAcceptor)) { // weighted transducer - VectorFst< GallicArc > gfst; ---- 544,550 ---- - void Minimize(MutableFst* fst, - MutableFst* sfst = 0, - float delta = kDelta) { -! uint64 props = fst->Properties(kAcceptor | kWeighted | kUnweighted, true); - - if (!(props & kAcceptor)) { // weighted transducer - VectorFst< GallicArc > gfst; -diff -crB openfst-1.4.1.orig/src/include/fst/partition.h openfst-1.4.1/src/include/fst/partition.h -*** openfst-1.4.1.orig/src/include/fst/partition.h 2014-04-29 18:15:17.000000000 -0400 ---- openfst-1.4.1/src/include/fst/partition.h 2015-02-28 14:11:39.271566087 -0400 -*************** -*** 43,50 **** - friend class PartitionIterator; - - struct Element { -! Element() : value(0), next(0), prev(0) {} -! Element(T v) : value(v), next(0), prev(0) {} - - T value; - Element* next; ---- 43,50 ---- - friend class PartitionIterator; - - struct Element { -! Element() : value(0), next(0), prev(0) {} -! Element(T v) : value(v), next(0), prev(0) {} - - T value; - Element* next; -*************** -*** 52,60 **** - }; - - public: -! Partition() {} - -! Partition(T num_states) { - Initialize(num_states); - } - ---- 52,62 ---- - }; - - public: -! Partition(bool allow_repeated_split): -! allow_repeated_split_(allow_repeated_split) {} - -! Partition(bool allow_repeated_split, T num_states): -! allow_repeated_split_(allow_repeated_split) { - Initialize(num_states); - } - -*************** -*** 137,152 **** - if (class_size_[class_id] == 1) return; - - // first time class is split -! if (split_size_[class_id] == 0) - visited_classes_.push_back(class_id); -! - // increment size of split (set of element at head of chain) - split_size_[class_id]++; -! - // update split point -! if (class_split_[class_id] == 0) -! class_split_[class_id] = classes_[class_id]; -! if (class_split_[class_id] == elements_[element_id]) - class_split_[class_id] = elements_[element_id]->next; - - // move to head of chain in same class ---- 139,154 ---- - if (class_size_[class_id] == 1) return; - - // first time class is split -! if (split_size_[class_id] == 0) { - visited_classes_.push_back(class_id); -! class_split_[class_id] = classes_[class_id]; -! } - // increment size of split (set of element at head of chain) - split_size_[class_id]++; -! - // update split point -! if (class_split_[class_id] != 0 -! && class_split_[class_id] == elements_[element_id]) - class_split_[class_id] = elements_[element_id]->next; - - // move to head of chain in same class -*************** -*** 157,165 **** - // class indices of the newly created class. Returns the new_class id - // or -1 if no new class was created. - T SplitRefine(T class_id) { - // only split if necessary -! if (class_size_[class_id] == split_size_[class_id]) { -! class_split_[class_id] = 0; - split_size_[class_id] = 0; - return -1; - } else { ---- 159,169 ---- - // class indices of the newly created class. Returns the new_class id - // or -1 if no new class was created. - T SplitRefine(T class_id) { -+ -+ Element* split_el = class_split_[class_id]; - // only split if necessary -! //if (class_size_[class_id] == split_size_[class_id]) { -! if(split_el == NULL) { // we split on everything... - split_size_[class_id] = 0; - return -1; - } else { -*************** -*** 163,180 **** - split_size_[class_id] = 0; - return -1; - } else { -- - T new_class = AddClass(); - size_t remainder = class_size_[class_id] - split_size_[class_id]; - if (remainder < split_size_[class_id]) { // add smaller -- Element* split_el = class_split_[class_id]; - classes_[new_class] = split_el; -- class_size_[class_id] = split_size_[class_id]; -- class_size_[new_class] = remainder; - split_el->prev->next = 0; - split_el->prev = 0; - } else { -- Element* split_el = class_split_[class_id]; - classes_[new_class] = classes_[class_id]; - class_size_[class_id] = remainder; - class_size_[new_class] = split_size_[class_id]; ---- 167,189 ---- - split_size_[class_id] = 0; - return -1; - } else { - T new_class = AddClass(); -+ -+ if(allow_repeated_split_) { // split_size_ is possibly -+ // inaccurate, so work it out exactly. -+ size_t split_count; Element *e; -+ for(split_count=0,e=classes_[class_id]; -+ e != split_el; split_count++, e=e->next); -+ split_size_[class_id] = split_count; -+ } - size_t remainder = class_size_[class_id] - split_size_[class_id]; - if (remainder < split_size_[class_id]) { // add smaller - classes_[new_class] = split_el; - split_el->prev->next = 0; - split_el->prev = 0; -+ class_size_[class_id] = split_size_[class_id]; -+ class_size_[new_class] = remainder; - } else { - classes_[new_class] = classes_[class_id]; - class_size_[class_id] = remainder; - class_size_[new_class] = split_size_[class_id]; -*************** -*** 245,254 **** ---- 254,269 ---- - vector class_size_; - - // size of split for each class -+ // in the nondeterministic case, split_size_ is actually an upper -+ // bound on the size of split for each class. - vector split_size_; - - // set of visited classes to be used in split refine - vector visited_classes_; -+ -+ // true if input fst was deterministic: we can make -+ // certain assumptions in this case that speed up the algorithm. -+ bool allow_repeated_split_; - }; - - diff --git a/sci-misc/openfst/files/kaldi.patch b/sci-misc/openfst/files/kaldi.patch deleted file mode 100644 index 3a3854eff28..00000000000 --- a/sci-misc/openfst/files/kaldi.patch +++ /dev/null @@ -1,599 +0,0 @@ -diff -crB openfst-1.3.4.orig/src/include/fst/interval-set.h openfst-1.3.4/src/include/fst/interval-set.h -*** openfst-1.3.4.orig/src/include/fst/interval-set.h 2013-01-24 06:36:23.000000000 +0400 ---- openfst-1.3.4/src/include/fst/interval-set.h 2013-11-21 15:59:08.541136087 +0400 -*************** -*** 37,74 **** - class IntervalSet { - public: - struct Interval { -! T begin; -! T end; - -! Interval() : begin(-1), end(-1) {} - -! Interval(T b, T e) : begin(b), end(e) {} - - bool operator<(const Interval &i) const { -! return begin < i.begin || (begin == i.begin && end > i.end); - } - - bool operator==(const Interval &i) const { -! return begin == i.begin && end == i.end; - } - - bool operator!=(const Interval &i) const { -! return begin != i.begin || end != i.end; - } - - istream &Read(istream &strm) { - T n; - ReadType(strm, &n); -! begin = n; - ReadType(strm, &n); -! end = n; - return strm; - } - - ostream &Write(ostream &strm) const { -! T n = begin; - WriteType(strm, n); -! n = end; - WriteType(strm, n); - return strm; - } ---- 37,74 ---- - class IntervalSet { - public: - struct Interval { -! T begin_; -! T end_; - -! Interval() : begin_(-1), end_(-1) {} - -! Interval(T b, T e) : begin_(b), end_(e) {} - - bool operator<(const Interval &i) const { -! return begin_ < i.begin_ || (begin_ == i.begin_ && end_ > i.end_); - } - - bool operator==(const Interval &i) const { -! return begin_ == i.begin_ && end_ == i.end_; - } - - bool operator!=(const Interval &i) const { -! return begin_ != i.begin_ || end_ != i.end_; - } - - istream &Read(istream &strm) { - T n; - ReadType(strm, &n); -! begin_ = n; - ReadType(strm, &n); -! end_ = n; - return strm; - } - - ostream &Write(ostream &strm) const { -! T n = begin_; - WriteType(strm, n); -! n = end_; - WriteType(strm, n); - return strm; - } -*************** -*** 108,114 **** - lower_bound(intervals_.begin(), intervals_.end(), interval); - if (lb == intervals_.begin()) - return false; -! return (--lb)->end > value; - } - - // Requires intervals be normalized. ---- 108,114 ---- - lower_bound(intervals_.begin(), intervals_.end(), interval); - if (lb == intervals_.begin()) - return false; -! return (--lb)->end_ > value; - } - - // Requires intervals be normalized. -*************** -*** 123,129 **** - - bool Singleton() const { - return intervals_.size() == 1 && -! intervals_[0].begin + 1 == intervals_[0].end; - } - - ---- 123,129 ---- - - bool Singleton() const { - return intervals_.size() == 1 && -! intervals_[0].begin_ + 1 == intervals_[0].end_; - } - - -*************** -*** 178,194 **** - T size = 0; - for (T i = 0; i < intervals_.size(); ++i) { - Interval &inti = intervals_[i]; -! if (inti.begin == inti.end) - continue; - for (T j = i + 1; j < intervals_.size(); ++j) { - Interval &intj = intervals_[j]; -! if (intj.begin > inti.end) - break; -! if (intj.end > inti.end) -! inti.end = intj.end; - ++i; - } -! count_ += inti.end - inti.begin; - intervals_[size++] = inti; - } - intervals_.resize(size); ---- 178,194 ---- - T size = 0; - for (T i = 0; i < intervals_.size(); ++i) { - Interval &inti = intervals_[i]; -! if (inti.begin_ == inti.end_) - continue; - for (T j = i + 1; j < intervals_.size(); ++j) { - Interval &intj = intervals_[j]; -! if (intj.begin_ > inti.end_) - break; -! if (intj.end_ > inti.end_) -! inti.end_ = intj.end_; - ++i; - } -! count_ += inti.end_ - inti.begin_; - intervals_[size++] = inti; - } - intervals_.resize(size); -*************** -*** 208,224 **** - oset->count_ = 0; - - while (it1 != intervals_.end() && it2 != iintervals->end()) { -! if (it1->end <= it2->begin) { - ++it1; -! } else if (it2->end <= it1->begin) { - ++it2; - } else { - Interval interval; -! interval.begin = max(it1->begin, it2->begin); -! interval.end = min(it1->end, it2->end); - ointervals->push_back(interval); -! oset->count_ += interval.end - interval.begin; -! if (it1->end < it2->end) - ++it1; - else - ++it2; ---- 208,224 ---- - oset->count_ = 0; - - while (it1 != intervals_.end() && it2 != iintervals->end()) { -! if (it1->end_ <= it2->begin_) { - ++it1; -! } else if (it2->end_ <= it1->begin_) { - ++it2; - } else { - Interval interval; -! interval.begin_ = max(it1->begin_, it2->begin_); -! interval.end_ = min(it1->end_, it2->end_); - ointervals->push_back(interval); -! oset->count_ += interval.end_ - interval.begin_; -! if (it1->end_ < it2->end_) - ++it1; - else - ++it2; -*************** -*** 235,255 **** - oset->count_ = 0; - - Interval interval; -! interval.begin = 0; - for (typename vector::const_iterator it = intervals_.begin(); - it != intervals_.end(); - ++it) { -! interval.end = min(it->begin, maxval); -! if (interval.begin < interval.end) { - ointervals->push_back(interval); -! oset->count_ += interval.end - interval.begin; - } -! interval.begin = it->end; - } -! interval.end = maxval; -! if (interval.begin < interval.end) { - ointervals->push_back(interval); -! oset->count_ += interval.end - interval.begin; - } - } - ---- 235,255 ---- - oset->count_ = 0; - - Interval interval; -! interval.begin_ = 0; - for (typename vector::const_iterator it = intervals_.begin(); - it != intervals_.end(); - ++it) { -! interval.end_ = min(it->begin_, maxval); -! if (interval.begin_ < interval.end_) { - ointervals->push_back(interval); -! oset->count_ += interval.end_ - interval.begin_; - } -! interval.begin_ = it->end_; - } -! interval.end_ = maxval; -! if (interval.begin_ < interval.end_) { - ointervals->push_back(interval); -! oset->count_ += interval.end_ - interval.begin_; - } - } - -*************** -*** 263,269 **** - oset->count_ = 0; - } else { - IntervalSet cset; -! iset.Complement(intervals_.back().end, &cset); - Intersect(cset, oset); - } - } ---- 263,269 ---- - oset->count_ = 0; - } else { - IntervalSet cset; -! iset.Complement(intervals_.back().end_, &cset); - Intersect(cset, oset); - } - } -*************** -*** 277,285 **** - typename vector::const_iterator it2 = intervals->begin(); - - while (it1 != intervals_.end() && it2 != intervals->end()) { -! if (it1->end <= it2->begin) { - ++it1; -! } else if (it2->end <= it1->begin) { - ++it2; - } else { - return true; ---- 277,285 ---- - typename vector::const_iterator it2 = intervals->begin(); - - while (it1 != intervals_.end() && it2 != intervals->end()) { -! if (it1->end_ <= it2->begin_) { - ++it1; -! } else if (it2->end_ <= it1->begin_) { - ++it2; - } else { - return true; -*************** -*** 300,320 **** - bool overlap = false; // point in both intervals_ and intervals - - while (it1 != intervals_.end() && it2 != intervals->end()) { -! if (it1->end <= it2->begin) { // no overlap - it1 first - only1 = true; - ++it1; -! } else if (it2->end <= it1->begin) { // no overlap - it2 first - only2 = true; - ++it2; -! } else if (it2->begin == it1->begin && it2->end == it1->end) { // equals - overlap = true; - ++it1; - ++it2; -! } else if (it2->begin <= it1->begin && it2->end >= it1->end) { // 1 c 2 - only2 = true; - overlap = true; - ++it1; -! } else if (it1->begin <= it2->begin && it1->end >= it2->end) { // 2 c 1 - only1 = true; - overlap = true; - ++it2; ---- 300,320 ---- - bool overlap = false; // point in both intervals_ and intervals - - while (it1 != intervals_.end() && it2 != intervals->end()) { -! if (it1->end_ <= it2->begin_) { // no overlap - it1 first - only1 = true; - ++it1; -! } else if (it2->end_ <= it1->begin_) { // no overlap - it2 first - only2 = true; - ++it2; -! } else if (it2->begin_ == it1->begin_ && it2->end_ == it1->end_) { // equals - overlap = true; - ++it1; - ++it2; -! } else if (it2->begin_ <= it1->begin_ && it2->end_ >= it1->end_) { // 1 c 2 - only2 = true; - overlap = true; - ++it1; -! } else if (it1->begin_ <= it2->begin_ && it1->end_ >= it2->end_) { // 2 c 1 - only1 = true; - overlap = true; - ++it2; -*************** -*** 346,356 **** - typename vector::const_iterator it2 = intervals->begin(); - - while (it1 != intervals_.end() && it2 != intervals->end()) { -! if (it1->end <= it2->begin) { // no overlap - it1 first - ++it1; -! } else if (it2->begin < it1->begin || it2->end > it1->end) { // no C - return false; -! } else if (it2->end == it1->end) { - ++it1; - ++it2; - } else { ---- 346,356 ---- - typename vector::const_iterator it2 = intervals->begin(); - - while (it1 != intervals_.end() && it2 != intervals->end()) { -! if (it1->end_ <= it2->begin_) { // no overlap - it1 first - ++it1; -! } else if (it2->begin_ < it1->begin_ || it2->end_ > it1->end_) { // no C - return false; -! } else if (it2->end_ == it1->end_) { - ++it1; - ++it2; - } else { -*************** -*** 370,376 **** - ++it) { - if (it != intervals->begin()) - strm << ","; -! strm << "[" << it->begin << "," << it->end << ")"; - } - strm << "}"; - return strm; ---- 370,376 ---- - ++it) { - if (it != intervals->begin()) - strm << ","; -! strm << "[" << it->begin_ << "," << it->end_ << ")"; - } - strm << "}"; - return strm; -diff -crB openfst-1.3.4.orig/src/include/fst/minimize.h openfst-1.3.4/src/include/fst/minimize.h -*** openfst-1.3.4.orig/src/include/fst/minimize.h 2013-01-24 06:36:23.000000000 +0400 ---- openfst-1.3.4/src/include/fst/minimize.h 2013-11-21 15:59:08.539136087 +0400 -*************** -*** 134,140 **** - typedef typename A::Weight Weight; - typedef ReverseArc RevA; - -! CyclicMinimizer(const ExpandedFst& fst) { - Initialize(fst); - Compute(fst); - } ---- 134,147 ---- - typedef typename A::Weight Weight; - typedef ReverseArc RevA; - -! CyclicMinimizer(const ExpandedFst& fst): -! // tell the Partition data-member to expect multiple repeated -! // calls to SplitOn with the same element if we are non-deterministic. -! P_(fst.Properties(kIDeterministic, true) == 0) { -! if(fst.Properties(kIDeterministic, true) == 0) -! CHECK(Weight::Properties() & kIdempotent); // this minimization -! // algorithm for non-deterministic FSTs can only work with idempotent -! // semirings. - Initialize(fst); - Compute(fst); - } -*************** -*** 315,321 **** - typedef typename A::StateId ClassId; - typedef typename A::Weight Weight; - -! AcyclicMinimizer(const ExpandedFst& fst) { - Initialize(fst); - Refine(fst); - } ---- 322,334 ---- - typedef typename A::StateId ClassId; - typedef typename A::Weight Weight; - -! AcyclicMinimizer(const ExpandedFst& fst): -! // tell the Partition data-member to expect multiple repeated -! // calls to SplitOn with the same element if we are non-deterministic. -! partition_(fst.Properties(kIDeterministic, true) == 0) { -! if(fst.Properties(kIDeterministic, true) == 0) -! CHECK(Weight::Properties() & kIdempotent); // minimization for -! // non-deterministic FSTs can only work with idempotent semirings. - Initialize(fst); - Refine(fst); - } -*************** -*** 531,543 **** - void Minimize(MutableFst* fst, - MutableFst* sfst = 0, - float delta = kDelta) { -! uint64 props = fst->Properties(kAcceptor | kIDeterministic| -! kWeighted | kUnweighted, true); -! if (!(props & kIDeterministic)) { -! FSTERROR() << "FST is not deterministic"; -! fst->SetProperties(kError, kError); -! return; -! } - - if (!(props & kAcceptor)) { // weighted transducer - VectorFst< GallicArc > gfst; ---- 544,550 ---- - void Minimize(MutableFst* fst, - MutableFst* sfst = 0, - float delta = kDelta) { -! uint64 props = fst->Properties(kAcceptor | kWeighted | kUnweighted, true); - - if (!(props & kAcceptor)) { // weighted transducer - VectorFst< GallicArc > gfst; -diff -crB openfst-1.3.4.orig/src/include/fst/partition.h openfst-1.3.4/src/include/fst/partition.h -*** openfst-1.3.4.orig/src/include/fst/partition.h 2013-01-24 06:36:23.000000000 +0400 ---- openfst-1.3.4/src/include/fst/partition.h 2013-11-21 15:59:08.539136087 +0400 -*************** -*** 43,50 **** - friend class PartitionIterator; - - struct Element { -! Element() : value(0), next(0), prev(0) {} -! Element(T v) : value(v), next(0), prev(0) {} - - T value; - Element* next; ---- 43,50 ---- - friend class PartitionIterator; - - struct Element { -! Element() : value(0), next(0), prev(0) {} -! Element(T v) : value(v), next(0), prev(0) {} - - T value; - Element* next; -*************** -*** 52,60 **** - }; - - public: -! Partition() {} - -! Partition(T num_states) { - Initialize(num_states); - } - ---- 52,62 ---- - }; - - public: -! Partition(bool allow_repeated_split): -! allow_repeated_split_(allow_repeated_split) {} - -! Partition(bool allow_repeated_split, T num_states): -! allow_repeated_split_(allow_repeated_split) { - Initialize(num_states); - } - -*************** -*** 137,152 **** - if (class_size_[class_id] == 1) return; - - // first time class is split -! if (split_size_[class_id] == 0) - visited_classes_.push_back(class_id); -! - // increment size of split (set of element at head of chain) - split_size_[class_id]++; -! - // update split point -! if (class_split_[class_id] == 0) -! class_split_[class_id] = classes_[class_id]; -! if (class_split_[class_id] == elements_[element_id]) - class_split_[class_id] = elements_[element_id]->next; - - // move to head of chain in same class ---- 139,154 ---- - if (class_size_[class_id] == 1) return; - - // first time class is split -! if (split_size_[class_id] == 0) { - visited_classes_.push_back(class_id); -! class_split_[class_id] = classes_[class_id]; -! } - // increment size of split (set of element at head of chain) - split_size_[class_id]++; -! - // update split point -! if (class_split_[class_id] != 0 -! && class_split_[class_id] == elements_[element_id]) - class_split_[class_id] = elements_[element_id]->next; - - // move to head of chain in same class -*************** -*** 157,165 **** - // class indices of the newly created class. Returns the new_class id - // or -1 if no new class was created. - T SplitRefine(T class_id) { - // only split if necessary -! if (class_size_[class_id] == split_size_[class_id]) { -! class_split_[class_id] = 0; - split_size_[class_id] = 0; - return -1; - } else { ---- 159,169 ---- - // class indices of the newly created class. Returns the new_class id - // or -1 if no new class was created. - T SplitRefine(T class_id) { -+ -+ Element* split_el = class_split_[class_id]; - // only split if necessary -! //if (class_size_[class_id] == split_size_[class_id]) { -! if(split_el == NULL) { // we split on everything... - split_size_[class_id] = 0; - return -1; - } else { -*************** -*** 163,180 **** - split_size_[class_id] = 0; - return -1; - } else { -- - T new_class = AddClass(); - size_t remainder = class_size_[class_id] - split_size_[class_id]; - if (remainder < split_size_[class_id]) { // add smaller -- Element* split_el = class_split_[class_id]; - classes_[new_class] = split_el; -- class_size_[class_id] = split_size_[class_id]; -- class_size_[new_class] = remainder; - split_el->prev->next = 0; - split_el->prev = 0; - } else { -- Element* split_el = class_split_[class_id]; - classes_[new_class] = classes_[class_id]; - class_size_[class_id] = remainder; - class_size_[new_class] = split_size_[class_id]; ---- 167,189 ---- - split_size_[class_id] = 0; - return -1; - } else { - T new_class = AddClass(); -+ -+ if(allow_repeated_split_) { // split_size_ is possibly -+ // inaccurate, so work it out exactly. -+ size_t split_count; Element *e; -+ for(split_count=0,e=classes_[class_id]; -+ e != split_el; split_count++, e=e->next); -+ split_size_[class_id] = split_count; -+ } - size_t remainder = class_size_[class_id] - split_size_[class_id]; - if (remainder < split_size_[class_id]) { // add smaller - classes_[new_class] = split_el; - split_el->prev->next = 0; - split_el->prev = 0; -+ class_size_[class_id] = split_size_[class_id]; -+ class_size_[new_class] = remainder; - } else { - classes_[new_class] = classes_[class_id]; - class_size_[class_id] = remainder; - class_size_[new_class] = split_size_[class_id]; -*************** -*** 245,254 **** ---- 254,269 ---- - vector class_size_; - - // size of split for each class -+ // in the nondeterministic case, split_size_ is actually an upper -+ // bound on the size of split for each class. - vector split_size_; - - // set of visited classes to be used in split refine - vector visited_classes_; -+ -+ // true if input fst was deterministic: we can make -+ // certain assumptions in this case that speed up the algorithm. -+ bool allow_repeated_split_; - }; - - diff --git a/sci-misc/openfst/files/openfst-20080422_beta-gcc-4.3.patch b/sci-misc/openfst/files/openfst-20080422_beta-gcc-4.3.patch deleted file mode 100644 index 8eb3116d09f..00000000000 --- a/sci-misc/openfst/files/openfst-20080422_beta-gcc-4.3.patch +++ /dev/null @@ -1,83 +0,0 @@ -diff -Naur -Naur OpenFst/fst/bin/main.cc OpenFst-nu/fst/bin/main.cc ---- OpenFst/fst/bin/main.cc 2008-03-17 17:42:00.000000000 +0200 -+++ OpenFst-nu/fst/bin/main.cc 2008-10-20 16:30:36.000000000 +0300 -@@ -18,6 +18,8 @@ - // Classes and functions for registering and invoking Fst main - // functions that support multiple and extensible arc types. - -+#include -+#include - #include - - #include "fst/bin/main.h" -diff -Naur -Naur OpenFst/fst/bin/Makefile OpenFst-nu/fst/bin/Makefile ---- OpenFst/fst/bin/Makefile 2008-03-17 17:42:00.000000000 +0200 -+++ OpenFst-nu/fst/bin/Makefile 2008-10-20 16:31:12.000000000 +0300 -@@ -15,7 +15,7 @@ - FSTLIBMAIN=libfstmain.$(LIBTYPE) - LIBS=-lfstmain -lfst -lm -lpthread -ldl - CC=g++ --OPT=-O2 -+OPT=-O2 -fPIC - CFLAGS=-I../.. $(OPT) -DFST_DL - LDLFLAGS=-Wl,-L$(LIBDIR),-L$(BINDIR) - LDRFLAGS=-Wl,-rpath,$(LIBDIR),-rpath,$(BINDIR) # empty on macosx -diff -Naur -Naur OpenFst/fst/lib/compat.h OpenFst-nu/fst/lib/compat.h ---- OpenFst/fst/lib/compat.h 2008-03-17 17:41:56.000000000 +0200 -+++ OpenFst-nu/fst/lib/compat.h 2008-10-20 16:25:49.000000000 +0300 -@@ -27,7 +27,7 @@ - #include - #include - #include -- -+#include - #include - #include - #include -diff -Naur -Naur OpenFst/fst/lib/Makefile OpenFst-nu/fst/lib/Makefile ---- OpenFst/fst/lib/Makefile 2008-03-17 17:41:56.000000000 +0200 -+++ OpenFst-nu/fst/lib/Makefile 2008-10-20 16:23:05.000000000 +0300 -@@ -2,7 +2,7 @@ - SRCS=fst.cc properties.cc symbol-table.cc compat.cc - OBJS=fst.o properties.o symbol-table.o compat.o - CC=g++ --OPT=-O2 -+OPT=-fPIC -O2 - CFLAGS=$(OPT) -I../.. -DFST_DL - LIBTYPE=so # "dylib" on macosx - SOFLAGS=-shared # "-dynamiclib -flat_namespace -undefined suppress" on macosx -diff -Naur -Naur OpenFst/fst/lib/randgen.h OpenFst-nu/fst/lib/randgen.h ---- OpenFst/fst/lib/randgen.h 2008-03-17 17:41:56.000000000 +0200 -+++ OpenFst-nu/fst/lib/randgen.h 2008-10-20 16:44:33.000000000 +0300 -@@ -23,6 +23,7 @@ - #include - #include - #include -+#include - - #include "fst/lib/mutable-fst.h" - -diff -Naur -Naur OpenFst/fst/lib/symbol-table.cc OpenFst-nu/fst/lib/symbol-table.cc ---- OpenFst/fst/lib/symbol-table.cc 2008-03-17 17:41:56.000000000 +0200 -+++ OpenFst-nu/fst/lib/symbol-table.cc 2008-10-20 16:21:16.000000000 +0300 -@@ -17,6 +17,8 @@ - // \file - // Classes to provide symbol-to-integer and integer-to-symbol mappings. - -+#include -+ - #include "fst/lib/symbol-table.h" - #include "fst/lib/util.h" - -diff -Naur -Naur OpenFst/fst/lib/vector-fst.h OpenFst-nu/fst/lib/vector-fst.h ---- OpenFst/fst/lib/vector-fst.h 2008-03-17 17:41:56.000000000 +0200 -+++ OpenFst-nu/fst/lib/vector-fst.h 2008-10-20 16:21:25.000000000 +0300 -@@ -21,6 +21,8 @@ - #ifndef FST_LIB_VECTOR_FST_H__ - #define FST_LIB_VECTOR_FST_H__ - -+#include -+ - #include "fst/lib/mutable-fst.h" - #include "fst/lib/test-properties.h" - diff --git a/sci-misc/openfst/metadata.xml b/sci-misc/openfst/metadata.xml index 2d4fb61e668..8b44b5491e2 100644 --- a/sci-misc/openfst/metadata.xml +++ b/sci-misc/openfst/metadata.xml @@ -4,4 +4,8 @@ flammie@gentoo.org + + sci@gentoo.org + Gentoo Science Project + diff --git a/sci-misc/openfst/openfst-1.8.1.ebuild b/sci-misc/openfst/openfst-1.8.2.ebuild similarity index 93% rename from sci-misc/openfst/openfst-1.8.1.ebuild rename to sci-misc/openfst/openfst-1.8.2.ebuild index 16c275e8ee0..923a36f6488 100644 --- a/sci-misc/openfst/openfst-1.8.1.ebuild +++ b/sci-misc/openfst/openfst-1.8.2.ebuild @@ -1,7 +1,7 @@ -# Copyright 1999-2021 Gentoo Authors +# Copyright 1999-2023 Gentoo Authors # Distributed under the terms of the GNU General Public License v2 -EAPI=7 +EAPI=8 DESCRIPTION="Finite State Transducer tools by Google et al" HOMEPAGE="http://www.openfst.org"