code:
From 150c4e94e3f6aadc84f551accdb49b6658bfb539 Mon Sep 17 00:00:00 2001
From: K-ballo <k@fusionfenix.com>
Date: Wed, 29 Apr 2015 13:11:41 -0300
Subject: [PATCH] Fix for bind<void>(mf) ambiguous resolution error

---
 include/boost/bind/bind.hpp       |  2 ++
 include/boost/bind/bind_mf_cc.hpp | 54 ++++++++++++++++++++++++++-------------
 test/bind_void_mf_test.cpp        | 27 ++++++++++++++++++++
 3 files changed, 65 insertions(+), 18 deletions(-)

diff --git a/include/boost/bind/bind.hpp b/include/boost/bind/bind.hpp
index 924d055..fd05131 100644
--- a/include/boost/bind/bind.hpp
+++ b/include/boost/bind/bind.hpp
@@ -29,6 +29,8 @@
 #include <boost/bind/arg.hpp>
 #include <boost/detail/workaround.hpp>
 #include <boost/visit_each.hpp>
+#include <boost/core/enable_if.hpp>
+#include <boost/core/is_same.hpp>

 // Borland-specific bug, visit_each() silently fails to produce code

diff --git a/include/boost/bind/bind_mf_cc.hpp b/include/boost/bind/bind_mf_cc.hpp
index 9c3d290..e149384 100644
--- a/include/boost/bind/bind_mf_cc.hpp
+++ b/include/boost/bind/bind_mf_cc.hpp
@@ -36,8 +36,9 @@ template<class R, class T,

 template<class Rt2, class R, class T,
     class A1>
+    typename boost::enable_if_c<!boost::core::is_same<Rt2, R>::value,
     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf0)<R, T>, typename _bi::list_av_1<A1>::type>
-    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (), A1 a1)
+    >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (), A1 a1)
 {
     typedef _mfi::BOOST_BIND_MF_NAME(mf0)<R, T> F;
     typedef typename _bi::list_av_1<A1>::type list_type;
@@ -46,8 +47,9 @@ template<class Rt2, class R, class T,

 template<class Rt2, class R, class T,
     class A1>
+    typename boost::enable_if_c<!boost::core::is_same<Rt2, R>::value,
     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf0)<R, T>, typename _bi::list_av_1<A1>::type>
-    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () const, A1 a1)
+    >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) () const, A1 a1)
 {
     typedef _mfi::BOOST_BIND_MF_NAME(cmf0)<R, T> F;
     typedef typename _bi::list_av_1<A1>::type list_type;
@@ -81,8 +83,9 @@ template<class R, class T,
 template<class Rt2, class R, class T,
     class B1,
     class A1, class A2>
+    typename boost::enable_if_c<!boost::core::is_same<Rt2, R>::value,
     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf1)<R, T, B1>, typename _bi::list_av_2<A1, A2>::type>
-    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1), A1 a1, A2 a2)
+    >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1), A1 a1, A2 a2)
 {
     typedef _mfi::BOOST_BIND_MF_NAME(mf1)<R, T, B1> F;
     typedef typename _bi::list_av_2<A1, A2>::type list_type;
@@ -92,8 +95,9 @@ template<class Rt2, class R, class T,
 template<class Rt2, class R, class T,
     class B1,
     class A1, class A2>
+    typename boost::enable_if_c<!boost::core::is_same<Rt2, R>::value,
     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf1)<R, T, B1>, typename _bi::list_av_2<A1, A2>::type>
-    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) const, A1 a1, A2 a2)
+    >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1) const, A1 a1, A2 a2)
 {
     typedef _mfi::BOOST_BIND_MF_NAME(cmf1)<R, T, B1> F;
     typedef typename _bi::list_av_2<A1, A2>::type list_type;
@@ -127,8 +131,9 @@ template<class R, class T,
 template<class Rt2, class R, class T,
     class B1, class B2,
     class A1, class A2, class A3>
+    typename boost::enable_if_c<!boost::core::is_same<Rt2, R>::value,
     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf2)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type>
-    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2), A1 a1, A2 a2, A3 a3)
+    >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2), A1 a1, A2 a2, A3 a3)
 {
     typedef _mfi::BOOST_BIND_MF_NAME(mf2)<R, T, B1, B2> F;
     typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
@@ -138,8 +143,9 @@ template<class Rt2, class R, class T,
 template<class Rt2, class R, class T,
     class B1, class B2,
     class A1, class A2, class A3>
+    typename boost::enable_if_c<!boost::core::is_same<Rt2, R>::value,
     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf2)<R, T, B1, B2>, typename _bi::list_av_3<A1, A2, A3>::type>
-    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) const, A1 a1, A2 a2, A3 a3)
+    >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2) const, A1 a1, A2 a2, A3 a3)
 {
     typedef _mfi::BOOST_BIND_MF_NAME(cmf2)<R, T, B1, B2> F;
     typedef typename _bi::list_av_3<A1, A2, A3>::type list_type;
@@ -173,8 +179,9 @@ template<class R, class T,
 template<class Rt2, class R, class T,
     class B1, class B2, class B3,
     class A1, class A2, class A3, class A4>
+    typename boost::enable_if_c<!boost::core::is_same<Rt2, R>::value,
     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf3)<R, T, B1, B2, B3>, typename _bi::list_av_4<A1, A2, A3, A4>::type>
-    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3), A1 a1, A2 a2, A3 a3, A4 a4)
+    >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3), A1 a1, A2 a2, A3 a3, A4 a4)
 {
     typedef _mfi::BOOST_BIND_MF_NAME(mf3)<R, T, B1, B2, B3> F;
     typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
@@ -184,8 +191,9 @@ template<class Rt2, class R, class T,
 template<class Rt2, class R, class T,
     class B1, class B2, class B3,
     class A1, class A2, class A3, class A4>
+    typename boost::enable_if_c<!boost::core::is_same<Rt2, R>::value,
     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf3)<R, T, B1, B2, B3>, typename _bi::list_av_4<A1, A2, A3, A4>::type>
-    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) const, A1 a1, A2 a2, A3 a3, A4 a4)
+    >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3) const, A1 a1, A2 a2, A3 a3, A4 a4)
 {
     typedef _mfi::BOOST_BIND_MF_NAME(cmf3)<R, T, B1, B2, B3> F;
     typedef typename _bi::list_av_4<A1, A2, A3, A4>::type list_type;
@@ -219,8 +227,9 @@ template<class R, class T,
 template<class Rt2, class R, class T,
     class B1, class B2, class B3, class B4,
     class A1, class A2, class A3, class A4, class A5>
+    typename boost::enable_if_c<!boost::core::is_same<Rt2, R>::value,
     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf4)<R, T, B1, B2, B3, B4>, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
-    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
+    >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
 {
     typedef _mfi::BOOST_BIND_MF_NAME(mf4)<R, T, B1, B2, B3, B4> F;
     typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
@@ -230,8 +239,9 @@ template<class Rt2, class R, class T,
 template<class Rt2, class R, class T,
     class B1, class B2, class B3, class B4,
     class A1, class A2, class A3, class A4, class A5>
+    typename boost::enable_if_c<!boost::core::is_same<Rt2, R>::value,
     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf4)<R, T, B1, B2, B3, B4>, typename _bi::list_av_5<A1, A2, A3, A4, A5>::type>
-    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
+    >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5)
 {
     typedef _mfi::BOOST_BIND_MF_NAME(cmf4)<R, T, B1, B2, B3, B4> F;
     typedef typename _bi::list_av_5<A1, A2, A3, A4, A5>::type list_type;
@@ -265,8 +275,9 @@ template<class R, class T,
 template<class Rt2, class R, class T,
     class B1, class B2, class B3, class B4, class B5,
     class A1, class A2, class A3, class A4, class A5, class A6>
+    typename boost::enable_if_c<!boost::core::is_same<Rt2, R>::value,
     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf5)<R, T, B1, B2, B3, B4, B5>, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
-    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
+    >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
 {
     typedef _mfi::BOOST_BIND_MF_NAME(mf5)<R, T, B1, B2, B3, B4, B5> F;
     typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
@@ -276,8 +287,9 @@ template<class Rt2, class R, class T,
 template<class Rt2, class R, class T,
     class B1, class B2, class B3, class B4, class B5,
     class A1, class A2, class A3, class A4, class A5, class A6>
+    typename boost::enable_if_c<!boost::core::is_same<Rt2, R>::value,
     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf5)<R, T, B1, B2, B3, B4, B5>, typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type>
-    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
+    >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6)
 {
     typedef _mfi::BOOST_BIND_MF_NAME(cmf5)<R, T, B1, B2, B3, B4, B5> F;
     typedef typename _bi::list_av_6<A1, A2, A3, A4, A5, A6>::type list_type;
@@ -311,8 +323,9 @@ template<class R, class T,
 template<class Rt2, class R, class T,
     class B1, class B2, class B3, class B4, class B5, class B6,
     class A1, class A2, class A3, class A4, class A5, class A6, class A7>
+    typename boost::enable_if_c<!boost::core::is_same<Rt2, R>::value,
     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf6)<R, T, B1, B2, B3, B4, B5, B6>, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
-    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
+    >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
 {
     typedef _mfi::BOOST_BIND_MF_NAME(mf6)<R, T, B1, B2, B3, B4, B5, B6> F;
     typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
@@ -322,8 +335,9 @@ template<class Rt2, class R, class T,
 template<class Rt2, class R, class T,
     class B1, class B2, class B3, class B4, class B5, class B6,
     class A1, class A2, class A3, class A4, class A5, class A6, class A7>
+    typename boost::enable_if_c<!boost::core::is_same<Rt2, R>::value,
     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf6)<R, T, B1, B2, B3, B4, B5, B6>, typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type>
-    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
+    >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7)
 {
     typedef _mfi::BOOST_BIND_MF_NAME(cmf6)<R, T, B1, B2, B3, B4, B5, B6> F;
     typedef typename _bi::list_av_7<A1, A2, A3, A4, A5, A6, A7>::type list_type;
@@ -357,8 +371,9 @@ template<class R, class T,
 template<class Rt2, class R, class T,
     class B1, class B2, class B3, class B4, class B5, class B6, class B7,
     class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
+    typename boost::enable_if_c<!boost::core::is_same<Rt2, R>::value,
     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf7)<R, T, B1, B2, B3, B4, B5, B6, B7>, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
-    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
+    >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
 {
     typedef _mfi::BOOST_BIND_MF_NAME(mf7)<R, T, B1, B2, B3, B4, B5, B6, B7> F;
     typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
@@ -368,8 +383,9 @@ template<class Rt2, class R, class T,
 template<class Rt2, class R, class T,
     class B1, class B2, class B3, class B4, class B5, class B6, class B7,
     class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8>
+    typename boost::enable_if_c<!boost::core::is_same<Rt2, R>::value,
     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf7)<R, T, B1, B2, B3, B4, B5, B6, B7>, typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type>
-    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
+    >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8)
 {
     typedef _mfi::BOOST_BIND_MF_NAME(cmf7)<R, T, B1, B2, B3, B4, B5, B6, B7> F;
     typedef typename _bi::list_av_8<A1, A2, A3, A4, A5, A6, A7, A8>::type list_type;
@@ -403,8 +419,9 @@ template<class R, class T,
 template<class Rt2, class R, class T,
     class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8,
     class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
+    typename boost::enable_if_c<!boost::core::is_same<Rt2, R>::value,
     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(mf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8>, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
-    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
+    >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8), A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
 {
     typedef _mfi::BOOST_BIND_MF_NAME(mf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8> F;
     typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
@@ -414,8 +431,9 @@ template<class Rt2, class R, class T,
 template<class Rt2, class R, class T,
     class B1, class B2, class B3, class B4, class B5, class B6, class B7, class B8,
     class A1, class A2, class A3, class A4, class A5, class A6, class A7, class A8, class A9>
+    typename boost::enable_if_c<!boost::core::is_same<Rt2, R>::value,
     _bi::bind_t<Rt2, _mfi::BOOST_BIND_MF_NAME(cmf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8>, typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type>
-    BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
+    >::type BOOST_BIND(R (BOOST_BIND_MF_CC T::*f) (B1, B2, B3, B4, B5, B6, B7, B8) const, A1 a1, A2 a2, A3 a3, A4 a4, A5 a5, A6 a6, A7 a7, A8 a8, A9 a9)
 {
     typedef _mfi::BOOST_BIND_MF_NAME(cmf8)<R, T, B1, B2, B3, B4, B5, B6, B7, B8> F;
     typedef typename _bi::list_av_9<A1, A2, A3, A4, A5, A6, A7, A8, A9>::type list_type;
diff --git a/boost/libs/bind/test/bind_void_mf_test.cpp b/boost/libs/bind/test/bind_void_mf_test.cpp
index 62c2dcd..e66a9c8 100644
--- a/boost/libs/bind/test/bind_void_mf_test.cpp
+++ b/boost/libs/bind/test/bind_void_mf_test.cpp
@@ -47,30 +47,39 @@ struct X

     int f0() { f1(17); return 0; }
     int g0() const { g1(17); return 0; }
+    void h0() { h1(17); }

     int f1(int a1) { hash = (hash * 17041 + a1) % 32768; return 0; }
     int g1(int a1) const { hash = (hash * 17041 + a1 * 2) % 32768; return 0; }
+    void h1(int a1) { hash = (hash * 17041 + a1 * 2) % 32768; }

     int f2(int a1, int a2) { f1(a1); f1(a2); return 0; }
     int g2(int a1, int a2) const { g1(a1); g1(a2); return 0; }
+    void h2(int a1, int a2) { h1(a1); h1(a2); }

     int f3(int a1, int a2, int a3) { f2(a1, a2); f1(a3); return 0; }
     int g3(int a1, int a2, int a3) const { g2(a1, a2); g1(a3); return 0; }
+    void h3(int a1, int a2, int a3) { h2(a1, a2); h1(a3); }

     int f4(int a1, int a2, int a3, int a4) { f3(a1, a2, a3); f1(a4); return 0; }
     int g4(int a1, int a2, int a3, int a4) const { g3(a1, a2, a3); g1(a4); return 0; }
+    void h4(int a1, int a2, int a3, int a4) { h3(a1, a2, a3); h1(a4); }

     int f5(int a1, int a2, int a3, int a4, int a5) { f4(a1, a2, a3, a4); f1(a5); return 0; }
     int g5(int a1, int a2, int a3, int a4, int a5) const { g4(a1, a2, a3, a4); g1(a5); return 0; }
+    void h5(int a1, int a2, int a3, int a4, int a5) { h4(a1, a2, a3, a4); h1(a5); }

     int f6(int a1, int a2, int a3, int a4, int a5, int a6) { f5(a1, a2, a3, a4, a5); f1(a6); return 0; }
     int g6(int a1, int a2, int a3, int a4, int a5, int a6) const { g5(a1, a2, a3, a4, a5); g1(a6); return 0; }
+    void h6(int a1, int a2, int a3, int a4, int a5, int a6) { h5(a1, a2, a3, a4, a5); h1(a6); }

     int f7(int a1, int a2, int a3, int a4, int a5, int a6, int a7) { f6(a1, a2, a3, a4, a5, a6); f1(a7); return 0; }
     int g7(int a1, int a2, int a3, int a4, int a5, int a6, int a7) const { g6(a1, a2, a3, a4, a5, a6); g1(a7); return 0; }
+    void h7(int a1, int a2, int a3, int a4, int a5, int a6, int a7) { h6(a1, a2, a3, a4, a5, a6); h1(a7); }

     int f8(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8) { f7(a1, a2, a3, a4, a5, a6, a7); f1(a8); return 0; }
     int g8(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8) const { g7(a1, a2, a3, a4, a5, a6, a7); g1(a8); return 0; }
+    void h8(int a1, int a2, int a3, int a4, int a5, int a6, int a7, int a8) { h7(a1, a2, a3, a4, a5, a6, a7); h1(a8); }
 };

 void member_function_test()
@@ -88,6 +97,8 @@ void member_function_test()
     bind<void>(&X::g0, x)();
     bind<void>(&X::g0, ref(x))();

+    bind<void>(&X::h0, x)();
+
     // 1

     bind<void>(&X::f1, &x, 1)();
@@ -97,6 +108,8 @@ void member_function_test()
     bind<void>(&X::g1, x, 1)();
     bind<void>(&X::g1, ref(x), 1)();

+    bind<void>(&X::h1, x, 1)();
+
     // 2

     bind<void>(&X::f2, &x, 1, 2)();
@@ -106,6 +119,8 @@ void member_function_test()
     bind<void>(&X::g2, x, 1, 2)();
     bind<void>(&X::g2, ref(x), 1, 2)();

+    bind<void>(&X::h2, x, 1, 2)();
+
     // 3

     bind<void>(&X::f3, &x, 1, 2, 3)();
@@ -115,6 +130,8 @@ void member_function_test()
     bind<void>(&X::g3, x, 1, 2, 3)();
     bind<void>(&X::g3, ref(x), 1, 2, 3)();

+    bind<void>(&X::h3, x, 1, 2, 3)();
+
     // 4

     bind<void>(&X::f4, &x, 1, 2, 3, 4)();
@@ -124,6 +141,8 @@ void member_function_test()
     bind<void>(&X::g4, x, 1, 2, 3, 4)();
     bind<void>(&X::g4, ref(x), 1, 2, 3, 4)();

+    bind<void>(&X::h4, x, 1, 2, 3, 4)();
+
     // 5

     bind<void>(&X::f5, &x, 1, 2, 3, 4, 5)();
@@ -133,6 +152,8 @@ void member_function_test()
     bind<void>(&X::g5, x, 1, 2, 3, 4, 5)();
     bind<void>(&X::g5, ref(x), 1, 2, 3, 4, 5)();

+    bind<void>(&X::h5, x, 1, 2, 3, 4, 5)();
+
     // 6

     bind<void>(&X::f6, &x, 1, 2, 3, 4, 5, 6)();
@@ -142,6 +163,8 @@ void member_function_test()
     bind<void>(&X::g6, x, 1, 2, 3, 4, 5, 6)();
     bind<void>(&X::g6, ref(x), 1, 2, 3, 4, 5, 6)();

+    bind<void>(&X::h6, x, 1, 2, 3, 4, 5, 6)();
+
     // 7

     bind<void>(&X::f7, &x, 1, 2, 3, 4, 5, 6, 7)();
@@ -151,6 +174,8 @@ void member_function_test()
     bind<void>(&X::g7, x, 1, 2, 3, 4, 5, 6, 7)();
     bind<void>(&X::g7, ref(x), 1, 2, 3, 4, 5, 6, 7)();

+    bind<void>(&X::h7, x, 1, 2, 3, 4, 5, 6, 7)();
+
     // 8

     bind<void>(&X::f8, &x, 1, 2, 3, 4, 5, 6, 7, 8)();
@@ -160,6 +185,8 @@ void member_function_test()
     bind<void>(&X::g8, x, 1, 2, 3, 4, 5, 6, 7, 8)();
     bind<void>(&X::g8, ref(x), 1, 2, 3, 4, 5, 6, 7, 8)();

+    bind<void>(&X::h8, x, 1, 2, 3, 4, 5, 6, 7, 8)();
+
     BOOST_TEST( x.hash == 23558 );
 }

--
2.4.1


code:
From a44c228e28d3d82137e9efe376b425013aa59f0a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Bart=C5=82omiej=20Piotrowski?= <bpiotrowski@archlinux.org>
Date: Tue, 16 May 2017 15:08:59 +0200
Subject: [PATCH] Restore boost/serialization/detail/get_data.hpp

This reverts commit d558b6da917ecae1036adf9b22a0741c78f627ff.
---
 include/boost/serialization/detail/get_data.hpp | 59 +++++++++++++++++++++++++
 1 file changed, 59 insertions(+)
 create mode 100644 include/boost/serialization/detail/get_data.hpp

diff --git a/include/boost/serialization/detail/get_data.hpp b/include/boost/serialization/detail/get_data.hpp
new file mode 100644
index 00000000..37da7fc3
--- /dev/null
+++ b/include/boost/serialization/detail/get_data.hpp
@@ -0,0 +1,59 @@
+// (C) Copyright 2005 Matthias Troyer
+// Use, modification and distribution is subject to the Boost Software
+// License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at
+// http://www.boost.org/LICENSE_1_0.txt)
+
+//  See http://www.boost.org for updates, documentation, and revision history.
+
+#ifndef BOOST_SERIALIZATION_DETAIL_GET_DATA_HPP
+#define BOOST_SERIALIZATION_DETAIL_GET_DATA_HPP
+
+// MS compatible compilers support #pragma once
+#if defined(_MSC_VER)
+# pragma once
+#endif
+
+#if defined(__SGI_STL_PORT) || defined(_STLPORT_VERSION)
+#define STD _STLP_STD
+#else
+#define STD std
+#endif
+
+#include <vector>
+#include <valarray>
+
+namespace boost {
+namespace serialization {
+namespace detail {
+
+template <class T, class Allocator>
+T* get_data(STD::vector<T,Allocator>& v)
+{
+  return v.empty() ? 0 : &(v[0]);
+}
+
+template <class T, class Allocator>
+T* get_data(STD::vector<T,Allocator> const & v)
+{
+  return get_data(const_cast<STD::vector<T,Allocator>&>(v));
+}
+
+template <class T>
+T* get_data(STD::valarray<T>& v)
+{
+  return v.size()==0 ? 0 : &(v[0]);
+}
+
+template <class T>
+const T* get_data(STD::valarray<T> const& v)
+{
+  return get_data(const_cast<STD::valarray<T>&>(v));
+}
+
+} // detail
+} // serialization
+} // boost
+
+#undef STD
+
+#endif // BOOST_SERIALIZATION_DETAIL_GET_DATA_HPP
--
2.13.0

From 1d86261581230e2dc5d617a9b16287d326f3e229 Mon Sep 17 00:00:00 2001
From: Robert Ramey <ramey@rrsd.com>
Date: Wed, 1 Feb 2017 16:43:59 -0800
Subject: [PATCH] correct error which appeared when compiling non c++ compliant
 code for arrays

---
 include/boost/serialization/array.hpp | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/include/boost/serialization/array.hpp b/include/boost/serialization/array.hpp
index 61708b3..612d1a6 100644
--- a/include/boost/serialization/array.hpp
+++ b/include/boost/serialization/array.hpp
@@ -23,6 +23,8 @@ namespace std{
 } // namespace std
 #endif

+#include <boost/serialization/array_wrapper.hpp>
+
 #ifndef BOOST_NO_CXX11_HDR_ARRAY

 #include <array>

repo_name: ayhanyalcinsoy/main


code:
From a332112317450457c715675686386ec81214b863 Mon Sep 17 00:00:00 2001
From: Axel Huebl <axel.huebl@plasma.ninja>
Date: Fri, 18 Dec 2015 10:27:04 +0100
Subject: [PATCH] Fix Trac 11852: GCC & CUDA __float128

Fix trac issue
  https://svn.boost.org/trac/boost/ticket/11852

Similar to
     https://svn.boost.org/trac/boost/ticket/8048

`__float128` is still unsupported when compiling with nvcc
(tested with `CUDA 7.5.18`). First noticed with the latest
release (`1.60.0`) and `GCC 4.8.5` but should affect all
previous releases depending on used modules.

In my case, I triggered it with the components
  `program_options regex filesystem system thread math_tr1`
enabled .
---
 include/boost/config/compiler/gcc.hpp | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/include/boost/config/compiler/gcc.hpp b/include/boost/config/compiler/gcc.hpp
index d9dd59d..8683dbd 100644
--- a/include/boost/config/compiler/gcc.hpp
+++ b/include/boost/config/compiler/gcc.hpp
@@ -134,7 +134,7 @@
 // Recent GCC versions have __int128 when in 64-bit mode.
 //
 // We disable this if the compiler is really nvcc as it
-// doesn't actually support __int128 as of CUDA_VERSION=5000
+// doesn't actually support __int128 as of CUDA_VERSION=7500
 // even though it defines __SIZEOF_INT128__.
 // See https://svn.boost.org/trac/boost/ticket/8048
 // Only re-enable this for nvcc if you're absolutely sure
@@ -148,12 +148,16 @@
 // include a std lib header to detect this - not ideal, but we'll
 // be including <cstddef> later anyway when we select the std lib.
 //
+// Nevertheless, as of CUDA 7.5, using __float128 with the host
+// compiler is still not supported.
+// See https://svn.boost.org/trac/boost/ticket/11852
+//
 #ifdef __cplusplus
 #include <cstddef>
 #else
 #include <stddef.h>
 #endif
-#if defined(_GLIBCXX_USE_FLOAT128) && !defined(__STRICT_ANSI__)
+#if defined(_GLIBCXX_USE_FLOAT128) && !defined(__STRICT_ANSI__) && !defined(__CUDACC__)
 # define BOOST_HAS_FLOAT128
 #endif


code:
diff -Nuar a/bootstrap.sh b/bootstrap.sh
--- a/bootstrap.sh	2016-12-22 15:33:11.000000000 +0300
+++ b/bootstrap.sh	2017-11-09 14:38:57.766903693 +0300
@@ -17,8 +17,8 @@
 INCLUDEDIR=
 LIBS=""
 PYTHON=python
-PYTHON_VERSION=
-PYTHON_ROOT=
+PYTHON_VERSION=2.7
+PYTHON_ROOT=3.6
 ICU_ROOT=

 # Handle case where builtin shell version of echo command doesn't


code:
<?xml version="1.0" ?>
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
<PISI>
    <Source>
        <Name>boost</Name>
        <Homepage>http://boost.org</Homepage>
        <Packager>
            <Name>PisiLinux Community</Name>
            <Email>admins@pisilinux.org</Email>
        </Packager>
        <License>GPLv2</License>
        <PartOf>programming.language</PartOf>
        <IsA>library</IsA>
        Peer-reviewed portable C++ source libraries
        <Description>Boost provides free portable peer-reviewed C++ libraries. The emphasis is on portable libraries which work well with the C++ Standard Library.</Description>
        <Archive sha1sum="9f1dd4fa364a3e3156a77dc17aa562ef06404ff6" type="tarbz2">mirrors://sourceforge/boost/boost_1_63_0.tar.bz2</Archive>
        <BuildDependencies>
            <Dependency>bzip2</Dependency>
            <Dependency>zlib-devel</Dependency>
            <Dependency>icu4c-devel</Dependency>
            <Dependency>python-devel</Dependency>
            <Dependency>python3-devel</Dependency>

            <Dependency>libxslt</Dependency>

        </BuildDependencies>
        <Patches>
              <Patch>pythonfix.patch</Patch>
        </Patches>
    </Source>

    <Package>
        <Name>boost</Name>
        <RuntimeDependencies>
            <Dependency>zlib</Dependency>
            <Dependency>bzip2</Dependency>
            <Dependency>icu4c</Dependency>
            <Dependency>libgcc</Dependency>

        </RuntimeDependencies>
        <Files>
            <Path fileType="executable">/usr/bin</Path>
            <Path fileType="library">/usr/lib</Path>
            <Path fileType="doc">/usr/share/doc</Path>
            <Path fileType="data">/usr/share/boostbook</Path>
        </Files>
    </Package>

    <Package>
        <Name>boost-devel</Name>
        <IsA>data:doc</IsA>
        Headers and library documentation for boost
        <RuntimeDependencies>
            <Dependency release="current">boost</Dependency>
        </RuntimeDependencies>
        <Files>
            <Path fileType="header">/usr/include</Path>
            <Path fileType="doc">/usr/share/doc/*/html</Path>
        </Files>
    </Package>

    <Package>
        <Name>boost-python</Name>
        a C++ library which enables seamless interoperability between C++ and the Python
        <RuntimeDependencies>
            <Dependency release="current">boost</Dependency>
            <Dependency>libgcc</Dependency>
        </RuntimeDependencies>
        <Files>
            <Path fileType="library">/usr/lib/libboost_python.so*</Path>
        </Files>
    </Package>

    <Package>
        <Name>boost-python3</Name>
        Headers and library documentation for boosta C++ library which enables seamless interoperability between C++ and the Python3
        <RuntimeDependencies>
            <Dependency release="current">boost</Dependency>
            <Dependency>libgcc</Dependency>
        </RuntimeDependencies>
        <Files>
            <Path fileType="library">/usr/lib/libboost_python3.so*</Path>
        </Files>
    </Package>

    <History>
        <Update release="7">
            <Date>2018-02-04</Date>
            <Version>1.63.0</Version>
            <Comment>Rebuild</Comment>
            <Name>Mustafa Cinasal</Name>
            <Email>muscnsl@gmail.com</Email>
        </Update>
        <Update release="6">
            <Date>2017-11-09</Date>
            <Version>1.63.0</Version>
            <Comment>Rebuild</Comment>
            <Name>Mustafa Cinasal</Name>
            <Email>muscnsl@gmail.com</Email>
        </Update>
        <Update release="5">
            <Date>2017-06-08</Date>
            <Version>1.63.0</Version>
            <Comment>Rebuild</Comment>
            <Name>Mustafa Cinasal</Name>
            <Email>muscnsl@gmail.com</Email>
        </Update>
        <Update release="4">
            <Date>2017-02-01</Date>
            <Version>1.63.0</Version>
            <Comment>Version Bump</Comment>
            <Name>Ayhan Yalçınsoy</Name>
            <Email>ayhanyalcinsoy@pisilinux.org</Email>
        </Update>
        <Update release="3">
            <Date>2016-06-09</Date>
            <Version>1.60.0</Version>
            <Comment>Release Bump</Comment>
            <Name>Pisi Linux Community</Name>
            <Email>admin@pisilinux.org</Email>
        </Update>
        <Update release="2">
            <Date>2016-05-25</Date>
            <Version>1.60.0</Version>
            <Comment>Release bump.</Comment>
            <Name>İbrahim KARAGÜZEL</Name>
            <Email>karaguzelibrahim@gmail.com</Email>
        </Update>
        <Update release="1">
            <Date>2016-05-08</Date>
            <Version>1.60.0</Version>
            <Comment>First release</Comment>
            <Name>İbrahim KARAGÜZEL</Name>
            <Email>karaguzelibrahim@gmail.com</Email>
        </Update>
    </History>
</PISI>


code:
<?xml version="1.0" ?>
<PISI>
    <Source>
        <Name>boost</Name>
        Açık kaynak kodlu ve taşınabilir C++ kaynak kitaplıkları
        <Description xml:lang="tr">Boost, kaynak kodları gözden geçirilmiş C++ kitaplıklarını içerir.</Description>
        <Description xml:lang="fr">Boost propose des librairies C++ gratuites, portables et relues en comité. L'accent est porté sur les librairies portables qui fonctionnent bien avec la Librairie Standard C++.</Description>
    </Source>

    <Package>
        <Name>boost-devel</Name>
        boost için başlık dosyaları ve kitaplık belgeleri
    </Package>
</PISI>


code:
# -*- coding: utf-8 -*-
#
# Licensed under the GNU General Public License, version 3.
# See the file http://www.gnu.org/licenses/gpl.txt

from pisi.actionsapi import autotools
from pisi.actionsapi import pisitools
from pisi.actionsapi import shelltools
from pisi.actionsapi import get

WorkDir = "."

def setup():
    pisitools.dosed("main.c", "len + 13", "len + 14")

def build():
    autotools.make()

def install():
    pisitools.dobin("btyacc")
    pisitools.newman("manpage", "btyacc.1")
    pisitools.dodoc("README*")


code:
--- a/mstring.c
+++ b/mstring.c
@@ -1,6 +1,7 @@
 #include <stdlib.h>
 #include <stdio.h>
 #include <stdarg.h>
+#include <string.h>
 #include <ctype.h>
 #include "mstring.h"


code:
Respect CC, append to CFLAGS (but not -g), append to LDFLAGS, use system LD -jer

--- a/Makefile	1999-07-15 19:40:12.000000000 +0200
+++ b/Makefile	2009-09-04 15:27:15.000000000 +0200
@@ -8,14 +8,13 @@

 HDRS	      = defs.h mstring.h

-CFLAGS	      = -g -Wall -Wstrict-prototypes -Wmissing-prototypes
+CFLAGS	      += -Wall -Wstrict-prototypes -Wmissing-prototypes

-LDFLAGS	      = -static
+LDFLAGS	      += -static

 LIBS	      =

-CC	      = gcc
-LINKER	      = gcc
+LINKER	      = $(CC)
 # LINKER      = cl
 # CC	      = cl


code:
<?xml version="1.0" ?>
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
<PISI>
    <Source>
        <Name>btyacc</Name>
        <Homepage>http://www.siber.com/btyacc</Homepage>
        <Packager>
            <Name>PisiLinux Community</Name>
            <Email>admins@pisilinux.org</Email>
        </Packager>
        <License>freedist</License>
        <IsA>app:console</IsA>
        <Summary>Backtracking YACC - modified from Berkeley YACC</Summary>
        <Description>This is original Berkeley Yacc modified to better fit production environment (and to have less bugs, too).</Description>
        <Archive sha1sum="4a70f78d9695fa1101c49ab1cdbfda5ab740c027" type="targz">http://www.siber.com/btyacc/btyacc-3-0.tar.gz</Archive>
        <Patches>
            <Patch level="1">btyacc-3.0-includes.patch</Patch>
            <Patch level="1">btyacc-3.0-makefile.patch</Patch>
        </Patches>
    </Source>

    <Package>
        <Name>btyacc</Name>
        <Files>
            <Path fileType="executable">/usr/bin</Path>
            <Path fileType="man">/usr/share/man</Path>
            <Path fileType="doc">/usr/share/doc</Path>
        </Files>
    </Package>

    <History>
        <Update release="3">
            <Date>2017-02-14</Date>
            <Version>3.0</Version>
            <Comment>Release Bump</Comment>
            <Name>Pisi Linux Community</Name>
            <Email>admin@pisilinux.org</Email>
        </Update>
        <Update release="2">
            <Date>2016-06-09</Date>
            <Version>3.0</Version>
            <Comment>Release Bump</Comment>
            <Name>Pisi Linux Community</Name>
            <Email>admin@pisilinux.org</Email>
        </Update>
        <Update release="1">
            <Date>2014-05-11</Date>
            <Version>3.0</Version>
            <Comment>First release</Comment>
            <Name>Marcin Bojara</Name>
            <Email>marcin@pisilinux.org</Email>
        </Update>
    </History>
</PISI>


code:
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# Licensed under the GNU General Public License, version 3.
# See the file http://www.gnu.org/licenses/gpl.txt

from pisi.actionsapi import cmaketools
from pisi.actionsapi import pisitools
from pisi.actionsapi import get
from pisi.actionsapi import shelltools

def setup():
    shelltools.export("CFLAGS", "-lpthread")
    shelltools.makedirs("build")
    shelltools.cd("build")
    cmaketools.configure("-DCMAKE_BUILD_TYPE=Release \
                                        -DENABLE_ASCII_MODE=OFF \
                                        -DENABLE_PACKAGING=OFF \
                                        -DBUILD_CONTRIBS_LIB:BOOL=ON \
                                        -DLIB_DESTINATION:PATH=/usr/lib \
                                        -DLUCENE_SYS_INCLUDES:PATH=/usr/lib \
                                        -DDISABLE_MULTITHREADING=OFF", sourceDir="..")

def build():
    shelltools.cd("build")
    cmaketools.make()

def install():
    shelltools.cd("build")
    cmaketools.install()
    shelltools.cd("..")
    pisitools.dodoc("AUTHORS","README","COPYING","ChangeLog")


code:
Submitted By:            Igor Živković <contact@igor-zivkovic.from.hr>
Date:                    2013-10-17
Initial Package Version: 2.3.3.4
Upstream Status:         Reported
Origin:                  Debian
Description:             Fixed building and installing of contribs-lib if specified by config.

diff -Naur clucene-2.3.3.4.orig/CMakeLists.txt clucene-2.3.3.4/CMakeLists.txt
--- clucene-2.3.3.4.orig/CMakeLists.txt	2013-10-17 11:32:30.064546492 +0200
+++ clucene-core-2.3.3.4/CMakeLists.txt	2013-10-17 11:33:58.559550441 +0200
@@ -163,7 +163,7 @@
   SET(BUILD_CONTRIBS_LIB 1)
 ENDIF ( BUILD_CONTRIBS )
 IF ( BUILD_CONTRIBS_LIB )
-  ADD_SUBDIRECTORY (src/contribs-lib EXCLUDE_FROM_ALL)
+  ADD_SUBDIRECTORY (src/contribs-lib)
 ENDIF ( BUILD_CONTRIBS_LIB )

diff -Naur clucene-2.3.3.4.orig/src/contribs-lib/CMakeLists.txt clucene-2.3.3.4/src/contribs-lib/CMakeLists.txt
--- clucene-2.3.3.4.orig/src/contribs-lib/CMakeLists.txt	2013-10-17 11:32:30.076546493 +0200
+++ clucene-core-2.3.3.4/src/contribs-lib/CMakeLists.txt	2013-10-17 11:33:58.560550441 +0200
@@ -106,9 +106,26 @@
 )
 TARGET_LINK_LIBRARIES(clucene-contribs-lib ${clucene_contrib_extra_libs})

+#install public headers.
+FOREACH(file ${HEADERS})
+	get_filename_component(apath ${file} PATH)
+	get_filename_component(aname ${file} NAME)
+	file(RELATIVE_PATH relpath ${CMAKE_SOURCE_DIR}/src/contribs-lib ${apath})
+	IF ( NOT aname MATCHES "^_.*" )
+		install(FILES ${file}
+		        DESTINATION include/${relpath}
+		        COMPONENT development)
+	ENDIF ( NOT aname MATCHES "^_.*" )
+ENDFOREACH(file)
+
 #set properties on the libraries
 SET_TARGET_PROPERTIES(clucene-contribs-lib PROPERTIES
     VERSION ${CLUCENE_VERSION}
     SOVERSION ${CLUCENE_SOVERSION}
     COMPILE_DEFINITIONS_DEBUG _DEBUG
 )
+
+#and install library
+install(TARGETS clucene-contribs-lib
+        DESTINATION ${LIB_DESTINATION}
+        COMPONENT runtime )


code:
From b5a1b3488a72abd250cbd5d4dfbeac3e3739c237 Mon Sep 17 00:00:00 2001
From: Hodorgasm <nsane457@gmail.com>
Date: Thu, 12 May 2016 20:38:12 -0400
Subject: [PATCH] Support GCC-6

---
 src/shared/cmake/MacroCheckGccVisibility.cmake | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/src/shared/cmake/MacroCheckGccVisibility.cmake b/src/shared/cmake/MacroCheckGccVisibility.cmake
index 2022aa3..020f913 100644
--- a/src/shared/cmake/MacroCheckGccVisibility.cmake
+++ b/src/shared/cmake/MacroCheckGccVisibility.cmake
@@ -15,7 +15,7 @@ macro(MACRO_CHECK_GCC_VISIBILITY GccVisibility)
    # get the gcc version
    exec_program(${CMAKE_C_COMPILER} ARGS --version OUTPUT_VARIABLE _gcc_version_info)

-   string (REGEX MATCH "[345]\\.[0-9]\\.[0-9]" _gcc_version "${_gcc_version_info}")
+   string (REGEX MATCH "[3456]\\.[0-9]\\.[0-9]" _gcc_version "${_gcc_version_info}")
    if (NOT _gcc_version)

       # clang reports: clang version 1.1 (trunk 95754)
--
2.8.2


code:
diff -up clucene-core-2.3.3.4/src/core/libclucene-core.pc.cmake.pkgconfig_sys_includes clucene-core-2.3.3.4/src/core/libclucene-core.pc.cmake
--- clucene-core-2.3.3.4/src/core/libclucene-core.pc.cmake.pkgconfig_sys_includes	2011-03-16 19:21:07.000000000 -0500
+++ clucene-core-2.3.3.4/src/core/libclucene-core.pc.cmake	2012-03-19 09:01:00.689263954 -0500
@@ -6,6 +6,6 @@ includedir=${prefix}/include:${prefix}/i
 Name: libclucene
 Description: CLucene - a C++ search engine, ported from the popular Apache Lucene
 Version: @CLUCENE_VERSION_MAJOR@.@CLUCENE_VERSION_MINOR@.@CLUCENE_VERSION_REVISION@.@CLUCENE_VERSION_PATCH@
-Libs: -L${prefix}/@LIB_DESTINATION@/ -lclucene-core
-Cflags: -I${prefix}/include -I${prefix}/include/CLucene/ext
+Libs: -L${prefix}/@LIB_DESTINATION@/ -lclucene-core -lclucene-shared
+Cflags: -I${prefix}/include -I${prefix}/include/CLucene/ext -I@LUCENE_SYS_INCLUDES@
 ~


code:
diff -up clucene-core-2.3.3.4/src/test/search/TestIndexSearcher.cpp.usleep clucene-core-2.3.3.4/src/test/search/TestIndexSearcher.cpp
--- clucene-core-2.3.3.4/src/test/search/TestIndexSearcher.cpp.usleep	2011-03-16 19:21:07.000000000 -0500
+++ clucene-core-2.3.3.4/src/test/search/TestIndexSearcher.cpp	2014-10-07 19:35:20.854480798 -0500
@@ -4,6 +4,7 @@
 * Distributable under the terms of either the Apache License (Version 2.0) or
 * the GNU Lesser General Public License, as specified in the COPYING file.
 ------------------------------------------------------------------------------*/
+#include <unistd.h>
 #include "test.h"

 DEFINE_MUTEX(searchMutex);


code:
--- src/core/CLucene/index/TermInfosReader.cpp
+++ src/core/CLucene/index/TermInfosReader.cpp
@@ -111,7 +111,7 @@
 	      //destroy their elements
 #ifdef _DEBUG
          for ( int32_t i=0; i<indexTermsLength;++i ){
-            indexTerms[i].__cl_refcount--;
+            indexTerms[i].__cl_decref();
          }
 #endif
          //Delete the arrays


code:
--- src/shared/CLucene/config/threads.cpp	2012-02-23 12:06:55.355506304 +0000
+++ src/shared/CLucene/config/threads.cpp	2012-02-23 12:07:17.131766381 +0000
@@ -185,7 +185,7 @@
     }

     int32_t atomic_threads::atomic_increment(_LUCENE_ATOMIC_INT *theInteger){
-      #ifdef _CL_HAVE_GCC_ATOMIC_FUNCTIONS
+      #if ( __GNUC__ > 4 ) || (( __GNUC__ == 4)  && ( __GNUC_MINOR__ >= 4 ))
         return __sync_add_and_fetch(theInteger, 1);
       #else
         SCOPED_LOCK_MUTEX(theInteger->THIS_LOCK)
@@ -193,7 +193,7 @@
       #endif
     }
     int32_t atomic_threads::atomic_decrement(_LUCENE_ATOMIC_INT *theInteger){
-      #ifdef _CL_HAVE_GCC_ATOMIC_FUNCTIONS
+      #if ( __GNUC__ > 4 ) || (( __GNUC__ == 4)  && ( __GNUC_MINOR__ >= 4 ))
         return __sync_sub_and_fetch(theInteger, 1);
       #else
         SCOPED_LOCK_MUTEX(theInteger->THIS_LOCK)
--- src/shared/CLucene/LuceneThreads.h	2012-02-23 12:36:28.388299322 +0000
+++ src/shared/CLucene/LuceneThreads.h	2012-02-23 12:37:23.131885433 +0000
@@ -70,7 +70,7 @@
         		void NotifyAll();
 					};

-          #ifdef _CL_HAVE_GCC_ATOMIC_FUNCTIONS
+          #if ( __GNUC__ > 4 ) || (( __GNUC__ == 4)  && ( __GNUC_MINOR__ >= 4 ))
             #define _LUCENE_ATOMIC_INT uint32_t
             #define _LUCENE_ATOMIC_INT_SET(x,v) x=v
             #define _LUCENE_ATOMIC_INT_GET(x) x


code:
--- src/core/CLucene/util/VoidMap.h
+++ src/core/CLucene/util/VoidMap.h
@@ -316,6 +316,7 @@ public:
 		if ( _this::dk || _this::dv )
 			_this::remove(k);

+		(*this)[k] = v;
 	}
 };


code:
--- src/core/CLucene/queryParser/QueryParser.cpp.sav	2011-03-17 01:21:07.000000000 +0100
+++ src/core/CLucene/queryParser/QueryParser.cpp	2012-03-09 18:20:58.000000000 +0100
@@ -79,7 +79,7 @@
     _T("<RANGEEX_GOOP>")
 };

-const int32_t QueryParser::jj_la1_0[] = {0x180,0x180,0xe00,0xe00,0x1f69f80,0x48000,0x10000,0x1f69000,0x1348000,0x80000,0x80000,0x10000,0x18000000,0x2000000,0x18000000,0x10000,0x80000000,0x20000000,0x80000000,0x10000,0x80000,0x10000,0x1f68000};
+const int32_t QueryParser::jj_la1_0[] = {0x180,0x180,0xe00,0xe00,0x1f69f80,0x48000,0x10000,0x1f69000,0x1348000,0x80000,0x80000,0x10000,0x18000000,0x2000000,0x18000000,0x10000,int32_t(0x80000000),0x20000000,int32_t(0x80000000),0x10000,0x80000,0x10000,0x1f68000};
 const int32_t QueryParser::jj_la1_1[] = {0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x0,0x1,0x0,0x1,0x0,0x0,0x0,0x0};

 struct QueryParser::JJCalls {
--- src/core/CLucene/queryParser/QueryParserTokenManager.cpp.sav	2011-03-17 01:21:07.000000000 +0100
+++ src/core/CLucene/queryParser/QueryParserTokenManager.cpp	2012-03-09 18:20:24.000000000 +0100
@@ -15,9 +15,9 @@

 CL_NS_DEF(queryParser)

-const int64_t QueryParserTokenManager::jjbitVec2[]={0x0L, 0x0L, _ILONGLONG(0xffffffffffffffff), _ILONGLONG(0xffffffffffffffff)};
+const int64_t QueryParserTokenManager::jjbitVec2[]={0x0L, 0x0L, int64_t(_ILONGLONG(0xffffffffffffffff)), int64_t(_ILONGLONG(0xffffffffffffffff))};
 const int64_t QueryParserTokenManager::jjbitVec0[] = {
-	_ILONGLONG(0xfffffffffffffffe), _ILONGLONG(0xffffffffffffffff), _ILONGLONG(0xffffffffffffffff), _ILONGLONG(0xffffffffffffffff)
+	int64_t(_ILONGLONG(0xfffffffffffffffe)), int64_t(_ILONGLONG(0xffffffffffffffff)), int64_t(_ILONGLONG(0xffffffffffffffff)), int64_t(_ILONGLONG(0xffffffffffffffff))
 };
 const int32_t QueryParserTokenManager::jjnextStates[]={
 		15, 17, 18, 29, 32, 23, 33, 30, 20, 21, 32, 23, 33, 31, 34, 27,


code:
--- src/core/CLucene/analysis/AnalysisHeader.h	2012-02-22 12:37:22.531637934 +0000
+++ src/core/CLucene/analysis/AnalysisHeader.h	2012-02-22 12:39:15.369916728 +0000
@@ -7,6 +7,8 @@
 #ifndef _lucene_analysis_AnalysisHeader_
 #define _lucene_analysis_AnalysisHeader_

+#pragma GCC system_header
+
 #include "CLucene/index/Payload.h"
 #include "CLucene/util/VoidList.h"
 #include "CLucene/LuceneThreads.h"
--- src/core/CLucene/search/Searchable.h	2012-02-22 12:37:22.513637729 +0000
+++ src/core/CLucene/search/Searchable.h	2012-02-22 12:38:51.073641550 +0000
@@ -7,6 +7,7 @@
 #ifndef _lucene_search_Searcher_
 #define _lucene_search_Searcher_

+#pragma GCC system_header

 //#include "CLucene/index/IndexReader.h"
 CL_CLASS_DEF(index,Term)
--- src/core/CLucene/store/IndexInput.h	2012-02-22 12:37:22.508637673 +0000
+++ src/core/CLucene/store/IndexInput.h	2012-02-22 12:39:00.465747935 +0000
@@ -7,6 +7,8 @@
 #ifndef _lucene_store_IndexInput_
 #define _lucene_store_IndexInput_

+#pragma GCC system_header
+
 #include "CLucene/LuceneThreads.h"
 #include "CLucene/util/Equators.h"

--- src/core/CLucene/util/Array.h	2012-02-22 12:37:22.510637696 +0000
+++ src/core/CLucene/util/Array.h	2012-02-22 12:38:33.714444884 +0000
@@ -7,6 +7,8 @@
 #ifndef _lucene_util_Array_
 #define _lucene_util_Array_

+#pragma GCC system_header
+
 #include <stdlib.h>
 #include <string.h>

--- src/core/CLucene/util/PriorityQueue.h	2012-02-22 12:37:22.510637696 +0000
+++ src/core/CLucene/util/PriorityQueue.h	2012-02-22 12:38:40.316519685 +0000
@@ -7,6 +7,8 @@
 #ifndef _lucene_util_PriorityQueue_
 #define _lucene_util_PriorityQueue_

+#pragma GCC system_header
+
 #include <stdlib.h>

 CL_NS_DEF(util)


code:
From: Veit Jahns <idolum@users.sourceforge.net>
Date: Thu, 26 May 2011 11:35:28 +0000 (+0200)
Subject: Fixing ZLIB configuration in shared's CMakeLists
X-Git-Url: http://clucene.git.sourceforge.net/git/gitweb.cgi?p=clucene%2Fclucene;a=commitdiff_plain;h=772481ca94071ddfe65102a451926e4f9aeb4d2c;hp=a834f87bad3543b2a0331cef7202c15ded4245be

Fixing ZLIB configuration in shared's CMakeLists
---

diff --git a/src/shared/CMakeLists.txt b/src/shared/CMakeLists.txt
index 68314a7..3d1975e 100644
--- a/src/shared/CMakeLists.txt
+++ b/src/shared/CMakeLists.txt
@@ -42,7 +42,7 @@ INCLUDE (CheckAtomicFunctions)
 find_package(ZLIB)
 IF ( ZLIB_FOUND )
   SET ( EXTRA_LIBS ${EXTRA_LIBS} ${ZLIB_LIBRARY} )
-ELSEIF ( ZLIB_FOUND )
+ELSE ( ZLIB_FOUND )
   MESSAGE( "ZLIB not found, using local: ${clucene-ext_SOURCE_DIR}/zlib" )
   SET(ZLIB_INCLUDE_DIR ${clucene-ext_SOURCE_DIR}/zlib )
   SET(ZLIB_LIBRARY ${clucene-ext_BINARY_DIR})


code:
<?xml version="1.0" ?>
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
<PISI>
    <Source>
        <Name>clucene</Name>
        <Homepage>http://clucene.sourceforge.net</Homepage>
        <Packager>
            <Name>PisiLinux Community</Name>
            <Email>admins@pisilinux.org</Email>
        </Packager>
        <License>LGPLv2.1</License>
        <License>Apache-2.0</License>
        <IsA>library</IsA>
        A high-performance indexing and searching API
        <Description>CLucene is a high-performance, scalable, cross platform, full-featured, open-source indexing and searching API. It is written in C++.</Description>
        <Archive sha1sum="76d6788e747e78abb5abf8eaad78d3342da5f2a4" type="targz">http://downloads.sourceforge.net/clucene/clucene-core-2.3.3.4.tar.gz</Archive>
        <BuildDependencies>
            <Dependency>boost-devel</Dependency>
            <Dependency>cmake</Dependency>
            <Dependency>zlib-devel</Dependency>
        </BuildDependencies>
        <Patches>

            <Patch>clucene-2.3.3.4-gcc6.patch</Patch>

            <Patch>clucene-core-2.3.3.4-pkgconfig.patch</Patch>
            <Patch>clucene-2.3.3.4-contribs_lib-1.patch</Patch>
            <Patch>fix_zlib_detections.diff</Patch>
            <Patch>clucene-core-2.3.3.4-usleep.patch</Patch>

            <Patch>clucene-warnings.patch</Patch>
            <Patch>clucene-gcc-atomics.patch</Patch>
            <Patch>clucene-debug.patch</Patch>
            <Patch>clucene-narrowing-conversions.patch</Patch>
            <Patch>clucene-multimap-put.patch</Patch>
        </Patches>
    </Source>

    <Package>
        <Name>clucene</Name>
        <Files>
            <Path fileType="library">/usr/lib</Path>
            <Path fileType="doc">/usr/share</Path>
        </Files>
    </Package>

    <Package>
        <Name>clucene-devel</Name>
        Development files for clucene
        <RuntimeDependencies>
            <Dependency release="current">clucene</Dependency>
        </RuntimeDependencies>
        <Files>
            <Path fileType="header">/usr/include</Path>
            <Path fileType="data">/usr/lib/pkgconfig</Path>
        </Files>
    </Package>

    <History>
        <Update release="1">
            <Date>2017-03-02</Date>
            <Version>2.3.3.4</Version>
            <Comment>First Release.</Comment>
            <Name>Ayhan Yalçınsoy</Name>
            <Email>ayhanyalcinsoy@pisilinux.org</Email>
        </Update>
    </History>
</PISI>


code:
<?xml version="1.0" ?>
<PISI>
    <Source>
        <Name>clucene</Name>
        <Description xml:lang="es">CLucene es una API para indexación y búsqueda de alta performance, escalable, cross plataforma, full-featured, código abierto. Está escrito en C++.</Description>
        Yüksek performanslı bir indeksleme ve arama API'si
        <Description xml:lang="tr">CLucene yüksek performanslı, ölçeklenebilir, platform bağımsız, çok özellikli, açık kaynak arama ve indeksleme programlama arayüzüdür. C++ ile yazılmıştır.</Description>
    </Source>

    <Package>
        <Name>clucene-devel</Name>
        clucene için geliştirme dosyaları
    </Package>
</PISI>


code:
<PISI>
    <Name>programming.misc</Name>
</PISI>


code:
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# Licensed under the GNU General Public License, version 3.
# See the file http://www.gnu.org/licenses/gpl.txt

from pisi.actionsapi import shelltools
from pisi.actionsapi import pisitools
from pisi.actionsapi import autotools
from pisi.actionsapi import get

def setup():
    pisitools.dosed("configure.ac", "-O3", "")
    shelltools.export("CPPFLAGS", get.CXXFLAGS())

    shelltools.system("./autogen.sh")
    autotools.configure("--disable-static \
                         --enable-glib")

    pisitools.dosed("libtool", " -shared ", " -Wl,-O1,--as-needed -shared ")

def build():
    autotools.make()

def install():
    autotools.rawInstall("DESTDIR=%s" % get.installDIR())

    pisitools.dodoc("AUTHORS", "README", "COPYING")


code:
diff -upNr dbus-c++.orign/src/Makefile.am dbus-c++/src/Makefile.am
--- dbus-c++.orign/src/Makefile.am	2009-01-08 21:58:42.000000000 +0100
+++ dbus-c++/src/Makefile.am	2009-07-31 11:29:22.871072420 +0200
@@ -24,7 +24,6 @@ HEADER_FILES = \
 	$(HEADER_DIR)/object.h \
 	$(HEADER_DIR)/pendingcall.h \
 	$(HEADER_DIR)/server.h \
-	$(HEADER_DIR)/debug.h \
 	$(HEADER_DIR)/util.h \
 	$(HEADER_DIR)/refptr_impl.h \
 	$(HEADER_DIR)/introspection.h \


code:
diff -upNr dbus-c++.orign/src/Makefile.am dbus-c++/src/Makefile.am
--- dbus-c++.orign/src/Makefile.am	2009-01-08 21:58:42.000000000 +0100
+++ dbus-c++/src/Makefile.am	2010-02-13 19:33:37.090109108 +0100
@@ -38,7 +38,7 @@ lib_include_HEADERS = $(HEADER_FILES)

 lib_LTLIBRARIES = libdbus-c++-1.la
 libdbus_c___1_la_SOURCES = $(HEADER_FILES) interface.cpp object.cpp introspection.cpp debug.cpp types.cpp connection.cpp connection_p.h property.cpp dispatcher.cpp dispatcher_p.h pendingcall.cpp pendingcall_p.h error.cpp internalerror.h message.cpp message_p.h server.cpp server_p.h eventloop.cpp eventloop-integration.cpp $(GLIB_CPP)
-libdbus_c___1_la_LIBADD = $(dbus_LIBS) $(glib_LIBS) $(pthread_LIBS)
+libdbus_c___1_la_LIBADD = $(dbus_LIBS) $(glib_LIBS) $(pthread_LIBS) $(xml_LIBS)

 MAINTAINERCLEANFILES = \
 	Makefile.in


code:
diff --git a/examples/echo/echo-client.h b/examples/echo/echo-client.h
index 54401ec..3511cc0 100644
--- a/examples/echo/echo-client.h
+++ b/examples/echo/echo-client.h
@@ -3,6 +3,7 @@

 #include <dbus-c++/dbus.h>
 #include "echo-client-glue.h"
+#include <cstdio>

 class EchoClient
 : public org::freedesktop::DBus::EchoDemo_proxy,
diff --git a/examples/echo/echo-server.h b/examples/echo/echo-server.h
index 3f0be58..9dfbaec 100644
--- a/examples/echo/echo-server.h
+++ b/examples/echo/echo-server.h
@@ -2,6 +2,7 @@
 #define __DEMO_ECHO_SERVER_H

 #include <dbus-c++/dbus.h>
+#include <cstdio>
 #include "echo-server-glue.h"

 class EchoServer


code:
<?xml version="1.0" ?>
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
<PISI>
    <Source>
        <Name>dbus-c++</Name>
        <Homepage>http://sourceforge.net/projects/dbus-cplusplus/</Homepage>
        <Packager>
            <Name>PisiLinux Community</Name>
            <Email>admins@pisilinux.org</Email>
        </Packager>
        <License>LGPLv2.1</License>
        <IsA>library</IsA>
        <Summary>C++ bindings for DBus library</Summary>
        <Description>dbus-c++ attempts to provide a C++ API for D-BUS. The library has a glib/gtk and an Ecore mainloop integration. It also offers an optional own main loop.</Description>
        <!--http://www.filewatcher.com/m/dbus-c++_0~20090907.orig.tar.gz.855848-0.html-->
        <Archive sha1sum="ffb89c619a9cc126a92b319d7ce72cf12e22b4eb" type="targz">http://source.pisilinux.org/1.0/dbus-c++.tar.gz</Archive>
        <BuildDependencies>
            <Dependency>dbus-devel</Dependency>
            <Dependency>expat-devel</Dependency>
            <Dependency>glib2-devel</Dependency>
        </BuildDependencies>
        <Patches>
            <Patch level="1">dbus-c++-build-fix.patch</Patch>
            <Patch level="1">dbus-c++-linkfix.patch</Patch>
            <Patch level="1">gcc-44.patch</Patch>
        </Patches>
    </Source>

    <Package>
        <Name>dbus-c++</Name>
        <RuntimeDependencies>
            <Dependency>dbus</Dependency>
            <Dependency>libgcc</Dependency>
            <Dependency>expat</Dependency>
            <Dependency>glib2</Dependency>
        </RuntimeDependencies>
        <Files>
            <Path fileType="executable">/usr/bin</Path>
            <Path fileType="library">/usr/lib</Path>
            <Path fileType="doc">/usr/share/doc</Path>
        </Files>
    </Package>

    <Package>
        <Name>dbus-c++-devel</Name>
        <RuntimeDependencies>
            <Dependency release="current">dbus-c++</Dependency>
            <Dependency>dbus-devel</Dependency>
            <Dependency>expat-devel</Dependency>
            <Dependency>glib2-devel</Dependency>
        </RuntimeDependencies>
        <Files>
            <Path fileType="header">/usr/include</Path>
            <Path fileType="data">/usr/lib/pkgconfig</Path>
        </Files>
    </Package>

    <History>
        <Update release="3">
            <Date>2017-02-17</Date>
            <Version>0.0_20090907</Version>
            <Comment>Rebuild.</Comment>
            <Name>Pisi Linux Community</Name>
            <Email>admin@pisilinux.org</Email>
        </Update>
        <Update release="2">
            <Date>2016-06-09</Date>
            <Version>0.0_20090907</Version>
            <Comment>Release Bump</Comment>
            <Name>Pisi Linux Community</Name>
            <Email>admin@pisilinux.org</Email>
        </Update>
        <Update release="1">
            <Date>2016-03-28</Date>
            <Version>0.0_20090907</Version>
            <Comment>First release</Comment>
            <Name>Stefan Gronewold(groni)</Name>
            <Email>groni@pisilinux.org</Email>
        </Update>
    </History>
</PISI>


code:
<?xml version="1.0" ?>
<PISI>
    <Source>
        <Name>dbus-c++</Name>
        <Summary xml:lang="tr">DBus kitaplığı için C++ bağlayıcıları</Summary>
        <Description xml:lang="tr">dbus-c++, DBus kitaplığı için C++ programlama arayüzü sunan bir kitaplıktır.</Description>
    </Source>
</PISI>


code:
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# Licensed under the GNU General Public License, version 3.
# See the file http://www.gnu.org/copyleft/gpl.txt.

from pisi.actionsapi import autotools
from pisi.actionsapi import pisitools

def setup():
    autotools.autoreconf("-i")
    autotools.configure("--disable-static")

def build():
    autotools.make()

def install():
    autotools.install()

    pisitools.dodoc("AUTHORS", "COPYING", "README")


code:
<?xml version="1.0" ?>
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
<PISI>
    <Source>
        <Name>dotconf</Name>
        <Homepage>http://www.opentts.org/projects/dotconf</Homepage>
        <Packager>
            <Name>PisiLinux Community</Name>
            <Email>admins@pisilinux.org</Email>
        </Packager>
        <License>LGPLv2.1</License>
        <IsA>library</IsA>
        A library to parse configuration files
        <Description>dotconf is a simple-to-use and powerful configuration file parser library written in C.</Description>
        <Archive sha1sum="0d66468cc264e7e0bfcff437cc22a1d741ca81f5" type="targz">http://source.pisilinux.org/1.0/dotconf-1.3.tar.gz</Archive>
    </Source>

    <Package>
        <Name>dotconf</Name>
        <Files>
            <Path fileType="library">/usr/lib</Path>
            <Path fileType="doc">/usr/share/doc</Path>
        </Files>
    </Package>

    <Package>
        <Name>dotconf-devel</Name>
        Development headers and documentation for dotconf
        <RuntimeDependencies>
            <Dependency release="current">dotconf</Dependency>
        </RuntimeDependencies>
        <Files>
            <Path fileType="header">/usr/include</Path>
            <Path fileType="data">/usr/lib/pkgconfig</Path>
            <Path fileType="doc">/usr/share/doc/dotconf/examples</Path>
            <Path fileType="doc">/usr/share/doc/dotconf/dotconf-api.txt</Path>
        </Files>
    </Package>

    <History>
        <Update release="3">
            <Date>2017-03-10</Date>
            <Version>1.3</Version>
            <Comment>Release Bump</Comment>
            <Name>Ayhan Yalçınsoy</Name>
            <Email>ayhanyalcinsoy@pisilinux.org</Email>
        </Update>
        <Update release="2">
            <Date>2016-06-09</Date>
            <Version>1.3</Version>
            <Comment>Release Bump</Comment>
            <Name>Pisi Linux Community</Name>
            <Email>admin@pisilinux.org</Email>
        </Update>
        <Update release="1">
            <Date>2015-08-25</Date>
            <Version>1.3</Version>
            <Comment>First release</Comment>
            <Name>Vedat Demir</Name>
            <Email>vedat@pisilinux.org</Email>
        </Update>
    </History>
</PISI>


code:
<?xml version="1.0" ?>
<PISI>
    <Source>
        <Name>dotconf</Name>
        Yapılandırma dosyası ayıklama kitaplığı
        <Description xml:lang="tr">dotconf C dilinde yazılmış, basit kullanımlı ve güçlü bir yapılandırma dosyası ayıklama kitaplığıdır.</Description>
    </Source>

    <Package>
        <Name>dotconf-devel</Name>
        dotconf kitaplığı için geliştirme başlıkları ve belgeleri
    </Package>
</PISI>


code:
#!/usr/bin/python
# -*- coding: utf-8 -*-

# Licensed under the GNU General Public License, version 3.
# See the file http://www.gnu.org/copyleft/gpl.txt

from pisi.actionsapi import cmaketools
from pisi.actionsapi import pisitools
from pisi.actionsapi import shelltools
from pisi.actionsapi import get

def setup():
    shelltools.system("sed -i 's/lib64/lib/g' cmake/flann_utils.cmake")
    shelltools.system("sed -i '1 i #undef _GLIBCXX_ATOMIC_BUILTINS' src/cpp/flann/algorithms/kdtree_cuda_3d_index.cu")
    shelltools.system("sed -i '1 i #undef _GLIBCXX_USE_INT128' src/cpp/flann/algorithms/kdtree_cuda_3d_index.cu")

    shelltools.system("sed -i 's|#!/usr/bin/env python|#!/usr/bin/python2|' \
                              bin/download_checkmd5.py \
                              bin/run_test.py \
                              src/python/setup.py.tpl \
                              test/test_clustering.py \
                              test/test_index_save.py \
                              test/test_nn_autotune.py \
                              test/test_nn_index.py \
                              test/test_nn.py")
    shelltools.system('sed -i "s|setup\.py install|setup.py install --root=$pkgdir --optimize=1|" src/python/CMakeLists.txt')
    cmaketools.configure("-DCMAKE_BUILD_TYPE=Release \
                          -DCMAKE_INSTALL_PREFIX=/usr \
                          -DBUILD_MATLAB_BINDINGS=OFF \
                          -DBUILD_PYTHON_BINDINGS=ON \
                          -DPYTHON_EXECUTABLE=/usr/bin/python2.7 \
                          -DNVCC_COMPILER_BINDIR=/usr/bin")

def build():
    cmaketools.make()

def install():
    cmaketools.rawInstall("DESTDIR=%s" % get.installDIR())
    pisitools.dosym("libinput.so.5.0.0","/usr/lib/libinput.so.0")

    #pisitools.dodoc("COPYING", "README")


code:
diff -up ./src/cpp/flann/algorithms/kdtree_index.h.gcc6 ./src/cpp/flann/algorithms/kdtree_index.h
--- ./src/cpp/flann/algorithms/kdtree_index.h.gcc6	2013-01-15 22:38:32.000000000 -0500
+++ ./src/cpp/flann/algorithms/kdtree_index.h	2016-02-14 11:26:59.339178023 -0500
@@ -34,6 +34,7 @@
 #include <algorithm>
 #include <map>
 #include <cassert>
+#include <cmath>
 #include <cstring>
 #include <stdarg.h>

@@ -663,7 +664,7 @@ private:
             ElementType max_span = 0;
             size_t div_feat = 0;
             for (size_t i=0;i<veclen_;++i) {
-                ElementType span = abs(point[i]-leaf_point[i]);
+                ElementType span = std::fabs(point[i]-leaf_point[i]);
                 if (span > max_span) {
                     max_span = span;
                     div_feat = i;


code:
<?xml version="1.0" ?>
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
<PISI>
    <Source>
        <Name>flann</Name>
        <Homepage>http://www.cs.ubc.ca/research/flann/</Homepage>
        <Packager>
            <Name>Osman Erkan</Name>
            <Email>osman.erkan@pisilinux.org</Email>
        </Packager>
        <License>BSD</License>
        <IsA>library</IsA>
        FLANN is a library for performing fast approximate nearest neighbor searches in high dimensional space.
        <Description>FLANN is a library for performing fast approximate nearest neighbor searches in high dimensional spaces. It contains a collection of algorithms we found to work best for nearest neighbor search and a system for automatically choosing the best algorithm and optimum parameters depending on the dataset.</Description>
        <Archive sha1sum="e03d9d458757f70f6af1d330ff453e3621550a4f" type="zip">http://people.cs.ubc.ca/~mariusm/uploads/FLANN/flann-1.8.4-src.zip</Archive>
        <BuildDependencies>
            <Dependency>cmake</Dependency>
        </BuildDependencies>
        <Patches>
            <Patch>flann-1.8.4-gcc6.patch</Patch>
        </Patches>
    </Source>

    <Package>
        <Name>flann</Name>
        <RuntimeDependencies>
            <Dependency>libgcc</Dependency>
            <Dependency>libgomp</Dependency>
        </RuntimeDependencies>
        <Files>
            <Path fileType="library">/usr/lib</Path>
            <Path fileType="doc">/usr/share/doc</Path>
            <Path fileType="executable">/usr/bin</Path>
            <Path fileType="data">/usr/share/flann</Path>
        </Files>
    </Package>

    <Package>
        <Name>flann-devel</Name>
        Development files for flann
        <RuntimeDependencies>
            <Dependency release="current">flann</Dependency>
        </RuntimeDependencies>
        <Files>
            <Path fileType="header">/usr/include</Path>
            <Path fileType="library">/usr/lib/pkgconfig</Path>
        </Files>
    </Package>

    <History>
        <Update release="3">
            <Date>2017-04-30</Date>
            <Version>1.8.4</Version>
            <Comment>Release Bump</Comment>
            <Name>Kamil Atlı</Name>
            <Email>admin@pisilinux.org</Email>
        </Update>
        <Update release="2">
            <Date>2016-06-09</Date>
            <Version>1.8.4</Version>
            <Comment>Release Bump</Comment>
            <Name>Pisi Linux Community</Name>
            <Email>admin@pisilinux.org</Email>
        </Update>
        <Update release="1">
            <Date>2015-08-25</Date>
            <Version>1.8.4</Version>
            <Comment>First release</Comment>
            <Name>Osman Erkan</Name>
            <Email>osman.erkan@pisilinux.org</Email>
        </Update>
    </History>
</PISI>


code:
<?xml version="1.0" ?>
<PISI>
    <Source>
        <Name>flann</Name>
        FLANN is a library for performing fast approximate nearest neighbor searches in high dimensional space.
        <Description xml:lang="en">FLANN is a library for performing fast approximate nearest neighbor searches in high dimensional spaces. It contains a collection of algorithms we found to work best for nearest neighbor search and a system for automatically choosing the best algorithm and optimum parameters depending on the dataset.</Description>
    </Source>

    <Package>
        <Name>flann-devel</Name>
        Development files for flann
    </Package>
</PISI>


code:
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# Licensed under the GNU General Public License, version 3.
# See the file http://www.gnu.org/licenses/gpl.txt

from pisi.actionsapi import autotools
from pisi.actionsapi import pisitools
from pisi.actionsapi import get

def setup():
    autotools.configure("--enable-shared \
                         --disable-static")

def build():
    autotools.make()

def check():
    autotools.make("check")

def install():
    autotools.rawInstall("DESTDIR=%s" % get.installDIR())

    pisitools.dodoc("AUTHORS", "ChangeLog", "COPYING", "README*")


code:
<?xml version="1.0" ?>
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
<PISI>
    <Source>
        <Name>geoip</Name>
        <Homepage>http://www.maxmind.com/geoip/api/c.shtml</Homepage>
        <Packager>
            <Name>PisiLinux Community</Name>
            <Email>admins@pisilinux.org</Email>
        </Packager>
        <License>LGPLv2.1</License>
        <IsA>library</IsA>
        <Summary>C library for country/city/organization to IP address or hostname mapping</Summary>
        <Description>GeoIP is a C library that enables the user to find the country that any IP address or hostname originates from.</Description>
        <Archive sha1sum="ac0deb2309c14d5763e82fa4139de1f3193ab6b1" type="targz">https://github.com/maxmind/geoip-api-c/releases/download/v1.6.9/GeoIP-1.6.9.tar.gz</Archive>
    </Source>

    <Package>
        <Name>geoip</Name>
        <Files>
            <Path fileType="config">/etc</Path>
            <Path fileType="library">/usr/lib</Path>
            <Path fileType="doc">/usr/share/doc</Path>
            <Path fileType="man">/usr/share/man</Path>
            <Path fileType="executable">/usr/bin</Path>
            <Path fileType="data">/usr/share/GeoIP</Path>
        </Files>
    </Package>

    <Package>
        <Name>geoip-devel</Name>
        <RuntimeDependencies>
            <Dependency release="current">geoip</Dependency>
        </RuntimeDependencies>
        <Files>
            <Path fileType="header">/usr/include</Path>
            <Path fileType="library">/usr/lib/pkgconfig</Path>
        </Files>
    </Package>

    <History>
        <Update release="3">
            <Date>2017-09-20</Date>
            <Version>1.6.9</Version>
            <Comment>Version Bump</Comment>
            <Name>Pisi Linux Community</Name>
            <Email>admin@pisilinux.org</Email>
        </Update>
        <Update release="2">
            <Date>2016-06-09</Date>
            <Version>1.6.2</Version>
            <Comment>Release Bump</Comment>
            <Name>Pisi Linux Community</Name>
            <Email>admin@pisilinux.org</Email>
        </Update>
        <Update release="1">
            <Date>2014-07-14</Date>
            <Version>1.6.2</Version>
            <Comment>First release</Comment>
            <Name>Vedat Demir</Name>
            <Email>vedat@pisilinux.org</Email>
        </Update>
    </History>
</PISI>


code:
<?xml version="1.0" ?>
<PISI>
    <Source>
        <Name>geoip</Name>
        Ülke/şehir/organizasyon adı ile IP adresi veya makine adı eşleştirmesi için C kitaplığı
        <Description xml:lang="tr">GeoIP, herhangi bir IP adresinin veya makine adının hangi ülkeye ait olduğunu bulmak için kullanılan bir C kitaplığıdır.</Description>
    </Source>

    <Package>
        <Name>geoip-devel</Name>
        Geoip için geliştirme dosyaları
    </Package>
</PISI>


code:
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# Licensed under the GNU General Public License, version 3.
# See the file http://www.gnu.org/licenses/gpl.txt

from pisi.actionsapi import autotools
from pisi.actionsapi import pisitools
from pisi.actionsapi import get

def setup():
    autotools.configure()

def build():
    autotools.make()

def install():
    autotools.install()

    pisitools.dohtml("doc/*")
    pisitools.dodoc("AUTHORS", "ChangeLog", "COPYING", "NEWS", "README", "TODO")


code:
<?xml version="1.0" ?>
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
<PISI>
    <Source>
        <Name>google-sparsehash</Name>
        <Homepage>http://code.google.com/p/google-sparsehash</Homepage>
        <Packager>
            <Name>PisiLinux Community</Name>
            <Email>admins@pisilinux.org</Email>
        </Packager>
        <License>BSD</License>
        <IsA>library</IsA>
        <Summary>An extremely memory-efficient hash_map implementation</Summary>
        <Description>The SparseHash library contains several hash-map implementations, including implementations that optimize for space or speed.</Description>
        <Archive sha1sum="94a9aad9167275af41b13122c60754ad1a5adb34" type="targz">https://github.com/sparsehash/sparsehash/archive/sparsehash-2.0.3.tar.gz</Archive>
    </Source>

    <Package>
        <Name>google-sparsehash</Name>
        <Files>
            <Path fileType="library">/usr/lib</Path>
            <Path fileType="header">/usr/include</Path>
            <Path fileType="doc">/usr/share/doc</Path>
        </Files>
    </Package>

    <History>
        <Update release="1">
            <Date>2017-01-04</Date>
            <Version>2.0.3</Version>
            <Comment>First release</Comment>
            <Name>Alihan Öztürk</Name>
            <Email>alihan@pisilinux.org</Email>
        </Update>
    </History>
</PISI>


code:
<?xml version="1.0" ?>
<PISI>
    <Source>
        <Name>google-sparsehash</Name>
        <Summary xml:lang="tr">Son derece verimli bellek kullanımına sahip hash-map uyarlaması</Summary>
        <Description xml:lang="tr">SparseHash kitaplığı hıza veya boyuta göre eniyileştirilebilecek çeşitli hash-map uyarlamalarını içerir.</Description>
    </Source>
</PISI>


code:
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# Licensed under the GNU General Public License, version 3.
# See the file http://www.gnu.org/licenses/gpl.txt

from pisi.actionsapi import cmaketools
from pisi.actionsapi import pisitools
from pisi.actionsapi import get

def setup():
    cmaketools.configure("-DCMAKE_INSTALL_PREFIX=/usr \
                          -DCMAKE_BUILD_TYPE=Release \
                          -DBUILD_TESTS=OFF")

def build():
    cmaketools.make()

def install():
    cmaketools.rawInstall("DESTDIR=%s" % get.installDIR())

    pisitools.dodoc("AUTHORS", "CHANGELOG", "COPYING*")


code:
<?xml version="1.0" ?>
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
<PISI>
    <Source>
        <Name>grantlee-qt5</Name>
        <Homepage>https://github.com/steveire/grantlee</Homepage>
        <Packager>
            <Name>PisiLinux Community</Name>
            <Email>admins@pisilinux.org</Email>
        </Packager>
        <License>LGPLv2+</License>
        <IsA>library</IsA>
        Qt string template engine based on the Django template system
        <Description>grantlee is a plugin based String Template system written using the Qt framework. The goals of the project are to make it easier for application developers to separate the structure of documents from the data they contain, opening the door for theming.</Description>
        <Archive sha1sum="67f81e6c3ff039cdf9179c9e3c500c50e165d0f7" type="targz">https://github.com/steveire/grantlee/archive/v5.1.0.tar.gz</Archive>
        <BuildDependencies>
            <Dependency>mesa-devel</Dependency>
            <Dependency versionFrom="5.7.1">qt5-base-devel</Dependency>

            <Dependency>cmake</Dependency>
        </BuildDependencies>
    </Source>

    <Package>
        <Name>grantlee-qt5</Name>
        <RuntimeDependencies>
            <Dependency versionFrom="5.7.1">qt5-base</Dependency>
            <Dependency versionFrom="5.7.1">qt5-script</Dependency>
            <Dependency>libgcc</Dependency>
        </RuntimeDependencies>
        <Files>
            <Path fileType="library">/usr/lib</Path>
            <Path fileType="doc">/usr/share/doc</Path>
        </Files>
    </Package>

    <Package>
        <Name>grantlee-qt5-devel</Name>
        Development files for grantlee
        <RuntimeDependencies>
            <Dependency release="current">grantlee-qt5</Dependency>
            <Dependency versionFrom="5.7.1">qt5-base-devel</Dependency>

        </RuntimeDependencies>
        <Files>
            <Path fileType="header">/usr/include</Path>
            <Path fileType="data">/usr/lib/cmake</Path>
        </Files>
    </Package>

    <History>
        <Update release="4">
            <Date>2017-03-10</Date>
            <Version>5.1.0</Version>
            <Comment>Release bump.</Comment>
            <Name>Kamil Atlı</Name>
            <Email>suvari@pisilinux.org</Email>
        </Update>
        <Update release="3">
            <Date>2016-08-13</Date>
            <Version>5.1.0</Version>
            <Comment>Version bump.</Comment>
            <Name>Yusuf Aydemir</Name>
            <Email>yusuf.aydemir@pisilinux.org</Email>
        </Update>
        <Update release="2">
            <Date>2016-06-09</Date>
            <Version>5.0.0</Version>
            <Comment>Release Bump</Comment>
            <Name>Pisi Linux Community</Name>
            <Email>admin@pisilinux.org</Email>
        </Update>
        <Update release="1">
            <Date>2015-10-18</Date>
            <Version>5.0.0</Version>
            <Comment>First release</Comment>
            <Name>Ertuğrul Erata</Name>
            <Email>ertugrulerata@gmail.com</Email>
        </Update>
    </History>
</PISI>


code:
<?xml version="1.0" ?>
<PISI>
    <Source>
        <Name>grantlee-qt5</Name>
        Django şablon sistemi benzeri bir Qt metin şablon motoru
        <Description xml:lang="tr">grantlee, Qt çatısı kullanılarak yazılmış bir eklenti destekli metin şablon sistemidir. Projenin amaçları; belgelerin yapısını, içerdikleri veriden ayırarak uygulama geliştiricilerinin işini kolaylaştırmak ve tema desteği için imkan sağlamaktır.</Description>
    </Source>

    <Package>
        <Name>grantlee-qt5-devel</Name>
        grantlee için geliştirme dosyaları
    </Package>
</PISI>


code:
#!/usr/bin/python
# -*- coding: utf-8 -*-

from pisi.actionsapi import pisitools
from pisi.actionsapi import shelltools
from pisi.actionsapi import autotools
from pisi.actionsapi import get

NoStrip = "/"

def setup():
    shelltools.export("LDFLAGS", "%s -lm" % get.LDFLAGS())
    autotools.configure("--prefix=/usr")

    pisitools.dosed("libtool"," -shared ", " -Wl,--as-needed -shared ")

def build():
    autotools.make()

def install():
    autotools.rawInstall("DESTDIR=%s" % get.installDIR())

    pisitools.dodoc("AUTHORS", "ChangeLog", "README", "COPYING")


code:
Author: Ludovico Cavedon <cavedon@debian.org>
Description: Fix compilation with GCC 4.6
Forwarded: yes

Index: htmlcxx/html/tree.h
===================================================================
--- htmlcxx.orig/html/tree.h
+++ htmlcxx/html/tree.h
@@ -116,7 +116,7 @@ class tree {
             typedef T*                              pointer;
             typedef T&                              reference;
             typedef size_t                          size_type;
-            typedef ptrdiff_t                       difference_type;
+            typedef std::ptrdiff_t                  difference_type;
             typedef std::bidirectional_iterator_tag iterator_category;

             iterator_base();


code:
Description: do not link htmlcxx against libcss_parser, but have
 libcss_parser_pp link against it.
Author: Ludovico Cavedon <cavedon@debian.org>

Index: htmlcxx/Makefile.am
===================================================================
--- htmlcxx.orig/Makefile.am
+++ htmlcxx/Makefile.am
@@ -3,7 +3,7 @@ SUBDIRS = html css
 bin_PROGRAMS = htmlcxx
 htmlcxx_SOURCES = htmlcxx.cc wingetopt.h

-htmlcxx_LDADD = html/libhtmlcxx.la css/libcss_parser_pp.la css/libcss_parser.la
+htmlcxx_LDADD = html/libhtmlcxx.la css/libcss_parser_pp.la

 EXTRA_DIST = ASF-2.0 LGPL_V2 wingetopt.c htmlcxx.spec htmlcxx.vcproj htmlcxxapp.vcproj htmlcxx.pc.in

Index: htmlcxx/css/Makefile.am
===================================================================
--- htmlcxx.orig/css/Makefile.am
+++ htmlcxx/css/Makefile.am
@@ -1,11 +1,12 @@
-lib_LTLIBRARIES = libcss_parser_pp.la libcss_parser.la
-
-libcss_parser_pp_la_SOURCES = parser_pp.h parser_pp.cc parser.c
-libcss_parser_pp_la_LDFLAGS = -version-info 0:0:0
+lib_LTLIBRARIES = libcss_parser.la libcss_parser_pp.la

 libcss_parser_la_SOURCES = css_syntax.y css_lex.l css_lex.h css_syntax.h parser.c parser.h
 libcss_parser_la_LDFLAGS = -version-info 0:0:0

+libcss_parser_pp_la_SOURCES = parser_pp.h parser_pp.cc parser.c
+libcss_parser_pp_la_LDFLAGS = -version-info 0:0:0
+libcss_parser_pp_la_LIBADD = libcss_parser.la
+
 AM_YFLAGS = -d
 AM_LFLAGS = -i


code:
<?xml version='1.0'?>
<!DOCTYPE PISI SYSTEM 'http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd'>
<PISI>
    <Source>
        <Name>htmlcxx</Name>
        <Homepage>http://htmlcxx.sourceforge.net/</Homepage>
        <Packager>
            <Name>PisiLinux Community</Name>
            <Email>admins@pisilinux.org</Email>
        </Packager>
        <License>LGPL</License>
        <IsA>app:library</IsA>
        htmlcxx is a simple non-validating css1 and html parser for C++
        <Description>htmlcxx is the name of both the library and the utility application that comes with this package. Although the htmlcxx (the application) is mostly useless for programming, you can use it to easily see how htmlcxx (the library) would parse your html code.</Description>
        <Archive sha1sum="0d8205a0d1296fd228af2001b1d990e9257c104c" type="targz">http://sourceforge.net/projects/htmlcxx/files/htmlcxx/0.86/htmlcxx-0.86.tar.gz</Archive>
        <Patches>
             <Patch level="1">fix-gcc-4.6-ftbfs.patch</Patch>
             <Patch level="1">reduce-linking.patch</Patch>
        </Patches>
        <BuildDependencies>
            <Dependency>flex</Dependency>
            <Dependency>bison</Dependency>
            <Dependency>libtool</Dependency>
            </BuildDependencies>
    </Source>

    <Package>
        <Name>htmlcxx</Name>
        <RuntimeDependencies>
            <Dependency>libgcc</Dependency>
        </RuntimeDependencies>
        <Files>
            <Path fileType="executable">/usr/bin</Path>
            <Path fileType="library">/usr/lib</Path>
            <Path fileType="data">/usr/share</Path>
            <Path fileType="doc">/usr/share/doc</Path>
        </Files>
    </Package>

    <Package>
        <Name>htmlcxx-devel</Name>
        Development files for htmlcxx
        <RuntimeDependencies>
            <Dependency release="current">htmlcxx</Dependency>
        </RuntimeDependencies>
        <Files>
            <Path fileType="header">/usr/include</Path>
            <Path fileType="data">/usr/lib/pkgconfig</Path>
        </Files>
    </Package>

    <History>
        <Update release="2">
            <Date>2017-04-23</Date>
            <Version>0.86</Version>
            <Comment>Rebuild with new toolchain</Comment>
            <Name>Stefan Gronewold</Name>
            <Email>groni@pisilinux.org</Email>
        </Update>
        <Update release="1">
            <Date>2016-11-20</Date>
            <Version>0.86</Version>
            <Comment>First release</Comment>
            <Name>Stefan Gronewold</Name>
            <Email>groni@pisilinux.org</Email>
        </Update>
    </History>
</PISI>


code:
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# Licensed under the GNU General Public License, version 3.
# See the file http://www.gnu.org/licenses/gpl.txt

from pisi.actionsapi import get
from pisi.actionsapi import autotools
from pisi.actionsapi import pisitools
from pisi.actionsapi import shelltools

WorkDir="icu/source"

def setup():
    autotools.autoconf("-f")
    options = "--with-data-packaging=library \
               --disable-samples \
               --disable-silent-rules"
    if get.buildTYPE() == "_emul32":
        options += " --libdir=/usr/lib32 \
                     --bindir=/_emul32/bin \
                     --sbindir=/_emul32/sbin"
        shelltools.export("CC", "%s -m32" % get.CC())
        shelltools.export("CXX", "%s -m32" % get.CXX())
    autotools.configure(options)
    pisitools.dosed("config/mh-linux", "-nodefaultlibs -nostdlib")

def build():
    autotools.make()

def check():
    autotools.make("check")

def install():
    autotools.rawInstall('-j1 DESTDIR="%s"' % get.installDIR())
    if get.buildTYPE() == "_emul32":
        pisitools.domove("/_emul32/bin/icu-config", "/usr/bin", "icu-config-32")
        pisitools.removeDir("/_emul32")
        for f in shelltools.ls("%s/usr/lib32/pkgconfig" % get.installDIR()):
            pisitools.dosed("%s/usr/lib32/pkgconfig/%s" % (get.installDIR(), f), "_emul32", "usr")
        return

    pisitools.dohtml("../*.html")


code:
Index: icu/trunk/source/layout/IndicReordering.cpp
===================================================================
--- icu/trunk/source/layout/IndicReordering.cpp	(revision 25772)
+++ icu/trunk/source/layout/IndicReordering.cpp	(revision 26090)
@@ -126,4 +126,8 @@
     FeatureMask fSMFeatures;

+    LEUnicode   fPreBaseConsonant;
+    LEUnicode   fPreBaseVirama;
+    le_int32    fPBCIndex;
+    FeatureMask fPBCFeatures;

     void saveMatra(LEUnicode matra, le_int32 matraIndex, IndicClassTable::CharClass matraClass)
@@ -172,5 +176,6 @@
           fMatraFeatures(0), fMPreOutIndex(-1), fMPreFixups(mpreFixups),
           fVMabove(0), fVMpost(0), fVMIndex(0), fVMFeatures(0),
-          fSMabove(0), fSMbelow(0), fSMIndex(0), fSMFeatures(0)
+          fSMabove(0), fSMbelow(0), fSMIndex(0), fSMFeatures(0),
+          fPreBaseConsonant(0), fPreBaseVirama(0), fPBCIndex(0), fPBCFeatures(0)
     {
         // nothing else to do...
@@ -191,4 +196,6 @@
         fVMabove = fVMpost  = 0;
         fSMabove = fSMbelow = 0;
+
+        fPreBaseConsonant = fPreBaseVirama = 0;
     }

@@ -386,4 +393,12 @@
     }

+    void notePreBaseConsonant(le_uint32 index,LEUnicode PBConsonant, LEUnicode PBVirama, FeatureMask features)
+    {
+        fPBCIndex = index;
+        fPreBaseConsonant = PBConsonant;
+        fPreBaseVirama = PBVirama;
+        fPBCFeatures = features;
+    }
+
     void noteBaseConsonant()
     {
@@ -465,4 +480,20 @@
     }

+    void writePreBaseConsonant()
+    {
+        // The TDIL spec says that consonant + virama + RRA should produce a rakar in Malayalam.  However,
+        // it seems that almost none of the fonts for Malayalam are set up to handle this.
+        // So, we're going to force the issue here by using the rakar as defined with RA in most fonts.
+
+        if (fPreBaseConsonant == 0x0d31) { // RRA
+            fPreBaseConsonant = 0x0d30; // RA
+        }
+
+        if (fPreBaseConsonant != 0) {
+            writeChar(fPreBaseConsonant, fPBCIndex, fPBCFeatures);
+            writeChar(fPreBaseVirama,fPBCIndex-1,fPBCFeatures);
+        }
+    }
+
     le_int32 getOutputIndex()
     {
@@ -723,4 +754,5 @@
             }

+
             IndicClassTable::CharClass charClass = CC_RESERVED;
             IndicClassTable::CharClass nextClass = CC_RESERVED;
@@ -730,7 +762,9 @@
             le_bool  seenVattu = FALSE;
             le_bool  seenBelowBaseForm = FALSE;
+            le_bool  seenPreBaseForm = FALSE;
             le_bool  hasNukta = FALSE;
             le_bool  hasBelowBaseForm = FALSE;
             le_bool  hasPostBaseForm = FALSE;
+            le_bool  hasPreBaseForm = FALSE;

             if (postBase < markStart && classTable->isNukta(chars[postBase])) {
@@ -746,12 +780,20 @@
                 hasBelowBaseForm = IndicClassTable::hasBelowBaseForm(charClass) && !hasNukta;
                 hasPostBaseForm  = IndicClassTable::hasPostBaseForm(charClass)  && !hasNukta;
+                hasPreBaseForm = IndicClassTable::hasPreBaseForm(charClass) && !hasNukta;

                 if (IndicClassTable::isConsonant(charClass)) {
                     if (postBaseLimit == 0 || seenVattu ||
                         (baseConsonant > baseLimit && !classTable->isVirama(chars[baseConsonant - 1])) ||
-                        !(hasBelowBaseForm || hasPostBaseForm)) {
+                        !(hasBelowBaseForm || hasPostBaseForm || hasPreBaseForm)) {
                         break;
                     }

+                    // Note any pre-base consonants
+                    if ( baseConsonant == lastConsonant && lastConsonant > 0 &&
+                         hasPreBaseForm && classTable->isVirama(chars[baseConsonant - 1])) {
+                        output.notePreBaseConsonant(lastConsonant,chars[lastConsonant],chars[lastConsonant-1],tagArray2);
+                        seenPreBaseForm = TRUE;
+
+                    }
                     // consonants with nuktas are never vattus
                     seenVattu = IndicClassTable::isVattu(charClass) && !hasNukta;
@@ -786,10 +828,12 @@

             // write any pre-base consonants
+            output.writePreBaseConsonant();
+
             le_bool supressVattu = TRUE;

             for (i = baseLimit; i < baseConsonant; i += 1) {
                 LEUnicode ch = chars[i];
-                // Don't put 'blwf' on first consonant.
-                FeatureMask features = (i == baseLimit? tagArray2 : tagArray1);
+                // Don't put 'pstf' or 'blwf' on anything before the base consonant.
+                FeatureMask features = tagArray1 & ~( pstfFeatureMask | blwfFeatureMask );

                 charClass = classTable->getCharClass(ch);
@@ -842,5 +886,5 @@

             // write below-base consonants
-            if (baseConsonant != lastConsonant) {
+            if (baseConsonant != lastConsonant && !seenPreBaseForm) {
                 for (i = bcSpan + 1; i < postBase; i += 1) {
                     output.writeChar(chars[i], i, tagArray1);
@@ -872,5 +916,5 @@
             // write post-base consonants
             // FIXME: does this put the right tags on post-base consonants?
-            if (baseConsonant != lastConsonant) {
+            if (baseConsonant != lastConsonant && !seenPreBaseForm) {
                 if (postBase <= lastConsonant) {
                     for (i = postBase; i <= lastConsonant; i += 1) {


code:
--- icu.orig/source/layout/IndicClassTables.cpp	2007-12-12 18:58:06.000000000 +0000
+++ icu/source/layout/IndicClassTables.cpp	2008-03-18 10:10:51.000000000 +0000
@@ -255,7 +269,7 @@
 //
 static const IndicClassTable devaClassTable = {0x0900, 0x0970, 2, DEVA_SCRIPT_FLAGS, devaCharClasses, NULL};

-static const IndicClassTable bengClassTable = {0x0980, 0x09FA, 3, BENG_SCRIPT_FLAGS, bengCharClasses, bengSplitTable};
+static const IndicClassTable bengClassTable = {0x0980, 0x09FA, 4, BENG_SCRIPT_FLAGS, bengCharClasses, bengSplitTable};

 static const IndicClassTable punjClassTable = {0x0A00, 0x0A74, 2, PUNJ_SCRIPT_FLAGS, punjCharClasses, NULL};

@@ -263,13 +277,13 @@

 static const IndicClassTable oryaClassTable = {0x0B00, 0x0B71, 3, ORYA_SCRIPT_FLAGS, oryaCharClasses, oryaSplitTable};

-static const IndicClassTable tamlClassTable = {0x0B80, 0x0BF2, 3, TAML_SCRIPT_FLAGS, tamlCharClasses, tamlSplitTable};
+static const IndicClassTable tamlClassTable = {0x0B80, 0x0BF2, 4, TAML_SCRIPT_FLAGS, tamlCharClasses, tamlSplitTable};

 static const IndicClassTable teluClassTable = {0x0C00, 0x0C6F, 3, TELU_SCRIPT_FLAGS, teluCharClasses, teluSplitTable};

 static const IndicClassTable kndaClassTable = {0x0C80, 0x0CEF, 4, KNDA_SCRIPT_FLAGS, kndaCharClasses, kndaSplitTable};

-static const IndicClassTable mlymClassTable = {0x0D00, 0x0D6F, 3, MLYM_SCRIPT_FLAGS, mlymCharClasses, mlymSplitTable};
+static const IndicClassTable mlymClassTable = {0x0D00, 0x0D6F, 4, MLYM_SCRIPT_FLAGS, mlymCharClasses, mlymSplitTable};

 static const IndicClassTable sinhClassTable = {0x0D80, 0x0DF4, 4, SINH_SCRIPT_FLAGS, sinhCharClasses, sinhSplitTable};


code:
Submitted By: Pierre Labastie <pierre dot labastie at neuf dot fr>
Date: 2016-11-15
Initial Package Version: 58.1
Upstream Status: Applied
Origin: Upstream, rediffed so that patch -p1 works.
Description: Fix a regression in 58.1, which made mozilla applications
segfault. See ticket #8527

diff -Naur icu.old/source/common/ulist.c icu.new/source/common/ulist.c
--- icu.old/source/common/ulist.c	2016-06-15 20:58:17.000000000 +0200
+++ /icu/source/common/ulist.c	2016-11-15 16:11:09.996596933 +0100
@@ -29,7 +29,6 @@
     UListNode *tail;

     int32_t size;
-    int32_t currentIndex;
 };

 static void ulist_addFirstItem(UList *list, UListNode *newItem);
@@ -51,7 +50,6 @@
     newList->head = NULL;
     newList->tail = NULL;
     newList->size = 0;
-    newList->currentIndex = -1;

     return newList;
 }
@@ -80,8 +78,9 @@
     } else {
         p->next->previous = p->previous;
     }
-    list->curr = NULL;
-    list->currentIndex = 0;
+    if (p == list->curr) {
+        list->curr = p->next;
+    }
     --list->size;
     if (p->forceDelete) {
         uprv_free(p->data);
@@ -150,7 +149,6 @@
         newItem->next = list->head;
         list->head->previous = newItem;
         list->head = newItem;
-        list->currentIndex++;
     }

     list->size++;
@@ -193,7 +191,6 @@

     curr = list->curr;
     list->curr = curr->next;
-    list->currentIndex++;

     return curr->data;
 }
@@ -209,7 +206,6 @@
 U_CAPI void U_EXPORT2 ulist_resetList(UList *list) {
     if (list != NULL) {
         list->curr = list->head;
-        list->currentIndex = 0;
     }
 }

@@ -272,4 +268,3 @@
 U_CAPI UList * U_EXPORT2 ulist_getListFromEnum(UEnumeration *en) {
     return (UList *)(en->context);
 }
-
diff -Naur icu.old/source/i18n/ucol_res.cpp icu.new/source/i18n/ucol_res.cpp
--- icu.old/source/i18n/ucol_res.cpp	2016-09-28 04:26:02.000000000 +0200
+++ /icu/source/i18n/ucol_res.cpp	2016-11-15 16:11:10.000596933 +0100
@@ -680,6 +680,7 @@
         return NULL;
     }
     memcpy(en, &defaultKeywordValues, sizeof(UEnumeration));
+    ulist_resetList(sink.values);  // Initialize the iterator.
     en->context = sink.values;
     sink.values = NULL;  // Avoid deletion in the sink destructor.
     return en;


code:
<?xml version="1.0" ?>
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
<PISI>
    <Source>
        <Name>icu4c</Name>
        <Homepage>http://site.icu-project.org/home</Homepage>
        <Packager>
            <Name>PisiLinux Community</Name>
            <Email>admins@pisilinux.org</Email>
        </Packager>
        <License>as-is</License>
        <IsA>library</IsA>
        International Components for Unicode
        <Description>ICU is a mature, widely used set of C/C++ and Java libraries for Unicode support, software internationalization and globalization (i18n/g11n). This package contains the C/C++ libraries.</Description>

        <Archive sha1sum="7a099523fcb708b427e94f9b3c372fec3ebd1563" type="targz">http://download.icu-project.org/files/icu4c/60.2/icu4c-60_2-src.tgz</Archive>
        <BuildDependencies>
            <Dependency>libgcc</Dependency>
        </BuildDependencies>
        <Patches>

        </Patches>
    </Source>

    <Package>
        <Name>icu4c</Name>
        <RuntimeDependencies>
            <Dependency>libgcc</Dependency>
        </RuntimeDependencies>
        <Files>
            <Path fileType="executable">/usr/bin</Path>
            <Path fileType="executable">/usr/sbin</Path>
            <Path fileType="library">/usr/lib</Path>
            <Path fileType="man">/usr/share/man</Path>
            <Path fileType="doc">/usr/share/doc/icu4c/html</Path>
        </Files>
    </Package>

    <Package>
        <Name>icu4c-devel</Name>
        Development files for icu4c
        <RuntimeDependencies>
            <Dependency release="current">icu4c</Dependency>
        </RuntimeDependencies>
        <Files>
            <Path fileType="executable">/usr/bin/icu-config</Path>
            <Path fileType="data">/usr/lib/icu</Path>
            <Path fileType="data">/usr/share/icu</Path>
            <Path fileType="header">/usr/include</Path>
            <Path fileType="data">/usr/lib/pkgconfig</Path>
            <Path fileType="data">/usr/lib32/pkgconfig/</Path>
        </Files>
    </Package>

    <Package>
        <Name>icu4c-32bit</Name>
        <PartOf>emul32</PartOf>
        32-bit shared libraries for icu4c
        <BuildType>_emul32</BuildType>
        <BuildDependencies>
            <Dependency>libgcc</Dependency>
        </BuildDependencies>
        <RuntimeDependencies>
            <Dependency release="current">icu4c</Dependency>
            <Dependency>libgcc</Dependency>
        </RuntimeDependencies>
        <Files>
            <Path fileType="library">/usr/lib32/libicu*</Path>
            <Path fileType="library">/usr/lib32/icu</Path>
        </Files>
    </Package>

    <History>
        <Update release="5">
            <Date>2018-01-29</Date>
            <Version>60.2</Version>
            <Comment>Version Bump</Comment>
            <Name>Mustafa Cinasal</Name>
            <Email>muscnsl@gmail.com</Email>
        </Update>
        <Update release="4">
            <Date>2017-01-31</Date>
            <Version>58.2</Version>
            <Comment>Version Bump</Comment>
            <Name>Ayhan Yalçınsoy</Name>
            <Email>ayhanyalcinsoy@pisilinux.org</Email>
        </Update>
        <Update release="3">
            <Date>2016-06-09</Date>
            <Version>55.1</Version>
            <Comment>Release Bump</Comment>
            <Name>Pisi Linux Community</Name>
            <Email>admin@pisilinux.org</Email>
        </Update>
        <Update release="2">
            <Date>2016-05-25</Date>
            <Version>55.1</Version>
            <Comment>Release bump</Comment>
            <Name>Ertuğrul Erata</Name>
            <Email>ertugrulerata@gmail.com</Email>
        </Update>
         <Update release="1">
            <Date>2015-07-03</Date>
            <Version>55.1</Version>
            <Comment>First release</Comment>
            <Name>Ertuğrul Erata</Name>
            <Email>ertugrulerata@gmail.com</Email>
        </Update>
    </History>
</PISI>


code:
<?xml version="1.0" ?>
<PISI>
    <Source>
        <Name>icu4c</Name>
        Unicode desteği için uluslarası bileşenler
        <Description xml:lang="tr">ICU, Unicode desteği, yazılım uluslararasılaştırma ve yerelleştirme konusunda yaygın olarak kullanılan gelişmiş bir kitaplıktır. ICU, Unicode ve u10a desteği için C/C++ ve Java kitaplıklarını içerir.</Description>
        <Description xml:lang="fr">ICU est un ensemble mature de librairies C/C++ et Java pour le support de l'Unicode, l'internationalisation et la globalisation de logiciel (i18n/g11n). Ce paquet contient les librairies C/C++.</Description>
        <Description xml:lang="es">ICU es un conjunto maduro y muy utilizado de librerías C/C++ y Java para soporte Unicode, internacionalización y globalización de software (i18n/g11n). Este paque te contiene las librerías C/C++.</Description>
    </Source>

    <Package>
        <Name>icu4c-devel</Name>
        icu4c için geliştirme dosyaları
    </Package>
</PISI>


code:
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# Licensed under the GNU General Public License, version 3.
# See the file http://www.gnu.org/licenses/gpl.txt

from pisi.actionsapi import shelltools
from pisi.actionsapi import autotools
from pisi.actionsapi import pisitools
from pisi.actionsapi import get

def build():
    autotools.make("CC=%s CFLAGS='%s -fPIC' LDFLAGS='%s'" % (get.CC(), get.CFLAGS(), get.LDFLAGS()))

def install():
    pisitools.dolib_so("libiniparser.so.0")
    pisitools.dosym("libiniparser.so.0", "/usr/lib/libiniparser.so")

    pisitools.dodir("/usr/include")
    pisitools.insinto("/usr/include", "src/*.h")

    pisitools.dodoc("README.md", "AUTHORS", "LICENSE")


code:
--- a/Makefile	2009-03-19 12:19:57.000000000 +0200
+++ b/Makefile	2009-03-19 12:21:08.000000000 +0200
@@ -3,8 +3,8 @@
 #

 # Compiler settings
-CC      = gcc
-CFLAGS  = -O2 -fPIC -Wall -ansi -pedantic
+CC      = ${CC}
+CFLAGS  = ${CFLAGS}

 # Ar settings to build the library
 AR	    = ar
@@ -12,7 +12,7 @@

 SHLD = ${CC} ${CFLAGS}
 LDSHFLAGS = -shared -Wl,-Bsymbolic  -Wl,-rpath -Wl,/usr/lib -Wl,-rpath,/usr/lib
-LDFLAGS = -Wl,-rpath -Wl,/usr/lib -Wl,-rpath,/usr/lib
+LDFLAGS = ${LDFLAGS}

 # Set RANLIB to ranlib on systems that require it (Sun OS < 4, Mac OSX)
 # RANLIB  = ranlib


code:
<?xml version="1.0" ?>
<!DOCTYPE PISI SYSTEM "http://www.pisilinux.org/projeler/pisi/pisi-spec.dtd">
<PISI>
    <Source>
        <Name>iniparser</Name>
        <Homepage>http://ndevilla.free.fr/iniparser/</Homepage>
        <Packager>
            <Name>PisiLinux Community</Name>
            <Email>admins@pisilinux.org</Email>
        </Packager>
        <License>MIT</License>
        <IsA>library</IsA>
        <IsA>app:console</IsA>
        A free ini file parsing library
        <Description>iniparser is a free stand-alone ini file parsing library written in portable ANSI C.</Description>
        <Archive sha1sum="7cff339bb67eac060b5cf436759859266c336507" type="targz">https://github.com/ndevilla/iniparser/archive/v4.0.tar.gz</Archive>
    </Source>

    <Package>
        <Name>iniparser</Name>
        <Files>
            <Path fileType="doc">/usr/share/doc</Path>
            <Path fileType="library">/usr/lib</Path>
        </Files>
    </Package>

    <Package>
        <Name>iniparser-devel</Name>
        Development files for iniparser
        <RuntimeDependencies>
            <Dependency release="current">iniparser</Dependency>
        </RuntimeDependencies>
        <Files>
            <Path fileType="header">/usr/include</Path>
        </Files>
    </Package>

    <History>
        <Update release="3">
            <Date>2017-02-28</Date>
            <Version>4.0</Version>
            <Comment>Version Bump.</Comment>
            <Name>Ertuğrul Erata</Name>
            <Email>ertugrulerata@gmail.com</Email>
        </Update>
        <Update release="2">
            <Date>2016-06-09</Date>
            <Version>3.1</Version>
            <Comment>Release Bump</Comment>
            <Name>Pisi Linux Community</Name>
            <Email>admin@pisilinux.org</Email>
        </Update>
        <Update release="1">
            <Date>2013-05-22</Date>
            <Version>3.1</Version>
            <Comment>First release</Comment>
            <Name>Kamil Atlı</Name>
            <Email>suvarice@gmail.com</Email>
        </Update>
    </History>
</PISI>


code:
<?xml version="1.0" ?>
<PISI>
    <Source>
        <Name>iniparser</Name>
        Bir ini dosyası ayrıştırma kitaplığı
        <Description xml:lang="tr">iniparser, ücretsiz ve ANSI C ile taşınabilir bir şekilde yazılmış INI dosyası ayrıştırma kitaplığıdır.</Description>
    </Source>

    <Package>
        <Name>iniparser-devel</Name>
        iniparser için geliştirme dosyaları
    </Package>
</PISI>


code:
#!/usr/bin/python
# -*- coding: utf-8 -*-
#
# Licensed under the GNU General Public License, version 3.
# See the file http://www.gnu.org/licenses/gpl.txt

from pisi.actionsapi import get
from pisi.actionsapi import autotools
from pisi.actionsapi import pisitools
from pisi.actionsapi import shelltools

WorkDir="tbb%soss" % (get.srcVERSION().replace(".", ""))

def install():
    shelltools.system("./install.sh %s" % get.installDIR())

    pisitools.dodoc("README", "COPYING")


code:
#!/bin/bash

DESTDIR=$1

mkdir -p $DESTDIR/usr/{lib,include}

pushd build/obj_release
    for file in libtbb{,malloc}; do
        install -p -D -m 755 ${file}.so.2 $DESTDIR/usr/lib/
        ln -s $file.so.2 $DESTDIR/usr/lib/$file.so
    done
popd

pushd include
    find tbb -type f -name \*.h -exec \
        install -p -D -m 644 {} $DESTDIR/usr/include/{} \
    \;
popd