diff -Nru frog-0.13.7/debian/changelog frog-0.13.7/debian/changelog --- frog-0.13.7/debian/changelog 2017-01-23 15:17:00.000000000 +0000 +++ frog-0.13.7/debian/changelog 2018-11-20 02:15:54.000000000 +0000 @@ -1,3 +1,10 @@ +frog (0.13.7-1+rpi1) buster-staging; urgency=medium + + * Apply patch from https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=913504 + to fix build with new ICU. + + -- Peter Michael Green Tue, 20 Nov 2018 02:15:54 +0000 + frog (0.13.7-1) unstable; urgency=medium * Updated to new upstream 0.13.7 diff -Nru frog-0.13.7/debian/files frog-0.13.7/debian/files --- frog-0.13.7/debian/files 2017-01-11 16:01:05.000000000 +0000 +++ frog-0.13.7/debian/files 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -frog_0.13.6-1_source.buildinfo science extra diff -Nru frog-0.13.7/debian/patches/frog_ICU_63.1.patch frog-0.13.7/debian/patches/frog_ICU_63.1.patch --- frog-0.13.7/debian/patches/frog_ICU_63.1.patch 1970-01-01 00:00:00.000000000 +0000 +++ frog-0.13.7/debian/patches/frog_ICU_63.1.patch 2018-11-20 02:14:29.000000000 +0000 @@ -0,0 +1,610 @@ +Description: fix FTBFS with ICU 63.1 + Add icu namespace. +Author: Laszlo Boszormenyi (GCS) +Last-Update: 2018-11-09 + +--- + +--- frog-0.13.7.orig/include/frog/mblem_mod.h ++++ frog-0.13.7/include/frog/mblem_mod.h +@@ -52,7 +52,7 @@ class Mblem { + bool init( const TiCC::Configuration& ); + void addDeclaration( folia::Document& doc ) const; + void Classify( folia::Word * ); +- void Classify( const UnicodeString& ); ++ void Classify( const icu::UnicodeString& ); + std::vector > getResult() const; + void filterTag( const std::string& ); + void makeUnique(); +@@ -64,8 +64,8 @@ class Mblem { + void create_MBlem_defaults(); + bool readsettings( const std::string& dir, const std::string& fname ); + void addLemma( folia::Word *, const std::string&) ; +- std::string make_instance( const UnicodeString& in ); +- void getFoLiAResult( folia::Word *, const UnicodeString& ); ++ std::string make_instance( const icu::UnicodeString& in ); ++ void getFoLiAResult( folia::Word *, const icu::UnicodeString& ); + Timbl::TimblAPI *myLex; + std::string punctuation; + size_t history; +--- frog-0.13.7.orig/include/frog/mbma_brackets.h ++++ frog-0.13.7/include/frog/mbma_brackets.h +@@ -71,12 +71,12 @@ public: + + Status status() const { return _status; }; + void set_status( const Status s ) { _status = s; }; +- virtual UnicodeString morpheme() const { return "";}; ++ virtual icu::UnicodeString morpheme() const { return "";}; + virtual std::string inflection() const { return ""; }; + virtual std::string original() const { return ""; }; + virtual int infixpos() const { return -1; }; + virtual bool isglue() const { return false; }; +- virtual UnicodeString put( bool = true ) const; ++ virtual icu::UnicodeString put( bool = true ) const; + virtual BaseBracket *append( BaseBracket * ){ abort(); }; + virtual bool isNested() { return false; }; + virtual void resolveGlue(){ abort(); }; +@@ -102,9 +102,9 @@ public: + class BracketLeaf: public BaseBracket { + public: + BracketLeaf( const RulePart&, int, TiCC::LogStream& ); +- BracketLeaf( CLEX::Type, const UnicodeString&, int, TiCC::LogStream& ); +- UnicodeString put( bool = true ) const; +- UnicodeString morpheme() const { return morph; }; ++ BracketLeaf( CLEX::Type, const icu::UnicodeString&, int, TiCC::LogStream& ); ++ icu::UnicodeString put( bool = true ) const; ++ icu::UnicodeString morpheme() const { return morph; }; + std::string inflection() const { return inflect; }; + std::string original() const { return orig; }; + int infixpos() const { return ifpos; }; +@@ -115,7 +115,7 @@ public: + private: + int ifpos; + bool glue; +- UnicodeString morph; ++ icu::UnicodeString morph; + std::string orig; + std::string inflect; + }; +@@ -127,7 +127,7 @@ class BracketNest: public BaseBracket { + ~BracketNest(); + bool isNested() { return true; }; + void clearEmptyNodes(); +- UnicodeString put( bool = true ) const; ++ icu::UnicodeString put( bool = true ) const; + bool testMatch( std::list& result, + const std::list::iterator& rpos, + std::list::iterator& bpos ); +--- frog-0.13.7.orig/include/frog/mbma_mod.h ++++ frog-0.13.7/include/frog/mbma_mod.h +@@ -65,7 +65,7 @@ class Mbma { + bool init( const TiCC::Configuration& ); + void addDeclaration( folia::Document& doc ) const; + void Classify( folia::Word * ); +- void Classify( const UnicodeString& ); ++ void Classify( const icu::UnicodeString& ); + void filterHeadTag( const std::string& ); + void filterSubTags( const std::vector& ); + void assign_compounds(); +@@ -73,8 +73,8 @@ class Mbma { + std::vector> getResults( ) const; + void setDeepMorph( bool b ){ doDeepMorph = b; }; + void clearAnalysis(); +- Rule* matchRule( const std::vector&, const UnicodeString& ); +- std::vector execute( const UnicodeString& , ++ Rule* matchRule( const std::vector&, const icu::UnicodeString& ); ++ std::vector execute( const icu::UnicodeString& , + const std::vector& ); + static std::map TAGconv; + static std::string mbma_tagset; +@@ -85,10 +85,10 @@ class Mbma { + bool readsettings( const std::string&, const std::string& ); + void fillMaps(); + void init_cgn( const std::string&, const std::string& ); +- Transliterator * init_trans(); +- UnicodeString filterDiacritics( const UnicodeString& ) const; +- void getFoLiAResult( folia::Word *, const UnicodeString& ) const; +- std::vector make_instances( const UnicodeString& word ); ++ icu::Transliterator * init_trans(); ++ icu::UnicodeString filterDiacritics( const icu::UnicodeString& ) const; ++ void getFoLiAResult( folia::Word *, const icu::UnicodeString& ) const; ++ std::vector make_instances( const icu::UnicodeString& word ); + CLEX::Type getFinalTag( const std::list& ); + int debugFlag; + void addMorph( folia::MorphologyLayer *, +@@ -105,7 +105,7 @@ class Mbma { + std::vector analysis; + std::string version; + TiCC::LogStream *mbmaLog; +- Transliterator *transliterator; ++ icu::Transliterator *transliterator; + Tokenizer::UnicodeFilter *filter; + bool doDeepMorph; + }; +--- frog-0.13.7.orig/include/frog/mbma_rule.h ++++ frog-0.13.7/include/frog/mbma_rule.h +@@ -43,11 +43,11 @@ public: + void get_edits( const std::string& ); + CLEX::Type ResultClass; + std::vector RightHand; +- UnicodeString ins; +- UnicodeString del; +- UnicodeString hide; +- UnicodeString uchar; +- UnicodeString morpheme; ++ icu::UnicodeString ins; ++ icu::UnicodeString del; ++ icu::UnicodeString hide; ++ icu::UnicodeString uchar; ++ icu::UnicodeString morpheme; + std::string inflect; + bool is_affix; + bool is_glue; +@@ -62,13 +62,13 @@ class BracketNest; + class Rule { + public: + Rule( const std::vector&, +- const UnicodeString&, ++ const icu::UnicodeString&, + TiCC::LogStream&, + int ); + ~Rule(); + std::vector extract_morphemes() const; + std::string morpheme_string( bool = false ) const; +- UnicodeString getKey( bool ); ++ icu::UnicodeString getKey( bool ); + bool performEdits(); + void getCleanInflect(); + void reduceZeroNodes(); +@@ -77,8 +77,8 @@ public: + std::vector rules; + int debugFlag; + CLEX::Type tag; +- UnicodeString sortkey; +- UnicodeString orig_word; ++ icu::UnicodeString sortkey; ++ icu::UnicodeString orig_word; + std::string description; + std::string inflection; + Compound::Type compound; +--- frog-0.13.7.orig/src/Parser.cxx ++++ frog-0.13.7/src/Parser.cxx +@@ -822,7 +822,7 @@ parseData Parser::prepareParse( const ve + string head; + string mod; + for ( const auto& mwu : mwuv ){ +- UnicodeString tmp; ++ icu::UnicodeString tmp; + #pragma omp critical(foliaupdate) + { + tmp = mwu->text(); +@@ -853,7 +853,7 @@ parseData Parser::prepareParse( const ve + i += mwuv.size()-1; + } + else { +- UnicodeString tmp; ++ icu::UnicodeString tmp; + #pragma omp critical(foliaupdate) + { + tmp = word->text(); +--- frog-0.13.7.orig/src/iob_tagger_mod.cxx ++++ frog-0.13.7/src/iob_tagger_mod.cxx +@@ -265,7 +265,7 @@ void IOBTagger::Classify( const vectortext(); +--- frog-0.13.7.orig/src/mblem_mod.cxx ++++ frog-0.13.7/src/mblem_mod.cxx +@@ -169,11 +169,11 @@ Mblem::~Mblem(){ + delete mblemLog; + } + +-string Mblem::make_instance( const UnicodeString& in ) { ++string Mblem::make_instance( const icu::UnicodeString& in ) { + if (debug) { + LOG << "making instance from: " << in << endl; + } +- UnicodeString instance = ""; ++ icu::UnicodeString instance = ""; + size_t length = in.length(); + for ( size_t i=0; i < history; i++) { + size_t j = length - history + i; +@@ -266,7 +266,7 @@ void Mblem::makeUnique( ){ + } + } + +-void Mblem::getFoLiAResult( Word *word, const UnicodeString& uWord ){ ++void Mblem::getFoLiAResult( Word *word, const icu::UnicodeString& uWord ){ + if ( mblemResult.empty() ){ + // just return the word as a lemma + string result = UnicodeToUTF8( uWord ); +@@ -294,7 +294,7 @@ void Mblem::addDeclaration( Document& do + void Mblem::Classify( Word *sword ){ + if ( sword->isinstance(PlaceHolder_t ) ) + return; +- UnicodeString uword; ++ icu::UnicodeString uword; + string pos; + string token_class; + #pragma omp critical(foliaupdate) +@@ -322,7 +322,7 @@ void Mblem::Classify( Word *sword ){ + // we have to strip a few letters to get a lemma + auto const& it2 = it1->second.find( token_class ); + if ( it2 != it1->second.end() ){ +- uword = UnicodeString( uword, 0, uword.length() - it2->second ); ++ uword = icu::UnicodeString( uword, 0, uword.length() - it2->second ); + string word = UnicodeToUTF8(uword); + addLemma( sword, word ); + return; +@@ -343,7 +343,7 @@ void Mblem::Classify( Word *sword ){ + getFoLiAResult( sword, uword ); + } + +-void Mblem::Classify( const UnicodeString& uWord ){ ++void Mblem::Classify( const icu::UnicodeString& uWord ){ + mblemResult.clear(); + string inst = make_instance(uWord); + string classString; +@@ -360,7 +360,7 @@ void Mblem::Classify( const UnicodeStrin + int index = 0; + while ( index < numParts ) { + string partS = parts[index++]; +- UnicodeString lemma; ++ icu::UnicodeString lemma; + string restag; + string::size_type pos = partS.find("+"); + if ( pos == string::npos ){ +@@ -376,9 +376,9 @@ void Mblem::Classify( const UnicodeStrin + throw runtime_error( "invalid editstring: " + partS ); + restag = edits[0]; // the first one is the POS tag + +- UnicodeString insstr; +- UnicodeString delstr; +- UnicodeString prefix; ++ icu::UnicodeString insstr; ++ icu::UnicodeString delstr; ++ icu::UnicodeString prefix; + for ( const auto& edit : edits ){ + if ( edit == edits.front() ){ + continue; +@@ -422,7 +422,7 @@ void Mblem::Classify( const UnicodeStrin + LOG << "prefixpos = " << prefixpos << endl; + } + if (prefixpos >= 0) { +- lemma = UnicodeString( uWord, 0L, prefixpos ); ++ lemma = icu::UnicodeString( uWord, 0L, prefixpos ); + prefixpos = prefixpos + prefix.length(); + } + if (debug){ +@@ -441,13 +441,13 @@ void Mblem::Classify( const UnicodeStrin + lemma += uWord; + } + else { +- UnicodeString part = UnicodeString( uWord, prefixpos, uWord.length() - delstr.length() - prefixpos ); ++ icu::UnicodeString part = icu::UnicodeString( uWord, prefixpos, uWord.length() - delstr.length() - prefixpos ); + lemma += part + insstr; + } + } + else if ( insstr.isEmpty() ){ + // no replacement, just take part after the prefix +- lemma += UnicodeString( uWord, prefixpos, uWord.length() ); // uWord; ++ lemma += icu::UnicodeString( uWord, prefixpos, uWord.length() ); // uWord; + } + else { + // but replace if possible +--- frog-0.13.7.orig/src/mblem_prog.cxx ++++ frog-0.13.7/src/mblem_prog.cxx +@@ -168,7 +168,7 @@ void Test( istream& in ){ + if ( useTagger ){ + vector tagrv = tagger.tagLine( s ); + for ( const auto& tr : tagrv ){ +- UnicodeString uWord = folia::UTF8ToUnicode(tr.word()); ++ icu::UnicodeString uWord = folia::UTF8ToUnicode(tr.word()); + myMblem.Classify( uWord ); + myMblem.filterTag( tr.assignedTag() ); + vector > res = myMblem.getResult(); +@@ -184,7 +184,7 @@ void Test( istream& in ){ + vector parts; + TiCC::split( s, parts ); + for ( const auto& w : parts ){ +- UnicodeString uWord = folia::UTF8ToUnicode(w); ++ icu::UnicodeString uWord = folia::UTF8ToUnicode(w); + myMblem.Classify( uWord ); + vector > res = myMblem.getResult(); + string line = w + "\t"; +--- frog-0.13.7.orig/src/mbma_brackets.cxx ++++ frog-0.13.7/src/mbma_brackets.cxx +@@ -283,7 +283,7 @@ BracketLeaf::BracketLeaf( const RulePart + } + + BracketLeaf::BracketLeaf( CLEX::Type t, +- const UnicodeString& us, ++ const icu::UnicodeString& us, + int flag, + LogStream& l ): + BaseBracket( t, vector(), flag, l ), +@@ -314,17 +314,17 @@ BracketNest::~BracketNest(){ + } + } + +-UnicodeString BaseBracket::put( bool full ) const { +- UnicodeString result = "[err?]"; ++icu::UnicodeString BaseBracket::put( bool full ) const { ++ icu::UnicodeString result = "[err?]"; + if ( full ){ +- UnicodeString s = UTF8ToUnicode(toString(cls)); ++ icu::UnicodeString s = UTF8ToUnicode(toString(cls)); + result += s; + } + return result; + } + +-UnicodeString BracketLeaf::put( bool full ) const { +- UnicodeString result; ++icu::UnicodeString BracketLeaf::put( bool full ) const { ++ icu::UnicodeString result; + if ( !morph.isEmpty() ){ + result += "["; + result += morph; +@@ -341,10 +341,10 @@ UnicodeString BracketLeaf::put( bool ful + return result; + } + +-UnicodeString BracketNest::put( bool full ) const { +- UnicodeString result = "[ "; ++icu::UnicodeString BracketNest::put( bool full ) const { ++ icu::UnicodeString result = "[ "; + for ( auto const& it : parts ){ +- UnicodeString m = it->put( full ); ++ icu::UnicodeString m = it->put( full ); + if ( !m.isEmpty() ){ + result += m + " "; + } +--- frog-0.13.7.orig/src/mbma_mod.cxx ++++ frog-0.13.7/src/mbma_mod.cxx +@@ -109,9 +109,9 @@ void Mbma::init_cgn( const string& main, + } + } + +-Transliterator *Mbma::init_trans( ){ ++icu::Transliterator *Mbma::init_trans( ){ + UErrorCode stat = U_ZERO_ERROR; +- Transliterator *t = Transliterator::createInstance( "NFD; [:M:] Remove; NFC", ++ icu::Transliterator *t = icu::Transliterator::createInstance( "NFD; [:M:] Remove; NFC", + UTRANS_FORWARD, + stat ); + if ( U_FAILURE( stat ) ){ +@@ -213,14 +213,14 @@ void Mbma::cleanUp(){ + clearAnalysis(); + } + +-vector Mbma::make_instances( const UnicodeString& word ){ ++vector Mbma::make_instances( const icu::UnicodeString& word ){ + vector insts; + insts.reserve( word.length() ); + for ( long i=0; i < word.length(); ++i ) { + if (debugFlag > 10){ + LOG << "itt #:" << i << endl; + } +- UnicodeString inst; ++ icu::UnicodeString inst; + for ( long j=i ; j <= i + RIGHT + LEFT; ++j ) { + if (debugFlag > 10){ + LOG << " " << j-LEFT << ": "; +@@ -308,7 +308,7 @@ void Mbma::clearAnalysis(){ + } + + Rule* Mbma::matchRule( const std::vector& ana, +- const UnicodeString& word ){ ++ const icu::UnicodeString& word ){ + Rule *rule = new Rule( ana, word, *mbmaLog, debugFlag ); + if ( rule->performEdits() ){ + rule->reduceZeroNodes(); +@@ -340,7 +340,7 @@ Rule* Mbma::matchRule( const std::vector + } + } + +-vector Mbma::execute( const UnicodeString& word, ++vector Mbma::execute( const icu::UnicodeString& word, + const vector& classes ){ + vector > allParts = generate_all_perms( classes ); + if ( debugFlag ){ +@@ -683,9 +683,9 @@ void Mbma::filterSubTags( const vector unique; ++ map unique; + for ( const auto& ait : highConf ){ +- UnicodeString tmp = ait->getKey( doDeepMorph ); ++ icu::UnicodeString tmp = ait->getKey( doDeepMorph ); + unique[tmp] = ait; + } + // so now we have map of 'equal' analysis. +@@ -737,7 +737,7 @@ void Mbma::assign_compounds(){ + } + } + +-void Mbma::getFoLiAResult( Word *fword, const UnicodeString& uword ) const { ++void Mbma::getFoLiAResult( Word *fword, const icu::UnicodeString& uword ) const { + if ( analysis.size() == 0 ){ + // fallback option: use the word and pretend it's a morpheme ;-) + if ( debugFlag ){ +@@ -779,9 +779,9 @@ void Mbma::addDeclaration( Document& doc + } + } + +-UnicodeString Mbma::filterDiacritics( const UnicodeString& in ) const { ++icu::UnicodeString Mbma::filterDiacritics( const icu::UnicodeString& in ) const { + if ( transliterator ){ +- UnicodeString result = in; ++ icu::UnicodeString result = in; + transliterator->transliterate( result ); + return result; + } +@@ -794,7 +794,7 @@ void Mbma::Classify( Word* sword ){ + if ( sword->isinstance(PlaceHolder_t) ){ + return; + } +- UnicodeString uWord; ++ icu::UnicodeString uWord; + PosAnnotation *pos; + string head; + string token_class; +@@ -826,7 +826,7 @@ void Mbma::Classify( Word* sword ){ + } + } + else { +- UnicodeString lWord = uWord; ++ icu::UnicodeString lWord = uWord; + if ( head != "SPEC" ){ + lWord.toLower(); + } +@@ -846,9 +846,9 @@ void Mbma::Classify( Word* sword ){ + } + } + +-void Mbma::Classify( const UnicodeString& word ){ ++void Mbma::Classify( const icu::UnicodeString& word ){ + clearAnalysis(); +- UnicodeString uWord = filterDiacritics( word ); ++ icu::UnicodeString uWord = filterDiacritics( word ); + vector insts = make_instances( uWord ); + vector classes; + classes.reserve( insts.size() ); +--- frog-0.13.7.orig/src/mbma_prog.cxx ++++ frog-0.13.7/src/mbma_prog.cxx +@@ -187,7 +187,7 @@ void Test( istream& in ){ + if ( useTagger ){ + vector tagv = tagger.tagLine( s ); + for ( const auto& tr : tagv ){ +- UnicodeString uWord = folia::UTF8ToUnicode( tr.word() ); ++ icu::UnicodeString uWord = folia::UTF8ToUnicode( tr.word() ); + vector v; + size_t num = TiCC::split_at_first_of( tr.assignedTag(), + v, "(,)" ); +@@ -225,7 +225,7 @@ void Test( istream& in ){ + vector parts; + TiCC::split( s, parts ); + for ( auto const& w : parts ){ +- UnicodeString uWord = folia::UTF8ToUnicode(w); ++ icu::UnicodeString uWord = folia::UTF8ToUnicode(w); + uWord.toLower(); + myMbma.Classify( uWord ); + myMbma.assign_compounds(); +--- frog-0.13.7.orig/src/mbma_rule.cxx ++++ frog-0.13.7/src/mbma_rule.cxx +@@ -236,7 +236,7 @@ RulePart::RulePart( const string& rs, co + } + + Rule::Rule( const vector& parts, +- const UnicodeString& s, ++ const icu::UnicodeString& s, + TiCC::LogStream& ls, + int flag ): + debugFlag( flag ), +@@ -301,7 +301,7 @@ vector Rule::extract_morphemes( + vector morphemes; + morphemes.reserve( rules.size() ); + for ( const auto& it : rules ){ +- UnicodeString morpheme = it.morpheme; ++ icu::UnicodeString morpheme = it.morpheme; + if ( !morpheme.isEmpty() ){ + morphemes.push_back( UnicodeToUTF8(morpheme) ); + } +@@ -312,7 +312,7 @@ vector Rule::extract_morphemes( + string Rule::morpheme_string( bool structured ) const { + string result; + if ( structured ){ +- UnicodeString us = brackets->put(true); ++ icu::UnicodeString us = brackets->put(true); + result = UnicodeToUTF8( us ); + } + else { +@@ -343,7 +343,7 @@ bool Rule::performEdits(){ + for ( int j=0; j < cur->del.length(); ++j ){ + if ( (k + j) < rules.size() ){ + if ( rules[k+j].uchar != cur->del[j] ){ +- UnicodeString tmp(cur->del[j]); ++ icu::UnicodeString tmp(cur->del[j]); + LOG << "Hmm: deleting " << cur->del << " is impossible. (" + << rules[k+j].uchar << " != " << tmp + << ")." << endl; +@@ -352,7 +352,7 @@ bool Rule::performEdits(){ + } + } + else { +- UnicodeString tmp(cur->del[j]); ++ icu::UnicodeString tmp(cur->del[j]); + LOG << "Hmm: deleting " << cur->del + << " is impossible. (beyond end of the rule)" + << endl; +@@ -370,7 +370,7 @@ bool Rule::performEdits(){ + } + + bool inserted = false; +- UnicodeString part; // store to-be-inserted particles here! ++ icu::UnicodeString part; // store to-be-inserted particles here! + if ( !cur->hide.isEmpty() ){ + last->morpheme += cur->uchar; // add to prevvoius morheme + cur->uchar = ""; +@@ -490,10 +490,10 @@ void Rule::resolve_inflections(){ + } + } + +-UnicodeString Rule::getKey( bool deep ){ ++icu::UnicodeString Rule::getKey( bool deep ){ + if ( deep ){ + if ( sortkey.isEmpty() ){ +- UnicodeString tmp; ++ icu::UnicodeString tmp; + stringstream ss; + ss << brackets << endl; + tmp = UTF8ToUnicode(ss.str()); +@@ -503,7 +503,7 @@ UnicodeString Rule::getKey( bool deep ){ + } + else { + vector morphs = extract_morphemes(); +- UnicodeString tmp; ++ icu::UnicodeString tmp; + // create an unique string + for ( auto const& mor : morphs ){ + tmp += UTF8ToUnicode(mor) + "++"; +--- frog-0.13.7.orig/src/mwu_chunker_mod.cxx ++++ frog-0.13.7/src/mwu_chunker_mod.cxx +@@ -116,7 +116,7 @@ void Mwu::reset(){ + } + + void Mwu::add( Word *word ){ +- UnicodeString tmp; ++ icu::UnicodeString tmp; + #pragma omp critical(foliaupdate) + { + tmp = word->text(); +--- frog-0.13.7.orig/src/ner_tagger_mod.cxx ++++ frog-0.13.7/src/ner_tagger_mod.cxx +@@ -404,7 +404,7 @@ void NERTagger::Classify( const vector words; + string sentence; // the tagger needs the whole sentence + for ( const auto& sw : swords ){ +- UnicodeString word; ++ icu::UnicodeString word; + #pragma omp critical(foliaupdate) + { + word = sw->text(); +--- frog-0.13.7.orig/src/pos_tagger_mod.cxx ++++ frog-0.13.7/src/pos_tagger_mod.cxx +@@ -250,7 +250,7 @@ void POSTagger::Classify( const vectortext(); diff -Nru frog-0.13.7/debian/patches/series frog-0.13.7/debian/patches/series --- frog-0.13.7/debian/patches/series 1970-01-01 00:00:00.000000000 +0000 +++ frog-0.13.7/debian/patches/series 2018-11-20 02:15:35.000000000 +0000 @@ -0,0 +1 @@ +frog_ICU_63.1.patch