[pgrouting-users] Error compiling pgRouting 2.0 on Ubuntu 10.04
Stephen Woodbridge
woodbri at swoodbridge.com
Thu Dec 5 06:34:53 PST 2013
On 12/5/2013 4:21 AM, Luís de Sousa wrote:
> Thanks.
> Stephen Woodbridge wrote
>> Does this help you?
>> http://comments.gmane.org/gmane.comp.db.postgresql.general/146579
>
> Not really. There is too much stuff depending on that Postgres instance to
> allow for hand made changes, even if to header files.
>
> The question perhaps should be: is pgRounting supposed to compile against
> Postgres 8.4? If yes, with exactly which software versions (gcc, cmake, bgl,
> cgal)?
Hi Luís,
I think the "official" position is that we do not support pg8.4. I
understand your problem because my main server had 100+ databases and
was pg8.3 and I had to setup a new server just for development of
pgRouting 2.0. I'm now going through the painful process of migrating
the old databases to the new server one at a time.
Regarding your problem, the change recommended in the article is not to
the postgresql headers, but to the pgRouting source code. So for each
pgRouting C++ file that includes a postgresql header file (and there
should only be 1-3 files) that are throwing these errors, edit the
pgRouting file and modify the includes to something similar to:
extern "C" {
#include <postgres.h>
#include <fmgr.h>
#define using _using
#define typeid _typeid
#define typename _typename
#include <funcapi.h>
#undef using
#undef typeid
#undef typename
#ifdef PG_MODULE_MAGIC
PG_MODULE_MAGIC;
#endif
};
and try recompiling it. Do one file at a time to make sure that you are
actually solving the problem. If you can get them all to compile, then
you can run tools/test-runner.pl which runs the automated test and
should give you some idea if the build is working ok, or where there
might be some problems. It might have heartburn on 8.4 because we have
not been running it there but it may still be helpful.
I don't have a postgresql 8.4 anywhere and my 8.3 box has been upgraded,
so I can not test this myself.
If you fork pgRouting and do you work in a clone and you can get this to
work, you can generate a pull request. Or we can just add to the support
page that you have fixes for pg8.4 and point to your fork.
For example, here is a diff for the KSPGraph.cpp issue, see if that works:
diff --git a/src/ksp/src/KSPGraph.cpp b/src/ksp/src/KSPGraph.cpp
index f5b9858..44264b7 100644
--- a/src/ksp/src/KSPGraph.cpp
+++ b/src/ksp/src/KSPGraph.cpp
@@ -13,10 +13,16 @@
#include "YenTopKShortestPathsAlg.h"
extern "C" {
#include "postgres.h"
+#include "fmgr.h"
#include "executor/spi.h"
-#include "funcapi.h"
#include "catalog/pg_type.h"
-#include "fmgr.h"
+#define using _using
+#define typeid _typeid
+#define typename _typename
+#include "funcapi.h"
+#undef using
+#undef typeid
+#undef typename
#include "ksp.h"
extern void DBG(const char *format, ...);
}
-Steve
More information about the Pgrouting-users
mailing list