[pgrouting-dev] pgRouting Development Environment
Stephen Woodbridge
woodbri at swoodbridge.com
Fri Feb 3 11:09:10 EST 2012
Hi Steve,
Wow, the uptick in pgRouting traffic and interest is great. I just went
through this same issue, but for me I know C and not C++ so well. I
wrote the integration of the TRSP C++ code that was written by Ashraf
Hossain in Bangladesh. I took the Dijkstra C wrapper and modeled the
code after that. Look at the TRSP code in extra/trsp/src of the trsp
branch in git.
trsp.c - C code the interfaces with postgres, runs the
queries, loads data into structs
trsp_core.cpp - trival function to create C++ solver object
GraphDefinition.cpp - C++ trsp solver classes
postgres documentation is here:
http://www.postgresql.org/docs/8.3/static/spi.html
http://www.postgresql.org/docs/8.3/static/spi-examples.html
http://www.postgresql.org/docs/8.3/static/extend.html
http://www.postgresql.org/docs/8.3/static/xfunc-c.html
On 2/3/2012 10:09 AM, Steve Horn wrote:
> I would like to contribute to the pgRouting project, but there is a bit
> of a barrier for me since I am unfamiliar with C and integrating with
> PostgreSQL.
>
> Is a good tutorial or starting point for someone who is interested in
> contributing to the project but may not be familiar with the development
> environment required for pgRouting?
>
> Looking for:
> 1) What tools/Operating system is required.
I work on Linux, and typically you need to install packages for
compilers, and postgresql development headers.
> 2) How to test existing code and new code that I might write.
This is an area that we need to work on. We currently do not have a set
of tests which has caused the regression problems with shooting star
being broken. I have started making some test cases, but I have not
figured out how to best define the graphs, inputs, and the output
standards to compare against, or how to run a suite of tests. My thought
is that we want to create a database with various simple graph files and
a table of inputs and results, then we can write a script that runs the
tests and reports the results. so that this can be run easily like with
"make test"
> 3) How to debug existing and new code.
I would recommend that when you develop a new algorithm in C++ that you
write a main command line test harness that you can use to debug and run
unit tests from. The purpose for this is to validate the the core
algorithm outside of postgresql works as expected. Then in the C code
you can print debug NOTICE statements to see what is happening in the C
code inside postgresql. It is also possible to run posgresql as a single
user inside gdb and debug it this way, but I have never done that.
If you look at the Dijkstra and my trsp.c code you will see these debug
statement and a #define DEBUG 1 which turn them on/off.
I would suggest create your own branch on github where you can keep your
code and then create a ticket with a pull request when you are ready for
code to be integrated. We can also discuss giving you commit access if
you are interested in working on cutting a release.
> Thanks!
Thank you for your interest and willingness to get involved. I will help
as much as I can. I really want to get the development more organized
and more people involved.
Thank you,
-Steve
More information about the pgrouting-dev
mailing list