commit:     6ca9a79d3ff0d2614f9d23c899175895f639accb
Author:     Tomás Carvalho <tomas <AT> thetimesweeper <DOT> com>
AuthorDate: Tue Sep 19 10:25:49 2023 +0000
Commit:     Andrew Ammerlaan <andrewammerlaan <AT> gentoo <DOT> org>
CommitDate: Wed Sep 20 07:05:24 2023 +0000
URL:        https://gitweb.gentoo.org/proj/sci.git/commit/?id=6ca9a79d

sci-misc/openfst: add 1.8.2, drop 1.8.1

Closes: https://github.com/gentoo/sci/pull/1218
Signed-off-by: Andrew Ammerlaan <andrewammerlaan <AT> gentoo.org>

 sci-misc/openfst/files/kaldi-openfst-1.4.1.patch   | 269 ---------
 sci-misc/openfst/files/kaldi.patch                 | 599 ---------------------
 .../files/openfst-20080422_beta-gcc-4.3.patch      |  83 ---
 sci-misc/openfst/metadata.xml                      |   4 +
 .../{openfst-1.8.1.ebuild => openfst-1.8.2.ebuild} |   4 +-
 5 files changed, 6 insertions(+), 953 deletions(-)

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 140ea4e24..000000000
--- 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<A> RevA;
-  
-!   CyclicMinimizer(const ExpandedFst<A>& fst) {
-      Initialize(fst);
-      Compute(fst);
-    }
---- 134,147 ----
-    typedef typename A::Weight Weight;
-    typedef ReverseArc<A> RevA;
-  
-!   CyclicMinimizer(const ExpandedFst<A>& 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<A>& fst) {
-      Initialize(fst);
-      Refine(fst);
-    }
---- 322,334 ----
-    typedef typename A::StateId ClassId;
-    typedef typename A::Weight Weight;
-  
-!   AcyclicMinimizer(const ExpandedFst<A>& 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<A>* fst,
-                MutableFst<A>* 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<A, GALLIC_LEFT> > gfst;
---- 544,550 ----
-  void Minimize(MutableFst<A>* fst,
-                MutableFst<A>* sfst = 0,
-                float delta = kDelta) {
-!   uint64 props = fst->Properties(kAcceptor | kWeighted | kUnweighted, true);
-  
-    if (!(props & kAcceptor)) {  // weighted transducer
-      VectorFst< GallicArc<A, GALLIC_LEFT> > 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<T>;
-  
-    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<T>;
-  
-    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<T> 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<T> split_size_;
-  
-    // set of visited classes to be used in split refine
-    vector<T> 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 3a3854eff..000000000
--- 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<Interval>::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<Interval>::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<T> cset;
-!     iset.Complement(intervals_.back().end, &cset);
-      Intersect(cset, oset);
-    }
-  }
---- 263,269 ----
-      oset->count_ = 0;
-    } else {
-      IntervalSet<T> cset;
-!     iset.Complement(intervals_.back().end_, &cset);
-      Intersect(cset, oset);
-    }
-  }
-***************
-*** 277,285 ****
-    typename vector<Interval>::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<Interval>::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<Interval>::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<Interval>::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<A> RevA;
-  
-!   CyclicMinimizer(const ExpandedFst<A>& fst) {
-      Initialize(fst);
-      Compute(fst);
-    }
---- 134,147 ----
-    typedef typename A::Weight Weight;
-    typedef ReverseArc<A> RevA;
-  
-!   CyclicMinimizer(const ExpandedFst<A>& 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<A>& fst) {
-      Initialize(fst);
-      Refine(fst);
-    }
---- 322,334 ----
-    typedef typename A::StateId ClassId;
-    typedef typename A::Weight Weight;
-  
-!   AcyclicMinimizer(const ExpandedFst<A>& 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<A>* fst,
-                MutableFst<A>* 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<A, STRING_LEFT> > gfst;
---- 544,550 ----
-  void Minimize(MutableFst<A>* fst,
-                MutableFst<A>* sfst = 0,
-                float delta = kDelta) {
-!   uint64 props = fst->Properties(kAcceptor | kWeighted | kUnweighted, true);
-  
-    if (!(props & kAcceptor)) {  // weighted transducer
-      VectorFst< GallicArc<A, STRING_LEFT> > 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<T>;
-  
-    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<T>;
-  
-    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<T> 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<T> split_size_;
-  
-    // set of visited classes to be used in split refine
-    vector<T> 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 8eb3116d0..000000000
--- 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 <cstring>
-+#include <climits>
- #include <iostream>
- 
- #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 <map>
- #include <string>
- #include <vector>
--
-+#include <cstring>
- #include <ext/hash_map>
- #include <fcntl.h>
- #include <pthread.h>
-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 <cmath>
- #include <cstdlib>
- #include <ctime>
-+#include <climits>
- 
- #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 <cstring>
-+
- #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 <cstring>
-+
- #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 2d4fb61e6..8b44b5491 100644
--- a/sci-misc/openfst/metadata.xml
+++ b/sci-misc/openfst/metadata.xml
@@ -4,4 +4,8 @@
        <maintainer type="person">
                <email>[email protected]</email>
        </maintainer>
+       <maintainer type="project">
+               <email>[email protected]</email>
+               <name>Gentoo Science Project</name>
+       </maintainer>
 </pkgmetadata>

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 16c275e8e..923a36f64 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";

Reply via email to