issues/experience with building postgres on Windows - Mailing list pgsql-hackers

From Martin Zaun
Subject issues/experience with building postgres on Windows
Date
Msg-id 4887E3F8.6020405@sun.com
Whole thread Raw
Responses Re: issues/experience with building postgres on Windows  (Andrew Dunstan <andrew@dunslane.net>)
List pgsql-hackers
Hi,

trying to build postgres on Windows, I ran into a number of
problems not covered by the FAQs or the PostgreSQL 8.3.3
documentation:  http://www.postgresql.org/docs/8.3/interactive/install-win32-full.html

In short, it's not been an easy experience so far:
- build errors with latest Visual Studio Express C++ 2008
- ok with VS Express 2005 but integration issues with Platform SDK
- issues locating the 14 required software packages:  - no luck getting Bison 1.875 or 2.2 Windows binaries  - linkage
errorswith the latest ActivePerl/TCL libraries  - locating a OSSP-UUID binary package for Windows    (.dll but no
uuid.hwith Hiroshi Saito's binary package?)
 

Below are more details / questions / suggestions with the goal to
help for a better build experience on Windows.

Any hints or comments welcome!

Regards,
Martin


1) Build errors with Visual Studio Express C++ 2008
   For building with Visual Studio Express 2005, the Microsoft   Platform SDK needs to be downloaded, installed, and
integrated  into the INCLUDE/LIB/PATHs.
 
   However, since Visual Studio Express 2008 already comes with   the integrated SDK, I tried this one first.  Ran into
anumber   of VCBuild errors:
 

vcbuild.exe : error VCBLD0010: Project 'G:\olsen\pg\pgsql\postgres.vcproj' requ
ires upgrade. Use 'vcbuild /upgrade' or 'devenv /upgrade' to upgrade the projec
t.
   Couldn't get past these errors by executing "vcbuild /upgrade"   on the generated .vcproj files.  The VS Release
Notesand   other sites describe this issue a bit but to not much help.
 
   ==> Anyone knowing how to build postgres with VC++ 2008?


2) Back to Visual Studio Express C++ 2005 & MS Platform SDK
   The postgres documentation wasn't specific but I installed     Microsoft Platform SDK for Windows Server 2003 R2
http://www.microsoft.com/downloads/details.aspx?FamilyID=0baf2b35-c656-4969-ace8-e4c0c0716adb&DisplayLang=en  for I
guessedthis the basis for the Postgres documentation.
 
   There's a newer version, though, now called Windows SDK:     Windows SDK for Windows Server 2008 and .NET Framework
3.5    http://www.microsoft.com/downloads/details.aspx?FamilyID=e6e1c3df-a74f-4207-8586-711ebe331cdc&DisplayLang=en
 
   ==> Anyone tried building PG with latest Windows SDK (2008)?


3) Issues adding Platform SDK paths to VC++ 2005
   The README in pgsql/src/tools/msvc/ informs about the steps   needed to integrate the Platform SDK with VC++ 2005 by
editing  the Include, Library and Path tags in the files     vcprojectengine.dll.express.config
vcprojectengine.dll.config  under the VC++ directory vc\vcpackages.
 
   The README's following assertion is not correct, I think:     "This should work for both GUI and commandline builds,
buta     restart may be necessary."
 
   While the Include/Lib/Path changes appear to be in effect for   the GUI they are NOT in the Visual Studio 2005
CommandPrompt!   (even after restart)
 
   The following MS pages     http://www.microsoft.com/express/2005/platformsdk/default.aspx
http://www.microsoft.com/express/2005/platformsdk/default.aspx  describe additional steps, notably to also delete the
file    vccomponents.dat   located in     %USERPROFILE%\Local Settings\Application Data\Microsoft\VCExpress\8.0
beforerestarting VC++ Express Edition.
 
   But this didn't change the paths in the VS 2005 Command Prompt   either.  So I had to change the user
INCLUDE/LIB/PATH  environment manually.
 
   Actually, I'm using the Command Prompt from the MS Platform   SDK's Build Environment selection, not the VS 2005
startmenu,   for other important environment settings (target OS, 32/64,   debug/release etc).
 
   ==> Does the README's assertion need to be changed/corrected?


4) Issues with locating the 14 required software packages
   - ActiveState Perl, ActiveState TCL     Had to click around to find out that I don't want the     "ActivePerl Pro
StudioFree Trial" software but the     "ActivePerl".  Same with ActiveTcl.
 
     Problem: found out later that PG doesn't build with the     latest ActivePerl/TCL language packs!
   - Bison, Flex     The PG documentation states: only Bison 1.875 or versions     2.2 and later will work.
     Problem: The GnuWin32 website only offers Bison 2.1!
   - Diff, Gettext     No problems.
   - MIT Kerberos     No problems but unsure how to answer some of the     installation questions.
   - libxml2, libxslt, iconv     No problems.
   - openssl     No problems but unsure how to answer some of the     installation questions.
   - ossp-uuid     Downloaded source from http://www.ossp.org/pkg/lib/uuid/.
     Problem: from where to get a ossp-uuid Windows binary?
   - Python     No problems.
   - zlib     No problems.
   ==> Can't we provide a package for download with all/most of      the libraries/tools needed for building PG on
Windows?


5) Configuring pgsql/src/tools/msvc/config.pl, buildenv.pl
   A typo in my config.pl had the build aborting with only     The system cannot find the path specified.   and no
furtherclues.
 
   ==> More information on misconfigured config.pl would help!


6) Getting a Bison 1.875 or 2.2 Windows binary
   Google couldn't find me a Windows binary and I didn't want to   build one myself (using mingw).  So, I copied
cygwin's2.2   binary, together with the needed .dlls, into an empty   directory at the end of the PATH.
 
   ==> Using cygwin's Bison 2.2 worked!


7) Linkage errors with the latest ActivePerl/TCL libraries
   Having installed the latest ActivePerl/TCL language packs   (Perl: 5.10.0.1003, TCL: 8.5.2.0.284846) resulted in
linkage  errors against libraries 'tk84.lib' and 'perl85.lib'.
 
   I couldn't determine where those library were hardcoded, so, I   downloaded and installed older versions (Perl:
5.8.8.822,TCL:   8.4.19.0.285137.  Worked!
 
   ==> Fixing the linkage errors against the latest ActivePerl/TCL      libs or documenting the version requirements
wouldbe great!
 


8) Getting a Windows OSSP-UUID library
   Google found me a postgres hackers email thread with this link     http://winpg.jp/~saito/pg_work/OSSP_win32/   to
1.6.2uuid-ossp.dll mingw-compiled by Hiroshi Saito. Thanks!
 
   Problem: from where to get the also needed uuid.h?
   I've seen that Hiroshi Saito has worked on a patch for building the   uuid-ossp package on Windows.  I didn't
succeedin building   ossp-uuid using wingw on Windows and took the shortcut of using   cygwin to generate the uuid.h.
 
   But that hack didn't work, I'm getting linkage errors:

uuid.lib(uuid_str.obj) : error LNK2019: unresolved external symbol _va_copy referenced in function _uuid_str_vasprintf
.\Release\uuid-ossp\uuid-ossp.dll : fatal error LNK1120: 1 unresolved externals
   ==> Where can I find a complete ossp-uuid package for Windows?

And this is where I am right now.  Any hints/comments welcome!



pgsql-hackers by date:

Previous
From: "Tom Dunstan"
Date:
Subject: Re: PostgreSQL extensions packaging
Next
From: Andrew Dunstan
Date:
Subject: Re: issues/experience with building postgres on Windows