summaryrefslogtreecommitdiff
path: root/dev-cpp/pficommon
diff options
context:
space:
mode:
authorV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
committerV3n3RiX <venerix@redcorelinux.org>2017-10-09 18:53:29 +0100
commit4f2d7949f03e1c198bc888f2d05f421d35c57e21 (patch)
treeba5f07bf3f9d22d82e54a462313f5d244036c768 /dev-cpp/pficommon
reinit the tree, so we can have metadata
Diffstat (limited to 'dev-cpp/pficommon')
-rw-r--r--dev-cpp/pficommon/Manifest10
-rw-r--r--dev-cpp/pficommon/files/pficommon-1.3.1.0-gcc-4.7.patch50
-rw-r--r--dev-cpp/pficommon/files/pficommon-1.3.1.0-gcc6.patch350
-rw-r--r--dev-cpp/pficommon/files/pficommon-1.3.1.0-libdir.patch49
-rw-r--r--dev-cpp/pficommon/files/pficommon-1.3.1.0-postgresql.patch13
-rw-r--r--dev-cpp/pficommon/files/pficommon-1.3.1.0-soname.patch200
-rw-r--r--dev-cpp/pficommon/metadata.xml14
-rw-r--r--dev-cpp/pficommon/pficommon-1.3.1.0.ebuild58
8 files changed, 744 insertions, 0 deletions
diff --git a/dev-cpp/pficommon/Manifest b/dev-cpp/pficommon/Manifest
new file mode 100644
index 000000000000..be51674e236d
--- /dev/null
+++ b/dev-cpp/pficommon/Manifest
@@ -0,0 +1,10 @@
+AUX pficommon-1.3.1.0-gcc-4.7.patch 1265 SHA256 3c07461c1dece98c2b86613c62b72691ebed6152d5963c32c0bb76dc50620349 SHA512 9bb02df4886683be46ccc162d2ba9ed975d30ed64f1c32223b3180ae27dae9f5685e27e2ac978939dd9521f94a304275077889a88941e733c237a95235c082cd WHIRLPOOL 89358a27d1dc428df680a810e6d8463ca346dc03a96923d4eb56a5b677f432c9c51b03ac0440a0891944d933c19ae0aa6fe665ac7cbf9906580d17ea1333731d
+AUX pficommon-1.3.1.0-gcc6.patch 11289 SHA256 20d04d9d18c825eaa68718fbfc260259ffc4d93f2576e691b95ca956668da306 SHA512 cec3f6bcce48a5e118c1544980d493a0c379da89e4ccde0dffe5e634f6a20be6d074155fa29954edcbadae1f8a3b2c8ca6dd52ce44fc617ac8dfe346b8859423 WHIRLPOOL c1505e70f7c27561b916ba37674bad91e874bcdac02cba60287a129dade646de9ae1930f9963a4361943c2a8d4420540fdd4e785334d0bc27cfbfed98f3f7392
+AUX pficommon-1.3.1.0-libdir.patch 1171 SHA256 f087be6c7fed08894d2ceccb6c9058017275c5eea414c87a732337850e79ee10 SHA512 bac09b89992bc171e30607c4c3a59467d780d151b8135217bdaa76d852988adeed10cda7506b876b6481261193d5a9c0a80e7405ba4073786577b423f5c3e0dc WHIRLPOOL c250dc465eafbc0e0399be3cd9c2b48dd9e585382575e0c11abd642ac359b6a5dbb649535e2d084929f97a74f03b4844d4fad9e27ef4ca5dfa4a604e481e38b2
+AUX pficommon-1.3.1.0-postgresql.patch 613 SHA256 a5ba8f00172d66fd5a5769af651f4eb1f7ef53276d0cb874bbbb1a5a4ca4d03e SHA512 9fe2f56f076d9b04fbfed4964d2e5884f793c2b1a3b6e0f37391a34eaf40a0274fdd0243c93fc9a44c6be6d0071b4381fca0dc6cd19546234f36f649d1c6357f WHIRLPOOL 91246185b4acbfc25417ae192becbb4c2a71cb0a020407f28c8f6b4cec2f6c5c9925a4ae7c04299af8fae31666c42c972da56b9bcea88cc04d7bcd630b16d2df
+AUX pficommon-1.3.1.0-soname.patch 6221 SHA256 f809eb7db7a6ebe18cfe48bfb24945e52aaf07658276227018cdc10e7e537ec2 SHA512 36b9a3dc3b081fc7f85e4275532deb377963b5e70ce92027c3c013465a96b2da6b228ba79e8d87bd2c93d1efeb183185562e27656da4a4f05fbf15219adb568a WHIRLPOOL 9c67e17d498691a33068334942675bc0c716c68d3bc7b2187c0167eafcc522eca7c72909c0e6e2a0f7ce275a1bb34595aff2c7737ee1f91c87e34b874b02e11b
+DIST pficommon-1.3.1.0.tar.gz 441406 SHA256 4b644f38825f939e3c9e3649af4a35fee00ea7343dd7711770c6ec713be859c0 SHA512 95ef445c2f004c0921bdcae7ee50fc3a744d4960f9bc76c13254394c4ae41fad11ea200002b9fde3e099ef509ffe9ba9ea21d69ba1123699ab3338d7afbcf420 WHIRLPOOL 00d8c92c1a8bd4ee80167eb0032e97b327ee40bad41b18e6567da90a1462f431c22e75a0b02568bac6686e693a954ef2ff5628225f81b88397727e789395c4fc
+EBUILD pficommon-1.3.1.0.ebuild 1356 SHA256 81bfc88cc03cb6bdd0b22714957fb201caebbc05c9ffa6a53bec3e2e29239fc7 SHA512 e0afa58fc14c40726882b72ffa288d581e7b77475c6c6928eb743e41a7cf2e869c0e44ce7537ea8f9bb21238d0e1a6192f97388104e11a6e726e0e64dc2ac284 WHIRLPOOL 8e6a33bdef5910ee524c24311dd7680dda4f4f4be29a386e7fe7b789504ca739e36f828990125a699aa971e728143f9cdff3044810660f32cca2b04d457e99e6
+MISC ChangeLog 2354 SHA256 bf8816be3ff83938a0e3ca596ad569e687fa9def7e83ac34bd611293a0b908e1 SHA512 ce492c694d53298d86be97511986597156922eff62282d328adfada39734c28bd39627f85fc03f8ad8e2c5ea0806b1769e5eb2833fb13cf3ea896ec51e070da7 WHIRLPOOL 53435088b8d5776efc225369adeb26950230b9834887601e49fdc74cfd6fd849af2db094955318fd8dc925354b74431518f385783ae596b91412cbbb2ffc0016
+MISC ChangeLog-2015 1232 SHA256 ca45cbf0a230356df0398e6cef93f5b63576790938384932a58d9cb512fc65fb SHA512 e020c7cda04e464ff542668898b4f398cbada8fb62de1b66a63fd1f7a003fb7315e1774f66af96bac90a48a89cbaa233d228dac5e9885e0fb82fc9a72abe4971 WHIRLPOOL c14aa637597e6f1219e6f7196365ae83bed381bd52634a0e59f5c6ea8a1420cdd6371ba2610f7b979127b5d2baa589040f0a9767a6c58d256825e07a63f14a3b
+MISC metadata.xml 427 SHA256 fbfeafbe0bac77aaed3dbffc4ff23e9a451afbf76110115148fbd4fe2f545a19 SHA512 eff07fc3d7064437d8397fb012e44b213850ef21e3fe54496511139d27c705764912693160a63b1c45722b8947063631e9d839076554fbcba175f27ff34ae141 WHIRLPOOL c3f77bac923bfeae7d863d74af04eecd462b70bfda2ba5aeeb268e327f0a55c8c54fd38b14f232faef3f50fcb3c187dcbb340b3b3563494d0855821f6aa404bb
diff --git a/dev-cpp/pficommon/files/pficommon-1.3.1.0-gcc-4.7.patch b/dev-cpp/pficommon/files/pficommon-1.3.1.0-gcc-4.7.patch
new file mode 100644
index 000000000000..283ef2d7da90
--- /dev/null
+++ b/dev-cpp/pficommon/files/pficommon-1.3.1.0-gcc-4.7.patch
@@ -0,0 +1,50 @@
+From 5669e7ea665323ee774eda9c77206102fa499453 Mon Sep 17 00:00:00 2001
+From: Hideyuki Tanaka <tanaka.hideyuki@gmail.com>
+Date: Mon, 21 May 2012 17:21:34 +0900
+Subject: [PATCH] add include <unistd.h> (for gcc-4.7.0)
+
+---
+ src/network/socket.cpp | 1 +
+ src/system/mmapper.cpp | 1 +
+ tools/genrpc/main.cpp | 1 +
+ 3 files changed, 3 insertions(+)
+
+diff --git a/src/network/socket.cpp b/src/network/socket.cpp
+index b5c50e4..1fba6e6 100644
+--- a/src/network/socket.cpp
++++ b/src/network/socket.cpp
+@@ -40,6 +40,7 @@
+ #include <netinet/in.h>
+ #include <netinet/tcp.h>
+ #include <arpa/inet.h>
++#include <unistd.h>
+
+ #include "dns.h"
+ #include "../system/syscall.h"
+diff --git a/src/system/mmapper.cpp b/src/system/mmapper.cpp
+index 90eb7b8..e963fd8 100644
+--- a/src/system/mmapper.cpp
++++ b/src/system/mmapper.cpp
+@@ -35,6 +35,7 @@
+ #include <sys/stat.h>
+ #include <fcntl.h>
+ #include <sys/mman.h>
++#include <unistd.h>
+
+ #include "syscall.h"
+
+diff --git a/tools/genrpc/main.cpp b/tools/genrpc/main.cpp
+index 100ea4e..3e5ef16 100644
+--- a/tools/genrpc/main.cpp
++++ b/tools/genrpc/main.cpp
+@@ -4,6 +4,7 @@
+ #include <cctype>
+ #include <cstring>
+ #include <cstdio>
++#include <unistd.h>
+ using namespace std;
+
+ #include "../../src/lang/shared_ptr.h"
+--
+1.7.10
+
diff --git a/dev-cpp/pficommon/files/pficommon-1.3.1.0-gcc6.patch b/dev-cpp/pficommon/files/pficommon-1.3.1.0-gcc6.patch
new file mode 100644
index 000000000000..623738389195
--- /dev/null
+++ b/dev-cpp/pficommon/files/pficommon-1.3.1.0-gcc6.patch
@@ -0,0 +1,350 @@
+--- a/src/network/cgi/inserter.cpp
++++ b/src/network/cgi/inserter.cpp
+@@ -50,8 +50,8 @@
+
+ tag_inserter::~tag_inserter()
+ {
+- shared_ptr<tag_elem> elem(new tag_elem(name, attrs));
+- vector<shared_ptr<html_elem> > children=b.leave();
++ pfi::lang::shared_ptr<tag_elem> elem(new tag_elem(name, attrs));
++ vector<pfi::lang::shared_ptr<html_elem> > children=b.leave();
+ for (int i=0;i<(int)children.size();i++)
+ elem->add_child(children[i]);
+ b.push(elem);
+@@ -59,12 +59,12 @@
+
+ text_inserter::text_inserter(const string &text, xhtml_builder &b)
+ {
+- b.push(shared_ptr<html_elem>(new text_elem(text)));
++ b.push(pfi::lang::shared_ptr<html_elem>(new text_elem(text)));
+ }
+
+ prim_inserter::prim_inserter(const string &text, xhtml_builder &b)
+ {
+- b.push(shared_ptr<html_elem>(new prim_elem(text)));
++ b.push(pfi::lang::shared_ptr<html_elem>(new prim_elem(text)));
+ }
+
+ } // cgi
+--- a/src/network/cgi/server.cpp
++++ b/src/network/cgi/server.cpp
+@@ -161,12 +161,12 @@
+ <<", thread-num="<<thread_num
+ <<", timeout="<<ssock->timeout()<<endl;
+
+- ths=vector<shared_ptr<thread> >(thread_num);
+- vector<shared_ptr<cgi, threading_model::multi_thread> > cgis(thread_num);
++ ths=vector<pfi::lang::shared_ptr<thread> >(thread_num);
++ vector<pfi::lang::shared_ptr<cgi, threading_model::multi_thread> > cgis(thread_num);
+
+ for (int i=0; i<thread_num; i++){
+- cgis[i]=shared_ptr<cgi, threading_model::multi_thread>(dynamic_cast<cgi*>(c.clone()));
+- ths[i]=shared_ptr<thread>(new thread(bind(&run_server::process, this, ssock, cgis[i])));
++ cgis[i]=pfi::lang::shared_ptr<cgi, threading_model::multi_thread>(dynamic_cast<cgi*>(c.clone()));
++ ths[i]=pfi::lang::shared_ptr<thread>(new thread(bind(&run_server::process, this, ssock, cgis[i])));
+ if (!ths[i]->start()){
+ ostringstream oss;
+ oss<<"unable to start thread"<<endl;
+@@ -185,7 +185,7 @@
+ ths.clear();
+ }
+
+-static shared_ptr<http::response> gen_resp(stringstream &ss)
++static pfi::lang::shared_ptr<http::response> gen_resp(stringstream &ss)
+ {
+ http::header head(ss);
+
+@@ -210,7 +210,7 @@
+ head.erase("status");
+ }
+
+- shared_ptr<http::response> resp(new http::response(code, reason));
++ pfi::lang::shared_ptr<http::response> resp(new http::response(code, reason));
+
+ head["Content-Type"]=content_type;
+
+@@ -232,10 +232,10 @@
+ }
+
+ void run_server::process(socket_type ssock,
+- shared_ptr<cgi, threading_model::multi_thread> cc)
++ pfi::lang::shared_ptr<cgi, threading_model::multi_thread> cc)
+ {
+ for (;;){
+- shared_ptr<stream_socket> sock(ssock->accept());
++ pfi::lang::shared_ptr<stream_socket> sock(ssock->accept());
+ if (!sock) continue;
+
+ if (ssock->timeout()>0 && !sock->set_timeout(ssock->timeout()))
+@@ -272,7 +272,7 @@
+
+ cc->exec(req.body(), sout, cerr, env);
+
+- shared_ptr<http::response> resp=gen_resp(sout);
++ pfi::lang::shared_ptr<http::response> resp=gen_resp(sout);
+ resp->send(sock);
+ }
+ catch(const exception &e){
+--- a/src/network/http/base.cpp
++++ b/src/network/http/base.cpp
+@@ -61,7 +61,7 @@
+ {
+ }
+
+-void header::read_header(function<bool(string*)> f)
++void header::read_header(pfi::lang::function<bool(string*)> f)
+ {
+ string line, key, val;
+ if (!f(&line))
+@@ -124,7 +124,7 @@
+ return sock->getline(*str, line_limit);
+ }
+
+-header::header(shared_ptr<stream_socket> sock)
++header::header(pfi::lang::shared_ptr<stream_socket> sock)
+ {
+ read_header(bind(&socket_getline, sock.get(), _1, line_limit));
+ }
+@@ -211,7 +211,7 @@
+ return dat.end();
+ }
+
+-void header::send(shared_ptr<stream_socket> sock)
++void header::send(pfi::lang::shared_ptr<stream_socket> sock)
+ {
+ for (int i=0;i<(int)dat.size();i++){
+ string line=dat[i].first+": "+dat[i].second+"\r\n";
+@@ -228,7 +228,7 @@
+ public:
+ typedef C char_type;
+
+- basic_httpbody_chunked_streambuf(shared_ptr<stream_socket> sock)
++ basic_httpbody_chunked_streambuf(pfi::lang::shared_ptr<stream_socket> sock)
+ : sock(sock)
+ , chunk_rest(0)
+ , buf(buf_size)
+@@ -321,7 +321,7 @@
+ iss>>hex>>chunk_rest;
+ }
+
+- shared_ptr<stream_socket> sock;
++ pfi::lang::shared_ptr<stream_socket> sock;
+
+ int chunk_rest;
+
+@@ -334,7 +334,7 @@
+ public:
+ typedef C char_type;
+
+- basic_httpbody_streambuf(shared_ptr<stream_socket> sock, int length)
++ basic_httpbody_streambuf(pfi::lang::shared_ptr<stream_socket> sock, int length)
+ : sock(sock)
+ , rest(length)
+ , buf(T::eof()){
+@@ -359,7 +359,7 @@
+ }
+
+ private:
+- shared_ptr<stream_socket> sock;
++ pfi::lang::shared_ptr<stream_socket> sock;
+
+ int rest;
+ int buf;
+@@ -368,7 +368,7 @@
+ template <class C, class T=char_traits<C> >
+ class basic_httpbody_chunked_stream : public basic_iostream<C,T>{
+ public:
+- basic_httpbody_chunked_stream(shared_ptr<stream_socket> sock)
++ basic_httpbody_chunked_stream(pfi::lang::shared_ptr<stream_socket> sock)
+ : basic_iostream<C,T>()
+ , buf(sock){
+ this->init(&buf);
+@@ -380,7 +380,7 @@
+ template <class C, class T=char_traits<C> >
+ class basic_httpbody_stream : public basic_iostream<C,T>{
+ public:
+- basic_httpbody_stream(shared_ptr<stream_socket> sock, int len)
++ basic_httpbody_stream(pfi::lang::shared_ptr<stream_socket> sock, int len)
+ : basic_iostream<C,T>()
+ , buf(sock, len){
+ this->init(&buf);
+@@ -406,7 +406,7 @@
+ {
+ }
+
+-request::request(shared_ptr<stream_socket> sock)
++request::request(pfi::lang::shared_ptr<stream_socket> sock)
+ : method_("")
+ , uri_("/")
+ , version_(1,1)
+@@ -438,11 +438,11 @@
+
+ // body
+ if (cicmp(header_["Transfer-Encoding"],"chunked"))
+- stream=shared_ptr<iostream>(new basic_httpbody_chunked_stream<char>(sock));
++ stream=pfi::lang::shared_ptr<iostream>(new basic_httpbody_chunked_stream<char>(sock));
+ else if (header_["Content-Length"]!="")
+- stream=shared_ptr<iostream>(new basic_httpbody_stream<char>(sock, lexical_cast<int>(header_["Content-Length"])));
++ stream=pfi::lang::shared_ptr<iostream>(new basic_httpbody_stream<char>(sock, lexical_cast<int>(header_["Content-Length"])));
+ else
+- stream=shared_ptr<iostream>(new socketstream(sock));
++ stream=pfi::lang::shared_ptr<iostream>(new socketstream(sock));
+ }
+
+ request::~request()
+@@ -474,7 +474,7 @@
+ return *stream;
+ }
+
+-void request::send(shared_ptr<stream_socket> sock)
++void request::send(pfi::lang::shared_ptr<stream_socket> sock)
+ {
+ stringstream *ss=dynamic_cast<stringstream*>(stream.get());
+ if (!ss) throw http_exception("body is not stringstream");
+@@ -499,7 +499,7 @@
+ if (sock->flush()>=0)
+ throw http_exception("flush failed");
+ if (dat.length()==0)
+- stream=shared_ptr<iostream>(new socketstream(sock));
++ stream=pfi::lang::shared_ptr<iostream>(new socketstream(sock));
+ }
+
+ response::response()
+@@ -518,7 +518,7 @@
+ {
+ }
+
+-response::response(shared_ptr<stream_socket> sock)
++response::response(pfi::lang::shared_ptr<stream_socket> sock)
+ {
+ // status-line
+ {
+@@ -546,11 +546,11 @@
+
+ // body
+ if (cicmp(header_["Transfer-Encoding"],"chunked"))
+- stream=shared_ptr<iostream>(new basic_httpbody_chunked_stream<char>(sock));
++ stream=pfi::lang::shared_ptr<iostream>(new basic_httpbody_chunked_stream<char>(sock));
+ else if (header_["Content-Length"]!="")
+- stream=shared_ptr<iostream>(new basic_httpbody_stream<char>(sock, lexical_cast<int>(header_["Content-Length"])));
++ stream=pfi::lang::shared_ptr<iostream>(new basic_httpbody_stream<char>(sock, lexical_cast<int>(header_["Content-Length"])));
+ else
+- stream=shared_ptr<iostream>(new socketstream(sock));
++ stream=pfi::lang::shared_ptr<iostream>(new socketstream(sock));
+ }
+
+ response::~response()
+@@ -582,7 +582,7 @@
+ return *stream;
+ }
+
+-void response::send(shared_ptr<stream_socket> sock)
++void response::send(pfi::lang::shared_ptr<stream_socket> sock)
+ {
+ stringstream *ss=dynamic_cast<stringstream*>(stream.get());
+ if (!ss) throw http_exception("body is not stringstream");
+@@ -607,7 +607,7 @@
+ if (sock->flush()>=0)
+ throw http_exception("flush failed");
+ if (dat.length()==0)
+- stream=shared_ptr<iostream>(new socketstream(sock));
++ stream=pfi::lang::shared_ptr<iostream>(new socketstream(sock));
+ }
+
+ } // http
+--- a/src/network/rpc/base.cpp
++++ b/src/network/rpc/base.cpp
+@@ -59,20 +59,20 @@
+ {
+ }
+
+-void rpc_server::add(const string &name, shared_ptr<invoker_base> invoker)
++void rpc_server::add(const string &name, pfi::lang::shared_ptr<invoker_base> invoker)
+ {
+ funcs[name]=invoker;
+ }
+
+ bool rpc_server::serv(uint16_t port, int nthreads)
+ {
+- shared_ptr<server_socket, threading_model::multi_thread> ssock(new server_socket());
++ pfi::lang::shared_ptr<server_socket, threading_model::multi_thread> ssock(new server_socket());
+ if (!ssock->create(port))
+ return false;
+
+- vector<shared_ptr<thread> > ths(nthreads);
++ vector<pfi::lang::shared_ptr<thread> > ths(nthreads);
+ for (int i=0; i<nthreads; i++){
+- ths[i]=shared_ptr<thread>(new thread(bind(&rpc_server::process, this, ssock)));
++ ths[i]=pfi::lang::shared_ptr<thread>(new thread(bind(&rpc_server::process, this, ssock)));
+ if (!ths[i]->start()) return false;
+ }
+ for (int i=0; i<nthreads; i++)
+@@ -80,10 +80,10 @@
+ return true;
+ }
+
+-void rpc_server::process(shared_ptr<server_socket, threading_model::multi_thread> ssock)
++void rpc_server::process(pfi::lang::shared_ptr<server_socket, threading_model::multi_thread> ssock)
+ {
+ for (;;){
+- shared_ptr<stream_socket> sock(ssock->accept());
++ pfi::lang::shared_ptr<stream_socket> sock(ssock->accept());
+ if (!sock) continue;
+ sock->set_nodelay(true);
+
+@@ -139,11 +139,11 @@
+ {
+ }
+
+-shared_ptr<socketstream> rpc_client::get_connection()
++pfi::lang::shared_ptr<socketstream> rpc_client::get_connection()
+ {
+ for (int i=0;i<2;i++){
+ if (!ss || !(*ss)){
+- ss=shared_ptr<socketstream>(new socketstream(host, port));
++ ss=pfi::lang::shared_ptr<socketstream>(new socketstream(host, port));
+ if (!(*ss)){
+ ss.reset();
+ continue;
+@@ -180,7 +180,7 @@
+ return ss;
+ }
+
+-void rpc_client::return_connection(shared_ptr<socketstream> css)
++void rpc_client::return_connection(pfi::lang::shared_ptr<socketstream> css)
+ {
+ ss=css;
+ }
+--- a/src/network/socket.cpp
++++ b/src/network/socket.cpp
+@@ -58,7 +58,7 @@
+ namespace pfi{
+ namespace network{
+
+-shared_ptr<dns_resolver, threading_model::multi_thread> stream_socket::resolver;
++pfi::lang::shared_ptr<dns_resolver, threading_model::multi_thread> stream_socket::resolver;
+ r_mutex stream_socket::resolver_m;
+
+ class sigign{
+@@ -88,7 +88,7 @@
+ close();
+ }
+
+-void stream_socket::set_dns_resolver(shared_ptr<dns_resolver, threading_model::multi_thread> r)
++void stream_socket::set_dns_resolver(pfi::lang::shared_ptr<dns_resolver, threading_model::multi_thread> r)
+ {
+ synchronized(resolver_m)
+ resolver=r;
+@@ -106,10 +106,10 @@
+ return false;
+ }
+
+- shared_ptr<dns_resolver, threading_model::multi_thread> res;
++ pfi::lang::shared_ptr<dns_resolver, threading_model::multi_thread> res;
+ synchronized(resolver_m){
+ if (!resolver)
+- set_dns_resolver(shared_ptr<dns_resolver, threading_model::multi_thread>
++ set_dns_resolver(pfi::lang::shared_ptr<dns_resolver, threading_model::multi_thread>
+ (new normal_dns_resolver()));
+ res=resolver;
+ }
diff --git a/dev-cpp/pficommon/files/pficommon-1.3.1.0-libdir.patch b/dev-cpp/pficommon/files/pficommon-1.3.1.0-libdir.patch
new file mode 100644
index 000000000000..9bd0e4bf560d
--- /dev/null
+++ b/dev-cpp/pficommon/files/pficommon-1.3.1.0-libdir.patch
@@ -0,0 +1,49 @@
+diff --git a/wscript b/wscript
+index dc1866e..c5b800c 100644
+--- a/wscript
++++ b/wscript
+@@ -6,18 +6,21 @@ out = 'build'
+
+ import Options
+ import sys
++import os
+
+ subdirs = 'src tools'
+
+ def options(opt):
+ opt.load('compiler_cxx')
+ opt.load('unittest_gtest')
++ opt.load('gnu_dirs')
+
+ opt.recurse(subdirs)
+
+ def configure(conf):
+ conf.check_tool('compiler_cxx')
+ conf.check_tool('unittest_gtest')
++ conf.check_tool('gnu_dirs')
+
+ conf.env.append_unique(
+ 'CXXFLAGS',
+@@ -28,6 +31,8 @@ def configure(conf):
+ conf.recurse(subdirs)
+
+ conf.define('PFICOMMON_VERSION', VERSION)
++
++ conf.env['VERSION'] = VERSION
+
+ conf.write_config_header('src/pfi-config.h')
+
+@@ -72,11 +77,11 @@ def build(bld):
+ bld(source = 'pficommon.pc.in',
+ prefix = bld.env['PREFIX'],
+ exec_prefix = '${prefix}',
+- libdir = '${prefix}/lib',
++ libdir = bld.env['LIBDIR'],
+ includedir = '${prefix}/include',
+ PACKAGE = APPNAME,
+ VERSION = VERSION)
+
+- bld.install_files('${PREFIX}/lib/pkgconfig', 'pficommon.pc')
++ bld.install_files(os.path.join(bld.env['LIBDIR'], 'pkgconfig'), 'pficommon.pc')
+
+ bld.recurse(subdirs)
diff --git a/dev-cpp/pficommon/files/pficommon-1.3.1.0-postgresql.patch b/dev-cpp/pficommon/files/pficommon-1.3.1.0-postgresql.patch
new file mode 100644
index 000000000000..0bf7096ad94f
--- /dev/null
+++ b/dev-cpp/pficommon/files/pficommon-1.3.1.0-postgresql.patch
@@ -0,0 +1,13 @@
+diff --git a/src/database/wscript b/src/database/wscript
+index 8eca1d0..3916a7d 100644
+--- a/src/database/wscript
++++ b/src/database/wscript
+@@ -20,7 +20,7 @@ def configure(conf):
+ conf.env.BUILD_PGSQL = False
+ if not Options.options.disable_database:
+ try:
+- incdir = subprocess.check_output(['pg_config', '--includedir-server']).decode()
++ incdir = subprocess.check_output(['pg_config', '--includedir-server']).decode('utf-8')
+ libdir = subprocess.check_output(['pg_config', '--libdir']).decode()
+ if conf.check_cxx(lib = 'pq',
+ header_name = 'postgres.h',
diff --git a/dev-cpp/pficommon/files/pficommon-1.3.1.0-soname.patch b/dev-cpp/pficommon/files/pficommon-1.3.1.0-soname.patch
new file mode 100644
index 000000000000..040fb259bc7d
--- /dev/null
+++ b/dev-cpp/pficommon/files/pficommon-1.3.1.0-soname.patch
@@ -0,0 +1,200 @@
+diff --git a/src/concurrent/wscript b/src/concurrent/wscript
+index 5aeb5ab..8700d68 100644
+--- a/src/concurrent/wscript
++++ b/src/concurrent/wscript
+@@ -19,6 +19,7 @@ def build(bld):
+ source = 'thread.cpp mutex.cpp rwmutex.cpp condition.cpp internal.cpp',
+ target = 'pficommon_concurrent',
+ includes = '.',
++ vnum = bld.env['VERSION'],
+ use = 'pficommon_system PTHREAD')
+
+ bld.program(
+diff --git a/src/data/wscript b/src/data/wscript
+index e99c7c3..df47caf 100644
+--- a/src/data/wscript
++++ b/src/data/wscript
+@@ -61,6 +61,7 @@ def build(bld):
+ ],
+ target = 'pficommon_data',
+ includes = incdirs,
++ vnum = bld.env['VERSION'],
+ use = 'pficommon_system')
+
+ def t(src):
+diff --git a/src/database/mysql/wscript b/src/database/mysql/wscript
+index 79d5a23..5407091 100644
+--- a/src/database/mysql/wscript
++++ b/src/database/mysql/wscript
+@@ -7,4 +7,5 @@ def build(bld):
+ source = 'connection.cpp statement.cpp value.cpp',
+ target = 'pficommon_database_mysql',
+ includes = '. ..',
++ vnum = bld.env['VERSION'],
+ use = 'pficommon_concurrent MYSQL')
+diff --git a/src/database/postgresql/wscript b/src/database/postgresql/wscript
+index 9b834f8..5040a69 100644
+--- a/src/database/postgresql/wscript
++++ b/src/database/postgresql/wscript
+@@ -7,4 +7,5 @@ def build(bld):
+ source = 'connection.cpp statement.cpp result.cpp value.cpp',
+ target = 'pficommon_database_postgresql',
+ includes = '. ..',
++ vnum = bld.env['VERSION'],
+ use = 'PGSQL')
+diff --git a/src/database/wscript b/src/database/wscript
+index b491d4f..3916a7d 100644
+--- a/src/database/wscript
++++ b/src/database/wscript
+@@ -44,6 +44,7 @@ def build(bld):
+ t = bld.shlib(
+ source = '',
+ target = 'pficommon_database',
++ vnum = bld.env['VERSION'],
+ use = [])
+
+ if bld.env.BUILD_MYSQL:
+diff --git a/src/lang/wscript b/src/lang/wscript
+index e5538d9..e0ad364 100644
+--- a/src/lang/wscript
++++ b/src/lang/wscript
+@@ -20,6 +20,7 @@ def build(bld):
+
+ bld.shlib(
+ source = 'empty.cpp',
++ vnum = bld.env['VERSION'],
+ target = 'pficommon_lang')
+
+ bld.program(
+diff --git a/src/math/wscript b/src/math/wscript
+index 8e8e271..f855b3a 100644
+--- a/src/math/wscript
++++ b/src/math/wscript
+@@ -14,6 +14,7 @@ def build(bld):
+ bld.shlib(
+ source = 'random/mersenne_twister.cpp',
+ target = 'pficommon_math',
++ vnum = bld.env['VERSION'],
+ includes = '.')
+
+ def t(src):
+diff --git a/src/network/wscript b/src/network/wscript
+index 4b0873c..d5a9aee 100644
+--- a/src/network/wscript
++++ b/src/network/wscript
+@@ -56,11 +56,13 @@ def build(bld):
+ source = 'socket.cpp ipv4.cpp dns.cpp uri.cpp',
+ target = 'pficommon_network_base',
+ includes = '.',
++ vnum = bld.env['VERSION'],
+ use = 'pficommon_concurrent')
+
+ pfin = bld.shlib(
+ source = '',
+ target = 'pficommon_network',
++ vnum = bld.env['VERSION'],
+ use = [
+ 'pficommon_network_base',
+ 'pficommon_network_http',
+diff --git a/src/system/wscript b/src/system/wscript
+index 4068967..a6fc70c 100644
+--- a/src/system/wscript
++++ b/src/system/wscript
+@@ -21,6 +21,7 @@ def build(bld):
+ 'sysstat.cpp',
+ 'mmapper.cpp'],
+ target = 'pficommon_system',
++ vnum = bld.env['VERSION'],
+ includes = '.')
+
+ bld.program(
+diff --git a/src/text/wscript b/src/text/wscript
+index 2cb54df..e18310c 100644
+--- a/src/text/wscript
++++ b/src/text/wscript
+@@ -16,6 +16,7 @@ def build(bld):
+ source = 'xhtml.cpp csv.cpp json/parser.cpp',
+ target = 'pficommon_text',
+ includes = '. json',
++ vnum = bld.env['VERSION'],
+ use = 'pficommon_data pficommon_system')
+
+ bld.program(
+diff --git a/src/util/wscript b/src/util/wscript
+index c971da4..7ed427f 100644
+--- a/src/util/wscript
++++ b/src/util/wscript
+@@ -8,6 +8,7 @@ def build(bld):
+
+ bld.shlib(
+ source = '',
++ vnum = bld.env['VERSION'],
+ target = 'pficommon_util')
+
+ bld(features = 'cxx cprogram gtest',
+diff --git a/src/visualization/wscript b/src/visualization/wscript
+index bf0500a..04469a1 100644
+--- a/src/visualization/wscript
++++ b/src/visualization/wscript
+@@ -27,6 +27,7 @@ def build(bld):
+ v = bld.shlib(
+ source = ['empty.cpp'],
+ target = 'pficommon_visualization',
++ vnum = bld.env['VERSION'],
+ use = [])
+
+ bld.program(
+diff --git a/src/wscript b/src/wscript
+index 8dfd9e8..4af7585 100644
+--- a/src/wscript
++++ b/src/wscript
+@@ -26,6 +26,7 @@ def build(bld):
+ b = bld.shlib(
+ source = 'empty.cpp',
+ target = 'pficommon',
++ vnum = bld.env['VERSION'],
+ use = [
+ 'pficommon_concurrent',
+ 'pficommon_data',
+diff --git a/src/network/cgi/wscript b/src/network/cgi/wscript
+index 29c44fa..1863394 100644
+--- a/src/network/cgi/wscript
++++ b/src/network/cgi/wscript
+@@ -47,6 +47,7 @@ def build(bld):
+ source = 'base.cpp xhtml_cgi.cpp xhtml_builder.cpp inserter.cpp cgi.cpp server.cpp util.cpp',
+ target = 'pficommon_network_cgi',
+ includes = '. ..',
++ vnum = bld.env['VERSION'],
+ use = 'pficommon_text pficommon_concurrent pficommon_network_http PTHREAD')
+
+ if bld.env.BUILD_FCGI:
+diff --git a/src/network/http/wscript b/src/network/http/wscript
+index 7e2bbbe..dbfe480 100644
+--- a/src/network/http/wscript
++++ b/src/network/http/wscript
+@@ -14,4 +14,5 @@ def build(bld):
+ source = 'base.cpp',
+ target = 'pficommon_network_http',
+ includes = '. ..',
++ vnum = bld.env['VERSION'],
+ use = 'pficommon_network_base')
+diff --git a/src/network/mprpc/wscript b/src/network/mprpc/wscript
+index 940bdd4..0e093f6 100644
+--- a/src/network/mprpc/wscript
++++ b/src/network/mprpc/wscript
+@@ -21,4 +21,5 @@ def build(bld):
+ 'socket.cpp'
+ ],
+ target = 'pficommon_network_mprpc',
++ vnum = bld.env['VERSION'],
+ use = 'pficommon_concurrent pficommon_network_base MSGPACK')
+diff --git a/src/network/rpc/wscript b/src/network/rpc/wscript
+index 74c006c..46121d6 100644
+--- a/src/network/rpc/wscript
++++ b/src/network/rpc/wscript
+@@ -17,4 +17,5 @@ def build(bld):
+ source = 'base.cpp',
+ target = 'pficommon_network_rpc',
+ includes = '. ..',
++ vnum = bld.env['VERSION'],
+ use = 'pficommon_network_base pficommon_concurrent pficommon_system')
diff --git a/dev-cpp/pficommon/metadata.xml b/dev-cpp/pficommon/metadata.xml
new file mode 100644
index 000000000000..0f0b8821e971
--- /dev/null
+++ b/dev-cpp/pficommon/metadata.xml
@@ -0,0 +1,14 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
+<pkgmetadata>
+ <maintainer type="person">
+ <email>naota@gentoo.org</email>
+ </maintainer>
+ <use>
+ <flag name="fcgi">Build FCGI feature</flag>
+ <flag name="mprpc">Build MessagePack RPC feature</flag>
+ </use>
+ <upstream>
+ <remote-id type="github">pfi/pficommon</remote-id>
+ </upstream>
+</pkgmetadata>
diff --git a/dev-cpp/pficommon/pficommon-1.3.1.0.ebuild b/dev-cpp/pficommon/pficommon-1.3.1.0.ebuild
new file mode 100644
index 000000000000..db9afe674b6f
--- /dev/null
+++ b/dev-cpp/pficommon/pficommon-1.3.1.0.ebuild
@@ -0,0 +1,58 @@
+# Copyright 1999-2017 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+
+EAPI=4
+
+PYTHON_COMPAT=( python2_7 )
+PYTHON_REQ_USE='threads(+)'
+inherit python-any-r1 waf-utils eutils
+
+DESCRIPTION="General purpose C++ library for PFI"
+HOMEPAGE="https://github.com/pfi/pficommon"
+SRC_URI="https://github.com/pfi/pficommon/tarball/${PV} -> ${P}.tar.gz"
+
+LICENSE="BSD"
+SLOT="0"
+KEYWORDS="~amd64"
+IUSE="fcgi imagemagick mprpc mysql postgres test"
+
+RDEPEND="fcgi? ( dev-libs/fcgi )
+ imagemagick? (
+ media-libs/lcms
+ media-gfx/imagemagick[cxx]
+ sys-devel/libtool
+ )
+ mprpc? ( dev-libs/msgpack )
+ mysql? ( virtual/mysql )
+ postgres? ( dev-db/postgresql )
+ "
+DEPEND="${RDEPEND}
+ ${PYTHON_DEPS}
+ test? ( dev-cpp/gtest )"
+
+src_unpack() {
+ unpack ${A}
+ mv pfi-pficommon-* "${S}"
+}
+
+src_prepare() {
+ epatch "${FILESDIR}"/${P}-libdir.patch \
+ "${FILESDIR}"/${P}-soname.patch \
+ "${FILESDIR}"/${P}-postgresql.patch \
+ "${FILESDIR}"/${P}-gcc-4.7.patch \
+ "${FILESDIR}"/${P}-gcc6.patch
+}
+
+src_configure() {
+ if use fcgi; then
+ myconf="${myconf} --with-fcgi=/usr"
+ else
+ myconf="${myconf} --disable-fcgi"
+ fi
+ use imagemagick || myconf="${myconf} --disable-magickpp"
+ use mprpc || myconf="${myconf} --disable-mprpc"
+ if ! use mysql && ! use postgres; then
+ myconf="${myconf} --disable-database"
+ fi
+ waf-utils_src_configure ${myconf}
+}