On 12/12/2012 11:01 AM, Dominik Perpeet wrote:
Would anyone be interested in a current osm2pgsql Windows build (Win32 +
x64, both with 32 bit id space)?
In the near future I will link the zipped binary package on the wiki:
http://wiki.openstreetmap.org/wiki/Osm2pgsql

Great, thank you.

It seems like osm2pgsql for windows used to be kept at http://tile.openstreetmap.org/osm2pgsql.zip and is still from 2010.

I wonder if your version can be put up as a replacement for this at the same location?


I recently needed a Windows version of the program and had to compile
it. Needless to say, it took me a rather large part of an evening to
accomplish. ;-)

You managed to do it in a single evening?! Not too bad... ;-)


Version: b31c660 (git, Oct 28, 2012)

Since then a bunch of checkins have happened to try and make it easier to build osm2pgsql on windows. Largely they were to try and move back from C99 to ansi C, so that osm2pgsql can be compiled with msvc.

This cleanup work isn't yet finished and the code still has C99 constructs. Particularly the array initialisers haven't yet been converted, as not using C99 features reduce code readability and so I was wandering if there are better ways to achieve this.

Using MinGW or the Intel compiler seems to be one route? Coverting things to C++ might be another?

Any suggestions what the most sensible route is in general for the best portability?

Built using:
     - geos 3.3.5
     - libxml 2.9.0
     - pgsql 9.2.1
     - proj 4.8.0
     - proto_buf 0.1.5
     - zlib 1.2.7

NOT included:
     - gazetteer
     - shell prompt
     - null output
     - libgen
     - pthread (obviously fork() doesn't work on windows and I didn't
want to get into making the code thread-safe)

The current code now has a configure check to test if fork is available and if doesn't compile the multi-process code. I haven't looked at the advantages and disadvantages of OpenMP, but perhaps indeed that is an option. However, I suspect the big issue there are the connections to postgresql, as each thread / process needs to setup its own connections and transactions to postgresql.


In order to compile the C99 code, I used the Intel Compiler. I
successfully compiled Win32 and x64 versions and imported current osm
planet pbf's. Mapnik rendering (current version) appears to work fine
with the created databases.
The rather extensive changes and inclusion of dependencies into a
solution prevent me from committing the resulting source. If there is
serious interest, I can cobble together a brief description of what I
did and share my VS2010 solution.

Yes, I think there is serious interest in this. And if reasonably possible, I would like to get as many of those changes into the svn master repository as possible to make it easier to compile on windows in the future.


Is anyone against switching to C++ (see osm2pgsql TODO)? In my opinion
it would result in cleaner code and make building on windows a lot
easier. Also, fork() could be replaced with omp if the effects are
sorted out carefully.

Dominik Perpeet

Kai

_______________________________________________
dev mailing list
[email protected]
http://lists.openstreetmap.org/listinfo/dev

Reply via email to