app-text/bact: fix cpp14 compilation errors; bug #594312
authorKacper Kołodziej <kacper@kolodziej.in>
Sun, 25 Sep 2016 14:05:22 +0000 (16:05 +0200)
committerDavid Seifert <soap@gentoo.org>
Wed, 28 Sep 2016 21:02:06 +0000 (23:02 +0200)
Closes: https://github.com/gentoo/gentoo/pull/2409

Signed-off-by: David Seifert <soap@gentoo.org>
app-text/bact/bact-0.13.ebuild
app-text/bact/files/bact-0.13-cpp14.patch [new file with mode: 0644]

index 98d29fb5500b25f1602067b3cd708088e7a1812d..00cd99778b7c85c4a19b3a0d573878329207fd0d 100644 (file)
@@ -4,7 +4,7 @@
 
 EAPI=4
 
-inherit toolchain-funcs
+inherit eutils toolchain-funcs
 
 DESCRIPTION="Boosting Algorithm for Classification of Trees"
 HOMEPAGE="http://chasen.org/~taku/software/bact/"
@@ -18,6 +18,10 @@ IUSE=""
 DEPEND=""
 RDEPEND="${DEPEND}"
 
+src_prepare() {
+       epatch "${FILESDIR}/${P}-cpp14.patch" # bug #594312
+}
+
 src_compile() {
        emake CXX="$(tc-getCXX)" CXXFLAGS="${CXXFLAGS}" LDFLAGS="${LDFLAGS}"
 }
diff --git a/app-text/bact/files/bact-0.13-cpp14.patch b/app-text/bact/files/bact-0.13-cpp14.patch
new file mode 100644 (file)
index 0000000..fa083c2
--- /dev/null
@@ -0,0 +1,44 @@
+Fix C++14 compilation errors -- since C++11 make_pair<T1,T2> is resolved to
+make_pair(T1&&, T2&&). Types should be deduced.
+Gentoo bug: https://bugs.gentoo.org/show_bug.cgi?id=594312
+
+--- a/bact_classify.cpp
++++ b/bact_classify.cpp
+@@ -86,7 +86,7 @@
+       if (id == -2) continue;
+       if (id != -1) {
+         if (userule) 
+-          rules.insert (std::make_pair <std::string, double> (item, alpha[id]));
++          rules.insert (std::make_pair(item, alpha[id]));
+         result.push_back (id);
+       }
+       project (item, size+1, newdepth, l, new_trie_pos, new_str_pos);
+@@ -138,7 +138,7 @@
+        if (id == -2) continue;
+        if (id >= 0) {
+        if (userule) 
+-         rules.insert (std::make_pair <std::string, double> (tree[i].val.key(), alpha[id]));
++         rules.insert (std::make_pair(tree[i].val.key(), alpha[id]));
+        result.push_back (id);
+        }
+        project (tree[i].val.key(), 1, 0, i, 0, 0);
+@@ -158,7 +158,7 @@
+ 
+     for (std::map <std::string, double>::iterator it = rules.begin();
+        it != rules.end(); ++it) 
+-      tmp.push_back (std::make_pair <std::string, double> (it->first,  it->second));
++      tmp.push_back (std::make_pair(it->first,  it->second));
+       
+     std::sort (tmp.begin(), tmp.end(), pair_2nd_cmp<std::string, double>());
+ 
+--- a/bact_mkmodel.cpp
++++ b/bact_mkmodel.cpp
+@@ -111,7 +111,7 @@
+    
+   for (std::map<std::string, double>::iterator it = rules.begin(); it != rules.end(); ++it) {
+     double a = it->second / alpha_sum;
+-    ary2.push_back (std::make_pair <const char*, double>(it->first.c_str(), a));
++    ary2.push_back (std::make_pair(it->first.c_str(), a));
+     ary.push_back  ((Darts::DoubleArray::key_type *)it->first.c_str());
+     alpha.push_back (a);
+   }